aboutsummaryrefslogtreecommitdiffstats
path: root/contrib/tools/python3/Python
diff options
context:
space:
mode:
authorAlexSm <alex@ydb.tech>2024-03-05 10:40:59 +0100
committerGitHub <noreply@github.com>2024-03-05 12:40:59 +0300
commit1ac13c847b5358faba44dbb638a828e24369467b (patch)
tree07672b4dd3604ad3dee540a02c6494cb7d10dc3d /contrib/tools/python3/Python
parentffcca3e7f7958ddc6487b91d3df8c01054bd0638 (diff)
downloadydb-1ac13c847b5358faba44dbb638a828e24369467b.tar.gz
Library import 16 (#2433)
Co-authored-by: robot-piglet <robot-piglet@yandex-team.com> Co-authored-by: deshevoy <deshevoy@yandex-team.com> Co-authored-by: robot-contrib <robot-contrib@yandex-team.com> Co-authored-by: thegeorg <thegeorg@yandex-team.com> Co-authored-by: robot-ya-builder <robot-ya-builder@yandex-team.com> Co-authored-by: svidyuk <svidyuk@yandex-team.com> Co-authored-by: shadchin <shadchin@yandex-team.com> Co-authored-by: robot-ratatosk <robot-ratatosk@yandex-team.com> Co-authored-by: innokentii <innokentii@yandex-team.com> Co-authored-by: arkady-e1ppa <arkady-e1ppa@yandex-team.com> Co-authored-by: snermolaev <snermolaev@yandex-team.com> Co-authored-by: dimdim11 <dimdim11@yandex-team.com> Co-authored-by: kickbutt <kickbutt@yandex-team.com> Co-authored-by: abdullinsaid <abdullinsaid@yandex-team.com> Co-authored-by: korsunandrei <korsunandrei@yandex-team.com> Co-authored-by: petrk <petrk@yandex-team.com> Co-authored-by: miroslav2 <miroslav2@yandex-team.com> Co-authored-by: serjflint <serjflint@yandex-team.com> Co-authored-by: akhropov <akhropov@yandex-team.com> Co-authored-by: prettyboy <prettyboy@yandex-team.com> Co-authored-by: ilikepugs <ilikepugs@yandex-team.com> Co-authored-by: hiddenpath <hiddenpath@yandex-team.com> Co-authored-by: mikhnenko <mikhnenko@yandex-team.com> Co-authored-by: spreis <spreis@yandex-team.com> Co-authored-by: andreyshspb <andreyshspb@yandex-team.com> Co-authored-by: dimaandreev <dimaandreev@yandex-team.com> Co-authored-by: rashid <rashid@yandex-team.com> Co-authored-by: robot-ydb-importer <robot-ydb-importer@yandex-team.com> Co-authored-by: r-vetrov <r-vetrov@yandex-team.com> Co-authored-by: ypodlesov <ypodlesov@yandex-team.com> Co-authored-by: zaverden <zaverden@yandex-team.com> Co-authored-by: vpozdyayev <vpozdyayev@yandex-team.com> Co-authored-by: robot-cozmo <robot-cozmo@yandex-team.com> Co-authored-by: v-korovin <v-korovin@yandex-team.com> Co-authored-by: arikon <arikon@yandex-team.com> Co-authored-by: khoden <khoden@yandex-team.com> Co-authored-by: psydmm <psydmm@yandex-team.com> Co-authored-by: robot-javacom <robot-javacom@yandex-team.com> Co-authored-by: dtorilov <dtorilov@yandex-team.com> Co-authored-by: sennikovmv <sennikovmv@yandex-team.com> Co-authored-by: hcpp <hcpp@ydb.tech>
Diffstat (limited to 'contrib/tools/python3/Python')
-rw-r--r--contrib/tools/python3/Python/Python-ast.c13225
-rw-r--r--contrib/tools/python3/Python/Python-tokenize.c367
-rw-r--r--contrib/tools/python3/Python/_warnings.c1481
-rw-r--r--contrib/tools/python3/Python/asdl.c6
-rw-r--r--contrib/tools/python3/Python/asm_trampoline.S28
-rw-r--r--contrib/tools/python3/Python/assemble.c603
-rw-r--r--contrib/tools/python3/Python/ast.c1111
-rw-r--r--contrib/tools/python3/Python/ast_opt.c1137
-rw-r--r--contrib/tools/python3/Python/ast_unparse.c955
-rw-r--r--contrib/tools/python3/Python/bltinmodule.c3157
-rw-r--r--contrib/tools/python3/Python/bootstrap_hash.c598
-rw-r--r--contrib/tools/python3/Python/ceval.c2795
-rw-r--r--contrib/tools/python3/Python/ceval_gil.c1089
-rw-r--r--contrib/tools/python3/Python/ceval_macros.h344
-rw-r--r--contrib/tools/python3/Python/clinic/Python-tokenize.c.h83
-rw-r--r--contrib/tools/python3/Python/clinic/_warnings.c.h249
-rw-r--r--contrib/tools/python3/Python/clinic/bltinmodule.c.h1412
-rw-r--r--contrib/tools/python3/Python/clinic/context.c.h186
-rw-r--r--contrib/tools/python3/Python/clinic/import.c.h651
-rw-r--r--contrib/tools/python3/Python/clinic/instrumentation.c.h311
-rw-r--r--contrib/tools/python3/Python/clinic/marshal.c.h164
-rw-r--r--contrib/tools/python3/Python/clinic/sysmodule.c.h1418
-rw-r--r--contrib/tools/python3/Python/clinic/traceback.c.h81
-rw-r--r--contrib/tools/python3/Python/codecs.c1516
-rw-r--r--contrib/tools/python3/Python/compile.c8144
-rw-r--r--contrib/tools/python3/Python/condvar.h309
-rw-r--r--contrib/tools/python3/Python/context.c1320
-rw-r--r--contrib/tools/python3/Python/deepfreeze/README.txt6
-rw-r--r--contrib/tools/python3/Python/deepfreeze/deepfreeze.c146746
-rw-r--r--contrib/tools/python3/Python/dtoa.c2820
-rw-r--r--contrib/tools/python3/Python/dynamic_annotations.c154
-rw-r--r--contrib/tools/python3/Python/dynload_shlib.c111
-rw-r--r--contrib/tools/python3/Python/dynload_win.c347
-rw-r--r--contrib/tools/python3/Python/errors.c1960
-rw-r--r--contrib/tools/python3/Python/fileutils.c2942
-rw-r--r--contrib/tools/python3/Python/flowgraph.c2229
-rw-r--r--contrib/tools/python3/Python/formatter_unicode.c1623
-rw-r--r--contrib/tools/python3/Python/frame.c168
-rw-r--r--contrib/tools/python3/Python/frozen.c162
-rw-r--r--contrib/tools/python3/Python/frozen_modules/README.txt7
-rw-r--r--contrib/tools/python3/Python/frozen_modules/__hello__.h56
-rw-r--r--contrib/tools/python3/Python/frozen_modules/__phello__.h24
-rw-r--r--contrib/tools/python3/Python/frozen_modules/__phello__.ham.eggs.h10
-rw-r--r--contrib/tools/python3/Python/frozen_modules/__phello__.ham.h10
-rw-r--r--contrib/tools/python3/Python/frozen_modules/__phello__.spam.h24
-rw-r--r--contrib/tools/python3/Python/frozen_modules/_collections_abc.h2871
-rw-r--r--contrib/tools/python3/Python/frozen_modules/_sitebuiltins.h299
-rw-r--r--contrib/tools/python3/Python/frozen_modules/abc.h505
-rw-r--r--contrib/tools/python3/Python/frozen_modules/codecs.h2644
-rw-r--r--contrib/tools/python3/Python/frozen_modules/frozen_only.h14
-rw-r--r--contrib/tools/python3/Python/frozen_modules/genericpath.h389
-rw-r--r--contrib/tools/python3/Python/frozen_modules/getpath.h747
-rw-r--r--contrib/tools/python3/Python/frozen_modules/importlib._bootstrap.h3488
-rw-r--r--contrib/tools/python3/Python/frozen_modules/importlib._bootstrap_external.h3845
-rw-r--r--contrib/tools/python3/Python/frozen_modules/importlib.machinery.h68
-rw-r--r--contrib/tools/python3/Python/frozen_modules/importlib.util.h705
-rw-r--r--contrib/tools/python3/Python/frozen_modules/io.h260
-rw-r--r--contrib/tools/python3/Python/frozen_modules/ntpath.h1695
-rw-r--r--contrib/tools/python3/Python/frozen_modules/os.h2715
-rw-r--r--contrib/tools/python3/Python/frozen_modules/posixpath.h1129
-rw-r--r--contrib/tools/python3/Python/frozen_modules/runpy.h901
-rw-r--r--contrib/tools/python3/Python/frozen_modules/site.h1751
-rw-r--r--contrib/tools/python3/Python/frozen_modules/stat.h329
-rw-r--r--contrib/tools/python3/Python/frozen_modules/zipimport.h1531
-rw-r--r--contrib/tools/python3/Python/future.c109
-rw-r--r--contrib/tools/python3/Python/generated_cases.c.h4800
-rw-r--r--contrib/tools/python3/Python/getargs.c2960
-rw-r--r--contrib/tools/python3/Python/getcompiler.c27
-rw-r--r--contrib/tools/python3/Python/getcopyright.c23
-rw-r--r--contrib/tools/python3/Python/getopt.c179
-rw-r--r--contrib/tools/python3/Python/getplatform.c12
-rw-r--r--contrib/tools/python3/Python/getversion.c29
-rw-r--r--contrib/tools/python3/Python/hamt.c2894
-rw-r--r--contrib/tools/python3/Python/hashtable.c424
-rw-r--r--contrib/tools/python3/Python/import.c3928
-rw-r--r--contrib/tools/python3/Python/importdl.c253
-rw-r--r--contrib/tools/python3/Python/importdl.h35
-rw-r--r--contrib/tools/python3/Python/initconfig.c3205
-rw-r--r--contrib/tools/python3/Python/instrumentation.c2178
-rw-r--r--contrib/tools/python3/Python/intrinsics.c260
-rw-r--r--contrib/tools/python3/Python/legacy_tracing.c519
-rw-r--r--contrib/tools/python3/Python/marshal.c1903
-rw-r--r--contrib/tools/python3/Python/modsupport.c696
-rw-r--r--contrib/tools/python3/Python/mysnprintf.c80
-rw-r--r--contrib/tools/python3/Python/mystrtoul.c291
-rw-r--r--contrib/tools/python3/Python/opcode_metadata.h1001
-rw-r--r--contrib/tools/python3/Python/opcode_targets.h258
-rw-r--r--contrib/tools/python3/Python/pathconfig.c524
-rw-r--r--contrib/tools/python3/Python/perf_trampoline.c493
-rw-r--r--contrib/tools/python3/Python/preconfig.c977
-rw-r--r--contrib/tools/python3/Python/pyarena.c211
-rw-r--r--contrib/tools/python3/Python/pyctype.c214
-rw-r--r--contrib/tools/python3/Python/pyfpe.c18
-rw-r--r--contrib/tools/python3/Python/pyhash.c508
-rw-r--r--contrib/tools/python3/Python/pylifecycle.c3171
-rw-r--r--contrib/tools/python3/Python/pymath.c19
-rw-r--r--contrib/tools/python3/Python/pystate.c3068
-rw-r--r--contrib/tools/python3/Python/pystrcmp.c30
-rw-r--r--contrib/tools/python3/Python/pystrhex.c174
-rw-r--r--contrib/tools/python3/Python/pystrtod.c1285
-rw-r--r--contrib/tools/python3/Python/pythonrun.c2020
-rw-r--r--contrib/tools/python3/Python/pytime.c1382
-rw-r--r--contrib/tools/python3/Python/specialize.c2273
-rw-r--r--contrib/tools/python3/Python/stdlib_module_names.h305
-rw-r--r--contrib/tools/python3/Python/structmember.c334
-rw-r--r--contrib/tools/python3/Python/suggestions.c429
-rw-r--r--contrib/tools/python3/Python/symtable.c2709
-rw-r--r--contrib/tools/python3/Python/sysmodule.c3899
-rw-r--r--contrib/tools/python3/Python/thread.c196
-rw-r--r--contrib/tools/python3/Python/thread_nt.h502
-rw-r--r--contrib/tools/python3/Python/thread_pthread.h921
-rw-r--r--contrib/tools/python3/Python/thread_pthread_stubs.h182
-rw-r--r--contrib/tools/python3/Python/traceback.c1446
-rw-r--r--contrib/tools/python3/Python/tracemalloc.c1560
114 files changed, 282939 insertions, 0 deletions
diff --git a/contrib/tools/python3/Python/Python-ast.c b/contrib/tools/python3/Python/Python-ast.c
new file mode 100644
index 00000000000..6c95f07c386
--- /dev/null
+++ b/contrib/tools/python3/Python/Python-ast.c
@@ -0,0 +1,13225 @@
+// File automatically generated by Parser/asdl_c.py.
+
+#include "Python.h"
+#include "pycore_ast.h"
+#include "pycore_ast_state.h" // struct ast_state
+#include "pycore_ceval.h" // _Py_EnterRecursiveCall
+#include "pycore_interp.h" // _PyInterpreterState.ast
+#include "pycore_pystate.h" // _PyInterpreterState_GET()
+#include "structmember.h"
+#include <stddef.h>
+
+struct validator {
+ int recursion_depth; /* current recursion depth */
+ int recursion_limit; /* recursion limit */
+};
+
+// Forward declaration
+static int init_types(struct ast_state *state);
+
+static struct ast_state*
+get_ast_state(void)
+{
+ PyInterpreterState *interp = _PyInterpreterState_GET();
+ struct ast_state *state = &interp->ast;
+ if (!init_types(state)) {
+ return NULL;
+ }
+ return state;
+}
+
+void _PyAST_Fini(PyInterpreterState *interp)
+{
+ struct ast_state *state = &interp->ast;
+
+ Py_CLEAR(state->AST_type);
+ Py_CLEAR(state->Add_singleton);
+ Py_CLEAR(state->Add_type);
+ Py_CLEAR(state->And_singleton);
+ Py_CLEAR(state->And_type);
+ Py_CLEAR(state->AnnAssign_type);
+ Py_CLEAR(state->Assert_type);
+ Py_CLEAR(state->Assign_type);
+ Py_CLEAR(state->AsyncFor_type);
+ Py_CLEAR(state->AsyncFunctionDef_type);
+ Py_CLEAR(state->AsyncWith_type);
+ Py_CLEAR(state->Attribute_type);
+ Py_CLEAR(state->AugAssign_type);
+ Py_CLEAR(state->Await_type);
+ Py_CLEAR(state->BinOp_type);
+ Py_CLEAR(state->BitAnd_singleton);
+ Py_CLEAR(state->BitAnd_type);
+ Py_CLEAR(state->BitOr_singleton);
+ Py_CLEAR(state->BitOr_type);
+ Py_CLEAR(state->BitXor_singleton);
+ Py_CLEAR(state->BitXor_type);
+ Py_CLEAR(state->BoolOp_type);
+ Py_CLEAR(state->Break_type);
+ Py_CLEAR(state->Call_type);
+ Py_CLEAR(state->ClassDef_type);
+ Py_CLEAR(state->Compare_type);
+ Py_CLEAR(state->Constant_type);
+ Py_CLEAR(state->Continue_type);
+ Py_CLEAR(state->Del_singleton);
+ Py_CLEAR(state->Del_type);
+ Py_CLEAR(state->Delete_type);
+ Py_CLEAR(state->DictComp_type);
+ Py_CLEAR(state->Dict_type);
+ Py_CLEAR(state->Div_singleton);
+ Py_CLEAR(state->Div_type);
+ Py_CLEAR(state->Eq_singleton);
+ Py_CLEAR(state->Eq_type);
+ Py_CLEAR(state->ExceptHandler_type);
+ Py_CLEAR(state->Expr_type);
+ Py_CLEAR(state->Expression_type);
+ Py_CLEAR(state->FloorDiv_singleton);
+ Py_CLEAR(state->FloorDiv_type);
+ Py_CLEAR(state->For_type);
+ Py_CLEAR(state->FormattedValue_type);
+ Py_CLEAR(state->FunctionDef_type);
+ Py_CLEAR(state->FunctionType_type);
+ Py_CLEAR(state->GeneratorExp_type);
+ Py_CLEAR(state->Global_type);
+ Py_CLEAR(state->GtE_singleton);
+ Py_CLEAR(state->GtE_type);
+ Py_CLEAR(state->Gt_singleton);
+ Py_CLEAR(state->Gt_type);
+ Py_CLEAR(state->IfExp_type);
+ Py_CLEAR(state->If_type);
+ Py_CLEAR(state->ImportFrom_type);
+ Py_CLEAR(state->Import_type);
+ Py_CLEAR(state->In_singleton);
+ Py_CLEAR(state->In_type);
+ Py_CLEAR(state->Interactive_type);
+ Py_CLEAR(state->Invert_singleton);
+ Py_CLEAR(state->Invert_type);
+ Py_CLEAR(state->IsNot_singleton);
+ Py_CLEAR(state->IsNot_type);
+ Py_CLEAR(state->Is_singleton);
+ Py_CLEAR(state->Is_type);
+ Py_CLEAR(state->JoinedStr_type);
+ Py_CLEAR(state->LShift_singleton);
+ Py_CLEAR(state->LShift_type);
+ Py_CLEAR(state->Lambda_type);
+ Py_CLEAR(state->ListComp_type);
+ Py_CLEAR(state->List_type);
+ Py_CLEAR(state->Load_singleton);
+ Py_CLEAR(state->Load_type);
+ Py_CLEAR(state->LtE_singleton);
+ Py_CLEAR(state->LtE_type);
+ Py_CLEAR(state->Lt_singleton);
+ Py_CLEAR(state->Lt_type);
+ Py_CLEAR(state->MatMult_singleton);
+ Py_CLEAR(state->MatMult_type);
+ Py_CLEAR(state->MatchAs_type);
+ Py_CLEAR(state->MatchClass_type);
+ Py_CLEAR(state->MatchMapping_type);
+ Py_CLEAR(state->MatchOr_type);
+ Py_CLEAR(state->MatchSequence_type);
+ Py_CLEAR(state->MatchSingleton_type);
+ Py_CLEAR(state->MatchStar_type);
+ Py_CLEAR(state->MatchValue_type);
+ Py_CLEAR(state->Match_type);
+ Py_CLEAR(state->Mod_singleton);
+ Py_CLEAR(state->Mod_type);
+ Py_CLEAR(state->Module_type);
+ Py_CLEAR(state->Mult_singleton);
+ Py_CLEAR(state->Mult_type);
+ Py_CLEAR(state->Name_type);
+ Py_CLEAR(state->NamedExpr_type);
+ Py_CLEAR(state->Nonlocal_type);
+ Py_CLEAR(state->NotEq_singleton);
+ Py_CLEAR(state->NotEq_type);
+ Py_CLEAR(state->NotIn_singleton);
+ Py_CLEAR(state->NotIn_type);
+ Py_CLEAR(state->Not_singleton);
+ Py_CLEAR(state->Not_type);
+ Py_CLEAR(state->Or_singleton);
+ Py_CLEAR(state->Or_type);
+ Py_CLEAR(state->ParamSpec_type);
+ Py_CLEAR(state->Pass_type);
+ Py_CLEAR(state->Pow_singleton);
+ Py_CLEAR(state->Pow_type);
+ Py_CLEAR(state->RShift_singleton);
+ Py_CLEAR(state->RShift_type);
+ Py_CLEAR(state->Raise_type);
+ Py_CLEAR(state->Return_type);
+ Py_CLEAR(state->SetComp_type);
+ Py_CLEAR(state->Set_type);
+ Py_CLEAR(state->Slice_type);
+ Py_CLEAR(state->Starred_type);
+ Py_CLEAR(state->Store_singleton);
+ Py_CLEAR(state->Store_type);
+ Py_CLEAR(state->Sub_singleton);
+ Py_CLEAR(state->Sub_type);
+ Py_CLEAR(state->Subscript_type);
+ Py_CLEAR(state->TryStar_type);
+ Py_CLEAR(state->Try_type);
+ Py_CLEAR(state->Tuple_type);
+ Py_CLEAR(state->TypeAlias_type);
+ Py_CLEAR(state->TypeIgnore_type);
+ Py_CLEAR(state->TypeVarTuple_type);
+ Py_CLEAR(state->TypeVar_type);
+ Py_CLEAR(state->UAdd_singleton);
+ Py_CLEAR(state->UAdd_type);
+ Py_CLEAR(state->USub_singleton);
+ Py_CLEAR(state->USub_type);
+ Py_CLEAR(state->UnaryOp_type);
+ Py_CLEAR(state->While_type);
+ Py_CLEAR(state->With_type);
+ Py_CLEAR(state->YieldFrom_type);
+ Py_CLEAR(state->Yield_type);
+ Py_CLEAR(state->__dict__);
+ Py_CLEAR(state->__doc__);
+ Py_CLEAR(state->__match_args__);
+ Py_CLEAR(state->__module__);
+ Py_CLEAR(state->_attributes);
+ Py_CLEAR(state->_fields);
+ Py_CLEAR(state->alias_type);
+ Py_CLEAR(state->annotation);
+ Py_CLEAR(state->arg);
+ Py_CLEAR(state->arg_type);
+ Py_CLEAR(state->args);
+ Py_CLEAR(state->argtypes);
+ Py_CLEAR(state->arguments_type);
+ Py_CLEAR(state->asname);
+ Py_CLEAR(state->ast);
+ Py_CLEAR(state->attr);
+ Py_CLEAR(state->bases);
+ Py_CLEAR(state->body);
+ Py_CLEAR(state->boolop_type);
+ Py_CLEAR(state->bound);
+ Py_CLEAR(state->cases);
+ Py_CLEAR(state->cause);
+ Py_CLEAR(state->cls);
+ Py_CLEAR(state->cmpop_type);
+ Py_CLEAR(state->col_offset);
+ Py_CLEAR(state->comparators);
+ Py_CLEAR(state->comprehension_type);
+ Py_CLEAR(state->context_expr);
+ Py_CLEAR(state->conversion);
+ Py_CLEAR(state->ctx);
+ Py_CLEAR(state->decorator_list);
+ Py_CLEAR(state->defaults);
+ Py_CLEAR(state->elt);
+ Py_CLEAR(state->elts);
+ Py_CLEAR(state->end_col_offset);
+ Py_CLEAR(state->end_lineno);
+ Py_CLEAR(state->exc);
+ Py_CLEAR(state->excepthandler_type);
+ Py_CLEAR(state->expr_context_type);
+ Py_CLEAR(state->expr_type);
+ Py_CLEAR(state->finalbody);
+ Py_CLEAR(state->format_spec);
+ Py_CLEAR(state->func);
+ Py_CLEAR(state->generators);
+ Py_CLEAR(state->guard);
+ Py_CLEAR(state->handlers);
+ Py_CLEAR(state->id);
+ Py_CLEAR(state->ifs);
+ Py_CLEAR(state->is_async);
+ Py_CLEAR(state->items);
+ Py_CLEAR(state->iter);
+ Py_CLEAR(state->key);
+ Py_CLEAR(state->keys);
+ Py_CLEAR(state->keyword_type);
+ Py_CLEAR(state->keywords);
+ Py_CLEAR(state->kind);
+ Py_CLEAR(state->kw_defaults);
+ Py_CLEAR(state->kwarg);
+ Py_CLEAR(state->kwd_attrs);
+ Py_CLEAR(state->kwd_patterns);
+ Py_CLEAR(state->kwonlyargs);
+ Py_CLEAR(state->left);
+ Py_CLEAR(state->level);
+ Py_CLEAR(state->lineno);
+ Py_CLEAR(state->lower);
+ Py_CLEAR(state->match_case_type);
+ Py_CLEAR(state->mod_type);
+ Py_CLEAR(state->module);
+ Py_CLEAR(state->msg);
+ Py_CLEAR(state->name);
+ Py_CLEAR(state->names);
+ Py_CLEAR(state->op);
+ Py_CLEAR(state->operand);
+ Py_CLEAR(state->operator_type);
+ Py_CLEAR(state->ops);
+ Py_CLEAR(state->optional_vars);
+ Py_CLEAR(state->orelse);
+ Py_CLEAR(state->pattern);
+ Py_CLEAR(state->pattern_type);
+ Py_CLEAR(state->patterns);
+ Py_CLEAR(state->posonlyargs);
+ Py_CLEAR(state->rest);
+ Py_CLEAR(state->returns);
+ Py_CLEAR(state->right);
+ Py_CLEAR(state->simple);
+ Py_CLEAR(state->slice);
+ Py_CLEAR(state->step);
+ Py_CLEAR(state->stmt_type);
+ Py_CLEAR(state->subject);
+ Py_CLEAR(state->tag);
+ Py_CLEAR(state->target);
+ Py_CLEAR(state->targets);
+ Py_CLEAR(state->test);
+ Py_CLEAR(state->type);
+ Py_CLEAR(state->type_comment);
+ Py_CLEAR(state->type_ignore_type);
+ Py_CLEAR(state->type_ignores);
+ Py_CLEAR(state->type_param_type);
+ Py_CLEAR(state->type_params);
+ Py_CLEAR(state->unaryop_type);
+ Py_CLEAR(state->upper);
+ Py_CLEAR(state->value);
+ Py_CLEAR(state->values);
+ Py_CLEAR(state->vararg);
+ Py_CLEAR(state->withitem_type);
+
+ Py_CLEAR(_Py_INTERP_CACHED_OBJECT(interp, str_replace_inf));
+
+#if !defined(NDEBUG)
+ state->initialized = -1;
+#else
+ state->initialized = 0;
+#endif
+}
+
+static int init_identifiers(struct ast_state *state)
+{
+ if ((state->__dict__ = PyUnicode_InternFromString("__dict__")) == NULL) return 0;
+ if ((state->__doc__ = PyUnicode_InternFromString("__doc__")) == NULL) return 0;
+ if ((state->__match_args__ = PyUnicode_InternFromString("__match_args__")) == NULL) return 0;
+ if ((state->__module__ = PyUnicode_InternFromString("__module__")) == NULL) return 0;
+ if ((state->_attributes = PyUnicode_InternFromString("_attributes")) == NULL) return 0;
+ if ((state->_fields = PyUnicode_InternFromString("_fields")) == NULL) return 0;
+ if ((state->annotation = PyUnicode_InternFromString("annotation")) == NULL) return 0;
+ if ((state->arg = PyUnicode_InternFromString("arg")) == NULL) return 0;
+ if ((state->args = PyUnicode_InternFromString("args")) == NULL) return 0;
+ if ((state->argtypes = PyUnicode_InternFromString("argtypes")) == NULL) return 0;
+ if ((state->asname = PyUnicode_InternFromString("asname")) == NULL) return 0;
+ if ((state->ast = PyUnicode_InternFromString("ast")) == NULL) return 0;
+ if ((state->attr = PyUnicode_InternFromString("attr")) == NULL) return 0;
+ if ((state->bases = PyUnicode_InternFromString("bases")) == NULL) return 0;
+ if ((state->body = PyUnicode_InternFromString("body")) == NULL) return 0;
+ if ((state->bound = PyUnicode_InternFromString("bound")) == NULL) return 0;
+ if ((state->cases = PyUnicode_InternFromString("cases")) == NULL) return 0;
+ if ((state->cause = PyUnicode_InternFromString("cause")) == NULL) return 0;
+ if ((state->cls = PyUnicode_InternFromString("cls")) == NULL) return 0;
+ if ((state->col_offset = PyUnicode_InternFromString("col_offset")) == NULL) return 0;
+ if ((state->comparators = PyUnicode_InternFromString("comparators")) == NULL) return 0;
+ if ((state->context_expr = PyUnicode_InternFromString("context_expr")) == NULL) return 0;
+ if ((state->conversion = PyUnicode_InternFromString("conversion")) == NULL) return 0;
+ if ((state->ctx = PyUnicode_InternFromString("ctx")) == NULL) return 0;
+ if ((state->decorator_list = PyUnicode_InternFromString("decorator_list")) == NULL) return 0;
+ if ((state->defaults = PyUnicode_InternFromString("defaults")) == NULL) return 0;
+ if ((state->elt = PyUnicode_InternFromString("elt")) == NULL) return 0;
+ if ((state->elts = PyUnicode_InternFromString("elts")) == NULL) return 0;
+ if ((state->end_col_offset = PyUnicode_InternFromString("end_col_offset")) == NULL) return 0;
+ if ((state->end_lineno = PyUnicode_InternFromString("end_lineno")) == NULL) return 0;
+ if ((state->exc = PyUnicode_InternFromString("exc")) == NULL) return 0;
+ if ((state->finalbody = PyUnicode_InternFromString("finalbody")) == NULL) return 0;
+ if ((state->format_spec = PyUnicode_InternFromString("format_spec")) == NULL) return 0;
+ if ((state->func = PyUnicode_InternFromString("func")) == NULL) return 0;
+ if ((state->generators = PyUnicode_InternFromString("generators")) == NULL) return 0;
+ if ((state->guard = PyUnicode_InternFromString("guard")) == NULL) return 0;
+ if ((state->handlers = PyUnicode_InternFromString("handlers")) == NULL) return 0;
+ if ((state->id = PyUnicode_InternFromString("id")) == NULL) return 0;
+ if ((state->ifs = PyUnicode_InternFromString("ifs")) == NULL) return 0;
+ if ((state->is_async = PyUnicode_InternFromString("is_async")) == NULL) return 0;
+ if ((state->items = PyUnicode_InternFromString("items")) == NULL) return 0;
+ if ((state->iter = PyUnicode_InternFromString("iter")) == NULL) return 0;
+ if ((state->key = PyUnicode_InternFromString("key")) == NULL) return 0;
+ if ((state->keys = PyUnicode_InternFromString("keys")) == NULL) return 0;
+ if ((state->keywords = PyUnicode_InternFromString("keywords")) == NULL) return 0;
+ if ((state->kind = PyUnicode_InternFromString("kind")) == NULL) return 0;
+ if ((state->kw_defaults = PyUnicode_InternFromString("kw_defaults")) == NULL) return 0;
+ if ((state->kwarg = PyUnicode_InternFromString("kwarg")) == NULL) return 0;
+ if ((state->kwd_attrs = PyUnicode_InternFromString("kwd_attrs")) == NULL) return 0;
+ if ((state->kwd_patterns = PyUnicode_InternFromString("kwd_patterns")) == NULL) return 0;
+ if ((state->kwonlyargs = PyUnicode_InternFromString("kwonlyargs")) == NULL) return 0;
+ if ((state->left = PyUnicode_InternFromString("left")) == NULL) return 0;
+ if ((state->level = PyUnicode_InternFromString("level")) == NULL) return 0;
+ if ((state->lineno = PyUnicode_InternFromString("lineno")) == NULL) return 0;
+ if ((state->lower = PyUnicode_InternFromString("lower")) == NULL) return 0;
+ if ((state->module = PyUnicode_InternFromString("module")) == NULL) return 0;
+ if ((state->msg = PyUnicode_InternFromString("msg")) == NULL) return 0;
+ if ((state->name = PyUnicode_InternFromString("name")) == NULL) return 0;
+ if ((state->names = PyUnicode_InternFromString("names")) == NULL) return 0;
+ if ((state->op = PyUnicode_InternFromString("op")) == NULL) return 0;
+ if ((state->operand = PyUnicode_InternFromString("operand")) == NULL) return 0;
+ if ((state->ops = PyUnicode_InternFromString("ops")) == NULL) return 0;
+ if ((state->optional_vars = PyUnicode_InternFromString("optional_vars")) == NULL) return 0;
+ if ((state->orelse = PyUnicode_InternFromString("orelse")) == NULL) return 0;
+ if ((state->pattern = PyUnicode_InternFromString("pattern")) == NULL) return 0;
+ if ((state->patterns = PyUnicode_InternFromString("patterns")) == NULL) return 0;
+ if ((state->posonlyargs = PyUnicode_InternFromString("posonlyargs")) == NULL) return 0;
+ if ((state->rest = PyUnicode_InternFromString("rest")) == NULL) return 0;
+ if ((state->returns = PyUnicode_InternFromString("returns")) == NULL) return 0;
+ if ((state->right = PyUnicode_InternFromString("right")) == NULL) return 0;
+ if ((state->simple = PyUnicode_InternFromString("simple")) == NULL) return 0;
+ if ((state->slice = PyUnicode_InternFromString("slice")) == NULL) return 0;
+ if ((state->step = PyUnicode_InternFromString("step")) == NULL) return 0;
+ if ((state->subject = PyUnicode_InternFromString("subject")) == NULL) return 0;
+ if ((state->tag = PyUnicode_InternFromString("tag")) == NULL) return 0;
+ if ((state->target = PyUnicode_InternFromString("target")) == NULL) return 0;
+ if ((state->targets = PyUnicode_InternFromString("targets")) == NULL) return 0;
+ if ((state->test = PyUnicode_InternFromString("test")) == NULL) return 0;
+ if ((state->type = PyUnicode_InternFromString("type")) == NULL) return 0;
+ if ((state->type_comment = PyUnicode_InternFromString("type_comment")) == NULL) return 0;
+ if ((state->type_ignores = PyUnicode_InternFromString("type_ignores")) == NULL) return 0;
+ if ((state->type_params = PyUnicode_InternFromString("type_params")) == NULL) return 0;
+ if ((state->upper = PyUnicode_InternFromString("upper")) == NULL) return 0;
+ if ((state->value = PyUnicode_InternFromString("value")) == NULL) return 0;
+ if ((state->values = PyUnicode_InternFromString("values")) == NULL) return 0;
+ if ((state->vararg = PyUnicode_InternFromString("vararg")) == NULL) return 0;
+ return 1;
+};
+
+GENERATE_ASDL_SEQ_CONSTRUCTOR(mod, mod_ty)
+GENERATE_ASDL_SEQ_CONSTRUCTOR(stmt, stmt_ty)
+GENERATE_ASDL_SEQ_CONSTRUCTOR(expr, expr_ty)
+GENERATE_ASDL_SEQ_CONSTRUCTOR(comprehension, comprehension_ty)
+GENERATE_ASDL_SEQ_CONSTRUCTOR(excepthandler, excepthandler_ty)
+GENERATE_ASDL_SEQ_CONSTRUCTOR(arguments, arguments_ty)
+GENERATE_ASDL_SEQ_CONSTRUCTOR(arg, arg_ty)
+GENERATE_ASDL_SEQ_CONSTRUCTOR(keyword, keyword_ty)
+GENERATE_ASDL_SEQ_CONSTRUCTOR(alias, alias_ty)
+GENERATE_ASDL_SEQ_CONSTRUCTOR(withitem, withitem_ty)
+GENERATE_ASDL_SEQ_CONSTRUCTOR(match_case, match_case_ty)
+GENERATE_ASDL_SEQ_CONSTRUCTOR(pattern, pattern_ty)
+GENERATE_ASDL_SEQ_CONSTRUCTOR(type_ignore, type_ignore_ty)
+GENERATE_ASDL_SEQ_CONSTRUCTOR(type_param, type_param_ty)
+
+static PyObject* ast2obj_mod(struct ast_state *state, struct validator *vstate,
+ void*);
+static const char * const Module_fields[]={
+ "body",
+ "type_ignores",
+};
+static const char * const Interactive_fields[]={
+ "body",
+};
+static const char * const Expression_fields[]={
+ "body",
+};
+static const char * const FunctionType_fields[]={
+ "argtypes",
+ "returns",
+};
+static const char * const stmt_attributes[] = {
+ "lineno",
+ "col_offset",
+ "end_lineno",
+ "end_col_offset",
+};
+static PyObject* ast2obj_stmt(struct ast_state *state, struct validator
+ *vstate, void*);
+static const char * const FunctionDef_fields[]={
+ "name",
+ "args",
+ "body",
+ "decorator_list",
+ "returns",
+ "type_comment",
+ "type_params",
+};
+static const char * const AsyncFunctionDef_fields[]={
+ "name",
+ "args",
+ "body",
+ "decorator_list",
+ "returns",
+ "type_comment",
+ "type_params",
+};
+static const char * const ClassDef_fields[]={
+ "name",
+ "bases",
+ "keywords",
+ "body",
+ "decorator_list",
+ "type_params",
+};
+static const char * const Return_fields[]={
+ "value",
+};
+static const char * const Delete_fields[]={
+ "targets",
+};
+static const char * const Assign_fields[]={
+ "targets",
+ "value",
+ "type_comment",
+};
+static const char * const TypeAlias_fields[]={
+ "name",
+ "type_params",
+ "value",
+};
+static const char * const AugAssign_fields[]={
+ "target",
+ "op",
+ "value",
+};
+static const char * const AnnAssign_fields[]={
+ "target",
+ "annotation",
+ "value",
+ "simple",
+};
+static const char * const For_fields[]={
+ "target",
+ "iter",
+ "body",
+ "orelse",
+ "type_comment",
+};
+static const char * const AsyncFor_fields[]={
+ "target",
+ "iter",
+ "body",
+ "orelse",
+ "type_comment",
+};
+static const char * const While_fields[]={
+ "test",
+ "body",
+ "orelse",
+};
+static const char * const If_fields[]={
+ "test",
+ "body",
+ "orelse",
+};
+static const char * const With_fields[]={
+ "items",
+ "body",
+ "type_comment",
+};
+static const char * const AsyncWith_fields[]={
+ "items",
+ "body",
+ "type_comment",
+};
+static const char * const Match_fields[]={
+ "subject",
+ "cases",
+};
+static const char * const Raise_fields[]={
+ "exc",
+ "cause",
+};
+static const char * const Try_fields[]={
+ "body",
+ "handlers",
+ "orelse",
+ "finalbody",
+};
+static const char * const TryStar_fields[]={
+ "body",
+ "handlers",
+ "orelse",
+ "finalbody",
+};
+static const char * const Assert_fields[]={
+ "test",
+ "msg",
+};
+static const char * const Import_fields[]={
+ "names",
+};
+static const char * const ImportFrom_fields[]={
+ "module",
+ "names",
+ "level",
+};
+static const char * const Global_fields[]={
+ "names",
+};
+static const char * const Nonlocal_fields[]={
+ "names",
+};
+static const char * const Expr_fields[]={
+ "value",
+};
+static const char * const expr_attributes[] = {
+ "lineno",
+ "col_offset",
+ "end_lineno",
+ "end_col_offset",
+};
+static PyObject* ast2obj_expr(struct ast_state *state, struct validator
+ *vstate, void*);
+static const char * const BoolOp_fields[]={
+ "op",
+ "values",
+};
+static const char * const NamedExpr_fields[]={
+ "target",
+ "value",
+};
+static const char * const BinOp_fields[]={
+ "left",
+ "op",
+ "right",
+};
+static const char * const UnaryOp_fields[]={
+ "op",
+ "operand",
+};
+static const char * const Lambda_fields[]={
+ "args",
+ "body",
+};
+static const char * const IfExp_fields[]={
+ "test",
+ "body",
+ "orelse",
+};
+static const char * const Dict_fields[]={
+ "keys",
+ "values",
+};
+static const char * const Set_fields[]={
+ "elts",
+};
+static const char * const ListComp_fields[]={
+ "elt",
+ "generators",
+};
+static const char * const SetComp_fields[]={
+ "elt",
+ "generators",
+};
+static const char * const DictComp_fields[]={
+ "key",
+ "value",
+ "generators",
+};
+static const char * const GeneratorExp_fields[]={
+ "elt",
+ "generators",
+};
+static const char * const Await_fields[]={
+ "value",
+};
+static const char * const Yield_fields[]={
+ "value",
+};
+static const char * const YieldFrom_fields[]={
+ "value",
+};
+static const char * const Compare_fields[]={
+ "left",
+ "ops",
+ "comparators",
+};
+static const char * const Call_fields[]={
+ "func",
+ "args",
+ "keywords",
+};
+static const char * const FormattedValue_fields[]={
+ "value",
+ "conversion",
+ "format_spec",
+};
+static const char * const JoinedStr_fields[]={
+ "values",
+};
+static const char * const Constant_fields[]={
+ "value",
+ "kind",
+};
+static const char * const Attribute_fields[]={
+ "value",
+ "attr",
+ "ctx",
+};
+static const char * const Subscript_fields[]={
+ "value",
+ "slice",
+ "ctx",
+};
+static const char * const Starred_fields[]={
+ "value",
+ "ctx",
+};
+static const char * const Name_fields[]={
+ "id",
+ "ctx",
+};
+static const char * const List_fields[]={
+ "elts",
+ "ctx",
+};
+static const char * const Tuple_fields[]={
+ "elts",
+ "ctx",
+};
+static const char * const Slice_fields[]={
+ "lower",
+ "upper",
+ "step",
+};
+static PyObject* ast2obj_expr_context(struct ast_state *state, struct validator
+ *vstate, expr_context_ty);
+static PyObject* ast2obj_boolop(struct ast_state *state, struct validator
+ *vstate, boolop_ty);
+static PyObject* ast2obj_operator(struct ast_state *state, struct validator
+ *vstate, operator_ty);
+static PyObject* ast2obj_unaryop(struct ast_state *state, struct validator
+ *vstate, unaryop_ty);
+static PyObject* ast2obj_cmpop(struct ast_state *state, struct validator
+ *vstate, cmpop_ty);
+static PyObject* ast2obj_comprehension(struct ast_state *state, struct
+ validator *vstate, void*);
+static const char * const comprehension_fields[]={
+ "target",
+ "iter",
+ "ifs",
+ "is_async",
+};
+static const char * const excepthandler_attributes[] = {
+ "lineno",
+ "col_offset",
+ "end_lineno",
+ "end_col_offset",
+};
+static PyObject* ast2obj_excepthandler(struct ast_state *state, struct
+ validator *vstate, void*);
+static const char * const ExceptHandler_fields[]={
+ "type",
+ "name",
+ "body",
+};
+static PyObject* ast2obj_arguments(struct ast_state *state, struct validator
+ *vstate, void*);
+static const char * const arguments_fields[]={
+ "posonlyargs",
+ "args",
+ "vararg",
+ "kwonlyargs",
+ "kw_defaults",
+ "kwarg",
+ "defaults",
+};
+static PyObject* ast2obj_arg(struct ast_state *state, struct validator *vstate,
+ void*);
+static const char * const arg_attributes[] = {
+ "lineno",
+ "col_offset",
+ "end_lineno",
+ "end_col_offset",
+};
+static const char * const arg_fields[]={
+ "arg",
+ "annotation",
+ "type_comment",
+};
+static PyObject* ast2obj_keyword(struct ast_state *state, struct validator
+ *vstate, void*);
+static const char * const keyword_attributes[] = {
+ "lineno",
+ "col_offset",
+ "end_lineno",
+ "end_col_offset",
+};
+static const char * const keyword_fields[]={
+ "arg",
+ "value",
+};
+static PyObject* ast2obj_alias(struct ast_state *state, struct validator
+ *vstate, void*);
+static const char * const alias_attributes[] = {
+ "lineno",
+ "col_offset",
+ "end_lineno",
+ "end_col_offset",
+};
+static const char * const alias_fields[]={
+ "name",
+ "asname",
+};
+static PyObject* ast2obj_withitem(struct ast_state *state, struct validator
+ *vstate, void*);
+static const char * const withitem_fields[]={
+ "context_expr",
+ "optional_vars",
+};
+static PyObject* ast2obj_match_case(struct ast_state *state, struct validator
+ *vstate, void*);
+static const char * const match_case_fields[]={
+ "pattern",
+ "guard",
+ "body",
+};
+static const char * const pattern_attributes[] = {
+ "lineno",
+ "col_offset",
+ "end_lineno",
+ "end_col_offset",
+};
+static PyObject* ast2obj_pattern(struct ast_state *state, struct validator
+ *vstate, void*);
+static const char * const MatchValue_fields[]={
+ "value",
+};
+static const char * const MatchSingleton_fields[]={
+ "value",
+};
+static const char * const MatchSequence_fields[]={
+ "patterns",
+};
+static const char * const MatchMapping_fields[]={
+ "keys",
+ "patterns",
+ "rest",
+};
+static const char * const MatchClass_fields[]={
+ "cls",
+ "patterns",
+ "kwd_attrs",
+ "kwd_patterns",
+};
+static const char * const MatchStar_fields[]={
+ "name",
+};
+static const char * const MatchAs_fields[]={
+ "pattern",
+ "name",
+};
+static const char * const MatchOr_fields[]={
+ "patterns",
+};
+static PyObject* ast2obj_type_ignore(struct ast_state *state, struct validator
+ *vstate, void*);
+static const char * const TypeIgnore_fields[]={
+ "lineno",
+ "tag",
+};
+static const char * const type_param_attributes[] = {
+ "lineno",
+ "col_offset",
+ "end_lineno",
+ "end_col_offset",
+};
+static PyObject* ast2obj_type_param(struct ast_state *state, struct validator
+ *vstate, void*);
+static const char * const TypeVar_fields[]={
+ "name",
+ "bound",
+};
+static const char * const ParamSpec_fields[]={
+ "name",
+};
+static const char * const TypeVarTuple_fields[]={
+ "name",
+};
+
+
+
+typedef struct {
+ PyObject_HEAD
+ PyObject *dict;
+} AST_object;
+
+static void
+ast_dealloc(AST_object *self)
+{
+ /* bpo-31095: UnTrack is needed before calling any callbacks */
+ PyTypeObject *tp = Py_TYPE(self);
+ PyObject_GC_UnTrack(self);
+ Py_CLEAR(self->dict);
+ freefunc free_func = PyType_GetSlot(tp, Py_tp_free);
+ assert(free_func != NULL);
+ free_func(self);
+ Py_DECREF(tp);
+}
+
+static int
+ast_traverse(AST_object *self, visitproc visit, void *arg)
+{
+ Py_VISIT(Py_TYPE(self));
+ Py_VISIT(self->dict);
+ return 0;
+}
+
+static int
+ast_clear(AST_object *self)
+{
+ Py_CLEAR(self->dict);
+ return 0;
+}
+
+static int
+ast_type_init(PyObject *self, PyObject *args, PyObject *kw)
+{
+ struct ast_state *state = get_ast_state();
+ if (state == NULL) {
+ return -1;
+ }
+
+ Py_ssize_t i, numfields = 0;
+ int res = -1;
+ PyObject *key, *value, *fields;
+ if (_PyObject_LookupAttr((PyObject*)Py_TYPE(self), state->_fields, &fields) < 0) {
+ goto cleanup;
+ }
+ if (fields) {
+ numfields = PySequence_Size(fields);
+ if (numfields == -1) {
+ goto cleanup;
+ }
+ }
+
+ res = 0; /* if no error occurs, this stays 0 to the end */
+ if (numfields < PyTuple_GET_SIZE(args)) {
+ PyErr_Format(PyExc_TypeError, "%.400s constructor takes at most "
+ "%zd positional argument%s",
+ _PyType_Name(Py_TYPE(self)),
+ numfields, numfields == 1 ? "" : "s");
+ res = -1;
+ goto cleanup;
+ }
+ for (i = 0; i < PyTuple_GET_SIZE(args); i++) {
+ /* cannot be reached when fields is NULL */
+ PyObject *name = PySequence_GetItem(fields, i);
+ if (!name) {
+ res = -1;
+ goto cleanup;
+ }
+ res = PyObject_SetAttr(self, name, PyTuple_GET_ITEM(args, i));
+ Py_DECREF(name);
+ if (res < 0) {
+ goto cleanup;
+ }
+ }
+ if (kw) {
+ i = 0; /* needed by PyDict_Next */
+ while (PyDict_Next(kw, &i, &key, &value)) {
+ int contains = PySequence_Contains(fields, key);
+ if (contains == -1) {
+ res = -1;
+ goto cleanup;
+ } else if (contains == 1) {
+ Py_ssize_t p = PySequence_Index(fields, key);
+ if (p == -1) {
+ res = -1;
+ goto cleanup;
+ }
+ if (p < PyTuple_GET_SIZE(args)) {
+ PyErr_Format(PyExc_TypeError,
+ "%.400s got multiple values for argument '%U'",
+ Py_TYPE(self)->tp_name, key);
+ res = -1;
+ goto cleanup;
+ }
+ }
+ res = PyObject_SetAttr(self, key, value);
+ if (res < 0) {
+ goto cleanup;
+ }
+ }
+ }
+ cleanup:
+ Py_XDECREF(fields);
+ return res;
+}
+
+/* Pickling support */
+static PyObject *
+ast_type_reduce(PyObject *self, PyObject *unused)
+{
+ struct ast_state *state = get_ast_state();
+ if (state == NULL) {
+ return NULL;
+ }
+
+ PyObject *dict;
+ if (_PyObject_LookupAttr(self, state->__dict__, &dict) < 0) {
+ return NULL;
+ }
+ if (dict) {
+ return Py_BuildValue("O()N", Py_TYPE(self), dict);
+ }
+ return Py_BuildValue("O()", Py_TYPE(self));
+}
+
+static PyMemberDef ast_type_members[] = {
+ {"__dictoffset__", T_PYSSIZET, offsetof(AST_object, dict), READONLY},
+ {NULL} /* Sentinel */
+};
+
+static PyMethodDef ast_type_methods[] = {
+ {"__reduce__", ast_type_reduce, METH_NOARGS, NULL},
+ {NULL}
+};
+
+static PyGetSetDef ast_type_getsets[] = {
+ {"__dict__", PyObject_GenericGetDict, PyObject_GenericSetDict},
+ {NULL}
+};
+
+static PyType_Slot AST_type_slots[] = {
+ {Py_tp_dealloc, ast_dealloc},
+ {Py_tp_getattro, PyObject_GenericGetAttr},
+ {Py_tp_setattro, PyObject_GenericSetAttr},
+ {Py_tp_traverse, ast_traverse},
+ {Py_tp_clear, ast_clear},
+ {Py_tp_members, ast_type_members},
+ {Py_tp_methods, ast_type_methods},
+ {Py_tp_getset, ast_type_getsets},
+ {Py_tp_init, ast_type_init},
+ {Py_tp_alloc, PyType_GenericAlloc},
+ {Py_tp_new, PyType_GenericNew},
+ {Py_tp_free, PyObject_GC_Del},
+ {0, 0},
+};
+
+static PyType_Spec AST_type_spec = {
+ "ast.AST",
+ sizeof(AST_object),
+ 0,
+ Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE | Py_TPFLAGS_HAVE_GC,
+ AST_type_slots
+};
+
+static PyObject *
+make_type(struct ast_state *state, const char *type, PyObject* base,
+ const char* const* fields, int num_fields, const char *doc)
+{
+ PyObject *fnames, *result;
+ int i;
+ fnames = PyTuple_New(num_fields);
+ if (!fnames) return NULL;
+ for (i = 0; i < num_fields; i++) {
+ PyObject *field = PyUnicode_InternFromString(fields[i]);
+ if (!field) {
+ Py_DECREF(fnames);
+ return NULL;
+ }
+ PyTuple_SET_ITEM(fnames, i, field);
+ }
+ result = PyObject_CallFunction((PyObject*)&PyType_Type, "s(O){OOOOOOOs}",
+ type, base,
+ state->_fields, fnames,
+ state->__match_args__, fnames,
+ state->__module__,
+ state->ast,
+ state->__doc__, doc);
+ Py_DECREF(fnames);
+ return result;
+}
+
+static int
+add_attributes(struct ast_state *state, PyObject *type, const char * const *attrs, int num_fields)
+{
+ int i, result;
+ PyObject *s, *l = PyTuple_New(num_fields);
+ if (!l)
+ return 0;
+ for (i = 0; i < num_fields; i++) {
+ s = PyUnicode_InternFromString(attrs[i]);
+ if (!s) {
+ Py_DECREF(l);
+ return 0;
+ }
+ PyTuple_SET_ITEM(l, i, s);
+ }
+ result = PyObject_SetAttr(type, state->_attributes, l) >= 0;
+ Py_DECREF(l);
+ return result;
+}
+
+/* Conversion AST -> Python */
+
+static PyObject* ast2obj_list(struct ast_state *state, struct validator *vstate, asdl_seq *seq,
+ PyObject* (*func)(struct ast_state *state, struct validator *vstate, void*))
+{
+ Py_ssize_t i, n = asdl_seq_LEN(seq);
+ PyObject *result = PyList_New(n);
+ PyObject *value;
+ if (!result)
+ return NULL;
+ for (i = 0; i < n; i++) {
+ value = func(state, vstate, asdl_seq_GET_UNTYPED(seq, i));
+ if (!value) {
+ Py_DECREF(result);
+ return NULL;
+ }
+ PyList_SET_ITEM(result, i, value);
+ }
+ return result;
+}
+
+static PyObject* ast2obj_object(struct ast_state *Py_UNUSED(state), struct validator *Py_UNUSED(vstate), void *o)
+{
+ PyObject *op = (PyObject*)o;
+ if (!op) {
+ op = Py_None;
+ }
+ return Py_NewRef(op);
+}
+#define ast2obj_constant ast2obj_object
+#define ast2obj_identifier ast2obj_object
+#define ast2obj_string ast2obj_object
+
+static PyObject* ast2obj_int(struct ast_state *Py_UNUSED(state), struct validator *Py_UNUSED(vstate), long b)
+{
+ return PyLong_FromLong(b);
+}
+
+/* Conversion Python -> AST */
+
+static int obj2ast_object(struct ast_state *Py_UNUSED(state), PyObject* obj, PyObject** out, PyArena* arena)
+{
+ if (obj == Py_None)
+ obj = NULL;
+ if (obj) {
+ if (_PyArena_AddPyObject(arena, obj) < 0) {
+ *out = NULL;
+ return -1;
+ }
+ *out = Py_NewRef(obj);
+ }
+ else {
+ *out = NULL;
+ }
+ return 0;
+}
+
+static int obj2ast_constant(struct ast_state *Py_UNUSED(state), PyObject* obj, PyObject** out, PyArena* arena)
+{
+ if (_PyArena_AddPyObject(arena, obj) < 0) {
+ *out = NULL;
+ return -1;
+ }
+ *out = Py_NewRef(obj);
+ return 0;
+}
+
+static int obj2ast_identifier(struct ast_state *state, PyObject* obj, PyObject** out, PyArena* arena)
+{
+ if (!PyUnicode_CheckExact(obj) && obj != Py_None) {
+ PyErr_SetString(PyExc_TypeError, "AST identifier must be of type str");
+ return 1;
+ }
+ return obj2ast_object(state, obj, out, arena);
+}
+
+static int obj2ast_string(struct ast_state *state, PyObject* obj, PyObject** out, PyArena* arena)
+{
+ if (!PyUnicode_CheckExact(obj) && !PyBytes_CheckExact(obj)) {
+ PyErr_SetString(PyExc_TypeError, "AST string must be of type str");
+ return 1;
+ }
+ return obj2ast_object(state, obj, out, arena);
+}
+
+static int obj2ast_int(struct ast_state* Py_UNUSED(state), PyObject* obj, int* out, PyArena* arena)
+{
+ int i;
+ if (!PyLong_Check(obj)) {
+ PyErr_Format(PyExc_ValueError, "invalid integer value: %R", obj);
+ return 1;
+ }
+
+ i = _PyLong_AsInt(obj);
+ if (i == -1 && PyErr_Occurred())
+ return 1;
+ *out = i;
+ return 0;
+}
+
+static int add_ast_fields(struct ast_state *state)
+{
+ PyObject *empty_tuple;
+ empty_tuple = PyTuple_New(0);
+ if (!empty_tuple ||
+ PyObject_SetAttrString(state->AST_type, "_fields", empty_tuple) < 0 ||
+ PyObject_SetAttrString(state->AST_type, "__match_args__", empty_tuple) < 0 ||
+ PyObject_SetAttrString(state->AST_type, "_attributes", empty_tuple) < 0) {
+ Py_XDECREF(empty_tuple);
+ return -1;
+ }
+ Py_DECREF(empty_tuple);
+ return 0;
+}
+
+
+
+static int
+init_types(struct ast_state *state)
+{
+ // init_types() must not be called after _PyAST_Fini()
+ // has been called
+ assert(state->initialized >= 0);
+
+ if (state->initialized) {
+ return 1;
+ }
+ if (init_identifiers(state) < 0) {
+ return 0;
+ }
+ state->AST_type = PyType_FromSpec(&AST_type_spec);
+ if (!state->AST_type) {
+ return 0;
+ }
+ if (add_ast_fields(state) < 0) {
+ return 0;
+ }
+ state->mod_type = make_type(state, "mod", state->AST_type, NULL, 0,
+ "mod = Module(stmt* body, type_ignore* type_ignores)\n"
+ " | Interactive(stmt* body)\n"
+ " | Expression(expr body)\n"
+ " | FunctionType(expr* argtypes, expr returns)");
+ if (!state->mod_type) return 0;
+ if (!add_attributes(state, state->mod_type, NULL, 0)) return 0;
+ state->Module_type = make_type(state, "Module", state->mod_type,
+ Module_fields, 2,
+ "Module(stmt* body, type_ignore* type_ignores)");
+ if (!state->Module_type) return 0;
+ state->Interactive_type = make_type(state, "Interactive", state->mod_type,
+ Interactive_fields, 1,
+ "Interactive(stmt* body)");
+ if (!state->Interactive_type) return 0;
+ state->Expression_type = make_type(state, "Expression", state->mod_type,
+ Expression_fields, 1,
+ "Expression(expr body)");
+ if (!state->Expression_type) return 0;
+ state->FunctionType_type = make_type(state, "FunctionType",
+ state->mod_type, FunctionType_fields,
+ 2,
+ "FunctionType(expr* argtypes, expr returns)");
+ if (!state->FunctionType_type) return 0;
+ state->stmt_type = make_type(state, "stmt", state->AST_type, NULL, 0,
+ "stmt = FunctionDef(identifier name, arguments args, stmt* body, expr* decorator_list, expr? returns, string? type_comment, type_param* type_params)\n"
+ " | AsyncFunctionDef(identifier name, arguments args, stmt* body, expr* decorator_list, expr? returns, string? type_comment, type_param* type_params)\n"
+ " | ClassDef(identifier name, expr* bases, keyword* keywords, stmt* body, expr* decorator_list, type_param* type_params)\n"
+ " | Return(expr? value)\n"
+ " | Delete(expr* targets)\n"
+ " | Assign(expr* targets, expr value, string? type_comment)\n"
+ " | TypeAlias(expr name, type_param* type_params, expr value)\n"
+ " | AugAssign(expr target, operator op, expr value)\n"
+ " | AnnAssign(expr target, expr annotation, expr? value, int simple)\n"
+ " | For(expr target, expr iter, stmt* body, stmt* orelse, string? type_comment)\n"
+ " | AsyncFor(expr target, expr iter, stmt* body, stmt* orelse, string? type_comment)\n"
+ " | While(expr test, stmt* body, stmt* orelse)\n"
+ " | If(expr test, stmt* body, stmt* orelse)\n"
+ " | With(withitem* items, stmt* body, string? type_comment)\n"
+ " | AsyncWith(withitem* items, stmt* body, string? type_comment)\n"
+ " | Match(expr subject, match_case* cases)\n"
+ " | Raise(expr? exc, expr? cause)\n"
+ " | Try(stmt* body, excepthandler* handlers, stmt* orelse, stmt* finalbody)\n"
+ " | TryStar(stmt* body, excepthandler* handlers, stmt* orelse, stmt* finalbody)\n"
+ " | Assert(expr test, expr? msg)\n"
+ " | Import(alias* names)\n"
+ " | ImportFrom(identifier? module, alias* names, int? level)\n"
+ " | Global(identifier* names)\n"
+ " | Nonlocal(identifier* names)\n"
+ " | Expr(expr value)\n"
+ " | Pass\n"
+ " | Break\n"
+ " | Continue");
+ if (!state->stmt_type) return 0;
+ if (!add_attributes(state, state->stmt_type, stmt_attributes, 4)) return 0;
+ if (PyObject_SetAttr(state->stmt_type, state->end_lineno, Py_None) == -1)
+ return 0;
+ if (PyObject_SetAttr(state->stmt_type, state->end_col_offset, Py_None) ==
+ -1)
+ return 0;
+ state->FunctionDef_type = make_type(state, "FunctionDef", state->stmt_type,
+ FunctionDef_fields, 7,
+ "FunctionDef(identifier name, arguments args, stmt* body, expr* decorator_list, expr? returns, string? type_comment, type_param* type_params)");
+ if (!state->FunctionDef_type) return 0;
+ if (PyObject_SetAttr(state->FunctionDef_type, state->returns, Py_None) ==
+ -1)
+ return 0;
+ if (PyObject_SetAttr(state->FunctionDef_type, state->type_comment, Py_None)
+ == -1)
+ return 0;
+ state->AsyncFunctionDef_type = make_type(state, "AsyncFunctionDef",
+ state->stmt_type,
+ AsyncFunctionDef_fields, 7,
+ "AsyncFunctionDef(identifier name, arguments args, stmt* body, expr* decorator_list, expr? returns, string? type_comment, type_param* type_params)");
+ if (!state->AsyncFunctionDef_type) return 0;
+ if (PyObject_SetAttr(state->AsyncFunctionDef_type, state->returns, Py_None)
+ == -1)
+ return 0;
+ if (PyObject_SetAttr(state->AsyncFunctionDef_type, state->type_comment,
+ Py_None) == -1)
+ return 0;
+ state->ClassDef_type = make_type(state, "ClassDef", state->stmt_type,
+ ClassDef_fields, 6,
+ "ClassDef(identifier name, expr* bases, keyword* keywords, stmt* body, expr* decorator_list, type_param* type_params)");
+ if (!state->ClassDef_type) return 0;
+ state->Return_type = make_type(state, "Return", state->stmt_type,
+ Return_fields, 1,
+ "Return(expr? value)");
+ if (!state->Return_type) return 0;
+ if (PyObject_SetAttr(state->Return_type, state->value, Py_None) == -1)
+ return 0;
+ state->Delete_type = make_type(state, "Delete", state->stmt_type,
+ Delete_fields, 1,
+ "Delete(expr* targets)");
+ if (!state->Delete_type) return 0;
+ state->Assign_type = make_type(state, "Assign", state->stmt_type,
+ Assign_fields, 3,
+ "Assign(expr* targets, expr value, string? type_comment)");
+ if (!state->Assign_type) return 0;
+ if (PyObject_SetAttr(state->Assign_type, state->type_comment, Py_None) ==
+ -1)
+ return 0;
+ state->TypeAlias_type = make_type(state, "TypeAlias", state->stmt_type,
+ TypeAlias_fields, 3,
+ "TypeAlias(expr name, type_param* type_params, expr value)");
+ if (!state->TypeAlias_type) return 0;
+ state->AugAssign_type = make_type(state, "AugAssign", state->stmt_type,
+ AugAssign_fields, 3,
+ "AugAssign(expr target, operator op, expr value)");
+ if (!state->AugAssign_type) return 0;
+ state->AnnAssign_type = make_type(state, "AnnAssign", state->stmt_type,
+ AnnAssign_fields, 4,
+ "AnnAssign(expr target, expr annotation, expr? value, int simple)");
+ if (!state->AnnAssign_type) return 0;
+ if (PyObject_SetAttr(state->AnnAssign_type, state->value, Py_None) == -1)
+ return 0;
+ state->For_type = make_type(state, "For", state->stmt_type, For_fields, 5,
+ "For(expr target, expr iter, stmt* body, stmt* orelse, string? type_comment)");
+ if (!state->For_type) return 0;
+ if (PyObject_SetAttr(state->For_type, state->type_comment, Py_None) == -1)
+ return 0;
+ state->AsyncFor_type = make_type(state, "AsyncFor", state->stmt_type,
+ AsyncFor_fields, 5,
+ "AsyncFor(expr target, expr iter, stmt* body, stmt* orelse, string? type_comment)");
+ if (!state->AsyncFor_type) return 0;
+ if (PyObject_SetAttr(state->AsyncFor_type, state->type_comment, Py_None) ==
+ -1)
+ return 0;
+ state->While_type = make_type(state, "While", state->stmt_type,
+ While_fields, 3,
+ "While(expr test, stmt* body, stmt* orelse)");
+ if (!state->While_type) return 0;
+ state->If_type = make_type(state, "If", state->stmt_type, If_fields, 3,
+ "If(expr test, stmt* body, stmt* orelse)");
+ if (!state->If_type) return 0;
+ state->With_type = make_type(state, "With", state->stmt_type, With_fields,
+ 3,
+ "With(withitem* items, stmt* body, string? type_comment)");
+ if (!state->With_type) return 0;
+ if (PyObject_SetAttr(state->With_type, state->type_comment, Py_None) == -1)
+ return 0;
+ state->AsyncWith_type = make_type(state, "AsyncWith", state->stmt_type,
+ AsyncWith_fields, 3,
+ "AsyncWith(withitem* items, stmt* body, string? type_comment)");
+ if (!state->AsyncWith_type) return 0;
+ if (PyObject_SetAttr(state->AsyncWith_type, state->type_comment, Py_None)
+ == -1)
+ return 0;
+ state->Match_type = make_type(state, "Match", state->stmt_type,
+ Match_fields, 2,
+ "Match(expr subject, match_case* cases)");
+ if (!state->Match_type) return 0;
+ state->Raise_type = make_type(state, "Raise", state->stmt_type,
+ Raise_fields, 2,
+ "Raise(expr? exc, expr? cause)");
+ if (!state->Raise_type) return 0;
+ if (PyObject_SetAttr(state->Raise_type, state->exc, Py_None) == -1)
+ return 0;
+ if (PyObject_SetAttr(state->Raise_type, state->cause, Py_None) == -1)
+ return 0;
+ state->Try_type = make_type(state, "Try", state->stmt_type, Try_fields, 4,
+ "Try(stmt* body, excepthandler* handlers, stmt* orelse, stmt* finalbody)");
+ if (!state->Try_type) return 0;
+ state->TryStar_type = make_type(state, "TryStar", state->stmt_type,
+ TryStar_fields, 4,
+ "TryStar(stmt* body, excepthandler* handlers, stmt* orelse, stmt* finalbody)");
+ if (!state->TryStar_type) return 0;
+ state->Assert_type = make_type(state, "Assert", state->stmt_type,
+ Assert_fields, 2,
+ "Assert(expr test, expr? msg)");
+ if (!state->Assert_type) return 0;
+ if (PyObject_SetAttr(state->Assert_type, state->msg, Py_None) == -1)
+ return 0;
+ state->Import_type = make_type(state, "Import", state->stmt_type,
+ Import_fields, 1,
+ "Import(alias* names)");
+ if (!state->Import_type) return 0;
+ state->ImportFrom_type = make_type(state, "ImportFrom", state->stmt_type,
+ ImportFrom_fields, 3,
+ "ImportFrom(identifier? module, alias* names, int? level)");
+ if (!state->ImportFrom_type) return 0;
+ if (PyObject_SetAttr(state->ImportFrom_type, state->module, Py_None) == -1)
+ return 0;
+ if (PyObject_SetAttr(state->ImportFrom_type, state->level, Py_None) == -1)
+ return 0;
+ state->Global_type = make_type(state, "Global", state->stmt_type,
+ Global_fields, 1,
+ "Global(identifier* names)");
+ if (!state->Global_type) return 0;
+ state->Nonlocal_type = make_type(state, "Nonlocal", state->stmt_type,
+ Nonlocal_fields, 1,
+ "Nonlocal(identifier* names)");
+ if (!state->Nonlocal_type) return 0;
+ state->Expr_type = make_type(state, "Expr", state->stmt_type, Expr_fields,
+ 1,
+ "Expr(expr value)");
+ if (!state->Expr_type) return 0;
+ state->Pass_type = make_type(state, "Pass", state->stmt_type, NULL, 0,
+ "Pass");
+ if (!state->Pass_type) return 0;
+ state->Break_type = make_type(state, "Break", state->stmt_type, NULL, 0,
+ "Break");
+ if (!state->Break_type) return 0;
+ state->Continue_type = make_type(state, "Continue", state->stmt_type, NULL,
+ 0,
+ "Continue");
+ if (!state->Continue_type) return 0;
+ state->expr_type = make_type(state, "expr", state->AST_type, NULL, 0,
+ "expr = BoolOp(boolop op, expr* values)\n"
+ " | NamedExpr(expr target, expr value)\n"
+ " | BinOp(expr left, operator op, expr right)\n"
+ " | UnaryOp(unaryop op, expr operand)\n"
+ " | Lambda(arguments args, expr body)\n"
+ " | IfExp(expr test, expr body, expr orelse)\n"
+ " | Dict(expr* keys, expr* values)\n"
+ " | Set(expr* elts)\n"
+ " | ListComp(expr elt, comprehension* generators)\n"
+ " | SetComp(expr elt, comprehension* generators)\n"
+ " | DictComp(expr key, expr value, comprehension* generators)\n"
+ " | GeneratorExp(expr elt, comprehension* generators)\n"
+ " | Await(expr value)\n"
+ " | Yield(expr? value)\n"
+ " | YieldFrom(expr value)\n"
+ " | Compare(expr left, cmpop* ops, expr* comparators)\n"
+ " | Call(expr func, expr* args, keyword* keywords)\n"
+ " | FormattedValue(expr value, int conversion, expr? format_spec)\n"
+ " | JoinedStr(expr* values)\n"
+ " | Constant(constant value, string? kind)\n"
+ " | Attribute(expr value, identifier attr, expr_context ctx)\n"
+ " | Subscript(expr value, expr slice, expr_context ctx)\n"
+ " | Starred(expr value, expr_context ctx)\n"
+ " | Name(identifier id, expr_context ctx)\n"
+ " | List(expr* elts, expr_context ctx)\n"
+ " | Tuple(expr* elts, expr_context ctx)\n"
+ " | Slice(expr? lower, expr? upper, expr? step)");
+ if (!state->expr_type) return 0;
+ if (!add_attributes(state, state->expr_type, expr_attributes, 4)) return 0;
+ if (PyObject_SetAttr(state->expr_type, state->end_lineno, Py_None) == -1)
+ return 0;
+ if (PyObject_SetAttr(state->expr_type, state->end_col_offset, Py_None) ==
+ -1)
+ return 0;
+ state->BoolOp_type = make_type(state, "BoolOp", state->expr_type,
+ BoolOp_fields, 2,
+ "BoolOp(boolop op, expr* values)");
+ if (!state->BoolOp_type) return 0;
+ state->NamedExpr_type = make_type(state, "NamedExpr", state->expr_type,
+ NamedExpr_fields, 2,
+ "NamedExpr(expr target, expr value)");
+ if (!state->NamedExpr_type) return 0;
+ state->BinOp_type = make_type(state, "BinOp", state->expr_type,
+ BinOp_fields, 3,
+ "BinOp(expr left, operator op, expr right)");
+ if (!state->BinOp_type) return 0;
+ state->UnaryOp_type = make_type(state, "UnaryOp", state->expr_type,
+ UnaryOp_fields, 2,
+ "UnaryOp(unaryop op, expr operand)");
+ if (!state->UnaryOp_type) return 0;
+ state->Lambda_type = make_type(state, "Lambda", state->expr_type,
+ Lambda_fields, 2,
+ "Lambda(arguments args, expr body)");
+ if (!state->Lambda_type) return 0;
+ state->IfExp_type = make_type(state, "IfExp", state->expr_type,
+ IfExp_fields, 3,
+ "IfExp(expr test, expr body, expr orelse)");
+ if (!state->IfExp_type) return 0;
+ state->Dict_type = make_type(state, "Dict", state->expr_type, Dict_fields,
+ 2,
+ "Dict(expr* keys, expr* values)");
+ if (!state->Dict_type) return 0;
+ state->Set_type = make_type(state, "Set", state->expr_type, Set_fields, 1,
+ "Set(expr* elts)");
+ if (!state->Set_type) return 0;
+ state->ListComp_type = make_type(state, "ListComp", state->expr_type,
+ ListComp_fields, 2,
+ "ListComp(expr elt, comprehension* generators)");
+ if (!state->ListComp_type) return 0;
+ state->SetComp_type = make_type(state, "SetComp", state->expr_type,
+ SetComp_fields, 2,
+ "SetComp(expr elt, comprehension* generators)");
+ if (!state->SetComp_type) return 0;
+ state->DictComp_type = make_type(state, "DictComp", state->expr_type,
+ DictComp_fields, 3,
+ "DictComp(expr key, expr value, comprehension* generators)");
+ if (!state->DictComp_type) return 0;
+ state->GeneratorExp_type = make_type(state, "GeneratorExp",
+ state->expr_type, GeneratorExp_fields,
+ 2,
+ "GeneratorExp(expr elt, comprehension* generators)");
+ if (!state->GeneratorExp_type) return 0;
+ state->Await_type = make_type(state, "Await", state->expr_type,
+ Await_fields, 1,
+ "Await(expr value)");
+ if (!state->Await_type) return 0;
+ state->Yield_type = make_type(state, "Yield", state->expr_type,
+ Yield_fields, 1,
+ "Yield(expr? value)");
+ if (!state->Yield_type) return 0;
+ if (PyObject_SetAttr(state->Yield_type, state->value, Py_None) == -1)
+ return 0;
+ state->YieldFrom_type = make_type(state, "YieldFrom", state->expr_type,
+ YieldFrom_fields, 1,
+ "YieldFrom(expr value)");
+ if (!state->YieldFrom_type) return 0;
+ state->Compare_type = make_type(state, "Compare", state->expr_type,
+ Compare_fields, 3,
+ "Compare(expr left, cmpop* ops, expr* comparators)");
+ if (!state->Compare_type) return 0;
+ state->Call_type = make_type(state, "Call", state->expr_type, Call_fields,
+ 3,
+ "Call(expr func, expr* args, keyword* keywords)");
+ if (!state->Call_type) return 0;
+ state->FormattedValue_type = make_type(state, "FormattedValue",
+ state->expr_type,
+ FormattedValue_fields, 3,
+ "FormattedValue(expr value, int conversion, expr? format_spec)");
+ if (!state->FormattedValue_type) return 0;
+ if (PyObject_SetAttr(state->FormattedValue_type, state->format_spec,
+ Py_None) == -1)
+ return 0;
+ state->JoinedStr_type = make_type(state, "JoinedStr", state->expr_type,
+ JoinedStr_fields, 1,
+ "JoinedStr(expr* values)");
+ if (!state->JoinedStr_type) return 0;
+ state->Constant_type = make_type(state, "Constant", state->expr_type,
+ Constant_fields, 2,
+ "Constant(constant value, string? kind)");
+ if (!state->Constant_type) return 0;
+ if (PyObject_SetAttr(state->Constant_type, state->kind, Py_None) == -1)
+ return 0;
+ state->Attribute_type = make_type(state, "Attribute", state->expr_type,
+ Attribute_fields, 3,
+ "Attribute(expr value, identifier attr, expr_context ctx)");
+ if (!state->Attribute_type) return 0;
+ state->Subscript_type = make_type(state, "Subscript", state->expr_type,
+ Subscript_fields, 3,
+ "Subscript(expr value, expr slice, expr_context ctx)");
+ if (!state->Subscript_type) return 0;
+ state->Starred_type = make_type(state, "Starred", state->expr_type,
+ Starred_fields, 2,
+ "Starred(expr value, expr_context ctx)");
+ if (!state->Starred_type) return 0;
+ state->Name_type = make_type(state, "Name", state->expr_type, Name_fields,
+ 2,
+ "Name(identifier id, expr_context ctx)");
+ if (!state->Name_type) return 0;
+ state->List_type = make_type(state, "List", state->expr_type, List_fields,
+ 2,
+ "List(expr* elts, expr_context ctx)");
+ if (!state->List_type) return 0;
+ state->Tuple_type = make_type(state, "Tuple", state->expr_type,
+ Tuple_fields, 2,
+ "Tuple(expr* elts, expr_context ctx)");
+ if (!state->Tuple_type) return 0;
+ state->Slice_type = make_type(state, "Slice", state->expr_type,
+ Slice_fields, 3,
+ "Slice(expr? lower, expr? upper, expr? step)");
+ if (!state->Slice_type) return 0;
+ if (PyObject_SetAttr(state->Slice_type, state->lower, Py_None) == -1)
+ return 0;
+ if (PyObject_SetAttr(state->Slice_type, state->upper, Py_None) == -1)
+ return 0;
+ if (PyObject_SetAttr(state->Slice_type, state->step, Py_None) == -1)
+ return 0;
+ state->expr_context_type = make_type(state, "expr_context",
+ state->AST_type, NULL, 0,
+ "expr_context = Load | Store | Del");
+ if (!state->expr_context_type) return 0;
+ if (!add_attributes(state, state->expr_context_type, NULL, 0)) return 0;
+ state->Load_type = make_type(state, "Load", state->expr_context_type, NULL,
+ 0,
+ "Load");
+ if (!state->Load_type) return 0;
+ state->Load_singleton = PyType_GenericNew((PyTypeObject *)state->Load_type,
+ NULL, NULL);
+ if (!state->Load_singleton) return 0;
+ state->Store_type = make_type(state, "Store", state->expr_context_type,
+ NULL, 0,
+ "Store");
+ if (!state->Store_type) return 0;
+ state->Store_singleton = PyType_GenericNew((PyTypeObject
+ *)state->Store_type, NULL, NULL);
+ if (!state->Store_singleton) return 0;
+ state->Del_type = make_type(state, "Del", state->expr_context_type, NULL, 0,
+ "Del");
+ if (!state->Del_type) return 0;
+ state->Del_singleton = PyType_GenericNew((PyTypeObject *)state->Del_type,
+ NULL, NULL);
+ if (!state->Del_singleton) return 0;
+ state->boolop_type = make_type(state, "boolop", state->AST_type, NULL, 0,
+ "boolop = And | Or");
+ if (!state->boolop_type) return 0;
+ if (!add_attributes(state, state->boolop_type, NULL, 0)) return 0;
+ state->And_type = make_type(state, "And", state->boolop_type, NULL, 0,
+ "And");
+ if (!state->And_type) return 0;
+ state->And_singleton = PyType_GenericNew((PyTypeObject *)state->And_type,
+ NULL, NULL);
+ if (!state->And_singleton) return 0;
+ state->Or_type = make_type(state, "Or", state->boolop_type, NULL, 0,
+ "Or");
+ if (!state->Or_type) return 0;
+ state->Or_singleton = PyType_GenericNew((PyTypeObject *)state->Or_type,
+ NULL, NULL);
+ if (!state->Or_singleton) return 0;
+ state->operator_type = make_type(state, "operator", state->AST_type, NULL,
+ 0,
+ "operator = Add | Sub | Mult | MatMult | Div | Mod | Pow | LShift | RShift | BitOr | BitXor | BitAnd | FloorDiv");
+ if (!state->operator_type) return 0;
+ if (!add_attributes(state, state->operator_type, NULL, 0)) return 0;
+ state->Add_type = make_type(state, "Add", state->operator_type, NULL, 0,
+ "Add");
+ if (!state->Add_type) return 0;
+ state->Add_singleton = PyType_GenericNew((PyTypeObject *)state->Add_type,
+ NULL, NULL);
+ if (!state->Add_singleton) return 0;
+ state->Sub_type = make_type(state, "Sub", state->operator_type, NULL, 0,
+ "Sub");
+ if (!state->Sub_type) return 0;
+ state->Sub_singleton = PyType_GenericNew((PyTypeObject *)state->Sub_type,
+ NULL, NULL);
+ if (!state->Sub_singleton) return 0;
+ state->Mult_type = make_type(state, "Mult", state->operator_type, NULL, 0,
+ "Mult");
+ if (!state->Mult_type) return 0;
+ state->Mult_singleton = PyType_GenericNew((PyTypeObject *)state->Mult_type,
+ NULL, NULL);
+ if (!state->Mult_singleton) return 0;
+ state->MatMult_type = make_type(state, "MatMult", state->operator_type,
+ NULL, 0,
+ "MatMult");
+ if (!state->MatMult_type) return 0;
+ state->MatMult_singleton = PyType_GenericNew((PyTypeObject
+ *)state->MatMult_type, NULL,
+ NULL);
+ if (!state->MatMult_singleton) return 0;
+ state->Div_type = make_type(state, "Div", state->operator_type, NULL, 0,
+ "Div");
+ if (!state->Div_type) return 0;
+ state->Div_singleton = PyType_GenericNew((PyTypeObject *)state->Div_type,
+ NULL, NULL);
+ if (!state->Div_singleton) return 0;
+ state->Mod_type = make_type(state, "Mod", state->operator_type, NULL, 0,
+ "Mod");
+ if (!state->Mod_type) return 0;
+ state->Mod_singleton = PyType_GenericNew((PyTypeObject *)state->Mod_type,
+ NULL, NULL);
+ if (!state->Mod_singleton) return 0;
+ state->Pow_type = make_type(state, "Pow", state->operator_type, NULL, 0,
+ "Pow");
+ if (!state->Pow_type) return 0;
+ state->Pow_singleton = PyType_GenericNew((PyTypeObject *)state->Pow_type,
+ NULL, NULL);
+ if (!state->Pow_singleton) return 0;
+ state->LShift_type = make_type(state, "LShift", state->operator_type, NULL,
+ 0,
+ "LShift");
+ if (!state->LShift_type) return 0;
+ state->LShift_singleton = PyType_GenericNew((PyTypeObject
+ *)state->LShift_type, NULL,
+ NULL);
+ if (!state->LShift_singleton) return 0;
+ state->RShift_type = make_type(state, "RShift", state->operator_type, NULL,
+ 0,
+ "RShift");
+ if (!state->RShift_type) return 0;
+ state->RShift_singleton = PyType_GenericNew((PyTypeObject
+ *)state->RShift_type, NULL,
+ NULL);
+ if (!state->RShift_singleton) return 0;
+ state->BitOr_type = make_type(state, "BitOr", state->operator_type, NULL, 0,
+ "BitOr");
+ if (!state->BitOr_type) return 0;
+ state->BitOr_singleton = PyType_GenericNew((PyTypeObject
+ *)state->BitOr_type, NULL, NULL);
+ if (!state->BitOr_singleton) return 0;
+ state->BitXor_type = make_type(state, "BitXor", state->operator_type, NULL,
+ 0,
+ "BitXor");
+ if (!state->BitXor_type) return 0;
+ state->BitXor_singleton = PyType_GenericNew((PyTypeObject
+ *)state->BitXor_type, NULL,
+ NULL);
+ if (!state->BitXor_singleton) return 0;
+ state->BitAnd_type = make_type(state, "BitAnd", state->operator_type, NULL,
+ 0,
+ "BitAnd");
+ if (!state->BitAnd_type) return 0;
+ state->BitAnd_singleton = PyType_GenericNew((PyTypeObject
+ *)state->BitAnd_type, NULL,
+ NULL);
+ if (!state->BitAnd_singleton) return 0;
+ state->FloorDiv_type = make_type(state, "FloorDiv", state->operator_type,
+ NULL, 0,
+ "FloorDiv");
+ if (!state->FloorDiv_type) return 0;
+ state->FloorDiv_singleton = PyType_GenericNew((PyTypeObject
+ *)state->FloorDiv_type, NULL,
+ NULL);
+ if (!state->FloorDiv_singleton) return 0;
+ state->unaryop_type = make_type(state, "unaryop", state->AST_type, NULL, 0,
+ "unaryop = Invert | Not | UAdd | USub");
+ if (!state->unaryop_type) return 0;
+ if (!add_attributes(state, state->unaryop_type, NULL, 0)) return 0;
+ state->Invert_type = make_type(state, "Invert", state->unaryop_type, NULL,
+ 0,
+ "Invert");
+ if (!state->Invert_type) return 0;
+ state->Invert_singleton = PyType_GenericNew((PyTypeObject
+ *)state->Invert_type, NULL,
+ NULL);
+ if (!state->Invert_singleton) return 0;
+ state->Not_type = make_type(state, "Not", state->unaryop_type, NULL, 0,
+ "Not");
+ if (!state->Not_type) return 0;
+ state->Not_singleton = PyType_GenericNew((PyTypeObject *)state->Not_type,
+ NULL, NULL);
+ if (!state->Not_singleton) return 0;
+ state->UAdd_type = make_type(state, "UAdd", state->unaryop_type, NULL, 0,
+ "UAdd");
+ if (!state->UAdd_type) return 0;
+ state->UAdd_singleton = PyType_GenericNew((PyTypeObject *)state->UAdd_type,
+ NULL, NULL);
+ if (!state->UAdd_singleton) return 0;
+ state->USub_type = make_type(state, "USub", state->unaryop_type, NULL, 0,
+ "USub");
+ if (!state->USub_type) return 0;
+ state->USub_singleton = PyType_GenericNew((PyTypeObject *)state->USub_type,
+ NULL, NULL);
+ if (!state->USub_singleton) return 0;
+ state->cmpop_type = make_type(state, "cmpop", state->AST_type, NULL, 0,
+ "cmpop = Eq | NotEq | Lt | LtE | Gt | GtE | Is | IsNot | In | NotIn");
+ if (!state->cmpop_type) return 0;
+ if (!add_attributes(state, state->cmpop_type, NULL, 0)) return 0;
+ state->Eq_type = make_type(state, "Eq", state->cmpop_type, NULL, 0,
+ "Eq");
+ if (!state->Eq_type) return 0;
+ state->Eq_singleton = PyType_GenericNew((PyTypeObject *)state->Eq_type,
+ NULL, NULL);
+ if (!state->Eq_singleton) return 0;
+ state->NotEq_type = make_type(state, "NotEq", state->cmpop_type, NULL, 0,
+ "NotEq");
+ if (!state->NotEq_type) return 0;
+ state->NotEq_singleton = PyType_GenericNew((PyTypeObject
+ *)state->NotEq_type, NULL, NULL);
+ if (!state->NotEq_singleton) return 0;
+ state->Lt_type = make_type(state, "Lt", state->cmpop_type, NULL, 0,
+ "Lt");
+ if (!state->Lt_type) return 0;
+ state->Lt_singleton = PyType_GenericNew((PyTypeObject *)state->Lt_type,
+ NULL, NULL);
+ if (!state->Lt_singleton) return 0;
+ state->LtE_type = make_type(state, "LtE", state->cmpop_type, NULL, 0,
+ "LtE");
+ if (!state->LtE_type) return 0;
+ state->LtE_singleton = PyType_GenericNew((PyTypeObject *)state->LtE_type,
+ NULL, NULL);
+ if (!state->LtE_singleton) return 0;
+ state->Gt_type = make_type(state, "Gt", state->cmpop_type, NULL, 0,
+ "Gt");
+ if (!state->Gt_type) return 0;
+ state->Gt_singleton = PyType_GenericNew((PyTypeObject *)state->Gt_type,
+ NULL, NULL);
+ if (!state->Gt_singleton) return 0;
+ state->GtE_type = make_type(state, "GtE", state->cmpop_type, NULL, 0,
+ "GtE");
+ if (!state->GtE_type) return 0;
+ state->GtE_singleton = PyType_GenericNew((PyTypeObject *)state->GtE_type,
+ NULL, NULL);
+ if (!state->GtE_singleton) return 0;
+ state->Is_type = make_type(state, "Is", state->cmpop_type, NULL, 0,
+ "Is");
+ if (!state->Is_type) return 0;
+ state->Is_singleton = PyType_GenericNew((PyTypeObject *)state->Is_type,
+ NULL, NULL);
+ if (!state->Is_singleton) return 0;
+ state->IsNot_type = make_type(state, "IsNot", state->cmpop_type, NULL, 0,
+ "IsNot");
+ if (!state->IsNot_type) return 0;
+ state->IsNot_singleton = PyType_GenericNew((PyTypeObject
+ *)state->IsNot_type, NULL, NULL);
+ if (!state->IsNot_singleton) return 0;
+ state->In_type = make_type(state, "In", state->cmpop_type, NULL, 0,
+ "In");
+ if (!state->In_type) return 0;
+ state->In_singleton = PyType_GenericNew((PyTypeObject *)state->In_type,
+ NULL, NULL);
+ if (!state->In_singleton) return 0;
+ state->NotIn_type = make_type(state, "NotIn", state->cmpop_type, NULL, 0,
+ "NotIn");
+ if (!state->NotIn_type) return 0;
+ state->NotIn_singleton = PyType_GenericNew((PyTypeObject
+ *)state->NotIn_type, NULL, NULL);
+ if (!state->NotIn_singleton) return 0;
+ state->comprehension_type = make_type(state, "comprehension",
+ state->AST_type,
+ comprehension_fields, 4,
+ "comprehension(expr target, expr iter, expr* ifs, int is_async)");
+ if (!state->comprehension_type) return 0;
+ if (!add_attributes(state, state->comprehension_type, NULL, 0)) return 0;
+ state->excepthandler_type = make_type(state, "excepthandler",
+ state->AST_type, NULL, 0,
+ "excepthandler = ExceptHandler(expr? type, identifier? name, stmt* body)");
+ if (!state->excepthandler_type) return 0;
+ if (!add_attributes(state, state->excepthandler_type,
+ excepthandler_attributes, 4)) return 0;
+ if (PyObject_SetAttr(state->excepthandler_type, state->end_lineno, Py_None)
+ == -1)
+ return 0;
+ if (PyObject_SetAttr(state->excepthandler_type, state->end_col_offset,
+ Py_None) == -1)
+ return 0;
+ state->ExceptHandler_type = make_type(state, "ExceptHandler",
+ state->excepthandler_type,
+ ExceptHandler_fields, 3,
+ "ExceptHandler(expr? type, identifier? name, stmt* body)");
+ if (!state->ExceptHandler_type) return 0;
+ if (PyObject_SetAttr(state->ExceptHandler_type, state->type, Py_None) == -1)
+ return 0;
+ if (PyObject_SetAttr(state->ExceptHandler_type, state->name, Py_None) == -1)
+ return 0;
+ state->arguments_type = make_type(state, "arguments", state->AST_type,
+ arguments_fields, 7,
+ "arguments(arg* posonlyargs, arg* args, arg? vararg, arg* kwonlyargs, expr* kw_defaults, arg? kwarg, expr* defaults)");
+ if (!state->arguments_type) return 0;
+ if (!add_attributes(state, state->arguments_type, NULL, 0)) return 0;
+ if (PyObject_SetAttr(state->arguments_type, state->vararg, Py_None) == -1)
+ return 0;
+ if (PyObject_SetAttr(state->arguments_type, state->kwarg, Py_None) == -1)
+ return 0;
+ state->arg_type = make_type(state, "arg", state->AST_type, arg_fields, 3,
+ "arg(identifier arg, expr? annotation, string? type_comment)");
+ if (!state->arg_type) return 0;
+ if (!add_attributes(state, state->arg_type, arg_attributes, 4)) return 0;
+ if (PyObject_SetAttr(state->arg_type, state->annotation, Py_None) == -1)
+ return 0;
+ if (PyObject_SetAttr(state->arg_type, state->type_comment, Py_None) == -1)
+ return 0;
+ if (PyObject_SetAttr(state->arg_type, state->end_lineno, Py_None) == -1)
+ return 0;
+ if (PyObject_SetAttr(state->arg_type, state->end_col_offset, Py_None) == -1)
+ return 0;
+ state->keyword_type = make_type(state, "keyword", state->AST_type,
+ keyword_fields, 2,
+ "keyword(identifier? arg, expr value)");
+ if (!state->keyword_type) return 0;
+ if (!add_attributes(state, state->keyword_type, keyword_attributes, 4))
+ return 0;
+ if (PyObject_SetAttr(state->keyword_type, state->arg, Py_None) == -1)
+ return 0;
+ if (PyObject_SetAttr(state->keyword_type, state->end_lineno, Py_None) == -1)
+ return 0;
+ if (PyObject_SetAttr(state->keyword_type, state->end_col_offset, Py_None)
+ == -1)
+ return 0;
+ state->alias_type = make_type(state, "alias", state->AST_type,
+ alias_fields, 2,
+ "alias(identifier name, identifier? asname)");
+ if (!state->alias_type) return 0;
+ if (!add_attributes(state, state->alias_type, alias_attributes, 4)) return
+ 0;
+ if (PyObject_SetAttr(state->alias_type, state->asname, Py_None) == -1)
+ return 0;
+ if (PyObject_SetAttr(state->alias_type, state->end_lineno, Py_None) == -1)
+ return 0;
+ if (PyObject_SetAttr(state->alias_type, state->end_col_offset, Py_None) ==
+ -1)
+ return 0;
+ state->withitem_type = make_type(state, "withitem", state->AST_type,
+ withitem_fields, 2,
+ "withitem(expr context_expr, expr? optional_vars)");
+ if (!state->withitem_type) return 0;
+ if (!add_attributes(state, state->withitem_type, NULL, 0)) return 0;
+ if (PyObject_SetAttr(state->withitem_type, state->optional_vars, Py_None)
+ == -1)
+ return 0;
+ state->match_case_type = make_type(state, "match_case", state->AST_type,
+ match_case_fields, 3,
+ "match_case(pattern pattern, expr? guard, stmt* body)");
+ if (!state->match_case_type) return 0;
+ if (!add_attributes(state, state->match_case_type, NULL, 0)) return 0;
+ if (PyObject_SetAttr(state->match_case_type, state->guard, Py_None) == -1)
+ return 0;
+ state->pattern_type = make_type(state, "pattern", state->AST_type, NULL, 0,
+ "pattern = MatchValue(expr value)\n"
+ " | MatchSingleton(constant value)\n"
+ " | MatchSequence(pattern* patterns)\n"
+ " | MatchMapping(expr* keys, pattern* patterns, identifier? rest)\n"
+ " | MatchClass(expr cls, pattern* patterns, identifier* kwd_attrs, pattern* kwd_patterns)\n"
+ " | MatchStar(identifier? name)\n"
+ " | MatchAs(pattern? pattern, identifier? name)\n"
+ " | MatchOr(pattern* patterns)");
+ if (!state->pattern_type) return 0;
+ if (!add_attributes(state, state->pattern_type, pattern_attributes, 4))
+ return 0;
+ state->MatchValue_type = make_type(state, "MatchValue",
+ state->pattern_type, MatchValue_fields,
+ 1,
+ "MatchValue(expr value)");
+ if (!state->MatchValue_type) return 0;
+ state->MatchSingleton_type = make_type(state, "MatchSingleton",
+ state->pattern_type,
+ MatchSingleton_fields, 1,
+ "MatchSingleton(constant value)");
+ if (!state->MatchSingleton_type) return 0;
+ state->MatchSequence_type = make_type(state, "MatchSequence",
+ state->pattern_type,
+ MatchSequence_fields, 1,
+ "MatchSequence(pattern* patterns)");
+ if (!state->MatchSequence_type) return 0;
+ state->MatchMapping_type = make_type(state, "MatchMapping",
+ state->pattern_type,
+ MatchMapping_fields, 3,
+ "MatchMapping(expr* keys, pattern* patterns, identifier? rest)");
+ if (!state->MatchMapping_type) return 0;
+ if (PyObject_SetAttr(state->MatchMapping_type, state->rest, Py_None) == -1)
+ return 0;
+ state->MatchClass_type = make_type(state, "MatchClass",
+ state->pattern_type, MatchClass_fields,
+ 4,
+ "MatchClass(expr cls, pattern* patterns, identifier* kwd_attrs, pattern* kwd_patterns)");
+ if (!state->MatchClass_type) return 0;
+ state->MatchStar_type = make_type(state, "MatchStar", state->pattern_type,
+ MatchStar_fields, 1,
+ "MatchStar(identifier? name)");
+ if (!state->MatchStar_type) return 0;
+ if (PyObject_SetAttr(state->MatchStar_type, state->name, Py_None) == -1)
+ return 0;
+ state->MatchAs_type = make_type(state, "MatchAs", state->pattern_type,
+ MatchAs_fields, 2,
+ "MatchAs(pattern? pattern, identifier? name)");
+ if (!state->MatchAs_type) return 0;
+ if (PyObject_SetAttr(state->MatchAs_type, state->pattern, Py_None) == -1)
+ return 0;
+ if (PyObject_SetAttr(state->MatchAs_type, state->name, Py_None) == -1)
+ return 0;
+ state->MatchOr_type = make_type(state, "MatchOr", state->pattern_type,
+ MatchOr_fields, 1,
+ "MatchOr(pattern* patterns)");
+ if (!state->MatchOr_type) return 0;
+ state->type_ignore_type = make_type(state, "type_ignore", state->AST_type,
+ NULL, 0,
+ "type_ignore = TypeIgnore(int lineno, string tag)");
+ if (!state->type_ignore_type) return 0;
+ if (!add_attributes(state, state->type_ignore_type, NULL, 0)) return 0;
+ state->TypeIgnore_type = make_type(state, "TypeIgnore",
+ state->type_ignore_type,
+ TypeIgnore_fields, 2,
+ "TypeIgnore(int lineno, string tag)");
+ if (!state->TypeIgnore_type) return 0;
+ state->type_param_type = make_type(state, "type_param", state->AST_type,
+ NULL, 0,
+ "type_param = TypeVar(identifier name, expr? bound)\n"
+ " | ParamSpec(identifier name)\n"
+ " | TypeVarTuple(identifier name)");
+ if (!state->type_param_type) return 0;
+ if (!add_attributes(state, state->type_param_type, type_param_attributes,
+ 4)) return 0;
+ state->TypeVar_type = make_type(state, "TypeVar", state->type_param_type,
+ TypeVar_fields, 2,
+ "TypeVar(identifier name, expr? bound)");
+ if (!state->TypeVar_type) return 0;
+ if (PyObject_SetAttr(state->TypeVar_type, state->bound, Py_None) == -1)
+ return 0;
+ state->ParamSpec_type = make_type(state, "ParamSpec",
+ state->type_param_type, ParamSpec_fields,
+ 1,
+ "ParamSpec(identifier name)");
+ if (!state->ParamSpec_type) return 0;
+ state->TypeVarTuple_type = make_type(state, "TypeVarTuple",
+ state->type_param_type,
+ TypeVarTuple_fields, 1,
+ "TypeVarTuple(identifier name)");
+ if (!state->TypeVarTuple_type) return 0;
+
+ state->initialized = 1;
+ return 1;
+}
+
+static int obj2ast_mod(struct ast_state *state, PyObject* obj, mod_ty* out,
+ PyArena* arena);
+static int obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out,
+ PyArena* arena);
+static int obj2ast_expr(struct ast_state *state, PyObject* obj, expr_ty* out,
+ PyArena* arena);
+static int obj2ast_expr_context(struct ast_state *state, PyObject* obj,
+ expr_context_ty* out, PyArena* arena);
+static int obj2ast_boolop(struct ast_state *state, PyObject* obj, boolop_ty*
+ out, PyArena* arena);
+static int obj2ast_operator(struct ast_state *state, PyObject* obj,
+ operator_ty* out, PyArena* arena);
+static int obj2ast_unaryop(struct ast_state *state, PyObject* obj, unaryop_ty*
+ out, PyArena* arena);
+static int obj2ast_cmpop(struct ast_state *state, PyObject* obj, cmpop_ty* out,
+ PyArena* arena);
+static int obj2ast_comprehension(struct ast_state *state, PyObject* obj,
+ comprehension_ty* out, PyArena* arena);
+static int obj2ast_excepthandler(struct ast_state *state, PyObject* obj,
+ excepthandler_ty* out, PyArena* arena);
+static int obj2ast_arguments(struct ast_state *state, PyObject* obj,
+ arguments_ty* out, PyArena* arena);
+static int obj2ast_arg(struct ast_state *state, PyObject* obj, arg_ty* out,
+ PyArena* arena);
+static int obj2ast_keyword(struct ast_state *state, PyObject* obj, keyword_ty*
+ out, PyArena* arena);
+static int obj2ast_alias(struct ast_state *state, PyObject* obj, alias_ty* out,
+ PyArena* arena);
+static int obj2ast_withitem(struct ast_state *state, PyObject* obj,
+ withitem_ty* out, PyArena* arena);
+static int obj2ast_match_case(struct ast_state *state, PyObject* obj,
+ match_case_ty* out, PyArena* arena);
+static int obj2ast_pattern(struct ast_state *state, PyObject* obj, pattern_ty*
+ out, PyArena* arena);
+static int obj2ast_type_ignore(struct ast_state *state, PyObject* obj,
+ type_ignore_ty* out, PyArena* arena);
+static int obj2ast_type_param(struct ast_state *state, PyObject* obj,
+ type_param_ty* out, PyArena* arena);
+
+mod_ty
+_PyAST_Module(asdl_stmt_seq * body, asdl_type_ignore_seq * type_ignores,
+ PyArena *arena)
+{
+ mod_ty p;
+ p = (mod_ty)_PyArena_Malloc(arena, sizeof(*p));
+ if (!p)
+ return NULL;
+ p->kind = Module_kind;
+ p->v.Module.body = body;
+ p->v.Module.type_ignores = type_ignores;
+ return p;
+}
+
+mod_ty
+_PyAST_Interactive(asdl_stmt_seq * body, PyArena *arena)
+{
+ mod_ty p;
+ p = (mod_ty)_PyArena_Malloc(arena, sizeof(*p));
+ if (!p)
+ return NULL;
+ p->kind = Interactive_kind;
+ p->v.Interactive.body = body;
+ return p;
+}
+
+mod_ty
+_PyAST_Expression(expr_ty body, PyArena *arena)
+{
+ mod_ty p;
+ if (!body) {
+ PyErr_SetString(PyExc_ValueError,
+ "field 'body' is required for Expression");
+ return NULL;
+ }
+ p = (mod_ty)_PyArena_Malloc(arena, sizeof(*p));
+ if (!p)
+ return NULL;
+ p->kind = Expression_kind;
+ p->v.Expression.body = body;
+ return p;
+}
+
+mod_ty
+_PyAST_FunctionType(asdl_expr_seq * argtypes, expr_ty returns, PyArena *arena)
+{
+ mod_ty p;
+ if (!returns) {
+ PyErr_SetString(PyExc_ValueError,
+ "field 'returns' is required for FunctionType");
+ return NULL;
+ }
+ p = (mod_ty)_PyArena_Malloc(arena, sizeof(*p));
+ if (!p)
+ return NULL;
+ p->kind = FunctionType_kind;
+ p->v.FunctionType.argtypes = argtypes;
+ p->v.FunctionType.returns = returns;
+ return p;
+}
+
+stmt_ty
+_PyAST_FunctionDef(identifier name, arguments_ty args, asdl_stmt_seq * body,
+ asdl_expr_seq * decorator_list, expr_ty returns, string
+ type_comment, asdl_type_param_seq * type_params, int lineno,
+ int col_offset, int end_lineno, int end_col_offset, PyArena
+ *arena)
+{
+ stmt_ty p;
+ if (!name) {
+ PyErr_SetString(PyExc_ValueError,
+ "field 'name' is required for FunctionDef");
+ return NULL;
+ }
+ if (!args) {
+ PyErr_SetString(PyExc_ValueError,
+ "field 'args' is required for FunctionDef");
+ return NULL;
+ }
+ p = (stmt_ty)_PyArena_Malloc(arena, sizeof(*p));
+ if (!p)
+ return NULL;
+ p->kind = FunctionDef_kind;
+ p->v.FunctionDef.name = name;
+ p->v.FunctionDef.args = args;
+ p->v.FunctionDef.body = body;
+ p->v.FunctionDef.decorator_list = decorator_list;
+ p->v.FunctionDef.returns = returns;
+ p->v.FunctionDef.type_comment = type_comment;
+ p->v.FunctionDef.type_params = type_params;
+ p->lineno = lineno;
+ p->col_offset = col_offset;
+ p->end_lineno = end_lineno;
+ p->end_col_offset = end_col_offset;
+ return p;
+}
+
+stmt_ty
+_PyAST_AsyncFunctionDef(identifier name, arguments_ty args, asdl_stmt_seq *
+ body, asdl_expr_seq * decorator_list, expr_ty returns,
+ string type_comment, asdl_type_param_seq * type_params,
+ int lineno, int col_offset, int end_lineno, int
+ end_col_offset, PyArena *arena)
+{
+ stmt_ty p;
+ if (!name) {
+ PyErr_SetString(PyExc_ValueError,
+ "field 'name' is required for AsyncFunctionDef");
+ return NULL;
+ }
+ if (!args) {
+ PyErr_SetString(PyExc_ValueError,
+ "field 'args' is required for AsyncFunctionDef");
+ return NULL;
+ }
+ p = (stmt_ty)_PyArena_Malloc(arena, sizeof(*p));
+ if (!p)
+ return NULL;
+ p->kind = AsyncFunctionDef_kind;
+ p->v.AsyncFunctionDef.name = name;
+ p->v.AsyncFunctionDef.args = args;
+ p->v.AsyncFunctionDef.body = body;
+ p->v.AsyncFunctionDef.decorator_list = decorator_list;
+ p->v.AsyncFunctionDef.returns = returns;
+ p->v.AsyncFunctionDef.type_comment = type_comment;
+ p->v.AsyncFunctionDef.type_params = type_params;
+ p->lineno = lineno;
+ p->col_offset = col_offset;
+ p->end_lineno = end_lineno;
+ p->end_col_offset = end_col_offset;
+ return p;
+}
+
+stmt_ty
+_PyAST_ClassDef(identifier name, asdl_expr_seq * bases, asdl_keyword_seq *
+ keywords, asdl_stmt_seq * body, asdl_expr_seq * decorator_list,
+ asdl_type_param_seq * type_params, int lineno, int col_offset,
+ int end_lineno, int end_col_offset, PyArena *arena)
+{
+ stmt_ty p;
+ if (!name) {
+ PyErr_SetString(PyExc_ValueError,
+ "field 'name' is required for ClassDef");
+ return NULL;
+ }
+ p = (stmt_ty)_PyArena_Malloc(arena, sizeof(*p));
+ if (!p)
+ return NULL;
+ p->kind = ClassDef_kind;
+ p->v.ClassDef.name = name;
+ p->v.ClassDef.bases = bases;
+ p->v.ClassDef.keywords = keywords;
+ p->v.ClassDef.body = body;
+ p->v.ClassDef.decorator_list = decorator_list;
+ p->v.ClassDef.type_params = type_params;
+ p->lineno = lineno;
+ p->col_offset = col_offset;
+ p->end_lineno = end_lineno;
+ p->end_col_offset = end_col_offset;
+ return p;
+}
+
+stmt_ty
+_PyAST_Return(expr_ty value, int lineno, int col_offset, int end_lineno, int
+ end_col_offset, PyArena *arena)
+{
+ stmt_ty p;
+ p = (stmt_ty)_PyArena_Malloc(arena, sizeof(*p));
+ if (!p)
+ return NULL;
+ p->kind = Return_kind;
+ p->v.Return.value = value;
+ p->lineno = lineno;
+ p->col_offset = col_offset;
+ p->end_lineno = end_lineno;
+ p->end_col_offset = end_col_offset;
+ return p;
+}
+
+stmt_ty
+_PyAST_Delete(asdl_expr_seq * targets, int lineno, int col_offset, int
+ end_lineno, int end_col_offset, PyArena *arena)
+{
+ stmt_ty p;
+ p = (stmt_ty)_PyArena_Malloc(arena, sizeof(*p));
+ if (!p)
+ return NULL;
+ p->kind = Delete_kind;
+ p->v.Delete.targets = targets;
+ p->lineno = lineno;
+ p->col_offset = col_offset;
+ p->end_lineno = end_lineno;
+ p->end_col_offset = end_col_offset;
+ return p;
+}
+
+stmt_ty
+_PyAST_Assign(asdl_expr_seq * targets, expr_ty value, string type_comment, int
+ lineno, int col_offset, int end_lineno, int end_col_offset,
+ PyArena *arena)
+{
+ stmt_ty p;
+ if (!value) {
+ PyErr_SetString(PyExc_ValueError,
+ "field 'value' is required for Assign");
+ return NULL;
+ }
+ p = (stmt_ty)_PyArena_Malloc(arena, sizeof(*p));
+ if (!p)
+ return NULL;
+ p->kind = Assign_kind;
+ p->v.Assign.targets = targets;
+ p->v.Assign.value = value;
+ p->v.Assign.type_comment = type_comment;
+ p->lineno = lineno;
+ p->col_offset = col_offset;
+ p->end_lineno = end_lineno;
+ p->end_col_offset = end_col_offset;
+ return p;
+}
+
+stmt_ty
+_PyAST_TypeAlias(expr_ty name, asdl_type_param_seq * type_params, expr_ty
+ value, int lineno, int col_offset, int end_lineno, int
+ end_col_offset, PyArena *arena)
+{
+ stmt_ty p;
+ if (!name) {
+ PyErr_SetString(PyExc_ValueError,
+ "field 'name' is required for TypeAlias");
+ return NULL;
+ }
+ if (!value) {
+ PyErr_SetString(PyExc_ValueError,
+ "field 'value' is required for TypeAlias");
+ return NULL;
+ }
+ p = (stmt_ty)_PyArena_Malloc(arena, sizeof(*p));
+ if (!p)
+ return NULL;
+ p->kind = TypeAlias_kind;
+ p->v.TypeAlias.name = name;
+ p->v.TypeAlias.type_params = type_params;
+ p->v.TypeAlias.value = value;
+ p->lineno = lineno;
+ p->col_offset = col_offset;
+ p->end_lineno = end_lineno;
+ p->end_col_offset = end_col_offset;
+ return p;
+}
+
+stmt_ty
+_PyAST_AugAssign(expr_ty target, operator_ty op, expr_ty value, int lineno, int
+ col_offset, int end_lineno, int end_col_offset, PyArena *arena)
+{
+ stmt_ty p;
+ if (!target) {
+ PyErr_SetString(PyExc_ValueError,
+ "field 'target' is required for AugAssign");
+ return NULL;
+ }
+ if (!op) {
+ PyErr_SetString(PyExc_ValueError,
+ "field 'op' is required for AugAssign");
+ return NULL;
+ }
+ if (!value) {
+ PyErr_SetString(PyExc_ValueError,
+ "field 'value' is required for AugAssign");
+ return NULL;
+ }
+ p = (stmt_ty)_PyArena_Malloc(arena, sizeof(*p));
+ if (!p)
+ return NULL;
+ p->kind = AugAssign_kind;
+ p->v.AugAssign.target = target;
+ p->v.AugAssign.op = op;
+ p->v.AugAssign.value = value;
+ p->lineno = lineno;
+ p->col_offset = col_offset;
+ p->end_lineno = end_lineno;
+ p->end_col_offset = end_col_offset;
+ return p;
+}
+
+stmt_ty
+_PyAST_AnnAssign(expr_ty target, expr_ty annotation, expr_ty value, int simple,
+ int lineno, int col_offset, int end_lineno, int
+ end_col_offset, PyArena *arena)
+{
+ stmt_ty p;
+ if (!target) {
+ PyErr_SetString(PyExc_ValueError,
+ "field 'target' is required for AnnAssign");
+ return NULL;
+ }
+ if (!annotation) {
+ PyErr_SetString(PyExc_ValueError,
+ "field 'annotation' is required for AnnAssign");
+ return NULL;
+ }
+ p = (stmt_ty)_PyArena_Malloc(arena, sizeof(*p));
+ if (!p)
+ return NULL;
+ p->kind = AnnAssign_kind;
+ p->v.AnnAssign.target = target;
+ p->v.AnnAssign.annotation = annotation;
+ p->v.AnnAssign.value = value;
+ p->v.AnnAssign.simple = simple;
+ p->lineno = lineno;
+ p->col_offset = col_offset;
+ p->end_lineno = end_lineno;
+ p->end_col_offset = end_col_offset;
+ return p;
+}
+
+stmt_ty
+_PyAST_For(expr_ty target, expr_ty iter, asdl_stmt_seq * body, asdl_stmt_seq *
+ orelse, string type_comment, int lineno, int col_offset, int
+ end_lineno, int end_col_offset, PyArena *arena)
+{
+ stmt_ty p;
+ if (!target) {
+ PyErr_SetString(PyExc_ValueError,
+ "field 'target' is required for For");
+ return NULL;
+ }
+ if (!iter) {
+ PyErr_SetString(PyExc_ValueError,
+ "field 'iter' is required for For");
+ return NULL;
+ }
+ p = (stmt_ty)_PyArena_Malloc(arena, sizeof(*p));
+ if (!p)
+ return NULL;
+ p->kind = For_kind;
+ p->v.For.target = target;
+ p->v.For.iter = iter;
+ p->v.For.body = body;
+ p->v.For.orelse = orelse;
+ p->v.For.type_comment = type_comment;
+ p->lineno = lineno;
+ p->col_offset = col_offset;
+ p->end_lineno = end_lineno;
+ p->end_col_offset = end_col_offset;
+ return p;
+}
+
+stmt_ty
+_PyAST_AsyncFor(expr_ty target, expr_ty iter, asdl_stmt_seq * body,
+ asdl_stmt_seq * orelse, string type_comment, int lineno, int
+ col_offset, int end_lineno, int end_col_offset, PyArena *arena)
+{
+ stmt_ty p;
+ if (!target) {
+ PyErr_SetString(PyExc_ValueError,
+ "field 'target' is required for AsyncFor");
+ return NULL;
+ }
+ if (!iter) {
+ PyErr_SetString(PyExc_ValueError,
+ "field 'iter' is required for AsyncFor");
+ return NULL;
+ }
+ p = (stmt_ty)_PyArena_Malloc(arena, sizeof(*p));
+ if (!p)
+ return NULL;
+ p->kind = AsyncFor_kind;
+ p->v.AsyncFor.target = target;
+ p->v.AsyncFor.iter = iter;
+ p->v.AsyncFor.body = body;
+ p->v.AsyncFor.orelse = orelse;
+ p->v.AsyncFor.type_comment = type_comment;
+ p->lineno = lineno;
+ p->col_offset = col_offset;
+ p->end_lineno = end_lineno;
+ p->end_col_offset = end_col_offset;
+ return p;
+}
+
+stmt_ty
+_PyAST_While(expr_ty test, asdl_stmt_seq * body, asdl_stmt_seq * orelse, int
+ lineno, int col_offset, int end_lineno, int end_col_offset,
+ PyArena *arena)
+{
+ stmt_ty p;
+ if (!test) {
+ PyErr_SetString(PyExc_ValueError,
+ "field 'test' is required for While");
+ return NULL;
+ }
+ p = (stmt_ty)_PyArena_Malloc(arena, sizeof(*p));
+ if (!p)
+ return NULL;
+ p->kind = While_kind;
+ p->v.While.test = test;
+ p->v.While.body = body;
+ p->v.While.orelse = orelse;
+ p->lineno = lineno;
+ p->col_offset = col_offset;
+ p->end_lineno = end_lineno;
+ p->end_col_offset = end_col_offset;
+ return p;
+}
+
+stmt_ty
+_PyAST_If(expr_ty test, asdl_stmt_seq * body, asdl_stmt_seq * orelse, int
+ lineno, int col_offset, int end_lineno, int end_col_offset, PyArena
+ *arena)
+{
+ stmt_ty p;
+ if (!test) {
+ PyErr_SetString(PyExc_ValueError,
+ "field 'test' is required for If");
+ return NULL;
+ }
+ p = (stmt_ty)_PyArena_Malloc(arena, sizeof(*p));
+ if (!p)
+ return NULL;
+ p->kind = If_kind;
+ p->v.If.test = test;
+ p->v.If.body = body;
+ p->v.If.orelse = orelse;
+ p->lineno = lineno;
+ p->col_offset = col_offset;
+ p->end_lineno = end_lineno;
+ p->end_col_offset = end_col_offset;
+ return p;
+}
+
+stmt_ty
+_PyAST_With(asdl_withitem_seq * items, asdl_stmt_seq * body, string
+ type_comment, int lineno, int col_offset, int end_lineno, int
+ end_col_offset, PyArena *arena)
+{
+ stmt_ty p;
+ p = (stmt_ty)_PyArena_Malloc(arena, sizeof(*p));
+ if (!p)
+ return NULL;
+ p->kind = With_kind;
+ p->v.With.items = items;
+ p->v.With.body = body;
+ p->v.With.type_comment = type_comment;
+ p->lineno = lineno;
+ p->col_offset = col_offset;
+ p->end_lineno = end_lineno;
+ p->end_col_offset = end_col_offset;
+ return p;
+}
+
+stmt_ty
+_PyAST_AsyncWith(asdl_withitem_seq * items, asdl_stmt_seq * body, string
+ type_comment, int lineno, int col_offset, int end_lineno, int
+ end_col_offset, PyArena *arena)
+{
+ stmt_ty p;
+ p = (stmt_ty)_PyArena_Malloc(arena, sizeof(*p));
+ if (!p)
+ return NULL;
+ p->kind = AsyncWith_kind;
+ p->v.AsyncWith.items = items;
+ p->v.AsyncWith.body = body;
+ p->v.AsyncWith.type_comment = type_comment;
+ p->lineno = lineno;
+ p->col_offset = col_offset;
+ p->end_lineno = end_lineno;
+ p->end_col_offset = end_col_offset;
+ return p;
+}
+
+stmt_ty
+_PyAST_Match(expr_ty subject, asdl_match_case_seq * cases, int lineno, int
+ col_offset, int end_lineno, int end_col_offset, PyArena *arena)
+{
+ stmt_ty p;
+ if (!subject) {
+ PyErr_SetString(PyExc_ValueError,
+ "field 'subject' is required for Match");
+ return NULL;
+ }
+ p = (stmt_ty)_PyArena_Malloc(arena, sizeof(*p));
+ if (!p)
+ return NULL;
+ p->kind = Match_kind;
+ p->v.Match.subject = subject;
+ p->v.Match.cases = cases;
+ p->lineno = lineno;
+ p->col_offset = col_offset;
+ p->end_lineno = end_lineno;
+ p->end_col_offset = end_col_offset;
+ return p;
+}
+
+stmt_ty
+_PyAST_Raise(expr_ty exc, expr_ty cause, int lineno, int col_offset, int
+ end_lineno, int end_col_offset, PyArena *arena)
+{
+ stmt_ty p;
+ p = (stmt_ty)_PyArena_Malloc(arena, sizeof(*p));
+ if (!p)
+ return NULL;
+ p->kind = Raise_kind;
+ p->v.Raise.exc = exc;
+ p->v.Raise.cause = cause;
+ p->lineno = lineno;
+ p->col_offset = col_offset;
+ p->end_lineno = end_lineno;
+ p->end_col_offset = end_col_offset;
+ return p;
+}
+
+stmt_ty
+_PyAST_Try(asdl_stmt_seq * body, asdl_excepthandler_seq * handlers,
+ asdl_stmt_seq * orelse, asdl_stmt_seq * finalbody, int lineno, int
+ col_offset, int end_lineno, int end_col_offset, PyArena *arena)
+{
+ stmt_ty p;
+ p = (stmt_ty)_PyArena_Malloc(arena, sizeof(*p));
+ if (!p)
+ return NULL;
+ p->kind = Try_kind;
+ p->v.Try.body = body;
+ p->v.Try.handlers = handlers;
+ p->v.Try.orelse = orelse;
+ p->v.Try.finalbody = finalbody;
+ p->lineno = lineno;
+ p->col_offset = col_offset;
+ p->end_lineno = end_lineno;
+ p->end_col_offset = end_col_offset;
+ return p;
+}
+
+stmt_ty
+_PyAST_TryStar(asdl_stmt_seq * body, asdl_excepthandler_seq * handlers,
+ asdl_stmt_seq * orelse, asdl_stmt_seq * finalbody, int lineno,
+ int col_offset, int end_lineno, int end_col_offset, PyArena
+ *arena)
+{
+ stmt_ty p;
+ p = (stmt_ty)_PyArena_Malloc(arena, sizeof(*p));
+ if (!p)
+ return NULL;
+ p->kind = TryStar_kind;
+ p->v.TryStar.body = body;
+ p->v.TryStar.handlers = handlers;
+ p->v.TryStar.orelse = orelse;
+ p->v.TryStar.finalbody = finalbody;
+ p->lineno = lineno;
+ p->col_offset = col_offset;
+ p->end_lineno = end_lineno;
+ p->end_col_offset = end_col_offset;
+ return p;
+}
+
+stmt_ty
+_PyAST_Assert(expr_ty test, expr_ty msg, int lineno, int col_offset, int
+ end_lineno, int end_col_offset, PyArena *arena)
+{
+ stmt_ty p;
+ if (!test) {
+ PyErr_SetString(PyExc_ValueError,
+ "field 'test' is required for Assert");
+ return NULL;
+ }
+ p = (stmt_ty)_PyArena_Malloc(arena, sizeof(*p));
+ if (!p)
+ return NULL;
+ p->kind = Assert_kind;
+ p->v.Assert.test = test;
+ p->v.Assert.msg = msg;
+ p->lineno = lineno;
+ p->col_offset = col_offset;
+ p->end_lineno = end_lineno;
+ p->end_col_offset = end_col_offset;
+ return p;
+}
+
+stmt_ty
+_PyAST_Import(asdl_alias_seq * names, int lineno, int col_offset, int
+ end_lineno, int end_col_offset, PyArena *arena)
+{
+ stmt_ty p;
+ p = (stmt_ty)_PyArena_Malloc(arena, sizeof(*p));
+ if (!p)
+ return NULL;
+ p->kind = Import_kind;
+ p->v.Import.names = names;
+ p->lineno = lineno;
+ p->col_offset = col_offset;
+ p->end_lineno = end_lineno;
+ p->end_col_offset = end_col_offset;
+ return p;
+}
+
+stmt_ty
+_PyAST_ImportFrom(identifier module, asdl_alias_seq * names, int level, int
+ lineno, int col_offset, int end_lineno, int end_col_offset,
+ PyArena *arena)
+{
+ stmt_ty p;
+ p = (stmt_ty)_PyArena_Malloc(arena, sizeof(*p));
+ if (!p)
+ return NULL;
+ p->kind = ImportFrom_kind;
+ p->v.ImportFrom.module = module;
+ p->v.ImportFrom.names = names;
+ p->v.ImportFrom.level = level;
+ p->lineno = lineno;
+ p->col_offset = col_offset;
+ p->end_lineno = end_lineno;
+ p->end_col_offset = end_col_offset;
+ return p;
+}
+
+stmt_ty
+_PyAST_Global(asdl_identifier_seq * names, int lineno, int col_offset, int
+ end_lineno, int end_col_offset, PyArena *arena)
+{
+ stmt_ty p;
+ p = (stmt_ty)_PyArena_Malloc(arena, sizeof(*p));
+ if (!p)
+ return NULL;
+ p->kind = Global_kind;
+ p->v.Global.names = names;
+ p->lineno = lineno;
+ p->col_offset = col_offset;
+ p->end_lineno = end_lineno;
+ p->end_col_offset = end_col_offset;
+ return p;
+}
+
+stmt_ty
+_PyAST_Nonlocal(asdl_identifier_seq * names, int lineno, int col_offset, int
+ end_lineno, int end_col_offset, PyArena *arena)
+{
+ stmt_ty p;
+ p = (stmt_ty)_PyArena_Malloc(arena, sizeof(*p));
+ if (!p)
+ return NULL;
+ p->kind = Nonlocal_kind;
+ p->v.Nonlocal.names = names;
+ p->lineno = lineno;
+ p->col_offset = col_offset;
+ p->end_lineno = end_lineno;
+ p->end_col_offset = end_col_offset;
+ return p;
+}
+
+stmt_ty
+_PyAST_Expr(expr_ty value, int lineno, int col_offset, int end_lineno, int
+ end_col_offset, PyArena *arena)
+{
+ stmt_ty p;
+ if (!value) {
+ PyErr_SetString(PyExc_ValueError,
+ "field 'value' is required for Expr");
+ return NULL;
+ }
+ p = (stmt_ty)_PyArena_Malloc(arena, sizeof(*p));
+ if (!p)
+ return NULL;
+ p->kind = Expr_kind;
+ p->v.Expr.value = value;
+ p->lineno = lineno;
+ p->col_offset = col_offset;
+ p->end_lineno = end_lineno;
+ p->end_col_offset = end_col_offset;
+ return p;
+}
+
+stmt_ty
+_PyAST_Pass(int lineno, int col_offset, int end_lineno, int end_col_offset,
+ PyArena *arena)
+{
+ stmt_ty p;
+ p = (stmt_ty)_PyArena_Malloc(arena, sizeof(*p));
+ if (!p)
+ return NULL;
+ p->kind = Pass_kind;
+ p->lineno = lineno;
+ p->col_offset = col_offset;
+ p->end_lineno = end_lineno;
+ p->end_col_offset = end_col_offset;
+ return p;
+}
+
+stmt_ty
+_PyAST_Break(int lineno, int col_offset, int end_lineno, int end_col_offset,
+ PyArena *arena)
+{
+ stmt_ty p;
+ p = (stmt_ty)_PyArena_Malloc(arena, sizeof(*p));
+ if (!p)
+ return NULL;
+ p->kind = Break_kind;
+ p->lineno = lineno;
+ p->col_offset = col_offset;
+ p->end_lineno = end_lineno;
+ p->end_col_offset = end_col_offset;
+ return p;
+}
+
+stmt_ty
+_PyAST_Continue(int lineno, int col_offset, int end_lineno, int end_col_offset,
+ PyArena *arena)
+{
+ stmt_ty p;
+ p = (stmt_ty)_PyArena_Malloc(arena, sizeof(*p));
+ if (!p)
+ return NULL;
+ p->kind = Continue_kind;
+ p->lineno = lineno;
+ p->col_offset = col_offset;
+ p->end_lineno = end_lineno;
+ p->end_col_offset = end_col_offset;
+ return p;
+}
+
+expr_ty
+_PyAST_BoolOp(boolop_ty op, asdl_expr_seq * values, int lineno, int col_offset,
+ int end_lineno, int end_col_offset, PyArena *arena)
+{
+ expr_ty p;
+ if (!op) {
+ PyErr_SetString(PyExc_ValueError,
+ "field 'op' is required for BoolOp");
+ return NULL;
+ }
+ p = (expr_ty)_PyArena_Malloc(arena, sizeof(*p));
+ if (!p)
+ return NULL;
+ p->kind = BoolOp_kind;
+ p->v.BoolOp.op = op;
+ p->v.BoolOp.values = values;
+ p->lineno = lineno;
+ p->col_offset = col_offset;
+ p->end_lineno = end_lineno;
+ p->end_col_offset = end_col_offset;
+ return p;
+}
+
+expr_ty
+_PyAST_NamedExpr(expr_ty target, expr_ty value, int lineno, int col_offset, int
+ end_lineno, int end_col_offset, PyArena *arena)
+{
+ expr_ty p;
+ if (!target) {
+ PyErr_SetString(PyExc_ValueError,
+ "field 'target' is required for NamedExpr");
+ return NULL;
+ }
+ if (!value) {
+ PyErr_SetString(PyExc_ValueError,
+ "field 'value' is required for NamedExpr");
+ return NULL;
+ }
+ p = (expr_ty)_PyArena_Malloc(arena, sizeof(*p));
+ if (!p)
+ return NULL;
+ p->kind = NamedExpr_kind;
+ p->v.NamedExpr.target = target;
+ p->v.NamedExpr.value = value;
+ p->lineno = lineno;
+ p->col_offset = col_offset;
+ p->end_lineno = end_lineno;
+ p->end_col_offset = end_col_offset;
+ return p;
+}
+
+expr_ty
+_PyAST_BinOp(expr_ty left, operator_ty op, expr_ty right, int lineno, int
+ col_offset, int end_lineno, int end_col_offset, PyArena *arena)
+{
+ expr_ty p;
+ if (!left) {
+ PyErr_SetString(PyExc_ValueError,
+ "field 'left' is required for BinOp");
+ return NULL;
+ }
+ if (!op) {
+ PyErr_SetString(PyExc_ValueError,
+ "field 'op' is required for BinOp");
+ return NULL;
+ }
+ if (!right) {
+ PyErr_SetString(PyExc_ValueError,
+ "field 'right' is required for BinOp");
+ return NULL;
+ }
+ p = (expr_ty)_PyArena_Malloc(arena, sizeof(*p));
+ if (!p)
+ return NULL;
+ p->kind = BinOp_kind;
+ p->v.BinOp.left = left;
+ p->v.BinOp.op = op;
+ p->v.BinOp.right = right;
+ p->lineno = lineno;
+ p->col_offset = col_offset;
+ p->end_lineno = end_lineno;
+ p->end_col_offset = end_col_offset;
+ return p;
+}
+
+expr_ty
+_PyAST_UnaryOp(unaryop_ty op, expr_ty operand, int lineno, int col_offset, int
+ end_lineno, int end_col_offset, PyArena *arena)
+{
+ expr_ty p;
+ if (!op) {
+ PyErr_SetString(PyExc_ValueError,
+ "field 'op' is required for UnaryOp");
+ return NULL;
+ }
+ if (!operand) {
+ PyErr_SetString(PyExc_ValueError,
+ "field 'operand' is required for UnaryOp");
+ return NULL;
+ }
+ p = (expr_ty)_PyArena_Malloc(arena, sizeof(*p));
+ if (!p)
+ return NULL;
+ p->kind = UnaryOp_kind;
+ p->v.UnaryOp.op = op;
+ p->v.UnaryOp.operand = operand;
+ p->lineno = lineno;
+ p->col_offset = col_offset;
+ p->end_lineno = end_lineno;
+ p->end_col_offset = end_col_offset;
+ return p;
+}
+
+expr_ty
+_PyAST_Lambda(arguments_ty args, expr_ty body, int lineno, int col_offset, int
+ end_lineno, int end_col_offset, PyArena *arena)
+{
+ expr_ty p;
+ if (!args) {
+ PyErr_SetString(PyExc_ValueError,
+ "field 'args' is required for Lambda");
+ return NULL;
+ }
+ if (!body) {
+ PyErr_SetString(PyExc_ValueError,
+ "field 'body' is required for Lambda");
+ return NULL;
+ }
+ p = (expr_ty)_PyArena_Malloc(arena, sizeof(*p));
+ if (!p)
+ return NULL;
+ p->kind = Lambda_kind;
+ p->v.Lambda.args = args;
+ p->v.Lambda.body = body;
+ p->lineno = lineno;
+ p->col_offset = col_offset;
+ p->end_lineno = end_lineno;
+ p->end_col_offset = end_col_offset;
+ return p;
+}
+
+expr_ty
+_PyAST_IfExp(expr_ty test, expr_ty body, expr_ty orelse, int lineno, int
+ col_offset, int end_lineno, int end_col_offset, PyArena *arena)
+{
+ expr_ty p;
+ if (!test) {
+ PyErr_SetString(PyExc_ValueError,
+ "field 'test' is required for IfExp");
+ return NULL;
+ }
+ if (!body) {
+ PyErr_SetString(PyExc_ValueError,
+ "field 'body' is required for IfExp");
+ return NULL;
+ }
+ if (!orelse) {
+ PyErr_SetString(PyExc_ValueError,
+ "field 'orelse' is required for IfExp");
+ return NULL;
+ }
+ p = (expr_ty)_PyArena_Malloc(arena, sizeof(*p));
+ if (!p)
+ return NULL;
+ p->kind = IfExp_kind;
+ p->v.IfExp.test = test;
+ p->v.IfExp.body = body;
+ p->v.IfExp.orelse = orelse;
+ p->lineno = lineno;
+ p->col_offset = col_offset;
+ p->end_lineno = end_lineno;
+ p->end_col_offset = end_col_offset;
+ return p;
+}
+
+expr_ty
+_PyAST_Dict(asdl_expr_seq * keys, asdl_expr_seq * values, int lineno, int
+ col_offset, int end_lineno, int end_col_offset, PyArena *arena)
+{
+ expr_ty p;
+ p = (expr_ty)_PyArena_Malloc(arena, sizeof(*p));
+ if (!p)
+ return NULL;
+ p->kind = Dict_kind;
+ p->v.Dict.keys = keys;
+ p->v.Dict.values = values;
+ p->lineno = lineno;
+ p->col_offset = col_offset;
+ p->end_lineno = end_lineno;
+ p->end_col_offset = end_col_offset;
+ return p;
+}
+
+expr_ty
+_PyAST_Set(asdl_expr_seq * elts, int lineno, int col_offset, int end_lineno,
+ int end_col_offset, PyArena *arena)
+{
+ expr_ty p;
+ p = (expr_ty)_PyArena_Malloc(arena, sizeof(*p));
+ if (!p)
+ return NULL;
+ p->kind = Set_kind;
+ p->v.Set.elts = elts;
+ p->lineno = lineno;
+ p->col_offset = col_offset;
+ p->end_lineno = end_lineno;
+ p->end_col_offset = end_col_offset;
+ return p;
+}
+
+expr_ty
+_PyAST_ListComp(expr_ty elt, asdl_comprehension_seq * generators, int lineno,
+ int col_offset, int end_lineno, int end_col_offset, PyArena
+ *arena)
+{
+ expr_ty p;
+ if (!elt) {
+ PyErr_SetString(PyExc_ValueError,
+ "field 'elt' is required for ListComp");
+ return NULL;
+ }
+ p = (expr_ty)_PyArena_Malloc(arena, sizeof(*p));
+ if (!p)
+ return NULL;
+ p->kind = ListComp_kind;
+ p->v.ListComp.elt = elt;
+ p->v.ListComp.generators = generators;
+ p->lineno = lineno;
+ p->col_offset = col_offset;
+ p->end_lineno = end_lineno;
+ p->end_col_offset = end_col_offset;
+ return p;
+}
+
+expr_ty
+_PyAST_SetComp(expr_ty elt, asdl_comprehension_seq * generators, int lineno,
+ int col_offset, int end_lineno, int end_col_offset, PyArena
+ *arena)
+{
+ expr_ty p;
+ if (!elt) {
+ PyErr_SetString(PyExc_ValueError,
+ "field 'elt' is required for SetComp");
+ return NULL;
+ }
+ p = (expr_ty)_PyArena_Malloc(arena, sizeof(*p));
+ if (!p)
+ return NULL;
+ p->kind = SetComp_kind;
+ p->v.SetComp.elt = elt;
+ p->v.SetComp.generators = generators;
+ p->lineno = lineno;
+ p->col_offset = col_offset;
+ p->end_lineno = end_lineno;
+ p->end_col_offset = end_col_offset;
+ return p;
+}
+
+expr_ty
+_PyAST_DictComp(expr_ty key, expr_ty value, asdl_comprehension_seq *
+ generators, int lineno, int col_offset, int end_lineno, int
+ end_col_offset, PyArena *arena)
+{
+ expr_ty p;
+ if (!key) {
+ PyErr_SetString(PyExc_ValueError,
+ "field 'key' is required for DictComp");
+ return NULL;
+ }
+ if (!value) {
+ PyErr_SetString(PyExc_ValueError,
+ "field 'value' is required for DictComp");
+ return NULL;
+ }
+ p = (expr_ty)_PyArena_Malloc(arena, sizeof(*p));
+ if (!p)
+ return NULL;
+ p->kind = DictComp_kind;
+ p->v.DictComp.key = key;
+ p->v.DictComp.value = value;
+ p->v.DictComp.generators = generators;
+ p->lineno = lineno;
+ p->col_offset = col_offset;
+ p->end_lineno = end_lineno;
+ p->end_col_offset = end_col_offset;
+ return p;
+}
+
+expr_ty
+_PyAST_GeneratorExp(expr_ty elt, asdl_comprehension_seq * generators, int
+ lineno, int col_offset, int end_lineno, int end_col_offset,
+ PyArena *arena)
+{
+ expr_ty p;
+ if (!elt) {
+ PyErr_SetString(PyExc_ValueError,
+ "field 'elt' is required for GeneratorExp");
+ return NULL;
+ }
+ p = (expr_ty)_PyArena_Malloc(arena, sizeof(*p));
+ if (!p)
+ return NULL;
+ p->kind = GeneratorExp_kind;
+ p->v.GeneratorExp.elt = elt;
+ p->v.GeneratorExp.generators = generators;
+ p->lineno = lineno;
+ p->col_offset = col_offset;
+ p->end_lineno = end_lineno;
+ p->end_col_offset = end_col_offset;
+ return p;
+}
+
+expr_ty
+_PyAST_Await(expr_ty value, int lineno, int col_offset, int end_lineno, int
+ end_col_offset, PyArena *arena)
+{
+ expr_ty p;
+ if (!value) {
+ PyErr_SetString(PyExc_ValueError,
+ "field 'value' is required for Await");
+ return NULL;
+ }
+ p = (expr_ty)_PyArena_Malloc(arena, sizeof(*p));
+ if (!p)
+ return NULL;
+ p->kind = Await_kind;
+ p->v.Await.value = value;
+ p->lineno = lineno;
+ p->col_offset = col_offset;
+ p->end_lineno = end_lineno;
+ p->end_col_offset = end_col_offset;
+ return p;
+}
+
+expr_ty
+_PyAST_Yield(expr_ty value, int lineno, int col_offset, int end_lineno, int
+ end_col_offset, PyArena *arena)
+{
+ expr_ty p;
+ p = (expr_ty)_PyArena_Malloc(arena, sizeof(*p));
+ if (!p)
+ return NULL;
+ p->kind = Yield_kind;
+ p->v.Yield.value = value;
+ p->lineno = lineno;
+ p->col_offset = col_offset;
+ p->end_lineno = end_lineno;
+ p->end_col_offset = end_col_offset;
+ return p;
+}
+
+expr_ty
+_PyAST_YieldFrom(expr_ty value, int lineno, int col_offset, int end_lineno, int
+ end_col_offset, PyArena *arena)
+{
+ expr_ty p;
+ if (!value) {
+ PyErr_SetString(PyExc_ValueError,
+ "field 'value' is required for YieldFrom");
+ return NULL;
+ }
+ p = (expr_ty)_PyArena_Malloc(arena, sizeof(*p));
+ if (!p)
+ return NULL;
+ p->kind = YieldFrom_kind;
+ p->v.YieldFrom.value = value;
+ p->lineno = lineno;
+ p->col_offset = col_offset;
+ p->end_lineno = end_lineno;
+ p->end_col_offset = end_col_offset;
+ return p;
+}
+
+expr_ty
+_PyAST_Compare(expr_ty left, asdl_int_seq * ops, asdl_expr_seq * comparators,
+ int lineno, int col_offset, int end_lineno, int end_col_offset,
+ PyArena *arena)
+{
+ expr_ty p;
+ if (!left) {
+ PyErr_SetString(PyExc_ValueError,
+ "field 'left' is required for Compare");
+ return NULL;
+ }
+ p = (expr_ty)_PyArena_Malloc(arena, sizeof(*p));
+ if (!p)
+ return NULL;
+ p->kind = Compare_kind;
+ p->v.Compare.left = left;
+ p->v.Compare.ops = ops;
+ p->v.Compare.comparators = comparators;
+ p->lineno = lineno;
+ p->col_offset = col_offset;
+ p->end_lineno = end_lineno;
+ p->end_col_offset = end_col_offset;
+ return p;
+}
+
+expr_ty
+_PyAST_Call(expr_ty func, asdl_expr_seq * args, asdl_keyword_seq * keywords,
+ int lineno, int col_offset, int end_lineno, int end_col_offset,
+ PyArena *arena)
+{
+ expr_ty p;
+ if (!func) {
+ PyErr_SetString(PyExc_ValueError,
+ "field 'func' is required for Call");
+ return NULL;
+ }
+ p = (expr_ty)_PyArena_Malloc(arena, sizeof(*p));
+ if (!p)
+ return NULL;
+ p->kind = Call_kind;
+ p->v.Call.func = func;
+ p->v.Call.args = args;
+ p->v.Call.keywords = keywords;
+ p->lineno = lineno;
+ p->col_offset = col_offset;
+ p->end_lineno = end_lineno;
+ p->end_col_offset = end_col_offset;
+ return p;
+}
+
+expr_ty
+_PyAST_FormattedValue(expr_ty value, int conversion, expr_ty format_spec, int
+ lineno, int col_offset, int end_lineno, int
+ end_col_offset, PyArena *arena)
+{
+ expr_ty p;
+ if (!value) {
+ PyErr_SetString(PyExc_ValueError,
+ "field 'value' is required for FormattedValue");
+ return NULL;
+ }
+ p = (expr_ty)_PyArena_Malloc(arena, sizeof(*p));
+ if (!p)
+ return NULL;
+ p->kind = FormattedValue_kind;
+ p->v.FormattedValue.value = value;
+ p->v.FormattedValue.conversion = conversion;
+ p->v.FormattedValue.format_spec = format_spec;
+ p->lineno = lineno;
+ p->col_offset = col_offset;
+ p->end_lineno = end_lineno;
+ p->end_col_offset = end_col_offset;
+ return p;
+}
+
+expr_ty
+_PyAST_JoinedStr(asdl_expr_seq * values, int lineno, int col_offset, int
+ end_lineno, int end_col_offset, PyArena *arena)
+{
+ expr_ty p;
+ p = (expr_ty)_PyArena_Malloc(arena, sizeof(*p));
+ if (!p)
+ return NULL;
+ p->kind = JoinedStr_kind;
+ p->v.JoinedStr.values = values;
+ p->lineno = lineno;
+ p->col_offset = col_offset;
+ p->end_lineno = end_lineno;
+ p->end_col_offset = end_col_offset;
+ return p;
+}
+
+expr_ty
+_PyAST_Constant(constant value, string kind, int lineno, int col_offset, int
+ end_lineno, int end_col_offset, PyArena *arena)
+{
+ expr_ty p;
+ if (!value) {
+ PyErr_SetString(PyExc_ValueError,
+ "field 'value' is required for Constant");
+ return NULL;
+ }
+ p = (expr_ty)_PyArena_Malloc(arena, sizeof(*p));
+ if (!p)
+ return NULL;
+ p->kind = Constant_kind;
+ p->v.Constant.value = value;
+ p->v.Constant.kind = kind;
+ p->lineno = lineno;
+ p->col_offset = col_offset;
+ p->end_lineno = end_lineno;
+ p->end_col_offset = end_col_offset;
+ return p;
+}
+
+expr_ty
+_PyAST_Attribute(expr_ty value, identifier attr, expr_context_ty ctx, int
+ lineno, int col_offset, int end_lineno, int end_col_offset,
+ PyArena *arena)
+{
+ expr_ty p;
+ if (!value) {
+ PyErr_SetString(PyExc_ValueError,
+ "field 'value' is required for Attribute");
+ return NULL;
+ }
+ if (!attr) {
+ PyErr_SetString(PyExc_ValueError,
+ "field 'attr' is required for Attribute");
+ return NULL;
+ }
+ if (!ctx) {
+ PyErr_SetString(PyExc_ValueError,
+ "field 'ctx' is required for Attribute");
+ return NULL;
+ }
+ p = (expr_ty)_PyArena_Malloc(arena, sizeof(*p));
+ if (!p)
+ return NULL;
+ p->kind = Attribute_kind;
+ p->v.Attribute.value = value;
+ p->v.Attribute.attr = attr;
+ p->v.Attribute.ctx = ctx;
+ p->lineno = lineno;
+ p->col_offset = col_offset;
+ p->end_lineno = end_lineno;
+ p->end_col_offset = end_col_offset;
+ return p;
+}
+
+expr_ty
+_PyAST_Subscript(expr_ty value, expr_ty slice, expr_context_ty ctx, int lineno,
+ int col_offset, int end_lineno, int end_col_offset, PyArena
+ *arena)
+{
+ expr_ty p;
+ if (!value) {
+ PyErr_SetString(PyExc_ValueError,
+ "field 'value' is required for Subscript");
+ return NULL;
+ }
+ if (!slice) {
+ PyErr_SetString(PyExc_ValueError,
+ "field 'slice' is required for Subscript");
+ return NULL;
+ }
+ if (!ctx) {
+ PyErr_SetString(PyExc_ValueError,
+ "field 'ctx' is required for Subscript");
+ return NULL;
+ }
+ p = (expr_ty)_PyArena_Malloc(arena, sizeof(*p));
+ if (!p)
+ return NULL;
+ p->kind = Subscript_kind;
+ p->v.Subscript.value = value;
+ p->v.Subscript.slice = slice;
+ p->v.Subscript.ctx = ctx;
+ p->lineno = lineno;
+ p->col_offset = col_offset;
+ p->end_lineno = end_lineno;
+ p->end_col_offset = end_col_offset;
+ return p;
+}
+
+expr_ty
+_PyAST_Starred(expr_ty value, expr_context_ty ctx, int lineno, int col_offset,
+ int end_lineno, int end_col_offset, PyArena *arena)
+{
+ expr_ty p;
+ if (!value) {
+ PyErr_SetString(PyExc_ValueError,
+ "field 'value' is required for Starred");
+ return NULL;
+ }
+ if (!ctx) {
+ PyErr_SetString(PyExc_ValueError,
+ "field 'ctx' is required for Starred");
+ return NULL;
+ }
+ p = (expr_ty)_PyArena_Malloc(arena, sizeof(*p));
+ if (!p)
+ return NULL;
+ p->kind = Starred_kind;
+ p->v.Starred.value = value;
+ p->v.Starred.ctx = ctx;
+ p->lineno = lineno;
+ p->col_offset = col_offset;
+ p->end_lineno = end_lineno;
+ p->end_col_offset = end_col_offset;
+ return p;
+}
+
+expr_ty
+_PyAST_Name(identifier id, expr_context_ty ctx, int lineno, int col_offset, int
+ end_lineno, int end_col_offset, PyArena *arena)
+{
+ expr_ty p;
+ if (!id) {
+ PyErr_SetString(PyExc_ValueError,
+ "field 'id' is required for Name");
+ return NULL;
+ }
+ if (!ctx) {
+ PyErr_SetString(PyExc_ValueError,
+ "field 'ctx' is required for Name");
+ return NULL;
+ }
+ p = (expr_ty)_PyArena_Malloc(arena, sizeof(*p));
+ if (!p)
+ return NULL;
+ p->kind = Name_kind;
+ p->v.Name.id = id;
+ p->v.Name.ctx = ctx;
+ p->lineno = lineno;
+ p->col_offset = col_offset;
+ p->end_lineno = end_lineno;
+ p->end_col_offset = end_col_offset;
+ return p;
+}
+
+expr_ty
+_PyAST_List(asdl_expr_seq * elts, expr_context_ty ctx, int lineno, int
+ col_offset, int end_lineno, int end_col_offset, PyArena *arena)
+{
+ expr_ty p;
+ if (!ctx) {
+ PyErr_SetString(PyExc_ValueError,
+ "field 'ctx' is required for List");
+ return NULL;
+ }
+ p = (expr_ty)_PyArena_Malloc(arena, sizeof(*p));
+ if (!p)
+ return NULL;
+ p->kind = List_kind;
+ p->v.List.elts = elts;
+ p->v.List.ctx = ctx;
+ p->lineno = lineno;
+ p->col_offset = col_offset;
+ p->end_lineno = end_lineno;
+ p->end_col_offset = end_col_offset;
+ return p;
+}
+
+expr_ty
+_PyAST_Tuple(asdl_expr_seq * elts, expr_context_ty ctx, int lineno, int
+ col_offset, int end_lineno, int end_col_offset, PyArena *arena)
+{
+ expr_ty p;
+ if (!ctx) {
+ PyErr_SetString(PyExc_ValueError,
+ "field 'ctx' is required for Tuple");
+ return NULL;
+ }
+ p = (expr_ty)_PyArena_Malloc(arena, sizeof(*p));
+ if (!p)
+ return NULL;
+ p->kind = Tuple_kind;
+ p->v.Tuple.elts = elts;
+ p->v.Tuple.ctx = ctx;
+ p->lineno = lineno;
+ p->col_offset = col_offset;
+ p->end_lineno = end_lineno;
+ p->end_col_offset = end_col_offset;
+ return p;
+}
+
+expr_ty
+_PyAST_Slice(expr_ty lower, expr_ty upper, expr_ty step, int lineno, int
+ col_offset, int end_lineno, int end_col_offset, PyArena *arena)
+{
+ expr_ty p;
+ p = (expr_ty)_PyArena_Malloc(arena, sizeof(*p));
+ if (!p)
+ return NULL;
+ p->kind = Slice_kind;
+ p->v.Slice.lower = lower;
+ p->v.Slice.upper = upper;
+ p->v.Slice.step = step;
+ p->lineno = lineno;
+ p->col_offset = col_offset;
+ p->end_lineno = end_lineno;
+ p->end_col_offset = end_col_offset;
+ return p;
+}
+
+comprehension_ty
+_PyAST_comprehension(expr_ty target, expr_ty iter, asdl_expr_seq * ifs, int
+ is_async, PyArena *arena)
+{
+ comprehension_ty p;
+ if (!target) {
+ PyErr_SetString(PyExc_ValueError,
+ "field 'target' is required for comprehension");
+ return NULL;
+ }
+ if (!iter) {
+ PyErr_SetString(PyExc_ValueError,
+ "field 'iter' is required for comprehension");
+ return NULL;
+ }
+ p = (comprehension_ty)_PyArena_Malloc(arena, sizeof(*p));
+ if (!p)
+ return NULL;
+ p->target = target;
+ p->iter = iter;
+ p->ifs = ifs;
+ p->is_async = is_async;
+ return p;
+}
+
+excepthandler_ty
+_PyAST_ExceptHandler(expr_ty type, identifier name, asdl_stmt_seq * body, int
+ lineno, int col_offset, int end_lineno, int
+ end_col_offset, PyArena *arena)
+{
+ excepthandler_ty p;
+ p = (excepthandler_ty)_PyArena_Malloc(arena, sizeof(*p));
+ if (!p)
+ return NULL;
+ p->kind = ExceptHandler_kind;
+ p->v.ExceptHandler.type = type;
+ p->v.ExceptHandler.name = name;
+ p->v.ExceptHandler.body = body;
+ p->lineno = lineno;
+ p->col_offset = col_offset;
+ p->end_lineno = end_lineno;
+ p->end_col_offset = end_col_offset;
+ return p;
+}
+
+arguments_ty
+_PyAST_arguments(asdl_arg_seq * posonlyargs, asdl_arg_seq * args, arg_ty
+ vararg, asdl_arg_seq * kwonlyargs, asdl_expr_seq *
+ kw_defaults, arg_ty kwarg, asdl_expr_seq * defaults, PyArena
+ *arena)
+{
+ arguments_ty p;
+ p = (arguments_ty)_PyArena_Malloc(arena, sizeof(*p));
+ if (!p)
+ return NULL;
+ p->posonlyargs = posonlyargs;
+ p->args = args;
+ p->vararg = vararg;
+ p->kwonlyargs = kwonlyargs;
+ p->kw_defaults = kw_defaults;
+ p->kwarg = kwarg;
+ p->defaults = defaults;
+ return p;
+}
+
+arg_ty
+_PyAST_arg(identifier arg, expr_ty annotation, string type_comment, int lineno,
+ int col_offset, int end_lineno, int end_col_offset, PyArena *arena)
+{
+ arg_ty p;
+ if (!arg) {
+ PyErr_SetString(PyExc_ValueError,
+ "field 'arg' is required for arg");
+ return NULL;
+ }
+ p = (arg_ty)_PyArena_Malloc(arena, sizeof(*p));
+ if (!p)
+ return NULL;
+ p->arg = arg;
+ p->annotation = annotation;
+ p->type_comment = type_comment;
+ p->lineno = lineno;
+ p->col_offset = col_offset;
+ p->end_lineno = end_lineno;
+ p->end_col_offset = end_col_offset;
+ return p;
+}
+
+keyword_ty
+_PyAST_keyword(identifier arg, expr_ty value, int lineno, int col_offset, int
+ end_lineno, int end_col_offset, PyArena *arena)
+{
+ keyword_ty p;
+ if (!value) {
+ PyErr_SetString(PyExc_ValueError,
+ "field 'value' is required for keyword");
+ return NULL;
+ }
+ p = (keyword_ty)_PyArena_Malloc(arena, sizeof(*p));
+ if (!p)
+ return NULL;
+ p->arg = arg;
+ p->value = value;
+ p->lineno = lineno;
+ p->col_offset = col_offset;
+ p->end_lineno = end_lineno;
+ p->end_col_offset = end_col_offset;
+ return p;
+}
+
+alias_ty
+_PyAST_alias(identifier name, identifier asname, int lineno, int col_offset,
+ int end_lineno, int end_col_offset, PyArena *arena)
+{
+ alias_ty p;
+ if (!name) {
+ PyErr_SetString(PyExc_ValueError,
+ "field 'name' is required for alias");
+ return NULL;
+ }
+ p = (alias_ty)_PyArena_Malloc(arena, sizeof(*p));
+ if (!p)
+ return NULL;
+ p->name = name;
+ p->asname = asname;
+ p->lineno = lineno;
+ p->col_offset = col_offset;
+ p->end_lineno = end_lineno;
+ p->end_col_offset = end_col_offset;
+ return p;
+}
+
+withitem_ty
+_PyAST_withitem(expr_ty context_expr, expr_ty optional_vars, PyArena *arena)
+{
+ withitem_ty p;
+ if (!context_expr) {
+ PyErr_SetString(PyExc_ValueError,
+ "field 'context_expr' is required for withitem");
+ return NULL;
+ }
+ p = (withitem_ty)_PyArena_Malloc(arena, sizeof(*p));
+ if (!p)
+ return NULL;
+ p->context_expr = context_expr;
+ p->optional_vars = optional_vars;
+ return p;
+}
+
+match_case_ty
+_PyAST_match_case(pattern_ty pattern, expr_ty guard, asdl_stmt_seq * body,
+ PyArena *arena)
+{
+ match_case_ty p;
+ if (!pattern) {
+ PyErr_SetString(PyExc_ValueError,
+ "field 'pattern' is required for match_case");
+ return NULL;
+ }
+ p = (match_case_ty)_PyArena_Malloc(arena, sizeof(*p));
+ if (!p)
+ return NULL;
+ p->pattern = pattern;
+ p->guard = guard;
+ p->body = body;
+ return p;
+}
+
+pattern_ty
+_PyAST_MatchValue(expr_ty value, int lineno, int col_offset, int end_lineno,
+ int end_col_offset, PyArena *arena)
+{
+ pattern_ty p;
+ if (!value) {
+ PyErr_SetString(PyExc_ValueError,
+ "field 'value' is required for MatchValue");
+ return NULL;
+ }
+ p = (pattern_ty)_PyArena_Malloc(arena, sizeof(*p));
+ if (!p)
+ return NULL;
+ p->kind = MatchValue_kind;
+ p->v.MatchValue.value = value;
+ p->lineno = lineno;
+ p->col_offset = col_offset;
+ p->end_lineno = end_lineno;
+ p->end_col_offset = end_col_offset;
+ return p;
+}
+
+pattern_ty
+_PyAST_MatchSingleton(constant value, int lineno, int col_offset, int
+ end_lineno, int end_col_offset, PyArena *arena)
+{
+ pattern_ty p;
+ if (!value) {
+ PyErr_SetString(PyExc_ValueError,
+ "field 'value' is required for MatchSingleton");
+ return NULL;
+ }
+ p = (pattern_ty)_PyArena_Malloc(arena, sizeof(*p));
+ if (!p)
+ return NULL;
+ p->kind = MatchSingleton_kind;
+ p->v.MatchSingleton.value = value;
+ p->lineno = lineno;
+ p->col_offset = col_offset;
+ p->end_lineno = end_lineno;
+ p->end_col_offset = end_col_offset;
+ return p;
+}
+
+pattern_ty
+_PyAST_MatchSequence(asdl_pattern_seq * patterns, int lineno, int col_offset,
+ int end_lineno, int end_col_offset, PyArena *arena)
+{
+ pattern_ty p;
+ p = (pattern_ty)_PyArena_Malloc(arena, sizeof(*p));
+ if (!p)
+ return NULL;
+ p->kind = MatchSequence_kind;
+ p->v.MatchSequence.patterns = patterns;
+ p->lineno = lineno;
+ p->col_offset = col_offset;
+ p->end_lineno = end_lineno;
+ p->end_col_offset = end_col_offset;
+ return p;
+}
+
+pattern_ty
+_PyAST_MatchMapping(asdl_expr_seq * keys, asdl_pattern_seq * patterns,
+ identifier rest, int lineno, int col_offset, int
+ end_lineno, int end_col_offset, PyArena *arena)
+{
+ pattern_ty p;
+ p = (pattern_ty)_PyArena_Malloc(arena, sizeof(*p));
+ if (!p)
+ return NULL;
+ p->kind = MatchMapping_kind;
+ p->v.MatchMapping.keys = keys;
+ p->v.MatchMapping.patterns = patterns;
+ p->v.MatchMapping.rest = rest;
+ p->lineno = lineno;
+ p->col_offset = col_offset;
+ p->end_lineno = end_lineno;
+ p->end_col_offset = end_col_offset;
+ return p;
+}
+
+pattern_ty
+_PyAST_MatchClass(expr_ty cls, asdl_pattern_seq * patterns, asdl_identifier_seq
+ * kwd_attrs, asdl_pattern_seq * kwd_patterns, int lineno, int
+ col_offset, int end_lineno, int end_col_offset, PyArena
+ *arena)
+{
+ pattern_ty p;
+ if (!cls) {
+ PyErr_SetString(PyExc_ValueError,
+ "field 'cls' is required for MatchClass");
+ return NULL;
+ }
+ p = (pattern_ty)_PyArena_Malloc(arena, sizeof(*p));
+ if (!p)
+ return NULL;
+ p->kind = MatchClass_kind;
+ p->v.MatchClass.cls = cls;
+ p->v.MatchClass.patterns = patterns;
+ p->v.MatchClass.kwd_attrs = kwd_attrs;
+ p->v.MatchClass.kwd_patterns = kwd_patterns;
+ p->lineno = lineno;
+ p->col_offset = col_offset;
+ p->end_lineno = end_lineno;
+ p->end_col_offset = end_col_offset;
+ return p;
+}
+
+pattern_ty
+_PyAST_MatchStar(identifier name, int lineno, int col_offset, int end_lineno,
+ int end_col_offset, PyArena *arena)
+{
+ pattern_ty p;
+ p = (pattern_ty)_PyArena_Malloc(arena, sizeof(*p));
+ if (!p)
+ return NULL;
+ p->kind = MatchStar_kind;
+ p->v.MatchStar.name = name;
+ p->lineno = lineno;
+ p->col_offset = col_offset;
+ p->end_lineno = end_lineno;
+ p->end_col_offset = end_col_offset;
+ return p;
+}
+
+pattern_ty
+_PyAST_MatchAs(pattern_ty pattern, identifier name, int lineno, int col_offset,
+ int end_lineno, int end_col_offset, PyArena *arena)
+{
+ pattern_ty p;
+ p = (pattern_ty)_PyArena_Malloc(arena, sizeof(*p));
+ if (!p)
+ return NULL;
+ p->kind = MatchAs_kind;
+ p->v.MatchAs.pattern = pattern;
+ p->v.MatchAs.name = name;
+ p->lineno = lineno;
+ p->col_offset = col_offset;
+ p->end_lineno = end_lineno;
+ p->end_col_offset = end_col_offset;
+ return p;
+}
+
+pattern_ty
+_PyAST_MatchOr(asdl_pattern_seq * patterns, int lineno, int col_offset, int
+ end_lineno, int end_col_offset, PyArena *arena)
+{
+ pattern_ty p;
+ p = (pattern_ty)_PyArena_Malloc(arena, sizeof(*p));
+ if (!p)
+ return NULL;
+ p->kind = MatchOr_kind;
+ p->v.MatchOr.patterns = patterns;
+ p->lineno = lineno;
+ p->col_offset = col_offset;
+ p->end_lineno = end_lineno;
+ p->end_col_offset = end_col_offset;
+ return p;
+}
+
+type_ignore_ty
+_PyAST_TypeIgnore(int lineno, string tag, PyArena *arena)
+{
+ type_ignore_ty p;
+ if (!tag) {
+ PyErr_SetString(PyExc_ValueError,
+ "field 'tag' is required for TypeIgnore");
+ return NULL;
+ }
+ p = (type_ignore_ty)_PyArena_Malloc(arena, sizeof(*p));
+ if (!p)
+ return NULL;
+ p->kind = TypeIgnore_kind;
+ p->v.TypeIgnore.lineno = lineno;
+ p->v.TypeIgnore.tag = tag;
+ return p;
+}
+
+type_param_ty
+_PyAST_TypeVar(identifier name, expr_ty bound, int lineno, int col_offset, int
+ end_lineno, int end_col_offset, PyArena *arena)
+{
+ type_param_ty p;
+ if (!name) {
+ PyErr_SetString(PyExc_ValueError,
+ "field 'name' is required for TypeVar");
+ return NULL;
+ }
+ p = (type_param_ty)_PyArena_Malloc(arena, sizeof(*p));
+ if (!p)
+ return NULL;
+ p->kind = TypeVar_kind;
+ p->v.TypeVar.name = name;
+ p->v.TypeVar.bound = bound;
+ p->lineno = lineno;
+ p->col_offset = col_offset;
+ p->end_lineno = end_lineno;
+ p->end_col_offset = end_col_offset;
+ return p;
+}
+
+type_param_ty
+_PyAST_ParamSpec(identifier name, int lineno, int col_offset, int end_lineno,
+ int end_col_offset, PyArena *arena)
+{
+ type_param_ty p;
+ if (!name) {
+ PyErr_SetString(PyExc_ValueError,
+ "field 'name' is required for ParamSpec");
+ return NULL;
+ }
+ p = (type_param_ty)_PyArena_Malloc(arena, sizeof(*p));
+ if (!p)
+ return NULL;
+ p->kind = ParamSpec_kind;
+ p->v.ParamSpec.name = name;
+ p->lineno = lineno;
+ p->col_offset = col_offset;
+ p->end_lineno = end_lineno;
+ p->end_col_offset = end_col_offset;
+ return p;
+}
+
+type_param_ty
+_PyAST_TypeVarTuple(identifier name, int lineno, int col_offset, int
+ end_lineno, int end_col_offset, PyArena *arena)
+{
+ type_param_ty p;
+ if (!name) {
+ PyErr_SetString(PyExc_ValueError,
+ "field 'name' is required for TypeVarTuple");
+ return NULL;
+ }
+ p = (type_param_ty)_PyArena_Malloc(arena, sizeof(*p));
+ if (!p)
+ return NULL;
+ p->kind = TypeVarTuple_kind;
+ p->v.TypeVarTuple.name = name;
+ p->lineno = lineno;
+ p->col_offset = col_offset;
+ p->end_lineno = end_lineno;
+ p->end_col_offset = end_col_offset;
+ return p;
+}
+
+
+PyObject*
+ast2obj_mod(struct ast_state *state, struct validator *vstate, void* _o)
+{
+ mod_ty o = (mod_ty)_o;
+ PyObject *result = NULL, *value = NULL;
+ PyTypeObject *tp;
+ if (!o) {
+ Py_RETURN_NONE;
+ }
+ if (++vstate->recursion_depth > vstate->recursion_limit) {
+ PyErr_SetString(PyExc_RecursionError,
+ "maximum recursion depth exceeded during ast construction");
+ return 0;
+ }
+ switch (o->kind) {
+ case Module_kind:
+ tp = (PyTypeObject *)state->Module_type;
+ result = PyType_GenericNew(tp, NULL, NULL);
+ if (!result) goto failed;
+ value = ast2obj_list(state, vstate, (asdl_seq*)o->v.Module.body,
+ ast2obj_stmt);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->body, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ value = ast2obj_list(state, vstate,
+ (asdl_seq*)o->v.Module.type_ignores,
+ ast2obj_type_ignore);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->type_ignores, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ break;
+ case Interactive_kind:
+ tp = (PyTypeObject *)state->Interactive_type;
+ result = PyType_GenericNew(tp, NULL, NULL);
+ if (!result) goto failed;
+ value = ast2obj_list(state, vstate, (asdl_seq*)o->v.Interactive.body,
+ ast2obj_stmt);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->body, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ break;
+ case Expression_kind:
+ tp = (PyTypeObject *)state->Expression_type;
+ result = PyType_GenericNew(tp, NULL, NULL);
+ if (!result) goto failed;
+ value = ast2obj_expr(state, vstate, o->v.Expression.body);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->body, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ break;
+ case FunctionType_kind:
+ tp = (PyTypeObject *)state->FunctionType_type;
+ result = PyType_GenericNew(tp, NULL, NULL);
+ if (!result) goto failed;
+ value = ast2obj_list(state, vstate,
+ (asdl_seq*)o->v.FunctionType.argtypes,
+ ast2obj_expr);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->argtypes, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ value = ast2obj_expr(state, vstate, o->v.FunctionType.returns);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->returns, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ break;
+ }
+ vstate->recursion_depth--;
+ return result;
+failed:
+ vstate->recursion_depth--;
+ Py_XDECREF(value);
+ Py_XDECREF(result);
+ return NULL;
+}
+
+PyObject*
+ast2obj_stmt(struct ast_state *state, struct validator *vstate, void* _o)
+{
+ stmt_ty o = (stmt_ty)_o;
+ PyObject *result = NULL, *value = NULL;
+ PyTypeObject *tp;
+ if (!o) {
+ Py_RETURN_NONE;
+ }
+ if (++vstate->recursion_depth > vstate->recursion_limit) {
+ PyErr_SetString(PyExc_RecursionError,
+ "maximum recursion depth exceeded during ast construction");
+ return 0;
+ }
+ switch (o->kind) {
+ case FunctionDef_kind:
+ tp = (PyTypeObject *)state->FunctionDef_type;
+ result = PyType_GenericNew(tp, NULL, NULL);
+ if (!result) goto failed;
+ value = ast2obj_identifier(state, vstate, o->v.FunctionDef.name);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->name, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ value = ast2obj_arguments(state, vstate, o->v.FunctionDef.args);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->args, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ value = ast2obj_list(state, vstate, (asdl_seq*)o->v.FunctionDef.body,
+ ast2obj_stmt);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->body, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ value = ast2obj_list(state, vstate,
+ (asdl_seq*)o->v.FunctionDef.decorator_list,
+ ast2obj_expr);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->decorator_list, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ value = ast2obj_expr(state, vstate, o->v.FunctionDef.returns);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->returns, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ value = ast2obj_string(state, vstate, o->v.FunctionDef.type_comment);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->type_comment, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ value = ast2obj_list(state, vstate,
+ (asdl_seq*)o->v.FunctionDef.type_params,
+ ast2obj_type_param);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->type_params, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ break;
+ case AsyncFunctionDef_kind:
+ tp = (PyTypeObject *)state->AsyncFunctionDef_type;
+ result = PyType_GenericNew(tp, NULL, NULL);
+ if (!result) goto failed;
+ value = ast2obj_identifier(state, vstate, o->v.AsyncFunctionDef.name);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->name, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ value = ast2obj_arguments(state, vstate, o->v.AsyncFunctionDef.args);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->args, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ value = ast2obj_list(state, vstate,
+ (asdl_seq*)o->v.AsyncFunctionDef.body,
+ ast2obj_stmt);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->body, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ value = ast2obj_list(state, vstate,
+ (asdl_seq*)o->v.AsyncFunctionDef.decorator_list,
+ ast2obj_expr);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->decorator_list, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ value = ast2obj_expr(state, vstate, o->v.AsyncFunctionDef.returns);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->returns, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ value = ast2obj_string(state, vstate, o->v.AsyncFunctionDef.type_comment);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->type_comment, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ value = ast2obj_list(state, vstate,
+ (asdl_seq*)o->v.AsyncFunctionDef.type_params,
+ ast2obj_type_param);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->type_params, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ break;
+ case ClassDef_kind:
+ tp = (PyTypeObject *)state->ClassDef_type;
+ result = PyType_GenericNew(tp, NULL, NULL);
+ if (!result) goto failed;
+ value = ast2obj_identifier(state, vstate, o->v.ClassDef.name);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->name, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ value = ast2obj_list(state, vstate, (asdl_seq*)o->v.ClassDef.bases,
+ ast2obj_expr);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->bases, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ value = ast2obj_list(state, vstate, (asdl_seq*)o->v.ClassDef.keywords,
+ ast2obj_keyword);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->keywords, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ value = ast2obj_list(state, vstate, (asdl_seq*)o->v.ClassDef.body,
+ ast2obj_stmt);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->body, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ value = ast2obj_list(state, vstate,
+ (asdl_seq*)o->v.ClassDef.decorator_list,
+ ast2obj_expr);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->decorator_list, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ value = ast2obj_list(state, vstate,
+ (asdl_seq*)o->v.ClassDef.type_params,
+ ast2obj_type_param);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->type_params, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ break;
+ case Return_kind:
+ tp = (PyTypeObject *)state->Return_type;
+ result = PyType_GenericNew(tp, NULL, NULL);
+ if (!result) goto failed;
+ value = ast2obj_expr(state, vstate, o->v.Return.value);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->value, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ break;
+ case Delete_kind:
+ tp = (PyTypeObject *)state->Delete_type;
+ result = PyType_GenericNew(tp, NULL, NULL);
+ if (!result) goto failed;
+ value = ast2obj_list(state, vstate, (asdl_seq*)o->v.Delete.targets,
+ ast2obj_expr);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->targets, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ break;
+ case Assign_kind:
+ tp = (PyTypeObject *)state->Assign_type;
+ result = PyType_GenericNew(tp, NULL, NULL);
+ if (!result) goto failed;
+ value = ast2obj_list(state, vstate, (asdl_seq*)o->v.Assign.targets,
+ ast2obj_expr);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->targets, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ value = ast2obj_expr(state, vstate, o->v.Assign.value);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->value, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ value = ast2obj_string(state, vstate, o->v.Assign.type_comment);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->type_comment, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ break;
+ case TypeAlias_kind:
+ tp = (PyTypeObject *)state->TypeAlias_type;
+ result = PyType_GenericNew(tp, NULL, NULL);
+ if (!result) goto failed;
+ value = ast2obj_expr(state, vstate, o->v.TypeAlias.name);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->name, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ value = ast2obj_list(state, vstate,
+ (asdl_seq*)o->v.TypeAlias.type_params,
+ ast2obj_type_param);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->type_params, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ value = ast2obj_expr(state, vstate, o->v.TypeAlias.value);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->value, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ break;
+ case AugAssign_kind:
+ tp = (PyTypeObject *)state->AugAssign_type;
+ result = PyType_GenericNew(tp, NULL, NULL);
+ if (!result) goto failed;
+ value = ast2obj_expr(state, vstate, o->v.AugAssign.target);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->target, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ value = ast2obj_operator(state, vstate, o->v.AugAssign.op);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->op, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ value = ast2obj_expr(state, vstate, o->v.AugAssign.value);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->value, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ break;
+ case AnnAssign_kind:
+ tp = (PyTypeObject *)state->AnnAssign_type;
+ result = PyType_GenericNew(tp, NULL, NULL);
+ if (!result) goto failed;
+ value = ast2obj_expr(state, vstate, o->v.AnnAssign.target);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->target, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ value = ast2obj_expr(state, vstate, o->v.AnnAssign.annotation);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->annotation, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ value = ast2obj_expr(state, vstate, o->v.AnnAssign.value);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->value, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ value = ast2obj_int(state, vstate, o->v.AnnAssign.simple);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->simple, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ break;
+ case For_kind:
+ tp = (PyTypeObject *)state->For_type;
+ result = PyType_GenericNew(tp, NULL, NULL);
+ if (!result) goto failed;
+ value = ast2obj_expr(state, vstate, o->v.For.target);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->target, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ value = ast2obj_expr(state, vstate, o->v.For.iter);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->iter, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ value = ast2obj_list(state, vstate, (asdl_seq*)o->v.For.body,
+ ast2obj_stmt);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->body, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ value = ast2obj_list(state, vstate, (asdl_seq*)o->v.For.orelse,
+ ast2obj_stmt);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->orelse, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ value = ast2obj_string(state, vstate, o->v.For.type_comment);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->type_comment, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ break;
+ case AsyncFor_kind:
+ tp = (PyTypeObject *)state->AsyncFor_type;
+ result = PyType_GenericNew(tp, NULL, NULL);
+ if (!result) goto failed;
+ value = ast2obj_expr(state, vstate, o->v.AsyncFor.target);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->target, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ value = ast2obj_expr(state, vstate, o->v.AsyncFor.iter);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->iter, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ value = ast2obj_list(state, vstate, (asdl_seq*)o->v.AsyncFor.body,
+ ast2obj_stmt);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->body, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ value = ast2obj_list(state, vstate, (asdl_seq*)o->v.AsyncFor.orelse,
+ ast2obj_stmt);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->orelse, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ value = ast2obj_string(state, vstate, o->v.AsyncFor.type_comment);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->type_comment, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ break;
+ case While_kind:
+ tp = (PyTypeObject *)state->While_type;
+ result = PyType_GenericNew(tp, NULL, NULL);
+ if (!result) goto failed;
+ value = ast2obj_expr(state, vstate, o->v.While.test);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->test, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ value = ast2obj_list(state, vstate, (asdl_seq*)o->v.While.body,
+ ast2obj_stmt);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->body, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ value = ast2obj_list(state, vstate, (asdl_seq*)o->v.While.orelse,
+ ast2obj_stmt);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->orelse, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ break;
+ case If_kind:
+ tp = (PyTypeObject *)state->If_type;
+ result = PyType_GenericNew(tp, NULL, NULL);
+ if (!result) goto failed;
+ value = ast2obj_expr(state, vstate, o->v.If.test);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->test, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ value = ast2obj_list(state, vstate, (asdl_seq*)o->v.If.body,
+ ast2obj_stmt);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->body, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ value = ast2obj_list(state, vstate, (asdl_seq*)o->v.If.orelse,
+ ast2obj_stmt);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->orelse, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ break;
+ case With_kind:
+ tp = (PyTypeObject *)state->With_type;
+ result = PyType_GenericNew(tp, NULL, NULL);
+ if (!result) goto failed;
+ value = ast2obj_list(state, vstate, (asdl_seq*)o->v.With.items,
+ ast2obj_withitem);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->items, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ value = ast2obj_list(state, vstate, (asdl_seq*)o->v.With.body,
+ ast2obj_stmt);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->body, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ value = ast2obj_string(state, vstate, o->v.With.type_comment);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->type_comment, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ break;
+ case AsyncWith_kind:
+ tp = (PyTypeObject *)state->AsyncWith_type;
+ result = PyType_GenericNew(tp, NULL, NULL);
+ if (!result) goto failed;
+ value = ast2obj_list(state, vstate, (asdl_seq*)o->v.AsyncWith.items,
+ ast2obj_withitem);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->items, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ value = ast2obj_list(state, vstate, (asdl_seq*)o->v.AsyncWith.body,
+ ast2obj_stmt);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->body, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ value = ast2obj_string(state, vstate, o->v.AsyncWith.type_comment);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->type_comment, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ break;
+ case Match_kind:
+ tp = (PyTypeObject *)state->Match_type;
+ result = PyType_GenericNew(tp, NULL, NULL);
+ if (!result) goto failed;
+ value = ast2obj_expr(state, vstate, o->v.Match.subject);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->subject, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ value = ast2obj_list(state, vstate, (asdl_seq*)o->v.Match.cases,
+ ast2obj_match_case);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->cases, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ break;
+ case Raise_kind:
+ tp = (PyTypeObject *)state->Raise_type;
+ result = PyType_GenericNew(tp, NULL, NULL);
+ if (!result) goto failed;
+ value = ast2obj_expr(state, vstate, o->v.Raise.exc);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->exc, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ value = ast2obj_expr(state, vstate, o->v.Raise.cause);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->cause, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ break;
+ case Try_kind:
+ tp = (PyTypeObject *)state->Try_type;
+ result = PyType_GenericNew(tp, NULL, NULL);
+ if (!result) goto failed;
+ value = ast2obj_list(state, vstate, (asdl_seq*)o->v.Try.body,
+ ast2obj_stmt);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->body, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ value = ast2obj_list(state, vstate, (asdl_seq*)o->v.Try.handlers,
+ ast2obj_excepthandler);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->handlers, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ value = ast2obj_list(state, vstate, (asdl_seq*)o->v.Try.orelse,
+ ast2obj_stmt);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->orelse, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ value = ast2obj_list(state, vstate, (asdl_seq*)o->v.Try.finalbody,
+ ast2obj_stmt);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->finalbody, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ break;
+ case TryStar_kind:
+ tp = (PyTypeObject *)state->TryStar_type;
+ result = PyType_GenericNew(tp, NULL, NULL);
+ if (!result) goto failed;
+ value = ast2obj_list(state, vstate, (asdl_seq*)o->v.TryStar.body,
+ ast2obj_stmt);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->body, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ value = ast2obj_list(state, vstate, (asdl_seq*)o->v.TryStar.handlers,
+ ast2obj_excepthandler);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->handlers, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ value = ast2obj_list(state, vstate, (asdl_seq*)o->v.TryStar.orelse,
+ ast2obj_stmt);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->orelse, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ value = ast2obj_list(state, vstate, (asdl_seq*)o->v.TryStar.finalbody,
+ ast2obj_stmt);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->finalbody, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ break;
+ case Assert_kind:
+ tp = (PyTypeObject *)state->Assert_type;
+ result = PyType_GenericNew(tp, NULL, NULL);
+ if (!result) goto failed;
+ value = ast2obj_expr(state, vstate, o->v.Assert.test);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->test, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ value = ast2obj_expr(state, vstate, o->v.Assert.msg);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->msg, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ break;
+ case Import_kind:
+ tp = (PyTypeObject *)state->Import_type;
+ result = PyType_GenericNew(tp, NULL, NULL);
+ if (!result) goto failed;
+ value = ast2obj_list(state, vstate, (asdl_seq*)o->v.Import.names,
+ ast2obj_alias);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->names, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ break;
+ case ImportFrom_kind:
+ tp = (PyTypeObject *)state->ImportFrom_type;
+ result = PyType_GenericNew(tp, NULL, NULL);
+ if (!result) goto failed;
+ value = ast2obj_identifier(state, vstate, o->v.ImportFrom.module);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->module, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ value = ast2obj_list(state, vstate, (asdl_seq*)o->v.ImportFrom.names,
+ ast2obj_alias);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->names, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ value = ast2obj_int(state, vstate, o->v.ImportFrom.level);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->level, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ break;
+ case Global_kind:
+ tp = (PyTypeObject *)state->Global_type;
+ result = PyType_GenericNew(tp, NULL, NULL);
+ if (!result) goto failed;
+ value = ast2obj_list(state, vstate, (asdl_seq*)o->v.Global.names,
+ ast2obj_identifier);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->names, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ break;
+ case Nonlocal_kind:
+ tp = (PyTypeObject *)state->Nonlocal_type;
+ result = PyType_GenericNew(tp, NULL, NULL);
+ if (!result) goto failed;
+ value = ast2obj_list(state, vstate, (asdl_seq*)o->v.Nonlocal.names,
+ ast2obj_identifier);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->names, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ break;
+ case Expr_kind:
+ tp = (PyTypeObject *)state->Expr_type;
+ result = PyType_GenericNew(tp, NULL, NULL);
+ if (!result) goto failed;
+ value = ast2obj_expr(state, vstate, o->v.Expr.value);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->value, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ break;
+ case Pass_kind:
+ tp = (PyTypeObject *)state->Pass_type;
+ result = PyType_GenericNew(tp, NULL, NULL);
+ if (!result) goto failed;
+ break;
+ case Break_kind:
+ tp = (PyTypeObject *)state->Break_type;
+ result = PyType_GenericNew(tp, NULL, NULL);
+ if (!result) goto failed;
+ break;
+ case Continue_kind:
+ tp = (PyTypeObject *)state->Continue_type;
+ result = PyType_GenericNew(tp, NULL, NULL);
+ if (!result) goto failed;
+ break;
+ }
+ value = ast2obj_int(state, vstate, o->lineno);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->lineno, value) < 0)
+ goto failed;
+ Py_DECREF(value);
+ value = ast2obj_int(state, vstate, o->col_offset);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->col_offset, value) < 0)
+ goto failed;
+ Py_DECREF(value);
+ value = ast2obj_int(state, vstate, o->end_lineno);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->end_lineno, value) < 0)
+ goto failed;
+ Py_DECREF(value);
+ value = ast2obj_int(state, vstate, o->end_col_offset);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->end_col_offset, value) < 0)
+ goto failed;
+ Py_DECREF(value);
+ vstate->recursion_depth--;
+ return result;
+failed:
+ vstate->recursion_depth--;
+ Py_XDECREF(value);
+ Py_XDECREF(result);
+ return NULL;
+}
+
+PyObject*
+ast2obj_expr(struct ast_state *state, struct validator *vstate, void* _o)
+{
+ expr_ty o = (expr_ty)_o;
+ PyObject *result = NULL, *value = NULL;
+ PyTypeObject *tp;
+ if (!o) {
+ Py_RETURN_NONE;
+ }
+ if (++vstate->recursion_depth > vstate->recursion_limit) {
+ PyErr_SetString(PyExc_RecursionError,
+ "maximum recursion depth exceeded during ast construction");
+ return 0;
+ }
+ switch (o->kind) {
+ case BoolOp_kind:
+ tp = (PyTypeObject *)state->BoolOp_type;
+ result = PyType_GenericNew(tp, NULL, NULL);
+ if (!result) goto failed;
+ value = ast2obj_boolop(state, vstate, o->v.BoolOp.op);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->op, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ value = ast2obj_list(state, vstate, (asdl_seq*)o->v.BoolOp.values,
+ ast2obj_expr);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->values, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ break;
+ case NamedExpr_kind:
+ tp = (PyTypeObject *)state->NamedExpr_type;
+ result = PyType_GenericNew(tp, NULL, NULL);
+ if (!result) goto failed;
+ value = ast2obj_expr(state, vstate, o->v.NamedExpr.target);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->target, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ value = ast2obj_expr(state, vstate, o->v.NamedExpr.value);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->value, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ break;
+ case BinOp_kind:
+ tp = (PyTypeObject *)state->BinOp_type;
+ result = PyType_GenericNew(tp, NULL, NULL);
+ if (!result) goto failed;
+ value = ast2obj_expr(state, vstate, o->v.BinOp.left);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->left, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ value = ast2obj_operator(state, vstate, o->v.BinOp.op);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->op, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ value = ast2obj_expr(state, vstate, o->v.BinOp.right);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->right, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ break;
+ case UnaryOp_kind:
+ tp = (PyTypeObject *)state->UnaryOp_type;
+ result = PyType_GenericNew(tp, NULL, NULL);
+ if (!result) goto failed;
+ value = ast2obj_unaryop(state, vstate, o->v.UnaryOp.op);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->op, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ value = ast2obj_expr(state, vstate, o->v.UnaryOp.operand);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->operand, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ break;
+ case Lambda_kind:
+ tp = (PyTypeObject *)state->Lambda_type;
+ result = PyType_GenericNew(tp, NULL, NULL);
+ if (!result) goto failed;
+ value = ast2obj_arguments(state, vstate, o->v.Lambda.args);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->args, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ value = ast2obj_expr(state, vstate, o->v.Lambda.body);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->body, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ break;
+ case IfExp_kind:
+ tp = (PyTypeObject *)state->IfExp_type;
+ result = PyType_GenericNew(tp, NULL, NULL);
+ if (!result) goto failed;
+ value = ast2obj_expr(state, vstate, o->v.IfExp.test);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->test, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ value = ast2obj_expr(state, vstate, o->v.IfExp.body);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->body, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ value = ast2obj_expr(state, vstate, o->v.IfExp.orelse);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->orelse, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ break;
+ case Dict_kind:
+ tp = (PyTypeObject *)state->Dict_type;
+ result = PyType_GenericNew(tp, NULL, NULL);
+ if (!result) goto failed;
+ value = ast2obj_list(state, vstate, (asdl_seq*)o->v.Dict.keys,
+ ast2obj_expr);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->keys, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ value = ast2obj_list(state, vstate, (asdl_seq*)o->v.Dict.values,
+ ast2obj_expr);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->values, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ break;
+ case Set_kind:
+ tp = (PyTypeObject *)state->Set_type;
+ result = PyType_GenericNew(tp, NULL, NULL);
+ if (!result) goto failed;
+ value = ast2obj_list(state, vstate, (asdl_seq*)o->v.Set.elts,
+ ast2obj_expr);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->elts, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ break;
+ case ListComp_kind:
+ tp = (PyTypeObject *)state->ListComp_type;
+ result = PyType_GenericNew(tp, NULL, NULL);
+ if (!result) goto failed;
+ value = ast2obj_expr(state, vstate, o->v.ListComp.elt);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->elt, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ value = ast2obj_list(state, vstate,
+ (asdl_seq*)o->v.ListComp.generators,
+ ast2obj_comprehension);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->generators, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ break;
+ case SetComp_kind:
+ tp = (PyTypeObject *)state->SetComp_type;
+ result = PyType_GenericNew(tp, NULL, NULL);
+ if (!result) goto failed;
+ value = ast2obj_expr(state, vstate, o->v.SetComp.elt);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->elt, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ value = ast2obj_list(state, vstate, (asdl_seq*)o->v.SetComp.generators,
+ ast2obj_comprehension);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->generators, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ break;
+ case DictComp_kind:
+ tp = (PyTypeObject *)state->DictComp_type;
+ result = PyType_GenericNew(tp, NULL, NULL);
+ if (!result) goto failed;
+ value = ast2obj_expr(state, vstate, o->v.DictComp.key);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->key, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ value = ast2obj_expr(state, vstate, o->v.DictComp.value);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->value, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ value = ast2obj_list(state, vstate,
+ (asdl_seq*)o->v.DictComp.generators,
+ ast2obj_comprehension);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->generators, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ break;
+ case GeneratorExp_kind:
+ tp = (PyTypeObject *)state->GeneratorExp_type;
+ result = PyType_GenericNew(tp, NULL, NULL);
+ if (!result) goto failed;
+ value = ast2obj_expr(state, vstate, o->v.GeneratorExp.elt);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->elt, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ value = ast2obj_list(state, vstate,
+ (asdl_seq*)o->v.GeneratorExp.generators,
+ ast2obj_comprehension);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->generators, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ break;
+ case Await_kind:
+ tp = (PyTypeObject *)state->Await_type;
+ result = PyType_GenericNew(tp, NULL, NULL);
+ if (!result) goto failed;
+ value = ast2obj_expr(state, vstate, o->v.Await.value);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->value, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ break;
+ case Yield_kind:
+ tp = (PyTypeObject *)state->Yield_type;
+ result = PyType_GenericNew(tp, NULL, NULL);
+ if (!result) goto failed;
+ value = ast2obj_expr(state, vstate, o->v.Yield.value);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->value, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ break;
+ case YieldFrom_kind:
+ tp = (PyTypeObject *)state->YieldFrom_type;
+ result = PyType_GenericNew(tp, NULL, NULL);
+ if (!result) goto failed;
+ value = ast2obj_expr(state, vstate, o->v.YieldFrom.value);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->value, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ break;
+ case Compare_kind:
+ tp = (PyTypeObject *)state->Compare_type;
+ result = PyType_GenericNew(tp, NULL, NULL);
+ if (!result) goto failed;
+ value = ast2obj_expr(state, vstate, o->v.Compare.left);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->left, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ {
+ Py_ssize_t i, n = asdl_seq_LEN(o->v.Compare.ops);
+ value = PyList_New(n);
+ if (!value) goto failed;
+ for(i = 0; i < n; i++)
+ PyList_SET_ITEM(value, i, ast2obj_cmpop(state, vstate, (cmpop_ty)asdl_seq_GET(o->v.Compare.ops, i)));
+ }
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->ops, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ value = ast2obj_list(state, vstate,
+ (asdl_seq*)o->v.Compare.comparators, ast2obj_expr);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->comparators, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ break;
+ case Call_kind:
+ tp = (PyTypeObject *)state->Call_type;
+ result = PyType_GenericNew(tp, NULL, NULL);
+ if (!result) goto failed;
+ value = ast2obj_expr(state, vstate, o->v.Call.func);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->func, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ value = ast2obj_list(state, vstate, (asdl_seq*)o->v.Call.args,
+ ast2obj_expr);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->args, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ value = ast2obj_list(state, vstate, (asdl_seq*)o->v.Call.keywords,
+ ast2obj_keyword);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->keywords, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ break;
+ case FormattedValue_kind:
+ tp = (PyTypeObject *)state->FormattedValue_type;
+ result = PyType_GenericNew(tp, NULL, NULL);
+ if (!result) goto failed;
+ value = ast2obj_expr(state, vstate, o->v.FormattedValue.value);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->value, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ value = ast2obj_int(state, vstate, o->v.FormattedValue.conversion);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->conversion, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ value = ast2obj_expr(state, vstate, o->v.FormattedValue.format_spec);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->format_spec, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ break;
+ case JoinedStr_kind:
+ tp = (PyTypeObject *)state->JoinedStr_type;
+ result = PyType_GenericNew(tp, NULL, NULL);
+ if (!result) goto failed;
+ value = ast2obj_list(state, vstate, (asdl_seq*)o->v.JoinedStr.values,
+ ast2obj_expr);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->values, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ break;
+ case Constant_kind:
+ tp = (PyTypeObject *)state->Constant_type;
+ result = PyType_GenericNew(tp, NULL, NULL);
+ if (!result) goto failed;
+ value = ast2obj_constant(state, vstate, o->v.Constant.value);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->value, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ value = ast2obj_string(state, vstate, o->v.Constant.kind);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->kind, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ break;
+ case Attribute_kind:
+ tp = (PyTypeObject *)state->Attribute_type;
+ result = PyType_GenericNew(tp, NULL, NULL);
+ if (!result) goto failed;
+ value = ast2obj_expr(state, vstate, o->v.Attribute.value);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->value, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ value = ast2obj_identifier(state, vstate, o->v.Attribute.attr);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->attr, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ value = ast2obj_expr_context(state, vstate, o->v.Attribute.ctx);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->ctx, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ break;
+ case Subscript_kind:
+ tp = (PyTypeObject *)state->Subscript_type;
+ result = PyType_GenericNew(tp, NULL, NULL);
+ if (!result) goto failed;
+ value = ast2obj_expr(state, vstate, o->v.Subscript.value);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->value, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ value = ast2obj_expr(state, vstate, o->v.Subscript.slice);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->slice, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ value = ast2obj_expr_context(state, vstate, o->v.Subscript.ctx);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->ctx, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ break;
+ case Starred_kind:
+ tp = (PyTypeObject *)state->Starred_type;
+ result = PyType_GenericNew(tp, NULL, NULL);
+ if (!result) goto failed;
+ value = ast2obj_expr(state, vstate, o->v.Starred.value);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->value, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ value = ast2obj_expr_context(state, vstate, o->v.Starred.ctx);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->ctx, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ break;
+ case Name_kind:
+ tp = (PyTypeObject *)state->Name_type;
+ result = PyType_GenericNew(tp, NULL, NULL);
+ if (!result) goto failed;
+ value = ast2obj_identifier(state, vstate, o->v.Name.id);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->id, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ value = ast2obj_expr_context(state, vstate, o->v.Name.ctx);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->ctx, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ break;
+ case List_kind:
+ tp = (PyTypeObject *)state->List_type;
+ result = PyType_GenericNew(tp, NULL, NULL);
+ if (!result) goto failed;
+ value = ast2obj_list(state, vstate, (asdl_seq*)o->v.List.elts,
+ ast2obj_expr);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->elts, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ value = ast2obj_expr_context(state, vstate, o->v.List.ctx);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->ctx, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ break;
+ case Tuple_kind:
+ tp = (PyTypeObject *)state->Tuple_type;
+ result = PyType_GenericNew(tp, NULL, NULL);
+ if (!result) goto failed;
+ value = ast2obj_list(state, vstate, (asdl_seq*)o->v.Tuple.elts,
+ ast2obj_expr);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->elts, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ value = ast2obj_expr_context(state, vstate, o->v.Tuple.ctx);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->ctx, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ break;
+ case Slice_kind:
+ tp = (PyTypeObject *)state->Slice_type;
+ result = PyType_GenericNew(tp, NULL, NULL);
+ if (!result) goto failed;
+ value = ast2obj_expr(state, vstate, o->v.Slice.lower);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->lower, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ value = ast2obj_expr(state, vstate, o->v.Slice.upper);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->upper, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ value = ast2obj_expr(state, vstate, o->v.Slice.step);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->step, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ break;
+ }
+ value = ast2obj_int(state, vstate, o->lineno);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->lineno, value) < 0)
+ goto failed;
+ Py_DECREF(value);
+ value = ast2obj_int(state, vstate, o->col_offset);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->col_offset, value) < 0)
+ goto failed;
+ Py_DECREF(value);
+ value = ast2obj_int(state, vstate, o->end_lineno);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->end_lineno, value) < 0)
+ goto failed;
+ Py_DECREF(value);
+ value = ast2obj_int(state, vstate, o->end_col_offset);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->end_col_offset, value) < 0)
+ goto failed;
+ Py_DECREF(value);
+ vstate->recursion_depth--;
+ return result;
+failed:
+ vstate->recursion_depth--;
+ Py_XDECREF(value);
+ Py_XDECREF(result);
+ return NULL;
+}
+
+PyObject* ast2obj_expr_context(struct ast_state *state, struct validator
+ *vstate, expr_context_ty o)
+{
+ switch(o) {
+ case Load:
+ return Py_NewRef(state->Load_singleton);
+ case Store:
+ return Py_NewRef(state->Store_singleton);
+ case Del:
+ return Py_NewRef(state->Del_singleton);
+ }
+ Py_UNREACHABLE();
+}
+PyObject* ast2obj_boolop(struct ast_state *state, struct validator *vstate,
+ boolop_ty o)
+{
+ switch(o) {
+ case And:
+ return Py_NewRef(state->And_singleton);
+ case Or:
+ return Py_NewRef(state->Or_singleton);
+ }
+ Py_UNREACHABLE();
+}
+PyObject* ast2obj_operator(struct ast_state *state, struct validator *vstate,
+ operator_ty o)
+{
+ switch(o) {
+ case Add:
+ return Py_NewRef(state->Add_singleton);
+ case Sub:
+ return Py_NewRef(state->Sub_singleton);
+ case Mult:
+ return Py_NewRef(state->Mult_singleton);
+ case MatMult:
+ return Py_NewRef(state->MatMult_singleton);
+ case Div:
+ return Py_NewRef(state->Div_singleton);
+ case Mod:
+ return Py_NewRef(state->Mod_singleton);
+ case Pow:
+ return Py_NewRef(state->Pow_singleton);
+ case LShift:
+ return Py_NewRef(state->LShift_singleton);
+ case RShift:
+ return Py_NewRef(state->RShift_singleton);
+ case BitOr:
+ return Py_NewRef(state->BitOr_singleton);
+ case BitXor:
+ return Py_NewRef(state->BitXor_singleton);
+ case BitAnd:
+ return Py_NewRef(state->BitAnd_singleton);
+ case FloorDiv:
+ return Py_NewRef(state->FloorDiv_singleton);
+ }
+ Py_UNREACHABLE();
+}
+PyObject* ast2obj_unaryop(struct ast_state *state, struct validator *vstate,
+ unaryop_ty o)
+{
+ switch(o) {
+ case Invert:
+ return Py_NewRef(state->Invert_singleton);
+ case Not:
+ return Py_NewRef(state->Not_singleton);
+ case UAdd:
+ return Py_NewRef(state->UAdd_singleton);
+ case USub:
+ return Py_NewRef(state->USub_singleton);
+ }
+ Py_UNREACHABLE();
+}
+PyObject* ast2obj_cmpop(struct ast_state *state, struct validator *vstate,
+ cmpop_ty o)
+{
+ switch(o) {
+ case Eq:
+ return Py_NewRef(state->Eq_singleton);
+ case NotEq:
+ return Py_NewRef(state->NotEq_singleton);
+ case Lt:
+ return Py_NewRef(state->Lt_singleton);
+ case LtE:
+ return Py_NewRef(state->LtE_singleton);
+ case Gt:
+ return Py_NewRef(state->Gt_singleton);
+ case GtE:
+ return Py_NewRef(state->GtE_singleton);
+ case Is:
+ return Py_NewRef(state->Is_singleton);
+ case IsNot:
+ return Py_NewRef(state->IsNot_singleton);
+ case In:
+ return Py_NewRef(state->In_singleton);
+ case NotIn:
+ return Py_NewRef(state->NotIn_singleton);
+ }
+ Py_UNREACHABLE();
+}
+PyObject*
+ast2obj_comprehension(struct ast_state *state, struct validator *vstate, void*
+ _o)
+{
+ comprehension_ty o = (comprehension_ty)_o;
+ PyObject *result = NULL, *value = NULL;
+ PyTypeObject *tp;
+ if (!o) {
+ Py_RETURN_NONE;
+ }
+ if (++vstate->recursion_depth > vstate->recursion_limit) {
+ PyErr_SetString(PyExc_RecursionError,
+ "maximum recursion depth exceeded during ast construction");
+ return 0;
+ }
+ tp = (PyTypeObject *)state->comprehension_type;
+ result = PyType_GenericNew(tp, NULL, NULL);
+ if (!result) return NULL;
+ value = ast2obj_expr(state, vstate, o->target);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->target, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ value = ast2obj_expr(state, vstate, o->iter);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->iter, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ value = ast2obj_list(state, vstate, (asdl_seq*)o->ifs, ast2obj_expr);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->ifs, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ value = ast2obj_int(state, vstate, o->is_async);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->is_async, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ vstate->recursion_depth--;
+ return result;
+failed:
+ vstate->recursion_depth--;
+ Py_XDECREF(value);
+ Py_XDECREF(result);
+ return NULL;
+}
+
+PyObject*
+ast2obj_excepthandler(struct ast_state *state, struct validator *vstate, void*
+ _o)
+{
+ excepthandler_ty o = (excepthandler_ty)_o;
+ PyObject *result = NULL, *value = NULL;
+ PyTypeObject *tp;
+ if (!o) {
+ Py_RETURN_NONE;
+ }
+ if (++vstate->recursion_depth > vstate->recursion_limit) {
+ PyErr_SetString(PyExc_RecursionError,
+ "maximum recursion depth exceeded during ast construction");
+ return 0;
+ }
+ switch (o->kind) {
+ case ExceptHandler_kind:
+ tp = (PyTypeObject *)state->ExceptHandler_type;
+ result = PyType_GenericNew(tp, NULL, NULL);
+ if (!result) goto failed;
+ value = ast2obj_expr(state, vstate, o->v.ExceptHandler.type);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->type, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ value = ast2obj_identifier(state, vstate, o->v.ExceptHandler.name);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->name, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ value = ast2obj_list(state, vstate, (asdl_seq*)o->v.ExceptHandler.body,
+ ast2obj_stmt);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->body, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ break;
+ }
+ value = ast2obj_int(state, vstate, o->lineno);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->lineno, value) < 0)
+ goto failed;
+ Py_DECREF(value);
+ value = ast2obj_int(state, vstate, o->col_offset);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->col_offset, value) < 0)
+ goto failed;
+ Py_DECREF(value);
+ value = ast2obj_int(state, vstate, o->end_lineno);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->end_lineno, value) < 0)
+ goto failed;
+ Py_DECREF(value);
+ value = ast2obj_int(state, vstate, o->end_col_offset);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->end_col_offset, value) < 0)
+ goto failed;
+ Py_DECREF(value);
+ vstate->recursion_depth--;
+ return result;
+failed:
+ vstate->recursion_depth--;
+ Py_XDECREF(value);
+ Py_XDECREF(result);
+ return NULL;
+}
+
+PyObject*
+ast2obj_arguments(struct ast_state *state, struct validator *vstate, void* _o)
+{
+ arguments_ty o = (arguments_ty)_o;
+ PyObject *result = NULL, *value = NULL;
+ PyTypeObject *tp;
+ if (!o) {
+ Py_RETURN_NONE;
+ }
+ if (++vstate->recursion_depth > vstate->recursion_limit) {
+ PyErr_SetString(PyExc_RecursionError,
+ "maximum recursion depth exceeded during ast construction");
+ return 0;
+ }
+ tp = (PyTypeObject *)state->arguments_type;
+ result = PyType_GenericNew(tp, NULL, NULL);
+ if (!result) return NULL;
+ value = ast2obj_list(state, vstate, (asdl_seq*)o->posonlyargs, ast2obj_arg);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->posonlyargs, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ value = ast2obj_list(state, vstate, (asdl_seq*)o->args, ast2obj_arg);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->args, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ value = ast2obj_arg(state, vstate, o->vararg);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->vararg, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ value = ast2obj_list(state, vstate, (asdl_seq*)o->kwonlyargs, ast2obj_arg);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->kwonlyargs, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ value = ast2obj_list(state, vstate, (asdl_seq*)o->kw_defaults,
+ ast2obj_expr);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->kw_defaults, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ value = ast2obj_arg(state, vstate, o->kwarg);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->kwarg, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ value = ast2obj_list(state, vstate, (asdl_seq*)o->defaults, ast2obj_expr);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->defaults, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ vstate->recursion_depth--;
+ return result;
+failed:
+ vstate->recursion_depth--;
+ Py_XDECREF(value);
+ Py_XDECREF(result);
+ return NULL;
+}
+
+PyObject*
+ast2obj_arg(struct ast_state *state, struct validator *vstate, void* _o)
+{
+ arg_ty o = (arg_ty)_o;
+ PyObject *result = NULL, *value = NULL;
+ PyTypeObject *tp;
+ if (!o) {
+ Py_RETURN_NONE;
+ }
+ if (++vstate->recursion_depth > vstate->recursion_limit) {
+ PyErr_SetString(PyExc_RecursionError,
+ "maximum recursion depth exceeded during ast construction");
+ return 0;
+ }
+ tp = (PyTypeObject *)state->arg_type;
+ result = PyType_GenericNew(tp, NULL, NULL);
+ if (!result) return NULL;
+ value = ast2obj_identifier(state, vstate, o->arg);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->arg, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ value = ast2obj_expr(state, vstate, o->annotation);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->annotation, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ value = ast2obj_string(state, vstate, o->type_comment);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->type_comment, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ value = ast2obj_int(state, vstate, o->lineno);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->lineno, value) < 0)
+ goto failed;
+ Py_DECREF(value);
+ value = ast2obj_int(state, vstate, o->col_offset);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->col_offset, value) < 0)
+ goto failed;
+ Py_DECREF(value);
+ value = ast2obj_int(state, vstate, o->end_lineno);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->end_lineno, value) < 0)
+ goto failed;
+ Py_DECREF(value);
+ value = ast2obj_int(state, vstate, o->end_col_offset);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->end_col_offset, value) < 0)
+ goto failed;
+ Py_DECREF(value);
+ vstate->recursion_depth--;
+ return result;
+failed:
+ vstate->recursion_depth--;
+ Py_XDECREF(value);
+ Py_XDECREF(result);
+ return NULL;
+}
+
+PyObject*
+ast2obj_keyword(struct ast_state *state, struct validator *vstate, void* _o)
+{
+ keyword_ty o = (keyword_ty)_o;
+ PyObject *result = NULL, *value = NULL;
+ PyTypeObject *tp;
+ if (!o) {
+ Py_RETURN_NONE;
+ }
+ if (++vstate->recursion_depth > vstate->recursion_limit) {
+ PyErr_SetString(PyExc_RecursionError,
+ "maximum recursion depth exceeded during ast construction");
+ return 0;
+ }
+ tp = (PyTypeObject *)state->keyword_type;
+ result = PyType_GenericNew(tp, NULL, NULL);
+ if (!result) return NULL;
+ value = ast2obj_identifier(state, vstate, o->arg);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->arg, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ value = ast2obj_expr(state, vstate, o->value);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->value, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ value = ast2obj_int(state, vstate, o->lineno);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->lineno, value) < 0)
+ goto failed;
+ Py_DECREF(value);
+ value = ast2obj_int(state, vstate, o->col_offset);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->col_offset, value) < 0)
+ goto failed;
+ Py_DECREF(value);
+ value = ast2obj_int(state, vstate, o->end_lineno);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->end_lineno, value) < 0)
+ goto failed;
+ Py_DECREF(value);
+ value = ast2obj_int(state, vstate, o->end_col_offset);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->end_col_offset, value) < 0)
+ goto failed;
+ Py_DECREF(value);
+ vstate->recursion_depth--;
+ return result;
+failed:
+ vstate->recursion_depth--;
+ Py_XDECREF(value);
+ Py_XDECREF(result);
+ return NULL;
+}
+
+PyObject*
+ast2obj_alias(struct ast_state *state, struct validator *vstate, void* _o)
+{
+ alias_ty o = (alias_ty)_o;
+ PyObject *result = NULL, *value = NULL;
+ PyTypeObject *tp;
+ if (!o) {
+ Py_RETURN_NONE;
+ }
+ if (++vstate->recursion_depth > vstate->recursion_limit) {
+ PyErr_SetString(PyExc_RecursionError,
+ "maximum recursion depth exceeded during ast construction");
+ return 0;
+ }
+ tp = (PyTypeObject *)state->alias_type;
+ result = PyType_GenericNew(tp, NULL, NULL);
+ if (!result) return NULL;
+ value = ast2obj_identifier(state, vstate, o->name);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->name, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ value = ast2obj_identifier(state, vstate, o->asname);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->asname, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ value = ast2obj_int(state, vstate, o->lineno);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->lineno, value) < 0)
+ goto failed;
+ Py_DECREF(value);
+ value = ast2obj_int(state, vstate, o->col_offset);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->col_offset, value) < 0)
+ goto failed;
+ Py_DECREF(value);
+ value = ast2obj_int(state, vstate, o->end_lineno);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->end_lineno, value) < 0)
+ goto failed;
+ Py_DECREF(value);
+ value = ast2obj_int(state, vstate, o->end_col_offset);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->end_col_offset, value) < 0)
+ goto failed;
+ Py_DECREF(value);
+ vstate->recursion_depth--;
+ return result;
+failed:
+ vstate->recursion_depth--;
+ Py_XDECREF(value);
+ Py_XDECREF(result);
+ return NULL;
+}
+
+PyObject*
+ast2obj_withitem(struct ast_state *state, struct validator *vstate, void* _o)
+{
+ withitem_ty o = (withitem_ty)_o;
+ PyObject *result = NULL, *value = NULL;
+ PyTypeObject *tp;
+ if (!o) {
+ Py_RETURN_NONE;
+ }
+ if (++vstate->recursion_depth > vstate->recursion_limit) {
+ PyErr_SetString(PyExc_RecursionError,
+ "maximum recursion depth exceeded during ast construction");
+ return 0;
+ }
+ tp = (PyTypeObject *)state->withitem_type;
+ result = PyType_GenericNew(tp, NULL, NULL);
+ if (!result) return NULL;
+ value = ast2obj_expr(state, vstate, o->context_expr);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->context_expr, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ value = ast2obj_expr(state, vstate, o->optional_vars);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->optional_vars, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ vstate->recursion_depth--;
+ return result;
+failed:
+ vstate->recursion_depth--;
+ Py_XDECREF(value);
+ Py_XDECREF(result);
+ return NULL;
+}
+
+PyObject*
+ast2obj_match_case(struct ast_state *state, struct validator *vstate, void* _o)
+{
+ match_case_ty o = (match_case_ty)_o;
+ PyObject *result = NULL, *value = NULL;
+ PyTypeObject *tp;
+ if (!o) {
+ Py_RETURN_NONE;
+ }
+ if (++vstate->recursion_depth > vstate->recursion_limit) {
+ PyErr_SetString(PyExc_RecursionError,
+ "maximum recursion depth exceeded during ast construction");
+ return 0;
+ }
+ tp = (PyTypeObject *)state->match_case_type;
+ result = PyType_GenericNew(tp, NULL, NULL);
+ if (!result) return NULL;
+ value = ast2obj_pattern(state, vstate, o->pattern);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->pattern, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ value = ast2obj_expr(state, vstate, o->guard);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->guard, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ value = ast2obj_list(state, vstate, (asdl_seq*)o->body, ast2obj_stmt);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->body, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ vstate->recursion_depth--;
+ return result;
+failed:
+ vstate->recursion_depth--;
+ Py_XDECREF(value);
+ Py_XDECREF(result);
+ return NULL;
+}
+
+PyObject*
+ast2obj_pattern(struct ast_state *state, struct validator *vstate, void* _o)
+{
+ pattern_ty o = (pattern_ty)_o;
+ PyObject *result = NULL, *value = NULL;
+ PyTypeObject *tp;
+ if (!o) {
+ Py_RETURN_NONE;
+ }
+ if (++vstate->recursion_depth > vstate->recursion_limit) {
+ PyErr_SetString(PyExc_RecursionError,
+ "maximum recursion depth exceeded during ast construction");
+ return 0;
+ }
+ switch (o->kind) {
+ case MatchValue_kind:
+ tp = (PyTypeObject *)state->MatchValue_type;
+ result = PyType_GenericNew(tp, NULL, NULL);
+ if (!result) goto failed;
+ value = ast2obj_expr(state, vstate, o->v.MatchValue.value);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->value, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ break;
+ case MatchSingleton_kind:
+ tp = (PyTypeObject *)state->MatchSingleton_type;
+ result = PyType_GenericNew(tp, NULL, NULL);
+ if (!result) goto failed;
+ value = ast2obj_constant(state, vstate, o->v.MatchSingleton.value);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->value, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ break;
+ case MatchSequence_kind:
+ tp = (PyTypeObject *)state->MatchSequence_type;
+ result = PyType_GenericNew(tp, NULL, NULL);
+ if (!result) goto failed;
+ value = ast2obj_list(state, vstate,
+ (asdl_seq*)o->v.MatchSequence.patterns,
+ ast2obj_pattern);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->patterns, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ break;
+ case MatchMapping_kind:
+ tp = (PyTypeObject *)state->MatchMapping_type;
+ result = PyType_GenericNew(tp, NULL, NULL);
+ if (!result) goto failed;
+ value = ast2obj_list(state, vstate, (asdl_seq*)o->v.MatchMapping.keys,
+ ast2obj_expr);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->keys, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ value = ast2obj_list(state, vstate,
+ (asdl_seq*)o->v.MatchMapping.patterns,
+ ast2obj_pattern);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->patterns, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ value = ast2obj_identifier(state, vstate, o->v.MatchMapping.rest);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->rest, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ break;
+ case MatchClass_kind:
+ tp = (PyTypeObject *)state->MatchClass_type;
+ result = PyType_GenericNew(tp, NULL, NULL);
+ if (!result) goto failed;
+ value = ast2obj_expr(state, vstate, o->v.MatchClass.cls);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->cls, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ value = ast2obj_list(state, vstate,
+ (asdl_seq*)o->v.MatchClass.patterns,
+ ast2obj_pattern);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->patterns, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ value = ast2obj_list(state, vstate,
+ (asdl_seq*)o->v.MatchClass.kwd_attrs,
+ ast2obj_identifier);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->kwd_attrs, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ value = ast2obj_list(state, vstate,
+ (asdl_seq*)o->v.MatchClass.kwd_patterns,
+ ast2obj_pattern);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->kwd_patterns, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ break;
+ case MatchStar_kind:
+ tp = (PyTypeObject *)state->MatchStar_type;
+ result = PyType_GenericNew(tp, NULL, NULL);
+ if (!result) goto failed;
+ value = ast2obj_identifier(state, vstate, o->v.MatchStar.name);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->name, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ break;
+ case MatchAs_kind:
+ tp = (PyTypeObject *)state->MatchAs_type;
+ result = PyType_GenericNew(tp, NULL, NULL);
+ if (!result) goto failed;
+ value = ast2obj_pattern(state, vstate, o->v.MatchAs.pattern);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->pattern, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ value = ast2obj_identifier(state, vstate, o->v.MatchAs.name);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->name, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ break;
+ case MatchOr_kind:
+ tp = (PyTypeObject *)state->MatchOr_type;
+ result = PyType_GenericNew(tp, NULL, NULL);
+ if (!result) goto failed;
+ value = ast2obj_list(state, vstate, (asdl_seq*)o->v.MatchOr.patterns,
+ ast2obj_pattern);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->patterns, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ break;
+ }
+ value = ast2obj_int(state, vstate, o->lineno);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->lineno, value) < 0)
+ goto failed;
+ Py_DECREF(value);
+ value = ast2obj_int(state, vstate, o->col_offset);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->col_offset, value) < 0)
+ goto failed;
+ Py_DECREF(value);
+ value = ast2obj_int(state, vstate, o->end_lineno);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->end_lineno, value) < 0)
+ goto failed;
+ Py_DECREF(value);
+ value = ast2obj_int(state, vstate, o->end_col_offset);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->end_col_offset, value) < 0)
+ goto failed;
+ Py_DECREF(value);
+ vstate->recursion_depth--;
+ return result;
+failed:
+ vstate->recursion_depth--;
+ Py_XDECREF(value);
+ Py_XDECREF(result);
+ return NULL;
+}
+
+PyObject*
+ast2obj_type_ignore(struct ast_state *state, struct validator *vstate, void* _o)
+{
+ type_ignore_ty o = (type_ignore_ty)_o;
+ PyObject *result = NULL, *value = NULL;
+ PyTypeObject *tp;
+ if (!o) {
+ Py_RETURN_NONE;
+ }
+ if (++vstate->recursion_depth > vstate->recursion_limit) {
+ PyErr_SetString(PyExc_RecursionError,
+ "maximum recursion depth exceeded during ast construction");
+ return 0;
+ }
+ switch (o->kind) {
+ case TypeIgnore_kind:
+ tp = (PyTypeObject *)state->TypeIgnore_type;
+ result = PyType_GenericNew(tp, NULL, NULL);
+ if (!result) goto failed;
+ value = ast2obj_int(state, vstate, o->v.TypeIgnore.lineno);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->lineno, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ value = ast2obj_string(state, vstate, o->v.TypeIgnore.tag);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->tag, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ break;
+ }
+ vstate->recursion_depth--;
+ return result;
+failed:
+ vstate->recursion_depth--;
+ Py_XDECREF(value);
+ Py_XDECREF(result);
+ return NULL;
+}
+
+PyObject*
+ast2obj_type_param(struct ast_state *state, struct validator *vstate, void* _o)
+{
+ type_param_ty o = (type_param_ty)_o;
+ PyObject *result = NULL, *value = NULL;
+ PyTypeObject *tp;
+ if (!o) {
+ Py_RETURN_NONE;
+ }
+ if (++vstate->recursion_depth > vstate->recursion_limit) {
+ PyErr_SetString(PyExc_RecursionError,
+ "maximum recursion depth exceeded during ast construction");
+ return 0;
+ }
+ switch (o->kind) {
+ case TypeVar_kind:
+ tp = (PyTypeObject *)state->TypeVar_type;
+ result = PyType_GenericNew(tp, NULL, NULL);
+ if (!result) goto failed;
+ value = ast2obj_identifier(state, vstate, o->v.TypeVar.name);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->name, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ value = ast2obj_expr(state, vstate, o->v.TypeVar.bound);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->bound, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ break;
+ case ParamSpec_kind:
+ tp = (PyTypeObject *)state->ParamSpec_type;
+ result = PyType_GenericNew(tp, NULL, NULL);
+ if (!result) goto failed;
+ value = ast2obj_identifier(state, vstate, o->v.ParamSpec.name);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->name, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ break;
+ case TypeVarTuple_kind:
+ tp = (PyTypeObject *)state->TypeVarTuple_type;
+ result = PyType_GenericNew(tp, NULL, NULL);
+ if (!result) goto failed;
+ value = ast2obj_identifier(state, vstate, o->v.TypeVarTuple.name);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->name, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ break;
+ }
+ value = ast2obj_int(state, vstate, o->lineno);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->lineno, value) < 0)
+ goto failed;
+ Py_DECREF(value);
+ value = ast2obj_int(state, vstate, o->col_offset);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->col_offset, value) < 0)
+ goto failed;
+ Py_DECREF(value);
+ value = ast2obj_int(state, vstate, o->end_lineno);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->end_lineno, value) < 0)
+ goto failed;
+ Py_DECREF(value);
+ value = ast2obj_int(state, vstate, o->end_col_offset);
+ if (!value) goto failed;
+ if (PyObject_SetAttr(result, state->end_col_offset, value) < 0)
+ goto failed;
+ Py_DECREF(value);
+ vstate->recursion_depth--;
+ return result;
+failed:
+ vstate->recursion_depth--;
+ Py_XDECREF(value);
+ Py_XDECREF(result);
+ return NULL;
+}
+
+
+int
+obj2ast_mod(struct ast_state *state, PyObject* obj, mod_ty* out, PyArena* arena)
+{
+ int isinstance;
+
+ PyObject *tmp = NULL;
+ PyObject *tp;
+
+ if (obj == Py_None) {
+ *out = NULL;
+ return 0;
+ }
+ tp = state->Module_type;
+ isinstance = PyObject_IsInstance(obj, tp);
+ if (isinstance == -1) {
+ return 1;
+ }
+ if (isinstance) {
+ asdl_stmt_seq* body;
+ asdl_type_ignore_seq* type_ignores;
+
+ if (_PyObject_LookupAttr(obj, state->body, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL) {
+ tmp = PyList_New(0);
+ if (tmp == NULL) {
+ return 1;
+ }
+ }
+ {
+ int res;
+ Py_ssize_t len;
+ Py_ssize_t i;
+ if (!PyList_Check(tmp)) {
+ PyErr_Format(PyExc_TypeError, "Module field \"body\" must be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp)));
+ goto failed;
+ }
+ len = PyList_GET_SIZE(tmp);
+ body = _Py_asdl_stmt_seq_new(len, arena);
+ if (body == NULL) goto failed;
+ for (i = 0; i < len; i++) {
+ stmt_ty val;
+ PyObject *tmp2 = Py_NewRef(PyList_GET_ITEM(tmp, i));
+ if (_Py_EnterRecursiveCall(" while traversing 'Module' node")) {
+ goto failed;
+ }
+ res = obj2ast_stmt(state, tmp2, &val, arena);
+ _Py_LeaveRecursiveCall();
+ Py_DECREF(tmp2);
+ if (res != 0) goto failed;
+ if (len != PyList_GET_SIZE(tmp)) {
+ PyErr_SetString(PyExc_RuntimeError, "Module field \"body\" changed size during iteration");
+ goto failed;
+ }
+ asdl_seq_SET(body, i, val);
+ }
+ Py_CLEAR(tmp);
+ }
+ if (_PyObject_LookupAttr(obj, state->type_ignores, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL) {
+ tmp = PyList_New(0);
+ if (tmp == NULL) {
+ return 1;
+ }
+ }
+ {
+ int res;
+ Py_ssize_t len;
+ Py_ssize_t i;
+ if (!PyList_Check(tmp)) {
+ PyErr_Format(PyExc_TypeError, "Module field \"type_ignores\" must be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp)));
+ goto failed;
+ }
+ len = PyList_GET_SIZE(tmp);
+ type_ignores = _Py_asdl_type_ignore_seq_new(len, arena);
+ if (type_ignores == NULL) goto failed;
+ for (i = 0; i < len; i++) {
+ type_ignore_ty val;
+ PyObject *tmp2 = Py_NewRef(PyList_GET_ITEM(tmp, i));
+ if (_Py_EnterRecursiveCall(" while traversing 'Module' node")) {
+ goto failed;
+ }
+ res = obj2ast_type_ignore(state, tmp2, &val, arena);
+ _Py_LeaveRecursiveCall();
+ Py_DECREF(tmp2);
+ if (res != 0) goto failed;
+ if (len != PyList_GET_SIZE(tmp)) {
+ PyErr_SetString(PyExc_RuntimeError, "Module field \"type_ignores\" changed size during iteration");
+ goto failed;
+ }
+ asdl_seq_SET(type_ignores, i, val);
+ }
+ Py_CLEAR(tmp);
+ }
+ *out = _PyAST_Module(body, type_ignores, arena);
+ if (*out == NULL) goto failed;
+ return 0;
+ }
+ tp = state->Interactive_type;
+ isinstance = PyObject_IsInstance(obj, tp);
+ if (isinstance == -1) {
+ return 1;
+ }
+ if (isinstance) {
+ asdl_stmt_seq* body;
+
+ if (_PyObject_LookupAttr(obj, state->body, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL) {
+ tmp = PyList_New(0);
+ if (tmp == NULL) {
+ return 1;
+ }
+ }
+ {
+ int res;
+ Py_ssize_t len;
+ Py_ssize_t i;
+ if (!PyList_Check(tmp)) {
+ PyErr_Format(PyExc_TypeError, "Interactive field \"body\" must be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp)));
+ goto failed;
+ }
+ len = PyList_GET_SIZE(tmp);
+ body = _Py_asdl_stmt_seq_new(len, arena);
+ if (body == NULL) goto failed;
+ for (i = 0; i < len; i++) {
+ stmt_ty val;
+ PyObject *tmp2 = Py_NewRef(PyList_GET_ITEM(tmp, i));
+ if (_Py_EnterRecursiveCall(" while traversing 'Interactive' node")) {
+ goto failed;
+ }
+ res = obj2ast_stmt(state, tmp2, &val, arena);
+ _Py_LeaveRecursiveCall();
+ Py_DECREF(tmp2);
+ if (res != 0) goto failed;
+ if (len != PyList_GET_SIZE(tmp)) {
+ PyErr_SetString(PyExc_RuntimeError, "Interactive field \"body\" changed size during iteration");
+ goto failed;
+ }
+ asdl_seq_SET(body, i, val);
+ }
+ Py_CLEAR(tmp);
+ }
+ *out = _PyAST_Interactive(body, arena);
+ if (*out == NULL) goto failed;
+ return 0;
+ }
+ tp = state->Expression_type;
+ isinstance = PyObject_IsInstance(obj, tp);
+ if (isinstance == -1) {
+ return 1;
+ }
+ if (isinstance) {
+ expr_ty body;
+
+ if (_PyObject_LookupAttr(obj, state->body, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL) {
+ PyErr_SetString(PyExc_TypeError, "required field \"body\" missing from Expression");
+ return 1;
+ }
+ else {
+ int res;
+ if (_Py_EnterRecursiveCall(" while traversing 'Expression' node")) {
+ goto failed;
+ }
+ res = obj2ast_expr(state, tmp, &body, arena);
+ _Py_LeaveRecursiveCall();
+ if (res != 0) goto failed;
+ Py_CLEAR(tmp);
+ }
+ *out = _PyAST_Expression(body, arena);
+ if (*out == NULL) goto failed;
+ return 0;
+ }
+ tp = state->FunctionType_type;
+ isinstance = PyObject_IsInstance(obj, tp);
+ if (isinstance == -1) {
+ return 1;
+ }
+ if (isinstance) {
+ asdl_expr_seq* argtypes;
+ expr_ty returns;
+
+ if (_PyObject_LookupAttr(obj, state->argtypes, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL) {
+ tmp = PyList_New(0);
+ if (tmp == NULL) {
+ return 1;
+ }
+ }
+ {
+ int res;
+ Py_ssize_t len;
+ Py_ssize_t i;
+ if (!PyList_Check(tmp)) {
+ PyErr_Format(PyExc_TypeError, "FunctionType field \"argtypes\" must be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp)));
+ goto failed;
+ }
+ len = PyList_GET_SIZE(tmp);
+ argtypes = _Py_asdl_expr_seq_new(len, arena);
+ if (argtypes == NULL) goto failed;
+ for (i = 0; i < len; i++) {
+ expr_ty val;
+ PyObject *tmp2 = Py_NewRef(PyList_GET_ITEM(tmp, i));
+ if (_Py_EnterRecursiveCall(" while traversing 'FunctionType' node")) {
+ goto failed;
+ }
+ res = obj2ast_expr(state, tmp2, &val, arena);
+ _Py_LeaveRecursiveCall();
+ Py_DECREF(tmp2);
+ if (res != 0) goto failed;
+ if (len != PyList_GET_SIZE(tmp)) {
+ PyErr_SetString(PyExc_RuntimeError, "FunctionType field \"argtypes\" changed size during iteration");
+ goto failed;
+ }
+ asdl_seq_SET(argtypes, i, val);
+ }
+ Py_CLEAR(tmp);
+ }
+ if (_PyObject_LookupAttr(obj, state->returns, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL) {
+ PyErr_SetString(PyExc_TypeError, "required field \"returns\" missing from FunctionType");
+ return 1;
+ }
+ else {
+ int res;
+ if (_Py_EnterRecursiveCall(" while traversing 'FunctionType' node")) {
+ goto failed;
+ }
+ res = obj2ast_expr(state, tmp, &returns, arena);
+ _Py_LeaveRecursiveCall();
+ if (res != 0) goto failed;
+ Py_CLEAR(tmp);
+ }
+ *out = _PyAST_FunctionType(argtypes, returns, arena);
+ if (*out == NULL) goto failed;
+ return 0;
+ }
+
+ PyErr_Format(PyExc_TypeError, "expected some sort of mod, but got %R", obj);
+ failed:
+ Py_XDECREF(tmp);
+ return 1;
+}
+
+int
+obj2ast_stmt(struct ast_state *state, PyObject* obj, stmt_ty* out, PyArena*
+ arena)
+{
+ int isinstance;
+
+ PyObject *tmp = NULL;
+ PyObject *tp;
+ int lineno;
+ int col_offset;
+ int end_lineno;
+ int end_col_offset;
+
+ if (obj == Py_None) {
+ *out = NULL;
+ return 0;
+ }
+ if (_PyObject_LookupAttr(obj, state->lineno, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL) {
+ PyErr_SetString(PyExc_TypeError, "required field \"lineno\" missing from stmt");
+ return 1;
+ }
+ else {
+ int res;
+ if (_Py_EnterRecursiveCall(" while traversing 'stmt' node")) {
+ goto failed;
+ }
+ res = obj2ast_int(state, tmp, &lineno, arena);
+ _Py_LeaveRecursiveCall();
+ if (res != 0) goto failed;
+ Py_CLEAR(tmp);
+ }
+ if (_PyObject_LookupAttr(obj, state->col_offset, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL) {
+ PyErr_SetString(PyExc_TypeError, "required field \"col_offset\" missing from stmt");
+ return 1;
+ }
+ else {
+ int res;
+ if (_Py_EnterRecursiveCall(" while traversing 'stmt' node")) {
+ goto failed;
+ }
+ res = obj2ast_int(state, tmp, &col_offset, arena);
+ _Py_LeaveRecursiveCall();
+ if (res != 0) goto failed;
+ Py_CLEAR(tmp);
+ }
+ if (_PyObject_LookupAttr(obj, state->end_lineno, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL || tmp == Py_None) {
+ Py_CLEAR(tmp);
+ end_lineno = lineno;
+ }
+ else {
+ int res;
+ if (_Py_EnterRecursiveCall(" while traversing 'stmt' node")) {
+ goto failed;
+ }
+ res = obj2ast_int(state, tmp, &end_lineno, arena);
+ _Py_LeaveRecursiveCall();
+ if (res != 0) goto failed;
+ Py_CLEAR(tmp);
+ }
+ if (_PyObject_LookupAttr(obj, state->end_col_offset, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL || tmp == Py_None) {
+ Py_CLEAR(tmp);
+ end_col_offset = col_offset;
+ }
+ else {
+ int res;
+ if (_Py_EnterRecursiveCall(" while traversing 'stmt' node")) {
+ goto failed;
+ }
+ res = obj2ast_int(state, tmp, &end_col_offset, arena);
+ _Py_LeaveRecursiveCall();
+ if (res != 0) goto failed;
+ Py_CLEAR(tmp);
+ }
+ tp = state->FunctionDef_type;
+ isinstance = PyObject_IsInstance(obj, tp);
+ if (isinstance == -1) {
+ return 1;
+ }
+ if (isinstance) {
+ identifier name;
+ arguments_ty args;
+ asdl_stmt_seq* body;
+ asdl_expr_seq* decorator_list;
+ expr_ty returns;
+ string type_comment;
+ asdl_type_param_seq* type_params;
+
+ if (_PyObject_LookupAttr(obj, state->name, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL) {
+ PyErr_SetString(PyExc_TypeError, "required field \"name\" missing from FunctionDef");
+ return 1;
+ }
+ else {
+ int res;
+ if (_Py_EnterRecursiveCall(" while traversing 'FunctionDef' node")) {
+ goto failed;
+ }
+ res = obj2ast_identifier(state, tmp, &name, arena);
+ _Py_LeaveRecursiveCall();
+ if (res != 0) goto failed;
+ Py_CLEAR(tmp);
+ }
+ if (_PyObject_LookupAttr(obj, state->args, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL) {
+ PyErr_SetString(PyExc_TypeError, "required field \"args\" missing from FunctionDef");
+ return 1;
+ }
+ else {
+ int res;
+ if (_Py_EnterRecursiveCall(" while traversing 'FunctionDef' node")) {
+ goto failed;
+ }
+ res = obj2ast_arguments(state, tmp, &args, arena);
+ _Py_LeaveRecursiveCall();
+ if (res != 0) goto failed;
+ Py_CLEAR(tmp);
+ }
+ if (_PyObject_LookupAttr(obj, state->body, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL) {
+ tmp = PyList_New(0);
+ if (tmp == NULL) {
+ return 1;
+ }
+ }
+ {
+ int res;
+ Py_ssize_t len;
+ Py_ssize_t i;
+ if (!PyList_Check(tmp)) {
+ PyErr_Format(PyExc_TypeError, "FunctionDef field \"body\" must be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp)));
+ goto failed;
+ }
+ len = PyList_GET_SIZE(tmp);
+ body = _Py_asdl_stmt_seq_new(len, arena);
+ if (body == NULL) goto failed;
+ for (i = 0; i < len; i++) {
+ stmt_ty val;
+ PyObject *tmp2 = Py_NewRef(PyList_GET_ITEM(tmp, i));
+ if (_Py_EnterRecursiveCall(" while traversing 'FunctionDef' node")) {
+ goto failed;
+ }
+ res = obj2ast_stmt(state, tmp2, &val, arena);
+ _Py_LeaveRecursiveCall();
+ Py_DECREF(tmp2);
+ if (res != 0) goto failed;
+ if (len != PyList_GET_SIZE(tmp)) {
+ PyErr_SetString(PyExc_RuntimeError, "FunctionDef field \"body\" changed size during iteration");
+ goto failed;
+ }
+ asdl_seq_SET(body, i, val);
+ }
+ Py_CLEAR(tmp);
+ }
+ if (_PyObject_LookupAttr(obj, state->decorator_list, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL) {
+ tmp = PyList_New(0);
+ if (tmp == NULL) {
+ return 1;
+ }
+ }
+ {
+ int res;
+ Py_ssize_t len;
+ Py_ssize_t i;
+ if (!PyList_Check(tmp)) {
+ PyErr_Format(PyExc_TypeError, "FunctionDef field \"decorator_list\" must be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp)));
+ goto failed;
+ }
+ len = PyList_GET_SIZE(tmp);
+ decorator_list = _Py_asdl_expr_seq_new(len, arena);
+ if (decorator_list == NULL) goto failed;
+ for (i = 0; i < len; i++) {
+ expr_ty val;
+ PyObject *tmp2 = Py_NewRef(PyList_GET_ITEM(tmp, i));
+ if (_Py_EnterRecursiveCall(" while traversing 'FunctionDef' node")) {
+ goto failed;
+ }
+ res = obj2ast_expr(state, tmp2, &val, arena);
+ _Py_LeaveRecursiveCall();
+ Py_DECREF(tmp2);
+ if (res != 0) goto failed;
+ if (len != PyList_GET_SIZE(tmp)) {
+ PyErr_SetString(PyExc_RuntimeError, "FunctionDef field \"decorator_list\" changed size during iteration");
+ goto failed;
+ }
+ asdl_seq_SET(decorator_list, i, val);
+ }
+ Py_CLEAR(tmp);
+ }
+ if (_PyObject_LookupAttr(obj, state->returns, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL || tmp == Py_None) {
+ Py_CLEAR(tmp);
+ returns = NULL;
+ }
+ else {
+ int res;
+ if (_Py_EnterRecursiveCall(" while traversing 'FunctionDef' node")) {
+ goto failed;
+ }
+ res = obj2ast_expr(state, tmp, &returns, arena);
+ _Py_LeaveRecursiveCall();
+ if (res != 0) goto failed;
+ Py_CLEAR(tmp);
+ }
+ if (_PyObject_LookupAttr(obj, state->type_comment, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL || tmp == Py_None) {
+ Py_CLEAR(tmp);
+ type_comment = NULL;
+ }
+ else {
+ int res;
+ if (_Py_EnterRecursiveCall(" while traversing 'FunctionDef' node")) {
+ goto failed;
+ }
+ res = obj2ast_string(state, tmp, &type_comment, arena);
+ _Py_LeaveRecursiveCall();
+ if (res != 0) goto failed;
+ Py_CLEAR(tmp);
+ }
+ if (_PyObject_LookupAttr(obj, state->type_params, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL) {
+ tmp = PyList_New(0);
+ if (tmp == NULL) {
+ return 1;
+ }
+ }
+ {
+ int res;
+ Py_ssize_t len;
+ Py_ssize_t i;
+ if (!PyList_Check(tmp)) {
+ PyErr_Format(PyExc_TypeError, "FunctionDef field \"type_params\" must be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp)));
+ goto failed;
+ }
+ len = PyList_GET_SIZE(tmp);
+ type_params = _Py_asdl_type_param_seq_new(len, arena);
+ if (type_params == NULL) goto failed;
+ for (i = 0; i < len; i++) {
+ type_param_ty val;
+ PyObject *tmp2 = Py_NewRef(PyList_GET_ITEM(tmp, i));
+ if (_Py_EnterRecursiveCall(" while traversing 'FunctionDef' node")) {
+ goto failed;
+ }
+ res = obj2ast_type_param(state, tmp2, &val, arena);
+ _Py_LeaveRecursiveCall();
+ Py_DECREF(tmp2);
+ if (res != 0) goto failed;
+ if (len != PyList_GET_SIZE(tmp)) {
+ PyErr_SetString(PyExc_RuntimeError, "FunctionDef field \"type_params\" changed size during iteration");
+ goto failed;
+ }
+ asdl_seq_SET(type_params, i, val);
+ }
+ Py_CLEAR(tmp);
+ }
+ *out = _PyAST_FunctionDef(name, args, body, decorator_list, returns,
+ type_comment, type_params, lineno,
+ col_offset, end_lineno, end_col_offset,
+ arena);
+ if (*out == NULL) goto failed;
+ return 0;
+ }
+ tp = state->AsyncFunctionDef_type;
+ isinstance = PyObject_IsInstance(obj, tp);
+ if (isinstance == -1) {
+ return 1;
+ }
+ if (isinstance) {
+ identifier name;
+ arguments_ty args;
+ asdl_stmt_seq* body;
+ asdl_expr_seq* decorator_list;
+ expr_ty returns;
+ string type_comment;
+ asdl_type_param_seq* type_params;
+
+ if (_PyObject_LookupAttr(obj, state->name, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL) {
+ PyErr_SetString(PyExc_TypeError, "required field \"name\" missing from AsyncFunctionDef");
+ return 1;
+ }
+ else {
+ int res;
+ if (_Py_EnterRecursiveCall(" while traversing 'AsyncFunctionDef' node")) {
+ goto failed;
+ }
+ res = obj2ast_identifier(state, tmp, &name, arena);
+ _Py_LeaveRecursiveCall();
+ if (res != 0) goto failed;
+ Py_CLEAR(tmp);
+ }
+ if (_PyObject_LookupAttr(obj, state->args, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL) {
+ PyErr_SetString(PyExc_TypeError, "required field \"args\" missing from AsyncFunctionDef");
+ return 1;
+ }
+ else {
+ int res;
+ if (_Py_EnterRecursiveCall(" while traversing 'AsyncFunctionDef' node")) {
+ goto failed;
+ }
+ res = obj2ast_arguments(state, tmp, &args, arena);
+ _Py_LeaveRecursiveCall();
+ if (res != 0) goto failed;
+ Py_CLEAR(tmp);
+ }
+ if (_PyObject_LookupAttr(obj, state->body, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL) {
+ tmp = PyList_New(0);
+ if (tmp == NULL) {
+ return 1;
+ }
+ }
+ {
+ int res;
+ Py_ssize_t len;
+ Py_ssize_t i;
+ if (!PyList_Check(tmp)) {
+ PyErr_Format(PyExc_TypeError, "AsyncFunctionDef field \"body\" must be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp)));
+ goto failed;
+ }
+ len = PyList_GET_SIZE(tmp);
+ body = _Py_asdl_stmt_seq_new(len, arena);
+ if (body == NULL) goto failed;
+ for (i = 0; i < len; i++) {
+ stmt_ty val;
+ PyObject *tmp2 = Py_NewRef(PyList_GET_ITEM(tmp, i));
+ if (_Py_EnterRecursiveCall(" while traversing 'AsyncFunctionDef' node")) {
+ goto failed;
+ }
+ res = obj2ast_stmt(state, tmp2, &val, arena);
+ _Py_LeaveRecursiveCall();
+ Py_DECREF(tmp2);
+ if (res != 0) goto failed;
+ if (len != PyList_GET_SIZE(tmp)) {
+ PyErr_SetString(PyExc_RuntimeError, "AsyncFunctionDef field \"body\" changed size during iteration");
+ goto failed;
+ }
+ asdl_seq_SET(body, i, val);
+ }
+ Py_CLEAR(tmp);
+ }
+ if (_PyObject_LookupAttr(obj, state->decorator_list, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL) {
+ tmp = PyList_New(0);
+ if (tmp == NULL) {
+ return 1;
+ }
+ }
+ {
+ int res;
+ Py_ssize_t len;
+ Py_ssize_t i;
+ if (!PyList_Check(tmp)) {
+ PyErr_Format(PyExc_TypeError, "AsyncFunctionDef field \"decorator_list\" must be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp)));
+ goto failed;
+ }
+ len = PyList_GET_SIZE(tmp);
+ decorator_list = _Py_asdl_expr_seq_new(len, arena);
+ if (decorator_list == NULL) goto failed;
+ for (i = 0; i < len; i++) {
+ expr_ty val;
+ PyObject *tmp2 = Py_NewRef(PyList_GET_ITEM(tmp, i));
+ if (_Py_EnterRecursiveCall(" while traversing 'AsyncFunctionDef' node")) {
+ goto failed;
+ }
+ res = obj2ast_expr(state, tmp2, &val, arena);
+ _Py_LeaveRecursiveCall();
+ Py_DECREF(tmp2);
+ if (res != 0) goto failed;
+ if (len != PyList_GET_SIZE(tmp)) {
+ PyErr_SetString(PyExc_RuntimeError, "AsyncFunctionDef field \"decorator_list\" changed size during iteration");
+ goto failed;
+ }
+ asdl_seq_SET(decorator_list, i, val);
+ }
+ Py_CLEAR(tmp);
+ }
+ if (_PyObject_LookupAttr(obj, state->returns, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL || tmp == Py_None) {
+ Py_CLEAR(tmp);
+ returns = NULL;
+ }
+ else {
+ int res;
+ if (_Py_EnterRecursiveCall(" while traversing 'AsyncFunctionDef' node")) {
+ goto failed;
+ }
+ res = obj2ast_expr(state, tmp, &returns, arena);
+ _Py_LeaveRecursiveCall();
+ if (res != 0) goto failed;
+ Py_CLEAR(tmp);
+ }
+ if (_PyObject_LookupAttr(obj, state->type_comment, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL || tmp == Py_None) {
+ Py_CLEAR(tmp);
+ type_comment = NULL;
+ }
+ else {
+ int res;
+ if (_Py_EnterRecursiveCall(" while traversing 'AsyncFunctionDef' node")) {
+ goto failed;
+ }
+ res = obj2ast_string(state, tmp, &type_comment, arena);
+ _Py_LeaveRecursiveCall();
+ if (res != 0) goto failed;
+ Py_CLEAR(tmp);
+ }
+ if (_PyObject_LookupAttr(obj, state->type_params, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL) {
+ tmp = PyList_New(0);
+ if (tmp == NULL) {
+ return 1;
+ }
+ }
+ {
+ int res;
+ Py_ssize_t len;
+ Py_ssize_t i;
+ if (!PyList_Check(tmp)) {
+ PyErr_Format(PyExc_TypeError, "AsyncFunctionDef field \"type_params\" must be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp)));
+ goto failed;
+ }
+ len = PyList_GET_SIZE(tmp);
+ type_params = _Py_asdl_type_param_seq_new(len, arena);
+ if (type_params == NULL) goto failed;
+ for (i = 0; i < len; i++) {
+ type_param_ty val;
+ PyObject *tmp2 = Py_NewRef(PyList_GET_ITEM(tmp, i));
+ if (_Py_EnterRecursiveCall(" while traversing 'AsyncFunctionDef' node")) {
+ goto failed;
+ }
+ res = obj2ast_type_param(state, tmp2, &val, arena);
+ _Py_LeaveRecursiveCall();
+ Py_DECREF(tmp2);
+ if (res != 0) goto failed;
+ if (len != PyList_GET_SIZE(tmp)) {
+ PyErr_SetString(PyExc_RuntimeError, "AsyncFunctionDef field \"type_params\" changed size during iteration");
+ goto failed;
+ }
+ asdl_seq_SET(type_params, i, val);
+ }
+ Py_CLEAR(tmp);
+ }
+ *out = _PyAST_AsyncFunctionDef(name, args, body, decorator_list,
+ returns, type_comment, type_params,
+ lineno, col_offset, end_lineno,
+ end_col_offset, arena);
+ if (*out == NULL) goto failed;
+ return 0;
+ }
+ tp = state->ClassDef_type;
+ isinstance = PyObject_IsInstance(obj, tp);
+ if (isinstance == -1) {
+ return 1;
+ }
+ if (isinstance) {
+ identifier name;
+ asdl_expr_seq* bases;
+ asdl_keyword_seq* keywords;
+ asdl_stmt_seq* body;
+ asdl_expr_seq* decorator_list;
+ asdl_type_param_seq* type_params;
+
+ if (_PyObject_LookupAttr(obj, state->name, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL) {
+ PyErr_SetString(PyExc_TypeError, "required field \"name\" missing from ClassDef");
+ return 1;
+ }
+ else {
+ int res;
+ if (_Py_EnterRecursiveCall(" while traversing 'ClassDef' node")) {
+ goto failed;
+ }
+ res = obj2ast_identifier(state, tmp, &name, arena);
+ _Py_LeaveRecursiveCall();
+ if (res != 0) goto failed;
+ Py_CLEAR(tmp);
+ }
+ if (_PyObject_LookupAttr(obj, state->bases, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL) {
+ tmp = PyList_New(0);
+ if (tmp == NULL) {
+ return 1;
+ }
+ }
+ {
+ int res;
+ Py_ssize_t len;
+ Py_ssize_t i;
+ if (!PyList_Check(tmp)) {
+ PyErr_Format(PyExc_TypeError, "ClassDef field \"bases\" must be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp)));
+ goto failed;
+ }
+ len = PyList_GET_SIZE(tmp);
+ bases = _Py_asdl_expr_seq_new(len, arena);
+ if (bases == NULL) goto failed;
+ for (i = 0; i < len; i++) {
+ expr_ty val;
+ PyObject *tmp2 = Py_NewRef(PyList_GET_ITEM(tmp, i));
+ if (_Py_EnterRecursiveCall(" while traversing 'ClassDef' node")) {
+ goto failed;
+ }
+ res = obj2ast_expr(state, tmp2, &val, arena);
+ _Py_LeaveRecursiveCall();
+ Py_DECREF(tmp2);
+ if (res != 0) goto failed;
+ if (len != PyList_GET_SIZE(tmp)) {
+ PyErr_SetString(PyExc_RuntimeError, "ClassDef field \"bases\" changed size during iteration");
+ goto failed;
+ }
+ asdl_seq_SET(bases, i, val);
+ }
+ Py_CLEAR(tmp);
+ }
+ if (_PyObject_LookupAttr(obj, state->keywords, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL) {
+ tmp = PyList_New(0);
+ if (tmp == NULL) {
+ return 1;
+ }
+ }
+ {
+ int res;
+ Py_ssize_t len;
+ Py_ssize_t i;
+ if (!PyList_Check(tmp)) {
+ PyErr_Format(PyExc_TypeError, "ClassDef field \"keywords\" must be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp)));
+ goto failed;
+ }
+ len = PyList_GET_SIZE(tmp);
+ keywords = _Py_asdl_keyword_seq_new(len, arena);
+ if (keywords == NULL) goto failed;
+ for (i = 0; i < len; i++) {
+ keyword_ty val;
+ PyObject *tmp2 = Py_NewRef(PyList_GET_ITEM(tmp, i));
+ if (_Py_EnterRecursiveCall(" while traversing 'ClassDef' node")) {
+ goto failed;
+ }
+ res = obj2ast_keyword(state, tmp2, &val, arena);
+ _Py_LeaveRecursiveCall();
+ Py_DECREF(tmp2);
+ if (res != 0) goto failed;
+ if (len != PyList_GET_SIZE(tmp)) {
+ PyErr_SetString(PyExc_RuntimeError, "ClassDef field \"keywords\" changed size during iteration");
+ goto failed;
+ }
+ asdl_seq_SET(keywords, i, val);
+ }
+ Py_CLEAR(tmp);
+ }
+ if (_PyObject_LookupAttr(obj, state->body, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL) {
+ tmp = PyList_New(0);
+ if (tmp == NULL) {
+ return 1;
+ }
+ }
+ {
+ int res;
+ Py_ssize_t len;
+ Py_ssize_t i;
+ if (!PyList_Check(tmp)) {
+ PyErr_Format(PyExc_TypeError, "ClassDef field \"body\" must be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp)));
+ goto failed;
+ }
+ len = PyList_GET_SIZE(tmp);
+ body = _Py_asdl_stmt_seq_new(len, arena);
+ if (body == NULL) goto failed;
+ for (i = 0; i < len; i++) {
+ stmt_ty val;
+ PyObject *tmp2 = Py_NewRef(PyList_GET_ITEM(tmp, i));
+ if (_Py_EnterRecursiveCall(" while traversing 'ClassDef' node")) {
+ goto failed;
+ }
+ res = obj2ast_stmt(state, tmp2, &val, arena);
+ _Py_LeaveRecursiveCall();
+ Py_DECREF(tmp2);
+ if (res != 0) goto failed;
+ if (len != PyList_GET_SIZE(tmp)) {
+ PyErr_SetString(PyExc_RuntimeError, "ClassDef field \"body\" changed size during iteration");
+ goto failed;
+ }
+ asdl_seq_SET(body, i, val);
+ }
+ Py_CLEAR(tmp);
+ }
+ if (_PyObject_LookupAttr(obj, state->decorator_list, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL) {
+ tmp = PyList_New(0);
+ if (tmp == NULL) {
+ return 1;
+ }
+ }
+ {
+ int res;
+ Py_ssize_t len;
+ Py_ssize_t i;
+ if (!PyList_Check(tmp)) {
+ PyErr_Format(PyExc_TypeError, "ClassDef field \"decorator_list\" must be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp)));
+ goto failed;
+ }
+ len = PyList_GET_SIZE(tmp);
+ decorator_list = _Py_asdl_expr_seq_new(len, arena);
+ if (decorator_list == NULL) goto failed;
+ for (i = 0; i < len; i++) {
+ expr_ty val;
+ PyObject *tmp2 = Py_NewRef(PyList_GET_ITEM(tmp, i));
+ if (_Py_EnterRecursiveCall(" while traversing 'ClassDef' node")) {
+ goto failed;
+ }
+ res = obj2ast_expr(state, tmp2, &val, arena);
+ _Py_LeaveRecursiveCall();
+ Py_DECREF(tmp2);
+ if (res != 0) goto failed;
+ if (len != PyList_GET_SIZE(tmp)) {
+ PyErr_SetString(PyExc_RuntimeError, "ClassDef field \"decorator_list\" changed size during iteration");
+ goto failed;
+ }
+ asdl_seq_SET(decorator_list, i, val);
+ }
+ Py_CLEAR(tmp);
+ }
+ if (_PyObject_LookupAttr(obj, state->type_params, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL) {
+ tmp = PyList_New(0);
+ if (tmp == NULL) {
+ return 1;
+ }
+ }
+ {
+ int res;
+ Py_ssize_t len;
+ Py_ssize_t i;
+ if (!PyList_Check(tmp)) {
+ PyErr_Format(PyExc_TypeError, "ClassDef field \"type_params\" must be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp)));
+ goto failed;
+ }
+ len = PyList_GET_SIZE(tmp);
+ type_params = _Py_asdl_type_param_seq_new(len, arena);
+ if (type_params == NULL) goto failed;
+ for (i = 0; i < len; i++) {
+ type_param_ty val;
+ PyObject *tmp2 = Py_NewRef(PyList_GET_ITEM(tmp, i));
+ if (_Py_EnterRecursiveCall(" while traversing 'ClassDef' node")) {
+ goto failed;
+ }
+ res = obj2ast_type_param(state, tmp2, &val, arena);
+ _Py_LeaveRecursiveCall();
+ Py_DECREF(tmp2);
+ if (res != 0) goto failed;
+ if (len != PyList_GET_SIZE(tmp)) {
+ PyErr_SetString(PyExc_RuntimeError, "ClassDef field \"type_params\" changed size during iteration");
+ goto failed;
+ }
+ asdl_seq_SET(type_params, i, val);
+ }
+ Py_CLEAR(tmp);
+ }
+ *out = _PyAST_ClassDef(name, bases, keywords, body, decorator_list,
+ type_params, lineno, col_offset, end_lineno,
+ end_col_offset, arena);
+ if (*out == NULL) goto failed;
+ return 0;
+ }
+ tp = state->Return_type;
+ isinstance = PyObject_IsInstance(obj, tp);
+ if (isinstance == -1) {
+ return 1;
+ }
+ if (isinstance) {
+ expr_ty value;
+
+ if (_PyObject_LookupAttr(obj, state->value, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL || tmp == Py_None) {
+ Py_CLEAR(tmp);
+ value = NULL;
+ }
+ else {
+ int res;
+ if (_Py_EnterRecursiveCall(" while traversing 'Return' node")) {
+ goto failed;
+ }
+ res = obj2ast_expr(state, tmp, &value, arena);
+ _Py_LeaveRecursiveCall();
+ if (res != 0) goto failed;
+ Py_CLEAR(tmp);
+ }
+ *out = _PyAST_Return(value, lineno, col_offset, end_lineno,
+ end_col_offset, arena);
+ if (*out == NULL) goto failed;
+ return 0;
+ }
+ tp = state->Delete_type;
+ isinstance = PyObject_IsInstance(obj, tp);
+ if (isinstance == -1) {
+ return 1;
+ }
+ if (isinstance) {
+ asdl_expr_seq* targets;
+
+ if (_PyObject_LookupAttr(obj, state->targets, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL) {
+ tmp = PyList_New(0);
+ if (tmp == NULL) {
+ return 1;
+ }
+ }
+ {
+ int res;
+ Py_ssize_t len;
+ Py_ssize_t i;
+ if (!PyList_Check(tmp)) {
+ PyErr_Format(PyExc_TypeError, "Delete field \"targets\" must be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp)));
+ goto failed;
+ }
+ len = PyList_GET_SIZE(tmp);
+ targets = _Py_asdl_expr_seq_new(len, arena);
+ if (targets == NULL) goto failed;
+ for (i = 0; i < len; i++) {
+ expr_ty val;
+ PyObject *tmp2 = Py_NewRef(PyList_GET_ITEM(tmp, i));
+ if (_Py_EnterRecursiveCall(" while traversing 'Delete' node")) {
+ goto failed;
+ }
+ res = obj2ast_expr(state, tmp2, &val, arena);
+ _Py_LeaveRecursiveCall();
+ Py_DECREF(tmp2);
+ if (res != 0) goto failed;
+ if (len != PyList_GET_SIZE(tmp)) {
+ PyErr_SetString(PyExc_RuntimeError, "Delete field \"targets\" changed size during iteration");
+ goto failed;
+ }
+ asdl_seq_SET(targets, i, val);
+ }
+ Py_CLEAR(tmp);
+ }
+ *out = _PyAST_Delete(targets, lineno, col_offset, end_lineno,
+ end_col_offset, arena);
+ if (*out == NULL) goto failed;
+ return 0;
+ }
+ tp = state->Assign_type;
+ isinstance = PyObject_IsInstance(obj, tp);
+ if (isinstance == -1) {
+ return 1;
+ }
+ if (isinstance) {
+ asdl_expr_seq* targets;
+ expr_ty value;
+ string type_comment;
+
+ if (_PyObject_LookupAttr(obj, state->targets, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL) {
+ tmp = PyList_New(0);
+ if (tmp == NULL) {
+ return 1;
+ }
+ }
+ {
+ int res;
+ Py_ssize_t len;
+ Py_ssize_t i;
+ if (!PyList_Check(tmp)) {
+ PyErr_Format(PyExc_TypeError, "Assign field \"targets\" must be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp)));
+ goto failed;
+ }
+ len = PyList_GET_SIZE(tmp);
+ targets = _Py_asdl_expr_seq_new(len, arena);
+ if (targets == NULL) goto failed;
+ for (i = 0; i < len; i++) {
+ expr_ty val;
+ PyObject *tmp2 = Py_NewRef(PyList_GET_ITEM(tmp, i));
+ if (_Py_EnterRecursiveCall(" while traversing 'Assign' node")) {
+ goto failed;
+ }
+ res = obj2ast_expr(state, tmp2, &val, arena);
+ _Py_LeaveRecursiveCall();
+ Py_DECREF(tmp2);
+ if (res != 0) goto failed;
+ if (len != PyList_GET_SIZE(tmp)) {
+ PyErr_SetString(PyExc_RuntimeError, "Assign field \"targets\" changed size during iteration");
+ goto failed;
+ }
+ asdl_seq_SET(targets, i, val);
+ }
+ Py_CLEAR(tmp);
+ }
+ if (_PyObject_LookupAttr(obj, state->value, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL) {
+ PyErr_SetString(PyExc_TypeError, "required field \"value\" missing from Assign");
+ return 1;
+ }
+ else {
+ int res;
+ if (_Py_EnterRecursiveCall(" while traversing 'Assign' node")) {
+ goto failed;
+ }
+ res = obj2ast_expr(state, tmp, &value, arena);
+ _Py_LeaveRecursiveCall();
+ if (res != 0) goto failed;
+ Py_CLEAR(tmp);
+ }
+ if (_PyObject_LookupAttr(obj, state->type_comment, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL || tmp == Py_None) {
+ Py_CLEAR(tmp);
+ type_comment = NULL;
+ }
+ else {
+ int res;
+ if (_Py_EnterRecursiveCall(" while traversing 'Assign' node")) {
+ goto failed;
+ }
+ res = obj2ast_string(state, tmp, &type_comment, arena);
+ _Py_LeaveRecursiveCall();
+ if (res != 0) goto failed;
+ Py_CLEAR(tmp);
+ }
+ *out = _PyAST_Assign(targets, value, type_comment, lineno, col_offset,
+ end_lineno, end_col_offset, arena);
+ if (*out == NULL) goto failed;
+ return 0;
+ }
+ tp = state->TypeAlias_type;
+ isinstance = PyObject_IsInstance(obj, tp);
+ if (isinstance == -1) {
+ return 1;
+ }
+ if (isinstance) {
+ expr_ty name;
+ asdl_type_param_seq* type_params;
+ expr_ty value;
+
+ if (_PyObject_LookupAttr(obj, state->name, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL) {
+ PyErr_SetString(PyExc_TypeError, "required field \"name\" missing from TypeAlias");
+ return 1;
+ }
+ else {
+ int res;
+ if (_Py_EnterRecursiveCall(" while traversing 'TypeAlias' node")) {
+ goto failed;
+ }
+ res = obj2ast_expr(state, tmp, &name, arena);
+ _Py_LeaveRecursiveCall();
+ if (res != 0) goto failed;
+ Py_CLEAR(tmp);
+ }
+ if (_PyObject_LookupAttr(obj, state->type_params, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL) {
+ tmp = PyList_New(0);
+ if (tmp == NULL) {
+ return 1;
+ }
+ }
+ {
+ int res;
+ Py_ssize_t len;
+ Py_ssize_t i;
+ if (!PyList_Check(tmp)) {
+ PyErr_Format(PyExc_TypeError, "TypeAlias field \"type_params\" must be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp)));
+ goto failed;
+ }
+ len = PyList_GET_SIZE(tmp);
+ type_params = _Py_asdl_type_param_seq_new(len, arena);
+ if (type_params == NULL) goto failed;
+ for (i = 0; i < len; i++) {
+ type_param_ty val;
+ PyObject *tmp2 = Py_NewRef(PyList_GET_ITEM(tmp, i));
+ if (_Py_EnterRecursiveCall(" while traversing 'TypeAlias' node")) {
+ goto failed;
+ }
+ res = obj2ast_type_param(state, tmp2, &val, arena);
+ _Py_LeaveRecursiveCall();
+ Py_DECREF(tmp2);
+ if (res != 0) goto failed;
+ if (len != PyList_GET_SIZE(tmp)) {
+ PyErr_SetString(PyExc_RuntimeError, "TypeAlias field \"type_params\" changed size during iteration");
+ goto failed;
+ }
+ asdl_seq_SET(type_params, i, val);
+ }
+ Py_CLEAR(tmp);
+ }
+ if (_PyObject_LookupAttr(obj, state->value, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL) {
+ PyErr_SetString(PyExc_TypeError, "required field \"value\" missing from TypeAlias");
+ return 1;
+ }
+ else {
+ int res;
+ if (_Py_EnterRecursiveCall(" while traversing 'TypeAlias' node")) {
+ goto failed;
+ }
+ res = obj2ast_expr(state, tmp, &value, arena);
+ _Py_LeaveRecursiveCall();
+ if (res != 0) goto failed;
+ Py_CLEAR(tmp);
+ }
+ *out = _PyAST_TypeAlias(name, type_params, value, lineno, col_offset,
+ end_lineno, end_col_offset, arena);
+ if (*out == NULL) goto failed;
+ return 0;
+ }
+ tp = state->AugAssign_type;
+ isinstance = PyObject_IsInstance(obj, tp);
+ if (isinstance == -1) {
+ return 1;
+ }
+ if (isinstance) {
+ expr_ty target;
+ operator_ty op;
+ expr_ty value;
+
+ if (_PyObject_LookupAttr(obj, state->target, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL) {
+ PyErr_SetString(PyExc_TypeError, "required field \"target\" missing from AugAssign");
+ return 1;
+ }
+ else {
+ int res;
+ if (_Py_EnterRecursiveCall(" while traversing 'AugAssign' node")) {
+ goto failed;
+ }
+ res = obj2ast_expr(state, tmp, &target, arena);
+ _Py_LeaveRecursiveCall();
+ if (res != 0) goto failed;
+ Py_CLEAR(tmp);
+ }
+ if (_PyObject_LookupAttr(obj, state->op, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL) {
+ PyErr_SetString(PyExc_TypeError, "required field \"op\" missing from AugAssign");
+ return 1;
+ }
+ else {
+ int res;
+ if (_Py_EnterRecursiveCall(" while traversing 'AugAssign' node")) {
+ goto failed;
+ }
+ res = obj2ast_operator(state, tmp, &op, arena);
+ _Py_LeaveRecursiveCall();
+ if (res != 0) goto failed;
+ Py_CLEAR(tmp);
+ }
+ if (_PyObject_LookupAttr(obj, state->value, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL) {
+ PyErr_SetString(PyExc_TypeError, "required field \"value\" missing from AugAssign");
+ return 1;
+ }
+ else {
+ int res;
+ if (_Py_EnterRecursiveCall(" while traversing 'AugAssign' node")) {
+ goto failed;
+ }
+ res = obj2ast_expr(state, tmp, &value, arena);
+ _Py_LeaveRecursiveCall();
+ if (res != 0) goto failed;
+ Py_CLEAR(tmp);
+ }
+ *out = _PyAST_AugAssign(target, op, value, lineno, col_offset,
+ end_lineno, end_col_offset, arena);
+ if (*out == NULL) goto failed;
+ return 0;
+ }
+ tp = state->AnnAssign_type;
+ isinstance = PyObject_IsInstance(obj, tp);
+ if (isinstance == -1) {
+ return 1;
+ }
+ if (isinstance) {
+ expr_ty target;
+ expr_ty annotation;
+ expr_ty value;
+ int simple;
+
+ if (_PyObject_LookupAttr(obj, state->target, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL) {
+ PyErr_SetString(PyExc_TypeError, "required field \"target\" missing from AnnAssign");
+ return 1;
+ }
+ else {
+ int res;
+ if (_Py_EnterRecursiveCall(" while traversing 'AnnAssign' node")) {
+ goto failed;
+ }
+ res = obj2ast_expr(state, tmp, &target, arena);
+ _Py_LeaveRecursiveCall();
+ if (res != 0) goto failed;
+ Py_CLEAR(tmp);
+ }
+ if (_PyObject_LookupAttr(obj, state->annotation, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL) {
+ PyErr_SetString(PyExc_TypeError, "required field \"annotation\" missing from AnnAssign");
+ return 1;
+ }
+ else {
+ int res;
+ if (_Py_EnterRecursiveCall(" while traversing 'AnnAssign' node")) {
+ goto failed;
+ }
+ res = obj2ast_expr(state, tmp, &annotation, arena);
+ _Py_LeaveRecursiveCall();
+ if (res != 0) goto failed;
+ Py_CLEAR(tmp);
+ }
+ if (_PyObject_LookupAttr(obj, state->value, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL || tmp == Py_None) {
+ Py_CLEAR(tmp);
+ value = NULL;
+ }
+ else {
+ int res;
+ if (_Py_EnterRecursiveCall(" while traversing 'AnnAssign' node")) {
+ goto failed;
+ }
+ res = obj2ast_expr(state, tmp, &value, arena);
+ _Py_LeaveRecursiveCall();
+ if (res != 0) goto failed;
+ Py_CLEAR(tmp);
+ }
+ if (_PyObject_LookupAttr(obj, state->simple, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL) {
+ PyErr_SetString(PyExc_TypeError, "required field \"simple\" missing from AnnAssign");
+ return 1;
+ }
+ else {
+ int res;
+ if (_Py_EnterRecursiveCall(" while traversing 'AnnAssign' node")) {
+ goto failed;
+ }
+ res = obj2ast_int(state, tmp, &simple, arena);
+ _Py_LeaveRecursiveCall();
+ if (res != 0) goto failed;
+ Py_CLEAR(tmp);
+ }
+ *out = _PyAST_AnnAssign(target, annotation, value, simple, lineno,
+ col_offset, end_lineno, end_col_offset, arena);
+ if (*out == NULL) goto failed;
+ return 0;
+ }
+ tp = state->For_type;
+ isinstance = PyObject_IsInstance(obj, tp);
+ if (isinstance == -1) {
+ return 1;
+ }
+ if (isinstance) {
+ expr_ty target;
+ expr_ty iter;
+ asdl_stmt_seq* body;
+ asdl_stmt_seq* orelse;
+ string type_comment;
+
+ if (_PyObject_LookupAttr(obj, state->target, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL) {
+ PyErr_SetString(PyExc_TypeError, "required field \"target\" missing from For");
+ return 1;
+ }
+ else {
+ int res;
+ if (_Py_EnterRecursiveCall(" while traversing 'For' node")) {
+ goto failed;
+ }
+ res = obj2ast_expr(state, tmp, &target, arena);
+ _Py_LeaveRecursiveCall();
+ if (res != 0) goto failed;
+ Py_CLEAR(tmp);
+ }
+ if (_PyObject_LookupAttr(obj, state->iter, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL) {
+ PyErr_SetString(PyExc_TypeError, "required field \"iter\" missing from For");
+ return 1;
+ }
+ else {
+ int res;
+ if (_Py_EnterRecursiveCall(" while traversing 'For' node")) {
+ goto failed;
+ }
+ res = obj2ast_expr(state, tmp, &iter, arena);
+ _Py_LeaveRecursiveCall();
+ if (res != 0) goto failed;
+ Py_CLEAR(tmp);
+ }
+ if (_PyObject_LookupAttr(obj, state->body, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL) {
+ tmp = PyList_New(0);
+ if (tmp == NULL) {
+ return 1;
+ }
+ }
+ {
+ int res;
+ Py_ssize_t len;
+ Py_ssize_t i;
+ if (!PyList_Check(tmp)) {
+ PyErr_Format(PyExc_TypeError, "For field \"body\" must be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp)));
+ goto failed;
+ }
+ len = PyList_GET_SIZE(tmp);
+ body = _Py_asdl_stmt_seq_new(len, arena);
+ if (body == NULL) goto failed;
+ for (i = 0; i < len; i++) {
+ stmt_ty val;
+ PyObject *tmp2 = Py_NewRef(PyList_GET_ITEM(tmp, i));
+ if (_Py_EnterRecursiveCall(" while traversing 'For' node")) {
+ goto failed;
+ }
+ res = obj2ast_stmt(state, tmp2, &val, arena);
+ _Py_LeaveRecursiveCall();
+ Py_DECREF(tmp2);
+ if (res != 0) goto failed;
+ if (len != PyList_GET_SIZE(tmp)) {
+ PyErr_SetString(PyExc_RuntimeError, "For field \"body\" changed size during iteration");
+ goto failed;
+ }
+ asdl_seq_SET(body, i, val);
+ }
+ Py_CLEAR(tmp);
+ }
+ if (_PyObject_LookupAttr(obj, state->orelse, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL) {
+ tmp = PyList_New(0);
+ if (tmp == NULL) {
+ return 1;
+ }
+ }
+ {
+ int res;
+ Py_ssize_t len;
+ Py_ssize_t i;
+ if (!PyList_Check(tmp)) {
+ PyErr_Format(PyExc_TypeError, "For field \"orelse\" must be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp)));
+ goto failed;
+ }
+ len = PyList_GET_SIZE(tmp);
+ orelse = _Py_asdl_stmt_seq_new(len, arena);
+ if (orelse == NULL) goto failed;
+ for (i = 0; i < len; i++) {
+ stmt_ty val;
+ PyObject *tmp2 = Py_NewRef(PyList_GET_ITEM(tmp, i));
+ if (_Py_EnterRecursiveCall(" while traversing 'For' node")) {
+ goto failed;
+ }
+ res = obj2ast_stmt(state, tmp2, &val, arena);
+ _Py_LeaveRecursiveCall();
+ Py_DECREF(tmp2);
+ if (res != 0) goto failed;
+ if (len != PyList_GET_SIZE(tmp)) {
+ PyErr_SetString(PyExc_RuntimeError, "For field \"orelse\" changed size during iteration");
+ goto failed;
+ }
+ asdl_seq_SET(orelse, i, val);
+ }
+ Py_CLEAR(tmp);
+ }
+ if (_PyObject_LookupAttr(obj, state->type_comment, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL || tmp == Py_None) {
+ Py_CLEAR(tmp);
+ type_comment = NULL;
+ }
+ else {
+ int res;
+ if (_Py_EnterRecursiveCall(" while traversing 'For' node")) {
+ goto failed;
+ }
+ res = obj2ast_string(state, tmp, &type_comment, arena);
+ _Py_LeaveRecursiveCall();
+ if (res != 0) goto failed;
+ Py_CLEAR(tmp);
+ }
+ *out = _PyAST_For(target, iter, body, orelse, type_comment, lineno,
+ col_offset, end_lineno, end_col_offset, arena);
+ if (*out == NULL) goto failed;
+ return 0;
+ }
+ tp = state->AsyncFor_type;
+ isinstance = PyObject_IsInstance(obj, tp);
+ if (isinstance == -1) {
+ return 1;
+ }
+ if (isinstance) {
+ expr_ty target;
+ expr_ty iter;
+ asdl_stmt_seq* body;
+ asdl_stmt_seq* orelse;
+ string type_comment;
+
+ if (_PyObject_LookupAttr(obj, state->target, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL) {
+ PyErr_SetString(PyExc_TypeError, "required field \"target\" missing from AsyncFor");
+ return 1;
+ }
+ else {
+ int res;
+ if (_Py_EnterRecursiveCall(" while traversing 'AsyncFor' node")) {
+ goto failed;
+ }
+ res = obj2ast_expr(state, tmp, &target, arena);
+ _Py_LeaveRecursiveCall();
+ if (res != 0) goto failed;
+ Py_CLEAR(tmp);
+ }
+ if (_PyObject_LookupAttr(obj, state->iter, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL) {
+ PyErr_SetString(PyExc_TypeError, "required field \"iter\" missing from AsyncFor");
+ return 1;
+ }
+ else {
+ int res;
+ if (_Py_EnterRecursiveCall(" while traversing 'AsyncFor' node")) {
+ goto failed;
+ }
+ res = obj2ast_expr(state, tmp, &iter, arena);
+ _Py_LeaveRecursiveCall();
+ if (res != 0) goto failed;
+ Py_CLEAR(tmp);
+ }
+ if (_PyObject_LookupAttr(obj, state->body, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL) {
+ tmp = PyList_New(0);
+ if (tmp == NULL) {
+ return 1;
+ }
+ }
+ {
+ int res;
+ Py_ssize_t len;
+ Py_ssize_t i;
+ if (!PyList_Check(tmp)) {
+ PyErr_Format(PyExc_TypeError, "AsyncFor field \"body\" must be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp)));
+ goto failed;
+ }
+ len = PyList_GET_SIZE(tmp);
+ body = _Py_asdl_stmt_seq_new(len, arena);
+ if (body == NULL) goto failed;
+ for (i = 0; i < len; i++) {
+ stmt_ty val;
+ PyObject *tmp2 = Py_NewRef(PyList_GET_ITEM(tmp, i));
+ if (_Py_EnterRecursiveCall(" while traversing 'AsyncFor' node")) {
+ goto failed;
+ }
+ res = obj2ast_stmt(state, tmp2, &val, arena);
+ _Py_LeaveRecursiveCall();
+ Py_DECREF(tmp2);
+ if (res != 0) goto failed;
+ if (len != PyList_GET_SIZE(tmp)) {
+ PyErr_SetString(PyExc_RuntimeError, "AsyncFor field \"body\" changed size during iteration");
+ goto failed;
+ }
+ asdl_seq_SET(body, i, val);
+ }
+ Py_CLEAR(tmp);
+ }
+ if (_PyObject_LookupAttr(obj, state->orelse, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL) {
+ tmp = PyList_New(0);
+ if (tmp == NULL) {
+ return 1;
+ }
+ }
+ {
+ int res;
+ Py_ssize_t len;
+ Py_ssize_t i;
+ if (!PyList_Check(tmp)) {
+ PyErr_Format(PyExc_TypeError, "AsyncFor field \"orelse\" must be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp)));
+ goto failed;
+ }
+ len = PyList_GET_SIZE(tmp);
+ orelse = _Py_asdl_stmt_seq_new(len, arena);
+ if (orelse == NULL) goto failed;
+ for (i = 0; i < len; i++) {
+ stmt_ty val;
+ PyObject *tmp2 = Py_NewRef(PyList_GET_ITEM(tmp, i));
+ if (_Py_EnterRecursiveCall(" while traversing 'AsyncFor' node")) {
+ goto failed;
+ }
+ res = obj2ast_stmt(state, tmp2, &val, arena);
+ _Py_LeaveRecursiveCall();
+ Py_DECREF(tmp2);
+ if (res != 0) goto failed;
+ if (len != PyList_GET_SIZE(tmp)) {
+ PyErr_SetString(PyExc_RuntimeError, "AsyncFor field \"orelse\" changed size during iteration");
+ goto failed;
+ }
+ asdl_seq_SET(orelse, i, val);
+ }
+ Py_CLEAR(tmp);
+ }
+ if (_PyObject_LookupAttr(obj, state->type_comment, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL || tmp == Py_None) {
+ Py_CLEAR(tmp);
+ type_comment = NULL;
+ }
+ else {
+ int res;
+ if (_Py_EnterRecursiveCall(" while traversing 'AsyncFor' node")) {
+ goto failed;
+ }
+ res = obj2ast_string(state, tmp, &type_comment, arena);
+ _Py_LeaveRecursiveCall();
+ if (res != 0) goto failed;
+ Py_CLEAR(tmp);
+ }
+ *out = _PyAST_AsyncFor(target, iter, body, orelse, type_comment,
+ lineno, col_offset, end_lineno, end_col_offset,
+ arena);
+ if (*out == NULL) goto failed;
+ return 0;
+ }
+ tp = state->While_type;
+ isinstance = PyObject_IsInstance(obj, tp);
+ if (isinstance == -1) {
+ return 1;
+ }
+ if (isinstance) {
+ expr_ty test;
+ asdl_stmt_seq* body;
+ asdl_stmt_seq* orelse;
+
+ if (_PyObject_LookupAttr(obj, state->test, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL) {
+ PyErr_SetString(PyExc_TypeError, "required field \"test\" missing from While");
+ return 1;
+ }
+ else {
+ int res;
+ if (_Py_EnterRecursiveCall(" while traversing 'While' node")) {
+ goto failed;
+ }
+ res = obj2ast_expr(state, tmp, &test, arena);
+ _Py_LeaveRecursiveCall();
+ if (res != 0) goto failed;
+ Py_CLEAR(tmp);
+ }
+ if (_PyObject_LookupAttr(obj, state->body, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL) {
+ tmp = PyList_New(0);
+ if (tmp == NULL) {
+ return 1;
+ }
+ }
+ {
+ int res;
+ Py_ssize_t len;
+ Py_ssize_t i;
+ if (!PyList_Check(tmp)) {
+ PyErr_Format(PyExc_TypeError, "While field \"body\" must be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp)));
+ goto failed;
+ }
+ len = PyList_GET_SIZE(tmp);
+ body = _Py_asdl_stmt_seq_new(len, arena);
+ if (body == NULL) goto failed;
+ for (i = 0; i < len; i++) {
+ stmt_ty val;
+ PyObject *tmp2 = Py_NewRef(PyList_GET_ITEM(tmp, i));
+ if (_Py_EnterRecursiveCall(" while traversing 'While' node")) {
+ goto failed;
+ }
+ res = obj2ast_stmt(state, tmp2, &val, arena);
+ _Py_LeaveRecursiveCall();
+ Py_DECREF(tmp2);
+ if (res != 0) goto failed;
+ if (len != PyList_GET_SIZE(tmp)) {
+ PyErr_SetString(PyExc_RuntimeError, "While field \"body\" changed size during iteration");
+ goto failed;
+ }
+ asdl_seq_SET(body, i, val);
+ }
+ Py_CLEAR(tmp);
+ }
+ if (_PyObject_LookupAttr(obj, state->orelse, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL) {
+ tmp = PyList_New(0);
+ if (tmp == NULL) {
+ return 1;
+ }
+ }
+ {
+ int res;
+ Py_ssize_t len;
+ Py_ssize_t i;
+ if (!PyList_Check(tmp)) {
+ PyErr_Format(PyExc_TypeError, "While field \"orelse\" must be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp)));
+ goto failed;
+ }
+ len = PyList_GET_SIZE(tmp);
+ orelse = _Py_asdl_stmt_seq_new(len, arena);
+ if (orelse == NULL) goto failed;
+ for (i = 0; i < len; i++) {
+ stmt_ty val;
+ PyObject *tmp2 = Py_NewRef(PyList_GET_ITEM(tmp, i));
+ if (_Py_EnterRecursiveCall(" while traversing 'While' node")) {
+ goto failed;
+ }
+ res = obj2ast_stmt(state, tmp2, &val, arena);
+ _Py_LeaveRecursiveCall();
+ Py_DECREF(tmp2);
+ if (res != 0) goto failed;
+ if (len != PyList_GET_SIZE(tmp)) {
+ PyErr_SetString(PyExc_RuntimeError, "While field \"orelse\" changed size during iteration");
+ goto failed;
+ }
+ asdl_seq_SET(orelse, i, val);
+ }
+ Py_CLEAR(tmp);
+ }
+ *out = _PyAST_While(test, body, orelse, lineno, col_offset, end_lineno,
+ end_col_offset, arena);
+ if (*out == NULL) goto failed;
+ return 0;
+ }
+ tp = state->If_type;
+ isinstance = PyObject_IsInstance(obj, tp);
+ if (isinstance == -1) {
+ return 1;
+ }
+ if (isinstance) {
+ expr_ty test;
+ asdl_stmt_seq* body;
+ asdl_stmt_seq* orelse;
+
+ if (_PyObject_LookupAttr(obj, state->test, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL) {
+ PyErr_SetString(PyExc_TypeError, "required field \"test\" missing from If");
+ return 1;
+ }
+ else {
+ int res;
+ if (_Py_EnterRecursiveCall(" while traversing 'If' node")) {
+ goto failed;
+ }
+ res = obj2ast_expr(state, tmp, &test, arena);
+ _Py_LeaveRecursiveCall();
+ if (res != 0) goto failed;
+ Py_CLEAR(tmp);
+ }
+ if (_PyObject_LookupAttr(obj, state->body, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL) {
+ tmp = PyList_New(0);
+ if (tmp == NULL) {
+ return 1;
+ }
+ }
+ {
+ int res;
+ Py_ssize_t len;
+ Py_ssize_t i;
+ if (!PyList_Check(tmp)) {
+ PyErr_Format(PyExc_TypeError, "If field \"body\" must be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp)));
+ goto failed;
+ }
+ len = PyList_GET_SIZE(tmp);
+ body = _Py_asdl_stmt_seq_new(len, arena);
+ if (body == NULL) goto failed;
+ for (i = 0; i < len; i++) {
+ stmt_ty val;
+ PyObject *tmp2 = Py_NewRef(PyList_GET_ITEM(tmp, i));
+ if (_Py_EnterRecursiveCall(" while traversing 'If' node")) {
+ goto failed;
+ }
+ res = obj2ast_stmt(state, tmp2, &val, arena);
+ _Py_LeaveRecursiveCall();
+ Py_DECREF(tmp2);
+ if (res != 0) goto failed;
+ if (len != PyList_GET_SIZE(tmp)) {
+ PyErr_SetString(PyExc_RuntimeError, "If field \"body\" changed size during iteration");
+ goto failed;
+ }
+ asdl_seq_SET(body, i, val);
+ }
+ Py_CLEAR(tmp);
+ }
+ if (_PyObject_LookupAttr(obj, state->orelse, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL) {
+ tmp = PyList_New(0);
+ if (tmp == NULL) {
+ return 1;
+ }
+ }
+ {
+ int res;
+ Py_ssize_t len;
+ Py_ssize_t i;
+ if (!PyList_Check(tmp)) {
+ PyErr_Format(PyExc_TypeError, "If field \"orelse\" must be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp)));
+ goto failed;
+ }
+ len = PyList_GET_SIZE(tmp);
+ orelse = _Py_asdl_stmt_seq_new(len, arena);
+ if (orelse == NULL) goto failed;
+ for (i = 0; i < len; i++) {
+ stmt_ty val;
+ PyObject *tmp2 = Py_NewRef(PyList_GET_ITEM(tmp, i));
+ if (_Py_EnterRecursiveCall(" while traversing 'If' node")) {
+ goto failed;
+ }
+ res = obj2ast_stmt(state, tmp2, &val, arena);
+ _Py_LeaveRecursiveCall();
+ Py_DECREF(tmp2);
+ if (res != 0) goto failed;
+ if (len != PyList_GET_SIZE(tmp)) {
+ PyErr_SetString(PyExc_RuntimeError, "If field \"orelse\" changed size during iteration");
+ goto failed;
+ }
+ asdl_seq_SET(orelse, i, val);
+ }
+ Py_CLEAR(tmp);
+ }
+ *out = _PyAST_If(test, body, orelse, lineno, col_offset, end_lineno,
+ end_col_offset, arena);
+ if (*out == NULL) goto failed;
+ return 0;
+ }
+ tp = state->With_type;
+ isinstance = PyObject_IsInstance(obj, tp);
+ if (isinstance == -1) {
+ return 1;
+ }
+ if (isinstance) {
+ asdl_withitem_seq* items;
+ asdl_stmt_seq* body;
+ string type_comment;
+
+ if (_PyObject_LookupAttr(obj, state->items, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL) {
+ tmp = PyList_New(0);
+ if (tmp == NULL) {
+ return 1;
+ }
+ }
+ {
+ int res;
+ Py_ssize_t len;
+ Py_ssize_t i;
+ if (!PyList_Check(tmp)) {
+ PyErr_Format(PyExc_TypeError, "With field \"items\" must be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp)));
+ goto failed;
+ }
+ len = PyList_GET_SIZE(tmp);
+ items = _Py_asdl_withitem_seq_new(len, arena);
+ if (items == NULL) goto failed;
+ for (i = 0; i < len; i++) {
+ withitem_ty val;
+ PyObject *tmp2 = Py_NewRef(PyList_GET_ITEM(tmp, i));
+ if (_Py_EnterRecursiveCall(" while traversing 'With' node")) {
+ goto failed;
+ }
+ res = obj2ast_withitem(state, tmp2, &val, arena);
+ _Py_LeaveRecursiveCall();
+ Py_DECREF(tmp2);
+ if (res != 0) goto failed;
+ if (len != PyList_GET_SIZE(tmp)) {
+ PyErr_SetString(PyExc_RuntimeError, "With field \"items\" changed size during iteration");
+ goto failed;
+ }
+ asdl_seq_SET(items, i, val);
+ }
+ Py_CLEAR(tmp);
+ }
+ if (_PyObject_LookupAttr(obj, state->body, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL) {
+ tmp = PyList_New(0);
+ if (tmp == NULL) {
+ return 1;
+ }
+ }
+ {
+ int res;
+ Py_ssize_t len;
+ Py_ssize_t i;
+ if (!PyList_Check(tmp)) {
+ PyErr_Format(PyExc_TypeError, "With field \"body\" must be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp)));
+ goto failed;
+ }
+ len = PyList_GET_SIZE(tmp);
+ body = _Py_asdl_stmt_seq_new(len, arena);
+ if (body == NULL) goto failed;
+ for (i = 0; i < len; i++) {
+ stmt_ty val;
+ PyObject *tmp2 = Py_NewRef(PyList_GET_ITEM(tmp, i));
+ if (_Py_EnterRecursiveCall(" while traversing 'With' node")) {
+ goto failed;
+ }
+ res = obj2ast_stmt(state, tmp2, &val, arena);
+ _Py_LeaveRecursiveCall();
+ Py_DECREF(tmp2);
+ if (res != 0) goto failed;
+ if (len != PyList_GET_SIZE(tmp)) {
+ PyErr_SetString(PyExc_RuntimeError, "With field \"body\" changed size during iteration");
+ goto failed;
+ }
+ asdl_seq_SET(body, i, val);
+ }
+ Py_CLEAR(tmp);
+ }
+ if (_PyObject_LookupAttr(obj, state->type_comment, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL || tmp == Py_None) {
+ Py_CLEAR(tmp);
+ type_comment = NULL;
+ }
+ else {
+ int res;
+ if (_Py_EnterRecursiveCall(" while traversing 'With' node")) {
+ goto failed;
+ }
+ res = obj2ast_string(state, tmp, &type_comment, arena);
+ _Py_LeaveRecursiveCall();
+ if (res != 0) goto failed;
+ Py_CLEAR(tmp);
+ }
+ *out = _PyAST_With(items, body, type_comment, lineno, col_offset,
+ end_lineno, end_col_offset, arena);
+ if (*out == NULL) goto failed;
+ return 0;
+ }
+ tp = state->AsyncWith_type;
+ isinstance = PyObject_IsInstance(obj, tp);
+ if (isinstance == -1) {
+ return 1;
+ }
+ if (isinstance) {
+ asdl_withitem_seq* items;
+ asdl_stmt_seq* body;
+ string type_comment;
+
+ if (_PyObject_LookupAttr(obj, state->items, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL) {
+ tmp = PyList_New(0);
+ if (tmp == NULL) {
+ return 1;
+ }
+ }
+ {
+ int res;
+ Py_ssize_t len;
+ Py_ssize_t i;
+ if (!PyList_Check(tmp)) {
+ PyErr_Format(PyExc_TypeError, "AsyncWith field \"items\" must be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp)));
+ goto failed;
+ }
+ len = PyList_GET_SIZE(tmp);
+ items = _Py_asdl_withitem_seq_new(len, arena);
+ if (items == NULL) goto failed;
+ for (i = 0; i < len; i++) {
+ withitem_ty val;
+ PyObject *tmp2 = Py_NewRef(PyList_GET_ITEM(tmp, i));
+ if (_Py_EnterRecursiveCall(" while traversing 'AsyncWith' node")) {
+ goto failed;
+ }
+ res = obj2ast_withitem(state, tmp2, &val, arena);
+ _Py_LeaveRecursiveCall();
+ Py_DECREF(tmp2);
+ if (res != 0) goto failed;
+ if (len != PyList_GET_SIZE(tmp)) {
+ PyErr_SetString(PyExc_RuntimeError, "AsyncWith field \"items\" changed size during iteration");
+ goto failed;
+ }
+ asdl_seq_SET(items, i, val);
+ }
+ Py_CLEAR(tmp);
+ }
+ if (_PyObject_LookupAttr(obj, state->body, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL) {
+ tmp = PyList_New(0);
+ if (tmp == NULL) {
+ return 1;
+ }
+ }
+ {
+ int res;
+ Py_ssize_t len;
+ Py_ssize_t i;
+ if (!PyList_Check(tmp)) {
+ PyErr_Format(PyExc_TypeError, "AsyncWith field \"body\" must be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp)));
+ goto failed;
+ }
+ len = PyList_GET_SIZE(tmp);
+ body = _Py_asdl_stmt_seq_new(len, arena);
+ if (body == NULL) goto failed;
+ for (i = 0; i < len; i++) {
+ stmt_ty val;
+ PyObject *tmp2 = Py_NewRef(PyList_GET_ITEM(tmp, i));
+ if (_Py_EnterRecursiveCall(" while traversing 'AsyncWith' node")) {
+ goto failed;
+ }
+ res = obj2ast_stmt(state, tmp2, &val, arena);
+ _Py_LeaveRecursiveCall();
+ Py_DECREF(tmp2);
+ if (res != 0) goto failed;
+ if (len != PyList_GET_SIZE(tmp)) {
+ PyErr_SetString(PyExc_RuntimeError, "AsyncWith field \"body\" changed size during iteration");
+ goto failed;
+ }
+ asdl_seq_SET(body, i, val);
+ }
+ Py_CLEAR(tmp);
+ }
+ if (_PyObject_LookupAttr(obj, state->type_comment, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL || tmp == Py_None) {
+ Py_CLEAR(tmp);
+ type_comment = NULL;
+ }
+ else {
+ int res;
+ if (_Py_EnterRecursiveCall(" while traversing 'AsyncWith' node")) {
+ goto failed;
+ }
+ res = obj2ast_string(state, tmp, &type_comment, arena);
+ _Py_LeaveRecursiveCall();
+ if (res != 0) goto failed;
+ Py_CLEAR(tmp);
+ }
+ *out = _PyAST_AsyncWith(items, body, type_comment, lineno, col_offset,
+ end_lineno, end_col_offset, arena);
+ if (*out == NULL) goto failed;
+ return 0;
+ }
+ tp = state->Match_type;
+ isinstance = PyObject_IsInstance(obj, tp);
+ if (isinstance == -1) {
+ return 1;
+ }
+ if (isinstance) {
+ expr_ty subject;
+ asdl_match_case_seq* cases;
+
+ if (_PyObject_LookupAttr(obj, state->subject, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL) {
+ PyErr_SetString(PyExc_TypeError, "required field \"subject\" missing from Match");
+ return 1;
+ }
+ else {
+ int res;
+ if (_Py_EnterRecursiveCall(" while traversing 'Match' node")) {
+ goto failed;
+ }
+ res = obj2ast_expr(state, tmp, &subject, arena);
+ _Py_LeaveRecursiveCall();
+ if (res != 0) goto failed;
+ Py_CLEAR(tmp);
+ }
+ if (_PyObject_LookupAttr(obj, state->cases, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL) {
+ tmp = PyList_New(0);
+ if (tmp == NULL) {
+ return 1;
+ }
+ }
+ {
+ int res;
+ Py_ssize_t len;
+ Py_ssize_t i;
+ if (!PyList_Check(tmp)) {
+ PyErr_Format(PyExc_TypeError, "Match field \"cases\" must be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp)));
+ goto failed;
+ }
+ len = PyList_GET_SIZE(tmp);
+ cases = _Py_asdl_match_case_seq_new(len, arena);
+ if (cases == NULL) goto failed;
+ for (i = 0; i < len; i++) {
+ match_case_ty val;
+ PyObject *tmp2 = Py_NewRef(PyList_GET_ITEM(tmp, i));
+ if (_Py_EnterRecursiveCall(" while traversing 'Match' node")) {
+ goto failed;
+ }
+ res = obj2ast_match_case(state, tmp2, &val, arena);
+ _Py_LeaveRecursiveCall();
+ Py_DECREF(tmp2);
+ if (res != 0) goto failed;
+ if (len != PyList_GET_SIZE(tmp)) {
+ PyErr_SetString(PyExc_RuntimeError, "Match field \"cases\" changed size during iteration");
+ goto failed;
+ }
+ asdl_seq_SET(cases, i, val);
+ }
+ Py_CLEAR(tmp);
+ }
+ *out = _PyAST_Match(subject, cases, lineno, col_offset, end_lineno,
+ end_col_offset, arena);
+ if (*out == NULL) goto failed;
+ return 0;
+ }
+ tp = state->Raise_type;
+ isinstance = PyObject_IsInstance(obj, tp);
+ if (isinstance == -1) {
+ return 1;
+ }
+ if (isinstance) {
+ expr_ty exc;
+ expr_ty cause;
+
+ if (_PyObject_LookupAttr(obj, state->exc, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL || tmp == Py_None) {
+ Py_CLEAR(tmp);
+ exc = NULL;
+ }
+ else {
+ int res;
+ if (_Py_EnterRecursiveCall(" while traversing 'Raise' node")) {
+ goto failed;
+ }
+ res = obj2ast_expr(state, tmp, &exc, arena);
+ _Py_LeaveRecursiveCall();
+ if (res != 0) goto failed;
+ Py_CLEAR(tmp);
+ }
+ if (_PyObject_LookupAttr(obj, state->cause, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL || tmp == Py_None) {
+ Py_CLEAR(tmp);
+ cause = NULL;
+ }
+ else {
+ int res;
+ if (_Py_EnterRecursiveCall(" while traversing 'Raise' node")) {
+ goto failed;
+ }
+ res = obj2ast_expr(state, tmp, &cause, arena);
+ _Py_LeaveRecursiveCall();
+ if (res != 0) goto failed;
+ Py_CLEAR(tmp);
+ }
+ *out = _PyAST_Raise(exc, cause, lineno, col_offset, end_lineno,
+ end_col_offset, arena);
+ if (*out == NULL) goto failed;
+ return 0;
+ }
+ tp = state->Try_type;
+ isinstance = PyObject_IsInstance(obj, tp);
+ if (isinstance == -1) {
+ return 1;
+ }
+ if (isinstance) {
+ asdl_stmt_seq* body;
+ asdl_excepthandler_seq* handlers;
+ asdl_stmt_seq* orelse;
+ asdl_stmt_seq* finalbody;
+
+ if (_PyObject_LookupAttr(obj, state->body, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL) {
+ tmp = PyList_New(0);
+ if (tmp == NULL) {
+ return 1;
+ }
+ }
+ {
+ int res;
+ Py_ssize_t len;
+ Py_ssize_t i;
+ if (!PyList_Check(tmp)) {
+ PyErr_Format(PyExc_TypeError, "Try field \"body\" must be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp)));
+ goto failed;
+ }
+ len = PyList_GET_SIZE(tmp);
+ body = _Py_asdl_stmt_seq_new(len, arena);
+ if (body == NULL) goto failed;
+ for (i = 0; i < len; i++) {
+ stmt_ty val;
+ PyObject *tmp2 = Py_NewRef(PyList_GET_ITEM(tmp, i));
+ if (_Py_EnterRecursiveCall(" while traversing 'Try' node")) {
+ goto failed;
+ }
+ res = obj2ast_stmt(state, tmp2, &val, arena);
+ _Py_LeaveRecursiveCall();
+ Py_DECREF(tmp2);
+ if (res != 0) goto failed;
+ if (len != PyList_GET_SIZE(tmp)) {
+ PyErr_SetString(PyExc_RuntimeError, "Try field \"body\" changed size during iteration");
+ goto failed;
+ }
+ asdl_seq_SET(body, i, val);
+ }
+ Py_CLEAR(tmp);
+ }
+ if (_PyObject_LookupAttr(obj, state->handlers, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL) {
+ tmp = PyList_New(0);
+ if (tmp == NULL) {
+ return 1;
+ }
+ }
+ {
+ int res;
+ Py_ssize_t len;
+ Py_ssize_t i;
+ if (!PyList_Check(tmp)) {
+ PyErr_Format(PyExc_TypeError, "Try field \"handlers\" must be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp)));
+ goto failed;
+ }
+ len = PyList_GET_SIZE(tmp);
+ handlers = _Py_asdl_excepthandler_seq_new(len, arena);
+ if (handlers == NULL) goto failed;
+ for (i = 0; i < len; i++) {
+ excepthandler_ty val;
+ PyObject *tmp2 = Py_NewRef(PyList_GET_ITEM(tmp, i));
+ if (_Py_EnterRecursiveCall(" while traversing 'Try' node")) {
+ goto failed;
+ }
+ res = obj2ast_excepthandler(state, tmp2, &val, arena);
+ _Py_LeaveRecursiveCall();
+ Py_DECREF(tmp2);
+ if (res != 0) goto failed;
+ if (len != PyList_GET_SIZE(tmp)) {
+ PyErr_SetString(PyExc_RuntimeError, "Try field \"handlers\" changed size during iteration");
+ goto failed;
+ }
+ asdl_seq_SET(handlers, i, val);
+ }
+ Py_CLEAR(tmp);
+ }
+ if (_PyObject_LookupAttr(obj, state->orelse, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL) {
+ tmp = PyList_New(0);
+ if (tmp == NULL) {
+ return 1;
+ }
+ }
+ {
+ int res;
+ Py_ssize_t len;
+ Py_ssize_t i;
+ if (!PyList_Check(tmp)) {
+ PyErr_Format(PyExc_TypeError, "Try field \"orelse\" must be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp)));
+ goto failed;
+ }
+ len = PyList_GET_SIZE(tmp);
+ orelse = _Py_asdl_stmt_seq_new(len, arena);
+ if (orelse == NULL) goto failed;
+ for (i = 0; i < len; i++) {
+ stmt_ty val;
+ PyObject *tmp2 = Py_NewRef(PyList_GET_ITEM(tmp, i));
+ if (_Py_EnterRecursiveCall(" while traversing 'Try' node")) {
+ goto failed;
+ }
+ res = obj2ast_stmt(state, tmp2, &val, arena);
+ _Py_LeaveRecursiveCall();
+ Py_DECREF(tmp2);
+ if (res != 0) goto failed;
+ if (len != PyList_GET_SIZE(tmp)) {
+ PyErr_SetString(PyExc_RuntimeError, "Try field \"orelse\" changed size during iteration");
+ goto failed;
+ }
+ asdl_seq_SET(orelse, i, val);
+ }
+ Py_CLEAR(tmp);
+ }
+ if (_PyObject_LookupAttr(obj, state->finalbody, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL) {
+ tmp = PyList_New(0);
+ if (tmp == NULL) {
+ return 1;
+ }
+ }
+ {
+ int res;
+ Py_ssize_t len;
+ Py_ssize_t i;
+ if (!PyList_Check(tmp)) {
+ PyErr_Format(PyExc_TypeError, "Try field \"finalbody\" must be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp)));
+ goto failed;
+ }
+ len = PyList_GET_SIZE(tmp);
+ finalbody = _Py_asdl_stmt_seq_new(len, arena);
+ if (finalbody == NULL) goto failed;
+ for (i = 0; i < len; i++) {
+ stmt_ty val;
+ PyObject *tmp2 = Py_NewRef(PyList_GET_ITEM(tmp, i));
+ if (_Py_EnterRecursiveCall(" while traversing 'Try' node")) {
+ goto failed;
+ }
+ res = obj2ast_stmt(state, tmp2, &val, arena);
+ _Py_LeaveRecursiveCall();
+ Py_DECREF(tmp2);
+ if (res != 0) goto failed;
+ if (len != PyList_GET_SIZE(tmp)) {
+ PyErr_SetString(PyExc_RuntimeError, "Try field \"finalbody\" changed size during iteration");
+ goto failed;
+ }
+ asdl_seq_SET(finalbody, i, val);
+ }
+ Py_CLEAR(tmp);
+ }
+ *out = _PyAST_Try(body, handlers, orelse, finalbody, lineno,
+ col_offset, end_lineno, end_col_offset, arena);
+ if (*out == NULL) goto failed;
+ return 0;
+ }
+ tp = state->TryStar_type;
+ isinstance = PyObject_IsInstance(obj, tp);
+ if (isinstance == -1) {
+ return 1;
+ }
+ if (isinstance) {
+ asdl_stmt_seq* body;
+ asdl_excepthandler_seq* handlers;
+ asdl_stmt_seq* orelse;
+ asdl_stmt_seq* finalbody;
+
+ if (_PyObject_LookupAttr(obj, state->body, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL) {
+ tmp = PyList_New(0);
+ if (tmp == NULL) {
+ return 1;
+ }
+ }
+ {
+ int res;
+ Py_ssize_t len;
+ Py_ssize_t i;
+ if (!PyList_Check(tmp)) {
+ PyErr_Format(PyExc_TypeError, "TryStar field \"body\" must be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp)));
+ goto failed;
+ }
+ len = PyList_GET_SIZE(tmp);
+ body = _Py_asdl_stmt_seq_new(len, arena);
+ if (body == NULL) goto failed;
+ for (i = 0; i < len; i++) {
+ stmt_ty val;
+ PyObject *tmp2 = Py_NewRef(PyList_GET_ITEM(tmp, i));
+ if (_Py_EnterRecursiveCall(" while traversing 'TryStar' node")) {
+ goto failed;
+ }
+ res = obj2ast_stmt(state, tmp2, &val, arena);
+ _Py_LeaveRecursiveCall();
+ Py_DECREF(tmp2);
+ if (res != 0) goto failed;
+ if (len != PyList_GET_SIZE(tmp)) {
+ PyErr_SetString(PyExc_RuntimeError, "TryStar field \"body\" changed size during iteration");
+ goto failed;
+ }
+ asdl_seq_SET(body, i, val);
+ }
+ Py_CLEAR(tmp);
+ }
+ if (_PyObject_LookupAttr(obj, state->handlers, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL) {
+ tmp = PyList_New(0);
+ if (tmp == NULL) {
+ return 1;
+ }
+ }
+ {
+ int res;
+ Py_ssize_t len;
+ Py_ssize_t i;
+ if (!PyList_Check(tmp)) {
+ PyErr_Format(PyExc_TypeError, "TryStar field \"handlers\" must be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp)));
+ goto failed;
+ }
+ len = PyList_GET_SIZE(tmp);
+ handlers = _Py_asdl_excepthandler_seq_new(len, arena);
+ if (handlers == NULL) goto failed;
+ for (i = 0; i < len; i++) {
+ excepthandler_ty val;
+ PyObject *tmp2 = Py_NewRef(PyList_GET_ITEM(tmp, i));
+ if (_Py_EnterRecursiveCall(" while traversing 'TryStar' node")) {
+ goto failed;
+ }
+ res = obj2ast_excepthandler(state, tmp2, &val, arena);
+ _Py_LeaveRecursiveCall();
+ Py_DECREF(tmp2);
+ if (res != 0) goto failed;
+ if (len != PyList_GET_SIZE(tmp)) {
+ PyErr_SetString(PyExc_RuntimeError, "TryStar field \"handlers\" changed size during iteration");
+ goto failed;
+ }
+ asdl_seq_SET(handlers, i, val);
+ }
+ Py_CLEAR(tmp);
+ }
+ if (_PyObject_LookupAttr(obj, state->orelse, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL) {
+ tmp = PyList_New(0);
+ if (tmp == NULL) {
+ return 1;
+ }
+ }
+ {
+ int res;
+ Py_ssize_t len;
+ Py_ssize_t i;
+ if (!PyList_Check(tmp)) {
+ PyErr_Format(PyExc_TypeError, "TryStar field \"orelse\" must be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp)));
+ goto failed;
+ }
+ len = PyList_GET_SIZE(tmp);
+ orelse = _Py_asdl_stmt_seq_new(len, arena);
+ if (orelse == NULL) goto failed;
+ for (i = 0; i < len; i++) {
+ stmt_ty val;
+ PyObject *tmp2 = Py_NewRef(PyList_GET_ITEM(tmp, i));
+ if (_Py_EnterRecursiveCall(" while traversing 'TryStar' node")) {
+ goto failed;
+ }
+ res = obj2ast_stmt(state, tmp2, &val, arena);
+ _Py_LeaveRecursiveCall();
+ Py_DECREF(tmp2);
+ if (res != 0) goto failed;
+ if (len != PyList_GET_SIZE(tmp)) {
+ PyErr_SetString(PyExc_RuntimeError, "TryStar field \"orelse\" changed size during iteration");
+ goto failed;
+ }
+ asdl_seq_SET(orelse, i, val);
+ }
+ Py_CLEAR(tmp);
+ }
+ if (_PyObject_LookupAttr(obj, state->finalbody, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL) {
+ tmp = PyList_New(0);
+ if (tmp == NULL) {
+ return 1;
+ }
+ }
+ {
+ int res;
+ Py_ssize_t len;
+ Py_ssize_t i;
+ if (!PyList_Check(tmp)) {
+ PyErr_Format(PyExc_TypeError, "TryStar field \"finalbody\" must be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp)));
+ goto failed;
+ }
+ len = PyList_GET_SIZE(tmp);
+ finalbody = _Py_asdl_stmt_seq_new(len, arena);
+ if (finalbody == NULL) goto failed;
+ for (i = 0; i < len; i++) {
+ stmt_ty val;
+ PyObject *tmp2 = Py_NewRef(PyList_GET_ITEM(tmp, i));
+ if (_Py_EnterRecursiveCall(" while traversing 'TryStar' node")) {
+ goto failed;
+ }
+ res = obj2ast_stmt(state, tmp2, &val, arena);
+ _Py_LeaveRecursiveCall();
+ Py_DECREF(tmp2);
+ if (res != 0) goto failed;
+ if (len != PyList_GET_SIZE(tmp)) {
+ PyErr_SetString(PyExc_RuntimeError, "TryStar field \"finalbody\" changed size during iteration");
+ goto failed;
+ }
+ asdl_seq_SET(finalbody, i, val);
+ }
+ Py_CLEAR(tmp);
+ }
+ *out = _PyAST_TryStar(body, handlers, orelse, finalbody, lineno,
+ col_offset, end_lineno, end_col_offset, arena);
+ if (*out == NULL) goto failed;
+ return 0;
+ }
+ tp = state->Assert_type;
+ isinstance = PyObject_IsInstance(obj, tp);
+ if (isinstance == -1) {
+ return 1;
+ }
+ if (isinstance) {
+ expr_ty test;
+ expr_ty msg;
+
+ if (_PyObject_LookupAttr(obj, state->test, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL) {
+ PyErr_SetString(PyExc_TypeError, "required field \"test\" missing from Assert");
+ return 1;
+ }
+ else {
+ int res;
+ if (_Py_EnterRecursiveCall(" while traversing 'Assert' node")) {
+ goto failed;
+ }
+ res = obj2ast_expr(state, tmp, &test, arena);
+ _Py_LeaveRecursiveCall();
+ if (res != 0) goto failed;
+ Py_CLEAR(tmp);
+ }
+ if (_PyObject_LookupAttr(obj, state->msg, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL || tmp == Py_None) {
+ Py_CLEAR(tmp);
+ msg = NULL;
+ }
+ else {
+ int res;
+ if (_Py_EnterRecursiveCall(" while traversing 'Assert' node")) {
+ goto failed;
+ }
+ res = obj2ast_expr(state, tmp, &msg, arena);
+ _Py_LeaveRecursiveCall();
+ if (res != 0) goto failed;
+ Py_CLEAR(tmp);
+ }
+ *out = _PyAST_Assert(test, msg, lineno, col_offset, end_lineno,
+ end_col_offset, arena);
+ if (*out == NULL) goto failed;
+ return 0;
+ }
+ tp = state->Import_type;
+ isinstance = PyObject_IsInstance(obj, tp);
+ if (isinstance == -1) {
+ return 1;
+ }
+ if (isinstance) {
+ asdl_alias_seq* names;
+
+ if (_PyObject_LookupAttr(obj, state->names, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL) {
+ tmp = PyList_New(0);
+ if (tmp == NULL) {
+ return 1;
+ }
+ }
+ {
+ int res;
+ Py_ssize_t len;
+ Py_ssize_t i;
+ if (!PyList_Check(tmp)) {
+ PyErr_Format(PyExc_TypeError, "Import field \"names\" must be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp)));
+ goto failed;
+ }
+ len = PyList_GET_SIZE(tmp);
+ names = _Py_asdl_alias_seq_new(len, arena);
+ if (names == NULL) goto failed;
+ for (i = 0; i < len; i++) {
+ alias_ty val;
+ PyObject *tmp2 = Py_NewRef(PyList_GET_ITEM(tmp, i));
+ if (_Py_EnterRecursiveCall(" while traversing 'Import' node")) {
+ goto failed;
+ }
+ res = obj2ast_alias(state, tmp2, &val, arena);
+ _Py_LeaveRecursiveCall();
+ Py_DECREF(tmp2);
+ if (res != 0) goto failed;
+ if (len != PyList_GET_SIZE(tmp)) {
+ PyErr_SetString(PyExc_RuntimeError, "Import field \"names\" changed size during iteration");
+ goto failed;
+ }
+ asdl_seq_SET(names, i, val);
+ }
+ Py_CLEAR(tmp);
+ }
+ *out = _PyAST_Import(names, lineno, col_offset, end_lineno,
+ end_col_offset, arena);
+ if (*out == NULL) goto failed;
+ return 0;
+ }
+ tp = state->ImportFrom_type;
+ isinstance = PyObject_IsInstance(obj, tp);
+ if (isinstance == -1) {
+ return 1;
+ }
+ if (isinstance) {
+ identifier module;
+ asdl_alias_seq* names;
+ int level;
+
+ if (_PyObject_LookupAttr(obj, state->module, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL || tmp == Py_None) {
+ Py_CLEAR(tmp);
+ module = NULL;
+ }
+ else {
+ int res;
+ if (_Py_EnterRecursiveCall(" while traversing 'ImportFrom' node")) {
+ goto failed;
+ }
+ res = obj2ast_identifier(state, tmp, &module, arena);
+ _Py_LeaveRecursiveCall();
+ if (res != 0) goto failed;
+ Py_CLEAR(tmp);
+ }
+ if (_PyObject_LookupAttr(obj, state->names, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL) {
+ tmp = PyList_New(0);
+ if (tmp == NULL) {
+ return 1;
+ }
+ }
+ {
+ int res;
+ Py_ssize_t len;
+ Py_ssize_t i;
+ if (!PyList_Check(tmp)) {
+ PyErr_Format(PyExc_TypeError, "ImportFrom field \"names\" must be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp)));
+ goto failed;
+ }
+ len = PyList_GET_SIZE(tmp);
+ names = _Py_asdl_alias_seq_new(len, arena);
+ if (names == NULL) goto failed;
+ for (i = 0; i < len; i++) {
+ alias_ty val;
+ PyObject *tmp2 = Py_NewRef(PyList_GET_ITEM(tmp, i));
+ if (_Py_EnterRecursiveCall(" while traversing 'ImportFrom' node")) {
+ goto failed;
+ }
+ res = obj2ast_alias(state, tmp2, &val, arena);
+ _Py_LeaveRecursiveCall();
+ Py_DECREF(tmp2);
+ if (res != 0) goto failed;
+ if (len != PyList_GET_SIZE(tmp)) {
+ PyErr_SetString(PyExc_RuntimeError, "ImportFrom field \"names\" changed size during iteration");
+ goto failed;
+ }
+ asdl_seq_SET(names, i, val);
+ }
+ Py_CLEAR(tmp);
+ }
+ if (_PyObject_LookupAttr(obj, state->level, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL || tmp == Py_None) {
+ Py_CLEAR(tmp);
+ level = 0;
+ }
+ else {
+ int res;
+ if (_Py_EnterRecursiveCall(" while traversing 'ImportFrom' node")) {
+ goto failed;
+ }
+ res = obj2ast_int(state, tmp, &level, arena);
+ _Py_LeaveRecursiveCall();
+ if (res != 0) goto failed;
+ Py_CLEAR(tmp);
+ }
+ *out = _PyAST_ImportFrom(module, names, level, lineno, col_offset,
+ end_lineno, end_col_offset, arena);
+ if (*out == NULL) goto failed;
+ return 0;
+ }
+ tp = state->Global_type;
+ isinstance = PyObject_IsInstance(obj, tp);
+ if (isinstance == -1) {
+ return 1;
+ }
+ if (isinstance) {
+ asdl_identifier_seq* names;
+
+ if (_PyObject_LookupAttr(obj, state->names, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL) {
+ tmp = PyList_New(0);
+ if (tmp == NULL) {
+ return 1;
+ }
+ }
+ {
+ int res;
+ Py_ssize_t len;
+ Py_ssize_t i;
+ if (!PyList_Check(tmp)) {
+ PyErr_Format(PyExc_TypeError, "Global field \"names\" must be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp)));
+ goto failed;
+ }
+ len = PyList_GET_SIZE(tmp);
+ names = _Py_asdl_identifier_seq_new(len, arena);
+ if (names == NULL) goto failed;
+ for (i = 0; i < len; i++) {
+ identifier val;
+ PyObject *tmp2 = Py_NewRef(PyList_GET_ITEM(tmp, i));
+ if (_Py_EnterRecursiveCall(" while traversing 'Global' node")) {
+ goto failed;
+ }
+ res = obj2ast_identifier(state, tmp2, &val, arena);
+ _Py_LeaveRecursiveCall();
+ Py_DECREF(tmp2);
+ if (res != 0) goto failed;
+ if (len != PyList_GET_SIZE(tmp)) {
+ PyErr_SetString(PyExc_RuntimeError, "Global field \"names\" changed size during iteration");
+ goto failed;
+ }
+ asdl_seq_SET(names, i, val);
+ }
+ Py_CLEAR(tmp);
+ }
+ *out = _PyAST_Global(names, lineno, col_offset, end_lineno,
+ end_col_offset, arena);
+ if (*out == NULL) goto failed;
+ return 0;
+ }
+ tp = state->Nonlocal_type;
+ isinstance = PyObject_IsInstance(obj, tp);
+ if (isinstance == -1) {
+ return 1;
+ }
+ if (isinstance) {
+ asdl_identifier_seq* names;
+
+ if (_PyObject_LookupAttr(obj, state->names, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL) {
+ tmp = PyList_New(0);
+ if (tmp == NULL) {
+ return 1;
+ }
+ }
+ {
+ int res;
+ Py_ssize_t len;
+ Py_ssize_t i;
+ if (!PyList_Check(tmp)) {
+ PyErr_Format(PyExc_TypeError, "Nonlocal field \"names\" must be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp)));
+ goto failed;
+ }
+ len = PyList_GET_SIZE(tmp);
+ names = _Py_asdl_identifier_seq_new(len, arena);
+ if (names == NULL) goto failed;
+ for (i = 0; i < len; i++) {
+ identifier val;
+ PyObject *tmp2 = Py_NewRef(PyList_GET_ITEM(tmp, i));
+ if (_Py_EnterRecursiveCall(" while traversing 'Nonlocal' node")) {
+ goto failed;
+ }
+ res = obj2ast_identifier(state, tmp2, &val, arena);
+ _Py_LeaveRecursiveCall();
+ Py_DECREF(tmp2);
+ if (res != 0) goto failed;
+ if (len != PyList_GET_SIZE(tmp)) {
+ PyErr_SetString(PyExc_RuntimeError, "Nonlocal field \"names\" changed size during iteration");
+ goto failed;
+ }
+ asdl_seq_SET(names, i, val);
+ }
+ Py_CLEAR(tmp);
+ }
+ *out = _PyAST_Nonlocal(names, lineno, col_offset, end_lineno,
+ end_col_offset, arena);
+ if (*out == NULL) goto failed;
+ return 0;
+ }
+ tp = state->Expr_type;
+ isinstance = PyObject_IsInstance(obj, tp);
+ if (isinstance == -1) {
+ return 1;
+ }
+ if (isinstance) {
+ expr_ty value;
+
+ if (_PyObject_LookupAttr(obj, state->value, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL) {
+ PyErr_SetString(PyExc_TypeError, "required field \"value\" missing from Expr");
+ return 1;
+ }
+ else {
+ int res;
+ if (_Py_EnterRecursiveCall(" while traversing 'Expr' node")) {
+ goto failed;
+ }
+ res = obj2ast_expr(state, tmp, &value, arena);
+ _Py_LeaveRecursiveCall();
+ if (res != 0) goto failed;
+ Py_CLEAR(tmp);
+ }
+ *out = _PyAST_Expr(value, lineno, col_offset, end_lineno,
+ end_col_offset, arena);
+ if (*out == NULL) goto failed;
+ return 0;
+ }
+ tp = state->Pass_type;
+ isinstance = PyObject_IsInstance(obj, tp);
+ if (isinstance == -1) {
+ return 1;
+ }
+ if (isinstance) {
+
+ *out = _PyAST_Pass(lineno, col_offset, end_lineno, end_col_offset,
+ arena);
+ if (*out == NULL) goto failed;
+ return 0;
+ }
+ tp = state->Break_type;
+ isinstance = PyObject_IsInstance(obj, tp);
+ if (isinstance == -1) {
+ return 1;
+ }
+ if (isinstance) {
+
+ *out = _PyAST_Break(lineno, col_offset, end_lineno, end_col_offset,
+ arena);
+ if (*out == NULL) goto failed;
+ return 0;
+ }
+ tp = state->Continue_type;
+ isinstance = PyObject_IsInstance(obj, tp);
+ if (isinstance == -1) {
+ return 1;
+ }
+ if (isinstance) {
+
+ *out = _PyAST_Continue(lineno, col_offset, end_lineno, end_col_offset,
+ arena);
+ if (*out == NULL) goto failed;
+ return 0;
+ }
+
+ PyErr_Format(PyExc_TypeError, "expected some sort of stmt, but got %R", obj);
+ failed:
+ Py_XDECREF(tmp);
+ return 1;
+}
+
+int
+obj2ast_expr(struct ast_state *state, PyObject* obj, expr_ty* out, PyArena*
+ arena)
+{
+ int isinstance;
+
+ PyObject *tmp = NULL;
+ PyObject *tp;
+ int lineno;
+ int col_offset;
+ int end_lineno;
+ int end_col_offset;
+
+ if (obj == Py_None) {
+ *out = NULL;
+ return 0;
+ }
+ if (_PyObject_LookupAttr(obj, state->lineno, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL) {
+ PyErr_SetString(PyExc_TypeError, "required field \"lineno\" missing from expr");
+ return 1;
+ }
+ else {
+ int res;
+ if (_Py_EnterRecursiveCall(" while traversing 'expr' node")) {
+ goto failed;
+ }
+ res = obj2ast_int(state, tmp, &lineno, arena);
+ _Py_LeaveRecursiveCall();
+ if (res != 0) goto failed;
+ Py_CLEAR(tmp);
+ }
+ if (_PyObject_LookupAttr(obj, state->col_offset, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL) {
+ PyErr_SetString(PyExc_TypeError, "required field \"col_offset\" missing from expr");
+ return 1;
+ }
+ else {
+ int res;
+ if (_Py_EnterRecursiveCall(" while traversing 'expr' node")) {
+ goto failed;
+ }
+ res = obj2ast_int(state, tmp, &col_offset, arena);
+ _Py_LeaveRecursiveCall();
+ if (res != 0) goto failed;
+ Py_CLEAR(tmp);
+ }
+ if (_PyObject_LookupAttr(obj, state->end_lineno, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL || tmp == Py_None) {
+ Py_CLEAR(tmp);
+ end_lineno = lineno;
+ }
+ else {
+ int res;
+ if (_Py_EnterRecursiveCall(" while traversing 'expr' node")) {
+ goto failed;
+ }
+ res = obj2ast_int(state, tmp, &end_lineno, arena);
+ _Py_LeaveRecursiveCall();
+ if (res != 0) goto failed;
+ Py_CLEAR(tmp);
+ }
+ if (_PyObject_LookupAttr(obj, state->end_col_offset, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL || tmp == Py_None) {
+ Py_CLEAR(tmp);
+ end_col_offset = col_offset;
+ }
+ else {
+ int res;
+ if (_Py_EnterRecursiveCall(" while traversing 'expr' node")) {
+ goto failed;
+ }
+ res = obj2ast_int(state, tmp, &end_col_offset, arena);
+ _Py_LeaveRecursiveCall();
+ if (res != 0) goto failed;
+ Py_CLEAR(tmp);
+ }
+ tp = state->BoolOp_type;
+ isinstance = PyObject_IsInstance(obj, tp);
+ if (isinstance == -1) {
+ return 1;
+ }
+ if (isinstance) {
+ boolop_ty op;
+ asdl_expr_seq* values;
+
+ if (_PyObject_LookupAttr(obj, state->op, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL) {
+ PyErr_SetString(PyExc_TypeError, "required field \"op\" missing from BoolOp");
+ return 1;
+ }
+ else {
+ int res;
+ if (_Py_EnterRecursiveCall(" while traversing 'BoolOp' node")) {
+ goto failed;
+ }
+ res = obj2ast_boolop(state, tmp, &op, arena);
+ _Py_LeaveRecursiveCall();
+ if (res != 0) goto failed;
+ Py_CLEAR(tmp);
+ }
+ if (_PyObject_LookupAttr(obj, state->values, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL) {
+ tmp = PyList_New(0);
+ if (tmp == NULL) {
+ return 1;
+ }
+ }
+ {
+ int res;
+ Py_ssize_t len;
+ Py_ssize_t i;
+ if (!PyList_Check(tmp)) {
+ PyErr_Format(PyExc_TypeError, "BoolOp field \"values\" must be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp)));
+ goto failed;
+ }
+ len = PyList_GET_SIZE(tmp);
+ values = _Py_asdl_expr_seq_new(len, arena);
+ if (values == NULL) goto failed;
+ for (i = 0; i < len; i++) {
+ expr_ty val;
+ PyObject *tmp2 = Py_NewRef(PyList_GET_ITEM(tmp, i));
+ if (_Py_EnterRecursiveCall(" while traversing 'BoolOp' node")) {
+ goto failed;
+ }
+ res = obj2ast_expr(state, tmp2, &val, arena);
+ _Py_LeaveRecursiveCall();
+ Py_DECREF(tmp2);
+ if (res != 0) goto failed;
+ if (len != PyList_GET_SIZE(tmp)) {
+ PyErr_SetString(PyExc_RuntimeError, "BoolOp field \"values\" changed size during iteration");
+ goto failed;
+ }
+ asdl_seq_SET(values, i, val);
+ }
+ Py_CLEAR(tmp);
+ }
+ *out = _PyAST_BoolOp(op, values, lineno, col_offset, end_lineno,
+ end_col_offset, arena);
+ if (*out == NULL) goto failed;
+ return 0;
+ }
+ tp = state->NamedExpr_type;
+ isinstance = PyObject_IsInstance(obj, tp);
+ if (isinstance == -1) {
+ return 1;
+ }
+ if (isinstance) {
+ expr_ty target;
+ expr_ty value;
+
+ if (_PyObject_LookupAttr(obj, state->target, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL) {
+ PyErr_SetString(PyExc_TypeError, "required field \"target\" missing from NamedExpr");
+ return 1;
+ }
+ else {
+ int res;
+ if (_Py_EnterRecursiveCall(" while traversing 'NamedExpr' node")) {
+ goto failed;
+ }
+ res = obj2ast_expr(state, tmp, &target, arena);
+ _Py_LeaveRecursiveCall();
+ if (res != 0) goto failed;
+ Py_CLEAR(tmp);
+ }
+ if (_PyObject_LookupAttr(obj, state->value, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL) {
+ PyErr_SetString(PyExc_TypeError, "required field \"value\" missing from NamedExpr");
+ return 1;
+ }
+ else {
+ int res;
+ if (_Py_EnterRecursiveCall(" while traversing 'NamedExpr' node")) {
+ goto failed;
+ }
+ res = obj2ast_expr(state, tmp, &value, arena);
+ _Py_LeaveRecursiveCall();
+ if (res != 0) goto failed;
+ Py_CLEAR(tmp);
+ }
+ *out = _PyAST_NamedExpr(target, value, lineno, col_offset, end_lineno,
+ end_col_offset, arena);
+ if (*out == NULL) goto failed;
+ return 0;
+ }
+ tp = state->BinOp_type;
+ isinstance = PyObject_IsInstance(obj, tp);
+ if (isinstance == -1) {
+ return 1;
+ }
+ if (isinstance) {
+ expr_ty left;
+ operator_ty op;
+ expr_ty right;
+
+ if (_PyObject_LookupAttr(obj, state->left, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL) {
+ PyErr_SetString(PyExc_TypeError, "required field \"left\" missing from BinOp");
+ return 1;
+ }
+ else {
+ int res;
+ if (_Py_EnterRecursiveCall(" while traversing 'BinOp' node")) {
+ goto failed;
+ }
+ res = obj2ast_expr(state, tmp, &left, arena);
+ _Py_LeaveRecursiveCall();
+ if (res != 0) goto failed;
+ Py_CLEAR(tmp);
+ }
+ if (_PyObject_LookupAttr(obj, state->op, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL) {
+ PyErr_SetString(PyExc_TypeError, "required field \"op\" missing from BinOp");
+ return 1;
+ }
+ else {
+ int res;
+ if (_Py_EnterRecursiveCall(" while traversing 'BinOp' node")) {
+ goto failed;
+ }
+ res = obj2ast_operator(state, tmp, &op, arena);
+ _Py_LeaveRecursiveCall();
+ if (res != 0) goto failed;
+ Py_CLEAR(tmp);
+ }
+ if (_PyObject_LookupAttr(obj, state->right, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL) {
+ PyErr_SetString(PyExc_TypeError, "required field \"right\" missing from BinOp");
+ return 1;
+ }
+ else {
+ int res;
+ if (_Py_EnterRecursiveCall(" while traversing 'BinOp' node")) {
+ goto failed;
+ }
+ res = obj2ast_expr(state, tmp, &right, arena);
+ _Py_LeaveRecursiveCall();
+ if (res != 0) goto failed;
+ Py_CLEAR(tmp);
+ }
+ *out = _PyAST_BinOp(left, op, right, lineno, col_offset, end_lineno,
+ end_col_offset, arena);
+ if (*out == NULL) goto failed;
+ return 0;
+ }
+ tp = state->UnaryOp_type;
+ isinstance = PyObject_IsInstance(obj, tp);
+ if (isinstance == -1) {
+ return 1;
+ }
+ if (isinstance) {
+ unaryop_ty op;
+ expr_ty operand;
+
+ if (_PyObject_LookupAttr(obj, state->op, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL) {
+ PyErr_SetString(PyExc_TypeError, "required field \"op\" missing from UnaryOp");
+ return 1;
+ }
+ else {
+ int res;
+ if (_Py_EnterRecursiveCall(" while traversing 'UnaryOp' node")) {
+ goto failed;
+ }
+ res = obj2ast_unaryop(state, tmp, &op, arena);
+ _Py_LeaveRecursiveCall();
+ if (res != 0) goto failed;
+ Py_CLEAR(tmp);
+ }
+ if (_PyObject_LookupAttr(obj, state->operand, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL) {
+ PyErr_SetString(PyExc_TypeError, "required field \"operand\" missing from UnaryOp");
+ return 1;
+ }
+ else {
+ int res;
+ if (_Py_EnterRecursiveCall(" while traversing 'UnaryOp' node")) {
+ goto failed;
+ }
+ res = obj2ast_expr(state, tmp, &operand, arena);
+ _Py_LeaveRecursiveCall();
+ if (res != 0) goto failed;
+ Py_CLEAR(tmp);
+ }
+ *out = _PyAST_UnaryOp(op, operand, lineno, col_offset, end_lineno,
+ end_col_offset, arena);
+ if (*out == NULL) goto failed;
+ return 0;
+ }
+ tp = state->Lambda_type;
+ isinstance = PyObject_IsInstance(obj, tp);
+ if (isinstance == -1) {
+ return 1;
+ }
+ if (isinstance) {
+ arguments_ty args;
+ expr_ty body;
+
+ if (_PyObject_LookupAttr(obj, state->args, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL) {
+ PyErr_SetString(PyExc_TypeError, "required field \"args\" missing from Lambda");
+ return 1;
+ }
+ else {
+ int res;
+ if (_Py_EnterRecursiveCall(" while traversing 'Lambda' node")) {
+ goto failed;
+ }
+ res = obj2ast_arguments(state, tmp, &args, arena);
+ _Py_LeaveRecursiveCall();
+ if (res != 0) goto failed;
+ Py_CLEAR(tmp);
+ }
+ if (_PyObject_LookupAttr(obj, state->body, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL) {
+ PyErr_SetString(PyExc_TypeError, "required field \"body\" missing from Lambda");
+ return 1;
+ }
+ else {
+ int res;
+ if (_Py_EnterRecursiveCall(" while traversing 'Lambda' node")) {
+ goto failed;
+ }
+ res = obj2ast_expr(state, tmp, &body, arena);
+ _Py_LeaveRecursiveCall();
+ if (res != 0) goto failed;
+ Py_CLEAR(tmp);
+ }
+ *out = _PyAST_Lambda(args, body, lineno, col_offset, end_lineno,
+ end_col_offset, arena);
+ if (*out == NULL) goto failed;
+ return 0;
+ }
+ tp = state->IfExp_type;
+ isinstance = PyObject_IsInstance(obj, tp);
+ if (isinstance == -1) {
+ return 1;
+ }
+ if (isinstance) {
+ expr_ty test;
+ expr_ty body;
+ expr_ty orelse;
+
+ if (_PyObject_LookupAttr(obj, state->test, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL) {
+ PyErr_SetString(PyExc_TypeError, "required field \"test\" missing from IfExp");
+ return 1;
+ }
+ else {
+ int res;
+ if (_Py_EnterRecursiveCall(" while traversing 'IfExp' node")) {
+ goto failed;
+ }
+ res = obj2ast_expr(state, tmp, &test, arena);
+ _Py_LeaveRecursiveCall();
+ if (res != 0) goto failed;
+ Py_CLEAR(tmp);
+ }
+ if (_PyObject_LookupAttr(obj, state->body, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL) {
+ PyErr_SetString(PyExc_TypeError, "required field \"body\" missing from IfExp");
+ return 1;
+ }
+ else {
+ int res;
+ if (_Py_EnterRecursiveCall(" while traversing 'IfExp' node")) {
+ goto failed;
+ }
+ res = obj2ast_expr(state, tmp, &body, arena);
+ _Py_LeaveRecursiveCall();
+ if (res != 0) goto failed;
+ Py_CLEAR(tmp);
+ }
+ if (_PyObject_LookupAttr(obj, state->orelse, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL) {
+ PyErr_SetString(PyExc_TypeError, "required field \"orelse\" missing from IfExp");
+ return 1;
+ }
+ else {
+ int res;
+ if (_Py_EnterRecursiveCall(" while traversing 'IfExp' node")) {
+ goto failed;
+ }
+ res = obj2ast_expr(state, tmp, &orelse, arena);
+ _Py_LeaveRecursiveCall();
+ if (res != 0) goto failed;
+ Py_CLEAR(tmp);
+ }
+ *out = _PyAST_IfExp(test, body, orelse, lineno, col_offset, end_lineno,
+ end_col_offset, arena);
+ if (*out == NULL) goto failed;
+ return 0;
+ }
+ tp = state->Dict_type;
+ isinstance = PyObject_IsInstance(obj, tp);
+ if (isinstance == -1) {
+ return 1;
+ }
+ if (isinstance) {
+ asdl_expr_seq* keys;
+ asdl_expr_seq* values;
+
+ if (_PyObject_LookupAttr(obj, state->keys, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL) {
+ tmp = PyList_New(0);
+ if (tmp == NULL) {
+ return 1;
+ }
+ }
+ {
+ int res;
+ Py_ssize_t len;
+ Py_ssize_t i;
+ if (!PyList_Check(tmp)) {
+ PyErr_Format(PyExc_TypeError, "Dict field \"keys\" must be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp)));
+ goto failed;
+ }
+ len = PyList_GET_SIZE(tmp);
+ keys = _Py_asdl_expr_seq_new(len, arena);
+ if (keys == NULL) goto failed;
+ for (i = 0; i < len; i++) {
+ expr_ty val;
+ PyObject *tmp2 = Py_NewRef(PyList_GET_ITEM(tmp, i));
+ if (_Py_EnterRecursiveCall(" while traversing 'Dict' node")) {
+ goto failed;
+ }
+ res = obj2ast_expr(state, tmp2, &val, arena);
+ _Py_LeaveRecursiveCall();
+ Py_DECREF(tmp2);
+ if (res != 0) goto failed;
+ if (len != PyList_GET_SIZE(tmp)) {
+ PyErr_SetString(PyExc_RuntimeError, "Dict field \"keys\" changed size during iteration");
+ goto failed;
+ }
+ asdl_seq_SET(keys, i, val);
+ }
+ Py_CLEAR(tmp);
+ }
+ if (_PyObject_LookupAttr(obj, state->values, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL) {
+ tmp = PyList_New(0);
+ if (tmp == NULL) {
+ return 1;
+ }
+ }
+ {
+ int res;
+ Py_ssize_t len;
+ Py_ssize_t i;
+ if (!PyList_Check(tmp)) {
+ PyErr_Format(PyExc_TypeError, "Dict field \"values\" must be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp)));
+ goto failed;
+ }
+ len = PyList_GET_SIZE(tmp);
+ values = _Py_asdl_expr_seq_new(len, arena);
+ if (values == NULL) goto failed;
+ for (i = 0; i < len; i++) {
+ expr_ty val;
+ PyObject *tmp2 = Py_NewRef(PyList_GET_ITEM(tmp, i));
+ if (_Py_EnterRecursiveCall(" while traversing 'Dict' node")) {
+ goto failed;
+ }
+ res = obj2ast_expr(state, tmp2, &val, arena);
+ _Py_LeaveRecursiveCall();
+ Py_DECREF(tmp2);
+ if (res != 0) goto failed;
+ if (len != PyList_GET_SIZE(tmp)) {
+ PyErr_SetString(PyExc_RuntimeError, "Dict field \"values\" changed size during iteration");
+ goto failed;
+ }
+ asdl_seq_SET(values, i, val);
+ }
+ Py_CLEAR(tmp);
+ }
+ *out = _PyAST_Dict(keys, values, lineno, col_offset, end_lineno,
+ end_col_offset, arena);
+ if (*out == NULL) goto failed;
+ return 0;
+ }
+ tp = state->Set_type;
+ isinstance = PyObject_IsInstance(obj, tp);
+ if (isinstance == -1) {
+ return 1;
+ }
+ if (isinstance) {
+ asdl_expr_seq* elts;
+
+ if (_PyObject_LookupAttr(obj, state->elts, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL) {
+ tmp = PyList_New(0);
+ if (tmp == NULL) {
+ return 1;
+ }
+ }
+ {
+ int res;
+ Py_ssize_t len;
+ Py_ssize_t i;
+ if (!PyList_Check(tmp)) {
+ PyErr_Format(PyExc_TypeError, "Set field \"elts\" must be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp)));
+ goto failed;
+ }
+ len = PyList_GET_SIZE(tmp);
+ elts = _Py_asdl_expr_seq_new(len, arena);
+ if (elts == NULL) goto failed;
+ for (i = 0; i < len; i++) {
+ expr_ty val;
+ PyObject *tmp2 = Py_NewRef(PyList_GET_ITEM(tmp, i));
+ if (_Py_EnterRecursiveCall(" while traversing 'Set' node")) {
+ goto failed;
+ }
+ res = obj2ast_expr(state, tmp2, &val, arena);
+ _Py_LeaveRecursiveCall();
+ Py_DECREF(tmp2);
+ if (res != 0) goto failed;
+ if (len != PyList_GET_SIZE(tmp)) {
+ PyErr_SetString(PyExc_RuntimeError, "Set field \"elts\" changed size during iteration");
+ goto failed;
+ }
+ asdl_seq_SET(elts, i, val);
+ }
+ Py_CLEAR(tmp);
+ }
+ *out = _PyAST_Set(elts, lineno, col_offset, end_lineno, end_col_offset,
+ arena);
+ if (*out == NULL) goto failed;
+ return 0;
+ }
+ tp = state->ListComp_type;
+ isinstance = PyObject_IsInstance(obj, tp);
+ if (isinstance == -1) {
+ return 1;
+ }
+ if (isinstance) {
+ expr_ty elt;
+ asdl_comprehension_seq* generators;
+
+ if (_PyObject_LookupAttr(obj, state->elt, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL) {
+ PyErr_SetString(PyExc_TypeError, "required field \"elt\" missing from ListComp");
+ return 1;
+ }
+ else {
+ int res;
+ if (_Py_EnterRecursiveCall(" while traversing 'ListComp' node")) {
+ goto failed;
+ }
+ res = obj2ast_expr(state, tmp, &elt, arena);
+ _Py_LeaveRecursiveCall();
+ if (res != 0) goto failed;
+ Py_CLEAR(tmp);
+ }
+ if (_PyObject_LookupAttr(obj, state->generators, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL) {
+ tmp = PyList_New(0);
+ if (tmp == NULL) {
+ return 1;
+ }
+ }
+ {
+ int res;
+ Py_ssize_t len;
+ Py_ssize_t i;
+ if (!PyList_Check(tmp)) {
+ PyErr_Format(PyExc_TypeError, "ListComp field \"generators\" must be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp)));
+ goto failed;
+ }
+ len = PyList_GET_SIZE(tmp);
+ generators = _Py_asdl_comprehension_seq_new(len, arena);
+ if (generators == NULL) goto failed;
+ for (i = 0; i < len; i++) {
+ comprehension_ty val;
+ PyObject *tmp2 = Py_NewRef(PyList_GET_ITEM(tmp, i));
+ if (_Py_EnterRecursiveCall(" while traversing 'ListComp' node")) {
+ goto failed;
+ }
+ res = obj2ast_comprehension(state, tmp2, &val, arena);
+ _Py_LeaveRecursiveCall();
+ Py_DECREF(tmp2);
+ if (res != 0) goto failed;
+ if (len != PyList_GET_SIZE(tmp)) {
+ PyErr_SetString(PyExc_RuntimeError, "ListComp field \"generators\" changed size during iteration");
+ goto failed;
+ }
+ asdl_seq_SET(generators, i, val);
+ }
+ Py_CLEAR(tmp);
+ }
+ *out = _PyAST_ListComp(elt, generators, lineno, col_offset, end_lineno,
+ end_col_offset, arena);
+ if (*out == NULL) goto failed;
+ return 0;
+ }
+ tp = state->SetComp_type;
+ isinstance = PyObject_IsInstance(obj, tp);
+ if (isinstance == -1) {
+ return 1;
+ }
+ if (isinstance) {
+ expr_ty elt;
+ asdl_comprehension_seq* generators;
+
+ if (_PyObject_LookupAttr(obj, state->elt, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL) {
+ PyErr_SetString(PyExc_TypeError, "required field \"elt\" missing from SetComp");
+ return 1;
+ }
+ else {
+ int res;
+ if (_Py_EnterRecursiveCall(" while traversing 'SetComp' node")) {
+ goto failed;
+ }
+ res = obj2ast_expr(state, tmp, &elt, arena);
+ _Py_LeaveRecursiveCall();
+ if (res != 0) goto failed;
+ Py_CLEAR(tmp);
+ }
+ if (_PyObject_LookupAttr(obj, state->generators, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL) {
+ tmp = PyList_New(0);
+ if (tmp == NULL) {
+ return 1;
+ }
+ }
+ {
+ int res;
+ Py_ssize_t len;
+ Py_ssize_t i;
+ if (!PyList_Check(tmp)) {
+ PyErr_Format(PyExc_TypeError, "SetComp field \"generators\" must be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp)));
+ goto failed;
+ }
+ len = PyList_GET_SIZE(tmp);
+ generators = _Py_asdl_comprehension_seq_new(len, arena);
+ if (generators == NULL) goto failed;
+ for (i = 0; i < len; i++) {
+ comprehension_ty val;
+ PyObject *tmp2 = Py_NewRef(PyList_GET_ITEM(tmp, i));
+ if (_Py_EnterRecursiveCall(" while traversing 'SetComp' node")) {
+ goto failed;
+ }
+ res = obj2ast_comprehension(state, tmp2, &val, arena);
+ _Py_LeaveRecursiveCall();
+ Py_DECREF(tmp2);
+ if (res != 0) goto failed;
+ if (len != PyList_GET_SIZE(tmp)) {
+ PyErr_SetString(PyExc_RuntimeError, "SetComp field \"generators\" changed size during iteration");
+ goto failed;
+ }
+ asdl_seq_SET(generators, i, val);
+ }
+ Py_CLEAR(tmp);
+ }
+ *out = _PyAST_SetComp(elt, generators, lineno, col_offset, end_lineno,
+ end_col_offset, arena);
+ if (*out == NULL) goto failed;
+ return 0;
+ }
+ tp = state->DictComp_type;
+ isinstance = PyObject_IsInstance(obj, tp);
+ if (isinstance == -1) {
+ return 1;
+ }
+ if (isinstance) {
+ expr_ty key;
+ expr_ty value;
+ asdl_comprehension_seq* generators;
+
+ if (_PyObject_LookupAttr(obj, state->key, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL) {
+ PyErr_SetString(PyExc_TypeError, "required field \"key\" missing from DictComp");
+ return 1;
+ }
+ else {
+ int res;
+ if (_Py_EnterRecursiveCall(" while traversing 'DictComp' node")) {
+ goto failed;
+ }
+ res = obj2ast_expr(state, tmp, &key, arena);
+ _Py_LeaveRecursiveCall();
+ if (res != 0) goto failed;
+ Py_CLEAR(tmp);
+ }
+ if (_PyObject_LookupAttr(obj, state->value, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL) {
+ PyErr_SetString(PyExc_TypeError, "required field \"value\" missing from DictComp");
+ return 1;
+ }
+ else {
+ int res;
+ if (_Py_EnterRecursiveCall(" while traversing 'DictComp' node")) {
+ goto failed;
+ }
+ res = obj2ast_expr(state, tmp, &value, arena);
+ _Py_LeaveRecursiveCall();
+ if (res != 0) goto failed;
+ Py_CLEAR(tmp);
+ }
+ if (_PyObject_LookupAttr(obj, state->generators, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL) {
+ tmp = PyList_New(0);
+ if (tmp == NULL) {
+ return 1;
+ }
+ }
+ {
+ int res;
+ Py_ssize_t len;
+ Py_ssize_t i;
+ if (!PyList_Check(tmp)) {
+ PyErr_Format(PyExc_TypeError, "DictComp field \"generators\" must be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp)));
+ goto failed;
+ }
+ len = PyList_GET_SIZE(tmp);
+ generators = _Py_asdl_comprehension_seq_new(len, arena);
+ if (generators == NULL) goto failed;
+ for (i = 0; i < len; i++) {
+ comprehension_ty val;
+ PyObject *tmp2 = Py_NewRef(PyList_GET_ITEM(tmp, i));
+ if (_Py_EnterRecursiveCall(" while traversing 'DictComp' node")) {
+ goto failed;
+ }
+ res = obj2ast_comprehension(state, tmp2, &val, arena);
+ _Py_LeaveRecursiveCall();
+ Py_DECREF(tmp2);
+ if (res != 0) goto failed;
+ if (len != PyList_GET_SIZE(tmp)) {
+ PyErr_SetString(PyExc_RuntimeError, "DictComp field \"generators\" changed size during iteration");
+ goto failed;
+ }
+ asdl_seq_SET(generators, i, val);
+ }
+ Py_CLEAR(tmp);
+ }
+ *out = _PyAST_DictComp(key, value, generators, lineno, col_offset,
+ end_lineno, end_col_offset, arena);
+ if (*out == NULL) goto failed;
+ return 0;
+ }
+ tp = state->GeneratorExp_type;
+ isinstance = PyObject_IsInstance(obj, tp);
+ if (isinstance == -1) {
+ return 1;
+ }
+ if (isinstance) {
+ expr_ty elt;
+ asdl_comprehension_seq* generators;
+
+ if (_PyObject_LookupAttr(obj, state->elt, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL) {
+ PyErr_SetString(PyExc_TypeError, "required field \"elt\" missing from GeneratorExp");
+ return 1;
+ }
+ else {
+ int res;
+ if (_Py_EnterRecursiveCall(" while traversing 'GeneratorExp' node")) {
+ goto failed;
+ }
+ res = obj2ast_expr(state, tmp, &elt, arena);
+ _Py_LeaveRecursiveCall();
+ if (res != 0) goto failed;
+ Py_CLEAR(tmp);
+ }
+ if (_PyObject_LookupAttr(obj, state->generators, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL) {
+ tmp = PyList_New(0);
+ if (tmp == NULL) {
+ return 1;
+ }
+ }
+ {
+ int res;
+ Py_ssize_t len;
+ Py_ssize_t i;
+ if (!PyList_Check(tmp)) {
+ PyErr_Format(PyExc_TypeError, "GeneratorExp field \"generators\" must be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp)));
+ goto failed;
+ }
+ len = PyList_GET_SIZE(tmp);
+ generators = _Py_asdl_comprehension_seq_new(len, arena);
+ if (generators == NULL) goto failed;
+ for (i = 0; i < len; i++) {
+ comprehension_ty val;
+ PyObject *tmp2 = Py_NewRef(PyList_GET_ITEM(tmp, i));
+ if (_Py_EnterRecursiveCall(" while traversing 'GeneratorExp' node")) {
+ goto failed;
+ }
+ res = obj2ast_comprehension(state, tmp2, &val, arena);
+ _Py_LeaveRecursiveCall();
+ Py_DECREF(tmp2);
+ if (res != 0) goto failed;
+ if (len != PyList_GET_SIZE(tmp)) {
+ PyErr_SetString(PyExc_RuntimeError, "GeneratorExp field \"generators\" changed size during iteration");
+ goto failed;
+ }
+ asdl_seq_SET(generators, i, val);
+ }
+ Py_CLEAR(tmp);
+ }
+ *out = _PyAST_GeneratorExp(elt, generators, lineno, col_offset,
+ end_lineno, end_col_offset, arena);
+ if (*out == NULL) goto failed;
+ return 0;
+ }
+ tp = state->Await_type;
+ isinstance = PyObject_IsInstance(obj, tp);
+ if (isinstance == -1) {
+ return 1;
+ }
+ if (isinstance) {
+ expr_ty value;
+
+ if (_PyObject_LookupAttr(obj, state->value, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL) {
+ PyErr_SetString(PyExc_TypeError, "required field \"value\" missing from Await");
+ return 1;
+ }
+ else {
+ int res;
+ if (_Py_EnterRecursiveCall(" while traversing 'Await' node")) {
+ goto failed;
+ }
+ res = obj2ast_expr(state, tmp, &value, arena);
+ _Py_LeaveRecursiveCall();
+ if (res != 0) goto failed;
+ Py_CLEAR(tmp);
+ }
+ *out = _PyAST_Await(value, lineno, col_offset, end_lineno,
+ end_col_offset, arena);
+ if (*out == NULL) goto failed;
+ return 0;
+ }
+ tp = state->Yield_type;
+ isinstance = PyObject_IsInstance(obj, tp);
+ if (isinstance == -1) {
+ return 1;
+ }
+ if (isinstance) {
+ expr_ty value;
+
+ if (_PyObject_LookupAttr(obj, state->value, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL || tmp == Py_None) {
+ Py_CLEAR(tmp);
+ value = NULL;
+ }
+ else {
+ int res;
+ if (_Py_EnterRecursiveCall(" while traversing 'Yield' node")) {
+ goto failed;
+ }
+ res = obj2ast_expr(state, tmp, &value, arena);
+ _Py_LeaveRecursiveCall();
+ if (res != 0) goto failed;
+ Py_CLEAR(tmp);
+ }
+ *out = _PyAST_Yield(value, lineno, col_offset, end_lineno,
+ end_col_offset, arena);
+ if (*out == NULL) goto failed;
+ return 0;
+ }
+ tp = state->YieldFrom_type;
+ isinstance = PyObject_IsInstance(obj, tp);
+ if (isinstance == -1) {
+ return 1;
+ }
+ if (isinstance) {
+ expr_ty value;
+
+ if (_PyObject_LookupAttr(obj, state->value, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL) {
+ PyErr_SetString(PyExc_TypeError, "required field \"value\" missing from YieldFrom");
+ return 1;
+ }
+ else {
+ int res;
+ if (_Py_EnterRecursiveCall(" while traversing 'YieldFrom' node")) {
+ goto failed;
+ }
+ res = obj2ast_expr(state, tmp, &value, arena);
+ _Py_LeaveRecursiveCall();
+ if (res != 0) goto failed;
+ Py_CLEAR(tmp);
+ }
+ *out = _PyAST_YieldFrom(value, lineno, col_offset, end_lineno,
+ end_col_offset, arena);
+ if (*out == NULL) goto failed;
+ return 0;
+ }
+ tp = state->Compare_type;
+ isinstance = PyObject_IsInstance(obj, tp);
+ if (isinstance == -1) {
+ return 1;
+ }
+ if (isinstance) {
+ expr_ty left;
+ asdl_int_seq* ops;
+ asdl_expr_seq* comparators;
+
+ if (_PyObject_LookupAttr(obj, state->left, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL) {
+ PyErr_SetString(PyExc_TypeError, "required field \"left\" missing from Compare");
+ return 1;
+ }
+ else {
+ int res;
+ if (_Py_EnterRecursiveCall(" while traversing 'Compare' node")) {
+ goto failed;
+ }
+ res = obj2ast_expr(state, tmp, &left, arena);
+ _Py_LeaveRecursiveCall();
+ if (res != 0) goto failed;
+ Py_CLEAR(tmp);
+ }
+ if (_PyObject_LookupAttr(obj, state->ops, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL) {
+ tmp = PyList_New(0);
+ if (tmp == NULL) {
+ return 1;
+ }
+ }
+ {
+ int res;
+ Py_ssize_t len;
+ Py_ssize_t i;
+ if (!PyList_Check(tmp)) {
+ PyErr_Format(PyExc_TypeError, "Compare field \"ops\" must be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp)));
+ goto failed;
+ }
+ len = PyList_GET_SIZE(tmp);
+ ops = _Py_asdl_int_seq_new(len, arena);
+ if (ops == NULL) goto failed;
+ for (i = 0; i < len; i++) {
+ cmpop_ty val;
+ PyObject *tmp2 = Py_NewRef(PyList_GET_ITEM(tmp, i));
+ if (_Py_EnterRecursiveCall(" while traversing 'Compare' node")) {
+ goto failed;
+ }
+ res = obj2ast_cmpop(state, tmp2, &val, arena);
+ _Py_LeaveRecursiveCall();
+ Py_DECREF(tmp2);
+ if (res != 0) goto failed;
+ if (len != PyList_GET_SIZE(tmp)) {
+ PyErr_SetString(PyExc_RuntimeError, "Compare field \"ops\" changed size during iteration");
+ goto failed;
+ }
+ asdl_seq_SET(ops, i, val);
+ }
+ Py_CLEAR(tmp);
+ }
+ if (_PyObject_LookupAttr(obj, state->comparators, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL) {
+ tmp = PyList_New(0);
+ if (tmp == NULL) {
+ return 1;
+ }
+ }
+ {
+ int res;
+ Py_ssize_t len;
+ Py_ssize_t i;
+ if (!PyList_Check(tmp)) {
+ PyErr_Format(PyExc_TypeError, "Compare field \"comparators\" must be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp)));
+ goto failed;
+ }
+ len = PyList_GET_SIZE(tmp);
+ comparators = _Py_asdl_expr_seq_new(len, arena);
+ if (comparators == NULL) goto failed;
+ for (i = 0; i < len; i++) {
+ expr_ty val;
+ PyObject *tmp2 = Py_NewRef(PyList_GET_ITEM(tmp, i));
+ if (_Py_EnterRecursiveCall(" while traversing 'Compare' node")) {
+ goto failed;
+ }
+ res = obj2ast_expr(state, tmp2, &val, arena);
+ _Py_LeaveRecursiveCall();
+ Py_DECREF(tmp2);
+ if (res != 0) goto failed;
+ if (len != PyList_GET_SIZE(tmp)) {
+ PyErr_SetString(PyExc_RuntimeError, "Compare field \"comparators\" changed size during iteration");
+ goto failed;
+ }
+ asdl_seq_SET(comparators, i, val);
+ }
+ Py_CLEAR(tmp);
+ }
+ *out = _PyAST_Compare(left, ops, comparators, lineno, col_offset,
+ end_lineno, end_col_offset, arena);
+ if (*out == NULL) goto failed;
+ return 0;
+ }
+ tp = state->Call_type;
+ isinstance = PyObject_IsInstance(obj, tp);
+ if (isinstance == -1) {
+ return 1;
+ }
+ if (isinstance) {
+ expr_ty func;
+ asdl_expr_seq* args;
+ asdl_keyword_seq* keywords;
+
+ if (_PyObject_LookupAttr(obj, state->func, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL) {
+ PyErr_SetString(PyExc_TypeError, "required field \"func\" missing from Call");
+ return 1;
+ }
+ else {
+ int res;
+ if (_Py_EnterRecursiveCall(" while traversing 'Call' node")) {
+ goto failed;
+ }
+ res = obj2ast_expr(state, tmp, &func, arena);
+ _Py_LeaveRecursiveCall();
+ if (res != 0) goto failed;
+ Py_CLEAR(tmp);
+ }
+ if (_PyObject_LookupAttr(obj, state->args, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL) {
+ tmp = PyList_New(0);
+ if (tmp == NULL) {
+ return 1;
+ }
+ }
+ {
+ int res;
+ Py_ssize_t len;
+ Py_ssize_t i;
+ if (!PyList_Check(tmp)) {
+ PyErr_Format(PyExc_TypeError, "Call field \"args\" must be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp)));
+ goto failed;
+ }
+ len = PyList_GET_SIZE(tmp);
+ args = _Py_asdl_expr_seq_new(len, arena);
+ if (args == NULL) goto failed;
+ for (i = 0; i < len; i++) {
+ expr_ty val;
+ PyObject *tmp2 = Py_NewRef(PyList_GET_ITEM(tmp, i));
+ if (_Py_EnterRecursiveCall(" while traversing 'Call' node")) {
+ goto failed;
+ }
+ res = obj2ast_expr(state, tmp2, &val, arena);
+ _Py_LeaveRecursiveCall();
+ Py_DECREF(tmp2);
+ if (res != 0) goto failed;
+ if (len != PyList_GET_SIZE(tmp)) {
+ PyErr_SetString(PyExc_RuntimeError, "Call field \"args\" changed size during iteration");
+ goto failed;
+ }
+ asdl_seq_SET(args, i, val);
+ }
+ Py_CLEAR(tmp);
+ }
+ if (_PyObject_LookupAttr(obj, state->keywords, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL) {
+ tmp = PyList_New(0);
+ if (tmp == NULL) {
+ return 1;
+ }
+ }
+ {
+ int res;
+ Py_ssize_t len;
+ Py_ssize_t i;
+ if (!PyList_Check(tmp)) {
+ PyErr_Format(PyExc_TypeError, "Call field \"keywords\" must be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp)));
+ goto failed;
+ }
+ len = PyList_GET_SIZE(tmp);
+ keywords = _Py_asdl_keyword_seq_new(len, arena);
+ if (keywords == NULL) goto failed;
+ for (i = 0; i < len; i++) {
+ keyword_ty val;
+ PyObject *tmp2 = Py_NewRef(PyList_GET_ITEM(tmp, i));
+ if (_Py_EnterRecursiveCall(" while traversing 'Call' node")) {
+ goto failed;
+ }
+ res = obj2ast_keyword(state, tmp2, &val, arena);
+ _Py_LeaveRecursiveCall();
+ Py_DECREF(tmp2);
+ if (res != 0) goto failed;
+ if (len != PyList_GET_SIZE(tmp)) {
+ PyErr_SetString(PyExc_RuntimeError, "Call field \"keywords\" changed size during iteration");
+ goto failed;
+ }
+ asdl_seq_SET(keywords, i, val);
+ }
+ Py_CLEAR(tmp);
+ }
+ *out = _PyAST_Call(func, args, keywords, lineno, col_offset,
+ end_lineno, end_col_offset, arena);
+ if (*out == NULL) goto failed;
+ return 0;
+ }
+ tp = state->FormattedValue_type;
+ isinstance = PyObject_IsInstance(obj, tp);
+ if (isinstance == -1) {
+ return 1;
+ }
+ if (isinstance) {
+ expr_ty value;
+ int conversion;
+ expr_ty format_spec;
+
+ if (_PyObject_LookupAttr(obj, state->value, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL) {
+ PyErr_SetString(PyExc_TypeError, "required field \"value\" missing from FormattedValue");
+ return 1;
+ }
+ else {
+ int res;
+ if (_Py_EnterRecursiveCall(" while traversing 'FormattedValue' node")) {
+ goto failed;
+ }
+ res = obj2ast_expr(state, tmp, &value, arena);
+ _Py_LeaveRecursiveCall();
+ if (res != 0) goto failed;
+ Py_CLEAR(tmp);
+ }
+ if (_PyObject_LookupAttr(obj, state->conversion, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL) {
+ PyErr_SetString(PyExc_TypeError, "required field \"conversion\" missing from FormattedValue");
+ return 1;
+ }
+ else {
+ int res;
+ if (_Py_EnterRecursiveCall(" while traversing 'FormattedValue' node")) {
+ goto failed;
+ }
+ res = obj2ast_int(state, tmp, &conversion, arena);
+ _Py_LeaveRecursiveCall();
+ if (res != 0) goto failed;
+ Py_CLEAR(tmp);
+ }
+ if (_PyObject_LookupAttr(obj, state->format_spec, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL || tmp == Py_None) {
+ Py_CLEAR(tmp);
+ format_spec = NULL;
+ }
+ else {
+ int res;
+ if (_Py_EnterRecursiveCall(" while traversing 'FormattedValue' node")) {
+ goto failed;
+ }
+ res = obj2ast_expr(state, tmp, &format_spec, arena);
+ _Py_LeaveRecursiveCall();
+ if (res != 0) goto failed;
+ Py_CLEAR(tmp);
+ }
+ *out = _PyAST_FormattedValue(value, conversion, format_spec, lineno,
+ col_offset, end_lineno, end_col_offset,
+ arena);
+ if (*out == NULL) goto failed;
+ return 0;
+ }
+ tp = state->JoinedStr_type;
+ isinstance = PyObject_IsInstance(obj, tp);
+ if (isinstance == -1) {
+ return 1;
+ }
+ if (isinstance) {
+ asdl_expr_seq* values;
+
+ if (_PyObject_LookupAttr(obj, state->values, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL) {
+ tmp = PyList_New(0);
+ if (tmp == NULL) {
+ return 1;
+ }
+ }
+ {
+ int res;
+ Py_ssize_t len;
+ Py_ssize_t i;
+ if (!PyList_Check(tmp)) {
+ PyErr_Format(PyExc_TypeError, "JoinedStr field \"values\" must be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp)));
+ goto failed;
+ }
+ len = PyList_GET_SIZE(tmp);
+ values = _Py_asdl_expr_seq_new(len, arena);
+ if (values == NULL) goto failed;
+ for (i = 0; i < len; i++) {
+ expr_ty val;
+ PyObject *tmp2 = Py_NewRef(PyList_GET_ITEM(tmp, i));
+ if (_Py_EnterRecursiveCall(" while traversing 'JoinedStr' node")) {
+ goto failed;
+ }
+ res = obj2ast_expr(state, tmp2, &val, arena);
+ _Py_LeaveRecursiveCall();
+ Py_DECREF(tmp2);
+ if (res != 0) goto failed;
+ if (len != PyList_GET_SIZE(tmp)) {
+ PyErr_SetString(PyExc_RuntimeError, "JoinedStr field \"values\" changed size during iteration");
+ goto failed;
+ }
+ asdl_seq_SET(values, i, val);
+ }
+ Py_CLEAR(tmp);
+ }
+ *out = _PyAST_JoinedStr(values, lineno, col_offset, end_lineno,
+ end_col_offset, arena);
+ if (*out == NULL) goto failed;
+ return 0;
+ }
+ tp = state->Constant_type;
+ isinstance = PyObject_IsInstance(obj, tp);
+ if (isinstance == -1) {
+ return 1;
+ }
+ if (isinstance) {
+ constant value;
+ string kind;
+
+ if (_PyObject_LookupAttr(obj, state->value, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL) {
+ PyErr_SetString(PyExc_TypeError, "required field \"value\" missing from Constant");
+ return 1;
+ }
+ else {
+ int res;
+ if (_Py_EnterRecursiveCall(" while traversing 'Constant' node")) {
+ goto failed;
+ }
+ res = obj2ast_constant(state, tmp, &value, arena);
+ _Py_LeaveRecursiveCall();
+ if (res != 0) goto failed;
+ Py_CLEAR(tmp);
+ }
+ if (_PyObject_LookupAttr(obj, state->kind, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL || tmp == Py_None) {
+ Py_CLEAR(tmp);
+ kind = NULL;
+ }
+ else {
+ int res;
+ if (_Py_EnterRecursiveCall(" while traversing 'Constant' node")) {
+ goto failed;
+ }
+ res = obj2ast_string(state, tmp, &kind, arena);
+ _Py_LeaveRecursiveCall();
+ if (res != 0) goto failed;
+ Py_CLEAR(tmp);
+ }
+ *out = _PyAST_Constant(value, kind, lineno, col_offset, end_lineno,
+ end_col_offset, arena);
+ if (*out == NULL) goto failed;
+ return 0;
+ }
+ tp = state->Attribute_type;
+ isinstance = PyObject_IsInstance(obj, tp);
+ if (isinstance == -1) {
+ return 1;
+ }
+ if (isinstance) {
+ expr_ty value;
+ identifier attr;
+ expr_context_ty ctx;
+
+ if (_PyObject_LookupAttr(obj, state->value, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL) {
+ PyErr_SetString(PyExc_TypeError, "required field \"value\" missing from Attribute");
+ return 1;
+ }
+ else {
+ int res;
+ if (_Py_EnterRecursiveCall(" while traversing 'Attribute' node")) {
+ goto failed;
+ }
+ res = obj2ast_expr(state, tmp, &value, arena);
+ _Py_LeaveRecursiveCall();
+ if (res != 0) goto failed;
+ Py_CLEAR(tmp);
+ }
+ if (_PyObject_LookupAttr(obj, state->attr, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL) {
+ PyErr_SetString(PyExc_TypeError, "required field \"attr\" missing from Attribute");
+ return 1;
+ }
+ else {
+ int res;
+ if (_Py_EnterRecursiveCall(" while traversing 'Attribute' node")) {
+ goto failed;
+ }
+ res = obj2ast_identifier(state, tmp, &attr, arena);
+ _Py_LeaveRecursiveCall();
+ if (res != 0) goto failed;
+ Py_CLEAR(tmp);
+ }
+ if (_PyObject_LookupAttr(obj, state->ctx, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL) {
+ PyErr_SetString(PyExc_TypeError, "required field \"ctx\" missing from Attribute");
+ return 1;
+ }
+ else {
+ int res;
+ if (_Py_EnterRecursiveCall(" while traversing 'Attribute' node")) {
+ goto failed;
+ }
+ res = obj2ast_expr_context(state, tmp, &ctx, arena);
+ _Py_LeaveRecursiveCall();
+ if (res != 0) goto failed;
+ Py_CLEAR(tmp);
+ }
+ *out = _PyAST_Attribute(value, attr, ctx, lineno, col_offset,
+ end_lineno, end_col_offset, arena);
+ if (*out == NULL) goto failed;
+ return 0;
+ }
+ tp = state->Subscript_type;
+ isinstance = PyObject_IsInstance(obj, tp);
+ if (isinstance == -1) {
+ return 1;
+ }
+ if (isinstance) {
+ expr_ty value;
+ expr_ty slice;
+ expr_context_ty ctx;
+
+ if (_PyObject_LookupAttr(obj, state->value, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL) {
+ PyErr_SetString(PyExc_TypeError, "required field \"value\" missing from Subscript");
+ return 1;
+ }
+ else {
+ int res;
+ if (_Py_EnterRecursiveCall(" while traversing 'Subscript' node")) {
+ goto failed;
+ }
+ res = obj2ast_expr(state, tmp, &value, arena);
+ _Py_LeaveRecursiveCall();
+ if (res != 0) goto failed;
+ Py_CLEAR(tmp);
+ }
+ if (_PyObject_LookupAttr(obj, state->slice, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL) {
+ PyErr_SetString(PyExc_TypeError, "required field \"slice\" missing from Subscript");
+ return 1;
+ }
+ else {
+ int res;
+ if (_Py_EnterRecursiveCall(" while traversing 'Subscript' node")) {
+ goto failed;
+ }
+ res = obj2ast_expr(state, tmp, &slice, arena);
+ _Py_LeaveRecursiveCall();
+ if (res != 0) goto failed;
+ Py_CLEAR(tmp);
+ }
+ if (_PyObject_LookupAttr(obj, state->ctx, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL) {
+ PyErr_SetString(PyExc_TypeError, "required field \"ctx\" missing from Subscript");
+ return 1;
+ }
+ else {
+ int res;
+ if (_Py_EnterRecursiveCall(" while traversing 'Subscript' node")) {
+ goto failed;
+ }
+ res = obj2ast_expr_context(state, tmp, &ctx, arena);
+ _Py_LeaveRecursiveCall();
+ if (res != 0) goto failed;
+ Py_CLEAR(tmp);
+ }
+ *out = _PyAST_Subscript(value, slice, ctx, lineno, col_offset,
+ end_lineno, end_col_offset, arena);
+ if (*out == NULL) goto failed;
+ return 0;
+ }
+ tp = state->Starred_type;
+ isinstance = PyObject_IsInstance(obj, tp);
+ if (isinstance == -1) {
+ return 1;
+ }
+ if (isinstance) {
+ expr_ty value;
+ expr_context_ty ctx;
+
+ if (_PyObject_LookupAttr(obj, state->value, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL) {
+ PyErr_SetString(PyExc_TypeError, "required field \"value\" missing from Starred");
+ return 1;
+ }
+ else {
+ int res;
+ if (_Py_EnterRecursiveCall(" while traversing 'Starred' node")) {
+ goto failed;
+ }
+ res = obj2ast_expr(state, tmp, &value, arena);
+ _Py_LeaveRecursiveCall();
+ if (res != 0) goto failed;
+ Py_CLEAR(tmp);
+ }
+ if (_PyObject_LookupAttr(obj, state->ctx, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL) {
+ PyErr_SetString(PyExc_TypeError, "required field \"ctx\" missing from Starred");
+ return 1;
+ }
+ else {
+ int res;
+ if (_Py_EnterRecursiveCall(" while traversing 'Starred' node")) {
+ goto failed;
+ }
+ res = obj2ast_expr_context(state, tmp, &ctx, arena);
+ _Py_LeaveRecursiveCall();
+ if (res != 0) goto failed;
+ Py_CLEAR(tmp);
+ }
+ *out = _PyAST_Starred(value, ctx, lineno, col_offset, end_lineno,
+ end_col_offset, arena);
+ if (*out == NULL) goto failed;
+ return 0;
+ }
+ tp = state->Name_type;
+ isinstance = PyObject_IsInstance(obj, tp);
+ if (isinstance == -1) {
+ return 1;
+ }
+ if (isinstance) {
+ identifier id;
+ expr_context_ty ctx;
+
+ if (_PyObject_LookupAttr(obj, state->id, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL) {
+ PyErr_SetString(PyExc_TypeError, "required field \"id\" missing from Name");
+ return 1;
+ }
+ else {
+ int res;
+ if (_Py_EnterRecursiveCall(" while traversing 'Name' node")) {
+ goto failed;
+ }
+ res = obj2ast_identifier(state, tmp, &id, arena);
+ _Py_LeaveRecursiveCall();
+ if (res != 0) goto failed;
+ Py_CLEAR(tmp);
+ }
+ if (_PyObject_LookupAttr(obj, state->ctx, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL) {
+ PyErr_SetString(PyExc_TypeError, "required field \"ctx\" missing from Name");
+ return 1;
+ }
+ else {
+ int res;
+ if (_Py_EnterRecursiveCall(" while traversing 'Name' node")) {
+ goto failed;
+ }
+ res = obj2ast_expr_context(state, tmp, &ctx, arena);
+ _Py_LeaveRecursiveCall();
+ if (res != 0) goto failed;
+ Py_CLEAR(tmp);
+ }
+ *out = _PyAST_Name(id, ctx, lineno, col_offset, end_lineno,
+ end_col_offset, arena);
+ if (*out == NULL) goto failed;
+ return 0;
+ }
+ tp = state->List_type;
+ isinstance = PyObject_IsInstance(obj, tp);
+ if (isinstance == -1) {
+ return 1;
+ }
+ if (isinstance) {
+ asdl_expr_seq* elts;
+ expr_context_ty ctx;
+
+ if (_PyObject_LookupAttr(obj, state->elts, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL) {
+ tmp = PyList_New(0);
+ if (tmp == NULL) {
+ return 1;
+ }
+ }
+ {
+ int res;
+ Py_ssize_t len;
+ Py_ssize_t i;
+ if (!PyList_Check(tmp)) {
+ PyErr_Format(PyExc_TypeError, "List field \"elts\" must be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp)));
+ goto failed;
+ }
+ len = PyList_GET_SIZE(tmp);
+ elts = _Py_asdl_expr_seq_new(len, arena);
+ if (elts == NULL) goto failed;
+ for (i = 0; i < len; i++) {
+ expr_ty val;
+ PyObject *tmp2 = Py_NewRef(PyList_GET_ITEM(tmp, i));
+ if (_Py_EnterRecursiveCall(" while traversing 'List' node")) {
+ goto failed;
+ }
+ res = obj2ast_expr(state, tmp2, &val, arena);
+ _Py_LeaveRecursiveCall();
+ Py_DECREF(tmp2);
+ if (res != 0) goto failed;
+ if (len != PyList_GET_SIZE(tmp)) {
+ PyErr_SetString(PyExc_RuntimeError, "List field \"elts\" changed size during iteration");
+ goto failed;
+ }
+ asdl_seq_SET(elts, i, val);
+ }
+ Py_CLEAR(tmp);
+ }
+ if (_PyObject_LookupAttr(obj, state->ctx, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL) {
+ PyErr_SetString(PyExc_TypeError, "required field \"ctx\" missing from List");
+ return 1;
+ }
+ else {
+ int res;
+ if (_Py_EnterRecursiveCall(" while traversing 'List' node")) {
+ goto failed;
+ }
+ res = obj2ast_expr_context(state, tmp, &ctx, arena);
+ _Py_LeaveRecursiveCall();
+ if (res != 0) goto failed;
+ Py_CLEAR(tmp);
+ }
+ *out = _PyAST_List(elts, ctx, lineno, col_offset, end_lineno,
+ end_col_offset, arena);
+ if (*out == NULL) goto failed;
+ return 0;
+ }
+ tp = state->Tuple_type;
+ isinstance = PyObject_IsInstance(obj, tp);
+ if (isinstance == -1) {
+ return 1;
+ }
+ if (isinstance) {
+ asdl_expr_seq* elts;
+ expr_context_ty ctx;
+
+ if (_PyObject_LookupAttr(obj, state->elts, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL) {
+ tmp = PyList_New(0);
+ if (tmp == NULL) {
+ return 1;
+ }
+ }
+ {
+ int res;
+ Py_ssize_t len;
+ Py_ssize_t i;
+ if (!PyList_Check(tmp)) {
+ PyErr_Format(PyExc_TypeError, "Tuple field \"elts\" must be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp)));
+ goto failed;
+ }
+ len = PyList_GET_SIZE(tmp);
+ elts = _Py_asdl_expr_seq_new(len, arena);
+ if (elts == NULL) goto failed;
+ for (i = 0; i < len; i++) {
+ expr_ty val;
+ PyObject *tmp2 = Py_NewRef(PyList_GET_ITEM(tmp, i));
+ if (_Py_EnterRecursiveCall(" while traversing 'Tuple' node")) {
+ goto failed;
+ }
+ res = obj2ast_expr(state, tmp2, &val, arena);
+ _Py_LeaveRecursiveCall();
+ Py_DECREF(tmp2);
+ if (res != 0) goto failed;
+ if (len != PyList_GET_SIZE(tmp)) {
+ PyErr_SetString(PyExc_RuntimeError, "Tuple field \"elts\" changed size during iteration");
+ goto failed;
+ }
+ asdl_seq_SET(elts, i, val);
+ }
+ Py_CLEAR(tmp);
+ }
+ if (_PyObject_LookupAttr(obj, state->ctx, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL) {
+ PyErr_SetString(PyExc_TypeError, "required field \"ctx\" missing from Tuple");
+ return 1;
+ }
+ else {
+ int res;
+ if (_Py_EnterRecursiveCall(" while traversing 'Tuple' node")) {
+ goto failed;
+ }
+ res = obj2ast_expr_context(state, tmp, &ctx, arena);
+ _Py_LeaveRecursiveCall();
+ if (res != 0) goto failed;
+ Py_CLEAR(tmp);
+ }
+ *out = _PyAST_Tuple(elts, ctx, lineno, col_offset, end_lineno,
+ end_col_offset, arena);
+ if (*out == NULL) goto failed;
+ return 0;
+ }
+ tp = state->Slice_type;
+ isinstance = PyObject_IsInstance(obj, tp);
+ if (isinstance == -1) {
+ return 1;
+ }
+ if (isinstance) {
+ expr_ty lower;
+ expr_ty upper;
+ expr_ty step;
+
+ if (_PyObject_LookupAttr(obj, state->lower, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL || tmp == Py_None) {
+ Py_CLEAR(tmp);
+ lower = NULL;
+ }
+ else {
+ int res;
+ if (_Py_EnterRecursiveCall(" while traversing 'Slice' node")) {
+ goto failed;
+ }
+ res = obj2ast_expr(state, tmp, &lower, arena);
+ _Py_LeaveRecursiveCall();
+ if (res != 0) goto failed;
+ Py_CLEAR(tmp);
+ }
+ if (_PyObject_LookupAttr(obj, state->upper, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL || tmp == Py_None) {
+ Py_CLEAR(tmp);
+ upper = NULL;
+ }
+ else {
+ int res;
+ if (_Py_EnterRecursiveCall(" while traversing 'Slice' node")) {
+ goto failed;
+ }
+ res = obj2ast_expr(state, tmp, &upper, arena);
+ _Py_LeaveRecursiveCall();
+ if (res != 0) goto failed;
+ Py_CLEAR(tmp);
+ }
+ if (_PyObject_LookupAttr(obj, state->step, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL || tmp == Py_None) {
+ Py_CLEAR(tmp);
+ step = NULL;
+ }
+ else {
+ int res;
+ if (_Py_EnterRecursiveCall(" while traversing 'Slice' node")) {
+ goto failed;
+ }
+ res = obj2ast_expr(state, tmp, &step, arena);
+ _Py_LeaveRecursiveCall();
+ if (res != 0) goto failed;
+ Py_CLEAR(tmp);
+ }
+ *out = _PyAST_Slice(lower, upper, step, lineno, col_offset, end_lineno,
+ end_col_offset, arena);
+ if (*out == NULL) goto failed;
+ return 0;
+ }
+
+ PyErr_Format(PyExc_TypeError, "expected some sort of expr, but got %R", obj);
+ failed:
+ Py_XDECREF(tmp);
+ return 1;
+}
+
+int
+obj2ast_expr_context(struct ast_state *state, PyObject* obj, expr_context_ty*
+ out, PyArena* arena)
+{
+ int isinstance;
+
+ isinstance = PyObject_IsInstance(obj, state->Load_type);
+ if (isinstance == -1) {
+ return 1;
+ }
+ if (isinstance) {
+ *out = Load;
+ return 0;
+ }
+ isinstance = PyObject_IsInstance(obj, state->Store_type);
+ if (isinstance == -1) {
+ return 1;
+ }
+ if (isinstance) {
+ *out = Store;
+ return 0;
+ }
+ isinstance = PyObject_IsInstance(obj, state->Del_type);
+ if (isinstance == -1) {
+ return 1;
+ }
+ if (isinstance) {
+ *out = Del;
+ return 0;
+ }
+
+ PyErr_Format(PyExc_TypeError, "expected some sort of expr_context, but got %R", obj);
+ return 1;
+}
+
+int
+obj2ast_boolop(struct ast_state *state, PyObject* obj, boolop_ty* out, PyArena*
+ arena)
+{
+ int isinstance;
+
+ isinstance = PyObject_IsInstance(obj, state->And_type);
+ if (isinstance == -1) {
+ return 1;
+ }
+ if (isinstance) {
+ *out = And;
+ return 0;
+ }
+ isinstance = PyObject_IsInstance(obj, state->Or_type);
+ if (isinstance == -1) {
+ return 1;
+ }
+ if (isinstance) {
+ *out = Or;
+ return 0;
+ }
+
+ PyErr_Format(PyExc_TypeError, "expected some sort of boolop, but got %R", obj);
+ return 1;
+}
+
+int
+obj2ast_operator(struct ast_state *state, PyObject* obj, operator_ty* out,
+ PyArena* arena)
+{
+ int isinstance;
+
+ isinstance = PyObject_IsInstance(obj, state->Add_type);
+ if (isinstance == -1) {
+ return 1;
+ }
+ if (isinstance) {
+ *out = Add;
+ return 0;
+ }
+ isinstance = PyObject_IsInstance(obj, state->Sub_type);
+ if (isinstance == -1) {
+ return 1;
+ }
+ if (isinstance) {
+ *out = Sub;
+ return 0;
+ }
+ isinstance = PyObject_IsInstance(obj, state->Mult_type);
+ if (isinstance == -1) {
+ return 1;
+ }
+ if (isinstance) {
+ *out = Mult;
+ return 0;
+ }
+ isinstance = PyObject_IsInstance(obj, state->MatMult_type);
+ if (isinstance == -1) {
+ return 1;
+ }
+ if (isinstance) {
+ *out = MatMult;
+ return 0;
+ }
+ isinstance = PyObject_IsInstance(obj, state->Div_type);
+ if (isinstance == -1) {
+ return 1;
+ }
+ if (isinstance) {
+ *out = Div;
+ return 0;
+ }
+ isinstance = PyObject_IsInstance(obj, state->Mod_type);
+ if (isinstance == -1) {
+ return 1;
+ }
+ if (isinstance) {
+ *out = Mod;
+ return 0;
+ }
+ isinstance = PyObject_IsInstance(obj, state->Pow_type);
+ if (isinstance == -1) {
+ return 1;
+ }
+ if (isinstance) {
+ *out = Pow;
+ return 0;
+ }
+ isinstance = PyObject_IsInstance(obj, state->LShift_type);
+ if (isinstance == -1) {
+ return 1;
+ }
+ if (isinstance) {
+ *out = LShift;
+ return 0;
+ }
+ isinstance = PyObject_IsInstance(obj, state->RShift_type);
+ if (isinstance == -1) {
+ return 1;
+ }
+ if (isinstance) {
+ *out = RShift;
+ return 0;
+ }
+ isinstance = PyObject_IsInstance(obj, state->BitOr_type);
+ if (isinstance == -1) {
+ return 1;
+ }
+ if (isinstance) {
+ *out = BitOr;
+ return 0;
+ }
+ isinstance = PyObject_IsInstance(obj, state->BitXor_type);
+ if (isinstance == -1) {
+ return 1;
+ }
+ if (isinstance) {
+ *out = BitXor;
+ return 0;
+ }
+ isinstance = PyObject_IsInstance(obj, state->BitAnd_type);
+ if (isinstance == -1) {
+ return 1;
+ }
+ if (isinstance) {
+ *out = BitAnd;
+ return 0;
+ }
+ isinstance = PyObject_IsInstance(obj, state->FloorDiv_type);
+ if (isinstance == -1) {
+ return 1;
+ }
+ if (isinstance) {
+ *out = FloorDiv;
+ return 0;
+ }
+
+ PyErr_Format(PyExc_TypeError, "expected some sort of operator, but got %R", obj);
+ return 1;
+}
+
+int
+obj2ast_unaryop(struct ast_state *state, PyObject* obj, unaryop_ty* out,
+ PyArena* arena)
+{
+ int isinstance;
+
+ isinstance = PyObject_IsInstance(obj, state->Invert_type);
+ if (isinstance == -1) {
+ return 1;
+ }
+ if (isinstance) {
+ *out = Invert;
+ return 0;
+ }
+ isinstance = PyObject_IsInstance(obj, state->Not_type);
+ if (isinstance == -1) {
+ return 1;
+ }
+ if (isinstance) {
+ *out = Not;
+ return 0;
+ }
+ isinstance = PyObject_IsInstance(obj, state->UAdd_type);
+ if (isinstance == -1) {
+ return 1;
+ }
+ if (isinstance) {
+ *out = UAdd;
+ return 0;
+ }
+ isinstance = PyObject_IsInstance(obj, state->USub_type);
+ if (isinstance == -1) {
+ return 1;
+ }
+ if (isinstance) {
+ *out = USub;
+ return 0;
+ }
+
+ PyErr_Format(PyExc_TypeError, "expected some sort of unaryop, but got %R", obj);
+ return 1;
+}
+
+int
+obj2ast_cmpop(struct ast_state *state, PyObject* obj, cmpop_ty* out, PyArena*
+ arena)
+{
+ int isinstance;
+
+ isinstance = PyObject_IsInstance(obj, state->Eq_type);
+ if (isinstance == -1) {
+ return 1;
+ }
+ if (isinstance) {
+ *out = Eq;
+ return 0;
+ }
+ isinstance = PyObject_IsInstance(obj, state->NotEq_type);
+ if (isinstance == -1) {
+ return 1;
+ }
+ if (isinstance) {
+ *out = NotEq;
+ return 0;
+ }
+ isinstance = PyObject_IsInstance(obj, state->Lt_type);
+ if (isinstance == -1) {
+ return 1;
+ }
+ if (isinstance) {
+ *out = Lt;
+ return 0;
+ }
+ isinstance = PyObject_IsInstance(obj, state->LtE_type);
+ if (isinstance == -1) {
+ return 1;
+ }
+ if (isinstance) {
+ *out = LtE;
+ return 0;
+ }
+ isinstance = PyObject_IsInstance(obj, state->Gt_type);
+ if (isinstance == -1) {
+ return 1;
+ }
+ if (isinstance) {
+ *out = Gt;
+ return 0;
+ }
+ isinstance = PyObject_IsInstance(obj, state->GtE_type);
+ if (isinstance == -1) {
+ return 1;
+ }
+ if (isinstance) {
+ *out = GtE;
+ return 0;
+ }
+ isinstance = PyObject_IsInstance(obj, state->Is_type);
+ if (isinstance == -1) {
+ return 1;
+ }
+ if (isinstance) {
+ *out = Is;
+ return 0;
+ }
+ isinstance = PyObject_IsInstance(obj, state->IsNot_type);
+ if (isinstance == -1) {
+ return 1;
+ }
+ if (isinstance) {
+ *out = IsNot;
+ return 0;
+ }
+ isinstance = PyObject_IsInstance(obj, state->In_type);
+ if (isinstance == -1) {
+ return 1;
+ }
+ if (isinstance) {
+ *out = In;
+ return 0;
+ }
+ isinstance = PyObject_IsInstance(obj, state->NotIn_type);
+ if (isinstance == -1) {
+ return 1;
+ }
+ if (isinstance) {
+ *out = NotIn;
+ return 0;
+ }
+
+ PyErr_Format(PyExc_TypeError, "expected some sort of cmpop, but got %R", obj);
+ return 1;
+}
+
+int
+obj2ast_comprehension(struct ast_state *state, PyObject* obj, comprehension_ty*
+ out, PyArena* arena)
+{
+ PyObject* tmp = NULL;
+ expr_ty target;
+ expr_ty iter;
+ asdl_expr_seq* ifs;
+ int is_async;
+
+ if (_PyObject_LookupAttr(obj, state->target, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL) {
+ PyErr_SetString(PyExc_TypeError, "required field \"target\" missing from comprehension");
+ return 1;
+ }
+ else {
+ int res;
+ if (_Py_EnterRecursiveCall(" while traversing 'comprehension' node")) {
+ goto failed;
+ }
+ res = obj2ast_expr(state, tmp, &target, arena);
+ _Py_LeaveRecursiveCall();
+ if (res != 0) goto failed;
+ Py_CLEAR(tmp);
+ }
+ if (_PyObject_LookupAttr(obj, state->iter, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL) {
+ PyErr_SetString(PyExc_TypeError, "required field \"iter\" missing from comprehension");
+ return 1;
+ }
+ else {
+ int res;
+ if (_Py_EnterRecursiveCall(" while traversing 'comprehension' node")) {
+ goto failed;
+ }
+ res = obj2ast_expr(state, tmp, &iter, arena);
+ _Py_LeaveRecursiveCall();
+ if (res != 0) goto failed;
+ Py_CLEAR(tmp);
+ }
+ if (_PyObject_LookupAttr(obj, state->ifs, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL) {
+ tmp = PyList_New(0);
+ if (tmp == NULL) {
+ return 1;
+ }
+ }
+ {
+ int res;
+ Py_ssize_t len;
+ Py_ssize_t i;
+ if (!PyList_Check(tmp)) {
+ PyErr_Format(PyExc_TypeError, "comprehension field \"ifs\" must be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp)));
+ goto failed;
+ }
+ len = PyList_GET_SIZE(tmp);
+ ifs = _Py_asdl_expr_seq_new(len, arena);
+ if (ifs == NULL) goto failed;
+ for (i = 0; i < len; i++) {
+ expr_ty val;
+ PyObject *tmp2 = Py_NewRef(PyList_GET_ITEM(tmp, i));
+ if (_Py_EnterRecursiveCall(" while traversing 'comprehension' node")) {
+ goto failed;
+ }
+ res = obj2ast_expr(state, tmp2, &val, arena);
+ _Py_LeaveRecursiveCall();
+ Py_DECREF(tmp2);
+ if (res != 0) goto failed;
+ if (len != PyList_GET_SIZE(tmp)) {
+ PyErr_SetString(PyExc_RuntimeError, "comprehension field \"ifs\" changed size during iteration");
+ goto failed;
+ }
+ asdl_seq_SET(ifs, i, val);
+ }
+ Py_CLEAR(tmp);
+ }
+ if (_PyObject_LookupAttr(obj, state->is_async, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL) {
+ PyErr_SetString(PyExc_TypeError, "required field \"is_async\" missing from comprehension");
+ return 1;
+ }
+ else {
+ int res;
+ if (_Py_EnterRecursiveCall(" while traversing 'comprehension' node")) {
+ goto failed;
+ }
+ res = obj2ast_int(state, tmp, &is_async, arena);
+ _Py_LeaveRecursiveCall();
+ if (res != 0) goto failed;
+ Py_CLEAR(tmp);
+ }
+ *out = _PyAST_comprehension(target, iter, ifs, is_async, arena);
+ if (*out == NULL) goto failed;
+ return 0;
+failed:
+ Py_XDECREF(tmp);
+ return 1;
+}
+
+int
+obj2ast_excepthandler(struct ast_state *state, PyObject* obj, excepthandler_ty*
+ out, PyArena* arena)
+{
+ int isinstance;
+
+ PyObject *tmp = NULL;
+ PyObject *tp;
+ int lineno;
+ int col_offset;
+ int end_lineno;
+ int end_col_offset;
+
+ if (obj == Py_None) {
+ *out = NULL;
+ return 0;
+ }
+ if (_PyObject_LookupAttr(obj, state->lineno, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL) {
+ PyErr_SetString(PyExc_TypeError, "required field \"lineno\" missing from excepthandler");
+ return 1;
+ }
+ else {
+ int res;
+ if (_Py_EnterRecursiveCall(" while traversing 'excepthandler' node")) {
+ goto failed;
+ }
+ res = obj2ast_int(state, tmp, &lineno, arena);
+ _Py_LeaveRecursiveCall();
+ if (res != 0) goto failed;
+ Py_CLEAR(tmp);
+ }
+ if (_PyObject_LookupAttr(obj, state->col_offset, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL) {
+ PyErr_SetString(PyExc_TypeError, "required field \"col_offset\" missing from excepthandler");
+ return 1;
+ }
+ else {
+ int res;
+ if (_Py_EnterRecursiveCall(" while traversing 'excepthandler' node")) {
+ goto failed;
+ }
+ res = obj2ast_int(state, tmp, &col_offset, arena);
+ _Py_LeaveRecursiveCall();
+ if (res != 0) goto failed;
+ Py_CLEAR(tmp);
+ }
+ if (_PyObject_LookupAttr(obj, state->end_lineno, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL || tmp == Py_None) {
+ Py_CLEAR(tmp);
+ end_lineno = lineno;
+ }
+ else {
+ int res;
+ if (_Py_EnterRecursiveCall(" while traversing 'excepthandler' node")) {
+ goto failed;
+ }
+ res = obj2ast_int(state, tmp, &end_lineno, arena);
+ _Py_LeaveRecursiveCall();
+ if (res != 0) goto failed;
+ Py_CLEAR(tmp);
+ }
+ if (_PyObject_LookupAttr(obj, state->end_col_offset, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL || tmp == Py_None) {
+ Py_CLEAR(tmp);
+ end_col_offset = col_offset;
+ }
+ else {
+ int res;
+ if (_Py_EnterRecursiveCall(" while traversing 'excepthandler' node")) {
+ goto failed;
+ }
+ res = obj2ast_int(state, tmp, &end_col_offset, arena);
+ _Py_LeaveRecursiveCall();
+ if (res != 0) goto failed;
+ Py_CLEAR(tmp);
+ }
+ tp = state->ExceptHandler_type;
+ isinstance = PyObject_IsInstance(obj, tp);
+ if (isinstance == -1) {
+ return 1;
+ }
+ if (isinstance) {
+ expr_ty type;
+ identifier name;
+ asdl_stmt_seq* body;
+
+ if (_PyObject_LookupAttr(obj, state->type, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL || tmp == Py_None) {
+ Py_CLEAR(tmp);
+ type = NULL;
+ }
+ else {
+ int res;
+ if (_Py_EnterRecursiveCall(" while traversing 'ExceptHandler' node")) {
+ goto failed;
+ }
+ res = obj2ast_expr(state, tmp, &type, arena);
+ _Py_LeaveRecursiveCall();
+ if (res != 0) goto failed;
+ Py_CLEAR(tmp);
+ }
+ if (_PyObject_LookupAttr(obj, state->name, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL || tmp == Py_None) {
+ Py_CLEAR(tmp);
+ name = NULL;
+ }
+ else {
+ int res;
+ if (_Py_EnterRecursiveCall(" while traversing 'ExceptHandler' node")) {
+ goto failed;
+ }
+ res = obj2ast_identifier(state, tmp, &name, arena);
+ _Py_LeaveRecursiveCall();
+ if (res != 0) goto failed;
+ Py_CLEAR(tmp);
+ }
+ if (_PyObject_LookupAttr(obj, state->body, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL) {
+ tmp = PyList_New(0);
+ if (tmp == NULL) {
+ return 1;
+ }
+ }
+ {
+ int res;
+ Py_ssize_t len;
+ Py_ssize_t i;
+ if (!PyList_Check(tmp)) {
+ PyErr_Format(PyExc_TypeError, "ExceptHandler field \"body\" must be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp)));
+ goto failed;
+ }
+ len = PyList_GET_SIZE(tmp);
+ body = _Py_asdl_stmt_seq_new(len, arena);
+ if (body == NULL) goto failed;
+ for (i = 0; i < len; i++) {
+ stmt_ty val;
+ PyObject *tmp2 = Py_NewRef(PyList_GET_ITEM(tmp, i));
+ if (_Py_EnterRecursiveCall(" while traversing 'ExceptHandler' node")) {
+ goto failed;
+ }
+ res = obj2ast_stmt(state, tmp2, &val, arena);
+ _Py_LeaveRecursiveCall();
+ Py_DECREF(tmp2);
+ if (res != 0) goto failed;
+ if (len != PyList_GET_SIZE(tmp)) {
+ PyErr_SetString(PyExc_RuntimeError, "ExceptHandler field \"body\" changed size during iteration");
+ goto failed;
+ }
+ asdl_seq_SET(body, i, val);
+ }
+ Py_CLEAR(tmp);
+ }
+ *out = _PyAST_ExceptHandler(type, name, body, lineno, col_offset,
+ end_lineno, end_col_offset, arena);
+ if (*out == NULL) goto failed;
+ return 0;
+ }
+
+ PyErr_Format(PyExc_TypeError, "expected some sort of excepthandler, but got %R", obj);
+ failed:
+ Py_XDECREF(tmp);
+ return 1;
+}
+
+int
+obj2ast_arguments(struct ast_state *state, PyObject* obj, arguments_ty* out,
+ PyArena* arena)
+{
+ PyObject* tmp = NULL;
+ asdl_arg_seq* posonlyargs;
+ asdl_arg_seq* args;
+ arg_ty vararg;
+ asdl_arg_seq* kwonlyargs;
+ asdl_expr_seq* kw_defaults;
+ arg_ty kwarg;
+ asdl_expr_seq* defaults;
+
+ if (_PyObject_LookupAttr(obj, state->posonlyargs, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL) {
+ tmp = PyList_New(0);
+ if (tmp == NULL) {
+ return 1;
+ }
+ }
+ {
+ int res;
+ Py_ssize_t len;
+ Py_ssize_t i;
+ if (!PyList_Check(tmp)) {
+ PyErr_Format(PyExc_TypeError, "arguments field \"posonlyargs\" must be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp)));
+ goto failed;
+ }
+ len = PyList_GET_SIZE(tmp);
+ posonlyargs = _Py_asdl_arg_seq_new(len, arena);
+ if (posonlyargs == NULL) goto failed;
+ for (i = 0; i < len; i++) {
+ arg_ty val;
+ PyObject *tmp2 = Py_NewRef(PyList_GET_ITEM(tmp, i));
+ if (_Py_EnterRecursiveCall(" while traversing 'arguments' node")) {
+ goto failed;
+ }
+ res = obj2ast_arg(state, tmp2, &val, arena);
+ _Py_LeaveRecursiveCall();
+ Py_DECREF(tmp2);
+ if (res != 0) goto failed;
+ if (len != PyList_GET_SIZE(tmp)) {
+ PyErr_SetString(PyExc_RuntimeError, "arguments field \"posonlyargs\" changed size during iteration");
+ goto failed;
+ }
+ asdl_seq_SET(posonlyargs, i, val);
+ }
+ Py_CLEAR(tmp);
+ }
+ if (_PyObject_LookupAttr(obj, state->args, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL) {
+ tmp = PyList_New(0);
+ if (tmp == NULL) {
+ return 1;
+ }
+ }
+ {
+ int res;
+ Py_ssize_t len;
+ Py_ssize_t i;
+ if (!PyList_Check(tmp)) {
+ PyErr_Format(PyExc_TypeError, "arguments field \"args\" must be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp)));
+ goto failed;
+ }
+ len = PyList_GET_SIZE(tmp);
+ args = _Py_asdl_arg_seq_new(len, arena);
+ if (args == NULL) goto failed;
+ for (i = 0; i < len; i++) {
+ arg_ty val;
+ PyObject *tmp2 = Py_NewRef(PyList_GET_ITEM(tmp, i));
+ if (_Py_EnterRecursiveCall(" while traversing 'arguments' node")) {
+ goto failed;
+ }
+ res = obj2ast_arg(state, tmp2, &val, arena);
+ _Py_LeaveRecursiveCall();
+ Py_DECREF(tmp2);
+ if (res != 0) goto failed;
+ if (len != PyList_GET_SIZE(tmp)) {
+ PyErr_SetString(PyExc_RuntimeError, "arguments field \"args\" changed size during iteration");
+ goto failed;
+ }
+ asdl_seq_SET(args, i, val);
+ }
+ Py_CLEAR(tmp);
+ }
+ if (_PyObject_LookupAttr(obj, state->vararg, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL || tmp == Py_None) {
+ Py_CLEAR(tmp);
+ vararg = NULL;
+ }
+ else {
+ int res;
+ if (_Py_EnterRecursiveCall(" while traversing 'arguments' node")) {
+ goto failed;
+ }
+ res = obj2ast_arg(state, tmp, &vararg, arena);
+ _Py_LeaveRecursiveCall();
+ if (res != 0) goto failed;
+ Py_CLEAR(tmp);
+ }
+ if (_PyObject_LookupAttr(obj, state->kwonlyargs, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL) {
+ tmp = PyList_New(0);
+ if (tmp == NULL) {
+ return 1;
+ }
+ }
+ {
+ int res;
+ Py_ssize_t len;
+ Py_ssize_t i;
+ if (!PyList_Check(tmp)) {
+ PyErr_Format(PyExc_TypeError, "arguments field \"kwonlyargs\" must be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp)));
+ goto failed;
+ }
+ len = PyList_GET_SIZE(tmp);
+ kwonlyargs = _Py_asdl_arg_seq_new(len, arena);
+ if (kwonlyargs == NULL) goto failed;
+ for (i = 0; i < len; i++) {
+ arg_ty val;
+ PyObject *tmp2 = Py_NewRef(PyList_GET_ITEM(tmp, i));
+ if (_Py_EnterRecursiveCall(" while traversing 'arguments' node")) {
+ goto failed;
+ }
+ res = obj2ast_arg(state, tmp2, &val, arena);
+ _Py_LeaveRecursiveCall();
+ Py_DECREF(tmp2);
+ if (res != 0) goto failed;
+ if (len != PyList_GET_SIZE(tmp)) {
+ PyErr_SetString(PyExc_RuntimeError, "arguments field \"kwonlyargs\" changed size during iteration");
+ goto failed;
+ }
+ asdl_seq_SET(kwonlyargs, i, val);
+ }
+ Py_CLEAR(tmp);
+ }
+ if (_PyObject_LookupAttr(obj, state->kw_defaults, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL) {
+ tmp = PyList_New(0);
+ if (tmp == NULL) {
+ return 1;
+ }
+ }
+ {
+ int res;
+ Py_ssize_t len;
+ Py_ssize_t i;
+ if (!PyList_Check(tmp)) {
+ PyErr_Format(PyExc_TypeError, "arguments field \"kw_defaults\" must be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp)));
+ goto failed;
+ }
+ len = PyList_GET_SIZE(tmp);
+ kw_defaults = _Py_asdl_expr_seq_new(len, arena);
+ if (kw_defaults == NULL) goto failed;
+ for (i = 0; i < len; i++) {
+ expr_ty val;
+ PyObject *tmp2 = Py_NewRef(PyList_GET_ITEM(tmp, i));
+ if (_Py_EnterRecursiveCall(" while traversing 'arguments' node")) {
+ goto failed;
+ }
+ res = obj2ast_expr(state, tmp2, &val, arena);
+ _Py_LeaveRecursiveCall();
+ Py_DECREF(tmp2);
+ if (res != 0) goto failed;
+ if (len != PyList_GET_SIZE(tmp)) {
+ PyErr_SetString(PyExc_RuntimeError, "arguments field \"kw_defaults\" changed size during iteration");
+ goto failed;
+ }
+ asdl_seq_SET(kw_defaults, i, val);
+ }
+ Py_CLEAR(tmp);
+ }
+ if (_PyObject_LookupAttr(obj, state->kwarg, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL || tmp == Py_None) {
+ Py_CLEAR(tmp);
+ kwarg = NULL;
+ }
+ else {
+ int res;
+ if (_Py_EnterRecursiveCall(" while traversing 'arguments' node")) {
+ goto failed;
+ }
+ res = obj2ast_arg(state, tmp, &kwarg, arena);
+ _Py_LeaveRecursiveCall();
+ if (res != 0) goto failed;
+ Py_CLEAR(tmp);
+ }
+ if (_PyObject_LookupAttr(obj, state->defaults, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL) {
+ tmp = PyList_New(0);
+ if (tmp == NULL) {
+ return 1;
+ }
+ }
+ {
+ int res;
+ Py_ssize_t len;
+ Py_ssize_t i;
+ if (!PyList_Check(tmp)) {
+ PyErr_Format(PyExc_TypeError, "arguments field \"defaults\" must be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp)));
+ goto failed;
+ }
+ len = PyList_GET_SIZE(tmp);
+ defaults = _Py_asdl_expr_seq_new(len, arena);
+ if (defaults == NULL) goto failed;
+ for (i = 0; i < len; i++) {
+ expr_ty val;
+ PyObject *tmp2 = Py_NewRef(PyList_GET_ITEM(tmp, i));
+ if (_Py_EnterRecursiveCall(" while traversing 'arguments' node")) {
+ goto failed;
+ }
+ res = obj2ast_expr(state, tmp2, &val, arena);
+ _Py_LeaveRecursiveCall();
+ Py_DECREF(tmp2);
+ if (res != 0) goto failed;
+ if (len != PyList_GET_SIZE(tmp)) {
+ PyErr_SetString(PyExc_RuntimeError, "arguments field \"defaults\" changed size during iteration");
+ goto failed;
+ }
+ asdl_seq_SET(defaults, i, val);
+ }
+ Py_CLEAR(tmp);
+ }
+ *out = _PyAST_arguments(posonlyargs, args, vararg, kwonlyargs, kw_defaults,
+ kwarg, defaults, arena);
+ if (*out == NULL) goto failed;
+ return 0;
+failed:
+ Py_XDECREF(tmp);
+ return 1;
+}
+
+int
+obj2ast_arg(struct ast_state *state, PyObject* obj, arg_ty* out, PyArena* arena)
+{
+ PyObject* tmp = NULL;
+ identifier arg;
+ expr_ty annotation;
+ string type_comment;
+ int lineno;
+ int col_offset;
+ int end_lineno;
+ int end_col_offset;
+
+ if (_PyObject_LookupAttr(obj, state->arg, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL) {
+ PyErr_SetString(PyExc_TypeError, "required field \"arg\" missing from arg");
+ return 1;
+ }
+ else {
+ int res;
+ if (_Py_EnterRecursiveCall(" while traversing 'arg' node")) {
+ goto failed;
+ }
+ res = obj2ast_identifier(state, tmp, &arg, arena);
+ _Py_LeaveRecursiveCall();
+ if (res != 0) goto failed;
+ Py_CLEAR(tmp);
+ }
+ if (_PyObject_LookupAttr(obj, state->annotation, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL || tmp == Py_None) {
+ Py_CLEAR(tmp);
+ annotation = NULL;
+ }
+ else {
+ int res;
+ if (_Py_EnterRecursiveCall(" while traversing 'arg' node")) {
+ goto failed;
+ }
+ res = obj2ast_expr(state, tmp, &annotation, arena);
+ _Py_LeaveRecursiveCall();
+ if (res != 0) goto failed;
+ Py_CLEAR(tmp);
+ }
+ if (_PyObject_LookupAttr(obj, state->type_comment, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL || tmp == Py_None) {
+ Py_CLEAR(tmp);
+ type_comment = NULL;
+ }
+ else {
+ int res;
+ if (_Py_EnterRecursiveCall(" while traversing 'arg' node")) {
+ goto failed;
+ }
+ res = obj2ast_string(state, tmp, &type_comment, arena);
+ _Py_LeaveRecursiveCall();
+ if (res != 0) goto failed;
+ Py_CLEAR(tmp);
+ }
+ if (_PyObject_LookupAttr(obj, state->lineno, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL) {
+ PyErr_SetString(PyExc_TypeError, "required field \"lineno\" missing from arg");
+ return 1;
+ }
+ else {
+ int res;
+ if (_Py_EnterRecursiveCall(" while traversing 'arg' node")) {
+ goto failed;
+ }
+ res = obj2ast_int(state, tmp, &lineno, arena);
+ _Py_LeaveRecursiveCall();
+ if (res != 0) goto failed;
+ Py_CLEAR(tmp);
+ }
+ if (_PyObject_LookupAttr(obj, state->col_offset, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL) {
+ PyErr_SetString(PyExc_TypeError, "required field \"col_offset\" missing from arg");
+ return 1;
+ }
+ else {
+ int res;
+ if (_Py_EnterRecursiveCall(" while traversing 'arg' node")) {
+ goto failed;
+ }
+ res = obj2ast_int(state, tmp, &col_offset, arena);
+ _Py_LeaveRecursiveCall();
+ if (res != 0) goto failed;
+ Py_CLEAR(tmp);
+ }
+ if (_PyObject_LookupAttr(obj, state->end_lineno, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL || tmp == Py_None) {
+ Py_CLEAR(tmp);
+ end_lineno = lineno;
+ }
+ else {
+ int res;
+ if (_Py_EnterRecursiveCall(" while traversing 'arg' node")) {
+ goto failed;
+ }
+ res = obj2ast_int(state, tmp, &end_lineno, arena);
+ _Py_LeaveRecursiveCall();
+ if (res != 0) goto failed;
+ Py_CLEAR(tmp);
+ }
+ if (_PyObject_LookupAttr(obj, state->end_col_offset, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL || tmp == Py_None) {
+ Py_CLEAR(tmp);
+ end_col_offset = col_offset;
+ }
+ else {
+ int res;
+ if (_Py_EnterRecursiveCall(" while traversing 'arg' node")) {
+ goto failed;
+ }
+ res = obj2ast_int(state, tmp, &end_col_offset, arena);
+ _Py_LeaveRecursiveCall();
+ if (res != 0) goto failed;
+ Py_CLEAR(tmp);
+ }
+ *out = _PyAST_arg(arg, annotation, type_comment, lineno, col_offset,
+ end_lineno, end_col_offset, arena);
+ if (*out == NULL) goto failed;
+ return 0;
+failed:
+ Py_XDECREF(tmp);
+ return 1;
+}
+
+int
+obj2ast_keyword(struct ast_state *state, PyObject* obj, keyword_ty* out,
+ PyArena* arena)
+{
+ PyObject* tmp = NULL;
+ identifier arg;
+ expr_ty value;
+ int lineno;
+ int col_offset;
+ int end_lineno;
+ int end_col_offset;
+
+ if (_PyObject_LookupAttr(obj, state->arg, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL || tmp == Py_None) {
+ Py_CLEAR(tmp);
+ arg = NULL;
+ }
+ else {
+ int res;
+ if (_Py_EnterRecursiveCall(" while traversing 'keyword' node")) {
+ goto failed;
+ }
+ res = obj2ast_identifier(state, tmp, &arg, arena);
+ _Py_LeaveRecursiveCall();
+ if (res != 0) goto failed;
+ Py_CLEAR(tmp);
+ }
+ if (_PyObject_LookupAttr(obj, state->value, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL) {
+ PyErr_SetString(PyExc_TypeError, "required field \"value\" missing from keyword");
+ return 1;
+ }
+ else {
+ int res;
+ if (_Py_EnterRecursiveCall(" while traversing 'keyword' node")) {
+ goto failed;
+ }
+ res = obj2ast_expr(state, tmp, &value, arena);
+ _Py_LeaveRecursiveCall();
+ if (res != 0) goto failed;
+ Py_CLEAR(tmp);
+ }
+ if (_PyObject_LookupAttr(obj, state->lineno, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL) {
+ PyErr_SetString(PyExc_TypeError, "required field \"lineno\" missing from keyword");
+ return 1;
+ }
+ else {
+ int res;
+ if (_Py_EnterRecursiveCall(" while traversing 'keyword' node")) {
+ goto failed;
+ }
+ res = obj2ast_int(state, tmp, &lineno, arena);
+ _Py_LeaveRecursiveCall();
+ if (res != 0) goto failed;
+ Py_CLEAR(tmp);
+ }
+ if (_PyObject_LookupAttr(obj, state->col_offset, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL) {
+ PyErr_SetString(PyExc_TypeError, "required field \"col_offset\" missing from keyword");
+ return 1;
+ }
+ else {
+ int res;
+ if (_Py_EnterRecursiveCall(" while traversing 'keyword' node")) {
+ goto failed;
+ }
+ res = obj2ast_int(state, tmp, &col_offset, arena);
+ _Py_LeaveRecursiveCall();
+ if (res != 0) goto failed;
+ Py_CLEAR(tmp);
+ }
+ if (_PyObject_LookupAttr(obj, state->end_lineno, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL || tmp == Py_None) {
+ Py_CLEAR(tmp);
+ end_lineno = lineno;
+ }
+ else {
+ int res;
+ if (_Py_EnterRecursiveCall(" while traversing 'keyword' node")) {
+ goto failed;
+ }
+ res = obj2ast_int(state, tmp, &end_lineno, arena);
+ _Py_LeaveRecursiveCall();
+ if (res != 0) goto failed;
+ Py_CLEAR(tmp);
+ }
+ if (_PyObject_LookupAttr(obj, state->end_col_offset, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL || tmp == Py_None) {
+ Py_CLEAR(tmp);
+ end_col_offset = col_offset;
+ }
+ else {
+ int res;
+ if (_Py_EnterRecursiveCall(" while traversing 'keyword' node")) {
+ goto failed;
+ }
+ res = obj2ast_int(state, tmp, &end_col_offset, arena);
+ _Py_LeaveRecursiveCall();
+ if (res != 0) goto failed;
+ Py_CLEAR(tmp);
+ }
+ *out = _PyAST_keyword(arg, value, lineno, col_offset, end_lineno,
+ end_col_offset, arena);
+ if (*out == NULL) goto failed;
+ return 0;
+failed:
+ Py_XDECREF(tmp);
+ return 1;
+}
+
+int
+obj2ast_alias(struct ast_state *state, PyObject* obj, alias_ty* out, PyArena*
+ arena)
+{
+ PyObject* tmp = NULL;
+ identifier name;
+ identifier asname;
+ int lineno;
+ int col_offset;
+ int end_lineno;
+ int end_col_offset;
+
+ if (_PyObject_LookupAttr(obj, state->name, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL) {
+ PyErr_SetString(PyExc_TypeError, "required field \"name\" missing from alias");
+ return 1;
+ }
+ else {
+ int res;
+ if (_Py_EnterRecursiveCall(" while traversing 'alias' node")) {
+ goto failed;
+ }
+ res = obj2ast_identifier(state, tmp, &name, arena);
+ _Py_LeaveRecursiveCall();
+ if (res != 0) goto failed;
+ Py_CLEAR(tmp);
+ }
+ if (_PyObject_LookupAttr(obj, state->asname, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL || tmp == Py_None) {
+ Py_CLEAR(tmp);
+ asname = NULL;
+ }
+ else {
+ int res;
+ if (_Py_EnterRecursiveCall(" while traversing 'alias' node")) {
+ goto failed;
+ }
+ res = obj2ast_identifier(state, tmp, &asname, arena);
+ _Py_LeaveRecursiveCall();
+ if (res != 0) goto failed;
+ Py_CLEAR(tmp);
+ }
+ if (_PyObject_LookupAttr(obj, state->lineno, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL) {
+ PyErr_SetString(PyExc_TypeError, "required field \"lineno\" missing from alias");
+ return 1;
+ }
+ else {
+ int res;
+ if (_Py_EnterRecursiveCall(" while traversing 'alias' node")) {
+ goto failed;
+ }
+ res = obj2ast_int(state, tmp, &lineno, arena);
+ _Py_LeaveRecursiveCall();
+ if (res != 0) goto failed;
+ Py_CLEAR(tmp);
+ }
+ if (_PyObject_LookupAttr(obj, state->col_offset, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL) {
+ PyErr_SetString(PyExc_TypeError, "required field \"col_offset\" missing from alias");
+ return 1;
+ }
+ else {
+ int res;
+ if (_Py_EnterRecursiveCall(" while traversing 'alias' node")) {
+ goto failed;
+ }
+ res = obj2ast_int(state, tmp, &col_offset, arena);
+ _Py_LeaveRecursiveCall();
+ if (res != 0) goto failed;
+ Py_CLEAR(tmp);
+ }
+ if (_PyObject_LookupAttr(obj, state->end_lineno, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL || tmp == Py_None) {
+ Py_CLEAR(tmp);
+ end_lineno = lineno;
+ }
+ else {
+ int res;
+ if (_Py_EnterRecursiveCall(" while traversing 'alias' node")) {
+ goto failed;
+ }
+ res = obj2ast_int(state, tmp, &end_lineno, arena);
+ _Py_LeaveRecursiveCall();
+ if (res != 0) goto failed;
+ Py_CLEAR(tmp);
+ }
+ if (_PyObject_LookupAttr(obj, state->end_col_offset, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL || tmp == Py_None) {
+ Py_CLEAR(tmp);
+ end_col_offset = col_offset;
+ }
+ else {
+ int res;
+ if (_Py_EnterRecursiveCall(" while traversing 'alias' node")) {
+ goto failed;
+ }
+ res = obj2ast_int(state, tmp, &end_col_offset, arena);
+ _Py_LeaveRecursiveCall();
+ if (res != 0) goto failed;
+ Py_CLEAR(tmp);
+ }
+ *out = _PyAST_alias(name, asname, lineno, col_offset, end_lineno,
+ end_col_offset, arena);
+ if (*out == NULL) goto failed;
+ return 0;
+failed:
+ Py_XDECREF(tmp);
+ return 1;
+}
+
+int
+obj2ast_withitem(struct ast_state *state, PyObject* obj, withitem_ty* out,
+ PyArena* arena)
+{
+ PyObject* tmp = NULL;
+ expr_ty context_expr;
+ expr_ty optional_vars;
+
+ if (_PyObject_LookupAttr(obj, state->context_expr, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL) {
+ PyErr_SetString(PyExc_TypeError, "required field \"context_expr\" missing from withitem");
+ return 1;
+ }
+ else {
+ int res;
+ if (_Py_EnterRecursiveCall(" while traversing 'withitem' node")) {
+ goto failed;
+ }
+ res = obj2ast_expr(state, tmp, &context_expr, arena);
+ _Py_LeaveRecursiveCall();
+ if (res != 0) goto failed;
+ Py_CLEAR(tmp);
+ }
+ if (_PyObject_LookupAttr(obj, state->optional_vars, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL || tmp == Py_None) {
+ Py_CLEAR(tmp);
+ optional_vars = NULL;
+ }
+ else {
+ int res;
+ if (_Py_EnterRecursiveCall(" while traversing 'withitem' node")) {
+ goto failed;
+ }
+ res = obj2ast_expr(state, tmp, &optional_vars, arena);
+ _Py_LeaveRecursiveCall();
+ if (res != 0) goto failed;
+ Py_CLEAR(tmp);
+ }
+ *out = _PyAST_withitem(context_expr, optional_vars, arena);
+ if (*out == NULL) goto failed;
+ return 0;
+failed:
+ Py_XDECREF(tmp);
+ return 1;
+}
+
+int
+obj2ast_match_case(struct ast_state *state, PyObject* obj, match_case_ty* out,
+ PyArena* arena)
+{
+ PyObject* tmp = NULL;
+ pattern_ty pattern;
+ expr_ty guard;
+ asdl_stmt_seq* body;
+
+ if (_PyObject_LookupAttr(obj, state->pattern, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL) {
+ PyErr_SetString(PyExc_TypeError, "required field \"pattern\" missing from match_case");
+ return 1;
+ }
+ else {
+ int res;
+ if (_Py_EnterRecursiveCall(" while traversing 'match_case' node")) {
+ goto failed;
+ }
+ res = obj2ast_pattern(state, tmp, &pattern, arena);
+ _Py_LeaveRecursiveCall();
+ if (res != 0) goto failed;
+ Py_CLEAR(tmp);
+ }
+ if (_PyObject_LookupAttr(obj, state->guard, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL || tmp == Py_None) {
+ Py_CLEAR(tmp);
+ guard = NULL;
+ }
+ else {
+ int res;
+ if (_Py_EnterRecursiveCall(" while traversing 'match_case' node")) {
+ goto failed;
+ }
+ res = obj2ast_expr(state, tmp, &guard, arena);
+ _Py_LeaveRecursiveCall();
+ if (res != 0) goto failed;
+ Py_CLEAR(tmp);
+ }
+ if (_PyObject_LookupAttr(obj, state->body, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL) {
+ tmp = PyList_New(0);
+ if (tmp == NULL) {
+ return 1;
+ }
+ }
+ {
+ int res;
+ Py_ssize_t len;
+ Py_ssize_t i;
+ if (!PyList_Check(tmp)) {
+ PyErr_Format(PyExc_TypeError, "match_case field \"body\" must be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp)));
+ goto failed;
+ }
+ len = PyList_GET_SIZE(tmp);
+ body = _Py_asdl_stmt_seq_new(len, arena);
+ if (body == NULL) goto failed;
+ for (i = 0; i < len; i++) {
+ stmt_ty val;
+ PyObject *tmp2 = Py_NewRef(PyList_GET_ITEM(tmp, i));
+ if (_Py_EnterRecursiveCall(" while traversing 'match_case' node")) {
+ goto failed;
+ }
+ res = obj2ast_stmt(state, tmp2, &val, arena);
+ _Py_LeaveRecursiveCall();
+ Py_DECREF(tmp2);
+ if (res != 0) goto failed;
+ if (len != PyList_GET_SIZE(tmp)) {
+ PyErr_SetString(PyExc_RuntimeError, "match_case field \"body\" changed size during iteration");
+ goto failed;
+ }
+ asdl_seq_SET(body, i, val);
+ }
+ Py_CLEAR(tmp);
+ }
+ *out = _PyAST_match_case(pattern, guard, body, arena);
+ if (*out == NULL) goto failed;
+ return 0;
+failed:
+ Py_XDECREF(tmp);
+ return 1;
+}
+
+int
+obj2ast_pattern(struct ast_state *state, PyObject* obj, pattern_ty* out,
+ PyArena* arena)
+{
+ int isinstance;
+
+ PyObject *tmp = NULL;
+ PyObject *tp;
+ int lineno;
+ int col_offset;
+ int end_lineno;
+ int end_col_offset;
+
+ if (obj == Py_None) {
+ *out = NULL;
+ return 0;
+ }
+ if (_PyObject_LookupAttr(obj, state->lineno, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL) {
+ PyErr_SetString(PyExc_TypeError, "required field \"lineno\" missing from pattern");
+ return 1;
+ }
+ else {
+ int res;
+ if (_Py_EnterRecursiveCall(" while traversing 'pattern' node")) {
+ goto failed;
+ }
+ res = obj2ast_int(state, tmp, &lineno, arena);
+ _Py_LeaveRecursiveCall();
+ if (res != 0) goto failed;
+ Py_CLEAR(tmp);
+ }
+ if (_PyObject_LookupAttr(obj, state->col_offset, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL) {
+ PyErr_SetString(PyExc_TypeError, "required field \"col_offset\" missing from pattern");
+ return 1;
+ }
+ else {
+ int res;
+ if (_Py_EnterRecursiveCall(" while traversing 'pattern' node")) {
+ goto failed;
+ }
+ res = obj2ast_int(state, tmp, &col_offset, arena);
+ _Py_LeaveRecursiveCall();
+ if (res != 0) goto failed;
+ Py_CLEAR(tmp);
+ }
+ if (_PyObject_LookupAttr(obj, state->end_lineno, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL) {
+ PyErr_SetString(PyExc_TypeError, "required field \"end_lineno\" missing from pattern");
+ return 1;
+ }
+ else {
+ int res;
+ if (_Py_EnterRecursiveCall(" while traversing 'pattern' node")) {
+ goto failed;
+ }
+ res = obj2ast_int(state, tmp, &end_lineno, arena);
+ _Py_LeaveRecursiveCall();
+ if (res != 0) goto failed;
+ Py_CLEAR(tmp);
+ }
+ if (_PyObject_LookupAttr(obj, state->end_col_offset, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL) {
+ PyErr_SetString(PyExc_TypeError, "required field \"end_col_offset\" missing from pattern");
+ return 1;
+ }
+ else {
+ int res;
+ if (_Py_EnterRecursiveCall(" while traversing 'pattern' node")) {
+ goto failed;
+ }
+ res = obj2ast_int(state, tmp, &end_col_offset, arena);
+ _Py_LeaveRecursiveCall();
+ if (res != 0) goto failed;
+ Py_CLEAR(tmp);
+ }
+ tp = state->MatchValue_type;
+ isinstance = PyObject_IsInstance(obj, tp);
+ if (isinstance == -1) {
+ return 1;
+ }
+ if (isinstance) {
+ expr_ty value;
+
+ if (_PyObject_LookupAttr(obj, state->value, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL) {
+ PyErr_SetString(PyExc_TypeError, "required field \"value\" missing from MatchValue");
+ return 1;
+ }
+ else {
+ int res;
+ if (_Py_EnterRecursiveCall(" while traversing 'MatchValue' node")) {
+ goto failed;
+ }
+ res = obj2ast_expr(state, tmp, &value, arena);
+ _Py_LeaveRecursiveCall();
+ if (res != 0) goto failed;
+ Py_CLEAR(tmp);
+ }
+ *out = _PyAST_MatchValue(value, lineno, col_offset, end_lineno,
+ end_col_offset, arena);
+ if (*out == NULL) goto failed;
+ return 0;
+ }
+ tp = state->MatchSingleton_type;
+ isinstance = PyObject_IsInstance(obj, tp);
+ if (isinstance == -1) {
+ return 1;
+ }
+ if (isinstance) {
+ constant value;
+
+ if (_PyObject_LookupAttr(obj, state->value, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL) {
+ PyErr_SetString(PyExc_TypeError, "required field \"value\" missing from MatchSingleton");
+ return 1;
+ }
+ else {
+ int res;
+ if (_Py_EnterRecursiveCall(" while traversing 'MatchSingleton' node")) {
+ goto failed;
+ }
+ res = obj2ast_constant(state, tmp, &value, arena);
+ _Py_LeaveRecursiveCall();
+ if (res != 0) goto failed;
+ Py_CLEAR(tmp);
+ }
+ *out = _PyAST_MatchSingleton(value, lineno, col_offset, end_lineno,
+ end_col_offset, arena);
+ if (*out == NULL) goto failed;
+ return 0;
+ }
+ tp = state->MatchSequence_type;
+ isinstance = PyObject_IsInstance(obj, tp);
+ if (isinstance == -1) {
+ return 1;
+ }
+ if (isinstance) {
+ asdl_pattern_seq* patterns;
+
+ if (_PyObject_LookupAttr(obj, state->patterns, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL) {
+ tmp = PyList_New(0);
+ if (tmp == NULL) {
+ return 1;
+ }
+ }
+ {
+ int res;
+ Py_ssize_t len;
+ Py_ssize_t i;
+ if (!PyList_Check(tmp)) {
+ PyErr_Format(PyExc_TypeError, "MatchSequence field \"patterns\" must be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp)));
+ goto failed;
+ }
+ len = PyList_GET_SIZE(tmp);
+ patterns = _Py_asdl_pattern_seq_new(len, arena);
+ if (patterns == NULL) goto failed;
+ for (i = 0; i < len; i++) {
+ pattern_ty val;
+ PyObject *tmp2 = Py_NewRef(PyList_GET_ITEM(tmp, i));
+ if (_Py_EnterRecursiveCall(" while traversing 'MatchSequence' node")) {
+ goto failed;
+ }
+ res = obj2ast_pattern(state, tmp2, &val, arena);
+ _Py_LeaveRecursiveCall();
+ Py_DECREF(tmp2);
+ if (res != 0) goto failed;
+ if (len != PyList_GET_SIZE(tmp)) {
+ PyErr_SetString(PyExc_RuntimeError, "MatchSequence field \"patterns\" changed size during iteration");
+ goto failed;
+ }
+ asdl_seq_SET(patterns, i, val);
+ }
+ Py_CLEAR(tmp);
+ }
+ *out = _PyAST_MatchSequence(patterns, lineno, col_offset, end_lineno,
+ end_col_offset, arena);
+ if (*out == NULL) goto failed;
+ return 0;
+ }
+ tp = state->MatchMapping_type;
+ isinstance = PyObject_IsInstance(obj, tp);
+ if (isinstance == -1) {
+ return 1;
+ }
+ if (isinstance) {
+ asdl_expr_seq* keys;
+ asdl_pattern_seq* patterns;
+ identifier rest;
+
+ if (_PyObject_LookupAttr(obj, state->keys, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL) {
+ tmp = PyList_New(0);
+ if (tmp == NULL) {
+ return 1;
+ }
+ }
+ {
+ int res;
+ Py_ssize_t len;
+ Py_ssize_t i;
+ if (!PyList_Check(tmp)) {
+ PyErr_Format(PyExc_TypeError, "MatchMapping field \"keys\" must be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp)));
+ goto failed;
+ }
+ len = PyList_GET_SIZE(tmp);
+ keys = _Py_asdl_expr_seq_new(len, arena);
+ if (keys == NULL) goto failed;
+ for (i = 0; i < len; i++) {
+ expr_ty val;
+ PyObject *tmp2 = Py_NewRef(PyList_GET_ITEM(tmp, i));
+ if (_Py_EnterRecursiveCall(" while traversing 'MatchMapping' node")) {
+ goto failed;
+ }
+ res = obj2ast_expr(state, tmp2, &val, arena);
+ _Py_LeaveRecursiveCall();
+ Py_DECREF(tmp2);
+ if (res != 0) goto failed;
+ if (len != PyList_GET_SIZE(tmp)) {
+ PyErr_SetString(PyExc_RuntimeError, "MatchMapping field \"keys\" changed size during iteration");
+ goto failed;
+ }
+ asdl_seq_SET(keys, i, val);
+ }
+ Py_CLEAR(tmp);
+ }
+ if (_PyObject_LookupAttr(obj, state->patterns, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL) {
+ tmp = PyList_New(0);
+ if (tmp == NULL) {
+ return 1;
+ }
+ }
+ {
+ int res;
+ Py_ssize_t len;
+ Py_ssize_t i;
+ if (!PyList_Check(tmp)) {
+ PyErr_Format(PyExc_TypeError, "MatchMapping field \"patterns\" must be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp)));
+ goto failed;
+ }
+ len = PyList_GET_SIZE(tmp);
+ patterns = _Py_asdl_pattern_seq_new(len, arena);
+ if (patterns == NULL) goto failed;
+ for (i = 0; i < len; i++) {
+ pattern_ty val;
+ PyObject *tmp2 = Py_NewRef(PyList_GET_ITEM(tmp, i));
+ if (_Py_EnterRecursiveCall(" while traversing 'MatchMapping' node")) {
+ goto failed;
+ }
+ res = obj2ast_pattern(state, tmp2, &val, arena);
+ _Py_LeaveRecursiveCall();
+ Py_DECREF(tmp2);
+ if (res != 0) goto failed;
+ if (len != PyList_GET_SIZE(tmp)) {
+ PyErr_SetString(PyExc_RuntimeError, "MatchMapping field \"patterns\" changed size during iteration");
+ goto failed;
+ }
+ asdl_seq_SET(patterns, i, val);
+ }
+ Py_CLEAR(tmp);
+ }
+ if (_PyObject_LookupAttr(obj, state->rest, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL || tmp == Py_None) {
+ Py_CLEAR(tmp);
+ rest = NULL;
+ }
+ else {
+ int res;
+ if (_Py_EnterRecursiveCall(" while traversing 'MatchMapping' node")) {
+ goto failed;
+ }
+ res = obj2ast_identifier(state, tmp, &rest, arena);
+ _Py_LeaveRecursiveCall();
+ if (res != 0) goto failed;
+ Py_CLEAR(tmp);
+ }
+ *out = _PyAST_MatchMapping(keys, patterns, rest, lineno, col_offset,
+ end_lineno, end_col_offset, arena);
+ if (*out == NULL) goto failed;
+ return 0;
+ }
+ tp = state->MatchClass_type;
+ isinstance = PyObject_IsInstance(obj, tp);
+ if (isinstance == -1) {
+ return 1;
+ }
+ if (isinstance) {
+ expr_ty cls;
+ asdl_pattern_seq* patterns;
+ asdl_identifier_seq* kwd_attrs;
+ asdl_pattern_seq* kwd_patterns;
+
+ if (_PyObject_LookupAttr(obj, state->cls, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL) {
+ PyErr_SetString(PyExc_TypeError, "required field \"cls\" missing from MatchClass");
+ return 1;
+ }
+ else {
+ int res;
+ if (_Py_EnterRecursiveCall(" while traversing 'MatchClass' node")) {
+ goto failed;
+ }
+ res = obj2ast_expr(state, tmp, &cls, arena);
+ _Py_LeaveRecursiveCall();
+ if (res != 0) goto failed;
+ Py_CLEAR(tmp);
+ }
+ if (_PyObject_LookupAttr(obj, state->patterns, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL) {
+ tmp = PyList_New(0);
+ if (tmp == NULL) {
+ return 1;
+ }
+ }
+ {
+ int res;
+ Py_ssize_t len;
+ Py_ssize_t i;
+ if (!PyList_Check(tmp)) {
+ PyErr_Format(PyExc_TypeError, "MatchClass field \"patterns\" must be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp)));
+ goto failed;
+ }
+ len = PyList_GET_SIZE(tmp);
+ patterns = _Py_asdl_pattern_seq_new(len, arena);
+ if (patterns == NULL) goto failed;
+ for (i = 0; i < len; i++) {
+ pattern_ty val;
+ PyObject *tmp2 = Py_NewRef(PyList_GET_ITEM(tmp, i));
+ if (_Py_EnterRecursiveCall(" while traversing 'MatchClass' node")) {
+ goto failed;
+ }
+ res = obj2ast_pattern(state, tmp2, &val, arena);
+ _Py_LeaveRecursiveCall();
+ Py_DECREF(tmp2);
+ if (res != 0) goto failed;
+ if (len != PyList_GET_SIZE(tmp)) {
+ PyErr_SetString(PyExc_RuntimeError, "MatchClass field \"patterns\" changed size during iteration");
+ goto failed;
+ }
+ asdl_seq_SET(patterns, i, val);
+ }
+ Py_CLEAR(tmp);
+ }
+ if (_PyObject_LookupAttr(obj, state->kwd_attrs, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL) {
+ tmp = PyList_New(0);
+ if (tmp == NULL) {
+ return 1;
+ }
+ }
+ {
+ int res;
+ Py_ssize_t len;
+ Py_ssize_t i;
+ if (!PyList_Check(tmp)) {
+ PyErr_Format(PyExc_TypeError, "MatchClass field \"kwd_attrs\" must be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp)));
+ goto failed;
+ }
+ len = PyList_GET_SIZE(tmp);
+ kwd_attrs = _Py_asdl_identifier_seq_new(len, arena);
+ if (kwd_attrs == NULL) goto failed;
+ for (i = 0; i < len; i++) {
+ identifier val;
+ PyObject *tmp2 = Py_NewRef(PyList_GET_ITEM(tmp, i));
+ if (_Py_EnterRecursiveCall(" while traversing 'MatchClass' node")) {
+ goto failed;
+ }
+ res = obj2ast_identifier(state, tmp2, &val, arena);
+ _Py_LeaveRecursiveCall();
+ Py_DECREF(tmp2);
+ if (res != 0) goto failed;
+ if (len != PyList_GET_SIZE(tmp)) {
+ PyErr_SetString(PyExc_RuntimeError, "MatchClass field \"kwd_attrs\" changed size during iteration");
+ goto failed;
+ }
+ asdl_seq_SET(kwd_attrs, i, val);
+ }
+ Py_CLEAR(tmp);
+ }
+ if (_PyObject_LookupAttr(obj, state->kwd_patterns, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL) {
+ tmp = PyList_New(0);
+ if (tmp == NULL) {
+ return 1;
+ }
+ }
+ {
+ int res;
+ Py_ssize_t len;
+ Py_ssize_t i;
+ if (!PyList_Check(tmp)) {
+ PyErr_Format(PyExc_TypeError, "MatchClass field \"kwd_patterns\" must be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp)));
+ goto failed;
+ }
+ len = PyList_GET_SIZE(tmp);
+ kwd_patterns = _Py_asdl_pattern_seq_new(len, arena);
+ if (kwd_patterns == NULL) goto failed;
+ for (i = 0; i < len; i++) {
+ pattern_ty val;
+ PyObject *tmp2 = Py_NewRef(PyList_GET_ITEM(tmp, i));
+ if (_Py_EnterRecursiveCall(" while traversing 'MatchClass' node")) {
+ goto failed;
+ }
+ res = obj2ast_pattern(state, tmp2, &val, arena);
+ _Py_LeaveRecursiveCall();
+ Py_DECREF(tmp2);
+ if (res != 0) goto failed;
+ if (len != PyList_GET_SIZE(tmp)) {
+ PyErr_SetString(PyExc_RuntimeError, "MatchClass field \"kwd_patterns\" changed size during iteration");
+ goto failed;
+ }
+ asdl_seq_SET(kwd_patterns, i, val);
+ }
+ Py_CLEAR(tmp);
+ }
+ *out = _PyAST_MatchClass(cls, patterns, kwd_attrs, kwd_patterns,
+ lineno, col_offset, end_lineno,
+ end_col_offset, arena);
+ if (*out == NULL) goto failed;
+ return 0;
+ }
+ tp = state->MatchStar_type;
+ isinstance = PyObject_IsInstance(obj, tp);
+ if (isinstance == -1) {
+ return 1;
+ }
+ if (isinstance) {
+ identifier name;
+
+ if (_PyObject_LookupAttr(obj, state->name, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL || tmp == Py_None) {
+ Py_CLEAR(tmp);
+ name = NULL;
+ }
+ else {
+ int res;
+ if (_Py_EnterRecursiveCall(" while traversing 'MatchStar' node")) {
+ goto failed;
+ }
+ res = obj2ast_identifier(state, tmp, &name, arena);
+ _Py_LeaveRecursiveCall();
+ if (res != 0) goto failed;
+ Py_CLEAR(tmp);
+ }
+ *out = _PyAST_MatchStar(name, lineno, col_offset, end_lineno,
+ end_col_offset, arena);
+ if (*out == NULL) goto failed;
+ return 0;
+ }
+ tp = state->MatchAs_type;
+ isinstance = PyObject_IsInstance(obj, tp);
+ if (isinstance == -1) {
+ return 1;
+ }
+ if (isinstance) {
+ pattern_ty pattern;
+ identifier name;
+
+ if (_PyObject_LookupAttr(obj, state->pattern, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL || tmp == Py_None) {
+ Py_CLEAR(tmp);
+ pattern = NULL;
+ }
+ else {
+ int res;
+ if (_Py_EnterRecursiveCall(" while traversing 'MatchAs' node")) {
+ goto failed;
+ }
+ res = obj2ast_pattern(state, tmp, &pattern, arena);
+ _Py_LeaveRecursiveCall();
+ if (res != 0) goto failed;
+ Py_CLEAR(tmp);
+ }
+ if (_PyObject_LookupAttr(obj, state->name, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL || tmp == Py_None) {
+ Py_CLEAR(tmp);
+ name = NULL;
+ }
+ else {
+ int res;
+ if (_Py_EnterRecursiveCall(" while traversing 'MatchAs' node")) {
+ goto failed;
+ }
+ res = obj2ast_identifier(state, tmp, &name, arena);
+ _Py_LeaveRecursiveCall();
+ if (res != 0) goto failed;
+ Py_CLEAR(tmp);
+ }
+ *out = _PyAST_MatchAs(pattern, name, lineno, col_offset, end_lineno,
+ end_col_offset, arena);
+ if (*out == NULL) goto failed;
+ return 0;
+ }
+ tp = state->MatchOr_type;
+ isinstance = PyObject_IsInstance(obj, tp);
+ if (isinstance == -1) {
+ return 1;
+ }
+ if (isinstance) {
+ asdl_pattern_seq* patterns;
+
+ if (_PyObject_LookupAttr(obj, state->patterns, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL) {
+ tmp = PyList_New(0);
+ if (tmp == NULL) {
+ return 1;
+ }
+ }
+ {
+ int res;
+ Py_ssize_t len;
+ Py_ssize_t i;
+ if (!PyList_Check(tmp)) {
+ PyErr_Format(PyExc_TypeError, "MatchOr field \"patterns\" must be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp)));
+ goto failed;
+ }
+ len = PyList_GET_SIZE(tmp);
+ patterns = _Py_asdl_pattern_seq_new(len, arena);
+ if (patterns == NULL) goto failed;
+ for (i = 0; i < len; i++) {
+ pattern_ty val;
+ PyObject *tmp2 = Py_NewRef(PyList_GET_ITEM(tmp, i));
+ if (_Py_EnterRecursiveCall(" while traversing 'MatchOr' node")) {
+ goto failed;
+ }
+ res = obj2ast_pattern(state, tmp2, &val, arena);
+ _Py_LeaveRecursiveCall();
+ Py_DECREF(tmp2);
+ if (res != 0) goto failed;
+ if (len != PyList_GET_SIZE(tmp)) {
+ PyErr_SetString(PyExc_RuntimeError, "MatchOr field \"patterns\" changed size during iteration");
+ goto failed;
+ }
+ asdl_seq_SET(patterns, i, val);
+ }
+ Py_CLEAR(tmp);
+ }
+ *out = _PyAST_MatchOr(patterns, lineno, col_offset, end_lineno,
+ end_col_offset, arena);
+ if (*out == NULL) goto failed;
+ return 0;
+ }
+
+ PyErr_Format(PyExc_TypeError, "expected some sort of pattern, but got %R", obj);
+ failed:
+ Py_XDECREF(tmp);
+ return 1;
+}
+
+int
+obj2ast_type_ignore(struct ast_state *state, PyObject* obj, type_ignore_ty*
+ out, PyArena* arena)
+{
+ int isinstance;
+
+ PyObject *tmp = NULL;
+ PyObject *tp;
+
+ if (obj == Py_None) {
+ *out = NULL;
+ return 0;
+ }
+ tp = state->TypeIgnore_type;
+ isinstance = PyObject_IsInstance(obj, tp);
+ if (isinstance == -1) {
+ return 1;
+ }
+ if (isinstance) {
+ int lineno;
+ string tag;
+
+ if (_PyObject_LookupAttr(obj, state->lineno, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL) {
+ PyErr_SetString(PyExc_TypeError, "required field \"lineno\" missing from TypeIgnore");
+ return 1;
+ }
+ else {
+ int res;
+ if (_Py_EnterRecursiveCall(" while traversing 'TypeIgnore' node")) {
+ goto failed;
+ }
+ res = obj2ast_int(state, tmp, &lineno, arena);
+ _Py_LeaveRecursiveCall();
+ if (res != 0) goto failed;
+ Py_CLEAR(tmp);
+ }
+ if (_PyObject_LookupAttr(obj, state->tag, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL) {
+ PyErr_SetString(PyExc_TypeError, "required field \"tag\" missing from TypeIgnore");
+ return 1;
+ }
+ else {
+ int res;
+ if (_Py_EnterRecursiveCall(" while traversing 'TypeIgnore' node")) {
+ goto failed;
+ }
+ res = obj2ast_string(state, tmp, &tag, arena);
+ _Py_LeaveRecursiveCall();
+ if (res != 0) goto failed;
+ Py_CLEAR(tmp);
+ }
+ *out = _PyAST_TypeIgnore(lineno, tag, arena);
+ if (*out == NULL) goto failed;
+ return 0;
+ }
+
+ PyErr_Format(PyExc_TypeError, "expected some sort of type_ignore, but got %R", obj);
+ failed:
+ Py_XDECREF(tmp);
+ return 1;
+}
+
+int
+obj2ast_type_param(struct ast_state *state, PyObject* obj, type_param_ty* out,
+ PyArena* arena)
+{
+ int isinstance;
+
+ PyObject *tmp = NULL;
+ PyObject *tp;
+ int lineno;
+ int col_offset;
+ int end_lineno;
+ int end_col_offset;
+
+ if (obj == Py_None) {
+ *out = NULL;
+ return 0;
+ }
+ if (_PyObject_LookupAttr(obj, state->lineno, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL) {
+ PyErr_SetString(PyExc_TypeError, "required field \"lineno\" missing from type_param");
+ return 1;
+ }
+ else {
+ int res;
+ if (_Py_EnterRecursiveCall(" while traversing 'type_param' node")) {
+ goto failed;
+ }
+ res = obj2ast_int(state, tmp, &lineno, arena);
+ _Py_LeaveRecursiveCall();
+ if (res != 0) goto failed;
+ Py_CLEAR(tmp);
+ }
+ if (_PyObject_LookupAttr(obj, state->col_offset, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL) {
+ PyErr_SetString(PyExc_TypeError, "required field \"col_offset\" missing from type_param");
+ return 1;
+ }
+ else {
+ int res;
+ if (_Py_EnterRecursiveCall(" while traversing 'type_param' node")) {
+ goto failed;
+ }
+ res = obj2ast_int(state, tmp, &col_offset, arena);
+ _Py_LeaveRecursiveCall();
+ if (res != 0) goto failed;
+ Py_CLEAR(tmp);
+ }
+ if (_PyObject_LookupAttr(obj, state->end_lineno, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL) {
+ PyErr_SetString(PyExc_TypeError, "required field \"end_lineno\" missing from type_param");
+ return 1;
+ }
+ else {
+ int res;
+ if (_Py_EnterRecursiveCall(" while traversing 'type_param' node")) {
+ goto failed;
+ }
+ res = obj2ast_int(state, tmp, &end_lineno, arena);
+ _Py_LeaveRecursiveCall();
+ if (res != 0) goto failed;
+ Py_CLEAR(tmp);
+ }
+ if (_PyObject_LookupAttr(obj, state->end_col_offset, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL) {
+ PyErr_SetString(PyExc_TypeError, "required field \"end_col_offset\" missing from type_param");
+ return 1;
+ }
+ else {
+ int res;
+ if (_Py_EnterRecursiveCall(" while traversing 'type_param' node")) {
+ goto failed;
+ }
+ res = obj2ast_int(state, tmp, &end_col_offset, arena);
+ _Py_LeaveRecursiveCall();
+ if (res != 0) goto failed;
+ Py_CLEAR(tmp);
+ }
+ tp = state->TypeVar_type;
+ isinstance = PyObject_IsInstance(obj, tp);
+ if (isinstance == -1) {
+ return 1;
+ }
+ if (isinstance) {
+ identifier name;
+ expr_ty bound;
+
+ if (_PyObject_LookupAttr(obj, state->name, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL) {
+ PyErr_SetString(PyExc_TypeError, "required field \"name\" missing from TypeVar");
+ return 1;
+ }
+ else {
+ int res;
+ if (_Py_EnterRecursiveCall(" while traversing 'TypeVar' node")) {
+ goto failed;
+ }
+ res = obj2ast_identifier(state, tmp, &name, arena);
+ _Py_LeaveRecursiveCall();
+ if (res != 0) goto failed;
+ Py_CLEAR(tmp);
+ }
+ if (_PyObject_LookupAttr(obj, state->bound, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL || tmp == Py_None) {
+ Py_CLEAR(tmp);
+ bound = NULL;
+ }
+ else {
+ int res;
+ if (_Py_EnterRecursiveCall(" while traversing 'TypeVar' node")) {
+ goto failed;
+ }
+ res = obj2ast_expr(state, tmp, &bound, arena);
+ _Py_LeaveRecursiveCall();
+ if (res != 0) goto failed;
+ Py_CLEAR(tmp);
+ }
+ *out = _PyAST_TypeVar(name, bound, lineno, col_offset, end_lineno,
+ end_col_offset, arena);
+ if (*out == NULL) goto failed;
+ return 0;
+ }
+ tp = state->ParamSpec_type;
+ isinstance = PyObject_IsInstance(obj, tp);
+ if (isinstance == -1) {
+ return 1;
+ }
+ if (isinstance) {
+ identifier name;
+
+ if (_PyObject_LookupAttr(obj, state->name, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL) {
+ PyErr_SetString(PyExc_TypeError, "required field \"name\" missing from ParamSpec");
+ return 1;
+ }
+ else {
+ int res;
+ if (_Py_EnterRecursiveCall(" while traversing 'ParamSpec' node")) {
+ goto failed;
+ }
+ res = obj2ast_identifier(state, tmp, &name, arena);
+ _Py_LeaveRecursiveCall();
+ if (res != 0) goto failed;
+ Py_CLEAR(tmp);
+ }
+ *out = _PyAST_ParamSpec(name, lineno, col_offset, end_lineno,
+ end_col_offset, arena);
+ if (*out == NULL) goto failed;
+ return 0;
+ }
+ tp = state->TypeVarTuple_type;
+ isinstance = PyObject_IsInstance(obj, tp);
+ if (isinstance == -1) {
+ return 1;
+ }
+ if (isinstance) {
+ identifier name;
+
+ if (_PyObject_LookupAttr(obj, state->name, &tmp) < 0) {
+ return 1;
+ }
+ if (tmp == NULL) {
+ PyErr_SetString(PyExc_TypeError, "required field \"name\" missing from TypeVarTuple");
+ return 1;
+ }
+ else {
+ int res;
+ if (_Py_EnterRecursiveCall(" while traversing 'TypeVarTuple' node")) {
+ goto failed;
+ }
+ res = obj2ast_identifier(state, tmp, &name, arena);
+ _Py_LeaveRecursiveCall();
+ if (res != 0) goto failed;
+ Py_CLEAR(tmp);
+ }
+ *out = _PyAST_TypeVarTuple(name, lineno, col_offset, end_lineno,
+ end_col_offset, arena);
+ if (*out == NULL) goto failed;
+ return 0;
+ }
+
+ PyErr_Format(PyExc_TypeError, "expected some sort of type_param, but got %R", obj);
+ failed:
+ Py_XDECREF(tmp);
+ return 1;
+}
+
+
+static int
+astmodule_exec(PyObject *m)
+{
+ struct ast_state *state = get_ast_state();
+ if (state == NULL) {
+ return -1;
+ }
+ if (PyModule_AddObjectRef(m, "AST", state->AST_type) < 0) {
+ return -1;
+ }
+ if (PyModule_AddIntMacro(m, PyCF_ALLOW_TOP_LEVEL_AWAIT) < 0) {
+ return -1;
+ }
+ if (PyModule_AddIntMacro(m, PyCF_ONLY_AST) < 0) {
+ return -1;
+ }
+ if (PyModule_AddIntMacro(m, PyCF_TYPE_COMMENTS) < 0) {
+ return -1;
+ }
+ if (PyModule_AddObjectRef(m, "mod", state->mod_type) < 0) {
+ return -1;
+ }
+ if (PyModule_AddObjectRef(m, "Module", state->Module_type) < 0) {
+ return -1;
+ }
+ if (PyModule_AddObjectRef(m, "Interactive", state->Interactive_type) < 0) {
+ return -1;
+ }
+ if (PyModule_AddObjectRef(m, "Expression", state->Expression_type) < 0) {
+ return -1;
+ }
+ if (PyModule_AddObjectRef(m, "FunctionType", state->FunctionType_type) < 0)
+ {
+ return -1;
+ }
+ if (PyModule_AddObjectRef(m, "stmt", state->stmt_type) < 0) {
+ return -1;
+ }
+ if (PyModule_AddObjectRef(m, "FunctionDef", state->FunctionDef_type) < 0) {
+ return -1;
+ }
+ if (PyModule_AddObjectRef(m, "AsyncFunctionDef",
+ state->AsyncFunctionDef_type) < 0) {
+ return -1;
+ }
+ if (PyModule_AddObjectRef(m, "ClassDef", state->ClassDef_type) < 0) {
+ return -1;
+ }
+ if (PyModule_AddObjectRef(m, "Return", state->Return_type) < 0) {
+ return -1;
+ }
+ if (PyModule_AddObjectRef(m, "Delete", state->Delete_type) < 0) {
+ return -1;
+ }
+ if (PyModule_AddObjectRef(m, "Assign", state->Assign_type) < 0) {
+ return -1;
+ }
+ if (PyModule_AddObjectRef(m, "TypeAlias", state->TypeAlias_type) < 0) {
+ return -1;
+ }
+ if (PyModule_AddObjectRef(m, "AugAssign", state->AugAssign_type) < 0) {
+ return -1;
+ }
+ if (PyModule_AddObjectRef(m, "AnnAssign", state->AnnAssign_type) < 0) {
+ return -1;
+ }
+ if (PyModule_AddObjectRef(m, "For", state->For_type) < 0) {
+ return -1;
+ }
+ if (PyModule_AddObjectRef(m, "AsyncFor", state->AsyncFor_type) < 0) {
+ return -1;
+ }
+ if (PyModule_AddObjectRef(m, "While", state->While_type) < 0) {
+ return -1;
+ }
+ if (PyModule_AddObjectRef(m, "If", state->If_type) < 0) {
+ return -1;
+ }
+ if (PyModule_AddObjectRef(m, "With", state->With_type) < 0) {
+ return -1;
+ }
+ if (PyModule_AddObjectRef(m, "AsyncWith", state->AsyncWith_type) < 0) {
+ return -1;
+ }
+ if (PyModule_AddObjectRef(m, "Match", state->Match_type) < 0) {
+ return -1;
+ }
+ if (PyModule_AddObjectRef(m, "Raise", state->Raise_type) < 0) {
+ return -1;
+ }
+ if (PyModule_AddObjectRef(m, "Try", state->Try_type) < 0) {
+ return -1;
+ }
+ if (PyModule_AddObjectRef(m, "TryStar", state->TryStar_type) < 0) {
+ return -1;
+ }
+ if (PyModule_AddObjectRef(m, "Assert", state->Assert_type) < 0) {
+ return -1;
+ }
+ if (PyModule_AddObjectRef(m, "Import", state->Import_type) < 0) {
+ return -1;
+ }
+ if (PyModule_AddObjectRef(m, "ImportFrom", state->ImportFrom_type) < 0) {
+ return -1;
+ }
+ if (PyModule_AddObjectRef(m, "Global", state->Global_type) < 0) {
+ return -1;
+ }
+ if (PyModule_AddObjectRef(m, "Nonlocal", state->Nonlocal_type) < 0) {
+ return -1;
+ }
+ if (PyModule_AddObjectRef(m, "Expr", state->Expr_type) < 0) {
+ return -1;
+ }
+ if (PyModule_AddObjectRef(m, "Pass", state->Pass_type) < 0) {
+ return -1;
+ }
+ if (PyModule_AddObjectRef(m, "Break", state->Break_type) < 0) {
+ return -1;
+ }
+ if (PyModule_AddObjectRef(m, "Continue", state->Continue_type) < 0) {
+ return -1;
+ }
+ if (PyModule_AddObjectRef(m, "expr", state->expr_type) < 0) {
+ return -1;
+ }
+ if (PyModule_AddObjectRef(m, "BoolOp", state->BoolOp_type) < 0) {
+ return -1;
+ }
+ if (PyModule_AddObjectRef(m, "NamedExpr", state->NamedExpr_type) < 0) {
+ return -1;
+ }
+ if (PyModule_AddObjectRef(m, "BinOp", state->BinOp_type) < 0) {
+ return -1;
+ }
+ if (PyModule_AddObjectRef(m, "UnaryOp", state->UnaryOp_type) < 0) {
+ return -1;
+ }
+ if (PyModule_AddObjectRef(m, "Lambda", state->Lambda_type) < 0) {
+ return -1;
+ }
+ if (PyModule_AddObjectRef(m, "IfExp", state->IfExp_type) < 0) {
+ return -1;
+ }
+ if (PyModule_AddObjectRef(m, "Dict", state->Dict_type) < 0) {
+ return -1;
+ }
+ if (PyModule_AddObjectRef(m, "Set", state->Set_type) < 0) {
+ return -1;
+ }
+ if (PyModule_AddObjectRef(m, "ListComp", state->ListComp_type) < 0) {
+ return -1;
+ }
+ if (PyModule_AddObjectRef(m, "SetComp", state->SetComp_type) < 0) {
+ return -1;
+ }
+ if (PyModule_AddObjectRef(m, "DictComp", state->DictComp_type) < 0) {
+ return -1;
+ }
+ if (PyModule_AddObjectRef(m, "GeneratorExp", state->GeneratorExp_type) < 0)
+ {
+ return -1;
+ }
+ if (PyModule_AddObjectRef(m, "Await", state->Await_type) < 0) {
+ return -1;
+ }
+ if (PyModule_AddObjectRef(m, "Yield", state->Yield_type) < 0) {
+ return -1;
+ }
+ if (PyModule_AddObjectRef(m, "YieldFrom", state->YieldFrom_type) < 0) {
+ return -1;
+ }
+ if (PyModule_AddObjectRef(m, "Compare", state->Compare_type) < 0) {
+ return -1;
+ }
+ if (PyModule_AddObjectRef(m, "Call", state->Call_type) < 0) {
+ return -1;
+ }
+ if (PyModule_AddObjectRef(m, "FormattedValue", state->FormattedValue_type)
+ < 0) {
+ return -1;
+ }
+ if (PyModule_AddObjectRef(m, "JoinedStr", state->JoinedStr_type) < 0) {
+ return -1;
+ }
+ if (PyModule_AddObjectRef(m, "Constant", state->Constant_type) < 0) {
+ return -1;
+ }
+ if (PyModule_AddObjectRef(m, "Attribute", state->Attribute_type) < 0) {
+ return -1;
+ }
+ if (PyModule_AddObjectRef(m, "Subscript", state->Subscript_type) < 0) {
+ return -1;
+ }
+ if (PyModule_AddObjectRef(m, "Starred", state->Starred_type) < 0) {
+ return -1;
+ }
+ if (PyModule_AddObjectRef(m, "Name", state->Name_type) < 0) {
+ return -1;
+ }
+ if (PyModule_AddObjectRef(m, "List", state->List_type) < 0) {
+ return -1;
+ }
+ if (PyModule_AddObjectRef(m, "Tuple", state->Tuple_type) < 0) {
+ return -1;
+ }
+ if (PyModule_AddObjectRef(m, "Slice", state->Slice_type) < 0) {
+ return -1;
+ }
+ if (PyModule_AddObjectRef(m, "expr_context", state->expr_context_type) < 0)
+ {
+ return -1;
+ }
+ if (PyModule_AddObjectRef(m, "Load", state->Load_type) < 0) {
+ return -1;
+ }
+ if (PyModule_AddObjectRef(m, "Store", state->Store_type) < 0) {
+ return -1;
+ }
+ if (PyModule_AddObjectRef(m, "Del", state->Del_type) < 0) {
+ return -1;
+ }
+ if (PyModule_AddObjectRef(m, "boolop", state->boolop_type) < 0) {
+ return -1;
+ }
+ if (PyModule_AddObjectRef(m, "And", state->And_type) < 0) {
+ return -1;
+ }
+ if (PyModule_AddObjectRef(m, "Or", state->Or_type) < 0) {
+ return -1;
+ }
+ if (PyModule_AddObjectRef(m, "operator", state->operator_type) < 0) {
+ return -1;
+ }
+ if (PyModule_AddObjectRef(m, "Add", state->Add_type) < 0) {
+ return -1;
+ }
+ if (PyModule_AddObjectRef(m, "Sub", state->Sub_type) < 0) {
+ return -1;
+ }
+ if (PyModule_AddObjectRef(m, "Mult", state->Mult_type) < 0) {
+ return -1;
+ }
+ if (PyModule_AddObjectRef(m, "MatMult", state->MatMult_type) < 0) {
+ return -1;
+ }
+ if (PyModule_AddObjectRef(m, "Div", state->Div_type) < 0) {
+ return -1;
+ }
+ if (PyModule_AddObjectRef(m, "Mod", state->Mod_type) < 0) {
+ return -1;
+ }
+ if (PyModule_AddObjectRef(m, "Pow", state->Pow_type) < 0) {
+ return -1;
+ }
+ if (PyModule_AddObjectRef(m, "LShift", state->LShift_type) < 0) {
+ return -1;
+ }
+ if (PyModule_AddObjectRef(m, "RShift", state->RShift_type) < 0) {
+ return -1;
+ }
+ if (PyModule_AddObjectRef(m, "BitOr", state->BitOr_type) < 0) {
+ return -1;
+ }
+ if (PyModule_AddObjectRef(m, "BitXor", state->BitXor_type) < 0) {
+ return -1;
+ }
+ if (PyModule_AddObjectRef(m, "BitAnd", state->BitAnd_type) < 0) {
+ return -1;
+ }
+ if (PyModule_AddObjectRef(m, "FloorDiv", state->FloorDiv_type) < 0) {
+ return -1;
+ }
+ if (PyModule_AddObjectRef(m, "unaryop", state->unaryop_type) < 0) {
+ return -1;
+ }
+ if (PyModule_AddObjectRef(m, "Invert", state->Invert_type) < 0) {
+ return -1;
+ }
+ if (PyModule_AddObjectRef(m, "Not", state->Not_type) < 0) {
+ return -1;
+ }
+ if (PyModule_AddObjectRef(m, "UAdd", state->UAdd_type) < 0) {
+ return -1;
+ }
+ if (PyModule_AddObjectRef(m, "USub", state->USub_type) < 0) {
+ return -1;
+ }
+ if (PyModule_AddObjectRef(m, "cmpop", state->cmpop_type) < 0) {
+ return -1;
+ }
+ if (PyModule_AddObjectRef(m, "Eq", state->Eq_type) < 0) {
+ return -1;
+ }
+ if (PyModule_AddObjectRef(m, "NotEq", state->NotEq_type) < 0) {
+ return -1;
+ }
+ if (PyModule_AddObjectRef(m, "Lt", state->Lt_type) < 0) {
+ return -1;
+ }
+ if (PyModule_AddObjectRef(m, "LtE", state->LtE_type) < 0) {
+ return -1;
+ }
+ if (PyModule_AddObjectRef(m, "Gt", state->Gt_type) < 0) {
+ return -1;
+ }
+ if (PyModule_AddObjectRef(m, "GtE", state->GtE_type) < 0) {
+ return -1;
+ }
+ if (PyModule_AddObjectRef(m, "Is", state->Is_type) < 0) {
+ return -1;
+ }
+ if (PyModule_AddObjectRef(m, "IsNot", state->IsNot_type) < 0) {
+ return -1;
+ }
+ if (PyModule_AddObjectRef(m, "In", state->In_type) < 0) {
+ return -1;
+ }
+ if (PyModule_AddObjectRef(m, "NotIn", state->NotIn_type) < 0) {
+ return -1;
+ }
+ if (PyModule_AddObjectRef(m, "comprehension", state->comprehension_type) <
+ 0) {
+ return -1;
+ }
+ if (PyModule_AddObjectRef(m, "excepthandler", state->excepthandler_type) <
+ 0) {
+ return -1;
+ }
+ if (PyModule_AddObjectRef(m, "ExceptHandler", state->ExceptHandler_type) <
+ 0) {
+ return -1;
+ }
+ if (PyModule_AddObjectRef(m, "arguments", state->arguments_type) < 0) {
+ return -1;
+ }
+ if (PyModule_AddObjectRef(m, "arg", state->arg_type) < 0) {
+ return -1;
+ }
+ if (PyModule_AddObjectRef(m, "keyword", state->keyword_type) < 0) {
+ return -1;
+ }
+ if (PyModule_AddObjectRef(m, "alias", state->alias_type) < 0) {
+ return -1;
+ }
+ if (PyModule_AddObjectRef(m, "withitem", state->withitem_type) < 0) {
+ return -1;
+ }
+ if (PyModule_AddObjectRef(m, "match_case", state->match_case_type) < 0) {
+ return -1;
+ }
+ if (PyModule_AddObjectRef(m, "pattern", state->pattern_type) < 0) {
+ return -1;
+ }
+ if (PyModule_AddObjectRef(m, "MatchValue", state->MatchValue_type) < 0) {
+ return -1;
+ }
+ if (PyModule_AddObjectRef(m, "MatchSingleton", state->MatchSingleton_type)
+ < 0) {
+ return -1;
+ }
+ if (PyModule_AddObjectRef(m, "MatchSequence", state->MatchSequence_type) <
+ 0) {
+ return -1;
+ }
+ if (PyModule_AddObjectRef(m, "MatchMapping", state->MatchMapping_type) < 0)
+ {
+ return -1;
+ }
+ if (PyModule_AddObjectRef(m, "MatchClass", state->MatchClass_type) < 0) {
+ return -1;
+ }
+ if (PyModule_AddObjectRef(m, "MatchStar", state->MatchStar_type) < 0) {
+ return -1;
+ }
+ if (PyModule_AddObjectRef(m, "MatchAs", state->MatchAs_type) < 0) {
+ return -1;
+ }
+ if (PyModule_AddObjectRef(m, "MatchOr", state->MatchOr_type) < 0) {
+ return -1;
+ }
+ if (PyModule_AddObjectRef(m, "type_ignore", state->type_ignore_type) < 0) {
+ return -1;
+ }
+ if (PyModule_AddObjectRef(m, "TypeIgnore", state->TypeIgnore_type) < 0) {
+ return -1;
+ }
+ if (PyModule_AddObjectRef(m, "type_param", state->type_param_type) < 0) {
+ return -1;
+ }
+ if (PyModule_AddObjectRef(m, "TypeVar", state->TypeVar_type) < 0) {
+ return -1;
+ }
+ if (PyModule_AddObjectRef(m, "ParamSpec", state->ParamSpec_type) < 0) {
+ return -1;
+ }
+ if (PyModule_AddObjectRef(m, "TypeVarTuple", state->TypeVarTuple_type) < 0)
+ {
+ return -1;
+ }
+ return 0;
+}
+
+static PyModuleDef_Slot astmodule_slots[] = {
+ {Py_mod_exec, astmodule_exec},
+ {Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
+ {0, NULL}
+};
+
+static struct PyModuleDef _astmodule = {
+ PyModuleDef_HEAD_INIT,
+ .m_name = "_ast",
+ // The _ast module uses a per-interpreter state (PyInterpreterState.ast)
+ .m_size = 0,
+ .m_slots = astmodule_slots,
+};
+
+PyMODINIT_FUNC
+PyInit__ast(void)
+{
+ return PyModuleDef_Init(&_astmodule);
+}
+
+
+PyObject* PyAST_mod2obj(mod_ty t)
+{
+ struct ast_state *state = get_ast_state();
+ if (state == NULL) {
+ return NULL;
+ }
+
+ int starting_recursion_depth;
+ /* Be careful here to prevent overflow. */
+ int COMPILER_STACK_FRAME_SCALE = 2;
+ PyThreadState *tstate = _PyThreadState_GET();
+ if (!tstate) {
+ return NULL;
+ }
+ struct validator vstate;
+ vstate.recursion_limit = C_RECURSION_LIMIT * COMPILER_STACK_FRAME_SCALE;
+ int recursion_depth = C_RECURSION_LIMIT - tstate->c_recursion_remaining;
+ starting_recursion_depth = recursion_depth * COMPILER_STACK_FRAME_SCALE;
+ vstate.recursion_depth = starting_recursion_depth;
+
+ PyObject *result = ast2obj_mod(state, &vstate, t);
+
+ /* Check that the recursion depth counting balanced correctly */
+ if (result && vstate.recursion_depth != starting_recursion_depth) {
+ PyErr_Format(PyExc_SystemError,
+ "AST constructor recursion depth mismatch (before=%d, after=%d)",
+ starting_recursion_depth, vstate.recursion_depth);
+ return NULL;
+ }
+ return result;
+}
+
+/* mode is 0 for "exec", 1 for "eval" and 2 for "single" input */
+mod_ty PyAST_obj2mod(PyObject* ast, PyArena* arena, int mode)
+{
+ const char * const req_name[] = {"Module", "Expression", "Interactive"};
+ int isinstance;
+
+ if (PySys_Audit("compile", "OO", ast, Py_None) < 0) {
+ return NULL;
+ }
+
+ struct ast_state *state = get_ast_state();
+ if (state == NULL) {
+ return NULL;
+ }
+
+ PyObject *req_type[3];
+ req_type[0] = state->Module_type;
+ req_type[1] = state->Expression_type;
+ req_type[2] = state->Interactive_type;
+
+ assert(0 <= mode && mode <= 2);
+
+ isinstance = PyObject_IsInstance(ast, req_type[mode]);
+ if (isinstance == -1)
+ return NULL;
+ if (!isinstance) {
+ PyErr_Format(PyExc_TypeError, "expected %s node, got %.400s",
+ req_name[mode], _PyType_Name(Py_TYPE(ast)));
+ return NULL;
+ }
+
+ mod_ty res = NULL;
+ if (obj2ast_mod(state, ast, &res, arena) != 0)
+ return NULL;
+ else
+ return res;
+}
+
+int PyAST_Check(PyObject* obj)
+{
+ struct ast_state *state = get_ast_state();
+ if (state == NULL) {
+ return -1;
+ }
+ return PyObject_IsInstance(obj, state->AST_type);
+}
+
+
diff --git a/contrib/tools/python3/Python/Python-tokenize.c b/contrib/tools/python3/Python/Python-tokenize.c
new file mode 100644
index 00000000000..179f71aa1f5
--- /dev/null
+++ b/contrib/tools/python3/Python/Python-tokenize.c
@@ -0,0 +1,367 @@
+#include "Python.h"
+#include "errcode.h"
+#include "../Parser/tokenizer.h"
+#include "../Parser/pegen.h" // _PyPegen_byte_offset_to_character_offset()
+#include "../Parser/pegen.h" // _PyPegen_byte_offset_to_character_offset()
+
+static struct PyModuleDef _tokenizemodule;
+
+typedef struct {
+ PyTypeObject *TokenizerIter;
+} tokenize_state;
+
+static tokenize_state *
+get_tokenize_state(PyObject *module) {
+ return (tokenize_state *)PyModule_GetState(module);
+}
+
+#define _tokenize_get_state_by_type(type) \
+ get_tokenize_state(PyType_GetModuleByDef(type, &_tokenizemodule))
+
+#include "pycore_runtime.h"
+#include "clinic/Python-tokenize.c.h"
+
+/*[clinic input]
+module _tokenizer
+class _tokenizer.tokenizeriter "tokenizeriterobject *" "_tokenize_get_state_by_type(type)->TokenizerIter"
+[clinic start generated code]*/
+/*[clinic end generated code: output=da39a3ee5e6b4b0d input=96d98ee2fef7a8bc]*/
+
+typedef struct
+{
+ PyObject_HEAD struct tok_state *tok;
+ int done;
+} tokenizeriterobject;
+
+/*[clinic input]
+@classmethod
+_tokenizer.tokenizeriter.__new__ as tokenizeriter_new
+
+ readline: object
+ /
+ *
+ extra_tokens: bool
+ encoding: str(c_default="NULL") = 'utf-8'
+[clinic start generated code]*/
+
+static PyObject *
+tokenizeriter_new_impl(PyTypeObject *type, PyObject *readline,
+ int extra_tokens, const char *encoding)
+/*[clinic end generated code: output=7501a1211683ce16 input=f7dddf8a613ae8bd]*/
+{
+ tokenizeriterobject *self = (tokenizeriterobject *)type->tp_alloc(type, 0);
+ if (self == NULL) {
+ return NULL;
+ }
+ PyObject *filename = PyUnicode_FromString("<string>");
+ if (filename == NULL) {
+ return NULL;
+ }
+ self->tok = _PyTokenizer_FromReadline(readline, encoding, 1, 1);
+ if (self->tok == NULL) {
+ Py_DECREF(filename);
+ return NULL;
+ }
+ self->tok->filename = filename;
+ if (extra_tokens) {
+ self->tok->tok_extra_tokens = 1;
+ }
+ self->done = 0;
+ return (PyObject *)self;
+}
+
+static int
+_tokenizer_error(struct tok_state *tok)
+{
+ if (PyErr_Occurred()) {
+ return -1;
+ }
+
+ const char *msg = NULL;
+ PyObject* errtype = PyExc_SyntaxError;
+ switch (tok->done) {
+ case E_TOKEN:
+ msg = "invalid token";
+ break;
+ case E_EOF:
+ PyErr_SetString(PyExc_SyntaxError, "unexpected EOF in multi-line statement");
+ PyErr_SyntaxLocationObject(tok->filename, tok->lineno,
+ tok->inp - tok->buf < 0 ? 0 : (int)(tok->inp - tok->buf));
+ return -1;
+ case E_DEDENT:
+ msg = "unindent does not match any outer indentation level";
+ errtype = PyExc_IndentationError;
+ break;
+ case E_INTR:
+ if (!PyErr_Occurred()) {
+ PyErr_SetNone(PyExc_KeyboardInterrupt);
+ }
+ return -1;
+ case E_NOMEM:
+ PyErr_NoMemory();
+ return -1;
+ case E_TABSPACE:
+ errtype = PyExc_TabError;
+ msg = "inconsistent use of tabs and spaces in indentation";
+ break;
+ case E_TOODEEP:
+ errtype = PyExc_IndentationError;
+ msg = "too many levels of indentation";
+ break;
+ case E_LINECONT: {
+ msg = "unexpected character after line continuation character";
+ break;
+ }
+ default:
+ msg = "unknown tokenization error";
+ }
+
+ PyObject* errstr = NULL;
+ PyObject* error_line = NULL;
+ PyObject* tmp = NULL;
+ PyObject* value = NULL;
+ int result = 0;
+
+ Py_ssize_t size = tok->inp - tok->buf;
+ assert(tok->buf[size-1] == '\n');
+ size -= 1; // Remove the newline character from the end of the line
+ error_line = PyUnicode_DecodeUTF8(tok->buf, size, "replace");
+ if (!error_line) {
+ result = -1;
+ goto exit;
+ }
+
+ Py_ssize_t offset = _PyPegen_byte_offset_to_character_offset(error_line, tok->inp - tok->buf);
+ if (offset == -1) {
+ result = -1;
+ goto exit;
+ }
+ tmp = Py_BuildValue("(OnnOOO)", tok->filename, tok->lineno, offset, error_line, Py_None, Py_None);
+ if (!tmp) {
+ result = -1;
+ goto exit;
+ }
+
+ errstr = PyUnicode_FromString(msg);
+ if (!errstr) {
+ result = -1;
+ goto exit;
+ }
+
+ value = PyTuple_Pack(2, errstr, tmp);
+ if (!value) {
+ result = -1;
+ goto exit;
+ }
+
+ PyErr_SetObject(errtype, value);
+
+exit:
+ Py_XDECREF(errstr);
+ Py_XDECREF(error_line);
+ Py_XDECREF(tmp);
+ Py_XDECREF(value);
+ return result;
+}
+
+static PyObject *
+tokenizeriter_next(tokenizeriterobject *it)
+{
+ PyObject* result = NULL;
+ struct token token;
+ _PyToken_Init(&token);
+
+ int type = _PyTokenizer_Get(it->tok, &token);
+ if (type == ERRORTOKEN) {
+ if(!PyErr_Occurred()) {
+ _tokenizer_error(it->tok);
+ assert(PyErr_Occurred());
+ }
+ goto exit;
+ }
+ if (it->done || type == ERRORTOKEN) {
+ PyErr_SetString(PyExc_StopIteration, "EOF");
+ it->done = 1;
+ goto exit;
+ }
+ PyObject *str = NULL;
+ if (token.start == NULL || token.end == NULL) {
+ str = PyUnicode_FromString("");
+ }
+ else {
+ str = PyUnicode_FromStringAndSize(token.start, token.end - token.start);
+ }
+ if (str == NULL) {
+ goto exit;
+ }
+
+ int is_trailing_token = 0;
+ if (type == ENDMARKER || (type == DEDENT && it->tok->done == E_EOF)) {
+ is_trailing_token = 1;
+ }
+
+ const char *line_start = ISSTRINGLIT(type) ? it->tok->multi_line_start : it->tok->line_start;
+ PyObject* line = NULL;
+ if (it->tok->tok_extra_tokens && is_trailing_token) {
+ line = PyUnicode_FromString("");
+ } else {
+ Py_ssize_t size = it->tok->inp - line_start;
+ if (size >= 1 && it->tok->implicit_newline) {
+ size -= 1;
+ }
+ line = PyUnicode_DecodeUTF8(line_start, size, "replace");
+ }
+ if (line == NULL) {
+ Py_DECREF(str);
+ goto exit;
+ }
+
+ Py_ssize_t lineno = ISSTRINGLIT(type) ? it->tok->first_lineno : it->tok->lineno;
+ Py_ssize_t end_lineno = it->tok->lineno;
+ Py_ssize_t col_offset = -1;
+ Py_ssize_t end_col_offset = -1;
+ if (token.start != NULL && token.start >= line_start) {
+ col_offset = _PyPegen_byte_offset_to_character_offset(line, token.start - line_start);
+ }
+ if (token.end != NULL && token.end >= it->tok->line_start) {
+ end_col_offset = _PyPegen_byte_offset_to_character_offset_raw(it->tok->line_start, token.end - it->tok->line_start);
+ }
+
+ if (it->tok->tok_extra_tokens) {
+ if (is_trailing_token) {
+ lineno = end_lineno = lineno + 1;
+ col_offset = end_col_offset = 0;
+ }
+ // Necessary adjustments to match the original Python tokenize
+ // implementation
+ if (type > DEDENT && type < OP) {
+ type = OP;
+ }
+ else if (type == ASYNC || type == AWAIT) {
+ type = NAME;
+ }
+ else if (type == NEWLINE) {
+ Py_DECREF(str);
+ if (!it->tok->implicit_newline) {
+ if (it->tok->start[0] == '\r') {
+ str = PyUnicode_FromString("\r\n");
+ } else {
+ str = PyUnicode_FromString("\n");
+ }
+ }
+ end_col_offset++;
+ }
+ else if (type == NL) {
+ if (it->tok->implicit_newline) {
+ Py_DECREF(str);
+ str = PyUnicode_FromString("");
+ }
+ }
+
+ if (str == NULL) {
+ Py_DECREF(line);
+ goto exit;
+ }
+ }
+
+ result = Py_BuildValue("(iN(nn)(nn)N)", type, str, lineno, col_offset, end_lineno, end_col_offset, line);
+exit:
+ _PyToken_Free(&token);
+ if (type == ENDMARKER) {
+ it->done = 1;
+ }
+ return result;
+}
+
+static void
+tokenizeriter_dealloc(tokenizeriterobject *it)
+{
+ PyTypeObject *tp = Py_TYPE(it);
+ _PyTokenizer_Free(it->tok);
+ tp->tp_free(it);
+ Py_DECREF(tp);
+}
+
+static PyType_Slot tokenizeriter_slots[] = {
+ {Py_tp_new, tokenizeriter_new},
+ {Py_tp_dealloc, tokenizeriter_dealloc},
+ {Py_tp_getattro, PyObject_GenericGetAttr},
+ {Py_tp_iter, PyObject_SelfIter},
+ {Py_tp_iternext, tokenizeriter_next},
+ {0, NULL},
+};
+
+static PyType_Spec tokenizeriter_spec = {
+ .name = "_tokenize.TokenizerIter",
+ .basicsize = sizeof(tokenizeriterobject),
+ .flags = (Py_TPFLAGS_DEFAULT | Py_TPFLAGS_IMMUTABLETYPE),
+ .slots = tokenizeriter_slots,
+};
+
+static int
+tokenizemodule_exec(PyObject *m)
+{
+ tokenize_state *state = get_tokenize_state(m);
+ if (state == NULL) {
+ return -1;
+ }
+
+ state->TokenizerIter = (PyTypeObject *)PyType_FromModuleAndSpec(m, &tokenizeriter_spec, NULL);
+ if (state->TokenizerIter == NULL) {
+ return -1;
+ }
+ if (PyModule_AddType(m, state->TokenizerIter) < 0) {
+ return -1;
+ }
+
+ return 0;
+}
+
+static PyMethodDef tokenize_methods[] = {
+ {NULL, NULL, 0, NULL} /* Sentinel */
+};
+
+static PyModuleDef_Slot tokenizemodule_slots[] = {
+ {Py_mod_exec, tokenizemodule_exec},
+ {Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
+ {0, NULL}
+};
+
+static int
+tokenizemodule_traverse(PyObject *m, visitproc visit, void *arg)
+{
+ tokenize_state *state = get_tokenize_state(m);
+ Py_VISIT(state->TokenizerIter);
+ return 0;
+}
+
+static int
+tokenizemodule_clear(PyObject *m)
+{
+ tokenize_state *state = get_tokenize_state(m);
+ Py_CLEAR(state->TokenizerIter);
+ return 0;
+}
+
+static void
+tokenizemodule_free(void *m)
+{
+ tokenizemodule_clear((PyObject *)m);
+}
+
+static struct PyModuleDef _tokenizemodule = {
+ PyModuleDef_HEAD_INIT,
+ .m_name = "_tokenize",
+ .m_size = sizeof(tokenize_state),
+ .m_slots = tokenizemodule_slots,
+ .m_methods = tokenize_methods,
+ .m_traverse = tokenizemodule_traverse,
+ .m_clear = tokenizemodule_clear,
+ .m_free = tokenizemodule_free,
+};
+
+PyMODINIT_FUNC
+PyInit__tokenize(void)
+{
+ return PyModuleDef_Init(&_tokenizemodule);
+}
diff --git a/contrib/tools/python3/Python/_warnings.c b/contrib/tools/python3/Python/_warnings.c
new file mode 100644
index 00000000000..1f91edbf5cb
--- /dev/null
+++ b/contrib/tools/python3/Python/_warnings.c
@@ -0,0 +1,1481 @@
+#include "Python.h"
+#include "pycore_initconfig.h"
+#include "pycore_interp.h" // PyInterpreterState.warnings
+#include "pycore_long.h" // _PyLong_GetZero()
+#include "pycore_pyerrors.h"
+#include "pycore_pystate.h" // _PyThreadState_GET()
+#include "pycore_frame.h"
+#include "clinic/_warnings.c.h"
+
+#define MODULE_NAME "_warnings"
+
+PyDoc_STRVAR(warnings__doc__,
+MODULE_NAME " provides basic warning filtering support.\n"
+"It is a helper module to speed up interpreter start-up.");
+
+
+/*************************************************************************/
+
+typedef struct _warnings_runtime_state WarningsState;
+
+static inline int
+check_interp(PyInterpreterState *interp)
+{
+ if (interp == NULL) {
+ PyErr_SetString(PyExc_RuntimeError,
+ "warnings_get_state: could not identify "
+ "current interpreter");
+ return 0;
+ }
+ return 1;
+}
+
+static inline PyInterpreterState *
+get_current_interp(void)
+{
+ PyInterpreterState *interp = _PyInterpreterState_GET();
+ return check_interp(interp) ? interp : NULL;
+}
+
+static inline PyThreadState *
+get_current_tstate(void)
+{
+ PyThreadState *tstate = _PyThreadState_GET();
+ if (tstate == NULL) {
+ (void)check_interp(NULL);
+ return NULL;
+ }
+ return check_interp(tstate->interp) ? tstate : NULL;
+}
+
+/* Given a module object, get its per-module state. */
+static WarningsState *
+warnings_get_state(PyInterpreterState *interp)
+{
+ return &interp->warnings;
+}
+
+/* Clear the given warnings module state. */
+static void
+warnings_clear_state(WarningsState *st)
+{
+ Py_CLEAR(st->filters);
+ Py_CLEAR(st->once_registry);
+ Py_CLEAR(st->default_action);
+}
+
+#ifndef Py_DEBUG
+static PyObject *
+create_filter(PyObject *category, PyObject *action_str, const char *modname)
+{
+ PyObject *modname_obj = NULL;
+
+ /* Default to "no module name" for initial filter set */
+ if (modname != NULL) {
+ modname_obj = PyUnicode_InternFromString(modname);
+ if (modname_obj == NULL) {
+ return NULL;
+ }
+ } else {
+ modname_obj = Py_NewRef(Py_None);
+ }
+
+ /* This assumes the line number is zero for now. */
+ PyObject *filter = PyTuple_Pack(5, action_str, Py_None,
+ category, modname_obj, _PyLong_GetZero());
+ Py_DECREF(modname_obj);
+ return filter;
+}
+#endif
+
+static PyObject *
+init_filters(PyInterpreterState *interp)
+{
+#ifdef Py_DEBUG
+ /* Py_DEBUG builds show all warnings by default */
+ return PyList_New(0);
+#else
+ /* Other builds ignore a number of warning categories by default */
+ PyObject *filters = PyList_New(5);
+ if (filters == NULL) {
+ return NULL;
+ }
+
+ size_t pos = 0; /* Post-incremented in each use. */
+#define ADD(TYPE, ACTION, MODNAME) \
+ PyList_SET_ITEM(filters, pos++, \
+ create_filter(TYPE, &_Py_ID(ACTION), MODNAME));
+ ADD(PyExc_DeprecationWarning, default, "__main__");
+ ADD(PyExc_DeprecationWarning, ignore, NULL);
+ ADD(PyExc_PendingDeprecationWarning, ignore, NULL);
+ ADD(PyExc_ImportWarning, ignore, NULL);
+ ADD(PyExc_ResourceWarning, ignore, NULL);
+#undef ADD
+
+ for (size_t x = 0; x < pos; x++) {
+ if (PyList_GET_ITEM(filters, x) == NULL) {
+ Py_DECREF(filters);
+ return NULL;
+ }
+ }
+ return filters;
+#endif
+}
+
+/* Initialize the given warnings module state. */
+int
+_PyWarnings_InitState(PyInterpreterState *interp)
+{
+ WarningsState *st = &interp->warnings;
+
+ if (st->filters == NULL) {
+ st->filters = init_filters(interp);
+ if (st->filters == NULL) {
+ return -1;
+ }
+ }
+
+ if (st->once_registry == NULL) {
+ st->once_registry = PyDict_New();
+ if (st->once_registry == NULL) {
+ return -1;
+ }
+ }
+
+ if (st->default_action == NULL) {
+ st->default_action = PyUnicode_FromString("default");
+ if (st->default_action == NULL) {
+ return -1;
+ }
+ }
+
+ st->filters_version = 0;
+ return 0;
+}
+
+
+/*************************************************************************/
+
+static int
+check_matched(PyInterpreterState *interp, PyObject *obj, PyObject *arg)
+{
+ PyObject *result;
+ int rc;
+
+ /* A 'None' filter always matches */
+ if (obj == Py_None)
+ return 1;
+
+ /* An internal plain text default filter must match exactly */
+ if (PyUnicode_CheckExact(obj)) {
+ int cmp_result = PyUnicode_Compare(obj, arg);
+ if (cmp_result == -1 && PyErr_Occurred()) {
+ return -1;
+ }
+ return !cmp_result;
+ }
+
+ /* Otherwise assume a regex filter and call its match() method */
+ result = PyObject_CallMethodOneArg(obj, &_Py_ID(match), arg);
+ if (result == NULL)
+ return -1;
+
+ rc = PyObject_IsTrue(result);
+ Py_DECREF(result);
+ return rc;
+}
+
+#define GET_WARNINGS_ATTR(interp, ATTR, try_import) \
+ get_warnings_attr(interp, &_Py_ID(ATTR), try_import)
+
+/*
+ Returns a new reference.
+ A NULL return value can mean false or an error.
+*/
+static PyObject *
+get_warnings_attr(PyInterpreterState *interp, PyObject *attr, int try_import)
+{
+ PyObject *warnings_module, *obj;
+
+ /* don't try to import after the start of the Python finallization */
+ if (try_import && !_Py_IsInterpreterFinalizing(interp)) {
+ warnings_module = PyImport_Import(&_Py_ID(warnings));
+ if (warnings_module == NULL) {
+ /* Fallback to the C implementation if we cannot get
+ the Python implementation */
+ if (PyErr_ExceptionMatches(PyExc_ImportError)) {
+ PyErr_Clear();
+ }
+ return NULL;
+ }
+ }
+ else {
+ /* if we're so late into Python finalization that the module dict is
+ gone, then we can't even use PyImport_GetModule without triggering
+ an interpreter abort.
+ */
+ if (!_PyImport_GetModules(interp)) {
+ return NULL;
+ }
+ warnings_module = PyImport_GetModule(&_Py_ID(warnings));
+ if (warnings_module == NULL)
+ return NULL;
+ }
+
+ (void)_PyObject_LookupAttr(warnings_module, attr, &obj);
+ Py_DECREF(warnings_module);
+ return obj;
+}
+
+
+static PyObject *
+get_once_registry(PyInterpreterState *interp)
+{
+ PyObject *registry;
+
+ WarningsState *st = warnings_get_state(interp);
+ if (st == NULL) {
+ return NULL;
+ }
+
+ registry = GET_WARNINGS_ATTR(interp, onceregistry, 0);
+ if (registry == NULL) {
+ if (PyErr_Occurred())
+ return NULL;
+ assert(st->once_registry);
+ return st->once_registry;
+ }
+ if (!PyDict_Check(registry)) {
+ PyErr_Format(PyExc_TypeError,
+ MODULE_NAME ".onceregistry must be a dict, "
+ "not '%.200s'",
+ Py_TYPE(registry)->tp_name);
+ Py_DECREF(registry);
+ return NULL;
+ }
+ Py_SETREF(st->once_registry, registry);
+ return registry;
+}
+
+
+static PyObject *
+get_default_action(PyInterpreterState *interp)
+{
+ PyObject *default_action;
+
+ WarningsState *st = warnings_get_state(interp);
+ if (st == NULL) {
+ return NULL;
+ }
+
+ default_action = GET_WARNINGS_ATTR(interp, defaultaction, 0);
+ if (default_action == NULL) {
+ if (PyErr_Occurred()) {
+ return NULL;
+ }
+ assert(st->default_action);
+ return st->default_action;
+ }
+ if (!PyUnicode_Check(default_action)) {
+ PyErr_Format(PyExc_TypeError,
+ MODULE_NAME ".defaultaction must be a string, "
+ "not '%.200s'",
+ Py_TYPE(default_action)->tp_name);
+ Py_DECREF(default_action);
+ return NULL;
+ }
+ Py_SETREF(st->default_action, default_action);
+ return default_action;
+}
+
+
+/* The item is a new reference. */
+static PyObject*
+get_filter(PyInterpreterState *interp, PyObject *category,
+ PyObject *text, Py_ssize_t lineno,
+ PyObject *module, PyObject **item)
+{
+ PyObject *action;
+ Py_ssize_t i;
+ PyObject *warnings_filters;
+ WarningsState *st = warnings_get_state(interp);
+ if (st == NULL) {
+ return NULL;
+ }
+
+ warnings_filters = GET_WARNINGS_ATTR(interp, filters, 0);
+ if (warnings_filters == NULL) {
+ if (PyErr_Occurred())
+ return NULL;
+ }
+ else {
+ Py_SETREF(st->filters, warnings_filters);
+ }
+
+ PyObject *filters = st->filters;
+ if (filters == NULL || !PyList_Check(filters)) {
+ PyErr_SetString(PyExc_ValueError,
+ MODULE_NAME ".filters must be a list");
+ return NULL;
+ }
+
+ /* WarningsState.filters could change while we are iterating over it. */
+ for (i = 0; i < PyList_GET_SIZE(filters); i++) {
+ PyObject *tmp_item, *action, *msg, *cat, *mod, *ln_obj;
+ Py_ssize_t ln;
+ int is_subclass, good_msg, good_mod;
+
+ tmp_item = PyList_GET_ITEM(filters, i);
+ if (!PyTuple_Check(tmp_item) || PyTuple_GET_SIZE(tmp_item) != 5) {
+ PyErr_Format(PyExc_ValueError,
+ MODULE_NAME ".filters item %zd isn't a 5-tuple", i);
+ return NULL;
+ }
+
+ /* Python code: action, msg, cat, mod, ln = item */
+ Py_INCREF(tmp_item);
+ action = PyTuple_GET_ITEM(tmp_item, 0);
+ msg = PyTuple_GET_ITEM(tmp_item, 1);
+ cat = PyTuple_GET_ITEM(tmp_item, 2);
+ mod = PyTuple_GET_ITEM(tmp_item, 3);
+ ln_obj = PyTuple_GET_ITEM(tmp_item, 4);
+
+ if (!PyUnicode_Check(action)) {
+ PyErr_Format(PyExc_TypeError,
+ "action must be a string, not '%.200s'",
+ Py_TYPE(action)->tp_name);
+ Py_DECREF(tmp_item);
+ return NULL;
+ }
+
+ good_msg = check_matched(interp, msg, text);
+ if (good_msg == -1) {
+ Py_DECREF(tmp_item);
+ return NULL;
+ }
+
+ good_mod = check_matched(interp, mod, module);
+ if (good_mod == -1) {
+ Py_DECREF(tmp_item);
+ return NULL;
+ }
+
+ is_subclass = PyObject_IsSubclass(category, cat);
+ if (is_subclass == -1) {
+ Py_DECREF(tmp_item);
+ return NULL;
+ }
+
+ ln = PyLong_AsSsize_t(ln_obj);
+ if (ln == -1 && PyErr_Occurred()) {
+ Py_DECREF(tmp_item);
+ return NULL;
+ }
+
+ if (good_msg && is_subclass && good_mod && (ln == 0 || lineno == ln)) {
+ *item = tmp_item;
+ return action;
+ }
+
+ Py_DECREF(tmp_item);
+ }
+
+ action = get_default_action(interp);
+ if (action != NULL) {
+ *item = Py_NewRef(Py_None);
+ return action;
+ }
+
+ return NULL;
+}
+
+
+static int
+already_warned(PyInterpreterState *interp, PyObject *registry, PyObject *key,
+ int should_set)
+{
+ PyObject *version_obj, *already_warned;
+
+ if (key == NULL)
+ return -1;
+
+ WarningsState *st = warnings_get_state(interp);
+ if (st == NULL) {
+ return -1;
+ }
+ version_obj = _PyDict_GetItemWithError(registry, &_Py_ID(version));
+ if (version_obj == NULL
+ || !PyLong_CheckExact(version_obj)
+ || PyLong_AsLong(version_obj) != st->filters_version)
+ {
+ if (PyErr_Occurred()) {
+ return -1;
+ }
+ PyDict_Clear(registry);
+ version_obj = PyLong_FromLong(st->filters_version);
+ if (version_obj == NULL)
+ return -1;
+ if (PyDict_SetItem(registry, &_Py_ID(version), version_obj) < 0) {
+ Py_DECREF(version_obj);
+ return -1;
+ }
+ Py_DECREF(version_obj);
+ }
+ else {
+ already_warned = PyDict_GetItemWithError(registry, key);
+ if (already_warned != NULL) {
+ int rc = PyObject_IsTrue(already_warned);
+ if (rc != 0)
+ return rc;
+ }
+ else if (PyErr_Occurred()) {
+ return -1;
+ }
+ }
+
+ /* This warning wasn't found in the registry, set it. */
+ if (should_set)
+ return PyDict_SetItem(registry, key, Py_True);
+ return 0;
+}
+
+/* New reference. */
+static PyObject *
+normalize_module(PyObject *filename)
+{
+ PyObject *module;
+ int kind;
+ const void *data;
+ Py_ssize_t len;
+
+ len = PyUnicode_GetLength(filename);
+ if (len < 0)
+ return NULL;
+
+ if (len == 0)
+ return PyUnicode_FromString("<unknown>");
+
+ kind = PyUnicode_KIND(filename);
+ data = PyUnicode_DATA(filename);
+
+ /* if filename.endswith(".py"): */
+ if (len >= 3 &&
+ PyUnicode_READ(kind, data, len-3) == '.' &&
+ PyUnicode_READ(kind, data, len-2) == 'p' &&
+ PyUnicode_READ(kind, data, len-1) == 'y')
+ {
+ module = PyUnicode_Substring(filename, 0, len-3);
+ }
+ else {
+ module = Py_NewRef(filename);
+ }
+ return module;
+}
+
+static int
+update_registry(PyInterpreterState *interp, PyObject *registry, PyObject *text,
+ PyObject *category, int add_zero)
+{
+ PyObject *altkey;
+ int rc;
+
+ if (add_zero)
+ altkey = PyTuple_Pack(3, text, category, _PyLong_GetZero());
+ else
+ altkey = PyTuple_Pack(2, text, category);
+
+ rc = already_warned(interp, registry, altkey, 1);
+ Py_XDECREF(altkey);
+ return rc;
+}
+
+static void
+show_warning(PyThreadState *tstate, PyObject *filename, int lineno,
+ PyObject *text, PyObject *category, PyObject *sourceline)
+{
+ PyObject *f_stderr;
+ PyObject *name;
+ char lineno_str[128];
+
+ PyOS_snprintf(lineno_str, sizeof(lineno_str), ":%d: ", lineno);
+
+ name = PyObject_GetAttr(category, &_Py_ID(__name__));
+ if (name == NULL) {
+ goto error;
+ }
+
+ f_stderr = _PySys_GetAttr(tstate, &_Py_ID(stderr));
+ if (f_stderr == NULL) {
+ fprintf(stderr, "lost sys.stderr\n");
+ goto error;
+ }
+
+ /* Print "filename:lineno: category: text\n" */
+ if (PyFile_WriteObject(filename, f_stderr, Py_PRINT_RAW) < 0)
+ goto error;
+ if (PyFile_WriteString(lineno_str, f_stderr) < 0)
+ goto error;
+ if (PyFile_WriteObject(name, f_stderr, Py_PRINT_RAW) < 0)
+ goto error;
+ if (PyFile_WriteString(": ", f_stderr) < 0)
+ goto error;
+ if (PyFile_WriteObject(text, f_stderr, Py_PRINT_RAW) < 0)
+ goto error;
+ if (PyFile_WriteString("\n", f_stderr) < 0)
+ goto error;
+ Py_CLEAR(name);
+
+ /* Print " source_line\n" */
+ if (sourceline) {
+ int kind;
+ const void *data;
+ Py_ssize_t i, len;
+ Py_UCS4 ch;
+ PyObject *truncated;
+
+ if (PyUnicode_READY(sourceline) < 1)
+ goto error;
+
+ kind = PyUnicode_KIND(sourceline);
+ data = PyUnicode_DATA(sourceline);
+ len = PyUnicode_GET_LENGTH(sourceline);
+ for (i=0; i<len; i++) {
+ ch = PyUnicode_READ(kind, data, i);
+ if (ch != ' ' && ch != '\t' && ch != '\014')
+ break;
+ }
+
+ truncated = PyUnicode_Substring(sourceline, i, len);
+ if (truncated == NULL)
+ goto error;
+
+ PyFile_WriteObject(sourceline, f_stderr, Py_PRINT_RAW);
+ Py_DECREF(truncated);
+ PyFile_WriteString("\n", f_stderr);
+ }
+ else {
+ _Py_DisplaySourceLine(f_stderr, filename, lineno, 2, NULL, NULL);
+ }
+
+error:
+ Py_XDECREF(name);
+ PyErr_Clear();
+}
+
+static int
+call_show_warning(PyThreadState *tstate, PyObject *category,
+ PyObject *text, PyObject *message,
+ PyObject *filename, int lineno, PyObject *lineno_obj,
+ PyObject *sourceline, PyObject *source)
+{
+ PyObject *show_fn, *msg, *res, *warnmsg_cls = NULL;
+ PyInterpreterState *interp = tstate->interp;
+
+ /* If the source parameter is set, try to get the Python implementation.
+ The Python implementation is able to log the traceback where the source
+ was allocated, whereas the C implementation doesn't. */
+ show_fn = GET_WARNINGS_ATTR(interp, _showwarnmsg, source != NULL);
+ if (show_fn == NULL) {
+ if (PyErr_Occurred())
+ return -1;
+ show_warning(tstate, filename, lineno, text, category, sourceline);
+ return 0;
+ }
+
+ if (!PyCallable_Check(show_fn)) {
+ PyErr_SetString(PyExc_TypeError,
+ "warnings._showwarnmsg() must be set to a callable");
+ goto error;
+ }
+
+ warnmsg_cls = GET_WARNINGS_ATTR(interp, WarningMessage, 0);
+ if (warnmsg_cls == NULL) {
+ if (!PyErr_Occurred()) {
+ PyErr_SetString(PyExc_RuntimeError,
+ "unable to get warnings.WarningMessage");
+ }
+ goto error;
+ }
+
+ msg = PyObject_CallFunctionObjArgs(warnmsg_cls, message, category,
+ filename, lineno_obj, Py_None, Py_None, source,
+ NULL);
+ Py_DECREF(warnmsg_cls);
+ if (msg == NULL)
+ goto error;
+
+ res = PyObject_CallOneArg(show_fn, msg);
+ Py_DECREF(show_fn);
+ Py_DECREF(msg);
+
+ if (res == NULL)
+ return -1;
+
+ Py_DECREF(res);
+ return 0;
+
+error:
+ Py_XDECREF(show_fn);
+ return -1;
+}
+
+static PyObject *
+warn_explicit(PyThreadState *tstate, PyObject *category, PyObject *message,
+ PyObject *filename, int lineno,
+ PyObject *module, PyObject *registry, PyObject *sourceline,
+ PyObject *source)
+{
+ PyObject *key = NULL, *text = NULL, *result = NULL, *lineno_obj = NULL;
+ PyObject *item = NULL;
+ PyObject *action;
+ int rc;
+ PyInterpreterState *interp = tstate->interp;
+
+ /* module can be None if a warning is emitted late during Python shutdown.
+ In this case, the Python warnings module was probably unloaded, filters
+ are no more available to choose as action. It is safer to ignore the
+ warning and do nothing. */
+ if (module == Py_None)
+ Py_RETURN_NONE;
+
+ if (registry && !PyDict_Check(registry) && (registry != Py_None)) {
+ PyErr_SetString(PyExc_TypeError, "'registry' must be a dict or None");
+ return NULL;
+ }
+
+ /* Normalize module. */
+ if (module == NULL) {
+ module = normalize_module(filename);
+ if (module == NULL)
+ return NULL;
+ }
+ else
+ Py_INCREF(module);
+
+ /* Normalize message. */
+ Py_INCREF(message); /* DECREF'ed in cleanup. */
+ rc = PyObject_IsInstance(message, PyExc_Warning);
+ if (rc == -1) {
+ goto cleanup;
+ }
+ if (rc == 1) {
+ text = PyObject_Str(message);
+ if (text == NULL)
+ goto cleanup;
+ category = (PyObject*)Py_TYPE(message);
+ }
+ else {
+ text = message;
+ message = PyObject_CallOneArg(category, message);
+ if (message == NULL)
+ goto cleanup;
+ }
+
+ lineno_obj = PyLong_FromLong(lineno);
+ if (lineno_obj == NULL)
+ goto cleanup;
+
+ if (source == Py_None) {
+ source = NULL;
+ }
+
+ /* Create key. */
+ key = PyTuple_Pack(3, text, category, lineno_obj);
+ if (key == NULL)
+ goto cleanup;
+
+ if ((registry != NULL) && (registry != Py_None)) {
+ rc = already_warned(interp, registry, key, 0);
+ if (rc == -1)
+ goto cleanup;
+ else if (rc == 1)
+ goto return_none;
+ /* Else this warning hasn't been generated before. */
+ }
+
+ action = get_filter(interp, category, text, lineno, module, &item);
+ if (action == NULL)
+ goto cleanup;
+
+ if (_PyUnicode_EqualToASCIIString(action, "error")) {
+ PyErr_SetObject(category, message);
+ goto cleanup;
+ }
+
+ if (_PyUnicode_EqualToASCIIString(action, "ignore")) {
+ goto return_none;
+ }
+
+ /* Store in the registry that we've been here, *except* when the action
+ is "always". */
+ rc = 0;
+ if (!_PyUnicode_EqualToASCIIString(action, "always")) {
+ if (registry != NULL && registry != Py_None &&
+ PyDict_SetItem(registry, key, Py_True) < 0)
+ {
+ goto cleanup;
+ }
+
+ if (_PyUnicode_EqualToASCIIString(action, "once")) {
+ if (registry == NULL || registry == Py_None) {
+ registry = get_once_registry(interp);
+ if (registry == NULL)
+ goto cleanup;
+ }
+ /* WarningsState.once_registry[(text, category)] = 1 */
+ rc = update_registry(interp, registry, text, category, 0);
+ }
+ else if (_PyUnicode_EqualToASCIIString(action, "module")) {
+ /* registry[(text, category, 0)] = 1 */
+ if (registry != NULL && registry != Py_None)
+ rc = update_registry(interp, registry, text, category, 0);
+ }
+ else if (!_PyUnicode_EqualToASCIIString(action, "default")) {
+ PyErr_Format(PyExc_RuntimeError,
+ "Unrecognized action (%R) in warnings.filters:\n %R",
+ action, item);
+ goto cleanup;
+ }
+ }
+
+ if (rc == 1) /* Already warned for this module. */
+ goto return_none;
+ if (rc == 0) {
+ if (call_show_warning(tstate, category, text, message, filename,
+ lineno, lineno_obj, sourceline, source) < 0)
+ goto cleanup;
+ }
+ else /* if (rc == -1) */
+ goto cleanup;
+
+ return_none:
+ result = Py_NewRef(Py_None);
+
+ cleanup:
+ Py_XDECREF(item);
+ Py_XDECREF(key);
+ Py_XDECREF(text);
+ Py_XDECREF(lineno_obj);
+ Py_DECREF(module);
+ Py_XDECREF(message);
+ return result; /* Py_None or NULL. */
+}
+
+static PyObject *
+get_frame_filename(PyFrameObject *frame)
+{
+ PyCodeObject *code = PyFrame_GetCode(frame);
+ PyObject *filename = code->co_filename;
+ Py_DECREF(code);
+ return filename;
+}
+
+static bool
+is_internal_filename(PyObject *filename)
+{
+ if (!PyUnicode_Check(filename)) {
+ return false;
+ }
+
+ int contains = PyUnicode_Contains(filename, &_Py_ID(importlib));
+ if (contains < 0) {
+ return false;
+ }
+ else if (contains > 0) {
+ contains = PyUnicode_Contains(filename, &_Py_ID(_bootstrap));
+ if (contains < 0) {
+ return false;
+ }
+ else if (contains > 0) {
+ return true;
+ }
+ }
+
+ return false;
+}
+
+static bool
+is_filename_to_skip(PyObject *filename, PyTupleObject *skip_file_prefixes)
+{
+ if (skip_file_prefixes) {
+ if (!PyUnicode_Check(filename)) {
+ return false;
+ }
+
+ Py_ssize_t prefixes = PyTuple_GET_SIZE(skip_file_prefixes);
+ for (Py_ssize_t idx = 0; idx < prefixes; ++idx)
+ {
+ PyObject *prefix = PyTuple_GET_ITEM(skip_file_prefixes, idx);
+ Py_ssize_t found = PyUnicode_Tailmatch(filename, prefix, 0, -1, -1);
+ if (found == 1) {
+ return true;
+ }
+ if (found < 0) {
+ return false;
+ }
+ }
+ }
+ return false;
+}
+
+static bool
+is_internal_frame(PyFrameObject *frame)
+{
+ if (frame == NULL) {
+ return false;
+ }
+
+ PyObject *filename = get_frame_filename(frame);
+ if (filename == NULL) {
+ return false;
+ }
+
+ return is_internal_filename(filename);
+}
+
+static PyFrameObject *
+next_external_frame(PyFrameObject *frame, PyTupleObject *skip_file_prefixes)
+{
+ PyObject *frame_filename;
+ do {
+ PyFrameObject *back = PyFrame_GetBack(frame);
+ Py_SETREF(frame, back);
+ } while (frame != NULL && (frame_filename = get_frame_filename(frame)) &&
+ (is_internal_filename(frame_filename) ||
+ is_filename_to_skip(frame_filename, skip_file_prefixes)));
+
+ return frame;
+}
+
+/* filename, module, and registry are new refs, globals is borrowed */
+/* skip_file_prefixes is either NULL or a tuple of strs. */
+/* Returns 0 on error (no new refs), 1 on success */
+static int
+setup_context(Py_ssize_t stack_level,
+ PyTupleObject *skip_file_prefixes,
+ PyObject **filename, int *lineno,
+ PyObject **module, PyObject **registry)
+{
+ PyObject *globals;
+
+ /* Setup globals, filename and lineno. */
+ PyThreadState *tstate = get_current_tstate();
+ if (tstate == NULL) {
+ return 0;
+ }
+ if (skip_file_prefixes) {
+ /* Type check our data structure up front. Later code that uses it
+ * isn't structured to report errors. */
+ Py_ssize_t prefixes = PyTuple_GET_SIZE(skip_file_prefixes);
+ for (Py_ssize_t idx = 0; idx < prefixes; ++idx)
+ {
+ PyObject *prefix = PyTuple_GET_ITEM(skip_file_prefixes, idx);
+ if (!PyUnicode_Check(prefix)) {
+ PyErr_Format(PyExc_TypeError,
+ "Found non-str '%s' in skip_file_prefixes.",
+ Py_TYPE(prefix)->tp_name);
+ return 0;
+ }
+ }
+ }
+ PyInterpreterState *interp = tstate->interp;
+ PyFrameObject *f = PyThreadState_GetFrame(tstate);
+ // Stack level comparisons to Python code is off by one as there is no
+ // warnings-related stack level to avoid.
+ if (stack_level <= 0 || is_internal_frame(f)) {
+ while (--stack_level > 0 && f != NULL) {
+ PyFrameObject *back = PyFrame_GetBack(f);
+ Py_SETREF(f, back);
+ }
+ }
+ else {
+ while (--stack_level > 0 && f != NULL) {
+ f = next_external_frame(f, skip_file_prefixes);
+ }
+ }
+
+ if (f == NULL) {
+ globals = interp->sysdict;
+ *filename = PyUnicode_FromString("sys");
+ *lineno = 1;
+ }
+ else {
+ globals = f->f_frame->f_globals;
+ *filename = Py_NewRef(f->f_frame->f_code->co_filename);
+ *lineno = PyFrame_GetLineNumber(f);
+ Py_DECREF(f);
+ }
+
+ *module = NULL;
+
+ /* Setup registry. */
+ assert(globals != NULL);
+ assert(PyDict_Check(globals));
+ *registry = _PyDict_GetItemWithError(globals, &_Py_ID(__warningregistry__));
+ if (*registry == NULL) {
+ int rc;
+
+ if (_PyErr_Occurred(tstate)) {
+ goto handle_error;
+ }
+ *registry = PyDict_New();
+ if (*registry == NULL)
+ goto handle_error;
+
+ rc = PyDict_SetItem(globals, &_Py_ID(__warningregistry__), *registry);
+ if (rc < 0)
+ goto handle_error;
+ }
+ else
+ Py_INCREF(*registry);
+
+ /* Setup module. */
+ *module = _PyDict_GetItemWithError(globals, &_Py_ID(__name__));
+ if (*module == Py_None || (*module != NULL && PyUnicode_Check(*module))) {
+ Py_INCREF(*module);
+ }
+ else if (_PyErr_Occurred(tstate)) {
+ goto handle_error;
+ }
+ else {
+ *module = PyUnicode_FromString("<string>");
+ if (*module == NULL)
+ goto handle_error;
+ }
+
+ return 1;
+
+ handle_error:
+ Py_XDECREF(*registry);
+ Py_XDECREF(*module);
+ Py_DECREF(*filename);
+ return 0;
+}
+
+static PyObject *
+get_category(PyObject *message, PyObject *category)
+{
+ int rc;
+
+ /* Get category. */
+ rc = PyObject_IsInstance(message, PyExc_Warning);
+ if (rc == -1)
+ return NULL;
+
+ if (rc == 1)
+ category = (PyObject*)Py_TYPE(message);
+ else if (category == NULL || category == Py_None)
+ category = PyExc_UserWarning;
+
+ /* Validate category. */
+ rc = PyObject_IsSubclass(category, PyExc_Warning);
+ /* category is not a subclass of PyExc_Warning or
+ PyObject_IsSubclass raised an error */
+ if (rc == -1 || rc == 0) {
+ PyErr_Format(PyExc_TypeError,
+ "category must be a Warning subclass, not '%s'",
+ Py_TYPE(category)->tp_name);
+ return NULL;
+ }
+
+ return category;
+}
+
+static PyObject *
+do_warn(PyObject *message, PyObject *category, Py_ssize_t stack_level,
+ PyObject *source, PyTupleObject *skip_file_prefixes)
+{
+ PyObject *filename, *module, *registry, *res;
+ int lineno;
+
+ PyThreadState *tstate = get_current_tstate();
+ if (tstate == NULL) {
+ return NULL;
+ }
+
+ if (!setup_context(stack_level, skip_file_prefixes,
+ &filename, &lineno, &module, &registry))
+ return NULL;
+
+ res = warn_explicit(tstate, category, message, filename, lineno, module, registry,
+ NULL, source);
+ Py_DECREF(filename);
+ Py_DECREF(registry);
+ Py_DECREF(module);
+ return res;
+}
+
+/*[clinic input]
+warn as warnings_warn
+
+ message: object
+ Text of the warning message.
+ category: object = None
+ The Warning category subclass. Defaults to UserWarning.
+ stacklevel: Py_ssize_t = 1
+ How far up the call stack to make this warning appear. A value of 2 for
+ example attributes the warning to the caller of the code calling warn().
+ source: object = None
+ If supplied, the destroyed object which emitted a ResourceWarning
+ *
+ skip_file_prefixes: object(type='PyTupleObject *', subclass_of='&PyTuple_Type') = NULL
+ An optional tuple of module filename prefixes indicating frames to skip
+ during stacklevel computations for stack frame attribution.
+
+Issue a warning, or maybe ignore it or raise an exception.
+[clinic start generated code]*/
+
+static PyObject *
+warnings_warn_impl(PyObject *module, PyObject *message, PyObject *category,
+ Py_ssize_t stacklevel, PyObject *source,
+ PyTupleObject *skip_file_prefixes)
+/*[clinic end generated code: output=a68e0f6906c65f80 input=eb37c6a18bec4ea1]*/
+{
+ category = get_category(message, category);
+ if (category == NULL)
+ return NULL;
+ if (skip_file_prefixes) {
+ if (PyTuple_GET_SIZE(skip_file_prefixes) > 0) {
+ if (stacklevel < 2) {
+ stacklevel = 2;
+ }
+ } else {
+ Py_DECREF((PyObject *)skip_file_prefixes);
+ skip_file_prefixes = NULL;
+ }
+ }
+ return do_warn(message, category, stacklevel, source, skip_file_prefixes);
+}
+
+static PyObject *
+get_source_line(PyInterpreterState *interp, PyObject *module_globals, int lineno)
+{
+ PyObject *loader;
+ PyObject *module_name;
+ PyObject *get_source;
+ PyObject *source;
+ PyObject *source_list;
+ PyObject *source_line;
+
+ /* stolen from import.c */
+ loader = _PyImport_BlessMyLoader(interp, module_globals);
+ if (loader == NULL) {
+ return NULL;
+ }
+
+ module_name = _PyDict_GetItemWithError(module_globals, &_Py_ID(__name__));
+ if (!module_name) {
+ Py_DECREF(loader);
+ return NULL;
+ }
+ Py_INCREF(module_name);
+
+ /* Make sure the loader implements the optional get_source() method. */
+ (void)_PyObject_LookupAttr(loader, &_Py_ID(get_source), &get_source);
+ Py_DECREF(loader);
+ if (!get_source) {
+ Py_DECREF(module_name);
+ return NULL;
+ }
+ /* Call get_source() to get the source code. */
+ source = PyObject_CallOneArg(get_source, module_name);
+ Py_DECREF(get_source);
+ Py_DECREF(module_name);
+ if (!source) {
+ return NULL;
+ }
+ if (source == Py_None) {
+ Py_DECREF(source);
+ return NULL;
+ }
+
+ /* Split the source into lines. */
+ source_list = PyUnicode_Splitlines(source, 0);
+ Py_DECREF(source);
+ if (!source_list) {
+ return NULL;
+ }
+
+ /* Get the source line. */
+ source_line = PyList_GetItem(source_list, lineno-1);
+ Py_XINCREF(source_line);
+ Py_DECREF(source_list);
+ return source_line;
+}
+
+/*[clinic input]
+warn_explicit as warnings_warn_explicit
+
+ message: object
+ category: object
+ filename: unicode
+ lineno: int
+ module as mod: object = NULL
+ registry: object = None
+ module_globals: object = None
+ source as sourceobj: object = None
+
+Issue a warning, or maybe ignore it or raise an exception.
+[clinic start generated code]*/
+
+static PyObject *
+warnings_warn_explicit_impl(PyObject *module, PyObject *message,
+ PyObject *category, PyObject *filename,
+ int lineno, PyObject *mod, PyObject *registry,
+ PyObject *module_globals, PyObject *sourceobj)
+/*[clinic end generated code: output=c49c62b15a49a186 input=df6eeb8b45e712f1]*/
+{
+ PyObject *source_line = NULL;
+ PyObject *returned;
+
+ PyThreadState *tstate = get_current_tstate();
+ if (tstate == NULL) {
+ return NULL;
+ }
+
+ if (module_globals && module_globals != Py_None) {
+ if (!PyDict_Check(module_globals)) {
+ PyErr_Format(PyExc_TypeError,
+ "module_globals must be a dict, not '%.200s'",
+ Py_TYPE(module_globals)->tp_name);
+ return NULL;
+ }
+
+ source_line = get_source_line(tstate->interp, module_globals, lineno);
+ if (source_line == NULL && PyErr_Occurred()) {
+ return NULL;
+ }
+ }
+ returned = warn_explicit(tstate, category, message, filename, lineno,
+ mod, registry, source_line, sourceobj);
+ Py_XDECREF(source_line);
+ return returned;
+}
+
+/*[clinic input]
+_filters_mutated as warnings_filters_mutated
+
+[clinic start generated code]*/
+
+static PyObject *
+warnings_filters_mutated_impl(PyObject *module)
+/*[clinic end generated code: output=8ce517abd12b88f4 input=35ecbf08ee2491b2]*/
+{
+ PyInterpreterState *interp = get_current_interp();
+ if (interp == NULL) {
+ return NULL;
+ }
+ WarningsState *st = warnings_get_state(interp);
+ if (st == NULL) {
+ return NULL;
+ }
+ st->filters_version++;
+ Py_RETURN_NONE;
+}
+
+
+/* Function to issue a warning message; may raise an exception. */
+
+static int
+warn_unicode(PyObject *category, PyObject *message,
+ Py_ssize_t stack_level, PyObject *source)
+{
+ PyObject *res;
+
+ if (category == NULL)
+ category = PyExc_RuntimeWarning;
+
+ res = do_warn(message, category, stack_level, source, NULL);
+ if (res == NULL)
+ return -1;
+ Py_DECREF(res);
+
+ return 0;
+}
+
+static int
+_PyErr_WarnFormatV(PyObject *source,
+ PyObject *category, Py_ssize_t stack_level,
+ const char *format, va_list vargs)
+{
+ PyObject *message;
+ int res;
+
+ message = PyUnicode_FromFormatV(format, vargs);
+ if (message == NULL)
+ return -1;
+
+ res = warn_unicode(category, message, stack_level, source);
+ Py_DECREF(message);
+ return res;
+}
+
+int
+PyErr_WarnFormat(PyObject *category, Py_ssize_t stack_level,
+ const char *format, ...)
+{
+ int res;
+ va_list vargs;
+
+ va_start(vargs, format);
+ res = _PyErr_WarnFormatV(NULL, category, stack_level, format, vargs);
+ va_end(vargs);
+ return res;
+}
+
+static int
+_PyErr_WarnFormat(PyObject *source, PyObject *category, Py_ssize_t stack_level,
+ const char *format, ...)
+{
+ int res;
+ va_list vargs;
+
+ va_start(vargs, format);
+ res = _PyErr_WarnFormatV(source, category, stack_level, format, vargs);
+ va_end(vargs);
+ return res;
+}
+
+int
+PyErr_ResourceWarning(PyObject *source, Py_ssize_t stack_level,
+ const char *format, ...)
+{
+ int res;
+ va_list vargs;
+
+ va_start(vargs, format);
+ res = _PyErr_WarnFormatV(source, PyExc_ResourceWarning,
+ stack_level, format, vargs);
+ va_end(vargs);
+ return res;
+}
+
+
+int
+PyErr_WarnEx(PyObject *category, const char *text, Py_ssize_t stack_level)
+{
+ int ret;
+ PyObject *message = PyUnicode_FromString(text);
+ if (message == NULL)
+ return -1;
+ ret = warn_unicode(category, message, stack_level, NULL);
+ Py_DECREF(message);
+ return ret;
+}
+
+/* PyErr_Warn is only for backwards compatibility and will be removed.
+ Use PyErr_WarnEx instead. */
+
+#undef PyErr_Warn
+
+int
+PyErr_Warn(PyObject *category, const char *text)
+{
+ return PyErr_WarnEx(category, text, 1);
+}
+
+/* Warning with explicit origin */
+int
+PyErr_WarnExplicitObject(PyObject *category, PyObject *message,
+ PyObject *filename, int lineno,
+ PyObject *module, PyObject *registry)
+{
+ PyObject *res;
+ if (category == NULL)
+ category = PyExc_RuntimeWarning;
+ PyThreadState *tstate = get_current_tstate();
+ if (tstate == NULL) {
+ return -1;
+ }
+ res = warn_explicit(tstate, category, message, filename, lineno,
+ module, registry, NULL, NULL);
+ if (res == NULL)
+ return -1;
+ Py_DECREF(res);
+ return 0;
+}
+
+int
+PyErr_WarnExplicit(PyObject *category, const char *text,
+ const char *filename_str, int lineno,
+ const char *module_str, PyObject *registry)
+{
+ PyObject *message = PyUnicode_FromString(text);
+ if (message == NULL) {
+ return -1;
+ }
+ PyObject *filename = PyUnicode_DecodeFSDefault(filename_str);
+ if (filename == NULL) {
+ Py_DECREF(message);
+ return -1;
+ }
+ PyObject *module = NULL;
+ if (module_str != NULL) {
+ module = PyUnicode_FromString(module_str);
+ if (module == NULL) {
+ Py_DECREF(filename);
+ Py_DECREF(message);
+ return -1;
+ }
+ }
+
+ int ret = PyErr_WarnExplicitObject(category, message, filename, lineno,
+ module, registry);
+ Py_XDECREF(module);
+ Py_DECREF(filename);
+ Py_DECREF(message);
+ return ret;
+}
+
+int
+PyErr_WarnExplicitFormat(PyObject *category,
+ const char *filename_str, int lineno,
+ const char *module_str, PyObject *registry,
+ const char *format, ...)
+{
+ PyObject *message;
+ PyObject *module = NULL;
+ PyObject *filename = PyUnicode_DecodeFSDefault(filename_str);
+ int ret = -1;
+ va_list vargs;
+
+ if (filename == NULL)
+ goto exit;
+ if (module_str != NULL) {
+ module = PyUnicode_FromString(module_str);
+ if (module == NULL)
+ goto exit;
+ }
+
+ va_start(vargs, format);
+ message = PyUnicode_FromFormatV(format, vargs);
+ if (message != NULL) {
+ PyObject *res;
+ PyThreadState *tstate = get_current_tstate();
+ if (tstate != NULL) {
+ res = warn_explicit(tstate, category, message, filename, lineno,
+ module, registry, NULL, NULL);
+ Py_DECREF(message);
+ if (res != NULL) {
+ Py_DECREF(res);
+ ret = 0;
+ }
+ }
+ }
+ va_end(vargs);
+exit:
+ Py_XDECREF(module);
+ Py_XDECREF(filename);
+ return ret;
+}
+
+void
+_PyErr_WarnUnawaitedCoroutine(PyObject *coro)
+{
+ /* First, we attempt to funnel the warning through
+ warnings._warn_unawaited_coroutine.
+
+ This could raise an exception, due to:
+ - a bug
+ - some kind of shutdown-related brokenness
+ - succeeding, but with an "error" warning filter installed, so the
+ warning is converted into a RuntimeWarning exception
+
+ In the first two cases, we want to print the error (so we know what it
+ is!), and then print a warning directly as a fallback. In the last
+ case, we want to print the error (since it's the warning!), but *not*
+ do a fallback. And after we print the error we can't check for what
+ type of error it was (because PyErr_WriteUnraisable clears it), so we
+ need a flag to keep track.
+
+ Since this is called from __del__ context, it's careful to never raise
+ an exception.
+ */
+ int warned = 0;
+ PyInterpreterState *interp = _PyInterpreterState_GET();
+ assert(interp != NULL);
+ PyObject *fn = GET_WARNINGS_ATTR(interp, _warn_unawaited_coroutine, 1);
+ if (fn) {
+ PyObject *res = PyObject_CallOneArg(fn, coro);
+ Py_DECREF(fn);
+ if (res || PyErr_ExceptionMatches(PyExc_RuntimeWarning)) {
+ warned = 1;
+ }
+ Py_XDECREF(res);
+ }
+
+ if (PyErr_Occurred()) {
+ PyErr_WriteUnraisable(coro);
+ }
+ if (!warned) {
+ if (_PyErr_WarnFormat(coro, PyExc_RuntimeWarning, 1,
+ "coroutine '%S' was never awaited",
+ ((PyCoroObject *)coro)->cr_qualname) < 0)
+ {
+ PyErr_WriteUnraisable(coro);
+ }
+ }
+}
+
+static PyMethodDef warnings_functions[] = {
+ WARNINGS_WARN_METHODDEF
+ WARNINGS_WARN_EXPLICIT_METHODDEF
+ WARNINGS_FILTERS_MUTATED_METHODDEF
+ /* XXX(brett.cannon): add showwarning? */
+ /* XXX(brett.cannon): Reasonable to add formatwarning? */
+ {NULL, NULL} /* sentinel */
+};
+
+
+static int
+warnings_module_exec(PyObject *module)
+{
+ PyInterpreterState *interp = get_current_interp();
+ if (interp == NULL) {
+ return -1;
+ }
+ WarningsState *st = warnings_get_state(interp);
+ if (st == NULL) {
+ return -1;
+ }
+ if (PyModule_AddObjectRef(module, "filters", st->filters) < 0) {
+ return -1;
+ }
+ if (PyModule_AddObjectRef(module, "_onceregistry", st->once_registry) < 0) {
+ return -1;
+ }
+ if (PyModule_AddObjectRef(module, "_defaultaction", st->default_action) < 0) {
+ return -1;
+ }
+ return 0;
+}
+
+
+static PyModuleDef_Slot warnings_slots[] = {
+ {Py_mod_exec, warnings_module_exec},
+ {Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
+ {0, NULL}
+};
+
+static struct PyModuleDef warnings_module = {
+ PyModuleDef_HEAD_INIT,
+ .m_name = MODULE_NAME,
+ .m_doc = warnings__doc__,
+ .m_size = 0,
+ .m_methods = warnings_functions,
+ .m_slots = warnings_slots,
+};
+
+
+PyMODINIT_FUNC
+_PyWarnings_Init(void)
+{
+ return PyModuleDef_Init(&warnings_module);
+}
+
+// We need this to ensure that warnings still work until late in finalization.
+void
+_PyWarnings_Fini(PyInterpreterState *interp)
+{
+ warnings_clear_state(&interp->warnings);
+}
diff --git a/contrib/tools/python3/Python/asdl.c b/contrib/tools/python3/Python/asdl.c
new file mode 100644
index 00000000000..a7f2180c88e
--- /dev/null
+++ b/contrib/tools/python3/Python/asdl.c
@@ -0,0 +1,6 @@
+#include "Python.h"
+#include "pycore_asdl.h"
+
+GENERATE_ASDL_SEQ_CONSTRUCTOR(generic, void*);
+GENERATE_ASDL_SEQ_CONSTRUCTOR(identifier, PyObject*);
+GENERATE_ASDL_SEQ_CONSTRUCTOR(int, int);
diff --git a/contrib/tools/python3/Python/asm_trampoline.S b/contrib/tools/python3/Python/asm_trampoline.S
new file mode 100644
index 00000000000..460707717df
--- /dev/null
+++ b/contrib/tools/python3/Python/asm_trampoline.S
@@ -0,0 +1,28 @@
+ .text
+ .globl _Py_trampoline_func_start
+# The following assembly is equivalent to:
+# PyObject *
+# trampoline(PyThreadState *ts, _PyInterpreterFrame *f,
+# int throwflag, py_evaluator evaluator)
+# {
+# return evaluator(ts, f, throwflag);
+# }
+_Py_trampoline_func_start:
+#ifdef __x86_64__
+ sub $8, %rsp
+ call *%rcx
+ add $8, %rsp
+ ret
+#endif // __x86_64__
+#if defined(__aarch64__) && defined(__AARCH64EL__) && !defined(__ILP32__)
+ // ARM64 little endian, 64bit ABI
+ // generate with aarch64-linux-gnu-gcc 12.1
+ stp x29, x30, [sp, -16]!
+ mov x29, sp
+ blr x3
+ ldp x29, x30, [sp], 16
+ ret
+#endif
+ .globl _Py_trampoline_func_end
+_Py_trampoline_func_end:
+ .section .note.GNU-stack,"",@progbits
diff --git a/contrib/tools/python3/Python/assemble.c b/contrib/tools/python3/Python/assemble.c
new file mode 100644
index 00000000000..8789d8ef978
--- /dev/null
+++ b/contrib/tools/python3/Python/assemble.c
@@ -0,0 +1,603 @@
+#include <stdbool.h>
+
+#include "Python.h"
+#include "pycore_code.h" // write_location_entry_start()
+#include "pycore_compile.h"
+#include "pycore_opcode.h" // _PyOpcode_Caches[] and opcode category macros
+#include "pycore_pymem.h" // _PyMem_IsPtrFreed()
+
+
+#define DEFAULT_CODE_SIZE 128
+#define DEFAULT_LNOTAB_SIZE 16
+#define DEFAULT_CNOTAB_SIZE 32
+
+#undef SUCCESS
+#undef ERROR
+#define SUCCESS 0
+#define ERROR -1
+
+#define RETURN_IF_ERROR(X) \
+ if ((X) == -1) { \
+ return ERROR; \
+ }
+
+typedef _PyCompilerSrcLocation location;
+typedef _PyCompile_Instruction instruction;
+typedef _PyCompile_InstructionSequence instr_sequence;
+
+static inline bool
+same_location(location a, location b)
+{
+ return a.lineno == b.lineno &&
+ a.end_lineno == b.end_lineno &&
+ a.col_offset == b.col_offset &&
+ a.end_col_offset == b.end_col_offset;
+}
+
+struct assembler {
+ PyObject *a_bytecode; /* bytes containing bytecode */
+ int a_offset; /* offset into bytecode */
+ PyObject *a_except_table; /* bytes containing exception table */
+ int a_except_table_off; /* offset into exception table */
+ /* Location Info */
+ int a_lineno; /* lineno of last emitted instruction */
+ PyObject* a_linetable; /* bytes containing location info */
+ int a_location_off; /* offset of last written location info frame */
+};
+
+static int
+assemble_init(struct assembler *a, int firstlineno)
+{
+ memset(a, 0, sizeof(struct assembler));
+ a->a_lineno = firstlineno;
+ a->a_linetable = NULL;
+ a->a_location_off = 0;
+ a->a_except_table = NULL;
+ a->a_bytecode = PyBytes_FromStringAndSize(NULL, DEFAULT_CODE_SIZE);
+ if (a->a_bytecode == NULL) {
+ goto error;
+ }
+ a->a_linetable = PyBytes_FromStringAndSize(NULL, DEFAULT_CNOTAB_SIZE);
+ if (a->a_linetable == NULL) {
+ goto error;
+ }
+ a->a_except_table = PyBytes_FromStringAndSize(NULL, DEFAULT_LNOTAB_SIZE);
+ if (a->a_except_table == NULL) {
+ goto error;
+ }
+ return SUCCESS;
+error:
+ Py_XDECREF(a->a_bytecode);
+ Py_XDECREF(a->a_linetable);
+ Py_XDECREF(a->a_except_table);
+ return ERROR;
+}
+
+static void
+assemble_free(struct assembler *a)
+{
+ Py_XDECREF(a->a_bytecode);
+ Py_XDECREF(a->a_linetable);
+ Py_XDECREF(a->a_except_table);
+}
+
+static inline void
+write_except_byte(struct assembler *a, int byte) {
+ unsigned char *p = (unsigned char *) PyBytes_AS_STRING(a->a_except_table);
+ p[a->a_except_table_off++] = byte;
+}
+
+#define CONTINUATION_BIT 64
+
+static void
+assemble_emit_exception_table_item(struct assembler *a, int value, int msb)
+{
+ assert ((msb | 128) == 128);
+ assert(value >= 0 && value < (1 << 30));
+ if (value >= 1 << 24) {
+ write_except_byte(a, (value >> 24) | CONTINUATION_BIT | msb);
+ msb = 0;
+ }
+ if (value >= 1 << 18) {
+ write_except_byte(a, ((value >> 18)&0x3f) | CONTINUATION_BIT | msb);
+ msb = 0;
+ }
+ if (value >= 1 << 12) {
+ write_except_byte(a, ((value >> 12)&0x3f) | CONTINUATION_BIT | msb);
+ msb = 0;
+ }
+ if (value >= 1 << 6) {
+ write_except_byte(a, ((value >> 6)&0x3f) | CONTINUATION_BIT | msb);
+ msb = 0;
+ }
+ write_except_byte(a, (value&0x3f) | msb);
+}
+
+/* See Objects/exception_handling_notes.txt for details of layout */
+#define MAX_SIZE_OF_ENTRY 20
+
+static int
+assemble_emit_exception_table_entry(struct assembler *a, int start, int end,
+ _PyCompile_ExceptHandlerInfo *handler)
+{
+ Py_ssize_t len = PyBytes_GET_SIZE(a->a_except_table);
+ if (a->a_except_table_off + MAX_SIZE_OF_ENTRY >= len) {
+ RETURN_IF_ERROR(_PyBytes_Resize(&a->a_except_table, len * 2));
+ }
+ int size = end-start;
+ assert(end > start);
+ int target = handler->h_offset;
+ int depth = handler->h_startdepth - 1;
+ if (handler->h_preserve_lasti > 0) {
+ depth -= 1;
+ }
+ assert(depth >= 0);
+ int depth_lasti = (depth<<1) | handler->h_preserve_lasti;
+ assemble_emit_exception_table_item(a, start, (1<<7));
+ assemble_emit_exception_table_item(a, size, 0);
+ assemble_emit_exception_table_item(a, target, 0);
+ assemble_emit_exception_table_item(a, depth_lasti, 0);
+ return SUCCESS;
+}
+
+static int
+assemble_exception_table(struct assembler *a, instr_sequence *instrs)
+{
+ int ioffset = 0;
+ _PyCompile_ExceptHandlerInfo handler;
+ handler.h_offset = -1;
+ handler.h_preserve_lasti = -1;
+ int start = -1;
+ for (int i = 0; i < instrs->s_used; i++) {
+ instruction *instr = &instrs->s_instrs[i];
+ if (instr->i_except_handler_info.h_offset != handler.h_offset) {
+ if (handler.h_offset >= 0) {
+ RETURN_IF_ERROR(
+ assemble_emit_exception_table_entry(a, start, ioffset, &handler));
+ }
+ start = ioffset;
+ handler = instr->i_except_handler_info;
+ }
+ ioffset += _PyCompile_InstrSize(instr->i_opcode, instr->i_oparg);
+ }
+ if (handler.h_offset >= 0) {
+ RETURN_IF_ERROR(assemble_emit_exception_table_entry(a, start, ioffset, &handler));
+ }
+ return SUCCESS;
+}
+
+
+/* Code location emitting code. See locations.md for a description of the format. */
+
+#define MSB 0x80
+
+static void
+write_location_byte(struct assembler* a, int val)
+{
+ PyBytes_AS_STRING(a->a_linetable)[a->a_location_off] = val&255;
+ a->a_location_off++;
+}
+
+
+static uint8_t *
+location_pointer(struct assembler* a)
+{
+ return (uint8_t *)PyBytes_AS_STRING(a->a_linetable) +
+ a->a_location_off;
+}
+
+static void
+write_location_first_byte(struct assembler* a, int code, int length)
+{
+ a->a_location_off += write_location_entry_start(
+ location_pointer(a), code, length);
+}
+
+static void
+write_location_varint(struct assembler* a, unsigned int val)
+{
+ uint8_t *ptr = location_pointer(a);
+ a->a_location_off += write_varint(ptr, val);
+}
+
+
+static void
+write_location_signed_varint(struct assembler* a, int val)
+{
+ uint8_t *ptr = location_pointer(a);
+ a->a_location_off += write_signed_varint(ptr, val);
+}
+
+static void
+write_location_info_short_form(struct assembler* a, int length, int column, int end_column)
+{
+ assert(length > 0 && length <= 8);
+ int column_low_bits = column & 7;
+ int column_group = column >> 3;
+ assert(column < 80);
+ assert(end_column >= column);
+ assert(end_column - column < 16);
+ write_location_first_byte(a, PY_CODE_LOCATION_INFO_SHORT0 + column_group, length);
+ write_location_byte(a, (column_low_bits << 4) | (end_column - column));
+}
+
+static void
+write_location_info_oneline_form(struct assembler* a, int length, int line_delta, int column, int end_column)
+{
+ assert(length > 0 && length <= 8);
+ assert(line_delta >= 0 && line_delta < 3);
+ assert(column < 128);
+ assert(end_column < 128);
+ write_location_first_byte(a, PY_CODE_LOCATION_INFO_ONE_LINE0 + line_delta, length);
+ write_location_byte(a, column);
+ write_location_byte(a, end_column);
+}
+
+static void
+write_location_info_long_form(struct assembler* a, location loc, int length)
+{
+ assert(length > 0 && length <= 8);
+ write_location_first_byte(a, PY_CODE_LOCATION_INFO_LONG, length);
+ write_location_signed_varint(a, loc.lineno - a->a_lineno);
+ assert(loc.end_lineno >= loc.lineno);
+ write_location_varint(a, loc.end_lineno - loc.lineno);
+ write_location_varint(a, loc.col_offset + 1);
+ write_location_varint(a, loc.end_col_offset + 1);
+}
+
+static void
+write_location_info_none(struct assembler* a, int length)
+{
+ write_location_first_byte(a, PY_CODE_LOCATION_INFO_NONE, length);
+}
+
+static void
+write_location_info_no_column(struct assembler* a, int length, int line_delta)
+{
+ write_location_first_byte(a, PY_CODE_LOCATION_INFO_NO_COLUMNS, length);
+ write_location_signed_varint(a, line_delta);
+}
+
+#define THEORETICAL_MAX_ENTRY_SIZE 25 /* 1 + 6 + 6 + 6 + 6 */
+
+
+static int
+write_location_info_entry(struct assembler* a, location loc, int isize)
+{
+ Py_ssize_t len = PyBytes_GET_SIZE(a->a_linetable);
+ if (a->a_location_off + THEORETICAL_MAX_ENTRY_SIZE >= len) {
+ assert(len > THEORETICAL_MAX_ENTRY_SIZE);
+ RETURN_IF_ERROR(_PyBytes_Resize(&a->a_linetable, len*2));
+ }
+ if (loc.lineno < 0) {
+ write_location_info_none(a, isize);
+ return SUCCESS;
+ }
+ int line_delta = loc.lineno - a->a_lineno;
+ int column = loc.col_offset;
+ int end_column = loc.end_col_offset;
+ assert(column >= -1);
+ assert(end_column >= -1);
+ if (column < 0 || end_column < 0) {
+ if (loc.end_lineno == loc.lineno || loc.end_lineno == -1) {
+ write_location_info_no_column(a, isize, line_delta);
+ a->a_lineno = loc.lineno;
+ return SUCCESS;
+ }
+ }
+ else if (loc.end_lineno == loc.lineno) {
+ if (line_delta == 0 && column < 80 && end_column - column < 16 && end_column >= column) {
+ write_location_info_short_form(a, isize, column, end_column);
+ return SUCCESS;
+ }
+ if (line_delta >= 0 && line_delta < 3 && column < 128 && end_column < 128) {
+ write_location_info_oneline_form(a, isize, line_delta, column, end_column);
+ a->a_lineno = loc.lineno;
+ return SUCCESS;
+ }
+ }
+ write_location_info_long_form(a, loc, isize);
+ a->a_lineno = loc.lineno;
+ return SUCCESS;
+}
+
+static int
+assemble_emit_location(struct assembler* a, location loc, int isize)
+{
+ if (isize == 0) {
+ return SUCCESS;
+ }
+ while (isize > 8) {
+ RETURN_IF_ERROR(write_location_info_entry(a, loc, 8));
+ isize -= 8;
+ }
+ return write_location_info_entry(a, loc, isize);
+}
+
+static int
+assemble_location_info(struct assembler *a, instr_sequence *instrs,
+ int firstlineno)
+{
+ a->a_lineno = firstlineno;
+ location loc = NO_LOCATION;
+ int size = 0;
+ for (int i = 0; i < instrs->s_used; i++) {
+ instruction *instr = &instrs->s_instrs[i];
+ if (!same_location(loc, instr->i_loc)) {
+ RETURN_IF_ERROR(assemble_emit_location(a, loc, size));
+ loc = instr->i_loc;
+ size = 0;
+ }
+ size += _PyCompile_InstrSize(instr->i_opcode, instr->i_oparg);
+ }
+ RETURN_IF_ERROR(assemble_emit_location(a, loc, size));
+ return SUCCESS;
+}
+
+static void
+write_instr(_Py_CODEUNIT *codestr, instruction *instr, int ilen)
+{
+ int opcode = instr->i_opcode;
+ assert(!IS_PSEUDO_OPCODE(opcode));
+ int oparg = instr->i_oparg;
+ assert(HAS_ARG(opcode) || oparg == 0);
+ int caches = _PyOpcode_Caches[opcode];
+ switch (ilen - caches) {
+ case 4:
+ codestr->op.code = EXTENDED_ARG;
+ codestr->op.arg = (oparg >> 24) & 0xFF;
+ codestr++;
+ /* fall through */
+ case 3:
+ codestr->op.code = EXTENDED_ARG;
+ codestr->op.arg = (oparg >> 16) & 0xFF;
+ codestr++;
+ /* fall through */
+ case 2:
+ codestr->op.code = EXTENDED_ARG;
+ codestr->op.arg = (oparg >> 8) & 0xFF;
+ codestr++;
+ /* fall through */
+ case 1:
+ codestr->op.code = opcode;
+ codestr->op.arg = oparg & 0xFF;
+ codestr++;
+ break;
+ default:
+ Py_UNREACHABLE();
+ }
+ while (caches--) {
+ codestr->op.code = CACHE;
+ codestr->op.arg = 0;
+ codestr++;
+ }
+}
+
+/* assemble_emit_instr()
+ Extend the bytecode with a new instruction.
+ Update lnotab if necessary.
+*/
+
+static int
+assemble_emit_instr(struct assembler *a, instruction *instr)
+{
+ Py_ssize_t len = PyBytes_GET_SIZE(a->a_bytecode);
+ _Py_CODEUNIT *code;
+
+ int size = _PyCompile_InstrSize(instr->i_opcode, instr->i_oparg);
+ if (a->a_offset + size >= len / (int)sizeof(_Py_CODEUNIT)) {
+ if (len > PY_SSIZE_T_MAX / 2) {
+ return ERROR;
+ }
+ RETURN_IF_ERROR(_PyBytes_Resize(&a->a_bytecode, len * 2));
+ }
+ code = (_Py_CODEUNIT *)PyBytes_AS_STRING(a->a_bytecode) + a->a_offset;
+ a->a_offset += size;
+ write_instr(code, instr, size);
+ return SUCCESS;
+}
+
+static int
+assemble_emit(struct assembler *a, instr_sequence *instrs,
+ int first_lineno, PyObject *const_cache)
+{
+ RETURN_IF_ERROR(assemble_init(a, first_lineno));
+
+ for (int i = 0; i < instrs->s_used; i++) {
+ instruction *instr = &instrs->s_instrs[i];
+ RETURN_IF_ERROR(assemble_emit_instr(a, instr));
+ }
+
+ RETURN_IF_ERROR(assemble_location_info(a, instrs, a->a_lineno));
+
+ RETURN_IF_ERROR(assemble_exception_table(a, instrs));
+
+ RETURN_IF_ERROR(_PyBytes_Resize(&a->a_except_table, a->a_except_table_off));
+ RETURN_IF_ERROR(_PyCompile_ConstCacheMergeOne(const_cache, &a->a_except_table));
+
+ RETURN_IF_ERROR(_PyBytes_Resize(&a->a_linetable, a->a_location_off));
+ RETURN_IF_ERROR(_PyCompile_ConstCacheMergeOne(const_cache, &a->a_linetable));
+
+ RETURN_IF_ERROR(_PyBytes_Resize(&a->a_bytecode, a->a_offset * sizeof(_Py_CODEUNIT)));
+ RETURN_IF_ERROR(_PyCompile_ConstCacheMergeOne(const_cache, &a->a_bytecode));
+ return SUCCESS;
+}
+
+static PyObject *
+dict_keys_inorder(PyObject *dict, Py_ssize_t offset)
+{
+ PyObject *tuple, *k, *v;
+ Py_ssize_t i, pos = 0, size = PyDict_GET_SIZE(dict);
+
+ tuple = PyTuple_New(size);
+ if (tuple == NULL)
+ return NULL;
+ while (PyDict_Next(dict, &pos, &k, &v)) {
+ i = PyLong_AS_LONG(v);
+ assert((i - offset) < size);
+ assert((i - offset) >= 0);
+ PyTuple_SET_ITEM(tuple, i - offset, Py_NewRef(k));
+ }
+ return tuple;
+}
+
+// This is in codeobject.c.
+extern void _Py_set_localsplus_info(int, PyObject *, unsigned char,
+ PyObject *, PyObject *);
+
+static void
+compute_localsplus_info(_PyCompile_CodeUnitMetadata *umd, int nlocalsplus,
+ PyObject *names, PyObject *kinds)
+{
+ PyObject *k, *v;
+ Py_ssize_t pos = 0;
+ while (PyDict_Next(umd->u_varnames, &pos, &k, &v)) {
+ int offset = (int)PyLong_AS_LONG(v);
+ assert(offset >= 0);
+ assert(offset < nlocalsplus);
+ // For now we do not distinguish arg kinds.
+ _PyLocals_Kind kind = CO_FAST_LOCAL;
+ if (PyDict_Contains(umd->u_fasthidden, k)) {
+ kind |= CO_FAST_HIDDEN;
+ }
+ if (PyDict_GetItem(umd->u_cellvars, k) != NULL) {
+ kind |= CO_FAST_CELL;
+ }
+ _Py_set_localsplus_info(offset, k, kind, names, kinds);
+ }
+ int nlocals = (int)PyDict_GET_SIZE(umd->u_varnames);
+
+ // This counter mirrors the fix done in fix_cell_offsets().
+ int numdropped = 0;
+ pos = 0;
+ while (PyDict_Next(umd->u_cellvars, &pos, &k, &v)) {
+ if (PyDict_GetItem(umd->u_varnames, k) != NULL) {
+ // Skip cells that are already covered by locals.
+ numdropped += 1;
+ continue;
+ }
+ int offset = (int)PyLong_AS_LONG(v);
+ assert(offset >= 0);
+ offset += nlocals - numdropped;
+ assert(offset < nlocalsplus);
+ _Py_set_localsplus_info(offset, k, CO_FAST_CELL, names, kinds);
+ }
+
+ pos = 0;
+ while (PyDict_Next(umd->u_freevars, &pos, &k, &v)) {
+ int offset = (int)PyLong_AS_LONG(v);
+ assert(offset >= 0);
+ offset += nlocals - numdropped;
+ assert(offset < nlocalsplus);
+ _Py_set_localsplus_info(offset, k, CO_FAST_FREE, names, kinds);
+ }
+}
+
+static PyCodeObject *
+makecode(_PyCompile_CodeUnitMetadata *umd, struct assembler *a, PyObject *const_cache,
+ PyObject *constslist, int maxdepth, int nlocalsplus, int code_flags,
+ PyObject *filename)
+{
+ PyCodeObject *co = NULL;
+ PyObject *names = NULL;
+ PyObject *consts = NULL;
+ PyObject *localsplusnames = NULL;
+ PyObject *localspluskinds = NULL;
+ names = dict_keys_inorder(umd->u_names, 0);
+ if (!names) {
+ goto error;
+ }
+ if (_PyCompile_ConstCacheMergeOne(const_cache, &names) < 0) {
+ goto error;
+ }
+
+ consts = PyList_AsTuple(constslist); /* PyCode_New requires a tuple */
+ if (consts == NULL) {
+ goto error;
+ }
+ if (_PyCompile_ConstCacheMergeOne(const_cache, &consts) < 0) {
+ goto error;
+ }
+
+ assert(umd->u_posonlyargcount < INT_MAX);
+ assert(umd->u_argcount < INT_MAX);
+ assert(umd->u_kwonlyargcount < INT_MAX);
+ int posonlyargcount = (int)umd->u_posonlyargcount;
+ int posorkwargcount = (int)umd->u_argcount;
+ assert(INT_MAX - posonlyargcount - posorkwargcount > 0);
+ int kwonlyargcount = (int)umd->u_kwonlyargcount;
+
+ localsplusnames = PyTuple_New(nlocalsplus);
+ if (localsplusnames == NULL) {
+ goto error;
+ }
+ localspluskinds = PyBytes_FromStringAndSize(NULL, nlocalsplus);
+ if (localspluskinds == NULL) {
+ goto error;
+ }
+ compute_localsplus_info(umd, nlocalsplus, localsplusnames, localspluskinds);
+
+ struct _PyCodeConstructor con = {
+ .filename = filename,
+ .name = umd->u_name,
+ .qualname = umd->u_qualname ? umd->u_qualname : umd->u_name,
+ .flags = code_flags,
+
+ .code = a->a_bytecode,
+ .firstlineno = umd->u_firstlineno,
+ .linetable = a->a_linetable,
+
+ .consts = consts,
+ .names = names,
+
+ .localsplusnames = localsplusnames,
+ .localspluskinds = localspluskinds,
+
+ .argcount = posonlyargcount + posorkwargcount,
+ .posonlyargcount = posonlyargcount,
+ .kwonlyargcount = kwonlyargcount,
+
+ .stacksize = maxdepth,
+
+ .exceptiontable = a->a_except_table,
+ };
+
+ if (_PyCode_Validate(&con) < 0) {
+ goto error;
+ }
+
+ if (_PyCompile_ConstCacheMergeOne(const_cache, &localsplusnames) < 0) {
+ goto error;
+ }
+ con.localsplusnames = localsplusnames;
+
+ co = _PyCode_New(&con);
+ if (co == NULL) {
+ goto error;
+ }
+
+error:
+ Py_XDECREF(names);
+ Py_XDECREF(consts);
+ Py_XDECREF(localsplusnames);
+ Py_XDECREF(localspluskinds);
+ return co;
+}
+
+
+PyCodeObject *
+_PyAssemble_MakeCodeObject(_PyCompile_CodeUnitMetadata *umd, PyObject *const_cache,
+ PyObject *consts, int maxdepth, instr_sequence *instrs,
+ int nlocalsplus, int code_flags, PyObject *filename)
+{
+ PyCodeObject *co = NULL;
+
+ struct assembler a;
+ int res = assemble_emit(&a, instrs, umd->u_firstlineno, const_cache);
+ if (res == SUCCESS) {
+ co = makecode(umd, &a, const_cache, consts, maxdepth, nlocalsplus,
+ code_flags, filename);
+ }
+ assemble_free(&a);
+ return co;
+}
diff --git a/contrib/tools/python3/Python/ast.c b/contrib/tools/python3/Python/ast.c
new file mode 100644
index 00000000000..82d7beec0ee
--- /dev/null
+++ b/contrib/tools/python3/Python/ast.c
@@ -0,0 +1,1111 @@
+/*
+ * This file exposes PyAST_Validate interface to check the integrity
+ * of the given abstract syntax tree (potentially constructed manually).
+ */
+#include "Python.h"
+#include "pycore_ast.h" // asdl_stmt_seq
+#include "pycore_pystate.h" // _PyThreadState_GET()
+
+#include <assert.h>
+#include <stdbool.h>
+
+struct validator {
+ int recursion_depth; /* current recursion depth */
+ int recursion_limit; /* recursion limit */
+};
+
+static int validate_stmts(struct validator *, asdl_stmt_seq *);
+static int validate_exprs(struct validator *, asdl_expr_seq *, expr_context_ty, int);
+static int validate_patterns(struct validator *, asdl_pattern_seq *, int);
+static int validate_type_params(struct validator *, asdl_type_param_seq *);
+static int _validate_nonempty_seq(asdl_seq *, const char *, const char *);
+static int validate_stmt(struct validator *, stmt_ty);
+static int validate_expr(struct validator *, expr_ty, expr_context_ty);
+static int validate_pattern(struct validator *, pattern_ty, int);
+static int validate_typeparam(struct validator *, type_param_ty);
+
+#define VALIDATE_POSITIONS(node) \
+ if (node->lineno > node->end_lineno) { \
+ PyErr_Format(PyExc_ValueError, \
+ "AST node line range (%d, %d) is not valid", \
+ node->lineno, node->end_lineno); \
+ return 0; \
+ } \
+ if ((node->lineno < 0 && node->end_lineno != node->lineno) || \
+ (node->col_offset < 0 && node->col_offset != node->end_col_offset)) { \
+ PyErr_Format(PyExc_ValueError, \
+ "AST node column range (%d, %d) for line range (%d, %d) is not valid", \
+ node->col_offset, node->end_col_offset, node->lineno, node->end_lineno); \
+ return 0; \
+ } \
+ if (node->lineno == node->end_lineno && node->col_offset > node->end_col_offset) { \
+ PyErr_Format(PyExc_ValueError, \
+ "line %d, column %d-%d is not a valid range", \
+ node->lineno, node->col_offset, node->end_col_offset); \
+ return 0; \
+ }
+
+static int
+validate_name(PyObject *name)
+{
+ assert(!PyErr_Occurred());
+ assert(PyUnicode_Check(name));
+ static const char * const forbidden[] = {
+ "None",
+ "True",
+ "False",
+ NULL
+ };
+ for (int i = 0; forbidden[i] != NULL; i++) {
+ if (_PyUnicode_EqualToASCIIString(name, forbidden[i])) {
+ PyErr_Format(PyExc_ValueError, "identifier field can't represent '%s' constant", forbidden[i]);
+ return 0;
+ }
+ }
+ return 1;
+}
+
+static int
+validate_comprehension(struct validator *state, asdl_comprehension_seq *gens)
+{
+ assert(!PyErr_Occurred());
+ if (!asdl_seq_LEN(gens)) {
+ PyErr_SetString(PyExc_ValueError, "comprehension with no generators");
+ return 0;
+ }
+ for (Py_ssize_t i = 0; i < asdl_seq_LEN(gens); i++) {
+ comprehension_ty comp = asdl_seq_GET(gens, i);
+ if (!validate_expr(state, comp->target, Store) ||
+ !validate_expr(state, comp->iter, Load) ||
+ !validate_exprs(state, comp->ifs, Load, 0))
+ return 0;
+ }
+ return 1;
+}
+
+static int
+validate_keywords(struct validator *state, asdl_keyword_seq *keywords)
+{
+ assert(!PyErr_Occurred());
+ for (Py_ssize_t i = 0; i < asdl_seq_LEN(keywords); i++)
+ if (!validate_expr(state, (asdl_seq_GET(keywords, i))->value, Load))
+ return 0;
+ return 1;
+}
+
+static int
+validate_args(struct validator *state, asdl_arg_seq *args)
+{
+ assert(!PyErr_Occurred());
+ for (Py_ssize_t i = 0; i < asdl_seq_LEN(args); i++) {
+ arg_ty arg = asdl_seq_GET(args, i);
+ VALIDATE_POSITIONS(arg);
+ if (arg->annotation && !validate_expr(state, arg->annotation, Load))
+ return 0;
+ }
+ return 1;
+}
+
+static const char *
+expr_context_name(expr_context_ty ctx)
+{
+ switch (ctx) {
+ case Load:
+ return "Load";
+ case Store:
+ return "Store";
+ case Del:
+ return "Del";
+ // No default case so compiler emits warning for unhandled cases
+ }
+ Py_UNREACHABLE();
+}
+
+static int
+validate_arguments(struct validator *state, arguments_ty args)
+{
+ assert(!PyErr_Occurred());
+ if (!validate_args(state, args->posonlyargs) || !validate_args(state, args->args)) {
+ return 0;
+ }
+ if (args->vararg && args->vararg->annotation
+ && !validate_expr(state, args->vararg->annotation, Load)) {
+ return 0;
+ }
+ if (!validate_args(state, args->kwonlyargs))
+ return 0;
+ if (args->kwarg && args->kwarg->annotation
+ && !validate_expr(state, args->kwarg->annotation, Load)) {
+ return 0;
+ }
+ if (asdl_seq_LEN(args->defaults) > asdl_seq_LEN(args->posonlyargs) + asdl_seq_LEN(args->args)) {
+ PyErr_SetString(PyExc_ValueError, "more positional defaults than args on arguments");
+ return 0;
+ }
+ if (asdl_seq_LEN(args->kw_defaults) != asdl_seq_LEN(args->kwonlyargs)) {
+ PyErr_SetString(PyExc_ValueError, "length of kwonlyargs is not the same as "
+ "kw_defaults on arguments");
+ return 0;
+ }
+ return validate_exprs(state, args->defaults, Load, 0) && validate_exprs(state, args->kw_defaults, Load, 1);
+}
+
+static int
+validate_constant(struct validator *state, PyObject *value)
+{
+ assert(!PyErr_Occurred());
+ if (value == Py_None || value == Py_Ellipsis)
+ return 1;
+
+ if (PyLong_CheckExact(value)
+ || PyFloat_CheckExact(value)
+ || PyComplex_CheckExact(value)
+ || PyBool_Check(value)
+ || PyUnicode_CheckExact(value)
+ || PyBytes_CheckExact(value))
+ return 1;
+
+ if (PyTuple_CheckExact(value) || PyFrozenSet_CheckExact(value)) {
+ if (++state->recursion_depth > state->recursion_limit) {
+ PyErr_SetString(PyExc_RecursionError,
+ "maximum recursion depth exceeded during compilation");
+ return 0;
+ }
+
+ PyObject *it = PyObject_GetIter(value);
+ if (it == NULL)
+ return 0;
+
+ while (1) {
+ PyObject *item = PyIter_Next(it);
+ if (item == NULL) {
+ if (PyErr_Occurred()) {
+ Py_DECREF(it);
+ return 0;
+ }
+ break;
+ }
+
+ if (!validate_constant(state, item)) {
+ Py_DECREF(it);
+ Py_DECREF(item);
+ return 0;
+ }
+ Py_DECREF(item);
+ }
+
+ Py_DECREF(it);
+ --state->recursion_depth;
+ return 1;
+ }
+
+ if (!PyErr_Occurred()) {
+ PyErr_Format(PyExc_TypeError,
+ "got an invalid type in Constant: %s",
+ _PyType_Name(Py_TYPE(value)));
+ }
+ return 0;
+}
+
+static int
+validate_expr(struct validator *state, expr_ty exp, expr_context_ty ctx)
+{
+ assert(!PyErr_Occurred());
+ VALIDATE_POSITIONS(exp);
+ int ret = -1;
+ if (++state->recursion_depth > state->recursion_limit) {
+ PyErr_SetString(PyExc_RecursionError,
+ "maximum recursion depth exceeded during compilation");
+ return 0;
+ }
+ int check_ctx = 1;
+ expr_context_ty actual_ctx;
+
+ /* First check expression context. */
+ switch (exp->kind) {
+ case Attribute_kind:
+ actual_ctx = exp->v.Attribute.ctx;
+ break;
+ case Subscript_kind:
+ actual_ctx = exp->v.Subscript.ctx;
+ break;
+ case Starred_kind:
+ actual_ctx = exp->v.Starred.ctx;
+ break;
+ case Name_kind:
+ if (!validate_name(exp->v.Name.id)) {
+ return 0;
+ }
+ actual_ctx = exp->v.Name.ctx;
+ break;
+ case List_kind:
+ actual_ctx = exp->v.List.ctx;
+ break;
+ case Tuple_kind:
+ actual_ctx = exp->v.Tuple.ctx;
+ break;
+ default:
+ if (ctx != Load) {
+ PyErr_Format(PyExc_ValueError, "expression which can't be "
+ "assigned to in %s context", expr_context_name(ctx));
+ return 0;
+ }
+ check_ctx = 0;
+ /* set actual_ctx to prevent gcc warning */
+ actual_ctx = 0;
+ }
+ if (check_ctx && actual_ctx != ctx) {
+ PyErr_Format(PyExc_ValueError, "expression must have %s context but has %s instead",
+ expr_context_name(ctx), expr_context_name(actual_ctx));
+ return 0;
+ }
+
+ /* Now validate expression. */
+ switch (exp->kind) {
+ case BoolOp_kind:
+ if (asdl_seq_LEN(exp->v.BoolOp.values) < 2) {
+ PyErr_SetString(PyExc_ValueError, "BoolOp with less than 2 values");
+ return 0;
+ }
+ ret = validate_exprs(state, exp->v.BoolOp.values, Load, 0);
+ break;
+ case BinOp_kind:
+ ret = validate_expr(state, exp->v.BinOp.left, Load) &&
+ validate_expr(state, exp->v.BinOp.right, Load);
+ break;
+ case UnaryOp_kind:
+ ret = validate_expr(state, exp->v.UnaryOp.operand, Load);
+ break;
+ case Lambda_kind:
+ ret = validate_arguments(state, exp->v.Lambda.args) &&
+ validate_expr(state, exp->v.Lambda.body, Load);
+ break;
+ case IfExp_kind:
+ ret = validate_expr(state, exp->v.IfExp.test, Load) &&
+ validate_expr(state, exp->v.IfExp.body, Load) &&
+ validate_expr(state, exp->v.IfExp.orelse, Load);
+ break;
+ case Dict_kind:
+ if (asdl_seq_LEN(exp->v.Dict.keys) != asdl_seq_LEN(exp->v.Dict.values)) {
+ PyErr_SetString(PyExc_ValueError,
+ "Dict doesn't have the same number of keys as values");
+ return 0;
+ }
+ /* null_ok=1 for keys expressions to allow dict unpacking to work in
+ dict literals, i.e. ``{**{a:b}}`` */
+ ret = validate_exprs(state, exp->v.Dict.keys, Load, /*null_ok=*/ 1) &&
+ validate_exprs(state, exp->v.Dict.values, Load, /*null_ok=*/ 0);
+ break;
+ case Set_kind:
+ ret = validate_exprs(state, exp->v.Set.elts, Load, 0);
+ break;
+#define COMP(NAME) \
+ case NAME ## _kind: \
+ ret = validate_comprehension(state, exp->v.NAME.generators) && \
+ validate_expr(state, exp->v.NAME.elt, Load); \
+ break;
+ COMP(ListComp)
+ COMP(SetComp)
+ COMP(GeneratorExp)
+#undef COMP
+ case DictComp_kind:
+ ret = validate_comprehension(state, exp->v.DictComp.generators) &&
+ validate_expr(state, exp->v.DictComp.key, Load) &&
+ validate_expr(state, exp->v.DictComp.value, Load);
+ break;
+ case Yield_kind:
+ ret = !exp->v.Yield.value || validate_expr(state, exp->v.Yield.value, Load);
+ break;
+ case YieldFrom_kind:
+ ret = validate_expr(state, exp->v.YieldFrom.value, Load);
+ break;
+ case Await_kind:
+ ret = validate_expr(state, exp->v.Await.value, Load);
+ break;
+ case Compare_kind:
+ if (!asdl_seq_LEN(exp->v.Compare.comparators)) {
+ PyErr_SetString(PyExc_ValueError, "Compare with no comparators");
+ return 0;
+ }
+ if (asdl_seq_LEN(exp->v.Compare.comparators) !=
+ asdl_seq_LEN(exp->v.Compare.ops)) {
+ PyErr_SetString(PyExc_ValueError, "Compare has a different number "
+ "of comparators and operands");
+ return 0;
+ }
+ ret = validate_exprs(state, exp->v.Compare.comparators, Load, 0) &&
+ validate_expr(state, exp->v.Compare.left, Load);
+ break;
+ case Call_kind:
+ ret = validate_expr(state, exp->v.Call.func, Load) &&
+ validate_exprs(state, exp->v.Call.args, Load, 0) &&
+ validate_keywords(state, exp->v.Call.keywords);
+ break;
+ case Constant_kind:
+ if (!validate_constant(state, exp->v.Constant.value)) {
+ return 0;
+ }
+ ret = 1;
+ break;
+ case JoinedStr_kind:
+ ret = validate_exprs(state, exp->v.JoinedStr.values, Load, 0);
+ break;
+ case FormattedValue_kind:
+ if (validate_expr(state, exp->v.FormattedValue.value, Load) == 0)
+ return 0;
+ if (exp->v.FormattedValue.format_spec) {
+ ret = validate_expr(state, exp->v.FormattedValue.format_spec, Load);
+ break;
+ }
+ ret = 1;
+ break;
+ case Attribute_kind:
+ ret = validate_expr(state, exp->v.Attribute.value, Load);
+ break;
+ case Subscript_kind:
+ ret = validate_expr(state, exp->v.Subscript.slice, Load) &&
+ validate_expr(state, exp->v.Subscript.value, Load);
+ break;
+ case Starred_kind:
+ ret = validate_expr(state, exp->v.Starred.value, ctx);
+ break;
+ case Slice_kind:
+ ret = (!exp->v.Slice.lower || validate_expr(state, exp->v.Slice.lower, Load)) &&
+ (!exp->v.Slice.upper || validate_expr(state, exp->v.Slice.upper, Load)) &&
+ (!exp->v.Slice.step || validate_expr(state, exp->v.Slice.step, Load));
+ break;
+ case List_kind:
+ ret = validate_exprs(state, exp->v.List.elts, ctx, 0);
+ break;
+ case Tuple_kind:
+ ret = validate_exprs(state, exp->v.Tuple.elts, ctx, 0);
+ break;
+ case NamedExpr_kind:
+ if (exp->v.NamedExpr.target->kind != Name_kind) {
+ PyErr_SetString(PyExc_TypeError,
+ "NamedExpr target must be a Name");
+ return 0;
+ }
+ ret = validate_expr(state, exp->v.NamedExpr.value, Load);
+ break;
+ /* This last case doesn't have any checking. */
+ case Name_kind:
+ ret = 1;
+ break;
+ // No default case so compiler emits warning for unhandled cases
+ }
+ if (ret < 0) {
+ PyErr_SetString(PyExc_SystemError, "unexpected expression");
+ ret = 0;
+ }
+ state->recursion_depth--;
+ return ret;
+}
+
+
+// Note: the ensure_literal_* functions are only used to validate a restricted
+// set of non-recursive literals that have already been checked with
+// validate_expr, so they don't accept the validator state
+static int
+ensure_literal_number(expr_ty exp, bool allow_real, bool allow_imaginary)
+{
+ assert(exp->kind == Constant_kind);
+ PyObject *value = exp->v.Constant.value;
+ return (allow_real && PyFloat_CheckExact(value)) ||
+ (allow_real && PyLong_CheckExact(value)) ||
+ (allow_imaginary && PyComplex_CheckExact(value));
+}
+
+static int
+ensure_literal_negative(expr_ty exp, bool allow_real, bool allow_imaginary)
+{
+ assert(exp->kind == UnaryOp_kind);
+ // Must be negation ...
+ if (exp->v.UnaryOp.op != USub) {
+ return 0;
+ }
+ // ... of a constant ...
+ expr_ty operand = exp->v.UnaryOp.operand;
+ if (operand->kind != Constant_kind) {
+ return 0;
+ }
+ // ... number
+ return ensure_literal_number(operand, allow_real, allow_imaginary);
+}
+
+static int
+ensure_literal_complex(expr_ty exp)
+{
+ assert(exp->kind == BinOp_kind);
+ expr_ty left = exp->v.BinOp.left;
+ expr_ty right = exp->v.BinOp.right;
+ // Ensure op is addition or subtraction
+ if (exp->v.BinOp.op != Add && exp->v.BinOp.op != Sub) {
+ return 0;
+ }
+ // Check LHS is a real number (potentially signed)
+ switch (left->kind)
+ {
+ case Constant_kind:
+ if (!ensure_literal_number(left, /*real=*/true, /*imaginary=*/false)) {
+ return 0;
+ }
+ break;
+ case UnaryOp_kind:
+ if (!ensure_literal_negative(left, /*real=*/true, /*imaginary=*/false)) {
+ return 0;
+ }
+ break;
+ default:
+ return 0;
+ }
+ // Check RHS is an imaginary number (no separate sign allowed)
+ switch (right->kind)
+ {
+ case Constant_kind:
+ if (!ensure_literal_number(right, /*real=*/false, /*imaginary=*/true)) {
+ return 0;
+ }
+ break;
+ default:
+ return 0;
+ }
+ return 1;
+}
+
+static int
+validate_pattern_match_value(struct validator *state, expr_ty exp)
+{
+ assert(!PyErr_Occurred());
+ if (!validate_expr(state, exp, Load)) {
+ return 0;
+ }
+
+ switch (exp->kind)
+ {
+ case Constant_kind:
+ /* Ellipsis and immutable sequences are not allowed.
+ For True, False and None, MatchSingleton() should
+ be used */
+ if (!validate_expr(state, exp, Load)) {
+ return 0;
+ }
+ PyObject *literal = exp->v.Constant.value;
+ if (PyLong_CheckExact(literal) || PyFloat_CheckExact(literal) ||
+ PyBytes_CheckExact(literal) || PyComplex_CheckExact(literal) ||
+ PyUnicode_CheckExact(literal)) {
+ return 1;
+ }
+ PyErr_SetString(PyExc_ValueError,
+ "unexpected constant inside of a literal pattern");
+ return 0;
+ case Attribute_kind:
+ // Constants and attribute lookups are always permitted
+ return 1;
+ case UnaryOp_kind:
+ // Negated numbers are permitted (whether real or imaginary)
+ // Compiler will complain if AST folding doesn't create a constant
+ if (ensure_literal_negative(exp, /*real=*/true, /*imaginary=*/true)) {
+ return 1;
+ }
+ break;
+ case BinOp_kind:
+ // Complex literals are permitted
+ // Compiler will complain if AST folding doesn't create a constant
+ if (ensure_literal_complex(exp)) {
+ return 1;
+ }
+ break;
+ case JoinedStr_kind:
+ // Handled in the later stages
+ return 1;
+ default:
+ break;
+ }
+ PyErr_SetString(PyExc_ValueError,
+ "patterns may only match literals and attribute lookups");
+ return 0;
+}
+
+static int
+validate_capture(PyObject *name)
+{
+ assert(!PyErr_Occurred());
+ if (_PyUnicode_EqualToASCIIString(name, "_")) {
+ PyErr_Format(PyExc_ValueError, "can't capture name '_' in patterns");
+ return 0;
+ }
+ return validate_name(name);
+}
+
+static int
+validate_pattern(struct validator *state, pattern_ty p, int star_ok)
+{
+ assert(!PyErr_Occurred());
+ VALIDATE_POSITIONS(p);
+ int ret = -1;
+ if (++state->recursion_depth > state->recursion_limit) {
+ PyErr_SetString(PyExc_RecursionError,
+ "maximum recursion depth exceeded during compilation");
+ return 0;
+ }
+ switch (p->kind) {
+ case MatchValue_kind:
+ ret = validate_pattern_match_value(state, p->v.MatchValue.value);
+ break;
+ case MatchSingleton_kind:
+ ret = p->v.MatchSingleton.value == Py_None || PyBool_Check(p->v.MatchSingleton.value);
+ if (!ret) {
+ PyErr_SetString(PyExc_ValueError,
+ "MatchSingleton can only contain True, False and None");
+ }
+ break;
+ case MatchSequence_kind:
+ ret = validate_patterns(state, p->v.MatchSequence.patterns, /*star_ok=*/1);
+ break;
+ case MatchMapping_kind:
+ if (asdl_seq_LEN(p->v.MatchMapping.keys) != asdl_seq_LEN(p->v.MatchMapping.patterns)) {
+ PyErr_SetString(PyExc_ValueError,
+ "MatchMapping doesn't have the same number of keys as patterns");
+ ret = 0;
+ break;
+ }
+
+ if (p->v.MatchMapping.rest && !validate_capture(p->v.MatchMapping.rest)) {
+ ret = 0;
+ break;
+ }
+
+ asdl_expr_seq *keys = p->v.MatchMapping.keys;
+ for (Py_ssize_t i = 0; i < asdl_seq_LEN(keys); i++) {
+ expr_ty key = asdl_seq_GET(keys, i);
+ if (key->kind == Constant_kind) {
+ PyObject *literal = key->v.Constant.value;
+ if (literal == Py_None || PyBool_Check(literal)) {
+ /* validate_pattern_match_value will ensure the key
+ doesn't contain True, False and None but it is
+ syntactically valid, so we will pass those on in
+ a special case. */
+ continue;
+ }
+ }
+ if (!validate_pattern_match_value(state, key)) {
+ ret = 0;
+ break;
+ }
+ }
+ if (ret == 0) {
+ break;
+ }
+ ret = validate_patterns(state, p->v.MatchMapping.patterns, /*star_ok=*/0);
+ break;
+ case MatchClass_kind:
+ if (asdl_seq_LEN(p->v.MatchClass.kwd_attrs) != asdl_seq_LEN(p->v.MatchClass.kwd_patterns)) {
+ PyErr_SetString(PyExc_ValueError,
+ "MatchClass doesn't have the same number of keyword attributes as patterns");
+ ret = 0;
+ break;
+ }
+ if (!validate_expr(state, p->v.MatchClass.cls, Load)) {
+ ret = 0;
+ break;
+ }
+
+ expr_ty cls = p->v.MatchClass.cls;
+ while (1) {
+ if (cls->kind == Name_kind) {
+ break;
+ }
+ else if (cls->kind == Attribute_kind) {
+ cls = cls->v.Attribute.value;
+ continue;
+ }
+ else {
+ PyErr_SetString(PyExc_ValueError,
+ "MatchClass cls field can only contain Name or Attribute nodes.");
+ ret = 0;
+ break;
+ }
+ }
+ if (ret == 0) {
+ break;
+ }
+
+ for (Py_ssize_t i = 0; i < asdl_seq_LEN(p->v.MatchClass.kwd_attrs); i++) {
+ PyObject *identifier = asdl_seq_GET(p->v.MatchClass.kwd_attrs, i);
+ if (!validate_name(identifier)) {
+ ret = 0;
+ break;
+ }
+ }
+ if (ret == 0) {
+ break;
+ }
+
+ if (!validate_patterns(state, p->v.MatchClass.patterns, /*star_ok=*/0)) {
+ ret = 0;
+ break;
+ }
+
+ ret = validate_patterns(state, p->v.MatchClass.kwd_patterns, /*star_ok=*/0);
+ break;
+ case MatchStar_kind:
+ if (!star_ok) {
+ PyErr_SetString(PyExc_ValueError, "can't use MatchStar here");
+ ret = 0;
+ break;
+ }
+ ret = p->v.MatchStar.name == NULL || validate_capture(p->v.MatchStar.name);
+ break;
+ case MatchAs_kind:
+ if (p->v.MatchAs.name && !validate_capture(p->v.MatchAs.name)) {
+ ret = 0;
+ break;
+ }
+ if (p->v.MatchAs.pattern == NULL) {
+ ret = 1;
+ }
+ else if (p->v.MatchAs.name == NULL) {
+ PyErr_SetString(PyExc_ValueError,
+ "MatchAs must specify a target name if a pattern is given");
+ ret = 0;
+ }
+ else {
+ ret = validate_pattern(state, p->v.MatchAs.pattern, /*star_ok=*/0);
+ }
+ break;
+ case MatchOr_kind:
+ if (asdl_seq_LEN(p->v.MatchOr.patterns) < 2) {
+ PyErr_SetString(PyExc_ValueError,
+ "MatchOr requires at least 2 patterns");
+ ret = 0;
+ break;
+ }
+ ret = validate_patterns(state, p->v.MatchOr.patterns, /*star_ok=*/0);
+ break;
+ // No default case, so the compiler will emit a warning if new pattern
+ // kinds are added without being handled here
+ }
+ if (ret < 0) {
+ PyErr_SetString(PyExc_SystemError, "unexpected pattern");
+ ret = 0;
+ }
+ state->recursion_depth--;
+ return ret;
+}
+
+static int
+_validate_nonempty_seq(asdl_seq *seq, const char *what, const char *owner)
+{
+ if (asdl_seq_LEN(seq))
+ return 1;
+ PyErr_Format(PyExc_ValueError, "empty %s on %s", what, owner);
+ return 0;
+}
+#define validate_nonempty_seq(seq, what, owner) _validate_nonempty_seq((asdl_seq*)seq, what, owner)
+
+static int
+validate_assignlist(struct validator *state, asdl_expr_seq *targets, expr_context_ty ctx)
+{
+ assert(!PyErr_Occurred());
+ return validate_nonempty_seq(targets, "targets", ctx == Del ? "Delete" : "Assign") &&
+ validate_exprs(state, targets, ctx, 0);
+}
+
+static int
+validate_body(struct validator *state, asdl_stmt_seq *body, const char *owner)
+{
+ assert(!PyErr_Occurred());
+ return validate_nonempty_seq(body, "body", owner) && validate_stmts(state, body);
+}
+
+static int
+validate_stmt(struct validator *state, stmt_ty stmt)
+{
+ assert(!PyErr_Occurred());
+ VALIDATE_POSITIONS(stmt);
+ int ret = -1;
+ if (++state->recursion_depth > state->recursion_limit) {
+ PyErr_SetString(PyExc_RecursionError,
+ "maximum recursion depth exceeded during compilation");
+ return 0;
+ }
+ switch (stmt->kind) {
+ case FunctionDef_kind:
+ ret = validate_body(state, stmt->v.FunctionDef.body, "FunctionDef") &&
+ validate_type_params(state, stmt->v.FunctionDef.type_params) &&
+ validate_arguments(state, stmt->v.FunctionDef.args) &&
+ validate_exprs(state, stmt->v.FunctionDef.decorator_list, Load, 0) &&
+ (!stmt->v.FunctionDef.returns ||
+ validate_expr(state, stmt->v.FunctionDef.returns, Load));
+ break;
+ case ClassDef_kind:
+ ret = validate_body(state, stmt->v.ClassDef.body, "ClassDef") &&
+ validate_type_params(state, stmt->v.ClassDef.type_params) &&
+ validate_exprs(state, stmt->v.ClassDef.bases, Load, 0) &&
+ validate_keywords(state, stmt->v.ClassDef.keywords) &&
+ validate_exprs(state, stmt->v.ClassDef.decorator_list, Load, 0);
+ break;
+ case Return_kind:
+ ret = !stmt->v.Return.value || validate_expr(state, stmt->v.Return.value, Load);
+ break;
+ case Delete_kind:
+ ret = validate_assignlist(state, stmt->v.Delete.targets, Del);
+ break;
+ case Assign_kind:
+ ret = validate_assignlist(state, stmt->v.Assign.targets, Store) &&
+ validate_expr(state, stmt->v.Assign.value, Load);
+ break;
+ case AugAssign_kind:
+ ret = validate_expr(state, stmt->v.AugAssign.target, Store) &&
+ validate_expr(state, stmt->v.AugAssign.value, Load);
+ break;
+ case AnnAssign_kind:
+ if (stmt->v.AnnAssign.target->kind != Name_kind &&
+ stmt->v.AnnAssign.simple) {
+ PyErr_SetString(PyExc_TypeError,
+ "AnnAssign with simple non-Name target");
+ return 0;
+ }
+ ret = validate_expr(state, stmt->v.AnnAssign.target, Store) &&
+ (!stmt->v.AnnAssign.value ||
+ validate_expr(state, stmt->v.AnnAssign.value, Load)) &&
+ validate_expr(state, stmt->v.AnnAssign.annotation, Load);
+ break;
+ case TypeAlias_kind:
+ if (stmt->v.TypeAlias.name->kind != Name_kind) {
+ PyErr_SetString(PyExc_TypeError,
+ "TypeAlias with non-Name name");
+ return 0;
+ }
+ ret = validate_expr(state, stmt->v.TypeAlias.name, Store) &&
+ validate_type_params(state, stmt->v.TypeAlias.type_params) &&
+ validate_expr(state, stmt->v.TypeAlias.value, Load);
+ break;
+ case For_kind:
+ ret = validate_expr(state, stmt->v.For.target, Store) &&
+ validate_expr(state, stmt->v.For.iter, Load) &&
+ validate_body(state, stmt->v.For.body, "For") &&
+ validate_stmts(state, stmt->v.For.orelse);
+ break;
+ case AsyncFor_kind:
+ ret = validate_expr(state, stmt->v.AsyncFor.target, Store) &&
+ validate_expr(state, stmt->v.AsyncFor.iter, Load) &&
+ validate_body(state, stmt->v.AsyncFor.body, "AsyncFor") &&
+ validate_stmts(state, stmt->v.AsyncFor.orelse);
+ break;
+ case While_kind:
+ ret = validate_expr(state, stmt->v.While.test, Load) &&
+ validate_body(state, stmt->v.While.body, "While") &&
+ validate_stmts(state, stmt->v.While.orelse);
+ break;
+ case If_kind:
+ ret = validate_expr(state, stmt->v.If.test, Load) &&
+ validate_body(state, stmt->v.If.body, "If") &&
+ validate_stmts(state, stmt->v.If.orelse);
+ break;
+ case With_kind:
+ if (!validate_nonempty_seq(stmt->v.With.items, "items", "With"))
+ return 0;
+ for (Py_ssize_t i = 0; i < asdl_seq_LEN(stmt->v.With.items); i++) {
+ withitem_ty item = asdl_seq_GET(stmt->v.With.items, i);
+ if (!validate_expr(state, item->context_expr, Load) ||
+ (item->optional_vars && !validate_expr(state, item->optional_vars, Store)))
+ return 0;
+ }
+ ret = validate_body(state, stmt->v.With.body, "With");
+ break;
+ case AsyncWith_kind:
+ if (!validate_nonempty_seq(stmt->v.AsyncWith.items, "items", "AsyncWith"))
+ return 0;
+ for (Py_ssize_t i = 0; i < asdl_seq_LEN(stmt->v.AsyncWith.items); i++) {
+ withitem_ty item = asdl_seq_GET(stmt->v.AsyncWith.items, i);
+ if (!validate_expr(state, item->context_expr, Load) ||
+ (item->optional_vars && !validate_expr(state, item->optional_vars, Store)))
+ return 0;
+ }
+ ret = validate_body(state, stmt->v.AsyncWith.body, "AsyncWith");
+ break;
+ case Match_kind:
+ if (!validate_expr(state, stmt->v.Match.subject, Load)
+ || !validate_nonempty_seq(stmt->v.Match.cases, "cases", "Match")) {
+ return 0;
+ }
+ for (Py_ssize_t i = 0; i < asdl_seq_LEN(stmt->v.Match.cases); i++) {
+ match_case_ty m = asdl_seq_GET(stmt->v.Match.cases, i);
+ if (!validate_pattern(state, m->pattern, /*star_ok=*/0)
+ || (m->guard && !validate_expr(state, m->guard, Load))
+ || !validate_body(state, m->body, "match_case")) {
+ return 0;
+ }
+ }
+ ret = 1;
+ break;
+ case Raise_kind:
+ if (stmt->v.Raise.exc) {
+ ret = validate_expr(state, stmt->v.Raise.exc, Load) &&
+ (!stmt->v.Raise.cause || validate_expr(state, stmt->v.Raise.cause, Load));
+ break;
+ }
+ if (stmt->v.Raise.cause) {
+ PyErr_SetString(PyExc_ValueError, "Raise with cause but no exception");
+ return 0;
+ }
+ ret = 1;
+ break;
+ case Try_kind:
+ if (!validate_body(state, stmt->v.Try.body, "Try"))
+ return 0;
+ if (!asdl_seq_LEN(stmt->v.Try.handlers) &&
+ !asdl_seq_LEN(stmt->v.Try.finalbody)) {
+ PyErr_SetString(PyExc_ValueError, "Try has neither except handlers nor finalbody");
+ return 0;
+ }
+ if (!asdl_seq_LEN(stmt->v.Try.handlers) &&
+ asdl_seq_LEN(stmt->v.Try.orelse)) {
+ PyErr_SetString(PyExc_ValueError, "Try has orelse but no except handlers");
+ return 0;
+ }
+ for (Py_ssize_t i = 0; i < asdl_seq_LEN(stmt->v.Try.handlers); i++) {
+ excepthandler_ty handler = asdl_seq_GET(stmt->v.Try.handlers, i);
+ VALIDATE_POSITIONS(handler);
+ if ((handler->v.ExceptHandler.type &&
+ !validate_expr(state, handler->v.ExceptHandler.type, Load)) ||
+ !validate_body(state, handler->v.ExceptHandler.body, "ExceptHandler"))
+ return 0;
+ }
+ ret = (!asdl_seq_LEN(stmt->v.Try.finalbody) ||
+ validate_stmts(state, stmt->v.Try.finalbody)) &&
+ (!asdl_seq_LEN(stmt->v.Try.orelse) ||
+ validate_stmts(state, stmt->v.Try.orelse));
+ break;
+ case TryStar_kind:
+ if (!validate_body(state, stmt->v.TryStar.body, "TryStar"))
+ return 0;
+ if (!asdl_seq_LEN(stmt->v.TryStar.handlers) &&
+ !asdl_seq_LEN(stmt->v.TryStar.finalbody)) {
+ PyErr_SetString(PyExc_ValueError, "TryStar has neither except handlers nor finalbody");
+ return 0;
+ }
+ if (!asdl_seq_LEN(stmt->v.TryStar.handlers) &&
+ asdl_seq_LEN(stmt->v.TryStar.orelse)) {
+ PyErr_SetString(PyExc_ValueError, "TryStar has orelse but no except handlers");
+ return 0;
+ }
+ for (Py_ssize_t i = 0; i < asdl_seq_LEN(stmt->v.TryStar.handlers); i++) {
+ excepthandler_ty handler = asdl_seq_GET(stmt->v.TryStar.handlers, i);
+ if ((handler->v.ExceptHandler.type &&
+ !validate_expr(state, handler->v.ExceptHandler.type, Load)) ||
+ !validate_body(state, handler->v.ExceptHandler.body, "ExceptHandler"))
+ return 0;
+ }
+ ret = (!asdl_seq_LEN(stmt->v.TryStar.finalbody) ||
+ validate_stmts(state, stmt->v.TryStar.finalbody)) &&
+ (!asdl_seq_LEN(stmt->v.TryStar.orelse) ||
+ validate_stmts(state, stmt->v.TryStar.orelse));
+ break;
+ case Assert_kind:
+ ret = validate_expr(state, stmt->v.Assert.test, Load) &&
+ (!stmt->v.Assert.msg || validate_expr(state, stmt->v.Assert.msg, Load));
+ break;
+ case Import_kind:
+ ret = validate_nonempty_seq(stmt->v.Import.names, "names", "Import");
+ break;
+ case ImportFrom_kind:
+ if (stmt->v.ImportFrom.level < 0) {
+ PyErr_SetString(PyExc_ValueError, "Negative ImportFrom level");
+ return 0;
+ }
+ ret = validate_nonempty_seq(stmt->v.ImportFrom.names, "names", "ImportFrom");
+ break;
+ case Global_kind:
+ ret = validate_nonempty_seq(stmt->v.Global.names, "names", "Global");
+ break;
+ case Nonlocal_kind:
+ ret = validate_nonempty_seq(stmt->v.Nonlocal.names, "names", "Nonlocal");
+ break;
+ case Expr_kind:
+ ret = validate_expr(state, stmt->v.Expr.value, Load);
+ break;
+ case AsyncFunctionDef_kind:
+ ret = validate_body(state, stmt->v.AsyncFunctionDef.body, "AsyncFunctionDef") &&
+ validate_type_params(state, stmt->v.AsyncFunctionDef.type_params) &&
+ validate_arguments(state, stmt->v.AsyncFunctionDef.args) &&
+ validate_exprs(state, stmt->v.AsyncFunctionDef.decorator_list, Load, 0) &&
+ (!stmt->v.AsyncFunctionDef.returns ||
+ validate_expr(state, stmt->v.AsyncFunctionDef.returns, Load));
+ break;
+ case Pass_kind:
+ case Break_kind:
+ case Continue_kind:
+ ret = 1;
+ break;
+ // No default case so compiler emits warning for unhandled cases
+ }
+ if (ret < 0) {
+ PyErr_SetString(PyExc_SystemError, "unexpected statement");
+ ret = 0;
+ }
+ state->recursion_depth--;
+ return ret;
+}
+
+static int
+validate_stmts(struct validator *state, asdl_stmt_seq *seq)
+{
+ assert(!PyErr_Occurred());
+ for (Py_ssize_t i = 0; i < asdl_seq_LEN(seq); i++) {
+ stmt_ty stmt = asdl_seq_GET(seq, i);
+ if (stmt) {
+ if (!validate_stmt(state, stmt))
+ return 0;
+ }
+ else {
+ PyErr_SetString(PyExc_ValueError,
+ "None disallowed in statement list");
+ return 0;
+ }
+ }
+ return 1;
+}
+
+static int
+validate_exprs(struct validator *state, asdl_expr_seq *exprs, expr_context_ty ctx, int null_ok)
+{
+ assert(!PyErr_Occurred());
+ for (Py_ssize_t i = 0; i < asdl_seq_LEN(exprs); i++) {
+ expr_ty expr = asdl_seq_GET(exprs, i);
+ if (expr) {
+ if (!validate_expr(state, expr, ctx))
+ return 0;
+ }
+ else if (!null_ok) {
+ PyErr_SetString(PyExc_ValueError,
+ "None disallowed in expression list");
+ return 0;
+ }
+
+ }
+ return 1;
+}
+
+static int
+validate_patterns(struct validator *state, asdl_pattern_seq *patterns, int star_ok)
+{
+ assert(!PyErr_Occurred());
+ for (Py_ssize_t i = 0; i < asdl_seq_LEN(patterns); i++) {
+ pattern_ty pattern = asdl_seq_GET(patterns, i);
+ if (!validate_pattern(state, pattern, star_ok)) {
+ return 0;
+ }
+ }
+ return 1;
+}
+
+static int
+validate_typeparam(struct validator *state, type_param_ty tp)
+{
+ VALIDATE_POSITIONS(tp);
+ int ret = -1;
+ switch (tp->kind) {
+ case TypeVar_kind:
+ ret = validate_name(tp->v.TypeVar.name) &&
+ (!tp->v.TypeVar.bound ||
+ validate_expr(state, tp->v.TypeVar.bound, Load));
+ break;
+ case ParamSpec_kind:
+ ret = validate_name(tp->v.ParamSpec.name);
+ break;
+ case TypeVarTuple_kind:
+ ret = validate_name(tp->v.TypeVarTuple.name);
+ break;
+ }
+ return ret;
+}
+
+static int
+validate_type_params(struct validator *state, asdl_type_param_seq *tps)
+{
+ Py_ssize_t i;
+ for (i = 0; i < asdl_seq_LEN(tps); i++) {
+ type_param_ty tp = asdl_seq_GET(tps, i);
+ if (tp) {
+ if (!validate_typeparam(state, tp))
+ return 0;
+ }
+ }
+ return 1;
+}
+
+
+/* See comments in symtable.c. */
+#define COMPILER_STACK_FRAME_SCALE 2
+
+int
+_PyAST_Validate(mod_ty mod)
+{
+ assert(!PyErr_Occurred());
+ int res = -1;
+ struct validator state;
+ PyThreadState *tstate;
+ int starting_recursion_depth;
+
+ /* Setup recursion depth check counters */
+ tstate = _PyThreadState_GET();
+ if (!tstate) {
+ return 0;
+ }
+ /* Be careful here to prevent overflow. */
+ int recursion_depth = C_RECURSION_LIMIT - tstate->c_recursion_remaining;
+ starting_recursion_depth = recursion_depth * COMPILER_STACK_FRAME_SCALE;
+ state.recursion_depth = starting_recursion_depth;
+ state.recursion_limit = C_RECURSION_LIMIT * COMPILER_STACK_FRAME_SCALE;
+
+ switch (mod->kind) {
+ case Module_kind:
+ res = validate_stmts(&state, mod->v.Module.body);
+ break;
+ case Interactive_kind:
+ res = validate_stmts(&state, mod->v.Interactive.body);
+ break;
+ case Expression_kind:
+ res = validate_expr(&state, mod->v.Expression.body, Load);
+ break;
+ case FunctionType_kind:
+ res = validate_exprs(&state, mod->v.FunctionType.argtypes, Load, /*null_ok=*/0) &&
+ validate_expr(&state, mod->v.FunctionType.returns, Load);
+ break;
+ // No default case so compiler emits warning for unhandled cases
+ }
+
+ if (res < 0) {
+ PyErr_SetString(PyExc_SystemError, "impossible module node");
+ return 0;
+ }
+
+ /* Check that the recursion depth counting balanced correctly */
+ if (res && state.recursion_depth != starting_recursion_depth) {
+ PyErr_Format(PyExc_SystemError,
+ "AST validator recursion depth mismatch (before=%d, after=%d)",
+ starting_recursion_depth, state.recursion_depth);
+ return 0;
+ }
+ return res;
+}
+
+PyObject *
+_PyAST_GetDocString(asdl_stmt_seq *body)
+{
+ if (!asdl_seq_LEN(body)) {
+ return NULL;
+ }
+ stmt_ty st = asdl_seq_GET(body, 0);
+ if (st->kind != Expr_kind) {
+ return NULL;
+ }
+ expr_ty e = st->v.Expr.value;
+ if (e->kind == Constant_kind && PyUnicode_CheckExact(e->v.Constant.value)) {
+ return e->v.Constant.value;
+ }
+ return NULL;
+}
diff --git a/contrib/tools/python3/Python/ast_opt.c b/contrib/tools/python3/Python/ast_opt.c
new file mode 100644
index 00000000000..f8c4a951323
--- /dev/null
+++ b/contrib/tools/python3/Python/ast_opt.c
@@ -0,0 +1,1137 @@
+/* AST Optimizer */
+#include "Python.h"
+#include "pycore_ast.h" // _PyAST_GetDocString()
+#include "pycore_compile.h" // _PyASTOptimizeState
+#include "pycore_long.h" // _PyLong
+#include "pycore_pystate.h" // _PyThreadState_GET()
+#include "pycore_format.h" // F_LJUST
+
+
+static int
+make_const(expr_ty node, PyObject *val, PyArena *arena)
+{
+ // Even if no new value was calculated, make_const may still
+ // need to clear an error (e.g. for division by zero)
+ if (val == NULL) {
+ if (PyErr_ExceptionMatches(PyExc_KeyboardInterrupt)) {
+ return 0;
+ }
+ PyErr_Clear();
+ return 1;
+ }
+ if (_PyArena_AddPyObject(arena, val) < 0) {
+ Py_DECREF(val);
+ return 0;
+ }
+ node->kind = Constant_kind;
+ node->v.Constant.kind = NULL;
+ node->v.Constant.value = val;
+ return 1;
+}
+
+#define COPY_NODE(TO, FROM) (memcpy((TO), (FROM), sizeof(struct _expr)))
+
+static int
+has_starred(asdl_expr_seq *elts)
+{
+ Py_ssize_t n = asdl_seq_LEN(elts);
+ for (Py_ssize_t i = 0; i < n; i++) {
+ expr_ty e = (expr_ty)asdl_seq_GET(elts, i);
+ if (e->kind == Starred_kind) {
+ return 1;
+ }
+ }
+ return 0;
+}
+
+
+static PyObject*
+unary_not(PyObject *v)
+{
+ int r = PyObject_IsTrue(v);
+ if (r < 0)
+ return NULL;
+ return PyBool_FromLong(!r);
+}
+
+static int
+fold_unaryop(expr_ty node, PyArena *arena, _PyASTOptimizeState *state)
+{
+ expr_ty arg = node->v.UnaryOp.operand;
+
+ if (arg->kind != Constant_kind) {
+ /* Fold not into comparison */
+ if (node->v.UnaryOp.op == Not && arg->kind == Compare_kind &&
+ asdl_seq_LEN(arg->v.Compare.ops) == 1) {
+ /* Eq and NotEq are often implemented in terms of one another, so
+ folding not (self == other) into self != other breaks implementation
+ of !=. Detecting such cases doesn't seem worthwhile.
+ Python uses </> for 'is subset'/'is superset' operations on sets.
+ They don't satisfy not folding laws. */
+ cmpop_ty op = asdl_seq_GET(arg->v.Compare.ops, 0);
+ switch (op) {
+ case Is:
+ op = IsNot;
+ break;
+ case IsNot:
+ op = Is;
+ break;
+ case In:
+ op = NotIn;
+ break;
+ case NotIn:
+ op = In;
+ break;
+ // The remaining comparison operators can't be safely inverted
+ case Eq:
+ case NotEq:
+ case Lt:
+ case LtE:
+ case Gt:
+ case GtE:
+ op = 0; // The AST enums leave "0" free as an "unused" marker
+ break;
+ // No default case, so the compiler will emit a warning if new
+ // comparison operators are added without being handled here
+ }
+ if (op) {
+ asdl_seq_SET(arg->v.Compare.ops, 0, op);
+ COPY_NODE(node, arg);
+ return 1;
+ }
+ }
+ return 1;
+ }
+
+ typedef PyObject *(*unary_op)(PyObject*);
+ static const unary_op ops[] = {
+ [Invert] = PyNumber_Invert,
+ [Not] = unary_not,
+ [UAdd] = PyNumber_Positive,
+ [USub] = PyNumber_Negative,
+ };
+ PyObject *newval = ops[node->v.UnaryOp.op](arg->v.Constant.value);
+ return make_const(node, newval, arena);
+}
+
+/* Check whether a collection doesn't containing too much items (including
+ subcollections). This protects from creating a constant that needs
+ too much time for calculating a hash.
+ "limit" is the maximal number of items.
+ Returns the negative number if the total number of items exceeds the
+ limit. Otherwise returns the limit minus the total number of items.
+*/
+
+static Py_ssize_t
+check_complexity(PyObject *obj, Py_ssize_t limit)
+{
+ if (PyTuple_Check(obj)) {
+ Py_ssize_t i;
+ limit -= PyTuple_GET_SIZE(obj);
+ for (i = 0; limit >= 0 && i < PyTuple_GET_SIZE(obj); i++) {
+ limit = check_complexity(PyTuple_GET_ITEM(obj, i), limit);
+ }
+ return limit;
+ }
+ else if (PyFrozenSet_Check(obj)) {
+ Py_ssize_t i = 0;
+ PyObject *item;
+ Py_hash_t hash;
+ limit -= PySet_GET_SIZE(obj);
+ while (limit >= 0 && _PySet_NextEntry(obj, &i, &item, &hash)) {
+ limit = check_complexity(item, limit);
+ }
+ }
+ return limit;
+}
+
+#define MAX_INT_SIZE 128 /* bits */
+#define MAX_COLLECTION_SIZE 256 /* items */
+#define MAX_STR_SIZE 4096 /* characters */
+#define MAX_TOTAL_ITEMS 1024 /* including nested collections */
+
+static PyObject *
+safe_multiply(PyObject *v, PyObject *w)
+{
+ if (PyLong_Check(v) && PyLong_Check(w) &&
+ !_PyLong_IsZero((PyLongObject *)v) && !_PyLong_IsZero((PyLongObject *)w)
+ ) {
+ size_t vbits = _PyLong_NumBits(v);
+ size_t wbits = _PyLong_NumBits(w);
+ if (vbits == (size_t)-1 || wbits == (size_t)-1) {
+ return NULL;
+ }
+ if (vbits + wbits > MAX_INT_SIZE) {
+ return NULL;
+ }
+ }
+ else if (PyLong_Check(v) && (PyTuple_Check(w) || PyFrozenSet_Check(w))) {
+ Py_ssize_t size = PyTuple_Check(w) ? PyTuple_GET_SIZE(w) :
+ PySet_GET_SIZE(w);
+ if (size) {
+ long n = PyLong_AsLong(v);
+ if (n < 0 || n > MAX_COLLECTION_SIZE / size) {
+ return NULL;
+ }
+ if (n && check_complexity(w, MAX_TOTAL_ITEMS / n) < 0) {
+ return NULL;
+ }
+ }
+ }
+ else if (PyLong_Check(v) && (PyUnicode_Check(w) || PyBytes_Check(w))) {
+ Py_ssize_t size = PyUnicode_Check(w) ? PyUnicode_GET_LENGTH(w) :
+ PyBytes_GET_SIZE(w);
+ if (size) {
+ long n = PyLong_AsLong(v);
+ if (n < 0 || n > MAX_STR_SIZE / size) {
+ return NULL;
+ }
+ }
+ }
+ else if (PyLong_Check(w) &&
+ (PyTuple_Check(v) || PyFrozenSet_Check(v) ||
+ PyUnicode_Check(v) || PyBytes_Check(v)))
+ {
+ return safe_multiply(w, v);
+ }
+
+ return PyNumber_Multiply(v, w);
+}
+
+static PyObject *
+safe_power(PyObject *v, PyObject *w)
+{
+ if (PyLong_Check(v) && PyLong_Check(w) &&
+ !_PyLong_IsZero((PyLongObject *)v) && _PyLong_IsPositive((PyLongObject *)w)
+ ) {
+ size_t vbits = _PyLong_NumBits(v);
+ size_t wbits = PyLong_AsSize_t(w);
+ if (vbits == (size_t)-1 || wbits == (size_t)-1) {
+ return NULL;
+ }
+ if (vbits > MAX_INT_SIZE / wbits) {
+ return NULL;
+ }
+ }
+
+ return PyNumber_Power(v, w, Py_None);
+}
+
+static PyObject *
+safe_lshift(PyObject *v, PyObject *w)
+{
+ if (PyLong_Check(v) && PyLong_Check(w) &&
+ !_PyLong_IsZero((PyLongObject *)v) && !_PyLong_IsZero((PyLongObject *)w)
+ ) {
+ size_t vbits = _PyLong_NumBits(v);
+ size_t wbits = PyLong_AsSize_t(w);
+ if (vbits == (size_t)-1 || wbits == (size_t)-1) {
+ return NULL;
+ }
+ if (wbits > MAX_INT_SIZE || vbits > MAX_INT_SIZE - wbits) {
+ return NULL;
+ }
+ }
+
+ return PyNumber_Lshift(v, w);
+}
+
+static PyObject *
+safe_mod(PyObject *v, PyObject *w)
+{
+ if (PyUnicode_Check(v) || PyBytes_Check(v)) {
+ return NULL;
+ }
+
+ return PyNumber_Remainder(v, w);
+}
+
+
+static expr_ty
+parse_literal(PyObject *fmt, Py_ssize_t *ppos, PyArena *arena)
+{
+ const void *data = PyUnicode_DATA(fmt);
+ int kind = PyUnicode_KIND(fmt);
+ Py_ssize_t size = PyUnicode_GET_LENGTH(fmt);
+ Py_ssize_t start, pos;
+ int has_percents = 0;
+ start = pos = *ppos;
+ while (pos < size) {
+ if (PyUnicode_READ(kind, data, pos) != '%') {
+ pos++;
+ }
+ else if (pos+1 < size && PyUnicode_READ(kind, data, pos+1) == '%') {
+ has_percents = 1;
+ pos += 2;
+ }
+ else {
+ break;
+ }
+ }
+ *ppos = pos;
+ if (pos == start) {
+ return NULL;
+ }
+ PyObject *str = PyUnicode_Substring(fmt, start, pos);
+ /* str = str.replace('%%', '%') */
+ if (str && has_percents) {
+ _Py_DECLARE_STR(percent, "%");
+ _Py_DECLARE_STR(dbl_percent, "%%");
+ Py_SETREF(str, PyUnicode_Replace(str, &_Py_STR(dbl_percent),
+ &_Py_STR(percent), -1));
+ }
+ if (!str) {
+ return NULL;
+ }
+
+ if (_PyArena_AddPyObject(arena, str) < 0) {
+ Py_DECREF(str);
+ return NULL;
+ }
+ return _PyAST_Constant(str, NULL, -1, -1, -1, -1, arena);
+}
+
+#define MAXDIGITS 3
+
+static int
+simple_format_arg_parse(PyObject *fmt, Py_ssize_t *ppos,
+ int *spec, int *flags, int *width, int *prec)
+{
+ Py_ssize_t pos = *ppos, len = PyUnicode_GET_LENGTH(fmt);
+ Py_UCS4 ch;
+
+#define NEXTC do { \
+ if (pos >= len) { \
+ return 0; \
+ } \
+ ch = PyUnicode_READ_CHAR(fmt, pos); \
+ pos++; \
+} while (0)
+
+ *flags = 0;
+ while (1) {
+ NEXTC;
+ switch (ch) {
+ case '-': *flags |= F_LJUST; continue;
+ case '+': *flags |= F_SIGN; continue;
+ case ' ': *flags |= F_BLANK; continue;
+ case '#': *flags |= F_ALT; continue;
+ case '0': *flags |= F_ZERO; continue;
+ }
+ break;
+ }
+ if ('0' <= ch && ch <= '9') {
+ *width = 0;
+ int digits = 0;
+ while ('0' <= ch && ch <= '9') {
+ *width = *width * 10 + (ch - '0');
+ NEXTC;
+ if (++digits >= MAXDIGITS) {
+ return 0;
+ }
+ }
+ }
+
+ if (ch == '.') {
+ NEXTC;
+ *prec = 0;
+ if ('0' <= ch && ch <= '9') {
+ int digits = 0;
+ while ('0' <= ch && ch <= '9') {
+ *prec = *prec * 10 + (ch - '0');
+ NEXTC;
+ if (++digits >= MAXDIGITS) {
+ return 0;
+ }
+ }
+ }
+ }
+ *spec = ch;
+ *ppos = pos;
+ return 1;
+
+#undef NEXTC
+}
+
+static expr_ty
+parse_format(PyObject *fmt, Py_ssize_t *ppos, expr_ty arg, PyArena *arena)
+{
+ int spec, flags, width = -1, prec = -1;
+ if (!simple_format_arg_parse(fmt, ppos, &spec, &flags, &width, &prec)) {
+ // Unsupported format.
+ return NULL;
+ }
+ if (spec == 's' || spec == 'r' || spec == 'a') {
+ char buf[1 + MAXDIGITS + 1 + MAXDIGITS + 1], *p = buf;
+ if (!(flags & F_LJUST) && width > 0) {
+ *p++ = '>';
+ }
+ if (width >= 0) {
+ p += snprintf(p, MAXDIGITS + 1, "%d", width);
+ }
+ if (prec >= 0) {
+ p += snprintf(p, MAXDIGITS + 2, ".%d", prec);
+ }
+ expr_ty format_spec = NULL;
+ if (p != buf) {
+ PyObject *str = PyUnicode_FromString(buf);
+ if (str == NULL) {
+ return NULL;
+ }
+ if (_PyArena_AddPyObject(arena, str) < 0) {
+ Py_DECREF(str);
+ return NULL;
+ }
+ format_spec = _PyAST_Constant(str, NULL, -1, -1, -1, -1, arena);
+ if (format_spec == NULL) {
+ return NULL;
+ }
+ }
+ return _PyAST_FormattedValue(arg, spec, format_spec,
+ arg->lineno, arg->col_offset,
+ arg->end_lineno, arg->end_col_offset,
+ arena);
+ }
+ // Unsupported format.
+ return NULL;
+}
+
+static int
+optimize_format(expr_ty node, PyObject *fmt, asdl_expr_seq *elts, PyArena *arena)
+{
+ Py_ssize_t pos = 0;
+ Py_ssize_t cnt = 0;
+ asdl_expr_seq *seq = _Py_asdl_expr_seq_new(asdl_seq_LEN(elts) * 2 + 1, arena);
+ if (!seq) {
+ return 0;
+ }
+ seq->size = 0;
+
+ while (1) {
+ expr_ty lit = parse_literal(fmt, &pos, arena);
+ if (lit) {
+ asdl_seq_SET(seq, seq->size++, lit);
+ }
+ else if (PyErr_Occurred()) {
+ return 0;
+ }
+
+ if (pos >= PyUnicode_GET_LENGTH(fmt)) {
+ break;
+ }
+ if (cnt >= asdl_seq_LEN(elts)) {
+ // More format units than items.
+ return 1;
+ }
+ assert(PyUnicode_READ_CHAR(fmt, pos) == '%');
+ pos++;
+ expr_ty expr = parse_format(fmt, &pos, asdl_seq_GET(elts, cnt), arena);
+ cnt++;
+ if (!expr) {
+ return !PyErr_Occurred();
+ }
+ asdl_seq_SET(seq, seq->size++, expr);
+ }
+ if (cnt < asdl_seq_LEN(elts)) {
+ // More items than format units.
+ return 1;
+ }
+ expr_ty res = _PyAST_JoinedStr(seq,
+ node->lineno, node->col_offset,
+ node->end_lineno, node->end_col_offset,
+ arena);
+ if (!res) {
+ return 0;
+ }
+ COPY_NODE(node, res);
+// PySys_FormatStderr("format = %R\n", fmt);
+ return 1;
+}
+
+static int
+fold_binop(expr_ty node, PyArena *arena, _PyASTOptimizeState *state)
+{
+ expr_ty lhs, rhs;
+ lhs = node->v.BinOp.left;
+ rhs = node->v.BinOp.right;
+ if (lhs->kind != Constant_kind) {
+ return 1;
+ }
+ PyObject *lv = lhs->v.Constant.value;
+
+ if (node->v.BinOp.op == Mod &&
+ rhs->kind == Tuple_kind &&
+ PyUnicode_Check(lv) &&
+ !has_starred(rhs->v.Tuple.elts))
+ {
+ return optimize_format(node, lv, rhs->v.Tuple.elts, arena);
+ }
+
+ if (rhs->kind != Constant_kind) {
+ return 1;
+ }
+
+ PyObject *rv = rhs->v.Constant.value;
+ PyObject *newval = NULL;
+
+ switch (node->v.BinOp.op) {
+ case Add:
+ newval = PyNumber_Add(lv, rv);
+ break;
+ case Sub:
+ newval = PyNumber_Subtract(lv, rv);
+ break;
+ case Mult:
+ newval = safe_multiply(lv, rv);
+ break;
+ case Div:
+ newval = PyNumber_TrueDivide(lv, rv);
+ break;
+ case FloorDiv:
+ newval = PyNumber_FloorDivide(lv, rv);
+ break;
+ case Mod:
+ newval = safe_mod(lv, rv);
+ break;
+ case Pow:
+ newval = safe_power(lv, rv);
+ break;
+ case LShift:
+ newval = safe_lshift(lv, rv);
+ break;
+ case RShift:
+ newval = PyNumber_Rshift(lv, rv);
+ break;
+ case BitOr:
+ newval = PyNumber_Or(lv, rv);
+ break;
+ case BitXor:
+ newval = PyNumber_Xor(lv, rv);
+ break;
+ case BitAnd:
+ newval = PyNumber_And(lv, rv);
+ break;
+ // No builtin constants implement the following operators
+ case MatMult:
+ return 1;
+ // No default case, so the compiler will emit a warning if new binary
+ // operators are added without being handled here
+ }
+
+ return make_const(node, newval, arena);
+}
+
+static PyObject*
+make_const_tuple(asdl_expr_seq *elts)
+{
+ for (int i = 0; i < asdl_seq_LEN(elts); i++) {
+ expr_ty e = (expr_ty)asdl_seq_GET(elts, i);
+ if (e->kind != Constant_kind) {
+ return NULL;
+ }
+ }
+
+ PyObject *newval = PyTuple_New(asdl_seq_LEN(elts));
+ if (newval == NULL) {
+ return NULL;
+ }
+
+ for (int i = 0; i < asdl_seq_LEN(elts); i++) {
+ expr_ty e = (expr_ty)asdl_seq_GET(elts, i);
+ PyObject *v = e->v.Constant.value;
+ PyTuple_SET_ITEM(newval, i, Py_NewRef(v));
+ }
+ return newval;
+}
+
+static int
+fold_tuple(expr_ty node, PyArena *arena, _PyASTOptimizeState *state)
+{
+ PyObject *newval;
+
+ if (node->v.Tuple.ctx != Load)
+ return 1;
+
+ newval = make_const_tuple(node->v.Tuple.elts);
+ return make_const(node, newval, arena);
+}
+
+static int
+fold_subscr(expr_ty node, PyArena *arena, _PyASTOptimizeState *state)
+{
+ PyObject *newval;
+ expr_ty arg, idx;
+
+ arg = node->v.Subscript.value;
+ idx = node->v.Subscript.slice;
+ if (node->v.Subscript.ctx != Load ||
+ arg->kind != Constant_kind ||
+ idx->kind != Constant_kind)
+ {
+ return 1;
+ }
+
+ newval = PyObject_GetItem(arg->v.Constant.value, idx->v.Constant.value);
+ return make_const(node, newval, arena);
+}
+
+/* Change literal list or set of constants into constant
+ tuple or frozenset respectively. Change literal list of
+ non-constants into tuple.
+ Used for right operand of "in" and "not in" tests and for iterable
+ in "for" loop and comprehensions.
+*/
+static int
+fold_iter(expr_ty arg, PyArena *arena, _PyASTOptimizeState *state)
+{
+ PyObject *newval;
+ if (arg->kind == List_kind) {
+ /* First change a list into tuple. */
+ asdl_expr_seq *elts = arg->v.List.elts;
+ if (has_starred(elts)) {
+ return 1;
+ }
+ expr_context_ty ctx = arg->v.List.ctx;
+ arg->kind = Tuple_kind;
+ arg->v.Tuple.elts = elts;
+ arg->v.Tuple.ctx = ctx;
+ /* Try to create a constant tuple. */
+ newval = make_const_tuple(elts);
+ }
+ else if (arg->kind == Set_kind) {
+ newval = make_const_tuple(arg->v.Set.elts);
+ if (newval) {
+ Py_SETREF(newval, PyFrozenSet_New(newval));
+ }
+ }
+ else {
+ return 1;
+ }
+ return make_const(arg, newval, arena);
+}
+
+static int
+fold_compare(expr_ty node, PyArena *arena, _PyASTOptimizeState *state)
+{
+ asdl_int_seq *ops;
+ asdl_expr_seq *args;
+ Py_ssize_t i;
+
+ ops = node->v.Compare.ops;
+ args = node->v.Compare.comparators;
+ /* Change literal list or set in 'in' or 'not in' into
+ tuple or frozenset respectively. */
+ i = asdl_seq_LEN(ops) - 1;
+ int op = asdl_seq_GET(ops, i);
+ if (op == In || op == NotIn) {
+ if (!fold_iter((expr_ty)asdl_seq_GET(args, i), arena, state)) {
+ return 0;
+ }
+ }
+ return 1;
+}
+
+static int astfold_mod(mod_ty node_, PyArena *ctx_, _PyASTOptimizeState *state);
+static int astfold_stmt(stmt_ty node_, PyArena *ctx_, _PyASTOptimizeState *state);
+static int astfold_expr(expr_ty node_, PyArena *ctx_, _PyASTOptimizeState *state);
+static int astfold_arguments(arguments_ty node_, PyArena *ctx_, _PyASTOptimizeState *state);
+static int astfold_comprehension(comprehension_ty node_, PyArena *ctx_, _PyASTOptimizeState *state);
+static int astfold_keyword(keyword_ty node_, PyArena *ctx_, _PyASTOptimizeState *state);
+static int astfold_arg(arg_ty node_, PyArena *ctx_, _PyASTOptimizeState *state);
+static int astfold_withitem(withitem_ty node_, PyArena *ctx_, _PyASTOptimizeState *state);
+static int astfold_excepthandler(excepthandler_ty node_, PyArena *ctx_, _PyASTOptimizeState *state);
+static int astfold_match_case(match_case_ty node_, PyArena *ctx_, _PyASTOptimizeState *state);
+static int astfold_pattern(pattern_ty node_, PyArena *ctx_, _PyASTOptimizeState *state);
+static int astfold_type_param(type_param_ty node_, PyArena *ctx_, _PyASTOptimizeState *state);
+
+#define CALL(FUNC, TYPE, ARG) \
+ if (!FUNC((ARG), ctx_, state)) \
+ return 0;
+
+#define CALL_OPT(FUNC, TYPE, ARG) \
+ if ((ARG) != NULL && !FUNC((ARG), ctx_, state)) \
+ return 0;
+
+#define CALL_SEQ(FUNC, TYPE, ARG) { \
+ int i; \
+ asdl_ ## TYPE ## _seq *seq = (ARG); /* avoid variable capture */ \
+ for (i = 0; i < asdl_seq_LEN(seq); i++) { \
+ TYPE ## _ty elt = (TYPE ## _ty)asdl_seq_GET(seq, i); \
+ if (elt != NULL && !FUNC(elt, ctx_, state)) \
+ return 0; \
+ } \
+}
+
+
+static int
+astfold_body(asdl_stmt_seq *stmts, PyArena *ctx_, _PyASTOptimizeState *state)
+{
+ int docstring = _PyAST_GetDocString(stmts) != NULL;
+ CALL_SEQ(astfold_stmt, stmt, stmts);
+ if (!docstring && _PyAST_GetDocString(stmts) != NULL) {
+ stmt_ty st = (stmt_ty)asdl_seq_GET(stmts, 0);
+ asdl_expr_seq *values = _Py_asdl_expr_seq_new(1, ctx_);
+ if (!values) {
+ return 0;
+ }
+ asdl_seq_SET(values, 0, st->v.Expr.value);
+ expr_ty expr = _PyAST_JoinedStr(values, st->lineno, st->col_offset,
+ st->end_lineno, st->end_col_offset,
+ ctx_);
+ if (!expr) {
+ return 0;
+ }
+ st->v.Expr.value = expr;
+ }
+ return 1;
+}
+
+static int
+astfold_mod(mod_ty node_, PyArena *ctx_, _PyASTOptimizeState *state)
+{
+ switch (node_->kind) {
+ case Module_kind:
+ CALL(astfold_body, asdl_seq, node_->v.Module.body);
+ break;
+ case Interactive_kind:
+ CALL_SEQ(astfold_stmt, stmt, node_->v.Interactive.body);
+ break;
+ case Expression_kind:
+ CALL(astfold_expr, expr_ty, node_->v.Expression.body);
+ break;
+ // The following top level nodes don't participate in constant folding
+ case FunctionType_kind:
+ break;
+ // No default case, so the compiler will emit a warning if new top level
+ // compilation nodes are added without being handled here
+ }
+ return 1;
+}
+
+static int
+astfold_expr(expr_ty node_, PyArena *ctx_, _PyASTOptimizeState *state)
+{
+ if (++state->recursion_depth > state->recursion_limit) {
+ PyErr_SetString(PyExc_RecursionError,
+ "maximum recursion depth exceeded during compilation");
+ return 0;
+ }
+ switch (node_->kind) {
+ case BoolOp_kind:
+ CALL_SEQ(astfold_expr, expr, node_->v.BoolOp.values);
+ break;
+ case BinOp_kind:
+ CALL(astfold_expr, expr_ty, node_->v.BinOp.left);
+ CALL(astfold_expr, expr_ty, node_->v.BinOp.right);
+ CALL(fold_binop, expr_ty, node_);
+ break;
+ case UnaryOp_kind:
+ CALL(astfold_expr, expr_ty, node_->v.UnaryOp.operand);
+ CALL(fold_unaryop, expr_ty, node_);
+ break;
+ case Lambda_kind:
+ CALL(astfold_arguments, arguments_ty, node_->v.Lambda.args);
+ CALL(astfold_expr, expr_ty, node_->v.Lambda.body);
+ break;
+ case IfExp_kind:
+ CALL(astfold_expr, expr_ty, node_->v.IfExp.test);
+ CALL(astfold_expr, expr_ty, node_->v.IfExp.body);
+ CALL(astfold_expr, expr_ty, node_->v.IfExp.orelse);
+ break;
+ case Dict_kind:
+ CALL_SEQ(astfold_expr, expr, node_->v.Dict.keys);
+ CALL_SEQ(astfold_expr, expr, node_->v.Dict.values);
+ break;
+ case Set_kind:
+ CALL_SEQ(astfold_expr, expr, node_->v.Set.elts);
+ break;
+ case ListComp_kind:
+ CALL(astfold_expr, expr_ty, node_->v.ListComp.elt);
+ CALL_SEQ(astfold_comprehension, comprehension, node_->v.ListComp.generators);
+ break;
+ case SetComp_kind:
+ CALL(astfold_expr, expr_ty, node_->v.SetComp.elt);
+ CALL_SEQ(astfold_comprehension, comprehension, node_->v.SetComp.generators);
+ break;
+ case DictComp_kind:
+ CALL(astfold_expr, expr_ty, node_->v.DictComp.key);
+ CALL(astfold_expr, expr_ty, node_->v.DictComp.value);
+ CALL_SEQ(astfold_comprehension, comprehension, node_->v.DictComp.generators);
+ break;
+ case GeneratorExp_kind:
+ CALL(astfold_expr, expr_ty, node_->v.GeneratorExp.elt);
+ CALL_SEQ(astfold_comprehension, comprehension, node_->v.GeneratorExp.generators);
+ break;
+ case Await_kind:
+ CALL(astfold_expr, expr_ty, node_->v.Await.value);
+ break;
+ case Yield_kind:
+ CALL_OPT(astfold_expr, expr_ty, node_->v.Yield.value);
+ break;
+ case YieldFrom_kind:
+ CALL(astfold_expr, expr_ty, node_->v.YieldFrom.value);
+ break;
+ case Compare_kind:
+ CALL(astfold_expr, expr_ty, node_->v.Compare.left);
+ CALL_SEQ(astfold_expr, expr, node_->v.Compare.comparators);
+ CALL(fold_compare, expr_ty, node_);
+ break;
+ case Call_kind:
+ CALL(astfold_expr, expr_ty, node_->v.Call.func);
+ CALL_SEQ(astfold_expr, expr, node_->v.Call.args);
+ CALL_SEQ(astfold_keyword, keyword, node_->v.Call.keywords);
+ break;
+ case FormattedValue_kind:
+ CALL(astfold_expr, expr_ty, node_->v.FormattedValue.value);
+ CALL_OPT(astfold_expr, expr_ty, node_->v.FormattedValue.format_spec);
+ break;
+ case JoinedStr_kind:
+ CALL_SEQ(astfold_expr, expr, node_->v.JoinedStr.values);
+ break;
+ case Attribute_kind:
+ CALL(astfold_expr, expr_ty, node_->v.Attribute.value);
+ break;
+ case Subscript_kind:
+ CALL(astfold_expr, expr_ty, node_->v.Subscript.value);
+ CALL(astfold_expr, expr_ty, node_->v.Subscript.slice);
+ CALL(fold_subscr, expr_ty, node_);
+ break;
+ case Starred_kind:
+ CALL(astfold_expr, expr_ty, node_->v.Starred.value);
+ break;
+ case Slice_kind:
+ CALL_OPT(astfold_expr, expr_ty, node_->v.Slice.lower);
+ CALL_OPT(astfold_expr, expr_ty, node_->v.Slice.upper);
+ CALL_OPT(astfold_expr, expr_ty, node_->v.Slice.step);
+ break;
+ case List_kind:
+ CALL_SEQ(astfold_expr, expr, node_->v.List.elts);
+ break;
+ case Tuple_kind:
+ CALL_SEQ(astfold_expr, expr, node_->v.Tuple.elts);
+ CALL(fold_tuple, expr_ty, node_);
+ break;
+ case Name_kind:
+ if (node_->v.Name.ctx == Load &&
+ _PyUnicode_EqualToASCIIString(node_->v.Name.id, "__debug__")) {
+ state->recursion_depth--;
+ return make_const(node_, PyBool_FromLong(!state->optimize), ctx_);
+ }
+ break;
+ case NamedExpr_kind:
+ CALL(astfold_expr, expr_ty, node_->v.NamedExpr.value);
+ break;
+ case Constant_kind:
+ // Already a constant, nothing further to do
+ break;
+ // No default case, so the compiler will emit a warning if new expression
+ // kinds are added without being handled here
+ }
+ state->recursion_depth--;
+ return 1;
+}
+
+static int
+astfold_keyword(keyword_ty node_, PyArena *ctx_, _PyASTOptimizeState *state)
+{
+ CALL(astfold_expr, expr_ty, node_->value);
+ return 1;
+}
+
+static int
+astfold_comprehension(comprehension_ty node_, PyArena *ctx_, _PyASTOptimizeState *state)
+{
+ CALL(astfold_expr, expr_ty, node_->target);
+ CALL(astfold_expr, expr_ty, node_->iter);
+ CALL_SEQ(astfold_expr, expr, node_->ifs);
+
+ CALL(fold_iter, expr_ty, node_->iter);
+ return 1;
+}
+
+static int
+astfold_arguments(arguments_ty node_, PyArena *ctx_, _PyASTOptimizeState *state)
+{
+ CALL_SEQ(astfold_arg, arg, node_->posonlyargs);
+ CALL_SEQ(astfold_arg, arg, node_->args);
+ CALL_OPT(astfold_arg, arg_ty, node_->vararg);
+ CALL_SEQ(astfold_arg, arg, node_->kwonlyargs);
+ CALL_SEQ(astfold_expr, expr, node_->kw_defaults);
+ CALL_OPT(astfold_arg, arg_ty, node_->kwarg);
+ CALL_SEQ(astfold_expr, expr, node_->defaults);
+ return 1;
+}
+
+static int
+astfold_arg(arg_ty node_, PyArena *ctx_, _PyASTOptimizeState *state)
+{
+ if (!(state->ff_features & CO_FUTURE_ANNOTATIONS)) {
+ CALL_OPT(astfold_expr, expr_ty, node_->annotation);
+ }
+ return 1;
+}
+
+static int
+astfold_stmt(stmt_ty node_, PyArena *ctx_, _PyASTOptimizeState *state)
+{
+ if (++state->recursion_depth > state->recursion_limit) {
+ PyErr_SetString(PyExc_RecursionError,
+ "maximum recursion depth exceeded during compilation");
+ return 0;
+ }
+ switch (node_->kind) {
+ case FunctionDef_kind:
+ CALL_SEQ(astfold_type_param, type_param, node_->v.FunctionDef.type_params);
+ CALL(astfold_arguments, arguments_ty, node_->v.FunctionDef.args);
+ CALL(astfold_body, asdl_seq, node_->v.FunctionDef.body);
+ CALL_SEQ(astfold_expr, expr, node_->v.FunctionDef.decorator_list);
+ if (!(state->ff_features & CO_FUTURE_ANNOTATIONS)) {
+ CALL_OPT(astfold_expr, expr_ty, node_->v.FunctionDef.returns);
+ }
+ break;
+ case AsyncFunctionDef_kind:
+ CALL_SEQ(astfold_type_param, type_param, node_->v.AsyncFunctionDef.type_params);
+ CALL(astfold_arguments, arguments_ty, node_->v.AsyncFunctionDef.args);
+ CALL(astfold_body, asdl_seq, node_->v.AsyncFunctionDef.body);
+ CALL_SEQ(astfold_expr, expr, node_->v.AsyncFunctionDef.decorator_list);
+ if (!(state->ff_features & CO_FUTURE_ANNOTATIONS)) {
+ CALL_OPT(astfold_expr, expr_ty, node_->v.AsyncFunctionDef.returns);
+ }
+ break;
+ case ClassDef_kind:
+ CALL_SEQ(astfold_type_param, type_param, node_->v.ClassDef.type_params);
+ CALL_SEQ(astfold_expr, expr, node_->v.ClassDef.bases);
+ CALL_SEQ(astfold_keyword, keyword, node_->v.ClassDef.keywords);
+ CALL(astfold_body, asdl_seq, node_->v.ClassDef.body);
+ CALL_SEQ(astfold_expr, expr, node_->v.ClassDef.decorator_list);
+ break;
+ case Return_kind:
+ CALL_OPT(astfold_expr, expr_ty, node_->v.Return.value);
+ break;
+ case Delete_kind:
+ CALL_SEQ(astfold_expr, expr, node_->v.Delete.targets);
+ break;
+ case Assign_kind:
+ CALL_SEQ(astfold_expr, expr, node_->v.Assign.targets);
+ CALL(astfold_expr, expr_ty, node_->v.Assign.value);
+ break;
+ case AugAssign_kind:
+ CALL(astfold_expr, expr_ty, node_->v.AugAssign.target);
+ CALL(astfold_expr, expr_ty, node_->v.AugAssign.value);
+ break;
+ case AnnAssign_kind:
+ CALL(astfold_expr, expr_ty, node_->v.AnnAssign.target);
+ if (!(state->ff_features & CO_FUTURE_ANNOTATIONS)) {
+ CALL(astfold_expr, expr_ty, node_->v.AnnAssign.annotation);
+ }
+ CALL_OPT(astfold_expr, expr_ty, node_->v.AnnAssign.value);
+ break;
+ case TypeAlias_kind:
+ CALL(astfold_expr, expr_ty, node_->v.TypeAlias.name);
+ CALL_SEQ(astfold_type_param, type_param, node_->v.TypeAlias.type_params);
+ CALL(astfold_expr, expr_ty, node_->v.TypeAlias.value);
+ break;
+ case For_kind:
+ CALL(astfold_expr, expr_ty, node_->v.For.target);
+ CALL(astfold_expr, expr_ty, node_->v.For.iter);
+ CALL_SEQ(astfold_stmt, stmt, node_->v.For.body);
+ CALL_SEQ(astfold_stmt, stmt, node_->v.For.orelse);
+
+ CALL(fold_iter, expr_ty, node_->v.For.iter);
+ break;
+ case AsyncFor_kind:
+ CALL(astfold_expr, expr_ty, node_->v.AsyncFor.target);
+ CALL(astfold_expr, expr_ty, node_->v.AsyncFor.iter);
+ CALL_SEQ(astfold_stmt, stmt, node_->v.AsyncFor.body);
+ CALL_SEQ(astfold_stmt, stmt, node_->v.AsyncFor.orelse);
+ break;
+ case While_kind:
+ CALL(astfold_expr, expr_ty, node_->v.While.test);
+ CALL_SEQ(astfold_stmt, stmt, node_->v.While.body);
+ CALL_SEQ(astfold_stmt, stmt, node_->v.While.orelse);
+ break;
+ case If_kind:
+ CALL(astfold_expr, expr_ty, node_->v.If.test);
+ CALL_SEQ(astfold_stmt, stmt, node_->v.If.body);
+ CALL_SEQ(astfold_stmt, stmt, node_->v.If.orelse);
+ break;
+ case With_kind:
+ CALL_SEQ(astfold_withitem, withitem, node_->v.With.items);
+ CALL_SEQ(astfold_stmt, stmt, node_->v.With.body);
+ break;
+ case AsyncWith_kind:
+ CALL_SEQ(astfold_withitem, withitem, node_->v.AsyncWith.items);
+ CALL_SEQ(astfold_stmt, stmt, node_->v.AsyncWith.body);
+ break;
+ case Raise_kind:
+ CALL_OPT(astfold_expr, expr_ty, node_->v.Raise.exc);
+ CALL_OPT(astfold_expr, expr_ty, node_->v.Raise.cause);
+ break;
+ case Try_kind:
+ CALL_SEQ(astfold_stmt, stmt, node_->v.Try.body);
+ CALL_SEQ(astfold_excepthandler, excepthandler, node_->v.Try.handlers);
+ CALL_SEQ(astfold_stmt, stmt, node_->v.Try.orelse);
+ CALL_SEQ(astfold_stmt, stmt, node_->v.Try.finalbody);
+ break;
+ case TryStar_kind:
+ CALL_SEQ(astfold_stmt, stmt, node_->v.TryStar.body);
+ CALL_SEQ(astfold_excepthandler, excepthandler, node_->v.TryStar.handlers);
+ CALL_SEQ(astfold_stmt, stmt, node_->v.TryStar.orelse);
+ CALL_SEQ(astfold_stmt, stmt, node_->v.TryStar.finalbody);
+ break;
+ case Assert_kind:
+ CALL(astfold_expr, expr_ty, node_->v.Assert.test);
+ CALL_OPT(astfold_expr, expr_ty, node_->v.Assert.msg);
+ break;
+ case Expr_kind:
+ CALL(astfold_expr, expr_ty, node_->v.Expr.value);
+ break;
+ case Match_kind:
+ CALL(astfold_expr, expr_ty, node_->v.Match.subject);
+ CALL_SEQ(astfold_match_case, match_case, node_->v.Match.cases);
+ break;
+ // The following statements don't contain any subexpressions to be folded
+ case Import_kind:
+ case ImportFrom_kind:
+ case Global_kind:
+ case Nonlocal_kind:
+ case Pass_kind:
+ case Break_kind:
+ case Continue_kind:
+ break;
+ // No default case, so the compiler will emit a warning if new statement
+ // kinds are added without being handled here
+ }
+ state->recursion_depth--;
+ return 1;
+}
+
+static int
+astfold_excepthandler(excepthandler_ty node_, PyArena *ctx_, _PyASTOptimizeState *state)
+{
+ switch (node_->kind) {
+ case ExceptHandler_kind:
+ CALL_OPT(astfold_expr, expr_ty, node_->v.ExceptHandler.type);
+ CALL_SEQ(astfold_stmt, stmt, node_->v.ExceptHandler.body);
+ break;
+ // No default case, so the compiler will emit a warning if new handler
+ // kinds are added without being handled here
+ }
+ return 1;
+}
+
+static int
+astfold_withitem(withitem_ty node_, PyArena *ctx_, _PyASTOptimizeState *state)
+{
+ CALL(astfold_expr, expr_ty, node_->context_expr);
+ CALL_OPT(astfold_expr, expr_ty, node_->optional_vars);
+ return 1;
+}
+
+static int
+astfold_pattern(pattern_ty node_, PyArena *ctx_, _PyASTOptimizeState *state)
+{
+ // Currently, this is really only used to form complex/negative numeric
+ // constants in MatchValue and MatchMapping nodes
+ // We still recurse into all subexpressions and subpatterns anyway
+ if (++state->recursion_depth > state->recursion_limit) {
+ PyErr_SetString(PyExc_RecursionError,
+ "maximum recursion depth exceeded during compilation");
+ return 0;
+ }
+ switch (node_->kind) {
+ case MatchValue_kind:
+ CALL(astfold_expr, expr_ty, node_->v.MatchValue.value);
+ break;
+ case MatchSingleton_kind:
+ break;
+ case MatchSequence_kind:
+ CALL_SEQ(astfold_pattern, pattern, node_->v.MatchSequence.patterns);
+ break;
+ case MatchMapping_kind:
+ CALL_SEQ(astfold_expr, expr, node_->v.MatchMapping.keys);
+ CALL_SEQ(astfold_pattern, pattern, node_->v.MatchMapping.patterns);
+ break;
+ case MatchClass_kind:
+ CALL(astfold_expr, expr_ty, node_->v.MatchClass.cls);
+ CALL_SEQ(astfold_pattern, pattern, node_->v.MatchClass.patterns);
+ CALL_SEQ(astfold_pattern, pattern, node_->v.MatchClass.kwd_patterns);
+ break;
+ case MatchStar_kind:
+ break;
+ case MatchAs_kind:
+ if (node_->v.MatchAs.pattern) {
+ CALL(astfold_pattern, pattern_ty, node_->v.MatchAs.pattern);
+ }
+ break;
+ case MatchOr_kind:
+ CALL_SEQ(astfold_pattern, pattern, node_->v.MatchOr.patterns);
+ break;
+ // No default case, so the compiler will emit a warning if new pattern
+ // kinds are added without being handled here
+ }
+ state->recursion_depth--;
+ return 1;
+}
+
+static int
+astfold_match_case(match_case_ty node_, PyArena *ctx_, _PyASTOptimizeState *state)
+{
+ CALL(astfold_pattern, expr_ty, node_->pattern);
+ CALL_OPT(astfold_expr, expr_ty, node_->guard);
+ CALL_SEQ(astfold_stmt, stmt, node_->body);
+ return 1;
+}
+
+static int
+astfold_type_param(type_param_ty node_, PyArena *ctx_, _PyASTOptimizeState *state)
+{
+ switch (node_->kind) {
+ case TypeVar_kind:
+ CALL_OPT(astfold_expr, expr_ty, node_->v.TypeVar.bound);
+ break;
+ case ParamSpec_kind:
+ break;
+ case TypeVarTuple_kind:
+ break;
+ }
+ return 1;
+}
+
+#undef CALL
+#undef CALL_OPT
+#undef CALL_SEQ
+
+/* See comments in symtable.c. */
+#define COMPILER_STACK_FRAME_SCALE 2
+
+int
+_PyAST_Optimize(mod_ty mod, PyArena *arena, _PyASTOptimizeState *state)
+{
+ PyThreadState *tstate;
+ int starting_recursion_depth;
+
+ /* Setup recursion depth check counters */
+ tstate = _PyThreadState_GET();
+ if (!tstate) {
+ return 0;
+ }
+ /* Be careful here to prevent overflow. */
+ int recursion_depth = C_RECURSION_LIMIT - tstate->c_recursion_remaining;
+ starting_recursion_depth = recursion_depth * COMPILER_STACK_FRAME_SCALE;
+ state->recursion_depth = starting_recursion_depth;
+ state->recursion_limit = C_RECURSION_LIMIT * COMPILER_STACK_FRAME_SCALE;
+
+ int ret = astfold_mod(mod, arena, state);
+ assert(ret || PyErr_Occurred());
+
+ /* Check that the recursion depth counting balanced correctly */
+ if (ret && state->recursion_depth != starting_recursion_depth) {
+ PyErr_Format(PyExc_SystemError,
+ "AST optimizer recursion depth mismatch (before=%d, after=%d)",
+ starting_recursion_depth, state->recursion_depth);
+ return 0;
+ }
+
+ return ret;
+}
diff --git a/contrib/tools/python3/Python/ast_unparse.c b/contrib/tools/python3/Python/ast_unparse.c
new file mode 100644
index 00000000000..8aff045101c
--- /dev/null
+++ b/contrib/tools/python3/Python/ast_unparse.c
@@ -0,0 +1,955 @@
+#include "Python.h"
+#include "pycore_ast.h" // expr_ty
+#include "pycore_pystate.h" // _PyInterpreterState_GET()
+#include "pycore_runtime.h" // _Py_ID()
+#include <float.h> // DBL_MAX_10_EXP
+#include <stdbool.h>
+
+/* This limited unparser is used to convert annotations back to strings
+ * during compilation rather than being a full AST unparser.
+ * See ast.unparse for a full unparser (written in Python)
+ */
+
+_Py_DECLARE_STR(open_br, "{");
+_Py_DECLARE_STR(dbl_open_br, "{{");
+_Py_DECLARE_STR(close_br, "}");
+_Py_DECLARE_STR(dbl_close_br, "}}");
+
+/* We would statically initialize this if doing so were simple enough. */
+#define _str_replace_inf(interp) \
+ _Py_INTERP_CACHED_OBJECT(interp, str_replace_inf)
+
+/* Forward declarations for recursion via helper functions. */
+static PyObject *
+expr_as_unicode(expr_ty e, int level);
+static int
+append_ast_expr(_PyUnicodeWriter *writer, expr_ty e, int level);
+static int
+append_joinedstr(_PyUnicodeWriter *writer, expr_ty e, bool is_format_spec);
+static int
+append_formattedvalue(_PyUnicodeWriter *writer, expr_ty e);
+static int
+append_ast_slice(_PyUnicodeWriter *writer, expr_ty e);
+
+static int
+append_charp(_PyUnicodeWriter *writer, const char *charp)
+{
+ return _PyUnicodeWriter_WriteASCIIString(writer, charp, -1);
+}
+
+#define APPEND_STR_FINISH(str) do { \
+ return append_charp(writer, (str)); \
+ } while (0)
+
+#define APPEND_STR(str) do { \
+ if (-1 == append_charp(writer, (str))) { \
+ return -1; \
+ } \
+ } while (0)
+
+#define APPEND_STR_IF(cond, str) do { \
+ if ((cond) && -1 == append_charp(writer, (str))) { \
+ return -1; \
+ } \
+ } while (0)
+
+#define APPEND_STR_IF_NOT_FIRST(str) do { \
+ APPEND_STR_IF(!first, (str)); \
+ first = false; \
+ } while (0)
+
+#define APPEND_EXPR(expr, pr) do { \
+ if (-1 == append_ast_expr(writer, (expr), (pr))) { \
+ return -1; \
+ } \
+ } while (0)
+
+#define APPEND(type, value) do { \
+ if (-1 == append_ast_ ## type(writer, (value))) { \
+ return -1; \
+ } \
+ } while (0)
+
+static int
+append_repr(_PyUnicodeWriter *writer, PyObject *obj)
+{
+ PyObject *repr = PyObject_Repr(obj);
+
+ if (!repr) {
+ return -1;
+ }
+
+ if ((PyFloat_CheckExact(obj) && Py_IS_INFINITY(PyFloat_AS_DOUBLE(obj))) ||
+ PyComplex_CheckExact(obj))
+ {
+ PyInterpreterState *interp = _PyInterpreterState_GET();
+ PyObject *new_repr = PyUnicode_Replace(
+ repr,
+ &_Py_ID(inf),
+ _str_replace_inf(interp),
+ -1
+ );
+ Py_DECREF(repr);
+ if (!new_repr) {
+ return -1;
+ }
+ repr = new_repr;
+ }
+ int ret = _PyUnicodeWriter_WriteStr(writer, repr);
+ Py_DECREF(repr);
+ return ret;
+}
+
+/* Priority levels */
+
+enum {
+ PR_TUPLE,
+ PR_TEST, /* 'if'-'else', 'lambda' */
+ PR_OR, /* 'or' */
+ PR_AND, /* 'and' */
+ PR_NOT, /* 'not' */
+ PR_CMP, /* '<', '>', '==', '>=', '<=', '!=',
+ 'in', 'not in', 'is', 'is not' */
+ PR_EXPR,
+ PR_BOR = PR_EXPR, /* '|' */
+ PR_BXOR, /* '^' */
+ PR_BAND, /* '&' */
+ PR_SHIFT, /* '<<', '>>' */
+ PR_ARITH, /* '+', '-' */
+ PR_TERM, /* '*', '@', '/', '%', '//' */
+ PR_FACTOR, /* unary '+', '-', '~' */
+ PR_POWER, /* '**' */
+ PR_AWAIT, /* 'await' */
+ PR_ATOM,
+};
+
+static int
+append_ast_boolop(_PyUnicodeWriter *writer, expr_ty e, int level)
+{
+ Py_ssize_t i, value_count;
+ asdl_expr_seq *values;
+ const char *op = (e->v.BoolOp.op == And) ? " and " : " or ";
+ int pr = (e->v.BoolOp.op == And) ? PR_AND : PR_OR;
+
+ APPEND_STR_IF(level > pr, "(");
+
+ values = e->v.BoolOp.values;
+ value_count = asdl_seq_LEN(values);
+
+ for (i = 0; i < value_count; ++i) {
+ APPEND_STR_IF(i > 0, op);
+ APPEND_EXPR((expr_ty)asdl_seq_GET(values, i), pr + 1);
+ }
+
+ APPEND_STR_IF(level > pr, ")");
+ return 0;
+}
+
+static int
+append_ast_binop(_PyUnicodeWriter *writer, expr_ty e, int level)
+{
+ const char *op;
+ int pr;
+ bool rassoc = false; /* is right-associative? */
+
+ switch (e->v.BinOp.op) {
+ case Add: op = " + "; pr = PR_ARITH; break;
+ case Sub: op = " - "; pr = PR_ARITH; break;
+ case Mult: op = " * "; pr = PR_TERM; break;
+ case MatMult: op = " @ "; pr = PR_TERM; break;
+ case Div: op = " / "; pr = PR_TERM; break;
+ case Mod: op = " % "; pr = PR_TERM; break;
+ case LShift: op = " << "; pr = PR_SHIFT; break;
+ case RShift: op = " >> "; pr = PR_SHIFT; break;
+ case BitOr: op = " | "; pr = PR_BOR; break;
+ case BitXor: op = " ^ "; pr = PR_BXOR; break;
+ case BitAnd: op = " & "; pr = PR_BAND; break;
+ case FloorDiv: op = " // "; pr = PR_TERM; break;
+ case Pow: op = " ** "; pr = PR_POWER; rassoc = true; break;
+ default:
+ PyErr_SetString(PyExc_SystemError,
+ "unknown binary operator");
+ return -1;
+ }
+
+ APPEND_STR_IF(level > pr, "(");
+ APPEND_EXPR(e->v.BinOp.left, pr + rassoc);
+ APPEND_STR(op);
+ APPEND_EXPR(e->v.BinOp.right, pr + !rassoc);
+ APPEND_STR_IF(level > pr, ")");
+ return 0;
+}
+
+static int
+append_ast_unaryop(_PyUnicodeWriter *writer, expr_ty e, int level)
+{
+ const char *op;
+ int pr;
+
+ switch (e->v.UnaryOp.op) {
+ case Invert: op = "~"; pr = PR_FACTOR; break;
+ case Not: op = "not "; pr = PR_NOT; break;
+ case UAdd: op = "+"; pr = PR_FACTOR; break;
+ case USub: op = "-"; pr = PR_FACTOR; break;
+ default:
+ PyErr_SetString(PyExc_SystemError,
+ "unknown unary operator");
+ return -1;
+ }
+
+ APPEND_STR_IF(level > pr, "(");
+ APPEND_STR(op);
+ APPEND_EXPR(e->v.UnaryOp.operand, pr);
+ APPEND_STR_IF(level > pr, ")");
+ return 0;
+}
+
+static int
+append_ast_arg(_PyUnicodeWriter *writer, arg_ty arg)
+{
+ if (-1 == _PyUnicodeWriter_WriteStr(writer, arg->arg)) {
+ return -1;
+ }
+ if (arg->annotation) {
+ APPEND_STR(": ");
+ APPEND_EXPR(arg->annotation, PR_TEST);
+ }
+ return 0;
+}
+
+static int
+append_ast_args(_PyUnicodeWriter *writer, arguments_ty args)
+{
+ bool first;
+ Py_ssize_t i, di, arg_count, posonlyarg_count, default_count;
+
+ first = true;
+
+ /* positional-only and positional arguments with defaults */
+ posonlyarg_count = asdl_seq_LEN(args->posonlyargs);
+ arg_count = asdl_seq_LEN(args->args);
+ default_count = asdl_seq_LEN(args->defaults);
+ for (i = 0; i < posonlyarg_count + arg_count; i++) {
+ APPEND_STR_IF_NOT_FIRST(", ");
+ if (i < posonlyarg_count){
+ APPEND(arg, (arg_ty)asdl_seq_GET(args->posonlyargs, i));
+ } else {
+ APPEND(arg, (arg_ty)asdl_seq_GET(args->args, i-posonlyarg_count));
+ }
+
+ di = i - posonlyarg_count - arg_count + default_count;
+ if (di >= 0) {
+ APPEND_STR("=");
+ APPEND_EXPR((expr_ty)asdl_seq_GET(args->defaults, di), PR_TEST);
+ }
+ if (posonlyarg_count && i + 1 == posonlyarg_count) {
+ APPEND_STR(", /");
+ }
+ }
+
+ /* vararg, or bare '*' if no varargs but keyword-only arguments present */
+ if (args->vararg || asdl_seq_LEN(args->kwonlyargs)) {
+ APPEND_STR_IF_NOT_FIRST(", ");
+ APPEND_STR("*");
+ if (args->vararg) {
+ APPEND(arg, args->vararg);
+ }
+ }
+
+ /* keyword-only arguments */
+ arg_count = asdl_seq_LEN(args->kwonlyargs);
+ default_count = asdl_seq_LEN(args->kw_defaults);
+ for (i = 0; i < arg_count; i++) {
+ APPEND_STR_IF_NOT_FIRST(", ");
+ APPEND(arg, (arg_ty)asdl_seq_GET(args->kwonlyargs, i));
+
+ di = i - arg_count + default_count;
+ if (di >= 0) {
+ expr_ty default_ = (expr_ty)asdl_seq_GET(args->kw_defaults, di);
+ if (default_) {
+ APPEND_STR("=");
+ APPEND_EXPR(default_, PR_TEST);
+ }
+ }
+ }
+
+ /* **kwargs */
+ if (args->kwarg) {
+ APPEND_STR_IF_NOT_FIRST(", ");
+ APPEND_STR("**");
+ APPEND(arg, args->kwarg);
+ }
+
+ return 0;
+}
+
+static int
+append_ast_lambda(_PyUnicodeWriter *writer, expr_ty e, int level)
+{
+ APPEND_STR_IF(level > PR_TEST, "(");
+ Py_ssize_t n_positional = (asdl_seq_LEN(e->v.Lambda.args->args) +
+ asdl_seq_LEN(e->v.Lambda.args->posonlyargs));
+ APPEND_STR(n_positional ? "lambda " : "lambda");
+ APPEND(args, e->v.Lambda.args);
+ APPEND_STR(": ");
+ APPEND_EXPR(e->v.Lambda.body, PR_TEST);
+ APPEND_STR_IF(level > PR_TEST, ")");
+ return 0;
+}
+
+static int
+append_ast_ifexp(_PyUnicodeWriter *writer, expr_ty e, int level)
+{
+ APPEND_STR_IF(level > PR_TEST, "(");
+ APPEND_EXPR(e->v.IfExp.body, PR_TEST + 1);
+ APPEND_STR(" if ");
+ APPEND_EXPR(e->v.IfExp.test, PR_TEST + 1);
+ APPEND_STR(" else ");
+ APPEND_EXPR(e->v.IfExp.orelse, PR_TEST);
+ APPEND_STR_IF(level > PR_TEST, ")");
+ return 0;
+}
+
+static int
+append_ast_dict(_PyUnicodeWriter *writer, expr_ty e)
+{
+ Py_ssize_t i, value_count;
+ expr_ty key_node;
+
+ APPEND_STR("{");
+ value_count = asdl_seq_LEN(e->v.Dict.values);
+
+ for (i = 0; i < value_count; i++) {
+ APPEND_STR_IF(i > 0, ", ");
+ key_node = (expr_ty)asdl_seq_GET(e->v.Dict.keys, i);
+ if (key_node != NULL) {
+ APPEND_EXPR(key_node, PR_TEST);
+ APPEND_STR(": ");
+ APPEND_EXPR((expr_ty)asdl_seq_GET(e->v.Dict.values, i), PR_TEST);
+ }
+ else {
+ APPEND_STR("**");
+ APPEND_EXPR((expr_ty)asdl_seq_GET(e->v.Dict.values, i), PR_EXPR);
+ }
+ }
+
+ APPEND_STR_FINISH("}");
+}
+
+static int
+append_ast_set(_PyUnicodeWriter *writer, expr_ty e)
+{
+ Py_ssize_t i, elem_count;
+
+ APPEND_STR("{");
+ elem_count = asdl_seq_LEN(e->v.Set.elts);
+ for (i = 0; i < elem_count; i++) {
+ APPEND_STR_IF(i > 0, ", ");
+ APPEND_EXPR((expr_ty)asdl_seq_GET(e->v.Set.elts, i), PR_TEST);
+ }
+
+ APPEND_STR_FINISH("}");
+}
+
+static int
+append_ast_list(_PyUnicodeWriter *writer, expr_ty e)
+{
+ Py_ssize_t i, elem_count;
+
+ APPEND_STR("[");
+ elem_count = asdl_seq_LEN(e->v.List.elts);
+ for (i = 0; i < elem_count; i++) {
+ APPEND_STR_IF(i > 0, ", ");
+ APPEND_EXPR((expr_ty)asdl_seq_GET(e->v.List.elts, i), PR_TEST);
+ }
+
+ APPEND_STR_FINISH("]");
+}
+
+static int
+append_ast_tuple(_PyUnicodeWriter *writer, expr_ty e, int level)
+{
+ Py_ssize_t i, elem_count;
+
+ elem_count = asdl_seq_LEN(e->v.Tuple.elts);
+
+ if (elem_count == 0) {
+ APPEND_STR_FINISH("()");
+ }
+
+ APPEND_STR_IF(level > PR_TUPLE, "(");
+
+ for (i = 0; i < elem_count; i++) {
+ APPEND_STR_IF(i > 0, ", ");
+ APPEND_EXPR((expr_ty)asdl_seq_GET(e->v.Tuple.elts, i), PR_TEST);
+ }
+
+ APPEND_STR_IF(elem_count == 1, ",");
+ APPEND_STR_IF(level > PR_TUPLE, ")");
+ return 0;
+}
+
+static int
+append_ast_comprehension(_PyUnicodeWriter *writer, comprehension_ty gen)
+{
+ Py_ssize_t i, if_count;
+
+ APPEND_STR(gen->is_async ? " async for " : " for ");
+ APPEND_EXPR(gen->target, PR_TUPLE);
+ APPEND_STR(" in ");
+ APPEND_EXPR(gen->iter, PR_TEST + 1);
+
+ if_count = asdl_seq_LEN(gen->ifs);
+ for (i = 0; i < if_count; i++) {
+ APPEND_STR(" if ");
+ APPEND_EXPR((expr_ty)asdl_seq_GET(gen->ifs, i), PR_TEST + 1);
+ }
+ return 0;
+}
+
+static int
+append_ast_comprehensions(_PyUnicodeWriter *writer, asdl_comprehension_seq *comprehensions)
+{
+ Py_ssize_t i, gen_count;
+ gen_count = asdl_seq_LEN(comprehensions);
+
+ for (i = 0; i < gen_count; i++) {
+ APPEND(comprehension, (comprehension_ty)asdl_seq_GET(comprehensions, i));
+ }
+
+ return 0;
+}
+
+static int
+append_ast_genexp(_PyUnicodeWriter *writer, expr_ty e)
+{
+ APPEND_STR("(");
+ APPEND_EXPR(e->v.GeneratorExp.elt, PR_TEST);
+ APPEND(comprehensions, e->v.GeneratorExp.generators);
+ APPEND_STR_FINISH(")");
+}
+
+static int
+append_ast_listcomp(_PyUnicodeWriter *writer, expr_ty e)
+{
+ APPEND_STR("[");
+ APPEND_EXPR(e->v.ListComp.elt, PR_TEST);
+ APPEND(comprehensions, e->v.ListComp.generators);
+ APPEND_STR_FINISH("]");
+}
+
+static int
+append_ast_setcomp(_PyUnicodeWriter *writer, expr_ty e)
+{
+ APPEND_STR("{");
+ APPEND_EXPR(e->v.SetComp.elt, PR_TEST);
+ APPEND(comprehensions, e->v.SetComp.generators);
+ APPEND_STR_FINISH("}");
+}
+
+static int
+append_ast_dictcomp(_PyUnicodeWriter *writer, expr_ty e)
+{
+ APPEND_STR("{");
+ APPEND_EXPR(e->v.DictComp.key, PR_TEST);
+ APPEND_STR(": ");
+ APPEND_EXPR(e->v.DictComp.value, PR_TEST);
+ APPEND(comprehensions, e->v.DictComp.generators);
+ APPEND_STR_FINISH("}");
+}
+
+static int
+append_ast_compare(_PyUnicodeWriter *writer, expr_ty e, int level)
+{
+ const char *op;
+ Py_ssize_t i, comparator_count;
+ asdl_expr_seq *comparators;
+ asdl_int_seq *ops;
+
+ APPEND_STR_IF(level > PR_CMP, "(");
+
+ comparators = e->v.Compare.comparators;
+ ops = e->v.Compare.ops;
+ comparator_count = asdl_seq_LEN(comparators);
+ assert(comparator_count > 0);
+ assert(comparator_count == asdl_seq_LEN(ops));
+
+ APPEND_EXPR(e->v.Compare.left, PR_CMP + 1);
+
+ for (i = 0; i < comparator_count; i++) {
+ switch ((cmpop_ty)asdl_seq_GET(ops, i)) {
+ case Eq:
+ op = " == ";
+ break;
+ case NotEq:
+ op = " != ";
+ break;
+ case Lt:
+ op = " < ";
+ break;
+ case LtE:
+ op = " <= ";
+ break;
+ case Gt:
+ op = " > ";
+ break;
+ case GtE:
+ op = " >= ";
+ break;
+ case Is:
+ op = " is ";
+ break;
+ case IsNot:
+ op = " is not ";
+ break;
+ case In:
+ op = " in ";
+ break;
+ case NotIn:
+ op = " not in ";
+ break;
+ default:
+ PyErr_SetString(PyExc_SystemError,
+ "unexpected comparison kind");
+ return -1;
+ }
+
+ APPEND_STR(op);
+ APPEND_EXPR((expr_ty)asdl_seq_GET(comparators, i), PR_CMP + 1);
+ }
+
+ APPEND_STR_IF(level > PR_CMP, ")");
+ return 0;
+}
+
+static int
+append_ast_keyword(_PyUnicodeWriter *writer, keyword_ty kw)
+{
+ if (kw->arg == NULL) {
+ APPEND_STR("**");
+ }
+ else {
+ if (-1 == _PyUnicodeWriter_WriteStr(writer, kw->arg)) {
+ return -1;
+ }
+
+ APPEND_STR("=");
+ }
+
+ APPEND_EXPR(kw->value, PR_TEST);
+ return 0;
+}
+
+static int
+append_ast_call(_PyUnicodeWriter *writer, expr_ty e)
+{
+ bool first;
+ Py_ssize_t i, arg_count, kw_count;
+ expr_ty expr;
+
+ APPEND_EXPR(e->v.Call.func, PR_ATOM);
+
+ arg_count = asdl_seq_LEN(e->v.Call.args);
+ kw_count = asdl_seq_LEN(e->v.Call.keywords);
+ if (arg_count == 1 && kw_count == 0) {
+ expr = (expr_ty)asdl_seq_GET(e->v.Call.args, 0);
+ if (expr->kind == GeneratorExp_kind) {
+ /* Special case: a single generator expression. */
+ return append_ast_genexp(writer, expr);
+ }
+ }
+
+ APPEND_STR("(");
+
+ first = true;
+ for (i = 0; i < arg_count; i++) {
+ APPEND_STR_IF_NOT_FIRST(", ");
+ APPEND_EXPR((expr_ty)asdl_seq_GET(e->v.Call.args, i), PR_TEST);
+ }
+
+ for (i = 0; i < kw_count; i++) {
+ APPEND_STR_IF_NOT_FIRST(", ");
+ APPEND(keyword, (keyword_ty)asdl_seq_GET(e->v.Call.keywords, i));
+ }
+
+ APPEND_STR_FINISH(")");
+}
+
+static PyObject *
+escape_braces(PyObject *orig)
+{
+ PyObject *temp;
+ PyObject *result;
+ temp = PyUnicode_Replace(orig, &_Py_STR(open_br), &_Py_STR(dbl_open_br), -1);
+ if (!temp) {
+ return NULL;
+ }
+ result = PyUnicode_Replace(temp, &_Py_STR(close_br), &_Py_STR(dbl_close_br), -1);
+ Py_DECREF(temp);
+ return result;
+}
+
+static int
+append_fstring_unicode(_PyUnicodeWriter *writer, PyObject *unicode)
+{
+ PyObject *escaped;
+ int result = -1;
+ escaped = escape_braces(unicode);
+ if (escaped) {
+ result = _PyUnicodeWriter_WriteStr(writer, escaped);
+ Py_DECREF(escaped);
+ }
+ return result;
+}
+
+static int
+append_fstring_element(_PyUnicodeWriter *writer, expr_ty e, bool is_format_spec)
+{
+ switch (e->kind) {
+ case Constant_kind:
+ return append_fstring_unicode(writer, e->v.Constant.value);
+ case JoinedStr_kind:
+ return append_joinedstr(writer, e, is_format_spec);
+ case FormattedValue_kind:
+ return append_formattedvalue(writer, e);
+ default:
+ PyErr_SetString(PyExc_SystemError,
+ "unknown expression kind inside f-string");
+ return -1;
+ }
+}
+
+/* Build body separately to enable wrapping the entire stream of Strs,
+ Constants and FormattedValues in one opening and one closing quote. */
+static PyObject *
+build_fstring_body(asdl_expr_seq *values, bool is_format_spec)
+{
+ Py_ssize_t i, value_count;
+ _PyUnicodeWriter body_writer;
+ _PyUnicodeWriter_Init(&body_writer);
+ body_writer.min_length = 256;
+ body_writer.overallocate = 1;
+
+ value_count = asdl_seq_LEN(values);
+ for (i = 0; i < value_count; ++i) {
+ if (-1 == append_fstring_element(&body_writer,
+ (expr_ty)asdl_seq_GET(values, i),
+ is_format_spec
+ )) {
+ _PyUnicodeWriter_Dealloc(&body_writer);
+ return NULL;
+ }
+ }
+
+ return _PyUnicodeWriter_Finish(&body_writer);
+}
+
+static int
+append_joinedstr(_PyUnicodeWriter *writer, expr_ty e, bool is_format_spec)
+{
+ int result = -1;
+ PyObject *body = build_fstring_body(e->v.JoinedStr.values, is_format_spec);
+ if (!body) {
+ return -1;
+ }
+
+ if (!is_format_spec) {
+ if (-1 != append_charp(writer, "f") &&
+ -1 != append_repr(writer, body))
+ {
+ result = 0;
+ }
+ }
+ else {
+ result = _PyUnicodeWriter_WriteStr(writer, body);
+ }
+ Py_DECREF(body);
+ return result;
+}
+
+static int
+append_formattedvalue(_PyUnicodeWriter *writer, expr_ty e)
+{
+ const char *conversion;
+ const char *outer_brace = "{";
+ /* Grammar allows PR_TUPLE, but use >PR_TEST for adding parenthesis
+ around a lambda with ':' */
+ PyObject *temp_fv_str = expr_as_unicode(e->v.FormattedValue.value, PR_TEST + 1);
+ if (!temp_fv_str) {
+ return -1;
+ }
+ if (PyUnicode_Find(temp_fv_str, &_Py_STR(open_br), 0, 1, 1) == 0) {
+ /* Expression starts with a brace, split it with a space from the outer
+ one. */
+ outer_brace = "{ ";
+ }
+ if (-1 == append_charp(writer, outer_brace)) {
+ Py_DECREF(temp_fv_str);
+ return -1;
+ }
+ if (-1 == _PyUnicodeWriter_WriteStr(writer, temp_fv_str)) {
+ Py_DECREF(temp_fv_str);
+ return -1;
+ }
+ Py_DECREF(temp_fv_str);
+
+ if (e->v.FormattedValue.conversion > 0) {
+ switch (e->v.FormattedValue.conversion) {
+ case 'a':
+ conversion = "!a";
+ break;
+ case 'r':
+ conversion = "!r";
+ break;
+ case 's':
+ conversion = "!s";
+ break;
+ default:
+ PyErr_SetString(PyExc_SystemError,
+ "unknown f-value conversion kind");
+ return -1;
+ }
+ APPEND_STR(conversion);
+ }
+ if (e->v.FormattedValue.format_spec) {
+ if (-1 == _PyUnicodeWriter_WriteASCIIString(writer, ":", 1) ||
+ -1 == append_fstring_element(writer,
+ e->v.FormattedValue.format_spec,
+ true
+ ))
+ {
+ return -1;
+ }
+ }
+
+ APPEND_STR_FINISH("}");
+}
+
+static int
+append_ast_constant(_PyUnicodeWriter *writer, PyObject *constant)
+{
+ if (PyTuple_CheckExact(constant)) {
+ Py_ssize_t i, elem_count;
+
+ elem_count = PyTuple_GET_SIZE(constant);
+ APPEND_STR("(");
+ for (i = 0; i < elem_count; i++) {
+ APPEND_STR_IF(i > 0, ", ");
+ if (append_ast_constant(writer, PyTuple_GET_ITEM(constant, i)) < 0) {
+ return -1;
+ }
+ }
+
+ APPEND_STR_IF(elem_count == 1, ",");
+ APPEND_STR(")");
+ return 0;
+ }
+ return append_repr(writer, constant);
+}
+
+static int
+append_ast_attribute(_PyUnicodeWriter *writer, expr_ty e)
+{
+ const char *period;
+ expr_ty v = e->v.Attribute.value;
+ APPEND_EXPR(v, PR_ATOM);
+
+ /* Special case: integers require a space for attribute access to be
+ unambiguous. */
+ if (v->kind == Constant_kind && PyLong_CheckExact(v->v.Constant.value)) {
+ period = " .";
+ }
+ else {
+ period = ".";
+ }
+ APPEND_STR(period);
+
+ return _PyUnicodeWriter_WriteStr(writer, e->v.Attribute.attr);
+}
+
+static int
+append_ast_slice(_PyUnicodeWriter *writer, expr_ty e)
+{
+ if (e->v.Slice.lower) {
+ APPEND_EXPR(e->v.Slice.lower, PR_TEST);
+ }
+
+ APPEND_STR(":");
+
+ if (e->v.Slice.upper) {
+ APPEND_EXPR(e->v.Slice.upper, PR_TEST);
+ }
+
+ if (e->v.Slice.step) {
+ APPEND_STR(":");
+ APPEND_EXPR(e->v.Slice.step, PR_TEST);
+ }
+ return 0;
+}
+
+static int
+append_ast_subscript(_PyUnicodeWriter *writer, expr_ty e)
+{
+ APPEND_EXPR(e->v.Subscript.value, PR_ATOM);
+ APPEND_STR("[");
+ APPEND_EXPR(e->v.Subscript.slice, PR_TUPLE);
+ APPEND_STR_FINISH("]");
+}
+
+static int
+append_ast_starred(_PyUnicodeWriter *writer, expr_ty e)
+{
+ APPEND_STR("*");
+ APPEND_EXPR(e->v.Starred.value, PR_EXPR);
+ return 0;
+}
+
+static int
+append_ast_yield(_PyUnicodeWriter *writer, expr_ty e)
+{
+ if (!e->v.Yield.value) {
+ APPEND_STR_FINISH("(yield)");
+ }
+
+ APPEND_STR("(yield ");
+ APPEND_EXPR(e->v.Yield.value, PR_TEST);
+ APPEND_STR_FINISH(")");
+}
+
+static int
+append_ast_yield_from(_PyUnicodeWriter *writer, expr_ty e)
+{
+ APPEND_STR("(yield from ");
+ APPEND_EXPR(e->v.YieldFrom.value, PR_TEST);
+ APPEND_STR_FINISH(")");
+}
+
+static int
+append_ast_await(_PyUnicodeWriter *writer, expr_ty e, int level)
+{
+ APPEND_STR_IF(level > PR_AWAIT, "(");
+ APPEND_STR("await ");
+ APPEND_EXPR(e->v.Await.value, PR_ATOM);
+ APPEND_STR_IF(level > PR_AWAIT, ")");
+ return 0;
+}
+
+static int
+append_named_expr(_PyUnicodeWriter *writer, expr_ty e, int level)
+{
+ APPEND_STR_IF(level > PR_TUPLE, "(");
+ APPEND_EXPR(e->v.NamedExpr.target, PR_ATOM);
+ APPEND_STR(" := ");
+ APPEND_EXPR(e->v.NamedExpr.value, PR_ATOM);
+ APPEND_STR_IF(level > PR_TUPLE, ")");
+ return 0;
+}
+
+static int
+append_ast_expr(_PyUnicodeWriter *writer, expr_ty e, int level)
+{
+ switch (e->kind) {
+ case BoolOp_kind:
+ return append_ast_boolop(writer, e, level);
+ case BinOp_kind:
+ return append_ast_binop(writer, e, level);
+ case UnaryOp_kind:
+ return append_ast_unaryop(writer, e, level);
+ case Lambda_kind:
+ return append_ast_lambda(writer, e, level);
+ case IfExp_kind:
+ return append_ast_ifexp(writer, e, level);
+ case Dict_kind:
+ return append_ast_dict(writer, e);
+ case Set_kind:
+ return append_ast_set(writer, e);
+ case GeneratorExp_kind:
+ return append_ast_genexp(writer, e);
+ case ListComp_kind:
+ return append_ast_listcomp(writer, e);
+ case SetComp_kind:
+ return append_ast_setcomp(writer, e);
+ case DictComp_kind:
+ return append_ast_dictcomp(writer, e);
+ case Yield_kind:
+ return append_ast_yield(writer, e);
+ case YieldFrom_kind:
+ return append_ast_yield_from(writer, e);
+ case Await_kind:
+ return append_ast_await(writer, e, level);
+ case Compare_kind:
+ return append_ast_compare(writer, e, level);
+ case Call_kind:
+ return append_ast_call(writer, e);
+ case Constant_kind:
+ if (e->v.Constant.value == Py_Ellipsis) {
+ APPEND_STR_FINISH("...");
+ }
+ if (e->v.Constant.kind != NULL
+ && -1 == _PyUnicodeWriter_WriteStr(writer, e->v.Constant.kind)) {
+ return -1;
+ }
+ return append_ast_constant(writer, e->v.Constant.value);
+ case JoinedStr_kind:
+ return append_joinedstr(writer, e, false);
+ case FormattedValue_kind:
+ return append_formattedvalue(writer, e);
+ /* The following exprs can be assignment targets. */
+ case Attribute_kind:
+ return append_ast_attribute(writer, e);
+ case Subscript_kind:
+ return append_ast_subscript(writer, e);
+ case Starred_kind:
+ return append_ast_starred(writer, e);
+ case Slice_kind:
+ return append_ast_slice(writer, e);
+ case Name_kind:
+ return _PyUnicodeWriter_WriteStr(writer, e->v.Name.id);
+ case List_kind:
+ return append_ast_list(writer, e);
+ case Tuple_kind:
+ return append_ast_tuple(writer, e, level);
+ case NamedExpr_kind:
+ return append_named_expr(writer, e, level);
+ // No default so compiler emits a warning for unhandled cases
+ }
+ PyErr_SetString(PyExc_SystemError,
+ "unknown expression kind");
+ return -1;
+}
+
+static int
+maybe_init_static_strings(void)
+{
+ PyInterpreterState *interp = _PyInterpreterState_GET();
+ if (_str_replace_inf(interp) == NULL) {
+ PyObject *tmp = PyUnicode_FromFormat("1e%d", 1 + DBL_MAX_10_EXP);
+ if (tmp == NULL) {
+ return -1;
+ }
+ _str_replace_inf(interp) = tmp;
+ }
+ return 0;
+}
+
+static PyObject *
+expr_as_unicode(expr_ty e, int level)
+{
+ _PyUnicodeWriter writer;
+ _PyUnicodeWriter_Init(&writer);
+ writer.min_length = 256;
+ writer.overallocate = 1;
+ if (-1 == maybe_init_static_strings() ||
+ -1 == append_ast_expr(&writer, e, level))
+ {
+ _PyUnicodeWriter_Dealloc(&writer);
+ return NULL;
+ }
+ return _PyUnicodeWriter_Finish(&writer);
+}
+
+PyObject *
+_PyAST_ExprAsUnicode(expr_ty e)
+{
+ return expr_as_unicode(e, PR_TEST);
+}
diff --git a/contrib/tools/python3/Python/bltinmodule.c b/contrib/tools/python3/Python/bltinmodule.c
new file mode 100644
index 00000000000..84fbc33a48c
--- /dev/null
+++ b/contrib/tools/python3/Python/bltinmodule.c
@@ -0,0 +1,3157 @@
+/* Built-in functions */
+
+#include "Python.h"
+#include <ctype.h>
+#include "pycore_ast.h" // _PyAST_Validate()
+#include "pycore_call.h" // _PyObject_CallNoArgs()
+#include "pycore_compile.h" // _PyAST_Compile()
+#include "pycore_long.h" // _PyLong_CompactValue
+#include "pycore_object.h" // _Py_AddToAllObjects()
+#include "pycore_pyerrors.h" // _PyErr_NoMemory()
+#include "pycore_pystate.h" // _PyThreadState_GET()
+#include "pycore_tuple.h" // _PyTuple_FromArray()
+#include "pycore_ceval.h" // _PyEval_Vector()
+
+#include "clinic/bltinmodule.c.h"
+
+static PyObject*
+update_bases(PyObject *bases, PyObject *const *args, Py_ssize_t nargs)
+{
+ Py_ssize_t i, j;
+ PyObject *base, *meth, *new_base, *result, *new_bases = NULL;
+ assert(PyTuple_Check(bases));
+
+ for (i = 0; i < nargs; i++) {
+ base = args[i];
+ if (PyType_Check(base)) {
+ if (new_bases) {
+ /* If we already have made a replacement, then we append every normal base,
+ otherwise just skip it. */
+ if (PyList_Append(new_bases, base) < 0) {
+ goto error;
+ }
+ }
+ continue;
+ }
+ if (_PyObject_LookupAttr(base, &_Py_ID(__mro_entries__), &meth) < 0) {
+ goto error;
+ }
+ if (!meth) {
+ if (new_bases) {
+ if (PyList_Append(new_bases, base) < 0) {
+ goto error;
+ }
+ }
+ continue;
+ }
+ new_base = PyObject_CallOneArg(meth, bases);
+ Py_DECREF(meth);
+ if (!new_base) {
+ goto error;
+ }
+ if (!PyTuple_Check(new_base)) {
+ PyErr_SetString(PyExc_TypeError,
+ "__mro_entries__ must return a tuple");
+ Py_DECREF(new_base);
+ goto error;
+ }
+ if (!new_bases) {
+ /* If this is a first successful replacement, create new_bases list and
+ copy previously encountered bases. */
+ if (!(new_bases = PyList_New(i))) {
+ Py_DECREF(new_base);
+ goto error;
+ }
+ for (j = 0; j < i; j++) {
+ base = args[j];
+ PyList_SET_ITEM(new_bases, j, Py_NewRef(base));
+ }
+ }
+ j = PyList_GET_SIZE(new_bases);
+ if (PyList_SetSlice(new_bases, j, j, new_base) < 0) {
+ Py_DECREF(new_base);
+ goto error;
+ }
+ Py_DECREF(new_base);
+ }
+ if (!new_bases) {
+ return bases;
+ }
+ result = PyList_AsTuple(new_bases);
+ Py_DECREF(new_bases);
+ return result;
+
+error:
+ Py_XDECREF(new_bases);
+ return NULL;
+}
+
+/* AC: cannot convert yet, waiting for *args support */
+static PyObject *
+builtin___build_class__(PyObject *self, PyObject *const *args, Py_ssize_t nargs,
+ PyObject *kwnames)
+{
+ PyObject *func, *name, *winner, *prep;
+ PyObject *cls = NULL, *cell = NULL, *ns = NULL, *meta = NULL, *orig_bases = NULL;
+ PyObject *mkw = NULL, *bases = NULL;
+ int isclass = 0; /* initialize to prevent gcc warning */
+
+ if (nargs < 2) {
+ PyErr_SetString(PyExc_TypeError,
+ "__build_class__: not enough arguments");
+ return NULL;
+ }
+ func = args[0]; /* Better be callable */
+ if (!PyFunction_Check(func)) {
+ PyErr_SetString(PyExc_TypeError,
+ "__build_class__: func must be a function");
+ return NULL;
+ }
+ name = args[1];
+ if (!PyUnicode_Check(name)) {
+ PyErr_SetString(PyExc_TypeError,
+ "__build_class__: name is not a string");
+ return NULL;
+ }
+ orig_bases = _PyTuple_FromArray(args + 2, nargs - 2);
+ if (orig_bases == NULL)
+ return NULL;
+
+ bases = update_bases(orig_bases, args + 2, nargs - 2);
+ if (bases == NULL) {
+ Py_DECREF(orig_bases);
+ return NULL;
+ }
+
+ if (kwnames == NULL) {
+ meta = NULL;
+ mkw = NULL;
+ }
+ else {
+ mkw = _PyStack_AsDict(args + nargs, kwnames);
+ if (mkw == NULL) {
+ goto error;
+ }
+
+ meta = _PyDict_GetItemWithError(mkw, &_Py_ID(metaclass));
+ if (meta != NULL) {
+ Py_INCREF(meta);
+ if (PyDict_DelItem(mkw, &_Py_ID(metaclass)) < 0) {
+ goto error;
+ }
+ /* metaclass is explicitly given, check if it's indeed a class */
+ isclass = PyType_Check(meta);
+ }
+ else if (PyErr_Occurred()) {
+ goto error;
+ }
+ }
+ if (meta == NULL) {
+ /* if there are no bases, use type: */
+ if (PyTuple_GET_SIZE(bases) == 0) {
+ meta = (PyObject *) (&PyType_Type);
+ }
+ /* else get the type of the first base */
+ else {
+ PyObject *base0 = PyTuple_GET_ITEM(bases, 0);
+ meta = (PyObject *)Py_TYPE(base0);
+ }
+ Py_INCREF(meta);
+ isclass = 1; /* meta is really a class */
+ }
+
+ if (isclass) {
+ /* meta is really a class, so check for a more derived
+ metaclass, or possible metaclass conflicts: */
+ winner = (PyObject *)_PyType_CalculateMetaclass((PyTypeObject *)meta,
+ bases);
+ if (winner == NULL) {
+ goto error;
+ }
+ if (winner != meta) {
+ Py_SETREF(meta, Py_NewRef(winner));
+ }
+ }
+ /* else: meta is not a class, so we cannot do the metaclass
+ calculation, so we will use the explicitly given object as it is */
+ if (_PyObject_LookupAttr(meta, &_Py_ID(__prepare__), &prep) < 0) {
+ ns = NULL;
+ }
+ else if (prep == NULL) {
+ ns = PyDict_New();
+ }
+ else {
+ PyObject *pargs[2] = {name, bases};
+ ns = PyObject_VectorcallDict(prep, pargs, 2, mkw);
+ Py_DECREF(prep);
+ }
+ if (ns == NULL) {
+ goto error;
+ }
+ if (!PyMapping_Check(ns)) {
+ PyErr_Format(PyExc_TypeError,
+ "%.200s.__prepare__() must return a mapping, not %.200s",
+ isclass ? ((PyTypeObject *)meta)->tp_name : "<metaclass>",
+ Py_TYPE(ns)->tp_name);
+ goto error;
+ }
+ PyThreadState *tstate = _PyThreadState_GET();
+ EVAL_CALL_STAT_INC(EVAL_CALL_BUILD_CLASS);
+ cell = _PyEval_Vector(tstate, (PyFunctionObject *)func, ns, NULL, 0, NULL);
+ if (cell != NULL) {
+ if (bases != orig_bases) {
+ if (PyMapping_SetItemString(ns, "__orig_bases__", orig_bases) < 0) {
+ goto error;
+ }
+ }
+ PyObject *margs[3] = {name, bases, ns};
+ cls = PyObject_VectorcallDict(meta, margs, 3, mkw);
+ if (cls != NULL && PyType_Check(cls) && PyCell_Check(cell)) {
+ PyObject *cell_cls = PyCell_GET(cell);
+ if (cell_cls != cls) {
+ if (cell_cls == NULL) {
+ const char *msg =
+ "__class__ not set defining %.200R as %.200R. "
+ "Was __classcell__ propagated to type.__new__?";
+ PyErr_Format(PyExc_RuntimeError, msg, name, cls);
+ } else {
+ const char *msg =
+ "__class__ set to %.200R defining %.200R as %.200R";
+ PyErr_Format(PyExc_TypeError, msg, cell_cls, name, cls);
+ }
+ Py_SETREF(cls, NULL);
+ goto error;
+ }
+ }
+ }
+error:
+ Py_XDECREF(cell);
+ Py_XDECREF(ns);
+ Py_XDECREF(meta);
+ Py_XDECREF(mkw);
+ if (bases != orig_bases) {
+ Py_DECREF(orig_bases);
+ }
+ Py_DECREF(bases);
+ return cls;
+}
+
+PyDoc_STRVAR(build_class_doc,
+"__build_class__(func, name, /, *bases, [metaclass], **kwds) -> class\n\
+\n\
+Internal helper function used by the class statement.");
+
+/*[clinic input]
+__import__ as builtin___import__
+
+ name: object
+ globals: object(c_default="NULL") = None
+ locals: object(c_default="NULL") = None
+ fromlist: object(c_default="NULL") = ()
+ level: int = 0
+
+Import a module.
+
+Because this function is meant for use by the Python
+interpreter and not for general use, it is better to use
+importlib.import_module() to programmatically import a module.
+
+The globals argument is only used to determine the context;
+they are not modified. The locals argument is unused. The fromlist
+should be a list of names to emulate ``from name import ...``, or an
+empty list to emulate ``import name``.
+When importing a module from a package, note that __import__('A.B', ...)
+returns package A when fromlist is empty, but its submodule B when
+fromlist is not empty. The level argument is used to determine whether to
+perform absolute or relative imports: 0 is absolute, while a positive number
+is the number of parent directories to search relative to the current module.
+[clinic start generated code]*/
+
+static PyObject *
+builtin___import___impl(PyObject *module, PyObject *name, PyObject *globals,
+ PyObject *locals, PyObject *fromlist, int level)
+/*[clinic end generated code: output=4febeda88a0cd245 input=73f4b960ea5b9dd6]*/
+{
+ return PyImport_ImportModuleLevelObject(name, globals, locals,
+ fromlist, level);
+}
+
+
+/*[clinic input]
+abs as builtin_abs
+
+ x: object
+ /
+
+Return the absolute value of the argument.
+[clinic start generated code]*/
+
+static PyObject *
+builtin_abs(PyObject *module, PyObject *x)
+/*[clinic end generated code: output=b1b433b9e51356f5 input=bed4ca14e29c20d1]*/
+{
+ return PyNumber_Absolute(x);
+}
+
+/*[clinic input]
+all as builtin_all
+
+ iterable: object
+ /
+
+Return True if bool(x) is True for all values x in the iterable.
+
+If the iterable is empty, return True.
+[clinic start generated code]*/
+
+static PyObject *
+builtin_all(PyObject *module, PyObject *iterable)
+/*[clinic end generated code: output=ca2a7127276f79b3 input=1a7c5d1bc3438a21]*/
+{
+ PyObject *it, *item;
+ PyObject *(*iternext)(PyObject *);
+ int cmp;
+
+ it = PyObject_GetIter(iterable);
+ if (it == NULL)
+ return NULL;
+ iternext = *Py_TYPE(it)->tp_iternext;
+
+ for (;;) {
+ item = iternext(it);
+ if (item == NULL)
+ break;
+ cmp = PyObject_IsTrue(item);
+ Py_DECREF(item);
+ if (cmp < 0) {
+ Py_DECREF(it);
+ return NULL;
+ }
+ if (cmp == 0) {
+ Py_DECREF(it);
+ Py_RETURN_FALSE;
+ }
+ }
+ Py_DECREF(it);
+ if (PyErr_Occurred()) {
+ if (PyErr_ExceptionMatches(PyExc_StopIteration))
+ PyErr_Clear();
+ else
+ return NULL;
+ }
+ Py_RETURN_TRUE;
+}
+
+/*[clinic input]
+any as builtin_any
+
+ iterable: object
+ /
+
+Return True if bool(x) is True for any x in the iterable.
+
+If the iterable is empty, return False.
+[clinic start generated code]*/
+
+static PyObject *
+builtin_any(PyObject *module, PyObject *iterable)
+/*[clinic end generated code: output=fa65684748caa60e input=41d7451c23384f24]*/
+{
+ PyObject *it, *item;
+ PyObject *(*iternext)(PyObject *);
+ int cmp;
+
+ it = PyObject_GetIter(iterable);
+ if (it == NULL)
+ return NULL;
+ iternext = *Py_TYPE(it)->tp_iternext;
+
+ for (;;) {
+ item = iternext(it);
+ if (item == NULL)
+ break;
+ cmp = PyObject_IsTrue(item);
+ Py_DECREF(item);
+ if (cmp < 0) {
+ Py_DECREF(it);
+ return NULL;
+ }
+ if (cmp > 0) {
+ Py_DECREF(it);
+ Py_RETURN_TRUE;
+ }
+ }
+ Py_DECREF(it);
+ if (PyErr_Occurred()) {
+ if (PyErr_ExceptionMatches(PyExc_StopIteration))
+ PyErr_Clear();
+ else
+ return NULL;
+ }
+ Py_RETURN_FALSE;
+}
+
+/*[clinic input]
+ascii as builtin_ascii
+
+ obj: object
+ /
+
+Return an ASCII-only representation of an object.
+
+As repr(), return a string containing a printable representation of an
+object, but escape the non-ASCII characters in the string returned by
+repr() using \\x, \\u or \\U escapes. This generates a string similar
+to that returned by repr() in Python 2.
+[clinic start generated code]*/
+
+static PyObject *
+builtin_ascii(PyObject *module, PyObject *obj)
+/*[clinic end generated code: output=6d37b3f0984c7eb9 input=4c62732e1b3a3cc9]*/
+{
+ return PyObject_ASCII(obj);
+}
+
+
+/*[clinic input]
+bin as builtin_bin
+
+ number: object
+ /
+
+Return the binary representation of an integer.
+
+ >>> bin(2796202)
+ '0b1010101010101010101010'
+[clinic start generated code]*/
+
+static PyObject *
+builtin_bin(PyObject *module, PyObject *number)
+/*[clinic end generated code: output=b6fc4ad5e649f4f7 input=53f8a0264bacaf90]*/
+{
+ return PyNumber_ToBase(number, 2);
+}
+
+
+/*[clinic input]
+callable as builtin_callable
+
+ obj: object
+ /
+
+Return whether the object is callable (i.e., some kind of function).
+
+Note that classes are callable, as are instances of classes with a
+__call__() method.
+[clinic start generated code]*/
+
+static PyObject *
+builtin_callable(PyObject *module, PyObject *obj)
+/*[clinic end generated code: output=2b095d59d934cb7e input=1423bab99cc41f58]*/
+{
+ return PyBool_FromLong((long)PyCallable_Check(obj));
+}
+
+static PyObject *
+builtin_breakpoint(PyObject *self, PyObject *const *args, Py_ssize_t nargs, PyObject *keywords)
+{
+ PyObject *hook = PySys_GetObject("breakpointhook");
+
+ if (hook == NULL) {
+ PyErr_SetString(PyExc_RuntimeError, "lost sys.breakpointhook");
+ return NULL;
+ }
+
+ if (PySys_Audit("builtins.breakpoint", "O", hook) < 0) {
+ return NULL;
+ }
+
+ Py_INCREF(hook);
+ PyObject *retval = PyObject_Vectorcall(hook, args, nargs, keywords);
+ Py_DECREF(hook);
+ return retval;
+}
+
+PyDoc_STRVAR(breakpoint_doc,
+"breakpoint(*args, **kws)\n\
+\n\
+Call sys.breakpointhook(*args, **kws). sys.breakpointhook() must accept\n\
+whatever arguments are passed.\n\
+\n\
+By default, this drops you into the pdb debugger.");
+
+typedef struct {
+ PyObject_HEAD
+ PyObject *func;
+ PyObject *it;
+} filterobject;
+
+static PyObject *
+filter_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
+{
+ PyObject *func, *seq;
+ PyObject *it;
+ filterobject *lz;
+
+ if ((type == &PyFilter_Type || type->tp_init == PyFilter_Type.tp_init) &&
+ !_PyArg_NoKeywords("filter", kwds))
+ return NULL;
+
+ if (!PyArg_UnpackTuple(args, "filter", 2, 2, &func, &seq))
+ return NULL;
+
+ /* Get iterator. */
+ it = PyObject_GetIter(seq);
+ if (it == NULL)
+ return NULL;
+
+ /* create filterobject structure */
+ lz = (filterobject *)type->tp_alloc(type, 0);
+ if (lz == NULL) {
+ Py_DECREF(it);
+ return NULL;
+ }
+
+ lz->func = Py_NewRef(func);
+ lz->it = it;
+
+ return (PyObject *)lz;
+}
+
+static PyObject *
+filter_vectorcall(PyObject *type, PyObject * const*args,
+ size_t nargsf, PyObject *kwnames)
+{
+ PyTypeObject *tp = _PyType_CAST(type);
+ if (tp == &PyFilter_Type && !_PyArg_NoKwnames("filter", kwnames)) {
+ return NULL;
+ }
+
+ Py_ssize_t nargs = PyVectorcall_NARGS(nargsf);
+ if (!_PyArg_CheckPositional("filter", nargs, 2, 2)) {
+ return NULL;
+ }
+
+ PyObject *it = PyObject_GetIter(args[1]);
+ if (it == NULL) {
+ return NULL;
+ }
+
+ filterobject *lz = (filterobject *)tp->tp_alloc(tp, 0);
+
+ if (lz == NULL) {
+ Py_DECREF(it);
+ return NULL;
+ }
+
+ lz->func = Py_NewRef(args[0]);
+ lz->it = it;
+
+ return (PyObject *)lz;
+}
+
+static void
+filter_dealloc(filterobject *lz)
+{
+ PyObject_GC_UnTrack(lz);
+ Py_TRASHCAN_BEGIN(lz, filter_dealloc)
+ Py_XDECREF(lz->func);
+ Py_XDECREF(lz->it);
+ Py_TYPE(lz)->tp_free(lz);
+ Py_TRASHCAN_END
+}
+
+static int
+filter_traverse(filterobject *lz, visitproc visit, void *arg)
+{
+ Py_VISIT(lz->it);
+ Py_VISIT(lz->func);
+ return 0;
+}
+
+static PyObject *
+filter_next(filterobject *lz)
+{
+ PyObject *item;
+ PyObject *it = lz->it;
+ long ok;
+ PyObject *(*iternext)(PyObject *);
+ int checktrue = lz->func == Py_None || lz->func == (PyObject *)&PyBool_Type;
+
+ iternext = *Py_TYPE(it)->tp_iternext;
+ for (;;) {
+ item = iternext(it);
+ if (item == NULL)
+ return NULL;
+
+ if (checktrue) {
+ ok = PyObject_IsTrue(item);
+ } else {
+ PyObject *good;
+ good = PyObject_CallOneArg(lz->func, item);
+ if (good == NULL) {
+ Py_DECREF(item);
+ return NULL;
+ }
+ ok = PyObject_IsTrue(good);
+ Py_DECREF(good);
+ }
+ if (ok > 0)
+ return item;
+ Py_DECREF(item);
+ if (ok < 0)
+ return NULL;
+ }
+}
+
+static PyObject *
+filter_reduce(filterobject *lz, PyObject *Py_UNUSED(ignored))
+{
+ return Py_BuildValue("O(OO)", Py_TYPE(lz), lz->func, lz->it);
+}
+
+PyDoc_STRVAR(reduce_doc, "Return state information for pickling.");
+
+static PyMethodDef filter_methods[] = {
+ {"__reduce__", _PyCFunction_CAST(filter_reduce), METH_NOARGS, reduce_doc},
+ {NULL, NULL} /* sentinel */
+};
+
+PyDoc_STRVAR(filter_doc,
+"filter(function or None, iterable) --> filter object\n\
+\n\
+Return an iterator yielding those items of iterable for which function(item)\n\
+is true. If function is None, return the items that are true.");
+
+PyTypeObject PyFilter_Type = {
+ PyVarObject_HEAD_INIT(&PyType_Type, 0)
+ "filter", /* tp_name */
+ sizeof(filterobject), /* tp_basicsize */
+ 0, /* tp_itemsize */
+ /* methods */
+ (destructor)filter_dealloc, /* tp_dealloc */
+ 0, /* tp_vectorcall_offset */
+ 0, /* tp_getattr */
+ 0, /* tp_setattr */
+ 0, /* tp_as_async */
+ 0, /* tp_repr */
+ 0, /* tp_as_number */
+ 0, /* tp_as_sequence */
+ 0, /* tp_as_mapping */
+ 0, /* tp_hash */
+ 0, /* tp_call */
+ 0, /* tp_str */
+ PyObject_GenericGetAttr, /* tp_getattro */
+ 0, /* tp_setattro */
+ 0, /* tp_as_buffer */
+ Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC |
+ Py_TPFLAGS_BASETYPE, /* tp_flags */
+ filter_doc, /* tp_doc */
+ (traverseproc)filter_traverse, /* tp_traverse */
+ 0, /* tp_clear */
+ 0, /* tp_richcompare */
+ 0, /* tp_weaklistoffset */
+ PyObject_SelfIter, /* tp_iter */
+ (iternextfunc)filter_next, /* tp_iternext */
+ filter_methods, /* tp_methods */
+ 0, /* tp_members */
+ 0, /* tp_getset */
+ 0, /* tp_base */
+ 0, /* tp_dict */
+ 0, /* tp_descr_get */
+ 0, /* tp_descr_set */
+ 0, /* tp_dictoffset */
+ 0, /* tp_init */
+ PyType_GenericAlloc, /* tp_alloc */
+ filter_new, /* tp_new */
+ PyObject_GC_Del, /* tp_free */
+ .tp_vectorcall = (vectorcallfunc)filter_vectorcall
+};
+
+
+/*[clinic input]
+format as builtin_format
+
+ value: object
+ format_spec: unicode(c_default="NULL") = ''
+ /
+
+Return type(value).__format__(value, format_spec)
+
+Many built-in types implement format_spec according to the
+Format Specification Mini-language. See help('FORMATTING').
+
+If type(value) does not supply a method named __format__
+and format_spec is empty, then str(value) is returned.
+See also help('SPECIALMETHODS').
+[clinic start generated code]*/
+
+static PyObject *
+builtin_format_impl(PyObject *module, PyObject *value, PyObject *format_spec)
+/*[clinic end generated code: output=2f40bdfa4954b077 input=45ef3934b86d5624]*/
+{
+ return PyObject_Format(value, format_spec);
+}
+
+/*[clinic input]
+chr as builtin_chr
+
+ i: int
+ /
+
+Return a Unicode string of one character with ordinal i; 0 <= i <= 0x10ffff.
+[clinic start generated code]*/
+
+static PyObject *
+builtin_chr_impl(PyObject *module, int i)
+/*[clinic end generated code: output=c733afcd200afcb7 input=3f604ef45a70750d]*/
+{
+ return PyUnicode_FromOrdinal(i);
+}
+
+
+/*[clinic input]
+compile as builtin_compile
+
+ source: object
+ filename: object(converter="PyUnicode_FSDecoder")
+ mode: str
+ flags: int = 0
+ dont_inherit: bool = False
+ optimize: int = -1
+ *
+ _feature_version as feature_version: int = -1
+
+Compile source into a code object that can be executed by exec() or eval().
+
+The source code may represent a Python module, statement or expression.
+The filename will be used for run-time error messages.
+The mode must be 'exec' to compile a module, 'single' to compile a
+single (interactive) statement, or 'eval' to compile an expression.
+The flags argument, if present, controls which future statements influence
+the compilation of the code.
+The dont_inherit argument, if true, stops the compilation inheriting
+the effects of any future statements in effect in the code calling
+compile; if absent or false these statements do influence the compilation,
+in addition to any features explicitly specified.
+[clinic start generated code]*/
+
+static PyObject *
+builtin_compile_impl(PyObject *module, PyObject *source, PyObject *filename,
+ const char *mode, int flags, int dont_inherit,
+ int optimize, int feature_version)
+/*[clinic end generated code: output=b0c09c84f116d3d7 input=cc78e20e7c7682ba]*/
+{
+ PyObject *source_copy;
+ const char *str;
+ int compile_mode = -1;
+ int is_ast;
+ int start[] = {Py_file_input, Py_eval_input, Py_single_input, Py_func_type_input};
+ PyObject *result;
+
+ PyCompilerFlags cf = _PyCompilerFlags_INIT;
+ cf.cf_flags = flags | PyCF_SOURCE_IS_UTF8;
+ if (feature_version >= 0 && (flags & PyCF_ONLY_AST)) {
+ cf.cf_feature_version = feature_version;
+ }
+
+ if (flags &
+ ~(PyCF_MASK | PyCF_MASK_OBSOLETE | PyCF_COMPILE_MASK))
+ {
+ PyErr_SetString(PyExc_ValueError,
+ "compile(): unrecognised flags");
+ goto error;
+ }
+ /* XXX Warn if (supplied_flags & PyCF_MASK_OBSOLETE) != 0? */
+
+ if (optimize < -1 || optimize > 2) {
+ PyErr_SetString(PyExc_ValueError,
+ "compile(): invalid optimize value");
+ goto error;
+ }
+
+ if (!dont_inherit) {
+ PyEval_MergeCompilerFlags(&cf);
+ }
+
+ if (strcmp(mode, "exec") == 0)
+ compile_mode = 0;
+ else if (strcmp(mode, "eval") == 0)
+ compile_mode = 1;
+ else if (strcmp(mode, "single") == 0)
+ compile_mode = 2;
+ else if (strcmp(mode, "func_type") == 0) {
+ if (!(flags & PyCF_ONLY_AST)) {
+ PyErr_SetString(PyExc_ValueError,
+ "compile() mode 'func_type' requires flag PyCF_ONLY_AST");
+ goto error;
+ }
+ compile_mode = 3;
+ }
+ else {
+ const char *msg;
+ if (flags & PyCF_ONLY_AST)
+ msg = "compile() mode must be 'exec', 'eval', 'single' or 'func_type'";
+ else
+ msg = "compile() mode must be 'exec', 'eval' or 'single'";
+ PyErr_SetString(PyExc_ValueError, msg);
+ goto error;
+ }
+
+ is_ast = PyAST_Check(source);
+ if (is_ast == -1)
+ goto error;
+ if (is_ast) {
+ if (flags & PyCF_ONLY_AST) {
+ result = Py_NewRef(source);
+ }
+ else {
+ PyArena *arena;
+ mod_ty mod;
+
+ arena = _PyArena_New();
+ if (arena == NULL)
+ goto error;
+ mod = PyAST_obj2mod(source, arena, compile_mode);
+ if (mod == NULL || !_PyAST_Validate(mod)) {
+ _PyArena_Free(arena);
+ goto error;
+ }
+ result = (PyObject*)_PyAST_Compile(mod, filename,
+ &cf, optimize, arena);
+ _PyArena_Free(arena);
+ }
+ goto finally;
+ }
+
+ str = _Py_SourceAsString(source, "compile", "string, bytes or AST", &cf, &source_copy);
+ if (str == NULL)
+ goto error;
+
+ result = Py_CompileStringObject(str, filename, start[compile_mode], &cf, optimize);
+
+ Py_XDECREF(source_copy);
+ goto finally;
+
+error:
+ result = NULL;
+finally:
+ Py_DECREF(filename);
+ return result;
+}
+
+/*[clinic input]
+dir as builtin_dir
+
+ arg: object = NULL
+ /
+
+Show attributes of an object.
+
+If called without an argument, return the names in the current scope.
+Else, return an alphabetized list of names comprising (some of) the attributes
+of the given object, and of attributes reachable from it.
+If the object supplies a method named __dir__, it will be used; otherwise
+the default dir() logic is used and returns:
+ for a module object: the module's attributes.
+ for a class object: its attributes, and recursively the attributes
+ of its bases.
+ for any other object: its attributes, its class's attributes, and
+ recursively the attributes of its class's base classes.
+[clinic start generated code]*/
+
+static PyObject *
+builtin_dir_impl(PyObject *module, PyObject *arg)
+/*[clinic end generated code: output=24f2c7a52c1e3b08 input=ed6d6ccb13d52251]*/
+{
+ return PyObject_Dir(arg);
+}
+
+/*[clinic input]
+divmod as builtin_divmod
+
+ x: object
+ y: object
+ /
+
+Return the tuple (x//y, x%y). Invariant: div*y + mod == x.
+[clinic start generated code]*/
+
+static PyObject *
+builtin_divmod_impl(PyObject *module, PyObject *x, PyObject *y)
+/*[clinic end generated code: output=b06d8a5f6e0c745e input=175ad9c84ff41a85]*/
+{
+ return PyNumber_Divmod(x, y);
+}
+
+
+/*[clinic input]
+eval as builtin_eval
+
+ source: object
+ globals: object = None
+ locals: object = None
+ /
+
+Evaluate the given source in the context of globals and locals.
+
+The source may be a string representing a Python expression
+or a code object as returned by compile().
+The globals must be a dictionary and locals can be any mapping,
+defaulting to the current globals and locals.
+If only globals is given, locals defaults to it.
+[clinic start generated code]*/
+
+static PyObject *
+builtin_eval_impl(PyObject *module, PyObject *source, PyObject *globals,
+ PyObject *locals)
+/*[clinic end generated code: output=0a0824aa70093116 input=11ee718a8640e527]*/
+{
+ PyObject *result = NULL, *source_copy;
+ const char *str;
+
+ if (locals != Py_None && !PyMapping_Check(locals)) {
+ PyErr_SetString(PyExc_TypeError, "locals must be a mapping");
+ return NULL;
+ }
+ if (globals != Py_None && !PyDict_Check(globals)) {
+ PyErr_SetString(PyExc_TypeError, PyMapping_Check(globals) ?
+ "globals must be a real dict; try eval(expr, {}, mapping)"
+ : "globals must be a dict");
+ return NULL;
+ }
+ if (globals == Py_None) {
+ globals = PyEval_GetGlobals();
+ if (locals == Py_None) {
+ locals = _PyEval_GetFrameLocals();
+ if (locals == NULL)
+ return NULL;
+ }
+ else {
+ Py_INCREF(locals);
+ }
+ }
+ else if (locals == Py_None)
+ locals = Py_NewRef(globals);
+ else {
+ Py_INCREF(locals);
+ }
+
+ if (globals == NULL || locals == NULL) {
+ PyErr_SetString(PyExc_TypeError,
+ "eval must be given globals and locals "
+ "when called without a frame");
+ goto error;
+ }
+
+ int r = PyDict_Contains(globals, &_Py_ID(__builtins__));
+ if (r == 0) {
+ r = PyDict_SetItem(globals, &_Py_ID(__builtins__), PyEval_GetBuiltins());
+ }
+ if (r < 0) {
+ goto error;
+ }
+
+ if (PyCode_Check(source)) {
+ if (PySys_Audit("exec", "O", source) < 0) {
+ goto error;
+ }
+
+ if (PyCode_GetNumFree((PyCodeObject *)source) > 0) {
+ PyErr_SetString(PyExc_TypeError,
+ "code object passed to eval() may not contain free variables");
+ goto error;
+ }
+ result = PyEval_EvalCode(source, globals, locals);
+ }
+ else {
+ PyCompilerFlags cf = _PyCompilerFlags_INIT;
+ cf.cf_flags = PyCF_SOURCE_IS_UTF8;
+ str = _Py_SourceAsString(source, "eval", "string, bytes or code", &cf, &source_copy);
+ if (str == NULL)
+ goto error;
+
+ while (*str == ' ' || *str == '\t')
+ str++;
+
+ (void)PyEval_MergeCompilerFlags(&cf);
+ result = PyRun_StringFlags(str, Py_eval_input, globals, locals, &cf);
+ Py_XDECREF(source_copy);
+ }
+
+ error:
+ Py_XDECREF(locals);
+ return result;
+}
+
+/*[clinic input]
+exec as builtin_exec
+
+ source: object
+ globals: object = None
+ locals: object = None
+ /
+ *
+ closure: object(c_default="NULL") = None
+
+Execute the given source in the context of globals and locals.
+
+The source may be a string representing one or more Python statements
+or a code object as returned by compile().
+The globals must be a dictionary and locals can be any mapping,
+defaulting to the current globals and locals.
+If only globals is given, locals defaults to it.
+The closure must be a tuple of cellvars, and can only be used
+when source is a code object requiring exactly that many cellvars.
+[clinic start generated code]*/
+
+static PyObject *
+builtin_exec_impl(PyObject *module, PyObject *source, PyObject *globals,
+ PyObject *locals, PyObject *closure)
+/*[clinic end generated code: output=7579eb4e7646743d input=f13a7e2b503d1d9a]*/
+{
+ PyObject *v;
+
+ if (globals == Py_None) {
+ globals = PyEval_GetGlobals();
+ if (locals == Py_None) {
+ locals = _PyEval_GetFrameLocals();
+ if (locals == NULL)
+ return NULL;
+ }
+ else {
+ Py_INCREF(locals);
+ }
+ if (!globals || !locals) {
+ PyErr_SetString(PyExc_SystemError,
+ "globals and locals cannot be NULL");
+ return NULL;
+ }
+ }
+ else if (locals == Py_None) {
+ locals = Py_NewRef(globals);
+ }
+ else {
+ Py_INCREF(locals);
+ }
+
+ if (!PyDict_Check(globals)) {
+ PyErr_Format(PyExc_TypeError, "exec() globals must be a dict, not %.100s",
+ Py_TYPE(globals)->tp_name);
+ goto error;
+ }
+ if (!PyMapping_Check(locals)) {
+ PyErr_Format(PyExc_TypeError,
+ "locals must be a mapping or None, not %.100s",
+ Py_TYPE(locals)->tp_name);
+ goto error;
+ }
+ int r = PyDict_Contains(globals, &_Py_ID(__builtins__));
+ if (r == 0) {
+ r = PyDict_SetItem(globals, &_Py_ID(__builtins__), PyEval_GetBuiltins());
+ }
+ if (r < 0) {
+ goto error;
+ }
+
+ if (closure == Py_None) {
+ closure = NULL;
+ }
+
+ if (PyCode_Check(source)) {
+ Py_ssize_t num_free = PyCode_GetNumFree((PyCodeObject *)source);
+ if (num_free == 0) {
+ if (closure) {
+ PyErr_SetString(PyExc_TypeError,
+ "cannot use a closure with this code object");
+ goto error;
+ }
+ } else {
+ int closure_is_ok =
+ closure
+ && PyTuple_CheckExact(closure)
+ && (PyTuple_GET_SIZE(closure) == num_free);
+ if (closure_is_ok) {
+ for (Py_ssize_t i = 0; i < num_free; i++) {
+ PyObject *cell = PyTuple_GET_ITEM(closure, i);
+ if (!PyCell_Check(cell)) {
+ closure_is_ok = 0;
+ break;
+ }
+ }
+ }
+ if (!closure_is_ok) {
+ PyErr_Format(PyExc_TypeError,
+ "code object requires a closure of exactly length %zd",
+ num_free);
+ goto error;
+ }
+ }
+
+ if (PySys_Audit("exec", "O", source) < 0) {
+ goto error;
+ }
+
+ if (!closure) {
+ v = PyEval_EvalCode(source, globals, locals);
+ } else {
+ v = PyEval_EvalCodeEx(source, globals, locals,
+ NULL, 0,
+ NULL, 0,
+ NULL, 0,
+ NULL,
+ closure);
+ }
+ }
+ else {
+ if (closure != NULL) {
+ PyErr_SetString(PyExc_TypeError,
+ "closure can only be used when source is a code object");
+ }
+ PyObject *source_copy;
+ const char *str;
+ PyCompilerFlags cf = _PyCompilerFlags_INIT;
+ cf.cf_flags = PyCF_SOURCE_IS_UTF8;
+ str = _Py_SourceAsString(source, "exec",
+ "string, bytes or code", &cf,
+ &source_copy);
+ if (str == NULL)
+ goto error;
+ if (PyEval_MergeCompilerFlags(&cf))
+ v = PyRun_StringFlags(str, Py_file_input, globals,
+ locals, &cf);
+ else
+ v = PyRun_String(str, Py_file_input, globals, locals);
+ Py_XDECREF(source_copy);
+ }
+ if (v == NULL)
+ goto error;
+ Py_DECREF(locals);
+ Py_DECREF(v);
+ Py_RETURN_NONE;
+
+ error:
+ Py_XDECREF(locals);
+ return NULL;
+}
+
+
+/*[clinic input]
+getattr as builtin_getattr
+
+ object: object
+ name: object
+ default: object = NULL
+ /
+
+Get a named attribute from an object.
+
+getattr(x, 'y') is equivalent to x.y
+When a default argument is given, it is returned when the attribute doesn't
+exist; without it, an exception is raised in that case.
+[clinic start generated code]*/
+
+static PyObject *
+builtin_getattr_impl(PyObject *module, PyObject *object, PyObject *name,
+ PyObject *default_value)
+/*[clinic end generated code: output=74ad0e225e3f701c input=d7562cd4c3556171]*/
+{
+ PyObject *result;
+
+ if (default_value != NULL) {
+ if (_PyObject_LookupAttr(object, name, &result) == 0) {
+ return Py_NewRef(default_value);
+ }
+ }
+ else {
+ result = PyObject_GetAttr(object, name);
+ }
+ return result;
+}
+
+
+/*[clinic input]
+globals as builtin_globals
+
+Return the dictionary containing the current scope's global variables.
+
+NOTE: Updates to this dictionary *will* affect name lookups in the current
+global scope and vice-versa.
+[clinic start generated code]*/
+
+static PyObject *
+builtin_globals_impl(PyObject *module)
+/*[clinic end generated code: output=e5dd1527067b94d2 input=9327576f92bb48ba]*/
+{
+ PyObject *d;
+
+ d = PyEval_GetGlobals();
+ return Py_XNewRef(d);
+}
+
+
+/*[clinic input]
+hasattr as builtin_hasattr
+
+ obj: object
+ name: object
+ /
+
+Return whether the object has an attribute with the given name.
+
+This is done by calling getattr(obj, name) and catching AttributeError.
+[clinic start generated code]*/
+
+static PyObject *
+builtin_hasattr_impl(PyObject *module, PyObject *obj, PyObject *name)
+/*[clinic end generated code: output=a7aff2090a4151e5 input=0faec9787d979542]*/
+{
+ PyObject *v;
+
+ if (_PyObject_LookupAttr(obj, name, &v) < 0) {
+ return NULL;
+ }
+ if (v == NULL) {
+ Py_RETURN_FALSE;
+ }
+ Py_DECREF(v);
+ Py_RETURN_TRUE;
+}
+
+
+/* AC: gdb's integration with CPython relies on builtin_id having
+ * the *exact* parameter names of "self" and "v", so we ensure we
+ * preserve those name rather than using the AC defaults.
+ */
+/*[clinic input]
+id as builtin_id
+
+ self: self(type="PyModuleDef *")
+ obj as v: object
+ /
+
+Return the identity of an object.
+
+This is guaranteed to be unique among simultaneously existing objects.
+(CPython uses the object's memory address.)
+[clinic start generated code]*/
+
+static PyObject *
+builtin_id(PyModuleDef *self, PyObject *v)
+/*[clinic end generated code: output=0aa640785f697f65 input=5a534136419631f4]*/
+{
+ PyObject *id = PyLong_FromVoidPtr(v);
+
+ if (id && PySys_Audit("builtins.id", "O", id) < 0) {
+ Py_DECREF(id);
+ return NULL;
+ }
+
+ return id;
+}
+
+
+/* map object ************************************************************/
+
+typedef struct {
+ PyObject_HEAD
+ PyObject *iters;
+ PyObject *func;
+} mapobject;
+
+static PyObject *
+map_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
+{
+ PyObject *it, *iters, *func;
+ mapobject *lz;
+ Py_ssize_t numargs, i;
+
+ if ((type == &PyMap_Type || type->tp_init == PyMap_Type.tp_init) &&
+ !_PyArg_NoKeywords("map", kwds))
+ return NULL;
+
+ numargs = PyTuple_Size(args);
+ if (numargs < 2) {
+ PyErr_SetString(PyExc_TypeError,
+ "map() must have at least two arguments.");
+ return NULL;
+ }
+
+ iters = PyTuple_New(numargs-1);
+ if (iters == NULL)
+ return NULL;
+
+ for (i=1 ; i<numargs ; i++) {
+ /* Get iterator. */
+ it = PyObject_GetIter(PyTuple_GET_ITEM(args, i));
+ if (it == NULL) {
+ Py_DECREF(iters);
+ return NULL;
+ }
+ PyTuple_SET_ITEM(iters, i-1, it);
+ }
+
+ /* create mapobject structure */
+ lz = (mapobject *)type->tp_alloc(type, 0);
+ if (lz == NULL) {
+ Py_DECREF(iters);
+ return NULL;
+ }
+ lz->iters = iters;
+ func = PyTuple_GET_ITEM(args, 0);
+ lz->func = Py_NewRef(func);
+
+ return (PyObject *)lz;
+}
+
+static PyObject *
+map_vectorcall(PyObject *type, PyObject * const*args,
+ size_t nargsf, PyObject *kwnames)
+{
+ PyTypeObject *tp = _PyType_CAST(type);
+ if (tp == &PyMap_Type && !_PyArg_NoKwnames("map", kwnames)) {
+ return NULL;
+ }
+
+ Py_ssize_t nargs = PyVectorcall_NARGS(nargsf);
+ if (nargs < 2) {
+ PyErr_SetString(PyExc_TypeError,
+ "map() must have at least two arguments.");
+ return NULL;
+ }
+
+ PyObject *iters = PyTuple_New(nargs-1);
+ if (iters == NULL) {
+ return NULL;
+ }
+
+ for (int i=1; i<nargs; i++) {
+ PyObject *it = PyObject_GetIter(args[i]);
+ if (it == NULL) {
+ Py_DECREF(iters);
+ return NULL;
+ }
+ PyTuple_SET_ITEM(iters, i-1, it);
+ }
+
+ mapobject *lz = (mapobject *)tp->tp_alloc(tp, 0);
+ if (lz == NULL) {
+ Py_DECREF(iters);
+ return NULL;
+ }
+ lz->iters = iters;
+ lz->func = Py_NewRef(args[0]);
+
+ return (PyObject *)lz;
+}
+
+static void
+map_dealloc(mapobject *lz)
+{
+ PyObject_GC_UnTrack(lz);
+ Py_XDECREF(lz->iters);
+ Py_XDECREF(lz->func);
+ Py_TYPE(lz)->tp_free(lz);
+}
+
+static int
+map_traverse(mapobject *lz, visitproc visit, void *arg)
+{
+ Py_VISIT(lz->iters);
+ Py_VISIT(lz->func);
+ return 0;
+}
+
+static PyObject *
+map_next(mapobject *lz)
+{
+ PyObject *small_stack[_PY_FASTCALL_SMALL_STACK];
+ PyObject **stack;
+ PyObject *result = NULL;
+ PyThreadState *tstate = _PyThreadState_GET();
+
+ const Py_ssize_t niters = PyTuple_GET_SIZE(lz->iters);
+ if (niters <= (Py_ssize_t)Py_ARRAY_LENGTH(small_stack)) {
+ stack = small_stack;
+ }
+ else {
+ stack = PyMem_Malloc(niters * sizeof(stack[0]));
+ if (stack == NULL) {
+ _PyErr_NoMemory(tstate);
+ return NULL;
+ }
+ }
+
+ Py_ssize_t nargs = 0;
+ for (Py_ssize_t i=0; i < niters; i++) {
+ PyObject *it = PyTuple_GET_ITEM(lz->iters, i);
+ PyObject *val = Py_TYPE(it)->tp_iternext(it);
+ if (val == NULL) {
+ goto exit;
+ }
+ stack[i] = val;
+ nargs++;
+ }
+
+ result = _PyObject_VectorcallTstate(tstate, lz->func, stack, nargs, NULL);
+
+exit:
+ for (Py_ssize_t i=0; i < nargs; i++) {
+ Py_DECREF(stack[i]);
+ }
+ if (stack != small_stack) {
+ PyMem_Free(stack);
+ }
+ return result;
+}
+
+static PyObject *
+map_reduce(mapobject *lz, PyObject *Py_UNUSED(ignored))
+{
+ Py_ssize_t numargs = PyTuple_GET_SIZE(lz->iters);
+ PyObject *args = PyTuple_New(numargs+1);
+ Py_ssize_t i;
+ if (args == NULL)
+ return NULL;
+ PyTuple_SET_ITEM(args, 0, Py_NewRef(lz->func));
+ for (i = 0; i<numargs; i++){
+ PyObject *it = PyTuple_GET_ITEM(lz->iters, i);
+ PyTuple_SET_ITEM(args, i+1, Py_NewRef(it));
+ }
+
+ return Py_BuildValue("ON", Py_TYPE(lz), args);
+}
+
+static PyMethodDef map_methods[] = {
+ {"__reduce__", _PyCFunction_CAST(map_reduce), METH_NOARGS, reduce_doc},
+ {NULL, NULL} /* sentinel */
+};
+
+
+PyDoc_STRVAR(map_doc,
+"map(func, *iterables) --> map object\n\
+\n\
+Make an iterator that computes the function using arguments from\n\
+each of the iterables. Stops when the shortest iterable is exhausted.");
+
+PyTypeObject PyMap_Type = {
+ PyVarObject_HEAD_INIT(&PyType_Type, 0)
+ "map", /* tp_name */
+ sizeof(mapobject), /* tp_basicsize */
+ 0, /* tp_itemsize */
+ /* methods */
+ (destructor)map_dealloc, /* tp_dealloc */
+ 0, /* tp_vectorcall_offset */
+ 0, /* tp_getattr */
+ 0, /* tp_setattr */
+ 0, /* tp_as_async */
+ 0, /* tp_repr */
+ 0, /* tp_as_number */
+ 0, /* tp_as_sequence */
+ 0, /* tp_as_mapping */
+ 0, /* tp_hash */
+ 0, /* tp_call */
+ 0, /* tp_str */
+ PyObject_GenericGetAttr, /* tp_getattro */
+ 0, /* tp_setattro */
+ 0, /* tp_as_buffer */
+ Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC |
+ Py_TPFLAGS_BASETYPE, /* tp_flags */
+ map_doc, /* tp_doc */
+ (traverseproc)map_traverse, /* tp_traverse */
+ 0, /* tp_clear */
+ 0, /* tp_richcompare */
+ 0, /* tp_weaklistoffset */
+ PyObject_SelfIter, /* tp_iter */
+ (iternextfunc)map_next, /* tp_iternext */
+ map_methods, /* tp_methods */
+ 0, /* tp_members */
+ 0, /* tp_getset */
+ 0, /* tp_base */
+ 0, /* tp_dict */
+ 0, /* tp_descr_get */
+ 0, /* tp_descr_set */
+ 0, /* tp_dictoffset */
+ 0, /* tp_init */
+ PyType_GenericAlloc, /* tp_alloc */
+ map_new, /* tp_new */
+ PyObject_GC_Del, /* tp_free */
+ .tp_vectorcall = (vectorcallfunc)map_vectorcall
+};
+
+
+/*[clinic input]
+next as builtin_next
+
+ iterator: object
+ default: object = NULL
+ /
+
+Return the next item from the iterator.
+
+If default is given and the iterator is exhausted,
+it is returned instead of raising StopIteration.
+[clinic start generated code]*/
+
+static PyObject *
+builtin_next_impl(PyObject *module, PyObject *iterator,
+ PyObject *default_value)
+/*[clinic end generated code: output=a38a94eeb447fef9 input=180f9984f182020f]*/
+{
+ PyObject *res;
+
+ if (!PyIter_Check(iterator)) {
+ PyErr_Format(PyExc_TypeError,
+ "'%.200s' object is not an iterator",
+ Py_TYPE(iterator)->tp_name);
+ return NULL;
+ }
+
+ res = (*Py_TYPE(iterator)->tp_iternext)(iterator);
+ if (res != NULL) {
+ return res;
+ } else if (default_value != NULL) {
+ if (PyErr_Occurred()) {
+ if(!PyErr_ExceptionMatches(PyExc_StopIteration))
+ return NULL;
+ PyErr_Clear();
+ }
+ return Py_NewRef(default_value);
+ } else if (PyErr_Occurred()) {
+ return NULL;
+ } else {
+ PyErr_SetNone(PyExc_StopIteration);
+ return NULL;
+ }
+}
+
+
+/*[clinic input]
+setattr as builtin_setattr
+
+ obj: object
+ name: object
+ value: object
+ /
+
+Sets the named attribute on the given object to the specified value.
+
+setattr(x, 'y', v) is equivalent to ``x.y = v``
+[clinic start generated code]*/
+
+static PyObject *
+builtin_setattr_impl(PyObject *module, PyObject *obj, PyObject *name,
+ PyObject *value)
+/*[clinic end generated code: output=dc2ce1d1add9acb4 input=5e26417f2e8598d4]*/
+{
+ if (PyObject_SetAttr(obj, name, value) != 0)
+ return NULL;
+ Py_RETURN_NONE;
+}
+
+
+/*[clinic input]
+delattr as builtin_delattr
+
+ obj: object
+ name: object
+ /
+
+Deletes the named attribute from the given object.
+
+delattr(x, 'y') is equivalent to ``del x.y``
+[clinic start generated code]*/
+
+static PyObject *
+builtin_delattr_impl(PyObject *module, PyObject *obj, PyObject *name)
+/*[clinic end generated code: output=85134bc58dff79fa input=164865623abe7216]*/
+{
+ if (PyObject_SetAttr(obj, name, (PyObject *)NULL) != 0)
+ return NULL;
+ Py_RETURN_NONE;
+}
+
+
+/*[clinic input]
+hash as builtin_hash
+
+ obj: object
+ /
+
+Return the hash value for the given object.
+
+Two objects that compare equal must also have the same hash value, but the
+reverse is not necessarily true.
+[clinic start generated code]*/
+
+static PyObject *
+builtin_hash(PyObject *module, PyObject *obj)
+/*[clinic end generated code: output=237668e9d7688db7 input=58c48be822bf9c54]*/
+{
+ Py_hash_t x;
+
+ x = PyObject_Hash(obj);
+ if (x == -1)
+ return NULL;
+ return PyLong_FromSsize_t(x);
+}
+
+
+/*[clinic input]
+hex as builtin_hex
+
+ number: object
+ /
+
+Return the hexadecimal representation of an integer.
+
+ >>> hex(12648430)
+ '0xc0ffee'
+[clinic start generated code]*/
+
+static PyObject *
+builtin_hex(PyObject *module, PyObject *number)
+/*[clinic end generated code: output=e46b612169099408 input=e645aff5fc7d540e]*/
+{
+ return PyNumber_ToBase(number, 16);
+}
+
+
+/*[clinic input]
+iter as builtin_iter
+
+ object: object
+ sentinel: object = NULL
+ /
+
+Get an iterator from an object.
+
+In the first form, the argument must supply its own iterator, or be a sequence.
+In the second form, the callable is called until it returns the sentinel.
+[clinic start generated code]*/
+
+static PyObject *
+builtin_iter_impl(PyObject *module, PyObject *object, PyObject *sentinel)
+/*[clinic end generated code: output=12cf64203c195a94 input=a5d64d9d81880ba6]*/
+{
+ if (sentinel == NULL)
+ return PyObject_GetIter(object);
+ if (!PyCallable_Check(object)) {
+ PyErr_SetString(PyExc_TypeError,
+ "iter(object, sentinel): object must be callable");
+ return NULL;
+ }
+ return PyCallIter_New(object, sentinel);
+}
+
+
+/*[clinic input]
+aiter as builtin_aiter
+
+ async_iterable: object
+ /
+
+Return an AsyncIterator for an AsyncIterable object.
+[clinic start generated code]*/
+
+static PyObject *
+builtin_aiter(PyObject *module, PyObject *async_iterable)
+/*[clinic end generated code: output=1bae108d86f7960e input=473993d0cacc7d23]*/
+{
+ return PyObject_GetAIter(async_iterable);
+}
+
+PyObject *PyAnextAwaitable_New(PyObject *, PyObject *);
+
+/*[clinic input]
+anext as builtin_anext
+
+ aiterator: object
+ default: object = NULL
+ /
+
+async anext(aiterator[, default])
+
+Return the next item from the async iterator. If default is given and the async
+iterator is exhausted, it is returned instead of raising StopAsyncIteration.
+[clinic start generated code]*/
+
+static PyObject *
+builtin_anext_impl(PyObject *module, PyObject *aiterator,
+ PyObject *default_value)
+/*[clinic end generated code: output=f02c060c163a81fa input=8f63f4f78590bb4c]*/
+{
+ PyTypeObject *t;
+ PyObject *awaitable;
+
+ t = Py_TYPE(aiterator);
+ if (t->tp_as_async == NULL || t->tp_as_async->am_anext == NULL) {
+ PyErr_Format(PyExc_TypeError,
+ "'%.200s' object is not an async iterator",
+ t->tp_name);
+ return NULL;
+ }
+
+ awaitable = (*t->tp_as_async->am_anext)(aiterator);
+ if (default_value == NULL) {
+ return awaitable;
+ }
+
+ PyObject* new_awaitable = PyAnextAwaitable_New(
+ awaitable, default_value);
+ Py_DECREF(awaitable);
+ return new_awaitable;
+}
+
+
+/*[clinic input]
+len as builtin_len
+
+ obj: object
+ /
+
+Return the number of items in a container.
+[clinic start generated code]*/
+
+static PyObject *
+builtin_len(PyObject *module, PyObject *obj)
+/*[clinic end generated code: output=fa7a270d314dfb6c input=bc55598da9e9c9b5]*/
+{
+ Py_ssize_t res;
+
+ res = PyObject_Size(obj);
+ if (res < 0) {
+ assert(PyErr_Occurred());
+ return NULL;
+ }
+ return PyLong_FromSsize_t(res);
+}
+
+
+/*[clinic input]
+locals as builtin_locals
+
+Return a dictionary containing the current scope's local variables.
+
+NOTE: Whether or not updates to this dictionary will affect name lookups in
+the local scope and vice-versa is *implementation dependent* and not
+covered by any backwards compatibility guarantees.
+[clinic start generated code]*/
+
+static PyObject *
+builtin_locals_impl(PyObject *module)
+/*[clinic end generated code: output=b46c94015ce11448 input=7874018d478d5c4b]*/
+{
+ return _PyEval_GetFrameLocals();
+}
+
+
+static PyObject *
+min_max(PyObject *args, PyObject *kwds, int op)
+{
+ PyObject *v, *it, *item, *val, *maxitem, *maxval, *keyfunc=NULL;
+ PyObject *emptytuple, *defaultval = NULL;
+ static char *kwlist[] = {"key", "default", NULL};
+ const char *name = op == Py_LT ? "min" : "max";
+ const int positional = PyTuple_Size(args) > 1;
+ int ret;
+
+ if (positional) {
+ v = args;
+ }
+ else if (!PyArg_UnpackTuple(args, name, 1, 1, &v)) {
+ if (PyExceptionClass_Check(PyExc_TypeError)) {
+ PyErr_Format(PyExc_TypeError, "%s expected at least 1 argument, got 0", name);
+ }
+ return NULL;
+ }
+
+ emptytuple = PyTuple_New(0);
+ if (emptytuple == NULL)
+ return NULL;
+ ret = PyArg_ParseTupleAndKeywords(emptytuple, kwds,
+ (op == Py_LT) ? "|$OO:min" : "|$OO:max",
+ kwlist, &keyfunc, &defaultval);
+ Py_DECREF(emptytuple);
+ if (!ret)
+ return NULL;
+
+ if (positional && defaultval != NULL) {
+ PyErr_Format(PyExc_TypeError,
+ "Cannot specify a default for %s() with multiple "
+ "positional arguments", name);
+ return NULL;
+ }
+
+ it = PyObject_GetIter(v);
+ if (it == NULL) {
+ return NULL;
+ }
+
+ if (keyfunc == Py_None) {
+ keyfunc = NULL;
+ }
+
+ maxitem = NULL; /* the result */
+ maxval = NULL; /* the value associated with the result */
+ while (( item = PyIter_Next(it) )) {
+ /* get the value from the key function */
+ if (keyfunc != NULL) {
+ val = PyObject_CallOneArg(keyfunc, item);
+ if (val == NULL)
+ goto Fail_it_item;
+ }
+ /* no key function; the value is the item */
+ else {
+ val = Py_NewRef(item);
+ }
+
+ /* maximum value and item are unset; set them */
+ if (maxval == NULL) {
+ maxitem = item;
+ maxval = val;
+ }
+ /* maximum value and item are set; update them as necessary */
+ else {
+ int cmp = PyObject_RichCompareBool(val, maxval, op);
+ if (cmp < 0)
+ goto Fail_it_item_and_val;
+ else if (cmp > 0) {
+ Py_DECREF(maxval);
+ Py_DECREF(maxitem);
+ maxval = val;
+ maxitem = item;
+ }
+ else {
+ Py_DECREF(item);
+ Py_DECREF(val);
+ }
+ }
+ }
+ if (PyErr_Occurred())
+ goto Fail_it;
+ if (maxval == NULL) {
+ assert(maxitem == NULL);
+ if (defaultval != NULL) {
+ maxitem = Py_NewRef(defaultval);
+ } else {
+ PyErr_Format(PyExc_ValueError,
+ "%s() iterable argument is empty", name);
+ }
+ }
+ else
+ Py_DECREF(maxval);
+ Py_DECREF(it);
+ return maxitem;
+
+Fail_it_item_and_val:
+ Py_DECREF(val);
+Fail_it_item:
+ Py_DECREF(item);
+Fail_it:
+ Py_XDECREF(maxval);
+ Py_XDECREF(maxitem);
+ Py_DECREF(it);
+ return NULL;
+}
+
+/* AC: cannot convert yet, waiting for *args support */
+static PyObject *
+builtin_min(PyObject *self, PyObject *args, PyObject *kwds)
+{
+ return min_max(args, kwds, Py_LT);
+}
+
+PyDoc_STRVAR(min_doc,
+"min(iterable, *[, default=obj, key=func]) -> value\n\
+min(arg1, arg2, *args, *[, key=func]) -> value\n\
+\n\
+With a single iterable argument, return its smallest item. The\n\
+default keyword-only argument specifies an object to return if\n\
+the provided iterable is empty.\n\
+With two or more arguments, return the smallest argument.");
+
+
+/* AC: cannot convert yet, waiting for *args support */
+static PyObject *
+builtin_max(PyObject *self, PyObject *args, PyObject *kwds)
+{
+ return min_max(args, kwds, Py_GT);
+}
+
+PyDoc_STRVAR(max_doc,
+"max(iterable, *[, default=obj, key=func]) -> value\n\
+max(arg1, arg2, *args, *[, key=func]) -> value\n\
+\n\
+With a single iterable argument, return its biggest item. The\n\
+default keyword-only argument specifies an object to return if\n\
+the provided iterable is empty.\n\
+With two or more arguments, return the largest argument.");
+
+
+/*[clinic input]
+oct as builtin_oct
+
+ number: object
+ /
+
+Return the octal representation of an integer.
+
+ >>> oct(342391)
+ '0o1234567'
+[clinic start generated code]*/
+
+static PyObject *
+builtin_oct(PyObject *module, PyObject *number)
+/*[clinic end generated code: output=40a34656b6875352 input=ad6b274af4016c72]*/
+{
+ return PyNumber_ToBase(number, 8);
+}
+
+
+/*[clinic input]
+ord as builtin_ord
+
+ c: object
+ /
+
+Return the Unicode code point for a one-character string.
+[clinic start generated code]*/
+
+static PyObject *
+builtin_ord(PyObject *module, PyObject *c)
+/*[clinic end generated code: output=4fa5e87a323bae71 input=3064e5d6203ad012]*/
+{
+ long ord;
+ Py_ssize_t size;
+
+ if (PyBytes_Check(c)) {
+ size = PyBytes_GET_SIZE(c);
+ if (size == 1) {
+ ord = (long)((unsigned char)*PyBytes_AS_STRING(c));
+ return PyLong_FromLong(ord);
+ }
+ }
+ else if (PyUnicode_Check(c)) {
+ if (PyUnicode_READY(c) == -1)
+ return NULL;
+ size = PyUnicode_GET_LENGTH(c);
+ if (size == 1) {
+ ord = (long)PyUnicode_READ_CHAR(c, 0);
+ return PyLong_FromLong(ord);
+ }
+ }
+ else if (PyByteArray_Check(c)) {
+ /* XXX Hopefully this is temporary */
+ size = PyByteArray_GET_SIZE(c);
+ if (size == 1) {
+ ord = (long)((unsigned char)*PyByteArray_AS_STRING(c));
+ return PyLong_FromLong(ord);
+ }
+ }
+ else {
+ PyErr_Format(PyExc_TypeError,
+ "ord() expected string of length 1, but " \
+ "%.200s found", Py_TYPE(c)->tp_name);
+ return NULL;
+ }
+
+ PyErr_Format(PyExc_TypeError,
+ "ord() expected a character, "
+ "but string of length %zd found",
+ size);
+ return NULL;
+}
+
+
+/*[clinic input]
+pow as builtin_pow
+
+ base: object
+ exp: object
+ mod: object = None
+
+Equivalent to base**exp with 2 arguments or base**exp % mod with 3 arguments
+
+Some types, such as ints, are able to use a more efficient algorithm when
+invoked using the three argument form.
+[clinic start generated code]*/
+
+static PyObject *
+builtin_pow_impl(PyObject *module, PyObject *base, PyObject *exp,
+ PyObject *mod)
+/*[clinic end generated code: output=3ca1538221bbf15f input=435dbd48a12efb23]*/
+{
+ return PyNumber_Power(base, exp, mod);
+}
+
+/*[clinic input]
+print as builtin_print
+
+ *args: object
+ sep: object(c_default="Py_None") = ' '
+ string inserted between values, default a space.
+ end: object(c_default="Py_None") = '\n'
+ string appended after the last value, default a newline.
+ file: object = None
+ a file-like object (stream); defaults to the current sys.stdout.
+ flush: bool = False
+ whether to forcibly flush the stream.
+
+Prints the values to a stream, or to sys.stdout by default.
+
+[clinic start generated code]*/
+
+static PyObject *
+builtin_print_impl(PyObject *module, PyObject *args, PyObject *sep,
+ PyObject *end, PyObject *file, int flush)
+/*[clinic end generated code: output=3cfc0940f5bc237b input=c143c575d24fe665]*/
+{
+ int i, err;
+
+ if (file == Py_None) {
+ PyThreadState *tstate = _PyThreadState_GET();
+ file = _PySys_GetAttr(tstate, &_Py_ID(stdout));
+ if (file == NULL) {
+ PyErr_SetString(PyExc_RuntimeError, "lost sys.stdout");
+ return NULL;
+ }
+
+ /* sys.stdout may be None when FILE* stdout isn't connected */
+ if (file == Py_None) {
+ Py_RETURN_NONE;
+ }
+ }
+
+ if (sep == Py_None) {
+ sep = NULL;
+ }
+ else if (sep && !PyUnicode_Check(sep)) {
+ PyErr_Format(PyExc_TypeError,
+ "sep must be None or a string, not %.200s",
+ Py_TYPE(sep)->tp_name);
+ return NULL;
+ }
+ if (end == Py_None) {
+ end = NULL;
+ }
+ else if (end && !PyUnicode_Check(end)) {
+ PyErr_Format(PyExc_TypeError,
+ "end must be None or a string, not %.200s",
+ Py_TYPE(end)->tp_name);
+ return NULL;
+ }
+
+ for (i = 0; i < PyTuple_GET_SIZE(args); i++) {
+ if (i > 0) {
+ if (sep == NULL) {
+ err = PyFile_WriteString(" ", file);
+ }
+ else {
+ err = PyFile_WriteObject(sep, file, Py_PRINT_RAW);
+ }
+ if (err) {
+ return NULL;
+ }
+ }
+ err = PyFile_WriteObject(PyTuple_GET_ITEM(args, i), file, Py_PRINT_RAW);
+ if (err) {
+ return NULL;
+ }
+ }
+
+ if (end == NULL) {
+ err = PyFile_WriteString("\n", file);
+ }
+ else {
+ err = PyFile_WriteObject(end, file, Py_PRINT_RAW);
+ }
+ if (err) {
+ return NULL;
+ }
+
+ if (flush) {
+ PyObject *tmp = PyObject_CallMethodNoArgs(file, &_Py_ID(flush));
+ if (tmp == NULL) {
+ return NULL;
+ }
+ Py_DECREF(tmp);
+ }
+
+ Py_RETURN_NONE;
+}
+
+
+/*[clinic input]
+input as builtin_input
+
+ prompt: object(c_default="NULL") = ""
+ /
+
+Read a string from standard input. The trailing newline is stripped.
+
+The prompt string, if given, is printed to standard output without a
+trailing newline before reading input.
+
+If the user hits EOF (*nix: Ctrl-D, Windows: Ctrl-Z+Return), raise EOFError.
+On *nix systems, readline is used if available.
+[clinic start generated code]*/
+
+static PyObject *
+builtin_input_impl(PyObject *module, PyObject *prompt)
+/*[clinic end generated code: output=83db5a191e7a0d60 input=159c46d4ae40977e]*/
+{
+ PyThreadState *tstate = _PyThreadState_GET();
+ PyObject *fin = _PySys_GetAttr(
+ tstate, &_Py_ID(stdin));
+ PyObject *fout = _PySys_GetAttr(
+ tstate, &_Py_ID(stdout));
+ PyObject *ferr = _PySys_GetAttr(
+ tstate, &_Py_ID(stderr));
+ PyObject *tmp;
+ long fd;
+ int tty;
+
+ /* Check that stdin/out/err are intact */
+ if (fin == NULL || fin == Py_None) {
+ PyErr_SetString(PyExc_RuntimeError,
+ "input(): lost sys.stdin");
+ return NULL;
+ }
+ if (fout == NULL || fout == Py_None) {
+ PyErr_SetString(PyExc_RuntimeError,
+ "input(): lost sys.stdout");
+ return NULL;
+ }
+ if (ferr == NULL || ferr == Py_None) {
+ PyErr_SetString(PyExc_RuntimeError,
+ "input(): lost sys.stderr");
+ return NULL;
+ }
+
+ if (PySys_Audit("builtins.input", "O", prompt ? prompt : Py_None) < 0) {
+ return NULL;
+ }
+
+ /* First of all, flush stderr */
+ tmp = PyObject_CallMethodNoArgs(ferr, &_Py_ID(flush));
+ if (tmp == NULL)
+ PyErr_Clear();
+ else
+ Py_DECREF(tmp);
+
+ /* We should only use (GNU) readline if Python's sys.stdin and
+ sys.stdout are the same as C's stdin and stdout, because we
+ need to pass it those. */
+ tmp = PyObject_CallMethodNoArgs(fin, &_Py_ID(fileno));
+ if (tmp == NULL) {
+ PyErr_Clear();
+ tty = 0;
+ }
+ else {
+ fd = PyLong_AsLong(tmp);
+ Py_DECREF(tmp);
+ if (fd < 0 && PyErr_Occurred())
+ return NULL;
+ tty = fd == fileno(stdin) && isatty(fd);
+ }
+ if (tty) {
+ tmp = PyObject_CallMethodNoArgs(fout, &_Py_ID(fileno));
+ if (tmp == NULL) {
+ PyErr_Clear();
+ tty = 0;
+ }
+ else {
+ fd = PyLong_AsLong(tmp);
+ Py_DECREF(tmp);
+ if (fd < 0 && PyErr_Occurred())
+ return NULL;
+ tty = fd == fileno(stdout) && isatty(fd);
+ }
+ }
+
+ /* If we're interactive, use (GNU) readline */
+ if (tty) {
+ PyObject *po = NULL;
+ const char *promptstr;
+ char *s = NULL;
+ PyObject *stdin_encoding = NULL, *stdin_errors = NULL;
+ PyObject *stdout_encoding = NULL, *stdout_errors = NULL;
+ const char *stdin_encoding_str, *stdin_errors_str;
+ PyObject *result;
+ size_t len;
+
+ /* stdin is a text stream, so it must have an encoding. */
+ stdin_encoding = PyObject_GetAttr(fin, &_Py_ID(encoding));
+ if (stdin_encoding == NULL) {
+ tty = 0;
+ goto _readline_errors;
+ }
+ stdin_errors = PyObject_GetAttr(fin, &_Py_ID(errors));
+ if (stdin_errors == NULL) {
+ tty = 0;
+ goto _readline_errors;
+ }
+ if (!PyUnicode_Check(stdin_encoding) ||
+ !PyUnicode_Check(stdin_errors))
+ {
+ tty = 0;
+ goto _readline_errors;
+ }
+ stdin_encoding_str = PyUnicode_AsUTF8(stdin_encoding);
+ if (stdin_encoding_str == NULL) {
+ goto _readline_errors;
+ }
+ stdin_errors_str = PyUnicode_AsUTF8(stdin_errors);
+ if (stdin_errors_str == NULL) {
+ goto _readline_errors;
+ }
+ tmp = PyObject_CallMethodNoArgs(fout, &_Py_ID(flush));
+ if (tmp == NULL)
+ PyErr_Clear();
+ else
+ Py_DECREF(tmp);
+ if (prompt != NULL) {
+ /* We have a prompt, encode it as stdout would */
+ const char *stdout_encoding_str, *stdout_errors_str;
+ PyObject *stringpo;
+ stdout_encoding = PyObject_GetAttr(fout, &_Py_ID(encoding));
+ if (stdout_encoding == NULL) {
+ tty = 0;
+ goto _readline_errors;
+ }
+ stdout_errors = PyObject_GetAttr(fout, &_Py_ID(errors));
+ if (stdout_errors == NULL) {
+ tty = 0;
+ goto _readline_errors;
+ }
+ if (!PyUnicode_Check(stdout_encoding) ||
+ !PyUnicode_Check(stdout_errors))
+ {
+ tty = 0;
+ goto _readline_errors;
+ }
+ stdout_encoding_str = PyUnicode_AsUTF8(stdout_encoding);
+ if (stdout_encoding_str == NULL) {
+ goto _readline_errors;
+ }
+ stdout_errors_str = PyUnicode_AsUTF8(stdout_errors);
+ if (stdout_errors_str == NULL) {
+ goto _readline_errors;
+ }
+ stringpo = PyObject_Str(prompt);
+ if (stringpo == NULL)
+ goto _readline_errors;
+ po = PyUnicode_AsEncodedString(stringpo,
+ stdout_encoding_str, stdout_errors_str);
+ Py_CLEAR(stdout_encoding);
+ Py_CLEAR(stdout_errors);
+ Py_CLEAR(stringpo);
+ if (po == NULL)
+ goto _readline_errors;
+ assert(PyBytes_Check(po));
+ promptstr = PyBytes_AS_STRING(po);
+ }
+ else {
+ po = NULL;
+ promptstr = "";
+ }
+ s = PyOS_Readline(stdin, stdout, promptstr);
+ if (s == NULL) {
+ PyErr_CheckSignals();
+ if (!PyErr_Occurred())
+ PyErr_SetNone(PyExc_KeyboardInterrupt);
+ goto _readline_errors;
+ }
+
+ len = strlen(s);
+ if (len == 0) {
+ PyErr_SetNone(PyExc_EOFError);
+ result = NULL;
+ }
+ else {
+ if (len > PY_SSIZE_T_MAX) {
+ PyErr_SetString(PyExc_OverflowError,
+ "input: input too long");
+ result = NULL;
+ }
+ else {
+ len--; /* strip trailing '\n' */
+ if (len != 0 && s[len-1] == '\r')
+ len--; /* strip trailing '\r' */
+ result = PyUnicode_Decode(s, len, stdin_encoding_str,
+ stdin_errors_str);
+ }
+ }
+ Py_DECREF(stdin_encoding);
+ Py_DECREF(stdin_errors);
+ Py_XDECREF(po);
+ PyMem_Free(s);
+
+ if (result != NULL) {
+ if (PySys_Audit("builtins.input/result", "O", result) < 0) {
+ return NULL;
+ }
+ }
+
+ return result;
+
+ _readline_errors:
+ Py_XDECREF(stdin_encoding);
+ Py_XDECREF(stdout_encoding);
+ Py_XDECREF(stdin_errors);
+ Py_XDECREF(stdout_errors);
+ Py_XDECREF(po);
+ if (tty)
+ return NULL;
+
+ PyErr_Clear();
+ }
+
+ /* Fallback if we're not interactive */
+ if (prompt != NULL) {
+ if (PyFile_WriteObject(prompt, fout, Py_PRINT_RAW) != 0)
+ return NULL;
+ }
+ tmp = PyObject_CallMethodNoArgs(fout, &_Py_ID(flush));
+ if (tmp == NULL)
+ PyErr_Clear();
+ else
+ Py_DECREF(tmp);
+ return PyFile_GetLine(fin, -1);
+}
+
+
+/*[clinic input]
+repr as builtin_repr
+
+ obj: object
+ /
+
+Return the canonical string representation of the object.
+
+For many object types, including most builtins, eval(repr(obj)) == obj.
+[clinic start generated code]*/
+
+static PyObject *
+builtin_repr(PyObject *module, PyObject *obj)
+/*[clinic end generated code: output=7ed3778c44fd0194 input=1c9e6d66d3e3be04]*/
+{
+ return PyObject_Repr(obj);
+}
+
+
+/*[clinic input]
+round as builtin_round
+
+ number: object
+ ndigits: object = None
+
+Round a number to a given precision in decimal digits.
+
+The return value is an integer if ndigits is omitted or None. Otherwise
+the return value has the same type as the number. ndigits may be negative.
+[clinic start generated code]*/
+
+static PyObject *
+builtin_round_impl(PyObject *module, PyObject *number, PyObject *ndigits)
+/*[clinic end generated code: output=ff0d9dd176c02ede input=275678471d7aca15]*/
+{
+ PyObject *round, *result;
+
+ if (!_PyType_IsReady(Py_TYPE(number))) {
+ if (PyType_Ready(Py_TYPE(number)) < 0)
+ return NULL;
+ }
+
+ round = _PyObject_LookupSpecial(number, &_Py_ID(__round__));
+ if (round == NULL) {
+ if (!PyErr_Occurred())
+ PyErr_Format(PyExc_TypeError,
+ "type %.100s doesn't define __round__ method",
+ Py_TYPE(number)->tp_name);
+ return NULL;
+ }
+
+ if (ndigits == Py_None)
+ result = _PyObject_CallNoArgs(round);
+ else
+ result = PyObject_CallOneArg(round, ndigits);
+ Py_DECREF(round);
+ return result;
+}
+
+
+/*AC: we need to keep the kwds dict intact to easily call into the
+ * list.sort method, which isn't currently supported in AC. So we just use
+ * the initially generated signature with a custom implementation.
+ */
+/* [disabled clinic input]
+sorted as builtin_sorted
+
+ iterable as seq: object
+ key as keyfunc: object = None
+ reverse: object = False
+
+Return a new list containing all items from the iterable in ascending order.
+
+A custom key function can be supplied to customize the sort order, and the
+reverse flag can be set to request the result in descending order.
+[end disabled clinic input]*/
+
+PyDoc_STRVAR(builtin_sorted__doc__,
+"sorted($module, iterable, /, *, key=None, reverse=False)\n"
+"--\n"
+"\n"
+"Return a new list containing all items from the iterable in ascending order.\n"
+"\n"
+"A custom key function can be supplied to customize the sort order, and the\n"
+"reverse flag can be set to request the result in descending order.");
+
+#define BUILTIN_SORTED_METHODDEF \
+ {"sorted", _PyCFunction_CAST(builtin_sorted), METH_FASTCALL | METH_KEYWORDS, builtin_sorted__doc__},
+
+static PyObject *
+builtin_sorted(PyObject *self, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
+{
+ PyObject *newlist, *v, *seq, *callable;
+
+ /* Keyword arguments are passed through list.sort() which will check
+ them. */
+ if (!_PyArg_UnpackStack(args, nargs, "sorted", 1, 1, &seq))
+ return NULL;
+
+ newlist = PySequence_List(seq);
+ if (newlist == NULL)
+ return NULL;
+
+ callable = PyObject_GetAttr(newlist, &_Py_ID(sort));
+ if (callable == NULL) {
+ Py_DECREF(newlist);
+ return NULL;
+ }
+
+ assert(nargs >= 1);
+ v = PyObject_Vectorcall(callable, args + 1, nargs - 1, kwnames);
+ Py_DECREF(callable);
+ if (v == NULL) {
+ Py_DECREF(newlist);
+ return NULL;
+ }
+ Py_DECREF(v);
+ return newlist;
+}
+
+
+/*[clinic input]
+vars as builtin_vars
+
+ object: object = NULL
+ /
+
+Show vars.
+
+Without arguments, equivalent to locals().
+With an argument, equivalent to object.__dict__.
+[clinic start generated code]*/
+
+static PyObject *
+builtin_vars_impl(PyObject *module, PyObject *object)
+/*[clinic end generated code: output=840a7f64007a3e0a input=80cbdef9182c4ba3]*/
+{
+ PyObject *d;
+
+ if (object == NULL) {
+ d = _PyEval_GetFrameLocals();
+ }
+ else {
+ if (_PyObject_LookupAttr(object, &_Py_ID(__dict__), &d) == 0) {
+ PyErr_SetString(PyExc_TypeError,
+ "vars() argument must have __dict__ attribute");
+ }
+ }
+ return d;
+}
+
+
+/*[clinic input]
+sum as builtin_sum
+
+ iterable: object
+ /
+ start: object(c_default="NULL") = 0
+
+Return the sum of a 'start' value (default: 0) plus an iterable of numbers
+
+When the iterable is empty, return the start value.
+This function is intended specifically for use with numeric values and may
+reject non-numeric types.
+[clinic start generated code]*/
+
+static PyObject *
+builtin_sum_impl(PyObject *module, PyObject *iterable, PyObject *start)
+/*[clinic end generated code: output=df758cec7d1d302f input=162b50765250d222]*/
+{
+ PyObject *result = start;
+ PyObject *temp, *item, *iter;
+
+ iter = PyObject_GetIter(iterable);
+ if (iter == NULL)
+ return NULL;
+
+ if (result == NULL) {
+ result = PyLong_FromLong(0);
+ if (result == NULL) {
+ Py_DECREF(iter);
+ return NULL;
+ }
+ } else {
+ /* reject string values for 'start' parameter */
+ if (PyUnicode_Check(result)) {
+ PyErr_SetString(PyExc_TypeError,
+ "sum() can't sum strings [use ''.join(seq) instead]");
+ Py_DECREF(iter);
+ return NULL;
+ }
+ if (PyBytes_Check(result)) {
+ PyErr_SetString(PyExc_TypeError,
+ "sum() can't sum bytes [use b''.join(seq) instead]");
+ Py_DECREF(iter);
+ return NULL;
+ }
+ if (PyByteArray_Check(result)) {
+ PyErr_SetString(PyExc_TypeError,
+ "sum() can't sum bytearray [use b''.join(seq) instead]");
+ Py_DECREF(iter);
+ return NULL;
+ }
+ Py_INCREF(result);
+ }
+
+#ifndef SLOW_SUM
+ /* Fast addition by keeping temporary sums in C instead of new Python objects.
+ Assumes all inputs are the same type. If the assumption fails, default
+ to the more general routine.
+ */
+ if (PyLong_CheckExact(result)) {
+ int overflow;
+ Py_ssize_t i_result = PyLong_AsLongAndOverflow(result, &overflow);
+ /* If this already overflowed, don't even enter the loop. */
+ if (overflow == 0) {
+ Py_SETREF(result, NULL);
+ }
+ while(result == NULL) {
+ item = PyIter_Next(iter);
+ if (item == NULL) {
+ Py_DECREF(iter);
+ if (PyErr_Occurred())
+ return NULL;
+ return PyLong_FromSsize_t(i_result);
+ }
+ if (PyLong_CheckExact(item) || PyBool_Check(item)) {
+ Py_ssize_t b;
+ overflow = 0;
+ /* Single digits are common, fast, and cannot overflow on unpacking. */
+ if (_PyLong_IsCompact((PyLongObject *)item)) {
+ b = _PyLong_CompactValue((PyLongObject *)item);
+ }
+ else {
+ b = PyLong_AsLongAndOverflow(item, &overflow);
+ }
+ if (overflow == 0 &&
+ (i_result >= 0 ? (b <= LONG_MAX - i_result)
+ : (b >= LONG_MIN - i_result)))
+ {
+ i_result += b;
+ Py_DECREF(item);
+ continue;
+ }
+ }
+ /* Either overflowed or is not an int. Restore real objects and process normally */
+ result = PyLong_FromSsize_t(i_result);
+ if (result == NULL) {
+ Py_DECREF(item);
+ Py_DECREF(iter);
+ return NULL;
+ }
+ temp = PyNumber_Add(result, item);
+ Py_DECREF(result);
+ Py_DECREF(item);
+ result = temp;
+ if (result == NULL) {
+ Py_DECREF(iter);
+ return NULL;
+ }
+ }
+ }
+
+ if (PyFloat_CheckExact(result)) {
+ double f_result = PyFloat_AS_DOUBLE(result);
+ double c = 0.0;
+ Py_SETREF(result, NULL);
+ while(result == NULL) {
+ item = PyIter_Next(iter);
+ if (item == NULL) {
+ Py_DECREF(iter);
+ if (PyErr_Occurred())
+ return NULL;
+ /* Avoid losing the sign on a negative result,
+ and don't let adding the compensation convert
+ an infinite or overflowed sum to a NaN. */
+ if (c && Py_IS_FINITE(c)) {
+ f_result += c;
+ }
+ return PyFloat_FromDouble(f_result);
+ }
+ if (PyFloat_CheckExact(item)) {
+ // Improved Kahan–Babuška algorithm by Arnold Neumaier
+ // Neumaier, A. (1974), Rundungsfehleranalyse einiger Verfahren
+ // zur Summation endlicher Summen. Z. angew. Math. Mech.,
+ // 54: 39-51. https://doi.org/10.1002/zamm.19740540106
+ // https://en.wikipedia.org/wiki/Kahan_summation_algorithm#Further_enhancements
+ double x = PyFloat_AS_DOUBLE(item);
+ double t = f_result + x;
+ if (fabs(f_result) >= fabs(x)) {
+ c += (f_result - t) + x;
+ } else {
+ c += (x - t) + f_result;
+ }
+ f_result = t;
+ _Py_DECREF_SPECIALIZED(item, _PyFloat_ExactDealloc);
+ continue;
+ }
+ if (PyLong_Check(item)) {
+ long value;
+ int overflow;
+ value = PyLong_AsLongAndOverflow(item, &overflow);
+ if (!overflow) {
+ f_result += (double)value;
+ Py_DECREF(item);
+ continue;
+ }
+ }
+ if (c && Py_IS_FINITE(c)) {
+ f_result += c;
+ }
+ result = PyFloat_FromDouble(f_result);
+ if (result == NULL) {
+ Py_DECREF(item);
+ Py_DECREF(iter);
+ return NULL;
+ }
+ temp = PyNumber_Add(result, item);
+ Py_DECREF(result);
+ Py_DECREF(item);
+ result = temp;
+ if (result == NULL) {
+ Py_DECREF(iter);
+ return NULL;
+ }
+ }
+ }
+#endif
+
+ for(;;) {
+ item = PyIter_Next(iter);
+ if (item == NULL) {
+ /* error, or end-of-sequence */
+ if (PyErr_Occurred()) {
+ Py_SETREF(result, NULL);
+ }
+ break;
+ }
+ /* It's tempting to use PyNumber_InPlaceAdd instead of
+ PyNumber_Add here, to avoid quadratic running time
+ when doing 'sum(list_of_lists, [])'. However, this
+ would produce a change in behaviour: a snippet like
+
+ empty = []
+ sum([[x] for x in range(10)], empty)
+
+ would change the value of empty. In fact, using
+ in-place addition rather that binary addition for
+ any of the steps introduces subtle behavior changes:
+
+ https://bugs.python.org/issue18305 */
+ temp = PyNumber_Add(result, item);
+ Py_DECREF(result);
+ Py_DECREF(item);
+ result = temp;
+ if (result == NULL)
+ break;
+ }
+ Py_DECREF(iter);
+ return result;
+}
+
+
+/*[clinic input]
+isinstance as builtin_isinstance
+
+ obj: object
+ class_or_tuple: object
+ /
+
+Return whether an object is an instance of a class or of a subclass thereof.
+
+A tuple, as in ``isinstance(x, (A, B, ...))``, may be given as the target to
+check against. This is equivalent to ``isinstance(x, A) or isinstance(x, B)
+or ...`` etc.
+[clinic start generated code]*/
+
+static PyObject *
+builtin_isinstance_impl(PyObject *module, PyObject *obj,
+ PyObject *class_or_tuple)
+/*[clinic end generated code: output=6faf01472c13b003 input=ffa743db1daf7549]*/
+{
+ int retval;
+
+ retval = PyObject_IsInstance(obj, class_or_tuple);
+ if (retval < 0)
+ return NULL;
+ return PyBool_FromLong(retval);
+}
+
+
+/*[clinic input]
+issubclass as builtin_issubclass
+
+ cls: object
+ class_or_tuple: object
+ /
+
+Return whether 'cls' is derived from another class or is the same class.
+
+A tuple, as in ``issubclass(x, (A, B, ...))``, may be given as the target to
+check against. This is equivalent to ``issubclass(x, A) or issubclass(x, B)
+or ...``.
+[clinic start generated code]*/
+
+static PyObject *
+builtin_issubclass_impl(PyObject *module, PyObject *cls,
+ PyObject *class_or_tuple)
+/*[clinic end generated code: output=358412410cd7a250 input=a24b9f3d58c370d6]*/
+{
+ int retval;
+
+ retval = PyObject_IsSubclass(cls, class_or_tuple);
+ if (retval < 0)
+ return NULL;
+ return PyBool_FromLong(retval);
+}
+
+typedef struct {
+ PyObject_HEAD
+ Py_ssize_t tuplesize;
+ PyObject *ittuple; /* tuple of iterators */
+ PyObject *result;
+ int strict;
+} zipobject;
+
+static PyObject *
+zip_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
+{
+ zipobject *lz;
+ Py_ssize_t i;
+ PyObject *ittuple; /* tuple of iterators */
+ PyObject *result;
+ Py_ssize_t tuplesize;
+ int strict = 0;
+
+ if (kwds) {
+ PyObject *empty = PyTuple_New(0);
+ if (empty == NULL) {
+ return NULL;
+ }
+ static char *kwlist[] = {"strict", NULL};
+ int parsed = PyArg_ParseTupleAndKeywords(
+ empty, kwds, "|$p:zip", kwlist, &strict);
+ Py_DECREF(empty);
+ if (!parsed) {
+ return NULL;
+ }
+ }
+
+ /* args must be a tuple */
+ assert(PyTuple_Check(args));
+ tuplesize = PyTuple_GET_SIZE(args);
+
+ /* obtain iterators */
+ ittuple = PyTuple_New(tuplesize);
+ if (ittuple == NULL)
+ return NULL;
+ for (i=0; i < tuplesize; ++i) {
+ PyObject *item = PyTuple_GET_ITEM(args, i);
+ PyObject *it = PyObject_GetIter(item);
+ if (it == NULL) {
+ Py_DECREF(ittuple);
+ return NULL;
+ }
+ PyTuple_SET_ITEM(ittuple, i, it);
+ }
+
+ /* create a result holder */
+ result = PyTuple_New(tuplesize);
+ if (result == NULL) {
+ Py_DECREF(ittuple);
+ return NULL;
+ }
+ for (i=0 ; i < tuplesize ; i++) {
+ PyTuple_SET_ITEM(result, i, Py_NewRef(Py_None));
+ }
+
+ /* create zipobject structure */
+ lz = (zipobject *)type->tp_alloc(type, 0);
+ if (lz == NULL) {
+ Py_DECREF(ittuple);
+ Py_DECREF(result);
+ return NULL;
+ }
+ lz->ittuple = ittuple;
+ lz->tuplesize = tuplesize;
+ lz->result = result;
+ lz->strict = strict;
+
+ return (PyObject *)lz;
+}
+
+static void
+zip_dealloc(zipobject *lz)
+{
+ PyObject_GC_UnTrack(lz);
+ Py_XDECREF(lz->ittuple);
+ Py_XDECREF(lz->result);
+ Py_TYPE(lz)->tp_free(lz);
+}
+
+static int
+zip_traverse(zipobject *lz, visitproc visit, void *arg)
+{
+ Py_VISIT(lz->ittuple);
+ Py_VISIT(lz->result);
+ return 0;
+}
+
+static PyObject *
+zip_next(zipobject *lz)
+{
+ Py_ssize_t i;
+ Py_ssize_t tuplesize = lz->tuplesize;
+ PyObject *result = lz->result;
+ PyObject *it;
+ PyObject *item;
+ PyObject *olditem;
+
+ if (tuplesize == 0)
+ return NULL;
+ if (Py_REFCNT(result) == 1) {
+ Py_INCREF(result);
+ for (i=0 ; i < tuplesize ; i++) {
+ it = PyTuple_GET_ITEM(lz->ittuple, i);
+ item = (*Py_TYPE(it)->tp_iternext)(it);
+ if (item == NULL) {
+ Py_DECREF(result);
+ if (lz->strict) {
+ goto check;
+ }
+ return NULL;
+ }
+ olditem = PyTuple_GET_ITEM(result, i);
+ PyTuple_SET_ITEM(result, i, item);
+ Py_DECREF(olditem);
+ }
+ // bpo-42536: The GC may have untracked this result tuple. Since we're
+ // recycling it, make sure it's tracked again:
+ if (!_PyObject_GC_IS_TRACKED(result)) {
+ _PyObject_GC_TRACK(result);
+ }
+ } else {
+ result = PyTuple_New(tuplesize);
+ if (result == NULL)
+ return NULL;
+ for (i=0 ; i < tuplesize ; i++) {
+ it = PyTuple_GET_ITEM(lz->ittuple, i);
+ item = (*Py_TYPE(it)->tp_iternext)(it);
+ if (item == NULL) {
+ Py_DECREF(result);
+ if (lz->strict) {
+ goto check;
+ }
+ return NULL;
+ }
+ PyTuple_SET_ITEM(result, i, item);
+ }
+ }
+ return result;
+check:
+ if (PyErr_Occurred()) {
+ if (!PyErr_ExceptionMatches(PyExc_StopIteration)) {
+ // next() on argument i raised an exception (not StopIteration)
+ return NULL;
+ }
+ PyErr_Clear();
+ }
+ if (i) {
+ // ValueError: zip() argument 2 is shorter than argument 1
+ // ValueError: zip() argument 3 is shorter than arguments 1-2
+ const char* plural = i == 1 ? " " : "s 1-";
+ return PyErr_Format(PyExc_ValueError,
+ "zip() argument %d is shorter than argument%s%d",
+ i + 1, plural, i);
+ }
+ for (i = 1; i < tuplesize; i++) {
+ it = PyTuple_GET_ITEM(lz->ittuple, i);
+ item = (*Py_TYPE(it)->tp_iternext)(it);
+ if (item) {
+ Py_DECREF(item);
+ const char* plural = i == 1 ? " " : "s 1-";
+ return PyErr_Format(PyExc_ValueError,
+ "zip() argument %d is longer than argument%s%d",
+ i + 1, plural, i);
+ }
+ if (PyErr_Occurred()) {
+ if (!PyErr_ExceptionMatches(PyExc_StopIteration)) {
+ // next() on argument i raised an exception (not StopIteration)
+ return NULL;
+ }
+ PyErr_Clear();
+ }
+ // Argument i is exhausted. So far so good...
+ }
+ // All arguments are exhausted. Success!
+ return NULL;
+}
+
+static PyObject *
+zip_reduce(zipobject *lz, PyObject *Py_UNUSED(ignored))
+{
+ /* Just recreate the zip with the internal iterator tuple */
+ if (lz->strict) {
+ return PyTuple_Pack(3, Py_TYPE(lz), lz->ittuple, Py_True);
+ }
+ return PyTuple_Pack(2, Py_TYPE(lz), lz->ittuple);
+}
+
+PyDoc_STRVAR(setstate_doc, "Set state information for unpickling.");
+
+static PyObject *
+zip_setstate(zipobject *lz, PyObject *state)
+{
+ int strict = PyObject_IsTrue(state);
+ if (strict < 0) {
+ return NULL;
+ }
+ lz->strict = strict;
+ Py_RETURN_NONE;
+}
+
+static PyMethodDef zip_methods[] = {
+ {"__reduce__", _PyCFunction_CAST(zip_reduce), METH_NOARGS, reduce_doc},
+ {"__setstate__", _PyCFunction_CAST(zip_setstate), METH_O, setstate_doc},
+ {NULL} /* sentinel */
+};
+
+PyDoc_STRVAR(zip_doc,
+"zip(*iterables, strict=False) --> Yield tuples until an input is exhausted.\n\
+\n\
+ >>> list(zip('abcdefg', range(3), range(4)))\n\
+ [('a', 0, 0), ('b', 1, 1), ('c', 2, 2)]\n\
+\n\
+The zip object yields n-length tuples, where n is the number of iterables\n\
+passed as positional arguments to zip(). The i-th element in every tuple\n\
+comes from the i-th iterable argument to zip(). This continues until the\n\
+shortest argument is exhausted.\n\
+\n\
+If strict is true and one of the arguments is exhausted before the others,\n\
+raise a ValueError.");
+
+PyTypeObject PyZip_Type = {
+ PyVarObject_HEAD_INIT(&PyType_Type, 0)
+ "zip", /* tp_name */
+ sizeof(zipobject), /* tp_basicsize */
+ 0, /* tp_itemsize */
+ /* methods */
+ (destructor)zip_dealloc, /* tp_dealloc */
+ 0, /* tp_vectorcall_offset */
+ 0, /* tp_getattr */
+ 0, /* tp_setattr */
+ 0, /* tp_as_async */
+ 0, /* tp_repr */
+ 0, /* tp_as_number */
+ 0, /* tp_as_sequence */
+ 0, /* tp_as_mapping */
+ 0, /* tp_hash */
+ 0, /* tp_call */
+ 0, /* tp_str */
+ PyObject_GenericGetAttr, /* tp_getattro */
+ 0, /* tp_setattro */
+ 0, /* tp_as_buffer */
+ Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC |
+ Py_TPFLAGS_BASETYPE, /* tp_flags */
+ zip_doc, /* tp_doc */
+ (traverseproc)zip_traverse, /* tp_traverse */
+ 0, /* tp_clear */
+ 0, /* tp_richcompare */
+ 0, /* tp_weaklistoffset */
+ PyObject_SelfIter, /* tp_iter */
+ (iternextfunc)zip_next, /* tp_iternext */
+ zip_methods, /* tp_methods */
+ 0, /* tp_members */
+ 0, /* tp_getset */
+ 0, /* tp_base */
+ 0, /* tp_dict */
+ 0, /* tp_descr_get */
+ 0, /* tp_descr_set */
+ 0, /* tp_dictoffset */
+ 0, /* tp_init */
+ PyType_GenericAlloc, /* tp_alloc */
+ zip_new, /* tp_new */
+ PyObject_GC_Del, /* tp_free */
+};
+
+
+static PyMethodDef builtin_methods[] = {
+ {"__build_class__", _PyCFunction_CAST(builtin___build_class__),
+ METH_FASTCALL | METH_KEYWORDS, build_class_doc},
+ BUILTIN___IMPORT___METHODDEF
+ BUILTIN_ABS_METHODDEF
+ BUILTIN_ALL_METHODDEF
+ BUILTIN_ANY_METHODDEF
+ BUILTIN_ASCII_METHODDEF
+ BUILTIN_BIN_METHODDEF
+ {"breakpoint", _PyCFunction_CAST(builtin_breakpoint), METH_FASTCALL | METH_KEYWORDS, breakpoint_doc},
+ BUILTIN_CALLABLE_METHODDEF
+ BUILTIN_CHR_METHODDEF
+ BUILTIN_COMPILE_METHODDEF
+ BUILTIN_DELATTR_METHODDEF
+ BUILTIN_DIR_METHODDEF
+ BUILTIN_DIVMOD_METHODDEF
+ BUILTIN_EVAL_METHODDEF
+ BUILTIN_EXEC_METHODDEF
+ BUILTIN_FORMAT_METHODDEF
+ BUILTIN_GETATTR_METHODDEF
+ BUILTIN_GLOBALS_METHODDEF
+ BUILTIN_HASATTR_METHODDEF
+ BUILTIN_HASH_METHODDEF
+ BUILTIN_HEX_METHODDEF
+ BUILTIN_ID_METHODDEF
+ BUILTIN_INPUT_METHODDEF
+ BUILTIN_ISINSTANCE_METHODDEF
+ BUILTIN_ISSUBCLASS_METHODDEF
+ BUILTIN_ITER_METHODDEF
+ BUILTIN_AITER_METHODDEF
+ BUILTIN_LEN_METHODDEF
+ BUILTIN_LOCALS_METHODDEF
+ {"max", _PyCFunction_CAST(builtin_max), METH_VARARGS | METH_KEYWORDS, max_doc},
+ {"min", _PyCFunction_CAST(builtin_min), METH_VARARGS | METH_KEYWORDS, min_doc},
+ BUILTIN_NEXT_METHODDEF
+ BUILTIN_ANEXT_METHODDEF
+ BUILTIN_OCT_METHODDEF
+ BUILTIN_ORD_METHODDEF
+ BUILTIN_POW_METHODDEF
+ BUILTIN_PRINT_METHODDEF
+ BUILTIN_REPR_METHODDEF
+ BUILTIN_ROUND_METHODDEF
+ BUILTIN_SETATTR_METHODDEF
+ BUILTIN_SORTED_METHODDEF
+ BUILTIN_SUM_METHODDEF
+ BUILTIN_VARS_METHODDEF
+ {NULL, NULL},
+};
+
+PyDoc_STRVAR(builtin_doc,
+"Built-in functions, types, exceptions, and other objects.\n\
+\n\
+This module provides direct access to all 'built-in'\n\
+identifiers of Python; for example, builtins.len is\n\
+the full name for the built-in function len().\n\
+\n\
+This module is not normally accessed explicitly by most\n\
+applications, but can be useful in modules that provide\n\
+objects with the same name as a built-in value, but in\n\
+which the built-in of that name is also needed.");
+
+static struct PyModuleDef builtinsmodule = {
+ PyModuleDef_HEAD_INIT,
+ "builtins",
+ builtin_doc,
+ -1, /* multiple "initialization" just copies the module dict. */
+ builtin_methods,
+ NULL,
+ NULL,
+ NULL,
+ NULL
+};
+
+
+PyObject *
+_PyBuiltin_Init(PyInterpreterState *interp)
+{
+ PyObject *mod, *dict, *debug;
+
+ const PyConfig *config = _PyInterpreterState_GetConfig(interp);
+
+ mod = _PyModule_CreateInitialized(&builtinsmodule, PYTHON_API_VERSION);
+ if (mod == NULL)
+ return NULL;
+ dict = PyModule_GetDict(mod);
+
+#ifdef Py_TRACE_REFS
+ /* "builtins" exposes a number of statically allocated objects
+ * that, before this code was added in 2.3, never showed up in
+ * the list of "all objects" maintained by Py_TRACE_REFS. As a
+ * result, programs leaking references to None and False (etc)
+ * couldn't be diagnosed by examining sys.getobjects(0).
+ */
+#define ADD_TO_ALL(OBJECT) _Py_AddToAllObjects((PyObject *)(OBJECT), 0)
+#else
+#define ADD_TO_ALL(OBJECT) (void)0
+#endif
+
+#define SETBUILTIN(NAME, OBJECT) \
+ if (PyDict_SetItemString(dict, NAME, (PyObject *)OBJECT) < 0) \
+ return NULL; \
+ ADD_TO_ALL(OBJECT)
+
+ SETBUILTIN("None", Py_None);
+ SETBUILTIN("Ellipsis", Py_Ellipsis);
+ SETBUILTIN("NotImplemented", Py_NotImplemented);
+ SETBUILTIN("False", Py_False);
+ SETBUILTIN("True", Py_True);
+ SETBUILTIN("bool", &PyBool_Type);
+ SETBUILTIN("memoryview", &PyMemoryView_Type);
+ SETBUILTIN("bytearray", &PyByteArray_Type);
+ SETBUILTIN("bytes", &PyBytes_Type);
+ SETBUILTIN("classmethod", &PyClassMethod_Type);
+ SETBUILTIN("complex", &PyComplex_Type);
+ SETBUILTIN("dict", &PyDict_Type);
+ SETBUILTIN("enumerate", &PyEnum_Type);
+ SETBUILTIN("filter", &PyFilter_Type);
+ SETBUILTIN("float", &PyFloat_Type);
+ SETBUILTIN("frozenset", &PyFrozenSet_Type);
+ SETBUILTIN("property", &PyProperty_Type);
+ SETBUILTIN("int", &PyLong_Type);
+ SETBUILTIN("list", &PyList_Type);
+ SETBUILTIN("map", &PyMap_Type);
+ SETBUILTIN("object", &PyBaseObject_Type);
+ SETBUILTIN("range", &PyRange_Type);
+ SETBUILTIN("reversed", &PyReversed_Type);
+ SETBUILTIN("set", &PySet_Type);
+ SETBUILTIN("slice", &PySlice_Type);
+ SETBUILTIN("staticmethod", &PyStaticMethod_Type);
+ SETBUILTIN("str", &PyUnicode_Type);
+ SETBUILTIN("super", &PySuper_Type);
+ SETBUILTIN("tuple", &PyTuple_Type);
+ SETBUILTIN("type", &PyType_Type);
+ SETBUILTIN("zip", &PyZip_Type);
+ debug = PyBool_FromLong(config->optimization_level == 0);
+ if (PyDict_SetItemString(dict, "__debug__", debug) < 0) {
+ Py_DECREF(debug);
+ return NULL;
+ }
+ Py_DECREF(debug);
+
+ return mod;
+#undef ADD_TO_ALL
+#undef SETBUILTIN
+}
diff --git a/contrib/tools/python3/Python/bootstrap_hash.c b/contrib/tools/python3/Python/bootstrap_hash.c
new file mode 100644
index 00000000000..da85db35c14
--- /dev/null
+++ b/contrib/tools/python3/Python/bootstrap_hash.c
@@ -0,0 +1,598 @@
+#include "Python.h"
+#include "pycore_initconfig.h"
+#include "pycore_fileutils.h" // _Py_fstat_noraise()
+#include "pycore_runtime.h" // _PyRuntime
+
+#ifdef MS_WINDOWS
+# include <windows.h>
+# include <bcrypt.h>
+#else
+# include <fcntl.h>
+# ifdef HAVE_SYS_STAT_H
+# include <sys/stat.h>
+# endif
+# ifdef HAVE_LINUX_RANDOM_H
+# include <linux/random.h>
+# endif
+# if defined(HAVE_SYS_RANDOM_H) && (defined(HAVE_GETRANDOM) || defined(HAVE_GETENTROPY))
+# include <sys/random.h>
+# endif
+# if !defined(HAVE_GETRANDOM) && defined(HAVE_GETRANDOM_SYSCALL)
+# include <sys/syscall.h>
+# endif
+#endif
+
+#ifdef _Py_MEMORY_SANITIZER
+# include <sanitizer/msan_interface.h>
+#endif
+
+#if defined(__APPLE__) && defined(__has_builtin)
+# if __has_builtin(__builtin_available)
+# define HAVE_GETENTRYPY_GETRANDOM_RUNTIME __builtin_available(macOS 10.12, iOS 10.10, tvOS 10.0, watchOS 3.0, *)
+# endif
+#endif
+#ifndef HAVE_GETENTRYPY_GETRANDOM_RUNTIME
+# define HAVE_GETENTRYPY_GETRANDOM_RUNTIME 1
+#endif
+
+
+#ifdef Py_DEBUG
+int _Py_HashSecret_Initialized = 0;
+#else
+static int _Py_HashSecret_Initialized = 0;
+#endif
+
+#ifdef MS_WINDOWS
+
+/* Fill buffer with size pseudo-random bytes generated by the Windows CryptoGen
+ API. Return 0 on success, or raise an exception and return -1 on error. */
+static int
+win32_urandom(unsigned char *buffer, Py_ssize_t size, int raise)
+{
+ while (size > 0)
+ {
+ DWORD chunk = (DWORD)Py_MIN(size, PY_DWORD_MAX);
+ NTSTATUS status = BCryptGenRandom(NULL, buffer, chunk, BCRYPT_USE_SYSTEM_PREFERRED_RNG);
+ if (!BCRYPT_SUCCESS(status)) {
+ /* BCryptGenRandom() failed */
+ if (raise) {
+ PyErr_SetFromWindowsErr(0);
+ }
+ return -1;
+ }
+ buffer += chunk;
+ size -= chunk;
+ }
+ return 0;
+}
+
+#else /* !MS_WINDOWS */
+
+#if defined(HAVE_GETRANDOM) || defined(HAVE_GETRANDOM_SYSCALL)
+#define PY_GETRANDOM 1
+
+/* Call getrandom() to get random bytes:
+
+ - Return 1 on success
+ - Return 0 if getrandom() is not available (failed with ENOSYS or EPERM),
+ or if getrandom(GRND_NONBLOCK) failed with EAGAIN (system urandom not
+ initialized yet) and raise=0.
+ - Raise an exception (if raise is non-zero) and return -1 on error:
+ if getrandom() failed with EINTR, raise is non-zero and the Python signal
+ handler raised an exception, or if getrandom() failed with a different
+ error.
+
+ getrandom() is retried if it failed with EINTR: interrupted by a signal. */
+static int
+py_getrandom(void *buffer, Py_ssize_t size, int blocking, int raise)
+{
+ /* Is getrandom() supported by the running kernel? Set to 0 if getrandom()
+ failed with ENOSYS or EPERM. Need Linux kernel 3.17 or newer, or Solaris
+ 11.3 or newer */
+ static int getrandom_works = 1;
+ int flags;
+ char *dest;
+ long n;
+
+ if (!getrandom_works) {
+ return 0;
+ }
+
+ flags = blocking ? 0 : GRND_NONBLOCK;
+ dest = buffer;
+ while (0 < size) {
+#if defined(__sun) && defined(__SVR4)
+ /* Issue #26735: On Solaris, getrandom() is limited to returning up
+ to 1024 bytes. Call it multiple times if more bytes are
+ requested. */
+ n = Py_MIN(size, 1024);
+#else
+ n = Py_MIN(size, LONG_MAX);
+#endif
+
+ errno = 0;
+#ifdef HAVE_GETRANDOM
+ if (raise) {
+ Py_BEGIN_ALLOW_THREADS
+ n = getrandom(dest, n, flags);
+ Py_END_ALLOW_THREADS
+ }
+ else {
+ n = getrandom(dest, n, flags);
+ }
+# ifdef _Py_MEMORY_SANITIZER
+ if (n > 0) {
+ __msan_unpoison(dest, n);
+ }
+# endif
+#else
+ /* On Linux, use the syscall() function because the GNU libc doesn't
+ expose the Linux getrandom() syscall yet. See:
+ https://sourceware.org/bugzilla/show_bug.cgi?id=17252 */
+ if (raise) {
+ Py_BEGIN_ALLOW_THREADS
+ n = syscall(SYS_getrandom, dest, n, flags);
+ Py_END_ALLOW_THREADS
+ }
+ else {
+ n = syscall(SYS_getrandom, dest, n, flags);
+ }
+# ifdef _Py_MEMORY_SANITIZER
+ if (n > 0) {
+ __msan_unpoison(dest, n);
+ }
+# endif
+#endif
+
+ if (n < 0) {
+ /* ENOSYS: the syscall is not supported by the kernel.
+ EPERM: the syscall is blocked by a security policy (ex: SECCOMP)
+ or something else. */
+ if (errno == ENOSYS || errno == EPERM) {
+ getrandom_works = 0;
+ return 0;
+ }
+
+ /* getrandom(GRND_NONBLOCK) fails with EAGAIN if the system urandom
+ is not initialized yet. For _PyRandom_Init(), we ignore the
+ error and fall back on reading /dev/urandom which never blocks,
+ even if the system urandom is not initialized yet:
+ see the PEP 524. */
+ if (errno == EAGAIN && !raise && !blocking) {
+ return 0;
+ }
+
+ if (errno == EINTR) {
+ if (raise) {
+ if (PyErr_CheckSignals()) {
+ return -1;
+ }
+ }
+
+ /* retry getrandom() if it was interrupted by a signal */
+ continue;
+ }
+
+ if (raise) {
+ PyErr_SetFromErrno(PyExc_OSError);
+ }
+ return -1;
+ }
+
+ dest += n;
+ size -= n;
+ }
+ return 1;
+}
+
+#elif defined(HAVE_GETENTROPY)
+#define PY_GETENTROPY 1
+
+/* Fill buffer with size pseudo-random bytes generated by getentropy():
+
+ - Return 1 on success
+ - Return 0 if getentropy() syscall is not available (failed with ENOSYS or
+ EPERM).
+ - Raise an exception (if raise is non-zero) and return -1 on error:
+ if getentropy() failed with EINTR, raise is non-zero and the Python signal
+ handler raised an exception, or if getentropy() failed with a different
+ error.
+
+ getentropy() is retried if it failed with EINTR: interrupted by a signal. */
+
+#if defined(__APPLE__) && defined(__has_attribute) && __has_attribute(availability)
+static int
+py_getentropy(char *buffer, Py_ssize_t size, int raise)
+ __attribute__((availability(macos,introduced=10.12)))
+ __attribute__((availability(ios,introduced=10.0)))
+ __attribute__((availability(tvos,introduced=10.0)))
+ __attribute__((availability(watchos,introduced=3.0)));
+#endif
+
+static int
+py_getentropy(char *buffer, Py_ssize_t size, int raise)
+{
+ /* Is getentropy() supported by the running kernel? Set to 0 if
+ getentropy() failed with ENOSYS or EPERM. */
+ static int getentropy_works = 1;
+
+ if (!getentropy_works) {
+ return 0;
+ }
+
+ while (size > 0) {
+ /* getentropy() is limited to returning up to 256 bytes. Call it
+ multiple times if more bytes are requested. */
+ Py_ssize_t len = Py_MIN(size, 256);
+ int res;
+
+ if (raise) {
+ Py_BEGIN_ALLOW_THREADS
+ res = getentropy(buffer, len);
+ Py_END_ALLOW_THREADS
+ }
+ else {
+ res = getentropy(buffer, len);
+ }
+
+ if (res < 0) {
+ /* ENOSYS: the syscall is not supported by the running kernel.
+ EPERM: the syscall is blocked by a security policy (ex: SECCOMP)
+ or something else. */
+ if (errno == ENOSYS || errno == EPERM) {
+ getentropy_works = 0;
+ return 0;
+ }
+
+ if (errno == EINTR) {
+ if (raise) {
+ if (PyErr_CheckSignals()) {
+ return -1;
+ }
+ }
+
+ /* retry getentropy() if it was interrupted by a signal */
+ continue;
+ }
+
+ if (raise) {
+ PyErr_SetFromErrno(PyExc_OSError);
+ }
+ return -1;
+ }
+
+ buffer += len;
+ size -= len;
+ }
+ return 1;
+}
+#endif /* defined(HAVE_GETENTROPY) && !(defined(__sun) && defined(__SVR4)) */
+
+
+#define urandom_cache (_PyRuntime.pyhash_state.urandom_cache)
+
+/* Read random bytes from the /dev/urandom device:
+
+ - Return 0 on success
+ - Raise an exception (if raise is non-zero) and return -1 on error
+
+ Possible causes of errors:
+
+ - open() failed with ENOENT, ENXIO, ENODEV, EACCES: the /dev/urandom device
+ was not found. For example, it was removed manually or not exposed in a
+ chroot or container.
+ - open() failed with a different error
+ - fstat() failed
+ - read() failed or returned 0
+
+ read() is retried if it failed with EINTR: interrupted by a signal.
+
+ The file descriptor of the device is kept open between calls to avoid using
+ many file descriptors when run in parallel from multiple threads:
+ see the issue #18756.
+
+ st_dev and st_ino fields of the file descriptor (from fstat()) are cached to
+ check if the file descriptor was replaced by a different file (which is
+ likely a bug in the application): see the issue #21207.
+
+ If the file descriptor was closed or replaced, open a new file descriptor
+ but don't close the old file descriptor: it probably points to something
+ important for some third-party code. */
+static int
+dev_urandom(char *buffer, Py_ssize_t size, int raise)
+{
+ int fd;
+ Py_ssize_t n;
+
+ if (raise) {
+ struct _Py_stat_struct st;
+ int fstat_result;
+
+ if (urandom_cache.fd >= 0) {
+ Py_BEGIN_ALLOW_THREADS
+ fstat_result = _Py_fstat_noraise(urandom_cache.fd, &st);
+ Py_END_ALLOW_THREADS
+
+ /* Does the fd point to the same thing as before? (issue #21207) */
+ if (fstat_result
+ || st.st_dev != urandom_cache.st_dev
+ || st.st_ino != urandom_cache.st_ino) {
+ /* Something changed: forget the cached fd (but don't close it,
+ since it probably points to something important for some
+ third-party code). */
+ urandom_cache.fd = -1;
+ }
+ }
+ if (urandom_cache.fd >= 0)
+ fd = urandom_cache.fd;
+ else {
+ fd = _Py_open("/dev/urandom", O_RDONLY);
+ if (fd < 0) {
+ if (errno == ENOENT || errno == ENXIO ||
+ errno == ENODEV || errno == EACCES) {
+ PyErr_SetString(PyExc_NotImplementedError,
+ "/dev/urandom (or equivalent) not found");
+ }
+ /* otherwise, keep the OSError exception raised by _Py_open() */
+ return -1;
+ }
+ if (urandom_cache.fd >= 0) {
+ /* urandom_fd was initialized by another thread while we were
+ not holding the GIL, keep it. */
+ close(fd);
+ fd = urandom_cache.fd;
+ }
+ else {
+ if (_Py_fstat(fd, &st)) {
+ close(fd);
+ return -1;
+ }
+ else {
+ urandom_cache.fd = fd;
+ urandom_cache.st_dev = st.st_dev;
+ urandom_cache.st_ino = st.st_ino;
+ }
+ }
+ }
+
+ do {
+ n = _Py_read(fd, buffer, (size_t)size);
+ if (n == -1)
+ return -1;
+ if (n == 0) {
+ PyErr_Format(PyExc_RuntimeError,
+ "Failed to read %zi bytes from /dev/urandom",
+ size);
+ return -1;
+ }
+
+ buffer += n;
+ size -= n;
+ } while (0 < size);
+ }
+ else {
+ fd = _Py_open_noraise("/dev/urandom", O_RDONLY);
+ if (fd < 0) {
+ return -1;
+ }
+
+ while (0 < size)
+ {
+ do {
+ n = read(fd, buffer, (size_t)size);
+ } while (n < 0 && errno == EINTR);
+
+ if (n <= 0) {
+ /* stop on error or if read(size) returned 0 */
+ close(fd);
+ return -1;
+ }
+
+ buffer += n;
+ size -= n;
+ }
+ close(fd);
+ }
+ return 0;
+}
+
+static void
+dev_urandom_close(void)
+{
+ if (urandom_cache.fd >= 0) {
+ close(urandom_cache.fd);
+ urandom_cache.fd = -1;
+ }
+}
+
+#undef urandom_cache
+
+#endif /* !MS_WINDOWS */
+
+
+/* Fill buffer with pseudo-random bytes generated by a linear congruent
+ generator (LCG):
+
+ x(n+1) = (x(n) * 214013 + 2531011) % 2^32
+
+ Use bits 23..16 of x(n) to generate a byte. */
+static void
+lcg_urandom(unsigned int x0, unsigned char *buffer, size_t size)
+{
+ size_t index;
+ unsigned int x;
+
+ x = x0;
+ for (index=0; index < size; index++) {
+ x *= 214013;
+ x += 2531011;
+ /* modulo 2 ^ (8 * sizeof(int)) */
+ buffer[index] = (x >> 16) & 0xff;
+ }
+}
+
+/* Read random bytes:
+
+ - Return 0 on success
+ - Raise an exception (if raise is non-zero) and return -1 on error
+
+ Used sources of entropy ordered by preference, preferred source first:
+
+ - BCryptGenRandom() on Windows
+ - getrandom() function (ex: Linux and Solaris): call py_getrandom()
+ - getentropy() function (ex: OpenBSD): call py_getentropy()
+ - /dev/urandom device
+
+ Read from the /dev/urandom device if getrandom() or getentropy() function
+ is not available or does not work.
+
+ Prefer getrandom() over getentropy() because getrandom() supports blocking
+ and non-blocking mode: see the PEP 524. Python requires non-blocking RNG at
+ startup to initialize its hash secret, but os.urandom() must block until the
+ system urandom is initialized (at least on Linux 3.17 and newer).
+
+ Prefer getrandom() and getentropy() over reading directly /dev/urandom
+ because these functions don't need file descriptors and so avoid ENFILE or
+ EMFILE errors (too many open files): see the issue #18756.
+
+ Only the getrandom() function supports non-blocking mode.
+
+ Only use RNG running in the kernel. They are more secure because it is
+ harder to get the internal state of a RNG running in the kernel land than a
+ RNG running in the user land. The kernel has a direct access to the hardware
+ and has access to hardware RNG, they are used as entropy sources.
+
+ Note: the OpenSSL RAND_pseudo_bytes() function does not automatically reseed
+ its RNG on fork(), two child processes (with the same pid) generate the same
+ random numbers: see issue #18747. Kernel RNGs don't have this issue,
+ they have access to good quality entropy sources.
+
+ If raise is zero:
+
+ - Don't raise an exception on error
+ - Don't call the Python signal handler (don't call PyErr_CheckSignals()) if
+ a function fails with EINTR: retry directly the interrupted function
+ - Don't release the GIL to call functions.
+*/
+static int
+pyurandom(void *buffer, Py_ssize_t size, int blocking, int raise)
+{
+#if defined(PY_GETRANDOM) || defined(PY_GETENTROPY)
+ int res;
+#endif
+
+ if (size < 0) {
+ if (raise) {
+ PyErr_Format(PyExc_ValueError,
+ "negative argument not allowed");
+ }
+ return -1;
+ }
+
+ if (size == 0) {
+ return 0;
+ }
+
+#ifdef MS_WINDOWS
+ return win32_urandom((unsigned char *)buffer, size, raise);
+#else
+
+#if defined(PY_GETRANDOM) || defined(PY_GETENTROPY)
+ if (HAVE_GETENTRYPY_GETRANDOM_RUNTIME) {
+#ifdef PY_GETRANDOM
+ res = py_getrandom(buffer, size, blocking, raise);
+#else
+ res = py_getentropy(buffer, size, raise);
+#endif
+ if (res < 0) {
+ return -1;
+ }
+ if (res == 1) {
+ return 0;
+ }
+ /* getrandom() or getentropy() function is not available: failed with
+ ENOSYS or EPERM. Fall back on reading from /dev/urandom. */
+ } /* end of availability block */
+#endif
+
+ return dev_urandom(buffer, size, raise);
+#endif
+}
+
+/* Fill buffer with size pseudo-random bytes from the operating system random
+ number generator (RNG). It is suitable for most cryptographic purposes
+ except long living private keys for asymmetric encryption.
+
+ On Linux 3.17 and newer, the getrandom() syscall is used in blocking mode:
+ block until the system urandom entropy pool is initialized (128 bits are
+ collected by the kernel).
+
+ Return 0 on success. Raise an exception and return -1 on error. */
+int
+_PyOS_URandom(void *buffer, Py_ssize_t size)
+{
+ return pyurandom(buffer, size, 1, 1);
+}
+
+/* Fill buffer with size pseudo-random bytes from the operating system random
+ number generator (RNG). It is not suitable for cryptographic purpose.
+
+ On Linux 3.17 and newer (when getrandom() syscall is used), if the system
+ urandom is not initialized yet, the function returns "weak" entropy read
+ from /dev/urandom.
+
+ Return 0 on success. Raise an exception and return -1 on error. */
+int
+_PyOS_URandomNonblock(void *buffer, Py_ssize_t size)
+{
+ return pyurandom(buffer, size, 0, 1);
+}
+
+
+PyStatus
+_Py_HashRandomization_Init(const PyConfig *config)
+{
+ void *secret = &_Py_HashSecret;
+ Py_ssize_t secret_size = sizeof(_Py_HashSecret_t);
+
+ if (_Py_HashSecret_Initialized) {
+ return _PyStatus_OK();
+ }
+ _Py_HashSecret_Initialized = 1;
+
+ if (config->use_hash_seed) {
+ if (config->hash_seed == 0) {
+ /* disable the randomized hash */
+ memset(secret, 0, secret_size);
+ }
+ else {
+ /* use the specified hash seed */
+ lcg_urandom(config->hash_seed, secret, secret_size);
+ }
+ }
+ else {
+ /* use a random hash seed */
+ int res;
+
+ /* _PyRandom_Init() is called very early in the Python initialization
+ and so exceptions cannot be used (use raise=0).
+
+ _PyRandom_Init() must not block Python initialization: call
+ pyurandom() is non-blocking mode (blocking=0): see the PEP 524. */
+ res = pyurandom(secret, secret_size, 0, 0);
+ if (res < 0) {
+ return _PyStatus_ERR("failed to get random numbers "
+ "to initialize Python");
+ }
+ }
+ return _PyStatus_OK();
+}
+
+
+void
+_Py_HashRandomization_Fini(void)
+{
+#ifndef MS_WINDOWS
+ dev_urandom_close();
+#endif
+}
diff --git a/contrib/tools/python3/Python/ceval.c b/contrib/tools/python3/Python/ceval.c
new file mode 100644
index 00000000000..6110883ca0e
--- /dev/null
+++ b/contrib/tools/python3/Python/ceval.c
@@ -0,0 +1,2795 @@
+/* Execute compiled code */
+
+#define _PY_INTERPRETER
+
+#include "Python.h"
+#include "pycore_abstract.h" // _PyIndex_Check()
+#include "pycore_call.h" // _PyObject_FastCallDictTstate()
+#include "pycore_ceval.h" // _PyEval_SignalAsyncExc()
+#include "pycore_code.h"
+#include "pycore_function.h"
+#include "pycore_intrinsics.h"
+#include "pycore_long.h" // _PyLong_GetZero()
+#include "pycore_instruments.h"
+#include "pycore_object.h" // _PyObject_GC_TRACK()
+#include "pycore_moduleobject.h" // PyModuleObject
+#include "pycore_opcode.h" // EXTRA_CASES
+#include "pycore_pyerrors.h" // _PyErr_GetRaisedException()
+#include "pycore_pymem.h" // _PyMem_IsPtrFreed()
+#include "pycore_pystate.h" // _PyInterpreterState_GET()
+#include "pycore_range.h" // _PyRangeIterObject
+#include "pycore_sliceobject.h" // _PyBuildSlice_ConsumeRefs
+#include "pycore_sysmodule.h" // _PySys_Audit()
+#include "pycore_tuple.h" // _PyTuple_ITEMS()
+#include "pycore_typeobject.h" // _PySuper_Lookup()
+#include "pycore_emscripten_signal.h" // _Py_CHECK_EMSCRIPTEN_SIGNALS
+
+#include "pycore_dict.h"
+#include "dictobject.h"
+#include "pycore_frame.h"
+#include "frameobject.h" // _PyInterpreterFrame_GetLine
+#include "opcode.h"
+#include "pydtrace.h"
+#include "setobject.h"
+#include "structmember.h" // struct PyMemberDef, T_OFFSET_EX
+
+#include <ctype.h>
+#include <stdbool.h>
+
+#ifdef Py_DEBUG
+ /* For debugging the interpreter: */
+# define LLTRACE 1 /* Low-level trace feature */
+#endif
+
+#if !defined(Py_BUILD_CORE)
+# error "ceval.c must be build with Py_BUILD_CORE define for best performance"
+#endif
+
+#if !defined(Py_DEBUG) && !defined(Py_TRACE_REFS)
+// GH-89279: The MSVC compiler does not inline these static inline functions
+// in PGO build in _PyEval_EvalFrameDefault(), because this function is over
+// the limit of PGO, and that limit cannot be configured.
+// Define them as macros to make sure that they are always inlined by the
+// preprocessor.
+
+#undef Py_DECREF
+#define Py_DECREF(arg) \
+ do { \
+ PyObject *op = _PyObject_CAST(arg); \
+ if (_Py_IsImmortal(op)) { \
+ break; \
+ } \
+ _Py_DECREF_STAT_INC(); \
+ if (--op->ob_refcnt == 0) { \
+ destructor dealloc = Py_TYPE(op)->tp_dealloc; \
+ (*dealloc)(op); \
+ } \
+ } while (0)
+
+#undef Py_XDECREF
+#define Py_XDECREF(arg) \
+ do { \
+ PyObject *xop = _PyObject_CAST(arg); \
+ if (xop != NULL) { \
+ Py_DECREF(xop); \
+ } \
+ } while (0)
+
+#undef Py_IS_TYPE
+#define Py_IS_TYPE(ob, type) \
+ (_PyObject_CAST(ob)->ob_type == (type))
+
+#undef _Py_DECREF_SPECIALIZED
+#define _Py_DECREF_SPECIALIZED(arg, dealloc) \
+ do { \
+ PyObject *op = _PyObject_CAST(arg); \
+ if (_Py_IsImmortal(op)) { \
+ break; \
+ } \
+ _Py_DECREF_STAT_INC(); \
+ if (--op->ob_refcnt == 0) { \
+ destructor d = (destructor)(dealloc); \
+ d(op); \
+ } \
+ } while (0)
+#endif
+
+// GH-89279: Similar to above, force inlining by using a macro.
+#if defined(_MSC_VER) && SIZEOF_INT == 4
+#define _Py_atomic_load_relaxed_int32(ATOMIC_VAL) (assert(sizeof((ATOMIC_VAL)->_value) == 4), *((volatile int*)&((ATOMIC_VAL)->_value)))
+#else
+#define _Py_atomic_load_relaxed_int32(ATOMIC_VAL) _Py_atomic_load_relaxed(ATOMIC_VAL)
+#endif
+
+
+#ifdef LLTRACE
+static void
+dump_stack(_PyInterpreterFrame *frame, PyObject **stack_pointer)
+{
+ PyObject **stack_base = _PyFrame_Stackbase(frame);
+ PyObject *exc = PyErr_GetRaisedException();
+ printf(" stack=[");
+ for (PyObject **ptr = stack_base; ptr < stack_pointer; ptr++) {
+ if (ptr != stack_base) {
+ printf(", ");
+ }
+ if (PyObject_Print(*ptr, stdout, 0) != 0) {
+ PyErr_Clear();
+ printf("<%s object at %p>",
+ Py_TYPE(*ptr)->tp_name, (void *)(*ptr));
+ }
+ }
+ printf("]\n");
+ fflush(stdout);
+ PyErr_SetRaisedException(exc);
+}
+
+static void
+lltrace_instruction(_PyInterpreterFrame *frame,
+ PyObject **stack_pointer,
+ _Py_CODEUNIT *next_instr)
+{
+ /* This dump_stack() operation is risky, since the repr() of some
+ objects enters the interpreter recursively. It is also slow.
+ So you might want to comment it out. */
+ dump_stack(frame, stack_pointer);
+ int oparg = next_instr->op.arg;
+ int opcode = next_instr->op.code;
+ const char *opname = _PyOpcode_OpName[opcode];
+ assert(opname != NULL);
+ int offset = (int)(next_instr - _PyCode_CODE(frame->f_code));
+ if (HAS_ARG((int)_PyOpcode_Deopt[opcode])) {
+ printf("%d: %s %d\n", offset * 2, opname, oparg);
+ }
+ else {
+ printf("%d: %s\n", offset * 2, opname);
+ }
+ fflush(stdout);
+}
+static void
+lltrace_resume_frame(_PyInterpreterFrame *frame)
+{
+ PyObject *fobj = frame->f_funcobj;
+ if (frame->owner == FRAME_OWNED_BY_CSTACK ||
+ fobj == NULL ||
+ !PyFunction_Check(fobj)
+ ) {
+ printf("\nResuming frame.\n");
+ return;
+ }
+ PyFunctionObject *f = (PyFunctionObject *)fobj;
+ PyObject *exc = PyErr_GetRaisedException();
+ PyObject *name = f->func_qualname;
+ if (name == NULL) {
+ name = f->func_name;
+ }
+ printf("\nResuming frame");
+ if (name) {
+ printf(" for ");
+ if (PyObject_Print(name, stdout, 0) < 0) {
+ PyErr_Clear();
+ }
+ }
+ if (f->func_module) {
+ printf(" in module ");
+ if (PyObject_Print(f->func_module, stdout, 0) < 0) {
+ PyErr_Clear();
+ }
+ }
+ printf("\n");
+ fflush(stdout);
+ PyErr_SetRaisedException(exc);
+}
+#endif
+
+static void monitor_raise(PyThreadState *tstate,
+ _PyInterpreterFrame *frame,
+ _Py_CODEUNIT *instr);
+static void monitor_reraise(PyThreadState *tstate,
+ _PyInterpreterFrame *frame,
+ _Py_CODEUNIT *instr);
+static int monitor_stop_iteration(PyThreadState *tstate,
+ _PyInterpreterFrame *frame,
+ _Py_CODEUNIT *instr);
+static void monitor_unwind(PyThreadState *tstate,
+ _PyInterpreterFrame *frame,
+ _Py_CODEUNIT *instr);
+static int monitor_handled(PyThreadState *tstate,
+ _PyInterpreterFrame *frame,
+ _Py_CODEUNIT *instr, PyObject *exc);
+static void monitor_throw(PyThreadState *tstate,
+ _PyInterpreterFrame *frame,
+ _Py_CODEUNIT *instr);
+
+static PyObject * import_name(PyThreadState *, _PyInterpreterFrame *,
+ PyObject *, PyObject *, PyObject *);
+static PyObject * import_from(PyThreadState *, PyObject *, PyObject *);
+static void format_exc_check_arg(PyThreadState *, PyObject *, const char *, PyObject *);
+static void format_exc_unbound(PyThreadState *tstate, PyCodeObject *co, int oparg);
+static int check_args_iterable(PyThreadState *, PyObject *func, PyObject *vararg);
+static int check_except_type_valid(PyThreadState *tstate, PyObject* right);
+static int check_except_star_type_valid(PyThreadState *tstate, PyObject* right);
+static void format_kwargs_error(PyThreadState *, PyObject *func, PyObject *kwargs);
+static void format_awaitable_error(PyThreadState *, PyTypeObject *, int);
+static int get_exception_handler(PyCodeObject *, int, int*, int*, int*);
+static _PyInterpreterFrame *
+_PyEvalFramePushAndInit(PyThreadState *tstate, PyFunctionObject *func,
+ PyObject *locals, PyObject* const* args,
+ size_t argcount, PyObject *kwnames);
+static _PyInterpreterFrame *
+_PyEvalFramePushAndInit_Ex(PyThreadState *tstate, PyFunctionObject *func,
+ PyObject *locals, Py_ssize_t nargs, PyObject *callargs, PyObject *kwargs);
+static void
+_PyEvalFrameClearAndPop(PyThreadState *tstate, _PyInterpreterFrame *frame);
+
+#define UNBOUNDLOCAL_ERROR_MSG \
+ "cannot access local variable '%s' where it is not associated with a value"
+#define UNBOUNDFREE_ERROR_MSG \
+ "cannot access free variable '%s' where it is not associated with a" \
+ " value in enclosing scope"
+
+#ifdef HAVE_ERRNO_H
+#include <errno.h>
+#endif
+
+int
+Py_GetRecursionLimit(void)
+{
+ PyInterpreterState *interp = _PyInterpreterState_GET();
+ return interp->ceval.recursion_limit;
+}
+
+void
+Py_SetRecursionLimit(int new_limit)
+{
+ PyInterpreterState *interp = _PyInterpreterState_GET();
+ interp->ceval.recursion_limit = new_limit;
+ for (PyThreadState *p = interp->threads.head; p != NULL; p = p->next) {
+ int depth = p->py_recursion_limit - p->py_recursion_remaining;
+ p->py_recursion_limit = new_limit;
+ p->py_recursion_remaining = new_limit - depth;
+ }
+}
+
+/* The function _Py_EnterRecursiveCallTstate() only calls _Py_CheckRecursiveCall()
+ if the recursion_depth reaches recursion_limit. */
+int
+_Py_CheckRecursiveCall(PyThreadState *tstate, const char *where)
+{
+#ifdef USE_STACKCHECK
+ if (PyOS_CheckStack()) {
+ ++tstate->c_recursion_remaining;
+ _PyErr_SetString(tstate, PyExc_MemoryError, "Stack overflow");
+ return -1;
+ }
+#endif
+ if (tstate->recursion_headroom) {
+ if (tstate->c_recursion_remaining < -50) {
+ /* Overflowing while handling an overflow. Give up. */
+ Py_FatalError("Cannot recover from stack overflow.");
+ }
+ }
+ else {
+ if (tstate->c_recursion_remaining <= 0) {
+ tstate->recursion_headroom++;
+ _PyErr_Format(tstate, PyExc_RecursionError,
+ "maximum recursion depth exceeded%s",
+ where);
+ tstate->recursion_headroom--;
+ ++tstate->c_recursion_remaining;
+ return -1;
+ }
+ }
+ return 0;
+}
+
+
+static const binaryfunc binary_ops[] = {
+ [NB_ADD] = PyNumber_Add,
+ [NB_AND] = PyNumber_And,
+ [NB_FLOOR_DIVIDE] = PyNumber_FloorDivide,
+ [NB_LSHIFT] = PyNumber_Lshift,
+ [NB_MATRIX_MULTIPLY] = PyNumber_MatrixMultiply,
+ [NB_MULTIPLY] = PyNumber_Multiply,
+ [NB_REMAINDER] = PyNumber_Remainder,
+ [NB_OR] = PyNumber_Or,
+ [NB_POWER] = _PyNumber_PowerNoMod,
+ [NB_RSHIFT] = PyNumber_Rshift,
+ [NB_SUBTRACT] = PyNumber_Subtract,
+ [NB_TRUE_DIVIDE] = PyNumber_TrueDivide,
+ [NB_XOR] = PyNumber_Xor,
+ [NB_INPLACE_ADD] = PyNumber_InPlaceAdd,
+ [NB_INPLACE_AND] = PyNumber_InPlaceAnd,
+ [NB_INPLACE_FLOOR_DIVIDE] = PyNumber_InPlaceFloorDivide,
+ [NB_INPLACE_LSHIFT] = PyNumber_InPlaceLshift,
+ [NB_INPLACE_MATRIX_MULTIPLY] = PyNumber_InPlaceMatrixMultiply,
+ [NB_INPLACE_MULTIPLY] = PyNumber_InPlaceMultiply,
+ [NB_INPLACE_REMAINDER] = PyNumber_InPlaceRemainder,
+ [NB_INPLACE_OR] = PyNumber_InPlaceOr,
+ [NB_INPLACE_POWER] = _PyNumber_InPlacePowerNoMod,
+ [NB_INPLACE_RSHIFT] = PyNumber_InPlaceRshift,
+ [NB_INPLACE_SUBTRACT] = PyNumber_InPlaceSubtract,
+ [NB_INPLACE_TRUE_DIVIDE] = PyNumber_InPlaceTrueDivide,
+ [NB_INPLACE_XOR] = PyNumber_InPlaceXor,
+};
+
+
+// PEP 634: Structural Pattern Matching
+
+
+// Return a tuple of values corresponding to keys, with error checks for
+// duplicate/missing keys.
+static PyObject*
+match_keys(PyThreadState *tstate, PyObject *map, PyObject *keys)
+{
+ assert(PyTuple_CheckExact(keys));
+ Py_ssize_t nkeys = PyTuple_GET_SIZE(keys);
+ if (!nkeys) {
+ // No keys means no items.
+ return PyTuple_New(0);
+ }
+ PyObject *seen = NULL;
+ PyObject *dummy = NULL;
+ PyObject *values = NULL;
+ PyObject *get = NULL;
+ // We use the two argument form of map.get(key, default) for two reasons:
+ // - Atomically check for a key and get its value without error handling.
+ // - Don't cause key creation or resizing in dict subclasses like
+ // collections.defaultdict that define __missing__ (or similar).
+ int meth_found = _PyObject_GetMethod(map, &_Py_ID(get), &get);
+ if (get == NULL) {
+ goto fail;
+ }
+ seen = PySet_New(NULL);
+ if (seen == NULL) {
+ goto fail;
+ }
+ // dummy = object()
+ dummy = _PyObject_CallNoArgs((PyObject *)&PyBaseObject_Type);
+ if (dummy == NULL) {
+ goto fail;
+ }
+ values = PyTuple_New(nkeys);
+ if (values == NULL) {
+ goto fail;
+ }
+ for (Py_ssize_t i = 0; i < nkeys; i++) {
+ PyObject *key = PyTuple_GET_ITEM(keys, i);
+ if (PySet_Contains(seen, key) || PySet_Add(seen, key)) {
+ if (!_PyErr_Occurred(tstate)) {
+ // Seen it before!
+ _PyErr_Format(tstate, PyExc_ValueError,
+ "mapping pattern checks duplicate key (%R)", key);
+ }
+ goto fail;
+ }
+ PyObject *args[] = { map, key, dummy };
+ PyObject *value = NULL;
+ if (meth_found) {
+ value = PyObject_Vectorcall(get, args, 3, NULL);
+ }
+ else {
+ value = PyObject_Vectorcall(get, &args[1], 2, NULL);
+ }
+ if (value == NULL) {
+ goto fail;
+ }
+ if (value == dummy) {
+ // key not in map!
+ Py_DECREF(value);
+ Py_DECREF(values);
+ // Return None:
+ values = Py_NewRef(Py_None);
+ goto done;
+ }
+ PyTuple_SET_ITEM(values, i, value);
+ }
+ // Success:
+done:
+ Py_DECREF(get);
+ Py_DECREF(seen);
+ Py_DECREF(dummy);
+ return values;
+fail:
+ Py_XDECREF(get);
+ Py_XDECREF(seen);
+ Py_XDECREF(dummy);
+ Py_XDECREF(values);
+ return NULL;
+}
+
+// Extract a named attribute from the subject, with additional bookkeeping to
+// raise TypeErrors for repeated lookups. On failure, return NULL (with no
+// error set). Use _PyErr_Occurred(tstate) to disambiguate.
+static PyObject*
+match_class_attr(PyThreadState *tstate, PyObject *subject, PyObject *type,
+ PyObject *name, PyObject *seen)
+{
+ assert(PyUnicode_CheckExact(name));
+ assert(PySet_CheckExact(seen));
+ if (PySet_Contains(seen, name) || PySet_Add(seen, name)) {
+ if (!_PyErr_Occurred(tstate)) {
+ // Seen it before!
+ _PyErr_Format(tstate, PyExc_TypeError,
+ "%s() got multiple sub-patterns for attribute %R",
+ ((PyTypeObject*)type)->tp_name, name);
+ }
+ return NULL;
+ }
+ PyObject *attr = PyObject_GetAttr(subject, name);
+ if (attr == NULL && _PyErr_ExceptionMatches(tstate, PyExc_AttributeError)) {
+ _PyErr_Clear(tstate);
+ }
+ return attr;
+}
+
+// On success (match), return a tuple of extracted attributes. On failure (no
+// match), return NULL. Use _PyErr_Occurred(tstate) to disambiguate.
+static PyObject*
+match_class(PyThreadState *tstate, PyObject *subject, PyObject *type,
+ Py_ssize_t nargs, PyObject *kwargs)
+{
+ if (!PyType_Check(type)) {
+ const char *e = "called match pattern must be a class";
+ _PyErr_Format(tstate, PyExc_TypeError, e);
+ return NULL;
+ }
+ assert(PyTuple_CheckExact(kwargs));
+ // First, an isinstance check:
+ if (PyObject_IsInstance(subject, type) <= 0) {
+ return NULL;
+ }
+ // So far so good:
+ PyObject *seen = PySet_New(NULL);
+ if (seen == NULL) {
+ return NULL;
+ }
+ PyObject *attrs = PyList_New(0);
+ if (attrs == NULL) {
+ Py_DECREF(seen);
+ return NULL;
+ }
+ // NOTE: From this point on, goto fail on failure:
+ PyObject *match_args = NULL;
+ // First, the positional subpatterns:
+ if (nargs) {
+ int match_self = 0;
+ match_args = PyObject_GetAttrString(type, "__match_args__");
+ if (match_args) {
+ if (!PyTuple_CheckExact(match_args)) {
+ const char *e = "%s.__match_args__ must be a tuple (got %s)";
+ _PyErr_Format(tstate, PyExc_TypeError, e,
+ ((PyTypeObject *)type)->tp_name,
+ Py_TYPE(match_args)->tp_name);
+ goto fail;
+ }
+ }
+ else if (_PyErr_ExceptionMatches(tstate, PyExc_AttributeError)) {
+ _PyErr_Clear(tstate);
+ // _Py_TPFLAGS_MATCH_SELF is only acknowledged if the type does not
+ // define __match_args__. This is natural behavior for subclasses:
+ // it's as if __match_args__ is some "magic" value that is lost as
+ // soon as they redefine it.
+ match_args = PyTuple_New(0);
+ match_self = PyType_HasFeature((PyTypeObject*)type,
+ _Py_TPFLAGS_MATCH_SELF);
+ }
+ else {
+ goto fail;
+ }
+ assert(PyTuple_CheckExact(match_args));
+ Py_ssize_t allowed = match_self ? 1 : PyTuple_GET_SIZE(match_args);
+ if (allowed < nargs) {
+ const char *plural = (allowed == 1) ? "" : "s";
+ _PyErr_Format(tstate, PyExc_TypeError,
+ "%s() accepts %d positional sub-pattern%s (%d given)",
+ ((PyTypeObject*)type)->tp_name,
+ allowed, plural, nargs);
+ goto fail;
+ }
+ if (match_self) {
+ // Easy. Copy the subject itself, and move on to kwargs.
+ if (PyList_Append(attrs, subject) < 0) {
+ goto fail;
+ }
+ }
+ else {
+ for (Py_ssize_t i = 0; i < nargs; i++) {
+ PyObject *name = PyTuple_GET_ITEM(match_args, i);
+ if (!PyUnicode_CheckExact(name)) {
+ _PyErr_Format(tstate, PyExc_TypeError,
+ "__match_args__ elements must be strings "
+ "(got %s)", Py_TYPE(name)->tp_name);
+ goto fail;
+ }
+ PyObject *attr = match_class_attr(tstate, subject, type, name,
+ seen);
+ if (attr == NULL) {
+ goto fail;
+ }
+ if (PyList_Append(attrs, attr) < 0) {
+ Py_DECREF(attr);
+ goto fail;
+ }
+ Py_DECREF(attr);
+ }
+ }
+ Py_CLEAR(match_args);
+ }
+ // Finally, the keyword subpatterns:
+ for (Py_ssize_t i = 0; i < PyTuple_GET_SIZE(kwargs); i++) {
+ PyObject *name = PyTuple_GET_ITEM(kwargs, i);
+ PyObject *attr = match_class_attr(tstate, subject, type, name, seen);
+ if (attr == NULL) {
+ goto fail;
+ }
+ if (PyList_Append(attrs, attr) < 0) {
+ Py_DECREF(attr);
+ goto fail;
+ }
+ Py_DECREF(attr);
+ }
+ Py_SETREF(attrs, PyList_AsTuple(attrs));
+ Py_DECREF(seen);
+ return attrs;
+fail:
+ // We really don't care whether an error was raised or not... that's our
+ // caller's problem. All we know is that the match failed.
+ Py_XDECREF(match_args);
+ Py_DECREF(seen);
+ Py_DECREF(attrs);
+ return NULL;
+}
+
+
+static int do_raise(PyThreadState *tstate, PyObject *exc, PyObject *cause);
+static int exception_group_match(
+ PyObject* exc_value, PyObject *match_type,
+ PyObject **match, PyObject **rest);
+
+static int unpack_iterable(PyThreadState *, PyObject *, int, int, PyObject **);
+
+PyObject *
+PyEval_EvalCode(PyObject *co, PyObject *globals, PyObject *locals)
+{
+ PyThreadState *tstate = _PyThreadState_GET();
+ if (locals == NULL) {
+ locals = globals;
+ }
+ PyObject *builtins = _PyEval_BuiltinsFromGlobals(tstate, globals); // borrowed ref
+ if (builtins == NULL) {
+ return NULL;
+ }
+ PyFrameConstructor desc = {
+ .fc_globals = globals,
+ .fc_builtins = builtins,
+ .fc_name = ((PyCodeObject *)co)->co_name,
+ .fc_qualname = ((PyCodeObject *)co)->co_name,
+ .fc_code = co,
+ .fc_defaults = NULL,
+ .fc_kwdefaults = NULL,
+ .fc_closure = NULL
+ };
+ PyFunctionObject *func = _PyFunction_FromConstructor(&desc);
+ if (func == NULL) {
+ return NULL;
+ }
+ EVAL_CALL_STAT_INC(EVAL_CALL_LEGACY);
+ PyObject *res = _PyEval_Vector(tstate, func, locals, NULL, 0, NULL);
+ Py_DECREF(func);
+ return res;
+}
+
+
+/* Interpreter main loop */
+
+PyObject *
+PyEval_EvalFrame(PyFrameObject *f)
+{
+ /* Function kept for backward compatibility */
+ PyThreadState *tstate = _PyThreadState_GET();
+ return _PyEval_EvalFrame(tstate, f->f_frame, 0);
+}
+
+PyObject *
+PyEval_EvalFrameEx(PyFrameObject *f, int throwflag)
+{
+ PyThreadState *tstate = _PyThreadState_GET();
+ return _PyEval_EvalFrame(tstate, f->f_frame, throwflag);
+}
+
+#include "ceval_macros.h"
+
+
+int _Py_CheckRecursiveCallPy(
+ PyThreadState *tstate)
+{
+ if (tstate->recursion_headroom) {
+ if (tstate->py_recursion_remaining < -50) {
+ /* Overflowing while handling an overflow. Give up. */
+ Py_FatalError("Cannot recover from Python stack overflow.");
+ }
+ }
+ else {
+ if (tstate->py_recursion_remaining <= 0) {
+ tstate->recursion_headroom++;
+ _PyErr_Format(tstate, PyExc_RecursionError,
+ "maximum recursion depth exceeded");
+ tstate->recursion_headroom--;
+ return -1;
+ }
+ }
+ return 0;
+}
+
+static inline int _Py_EnterRecursivePy(PyThreadState *tstate) {
+ return (tstate->py_recursion_remaining-- <= 0) &&
+ _Py_CheckRecursiveCallPy(tstate);
+}
+
+
+static inline void _Py_LeaveRecursiveCallPy(PyThreadState *tstate) {
+ tstate->py_recursion_remaining++;
+}
+
+
+/* Disable unused label warnings. They are handy for debugging, even
+ if computed gotos aren't used. */
+
+/* TBD - what about other compilers? */
+#if defined(__GNUC__)
+# pragma GCC diagnostic push
+# pragma GCC diagnostic ignored "-Wunused-label"
+#elif defined(_MSC_VER) /* MS_WINDOWS */
+# pragma warning(push)
+# pragma warning(disable:4102)
+#endif
+
+
+/* _PyEval_EvalFrameDefault() is a *big* function,
+ * so consume 3 units of C stack */
+#define PY_EVAL_C_STACK_UNITS 2
+
+PyObject* _Py_HOT_FUNCTION
+_PyEval_EvalFrameDefault(PyThreadState *tstate, _PyInterpreterFrame *frame, int throwflag)
+{
+ _Py_EnsureTstateNotNULL(tstate);
+ CALL_STAT_INC(pyeval_calls);
+
+#if USE_COMPUTED_GOTOS
+/* Import the static jump table */
+#include "opcode_targets.h"
+#endif
+
+#ifdef Py_STATS
+ int lastopcode = 0;
+#endif
+ // opcode is an 8-bit value to improve the code generated by MSVC
+ // for the big switch below (in combination with the EXTRA_CASES macro).
+ uint8_t opcode; /* Current opcode */
+ int oparg; /* Current opcode argument, if any */
+#ifdef LLTRACE
+ int lltrace = 0;
+#endif
+
+ _PyCFrame cframe;
+ _PyInterpreterFrame entry_frame;
+ PyObject *kwnames = NULL; // Borrowed reference. Reset by CALL instructions.
+
+ /* WARNING: Because the _PyCFrame lives on the C stack,
+ * but can be accessed from a heap allocated object (tstate)
+ * strict stack discipline must be maintained.
+ */
+ _PyCFrame *prev_cframe = tstate->cframe;
+ cframe.previous = prev_cframe;
+ tstate->cframe = &cframe;
+
+ assert(tstate->interp->interpreter_trampoline != NULL);
+#ifdef Py_DEBUG
+ /* Set these to invalid but identifiable values for debugging. */
+ entry_frame.f_funcobj = (PyObject*)0xaaa0;
+ entry_frame.f_locals = (PyObject*)0xaaa1;
+ entry_frame.frame_obj = (PyFrameObject*)0xaaa2;
+ entry_frame.f_globals = (PyObject*)0xaaa3;
+ entry_frame.f_builtins = (PyObject*)0xaaa4;
+#endif
+ entry_frame.f_code = tstate->interp->interpreter_trampoline;
+ entry_frame.prev_instr =
+ _PyCode_CODE(tstate->interp->interpreter_trampoline);
+ entry_frame.stacktop = 0;
+ entry_frame.owner = FRAME_OWNED_BY_CSTACK;
+ entry_frame.return_offset = 0;
+ /* Push frame */
+ entry_frame.previous = prev_cframe->current_frame;
+ frame->previous = &entry_frame;
+ cframe.current_frame = frame;
+
+ tstate->c_recursion_remaining -= (PY_EVAL_C_STACK_UNITS - 1);
+ if (_Py_EnterRecursiveCallTstate(tstate, "")) {
+ tstate->c_recursion_remaining--;
+ tstate->py_recursion_remaining--;
+ goto exit_unwind;
+ }
+
+ /* support for generator.throw() */
+ if (throwflag) {
+ if (_Py_EnterRecursivePy(tstate)) {
+ goto exit_unwind;
+ }
+ /* Because this avoids the RESUME,
+ * we need to update instrumentation */
+ _Py_Instrument(frame->f_code, tstate->interp);
+ monitor_throw(tstate, frame, frame->prev_instr);
+ /* TO DO -- Monitor throw entry. */
+ goto resume_with_error;
+ }
+
+ /* Local "register" variables.
+ * These are cached values from the frame and code object. */
+
+ _Py_CODEUNIT *next_instr;
+ PyObject **stack_pointer;
+
+/* Sets the above local variables from the frame */
+#define SET_LOCALS_FROM_FRAME() \
+ assert(_PyInterpreterFrame_LASTI(frame) >= -1); \
+ /* Jump back to the last instruction executed... */ \
+ next_instr = frame->prev_instr + 1; \
+ stack_pointer = _PyFrame_GetStackPointer(frame);
+
+start_frame:
+ if (_Py_EnterRecursivePy(tstate)) {
+ goto exit_unwind;
+ }
+
+resume_frame:
+ SET_LOCALS_FROM_FRAME();
+
+#ifdef LLTRACE
+ {
+ if (frame != &entry_frame) {
+ int r = PyDict_Contains(GLOBALS(), &_Py_ID(__lltrace__));
+ if (r < 0) {
+ goto exit_unwind;
+ }
+ lltrace = r;
+ }
+ if (lltrace) {
+ lltrace_resume_frame(frame);
+ }
+ }
+#endif
+
+#ifdef Py_DEBUG
+ /* _PyEval_EvalFrameDefault() must not be called with an exception set,
+ because it can clear it (directly or indirectly) and so the
+ caller loses its exception */
+ assert(!_PyErr_Occurred(tstate));
+#endif
+
+ DISPATCH();
+
+handle_eval_breaker:
+
+ /* Do periodic things, like check for signals and async I/0.
+ * We need to do reasonably frequently, but not too frequently.
+ * All loops should include a check of the eval breaker.
+ * We also check on return from any builtin function.
+ *
+ * ## More Details ###
+ *
+ * The eval loop (this function) normally executes the instructions
+ * of a code object sequentially. However, the runtime supports a
+ * number of out-of-band execution scenarios that may pause that
+ * sequential execution long enough to do that out-of-band work
+ * in the current thread using the current PyThreadState.
+ *
+ * The scenarios include:
+ *
+ * - cyclic garbage collection
+ * - GIL drop requests
+ * - "async" exceptions
+ * - "pending calls" (some only in the main thread)
+ * - signal handling (only in the main thread)
+ *
+ * When the need for one of the above is detected, the eval loop
+ * pauses long enough to handle the detected case. Then, if doing
+ * so didn't trigger an exception, the eval loop resumes executing
+ * the sequential instructions.
+ *
+ * To make this work, the eval loop periodically checks if any
+ * of the above needs to happen. The individual checks can be
+ * expensive if computed each time, so a while back we switched
+ * to using pre-computed, per-interpreter variables for the checks,
+ * and later consolidated that to a single "eval breaker" variable
+ * (now a PyInterpreterState field).
+ *
+ * For the longest time, the eval breaker check would happen
+ * frequently, every 5 or so times through the loop, regardless
+ * of what instruction ran last or what would run next. Then, in
+ * early 2021 (gh-18334, commit 4958f5d), we switched to checking
+ * the eval breaker less frequently, by hard-coding the check to
+ * specific places in the eval loop (e.g. certain instructions).
+ * The intent then was to check after returning from calls
+ * and on the back edges of loops.
+ *
+ * In addition to being more efficient, that approach keeps
+ * the eval loop from running arbitrary code between instructions
+ * that don't handle that well. (See gh-74174.)
+ *
+ * Currently, the eval breaker check happens here at the
+ * "handle_eval_breaker" label. Some instructions come here
+ * explicitly (goto) and some indirectly. Notably, the check
+ * happens on back edges in the control flow graph, which
+ * pretty much applies to all loops and most calls.
+ * (See bytecodes.c for exact information.)
+ *
+ * One consequence of this approach is that it might not be obvious
+ * how to force any specific thread to pick up the eval breaker,
+ * or for any specific thread to not pick it up. Mostly this
+ * involves judicious uses of locks and careful ordering of code,
+ * while avoiding code that might trigger the eval breaker
+ * until so desired.
+ */
+ if (_Py_HandlePending(tstate) != 0) {
+ goto error;
+ }
+ DISPATCH();
+
+ {
+ /* Start instructions */
+#if !USE_COMPUTED_GOTOS
+ dispatch_opcode:
+ switch (opcode)
+#endif
+ {
+
+#include "generated_cases.c.h"
+
+ /* INSTRUMENTED_LINE has to be here, rather than in bytecodes.c,
+ * because it needs to capture frame->prev_instr before it is updated,
+ * as happens in the standard instruction prologue.
+ */
+#if USE_COMPUTED_GOTOS
+ TARGET_INSTRUMENTED_LINE:
+#else
+ case INSTRUMENTED_LINE:
+#endif
+ {
+ _Py_CODEUNIT *prev = frame->prev_instr;
+ _Py_CODEUNIT *here = frame->prev_instr = next_instr;
+ _PyFrame_SetStackPointer(frame, stack_pointer);
+ int original_opcode = _Py_call_instrumentation_line(
+ tstate, frame, here, prev);
+ stack_pointer = _PyFrame_GetStackPointer(frame);
+ if (original_opcode < 0) {
+ next_instr = here+1;
+ goto error;
+ }
+ next_instr = frame->prev_instr;
+ if (next_instr != here) {
+ DISPATCH();
+ }
+ if (_PyOpcode_Caches[original_opcode]) {
+ _PyBinaryOpCache *cache = (_PyBinaryOpCache *)(next_instr+1);
+ /* Prevent the underlying instruction from specializing
+ * and overwriting the instrumentation. */
+ INCREMENT_ADAPTIVE_COUNTER(cache->counter);
+ }
+ opcode = original_opcode;
+ DISPATCH_GOTO();
+ }
+
+
+#if USE_COMPUTED_GOTOS
+ _unknown_opcode:
+#else
+ EXTRA_CASES // From opcode.h, a 'case' for each unused opcode
+#endif
+ /* Tell C compilers not to hold the opcode variable in the loop.
+ next_instr points the current instruction without TARGET(). */
+ opcode = next_instr->op.code;
+ _PyErr_Format(tstate, PyExc_SystemError,
+ "%U:%d: unknown opcode %d",
+ frame->f_code->co_filename,
+ PyUnstable_InterpreterFrame_GetLine(frame),
+ opcode);
+ goto error;
+
+ } /* End instructions */
+
+ /* This should never be reached. Every opcode should end with DISPATCH()
+ or goto error. */
+ Py_UNREACHABLE();
+
+unbound_local_error:
+ {
+ format_exc_check_arg(tstate, PyExc_UnboundLocalError,
+ UNBOUNDLOCAL_ERROR_MSG,
+ PyTuple_GetItem(frame->f_code->co_localsplusnames, oparg)
+ );
+ goto error;
+ }
+
+pop_4_error:
+ STACK_SHRINK(1);
+pop_3_error:
+ STACK_SHRINK(1);
+pop_2_error:
+ STACK_SHRINK(1);
+pop_1_error:
+ STACK_SHRINK(1);
+error:
+ kwnames = NULL;
+ /* Double-check exception status. */
+#ifdef NDEBUG
+ if (!_PyErr_Occurred(tstate)) {
+ _PyErr_SetString(tstate, PyExc_SystemError,
+ "error return without exception set");
+ }
+#else
+ assert(_PyErr_Occurred(tstate));
+#endif
+
+ /* Log traceback info. */
+ assert(frame != &entry_frame);
+ if (!_PyFrame_IsIncomplete(frame)) {
+ PyFrameObject *f = _PyFrame_GetFrameObject(frame);
+ if (f != NULL) {
+ PyTraceBack_Here(f);
+ }
+ }
+ monitor_raise(tstate, frame, next_instr-1);
+exception_unwind:
+ {
+ /* We can't use frame->f_lasti here, as RERAISE may have set it */
+ int offset = INSTR_OFFSET()-1;
+ int level, handler, lasti;
+ if (get_exception_handler(frame->f_code, offset, &level, &handler, &lasti) == 0) {
+ // No handlers, so exit.
+ assert(_PyErr_Occurred(tstate));
+
+ /* Pop remaining stack entries. */
+ PyObject **stackbase = _PyFrame_Stackbase(frame);
+ while (stack_pointer > stackbase) {
+ PyObject *o = POP();
+ Py_XDECREF(o);
+ }
+ assert(STACK_LEVEL() == 0);
+ _PyFrame_SetStackPointer(frame, stack_pointer);
+ monitor_unwind(tstate, frame, next_instr-1);
+ goto exit_unwind;
+ }
+
+ assert(STACK_LEVEL() >= level);
+ PyObject **new_top = _PyFrame_Stackbase(frame) + level;
+ while (stack_pointer > new_top) {
+ PyObject *v = POP();
+ Py_XDECREF(v);
+ }
+ if (lasti) {
+ int frame_lasti = _PyInterpreterFrame_LASTI(frame);
+ PyObject *lasti = PyLong_FromLong(frame_lasti);
+ if (lasti == NULL) {
+ goto exception_unwind;
+ }
+ PUSH(lasti);
+ }
+
+ /* Make the raw exception data
+ available to the handler,
+ so a program can emulate the
+ Python main loop. */
+ PyObject *exc = _PyErr_GetRaisedException(tstate);
+ PUSH(exc);
+ JUMPTO(handler);
+ if (monitor_handled(tstate, frame, next_instr, exc) < 0) {
+ goto exception_unwind;
+ }
+ /* Resume normal execution */
+ DISPATCH();
+ }
+ }
+
+exit_unwind:
+ assert(_PyErr_Occurred(tstate));
+ _Py_LeaveRecursiveCallPy(tstate);
+ assert(frame != &entry_frame);
+ // GH-99729: We need to unlink the frame *before* clearing it:
+ _PyInterpreterFrame *dying = frame;
+ frame = cframe.current_frame = dying->previous;
+ _PyEvalFrameClearAndPop(tstate, dying);
+ frame->return_offset = 0;
+ if (frame == &entry_frame) {
+ /* Restore previous cframe and exit */
+ tstate->cframe = cframe.previous;
+ assert(tstate->cframe->current_frame == frame->previous);
+ tstate->c_recursion_remaining += PY_EVAL_C_STACK_UNITS;
+ return NULL;
+ }
+
+resume_with_error:
+ SET_LOCALS_FROM_FRAME();
+ goto error;
+
+}
+#if defined(__GNUC__)
+# pragma GCC diagnostic pop
+#elif defined(_MSC_VER) /* MS_WINDOWS */
+# pragma warning(pop)
+#endif
+
+static void
+format_missing(PyThreadState *tstate, const char *kind,
+ PyCodeObject *co, PyObject *names, PyObject *qualname)
+{
+ int err;
+ Py_ssize_t len = PyList_GET_SIZE(names);
+ PyObject *name_str, *comma, *tail, *tmp;
+
+ assert(PyList_CheckExact(names));
+ assert(len >= 1);
+ /* Deal with the joys of natural language. */
+ switch (len) {
+ case 1:
+ name_str = PyList_GET_ITEM(names, 0);
+ Py_INCREF(name_str);
+ break;
+ case 2:
+ name_str = PyUnicode_FromFormat("%U and %U",
+ PyList_GET_ITEM(names, len - 2),
+ PyList_GET_ITEM(names, len - 1));
+ break;
+ default:
+ tail = PyUnicode_FromFormat(", %U, and %U",
+ PyList_GET_ITEM(names, len - 2),
+ PyList_GET_ITEM(names, len - 1));
+ if (tail == NULL)
+ return;
+ /* Chop off the last two objects in the list. This shouldn't actually
+ fail, but we can't be too careful. */
+ err = PyList_SetSlice(names, len - 2, len, NULL);
+ if (err == -1) {
+ Py_DECREF(tail);
+ return;
+ }
+ /* Stitch everything up into a nice comma-separated list. */
+ comma = PyUnicode_FromString(", ");
+ if (comma == NULL) {
+ Py_DECREF(tail);
+ return;
+ }
+ tmp = PyUnicode_Join(comma, names);
+ Py_DECREF(comma);
+ if (tmp == NULL) {
+ Py_DECREF(tail);
+ return;
+ }
+ name_str = PyUnicode_Concat(tmp, tail);
+ Py_DECREF(tmp);
+ Py_DECREF(tail);
+ break;
+ }
+ if (name_str == NULL)
+ return;
+ _PyErr_Format(tstate, PyExc_TypeError,
+ "%U() missing %i required %s argument%s: %U",
+ qualname,
+ len,
+ kind,
+ len == 1 ? "" : "s",
+ name_str);
+ Py_DECREF(name_str);
+}
+
+static void
+missing_arguments(PyThreadState *tstate, PyCodeObject *co,
+ Py_ssize_t missing, Py_ssize_t defcount,
+ PyObject **localsplus, PyObject *qualname)
+{
+ Py_ssize_t i, j = 0;
+ Py_ssize_t start, end;
+ int positional = (defcount != -1);
+ const char *kind = positional ? "positional" : "keyword-only";
+ PyObject *missing_names;
+
+ /* Compute the names of the arguments that are missing. */
+ missing_names = PyList_New(missing);
+ if (missing_names == NULL)
+ return;
+ if (positional) {
+ start = 0;
+ end = co->co_argcount - defcount;
+ }
+ else {
+ start = co->co_argcount;
+ end = start + co->co_kwonlyargcount;
+ }
+ for (i = start; i < end; i++) {
+ if (localsplus[i] == NULL) {
+ PyObject *raw = PyTuple_GET_ITEM(co->co_localsplusnames, i);
+ PyObject *name = PyObject_Repr(raw);
+ if (name == NULL) {
+ Py_DECREF(missing_names);
+ return;
+ }
+ PyList_SET_ITEM(missing_names, j++, name);
+ }
+ }
+ assert(j == missing);
+ format_missing(tstate, kind, co, missing_names, qualname);
+ Py_DECREF(missing_names);
+}
+
+static void
+too_many_positional(PyThreadState *tstate, PyCodeObject *co,
+ Py_ssize_t given, PyObject *defaults,
+ PyObject **localsplus, PyObject *qualname)
+{
+ int plural;
+ Py_ssize_t kwonly_given = 0;
+ Py_ssize_t i;
+ PyObject *sig, *kwonly_sig;
+ Py_ssize_t co_argcount = co->co_argcount;
+
+ assert((co->co_flags & CO_VARARGS) == 0);
+ /* Count missing keyword-only args. */
+ for (i = co_argcount; i < co_argcount + co->co_kwonlyargcount; i++) {
+ if (localsplus[i] != NULL) {
+ kwonly_given++;
+ }
+ }
+ Py_ssize_t defcount = defaults == NULL ? 0 : PyTuple_GET_SIZE(defaults);
+ if (defcount) {
+ Py_ssize_t atleast = co_argcount - defcount;
+ plural = 1;
+ sig = PyUnicode_FromFormat("from %zd to %zd", atleast, co_argcount);
+ }
+ else {
+ plural = (co_argcount != 1);
+ sig = PyUnicode_FromFormat("%zd", co_argcount);
+ }
+ if (sig == NULL)
+ return;
+ if (kwonly_given) {
+ const char *format = " positional argument%s (and %zd keyword-only argument%s)";
+ kwonly_sig = PyUnicode_FromFormat(format,
+ given != 1 ? "s" : "",
+ kwonly_given,
+ kwonly_given != 1 ? "s" : "");
+ if (kwonly_sig == NULL) {
+ Py_DECREF(sig);
+ return;
+ }
+ }
+ else {
+ /* This will not fail. */
+ kwonly_sig = PyUnicode_FromString("");
+ assert(kwonly_sig != NULL);
+ }
+ _PyErr_Format(tstate, PyExc_TypeError,
+ "%U() takes %U positional argument%s but %zd%U %s given",
+ qualname,
+ sig,
+ plural ? "s" : "",
+ given,
+ kwonly_sig,
+ given == 1 && !kwonly_given ? "was" : "were");
+ Py_DECREF(sig);
+ Py_DECREF(kwonly_sig);
+}
+
+static int
+positional_only_passed_as_keyword(PyThreadState *tstate, PyCodeObject *co,
+ Py_ssize_t kwcount, PyObject* kwnames,
+ PyObject *qualname)
+{
+ int posonly_conflicts = 0;
+ PyObject* posonly_names = PyList_New(0);
+ if (posonly_names == NULL) {
+ goto fail;
+ }
+ for(int k=0; k < co->co_posonlyargcount; k++){
+ PyObject* posonly_name = PyTuple_GET_ITEM(co->co_localsplusnames, k);
+
+ for (int k2=0; k2<kwcount; k2++){
+ /* Compare the pointers first and fallback to PyObject_RichCompareBool*/
+ PyObject* kwname = PyTuple_GET_ITEM(kwnames, k2);
+ if (kwname == posonly_name){
+ if(PyList_Append(posonly_names, kwname) != 0) {
+ goto fail;
+ }
+ posonly_conflicts++;
+ continue;
+ }
+
+ int cmp = PyObject_RichCompareBool(posonly_name, kwname, Py_EQ);
+
+ if ( cmp > 0) {
+ if(PyList_Append(posonly_names, kwname) != 0) {
+ goto fail;
+ }
+ posonly_conflicts++;
+ } else if (cmp < 0) {
+ goto fail;
+ }
+
+ }
+ }
+ if (posonly_conflicts) {
+ PyObject* comma = PyUnicode_FromString(", ");
+ if (comma == NULL) {
+ goto fail;
+ }
+ PyObject* error_names = PyUnicode_Join(comma, posonly_names);
+ Py_DECREF(comma);
+ if (error_names == NULL) {
+ goto fail;
+ }
+ _PyErr_Format(tstate, PyExc_TypeError,
+ "%U() got some positional-only arguments passed"
+ " as keyword arguments: '%U'",
+ qualname, error_names);
+ Py_DECREF(error_names);
+ goto fail;
+ }
+
+ Py_DECREF(posonly_names);
+ return 0;
+
+fail:
+ Py_XDECREF(posonly_names);
+ return 1;
+
+}
+
+
+static inline unsigned char *
+scan_back_to_entry_start(unsigned char *p) {
+ for (; (p[0]&128) == 0; p--);
+ return p;
+}
+
+static inline unsigned char *
+skip_to_next_entry(unsigned char *p, unsigned char *end) {
+ while (p < end && ((p[0] & 128) == 0)) {
+ p++;
+ }
+ return p;
+}
+
+
+#define MAX_LINEAR_SEARCH 40
+
+static int
+get_exception_handler(PyCodeObject *code, int index, int *level, int *handler, int *lasti)
+{
+ unsigned char *start = (unsigned char *)PyBytes_AS_STRING(code->co_exceptiontable);
+ unsigned char *end = start + PyBytes_GET_SIZE(code->co_exceptiontable);
+ /* Invariants:
+ * start_table == end_table OR
+ * start_table points to a legal entry and end_table points
+ * beyond the table or to a legal entry that is after index.
+ */
+ if (end - start > MAX_LINEAR_SEARCH) {
+ int offset;
+ parse_varint(start, &offset);
+ if (offset > index) {
+ return 0;
+ }
+ do {
+ unsigned char * mid = start + ((end-start)>>1);
+ mid = scan_back_to_entry_start(mid);
+ parse_varint(mid, &offset);
+ if (offset > index) {
+ end = mid;
+ }
+ else {
+ start = mid;
+ }
+
+ } while (end - start > MAX_LINEAR_SEARCH);
+ }
+ unsigned char *scan = start;
+ while (scan < end) {
+ int start_offset, size;
+ scan = parse_varint(scan, &start_offset);
+ if (start_offset > index) {
+ break;
+ }
+ scan = parse_varint(scan, &size);
+ if (start_offset + size > index) {
+ scan = parse_varint(scan, handler);
+ int depth_and_lasti;
+ parse_varint(scan, &depth_and_lasti);
+ *level = depth_and_lasti >> 1;
+ *lasti = depth_and_lasti & 1;
+ return 1;
+ }
+ scan = skip_to_next_entry(scan, end);
+ }
+ return 0;
+}
+
+static int
+initialize_locals(PyThreadState *tstate, PyFunctionObject *func,
+ PyObject **localsplus, PyObject *const *args,
+ Py_ssize_t argcount, PyObject *kwnames)
+{
+ PyCodeObject *co = (PyCodeObject*)func->func_code;
+ const Py_ssize_t total_args = co->co_argcount + co->co_kwonlyargcount;
+
+ /* Create a dictionary for keyword parameters (**kwags) */
+ PyObject *kwdict;
+ Py_ssize_t i;
+ if (co->co_flags & CO_VARKEYWORDS) {
+ kwdict = PyDict_New();
+ if (kwdict == NULL) {
+ goto fail_pre_positional;
+ }
+ i = total_args;
+ if (co->co_flags & CO_VARARGS) {
+ i++;
+ }
+ assert(localsplus[i] == NULL);
+ localsplus[i] = kwdict;
+ }
+ else {
+ kwdict = NULL;
+ }
+
+ /* Copy all positional arguments into local variables */
+ Py_ssize_t j, n;
+ if (argcount > co->co_argcount) {
+ n = co->co_argcount;
+ }
+ else {
+ n = argcount;
+ }
+ for (j = 0; j < n; j++) {
+ PyObject *x = args[j];
+ assert(localsplus[j] == NULL);
+ localsplus[j] = x;
+ }
+
+ /* Pack other positional arguments into the *args argument */
+ if (co->co_flags & CO_VARARGS) {
+ PyObject *u = NULL;
+ if (argcount == n) {
+ u = Py_NewRef(&_Py_SINGLETON(tuple_empty));
+ }
+ else {
+ assert(args != NULL);
+ u = _PyTuple_FromArraySteal(args + n, argcount - n);
+ }
+ if (u == NULL) {
+ goto fail_post_positional;
+ }
+ assert(localsplus[total_args] == NULL);
+ localsplus[total_args] = u;
+ }
+ else if (argcount > n) {
+ /* Too many postional args. Error is reported later */
+ for (j = n; j < argcount; j++) {
+ Py_DECREF(args[j]);
+ }
+ }
+
+ /* Handle keyword arguments */
+ if (kwnames != NULL) {
+ Py_ssize_t kwcount = PyTuple_GET_SIZE(kwnames);
+ for (i = 0; i < kwcount; i++) {
+ PyObject **co_varnames;
+ PyObject *keyword = PyTuple_GET_ITEM(kwnames, i);
+ PyObject *value = args[i+argcount];
+ Py_ssize_t j;
+
+ if (keyword == NULL || !PyUnicode_Check(keyword)) {
+ _PyErr_Format(tstate, PyExc_TypeError,
+ "%U() keywords must be strings",
+ func->func_qualname);
+ goto kw_fail;
+ }
+
+ /* Speed hack: do raw pointer compares. As names are
+ normally interned this should almost always hit. */
+ co_varnames = ((PyTupleObject *)(co->co_localsplusnames))->ob_item;
+ for (j = co->co_posonlyargcount; j < total_args; j++) {
+ PyObject *varname = co_varnames[j];
+ if (varname == keyword) {
+ goto kw_found;
+ }
+ }
+
+ /* Slow fallback, just in case */
+ for (j = co->co_posonlyargcount; j < total_args; j++) {
+ PyObject *varname = co_varnames[j];
+ int cmp = PyObject_RichCompareBool( keyword, varname, Py_EQ);
+ if (cmp > 0) {
+ goto kw_found;
+ }
+ else if (cmp < 0) {
+ goto kw_fail;
+ }
+ }
+
+ assert(j >= total_args);
+ if (kwdict == NULL) {
+
+ if (co->co_posonlyargcount
+ && positional_only_passed_as_keyword(tstate, co,
+ kwcount, kwnames,
+ func->func_qualname))
+ {
+ goto kw_fail;
+ }
+
+ _PyErr_Format(tstate, PyExc_TypeError,
+ "%U() got an unexpected keyword argument '%S'",
+ func->func_qualname, keyword);
+ goto kw_fail;
+ }
+
+ if (PyDict_SetItem(kwdict, keyword, value) == -1) {
+ goto kw_fail;
+ }
+ Py_DECREF(value);
+ continue;
+
+ kw_fail:
+ for (;i < kwcount; i++) {
+ PyObject *value = args[i+argcount];
+ Py_DECREF(value);
+ }
+ goto fail_post_args;
+
+ kw_found:
+ if (localsplus[j] != NULL) {
+ _PyErr_Format(tstate, PyExc_TypeError,
+ "%U() got multiple values for argument '%S'",
+ func->func_qualname, keyword);
+ goto kw_fail;
+ }
+ localsplus[j] = value;
+ }
+ }
+
+ /* Check the number of positional arguments */
+ if ((argcount > co->co_argcount) && !(co->co_flags & CO_VARARGS)) {
+ too_many_positional(tstate, co, argcount, func->func_defaults, localsplus,
+ func->func_qualname);
+ goto fail_post_args;
+ }
+
+ /* Add missing positional arguments (copy default values from defs) */
+ if (argcount < co->co_argcount) {
+ Py_ssize_t defcount = func->func_defaults == NULL ? 0 : PyTuple_GET_SIZE(func->func_defaults);
+ Py_ssize_t m = co->co_argcount - defcount;
+ Py_ssize_t missing = 0;
+ for (i = argcount; i < m; i++) {
+ if (localsplus[i] == NULL) {
+ missing++;
+ }
+ }
+ if (missing) {
+ missing_arguments(tstate, co, missing, defcount, localsplus,
+ func->func_qualname);
+ goto fail_post_args;
+ }
+ if (n > m)
+ i = n - m;
+ else
+ i = 0;
+ if (defcount) {
+ PyObject **defs = &PyTuple_GET_ITEM(func->func_defaults, 0);
+ for (; i < defcount; i++) {
+ if (localsplus[m+i] == NULL) {
+ PyObject *def = defs[i];
+ localsplus[m+i] = Py_NewRef(def);
+ }
+ }
+ }
+ }
+
+ /* Add missing keyword arguments (copy default values from kwdefs) */
+ if (co->co_kwonlyargcount > 0) {
+ Py_ssize_t missing = 0;
+ for (i = co->co_argcount; i < total_args; i++) {
+ if (localsplus[i] != NULL)
+ continue;
+ PyObject *varname = PyTuple_GET_ITEM(co->co_localsplusnames, i);
+ if (func->func_kwdefaults != NULL) {
+ PyObject *def = PyDict_GetItemWithError(func->func_kwdefaults, varname);
+ if (def) {
+ localsplus[i] = Py_NewRef(def);
+ continue;
+ }
+ else if (_PyErr_Occurred(tstate)) {
+ goto fail_post_args;
+ }
+ }
+ missing++;
+ }
+ if (missing) {
+ missing_arguments(tstate, co, missing, -1, localsplus,
+ func->func_qualname);
+ goto fail_post_args;
+ }
+ }
+ return 0;
+
+fail_pre_positional:
+ for (j = 0; j < argcount; j++) {
+ Py_DECREF(args[j]);
+ }
+ /* fall through */
+fail_post_positional:
+ if (kwnames) {
+ Py_ssize_t kwcount = PyTuple_GET_SIZE(kwnames);
+ for (j = argcount; j < argcount+kwcount; j++) {
+ Py_DECREF(args[j]);
+ }
+ }
+ /* fall through */
+fail_post_args:
+ return -1;
+}
+
+static void
+clear_thread_frame(PyThreadState *tstate, _PyInterpreterFrame * frame)
+{
+ assert(frame->owner == FRAME_OWNED_BY_THREAD);
+ // Make sure that this is, indeed, the top frame. We can't check this in
+ // _PyThreadState_PopFrame, since f_code is already cleared at that point:
+ assert((PyObject **)frame + frame->f_code->co_framesize ==
+ tstate->datastack_top);
+ tstate->c_recursion_remaining--;
+ assert(frame->frame_obj == NULL || frame->frame_obj->f_frame == frame);
+ _PyFrame_ClearExceptCode(frame);
+ Py_DECREF(frame->f_code);
+ tstate->c_recursion_remaining++;
+ _PyThreadState_PopFrame(tstate, frame);
+}
+
+static void
+clear_gen_frame(PyThreadState *tstate, _PyInterpreterFrame * frame)
+{
+ assert(frame->owner == FRAME_OWNED_BY_GENERATOR);
+ PyGenObject *gen = _PyFrame_GetGenerator(frame);
+ gen->gi_frame_state = FRAME_CLEARED;
+ assert(tstate->exc_info == &gen->gi_exc_state);
+ tstate->exc_info = gen->gi_exc_state.previous_item;
+ gen->gi_exc_state.previous_item = NULL;
+ tstate->c_recursion_remaining--;
+ assert(frame->frame_obj == NULL || frame->frame_obj->f_frame == frame);
+ _PyFrame_ClearExceptCode(frame);
+ tstate->c_recursion_remaining++;
+ frame->previous = NULL;
+}
+
+static void
+_PyEvalFrameClearAndPop(PyThreadState *tstate, _PyInterpreterFrame * frame)
+{
+ if (frame->owner == FRAME_OWNED_BY_THREAD) {
+ clear_thread_frame(tstate, frame);
+ }
+ else {
+ clear_gen_frame(tstate, frame);
+ }
+}
+
+/* Consumes references to func, locals and all the args */
+static _PyInterpreterFrame *
+_PyEvalFramePushAndInit(PyThreadState *tstate, PyFunctionObject *func,
+ PyObject *locals, PyObject* const* args,
+ size_t argcount, PyObject *kwnames)
+{
+ PyCodeObject * code = (PyCodeObject *)func->func_code;
+ CALL_STAT_INC(frames_pushed);
+ _PyInterpreterFrame *frame = _PyThreadState_PushFrame(tstate, code->co_framesize);
+ if (frame == NULL) {
+ goto fail;
+ }
+ _PyFrame_Initialize(frame, func, locals, code, 0);
+ if (initialize_locals(tstate, func, frame->localsplus, args, argcount, kwnames)) {
+ assert(frame->owner == FRAME_OWNED_BY_THREAD);
+ clear_thread_frame(tstate, frame);
+ return NULL;
+ }
+ return frame;
+fail:
+ /* Consume the references */
+ for (size_t i = 0; i < argcount; i++) {
+ Py_DECREF(args[i]);
+ }
+ if (kwnames) {
+ Py_ssize_t kwcount = PyTuple_GET_SIZE(kwnames);
+ for (Py_ssize_t i = 0; i < kwcount; i++) {
+ Py_DECREF(args[i+argcount]);
+ }
+ }
+ PyErr_NoMemory();
+ return NULL;
+}
+
+/* Same as _PyEvalFramePushAndInit but takes an args tuple and kwargs dict.
+ Steals references to func, callargs and kwargs.
+*/
+static _PyInterpreterFrame *
+_PyEvalFramePushAndInit_Ex(PyThreadState *tstate, PyFunctionObject *func,
+ PyObject *locals, Py_ssize_t nargs, PyObject *callargs, PyObject *kwargs)
+{
+ bool has_dict = (kwargs != NULL && PyDict_GET_SIZE(kwargs) > 0);
+ PyObject *kwnames = NULL;
+ PyObject *const *newargs;
+ if (has_dict) {
+ newargs = _PyStack_UnpackDict(tstate, _PyTuple_ITEMS(callargs), nargs, kwargs, &kwnames);
+ if (newargs == NULL) {
+ Py_DECREF(func);
+ goto error;
+ }
+ }
+ else {
+ newargs = &PyTuple_GET_ITEM(callargs, 0);
+ /* We need to incref all our args since the new frame steals the references. */
+ for (Py_ssize_t i = 0; i < nargs; ++i) {
+ Py_INCREF(PyTuple_GET_ITEM(callargs, i));
+ }
+ }
+ _PyInterpreterFrame *new_frame = _PyEvalFramePushAndInit(
+ tstate, (PyFunctionObject *)func, locals,
+ newargs, nargs, kwnames
+ );
+ if (has_dict) {
+ _PyStack_UnpackDict_FreeNoDecRef(newargs, kwnames);
+ }
+ /* No need to decref func here because the reference has been stolen by
+ _PyEvalFramePushAndInit.
+ */
+ Py_DECREF(callargs);
+ Py_XDECREF(kwargs);
+ return new_frame;
+error:
+ Py_DECREF(callargs);
+ Py_XDECREF(kwargs);
+ return NULL;
+}
+
+PyObject *
+_PyEval_Vector(PyThreadState *tstate, PyFunctionObject *func,
+ PyObject *locals,
+ PyObject* const* args, size_t argcount,
+ PyObject *kwnames)
+{
+ /* _PyEvalFramePushAndInit consumes the references
+ * to func, locals and all its arguments */
+ Py_INCREF(func);
+ Py_XINCREF(locals);
+ for (size_t i = 0; i < argcount; i++) {
+ Py_INCREF(args[i]);
+ }
+ if (kwnames) {
+ Py_ssize_t kwcount = PyTuple_GET_SIZE(kwnames);
+ for (Py_ssize_t i = 0; i < kwcount; i++) {
+ Py_INCREF(args[i+argcount]);
+ }
+ }
+ _PyInterpreterFrame *frame = _PyEvalFramePushAndInit(
+ tstate, func, locals, args, argcount, kwnames);
+ if (frame == NULL) {
+ return NULL;
+ }
+ EVAL_CALL_STAT_INC(EVAL_CALL_VECTOR);
+ return _PyEval_EvalFrame(tstate, frame, 0);
+}
+
+/* Legacy API */
+PyObject *
+PyEval_EvalCodeEx(PyObject *_co, PyObject *globals, PyObject *locals,
+ PyObject *const *args, int argcount,
+ PyObject *const *kws, int kwcount,
+ PyObject *const *defs, int defcount,
+ PyObject *kwdefs, PyObject *closure)
+{
+ PyThreadState *tstate = _PyThreadState_GET();
+ PyObject *res = NULL;
+ PyObject *defaults = _PyTuple_FromArray(defs, defcount);
+ if (defaults == NULL) {
+ return NULL;
+ }
+ PyObject *builtins = _PyEval_BuiltinsFromGlobals(tstate, globals); // borrowed ref
+ if (builtins == NULL) {
+ Py_DECREF(defaults);
+ return NULL;
+ }
+ if (locals == NULL) {
+ locals = globals;
+ }
+ PyObject *kwnames = NULL;
+ PyObject *const *allargs;
+ PyObject **newargs = NULL;
+ PyFunctionObject *func = NULL;
+ if (kwcount == 0) {
+ allargs = args;
+ }
+ else {
+ kwnames = PyTuple_New(kwcount);
+ if (kwnames == NULL) {
+ goto fail;
+ }
+ newargs = PyMem_Malloc(sizeof(PyObject *)*(kwcount+argcount));
+ if (newargs == NULL) {
+ goto fail;
+ }
+ for (int i = 0; i < argcount; i++) {
+ newargs[i] = args[i];
+ }
+ for (int i = 0; i < kwcount; i++) {
+ PyTuple_SET_ITEM(kwnames, i, Py_NewRef(kws[2*i]));
+ newargs[argcount+i] = kws[2*i+1];
+ }
+ allargs = newargs;
+ }
+ PyFrameConstructor constr = {
+ .fc_globals = globals,
+ .fc_builtins = builtins,
+ .fc_name = ((PyCodeObject *)_co)->co_name,
+ .fc_qualname = ((PyCodeObject *)_co)->co_name,
+ .fc_code = _co,
+ .fc_defaults = defaults,
+ .fc_kwdefaults = kwdefs,
+ .fc_closure = closure
+ };
+ func = _PyFunction_FromConstructor(&constr);
+ if (func == NULL) {
+ goto fail;
+ }
+ EVAL_CALL_STAT_INC(EVAL_CALL_LEGACY);
+ res = _PyEval_Vector(tstate, func, locals,
+ allargs, argcount,
+ kwnames);
+fail:
+ Py_XDECREF(func);
+ Py_XDECREF(kwnames);
+ PyMem_Free(newargs);
+ Py_DECREF(defaults);
+ return res;
+}
+
+
+/* Logic for the raise statement (too complicated for inlining).
+ This *consumes* a reference count to each of its arguments. */
+static int
+do_raise(PyThreadState *tstate, PyObject *exc, PyObject *cause)
+{
+ PyObject *type = NULL, *value = NULL;
+
+ if (exc == NULL) {
+ /* Reraise */
+ _PyErr_StackItem *exc_info = _PyErr_GetTopmostException(tstate);
+ exc = exc_info->exc_value;
+ if (Py_IsNone(exc) || exc == NULL) {
+ _PyErr_SetString(tstate, PyExc_RuntimeError,
+ "No active exception to reraise");
+ return 0;
+ }
+ Py_INCREF(exc);
+ assert(PyExceptionInstance_Check(exc));
+ _PyErr_SetRaisedException(tstate, exc);
+ return 1;
+ }
+
+ /* We support the following forms of raise:
+ raise
+ raise <instance>
+ raise <type> */
+
+ if (PyExceptionClass_Check(exc)) {
+ type = exc;
+ value = _PyObject_CallNoArgs(exc);
+ if (value == NULL)
+ goto raise_error;
+ if (!PyExceptionInstance_Check(value)) {
+ _PyErr_Format(tstate, PyExc_TypeError,
+ "calling %R should have returned an instance of "
+ "BaseException, not %R",
+ type, Py_TYPE(value));
+ goto raise_error;
+ }
+ }
+ else if (PyExceptionInstance_Check(exc)) {
+ value = exc;
+ type = PyExceptionInstance_Class(exc);
+ Py_INCREF(type);
+ }
+ else {
+ /* Not something you can raise. You get an exception
+ anyway, just not what you specified :-) */
+ Py_DECREF(exc);
+ _PyErr_SetString(tstate, PyExc_TypeError,
+ "exceptions must derive from BaseException");
+ goto raise_error;
+ }
+
+ assert(type != NULL);
+ assert(value != NULL);
+
+ if (cause) {
+ PyObject *fixed_cause;
+ if (PyExceptionClass_Check(cause)) {
+ fixed_cause = _PyObject_CallNoArgs(cause);
+ if (fixed_cause == NULL)
+ goto raise_error;
+ Py_DECREF(cause);
+ }
+ else if (PyExceptionInstance_Check(cause)) {
+ fixed_cause = cause;
+ }
+ else if (Py_IsNone(cause)) {
+ Py_DECREF(cause);
+ fixed_cause = NULL;
+ }
+ else {
+ _PyErr_SetString(tstate, PyExc_TypeError,
+ "exception causes must derive from "
+ "BaseException");
+ goto raise_error;
+ }
+ PyException_SetCause(value, fixed_cause);
+ }
+
+ _PyErr_SetObject(tstate, type, value);
+ /* _PyErr_SetObject incref's its arguments */
+ Py_DECREF(value);
+ Py_DECREF(type);
+ return 0;
+
+raise_error:
+ Py_XDECREF(value);
+ Py_XDECREF(type);
+ Py_XDECREF(cause);
+ return 0;
+}
+
+/* Logic for matching an exception in an except* clause (too
+ complicated for inlining).
+*/
+
+static int
+exception_group_match(PyObject* exc_value, PyObject *match_type,
+ PyObject **match, PyObject **rest)
+{
+ if (Py_IsNone(exc_value)) {
+ *match = Py_NewRef(Py_None);
+ *rest = Py_NewRef(Py_None);
+ return 0;
+ }
+ assert(PyExceptionInstance_Check(exc_value));
+
+ if (PyErr_GivenExceptionMatches(exc_value, match_type)) {
+ /* Full match of exc itself */
+ bool is_eg = _PyBaseExceptionGroup_Check(exc_value);
+ if (is_eg) {
+ *match = Py_NewRef(exc_value);
+ }
+ else {
+ /* naked exception - wrap it */
+ PyObject *excs = PyTuple_Pack(1, exc_value);
+ if (excs == NULL) {
+ return -1;
+ }
+ PyObject *wrapped = _PyExc_CreateExceptionGroup("", excs);
+ Py_DECREF(excs);
+ if (wrapped == NULL) {
+ return -1;
+ }
+ *match = wrapped;
+ }
+ *rest = Py_NewRef(Py_None);
+ return 0;
+ }
+
+ /* exc_value does not match match_type.
+ * Check for partial match if it's an exception group.
+ */
+ if (_PyBaseExceptionGroup_Check(exc_value)) {
+ PyObject *pair = PyObject_CallMethod(exc_value, "split", "(O)",
+ match_type);
+ if (pair == NULL) {
+ return -1;
+ }
+ assert(PyTuple_CheckExact(pair));
+ assert(PyTuple_GET_SIZE(pair) == 2);
+ *match = Py_NewRef(PyTuple_GET_ITEM(pair, 0));
+ *rest = Py_NewRef(PyTuple_GET_ITEM(pair, 1));
+ Py_DECREF(pair);
+ return 0;
+ }
+ /* no match */
+ *match = Py_NewRef(Py_None);
+ *rest = Py_NewRef(exc_value);
+ return 0;
+}
+
+/* Iterate v argcnt times and store the results on the stack (via decreasing
+ sp). Return 1 for success, 0 if error.
+
+ If argcntafter == -1, do a simple unpack. If it is >= 0, do an unpack
+ with a variable target.
+*/
+
+static int
+unpack_iterable(PyThreadState *tstate, PyObject *v,
+ int argcnt, int argcntafter, PyObject **sp)
+{
+ int i = 0, j = 0;
+ Py_ssize_t ll = 0;
+ PyObject *it; /* iter(v) */
+ PyObject *w;
+ PyObject *l = NULL; /* variable list */
+
+ assert(v != NULL);
+
+ it = PyObject_GetIter(v);
+ if (it == NULL) {
+ if (_PyErr_ExceptionMatches(tstate, PyExc_TypeError) &&
+ Py_TYPE(v)->tp_iter == NULL && !PySequence_Check(v))
+ {
+ _PyErr_Format(tstate, PyExc_TypeError,
+ "cannot unpack non-iterable %.200s object",
+ Py_TYPE(v)->tp_name);
+ }
+ return 0;
+ }
+
+ for (; i < argcnt; i++) {
+ w = PyIter_Next(it);
+ if (w == NULL) {
+ /* Iterator done, via error or exhaustion. */
+ if (!_PyErr_Occurred(tstate)) {
+ if (argcntafter == -1) {
+ _PyErr_Format(tstate, PyExc_ValueError,
+ "not enough values to unpack "
+ "(expected %d, got %d)",
+ argcnt, i);
+ }
+ else {
+ _PyErr_Format(tstate, PyExc_ValueError,
+ "not enough values to unpack "
+ "(expected at least %d, got %d)",
+ argcnt + argcntafter, i);
+ }
+ }
+ goto Error;
+ }
+ *--sp = w;
+ }
+
+ if (argcntafter == -1) {
+ /* We better have exhausted the iterator now. */
+ w = PyIter_Next(it);
+ if (w == NULL) {
+ if (_PyErr_Occurred(tstate))
+ goto Error;
+ Py_DECREF(it);
+ return 1;
+ }
+ Py_DECREF(w);
+ _PyErr_Format(tstate, PyExc_ValueError,
+ "too many values to unpack (expected %d)",
+ argcnt);
+ goto Error;
+ }
+
+ l = PySequence_List(it);
+ if (l == NULL)
+ goto Error;
+ *--sp = l;
+ i++;
+
+ ll = PyList_GET_SIZE(l);
+ if (ll < argcntafter) {
+ _PyErr_Format(tstate, PyExc_ValueError,
+ "not enough values to unpack (expected at least %d, got %zd)",
+ argcnt + argcntafter, argcnt + ll);
+ goto Error;
+ }
+
+ /* Pop the "after-variable" args off the list. */
+ for (j = argcntafter; j > 0; j--, i++) {
+ *--sp = PyList_GET_ITEM(l, ll - j);
+ }
+ /* Resize the list. */
+ Py_SET_SIZE(l, ll - argcntafter);
+ Py_DECREF(it);
+ return 1;
+
+Error:
+ for (; i > 0; i--, sp++)
+ Py_DECREF(*sp);
+ Py_XDECREF(it);
+ return 0;
+}
+
+static int
+do_monitor_exc(PyThreadState *tstate, _PyInterpreterFrame *frame,
+ _Py_CODEUNIT *instr, int event)
+{
+ assert(event < _PY_MONITORING_UNGROUPED_EVENTS);
+ PyObject *exc = PyErr_GetRaisedException();
+ assert(exc != NULL);
+ int err = _Py_call_instrumentation_arg(tstate, event, frame, instr, exc);
+ if (err == 0) {
+ PyErr_SetRaisedException(exc);
+ }
+ else {
+ assert(PyErr_Occurred());
+ Py_DECREF(exc);
+ }
+ return err;
+}
+
+static inline bool
+no_tools_for_global_event(PyThreadState *tstate, int event)
+{
+ return tstate->interp->monitors.tools[event] == 0;
+}
+
+static inline bool
+no_tools_for_local_event(PyThreadState *tstate, _PyInterpreterFrame *frame, int event)
+{
+ assert(event < _PY_MONITORING_LOCAL_EVENTS);
+ _PyCoMonitoringData *data = frame->f_code->_co_monitoring;
+ if (data) {
+ return data->active_monitors.tools[event] == 0;
+ }
+ else {
+ return no_tools_for_global_event(tstate, event);
+ }
+}
+
+static void
+monitor_raise(PyThreadState *tstate, _PyInterpreterFrame *frame,
+ _Py_CODEUNIT *instr)
+{
+ if (no_tools_for_global_event(tstate, PY_MONITORING_EVENT_RAISE)) {
+ return;
+ }
+ do_monitor_exc(tstate, frame, instr, PY_MONITORING_EVENT_RAISE);
+}
+
+static void
+monitor_reraise(PyThreadState *tstate, _PyInterpreterFrame *frame,
+ _Py_CODEUNIT *instr)
+{
+ if (no_tools_for_global_event(tstate, PY_MONITORING_EVENT_RERAISE)) {
+ return;
+ }
+ do_monitor_exc(tstate, frame, instr, PY_MONITORING_EVENT_RERAISE);
+}
+
+static int
+monitor_stop_iteration(PyThreadState *tstate, _PyInterpreterFrame *frame,
+ _Py_CODEUNIT *instr)
+{
+ if (no_tools_for_local_event(tstate, frame, PY_MONITORING_EVENT_STOP_ITERATION)) {
+ return 0;
+ }
+ return do_monitor_exc(tstate, frame, instr, PY_MONITORING_EVENT_STOP_ITERATION);
+}
+
+static void
+monitor_unwind(PyThreadState *tstate,
+ _PyInterpreterFrame *frame,
+ _Py_CODEUNIT *instr)
+{
+ if (no_tools_for_global_event(tstate, PY_MONITORING_EVENT_PY_UNWIND)) {
+ return;
+ }
+ do_monitor_exc(tstate, frame, instr, PY_MONITORING_EVENT_PY_UNWIND);
+}
+
+
+static int
+monitor_handled(PyThreadState *tstate,
+ _PyInterpreterFrame *frame,
+ _Py_CODEUNIT *instr, PyObject *exc)
+{
+ if (no_tools_for_global_event(tstate, PY_MONITORING_EVENT_EXCEPTION_HANDLED)) {
+ return 0;
+ }
+ return _Py_call_instrumentation_arg(tstate, PY_MONITORING_EVENT_EXCEPTION_HANDLED, frame, instr, exc);
+}
+
+static void
+monitor_throw(PyThreadState *tstate,
+ _PyInterpreterFrame *frame,
+ _Py_CODEUNIT *instr)
+{
+ if (no_tools_for_global_event(tstate, PY_MONITORING_EVENT_PY_THROW)) {
+ return;
+ }
+ do_monitor_exc(tstate, frame, instr, PY_MONITORING_EVENT_PY_THROW);
+}
+
+void
+PyThreadState_EnterTracing(PyThreadState *tstate)
+{
+ assert(tstate->tracing >= 0);
+ tstate->tracing++;
+}
+
+void
+PyThreadState_LeaveTracing(PyThreadState *tstate)
+{
+ assert(tstate->tracing > 0);
+ tstate->tracing--;
+}
+
+
+PyObject*
+_PyEval_CallTracing(PyObject *func, PyObject *args)
+{
+ // Save and disable tracing
+ PyThreadState *tstate = _PyThreadState_GET();
+ int save_tracing = tstate->tracing;
+ tstate->tracing = 0;
+
+ // Call the tracing function
+ PyObject *result = PyObject_Call(func, args, NULL);
+
+ // Restore tracing
+ tstate->tracing = save_tracing;
+ return result;
+}
+
+void
+PyEval_SetProfile(Py_tracefunc func, PyObject *arg)
+{
+ PyThreadState *tstate = _PyThreadState_GET();
+ if (_PyEval_SetProfile(tstate, func, arg) < 0) {
+ /* Log _PySys_Audit() error */
+ _PyErr_WriteUnraisableMsg("in PyEval_SetProfile", NULL);
+ }
+}
+
+void
+PyEval_SetProfileAllThreads(Py_tracefunc func, PyObject *arg)
+{
+ PyThreadState *this_tstate = _PyThreadState_GET();
+ PyInterpreterState* interp = this_tstate->interp;
+
+ _PyRuntimeState *runtime = &_PyRuntime;
+ HEAD_LOCK(runtime);
+ PyThreadState* ts = PyInterpreterState_ThreadHead(interp);
+ HEAD_UNLOCK(runtime);
+
+ while (ts) {
+ if (_PyEval_SetProfile(ts, func, arg) < 0) {
+ _PyErr_WriteUnraisableMsg("in PyEval_SetProfileAllThreads", NULL);
+ }
+ HEAD_LOCK(runtime);
+ ts = PyThreadState_Next(ts);
+ HEAD_UNLOCK(runtime);
+ }
+}
+
+void
+PyEval_SetTrace(Py_tracefunc func, PyObject *arg)
+{
+ PyThreadState *tstate = _PyThreadState_GET();
+ if (_PyEval_SetTrace(tstate, func, arg) < 0) {
+ /* Log _PySys_Audit() error */
+ _PyErr_WriteUnraisableMsg("in PyEval_SetTrace", NULL);
+ }
+}
+
+void
+PyEval_SetTraceAllThreads(Py_tracefunc func, PyObject *arg)
+{
+ PyThreadState *this_tstate = _PyThreadState_GET();
+ PyInterpreterState* interp = this_tstate->interp;
+
+ _PyRuntimeState *runtime = &_PyRuntime;
+ HEAD_LOCK(runtime);
+ PyThreadState* ts = PyInterpreterState_ThreadHead(interp);
+ HEAD_UNLOCK(runtime);
+
+ while (ts) {
+ if (_PyEval_SetTrace(ts, func, arg) < 0) {
+ _PyErr_WriteUnraisableMsg("in PyEval_SetTraceAllThreads", NULL);
+ }
+ HEAD_LOCK(runtime);
+ ts = PyThreadState_Next(ts);
+ HEAD_UNLOCK(runtime);
+ }
+}
+
+int
+_PyEval_SetCoroutineOriginTrackingDepth(int depth)
+{
+ PyThreadState *tstate = _PyThreadState_GET();
+ if (depth < 0) {
+ _PyErr_SetString(tstate, PyExc_ValueError, "depth must be >= 0");
+ return -1;
+ }
+ tstate->coroutine_origin_tracking_depth = depth;
+ return 0;
+}
+
+
+int
+_PyEval_GetCoroutineOriginTrackingDepth(void)
+{
+ PyThreadState *tstate = _PyThreadState_GET();
+ return tstate->coroutine_origin_tracking_depth;
+}
+
+int
+_PyEval_SetAsyncGenFirstiter(PyObject *firstiter)
+{
+ PyThreadState *tstate = _PyThreadState_GET();
+
+ if (_PySys_Audit(tstate, "sys.set_asyncgen_hook_firstiter", NULL) < 0) {
+ return -1;
+ }
+
+ Py_XSETREF(tstate->async_gen_firstiter, Py_XNewRef(firstiter));
+ return 0;
+}
+
+PyObject *
+_PyEval_GetAsyncGenFirstiter(void)
+{
+ PyThreadState *tstate = _PyThreadState_GET();
+ return tstate->async_gen_firstiter;
+}
+
+int
+_PyEval_SetAsyncGenFinalizer(PyObject *finalizer)
+{
+ PyThreadState *tstate = _PyThreadState_GET();
+
+ if (_PySys_Audit(tstate, "sys.set_asyncgen_hook_finalizer", NULL) < 0) {
+ return -1;
+ }
+
+ Py_XSETREF(tstate->async_gen_finalizer, Py_XNewRef(finalizer));
+ return 0;
+}
+
+PyObject *
+_PyEval_GetAsyncGenFinalizer(void)
+{
+ PyThreadState *tstate = _PyThreadState_GET();
+ return tstate->async_gen_finalizer;
+}
+
+_PyInterpreterFrame *
+_PyEval_GetFrame(void)
+{
+ PyThreadState *tstate = _PyThreadState_GET();
+ return _PyThreadState_GetFrame(tstate);
+}
+
+PyFrameObject *
+PyEval_GetFrame(void)
+{
+ _PyInterpreterFrame *frame = _PyEval_GetFrame();
+ if (frame == NULL) {
+ return NULL;
+ }
+ PyFrameObject *f = _PyFrame_GetFrameObject(frame);
+ if (f == NULL) {
+ PyErr_Clear();
+ }
+ return f;
+}
+
+PyObject *
+_PyEval_GetBuiltins(PyThreadState *tstate)
+{
+ _PyInterpreterFrame *frame = _PyThreadState_GetFrame(tstate);
+ if (frame != NULL) {
+ return frame->f_builtins;
+ }
+ return tstate->interp->builtins;
+}
+
+PyObject *
+PyEval_GetBuiltins(void)
+{
+ PyThreadState *tstate = _PyThreadState_GET();
+ return _PyEval_GetBuiltins(tstate);
+}
+
+/* Convenience function to get a builtin from its name */
+PyObject *
+_PyEval_GetBuiltin(PyObject *name)
+{
+ PyThreadState *tstate = _PyThreadState_GET();
+ PyObject *attr = PyObject_GetItem(PyEval_GetBuiltins(), name);
+ if (attr == NULL && _PyErr_ExceptionMatches(tstate, PyExc_KeyError)) {
+ _PyErr_SetObject(tstate, PyExc_AttributeError, name);
+ }
+ return attr;
+}
+
+PyObject *
+_PyEval_GetBuiltinId(_Py_Identifier *name)
+{
+ return _PyEval_GetBuiltin(_PyUnicode_FromId(name));
+}
+
+PyObject *
+PyEval_GetLocals(void)
+{
+ PyThreadState *tstate = _PyThreadState_GET();
+ _PyInterpreterFrame *current_frame = _PyThreadState_GetFrame(tstate);
+ if (current_frame == NULL) {
+ _PyErr_SetString(tstate, PyExc_SystemError, "frame does not exist");
+ return NULL;
+ }
+
+ if (_PyFrame_FastToLocalsWithError(current_frame) < 0) {
+ return NULL;
+ }
+
+ PyObject *locals = current_frame->f_locals;
+ assert(locals != NULL);
+ return locals;
+}
+
+PyObject *
+_PyEval_GetFrameLocals(void)
+{
+ PyThreadState *tstate = _PyThreadState_GET();
+ _PyInterpreterFrame *current_frame = _PyThreadState_GetFrame(tstate);
+ if (current_frame == NULL) {
+ _PyErr_SetString(tstate, PyExc_SystemError, "frame does not exist");
+ return NULL;
+ }
+
+ return _PyFrame_GetLocals(current_frame, 1);
+}
+
+PyObject *
+PyEval_GetGlobals(void)
+{
+ PyThreadState *tstate = _PyThreadState_GET();
+ _PyInterpreterFrame *current_frame = _PyThreadState_GetFrame(tstate);
+ if (current_frame == NULL) {
+ return NULL;
+ }
+ return current_frame->f_globals;
+}
+
+int
+PyEval_MergeCompilerFlags(PyCompilerFlags *cf)
+{
+ PyThreadState *tstate = _PyThreadState_GET();
+ _PyInterpreterFrame *current_frame = tstate->cframe->current_frame;
+ int result = cf->cf_flags != 0;
+
+ if (current_frame != NULL) {
+ const int codeflags = current_frame->f_code->co_flags;
+ const int compilerflags = codeflags & PyCF_MASK;
+ if (compilerflags) {
+ result = 1;
+ cf->cf_flags |= compilerflags;
+ }
+ }
+ return result;
+}
+
+
+const char *
+PyEval_GetFuncName(PyObject *func)
+{
+ if (PyMethod_Check(func))
+ return PyEval_GetFuncName(PyMethod_GET_FUNCTION(func));
+ else if (PyFunction_Check(func))
+ return PyUnicode_AsUTF8(((PyFunctionObject*)func)->func_name);
+ else if (PyCFunction_Check(func))
+ return ((PyCFunctionObject*)func)->m_ml->ml_name;
+ else
+ return Py_TYPE(func)->tp_name;
+}
+
+const char *
+PyEval_GetFuncDesc(PyObject *func)
+{
+ if (PyMethod_Check(func))
+ return "()";
+ else if (PyFunction_Check(func))
+ return "()";
+ else if (PyCFunction_Check(func))
+ return "()";
+ else
+ return " object";
+}
+
+/* Extract a slice index from a PyLong or an object with the
+ nb_index slot defined, and store in *pi.
+ Silently reduce values larger than PY_SSIZE_T_MAX to PY_SSIZE_T_MAX,
+ and silently boost values less than PY_SSIZE_T_MIN to PY_SSIZE_T_MIN.
+ Return 0 on error, 1 on success.
+*/
+int
+_PyEval_SliceIndex(PyObject *v, Py_ssize_t *pi)
+{
+ PyThreadState *tstate = _PyThreadState_GET();
+ if (!Py_IsNone(v)) {
+ Py_ssize_t x;
+ if (_PyIndex_Check(v)) {
+ x = PyNumber_AsSsize_t(v, NULL);
+ if (x == -1 && _PyErr_Occurred(tstate))
+ return 0;
+ }
+ else {
+ _PyErr_SetString(tstate, PyExc_TypeError,
+ "slice indices must be integers or "
+ "None or have an __index__ method");
+ return 0;
+ }
+ *pi = x;
+ }
+ return 1;
+}
+
+int
+_PyEval_SliceIndexNotNone(PyObject *v, Py_ssize_t *pi)
+{
+ PyThreadState *tstate = _PyThreadState_GET();
+ Py_ssize_t x;
+ if (_PyIndex_Check(v)) {
+ x = PyNumber_AsSsize_t(v, NULL);
+ if (x == -1 && _PyErr_Occurred(tstate))
+ return 0;
+ }
+ else {
+ _PyErr_SetString(tstate, PyExc_TypeError,
+ "slice indices must be integers or "
+ "have an __index__ method");
+ return 0;
+ }
+ *pi = x;
+ return 1;
+}
+
+static PyObject *
+import_name(PyThreadState *tstate, _PyInterpreterFrame *frame,
+ PyObject *name, PyObject *fromlist, PyObject *level)
+{
+ PyObject *import_func, *res;
+ PyObject* stack[5];
+
+ import_func = PyObject_GetItem(frame->f_builtins, &_Py_ID(__import__));
+ if (import_func == NULL) {
+ if (_PyErr_ExceptionMatches(tstate, PyExc_KeyError)) {
+ _PyErr_SetString(tstate, PyExc_ImportError, "__import__ not found");
+ }
+ return NULL;
+ }
+ PyObject *locals = frame->f_locals;
+ /* Fast path for not overloaded __import__. */
+ if (_PyImport_IsDefaultImportFunc(tstate->interp, import_func)) {
+ Py_DECREF(import_func);
+ int ilevel = _PyLong_AsInt(level);
+ if (ilevel == -1 && _PyErr_Occurred(tstate)) {
+ return NULL;
+ }
+ res = PyImport_ImportModuleLevelObject(
+ name,
+ frame->f_globals,
+ locals == NULL ? Py_None :locals,
+ fromlist,
+ ilevel);
+ return res;
+ }
+
+ stack[0] = name;
+ stack[1] = frame->f_globals;
+ stack[2] = locals == NULL ? Py_None : locals;
+ stack[3] = fromlist;
+ stack[4] = level;
+ res = _PyObject_FastCall(import_func, stack, 5);
+ Py_DECREF(import_func);
+ return res;
+}
+
+static PyObject *
+import_from(PyThreadState *tstate, PyObject *v, PyObject *name)
+{
+ PyObject *x;
+ PyObject *fullmodname, *pkgname, *pkgpath, *pkgname_or_unknown, *errmsg;
+
+ if (_PyObject_LookupAttr(v, name, &x) != 0) {
+ return x;
+ }
+ /* Issue #17636: in case this failed because of a circular relative
+ import, try to fallback on reading the module directly from
+ sys.modules. */
+ pkgname = PyObject_GetAttr(v, &_Py_ID(__name__));
+ if (pkgname == NULL) {
+ goto error;
+ }
+ if (!PyUnicode_Check(pkgname)) {
+ Py_CLEAR(pkgname);
+ goto error;
+ }
+ fullmodname = PyUnicode_FromFormat("%U.%U", pkgname, name);
+ if (fullmodname == NULL) {
+ Py_DECREF(pkgname);
+ return NULL;
+ }
+ x = PyImport_GetModule(fullmodname);
+ Py_DECREF(fullmodname);
+ if (x == NULL && !_PyErr_Occurred(tstate)) {
+ goto error;
+ }
+ Py_DECREF(pkgname);
+ return x;
+ error:
+ pkgpath = PyModule_GetFilenameObject(v);
+ if (pkgname == NULL) {
+ pkgname_or_unknown = PyUnicode_FromString("<unknown module name>");
+ if (pkgname_or_unknown == NULL) {
+ Py_XDECREF(pkgpath);
+ return NULL;
+ }
+ } else {
+ pkgname_or_unknown = pkgname;
+ }
+
+ if (pkgpath == NULL || !PyUnicode_Check(pkgpath)) {
+ _PyErr_Clear(tstate);
+ errmsg = PyUnicode_FromFormat(
+ "cannot import name %R from %R (unknown location)",
+ name, pkgname_or_unknown
+ );
+ /* NULL checks for errmsg and pkgname done by PyErr_SetImportError. */
+ _PyErr_SetImportErrorWithNameFrom(errmsg, pkgname, NULL, name);
+ }
+ else {
+ PyObject *spec = PyObject_GetAttr(v, &_Py_ID(__spec__));
+ const char *fmt =
+ _PyModuleSpec_IsInitializing(spec) ?
+ "cannot import name %R from partially initialized module %R "
+ "(most likely due to a circular import) (%S)" :
+ "cannot import name %R from %R (%S)";
+ Py_XDECREF(spec);
+
+ errmsg = PyUnicode_FromFormat(fmt, name, pkgname_or_unknown, pkgpath);
+ /* NULL checks for errmsg and pkgname done by PyErr_SetImportError. */
+ _PyErr_SetImportErrorWithNameFrom(errmsg, pkgname, pkgpath, name);
+ }
+
+ Py_XDECREF(errmsg);
+ Py_XDECREF(pkgname_or_unknown);
+ Py_XDECREF(pkgpath);
+ return NULL;
+}
+
+#define CANNOT_CATCH_MSG "catching classes that do not inherit from "\
+ "BaseException is not allowed"
+
+#define CANNOT_EXCEPT_STAR_EG "catching ExceptionGroup with except* "\
+ "is not allowed. Use except instead."
+
+static int
+check_except_type_valid(PyThreadState *tstate, PyObject* right)
+{
+ if (PyTuple_Check(right)) {
+ Py_ssize_t i, length;
+ length = PyTuple_GET_SIZE(right);
+ for (i = 0; i < length; i++) {
+ PyObject *exc = PyTuple_GET_ITEM(right, i);
+ if (!PyExceptionClass_Check(exc)) {
+ _PyErr_SetString(tstate, PyExc_TypeError,
+ CANNOT_CATCH_MSG);
+ return -1;
+ }
+ }
+ }
+ else {
+ if (!PyExceptionClass_Check(right)) {
+ _PyErr_SetString(tstate, PyExc_TypeError,
+ CANNOT_CATCH_MSG);
+ return -1;
+ }
+ }
+ return 0;
+}
+
+static int
+check_except_star_type_valid(PyThreadState *tstate, PyObject* right)
+{
+ if (check_except_type_valid(tstate, right) < 0) {
+ return -1;
+ }
+
+ /* reject except *ExceptionGroup */
+
+ int is_subclass = 0;
+ if (PyTuple_Check(right)) {
+ Py_ssize_t length = PyTuple_GET_SIZE(right);
+ for (Py_ssize_t i = 0; i < length; i++) {
+ PyObject *exc = PyTuple_GET_ITEM(right, i);
+ is_subclass = PyObject_IsSubclass(exc, PyExc_BaseExceptionGroup);
+ if (is_subclass < 0) {
+ return -1;
+ }
+ if (is_subclass) {
+ break;
+ }
+ }
+ }
+ else {
+ is_subclass = PyObject_IsSubclass(right, PyExc_BaseExceptionGroup);
+ if (is_subclass < 0) {
+ return -1;
+ }
+ }
+ if (is_subclass) {
+ _PyErr_SetString(tstate, PyExc_TypeError,
+ CANNOT_EXCEPT_STAR_EG);
+ return -1;
+ }
+ return 0;
+}
+
+static int
+check_args_iterable(PyThreadState *tstate, PyObject *func, PyObject *args)
+{
+ if (Py_TYPE(args)->tp_iter == NULL && !PySequence_Check(args)) {
+ /* check_args_iterable() may be called with a live exception:
+ * clear it to prevent calling _PyObject_FunctionStr() with an
+ * exception set. */
+ _PyErr_Clear(tstate);
+ PyObject *funcstr = _PyObject_FunctionStr(func);
+ if (funcstr != NULL) {
+ _PyErr_Format(tstate, PyExc_TypeError,
+ "%U argument after * must be an iterable, not %.200s",
+ funcstr, Py_TYPE(args)->tp_name);
+ Py_DECREF(funcstr);
+ }
+ return -1;
+ }
+ return 0;
+}
+
+static void
+format_kwargs_error(PyThreadState *tstate, PyObject *func, PyObject *kwargs)
+{
+ /* _PyDict_MergeEx raises attribute
+ * error (percolated from an attempt
+ * to get 'keys' attribute) instead of
+ * a type error if its second argument
+ * is not a mapping.
+ */
+ if (_PyErr_ExceptionMatches(tstate, PyExc_AttributeError)) {
+ _PyErr_Clear(tstate);
+ PyObject *funcstr = _PyObject_FunctionStr(func);
+ if (funcstr != NULL) {
+ _PyErr_Format(
+ tstate, PyExc_TypeError,
+ "%U argument after ** must be a mapping, not %.200s",
+ funcstr, Py_TYPE(kwargs)->tp_name);
+ Py_DECREF(funcstr);
+ }
+ }
+ else if (_PyErr_ExceptionMatches(tstate, PyExc_KeyError)) {
+ PyObject *exc = _PyErr_GetRaisedException(tstate);
+ PyObject *args = ((PyBaseExceptionObject *)exc)->args;
+ if (exc && PyTuple_Check(args) && PyTuple_GET_SIZE(args) == 1) {
+ _PyErr_Clear(tstate);
+ PyObject *funcstr = _PyObject_FunctionStr(func);
+ if (funcstr != NULL) {
+ PyObject *key = PyTuple_GET_ITEM(args, 0);
+ _PyErr_Format(
+ tstate, PyExc_TypeError,
+ "%U got multiple values for keyword argument '%S'",
+ funcstr, key);
+ Py_DECREF(funcstr);
+ }
+ Py_XDECREF(exc);
+ }
+ else {
+ _PyErr_SetRaisedException(tstate, exc);
+ }
+ }
+}
+
+static void
+format_exc_check_arg(PyThreadState *tstate, PyObject *exc,
+ const char *format_str, PyObject *obj)
+{
+ const char *obj_str;
+
+ if (!obj)
+ return;
+
+ obj_str = PyUnicode_AsUTF8(obj);
+ if (!obj_str)
+ return;
+
+ _PyErr_Format(tstate, exc, format_str, obj_str);
+
+ if (exc == PyExc_NameError) {
+ // Include the name in the NameError exceptions to offer suggestions later.
+ PyObject *exc = PyErr_GetRaisedException();
+ if (PyErr_GivenExceptionMatches(exc, PyExc_NameError)) {
+ if (((PyNameErrorObject*)exc)->name == NULL) {
+ // We do not care if this fails because we are going to restore the
+ // NameError anyway.
+ (void)PyObject_SetAttr(exc, &_Py_ID(name), obj);
+ }
+ }
+ PyErr_SetRaisedException(exc);
+ }
+}
+
+static void
+format_exc_unbound(PyThreadState *tstate, PyCodeObject *co, int oparg)
+{
+ PyObject *name;
+ /* Don't stomp existing exception */
+ if (_PyErr_Occurred(tstate))
+ return;
+ name = PyTuple_GET_ITEM(co->co_localsplusnames, oparg);
+ if (oparg < PyCode_GetFirstFree(co)) {
+ format_exc_check_arg(tstate, PyExc_UnboundLocalError,
+ UNBOUNDLOCAL_ERROR_MSG, name);
+ } else {
+ format_exc_check_arg(tstate, PyExc_NameError,
+ UNBOUNDFREE_ERROR_MSG, name);
+ }
+}
+
+static void
+format_awaitable_error(PyThreadState *tstate, PyTypeObject *type, int oparg)
+{
+ if (type->tp_as_async == NULL || type->tp_as_async->am_await == NULL) {
+ if (oparg == 1) {
+ _PyErr_Format(tstate, PyExc_TypeError,
+ "'async with' received an object from __aenter__ "
+ "that does not implement __await__: %.100s",
+ type->tp_name);
+ }
+ else if (oparg == 2) {
+ _PyErr_Format(tstate, PyExc_TypeError,
+ "'async with' received an object from __aexit__ "
+ "that does not implement __await__: %.100s",
+ type->tp_name);
+ }
+ }
+}
+
+
+Py_ssize_t
+PyUnstable_Eval_RequestCodeExtraIndex(freefunc free)
+{
+ PyInterpreterState *interp = _PyInterpreterState_GET();
+ Py_ssize_t new_index;
+
+ if (interp->co_extra_user_count == MAX_CO_EXTRA_USERS - 1) {
+ return -1;
+ }
+ new_index = interp->co_extra_user_count++;
+ interp->co_extra_freefuncs[new_index] = free;
+ return new_index;
+}
+
+/* Implement Py_EnterRecursiveCall() and Py_LeaveRecursiveCall() as functions
+ for the limited API. */
+
+int Py_EnterRecursiveCall(const char *where)
+{
+ return _Py_EnterRecursiveCall(where);
+}
+
+void Py_LeaveRecursiveCall(void)
+{
+ _Py_LeaveRecursiveCall();
+}
diff --git a/contrib/tools/python3/Python/ceval_gil.c b/contrib/tools/python3/Python/ceval_gil.c
new file mode 100644
index 00000000000..c1ab5883568
--- /dev/null
+++ b/contrib/tools/python3/Python/ceval_gil.c
@@ -0,0 +1,1089 @@
+
+#include "Python.h"
+#include "pycore_atomic.h" // _Py_atomic_int
+#include "pycore_ceval.h" // _PyEval_SignalReceived()
+#include "pycore_pyerrors.h" // _PyErr_GetRaisedException()
+#include "pycore_pylifecycle.h" // _PyErr_Print()
+#include "pycore_initconfig.h" // _PyStatus_OK()
+#include "pycore_interp.h" // _Py_RunGC()
+#include "pycore_pymem.h" // _PyMem_IsPtrFreed()
+
+/*
+ Notes about the implementation:
+
+ - The GIL is just a boolean variable (locked) whose access is protected
+ by a mutex (gil_mutex), and whose changes are signalled by a condition
+ variable (gil_cond). gil_mutex is taken for short periods of time,
+ and therefore mostly uncontended.
+
+ - In the GIL-holding thread, the main loop (PyEval_EvalFrameEx) must be
+ able to release the GIL on demand by another thread. A volatile boolean
+ variable (gil_drop_request) is used for that purpose, which is checked
+ at every turn of the eval loop. That variable is set after a wait of
+ `interval` microseconds on `gil_cond` has timed out.
+
+ [Actually, another volatile boolean variable (eval_breaker) is used
+ which ORs several conditions into one. Volatile booleans are
+ sufficient as inter-thread signalling means since Python is run
+ on cache-coherent architectures only.]
+
+ - A thread wanting to take the GIL will first let pass a given amount of
+ time (`interval` microseconds) before setting gil_drop_request. This
+ encourages a defined switching period, but doesn't enforce it since
+ opcodes can take an arbitrary time to execute.
+
+ The `interval` value is available for the user to read and modify
+ using the Python API `sys.{get,set}switchinterval()`.
+
+ - When a thread releases the GIL and gil_drop_request is set, that thread
+ ensures that another GIL-awaiting thread gets scheduled.
+ It does so by waiting on a condition variable (switch_cond) until
+ the value of last_holder is changed to something else than its
+ own thread state pointer, indicating that another thread was able to
+ take the GIL.
+
+ This is meant to prohibit the latency-adverse behaviour on multi-core
+ machines where one thread would speculatively release the GIL, but still
+ run and end up being the first to re-acquire it, making the "timeslices"
+ much longer than expected.
+ (Note: this mechanism is enabled with FORCE_SWITCHING above)
+*/
+
+// GH-89279: Force inlining by using a macro.
+#if defined(_MSC_VER) && SIZEOF_INT == 4
+#define _Py_atomic_load_relaxed_int32(ATOMIC_VAL) (assert(sizeof((ATOMIC_VAL)->_value) == 4), *((volatile int*)&((ATOMIC_VAL)->_value)))
+#else
+#define _Py_atomic_load_relaxed_int32(ATOMIC_VAL) _Py_atomic_load_relaxed(ATOMIC_VAL)
+#endif
+
+/* This can set eval_breaker to 0 even though gil_drop_request became
+ 1. We believe this is all right because the eval loop will release
+ the GIL eventually anyway. */
+static inline void
+COMPUTE_EVAL_BREAKER(PyInterpreterState *interp,
+ struct _ceval_runtime_state *ceval,
+ struct _ceval_state *ceval2)
+{
+ _Py_atomic_store_relaxed(&ceval2->eval_breaker,
+ _Py_atomic_load_relaxed_int32(&ceval2->gil_drop_request)
+ | (_Py_atomic_load_relaxed_int32(&ceval->signals_pending)
+ && _Py_ThreadCanHandleSignals(interp))
+ | (_Py_atomic_load_relaxed_int32(&ceval2->pending.calls_to_do))
+ | (_Py_IsMainThread() && _Py_IsMainInterpreter(interp)
+ &&_Py_atomic_load_relaxed_int32(&ceval->pending_mainthread.calls_to_do))
+ | ceval2->pending.async_exc
+ | _Py_atomic_load_relaxed_int32(&ceval2->gc_scheduled));
+}
+
+
+static inline void
+SET_GIL_DROP_REQUEST(PyInterpreterState *interp)
+{
+ struct _ceval_state *ceval2 = &interp->ceval;
+ _Py_atomic_store_relaxed(&ceval2->gil_drop_request, 1);
+ _Py_atomic_store_relaxed(&ceval2->eval_breaker, 1);
+}
+
+
+static inline void
+RESET_GIL_DROP_REQUEST(PyInterpreterState *interp)
+{
+ struct _ceval_runtime_state *ceval = &interp->runtime->ceval;
+ struct _ceval_state *ceval2 = &interp->ceval;
+ _Py_atomic_store_relaxed(&ceval2->gil_drop_request, 0);
+ COMPUTE_EVAL_BREAKER(interp, ceval, ceval2);
+}
+
+
+static inline void
+SIGNAL_PENDING_CALLS(struct _pending_calls *pending, PyInterpreterState *interp)
+{
+ struct _ceval_runtime_state *ceval = &interp->runtime->ceval;
+ struct _ceval_state *ceval2 = &interp->ceval;
+ _Py_atomic_store_relaxed(&pending->calls_to_do, 1);
+ COMPUTE_EVAL_BREAKER(interp, ceval, ceval2);
+}
+
+
+static inline void
+UNSIGNAL_PENDING_CALLS(PyInterpreterState *interp)
+{
+ struct _ceval_runtime_state *ceval = &interp->runtime->ceval;
+ struct _ceval_state *ceval2 = &interp->ceval;
+ if (_Py_IsMainThread() && _Py_IsMainInterpreter(interp)) {
+ _Py_atomic_store_relaxed(&ceval->pending_mainthread.calls_to_do, 0);
+ }
+ _Py_atomic_store_relaxed(&ceval2->pending.calls_to_do, 0);
+ COMPUTE_EVAL_BREAKER(interp, ceval, ceval2);
+}
+
+
+static inline void
+SIGNAL_PENDING_SIGNALS(PyInterpreterState *interp, int force)
+{
+ struct _ceval_runtime_state *ceval = &interp->runtime->ceval;
+ struct _ceval_state *ceval2 = &interp->ceval;
+ _Py_atomic_store_relaxed(&ceval->signals_pending, 1);
+ if (force) {
+ _Py_atomic_store_relaxed(&ceval2->eval_breaker, 1);
+ }
+ else {
+ /* eval_breaker is not set to 1 if thread_can_handle_signals() is false */
+ COMPUTE_EVAL_BREAKER(interp, ceval, ceval2);
+ }
+}
+
+
+static inline void
+UNSIGNAL_PENDING_SIGNALS(PyInterpreterState *interp)
+{
+ struct _ceval_runtime_state *ceval = &interp->runtime->ceval;
+ struct _ceval_state *ceval2 = &interp->ceval;
+ _Py_atomic_store_relaxed(&ceval->signals_pending, 0);
+ COMPUTE_EVAL_BREAKER(interp, ceval, ceval2);
+}
+
+
+static inline void
+SIGNAL_ASYNC_EXC(PyInterpreterState *interp)
+{
+ struct _ceval_state *ceval2 = &interp->ceval;
+ ceval2->pending.async_exc = 1;
+ _Py_atomic_store_relaxed(&ceval2->eval_breaker, 1);
+}
+
+
+static inline void
+UNSIGNAL_ASYNC_EXC(PyInterpreterState *interp)
+{
+ struct _ceval_runtime_state *ceval = &interp->runtime->ceval;
+ struct _ceval_state *ceval2 = &interp->ceval;
+ ceval2->pending.async_exc = 0;
+ COMPUTE_EVAL_BREAKER(interp, ceval, ceval2);
+}
+
+
+/*
+ * Implementation of the Global Interpreter Lock (GIL).
+ */
+
+#include <stdlib.h>
+#include <errno.h>
+
+#include "pycore_atomic.h"
+
+
+#include "condvar.h"
+
+#define MUTEX_INIT(mut) \
+ if (PyMUTEX_INIT(&(mut))) { \
+ Py_FatalError("PyMUTEX_INIT(" #mut ") failed"); };
+#define MUTEX_FINI(mut) \
+ if (PyMUTEX_FINI(&(mut))) { \
+ Py_FatalError("PyMUTEX_FINI(" #mut ") failed"); };
+#define MUTEX_LOCK(mut) \
+ if (PyMUTEX_LOCK(&(mut))) { \
+ Py_FatalError("PyMUTEX_LOCK(" #mut ") failed"); };
+#define MUTEX_UNLOCK(mut) \
+ if (PyMUTEX_UNLOCK(&(mut))) { \
+ Py_FatalError("PyMUTEX_UNLOCK(" #mut ") failed"); };
+
+#define COND_INIT(cond) \
+ if (PyCOND_INIT(&(cond))) { \
+ Py_FatalError("PyCOND_INIT(" #cond ") failed"); };
+#define COND_FINI(cond) \
+ if (PyCOND_FINI(&(cond))) { \
+ Py_FatalError("PyCOND_FINI(" #cond ") failed"); };
+#define COND_SIGNAL(cond) \
+ if (PyCOND_SIGNAL(&(cond))) { \
+ Py_FatalError("PyCOND_SIGNAL(" #cond ") failed"); };
+#define COND_WAIT(cond, mut) \
+ if (PyCOND_WAIT(&(cond), &(mut))) { \
+ Py_FatalError("PyCOND_WAIT(" #cond ") failed"); };
+#define COND_TIMED_WAIT(cond, mut, microseconds, timeout_result) \
+ { \
+ int r = PyCOND_TIMEDWAIT(&(cond), &(mut), (microseconds)); \
+ if (r < 0) \
+ Py_FatalError("PyCOND_WAIT(" #cond ") failed"); \
+ if (r) /* 1 == timeout, 2 == impl. can't say, so assume timeout */ \
+ timeout_result = 1; \
+ else \
+ timeout_result = 0; \
+ } \
+
+
+#define DEFAULT_INTERVAL 5000
+
+static void _gil_initialize(struct _gil_runtime_state *gil)
+{
+ _Py_atomic_int uninitialized = {-1};
+ gil->locked = uninitialized;
+ gil->interval = DEFAULT_INTERVAL;
+}
+
+static int gil_created(struct _gil_runtime_state *gil)
+{
+ if (gil == NULL) {
+ return 0;
+ }
+ return (_Py_atomic_load_explicit(&gil->locked, _Py_memory_order_acquire) >= 0);
+}
+
+static void create_gil(struct _gil_runtime_state *gil)
+{
+ MUTEX_INIT(gil->mutex);
+#ifdef FORCE_SWITCHING
+ MUTEX_INIT(gil->switch_mutex);
+#endif
+ COND_INIT(gil->cond);
+#ifdef FORCE_SWITCHING
+ COND_INIT(gil->switch_cond);
+#endif
+ _Py_atomic_store_relaxed(&gil->last_holder, 0);
+ _Py_ANNOTATE_RWLOCK_CREATE(&gil->locked);
+ _Py_atomic_store_explicit(&gil->locked, 0, _Py_memory_order_release);
+}
+
+static void destroy_gil(struct _gil_runtime_state *gil)
+{
+ /* some pthread-like implementations tie the mutex to the cond
+ * and must have the cond destroyed first.
+ */
+ COND_FINI(gil->cond);
+ MUTEX_FINI(gil->mutex);
+#ifdef FORCE_SWITCHING
+ COND_FINI(gil->switch_cond);
+ MUTEX_FINI(gil->switch_mutex);
+#endif
+ _Py_atomic_store_explicit(&gil->locked, -1,
+ _Py_memory_order_release);
+ _Py_ANNOTATE_RWLOCK_DESTROY(&gil->locked);
+}
+
+#ifdef HAVE_FORK
+static void recreate_gil(struct _gil_runtime_state *gil)
+{
+ _Py_ANNOTATE_RWLOCK_DESTROY(&gil->locked);
+ /* XXX should we destroy the old OS resources here? */
+ create_gil(gil);
+}
+#endif
+
+static void
+drop_gil(struct _ceval_state *ceval, PyThreadState *tstate)
+{
+ /* If tstate is NULL, the caller is indicating that we're releasing
+ the GIL for the last time in this thread. This is particularly
+ relevant when the current thread state is finalizing or its
+ interpreter is finalizing (either may be in an inconsistent
+ state). In that case the current thread will definitely
+ never try to acquire the GIL again. */
+ // XXX It may be more correct to check tstate->_status.finalizing.
+ // XXX assert(tstate == NULL || !tstate->_status.cleared);
+
+ struct _gil_runtime_state *gil = ceval->gil;
+ if (!_Py_atomic_load_relaxed(&gil->locked)) {
+ Py_FatalError("drop_gil: GIL is not locked");
+ }
+
+ /* tstate is allowed to be NULL (early interpreter init) */
+ if (tstate != NULL) {
+ /* Sub-interpreter support: threads might have been switched
+ under our feet using PyThreadState_Swap(). Fix the GIL last
+ holder variable so that our heuristics work. */
+ _Py_atomic_store_relaxed(&gil->last_holder, (uintptr_t)tstate);
+ }
+
+ MUTEX_LOCK(gil->mutex);
+ _Py_ANNOTATE_RWLOCK_RELEASED(&gil->locked, /*is_write=*/1);
+ _Py_atomic_store_relaxed(&gil->locked, 0);
+ COND_SIGNAL(gil->cond);
+ MUTEX_UNLOCK(gil->mutex);
+
+#ifdef FORCE_SWITCHING
+ /* We check tstate first in case we might be releasing the GIL for
+ the last time in this thread. In that case there's a possible
+ race with tstate->interp getting deleted after gil->mutex is
+ unlocked and before the following code runs, leading to a crash.
+ We can use (tstate == NULL) to indicate the thread is done with
+ the GIL, and that's the only time we might delete the
+ interpreter, so checking tstate first prevents the crash.
+ See https://github.com/python/cpython/issues/104341. */
+ if (tstate != NULL && _Py_atomic_load_relaxed(&ceval->gil_drop_request)) {
+ MUTEX_LOCK(gil->switch_mutex);
+ /* Not switched yet => wait */
+ if (((PyThreadState*)_Py_atomic_load_relaxed(&gil->last_holder)) == tstate)
+ {
+ assert(_PyThreadState_CheckConsistency(tstate));
+ RESET_GIL_DROP_REQUEST(tstate->interp);
+ /* NOTE: if COND_WAIT does not atomically start waiting when
+ releasing the mutex, another thread can run through, take
+ the GIL and drop it again, and reset the condition
+ before we even had a chance to wait for it. */
+ COND_WAIT(gil->switch_cond, gil->switch_mutex);
+ }
+ MUTEX_UNLOCK(gil->switch_mutex);
+ }
+#endif
+}
+
+
+/* Take the GIL.
+
+ The function saves errno at entry and restores its value at exit.
+
+ tstate must be non-NULL. */
+static void
+take_gil(PyThreadState *tstate)
+{
+ int err = errno;
+
+ assert(tstate != NULL);
+ /* We shouldn't be using a thread state that isn't viable any more. */
+ // XXX It may be more correct to check tstate->_status.finalizing.
+ // XXX assert(!tstate->_status.cleared);
+
+ if (_PyThreadState_MustExit(tstate)) {
+ /* bpo-39877: If Py_Finalize() has been called and tstate is not the
+ thread which called Py_Finalize(), exit immediately the thread.
+
+ This code path can be reached by a daemon thread after Py_Finalize()
+ completes. In this case, tstate is a dangling pointer: points to
+ PyThreadState freed memory. */
+ PyThread_exit_thread();
+ }
+
+ assert(_PyThreadState_CheckConsistency(tstate));
+ PyInterpreterState *interp = tstate->interp;
+ struct _ceval_state *ceval = &interp->ceval;
+ struct _gil_runtime_state *gil = ceval->gil;
+
+ /* Check that _PyEval_InitThreads() was called to create the lock */
+ assert(gil_created(gil));
+
+ MUTEX_LOCK(gil->mutex);
+
+ if (!_Py_atomic_load_relaxed(&gil->locked)) {
+ goto _ready;
+ }
+
+ int drop_requested = 0;
+ while (_Py_atomic_load_relaxed(&gil->locked)) {
+ unsigned long saved_switchnum = gil->switch_number;
+
+ unsigned long interval = (gil->interval >= 1 ? gil->interval : 1);
+ int timed_out = 0;
+ COND_TIMED_WAIT(gil->cond, gil->mutex, interval, timed_out);
+
+ /* If we timed out and no switch occurred in the meantime, it is time
+ to ask the GIL-holding thread to drop it. */
+ if (timed_out &&
+ _Py_atomic_load_relaxed(&gil->locked) &&
+ gil->switch_number == saved_switchnum)
+ {
+ if (_PyThreadState_MustExit(tstate)) {
+ MUTEX_UNLOCK(gil->mutex);
+ // gh-96387: If the loop requested a drop request in a previous
+ // iteration, reset the request. Otherwise, drop_gil() can
+ // block forever waiting for the thread which exited. Drop
+ // requests made by other threads are also reset: these threads
+ // may have to request again a drop request (iterate one more
+ // time).
+ if (drop_requested) {
+ RESET_GIL_DROP_REQUEST(interp);
+ }
+ PyThread_exit_thread();
+ }
+ assert(_PyThreadState_CheckConsistency(tstate));
+
+ SET_GIL_DROP_REQUEST(interp);
+ drop_requested = 1;
+ }
+ }
+
+_ready:
+#ifdef FORCE_SWITCHING
+ /* This mutex must be taken before modifying gil->last_holder:
+ see drop_gil(). */
+ MUTEX_LOCK(gil->switch_mutex);
+#endif
+ /* We now hold the GIL */
+ _Py_atomic_store_relaxed(&gil->locked, 1);
+ _Py_ANNOTATE_RWLOCK_ACQUIRED(&gil->locked, /*is_write=*/1);
+
+ if (tstate != (PyThreadState*)_Py_atomic_load_relaxed(&gil->last_holder)) {
+ _Py_atomic_store_relaxed(&gil->last_holder, (uintptr_t)tstate);
+ ++gil->switch_number;
+ }
+
+#ifdef FORCE_SWITCHING
+ COND_SIGNAL(gil->switch_cond);
+ MUTEX_UNLOCK(gil->switch_mutex);
+#endif
+
+ if (_PyThreadState_MustExit(tstate)) {
+ /* bpo-36475: If Py_Finalize() has been called and tstate is not
+ the thread which called Py_Finalize(), exit immediately the
+ thread.
+
+ This code path can be reached by a daemon thread which was waiting
+ in take_gil() while the main thread called
+ wait_for_thread_shutdown() from Py_Finalize(). */
+ MUTEX_UNLOCK(gil->mutex);
+ drop_gil(ceval, tstate);
+ PyThread_exit_thread();
+ }
+ assert(_PyThreadState_CheckConsistency(tstate));
+
+ if (_Py_atomic_load_relaxed(&ceval->gil_drop_request)) {
+ RESET_GIL_DROP_REQUEST(interp);
+ }
+ else {
+ /* bpo-40010: eval_breaker should be recomputed to be set to 1 if there
+ is a pending signal: signal received by another thread which cannot
+ handle signals.
+
+ Note: RESET_GIL_DROP_REQUEST() calls COMPUTE_EVAL_BREAKER(). */
+ COMPUTE_EVAL_BREAKER(interp, &_PyRuntime.ceval, ceval);
+ }
+
+ /* Don't access tstate if the thread must exit */
+ if (tstate->async_exc != NULL) {
+ _PyEval_SignalAsyncExc(tstate->interp);
+ }
+
+ MUTEX_UNLOCK(gil->mutex);
+
+ errno = err;
+}
+
+void _PyEval_SetSwitchInterval(unsigned long microseconds)
+{
+ PyInterpreterState *interp = _PyInterpreterState_Get();
+ struct _gil_runtime_state *gil = interp->ceval.gil;
+ assert(gil != NULL);
+ gil->interval = microseconds;
+}
+
+unsigned long _PyEval_GetSwitchInterval(void)
+{
+ PyInterpreterState *interp = _PyInterpreterState_Get();
+ struct _gil_runtime_state *gil = interp->ceval.gil;
+ assert(gil != NULL);
+ return gil->interval;
+}
+
+
+int
+_PyEval_ThreadsInitialized(void)
+{
+ /* XXX This is only needed for an assert in PyGILState_Ensure(),
+ * which currently does not work with subinterpreters.
+ * Thus we only use the main interpreter. */
+ PyInterpreterState *interp = _PyInterpreterState_Main();
+ if (interp == NULL) {
+ return 0;
+ }
+ struct _gil_runtime_state *gil = interp->ceval.gil;
+ return gil_created(gil);
+}
+
+int
+PyEval_ThreadsInitialized(void)
+{
+ return _PyEval_ThreadsInitialized();
+}
+
+static inline int
+current_thread_holds_gil(struct _gil_runtime_state *gil, PyThreadState *tstate)
+{
+ if (((PyThreadState*)_Py_atomic_load_relaxed(&gil->last_holder)) != tstate) {
+ return 0;
+ }
+ return _Py_atomic_load_relaxed(&gil->locked);
+}
+
+static void
+init_shared_gil(PyInterpreterState *interp, struct _gil_runtime_state *gil)
+{
+ assert(gil_created(gil));
+ interp->ceval.gil = gil;
+ interp->ceval.own_gil = 0;
+}
+
+static void
+init_own_gil(PyInterpreterState *interp, struct _gil_runtime_state *gil)
+{
+ assert(!gil_created(gil));
+ create_gil(gil);
+ assert(gil_created(gil));
+ interp->ceval.gil = gil;
+ interp->ceval.own_gil = 1;
+}
+
+PyStatus
+_PyEval_InitGIL(PyThreadState *tstate, int own_gil)
+{
+ assert(tstate->interp->ceval.gil == NULL);
+ int locked;
+ if (!own_gil) {
+ /* The interpreter will share the main interpreter's instead. */
+ PyInterpreterState *main_interp = _PyInterpreterState_Main();
+ assert(tstate->interp != main_interp);
+ struct _gil_runtime_state *gil = main_interp->ceval.gil;
+ init_shared_gil(tstate->interp, gil);
+ locked = current_thread_holds_gil(gil, tstate);
+ }
+ else {
+ PyThread_init_thread();
+ init_own_gil(tstate->interp, &tstate->interp->_gil);
+ locked = 0;
+ }
+ if (!locked) {
+ take_gil(tstate);
+ }
+
+ return _PyStatus_OK();
+}
+
+void
+_PyEval_FiniGIL(PyInterpreterState *interp)
+{
+ struct _gil_runtime_state *gil = interp->ceval.gil;
+ if (gil == NULL) {
+ /* It was already finalized (or hasn't been initialized yet). */
+ assert(!interp->ceval.own_gil);
+ return;
+ }
+ else if (!interp->ceval.own_gil) {
+#ifdef Py_DEBUG
+ PyInterpreterState *main_interp = _PyInterpreterState_Main();
+ assert(main_interp != NULL && interp != main_interp);
+ assert(interp->ceval.gil == main_interp->ceval.gil);
+#endif
+ interp->ceval.gil = NULL;
+ return;
+ }
+
+ if (!gil_created(gil)) {
+ /* First Py_InitializeFromConfig() call: the GIL doesn't exist
+ yet: do nothing. */
+ return;
+ }
+
+ destroy_gil(gil);
+ assert(!gil_created(gil));
+ interp->ceval.gil = NULL;
+}
+
+void
+PyEval_InitThreads(void)
+{
+ /* Do nothing: kept for backward compatibility */
+}
+
+void
+_PyEval_Fini(void)
+{
+#ifdef Py_STATS
+ _Py_PrintSpecializationStats(1);
+#endif
+}
+void
+PyEval_AcquireLock(void)
+{
+ PyThreadState *tstate = _PyThreadState_GET();
+ _Py_EnsureTstateNotNULL(tstate);
+
+ take_gil(tstate);
+}
+
+void
+PyEval_ReleaseLock(void)
+{
+ PyThreadState *tstate = _PyThreadState_GET();
+ /* This function must succeed when the current thread state is NULL.
+ We therefore avoid PyThreadState_Get() which dumps a fatal error
+ in debug mode. */
+ struct _ceval_state *ceval = &tstate->interp->ceval;
+ drop_gil(ceval, tstate);
+}
+
+void
+_PyEval_AcquireLock(PyThreadState *tstate)
+{
+ _Py_EnsureTstateNotNULL(tstate);
+ take_gil(tstate);
+}
+
+void
+_PyEval_ReleaseLock(PyInterpreterState *interp, PyThreadState *tstate)
+{
+ /* If tstate is NULL then we do not expect the current thread
+ to acquire the GIL ever again. */
+ assert(tstate == NULL || tstate->interp == interp);
+ struct _ceval_state *ceval = &interp->ceval;
+ drop_gil(ceval, tstate);
+}
+
+void
+PyEval_AcquireThread(PyThreadState *tstate)
+{
+ _Py_EnsureTstateNotNULL(tstate);
+
+ take_gil(tstate);
+
+ if (_PyThreadState_SwapNoGIL(tstate) != NULL) {
+ Py_FatalError("non-NULL old thread state");
+ }
+}
+
+void
+PyEval_ReleaseThread(PyThreadState *tstate)
+{
+ assert(_PyThreadState_CheckConsistency(tstate));
+
+ PyThreadState *new_tstate = _PyThreadState_SwapNoGIL(NULL);
+ if (new_tstate != tstate) {
+ Py_FatalError("wrong thread state");
+ }
+ struct _ceval_state *ceval = &tstate->interp->ceval;
+ drop_gil(ceval, tstate);
+}
+
+#ifdef HAVE_FORK
+/* This function is called from PyOS_AfterFork_Child to destroy all threads
+ which are not running in the child process, and clear internal locks
+ which might be held by those threads. */
+PyStatus
+_PyEval_ReInitThreads(PyThreadState *tstate)
+{
+ assert(tstate->interp == _PyInterpreterState_Main());
+
+ struct _gil_runtime_state *gil = tstate->interp->ceval.gil;
+ if (!gil_created(gil)) {
+ return _PyStatus_OK();
+ }
+ recreate_gil(gil);
+
+ take_gil(tstate);
+
+ struct _pending_calls *pending = &tstate->interp->ceval.pending;
+ if (_PyThread_at_fork_reinit(&pending->lock) < 0) {
+ return _PyStatus_ERR("Can't reinitialize pending calls lock");
+ }
+
+ /* Destroy all threads except the current one */
+ _PyThreadState_DeleteExcept(tstate);
+ return _PyStatus_OK();
+}
+#endif
+
+/* This function is used to signal that async exceptions are waiting to be
+ raised. */
+
+void
+_PyEval_SignalAsyncExc(PyInterpreterState *interp)
+{
+ SIGNAL_ASYNC_EXC(interp);
+}
+
+PyThreadState *
+PyEval_SaveThread(void)
+{
+ PyThreadState *tstate = _PyThreadState_SwapNoGIL(NULL);
+ _Py_EnsureTstateNotNULL(tstate);
+
+ struct _ceval_state *ceval = &tstate->interp->ceval;
+ assert(gil_created(ceval->gil));
+ drop_gil(ceval, tstate);
+ return tstate;
+}
+
+void
+PyEval_RestoreThread(PyThreadState *tstate)
+{
+ _Py_EnsureTstateNotNULL(tstate);
+
+ take_gil(tstate);
+
+ _PyThreadState_SwapNoGIL(tstate);
+}
+
+
+/* Mechanism whereby asynchronously executing callbacks (e.g. UNIX
+ signal handlers or Mac I/O completion routines) can schedule calls
+ to a function to be called synchronously.
+ The synchronous function is called with one void* argument.
+ It should return 0 for success or -1 for failure -- failure should
+ be accompanied by an exception.
+
+ If registry succeeds, the registry function returns 0; if it fails
+ (e.g. due to too many pending calls) it returns -1 (without setting
+ an exception condition).
+
+ Note that because registry may occur from within signal handlers,
+ or other asynchronous events, calling malloc() is unsafe!
+
+ Any thread can schedule pending calls, but only the main thread
+ will execute them.
+ There is no facility to schedule calls to a particular thread, but
+ that should be easy to change, should that ever be required. In
+ that case, the static variables here should go into the python
+ threadstate.
+*/
+
+void
+_PyEval_SignalReceived(PyInterpreterState *interp)
+{
+#ifdef MS_WINDOWS
+ // bpo-42296: On Windows, _PyEval_SignalReceived() is called from a signal
+ // handler which can run in a thread different than the Python thread, in
+ // which case _Py_ThreadCanHandleSignals() is wrong. Ignore
+ // _Py_ThreadCanHandleSignals() and always set eval_breaker to 1.
+ //
+ // The next eval_frame_handle_pending() call will call
+ // _Py_ThreadCanHandleSignals() to recompute eval_breaker.
+ int force = 1;
+#else
+ int force = 0;
+#endif
+ /* bpo-30703: Function called when the C signal handler of Python gets a
+ signal. We cannot queue a callback using _PyEval_AddPendingCall() since
+ that function is not async-signal-safe. */
+ SIGNAL_PENDING_SIGNALS(interp, force);
+}
+
+/* Push one item onto the queue while holding the lock. */
+static int
+_push_pending_call(struct _pending_calls *pending,
+ int (*func)(void *), void *arg)
+{
+ int i = pending->last;
+ int j = (i + 1) % NPENDINGCALLS;
+ if (j == pending->first) {
+ return -1; /* Queue full */
+ }
+ pending->calls[i].func = func;
+ pending->calls[i].arg = arg;
+ pending->last = j;
+ return 0;
+}
+
+static int
+_next_pending_call(struct _pending_calls *pending,
+ int (**func)(void *), void **arg)
+{
+ int i = pending->first;
+ if (i == pending->last) {
+ /* Queue empty */
+ assert(pending->calls[i].func == NULL);
+ return -1;
+ }
+ *func = pending->calls[i].func;
+ *arg = pending->calls[i].arg;
+ return i;
+}
+
+/* Pop one item off the queue while holding the lock. */
+static void
+_pop_pending_call(struct _pending_calls *pending,
+ int (**func)(void *), void **arg)
+{
+ int i = _next_pending_call(pending, func, arg);
+ if (i >= 0) {
+ pending->calls[i] = (struct _pending_call){0};
+ pending->first = (i + 1) % NPENDINGCALLS;
+ }
+}
+
+/* This implementation is thread-safe. It allows
+ scheduling to be made from any thread, and even from an executing
+ callback.
+ */
+
+int
+_PyEval_AddPendingCall(PyInterpreterState *interp,
+ int (*func)(void *), void *arg,
+ int mainthreadonly)
+{
+ assert(!mainthreadonly || _Py_IsMainInterpreter(interp));
+ struct _pending_calls *pending = &interp->ceval.pending;
+ if (mainthreadonly) {
+ /* The main thread only exists in the main interpreter. */
+ assert(_Py_IsMainInterpreter(interp));
+ pending = &_PyRuntime.ceval.pending_mainthread;
+ }
+ /* Ensure that _PyEval_InitState() was called
+ and that _PyEval_FiniState() is not called yet. */
+ assert(pending->lock != NULL);
+
+ PyThread_acquire_lock(pending->lock, WAIT_LOCK);
+ int result = _push_pending_call(pending, func, arg);
+ PyThread_release_lock(pending->lock);
+
+ /* signal main loop */
+ SIGNAL_PENDING_CALLS(pending, interp);
+ return result;
+}
+
+int
+Py_AddPendingCall(int (*func)(void *), void *arg)
+{
+ /* Legacy users of this API will continue to target the main thread
+ (of the main interpreter). */
+ PyInterpreterState *interp = _PyInterpreterState_Main();
+ return _PyEval_AddPendingCall(interp, func, arg, 1);
+}
+
+static int
+handle_signals(PyThreadState *tstate)
+{
+ assert(_PyThreadState_CheckConsistency(tstate));
+ if (!_Py_ThreadCanHandleSignals(tstate->interp)) {
+ return 0;
+ }
+
+ UNSIGNAL_PENDING_SIGNALS(tstate->interp);
+ if (_PyErr_CheckSignalsTstate(tstate) < 0) {
+ /* On failure, re-schedule a call to handle_signals(). */
+ SIGNAL_PENDING_SIGNALS(tstate->interp, 0);
+ return -1;
+ }
+ return 0;
+}
+
+static inline int
+maybe_has_pending_calls(PyInterpreterState *interp)
+{
+ struct _pending_calls *pending = &interp->ceval.pending;
+ if (_Py_atomic_load_relaxed_int32(&pending->calls_to_do)) {
+ return 1;
+ }
+ if (!_Py_IsMainThread() || !_Py_IsMainInterpreter(interp)) {
+ return 0;
+ }
+ pending = &_PyRuntime.ceval.pending_mainthread;
+ return _Py_atomic_load_relaxed_int32(&pending->calls_to_do);
+}
+
+static int
+_make_pending_calls(struct _pending_calls *pending)
+{
+ /* perform a bounded number of calls, in case of recursion */
+ for (int i=0; i<NPENDINGCALLS; i++) {
+ int (*func)(void *) = NULL;
+ void *arg = NULL;
+
+ /* pop one item off the queue while holding the lock */
+ PyThread_acquire_lock(pending->lock, WAIT_LOCK);
+ _pop_pending_call(pending, &func, &arg);
+ PyThread_release_lock(pending->lock);
+
+ /* having released the lock, perform the callback */
+ if (func == NULL) {
+ break;
+ }
+ if (func(arg) != 0) {
+ return -1;
+ }
+ }
+ return 0;
+}
+
+static int
+make_pending_calls(PyInterpreterState *interp)
+{
+ struct _pending_calls *pending = &interp->ceval.pending;
+ struct _pending_calls *pending_main = &_PyRuntime.ceval.pending_mainthread;
+
+ /* Only one thread (per interpreter) may run the pending calls
+ at once. In the same way, we don't do recursive pending calls. */
+ PyThread_acquire_lock(pending->lock, WAIT_LOCK);
+ if (pending->busy) {
+ /* A pending call was added after another thread was already
+ handling the pending calls (and had already "unsignaled").
+ Once that thread is done, it may have taken care of all the
+ pending calls, or there might be some still waiting.
+ Regardless, this interpreter's pending calls will stay
+ "signaled" until that first thread has finished. At that
+ point the next thread to trip the eval breaker will take
+ care of any remaining pending calls. Until then, though,
+ all the interpreter's threads will be tripping the eval
+ breaker every time it's checked. */
+ PyThread_release_lock(pending->lock);
+ return 0;
+ }
+ pending->busy = 1;
+ PyThread_release_lock(pending->lock);
+
+ /* unsignal before starting to call callbacks, so that any callback
+ added in-between re-signals */
+ UNSIGNAL_PENDING_CALLS(interp);
+
+ if (_make_pending_calls(pending) != 0) {
+ pending->busy = 0;
+ /* There might not be more calls to make, but we play it safe. */
+ SIGNAL_PENDING_CALLS(pending, interp);
+ return -1;
+ }
+
+ if (_Py_IsMainThread() && _Py_IsMainInterpreter(interp)) {
+ if (_make_pending_calls(pending_main) != 0) {
+ pending->busy = 0;
+ /* There might not be more calls to make, but we play it safe. */
+ SIGNAL_PENDING_CALLS(pending_main, interp);
+ return -1;
+ }
+ }
+
+ pending->busy = 0;
+ return 0;
+}
+
+void
+_Py_FinishPendingCalls(PyThreadState *tstate)
+{
+ assert(PyGILState_Check());
+ assert(_PyThreadState_CheckConsistency(tstate));
+
+ if (make_pending_calls(tstate->interp) < 0) {
+ PyObject *exc = _PyErr_GetRaisedException(tstate);
+ PyErr_BadInternalCall();
+ _PyErr_ChainExceptions1(exc);
+ _PyErr_Print(tstate);
+ }
+}
+
+int
+_PyEval_MakePendingCalls(PyThreadState *tstate)
+{
+ int res;
+
+ if (_Py_IsMainThread() && _Py_IsMainInterpreter(tstate->interp)) {
+ /* Python signal handler doesn't really queue a callback:
+ it only signals that a signal was received,
+ see _PyEval_SignalReceived(). */
+ res = handle_signals(tstate);
+ if (res != 0) {
+ return res;
+ }
+ }
+
+ res = make_pending_calls(tstate->interp);
+ if (res != 0) {
+ return res;
+ }
+
+ return 0;
+}
+
+/* Py_MakePendingCalls() is a simple wrapper for the sake
+ of backward-compatibility. */
+int
+Py_MakePendingCalls(void)
+{
+ assert(PyGILState_Check());
+
+ PyThreadState *tstate = _PyThreadState_GET();
+ assert(_PyThreadState_CheckConsistency(tstate));
+
+ /* Only execute pending calls on the main thread. */
+ if (!_Py_IsMainThread() || !_Py_IsMainInterpreter(tstate->interp)) {
+ return 0;
+ }
+ return _PyEval_MakePendingCalls(tstate);
+}
+
+void
+_PyEval_InitState(PyInterpreterState *interp, PyThread_type_lock pending_lock)
+{
+ _gil_initialize(&interp->_gil);
+
+ struct _pending_calls *pending = &interp->ceval.pending;
+ assert(pending->lock == NULL);
+ pending->lock = pending_lock;
+}
+
+void
+_PyEval_FiniState(struct _ceval_state *ceval)
+{
+ struct _pending_calls *pending = &ceval->pending;
+ if (pending->lock != NULL) {
+ PyThread_free_lock(pending->lock);
+ pending->lock = NULL;
+ }
+}
+
+/* Handle signals, pending calls, GIL drop request
+ and asynchronous exception */
+int
+_Py_HandlePending(PyThreadState *tstate)
+{
+ _PyRuntimeState * const runtime = &_PyRuntime;
+ struct _ceval_runtime_state *ceval = &runtime->ceval;
+ struct _ceval_state *interp_ceval_state = &tstate->interp->ceval;
+
+ /* Pending signals */
+ if (_Py_atomic_load_relaxed_int32(&ceval->signals_pending)) {
+ if (handle_signals(tstate) != 0) {
+ return -1;
+ }
+ }
+
+ /* Pending calls */
+ if (maybe_has_pending_calls(tstate->interp)) {
+ if (make_pending_calls(tstate->interp) != 0) {
+ return -1;
+ }
+ }
+
+ /* GC scheduled to run */
+ if (_Py_atomic_load_relaxed_int32(&interp_ceval_state->gc_scheduled)) {
+ _Py_atomic_store_relaxed(&interp_ceval_state->gc_scheduled, 0);
+ COMPUTE_EVAL_BREAKER(tstate->interp, ceval, interp_ceval_state);
+ _Py_RunGC(tstate);
+ }
+
+ /* GIL drop request */
+ if (_Py_atomic_load_relaxed_int32(&interp_ceval_state->gil_drop_request)) {
+ /* Give another thread a chance */
+ if (_PyThreadState_SwapNoGIL(NULL) != tstate) {
+ Py_FatalError("tstate mix-up");
+ }
+ drop_gil(interp_ceval_state, tstate);
+
+ /* Other threads may run now */
+
+ take_gil(tstate);
+
+ if (_PyThreadState_SwapNoGIL(tstate) != NULL) {
+ Py_FatalError("orphan tstate");
+ }
+ }
+
+ /* Check for asynchronous exception. */
+ if (tstate->async_exc != NULL) {
+ PyObject *exc = tstate->async_exc;
+ tstate->async_exc = NULL;
+ UNSIGNAL_ASYNC_EXC(tstate->interp);
+ _PyErr_SetNone(tstate, exc);
+ Py_DECREF(exc);
+ return -1;
+ }
+
+
+ // It is possible that some of the conditions that trigger the eval breaker
+ // are called in a different thread than the Python thread. An example of
+ // this is bpo-42296: On Windows, _PyEval_SignalReceived() can be called in
+ // a different thread than the Python thread, in which case
+ // _Py_ThreadCanHandleSignals() is wrong. Recompute eval_breaker in the
+ // current Python thread with the correct _Py_ThreadCanHandleSignals()
+ // value. It prevents to interrupt the eval loop at every instruction if
+ // the current Python thread cannot handle signals (if
+ // _Py_ThreadCanHandleSignals() is false).
+ COMPUTE_EVAL_BREAKER(tstate->interp, ceval, interp_ceval_state);
+
+ return 0;
+}
+
diff --git a/contrib/tools/python3/Python/ceval_macros.h b/contrib/tools/python3/Python/ceval_macros.h
new file mode 100644
index 00000000000..fccf9088cbd
--- /dev/null
+++ b/contrib/tools/python3/Python/ceval_macros.h
@@ -0,0 +1,344 @@
+// Macros needed by ceval.c and bytecodes.c
+
+/* Computed GOTOs, or
+ the-optimization-commonly-but-improperly-known-as-"threaded code"
+ using gcc's labels-as-values extension
+ (http://gcc.gnu.org/onlinedocs/gcc/Labels-as-Values.html).
+
+ The traditional bytecode evaluation loop uses a "switch" statement, which
+ decent compilers will optimize as a single indirect branch instruction
+ combined with a lookup table of jump addresses. However, since the
+ indirect jump instruction is shared by all opcodes, the CPU will have a
+ hard time making the right prediction for where to jump next (actually,
+ it will be always wrong except in the uncommon case of a sequence of
+ several identical opcodes).
+
+ "Threaded code" in contrast, uses an explicit jump table and an explicit
+ indirect jump instruction at the end of each opcode. Since the jump
+ instruction is at a different address for each opcode, the CPU will make a
+ separate prediction for each of these instructions, which is equivalent to
+ predicting the second opcode of each opcode pair. These predictions have
+ a much better chance to turn out valid, especially in small bytecode loops.
+
+ A mispredicted branch on a modern CPU flushes the whole pipeline and
+ can cost several CPU cycles (depending on the pipeline depth),
+ and potentially many more instructions (depending on the pipeline width).
+ A correctly predicted branch, however, is nearly free.
+
+ At the time of this writing, the "threaded code" version is up to 15-20%
+ faster than the normal "switch" version, depending on the compiler and the
+ CPU architecture.
+
+ NOTE: care must be taken that the compiler doesn't try to "optimize" the
+ indirect jumps by sharing them between all opcodes. Such optimizations
+ can be disabled on gcc by using the -fno-gcse flag (or possibly
+ -fno-crossjumping).
+*/
+
+/* Use macros rather than inline functions, to make it as clear as possible
+ * to the C compiler that the tracing check is a simple test then branch.
+ * We want to be sure that the compiler knows this before it generates
+ * the CFG.
+ */
+
+#ifdef WITH_DTRACE
+#define OR_DTRACE_LINE | (PyDTrace_LINE_ENABLED() ? 255 : 0)
+#else
+#define OR_DTRACE_LINE
+#endif
+
+#ifdef HAVE_COMPUTED_GOTOS
+ #ifndef USE_COMPUTED_GOTOS
+ #define USE_COMPUTED_GOTOS 1
+ #endif
+#else
+ #if defined(USE_COMPUTED_GOTOS) && USE_COMPUTED_GOTOS
+ #error "Computed gotos are not supported on this compiler."
+ #endif
+ #undef USE_COMPUTED_GOTOS
+ #define USE_COMPUTED_GOTOS 0
+#endif
+
+#ifdef Py_STATS
+#define INSTRUCTION_START(op) \
+ do { \
+ frame->prev_instr = next_instr++; \
+ OPCODE_EXE_INC(op); \
+ if (_py_stats) _py_stats->opcode_stats[lastopcode].pair_count[op]++; \
+ lastopcode = op; \
+ } while (0)
+#else
+#define INSTRUCTION_START(op) (frame->prev_instr = next_instr++)
+#endif
+
+#if USE_COMPUTED_GOTOS
+# define TARGET(op) TARGET_##op: INSTRUCTION_START(op);
+# define DISPATCH_GOTO() goto *opcode_targets[opcode]
+#else
+# define TARGET(op) case op: TARGET_##op: INSTRUCTION_START(op);
+# define DISPATCH_GOTO() goto dispatch_opcode
+#endif
+
+/* PRE_DISPATCH_GOTO() does lltrace if enabled. Normally a no-op */
+#ifdef LLTRACE
+#define PRE_DISPATCH_GOTO() if (lltrace) { \
+ lltrace_instruction(frame, stack_pointer, next_instr); }
+#else
+#define PRE_DISPATCH_GOTO() ((void)0)
+#endif
+
+
+/* Do interpreter dispatch accounting for tracing and instrumentation */
+#define DISPATCH() \
+ { \
+ NEXTOPARG(); \
+ PRE_DISPATCH_GOTO(); \
+ DISPATCH_GOTO(); \
+ }
+
+#define DISPATCH_SAME_OPARG() \
+ { \
+ opcode = next_instr->op.code; \
+ PRE_DISPATCH_GOTO(); \
+ DISPATCH_GOTO(); \
+ }
+
+#define DISPATCH_INLINED(NEW_FRAME) \
+ do { \
+ assert(tstate->interp->eval_frame == NULL); \
+ _PyFrame_SetStackPointer(frame, stack_pointer); \
+ frame->prev_instr = next_instr - 1; \
+ (NEW_FRAME)->previous = frame; \
+ frame = cframe.current_frame = (NEW_FRAME); \
+ CALL_STAT_INC(inlined_py_calls); \
+ goto start_frame; \
+ } while (0)
+
+#define CHECK_EVAL_BREAKER() \
+ _Py_CHECK_EMSCRIPTEN_SIGNALS_PERIODICALLY(); \
+ if (_Py_atomic_load_relaxed_int32(&tstate->interp->ceval.eval_breaker)) { \
+ goto handle_eval_breaker; \
+ }
+
+
+/* Tuple access macros */
+
+#ifndef Py_DEBUG
+#define GETITEM(v, i) PyTuple_GET_ITEM((v), (i))
+#else
+static inline PyObject *
+GETITEM(PyObject *v, Py_ssize_t i) {
+ assert(PyTuple_Check(v));
+ assert(i >= 0);
+ assert(i < PyTuple_GET_SIZE(v));
+ return PyTuple_GET_ITEM(v, i);
+}
+#endif
+
+/* Code access macros */
+
+/* The integer overflow is checked by an assertion below. */
+#define INSTR_OFFSET() ((int)(next_instr - _PyCode_CODE(frame->f_code)))
+#define NEXTOPARG() do { \
+ _Py_CODEUNIT word = *next_instr; \
+ opcode = word.op.code; \
+ oparg = word.op.arg; \
+ } while (0)
+#define JUMPTO(x) (next_instr = _PyCode_CODE(frame->f_code) + (x))
+#define JUMPBY(x) (next_instr += (x))
+
+/* OpCode prediction macros
+ Some opcodes tend to come in pairs thus making it possible to
+ predict the second code when the first is run. For example,
+ COMPARE_OP is often followed by POP_JUMP_IF_FALSE or POP_JUMP_IF_TRUE.
+
+ Verifying the prediction costs a single high-speed test of a register
+ variable against a constant. If the pairing was good, then the
+ processor's own internal branch predication has a high likelihood of
+ success, resulting in a nearly zero-overhead transition to the
+ next opcode. A successful prediction saves a trip through the eval-loop
+ including its unpredictable switch-case branch. Combined with the
+ processor's internal branch prediction, a successful PREDICT has the
+ effect of making the two opcodes run as if they were a single new opcode
+ with the bodies combined.
+
+ If collecting opcode statistics, your choices are to either keep the
+ predictions turned-on and interpret the results as if some opcodes
+ had been combined or turn-off predictions so that the opcode frequency
+ counter updates for both opcodes.
+
+ Opcode prediction is disabled with threaded code, since the latter allows
+ the CPU to record separate branch prediction information for each
+ opcode.
+
+*/
+
+#define PREDICT_ID(op) PRED_##op
+
+#if USE_COMPUTED_GOTOS
+#define PREDICT(op) if (0) goto PREDICT_ID(op)
+#else
+#define PREDICT(next_op) \
+ do { \
+ _Py_CODEUNIT word = *next_instr; \
+ opcode = word.op.code; \
+ if (opcode == next_op) { \
+ oparg = word.op.arg; \
+ INSTRUCTION_START(next_op); \
+ goto PREDICT_ID(next_op); \
+ } \
+ } while(0)
+#endif
+#define PREDICTED(op) PREDICT_ID(op):
+
+
+/* Stack manipulation macros */
+
+/* The stack can grow at most MAXINT deep, as co_nlocals and
+ co_stacksize are ints. */
+#define STACK_LEVEL() ((int)(stack_pointer - _PyFrame_Stackbase(frame)))
+#define STACK_SIZE() (frame->f_code->co_stacksize)
+#define EMPTY() (STACK_LEVEL() == 0)
+#define TOP() (stack_pointer[-1])
+#define SECOND() (stack_pointer[-2])
+#define THIRD() (stack_pointer[-3])
+#define FOURTH() (stack_pointer[-4])
+#define PEEK(n) (stack_pointer[-(n)])
+#define POKE(n, v) (stack_pointer[-(n)] = (v))
+#define SET_TOP(v) (stack_pointer[-1] = (v))
+#define SET_SECOND(v) (stack_pointer[-2] = (v))
+#define BASIC_STACKADJ(n) (stack_pointer += n)
+#define BASIC_PUSH(v) (*stack_pointer++ = (v))
+#define BASIC_POP() (*--stack_pointer)
+
+#ifdef Py_DEBUG
+#define PUSH(v) do { \
+ BASIC_PUSH(v); \
+ assert(STACK_LEVEL() <= STACK_SIZE()); \
+ } while (0)
+#define POP() (assert(STACK_LEVEL() > 0), BASIC_POP())
+#define STACK_GROW(n) do { \
+ assert(n >= 0); \
+ BASIC_STACKADJ(n); \
+ assert(STACK_LEVEL() <= STACK_SIZE()); \
+ } while (0)
+#define STACK_SHRINK(n) do { \
+ assert(n >= 0); \
+ assert(STACK_LEVEL() >= n); \
+ BASIC_STACKADJ(-(n)); \
+ } while (0)
+#else
+#define PUSH(v) BASIC_PUSH(v)
+#define POP() BASIC_POP()
+#define STACK_GROW(n) BASIC_STACKADJ(n)
+#define STACK_SHRINK(n) BASIC_STACKADJ(-(n))
+#endif
+
+/* Local variable macros */
+
+#define GETLOCAL(i) (frame->localsplus[i])
+
+/* The SETLOCAL() macro must not DECREF the local variable in-place and
+ then store the new value; it must copy the old value to a temporary
+ value, then store the new value, and then DECREF the temporary value.
+ This is because it is possible that during the DECREF the frame is
+ accessed by other code (e.g. a __del__ method or gc.collect()) and the
+ variable would be pointing to already-freed memory. */
+#define SETLOCAL(i, value) do { PyObject *tmp = GETLOCAL(i); \
+ GETLOCAL(i) = value; \
+ Py_XDECREF(tmp); } while (0)
+
+#define GO_TO_INSTRUCTION(op) goto PREDICT_ID(op)
+
+#ifdef Py_STATS
+#define UPDATE_MISS_STATS(INSTNAME) \
+ do { \
+ STAT_INC(opcode, miss); \
+ STAT_INC((INSTNAME), miss); \
+ /* The counter is always the first cache entry: */ \
+ if (ADAPTIVE_COUNTER_IS_ZERO(next_instr->cache)) { \
+ STAT_INC((INSTNAME), deopt); \
+ } \
+ else { \
+ /* This is about to be (incorrectly) incremented: */ \
+ STAT_DEC((INSTNAME), deferred); \
+ } \
+ } while (0)
+#else
+#define UPDATE_MISS_STATS(INSTNAME) ((void)0)
+#endif
+
+#define DEOPT_IF(COND, INSTNAME) \
+ if ((COND)) { \
+ /* This is only a single jump on release builds! */ \
+ UPDATE_MISS_STATS((INSTNAME)); \
+ assert(_PyOpcode_Deopt[opcode] == (INSTNAME)); \
+ GO_TO_INSTRUCTION(INSTNAME); \
+ }
+
+
+#define GLOBALS() frame->f_globals
+#define BUILTINS() frame->f_builtins
+#define LOCALS() frame->f_locals
+
+#define DTRACE_FUNCTION_ENTRY() \
+ if (PyDTrace_FUNCTION_ENTRY_ENABLED()) { \
+ dtrace_function_entry(frame); \
+ }
+
+#define ADAPTIVE_COUNTER_IS_ZERO(COUNTER) \
+ (((COUNTER) >> ADAPTIVE_BACKOFF_BITS) == 0)
+
+#define ADAPTIVE_COUNTER_IS_MAX(COUNTER) \
+ (((COUNTER) >> ADAPTIVE_BACKOFF_BITS) == ((1 << MAX_BACKOFF_VALUE) - 1))
+
+#define DECREMENT_ADAPTIVE_COUNTER(COUNTER) \
+ do { \
+ assert(!ADAPTIVE_COUNTER_IS_ZERO((COUNTER))); \
+ (COUNTER) -= (1 << ADAPTIVE_BACKOFF_BITS); \
+ } while (0);
+
+#define INCREMENT_ADAPTIVE_COUNTER(COUNTER) \
+ do { \
+ assert(!ADAPTIVE_COUNTER_IS_MAX((COUNTER))); \
+ (COUNTER) += (1 << ADAPTIVE_BACKOFF_BITS); \
+ } while (0);
+
+#define NAME_ERROR_MSG "name '%.200s' is not defined"
+
+#define KWNAMES_LEN() \
+ (kwnames == NULL ? 0 : ((int)PyTuple_GET_SIZE(kwnames)))
+
+#define DECREF_INPUTS_AND_REUSE_FLOAT(left, right, dval, result) \
+do { \
+ if (Py_REFCNT(left) == 1) { \
+ ((PyFloatObject *)left)->ob_fval = (dval); \
+ _Py_DECREF_SPECIALIZED(right, _PyFloat_ExactDealloc);\
+ result = (left); \
+ } \
+ else if (Py_REFCNT(right) == 1) {\
+ ((PyFloatObject *)right)->ob_fval = (dval); \
+ _Py_DECREF_NO_DEALLOC(left); \
+ result = (right); \
+ }\
+ else { \
+ result = PyFloat_FromDouble(dval); \
+ if ((result) == NULL) goto error; \
+ _Py_DECREF_NO_DEALLOC(left); \
+ _Py_DECREF_NO_DEALLOC(right); \
+ } \
+} while (0)
+
+// If a trace function sets a new f_lineno and
+// *then* raises, we use the destination when searching
+// for an exception handler, displaying the traceback, and so on
+#define INSTRUMENTED_JUMP(src, dest, event) \
+do { \
+ _PyFrame_SetStackPointer(frame, stack_pointer); \
+ next_instr = _Py_call_instrumentation_jump(tstate, event, frame, src, dest); \
+ stack_pointer = _PyFrame_GetStackPointer(frame); \
+ if (next_instr == NULL) { \
+ next_instr = (dest)+1; \
+ goto error; \
+ } \
+} while (0);
diff --git a/contrib/tools/python3/Python/clinic/Python-tokenize.c.h b/contrib/tools/python3/Python/clinic/Python-tokenize.c.h
new file mode 100644
index 00000000000..28f5075826e
--- /dev/null
+++ b/contrib/tools/python3/Python/clinic/Python-tokenize.c.h
@@ -0,0 +1,83 @@
+/*[clinic input]
+preserve
+[clinic start generated code]*/
+
+#if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE)
+# include "pycore_gc.h" // PyGC_Head
+# include "pycore_runtime.h" // _Py_ID()
+#endif
+
+
+static PyObject *
+tokenizeriter_new_impl(PyTypeObject *type, PyObject *readline,
+ int extra_tokens, const char *encoding);
+
+static PyObject *
+tokenizeriter_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
+{
+ PyObject *return_value = NULL;
+ #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE)
+
+ #define NUM_KEYWORDS 2
+ static struct {
+ PyGC_Head _this_is_not_used;
+ PyObject_VAR_HEAD
+ PyObject *ob_item[NUM_KEYWORDS];
+ } _kwtuple = {
+ .ob_base = PyVarObject_HEAD_INIT(&PyTuple_Type, NUM_KEYWORDS)
+ .ob_item = { &_Py_ID(extra_tokens), &_Py_ID(encoding), },
+ };
+ #undef NUM_KEYWORDS
+ #define KWTUPLE (&_kwtuple.ob_base.ob_base)
+
+ #else // !Py_BUILD_CORE
+ # define KWTUPLE NULL
+ #endif // !Py_BUILD_CORE
+
+ static const char * const _keywords[] = {"", "extra_tokens", "encoding", NULL};
+ static _PyArg_Parser _parser = {
+ .keywords = _keywords,
+ .fname = "tokenizeriter",
+ .kwtuple = KWTUPLE,
+ };
+ #undef KWTUPLE
+ PyObject *argsbuf[3];
+ PyObject * const *fastargs;
+ Py_ssize_t nargs = PyTuple_GET_SIZE(args);
+ Py_ssize_t noptargs = nargs + (kwargs ? PyDict_GET_SIZE(kwargs) : 0) - 2;
+ PyObject *readline;
+ int extra_tokens;
+ const char *encoding = NULL;
+
+ fastargs = _PyArg_UnpackKeywords(_PyTuple_CAST(args)->ob_item, nargs, kwargs, NULL, &_parser, 1, 1, 1, argsbuf);
+ if (!fastargs) {
+ goto exit;
+ }
+ readline = fastargs[0];
+ extra_tokens = PyObject_IsTrue(fastargs[1]);
+ if (extra_tokens < 0) {
+ goto exit;
+ }
+ if (!noptargs) {
+ goto skip_optional_kwonly;
+ }
+ if (!PyUnicode_Check(fastargs[2])) {
+ _PyArg_BadArgument("tokenizeriter", "argument 'encoding'", "str", fastargs[2]);
+ goto exit;
+ }
+ Py_ssize_t encoding_length;
+ encoding = PyUnicode_AsUTF8AndSize(fastargs[2], &encoding_length);
+ if (encoding == NULL) {
+ goto exit;
+ }
+ if (strlen(encoding) != (size_t)encoding_length) {
+ PyErr_SetString(PyExc_ValueError, "embedded null character");
+ goto exit;
+ }
+skip_optional_kwonly:
+ return_value = tokenizeriter_new_impl(type, readline, extra_tokens, encoding);
+
+exit:
+ return return_value;
+}
+/*[clinic end generated code: output=48be65a2808bdfa6 input=a9049054013a1b77]*/
diff --git a/contrib/tools/python3/Python/clinic/_warnings.c.h b/contrib/tools/python3/Python/clinic/_warnings.c.h
new file mode 100644
index 00000000000..432e554af85
--- /dev/null
+++ b/contrib/tools/python3/Python/clinic/_warnings.c.h
@@ -0,0 +1,249 @@
+/*[clinic input]
+preserve
+[clinic start generated code]*/
+
+#if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE)
+# include "pycore_gc.h" // PyGC_Head
+# include "pycore_runtime.h" // _Py_ID()
+#endif
+
+
+PyDoc_STRVAR(warnings_warn__doc__,
+"warn($module, /, message, category=None, stacklevel=1, source=None, *,\n"
+" skip_file_prefixes=<unrepresentable>)\n"
+"--\n"
+"\n"
+"Issue a warning, or maybe ignore it or raise an exception.\n"
+"\n"
+" message\n"
+" Text of the warning message.\n"
+" category\n"
+" The Warning category subclass. Defaults to UserWarning.\n"
+" stacklevel\n"
+" How far up the call stack to make this warning appear. A value of 2 for\n"
+" example attributes the warning to the caller of the code calling warn().\n"
+" source\n"
+" If supplied, the destroyed object which emitted a ResourceWarning\n"
+" skip_file_prefixes\n"
+" An optional tuple of module filename prefixes indicating frames to skip\n"
+" during stacklevel computations for stack frame attribution.");
+
+#define WARNINGS_WARN_METHODDEF \
+ {"warn", _PyCFunction_CAST(warnings_warn), METH_FASTCALL|METH_KEYWORDS, warnings_warn__doc__},
+
+static PyObject *
+warnings_warn_impl(PyObject *module, PyObject *message, PyObject *category,
+ Py_ssize_t stacklevel, PyObject *source,
+ PyTupleObject *skip_file_prefixes);
+
+static PyObject *
+warnings_warn(PyObject *module, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
+{
+ PyObject *return_value = NULL;
+ #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE)
+
+ #define NUM_KEYWORDS 5
+ static struct {
+ PyGC_Head _this_is_not_used;
+ PyObject_VAR_HEAD
+ PyObject *ob_item[NUM_KEYWORDS];
+ } _kwtuple = {
+ .ob_base = PyVarObject_HEAD_INIT(&PyTuple_Type, NUM_KEYWORDS)
+ .ob_item = { &_Py_ID(message), &_Py_ID(category), &_Py_ID(stacklevel), &_Py_ID(source), &_Py_ID(skip_file_prefixes), },
+ };
+ #undef NUM_KEYWORDS
+ #define KWTUPLE (&_kwtuple.ob_base.ob_base)
+
+ #else // !Py_BUILD_CORE
+ # define KWTUPLE NULL
+ #endif // !Py_BUILD_CORE
+
+ static const char * const _keywords[] = {"message", "category", "stacklevel", "source", "skip_file_prefixes", NULL};
+ static _PyArg_Parser _parser = {
+ .keywords = _keywords,
+ .fname = "warn",
+ .kwtuple = KWTUPLE,
+ };
+ #undef KWTUPLE
+ PyObject *argsbuf[5];
+ Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 1;
+ PyObject *message;
+ PyObject *category = Py_None;
+ Py_ssize_t stacklevel = 1;
+ PyObject *source = Py_None;
+ PyTupleObject *skip_file_prefixes = NULL;
+
+ args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 1, 4, 0, argsbuf);
+ if (!args) {
+ goto exit;
+ }
+ message = args[0];
+ if (!noptargs) {
+ goto skip_optional_pos;
+ }
+ if (args[1]) {
+ category = args[1];
+ if (!--noptargs) {
+ goto skip_optional_pos;
+ }
+ }
+ if (args[2]) {
+ {
+ Py_ssize_t ival = -1;
+ PyObject *iobj = _PyNumber_Index(args[2]);
+ if (iobj != NULL) {
+ ival = PyLong_AsSsize_t(iobj);
+ Py_DECREF(iobj);
+ }
+ if (ival == -1 && PyErr_Occurred()) {
+ goto exit;
+ }
+ stacklevel = ival;
+ }
+ if (!--noptargs) {
+ goto skip_optional_pos;
+ }
+ }
+ if (args[3]) {
+ source = args[3];
+ if (!--noptargs) {
+ goto skip_optional_pos;
+ }
+ }
+skip_optional_pos:
+ if (!noptargs) {
+ goto skip_optional_kwonly;
+ }
+ if (!PyTuple_Check(args[4])) {
+ _PyArg_BadArgument("warn", "argument 'skip_file_prefixes'", "tuple", args[4]);
+ goto exit;
+ }
+ skip_file_prefixes = (PyTupleObject *)args[4];
+skip_optional_kwonly:
+ return_value = warnings_warn_impl(module, message, category, stacklevel, source, skip_file_prefixes);
+
+exit:
+ return return_value;
+}
+
+PyDoc_STRVAR(warnings_warn_explicit__doc__,
+"warn_explicit($module, /, message, category, filename, lineno,\n"
+" module=<unrepresentable>, registry=None,\n"
+" module_globals=None, source=None)\n"
+"--\n"
+"\n"
+"Issue a warning, or maybe ignore it or raise an exception.");
+
+#define WARNINGS_WARN_EXPLICIT_METHODDEF \
+ {"warn_explicit", _PyCFunction_CAST(warnings_warn_explicit), METH_FASTCALL|METH_KEYWORDS, warnings_warn_explicit__doc__},
+
+static PyObject *
+warnings_warn_explicit_impl(PyObject *module, PyObject *message,
+ PyObject *category, PyObject *filename,
+ int lineno, PyObject *mod, PyObject *registry,
+ PyObject *module_globals, PyObject *sourceobj);
+
+static PyObject *
+warnings_warn_explicit(PyObject *module, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
+{
+ PyObject *return_value = NULL;
+ #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE)
+
+ #define NUM_KEYWORDS 8
+ static struct {
+ PyGC_Head _this_is_not_used;
+ PyObject_VAR_HEAD
+ PyObject *ob_item[NUM_KEYWORDS];
+ } _kwtuple = {
+ .ob_base = PyVarObject_HEAD_INIT(&PyTuple_Type, NUM_KEYWORDS)
+ .ob_item = { &_Py_ID(message), &_Py_ID(category), &_Py_ID(filename), &_Py_ID(lineno), &_Py_ID(module), &_Py_ID(registry), &_Py_ID(module_globals), &_Py_ID(source), },
+ };
+ #undef NUM_KEYWORDS
+ #define KWTUPLE (&_kwtuple.ob_base.ob_base)
+
+ #else // !Py_BUILD_CORE
+ # define KWTUPLE NULL
+ #endif // !Py_BUILD_CORE
+
+ static const char * const _keywords[] = {"message", "category", "filename", "lineno", "module", "registry", "module_globals", "source", NULL};
+ static _PyArg_Parser _parser = {
+ .keywords = _keywords,
+ .fname = "warn_explicit",
+ .kwtuple = KWTUPLE,
+ };
+ #undef KWTUPLE
+ PyObject *argsbuf[8];
+ Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 4;
+ PyObject *message;
+ PyObject *category;
+ PyObject *filename;
+ int lineno;
+ PyObject *mod = NULL;
+ PyObject *registry = Py_None;
+ PyObject *module_globals = Py_None;
+ PyObject *sourceobj = Py_None;
+
+ args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 4, 8, 0, argsbuf);
+ if (!args) {
+ goto exit;
+ }
+ message = args[0];
+ category = args[1];
+ if (!PyUnicode_Check(args[2])) {
+ _PyArg_BadArgument("warn_explicit", "argument 'filename'", "str", args[2]);
+ goto exit;
+ }
+ if (PyUnicode_READY(args[2]) == -1) {
+ goto exit;
+ }
+ filename = args[2];
+ lineno = _PyLong_AsInt(args[3]);
+ if (lineno == -1 && PyErr_Occurred()) {
+ goto exit;
+ }
+ if (!noptargs) {
+ goto skip_optional_pos;
+ }
+ if (args[4]) {
+ mod = args[4];
+ if (!--noptargs) {
+ goto skip_optional_pos;
+ }
+ }
+ if (args[5]) {
+ registry = args[5];
+ if (!--noptargs) {
+ goto skip_optional_pos;
+ }
+ }
+ if (args[6]) {
+ module_globals = args[6];
+ if (!--noptargs) {
+ goto skip_optional_pos;
+ }
+ }
+ sourceobj = args[7];
+skip_optional_pos:
+ return_value = warnings_warn_explicit_impl(module, message, category, filename, lineno, mod, registry, module_globals, sourceobj);
+
+exit:
+ return return_value;
+}
+
+PyDoc_STRVAR(warnings_filters_mutated__doc__,
+"_filters_mutated($module, /)\n"
+"--\n"
+"\n");
+
+#define WARNINGS_FILTERS_MUTATED_METHODDEF \
+ {"_filters_mutated", (PyCFunction)warnings_filters_mutated, METH_NOARGS, warnings_filters_mutated__doc__},
+
+static PyObject *
+warnings_filters_mutated_impl(PyObject *module);
+
+static PyObject *
+warnings_filters_mutated(PyObject *module, PyObject *Py_UNUSED(ignored))
+{
+ return warnings_filters_mutated_impl(module);
+}
+/*[clinic end generated code: output=20429719d7223bdc input=a9049054013a1b77]*/
diff --git a/contrib/tools/python3/Python/clinic/bltinmodule.c.h b/contrib/tools/python3/Python/clinic/bltinmodule.c.h
new file mode 100644
index 00000000000..b77b4a1e4b4
--- /dev/null
+++ b/contrib/tools/python3/Python/clinic/bltinmodule.c.h
@@ -0,0 +1,1412 @@
+/*[clinic input]
+preserve
+[clinic start generated code]*/
+
+#if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE)
+# include "pycore_gc.h" // PyGC_Head
+# include "pycore_runtime.h" // _Py_ID()
+#endif
+
+
+PyDoc_STRVAR(builtin___import____doc__,
+"__import__($module, /, name, globals=None, locals=None, fromlist=(),\n"
+" level=0)\n"
+"--\n"
+"\n"
+"Import a module.\n"
+"\n"
+"Because this function is meant for use by the Python\n"
+"interpreter and not for general use, it is better to use\n"
+"importlib.import_module() to programmatically import a module.\n"
+"\n"
+"The globals argument is only used to determine the context;\n"
+"they are not modified. The locals argument is unused. The fromlist\n"
+"should be a list of names to emulate ``from name import ...``, or an\n"
+"empty list to emulate ``import name``.\n"
+"When importing a module from a package, note that __import__(\'A.B\', ...)\n"
+"returns package A when fromlist is empty, but its submodule B when\n"
+"fromlist is not empty. The level argument is used to determine whether to\n"
+"perform absolute or relative imports: 0 is absolute, while a positive number\n"
+"is the number of parent directories to search relative to the current module.");
+
+#define BUILTIN___IMPORT___METHODDEF \
+ {"__import__", _PyCFunction_CAST(builtin___import__), METH_FASTCALL|METH_KEYWORDS, builtin___import____doc__},
+
+static PyObject *
+builtin___import___impl(PyObject *module, PyObject *name, PyObject *globals,
+ PyObject *locals, PyObject *fromlist, int level);
+
+static PyObject *
+builtin___import__(PyObject *module, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
+{
+ PyObject *return_value = NULL;
+ #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE)
+
+ #define NUM_KEYWORDS 5
+ static struct {
+ PyGC_Head _this_is_not_used;
+ PyObject_VAR_HEAD
+ PyObject *ob_item[NUM_KEYWORDS];
+ } _kwtuple = {
+ .ob_base = PyVarObject_HEAD_INIT(&PyTuple_Type, NUM_KEYWORDS)
+ .ob_item = { &_Py_ID(name), &_Py_ID(globals), &_Py_ID(locals), &_Py_ID(fromlist), &_Py_ID(level), },
+ };
+ #undef NUM_KEYWORDS
+ #define KWTUPLE (&_kwtuple.ob_base.ob_base)
+
+ #else // !Py_BUILD_CORE
+ # define KWTUPLE NULL
+ #endif // !Py_BUILD_CORE
+
+ static const char * const _keywords[] = {"name", "globals", "locals", "fromlist", "level", NULL};
+ static _PyArg_Parser _parser = {
+ .keywords = _keywords,
+ .fname = "__import__",
+ .kwtuple = KWTUPLE,
+ };
+ #undef KWTUPLE
+ PyObject *argsbuf[5];
+ Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 1;
+ PyObject *name;
+ PyObject *globals = NULL;
+ PyObject *locals = NULL;
+ PyObject *fromlist = NULL;
+ int level = 0;
+
+ args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 1, 5, 0, argsbuf);
+ if (!args) {
+ goto exit;
+ }
+ name = args[0];
+ if (!noptargs) {
+ goto skip_optional_pos;
+ }
+ if (args[1]) {
+ globals = args[1];
+ if (!--noptargs) {
+ goto skip_optional_pos;
+ }
+ }
+ if (args[2]) {
+ locals = args[2];
+ if (!--noptargs) {
+ goto skip_optional_pos;
+ }
+ }
+ if (args[3]) {
+ fromlist = args[3];
+ if (!--noptargs) {
+ goto skip_optional_pos;
+ }
+ }
+ level = _PyLong_AsInt(args[4]);
+ if (level == -1 && PyErr_Occurred()) {
+ goto exit;
+ }
+skip_optional_pos:
+ return_value = builtin___import___impl(module, name, globals, locals, fromlist, level);
+
+exit:
+ return return_value;
+}
+
+PyDoc_STRVAR(builtin_abs__doc__,
+"abs($module, x, /)\n"
+"--\n"
+"\n"
+"Return the absolute value of the argument.");
+
+#define BUILTIN_ABS_METHODDEF \
+ {"abs", (PyCFunction)builtin_abs, METH_O, builtin_abs__doc__},
+
+PyDoc_STRVAR(builtin_all__doc__,
+"all($module, iterable, /)\n"
+"--\n"
+"\n"
+"Return True if bool(x) is True for all values x in the iterable.\n"
+"\n"
+"If the iterable is empty, return True.");
+
+#define BUILTIN_ALL_METHODDEF \
+ {"all", (PyCFunction)builtin_all, METH_O, builtin_all__doc__},
+
+PyDoc_STRVAR(builtin_any__doc__,
+"any($module, iterable, /)\n"
+"--\n"
+"\n"
+"Return True if bool(x) is True for any x in the iterable.\n"
+"\n"
+"If the iterable is empty, return False.");
+
+#define BUILTIN_ANY_METHODDEF \
+ {"any", (PyCFunction)builtin_any, METH_O, builtin_any__doc__},
+
+PyDoc_STRVAR(builtin_ascii__doc__,
+"ascii($module, obj, /)\n"
+"--\n"
+"\n"
+"Return an ASCII-only representation of an object.\n"
+"\n"
+"As repr(), return a string containing a printable representation of an\n"
+"object, but escape the non-ASCII characters in the string returned by\n"
+"repr() using \\\\x, \\\\u or \\\\U escapes. This generates a string similar\n"
+"to that returned by repr() in Python 2.");
+
+#define BUILTIN_ASCII_METHODDEF \
+ {"ascii", (PyCFunction)builtin_ascii, METH_O, builtin_ascii__doc__},
+
+PyDoc_STRVAR(builtin_bin__doc__,
+"bin($module, number, /)\n"
+"--\n"
+"\n"
+"Return the binary representation of an integer.\n"
+"\n"
+" >>> bin(2796202)\n"
+" \'0b1010101010101010101010\'");
+
+#define BUILTIN_BIN_METHODDEF \
+ {"bin", (PyCFunction)builtin_bin, METH_O, builtin_bin__doc__},
+
+PyDoc_STRVAR(builtin_callable__doc__,
+"callable($module, obj, /)\n"
+"--\n"
+"\n"
+"Return whether the object is callable (i.e., some kind of function).\n"
+"\n"
+"Note that classes are callable, as are instances of classes with a\n"
+"__call__() method.");
+
+#define BUILTIN_CALLABLE_METHODDEF \
+ {"callable", (PyCFunction)builtin_callable, METH_O, builtin_callable__doc__},
+
+PyDoc_STRVAR(builtin_format__doc__,
+"format($module, value, format_spec=\'\', /)\n"
+"--\n"
+"\n"
+"Return type(value).__format__(value, format_spec)\n"
+"\n"
+"Many built-in types implement format_spec according to the\n"
+"Format Specification Mini-language. See help(\'FORMATTING\').\n"
+"\n"
+"If type(value) does not supply a method named __format__\n"
+"and format_spec is empty, then str(value) is returned.\n"
+"See also help(\'SPECIALMETHODS\').");
+
+#define BUILTIN_FORMAT_METHODDEF \
+ {"format", _PyCFunction_CAST(builtin_format), METH_FASTCALL, builtin_format__doc__},
+
+static PyObject *
+builtin_format_impl(PyObject *module, PyObject *value, PyObject *format_spec);
+
+static PyObject *
+builtin_format(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
+{
+ PyObject *return_value = NULL;
+ PyObject *value;
+ PyObject *format_spec = NULL;
+
+ if (!_PyArg_CheckPositional("format", nargs, 1, 2)) {
+ goto exit;
+ }
+ value = args[0];
+ if (nargs < 2) {
+ goto skip_optional;
+ }
+ if (!PyUnicode_Check(args[1])) {
+ _PyArg_BadArgument("format", "argument 2", "str", args[1]);
+ goto exit;
+ }
+ if (PyUnicode_READY(args[1]) == -1) {
+ goto exit;
+ }
+ format_spec = args[1];
+skip_optional:
+ return_value = builtin_format_impl(module, value, format_spec);
+
+exit:
+ return return_value;
+}
+
+PyDoc_STRVAR(builtin_chr__doc__,
+"chr($module, i, /)\n"
+"--\n"
+"\n"
+"Return a Unicode string of one character with ordinal i; 0 <= i <= 0x10ffff.");
+
+#define BUILTIN_CHR_METHODDEF \
+ {"chr", (PyCFunction)builtin_chr, METH_O, builtin_chr__doc__},
+
+static PyObject *
+builtin_chr_impl(PyObject *module, int i);
+
+static PyObject *
+builtin_chr(PyObject *module, PyObject *arg)
+{
+ PyObject *return_value = NULL;
+ int i;
+
+ i = _PyLong_AsInt(arg);
+ if (i == -1 && PyErr_Occurred()) {
+ goto exit;
+ }
+ return_value = builtin_chr_impl(module, i);
+
+exit:
+ return return_value;
+}
+
+PyDoc_STRVAR(builtin_compile__doc__,
+"compile($module, /, source, filename, mode, flags=0,\n"
+" dont_inherit=False, optimize=-1, *, _feature_version=-1)\n"
+"--\n"
+"\n"
+"Compile source into a code object that can be executed by exec() or eval().\n"
+"\n"
+"The source code may represent a Python module, statement or expression.\n"
+"The filename will be used for run-time error messages.\n"
+"The mode must be \'exec\' to compile a module, \'single\' to compile a\n"
+"single (interactive) statement, or \'eval\' to compile an expression.\n"
+"The flags argument, if present, controls which future statements influence\n"
+"the compilation of the code.\n"
+"The dont_inherit argument, if true, stops the compilation inheriting\n"
+"the effects of any future statements in effect in the code calling\n"
+"compile; if absent or false these statements do influence the compilation,\n"
+"in addition to any features explicitly specified.");
+
+#define BUILTIN_COMPILE_METHODDEF \
+ {"compile", _PyCFunction_CAST(builtin_compile), METH_FASTCALL|METH_KEYWORDS, builtin_compile__doc__},
+
+static PyObject *
+builtin_compile_impl(PyObject *module, PyObject *source, PyObject *filename,
+ const char *mode, int flags, int dont_inherit,
+ int optimize, int feature_version);
+
+static PyObject *
+builtin_compile(PyObject *module, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
+{
+ PyObject *return_value = NULL;
+ #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE)
+
+ #define NUM_KEYWORDS 7
+ static struct {
+ PyGC_Head _this_is_not_used;
+ PyObject_VAR_HEAD
+ PyObject *ob_item[NUM_KEYWORDS];
+ } _kwtuple = {
+ .ob_base = PyVarObject_HEAD_INIT(&PyTuple_Type, NUM_KEYWORDS)
+ .ob_item = { &_Py_ID(source), &_Py_ID(filename), &_Py_ID(mode), &_Py_ID(flags), &_Py_ID(dont_inherit), &_Py_ID(optimize), &_Py_ID(_feature_version), },
+ };
+ #undef NUM_KEYWORDS
+ #define KWTUPLE (&_kwtuple.ob_base.ob_base)
+
+ #else // !Py_BUILD_CORE
+ # define KWTUPLE NULL
+ #endif // !Py_BUILD_CORE
+
+ static const char * const _keywords[] = {"source", "filename", "mode", "flags", "dont_inherit", "optimize", "_feature_version", NULL};
+ static _PyArg_Parser _parser = {
+ .keywords = _keywords,
+ .fname = "compile",
+ .kwtuple = KWTUPLE,
+ };
+ #undef KWTUPLE
+ PyObject *argsbuf[7];
+ Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 3;
+ PyObject *source;
+ PyObject *filename;
+ const char *mode;
+ int flags = 0;
+ int dont_inherit = 0;
+ int optimize = -1;
+ int feature_version = -1;
+
+ args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 3, 6, 0, argsbuf);
+ if (!args) {
+ goto exit;
+ }
+ source = args[0];
+ if (!PyUnicode_FSDecoder(args[1], &filename)) {
+ goto exit;
+ }
+ if (!PyUnicode_Check(args[2])) {
+ _PyArg_BadArgument("compile", "argument 'mode'", "str", args[2]);
+ goto exit;
+ }
+ Py_ssize_t mode_length;
+ mode = PyUnicode_AsUTF8AndSize(args[2], &mode_length);
+ if (mode == NULL) {
+ goto exit;
+ }
+ if (strlen(mode) != (size_t)mode_length) {
+ PyErr_SetString(PyExc_ValueError, "embedded null character");
+ goto exit;
+ }
+ if (!noptargs) {
+ goto skip_optional_pos;
+ }
+ if (args[3]) {
+ flags = _PyLong_AsInt(args[3]);
+ if (flags == -1 && PyErr_Occurred()) {
+ goto exit;
+ }
+ if (!--noptargs) {
+ goto skip_optional_pos;
+ }
+ }
+ if (args[4]) {
+ dont_inherit = PyObject_IsTrue(args[4]);
+ if (dont_inherit < 0) {
+ goto exit;
+ }
+ if (!--noptargs) {
+ goto skip_optional_pos;
+ }
+ }
+ if (args[5]) {
+ optimize = _PyLong_AsInt(args[5]);
+ if (optimize == -1 && PyErr_Occurred()) {
+ goto exit;
+ }
+ if (!--noptargs) {
+ goto skip_optional_pos;
+ }
+ }
+skip_optional_pos:
+ if (!noptargs) {
+ goto skip_optional_kwonly;
+ }
+ feature_version = _PyLong_AsInt(args[6]);
+ if (feature_version == -1 && PyErr_Occurred()) {
+ goto exit;
+ }
+skip_optional_kwonly:
+ return_value = builtin_compile_impl(module, source, filename, mode, flags, dont_inherit, optimize, feature_version);
+
+exit:
+ return return_value;
+}
+
+PyDoc_STRVAR(builtin_dir__doc__,
+"dir($module, arg=<unrepresentable>, /)\n"
+"--\n"
+"\n"
+"Show attributes of an object.\n"
+"\n"
+"If called without an argument, return the names in the current scope.\n"
+"Else, return an alphabetized list of names comprising (some of) the attributes\n"
+"of the given object, and of attributes reachable from it.\n"
+"If the object supplies a method named __dir__, it will be used; otherwise\n"
+"the default dir() logic is used and returns:\n"
+" for a module object: the module\'s attributes.\n"
+" for a class object: its attributes, and recursively the attributes\n"
+" of its bases.\n"
+" for any other object: its attributes, its class\'s attributes, and\n"
+" recursively the attributes of its class\'s base classes.");
+
+#define BUILTIN_DIR_METHODDEF \
+ {"dir", _PyCFunction_CAST(builtin_dir), METH_FASTCALL, builtin_dir__doc__},
+
+static PyObject *
+builtin_dir_impl(PyObject *module, PyObject *arg);
+
+static PyObject *
+builtin_dir(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
+{
+ PyObject *return_value = NULL;
+ PyObject *arg = NULL;
+
+ if (!_PyArg_CheckPositional("dir", nargs, 0, 1)) {
+ goto exit;
+ }
+ if (nargs < 1) {
+ goto skip_optional;
+ }
+ arg = args[0];
+skip_optional:
+ return_value = builtin_dir_impl(module, arg);
+
+exit:
+ return return_value;
+}
+
+PyDoc_STRVAR(builtin_divmod__doc__,
+"divmod($module, x, y, /)\n"
+"--\n"
+"\n"
+"Return the tuple (x//y, x%y). Invariant: div*y + mod == x.");
+
+#define BUILTIN_DIVMOD_METHODDEF \
+ {"divmod", _PyCFunction_CAST(builtin_divmod), METH_FASTCALL, builtin_divmod__doc__},
+
+static PyObject *
+builtin_divmod_impl(PyObject *module, PyObject *x, PyObject *y);
+
+static PyObject *
+builtin_divmod(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
+{
+ PyObject *return_value = NULL;
+ PyObject *x;
+ PyObject *y;
+
+ if (!_PyArg_CheckPositional("divmod", nargs, 2, 2)) {
+ goto exit;
+ }
+ x = args[0];
+ y = args[1];
+ return_value = builtin_divmod_impl(module, x, y);
+
+exit:
+ return return_value;
+}
+
+PyDoc_STRVAR(builtin_eval__doc__,
+"eval($module, source, globals=None, locals=None, /)\n"
+"--\n"
+"\n"
+"Evaluate the given source in the context of globals and locals.\n"
+"\n"
+"The source may be a string representing a Python expression\n"
+"or a code object as returned by compile().\n"
+"The globals must be a dictionary and locals can be any mapping,\n"
+"defaulting to the current globals and locals.\n"
+"If only globals is given, locals defaults to it.");
+
+#define BUILTIN_EVAL_METHODDEF \
+ {"eval", _PyCFunction_CAST(builtin_eval), METH_FASTCALL, builtin_eval__doc__},
+
+static PyObject *
+builtin_eval_impl(PyObject *module, PyObject *source, PyObject *globals,
+ PyObject *locals);
+
+static PyObject *
+builtin_eval(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
+{
+ PyObject *return_value = NULL;
+ PyObject *source;
+ PyObject *globals = Py_None;
+ PyObject *locals = Py_None;
+
+ if (!_PyArg_CheckPositional("eval", nargs, 1, 3)) {
+ goto exit;
+ }
+ source = args[0];
+ if (nargs < 2) {
+ goto skip_optional;
+ }
+ globals = args[1];
+ if (nargs < 3) {
+ goto skip_optional;
+ }
+ locals = args[2];
+skip_optional:
+ return_value = builtin_eval_impl(module, source, globals, locals);
+
+exit:
+ return return_value;
+}
+
+PyDoc_STRVAR(builtin_exec__doc__,
+"exec($module, source, globals=None, locals=None, /, *, closure=None)\n"
+"--\n"
+"\n"
+"Execute the given source in the context of globals and locals.\n"
+"\n"
+"The source may be a string representing one or more Python statements\n"
+"or a code object as returned by compile().\n"
+"The globals must be a dictionary and locals can be any mapping,\n"
+"defaulting to the current globals and locals.\n"
+"If only globals is given, locals defaults to it.\n"
+"The closure must be a tuple of cellvars, and can only be used\n"
+"when source is a code object requiring exactly that many cellvars.");
+
+#define BUILTIN_EXEC_METHODDEF \
+ {"exec", _PyCFunction_CAST(builtin_exec), METH_FASTCALL|METH_KEYWORDS, builtin_exec__doc__},
+
+static PyObject *
+builtin_exec_impl(PyObject *module, PyObject *source, PyObject *globals,
+ PyObject *locals, PyObject *closure);
+
+static PyObject *
+builtin_exec(PyObject *module, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
+{
+ PyObject *return_value = NULL;
+ #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE)
+
+ #define NUM_KEYWORDS 1
+ static struct {
+ PyGC_Head _this_is_not_used;
+ PyObject_VAR_HEAD
+ PyObject *ob_item[NUM_KEYWORDS];
+ } _kwtuple = {
+ .ob_base = PyVarObject_HEAD_INIT(&PyTuple_Type, NUM_KEYWORDS)
+ .ob_item = { &_Py_ID(closure), },
+ };
+ #undef NUM_KEYWORDS
+ #define KWTUPLE (&_kwtuple.ob_base.ob_base)
+
+ #else // !Py_BUILD_CORE
+ # define KWTUPLE NULL
+ #endif // !Py_BUILD_CORE
+
+ static const char * const _keywords[] = {"", "", "", "closure", NULL};
+ static _PyArg_Parser _parser = {
+ .keywords = _keywords,
+ .fname = "exec",
+ .kwtuple = KWTUPLE,
+ };
+ #undef KWTUPLE
+ PyObject *argsbuf[4];
+ Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 1;
+ PyObject *source;
+ PyObject *globals = Py_None;
+ PyObject *locals = Py_None;
+ PyObject *closure = NULL;
+
+ args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 1, 3, 0, argsbuf);
+ if (!args) {
+ goto exit;
+ }
+ source = args[0];
+ if (nargs < 2) {
+ goto skip_optional_posonly;
+ }
+ noptargs--;
+ globals = args[1];
+ if (nargs < 3) {
+ goto skip_optional_posonly;
+ }
+ noptargs--;
+ locals = args[2];
+skip_optional_posonly:
+ if (!noptargs) {
+ goto skip_optional_kwonly;
+ }
+ closure = args[3];
+skip_optional_kwonly:
+ return_value = builtin_exec_impl(module, source, globals, locals, closure);
+
+exit:
+ return return_value;
+}
+
+PyDoc_STRVAR(builtin_getattr__doc__,
+"getattr($module, object, name, default=<unrepresentable>, /)\n"
+"--\n"
+"\n"
+"Get a named attribute from an object.\n"
+"\n"
+"getattr(x, \'y\') is equivalent to x.y\n"
+"When a default argument is given, it is returned when the attribute doesn\'t\n"
+"exist; without it, an exception is raised in that case.");
+
+#define BUILTIN_GETATTR_METHODDEF \
+ {"getattr", _PyCFunction_CAST(builtin_getattr), METH_FASTCALL, builtin_getattr__doc__},
+
+static PyObject *
+builtin_getattr_impl(PyObject *module, PyObject *object, PyObject *name,
+ PyObject *default_value);
+
+static PyObject *
+builtin_getattr(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
+{
+ PyObject *return_value = NULL;
+ PyObject *object;
+ PyObject *name;
+ PyObject *default_value = NULL;
+
+ if (!_PyArg_CheckPositional("getattr", nargs, 2, 3)) {
+ goto exit;
+ }
+ object = args[0];
+ name = args[1];
+ if (nargs < 3) {
+ goto skip_optional;
+ }
+ default_value = args[2];
+skip_optional:
+ return_value = builtin_getattr_impl(module, object, name, default_value);
+
+exit:
+ return return_value;
+}
+
+PyDoc_STRVAR(builtin_globals__doc__,
+"globals($module, /)\n"
+"--\n"
+"\n"
+"Return the dictionary containing the current scope\'s global variables.\n"
+"\n"
+"NOTE: Updates to this dictionary *will* affect name lookups in the current\n"
+"global scope and vice-versa.");
+
+#define BUILTIN_GLOBALS_METHODDEF \
+ {"globals", (PyCFunction)builtin_globals, METH_NOARGS, builtin_globals__doc__},
+
+static PyObject *
+builtin_globals_impl(PyObject *module);
+
+static PyObject *
+builtin_globals(PyObject *module, PyObject *Py_UNUSED(ignored))
+{
+ return builtin_globals_impl(module);
+}
+
+PyDoc_STRVAR(builtin_hasattr__doc__,
+"hasattr($module, obj, name, /)\n"
+"--\n"
+"\n"
+"Return whether the object has an attribute with the given name.\n"
+"\n"
+"This is done by calling getattr(obj, name) and catching AttributeError.");
+
+#define BUILTIN_HASATTR_METHODDEF \
+ {"hasattr", _PyCFunction_CAST(builtin_hasattr), METH_FASTCALL, builtin_hasattr__doc__},
+
+static PyObject *
+builtin_hasattr_impl(PyObject *module, PyObject *obj, PyObject *name);
+
+static PyObject *
+builtin_hasattr(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
+{
+ PyObject *return_value = NULL;
+ PyObject *obj;
+ PyObject *name;
+
+ if (!_PyArg_CheckPositional("hasattr", nargs, 2, 2)) {
+ goto exit;
+ }
+ obj = args[0];
+ name = args[1];
+ return_value = builtin_hasattr_impl(module, obj, name);
+
+exit:
+ return return_value;
+}
+
+PyDoc_STRVAR(builtin_id__doc__,
+"id($module, obj, /)\n"
+"--\n"
+"\n"
+"Return the identity of an object.\n"
+"\n"
+"This is guaranteed to be unique among simultaneously existing objects.\n"
+"(CPython uses the object\'s memory address.)");
+
+#define BUILTIN_ID_METHODDEF \
+ {"id", (PyCFunction)builtin_id, METH_O, builtin_id__doc__},
+
+PyDoc_STRVAR(builtin_next__doc__,
+"next($module, iterator, default=<unrepresentable>, /)\n"
+"--\n"
+"\n"
+"Return the next item from the iterator.\n"
+"\n"
+"If default is given and the iterator is exhausted,\n"
+"it is returned instead of raising StopIteration.");
+
+#define BUILTIN_NEXT_METHODDEF \
+ {"next", _PyCFunction_CAST(builtin_next), METH_FASTCALL, builtin_next__doc__},
+
+static PyObject *
+builtin_next_impl(PyObject *module, PyObject *iterator,
+ PyObject *default_value);
+
+static PyObject *
+builtin_next(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
+{
+ PyObject *return_value = NULL;
+ PyObject *iterator;
+ PyObject *default_value = NULL;
+
+ if (!_PyArg_CheckPositional("next", nargs, 1, 2)) {
+ goto exit;
+ }
+ iterator = args[0];
+ if (nargs < 2) {
+ goto skip_optional;
+ }
+ default_value = args[1];
+skip_optional:
+ return_value = builtin_next_impl(module, iterator, default_value);
+
+exit:
+ return return_value;
+}
+
+PyDoc_STRVAR(builtin_setattr__doc__,
+"setattr($module, obj, name, value, /)\n"
+"--\n"
+"\n"
+"Sets the named attribute on the given object to the specified value.\n"
+"\n"
+"setattr(x, \'y\', v) is equivalent to ``x.y = v``");
+
+#define BUILTIN_SETATTR_METHODDEF \
+ {"setattr", _PyCFunction_CAST(builtin_setattr), METH_FASTCALL, builtin_setattr__doc__},
+
+static PyObject *
+builtin_setattr_impl(PyObject *module, PyObject *obj, PyObject *name,
+ PyObject *value);
+
+static PyObject *
+builtin_setattr(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
+{
+ PyObject *return_value = NULL;
+ PyObject *obj;
+ PyObject *name;
+ PyObject *value;
+
+ if (!_PyArg_CheckPositional("setattr", nargs, 3, 3)) {
+ goto exit;
+ }
+ obj = args[0];
+ name = args[1];
+ value = args[2];
+ return_value = builtin_setattr_impl(module, obj, name, value);
+
+exit:
+ return return_value;
+}
+
+PyDoc_STRVAR(builtin_delattr__doc__,
+"delattr($module, obj, name, /)\n"
+"--\n"
+"\n"
+"Deletes the named attribute from the given object.\n"
+"\n"
+"delattr(x, \'y\') is equivalent to ``del x.y``");
+
+#define BUILTIN_DELATTR_METHODDEF \
+ {"delattr", _PyCFunction_CAST(builtin_delattr), METH_FASTCALL, builtin_delattr__doc__},
+
+static PyObject *
+builtin_delattr_impl(PyObject *module, PyObject *obj, PyObject *name);
+
+static PyObject *
+builtin_delattr(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
+{
+ PyObject *return_value = NULL;
+ PyObject *obj;
+ PyObject *name;
+
+ if (!_PyArg_CheckPositional("delattr", nargs, 2, 2)) {
+ goto exit;
+ }
+ obj = args[0];
+ name = args[1];
+ return_value = builtin_delattr_impl(module, obj, name);
+
+exit:
+ return return_value;
+}
+
+PyDoc_STRVAR(builtin_hash__doc__,
+"hash($module, obj, /)\n"
+"--\n"
+"\n"
+"Return the hash value for the given object.\n"
+"\n"
+"Two objects that compare equal must also have the same hash value, but the\n"
+"reverse is not necessarily true.");
+
+#define BUILTIN_HASH_METHODDEF \
+ {"hash", (PyCFunction)builtin_hash, METH_O, builtin_hash__doc__},
+
+PyDoc_STRVAR(builtin_hex__doc__,
+"hex($module, number, /)\n"
+"--\n"
+"\n"
+"Return the hexadecimal representation of an integer.\n"
+"\n"
+" >>> hex(12648430)\n"
+" \'0xc0ffee\'");
+
+#define BUILTIN_HEX_METHODDEF \
+ {"hex", (PyCFunction)builtin_hex, METH_O, builtin_hex__doc__},
+
+PyDoc_STRVAR(builtin_iter__doc__,
+"iter($module, object, sentinel=<unrepresentable>, /)\n"
+"--\n"
+"\n"
+"Get an iterator from an object.\n"
+"\n"
+"In the first form, the argument must supply its own iterator, or be a sequence.\n"
+"In the second form, the callable is called until it returns the sentinel.");
+
+#define BUILTIN_ITER_METHODDEF \
+ {"iter", _PyCFunction_CAST(builtin_iter), METH_FASTCALL, builtin_iter__doc__},
+
+static PyObject *
+builtin_iter_impl(PyObject *module, PyObject *object, PyObject *sentinel);
+
+static PyObject *
+builtin_iter(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
+{
+ PyObject *return_value = NULL;
+ PyObject *object;
+ PyObject *sentinel = NULL;
+
+ if (!_PyArg_CheckPositional("iter", nargs, 1, 2)) {
+ goto exit;
+ }
+ object = args[0];
+ if (nargs < 2) {
+ goto skip_optional;
+ }
+ sentinel = args[1];
+skip_optional:
+ return_value = builtin_iter_impl(module, object, sentinel);
+
+exit:
+ return return_value;
+}
+
+PyDoc_STRVAR(builtin_aiter__doc__,
+"aiter($module, async_iterable, /)\n"
+"--\n"
+"\n"
+"Return an AsyncIterator for an AsyncIterable object.");
+
+#define BUILTIN_AITER_METHODDEF \
+ {"aiter", (PyCFunction)builtin_aiter, METH_O, builtin_aiter__doc__},
+
+PyDoc_STRVAR(builtin_anext__doc__,
+"anext($module, aiterator, default=<unrepresentable>, /)\n"
+"--\n"
+"\n"
+"async anext(aiterator[, default])\n"
+"\n"
+"Return the next item from the async iterator. If default is given and the async\n"
+"iterator is exhausted, it is returned instead of raising StopAsyncIteration.");
+
+#define BUILTIN_ANEXT_METHODDEF \
+ {"anext", _PyCFunction_CAST(builtin_anext), METH_FASTCALL, builtin_anext__doc__},
+
+static PyObject *
+builtin_anext_impl(PyObject *module, PyObject *aiterator,
+ PyObject *default_value);
+
+static PyObject *
+builtin_anext(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
+{
+ PyObject *return_value = NULL;
+ PyObject *aiterator;
+ PyObject *default_value = NULL;
+
+ if (!_PyArg_CheckPositional("anext", nargs, 1, 2)) {
+ goto exit;
+ }
+ aiterator = args[0];
+ if (nargs < 2) {
+ goto skip_optional;
+ }
+ default_value = args[1];
+skip_optional:
+ return_value = builtin_anext_impl(module, aiterator, default_value);
+
+exit:
+ return return_value;
+}
+
+PyDoc_STRVAR(builtin_len__doc__,
+"len($module, obj, /)\n"
+"--\n"
+"\n"
+"Return the number of items in a container.");
+
+#define BUILTIN_LEN_METHODDEF \
+ {"len", (PyCFunction)builtin_len, METH_O, builtin_len__doc__},
+
+PyDoc_STRVAR(builtin_locals__doc__,
+"locals($module, /)\n"
+"--\n"
+"\n"
+"Return a dictionary containing the current scope\'s local variables.\n"
+"\n"
+"NOTE: Whether or not updates to this dictionary will affect name lookups in\n"
+"the local scope and vice-versa is *implementation dependent* and not\n"
+"covered by any backwards compatibility guarantees.");
+
+#define BUILTIN_LOCALS_METHODDEF \
+ {"locals", (PyCFunction)builtin_locals, METH_NOARGS, builtin_locals__doc__},
+
+static PyObject *
+builtin_locals_impl(PyObject *module);
+
+static PyObject *
+builtin_locals(PyObject *module, PyObject *Py_UNUSED(ignored))
+{
+ return builtin_locals_impl(module);
+}
+
+PyDoc_STRVAR(builtin_oct__doc__,
+"oct($module, number, /)\n"
+"--\n"
+"\n"
+"Return the octal representation of an integer.\n"
+"\n"
+" >>> oct(342391)\n"
+" \'0o1234567\'");
+
+#define BUILTIN_OCT_METHODDEF \
+ {"oct", (PyCFunction)builtin_oct, METH_O, builtin_oct__doc__},
+
+PyDoc_STRVAR(builtin_ord__doc__,
+"ord($module, c, /)\n"
+"--\n"
+"\n"
+"Return the Unicode code point for a one-character string.");
+
+#define BUILTIN_ORD_METHODDEF \
+ {"ord", (PyCFunction)builtin_ord, METH_O, builtin_ord__doc__},
+
+PyDoc_STRVAR(builtin_pow__doc__,
+"pow($module, /, base, exp, mod=None)\n"
+"--\n"
+"\n"
+"Equivalent to base**exp with 2 arguments or base**exp % mod with 3 arguments\n"
+"\n"
+"Some types, such as ints, are able to use a more efficient algorithm when\n"
+"invoked using the three argument form.");
+
+#define BUILTIN_POW_METHODDEF \
+ {"pow", _PyCFunction_CAST(builtin_pow), METH_FASTCALL|METH_KEYWORDS, builtin_pow__doc__},
+
+static PyObject *
+builtin_pow_impl(PyObject *module, PyObject *base, PyObject *exp,
+ PyObject *mod);
+
+static PyObject *
+builtin_pow(PyObject *module, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
+{
+ PyObject *return_value = NULL;
+ #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE)
+
+ #define NUM_KEYWORDS 3
+ static struct {
+ PyGC_Head _this_is_not_used;
+ PyObject_VAR_HEAD
+ PyObject *ob_item[NUM_KEYWORDS];
+ } _kwtuple = {
+ .ob_base = PyVarObject_HEAD_INIT(&PyTuple_Type, NUM_KEYWORDS)
+ .ob_item = { &_Py_ID(base), &_Py_ID(exp), &_Py_ID(mod), },
+ };
+ #undef NUM_KEYWORDS
+ #define KWTUPLE (&_kwtuple.ob_base.ob_base)
+
+ #else // !Py_BUILD_CORE
+ # define KWTUPLE NULL
+ #endif // !Py_BUILD_CORE
+
+ static const char * const _keywords[] = {"base", "exp", "mod", NULL};
+ static _PyArg_Parser _parser = {
+ .keywords = _keywords,
+ .fname = "pow",
+ .kwtuple = KWTUPLE,
+ };
+ #undef KWTUPLE
+ PyObject *argsbuf[3];
+ Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 2;
+ PyObject *base;
+ PyObject *exp;
+ PyObject *mod = Py_None;
+
+ args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 2, 3, 0, argsbuf);
+ if (!args) {
+ goto exit;
+ }
+ base = args[0];
+ exp = args[1];
+ if (!noptargs) {
+ goto skip_optional_pos;
+ }
+ mod = args[2];
+skip_optional_pos:
+ return_value = builtin_pow_impl(module, base, exp, mod);
+
+exit:
+ return return_value;
+}
+
+PyDoc_STRVAR(builtin_print__doc__,
+"print($module, /, *args, sep=\' \', end=\'\\n\', file=None, flush=False)\n"
+"--\n"
+"\n"
+"Prints the values to a stream, or to sys.stdout by default.\n"
+"\n"
+" sep\n"
+" string inserted between values, default a space.\n"
+" end\n"
+" string appended after the last value, default a newline.\n"
+" file\n"
+" a file-like object (stream); defaults to the current sys.stdout.\n"
+" flush\n"
+" whether to forcibly flush the stream.");
+
+#define BUILTIN_PRINT_METHODDEF \
+ {"print", _PyCFunction_CAST(builtin_print), METH_FASTCALL|METH_KEYWORDS, builtin_print__doc__},
+
+static PyObject *
+builtin_print_impl(PyObject *module, PyObject *args, PyObject *sep,
+ PyObject *end, PyObject *file, int flush);
+
+static PyObject *
+builtin_print(PyObject *module, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
+{
+ PyObject *return_value = NULL;
+ #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE)
+
+ #define NUM_KEYWORDS 4
+ static struct {
+ PyGC_Head _this_is_not_used;
+ PyObject_VAR_HEAD
+ PyObject *ob_item[NUM_KEYWORDS];
+ } _kwtuple = {
+ .ob_base = PyVarObject_HEAD_INIT(&PyTuple_Type, NUM_KEYWORDS)
+ .ob_item = { &_Py_ID(sep), &_Py_ID(end), &_Py_ID(file), &_Py_ID(flush), },
+ };
+ #undef NUM_KEYWORDS
+ #define KWTUPLE (&_kwtuple.ob_base.ob_base)
+
+ #else // !Py_BUILD_CORE
+ # define KWTUPLE NULL
+ #endif // !Py_BUILD_CORE
+
+ static const char * const _keywords[] = {"sep", "end", "file", "flush", NULL};
+ static _PyArg_Parser _parser = {
+ .keywords = _keywords,
+ .fname = "print",
+ .kwtuple = KWTUPLE,
+ };
+ #undef KWTUPLE
+ PyObject *argsbuf[5];
+ Py_ssize_t noptargs = 0 + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 0;
+ PyObject *__clinic_args = NULL;
+ PyObject *sep = Py_None;
+ PyObject *end = Py_None;
+ PyObject *file = Py_None;
+ int flush = 0;
+
+ args = _PyArg_UnpackKeywordsWithVararg(args, nargs, NULL, kwnames, &_parser, 0, 0, 0, 0, argsbuf);
+ if (!args) {
+ goto exit;
+ }
+ __clinic_args = args[0];
+ if (!noptargs) {
+ goto skip_optional_kwonly;
+ }
+ if (args[1]) {
+ sep = args[1];
+ if (!--noptargs) {
+ goto skip_optional_kwonly;
+ }
+ }
+ if (args[2]) {
+ end = args[2];
+ if (!--noptargs) {
+ goto skip_optional_kwonly;
+ }
+ }
+ if (args[3]) {
+ file = args[3];
+ if (!--noptargs) {
+ goto skip_optional_kwonly;
+ }
+ }
+ flush = PyObject_IsTrue(args[4]);
+ if (flush < 0) {
+ goto exit;
+ }
+skip_optional_kwonly:
+ return_value = builtin_print_impl(module, __clinic_args, sep, end, file, flush);
+
+exit:
+ Py_XDECREF(__clinic_args);
+ return return_value;
+}
+
+PyDoc_STRVAR(builtin_input__doc__,
+"input($module, prompt=\'\', /)\n"
+"--\n"
+"\n"
+"Read a string from standard input. The trailing newline is stripped.\n"
+"\n"
+"The prompt string, if given, is printed to standard output without a\n"
+"trailing newline before reading input.\n"
+"\n"
+"If the user hits EOF (*nix: Ctrl-D, Windows: Ctrl-Z+Return), raise EOFError.\n"
+"On *nix systems, readline is used if available.");
+
+#define BUILTIN_INPUT_METHODDEF \
+ {"input", _PyCFunction_CAST(builtin_input), METH_FASTCALL, builtin_input__doc__},
+
+static PyObject *
+builtin_input_impl(PyObject *module, PyObject *prompt);
+
+static PyObject *
+builtin_input(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
+{
+ PyObject *return_value = NULL;
+ PyObject *prompt = NULL;
+
+ if (!_PyArg_CheckPositional("input", nargs, 0, 1)) {
+ goto exit;
+ }
+ if (nargs < 1) {
+ goto skip_optional;
+ }
+ prompt = args[0];
+skip_optional:
+ return_value = builtin_input_impl(module, prompt);
+
+exit:
+ return return_value;
+}
+
+PyDoc_STRVAR(builtin_repr__doc__,
+"repr($module, obj, /)\n"
+"--\n"
+"\n"
+"Return the canonical string representation of the object.\n"
+"\n"
+"For many object types, including most builtins, eval(repr(obj)) == obj.");
+
+#define BUILTIN_REPR_METHODDEF \
+ {"repr", (PyCFunction)builtin_repr, METH_O, builtin_repr__doc__},
+
+PyDoc_STRVAR(builtin_round__doc__,
+"round($module, /, number, ndigits=None)\n"
+"--\n"
+"\n"
+"Round a number to a given precision in decimal digits.\n"
+"\n"
+"The return value is an integer if ndigits is omitted or None. Otherwise\n"
+"the return value has the same type as the number. ndigits may be negative.");
+
+#define BUILTIN_ROUND_METHODDEF \
+ {"round", _PyCFunction_CAST(builtin_round), METH_FASTCALL|METH_KEYWORDS, builtin_round__doc__},
+
+static PyObject *
+builtin_round_impl(PyObject *module, PyObject *number, PyObject *ndigits);
+
+static PyObject *
+builtin_round(PyObject *module, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
+{
+ PyObject *return_value = NULL;
+ #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE)
+
+ #define NUM_KEYWORDS 2
+ static struct {
+ PyGC_Head _this_is_not_used;
+ PyObject_VAR_HEAD
+ PyObject *ob_item[NUM_KEYWORDS];
+ } _kwtuple = {
+ .ob_base = PyVarObject_HEAD_INIT(&PyTuple_Type, NUM_KEYWORDS)
+ .ob_item = { &_Py_ID(number), &_Py_ID(ndigits), },
+ };
+ #undef NUM_KEYWORDS
+ #define KWTUPLE (&_kwtuple.ob_base.ob_base)
+
+ #else // !Py_BUILD_CORE
+ # define KWTUPLE NULL
+ #endif // !Py_BUILD_CORE
+
+ static const char * const _keywords[] = {"number", "ndigits", NULL};
+ static _PyArg_Parser _parser = {
+ .keywords = _keywords,
+ .fname = "round",
+ .kwtuple = KWTUPLE,
+ };
+ #undef KWTUPLE
+ PyObject *argsbuf[2];
+ Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 1;
+ PyObject *number;
+ PyObject *ndigits = Py_None;
+
+ args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 1, 2, 0, argsbuf);
+ if (!args) {
+ goto exit;
+ }
+ number = args[0];
+ if (!noptargs) {
+ goto skip_optional_pos;
+ }
+ ndigits = args[1];
+skip_optional_pos:
+ return_value = builtin_round_impl(module, number, ndigits);
+
+exit:
+ return return_value;
+}
+
+PyDoc_STRVAR(builtin_vars__doc__,
+"vars($module, object=<unrepresentable>, /)\n"
+"--\n"
+"\n"
+"Show vars.\n"
+"\n"
+"Without arguments, equivalent to locals().\n"
+"With an argument, equivalent to object.__dict__.");
+
+#define BUILTIN_VARS_METHODDEF \
+ {"vars", _PyCFunction_CAST(builtin_vars), METH_FASTCALL, builtin_vars__doc__},
+
+static PyObject *
+builtin_vars_impl(PyObject *module, PyObject *object);
+
+static PyObject *
+builtin_vars(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
+{
+ PyObject *return_value = NULL;
+ PyObject *object = NULL;
+
+ if (!_PyArg_CheckPositional("vars", nargs, 0, 1)) {
+ goto exit;
+ }
+ if (nargs < 1) {
+ goto skip_optional;
+ }
+ object = args[0];
+skip_optional:
+ return_value = builtin_vars_impl(module, object);
+
+exit:
+ return return_value;
+}
+
+PyDoc_STRVAR(builtin_sum__doc__,
+"sum($module, iterable, /, start=0)\n"
+"--\n"
+"\n"
+"Return the sum of a \'start\' value (default: 0) plus an iterable of numbers\n"
+"\n"
+"When the iterable is empty, return the start value.\n"
+"This function is intended specifically for use with numeric values and may\n"
+"reject non-numeric types.");
+
+#define BUILTIN_SUM_METHODDEF \
+ {"sum", _PyCFunction_CAST(builtin_sum), METH_FASTCALL|METH_KEYWORDS, builtin_sum__doc__},
+
+static PyObject *
+builtin_sum_impl(PyObject *module, PyObject *iterable, PyObject *start);
+
+static PyObject *
+builtin_sum(PyObject *module, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
+{
+ PyObject *return_value = NULL;
+ #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE)
+
+ #define NUM_KEYWORDS 1
+ static struct {
+ PyGC_Head _this_is_not_used;
+ PyObject_VAR_HEAD
+ PyObject *ob_item[NUM_KEYWORDS];
+ } _kwtuple = {
+ .ob_base = PyVarObject_HEAD_INIT(&PyTuple_Type, NUM_KEYWORDS)
+ .ob_item = { &_Py_ID(start), },
+ };
+ #undef NUM_KEYWORDS
+ #define KWTUPLE (&_kwtuple.ob_base.ob_base)
+
+ #else // !Py_BUILD_CORE
+ # define KWTUPLE NULL
+ #endif // !Py_BUILD_CORE
+
+ static const char * const _keywords[] = {"", "start", NULL};
+ static _PyArg_Parser _parser = {
+ .keywords = _keywords,
+ .fname = "sum",
+ .kwtuple = KWTUPLE,
+ };
+ #undef KWTUPLE
+ PyObject *argsbuf[2];
+ Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 1;
+ PyObject *iterable;
+ PyObject *start = NULL;
+
+ args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 1, 2, 0, argsbuf);
+ if (!args) {
+ goto exit;
+ }
+ iterable = args[0];
+ if (!noptargs) {
+ goto skip_optional_pos;
+ }
+ start = args[1];
+skip_optional_pos:
+ return_value = builtin_sum_impl(module, iterable, start);
+
+exit:
+ return return_value;
+}
+
+PyDoc_STRVAR(builtin_isinstance__doc__,
+"isinstance($module, obj, class_or_tuple, /)\n"
+"--\n"
+"\n"
+"Return whether an object is an instance of a class or of a subclass thereof.\n"
+"\n"
+"A tuple, as in ``isinstance(x, (A, B, ...))``, may be given as the target to\n"
+"check against. This is equivalent to ``isinstance(x, A) or isinstance(x, B)\n"
+"or ...`` etc.");
+
+#define BUILTIN_ISINSTANCE_METHODDEF \
+ {"isinstance", _PyCFunction_CAST(builtin_isinstance), METH_FASTCALL, builtin_isinstance__doc__},
+
+static PyObject *
+builtin_isinstance_impl(PyObject *module, PyObject *obj,
+ PyObject *class_or_tuple);
+
+static PyObject *
+builtin_isinstance(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
+{
+ PyObject *return_value = NULL;
+ PyObject *obj;
+ PyObject *class_or_tuple;
+
+ if (!_PyArg_CheckPositional("isinstance", nargs, 2, 2)) {
+ goto exit;
+ }
+ obj = args[0];
+ class_or_tuple = args[1];
+ return_value = builtin_isinstance_impl(module, obj, class_or_tuple);
+
+exit:
+ return return_value;
+}
+
+PyDoc_STRVAR(builtin_issubclass__doc__,
+"issubclass($module, cls, class_or_tuple, /)\n"
+"--\n"
+"\n"
+"Return whether \'cls\' is derived from another class or is the same class.\n"
+"\n"
+"A tuple, as in ``issubclass(x, (A, B, ...))``, may be given as the target to\n"
+"check against. This is equivalent to ``issubclass(x, A) or issubclass(x, B)\n"
+"or ...``.");
+
+#define BUILTIN_ISSUBCLASS_METHODDEF \
+ {"issubclass", _PyCFunction_CAST(builtin_issubclass), METH_FASTCALL, builtin_issubclass__doc__},
+
+static PyObject *
+builtin_issubclass_impl(PyObject *module, PyObject *cls,
+ PyObject *class_or_tuple);
+
+static PyObject *
+builtin_issubclass(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
+{
+ PyObject *return_value = NULL;
+ PyObject *cls;
+ PyObject *class_or_tuple;
+
+ if (!_PyArg_CheckPositional("issubclass", nargs, 2, 2)) {
+ goto exit;
+ }
+ cls = args[0];
+ class_or_tuple = args[1];
+ return_value = builtin_issubclass_impl(module, cls, class_or_tuple);
+
+exit:
+ return return_value;
+}
+/*[clinic end generated code: output=84a04e7446debf58 input=a9049054013a1b77]*/
diff --git a/contrib/tools/python3/Python/clinic/context.c.h b/contrib/tools/python3/Python/clinic/context.c.h
new file mode 100644
index 00000000000..27c375717bf
--- /dev/null
+++ b/contrib/tools/python3/Python/clinic/context.c.h
@@ -0,0 +1,186 @@
+/*[clinic input]
+preserve
+[clinic start generated code]*/
+
+#if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE)
+# include "pycore_gc.h" // PyGC_Head
+# include "pycore_runtime.h" // _Py_ID()
+#endif
+
+
+PyDoc_STRVAR(_contextvars_Context_get__doc__,
+"get($self, key, default=None, /)\n"
+"--\n"
+"\n"
+"Return the value for `key` if `key` has the value in the context object.\n"
+"\n"
+"If `key` does not exist, return `default`. If `default` is not given,\n"
+"return None.");
+
+#define _CONTEXTVARS_CONTEXT_GET_METHODDEF \
+ {"get", _PyCFunction_CAST(_contextvars_Context_get), METH_FASTCALL, _contextvars_Context_get__doc__},
+
+static PyObject *
+_contextvars_Context_get_impl(PyContext *self, PyObject *key,
+ PyObject *default_value);
+
+static PyObject *
+_contextvars_Context_get(PyContext *self, PyObject *const *args, Py_ssize_t nargs)
+{
+ PyObject *return_value = NULL;
+ PyObject *key;
+ PyObject *default_value = Py_None;
+
+ if (!_PyArg_CheckPositional("get", nargs, 1, 2)) {
+ goto exit;
+ }
+ key = args[0];
+ if (nargs < 2) {
+ goto skip_optional;
+ }
+ default_value = args[1];
+skip_optional:
+ return_value = _contextvars_Context_get_impl(self, key, default_value);
+
+exit:
+ return return_value;
+}
+
+PyDoc_STRVAR(_contextvars_Context_items__doc__,
+"items($self, /)\n"
+"--\n"
+"\n"
+"Return all variables and their values in the context object.\n"
+"\n"
+"The result is returned as a list of 2-tuples (variable, value).");
+
+#define _CONTEXTVARS_CONTEXT_ITEMS_METHODDEF \
+ {"items", (PyCFunction)_contextvars_Context_items, METH_NOARGS, _contextvars_Context_items__doc__},
+
+static PyObject *
+_contextvars_Context_items_impl(PyContext *self);
+
+static PyObject *
+_contextvars_Context_items(PyContext *self, PyObject *Py_UNUSED(ignored))
+{
+ return _contextvars_Context_items_impl(self);
+}
+
+PyDoc_STRVAR(_contextvars_Context_keys__doc__,
+"keys($self, /)\n"
+"--\n"
+"\n"
+"Return a list of all variables in the context object.");
+
+#define _CONTEXTVARS_CONTEXT_KEYS_METHODDEF \
+ {"keys", (PyCFunction)_contextvars_Context_keys, METH_NOARGS, _contextvars_Context_keys__doc__},
+
+static PyObject *
+_contextvars_Context_keys_impl(PyContext *self);
+
+static PyObject *
+_contextvars_Context_keys(PyContext *self, PyObject *Py_UNUSED(ignored))
+{
+ return _contextvars_Context_keys_impl(self);
+}
+
+PyDoc_STRVAR(_contextvars_Context_values__doc__,
+"values($self, /)\n"
+"--\n"
+"\n"
+"Return a list of all variables\' values in the context object.");
+
+#define _CONTEXTVARS_CONTEXT_VALUES_METHODDEF \
+ {"values", (PyCFunction)_contextvars_Context_values, METH_NOARGS, _contextvars_Context_values__doc__},
+
+static PyObject *
+_contextvars_Context_values_impl(PyContext *self);
+
+static PyObject *
+_contextvars_Context_values(PyContext *self, PyObject *Py_UNUSED(ignored))
+{
+ return _contextvars_Context_values_impl(self);
+}
+
+PyDoc_STRVAR(_contextvars_Context_copy__doc__,
+"copy($self, /)\n"
+"--\n"
+"\n"
+"Return a shallow copy of the context object.");
+
+#define _CONTEXTVARS_CONTEXT_COPY_METHODDEF \
+ {"copy", (PyCFunction)_contextvars_Context_copy, METH_NOARGS, _contextvars_Context_copy__doc__},
+
+static PyObject *
+_contextvars_Context_copy_impl(PyContext *self);
+
+static PyObject *
+_contextvars_Context_copy(PyContext *self, PyObject *Py_UNUSED(ignored))
+{
+ return _contextvars_Context_copy_impl(self);
+}
+
+PyDoc_STRVAR(_contextvars_ContextVar_get__doc__,
+"get($self, default=<unrepresentable>, /)\n"
+"--\n"
+"\n"
+"Return a value for the context variable for the current context.\n"
+"\n"
+"If there is no value for the variable in the current context, the method will:\n"
+" * return the value of the default argument of the method, if provided; or\n"
+" * return the default value for the context variable, if it was created\n"
+" with one; or\n"
+" * raise a LookupError.");
+
+#define _CONTEXTVARS_CONTEXTVAR_GET_METHODDEF \
+ {"get", _PyCFunction_CAST(_contextvars_ContextVar_get), METH_FASTCALL, _contextvars_ContextVar_get__doc__},
+
+static PyObject *
+_contextvars_ContextVar_get_impl(PyContextVar *self, PyObject *default_value);
+
+static PyObject *
+_contextvars_ContextVar_get(PyContextVar *self, PyObject *const *args, Py_ssize_t nargs)
+{
+ PyObject *return_value = NULL;
+ PyObject *default_value = NULL;
+
+ if (!_PyArg_CheckPositional("get", nargs, 0, 1)) {
+ goto exit;
+ }
+ if (nargs < 1) {
+ goto skip_optional;
+ }
+ default_value = args[0];
+skip_optional:
+ return_value = _contextvars_ContextVar_get_impl(self, default_value);
+
+exit:
+ return return_value;
+}
+
+PyDoc_STRVAR(_contextvars_ContextVar_set__doc__,
+"set($self, value, /)\n"
+"--\n"
+"\n"
+"Call to set a new value for the context variable in the current context.\n"
+"\n"
+"The required value argument is the new value for the context variable.\n"
+"\n"
+"Returns a Token object that can be used to restore the variable to its previous\n"
+"value via the `ContextVar.reset()` method.");
+
+#define _CONTEXTVARS_CONTEXTVAR_SET_METHODDEF \
+ {"set", (PyCFunction)_contextvars_ContextVar_set, METH_O, _contextvars_ContextVar_set__doc__},
+
+PyDoc_STRVAR(_contextvars_ContextVar_reset__doc__,
+"reset($self, token, /)\n"
+"--\n"
+"\n"
+"Reset the context variable.\n"
+"\n"
+"The variable is reset to the value it had before the `ContextVar.set()` that\n"
+"created the token was used.");
+
+#define _CONTEXTVARS_CONTEXTVAR_RESET_METHODDEF \
+ {"reset", (PyCFunction)_contextvars_ContextVar_reset, METH_O, _contextvars_ContextVar_reset__doc__},
+/*[clinic end generated code: output=0c94d4b919500438 input=a9049054013a1b77]*/
diff --git a/contrib/tools/python3/Python/clinic/import.c.h b/contrib/tools/python3/Python/clinic/import.c.h
new file mode 100644
index 00000000000..cb74be6a422
--- /dev/null
+++ b/contrib/tools/python3/Python/clinic/import.c.h
@@ -0,0 +1,651 @@
+/*[clinic input]
+preserve
+[clinic start generated code]*/
+
+#if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE)
+# include "pycore_gc.h" // PyGC_Head
+# include "pycore_runtime.h" // _Py_ID()
+#endif
+
+
+PyDoc_STRVAR(_imp_lock_held__doc__,
+"lock_held($module, /)\n"
+"--\n"
+"\n"
+"Return True if the import lock is currently held, else False.\n"
+"\n"
+"On platforms without threads, return False.");
+
+#define _IMP_LOCK_HELD_METHODDEF \
+ {"lock_held", (PyCFunction)_imp_lock_held, METH_NOARGS, _imp_lock_held__doc__},
+
+static PyObject *
+_imp_lock_held_impl(PyObject *module);
+
+static PyObject *
+_imp_lock_held(PyObject *module, PyObject *Py_UNUSED(ignored))
+{
+ return _imp_lock_held_impl(module);
+}
+
+PyDoc_STRVAR(_imp_acquire_lock__doc__,
+"acquire_lock($module, /)\n"
+"--\n"
+"\n"
+"Acquires the interpreter\'s import lock for the current thread.\n"
+"\n"
+"This lock should be used by import hooks to ensure thread-safety when importing\n"
+"modules. On platforms without threads, this function does nothing.");
+
+#define _IMP_ACQUIRE_LOCK_METHODDEF \
+ {"acquire_lock", (PyCFunction)_imp_acquire_lock, METH_NOARGS, _imp_acquire_lock__doc__},
+
+static PyObject *
+_imp_acquire_lock_impl(PyObject *module);
+
+static PyObject *
+_imp_acquire_lock(PyObject *module, PyObject *Py_UNUSED(ignored))
+{
+ return _imp_acquire_lock_impl(module);
+}
+
+PyDoc_STRVAR(_imp_release_lock__doc__,
+"release_lock($module, /)\n"
+"--\n"
+"\n"
+"Release the interpreter\'s import lock.\n"
+"\n"
+"On platforms without threads, this function does nothing.");
+
+#define _IMP_RELEASE_LOCK_METHODDEF \
+ {"release_lock", (PyCFunction)_imp_release_lock, METH_NOARGS, _imp_release_lock__doc__},
+
+static PyObject *
+_imp_release_lock_impl(PyObject *module);
+
+static PyObject *
+_imp_release_lock(PyObject *module, PyObject *Py_UNUSED(ignored))
+{
+ return _imp_release_lock_impl(module);
+}
+
+PyDoc_STRVAR(_imp__fix_co_filename__doc__,
+"_fix_co_filename($module, code, path, /)\n"
+"--\n"
+"\n"
+"Changes code.co_filename to specify the passed-in file path.\n"
+"\n"
+" code\n"
+" Code object to change.\n"
+" path\n"
+" File path to use.");
+
+#define _IMP__FIX_CO_FILENAME_METHODDEF \
+ {"_fix_co_filename", _PyCFunction_CAST(_imp__fix_co_filename), METH_FASTCALL, _imp__fix_co_filename__doc__},
+
+static PyObject *
+_imp__fix_co_filename_impl(PyObject *module, PyCodeObject *code,
+ PyObject *path);
+
+static PyObject *
+_imp__fix_co_filename(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
+{
+ PyObject *return_value = NULL;
+ PyCodeObject *code;
+ PyObject *path;
+
+ if (!_PyArg_CheckPositional("_fix_co_filename", nargs, 2, 2)) {
+ goto exit;
+ }
+ if (!PyObject_TypeCheck(args[0], &PyCode_Type)) {
+ _PyArg_BadArgument("_fix_co_filename", "argument 1", (&PyCode_Type)->tp_name, args[0]);
+ goto exit;
+ }
+ code = (PyCodeObject *)args[0];
+ if (!PyUnicode_Check(args[1])) {
+ _PyArg_BadArgument("_fix_co_filename", "argument 2", "str", args[1]);
+ goto exit;
+ }
+ if (PyUnicode_READY(args[1]) == -1) {
+ goto exit;
+ }
+ path = args[1];
+ return_value = _imp__fix_co_filename_impl(module, code, path);
+
+exit:
+ return return_value;
+}
+
+PyDoc_STRVAR(_imp_create_builtin__doc__,
+"create_builtin($module, spec, /)\n"
+"--\n"
+"\n"
+"Create an extension module.");
+
+#define _IMP_CREATE_BUILTIN_METHODDEF \
+ {"create_builtin", (PyCFunction)_imp_create_builtin, METH_O, _imp_create_builtin__doc__},
+
+PyDoc_STRVAR(_imp_extension_suffixes__doc__,
+"extension_suffixes($module, /)\n"
+"--\n"
+"\n"
+"Returns the list of file suffixes used to identify extension modules.");
+
+#define _IMP_EXTENSION_SUFFIXES_METHODDEF \
+ {"extension_suffixes", (PyCFunction)_imp_extension_suffixes, METH_NOARGS, _imp_extension_suffixes__doc__},
+
+static PyObject *
+_imp_extension_suffixes_impl(PyObject *module);
+
+static PyObject *
+_imp_extension_suffixes(PyObject *module, PyObject *Py_UNUSED(ignored))
+{
+ return _imp_extension_suffixes_impl(module);
+}
+
+PyDoc_STRVAR(_imp_init_frozen__doc__,
+"init_frozen($module, name, /)\n"
+"--\n"
+"\n"
+"Initializes a frozen module.");
+
+#define _IMP_INIT_FROZEN_METHODDEF \
+ {"init_frozen", (PyCFunction)_imp_init_frozen, METH_O, _imp_init_frozen__doc__},
+
+static PyObject *
+_imp_init_frozen_impl(PyObject *module, PyObject *name);
+
+static PyObject *
+_imp_init_frozen(PyObject *module, PyObject *arg)
+{
+ PyObject *return_value = NULL;
+ PyObject *name;
+
+ if (!PyUnicode_Check(arg)) {
+ _PyArg_BadArgument("init_frozen", "argument", "str", arg);
+ goto exit;
+ }
+ if (PyUnicode_READY(arg) == -1) {
+ goto exit;
+ }
+ name = arg;
+ return_value = _imp_init_frozen_impl(module, name);
+
+exit:
+ return return_value;
+}
+
+PyDoc_STRVAR(_imp_find_frozen__doc__,
+"find_frozen($module, name, /, *, withdata=False)\n"
+"--\n"
+"\n"
+"Return info about the corresponding frozen module (if there is one) or None.\n"
+"\n"
+"The returned info (a 2-tuple):\n"
+"\n"
+" * data the raw marshalled bytes\n"
+" * is_package whether or not it is a package\n"
+" * origname the originally frozen module\'s name, or None if not\n"
+" a stdlib module (this will usually be the same as\n"
+" the module\'s current name)");
+
+#define _IMP_FIND_FROZEN_METHODDEF \
+ {"find_frozen", _PyCFunction_CAST(_imp_find_frozen), METH_FASTCALL|METH_KEYWORDS, _imp_find_frozen__doc__},
+
+static PyObject *
+_imp_find_frozen_impl(PyObject *module, PyObject *name, int withdata);
+
+static PyObject *
+_imp_find_frozen(PyObject *module, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
+{
+ PyObject *return_value = NULL;
+ #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE)
+
+ #define NUM_KEYWORDS 1
+ static struct {
+ PyGC_Head _this_is_not_used;
+ PyObject_VAR_HEAD
+ PyObject *ob_item[NUM_KEYWORDS];
+ } _kwtuple = {
+ .ob_base = PyVarObject_HEAD_INIT(&PyTuple_Type, NUM_KEYWORDS)
+ .ob_item = { &_Py_ID(withdata), },
+ };
+ #undef NUM_KEYWORDS
+ #define KWTUPLE (&_kwtuple.ob_base.ob_base)
+
+ #else // !Py_BUILD_CORE
+ # define KWTUPLE NULL
+ #endif // !Py_BUILD_CORE
+
+ static const char * const _keywords[] = {"", "withdata", NULL};
+ static _PyArg_Parser _parser = {
+ .keywords = _keywords,
+ .fname = "find_frozen",
+ .kwtuple = KWTUPLE,
+ };
+ #undef KWTUPLE
+ PyObject *argsbuf[2];
+ Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 1;
+ PyObject *name;
+ int withdata = 0;
+
+ args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 1, 1, 0, argsbuf);
+ if (!args) {
+ goto exit;
+ }
+ if (!PyUnicode_Check(args[0])) {
+ _PyArg_BadArgument("find_frozen", "argument 1", "str", args[0]);
+ goto exit;
+ }
+ if (PyUnicode_READY(args[0]) == -1) {
+ goto exit;
+ }
+ name = args[0];
+ if (!noptargs) {
+ goto skip_optional_kwonly;
+ }
+ withdata = PyObject_IsTrue(args[1]);
+ if (withdata < 0) {
+ goto exit;
+ }
+skip_optional_kwonly:
+ return_value = _imp_find_frozen_impl(module, name, withdata);
+
+exit:
+ return return_value;
+}
+
+PyDoc_STRVAR(_imp_get_frozen_object__doc__,
+"get_frozen_object($module, name, data=None, /)\n"
+"--\n"
+"\n"
+"Create a code object for a frozen module.");
+
+#define _IMP_GET_FROZEN_OBJECT_METHODDEF \
+ {"get_frozen_object", _PyCFunction_CAST(_imp_get_frozen_object), METH_FASTCALL, _imp_get_frozen_object__doc__},
+
+static PyObject *
+_imp_get_frozen_object_impl(PyObject *module, PyObject *name,
+ PyObject *dataobj);
+
+static PyObject *
+_imp_get_frozen_object(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
+{
+ PyObject *return_value = NULL;
+ PyObject *name;
+ PyObject *dataobj = Py_None;
+
+ if (!_PyArg_CheckPositional("get_frozen_object", nargs, 1, 2)) {
+ goto exit;
+ }
+ if (!PyUnicode_Check(args[0])) {
+ _PyArg_BadArgument("get_frozen_object", "argument 1", "str", args[0]);
+ goto exit;
+ }
+ if (PyUnicode_READY(args[0]) == -1) {
+ goto exit;
+ }
+ name = args[0];
+ if (nargs < 2) {
+ goto skip_optional;
+ }
+ dataobj = args[1];
+skip_optional:
+ return_value = _imp_get_frozen_object_impl(module, name, dataobj);
+
+exit:
+ return return_value;
+}
+
+PyDoc_STRVAR(_imp_is_frozen_package__doc__,
+"is_frozen_package($module, name, /)\n"
+"--\n"
+"\n"
+"Returns True if the module name is of a frozen package.");
+
+#define _IMP_IS_FROZEN_PACKAGE_METHODDEF \
+ {"is_frozen_package", (PyCFunction)_imp_is_frozen_package, METH_O, _imp_is_frozen_package__doc__},
+
+static PyObject *
+_imp_is_frozen_package_impl(PyObject *module, PyObject *name);
+
+static PyObject *
+_imp_is_frozen_package(PyObject *module, PyObject *arg)
+{
+ PyObject *return_value = NULL;
+ PyObject *name;
+
+ if (!PyUnicode_Check(arg)) {
+ _PyArg_BadArgument("is_frozen_package", "argument", "str", arg);
+ goto exit;
+ }
+ if (PyUnicode_READY(arg) == -1) {
+ goto exit;
+ }
+ name = arg;
+ return_value = _imp_is_frozen_package_impl(module, name);
+
+exit:
+ return return_value;
+}
+
+PyDoc_STRVAR(_imp_is_builtin__doc__,
+"is_builtin($module, name, /)\n"
+"--\n"
+"\n"
+"Returns True if the module name corresponds to a built-in module.");
+
+#define _IMP_IS_BUILTIN_METHODDEF \
+ {"is_builtin", (PyCFunction)_imp_is_builtin, METH_O, _imp_is_builtin__doc__},
+
+static PyObject *
+_imp_is_builtin_impl(PyObject *module, PyObject *name);
+
+static PyObject *
+_imp_is_builtin(PyObject *module, PyObject *arg)
+{
+ PyObject *return_value = NULL;
+ PyObject *name;
+
+ if (!PyUnicode_Check(arg)) {
+ _PyArg_BadArgument("is_builtin", "argument", "str", arg);
+ goto exit;
+ }
+ if (PyUnicode_READY(arg) == -1) {
+ goto exit;
+ }
+ name = arg;
+ return_value = _imp_is_builtin_impl(module, name);
+
+exit:
+ return return_value;
+}
+
+PyDoc_STRVAR(_imp_is_frozen__doc__,
+"is_frozen($module, name, /)\n"
+"--\n"
+"\n"
+"Returns True if the module name corresponds to a frozen module.");
+
+#define _IMP_IS_FROZEN_METHODDEF \
+ {"is_frozen", (PyCFunction)_imp_is_frozen, METH_O, _imp_is_frozen__doc__},
+
+static PyObject *
+_imp_is_frozen_impl(PyObject *module, PyObject *name);
+
+static PyObject *
+_imp_is_frozen(PyObject *module, PyObject *arg)
+{
+ PyObject *return_value = NULL;
+ PyObject *name;
+
+ if (!PyUnicode_Check(arg)) {
+ _PyArg_BadArgument("is_frozen", "argument", "str", arg);
+ goto exit;
+ }
+ if (PyUnicode_READY(arg) == -1) {
+ goto exit;
+ }
+ name = arg;
+ return_value = _imp_is_frozen_impl(module, name);
+
+exit:
+ return return_value;
+}
+
+PyDoc_STRVAR(_imp__frozen_module_names__doc__,
+"_frozen_module_names($module, /)\n"
+"--\n"
+"\n"
+"Returns the list of available frozen modules.");
+
+#define _IMP__FROZEN_MODULE_NAMES_METHODDEF \
+ {"_frozen_module_names", (PyCFunction)_imp__frozen_module_names, METH_NOARGS, _imp__frozen_module_names__doc__},
+
+static PyObject *
+_imp__frozen_module_names_impl(PyObject *module);
+
+static PyObject *
+_imp__frozen_module_names(PyObject *module, PyObject *Py_UNUSED(ignored))
+{
+ return _imp__frozen_module_names_impl(module);
+}
+
+PyDoc_STRVAR(_imp__override_frozen_modules_for_tests__doc__,
+"_override_frozen_modules_for_tests($module, override, /)\n"
+"--\n"
+"\n"
+"(internal-only) Override PyConfig.use_frozen_modules.\n"
+"\n"
+"(-1: \"off\", 1: \"on\", 0: no override)\n"
+"See frozen_modules() in Lib/test/support/import_helper.py.");
+
+#define _IMP__OVERRIDE_FROZEN_MODULES_FOR_TESTS_METHODDEF \
+ {"_override_frozen_modules_for_tests", (PyCFunction)_imp__override_frozen_modules_for_tests, METH_O, _imp__override_frozen_modules_for_tests__doc__},
+
+static PyObject *
+_imp__override_frozen_modules_for_tests_impl(PyObject *module, int override);
+
+static PyObject *
+_imp__override_frozen_modules_for_tests(PyObject *module, PyObject *arg)
+{
+ PyObject *return_value = NULL;
+ int override;
+
+ override = _PyLong_AsInt(arg);
+ if (override == -1 && PyErr_Occurred()) {
+ goto exit;
+ }
+ return_value = _imp__override_frozen_modules_for_tests_impl(module, override);
+
+exit:
+ return return_value;
+}
+
+PyDoc_STRVAR(_imp__override_multi_interp_extensions_check__doc__,
+"_override_multi_interp_extensions_check($module, override, /)\n"
+"--\n"
+"\n"
+"(internal-only) Override PyInterpreterConfig.check_multi_interp_extensions.\n"
+"\n"
+"(-1: \"never\", 1: \"always\", 0: no override)");
+
+#define _IMP__OVERRIDE_MULTI_INTERP_EXTENSIONS_CHECK_METHODDEF \
+ {"_override_multi_interp_extensions_check", (PyCFunction)_imp__override_multi_interp_extensions_check, METH_O, _imp__override_multi_interp_extensions_check__doc__},
+
+static PyObject *
+_imp__override_multi_interp_extensions_check_impl(PyObject *module,
+ int override);
+
+static PyObject *
+_imp__override_multi_interp_extensions_check(PyObject *module, PyObject *arg)
+{
+ PyObject *return_value = NULL;
+ int override;
+
+ override = _PyLong_AsInt(arg);
+ if (override == -1 && PyErr_Occurred()) {
+ goto exit;
+ }
+ return_value = _imp__override_multi_interp_extensions_check_impl(module, override);
+
+exit:
+ return return_value;
+}
+
+#if defined(HAVE_DYNAMIC_LOADING)
+
+PyDoc_STRVAR(_imp_create_dynamic__doc__,
+"create_dynamic($module, spec, file=<unrepresentable>, /)\n"
+"--\n"
+"\n"
+"Create an extension module.");
+
+#define _IMP_CREATE_DYNAMIC_METHODDEF \
+ {"create_dynamic", _PyCFunction_CAST(_imp_create_dynamic), METH_FASTCALL, _imp_create_dynamic__doc__},
+
+static PyObject *
+_imp_create_dynamic_impl(PyObject *module, PyObject *spec, PyObject *file);
+
+static PyObject *
+_imp_create_dynamic(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
+{
+ PyObject *return_value = NULL;
+ PyObject *spec;
+ PyObject *file = NULL;
+
+ if (!_PyArg_CheckPositional("create_dynamic", nargs, 1, 2)) {
+ goto exit;
+ }
+ spec = args[0];
+ if (nargs < 2) {
+ goto skip_optional;
+ }
+ file = args[1];
+skip_optional:
+ return_value = _imp_create_dynamic_impl(module, spec, file);
+
+exit:
+ return return_value;
+}
+
+#endif /* defined(HAVE_DYNAMIC_LOADING) */
+
+#if defined(HAVE_DYNAMIC_LOADING)
+
+PyDoc_STRVAR(_imp_exec_dynamic__doc__,
+"exec_dynamic($module, mod, /)\n"
+"--\n"
+"\n"
+"Initialize an extension module.");
+
+#define _IMP_EXEC_DYNAMIC_METHODDEF \
+ {"exec_dynamic", (PyCFunction)_imp_exec_dynamic, METH_O, _imp_exec_dynamic__doc__},
+
+static int
+_imp_exec_dynamic_impl(PyObject *module, PyObject *mod);
+
+static PyObject *
+_imp_exec_dynamic(PyObject *module, PyObject *mod)
+{
+ PyObject *return_value = NULL;
+ int _return_value;
+
+ _return_value = _imp_exec_dynamic_impl(module, mod);
+ if ((_return_value == -1) && PyErr_Occurred()) {
+ goto exit;
+ }
+ return_value = PyLong_FromLong((long)_return_value);
+
+exit:
+ return return_value;
+}
+
+#endif /* defined(HAVE_DYNAMIC_LOADING) */
+
+PyDoc_STRVAR(_imp_exec_builtin__doc__,
+"exec_builtin($module, mod, /)\n"
+"--\n"
+"\n"
+"Initialize a built-in module.");
+
+#define _IMP_EXEC_BUILTIN_METHODDEF \
+ {"exec_builtin", (PyCFunction)_imp_exec_builtin, METH_O, _imp_exec_builtin__doc__},
+
+static int
+_imp_exec_builtin_impl(PyObject *module, PyObject *mod);
+
+static PyObject *
+_imp_exec_builtin(PyObject *module, PyObject *mod)
+{
+ PyObject *return_value = NULL;
+ int _return_value;
+
+ _return_value = _imp_exec_builtin_impl(module, mod);
+ if ((_return_value == -1) && PyErr_Occurred()) {
+ goto exit;
+ }
+ return_value = PyLong_FromLong((long)_return_value);
+
+exit:
+ return return_value;
+}
+
+PyDoc_STRVAR(_imp_source_hash__doc__,
+"source_hash($module, /, key, source)\n"
+"--\n"
+"\n");
+
+#define _IMP_SOURCE_HASH_METHODDEF \
+ {"source_hash", _PyCFunction_CAST(_imp_source_hash), METH_FASTCALL|METH_KEYWORDS, _imp_source_hash__doc__},
+
+static PyObject *
+_imp_source_hash_impl(PyObject *module, long key, Py_buffer *source);
+
+static PyObject *
+_imp_source_hash(PyObject *module, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
+{
+ PyObject *return_value = NULL;
+ #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE)
+
+ #define NUM_KEYWORDS 2
+ static struct {
+ PyGC_Head _this_is_not_used;
+ PyObject_VAR_HEAD
+ PyObject *ob_item[NUM_KEYWORDS];
+ } _kwtuple = {
+ .ob_base = PyVarObject_HEAD_INIT(&PyTuple_Type, NUM_KEYWORDS)
+ .ob_item = { &_Py_ID(key), &_Py_ID(source), },
+ };
+ #undef NUM_KEYWORDS
+ #define KWTUPLE (&_kwtuple.ob_base.ob_base)
+
+ #else // !Py_BUILD_CORE
+ # define KWTUPLE NULL
+ #endif // !Py_BUILD_CORE
+
+ static const char * const _keywords[] = {"key", "source", NULL};
+ static _PyArg_Parser _parser = {
+ .keywords = _keywords,
+ .fname = "source_hash",
+ .kwtuple = KWTUPLE,
+ };
+ #undef KWTUPLE
+ PyObject *argsbuf[2];
+ long key;
+ Py_buffer source = {NULL, NULL};
+
+ args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 2, 2, 0, argsbuf);
+ if (!args) {
+ goto exit;
+ }
+ key = PyLong_AsLong(args[0]);
+ if (key == -1 && PyErr_Occurred()) {
+ goto exit;
+ }
+ if (PyObject_GetBuffer(args[1], &source, PyBUF_SIMPLE) != 0) {
+ goto exit;
+ }
+ if (!PyBuffer_IsContiguous(&source, 'C')) {
+ _PyArg_BadArgument("source_hash", "argument 'source'", "contiguous buffer", args[1]);
+ goto exit;
+ }
+ return_value = _imp_source_hash_impl(module, key, &source);
+
+exit:
+ /* Cleanup for source */
+ if (source.obj) {
+ PyBuffer_Release(&source);
+ }
+
+ return return_value;
+}
+
+#ifndef _IMP_CREATE_DYNAMIC_METHODDEF
+ #define _IMP_CREATE_DYNAMIC_METHODDEF
+#endif /* !defined(_IMP_CREATE_DYNAMIC_METHODDEF) */
+
+#ifndef _IMP_EXEC_DYNAMIC_METHODDEF
+ #define _IMP_EXEC_DYNAMIC_METHODDEF
+#endif /* !defined(_IMP_EXEC_DYNAMIC_METHODDEF) */
+/*[clinic end generated code: output=b18d46e0036eff49 input=a9049054013a1b77]*/
diff --git a/contrib/tools/python3/Python/clinic/instrumentation.c.h b/contrib/tools/python3/Python/clinic/instrumentation.c.h
new file mode 100644
index 00000000000..cf3984ca24b
--- /dev/null
+++ b/contrib/tools/python3/Python/clinic/instrumentation.c.h
@@ -0,0 +1,311 @@
+/*[clinic input]
+preserve
+[clinic start generated code]*/
+
+#if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE)
+# include "pycore_gc.h" // PyGC_Head
+# include "pycore_runtime.h" // _Py_ID()
+#endif
+
+
+PyDoc_STRVAR(monitoring_use_tool_id__doc__,
+"use_tool_id($module, tool_id, name, /)\n"
+"--\n"
+"\n");
+
+#define MONITORING_USE_TOOL_ID_METHODDEF \
+ {"use_tool_id", _PyCFunction_CAST(monitoring_use_tool_id), METH_FASTCALL, monitoring_use_tool_id__doc__},
+
+static PyObject *
+monitoring_use_tool_id_impl(PyObject *module, int tool_id, PyObject *name);
+
+static PyObject *
+monitoring_use_tool_id(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
+{
+ PyObject *return_value = NULL;
+ int tool_id;
+ PyObject *name;
+
+ if (!_PyArg_CheckPositional("use_tool_id", nargs, 2, 2)) {
+ goto exit;
+ }
+ tool_id = _PyLong_AsInt(args[0]);
+ if (tool_id == -1 && PyErr_Occurred()) {
+ goto exit;
+ }
+ name = args[1];
+ return_value = monitoring_use_tool_id_impl(module, tool_id, name);
+
+exit:
+ return return_value;
+}
+
+PyDoc_STRVAR(monitoring_free_tool_id__doc__,
+"free_tool_id($module, tool_id, /)\n"
+"--\n"
+"\n");
+
+#define MONITORING_FREE_TOOL_ID_METHODDEF \
+ {"free_tool_id", (PyCFunction)monitoring_free_tool_id, METH_O, monitoring_free_tool_id__doc__},
+
+static PyObject *
+monitoring_free_tool_id_impl(PyObject *module, int tool_id);
+
+static PyObject *
+monitoring_free_tool_id(PyObject *module, PyObject *arg)
+{
+ PyObject *return_value = NULL;
+ int tool_id;
+
+ tool_id = _PyLong_AsInt(arg);
+ if (tool_id == -1 && PyErr_Occurred()) {
+ goto exit;
+ }
+ return_value = monitoring_free_tool_id_impl(module, tool_id);
+
+exit:
+ return return_value;
+}
+
+PyDoc_STRVAR(monitoring_get_tool__doc__,
+"get_tool($module, tool_id, /)\n"
+"--\n"
+"\n");
+
+#define MONITORING_GET_TOOL_METHODDEF \
+ {"get_tool", (PyCFunction)monitoring_get_tool, METH_O, monitoring_get_tool__doc__},
+
+static PyObject *
+monitoring_get_tool_impl(PyObject *module, int tool_id);
+
+static PyObject *
+monitoring_get_tool(PyObject *module, PyObject *arg)
+{
+ PyObject *return_value = NULL;
+ int tool_id;
+
+ tool_id = _PyLong_AsInt(arg);
+ if (tool_id == -1 && PyErr_Occurred()) {
+ goto exit;
+ }
+ return_value = monitoring_get_tool_impl(module, tool_id);
+
+exit:
+ return return_value;
+}
+
+PyDoc_STRVAR(monitoring_register_callback__doc__,
+"register_callback($module, tool_id, event, func, /)\n"
+"--\n"
+"\n");
+
+#define MONITORING_REGISTER_CALLBACK_METHODDEF \
+ {"register_callback", _PyCFunction_CAST(monitoring_register_callback), METH_FASTCALL, monitoring_register_callback__doc__},
+
+static PyObject *
+monitoring_register_callback_impl(PyObject *module, int tool_id, int event,
+ PyObject *func);
+
+static PyObject *
+monitoring_register_callback(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
+{
+ PyObject *return_value = NULL;
+ int tool_id;
+ int event;
+ PyObject *func;
+
+ if (!_PyArg_CheckPositional("register_callback", nargs, 3, 3)) {
+ goto exit;
+ }
+ tool_id = _PyLong_AsInt(args[0]);
+ if (tool_id == -1 && PyErr_Occurred()) {
+ goto exit;
+ }
+ event = _PyLong_AsInt(args[1]);
+ if (event == -1 && PyErr_Occurred()) {
+ goto exit;
+ }
+ func = args[2];
+ return_value = monitoring_register_callback_impl(module, tool_id, event, func);
+
+exit:
+ return return_value;
+}
+
+PyDoc_STRVAR(monitoring_get_events__doc__,
+"get_events($module, tool_id, /)\n"
+"--\n"
+"\n");
+
+#define MONITORING_GET_EVENTS_METHODDEF \
+ {"get_events", (PyCFunction)monitoring_get_events, METH_O, monitoring_get_events__doc__},
+
+static int
+monitoring_get_events_impl(PyObject *module, int tool_id);
+
+static PyObject *
+monitoring_get_events(PyObject *module, PyObject *arg)
+{
+ PyObject *return_value = NULL;
+ int tool_id;
+ int _return_value;
+
+ tool_id = _PyLong_AsInt(arg);
+ if (tool_id == -1 && PyErr_Occurred()) {
+ goto exit;
+ }
+ _return_value = monitoring_get_events_impl(module, tool_id);
+ if ((_return_value == -1) && PyErr_Occurred()) {
+ goto exit;
+ }
+ return_value = PyLong_FromLong((long)_return_value);
+
+exit:
+ return return_value;
+}
+
+PyDoc_STRVAR(monitoring_set_events__doc__,
+"set_events($module, tool_id, event_set, /)\n"
+"--\n"
+"\n");
+
+#define MONITORING_SET_EVENTS_METHODDEF \
+ {"set_events", _PyCFunction_CAST(monitoring_set_events), METH_FASTCALL, monitoring_set_events__doc__},
+
+static PyObject *
+monitoring_set_events_impl(PyObject *module, int tool_id, int event_set);
+
+static PyObject *
+monitoring_set_events(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
+{
+ PyObject *return_value = NULL;
+ int tool_id;
+ int event_set;
+
+ if (!_PyArg_CheckPositional("set_events", nargs, 2, 2)) {
+ goto exit;
+ }
+ tool_id = _PyLong_AsInt(args[0]);
+ if (tool_id == -1 && PyErr_Occurred()) {
+ goto exit;
+ }
+ event_set = _PyLong_AsInt(args[1]);
+ if (event_set == -1 && PyErr_Occurred()) {
+ goto exit;
+ }
+ return_value = monitoring_set_events_impl(module, tool_id, event_set);
+
+exit:
+ return return_value;
+}
+
+PyDoc_STRVAR(monitoring_get_local_events__doc__,
+"get_local_events($module, tool_id, code, /)\n"
+"--\n"
+"\n");
+
+#define MONITORING_GET_LOCAL_EVENTS_METHODDEF \
+ {"get_local_events", _PyCFunction_CAST(monitoring_get_local_events), METH_FASTCALL, monitoring_get_local_events__doc__},
+
+static int
+monitoring_get_local_events_impl(PyObject *module, int tool_id,
+ PyObject *code);
+
+static PyObject *
+monitoring_get_local_events(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
+{
+ PyObject *return_value = NULL;
+ int tool_id;
+ PyObject *code;
+ int _return_value;
+
+ if (!_PyArg_CheckPositional("get_local_events", nargs, 2, 2)) {
+ goto exit;
+ }
+ tool_id = _PyLong_AsInt(args[0]);
+ if (tool_id == -1 && PyErr_Occurred()) {
+ goto exit;
+ }
+ code = args[1];
+ _return_value = monitoring_get_local_events_impl(module, tool_id, code);
+ if ((_return_value == -1) && PyErr_Occurred()) {
+ goto exit;
+ }
+ return_value = PyLong_FromLong((long)_return_value);
+
+exit:
+ return return_value;
+}
+
+PyDoc_STRVAR(monitoring_set_local_events__doc__,
+"set_local_events($module, tool_id, code, event_set, /)\n"
+"--\n"
+"\n");
+
+#define MONITORING_SET_LOCAL_EVENTS_METHODDEF \
+ {"set_local_events", _PyCFunction_CAST(monitoring_set_local_events), METH_FASTCALL, monitoring_set_local_events__doc__},
+
+static PyObject *
+monitoring_set_local_events_impl(PyObject *module, int tool_id,
+ PyObject *code, int event_set);
+
+static PyObject *
+monitoring_set_local_events(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
+{
+ PyObject *return_value = NULL;
+ int tool_id;
+ PyObject *code;
+ int event_set;
+
+ if (!_PyArg_CheckPositional("set_local_events", nargs, 3, 3)) {
+ goto exit;
+ }
+ tool_id = _PyLong_AsInt(args[0]);
+ if (tool_id == -1 && PyErr_Occurred()) {
+ goto exit;
+ }
+ code = args[1];
+ event_set = _PyLong_AsInt(args[2]);
+ if (event_set == -1 && PyErr_Occurred()) {
+ goto exit;
+ }
+ return_value = monitoring_set_local_events_impl(module, tool_id, code, event_set);
+
+exit:
+ return return_value;
+}
+
+PyDoc_STRVAR(monitoring_restart_events__doc__,
+"restart_events($module, /)\n"
+"--\n"
+"\n");
+
+#define MONITORING_RESTART_EVENTS_METHODDEF \
+ {"restart_events", (PyCFunction)monitoring_restart_events, METH_NOARGS, monitoring_restart_events__doc__},
+
+static PyObject *
+monitoring_restart_events_impl(PyObject *module);
+
+static PyObject *
+monitoring_restart_events(PyObject *module, PyObject *Py_UNUSED(ignored))
+{
+ return monitoring_restart_events_impl(module);
+}
+
+PyDoc_STRVAR(monitoring__all_events__doc__,
+"_all_events($module, /)\n"
+"--\n"
+"\n");
+
+#define MONITORING__ALL_EVENTS_METHODDEF \
+ {"_all_events", (PyCFunction)monitoring__all_events, METH_NOARGS, monitoring__all_events__doc__},
+
+static PyObject *
+monitoring__all_events_impl(PyObject *module);
+
+static PyObject *
+monitoring__all_events(PyObject *module, PyObject *Py_UNUSED(ignored))
+{
+ return monitoring__all_events_impl(module);
+}
+/*[clinic end generated code: output=11cc0803875b3ffa input=a9049054013a1b77]*/
diff --git a/contrib/tools/python3/Python/clinic/marshal.c.h b/contrib/tools/python3/Python/clinic/marshal.c.h
new file mode 100644
index 00000000000..a593b980544
--- /dev/null
+++ b/contrib/tools/python3/Python/clinic/marshal.c.h
@@ -0,0 +1,164 @@
+/*[clinic input]
+preserve
+[clinic start generated code]*/
+
+#if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE)
+# include "pycore_gc.h" // PyGC_Head
+# include "pycore_runtime.h" // _Py_ID()
+#endif
+
+
+PyDoc_STRVAR(marshal_dump__doc__,
+"dump($module, value, file, version=version, /)\n"
+"--\n"
+"\n"
+"Write the value on the open file.\n"
+"\n"
+" value\n"
+" Must be a supported type.\n"
+" file\n"
+" Must be a writeable binary file.\n"
+" version\n"
+" Indicates the data format that dump should use.\n"
+"\n"
+"If the value has (or contains an object that has) an unsupported type, a\n"
+"ValueError exception is raised - but garbage data will also be written\n"
+"to the file. The object will not be properly read back by load().");
+
+#define MARSHAL_DUMP_METHODDEF \
+ {"dump", _PyCFunction_CAST(marshal_dump), METH_FASTCALL, marshal_dump__doc__},
+
+static PyObject *
+marshal_dump_impl(PyObject *module, PyObject *value, PyObject *file,
+ int version);
+
+static PyObject *
+marshal_dump(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
+{
+ PyObject *return_value = NULL;
+ PyObject *value;
+ PyObject *file;
+ int version = Py_MARSHAL_VERSION;
+
+ if (!_PyArg_CheckPositional("dump", nargs, 2, 3)) {
+ goto exit;
+ }
+ value = args[0];
+ file = args[1];
+ if (nargs < 3) {
+ goto skip_optional;
+ }
+ version = _PyLong_AsInt(args[2]);
+ if (version == -1 && PyErr_Occurred()) {
+ goto exit;
+ }
+skip_optional:
+ return_value = marshal_dump_impl(module, value, file, version);
+
+exit:
+ return return_value;
+}
+
+PyDoc_STRVAR(marshal_load__doc__,
+"load($module, file, /)\n"
+"--\n"
+"\n"
+"Read one value from the open file and return it.\n"
+"\n"
+" file\n"
+" Must be readable binary file.\n"
+"\n"
+"If no valid value is read (e.g. because the data has a different Python\n"
+"version\'s incompatible marshal format), raise EOFError, ValueError or\n"
+"TypeError.\n"
+"\n"
+"Note: If an object containing an unsupported type was marshalled with\n"
+"dump(), load() will substitute None for the unmarshallable type.");
+
+#define MARSHAL_LOAD_METHODDEF \
+ {"load", (PyCFunction)marshal_load, METH_O, marshal_load__doc__},
+
+PyDoc_STRVAR(marshal_dumps__doc__,
+"dumps($module, value, version=version, /)\n"
+"--\n"
+"\n"
+"Return the bytes object that would be written to a file by dump(value, file).\n"
+"\n"
+" value\n"
+" Must be a supported type.\n"
+" version\n"
+" Indicates the data format that dumps should use.\n"
+"\n"
+"Raise a ValueError exception if value has (or contains an object that has) an\n"
+"unsupported type.");
+
+#define MARSHAL_DUMPS_METHODDEF \
+ {"dumps", _PyCFunction_CAST(marshal_dumps), METH_FASTCALL, marshal_dumps__doc__},
+
+static PyObject *
+marshal_dumps_impl(PyObject *module, PyObject *value, int version);
+
+static PyObject *
+marshal_dumps(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
+{
+ PyObject *return_value = NULL;
+ PyObject *value;
+ int version = Py_MARSHAL_VERSION;
+
+ if (!_PyArg_CheckPositional("dumps", nargs, 1, 2)) {
+ goto exit;
+ }
+ value = args[0];
+ if (nargs < 2) {
+ goto skip_optional;
+ }
+ version = _PyLong_AsInt(args[1]);
+ if (version == -1 && PyErr_Occurred()) {
+ goto exit;
+ }
+skip_optional:
+ return_value = marshal_dumps_impl(module, value, version);
+
+exit:
+ return return_value;
+}
+
+PyDoc_STRVAR(marshal_loads__doc__,
+"loads($module, bytes, /)\n"
+"--\n"
+"\n"
+"Convert the bytes-like object to a value.\n"
+"\n"
+"If no valid value is found, raise EOFError, ValueError or TypeError. Extra\n"
+"bytes in the input are ignored.");
+
+#define MARSHAL_LOADS_METHODDEF \
+ {"loads", (PyCFunction)marshal_loads, METH_O, marshal_loads__doc__},
+
+static PyObject *
+marshal_loads_impl(PyObject *module, Py_buffer *bytes);
+
+static PyObject *
+marshal_loads(PyObject *module, PyObject *arg)
+{
+ PyObject *return_value = NULL;
+ Py_buffer bytes = {NULL, NULL};
+
+ if (PyObject_GetBuffer(arg, &bytes, PyBUF_SIMPLE) != 0) {
+ goto exit;
+ }
+ if (!PyBuffer_IsContiguous(&bytes, 'C')) {
+ _PyArg_BadArgument("loads", "argument", "contiguous buffer", arg);
+ goto exit;
+ }
+ return_value = marshal_loads_impl(module, &bytes);
+
+exit:
+ /* Cleanup for bytes */
+ if (bytes.obj) {
+ PyBuffer_Release(&bytes);
+ }
+
+ return return_value;
+}
+/*[clinic end generated code: output=12082d61d2942473 input=a9049054013a1b77]*/
diff --git a/contrib/tools/python3/Python/clinic/sysmodule.c.h b/contrib/tools/python3/Python/clinic/sysmodule.c.h
new file mode 100644
index 00000000000..7a7c188bccc
--- /dev/null
+++ b/contrib/tools/python3/Python/clinic/sysmodule.c.h
@@ -0,0 +1,1418 @@
+/*[clinic input]
+preserve
+[clinic start generated code]*/
+
+#if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE)
+# include "pycore_gc.h" // PyGC_Head
+# include "pycore_runtime.h" // _Py_ID()
+#endif
+
+
+PyDoc_STRVAR(sys_addaudithook__doc__,
+"addaudithook($module, /, hook)\n"
+"--\n"
+"\n"
+"Adds a new audit hook callback.");
+
+#define SYS_ADDAUDITHOOK_METHODDEF \
+ {"addaudithook", _PyCFunction_CAST(sys_addaudithook), METH_FASTCALL|METH_KEYWORDS, sys_addaudithook__doc__},
+
+static PyObject *
+sys_addaudithook_impl(PyObject *module, PyObject *hook);
+
+static PyObject *
+sys_addaudithook(PyObject *module, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
+{
+ PyObject *return_value = NULL;
+ #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE)
+
+ #define NUM_KEYWORDS 1
+ static struct {
+ PyGC_Head _this_is_not_used;
+ PyObject_VAR_HEAD
+ PyObject *ob_item[NUM_KEYWORDS];
+ } _kwtuple = {
+ .ob_base = PyVarObject_HEAD_INIT(&PyTuple_Type, NUM_KEYWORDS)
+ .ob_item = { &_Py_ID(hook), },
+ };
+ #undef NUM_KEYWORDS
+ #define KWTUPLE (&_kwtuple.ob_base.ob_base)
+
+ #else // !Py_BUILD_CORE
+ # define KWTUPLE NULL
+ #endif // !Py_BUILD_CORE
+
+ static const char * const _keywords[] = {"hook", NULL};
+ static _PyArg_Parser _parser = {
+ .keywords = _keywords,
+ .fname = "addaudithook",
+ .kwtuple = KWTUPLE,
+ };
+ #undef KWTUPLE
+ PyObject *argsbuf[1];
+ PyObject *hook;
+
+ args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 1, 1, 0, argsbuf);
+ if (!args) {
+ goto exit;
+ }
+ hook = args[0];
+ return_value = sys_addaudithook_impl(module, hook);
+
+exit:
+ return return_value;
+}
+
+PyDoc_STRVAR(sys_displayhook__doc__,
+"displayhook($module, object, /)\n"
+"--\n"
+"\n"
+"Print an object to sys.stdout and also save it in builtins._");
+
+#define SYS_DISPLAYHOOK_METHODDEF \
+ {"displayhook", (PyCFunction)sys_displayhook, METH_O, sys_displayhook__doc__},
+
+PyDoc_STRVAR(sys_excepthook__doc__,
+"excepthook($module, exctype, value, traceback, /)\n"
+"--\n"
+"\n"
+"Handle an exception by displaying it with a traceback on sys.stderr.");
+
+#define SYS_EXCEPTHOOK_METHODDEF \
+ {"excepthook", _PyCFunction_CAST(sys_excepthook), METH_FASTCALL, sys_excepthook__doc__},
+
+static PyObject *
+sys_excepthook_impl(PyObject *module, PyObject *exctype, PyObject *value,
+ PyObject *traceback);
+
+static PyObject *
+sys_excepthook(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
+{
+ PyObject *return_value = NULL;
+ PyObject *exctype;
+ PyObject *value;
+ PyObject *traceback;
+
+ if (!_PyArg_CheckPositional("excepthook", nargs, 3, 3)) {
+ goto exit;
+ }
+ exctype = args[0];
+ value = args[1];
+ traceback = args[2];
+ return_value = sys_excepthook_impl(module, exctype, value, traceback);
+
+exit:
+ return return_value;
+}
+
+PyDoc_STRVAR(sys_exception__doc__,
+"exception($module, /)\n"
+"--\n"
+"\n"
+"Return the current exception.\n"
+"\n"
+"Return the most recent exception caught by an except clause\n"
+"in the current stack frame or in an older stack frame, or None\n"
+"if no such exception exists.");
+
+#define SYS_EXCEPTION_METHODDEF \
+ {"exception", (PyCFunction)sys_exception, METH_NOARGS, sys_exception__doc__},
+
+static PyObject *
+sys_exception_impl(PyObject *module);
+
+static PyObject *
+sys_exception(PyObject *module, PyObject *Py_UNUSED(ignored))
+{
+ return sys_exception_impl(module);
+}
+
+PyDoc_STRVAR(sys_exc_info__doc__,
+"exc_info($module, /)\n"
+"--\n"
+"\n"
+"Return current exception information: (type, value, traceback).\n"
+"\n"
+"Return information about the most recent exception caught by an except\n"
+"clause in the current stack frame or in an older stack frame.");
+
+#define SYS_EXC_INFO_METHODDEF \
+ {"exc_info", (PyCFunction)sys_exc_info, METH_NOARGS, sys_exc_info__doc__},
+
+static PyObject *
+sys_exc_info_impl(PyObject *module);
+
+static PyObject *
+sys_exc_info(PyObject *module, PyObject *Py_UNUSED(ignored))
+{
+ return sys_exc_info_impl(module);
+}
+
+PyDoc_STRVAR(sys_unraisablehook__doc__,
+"unraisablehook($module, unraisable, /)\n"
+"--\n"
+"\n"
+"Handle an unraisable exception.\n"
+"\n"
+"The unraisable argument has the following attributes:\n"
+"\n"
+"* exc_type: Exception type.\n"
+"* exc_value: Exception value, can be None.\n"
+"* exc_traceback: Exception traceback, can be None.\n"
+"* err_msg: Error message, can be None.\n"
+"* object: Object causing the exception, can be None.");
+
+#define SYS_UNRAISABLEHOOK_METHODDEF \
+ {"unraisablehook", (PyCFunction)sys_unraisablehook, METH_O, sys_unraisablehook__doc__},
+
+PyDoc_STRVAR(sys_exit__doc__,
+"exit($module, status=None, /)\n"
+"--\n"
+"\n"
+"Exit the interpreter by raising SystemExit(status).\n"
+"\n"
+"If the status is omitted or None, it defaults to zero (i.e., success).\n"
+"If the status is an integer, it will be used as the system exit status.\n"
+"If it is another kind of object, it will be printed and the system\n"
+"exit status will be one (i.e., failure).");
+
+#define SYS_EXIT_METHODDEF \
+ {"exit", _PyCFunction_CAST(sys_exit), METH_FASTCALL, sys_exit__doc__},
+
+static PyObject *
+sys_exit_impl(PyObject *module, PyObject *status);
+
+static PyObject *
+sys_exit(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
+{
+ PyObject *return_value = NULL;
+ PyObject *status = Py_None;
+
+ if (!_PyArg_CheckPositional("exit", nargs, 0, 1)) {
+ goto exit;
+ }
+ if (nargs < 1) {
+ goto skip_optional;
+ }
+ status = args[0];
+skip_optional:
+ return_value = sys_exit_impl(module, status);
+
+exit:
+ return return_value;
+}
+
+PyDoc_STRVAR(sys_getdefaultencoding__doc__,
+"getdefaultencoding($module, /)\n"
+"--\n"
+"\n"
+"Return the current default encoding used by the Unicode implementation.");
+
+#define SYS_GETDEFAULTENCODING_METHODDEF \
+ {"getdefaultencoding", (PyCFunction)sys_getdefaultencoding, METH_NOARGS, sys_getdefaultencoding__doc__},
+
+static PyObject *
+sys_getdefaultencoding_impl(PyObject *module);
+
+static PyObject *
+sys_getdefaultencoding(PyObject *module, PyObject *Py_UNUSED(ignored))
+{
+ return sys_getdefaultencoding_impl(module);
+}
+
+PyDoc_STRVAR(sys_getfilesystemencoding__doc__,
+"getfilesystemencoding($module, /)\n"
+"--\n"
+"\n"
+"Return the encoding used to convert Unicode filenames to OS filenames.");
+
+#define SYS_GETFILESYSTEMENCODING_METHODDEF \
+ {"getfilesystemencoding", (PyCFunction)sys_getfilesystemencoding, METH_NOARGS, sys_getfilesystemencoding__doc__},
+
+static PyObject *
+sys_getfilesystemencoding_impl(PyObject *module);
+
+static PyObject *
+sys_getfilesystemencoding(PyObject *module, PyObject *Py_UNUSED(ignored))
+{
+ return sys_getfilesystemencoding_impl(module);
+}
+
+PyDoc_STRVAR(sys_getfilesystemencodeerrors__doc__,
+"getfilesystemencodeerrors($module, /)\n"
+"--\n"
+"\n"
+"Return the error mode used Unicode to OS filename conversion.");
+
+#define SYS_GETFILESYSTEMENCODEERRORS_METHODDEF \
+ {"getfilesystemencodeerrors", (PyCFunction)sys_getfilesystemencodeerrors, METH_NOARGS, sys_getfilesystemencodeerrors__doc__},
+
+static PyObject *
+sys_getfilesystemencodeerrors_impl(PyObject *module);
+
+static PyObject *
+sys_getfilesystemencodeerrors(PyObject *module, PyObject *Py_UNUSED(ignored))
+{
+ return sys_getfilesystemencodeerrors_impl(module);
+}
+
+PyDoc_STRVAR(sys_intern__doc__,
+"intern($module, string, /)\n"
+"--\n"
+"\n"
+"``Intern\'\' the given string.\n"
+"\n"
+"This enters the string in the (global) table of interned strings whose\n"
+"purpose is to speed up dictionary lookups. Return the string itself or\n"
+"the previously interned string object with the same value.");
+
+#define SYS_INTERN_METHODDEF \
+ {"intern", (PyCFunction)sys_intern, METH_O, sys_intern__doc__},
+
+static PyObject *
+sys_intern_impl(PyObject *module, PyObject *s);
+
+static PyObject *
+sys_intern(PyObject *module, PyObject *arg)
+{
+ PyObject *return_value = NULL;
+ PyObject *s;
+
+ if (!PyUnicode_Check(arg)) {
+ _PyArg_BadArgument("intern", "argument", "str", arg);
+ goto exit;
+ }
+ if (PyUnicode_READY(arg) == -1) {
+ goto exit;
+ }
+ s = arg;
+ return_value = sys_intern_impl(module, s);
+
+exit:
+ return return_value;
+}
+
+PyDoc_STRVAR(sys__settraceallthreads__doc__,
+"_settraceallthreads($module, arg, /)\n"
+"--\n"
+"\n"
+"Set the global debug tracing function in all running threads belonging to the current interpreter.\n"
+"\n"
+"It will be called on each function call. See the debugger chapter\n"
+"in the library manual.");
+
+#define SYS__SETTRACEALLTHREADS_METHODDEF \
+ {"_settraceallthreads", (PyCFunction)sys__settraceallthreads, METH_O, sys__settraceallthreads__doc__},
+
+PyDoc_STRVAR(sys_gettrace__doc__,
+"gettrace($module, /)\n"
+"--\n"
+"\n"
+"Return the global debug tracing function set with sys.settrace.\n"
+"\n"
+"See the debugger chapter in the library manual.");
+
+#define SYS_GETTRACE_METHODDEF \
+ {"gettrace", (PyCFunction)sys_gettrace, METH_NOARGS, sys_gettrace__doc__},
+
+static PyObject *
+sys_gettrace_impl(PyObject *module);
+
+static PyObject *
+sys_gettrace(PyObject *module, PyObject *Py_UNUSED(ignored))
+{
+ return sys_gettrace_impl(module);
+}
+
+PyDoc_STRVAR(sys__setprofileallthreads__doc__,
+"_setprofileallthreads($module, arg, /)\n"
+"--\n"
+"\n"
+"Set the profiling function in all running threads belonging to the current interpreter.\n"
+"\n"
+"It will be called on each function call and return. See the profiler chapter\n"
+"in the library manual.");
+
+#define SYS__SETPROFILEALLTHREADS_METHODDEF \
+ {"_setprofileallthreads", (PyCFunction)sys__setprofileallthreads, METH_O, sys__setprofileallthreads__doc__},
+
+PyDoc_STRVAR(sys_getprofile__doc__,
+"getprofile($module, /)\n"
+"--\n"
+"\n"
+"Return the profiling function set with sys.setprofile.\n"
+"\n"
+"See the profiler chapter in the library manual.");
+
+#define SYS_GETPROFILE_METHODDEF \
+ {"getprofile", (PyCFunction)sys_getprofile, METH_NOARGS, sys_getprofile__doc__},
+
+static PyObject *
+sys_getprofile_impl(PyObject *module);
+
+static PyObject *
+sys_getprofile(PyObject *module, PyObject *Py_UNUSED(ignored))
+{
+ return sys_getprofile_impl(module);
+}
+
+PyDoc_STRVAR(sys_setswitchinterval__doc__,
+"setswitchinterval($module, interval, /)\n"
+"--\n"
+"\n"
+"Set the ideal thread switching delay inside the Python interpreter.\n"
+"\n"
+"The actual frequency of switching threads can be lower if the\n"
+"interpreter executes long sequences of uninterruptible code\n"
+"(this is implementation-specific and workload-dependent).\n"
+"\n"
+"The parameter must represent the desired switching delay in seconds\n"
+"A typical value is 0.005 (5 milliseconds).");
+
+#define SYS_SETSWITCHINTERVAL_METHODDEF \
+ {"setswitchinterval", (PyCFunction)sys_setswitchinterval, METH_O, sys_setswitchinterval__doc__},
+
+static PyObject *
+sys_setswitchinterval_impl(PyObject *module, double interval);
+
+static PyObject *
+sys_setswitchinterval(PyObject *module, PyObject *arg)
+{
+ PyObject *return_value = NULL;
+ double interval;
+
+ if (PyFloat_CheckExact(arg)) {
+ interval = PyFloat_AS_DOUBLE(arg);
+ }
+ else
+ {
+ interval = PyFloat_AsDouble(arg);
+ if (interval == -1.0 && PyErr_Occurred()) {
+ goto exit;
+ }
+ }
+ return_value = sys_setswitchinterval_impl(module, interval);
+
+exit:
+ return return_value;
+}
+
+PyDoc_STRVAR(sys_getswitchinterval__doc__,
+"getswitchinterval($module, /)\n"
+"--\n"
+"\n"
+"Return the current thread switch interval; see sys.setswitchinterval().");
+
+#define SYS_GETSWITCHINTERVAL_METHODDEF \
+ {"getswitchinterval", (PyCFunction)sys_getswitchinterval, METH_NOARGS, sys_getswitchinterval__doc__},
+
+static double
+sys_getswitchinterval_impl(PyObject *module);
+
+static PyObject *
+sys_getswitchinterval(PyObject *module, PyObject *Py_UNUSED(ignored))
+{
+ PyObject *return_value = NULL;
+ double _return_value;
+
+ _return_value = sys_getswitchinterval_impl(module);
+ if ((_return_value == -1.0) && PyErr_Occurred()) {
+ goto exit;
+ }
+ return_value = PyFloat_FromDouble(_return_value);
+
+exit:
+ return return_value;
+}
+
+PyDoc_STRVAR(sys_setrecursionlimit__doc__,
+"setrecursionlimit($module, limit, /)\n"
+"--\n"
+"\n"
+"Set the maximum depth of the Python interpreter stack to n.\n"
+"\n"
+"This limit prevents infinite recursion from causing an overflow of the C\n"
+"stack and crashing Python. The highest possible limit is platform-\n"
+"dependent.");
+
+#define SYS_SETRECURSIONLIMIT_METHODDEF \
+ {"setrecursionlimit", (PyCFunction)sys_setrecursionlimit, METH_O, sys_setrecursionlimit__doc__},
+
+static PyObject *
+sys_setrecursionlimit_impl(PyObject *module, int new_limit);
+
+static PyObject *
+sys_setrecursionlimit(PyObject *module, PyObject *arg)
+{
+ PyObject *return_value = NULL;
+ int new_limit;
+
+ new_limit = _PyLong_AsInt(arg);
+ if (new_limit == -1 && PyErr_Occurred()) {
+ goto exit;
+ }
+ return_value = sys_setrecursionlimit_impl(module, new_limit);
+
+exit:
+ return return_value;
+}
+
+PyDoc_STRVAR(sys_set_coroutine_origin_tracking_depth__doc__,
+"set_coroutine_origin_tracking_depth($module, /, depth)\n"
+"--\n"
+"\n"
+"Enable or disable origin tracking for coroutine objects in this thread.\n"
+"\n"
+"Coroutine objects will track \'depth\' frames of traceback information\n"
+"about where they came from, available in their cr_origin attribute.\n"
+"\n"
+"Set a depth of 0 to disable.");
+
+#define SYS_SET_COROUTINE_ORIGIN_TRACKING_DEPTH_METHODDEF \
+ {"set_coroutine_origin_tracking_depth", _PyCFunction_CAST(sys_set_coroutine_origin_tracking_depth), METH_FASTCALL|METH_KEYWORDS, sys_set_coroutine_origin_tracking_depth__doc__},
+
+static PyObject *
+sys_set_coroutine_origin_tracking_depth_impl(PyObject *module, int depth);
+
+static PyObject *
+sys_set_coroutine_origin_tracking_depth(PyObject *module, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
+{
+ PyObject *return_value = NULL;
+ #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE)
+
+ #define NUM_KEYWORDS 1
+ static struct {
+ PyGC_Head _this_is_not_used;
+ PyObject_VAR_HEAD
+ PyObject *ob_item[NUM_KEYWORDS];
+ } _kwtuple = {
+ .ob_base = PyVarObject_HEAD_INIT(&PyTuple_Type, NUM_KEYWORDS)
+ .ob_item = { &_Py_ID(depth), },
+ };
+ #undef NUM_KEYWORDS
+ #define KWTUPLE (&_kwtuple.ob_base.ob_base)
+
+ #else // !Py_BUILD_CORE
+ # define KWTUPLE NULL
+ #endif // !Py_BUILD_CORE
+
+ static const char * const _keywords[] = {"depth", NULL};
+ static _PyArg_Parser _parser = {
+ .keywords = _keywords,
+ .fname = "set_coroutine_origin_tracking_depth",
+ .kwtuple = KWTUPLE,
+ };
+ #undef KWTUPLE
+ PyObject *argsbuf[1];
+ int depth;
+
+ args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 1, 1, 0, argsbuf);
+ if (!args) {
+ goto exit;
+ }
+ depth = _PyLong_AsInt(args[0]);
+ if (depth == -1 && PyErr_Occurred()) {
+ goto exit;
+ }
+ return_value = sys_set_coroutine_origin_tracking_depth_impl(module, depth);
+
+exit:
+ return return_value;
+}
+
+PyDoc_STRVAR(sys_get_coroutine_origin_tracking_depth__doc__,
+"get_coroutine_origin_tracking_depth($module, /)\n"
+"--\n"
+"\n"
+"Check status of origin tracking for coroutine objects in this thread.");
+
+#define SYS_GET_COROUTINE_ORIGIN_TRACKING_DEPTH_METHODDEF \
+ {"get_coroutine_origin_tracking_depth", (PyCFunction)sys_get_coroutine_origin_tracking_depth, METH_NOARGS, sys_get_coroutine_origin_tracking_depth__doc__},
+
+static int
+sys_get_coroutine_origin_tracking_depth_impl(PyObject *module);
+
+static PyObject *
+sys_get_coroutine_origin_tracking_depth(PyObject *module, PyObject *Py_UNUSED(ignored))
+{
+ PyObject *return_value = NULL;
+ int _return_value;
+
+ _return_value = sys_get_coroutine_origin_tracking_depth_impl(module);
+ if ((_return_value == -1) && PyErr_Occurred()) {
+ goto exit;
+ }
+ return_value = PyLong_FromLong((long)_return_value);
+
+exit:
+ return return_value;
+}
+
+PyDoc_STRVAR(sys_get_asyncgen_hooks__doc__,
+"get_asyncgen_hooks($module, /)\n"
+"--\n"
+"\n"
+"Return the installed asynchronous generators hooks.\n"
+"\n"
+"This returns a namedtuple of the form (firstiter, finalizer).");
+
+#define SYS_GET_ASYNCGEN_HOOKS_METHODDEF \
+ {"get_asyncgen_hooks", (PyCFunction)sys_get_asyncgen_hooks, METH_NOARGS, sys_get_asyncgen_hooks__doc__},
+
+static PyObject *
+sys_get_asyncgen_hooks_impl(PyObject *module);
+
+static PyObject *
+sys_get_asyncgen_hooks(PyObject *module, PyObject *Py_UNUSED(ignored))
+{
+ return sys_get_asyncgen_hooks_impl(module);
+}
+
+PyDoc_STRVAR(sys_getrecursionlimit__doc__,
+"getrecursionlimit($module, /)\n"
+"--\n"
+"\n"
+"Return the current value of the recursion limit.\n"
+"\n"
+"The recursion limit is the maximum depth of the Python interpreter\n"
+"stack. This limit prevents infinite recursion from causing an overflow\n"
+"of the C stack and crashing Python.");
+
+#define SYS_GETRECURSIONLIMIT_METHODDEF \
+ {"getrecursionlimit", (PyCFunction)sys_getrecursionlimit, METH_NOARGS, sys_getrecursionlimit__doc__},
+
+static PyObject *
+sys_getrecursionlimit_impl(PyObject *module);
+
+static PyObject *
+sys_getrecursionlimit(PyObject *module, PyObject *Py_UNUSED(ignored))
+{
+ return sys_getrecursionlimit_impl(module);
+}
+
+#if defined(MS_WINDOWS)
+
+PyDoc_STRVAR(sys_getwindowsversion__doc__,
+"getwindowsversion($module, /)\n"
+"--\n"
+"\n"
+"Return info about the running version of Windows as a named tuple.\n"
+"\n"
+"The members are named: major, minor, build, platform, service_pack,\n"
+"service_pack_major, service_pack_minor, suite_mask, product_type and\n"
+"platform_version. For backward compatibility, only the first 5 items\n"
+"are available by indexing. All elements are numbers, except\n"
+"service_pack and platform_type which are strings, and platform_version\n"
+"which is a 3-tuple. Platform is always 2. Product_type may be 1 for a\n"
+"workstation, 2 for a domain controller, 3 for a server.\n"
+"Platform_version is a 3-tuple containing a version number that is\n"
+"intended for identifying the OS rather than feature detection.");
+
+#define SYS_GETWINDOWSVERSION_METHODDEF \
+ {"getwindowsversion", (PyCFunction)sys_getwindowsversion, METH_NOARGS, sys_getwindowsversion__doc__},
+
+static PyObject *
+sys_getwindowsversion_impl(PyObject *module);
+
+static PyObject *
+sys_getwindowsversion(PyObject *module, PyObject *Py_UNUSED(ignored))
+{
+ return sys_getwindowsversion_impl(module);
+}
+
+#endif /* defined(MS_WINDOWS) */
+
+#if defined(MS_WINDOWS)
+
+PyDoc_STRVAR(sys__enablelegacywindowsfsencoding__doc__,
+"_enablelegacywindowsfsencoding($module, /)\n"
+"--\n"
+"\n"
+"Changes the default filesystem encoding to mbcs:replace.\n"
+"\n"
+"This is done for consistency with earlier versions of Python. See PEP\n"
+"529 for more information.\n"
+"\n"
+"This is equivalent to defining the PYTHONLEGACYWINDOWSFSENCODING\n"
+"environment variable before launching Python.");
+
+#define SYS__ENABLELEGACYWINDOWSFSENCODING_METHODDEF \
+ {"_enablelegacywindowsfsencoding", (PyCFunction)sys__enablelegacywindowsfsencoding, METH_NOARGS, sys__enablelegacywindowsfsencoding__doc__},
+
+static PyObject *
+sys__enablelegacywindowsfsencoding_impl(PyObject *module);
+
+static PyObject *
+sys__enablelegacywindowsfsencoding(PyObject *module, PyObject *Py_UNUSED(ignored))
+{
+ return sys__enablelegacywindowsfsencoding_impl(module);
+}
+
+#endif /* defined(MS_WINDOWS) */
+
+#if defined(HAVE_DLOPEN)
+
+PyDoc_STRVAR(sys_setdlopenflags__doc__,
+"setdlopenflags($module, flags, /)\n"
+"--\n"
+"\n"
+"Set the flags used by the interpreter for dlopen calls.\n"
+"\n"
+"This is used, for example, when the interpreter loads extension\n"
+"modules. Among other things, this will enable a lazy resolving of\n"
+"symbols when importing a module, if called as sys.setdlopenflags(0).\n"
+"To share symbols across extension modules, call as\n"
+"sys.setdlopenflags(os.RTLD_GLOBAL). Symbolic names for the flag\n"
+"modules can be found in the os module (RTLD_xxx constants, e.g.\n"
+"os.RTLD_LAZY).");
+
+#define SYS_SETDLOPENFLAGS_METHODDEF \
+ {"setdlopenflags", (PyCFunction)sys_setdlopenflags, METH_O, sys_setdlopenflags__doc__},
+
+static PyObject *
+sys_setdlopenflags_impl(PyObject *module, int new_val);
+
+static PyObject *
+sys_setdlopenflags(PyObject *module, PyObject *arg)
+{
+ PyObject *return_value = NULL;
+ int new_val;
+
+ new_val = _PyLong_AsInt(arg);
+ if (new_val == -1 && PyErr_Occurred()) {
+ goto exit;
+ }
+ return_value = sys_setdlopenflags_impl(module, new_val);
+
+exit:
+ return return_value;
+}
+
+#endif /* defined(HAVE_DLOPEN) */
+
+#if defined(HAVE_DLOPEN)
+
+PyDoc_STRVAR(sys_getdlopenflags__doc__,
+"getdlopenflags($module, /)\n"
+"--\n"
+"\n"
+"Return the current value of the flags that are used for dlopen calls.\n"
+"\n"
+"The flag constants are defined in the os module.");
+
+#define SYS_GETDLOPENFLAGS_METHODDEF \
+ {"getdlopenflags", (PyCFunction)sys_getdlopenflags, METH_NOARGS, sys_getdlopenflags__doc__},
+
+static PyObject *
+sys_getdlopenflags_impl(PyObject *module);
+
+static PyObject *
+sys_getdlopenflags(PyObject *module, PyObject *Py_UNUSED(ignored))
+{
+ return sys_getdlopenflags_impl(module);
+}
+
+#endif /* defined(HAVE_DLOPEN) */
+
+#if defined(USE_MALLOPT)
+
+PyDoc_STRVAR(sys_mdebug__doc__,
+"mdebug($module, flag, /)\n"
+"--\n"
+"\n");
+
+#define SYS_MDEBUG_METHODDEF \
+ {"mdebug", (PyCFunction)sys_mdebug, METH_O, sys_mdebug__doc__},
+
+static PyObject *
+sys_mdebug_impl(PyObject *module, int flag);
+
+static PyObject *
+sys_mdebug(PyObject *module, PyObject *arg)
+{
+ PyObject *return_value = NULL;
+ int flag;
+
+ flag = _PyLong_AsInt(arg);
+ if (flag == -1 && PyErr_Occurred()) {
+ goto exit;
+ }
+ return_value = sys_mdebug_impl(module, flag);
+
+exit:
+ return return_value;
+}
+
+#endif /* defined(USE_MALLOPT) */
+
+PyDoc_STRVAR(sys_get_int_max_str_digits__doc__,
+"get_int_max_str_digits($module, /)\n"
+"--\n"
+"\n"
+"Return the maximum string digits limit for non-binary int<->str conversions.");
+
+#define SYS_GET_INT_MAX_STR_DIGITS_METHODDEF \
+ {"get_int_max_str_digits", (PyCFunction)sys_get_int_max_str_digits, METH_NOARGS, sys_get_int_max_str_digits__doc__},
+
+static PyObject *
+sys_get_int_max_str_digits_impl(PyObject *module);
+
+static PyObject *
+sys_get_int_max_str_digits(PyObject *module, PyObject *Py_UNUSED(ignored))
+{
+ return sys_get_int_max_str_digits_impl(module);
+}
+
+PyDoc_STRVAR(sys_set_int_max_str_digits__doc__,
+"set_int_max_str_digits($module, /, maxdigits)\n"
+"--\n"
+"\n"
+"Set the maximum string digits limit for non-binary int<->str conversions.");
+
+#define SYS_SET_INT_MAX_STR_DIGITS_METHODDEF \
+ {"set_int_max_str_digits", _PyCFunction_CAST(sys_set_int_max_str_digits), METH_FASTCALL|METH_KEYWORDS, sys_set_int_max_str_digits__doc__},
+
+static PyObject *
+sys_set_int_max_str_digits_impl(PyObject *module, int maxdigits);
+
+static PyObject *
+sys_set_int_max_str_digits(PyObject *module, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
+{
+ PyObject *return_value = NULL;
+ #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE)
+
+ #define NUM_KEYWORDS 1
+ static struct {
+ PyGC_Head _this_is_not_used;
+ PyObject_VAR_HEAD
+ PyObject *ob_item[NUM_KEYWORDS];
+ } _kwtuple = {
+ .ob_base = PyVarObject_HEAD_INIT(&PyTuple_Type, NUM_KEYWORDS)
+ .ob_item = { &_Py_ID(maxdigits), },
+ };
+ #undef NUM_KEYWORDS
+ #define KWTUPLE (&_kwtuple.ob_base.ob_base)
+
+ #else // !Py_BUILD_CORE
+ # define KWTUPLE NULL
+ #endif // !Py_BUILD_CORE
+
+ static const char * const _keywords[] = {"maxdigits", NULL};
+ static _PyArg_Parser _parser = {
+ .keywords = _keywords,
+ .fname = "set_int_max_str_digits",
+ .kwtuple = KWTUPLE,
+ };
+ #undef KWTUPLE
+ PyObject *argsbuf[1];
+ int maxdigits;
+
+ args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 1, 1, 0, argsbuf);
+ if (!args) {
+ goto exit;
+ }
+ maxdigits = _PyLong_AsInt(args[0]);
+ if (maxdigits == -1 && PyErr_Occurred()) {
+ goto exit;
+ }
+ return_value = sys_set_int_max_str_digits_impl(module, maxdigits);
+
+exit:
+ return return_value;
+}
+
+PyDoc_STRVAR(sys_getrefcount__doc__,
+"getrefcount($module, object, /)\n"
+"--\n"
+"\n"
+"Return the reference count of object.\n"
+"\n"
+"The count returned is generally one higher than you might expect,\n"
+"because it includes the (temporary) reference as an argument to\n"
+"getrefcount().");
+
+#define SYS_GETREFCOUNT_METHODDEF \
+ {"getrefcount", (PyCFunction)sys_getrefcount, METH_O, sys_getrefcount__doc__},
+
+static Py_ssize_t
+sys_getrefcount_impl(PyObject *module, PyObject *object);
+
+static PyObject *
+sys_getrefcount(PyObject *module, PyObject *object)
+{
+ PyObject *return_value = NULL;
+ Py_ssize_t _return_value;
+
+ _return_value = sys_getrefcount_impl(module, object);
+ if ((_return_value == -1) && PyErr_Occurred()) {
+ goto exit;
+ }
+ return_value = PyLong_FromSsize_t(_return_value);
+
+exit:
+ return return_value;
+}
+
+#if defined(Py_REF_DEBUG)
+
+PyDoc_STRVAR(sys_gettotalrefcount__doc__,
+"gettotalrefcount($module, /)\n"
+"--\n"
+"\n");
+
+#define SYS_GETTOTALREFCOUNT_METHODDEF \
+ {"gettotalrefcount", (PyCFunction)sys_gettotalrefcount, METH_NOARGS, sys_gettotalrefcount__doc__},
+
+static Py_ssize_t
+sys_gettotalrefcount_impl(PyObject *module);
+
+static PyObject *
+sys_gettotalrefcount(PyObject *module, PyObject *Py_UNUSED(ignored))
+{
+ PyObject *return_value = NULL;
+ Py_ssize_t _return_value;
+
+ _return_value = sys_gettotalrefcount_impl(module);
+ if ((_return_value == -1) && PyErr_Occurred()) {
+ goto exit;
+ }
+ return_value = PyLong_FromSsize_t(_return_value);
+
+exit:
+ return return_value;
+}
+
+#endif /* defined(Py_REF_DEBUG) */
+
+PyDoc_STRVAR(sys_getallocatedblocks__doc__,
+"getallocatedblocks($module, /)\n"
+"--\n"
+"\n"
+"Return the number of memory blocks currently allocated.");
+
+#define SYS_GETALLOCATEDBLOCKS_METHODDEF \
+ {"getallocatedblocks", (PyCFunction)sys_getallocatedblocks, METH_NOARGS, sys_getallocatedblocks__doc__},
+
+static Py_ssize_t
+sys_getallocatedblocks_impl(PyObject *module);
+
+static PyObject *
+sys_getallocatedblocks(PyObject *module, PyObject *Py_UNUSED(ignored))
+{
+ PyObject *return_value = NULL;
+ Py_ssize_t _return_value;
+
+ _return_value = sys_getallocatedblocks_impl(module);
+ if ((_return_value == -1) && PyErr_Occurred()) {
+ goto exit;
+ }
+ return_value = PyLong_FromSsize_t(_return_value);
+
+exit:
+ return return_value;
+}
+
+PyDoc_STRVAR(sys_getunicodeinternedsize__doc__,
+"getunicodeinternedsize($module, /)\n"
+"--\n"
+"\n"
+"Return the number of elements of the unicode interned dictionary");
+
+#define SYS_GETUNICODEINTERNEDSIZE_METHODDEF \
+ {"getunicodeinternedsize", (PyCFunction)sys_getunicodeinternedsize, METH_NOARGS, sys_getunicodeinternedsize__doc__},
+
+static Py_ssize_t
+sys_getunicodeinternedsize_impl(PyObject *module);
+
+static PyObject *
+sys_getunicodeinternedsize(PyObject *module, PyObject *Py_UNUSED(ignored))
+{
+ PyObject *return_value = NULL;
+ Py_ssize_t _return_value;
+
+ _return_value = sys_getunicodeinternedsize_impl(module);
+ if ((_return_value == -1) && PyErr_Occurred()) {
+ goto exit;
+ }
+ return_value = PyLong_FromSsize_t(_return_value);
+
+exit:
+ return return_value;
+}
+
+PyDoc_STRVAR(sys__getframe__doc__,
+"_getframe($module, depth=0, /)\n"
+"--\n"
+"\n"
+"Return a frame object from the call stack.\n"
+"\n"
+"If optional integer depth is given, return the frame object that many\n"
+"calls below the top of the stack. If that is deeper than the call\n"
+"stack, ValueError is raised. The default for depth is zero, returning\n"
+"the frame at the top of the call stack.\n"
+"\n"
+"This function should be used for internal and specialized purposes\n"
+"only.");
+
+#define SYS__GETFRAME_METHODDEF \
+ {"_getframe", _PyCFunction_CAST(sys__getframe), METH_FASTCALL, sys__getframe__doc__},
+
+static PyObject *
+sys__getframe_impl(PyObject *module, int depth);
+
+static PyObject *
+sys__getframe(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
+{
+ PyObject *return_value = NULL;
+ int depth = 0;
+
+ if (!_PyArg_CheckPositional("_getframe", nargs, 0, 1)) {
+ goto exit;
+ }
+ if (nargs < 1) {
+ goto skip_optional;
+ }
+ depth = _PyLong_AsInt(args[0]);
+ if (depth == -1 && PyErr_Occurred()) {
+ goto exit;
+ }
+skip_optional:
+ return_value = sys__getframe_impl(module, depth);
+
+exit:
+ return return_value;
+}
+
+PyDoc_STRVAR(sys__current_frames__doc__,
+"_current_frames($module, /)\n"
+"--\n"
+"\n"
+"Return a dict mapping each thread\'s thread id to its current stack frame.\n"
+"\n"
+"This function should be used for specialized purposes only.");
+
+#define SYS__CURRENT_FRAMES_METHODDEF \
+ {"_current_frames", (PyCFunction)sys__current_frames, METH_NOARGS, sys__current_frames__doc__},
+
+static PyObject *
+sys__current_frames_impl(PyObject *module);
+
+static PyObject *
+sys__current_frames(PyObject *module, PyObject *Py_UNUSED(ignored))
+{
+ return sys__current_frames_impl(module);
+}
+
+PyDoc_STRVAR(sys__current_exceptions__doc__,
+"_current_exceptions($module, /)\n"
+"--\n"
+"\n"
+"Return a dict mapping each thread\'s identifier to its current raised exception.\n"
+"\n"
+"This function should be used for specialized purposes only.");
+
+#define SYS__CURRENT_EXCEPTIONS_METHODDEF \
+ {"_current_exceptions", (PyCFunction)sys__current_exceptions, METH_NOARGS, sys__current_exceptions__doc__},
+
+static PyObject *
+sys__current_exceptions_impl(PyObject *module);
+
+static PyObject *
+sys__current_exceptions(PyObject *module, PyObject *Py_UNUSED(ignored))
+{
+ return sys__current_exceptions_impl(module);
+}
+
+PyDoc_STRVAR(sys_call_tracing__doc__,
+"call_tracing($module, func, args, /)\n"
+"--\n"
+"\n"
+"Call func(*args), while tracing is enabled.\n"
+"\n"
+"The tracing state is saved, and restored afterwards. This is intended\n"
+"to be called from a debugger from a checkpoint, to recursively debug\n"
+"some other code.");
+
+#define SYS_CALL_TRACING_METHODDEF \
+ {"call_tracing", _PyCFunction_CAST(sys_call_tracing), METH_FASTCALL, sys_call_tracing__doc__},
+
+static PyObject *
+sys_call_tracing_impl(PyObject *module, PyObject *func, PyObject *funcargs);
+
+static PyObject *
+sys_call_tracing(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
+{
+ PyObject *return_value = NULL;
+ PyObject *func;
+ PyObject *funcargs;
+
+ if (!_PyArg_CheckPositional("call_tracing", nargs, 2, 2)) {
+ goto exit;
+ }
+ func = args[0];
+ if (!PyTuple_Check(args[1])) {
+ _PyArg_BadArgument("call_tracing", "argument 2", "tuple", args[1]);
+ goto exit;
+ }
+ funcargs = args[1];
+ return_value = sys_call_tracing_impl(module, func, funcargs);
+
+exit:
+ return return_value;
+}
+
+PyDoc_STRVAR(sys__debugmallocstats__doc__,
+"_debugmallocstats($module, /)\n"
+"--\n"
+"\n"
+"Print summary info to stderr about the state of pymalloc\'s structures.\n"
+"\n"
+"In Py_DEBUG mode, also perform some expensive internal consistency\n"
+"checks.");
+
+#define SYS__DEBUGMALLOCSTATS_METHODDEF \
+ {"_debugmallocstats", (PyCFunction)sys__debugmallocstats, METH_NOARGS, sys__debugmallocstats__doc__},
+
+static PyObject *
+sys__debugmallocstats_impl(PyObject *module);
+
+static PyObject *
+sys__debugmallocstats(PyObject *module, PyObject *Py_UNUSED(ignored))
+{
+ return sys__debugmallocstats_impl(module);
+}
+
+PyDoc_STRVAR(sys__clear_type_cache__doc__,
+"_clear_type_cache($module, /)\n"
+"--\n"
+"\n"
+"Clear the internal type lookup cache.");
+
+#define SYS__CLEAR_TYPE_CACHE_METHODDEF \
+ {"_clear_type_cache", (PyCFunction)sys__clear_type_cache, METH_NOARGS, sys__clear_type_cache__doc__},
+
+static PyObject *
+sys__clear_type_cache_impl(PyObject *module);
+
+static PyObject *
+sys__clear_type_cache(PyObject *module, PyObject *Py_UNUSED(ignored))
+{
+ return sys__clear_type_cache_impl(module);
+}
+
+PyDoc_STRVAR(sys_is_finalizing__doc__,
+"is_finalizing($module, /)\n"
+"--\n"
+"\n"
+"Return True if Python is exiting.");
+
+#define SYS_IS_FINALIZING_METHODDEF \
+ {"is_finalizing", (PyCFunction)sys_is_finalizing, METH_NOARGS, sys_is_finalizing__doc__},
+
+static PyObject *
+sys_is_finalizing_impl(PyObject *module);
+
+static PyObject *
+sys_is_finalizing(PyObject *module, PyObject *Py_UNUSED(ignored))
+{
+ return sys_is_finalizing_impl(module);
+}
+
+#if defined(Py_STATS)
+
+PyDoc_STRVAR(sys__stats_on__doc__,
+"_stats_on($module, /)\n"
+"--\n"
+"\n"
+"Turns on stats gathering (stats gathering is on by default).");
+
+#define SYS__STATS_ON_METHODDEF \
+ {"_stats_on", (PyCFunction)sys__stats_on, METH_NOARGS, sys__stats_on__doc__},
+
+static PyObject *
+sys__stats_on_impl(PyObject *module);
+
+static PyObject *
+sys__stats_on(PyObject *module, PyObject *Py_UNUSED(ignored))
+{
+ return sys__stats_on_impl(module);
+}
+
+#endif /* defined(Py_STATS) */
+
+#if defined(Py_STATS)
+
+PyDoc_STRVAR(sys__stats_off__doc__,
+"_stats_off($module, /)\n"
+"--\n"
+"\n"
+"Turns off stats gathering (stats gathering is on by default).");
+
+#define SYS__STATS_OFF_METHODDEF \
+ {"_stats_off", (PyCFunction)sys__stats_off, METH_NOARGS, sys__stats_off__doc__},
+
+static PyObject *
+sys__stats_off_impl(PyObject *module);
+
+static PyObject *
+sys__stats_off(PyObject *module, PyObject *Py_UNUSED(ignored))
+{
+ return sys__stats_off_impl(module);
+}
+
+#endif /* defined(Py_STATS) */
+
+#if defined(Py_STATS)
+
+PyDoc_STRVAR(sys__stats_clear__doc__,
+"_stats_clear($module, /)\n"
+"--\n"
+"\n"
+"Clears the stats.");
+
+#define SYS__STATS_CLEAR_METHODDEF \
+ {"_stats_clear", (PyCFunction)sys__stats_clear, METH_NOARGS, sys__stats_clear__doc__},
+
+static PyObject *
+sys__stats_clear_impl(PyObject *module);
+
+static PyObject *
+sys__stats_clear(PyObject *module, PyObject *Py_UNUSED(ignored))
+{
+ return sys__stats_clear_impl(module);
+}
+
+#endif /* defined(Py_STATS) */
+
+#if defined(Py_STATS)
+
+PyDoc_STRVAR(sys__stats_dump__doc__,
+"_stats_dump($module, /)\n"
+"--\n"
+"\n"
+"Dump stats to file, and clears the stats.");
+
+#define SYS__STATS_DUMP_METHODDEF \
+ {"_stats_dump", (PyCFunction)sys__stats_dump, METH_NOARGS, sys__stats_dump__doc__},
+
+static PyObject *
+sys__stats_dump_impl(PyObject *module);
+
+static PyObject *
+sys__stats_dump(PyObject *module, PyObject *Py_UNUSED(ignored))
+{
+ return sys__stats_dump_impl(module);
+}
+
+#endif /* defined(Py_STATS) */
+
+#if defined(ANDROID_API_LEVEL)
+
+PyDoc_STRVAR(sys_getandroidapilevel__doc__,
+"getandroidapilevel($module, /)\n"
+"--\n"
+"\n"
+"Return the build time API version of Android as an integer.");
+
+#define SYS_GETANDROIDAPILEVEL_METHODDEF \
+ {"getandroidapilevel", (PyCFunction)sys_getandroidapilevel, METH_NOARGS, sys_getandroidapilevel__doc__},
+
+static PyObject *
+sys_getandroidapilevel_impl(PyObject *module);
+
+static PyObject *
+sys_getandroidapilevel(PyObject *module, PyObject *Py_UNUSED(ignored))
+{
+ return sys_getandroidapilevel_impl(module);
+}
+
+#endif /* defined(ANDROID_API_LEVEL) */
+
+PyDoc_STRVAR(sys_activate_stack_trampoline__doc__,
+"activate_stack_trampoline($module, backend, /)\n"
+"--\n"
+"\n"
+"Activate stack profiler trampoline *backend*.");
+
+#define SYS_ACTIVATE_STACK_TRAMPOLINE_METHODDEF \
+ {"activate_stack_trampoline", (PyCFunction)sys_activate_stack_trampoline, METH_O, sys_activate_stack_trampoline__doc__},
+
+static PyObject *
+sys_activate_stack_trampoline_impl(PyObject *module, const char *backend);
+
+static PyObject *
+sys_activate_stack_trampoline(PyObject *module, PyObject *arg)
+{
+ PyObject *return_value = NULL;
+ const char *backend;
+
+ if (!PyUnicode_Check(arg)) {
+ _PyArg_BadArgument("activate_stack_trampoline", "argument", "str", arg);
+ goto exit;
+ }
+ Py_ssize_t backend_length;
+ backend = PyUnicode_AsUTF8AndSize(arg, &backend_length);
+ if (backend == NULL) {
+ goto exit;
+ }
+ if (strlen(backend) != (size_t)backend_length) {
+ PyErr_SetString(PyExc_ValueError, "embedded null character");
+ goto exit;
+ }
+ return_value = sys_activate_stack_trampoline_impl(module, backend);
+
+exit:
+ return return_value;
+}
+
+PyDoc_STRVAR(sys_deactivate_stack_trampoline__doc__,
+"deactivate_stack_trampoline($module, /)\n"
+"--\n"
+"\n"
+"Deactivate the current stack profiler trampoline backend.\n"
+"\n"
+"If no stack profiler is activated, this function has no effect.");
+
+#define SYS_DEACTIVATE_STACK_TRAMPOLINE_METHODDEF \
+ {"deactivate_stack_trampoline", (PyCFunction)sys_deactivate_stack_trampoline, METH_NOARGS, sys_deactivate_stack_trampoline__doc__},
+
+static PyObject *
+sys_deactivate_stack_trampoline_impl(PyObject *module);
+
+static PyObject *
+sys_deactivate_stack_trampoline(PyObject *module, PyObject *Py_UNUSED(ignored))
+{
+ return sys_deactivate_stack_trampoline_impl(module);
+}
+
+PyDoc_STRVAR(sys_is_stack_trampoline_active__doc__,
+"is_stack_trampoline_active($module, /)\n"
+"--\n"
+"\n"
+"Return *True* if a stack profiler trampoline is active.");
+
+#define SYS_IS_STACK_TRAMPOLINE_ACTIVE_METHODDEF \
+ {"is_stack_trampoline_active", (PyCFunction)sys_is_stack_trampoline_active, METH_NOARGS, sys_is_stack_trampoline_active__doc__},
+
+static PyObject *
+sys_is_stack_trampoline_active_impl(PyObject *module);
+
+static PyObject *
+sys_is_stack_trampoline_active(PyObject *module, PyObject *Py_UNUSED(ignored))
+{
+ return sys_is_stack_trampoline_active_impl(module);
+}
+
+PyDoc_STRVAR(sys__getframemodulename__doc__,
+"_getframemodulename($module, /, depth=0)\n"
+"--\n"
+"\n"
+"Return the name of the module for a calling frame.\n"
+"\n"
+"The default depth returns the module containing the call to this API.\n"
+"A more typical use in a library will pass a depth of 1 to get the user\'s\n"
+"module rather than the library module.\n"
+"\n"
+"If no frame, module, or name can be found, returns None.");
+
+#define SYS__GETFRAMEMODULENAME_METHODDEF \
+ {"_getframemodulename", _PyCFunction_CAST(sys__getframemodulename), METH_FASTCALL|METH_KEYWORDS, sys__getframemodulename__doc__},
+
+static PyObject *
+sys__getframemodulename_impl(PyObject *module, int depth);
+
+static PyObject *
+sys__getframemodulename(PyObject *module, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
+{
+ PyObject *return_value = NULL;
+ #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE)
+
+ #define NUM_KEYWORDS 1
+ static struct {
+ PyGC_Head _this_is_not_used;
+ PyObject_VAR_HEAD
+ PyObject *ob_item[NUM_KEYWORDS];
+ } _kwtuple = {
+ .ob_base = PyVarObject_HEAD_INIT(&PyTuple_Type, NUM_KEYWORDS)
+ .ob_item = { &_Py_ID(depth), },
+ };
+ #undef NUM_KEYWORDS
+ #define KWTUPLE (&_kwtuple.ob_base.ob_base)
+
+ #else // !Py_BUILD_CORE
+ # define KWTUPLE NULL
+ #endif // !Py_BUILD_CORE
+
+ static const char * const _keywords[] = {"depth", NULL};
+ static _PyArg_Parser _parser = {
+ .keywords = _keywords,
+ .fname = "_getframemodulename",
+ .kwtuple = KWTUPLE,
+ };
+ #undef KWTUPLE
+ PyObject *argsbuf[1];
+ Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 0;
+ int depth = 0;
+
+ args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 0, 1, 0, argsbuf);
+ if (!args) {
+ goto exit;
+ }
+ if (!noptargs) {
+ goto skip_optional_pos;
+ }
+ depth = _PyLong_AsInt(args[0]);
+ if (depth == -1 && PyErr_Occurred()) {
+ goto exit;
+ }
+skip_optional_pos:
+ return_value = sys__getframemodulename_impl(module, depth);
+
+exit:
+ return return_value;
+}
+
+#ifndef SYS_GETWINDOWSVERSION_METHODDEF
+ #define SYS_GETWINDOWSVERSION_METHODDEF
+#endif /* !defined(SYS_GETWINDOWSVERSION_METHODDEF) */
+
+#ifndef SYS__ENABLELEGACYWINDOWSFSENCODING_METHODDEF
+ #define SYS__ENABLELEGACYWINDOWSFSENCODING_METHODDEF
+#endif /* !defined(SYS__ENABLELEGACYWINDOWSFSENCODING_METHODDEF) */
+
+#ifndef SYS_SETDLOPENFLAGS_METHODDEF
+ #define SYS_SETDLOPENFLAGS_METHODDEF
+#endif /* !defined(SYS_SETDLOPENFLAGS_METHODDEF) */
+
+#ifndef SYS_GETDLOPENFLAGS_METHODDEF
+ #define SYS_GETDLOPENFLAGS_METHODDEF
+#endif /* !defined(SYS_GETDLOPENFLAGS_METHODDEF) */
+
+#ifndef SYS_MDEBUG_METHODDEF
+ #define SYS_MDEBUG_METHODDEF
+#endif /* !defined(SYS_MDEBUG_METHODDEF) */
+
+#ifndef SYS_GETTOTALREFCOUNT_METHODDEF
+ #define SYS_GETTOTALREFCOUNT_METHODDEF
+#endif /* !defined(SYS_GETTOTALREFCOUNT_METHODDEF) */
+
+#ifndef SYS__STATS_ON_METHODDEF
+ #define SYS__STATS_ON_METHODDEF
+#endif /* !defined(SYS__STATS_ON_METHODDEF) */
+
+#ifndef SYS__STATS_OFF_METHODDEF
+ #define SYS__STATS_OFF_METHODDEF
+#endif /* !defined(SYS__STATS_OFF_METHODDEF) */
+
+#ifndef SYS__STATS_CLEAR_METHODDEF
+ #define SYS__STATS_CLEAR_METHODDEF
+#endif /* !defined(SYS__STATS_CLEAR_METHODDEF) */
+
+#ifndef SYS__STATS_DUMP_METHODDEF
+ #define SYS__STATS_DUMP_METHODDEF
+#endif /* !defined(SYS__STATS_DUMP_METHODDEF) */
+
+#ifndef SYS_GETANDROIDAPILEVEL_METHODDEF
+ #define SYS_GETANDROIDAPILEVEL_METHODDEF
+#endif /* !defined(SYS_GETANDROIDAPILEVEL_METHODDEF) */
+/*[clinic end generated code: output=6d598acc26237fbe input=a9049054013a1b77]*/
diff --git a/contrib/tools/python3/Python/clinic/traceback.c.h b/contrib/tools/python3/Python/clinic/traceback.c.h
new file mode 100644
index 00000000000..3c344934971
--- /dev/null
+++ b/contrib/tools/python3/Python/clinic/traceback.c.h
@@ -0,0 +1,81 @@
+/*[clinic input]
+preserve
+[clinic start generated code]*/
+
+#if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE)
+# include "pycore_gc.h" // PyGC_Head
+# include "pycore_runtime.h" // _Py_ID()
+#endif
+
+
+PyDoc_STRVAR(tb_new__doc__,
+"TracebackType(tb_next, tb_frame, tb_lasti, tb_lineno)\n"
+"--\n"
+"\n"
+"Create a new traceback object.");
+
+static PyObject *
+tb_new_impl(PyTypeObject *type, PyObject *tb_next, PyFrameObject *tb_frame,
+ int tb_lasti, int tb_lineno);
+
+static PyObject *
+tb_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
+{
+ PyObject *return_value = NULL;
+ #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE)
+
+ #define NUM_KEYWORDS 4
+ static struct {
+ PyGC_Head _this_is_not_used;
+ PyObject_VAR_HEAD
+ PyObject *ob_item[NUM_KEYWORDS];
+ } _kwtuple = {
+ .ob_base = PyVarObject_HEAD_INIT(&PyTuple_Type, NUM_KEYWORDS)
+ .ob_item = { &_Py_ID(tb_next), &_Py_ID(tb_frame), &_Py_ID(tb_lasti), &_Py_ID(tb_lineno), },
+ };
+ #undef NUM_KEYWORDS
+ #define KWTUPLE (&_kwtuple.ob_base.ob_base)
+
+ #else // !Py_BUILD_CORE
+ # define KWTUPLE NULL
+ #endif // !Py_BUILD_CORE
+
+ static const char * const _keywords[] = {"tb_next", "tb_frame", "tb_lasti", "tb_lineno", NULL};
+ static _PyArg_Parser _parser = {
+ .keywords = _keywords,
+ .fname = "TracebackType",
+ .kwtuple = KWTUPLE,
+ };
+ #undef KWTUPLE
+ PyObject *argsbuf[4];
+ PyObject * const *fastargs;
+ Py_ssize_t nargs = PyTuple_GET_SIZE(args);
+ PyObject *tb_next;
+ PyFrameObject *tb_frame;
+ int tb_lasti;
+ int tb_lineno;
+
+ fastargs = _PyArg_UnpackKeywords(_PyTuple_CAST(args)->ob_item, nargs, kwargs, NULL, &_parser, 4, 4, 0, argsbuf);
+ if (!fastargs) {
+ goto exit;
+ }
+ tb_next = fastargs[0];
+ if (!PyObject_TypeCheck(fastargs[1], &PyFrame_Type)) {
+ _PyArg_BadArgument("TracebackType", "argument 'tb_frame'", (&PyFrame_Type)->tp_name, fastargs[1]);
+ goto exit;
+ }
+ tb_frame = (PyFrameObject *)fastargs[1];
+ tb_lasti = _PyLong_AsInt(fastargs[2]);
+ if (tb_lasti == -1 && PyErr_Occurred()) {
+ goto exit;
+ }
+ tb_lineno = _PyLong_AsInt(fastargs[3]);
+ if (tb_lineno == -1 && PyErr_Occurred()) {
+ goto exit;
+ }
+ return_value = tb_new_impl(type, tb_next, tb_frame, tb_lasti, tb_lineno);
+
+exit:
+ return return_value;
+}
+/*[clinic end generated code: output=7bc9927e362fdfb7 input=a9049054013a1b77]*/
diff --git a/contrib/tools/python3/Python/codecs.c b/contrib/tools/python3/Python/codecs.c
new file mode 100644
index 00000000000..1983f56ba20
--- /dev/null
+++ b/contrib/tools/python3/Python/codecs.c
@@ -0,0 +1,1516 @@
+/* ------------------------------------------------------------------------
+
+ Python Codec Registry and support functions
+
+Written by Marc-Andre Lemburg (mal@lemburg.com).
+
+Copyright (c) Corporation for National Research Initiatives.
+
+ ------------------------------------------------------------------------ */
+
+#include "Python.h"
+#include "pycore_call.h" // _PyObject_CallNoArgs()
+#include "pycore_interp.h" // PyInterpreterState.codec_search_path
+#include "pycore_pyerrors.h" // _PyErr_FormatNote()
+#include "pycore_pystate.h" // _PyInterpreterState_GET()
+#include "pycore_ucnhash.h" // _PyUnicode_Name_CAPI
+#include <ctype.h>
+
+const char *Py_hexdigits = "0123456789abcdef";
+
+/* --- Codec Registry ----------------------------------------------------- */
+
+/* Import the standard encodings package which will register the first
+ codec search function.
+
+ This is done in a lazy way so that the Unicode implementation does
+ not downgrade startup time of scripts not needing it.
+
+ ImportErrors are silently ignored by this function. Only one try is
+ made.
+
+*/
+
+static int _PyCodecRegistry_Init(void); /* Forward */
+
+int PyCodec_Register(PyObject *search_function)
+{
+ PyInterpreterState *interp = _PyInterpreterState_GET();
+ if (interp->codec_search_path == NULL && _PyCodecRegistry_Init())
+ goto onError;
+ if (search_function == NULL) {
+ PyErr_BadArgument();
+ goto onError;
+ }
+ if (!PyCallable_Check(search_function)) {
+ PyErr_SetString(PyExc_TypeError, "argument must be callable");
+ goto onError;
+ }
+ return PyList_Append(interp->codec_search_path, search_function);
+
+ onError:
+ return -1;
+}
+
+int
+PyCodec_Unregister(PyObject *search_function)
+{
+ PyInterpreterState *interp = PyInterpreterState_Get();
+ PyObject *codec_search_path = interp->codec_search_path;
+ /* Do nothing if codec_search_path is not created yet or was cleared. */
+ if (codec_search_path == NULL) {
+ return 0;
+ }
+
+ assert(PyList_CheckExact(codec_search_path));
+ Py_ssize_t n = PyList_GET_SIZE(codec_search_path);
+ for (Py_ssize_t i = 0; i < n; i++) {
+ PyObject *item = PyList_GET_ITEM(codec_search_path, i);
+ if (item == search_function) {
+ if (interp->codec_search_cache != NULL) {
+ assert(PyDict_CheckExact(interp->codec_search_cache));
+ PyDict_Clear(interp->codec_search_cache);
+ }
+ return PyList_SetSlice(codec_search_path, i, i+1, NULL);
+ }
+ }
+ return 0;
+}
+
+extern int _Py_normalize_encoding(const char *, char *, size_t);
+
+/* Convert a string to a normalized Python string(decoded from UTF-8): all characters are
+ converted to lower case, spaces and hyphens are replaced with underscores. */
+
+static
+PyObject *normalizestring(const char *string)
+{
+ size_t len = strlen(string);
+ char *encoding;
+ PyObject *v;
+
+ if (len > PY_SSIZE_T_MAX) {
+ PyErr_SetString(PyExc_OverflowError, "string is too large");
+ return NULL;
+ }
+
+ encoding = PyMem_Malloc(len + 1);
+ if (encoding == NULL)
+ return PyErr_NoMemory();
+
+ if (!_Py_normalize_encoding(string, encoding, len + 1))
+ {
+ PyErr_SetString(PyExc_RuntimeError, "_Py_normalize_encoding() failed");
+ PyMem_Free(encoding);
+ return NULL;
+ }
+
+ v = PyUnicode_FromString(encoding);
+ PyMem_Free(encoding);
+ return v;
+}
+
+/* Lookup the given encoding and return a tuple providing the codec
+ facilities.
+
+ The encoding string is looked up converted to all lower-case
+ characters. This makes encodings looked up through this mechanism
+ effectively case-insensitive.
+
+ If no codec is found, a LookupError is set and NULL returned.
+
+ As side effect, this tries to load the encodings package, if not
+ yet done. This is part of the lazy load strategy for the encodings
+ package.
+
+*/
+
+PyObject *_PyCodec_Lookup(const char *encoding)
+{
+ if (encoding == NULL) {
+ PyErr_BadArgument();
+ return NULL;
+ }
+
+ PyInterpreterState *interp = _PyInterpreterState_GET();
+ if (interp->codec_search_path == NULL && _PyCodecRegistry_Init()) {
+ return NULL;
+ }
+
+ /* Convert the encoding to a normalized Python string: all
+ characters are converted to lower case, spaces and hyphens are
+ replaced with underscores. */
+ PyObject *v = normalizestring(encoding);
+ if (v == NULL) {
+ return NULL;
+ }
+ PyUnicode_InternInPlace(&v);
+
+ /* First, try to lookup the name in the registry dictionary */
+ PyObject *result = PyDict_GetItemWithError(interp->codec_search_cache, v);
+ if (result != NULL) {
+ Py_INCREF(result);
+ Py_DECREF(v);
+ return result;
+ }
+ else if (PyErr_Occurred()) {
+ goto onError;
+ }
+
+ /* Next, scan the search functions in order of registration */
+ const Py_ssize_t len = PyList_Size(interp->codec_search_path);
+ if (len < 0)
+ goto onError;
+ if (len == 0) {
+ PyErr_SetString(PyExc_LookupError,
+ "no codec search functions registered: "
+ "can't find encoding");
+ goto onError;
+ }
+
+ Py_ssize_t i;
+ for (i = 0; i < len; i++) {
+ PyObject *func;
+
+ func = PyList_GetItem(interp->codec_search_path, i);
+ if (func == NULL)
+ goto onError;
+ result = PyObject_CallOneArg(func, v);
+ if (result == NULL)
+ goto onError;
+ if (result == Py_None) {
+ Py_DECREF(result);
+ continue;
+ }
+ if (!PyTuple_Check(result) || PyTuple_GET_SIZE(result) != 4) {
+ PyErr_SetString(PyExc_TypeError,
+ "codec search functions must return 4-tuples");
+ Py_DECREF(result);
+ goto onError;
+ }
+ break;
+ }
+ if (i == len) {
+ /* XXX Perhaps we should cache misses too ? */
+ PyErr_Format(PyExc_LookupError,
+ "unknown encoding: %s", encoding);
+ goto onError;
+ }
+
+ /* Cache and return the result */
+ if (PyDict_SetItem(interp->codec_search_cache, v, result) < 0) {
+ Py_DECREF(result);
+ goto onError;
+ }
+ Py_DECREF(v);
+ return result;
+
+ onError:
+ Py_DECREF(v);
+ return NULL;
+}
+
+/* Codec registry encoding check API. */
+
+int PyCodec_KnownEncoding(const char *encoding)
+{
+ PyObject *codecs;
+
+ codecs = _PyCodec_Lookup(encoding);
+ if (!codecs) {
+ PyErr_Clear();
+ return 0;
+ }
+ else {
+ Py_DECREF(codecs);
+ return 1;
+ }
+}
+
+static
+PyObject *args_tuple(PyObject *object,
+ const char *errors)
+{
+ PyObject *args;
+
+ args = PyTuple_New(1 + (errors != NULL));
+ if (args == NULL)
+ return NULL;
+ PyTuple_SET_ITEM(args, 0, Py_NewRef(object));
+ if (errors) {
+ PyObject *v;
+
+ v = PyUnicode_FromString(errors);
+ if (v == NULL) {
+ Py_DECREF(args);
+ return NULL;
+ }
+ PyTuple_SET_ITEM(args, 1, v);
+ }
+ return args;
+}
+
+/* Helper function to get a codec item */
+
+static
+PyObject *codec_getitem(const char *encoding, int index)
+{
+ PyObject *codecs;
+ PyObject *v;
+
+ codecs = _PyCodec_Lookup(encoding);
+ if (codecs == NULL)
+ return NULL;
+ v = PyTuple_GET_ITEM(codecs, index);
+ Py_DECREF(codecs);
+ return Py_NewRef(v);
+}
+
+/* Helper functions to create an incremental codec. */
+static
+PyObject *codec_makeincrementalcodec(PyObject *codec_info,
+ const char *errors,
+ const char *attrname)
+{
+ PyObject *ret, *inccodec;
+
+ inccodec = PyObject_GetAttrString(codec_info, attrname);
+ if (inccodec == NULL)
+ return NULL;
+ if (errors)
+ ret = PyObject_CallFunction(inccodec, "s", errors);
+ else
+ ret = _PyObject_CallNoArgs(inccodec);
+ Py_DECREF(inccodec);
+ return ret;
+}
+
+static
+PyObject *codec_getincrementalcodec(const char *encoding,
+ const char *errors,
+ const char *attrname)
+{
+ PyObject *codec_info, *ret;
+
+ codec_info = _PyCodec_Lookup(encoding);
+ if (codec_info == NULL)
+ return NULL;
+ ret = codec_makeincrementalcodec(codec_info, errors, attrname);
+ Py_DECREF(codec_info);
+ return ret;
+}
+
+/* Helper function to create a stream codec. */
+
+static
+PyObject *codec_getstreamcodec(const char *encoding,
+ PyObject *stream,
+ const char *errors,
+ const int index)
+{
+ PyObject *codecs, *streamcodec, *codeccls;
+
+ codecs = _PyCodec_Lookup(encoding);
+ if (codecs == NULL)
+ return NULL;
+
+ codeccls = PyTuple_GET_ITEM(codecs, index);
+ if (errors != NULL)
+ streamcodec = PyObject_CallFunction(codeccls, "Os", stream, errors);
+ else
+ streamcodec = PyObject_CallOneArg(codeccls, stream);
+ Py_DECREF(codecs);
+ return streamcodec;
+}
+
+/* Helpers to work with the result of _PyCodec_Lookup
+
+ */
+PyObject *_PyCodecInfo_GetIncrementalDecoder(PyObject *codec_info,
+ const char *errors)
+{
+ return codec_makeincrementalcodec(codec_info, errors,
+ "incrementaldecoder");
+}
+
+PyObject *_PyCodecInfo_GetIncrementalEncoder(PyObject *codec_info,
+ const char *errors)
+{
+ return codec_makeincrementalcodec(codec_info, errors,
+ "incrementalencoder");
+}
+
+
+/* Convenience APIs to query the Codec registry.
+
+ All APIs return a codec object with incremented refcount.
+
+ */
+
+PyObject *PyCodec_Encoder(const char *encoding)
+{
+ return codec_getitem(encoding, 0);
+}
+
+PyObject *PyCodec_Decoder(const char *encoding)
+{
+ return codec_getitem(encoding, 1);
+}
+
+PyObject *PyCodec_IncrementalEncoder(const char *encoding,
+ const char *errors)
+{
+ return codec_getincrementalcodec(encoding, errors, "incrementalencoder");
+}
+
+PyObject *PyCodec_IncrementalDecoder(const char *encoding,
+ const char *errors)
+{
+ return codec_getincrementalcodec(encoding, errors, "incrementaldecoder");
+}
+
+PyObject *PyCodec_StreamReader(const char *encoding,
+ PyObject *stream,
+ const char *errors)
+{
+ return codec_getstreamcodec(encoding, stream, errors, 2);
+}
+
+PyObject *PyCodec_StreamWriter(const char *encoding,
+ PyObject *stream,
+ const char *errors)
+{
+ return codec_getstreamcodec(encoding, stream, errors, 3);
+}
+
+/* Encode an object (e.g. a Unicode object) using the given encoding
+ and return the resulting encoded object (usually a Python string).
+
+ errors is passed to the encoder factory as argument if non-NULL. */
+
+static PyObject *
+_PyCodec_EncodeInternal(PyObject *object,
+ PyObject *encoder,
+ const char *encoding,
+ const char *errors)
+{
+ PyObject *args = NULL, *result = NULL;
+ PyObject *v = NULL;
+
+ args = args_tuple(object, errors);
+ if (args == NULL)
+ goto onError;
+
+ result = PyObject_Call(encoder, args, NULL);
+ if (result == NULL) {
+ _PyErr_FormatNote("%s with '%s' codec failed", "encoding", encoding);
+ goto onError;
+ }
+
+ if (!PyTuple_Check(result) ||
+ PyTuple_GET_SIZE(result) != 2) {
+ PyErr_SetString(PyExc_TypeError,
+ "encoder must return a tuple (object, integer)");
+ goto onError;
+ }
+ v = Py_NewRef(PyTuple_GET_ITEM(result,0));
+ /* We don't check or use the second (integer) entry. */
+
+ Py_DECREF(args);
+ Py_DECREF(encoder);
+ Py_DECREF(result);
+ return v;
+
+ onError:
+ Py_XDECREF(result);
+ Py_XDECREF(args);
+ Py_XDECREF(encoder);
+ return NULL;
+}
+
+/* Decode an object (usually a Python string) using the given encoding
+ and return an equivalent object (e.g. a Unicode object).
+
+ errors is passed to the decoder factory as argument if non-NULL. */
+
+static PyObject *
+_PyCodec_DecodeInternal(PyObject *object,
+ PyObject *decoder,
+ const char *encoding,
+ const char *errors)
+{
+ PyObject *args = NULL, *result = NULL;
+ PyObject *v;
+
+ args = args_tuple(object, errors);
+ if (args == NULL)
+ goto onError;
+
+ result = PyObject_Call(decoder, args, NULL);
+ if (result == NULL) {
+ _PyErr_FormatNote("%s with '%s' codec failed", "decoding", encoding);
+ goto onError;
+ }
+ if (!PyTuple_Check(result) ||
+ PyTuple_GET_SIZE(result) != 2) {
+ PyErr_SetString(PyExc_TypeError,
+ "decoder must return a tuple (object,integer)");
+ goto onError;
+ }
+ v = Py_NewRef(PyTuple_GET_ITEM(result,0));
+ /* We don't check or use the second (integer) entry. */
+
+ Py_DECREF(args);
+ Py_DECREF(decoder);
+ Py_DECREF(result);
+ return v;
+
+ onError:
+ Py_XDECREF(args);
+ Py_XDECREF(decoder);
+ Py_XDECREF(result);
+ return NULL;
+}
+
+/* Generic encoding/decoding API */
+PyObject *PyCodec_Encode(PyObject *object,
+ const char *encoding,
+ const char *errors)
+{
+ PyObject *encoder;
+
+ encoder = PyCodec_Encoder(encoding);
+ if (encoder == NULL)
+ return NULL;
+
+ return _PyCodec_EncodeInternal(object, encoder, encoding, errors);
+}
+
+PyObject *PyCodec_Decode(PyObject *object,
+ const char *encoding,
+ const char *errors)
+{
+ PyObject *decoder;
+
+ decoder = PyCodec_Decoder(encoding);
+ if (decoder == NULL)
+ return NULL;
+
+ return _PyCodec_DecodeInternal(object, decoder, encoding, errors);
+}
+
+/* Text encoding/decoding API */
+PyObject * _PyCodec_LookupTextEncoding(const char *encoding,
+ const char *alternate_command)
+{
+ PyObject *codec;
+ PyObject *attr;
+ int is_text_codec;
+
+ codec = _PyCodec_Lookup(encoding);
+ if (codec == NULL)
+ return NULL;
+
+ /* Backwards compatibility: assume any raw tuple describes a text
+ * encoding, and the same for anything lacking the private
+ * attribute.
+ */
+ if (!PyTuple_CheckExact(codec)) {
+ if (_PyObject_LookupAttr(codec, &_Py_ID(_is_text_encoding), &attr) < 0) {
+ Py_DECREF(codec);
+ return NULL;
+ }
+ if (attr != NULL) {
+ is_text_codec = PyObject_IsTrue(attr);
+ Py_DECREF(attr);
+ if (is_text_codec <= 0) {
+ Py_DECREF(codec);
+ if (!is_text_codec)
+ PyErr_Format(PyExc_LookupError,
+ "'%.400s' is not a text encoding; "
+ "use %s to handle arbitrary codecs",
+ encoding, alternate_command);
+ return NULL;
+ }
+ }
+ }
+
+ /* This appears to be a valid text encoding */
+ return codec;
+}
+
+
+static
+PyObject *codec_getitem_checked(const char *encoding,
+ const char *alternate_command,
+ int index)
+{
+ PyObject *codec;
+ PyObject *v;
+
+ codec = _PyCodec_LookupTextEncoding(encoding, alternate_command);
+ if (codec == NULL)
+ return NULL;
+
+ v = Py_NewRef(PyTuple_GET_ITEM(codec, index));
+ Py_DECREF(codec);
+ return v;
+}
+
+static PyObject * _PyCodec_TextEncoder(const char *encoding)
+{
+ return codec_getitem_checked(encoding, "codecs.encode()", 0);
+}
+
+static PyObject * _PyCodec_TextDecoder(const char *encoding)
+{
+ return codec_getitem_checked(encoding, "codecs.decode()", 1);
+}
+
+PyObject *_PyCodec_EncodeText(PyObject *object,
+ const char *encoding,
+ const char *errors)
+{
+ PyObject *encoder;
+
+ encoder = _PyCodec_TextEncoder(encoding);
+ if (encoder == NULL)
+ return NULL;
+
+ return _PyCodec_EncodeInternal(object, encoder, encoding, errors);
+}
+
+PyObject *_PyCodec_DecodeText(PyObject *object,
+ const char *encoding,
+ const char *errors)
+{
+ PyObject *decoder;
+
+ decoder = _PyCodec_TextDecoder(encoding);
+ if (decoder == NULL)
+ return NULL;
+
+ return _PyCodec_DecodeInternal(object, decoder, encoding, errors);
+}
+
+/* Register the error handling callback function error under the name
+ name. This function will be called by the codec when it encounters
+ an unencodable characters/undecodable bytes and doesn't know the
+ callback name, when name is specified as the error parameter
+ in the call to the encode/decode function.
+ Return 0 on success, -1 on error */
+int PyCodec_RegisterError(const char *name, PyObject *error)
+{
+ PyInterpreterState *interp = _PyInterpreterState_GET();
+ if (interp->codec_search_path == NULL && _PyCodecRegistry_Init())
+ return -1;
+ if (!PyCallable_Check(error)) {
+ PyErr_SetString(PyExc_TypeError, "handler must be callable");
+ return -1;
+ }
+ return PyDict_SetItemString(interp->codec_error_registry,
+ name, error);
+}
+
+/* Lookup the error handling callback function registered under the
+ name error. As a special case NULL can be passed, in which case
+ the error handling callback for strict encoding will be returned. */
+PyObject *PyCodec_LookupError(const char *name)
+{
+ PyObject *handler = NULL;
+
+ PyInterpreterState *interp = _PyInterpreterState_GET();
+ if (interp->codec_search_path == NULL && _PyCodecRegistry_Init())
+ return NULL;
+
+ if (name==NULL)
+ name = "strict";
+ handler = _PyDict_GetItemStringWithError(interp->codec_error_registry, name);
+ if (handler) {
+ Py_INCREF(handler);
+ }
+ else if (!PyErr_Occurred()) {
+ PyErr_Format(PyExc_LookupError, "unknown error handler name '%.400s'", name);
+ }
+ return handler;
+}
+
+static void wrong_exception_type(PyObject *exc)
+{
+ PyErr_Format(PyExc_TypeError,
+ "don't know how to handle %.200s in error callback",
+ Py_TYPE(exc)->tp_name);
+}
+
+PyObject *PyCodec_StrictErrors(PyObject *exc)
+{
+ if (PyExceptionInstance_Check(exc))
+ PyErr_SetObject(PyExceptionInstance_Class(exc), exc);
+ else
+ PyErr_SetString(PyExc_TypeError, "codec must pass exception instance");
+ return NULL;
+}
+
+
+PyObject *PyCodec_IgnoreErrors(PyObject *exc)
+{
+ Py_ssize_t end;
+
+ if (PyObject_TypeCheck(exc, (PyTypeObject *)PyExc_UnicodeEncodeError)) {
+ if (PyUnicodeEncodeError_GetEnd(exc, &end))
+ return NULL;
+ }
+ else if (PyObject_TypeCheck(exc, (PyTypeObject *)PyExc_UnicodeDecodeError)) {
+ if (PyUnicodeDecodeError_GetEnd(exc, &end))
+ return NULL;
+ }
+ else if (PyObject_TypeCheck(exc, (PyTypeObject *)PyExc_UnicodeTranslateError)) {
+ if (PyUnicodeTranslateError_GetEnd(exc, &end))
+ return NULL;
+ }
+ else {
+ wrong_exception_type(exc);
+ return NULL;
+ }
+ return Py_BuildValue("(Nn)", PyUnicode_New(0, 0), end);
+}
+
+
+PyObject *PyCodec_ReplaceErrors(PyObject *exc)
+{
+ Py_ssize_t start, end, i, len;
+
+ if (PyObject_TypeCheck(exc, (PyTypeObject *)PyExc_UnicodeEncodeError)) {
+ PyObject *res;
+ Py_UCS1 *outp;
+ if (PyUnicodeEncodeError_GetStart(exc, &start))
+ return NULL;
+ if (PyUnicodeEncodeError_GetEnd(exc, &end))
+ return NULL;
+ len = end - start;
+ res = PyUnicode_New(len, '?');
+ if (res == NULL)
+ return NULL;
+ assert(PyUnicode_KIND(res) == PyUnicode_1BYTE_KIND);
+ outp = PyUnicode_1BYTE_DATA(res);
+ for (i = 0; i < len; ++i)
+ outp[i] = '?';
+ assert(_PyUnicode_CheckConsistency(res, 1));
+ return Py_BuildValue("(Nn)", res, end);
+ }
+ else if (PyObject_TypeCheck(exc, (PyTypeObject *)PyExc_UnicodeDecodeError)) {
+ if (PyUnicodeDecodeError_GetEnd(exc, &end))
+ return NULL;
+ return Py_BuildValue("(Cn)",
+ (int)Py_UNICODE_REPLACEMENT_CHARACTER,
+ end);
+ }
+ else if (PyObject_TypeCheck(exc, (PyTypeObject *)PyExc_UnicodeTranslateError)) {
+ PyObject *res;
+ Py_UCS2 *outp;
+ if (PyUnicodeTranslateError_GetStart(exc, &start))
+ return NULL;
+ if (PyUnicodeTranslateError_GetEnd(exc, &end))
+ return NULL;
+ len = end - start;
+ res = PyUnicode_New(len, Py_UNICODE_REPLACEMENT_CHARACTER);
+ if (res == NULL)
+ return NULL;
+ assert(PyUnicode_KIND(res) == PyUnicode_2BYTE_KIND);
+ outp = PyUnicode_2BYTE_DATA(res);
+ for (i = 0; i < len; i++)
+ outp[i] = Py_UNICODE_REPLACEMENT_CHARACTER;
+ assert(_PyUnicode_CheckConsistency(res, 1));
+ return Py_BuildValue("(Nn)", res, end);
+ }
+ else {
+ wrong_exception_type(exc);
+ return NULL;
+ }
+}
+
+PyObject *PyCodec_XMLCharRefReplaceErrors(PyObject *exc)
+{
+ if (PyObject_TypeCheck(exc, (PyTypeObject *)PyExc_UnicodeEncodeError)) {
+ PyObject *restuple;
+ PyObject *object;
+ Py_ssize_t i;
+ Py_ssize_t start;
+ Py_ssize_t end;
+ PyObject *res;
+ Py_UCS1 *outp;
+ Py_ssize_t ressize;
+ Py_UCS4 ch;
+ if (PyUnicodeEncodeError_GetStart(exc, &start))
+ return NULL;
+ if (PyUnicodeEncodeError_GetEnd(exc, &end))
+ return NULL;
+ if (!(object = PyUnicodeEncodeError_GetObject(exc)))
+ return NULL;
+ if (end - start > PY_SSIZE_T_MAX / (2+7+1))
+ end = start + PY_SSIZE_T_MAX / (2+7+1);
+ for (i = start, ressize = 0; i < end; ++i) {
+ /* object is guaranteed to be "ready" */
+ ch = PyUnicode_READ_CHAR(object, i);
+ if (ch<10)
+ ressize += 2+1+1;
+ else if (ch<100)
+ ressize += 2+2+1;
+ else if (ch<1000)
+ ressize += 2+3+1;
+ else if (ch<10000)
+ ressize += 2+4+1;
+ else if (ch<100000)
+ ressize += 2+5+1;
+ else if (ch<1000000)
+ ressize += 2+6+1;
+ else
+ ressize += 2+7+1;
+ }
+ /* allocate replacement */
+ res = PyUnicode_New(ressize, 127);
+ if (res == NULL) {
+ Py_DECREF(object);
+ return NULL;
+ }
+ outp = PyUnicode_1BYTE_DATA(res);
+ /* generate replacement */
+ for (i = start; i < end; ++i) {
+ int digits;
+ int base;
+ ch = PyUnicode_READ_CHAR(object, i);
+ *outp++ = '&';
+ *outp++ = '#';
+ if (ch<10) {
+ digits = 1;
+ base = 1;
+ }
+ else if (ch<100) {
+ digits = 2;
+ base = 10;
+ }
+ else if (ch<1000) {
+ digits = 3;
+ base = 100;
+ }
+ else if (ch<10000) {
+ digits = 4;
+ base = 1000;
+ }
+ else if (ch<100000) {
+ digits = 5;
+ base = 10000;
+ }
+ else if (ch<1000000) {
+ digits = 6;
+ base = 100000;
+ }
+ else {
+ digits = 7;
+ base = 1000000;
+ }
+ while (digits-->0) {
+ *outp++ = '0' + ch/base;
+ ch %= base;
+ base /= 10;
+ }
+ *outp++ = ';';
+ }
+ assert(_PyUnicode_CheckConsistency(res, 1));
+ restuple = Py_BuildValue("(Nn)", res, end);
+ Py_DECREF(object);
+ return restuple;
+ }
+ else {
+ wrong_exception_type(exc);
+ return NULL;
+ }
+}
+
+PyObject *PyCodec_BackslashReplaceErrors(PyObject *exc)
+{
+ PyObject *object;
+ Py_ssize_t i;
+ Py_ssize_t start;
+ Py_ssize_t end;
+ PyObject *res;
+ Py_UCS1 *outp;
+ int ressize;
+ Py_UCS4 c;
+
+ if (PyObject_TypeCheck(exc, (PyTypeObject *)PyExc_UnicodeDecodeError)) {
+ const unsigned char *p;
+ if (PyUnicodeDecodeError_GetStart(exc, &start))
+ return NULL;
+ if (PyUnicodeDecodeError_GetEnd(exc, &end))
+ return NULL;
+ if (!(object = PyUnicodeDecodeError_GetObject(exc)))
+ return NULL;
+ p = (const unsigned char*)PyBytes_AS_STRING(object);
+ res = PyUnicode_New(4 * (end - start), 127);
+ if (res == NULL) {
+ Py_DECREF(object);
+ return NULL;
+ }
+ outp = PyUnicode_1BYTE_DATA(res);
+ for (i = start; i < end; i++, outp += 4) {
+ unsigned char c = p[i];
+ outp[0] = '\\';
+ outp[1] = 'x';
+ outp[2] = Py_hexdigits[(c>>4)&0xf];
+ outp[3] = Py_hexdigits[c&0xf];
+ }
+
+ assert(_PyUnicode_CheckConsistency(res, 1));
+ Py_DECREF(object);
+ return Py_BuildValue("(Nn)", res, end);
+ }
+ if (PyObject_TypeCheck(exc, (PyTypeObject *)PyExc_UnicodeEncodeError)) {
+ if (PyUnicodeEncodeError_GetStart(exc, &start))
+ return NULL;
+ if (PyUnicodeEncodeError_GetEnd(exc, &end))
+ return NULL;
+ if (!(object = PyUnicodeEncodeError_GetObject(exc)))
+ return NULL;
+ }
+ else if (PyObject_TypeCheck(exc, (PyTypeObject *)PyExc_UnicodeTranslateError)) {
+ if (PyUnicodeTranslateError_GetStart(exc, &start))
+ return NULL;
+ if (PyUnicodeTranslateError_GetEnd(exc, &end))
+ return NULL;
+ if (!(object = PyUnicodeTranslateError_GetObject(exc)))
+ return NULL;
+ }
+ else {
+ wrong_exception_type(exc);
+ return NULL;
+ }
+
+ if (end - start > PY_SSIZE_T_MAX / (1+1+8))
+ end = start + PY_SSIZE_T_MAX / (1+1+8);
+ for (i = start, ressize = 0; i < end; ++i) {
+ /* object is guaranteed to be "ready" */
+ c = PyUnicode_READ_CHAR(object, i);
+ if (c >= 0x10000) {
+ ressize += 1+1+8;
+ }
+ else if (c >= 0x100) {
+ ressize += 1+1+4;
+ }
+ else
+ ressize += 1+1+2;
+ }
+ res = PyUnicode_New(ressize, 127);
+ if (res == NULL) {
+ Py_DECREF(object);
+ return NULL;
+ }
+ outp = PyUnicode_1BYTE_DATA(res);
+ for (i = start; i < end; ++i) {
+ c = PyUnicode_READ_CHAR(object, i);
+ *outp++ = '\\';
+ if (c >= 0x00010000) {
+ *outp++ = 'U';
+ *outp++ = Py_hexdigits[(c>>28)&0xf];
+ *outp++ = Py_hexdigits[(c>>24)&0xf];
+ *outp++ = Py_hexdigits[(c>>20)&0xf];
+ *outp++ = Py_hexdigits[(c>>16)&0xf];
+ *outp++ = Py_hexdigits[(c>>12)&0xf];
+ *outp++ = Py_hexdigits[(c>>8)&0xf];
+ }
+ else if (c >= 0x100) {
+ *outp++ = 'u';
+ *outp++ = Py_hexdigits[(c>>12)&0xf];
+ *outp++ = Py_hexdigits[(c>>8)&0xf];
+ }
+ else
+ *outp++ = 'x';
+ *outp++ = Py_hexdigits[(c>>4)&0xf];
+ *outp++ = Py_hexdigits[c&0xf];
+ }
+
+ assert(_PyUnicode_CheckConsistency(res, 1));
+ Py_DECREF(object);
+ return Py_BuildValue("(Nn)", res, end);
+}
+
+static _PyUnicode_Name_CAPI *ucnhash_capi = NULL;
+
+PyObject *PyCodec_NameReplaceErrors(PyObject *exc)
+{
+ if (PyObject_TypeCheck(exc, (PyTypeObject *)PyExc_UnicodeEncodeError)) {
+ PyObject *restuple;
+ PyObject *object;
+ Py_ssize_t i;
+ Py_ssize_t start;
+ Py_ssize_t end;
+ PyObject *res;
+ Py_UCS1 *outp;
+ Py_ssize_t ressize;
+ int replsize;
+ Py_UCS4 c;
+ char buffer[256]; /* NAME_MAXLEN */
+ if (PyUnicodeEncodeError_GetStart(exc, &start))
+ return NULL;
+ if (PyUnicodeEncodeError_GetEnd(exc, &end))
+ return NULL;
+ if (!(object = PyUnicodeEncodeError_GetObject(exc)))
+ return NULL;
+ if (!ucnhash_capi) {
+ /* load the unicode data module */
+ ucnhash_capi = (_PyUnicode_Name_CAPI *)PyCapsule_Import(
+ PyUnicodeData_CAPSULE_NAME, 1);
+ if (!ucnhash_capi) {
+ return NULL;
+ }
+ }
+ for (i = start, ressize = 0; i < end; ++i) {
+ /* object is guaranteed to be "ready" */
+ c = PyUnicode_READ_CHAR(object, i);
+ if (ucnhash_capi->getname(c, buffer, sizeof(buffer), 1)) {
+ replsize = 1+1+1+(int)strlen(buffer)+1;
+ }
+ else if (c >= 0x10000) {
+ replsize = 1+1+8;
+ }
+ else if (c >= 0x100) {
+ replsize = 1+1+4;
+ }
+ else
+ replsize = 1+1+2;
+ if (ressize > PY_SSIZE_T_MAX - replsize)
+ break;
+ ressize += replsize;
+ }
+ end = i;
+ res = PyUnicode_New(ressize, 127);
+ if (res==NULL)
+ return NULL;
+ for (i = start, outp = PyUnicode_1BYTE_DATA(res);
+ i < end; ++i) {
+ c = PyUnicode_READ_CHAR(object, i);
+ *outp++ = '\\';
+ if (ucnhash_capi->getname(c, buffer, sizeof(buffer), 1)) {
+ *outp++ = 'N';
+ *outp++ = '{';
+ strcpy((char *)outp, buffer);
+ outp += strlen(buffer);
+ *outp++ = '}';
+ continue;
+ }
+ if (c >= 0x00010000) {
+ *outp++ = 'U';
+ *outp++ = Py_hexdigits[(c>>28)&0xf];
+ *outp++ = Py_hexdigits[(c>>24)&0xf];
+ *outp++ = Py_hexdigits[(c>>20)&0xf];
+ *outp++ = Py_hexdigits[(c>>16)&0xf];
+ *outp++ = Py_hexdigits[(c>>12)&0xf];
+ *outp++ = Py_hexdigits[(c>>8)&0xf];
+ }
+ else if (c >= 0x100) {
+ *outp++ = 'u';
+ *outp++ = Py_hexdigits[(c>>12)&0xf];
+ *outp++ = Py_hexdigits[(c>>8)&0xf];
+ }
+ else
+ *outp++ = 'x';
+ *outp++ = Py_hexdigits[(c>>4)&0xf];
+ *outp++ = Py_hexdigits[c&0xf];
+ }
+
+ assert(outp == PyUnicode_1BYTE_DATA(res) + ressize);
+ assert(_PyUnicode_CheckConsistency(res, 1));
+ restuple = Py_BuildValue("(Nn)", res, end);
+ Py_DECREF(object);
+ return restuple;
+ }
+ else {
+ wrong_exception_type(exc);
+ return NULL;
+ }
+}
+
+#define ENC_UNKNOWN -1
+#define ENC_UTF8 0
+#define ENC_UTF16BE 1
+#define ENC_UTF16LE 2
+#define ENC_UTF32BE 3
+#define ENC_UTF32LE 4
+
+static int
+get_standard_encoding(const char *encoding, int *bytelength)
+{
+ if (Py_TOLOWER(encoding[0]) == 'u' &&
+ Py_TOLOWER(encoding[1]) == 't' &&
+ Py_TOLOWER(encoding[2]) == 'f') {
+ encoding += 3;
+ if (*encoding == '-' || *encoding == '_' )
+ encoding++;
+ if (encoding[0] == '8' && encoding[1] == '\0') {
+ *bytelength = 3;
+ return ENC_UTF8;
+ }
+ else if (encoding[0] == '1' && encoding[1] == '6') {
+ encoding += 2;
+ *bytelength = 2;
+ if (*encoding == '\0') {
+#ifdef WORDS_BIGENDIAN
+ return ENC_UTF16BE;
+#else
+ return ENC_UTF16LE;
+#endif
+ }
+ if (*encoding == '-' || *encoding == '_' )
+ encoding++;
+ if (Py_TOLOWER(encoding[1]) == 'e' && encoding[2] == '\0') {
+ if (Py_TOLOWER(encoding[0]) == 'b')
+ return ENC_UTF16BE;
+ if (Py_TOLOWER(encoding[0]) == 'l')
+ return ENC_UTF16LE;
+ }
+ }
+ else if (encoding[0] == '3' && encoding[1] == '2') {
+ encoding += 2;
+ *bytelength = 4;
+ if (*encoding == '\0') {
+#ifdef WORDS_BIGENDIAN
+ return ENC_UTF32BE;
+#else
+ return ENC_UTF32LE;
+#endif
+ }
+ if (*encoding == '-' || *encoding == '_' )
+ encoding++;
+ if (Py_TOLOWER(encoding[1]) == 'e' && encoding[2] == '\0') {
+ if (Py_TOLOWER(encoding[0]) == 'b')
+ return ENC_UTF32BE;
+ if (Py_TOLOWER(encoding[0]) == 'l')
+ return ENC_UTF32LE;
+ }
+ }
+ }
+ else if (strcmp(encoding, "CP_UTF8") == 0) {
+ *bytelength = 3;
+ return ENC_UTF8;
+ }
+ return ENC_UNKNOWN;
+}
+
+/* This handler is declared static until someone demonstrates
+ a need to call it directly. */
+static PyObject *
+PyCodec_SurrogatePassErrors(PyObject *exc)
+{
+ PyObject *restuple;
+ PyObject *object;
+ PyObject *encode;
+ const char *encoding;
+ int code;
+ int bytelength;
+ Py_ssize_t i;
+ Py_ssize_t start;
+ Py_ssize_t end;
+ PyObject *res;
+
+ if (PyObject_TypeCheck(exc, (PyTypeObject *)PyExc_UnicodeEncodeError)) {
+ unsigned char *outp;
+ if (PyUnicodeEncodeError_GetStart(exc, &start))
+ return NULL;
+ if (PyUnicodeEncodeError_GetEnd(exc, &end))
+ return NULL;
+ if (!(object = PyUnicodeEncodeError_GetObject(exc)))
+ return NULL;
+ if (!(encode = PyUnicodeEncodeError_GetEncoding(exc))) {
+ Py_DECREF(object);
+ return NULL;
+ }
+ if (!(encoding = PyUnicode_AsUTF8(encode))) {
+ Py_DECREF(object);
+ Py_DECREF(encode);
+ return NULL;
+ }
+ code = get_standard_encoding(encoding, &bytelength);
+ Py_DECREF(encode);
+ if (code == ENC_UNKNOWN) {
+ /* Not supported, fail with original exception */
+ PyErr_SetObject(PyExceptionInstance_Class(exc), exc);
+ Py_DECREF(object);
+ return NULL;
+ }
+
+ if (end - start > PY_SSIZE_T_MAX / bytelength)
+ end = start + PY_SSIZE_T_MAX / bytelength;
+ res = PyBytes_FromStringAndSize(NULL, bytelength*(end-start));
+ if (!res) {
+ Py_DECREF(object);
+ return NULL;
+ }
+ outp = (unsigned char*)PyBytes_AsString(res);
+ for (i = start; i < end; i++) {
+ /* object is guaranteed to be "ready" */
+ Py_UCS4 ch = PyUnicode_READ_CHAR(object, i);
+ if (!Py_UNICODE_IS_SURROGATE(ch)) {
+ /* Not a surrogate, fail with original exception */
+ PyErr_SetObject(PyExceptionInstance_Class(exc), exc);
+ Py_DECREF(res);
+ Py_DECREF(object);
+ return NULL;
+ }
+ switch (code) {
+ case ENC_UTF8:
+ *outp++ = (unsigned char)(0xe0 | (ch >> 12));
+ *outp++ = (unsigned char)(0x80 | ((ch >> 6) & 0x3f));
+ *outp++ = (unsigned char)(0x80 | (ch & 0x3f));
+ break;
+ case ENC_UTF16LE:
+ *outp++ = (unsigned char) ch;
+ *outp++ = (unsigned char)(ch >> 8);
+ break;
+ case ENC_UTF16BE:
+ *outp++ = (unsigned char)(ch >> 8);
+ *outp++ = (unsigned char) ch;
+ break;
+ case ENC_UTF32LE:
+ *outp++ = (unsigned char) ch;
+ *outp++ = (unsigned char)(ch >> 8);
+ *outp++ = (unsigned char)(ch >> 16);
+ *outp++ = (unsigned char)(ch >> 24);
+ break;
+ case ENC_UTF32BE:
+ *outp++ = (unsigned char)(ch >> 24);
+ *outp++ = (unsigned char)(ch >> 16);
+ *outp++ = (unsigned char)(ch >> 8);
+ *outp++ = (unsigned char) ch;
+ break;
+ }
+ }
+ restuple = Py_BuildValue("(On)", res, end);
+ Py_DECREF(res);
+ Py_DECREF(object);
+ return restuple;
+ }
+ else if (PyObject_TypeCheck(exc, (PyTypeObject *)PyExc_UnicodeDecodeError)) {
+ const unsigned char *p;
+ Py_UCS4 ch = 0;
+ if (PyUnicodeDecodeError_GetStart(exc, &start))
+ return NULL;
+ if (PyUnicodeDecodeError_GetEnd(exc, &end))
+ return NULL;
+ if (!(object = PyUnicodeDecodeError_GetObject(exc)))
+ return NULL;
+ p = (const unsigned char*)PyBytes_AS_STRING(object);
+ if (!(encode = PyUnicodeDecodeError_GetEncoding(exc))) {
+ Py_DECREF(object);
+ return NULL;
+ }
+ if (!(encoding = PyUnicode_AsUTF8(encode))) {
+ Py_DECREF(object);
+ Py_DECREF(encode);
+ return NULL;
+ }
+ code = get_standard_encoding(encoding, &bytelength);
+ Py_DECREF(encode);
+ if (code == ENC_UNKNOWN) {
+ /* Not supported, fail with original exception */
+ PyErr_SetObject(PyExceptionInstance_Class(exc), exc);
+ Py_DECREF(object);
+ return NULL;
+ }
+
+ /* Try decoding a single surrogate character. If
+ there are more, let the codec call us again. */
+ p += start;
+ if (PyBytes_GET_SIZE(object) - start >= bytelength) {
+ switch (code) {
+ case ENC_UTF8:
+ if ((p[0] & 0xf0) == 0xe0 &&
+ (p[1] & 0xc0) == 0x80 &&
+ (p[2] & 0xc0) == 0x80) {
+ /* it's a three-byte code */
+ ch = ((p[0] & 0x0f) << 12) + ((p[1] & 0x3f) << 6) + (p[2] & 0x3f);
+ }
+ break;
+ case ENC_UTF16LE:
+ ch = p[1] << 8 | p[0];
+ break;
+ case ENC_UTF16BE:
+ ch = p[0] << 8 | p[1];
+ break;
+ case ENC_UTF32LE:
+ ch = (p[3] << 24) | (p[2] << 16) | (p[1] << 8) | p[0];
+ break;
+ case ENC_UTF32BE:
+ ch = (p[0] << 24) | (p[1] << 16) | (p[2] << 8) | p[3];
+ break;
+ }
+ }
+
+ Py_DECREF(object);
+ if (!Py_UNICODE_IS_SURROGATE(ch)) {
+ /* it's not a surrogate - fail */
+ PyErr_SetObject(PyExceptionInstance_Class(exc), exc);
+ return NULL;
+ }
+ res = PyUnicode_FromOrdinal(ch);
+ if (res == NULL)
+ return NULL;
+ return Py_BuildValue("(Nn)", res, start + bytelength);
+ }
+ else {
+ wrong_exception_type(exc);
+ return NULL;
+ }
+}
+
+static PyObject *
+PyCodec_SurrogateEscapeErrors(PyObject *exc)
+{
+ PyObject *restuple;
+ PyObject *object;
+ Py_ssize_t i;
+ Py_ssize_t start;
+ Py_ssize_t end;
+ PyObject *res;
+
+ if (PyObject_TypeCheck(exc, (PyTypeObject *)PyExc_UnicodeEncodeError)) {
+ char *outp;
+ if (PyUnicodeEncodeError_GetStart(exc, &start))
+ return NULL;
+ if (PyUnicodeEncodeError_GetEnd(exc, &end))
+ return NULL;
+ if (!(object = PyUnicodeEncodeError_GetObject(exc)))
+ return NULL;
+ res = PyBytes_FromStringAndSize(NULL, end-start);
+ if (!res) {
+ Py_DECREF(object);
+ return NULL;
+ }
+ outp = PyBytes_AsString(res);
+ for (i = start; i < end; i++) {
+ /* object is guaranteed to be "ready" */
+ Py_UCS4 ch = PyUnicode_READ_CHAR(object, i);
+ if (ch < 0xdc80 || ch > 0xdcff) {
+ /* Not a UTF-8b surrogate, fail with original exception */
+ PyErr_SetObject(PyExceptionInstance_Class(exc), exc);
+ Py_DECREF(res);
+ Py_DECREF(object);
+ return NULL;
+ }
+ *outp++ = ch - 0xdc00;
+ }
+ restuple = Py_BuildValue("(On)", res, end);
+ Py_DECREF(res);
+ Py_DECREF(object);
+ return restuple;
+ }
+ else if (PyObject_TypeCheck(exc, (PyTypeObject *)PyExc_UnicodeDecodeError)) {
+ PyObject *str;
+ const unsigned char *p;
+ Py_UCS2 ch[4]; /* decode up to 4 bad bytes. */
+ int consumed = 0;
+ if (PyUnicodeDecodeError_GetStart(exc, &start))
+ return NULL;
+ if (PyUnicodeDecodeError_GetEnd(exc, &end))
+ return NULL;
+ if (!(object = PyUnicodeDecodeError_GetObject(exc)))
+ return NULL;
+ p = (const unsigned char*)PyBytes_AS_STRING(object);
+ while (consumed < 4 && consumed < end-start) {
+ /* Refuse to escape ASCII bytes. */
+ if (p[start+consumed] < 128)
+ break;
+ ch[consumed] = 0xdc00 + p[start+consumed];
+ consumed++;
+ }
+ Py_DECREF(object);
+ if (!consumed) {
+ /* codec complained about ASCII byte. */
+ PyErr_SetObject(PyExceptionInstance_Class(exc), exc);
+ return NULL;
+ }
+ str = PyUnicode_FromKindAndData(PyUnicode_2BYTE_KIND, ch, consumed);
+ if (str == NULL)
+ return NULL;
+ return Py_BuildValue("(Nn)", str, start+consumed);
+ }
+ else {
+ wrong_exception_type(exc);
+ return NULL;
+ }
+}
+
+
+static PyObject *strict_errors(PyObject *self, PyObject *exc)
+{
+ return PyCodec_StrictErrors(exc);
+}
+
+
+static PyObject *ignore_errors(PyObject *self, PyObject *exc)
+{
+ return PyCodec_IgnoreErrors(exc);
+}
+
+
+static PyObject *replace_errors(PyObject *self, PyObject *exc)
+{
+ return PyCodec_ReplaceErrors(exc);
+}
+
+
+static PyObject *xmlcharrefreplace_errors(PyObject *self, PyObject *exc)
+{
+ return PyCodec_XMLCharRefReplaceErrors(exc);
+}
+
+
+static PyObject *backslashreplace_errors(PyObject *self, PyObject *exc)
+{
+ return PyCodec_BackslashReplaceErrors(exc);
+}
+
+static PyObject *namereplace_errors(PyObject *self, PyObject *exc)
+{
+ return PyCodec_NameReplaceErrors(exc);
+}
+
+static PyObject *surrogatepass_errors(PyObject *self, PyObject *exc)
+{
+ return PyCodec_SurrogatePassErrors(exc);
+}
+
+static PyObject *surrogateescape_errors(PyObject *self, PyObject *exc)
+{
+ return PyCodec_SurrogateEscapeErrors(exc);
+}
+
+static int _PyCodecRegistry_Init(void)
+{
+ static struct {
+ const char *name;
+ PyMethodDef def;
+ } methods[] =
+ {
+ {
+ "strict",
+ {
+ "strict_errors",
+ strict_errors,
+ METH_O,
+ PyDoc_STR("Implements the 'strict' error handling, which "
+ "raises a UnicodeError on coding errors.")
+ }
+ },
+ {
+ "ignore",
+ {
+ "ignore_errors",
+ ignore_errors,
+ METH_O,
+ PyDoc_STR("Implements the 'ignore' error handling, which "
+ "ignores malformed data and continues.")
+ }
+ },
+ {
+ "replace",
+ {
+ "replace_errors",
+ replace_errors,
+ METH_O,
+ PyDoc_STR("Implements the 'replace' error handling, which "
+ "replaces malformed data with a replacement marker.")
+ }
+ },
+ {
+ "xmlcharrefreplace",
+ {
+ "xmlcharrefreplace_errors",
+ xmlcharrefreplace_errors,
+ METH_O,
+ PyDoc_STR("Implements the 'xmlcharrefreplace' error handling, "
+ "which replaces an unencodable character with the "
+ "appropriate XML character reference.")
+ }
+ },
+ {
+ "backslashreplace",
+ {
+ "backslashreplace_errors",
+ backslashreplace_errors,
+ METH_O,
+ PyDoc_STR("Implements the 'backslashreplace' error handling, "
+ "which replaces malformed data with a backslashed "
+ "escape sequence.")
+ }
+ },
+ {
+ "namereplace",
+ {
+ "namereplace_errors",
+ namereplace_errors,
+ METH_O,
+ PyDoc_STR("Implements the 'namereplace' error handling, "
+ "which replaces an unencodable character with a "
+ "\\N{...} escape sequence.")
+ }
+ },
+ {
+ "surrogatepass",
+ {
+ "surrogatepass",
+ surrogatepass_errors,
+ METH_O
+ }
+ },
+ {
+ "surrogateescape",
+ {
+ "surrogateescape",
+ surrogateescape_errors,
+ METH_O
+ }
+ }
+ };
+
+ PyInterpreterState *interp = _PyInterpreterState_GET();
+ PyObject *mod;
+
+ if (interp->codec_search_path != NULL)
+ return 0;
+
+ interp->codec_search_path = PyList_New(0);
+ if (interp->codec_search_path == NULL) {
+ return -1;
+ }
+
+ interp->codec_search_cache = PyDict_New();
+ if (interp->codec_search_cache == NULL) {
+ return -1;
+ }
+
+ interp->codec_error_registry = PyDict_New();
+ if (interp->codec_error_registry == NULL) {
+ return -1;
+ }
+
+ for (size_t i = 0; i < Py_ARRAY_LENGTH(methods); ++i) {
+ PyObject *func = PyCFunction_NewEx(&methods[i].def, NULL, NULL);
+ if (!func) {
+ return -1;
+ }
+
+ int res = PyCodec_RegisterError(methods[i].name, func);
+ Py_DECREF(func);
+ if (res) {
+ return -1;
+ }
+ }
+
+ mod = PyImport_ImportModule("encodings");
+ if (mod == NULL) {
+ return -1;
+ }
+ Py_DECREF(mod);
+ interp->codecs_initialized = 1;
+ return 0;
+}
diff --git a/contrib/tools/python3/Python/compile.c b/contrib/tools/python3/Python/compile.c
new file mode 100644
index 00000000000..ddd7b5c795b
--- /dev/null
+++ b/contrib/tools/python3/Python/compile.c
@@ -0,0 +1,8144 @@
+/*
+ * This file compiles an abstract syntax tree (AST) into Python bytecode.
+ *
+ * The primary entry point is _PyAST_Compile(), which returns a
+ * PyCodeObject. The compiler makes several passes to build the code
+ * object:
+ * 1. Checks for future statements. See future.c
+ * 2. Builds a symbol table. See symtable.c.
+ * 3. Generate an instruction sequence. See compiler_mod() in this file.
+ * 4. Generate a control flow graph and run optimizations on it. See flowgraph.c.
+ * 5. Assemble the basic blocks into final code. See optimize_and_assemble() in
+ * this file, and assembler.c.
+ *
+ * Note that compiler_mod() suggests module, but the module ast type
+ * (mod_ty) has cases for expressions and interactive statements.
+ *
+ * CAUTION: The VISIT_* macros abort the current function when they
+ * encounter a problem. So don't invoke them when there is memory
+ * which needs to be released. Code blocks are OK, as the compiler
+ * structure takes care of releasing those. Use the arena to manage
+ * objects.
+ */
+
+#include <stdbool.h>
+
+#include "Python.h"
+#include "pycore_ast.h" // _PyAST_GetDocString()
+#define NEED_OPCODE_TABLES
+#include "pycore_opcode_utils.h"
+#undef NEED_OPCODE_TABLES
+#include "pycore_flowgraph.h"
+#include "pycore_code.h" // _PyCode_New()
+#include "pycore_compile.h"
+#include "pycore_intrinsics.h"
+#include "pycore_long.h" // _PyLong_GetZero()
+#include "pycore_pymem.h" // _PyMem_IsPtrFreed()
+#include "pycore_symtable.h" // PySTEntryObject, _PyFuture_FromAST()
+
+#include "opcode_metadata.h" // _PyOpcode_opcode_metadata, _PyOpcode_num_popped/pushed
+
+#define DEFAULT_CODE_SIZE 128
+#define DEFAULT_LNOTAB_SIZE 16
+#define DEFAULT_CNOTAB_SIZE 32
+
+#define COMP_GENEXP 0
+#define COMP_LISTCOMP 1
+#define COMP_SETCOMP 2
+#define COMP_DICTCOMP 3
+
+/* A soft limit for stack use, to avoid excessive
+ * memory use for large constants, etc.
+ *
+ * The value 30 is plucked out of thin air.
+ * Code that could use more stack than this is
+ * rare, so the exact value is unimportant.
+ */
+#define STACK_USE_GUIDELINE 30
+
+#undef SUCCESS
+#undef ERROR
+#define SUCCESS 0
+#define ERROR -1
+
+#define RETURN_IF_ERROR(X) \
+ if ((X) == -1) { \
+ return ERROR; \
+ }
+
+/* If we exceed this limit, it should
+ * be considered a compiler bug.
+ * Currently it should be impossible
+ * to exceed STACK_USE_GUIDELINE * 100,
+ * as 100 is the maximum parse depth.
+ * For performance reasons we will
+ * want to reduce this to a
+ * few hundred in the future.
+ *
+ * NOTE: Whatever MAX_ALLOWED_STACK_USE is
+ * set to, it should never restrict what Python
+ * we can write, just how we compile it.
+ */
+#define MAX_ALLOWED_STACK_USE (STACK_USE_GUIDELINE * 100)
+
+#define IS_TOP_LEVEL_AWAIT(C) ( \
+ ((C)->c_flags.cf_flags & PyCF_ALLOW_TOP_LEVEL_AWAIT) \
+ && ((C)->u->u_ste->ste_type == ModuleBlock))
+
+typedef _PyCompilerSrcLocation location;
+typedef _PyCfgInstruction cfg_instr;
+typedef _PyCfgBasicblock basicblock;
+typedef _PyCfgBuilder cfg_builder;
+
+#define LOCATION(LNO, END_LNO, COL, END_COL) \
+ ((const _PyCompilerSrcLocation){(LNO), (END_LNO), (COL), (END_COL)})
+
+/* Return true if loc1 starts after loc2 ends. */
+static inline bool
+location_is_after(location loc1, location loc2) {
+ return (loc1.lineno > loc2.end_lineno) ||
+ ((loc1.lineno == loc2.end_lineno) &&
+ (loc1.col_offset > loc2.end_col_offset));
+}
+
+#define LOC(x) SRC_LOCATION_FROM_AST(x)
+
+typedef _PyCfgJumpTargetLabel jump_target_label;
+
+static jump_target_label NO_LABEL = {-1};
+
+#define SAME_LABEL(L1, L2) ((L1).id == (L2).id)
+#define IS_LABEL(L) (!SAME_LABEL((L), (NO_LABEL)))
+
+#define NEW_JUMP_TARGET_LABEL(C, NAME) \
+ jump_target_label NAME = instr_sequence_new_label(INSTR_SEQUENCE(C)); \
+ if (!IS_LABEL(NAME)) { \
+ return ERROR; \
+ }
+
+#define USE_LABEL(C, LBL) \
+ RETURN_IF_ERROR(instr_sequence_use_label(INSTR_SEQUENCE(C), (LBL).id))
+
+
+/* fblockinfo tracks the current frame block.
+
+A frame block is used to handle loops, try/except, and try/finally.
+It's called a frame block to distinguish it from a basic block in the
+compiler IR.
+*/
+
+enum fblocktype { WHILE_LOOP, FOR_LOOP, TRY_EXCEPT, FINALLY_TRY, FINALLY_END,
+ WITH, ASYNC_WITH, HANDLER_CLEANUP, POP_VALUE, EXCEPTION_HANDLER,
+ EXCEPTION_GROUP_HANDLER, ASYNC_COMPREHENSION_GENERATOR };
+
+struct fblockinfo {
+ enum fblocktype fb_type;
+ jump_target_label fb_block;
+ /* (optional) type-specific exit or cleanup block */
+ jump_target_label fb_exit;
+ /* (optional) additional information required for unwinding */
+ void *fb_datum;
+};
+
+enum {
+ COMPILER_SCOPE_MODULE,
+ COMPILER_SCOPE_CLASS,
+ COMPILER_SCOPE_FUNCTION,
+ COMPILER_SCOPE_ASYNC_FUNCTION,
+ COMPILER_SCOPE_LAMBDA,
+ COMPILER_SCOPE_COMPREHENSION,
+ COMPILER_SCOPE_TYPEPARAMS,
+};
+
+
+int
+_PyCompile_InstrSize(int opcode, int oparg)
+{
+ assert(!IS_PSEUDO_OPCODE(opcode));
+ assert(HAS_ARG(opcode) || oparg == 0);
+ int extended_args = (0xFFFFFF < oparg) + (0xFFFF < oparg) + (0xFF < oparg);
+ int caches = _PyOpcode_Caches[opcode];
+ return extended_args + 1 + caches;
+}
+
+typedef _PyCompile_Instruction instruction;
+typedef _PyCompile_InstructionSequence instr_sequence;
+
+#define INITIAL_INSTR_SEQUENCE_SIZE 100
+#define INITIAL_INSTR_SEQUENCE_LABELS_MAP_SIZE 10
+
+/*
+ * Resize the array if index is out of range.
+ *
+ * idx: the index we want to access
+ * arr: pointer to the array
+ * alloc: pointer to the capacity of the array
+ * default_alloc: initial number of items
+ * item_size: size of each item
+ *
+ */
+int
+_PyCompile_EnsureArrayLargeEnough(int idx, void **array, int *alloc,
+ int default_alloc, size_t item_size)
+{
+ void *arr = *array;
+ if (arr == NULL) {
+ int new_alloc = default_alloc;
+ if (idx >= new_alloc) {
+ new_alloc = idx + default_alloc;
+ }
+ arr = PyObject_Calloc(new_alloc, item_size);
+ if (arr == NULL) {
+ PyErr_NoMemory();
+ return ERROR;
+ }
+ *alloc = new_alloc;
+ }
+ else if (idx >= *alloc) {
+ size_t oldsize = *alloc * item_size;
+ int new_alloc = *alloc << 1;
+ if (idx >= new_alloc) {
+ new_alloc = idx + default_alloc;
+ }
+ size_t newsize = new_alloc * item_size;
+
+ if (oldsize > (SIZE_MAX >> 1)) {
+ PyErr_NoMemory();
+ return ERROR;
+ }
+
+ assert(newsize > 0);
+ void *tmp = PyObject_Realloc(arr, newsize);
+ if (tmp == NULL) {
+ PyErr_NoMemory();
+ return ERROR;
+ }
+ *alloc = new_alloc;
+ arr = tmp;
+ memset((char *)arr + oldsize, 0, newsize - oldsize);
+ }
+
+ *array = arr;
+ return SUCCESS;
+}
+
+static int
+instr_sequence_next_inst(instr_sequence *seq) {
+ assert(seq->s_instrs != NULL || seq->s_used == 0);
+
+ RETURN_IF_ERROR(
+ _PyCompile_EnsureArrayLargeEnough(seq->s_used + 1,
+ (void**)&seq->s_instrs,
+ &seq->s_allocated,
+ INITIAL_INSTR_SEQUENCE_SIZE,
+ sizeof(instruction)));
+ assert(seq->s_allocated >= 0);
+ assert(seq->s_used < seq->s_allocated);
+ return seq->s_used++;
+}
+
+static jump_target_label
+instr_sequence_new_label(instr_sequence *seq)
+{
+ jump_target_label lbl = {++seq->s_next_free_label};
+ return lbl;
+}
+
+static int
+instr_sequence_use_label(instr_sequence *seq, int lbl) {
+ int old_size = seq->s_labelmap_size;
+ RETURN_IF_ERROR(
+ _PyCompile_EnsureArrayLargeEnough(lbl,
+ (void**)&seq->s_labelmap,
+ &seq->s_labelmap_size,
+ INITIAL_INSTR_SEQUENCE_LABELS_MAP_SIZE,
+ sizeof(int)));
+
+ for(int i = old_size; i < seq->s_labelmap_size; i++) {
+ seq->s_labelmap[i] = -111; /* something weird, for debugging */
+ }
+ seq->s_labelmap[lbl] = seq->s_used; /* label refers to the next instruction */
+ return SUCCESS;
+}
+
+static int
+instr_sequence_addop(instr_sequence *seq, int opcode, int oparg, location loc)
+{
+ assert(IS_WITHIN_OPCODE_RANGE(opcode));
+ assert(HAS_ARG(opcode) || HAS_TARGET(opcode) || oparg == 0);
+ assert(0 <= oparg && oparg < (1 << 30));
+
+ int idx = instr_sequence_next_inst(seq);
+ RETURN_IF_ERROR(idx);
+ instruction *ci = &seq->s_instrs[idx];
+ ci->i_opcode = opcode;
+ ci->i_oparg = oparg;
+ ci->i_loc = loc;
+ return SUCCESS;
+}
+
+static int
+instr_sequence_insert_instruction(instr_sequence *seq, int pos,
+ int opcode, int oparg, location loc)
+{
+ assert(pos >= 0 && pos <= seq->s_used);
+ int last_idx = instr_sequence_next_inst(seq);
+ RETURN_IF_ERROR(last_idx);
+ for (int i=last_idx-1; i >= pos; i--) {
+ seq->s_instrs[i+1] = seq->s_instrs[i];
+ }
+ instruction *ci = &seq->s_instrs[pos];
+ ci->i_opcode = opcode;
+ ci->i_oparg = oparg;
+ ci->i_loc = loc;
+
+ /* fix the labels map */
+ for(int lbl=0; lbl < seq->s_labelmap_size; lbl++) {
+ if (seq->s_labelmap[lbl] >= pos) {
+ seq->s_labelmap[lbl]++;
+ }
+ }
+ return SUCCESS;
+}
+
+static void
+instr_sequence_fini(instr_sequence *seq) {
+ PyObject_Free(seq->s_labelmap);
+ seq->s_labelmap = NULL;
+
+ PyObject_Free(seq->s_instrs);
+ seq->s_instrs = NULL;
+}
+
+static int
+instr_sequence_to_cfg(instr_sequence *seq, cfg_builder *g) {
+ memset(g, 0, sizeof(cfg_builder));
+ RETURN_IF_ERROR(_PyCfgBuilder_Init(g));
+
+ /* There can be more than one label for the same offset. The
+ * offset2lbl maping selects one of them which we use consistently.
+ */
+
+ int *offset2lbl = PyMem_Malloc(seq->s_used * sizeof(int));
+ if (offset2lbl == NULL) {
+ PyErr_NoMemory();
+ return ERROR;
+ }
+ for (int i = 0; i < seq->s_used; i++) {
+ offset2lbl[i] = -1;
+ }
+ for (int lbl=0; lbl < seq->s_labelmap_size; lbl++) {
+ int offset = seq->s_labelmap[lbl];
+ if (offset >= 0) {
+ assert(offset < seq->s_used);
+ offset2lbl[offset] = lbl;
+ }
+ }
+
+ for (int i = 0; i < seq->s_used; i++) {
+ int lbl = offset2lbl[i];
+ if (lbl >= 0) {
+ assert (lbl < seq->s_labelmap_size);
+ jump_target_label lbl_ = {lbl};
+ if (_PyCfgBuilder_UseLabel(g, lbl_) < 0) {
+ goto error;
+ }
+ }
+ instruction *instr = &seq->s_instrs[i];
+ int opcode = instr->i_opcode;
+ int oparg = instr->i_oparg;
+ if (HAS_TARGET(opcode)) {
+ int offset = seq->s_labelmap[oparg];
+ assert(offset >= 0 && offset < seq->s_used);
+ int lbl = offset2lbl[offset];
+ assert(lbl >= 0 && lbl < seq->s_labelmap_size);
+ oparg = lbl;
+ }
+ if (_PyCfgBuilder_Addop(g, opcode, oparg, instr->i_loc) < 0) {
+ goto error;
+ }
+ }
+ PyMem_Free(offset2lbl);
+
+ int nblocks = 0;
+ for (basicblock *b = g->g_block_list; b != NULL; b = b->b_list) {
+ nblocks++;
+ }
+ if ((size_t)nblocks > SIZE_MAX / sizeof(basicblock *)) {
+ PyErr_NoMemory();
+ return ERROR;
+ }
+ return SUCCESS;
+error:
+ PyMem_Free(offset2lbl);
+ return ERROR;
+}
+
+
+/* The following items change on entry and exit of code blocks.
+ They must be saved and restored when returning to a block.
+*/
+struct compiler_unit {
+ PySTEntryObject *u_ste;
+
+ int u_scope_type;
+
+ PyObject *u_private; /* for private name mangling */
+
+ instr_sequence u_instr_sequence; /* codegen output */
+
+ int u_nfblocks;
+ int u_in_inlined_comp;
+
+ struct fblockinfo u_fblock[CO_MAXBLOCKS];
+
+ _PyCompile_CodeUnitMetadata u_metadata;
+};
+
+/* This struct captures the global state of a compilation.
+
+The u pointer points to the current compilation unit, while units
+for enclosing blocks are stored in c_stack. The u and c_stack are
+managed by compiler_enter_scope() and compiler_exit_scope().
+
+Note that we don't track recursion levels during compilation - the
+task of detecting and rejecting excessive levels of nesting is
+handled by the symbol analysis pass.
+
+*/
+
+struct compiler {
+ PyObject *c_filename;
+ struct symtable *c_st;
+ PyFutureFeatures c_future; /* module's __future__ */
+ PyCompilerFlags c_flags;
+
+ int c_optimize; /* optimization level */
+ int c_interactive; /* true if in interactive mode */
+ int c_nestlevel;
+ PyObject *c_const_cache; /* Python dict holding all constants,
+ including names tuple */
+ struct compiler_unit *u; /* compiler state for current block */
+ PyObject *c_stack; /* Python list holding compiler_unit ptrs */
+ PyArena *c_arena; /* pointer to memory allocation arena */
+};
+
+#define INSTR_SEQUENCE(C) (&((C)->u->u_instr_sequence))
+
+
+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
+ jump_target_label *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 codegen_addop_i(instr_sequence *seq, int opcode, Py_ssize_t oparg, location loc);
+
+static void compiler_free(struct compiler *);
+static int compiler_error(struct compiler *, location loc, const char *, ...);
+static int compiler_warn(struct compiler *, location loc, const char *, ...);
+static int compiler_nameop(struct compiler *, location, identifier, expr_context_ty);
+
+static PyCodeObject *compiler_mod(struct compiler *, mod_ty);
+static int compiler_visit_stmt(struct compiler *, stmt_ty);
+static int compiler_visit_keyword(struct compiler *, keyword_ty);
+static int compiler_visit_expr(struct compiler *, expr_ty);
+static int compiler_augassign(struct compiler *, stmt_ty);
+static int compiler_annassign(struct compiler *, stmt_ty);
+static int compiler_subscript(struct compiler *, expr_ty);
+static int compiler_slice(struct compiler *, expr_ty);
+
+static bool are_all_items_const(asdl_expr_seq *, Py_ssize_t, Py_ssize_t);
+
+
+static int compiler_with(struct compiler *, stmt_ty, int);
+static int compiler_async_with(struct compiler *, stmt_ty, int);
+static int compiler_async_for(struct compiler *, stmt_ty);
+static int compiler_call_simple_kw_helper(struct compiler *c,
+ location loc,
+ asdl_keyword_seq *keywords,
+ Py_ssize_t nkwelts);
+static int compiler_call_helper(struct compiler *c, location loc,
+ int n, asdl_expr_seq *args,
+ asdl_keyword_seq *keywords);
+static int compiler_try_except(struct compiler *, stmt_ty);
+static int compiler_try_star_except(struct compiler *, stmt_ty);
+static int compiler_set_qualname(struct compiler *);
+
+static int compiler_sync_comprehension_generator(
+ struct compiler *c, location loc,
+ asdl_comprehension_seq *generators, int gen_index,
+ int depth,
+ expr_ty elt, expr_ty val, int type,
+ int iter_on_stack);
+
+static int compiler_async_comprehension_generator(
+ struct compiler *c, location loc,
+ asdl_comprehension_seq *generators, int gen_index,
+ int depth,
+ expr_ty elt, expr_ty val, int type,
+ int iter_on_stack);
+
+static int compiler_pattern(struct compiler *, pattern_ty, pattern_context *);
+static int compiler_match(struct compiler *, stmt_ty);
+static int compiler_pattern_subpattern(struct compiler *,
+ pattern_ty, pattern_context *);
+
+static PyCodeObject *optimize_and_assemble(struct compiler *, int addNone);
+
+#define CAPSULE_NAME "compile.c compiler unit"
+
+
+static int
+compiler_setup(struct compiler *c, mod_ty mod, PyObject *filename,
+ PyCompilerFlags *flags, int optimize, PyArena *arena)
+{
+ PyCompilerFlags local_flags = _PyCompilerFlags_INIT;
+
+ c->c_const_cache = PyDict_New();
+ if (!c->c_const_cache) {
+ return ERROR;
+ }
+
+ c->c_stack = PyList_New(0);
+ if (!c->c_stack) {
+ return ERROR;
+ }
+
+ c->c_filename = Py_NewRef(filename);
+ c->c_arena = arena;
+ if (!_PyFuture_FromAST(mod, filename, &c->c_future)) {
+ return ERROR;
+ }
+ if (!flags) {
+ flags = &local_flags;
+ }
+ int merged = c->c_future.ff_features | flags->cf_flags;
+ c->c_future.ff_features = merged;
+ flags->cf_flags = merged;
+ c->c_flags = *flags;
+ c->c_optimize = (optimize == -1) ? _Py_GetConfig()->optimization_level : optimize;
+ c->c_nestlevel = 0;
+
+ _PyASTOptimizeState state;
+ state.optimize = c->c_optimize;
+ state.ff_features = merged;
+
+ if (!_PyAST_Optimize(mod, arena, &state)) {
+ return ERROR;
+ }
+ c->c_st = _PySymtable_Build(mod, filename, &c->c_future);
+ if (c->c_st == NULL) {
+ if (!PyErr_Occurred()) {
+ PyErr_SetString(PyExc_SystemError, "no symtable");
+ }
+ return ERROR;
+ }
+ return SUCCESS;
+}
+
+static struct compiler*
+new_compiler(mod_ty mod, PyObject *filename, PyCompilerFlags *pflags,
+ int optimize, PyArena *arena)
+{
+ struct compiler *c = PyMem_Calloc(1, sizeof(struct compiler));
+ if (c == NULL) {
+ return NULL;
+ }
+ if (compiler_setup(c, mod, filename, pflags, optimize, arena) < 0) {
+ compiler_free(c);
+ return NULL;
+ }
+ return c;
+}
+
+PyCodeObject *
+_PyAST_Compile(mod_ty mod, PyObject *filename, PyCompilerFlags *pflags,
+ int optimize, PyArena *arena)
+{
+ assert(!PyErr_Occurred());
+ struct compiler *c = new_compiler(mod, filename, pflags, optimize, arena);
+ if (c == NULL) {
+ return NULL;
+ }
+
+ PyCodeObject *co = compiler_mod(c, mod);
+ compiler_free(c);
+ assert(co || PyErr_Occurred());
+ return co;
+}
+
+static void
+compiler_free(struct compiler *c)
+{
+ if (c->c_st)
+ _PySymtable_Free(c->c_st);
+ Py_XDECREF(c->c_filename);
+ Py_XDECREF(c->c_const_cache);
+ Py_XDECREF(c->c_stack);
+ PyMem_Free(c);
+}
+
+static PyObject *
+list2dict(PyObject *list)
+{
+ Py_ssize_t i, n;
+ PyObject *v, *k;
+ PyObject *dict = PyDict_New();
+ if (!dict) return NULL;
+
+ n = PyList_Size(list);
+ for (i = 0; i < n; i++) {
+ v = PyLong_FromSsize_t(i);
+ if (!v) {
+ Py_DECREF(dict);
+ return NULL;
+ }
+ k = PyList_GET_ITEM(list, i);
+ if (PyDict_SetItem(dict, k, v) < 0) {
+ Py_DECREF(v);
+ Py_DECREF(dict);
+ return NULL;
+ }
+ Py_DECREF(v);
+ }
+ return dict;
+}
+
+/* Return new dict containing names from src that match scope(s).
+
+src is a symbol table dictionary. If the scope of a name matches
+either scope_type or flag is set, insert it into the new dict. The
+values are integers, starting at offset and increasing by one for
+each key.
+*/
+
+static PyObject *
+dictbytype(PyObject *src, int scope_type, int flag, Py_ssize_t offset)
+{
+ Py_ssize_t i = offset, scope, num_keys, key_i;
+ PyObject *k, *v, *dest = PyDict_New();
+ PyObject *sorted_keys;
+
+ assert(offset >= 0);
+ if (dest == NULL)
+ return NULL;
+
+ /* Sort the keys so that we have a deterministic order on the indexes
+ saved in the returned dictionary. These indexes are used as indexes
+ into the free and cell var storage. Therefore if they aren't
+ deterministic, then the generated bytecode is not deterministic.
+ */
+ sorted_keys = PyDict_Keys(src);
+ if (sorted_keys == NULL)
+ return NULL;
+ if (PyList_Sort(sorted_keys) != 0) {
+ Py_DECREF(sorted_keys);
+ return NULL;
+ }
+ num_keys = PyList_GET_SIZE(sorted_keys);
+
+ for (key_i = 0; key_i < num_keys; key_i++) {
+ /* XXX this should probably be a macro in symtable.h */
+ long vi;
+ k = PyList_GET_ITEM(sorted_keys, key_i);
+ v = PyDict_GetItemWithError(src, k);
+ assert(v && PyLong_Check(v));
+ vi = PyLong_AS_LONG(v);
+ scope = (vi >> SCOPE_OFFSET) & SCOPE_MASK;
+
+ if (scope == scope_type || vi & flag) {
+ PyObject *item = PyLong_FromSsize_t(i);
+ if (item == NULL) {
+ Py_DECREF(sorted_keys);
+ Py_DECREF(dest);
+ return NULL;
+ }
+ i++;
+ if (PyDict_SetItem(dest, k, item) < 0) {
+ Py_DECREF(sorted_keys);
+ Py_DECREF(item);
+ Py_DECREF(dest);
+ return NULL;
+ }
+ Py_DECREF(item);
+ }
+ }
+ Py_DECREF(sorted_keys);
+ return dest;
+}
+
+static void
+compiler_unit_free(struct compiler_unit *u)
+{
+ instr_sequence_fini(&u->u_instr_sequence);
+ Py_CLEAR(u->u_ste);
+ Py_CLEAR(u->u_metadata.u_name);
+ Py_CLEAR(u->u_metadata.u_qualname);
+ Py_CLEAR(u->u_metadata.u_consts);
+ Py_CLEAR(u->u_metadata.u_names);
+ Py_CLEAR(u->u_metadata.u_varnames);
+ Py_CLEAR(u->u_metadata.u_freevars);
+ Py_CLEAR(u->u_metadata.u_cellvars);
+ Py_CLEAR(u->u_metadata.u_fasthidden);
+ Py_CLEAR(u->u_private);
+ PyObject_Free(u);
+}
+
+static int
+compiler_set_qualname(struct compiler *c)
+{
+ Py_ssize_t stack_size;
+ struct compiler_unit *u = c->u;
+ PyObject *name, *base;
+
+ base = NULL;
+ stack_size = PyList_GET_SIZE(c->c_stack);
+ assert(stack_size >= 1);
+ if (stack_size > 1) {
+ int scope, force_global = 0;
+ struct compiler_unit *parent;
+ PyObject *mangled, *capsule;
+
+ capsule = PyList_GET_ITEM(c->c_stack, stack_size - 1);
+ parent = (struct compiler_unit *)PyCapsule_GetPointer(capsule, CAPSULE_NAME);
+ assert(parent);
+ if (parent->u_scope_type == COMPILER_SCOPE_TYPEPARAMS) {
+ /* The parent is a type parameter scope, so we need to
+ look at the grandparent. */
+ if (stack_size == 2) {
+ // If we're immediately within the module, we can skip
+ // the rest and just set the qualname to be the same as name.
+ u->u_metadata.u_qualname = Py_NewRef(u->u_metadata.u_name);
+ return SUCCESS;
+ }
+ capsule = PyList_GET_ITEM(c->c_stack, stack_size - 2);
+ parent = (struct compiler_unit *)PyCapsule_GetPointer(capsule, CAPSULE_NAME);
+ assert(parent);
+ }
+
+ if (u->u_scope_type == COMPILER_SCOPE_FUNCTION
+ || u->u_scope_type == COMPILER_SCOPE_ASYNC_FUNCTION
+ || u->u_scope_type == COMPILER_SCOPE_CLASS) {
+ assert(u->u_metadata.u_name);
+ mangled = _Py_Mangle(parent->u_private, u->u_metadata.u_name);
+ if (!mangled) {
+ return ERROR;
+ }
+
+ scope = _PyST_GetScope(parent->u_ste, mangled);
+ Py_DECREF(mangled);
+ assert(scope != GLOBAL_IMPLICIT);
+ if (scope == GLOBAL_EXPLICIT)
+ force_global = 1;
+ }
+
+ if (!force_global) {
+ if (parent->u_scope_type == COMPILER_SCOPE_FUNCTION
+ || parent->u_scope_type == COMPILER_SCOPE_ASYNC_FUNCTION
+ || parent->u_scope_type == COMPILER_SCOPE_LAMBDA)
+ {
+ _Py_DECLARE_STR(dot_locals, ".<locals>");
+ base = PyUnicode_Concat(parent->u_metadata.u_qualname,
+ &_Py_STR(dot_locals));
+ if (base == NULL) {
+ return ERROR;
+ }
+ }
+ else {
+ base = Py_NewRef(parent->u_metadata.u_qualname);
+ }
+ }
+ }
+
+ if (base != NULL) {
+ _Py_DECLARE_STR(dot, ".");
+ name = PyUnicode_Concat(base, &_Py_STR(dot));
+ Py_DECREF(base);
+ if (name == NULL) {
+ return ERROR;
+ }
+ PyUnicode_Append(&name, u->u_metadata.u_name);
+ if (name == NULL) {
+ return ERROR;
+ }
+ }
+ else {
+ name = Py_NewRef(u->u_metadata.u_name);
+ }
+ u->u_metadata.u_qualname = name;
+
+ return SUCCESS;
+}
+
+/* Return the stack effect of opcode with argument oparg.
+
+ Some opcodes have different stack effect when jump to the target and
+ when not jump. The 'jump' parameter specifies the case:
+
+ * 0 -- when not jump
+ * 1 -- when jump
+ * -1 -- maximal
+ */
+static int
+stack_effect(int opcode, int oparg, int jump)
+{
+ if (0 <= opcode && opcode <= MAX_REAL_OPCODE) {
+ if (_PyOpcode_Deopt[opcode] != opcode) {
+ // Specialized instructions are not supported.
+ return PY_INVALID_STACK_EFFECT;
+ }
+ int popped, pushed;
+ if (jump > 0) {
+ popped = _PyOpcode_num_popped(opcode, oparg, true);
+ pushed = _PyOpcode_num_pushed(opcode, oparg, true);
+ }
+ else {
+ popped = _PyOpcode_num_popped(opcode, oparg, false);
+ pushed = _PyOpcode_num_pushed(opcode, oparg, false);
+ }
+ if (popped < 0 || pushed < 0) {
+ return PY_INVALID_STACK_EFFECT;
+ }
+ if (jump >= 0) {
+ return pushed - popped;
+ }
+ if (jump < 0) {
+ // Compute max(pushed - popped, alt_pushed - alt_popped)
+ int alt_popped = _PyOpcode_num_popped(opcode, oparg, true);
+ int alt_pushed = _PyOpcode_num_pushed(opcode, oparg, true);
+ if (alt_popped < 0 || alt_pushed < 0) {
+ return PY_INVALID_STACK_EFFECT;
+ }
+ int diff = pushed - popped;
+ int alt_diff = alt_pushed - alt_popped;
+ if (alt_diff > diff) {
+ return alt_diff;
+ }
+ return diff;
+ }
+ }
+
+ // Pseudo ops
+ switch (opcode) {
+ case POP_BLOCK:
+ case JUMP:
+ case JUMP_NO_INTERRUPT:
+ return 0;
+
+ /* Exception handling pseudo-instructions */
+ case SETUP_FINALLY:
+ /* 0 in the normal flow.
+ * Restore the stack position and push 1 value before jumping to
+ * the handler if an exception be raised. */
+ return jump ? 1 : 0;
+ case SETUP_CLEANUP:
+ /* As SETUP_FINALLY, but pushes lasti as well */
+ return jump ? 2 : 0;
+ case SETUP_WITH:
+ /* 0 in the normal flow.
+ * Restore the stack position to the position before the result
+ * of __(a)enter__ and push 2 values before jumping to the handler
+ * if an exception be raised. */
+ return jump ? 1 : 0;
+
+ case STORE_FAST_MAYBE_NULL:
+ return -1;
+ case LOAD_METHOD:
+ return 1;
+ case LOAD_SUPER_METHOD:
+ case LOAD_ZERO_SUPER_METHOD:
+ case LOAD_ZERO_SUPER_ATTR:
+ return -1;
+ default:
+ return PY_INVALID_STACK_EFFECT;
+ }
+
+ return PY_INVALID_STACK_EFFECT; /* not reachable */
+}
+
+int
+PyCompile_OpcodeStackEffectWithJump(int opcode, int oparg, int jump)
+{
+ return stack_effect(opcode, oparg, jump);
+}
+
+int
+PyCompile_OpcodeStackEffect(int opcode, int oparg)
+{
+ return stack_effect(opcode, oparg, -1);
+}
+
+static int
+codegen_addop_noarg(instr_sequence *seq, int opcode, location loc)
+{
+ assert(!HAS_ARG(opcode));
+ assert(!IS_ASSEMBLER_OPCODE(opcode));
+ return instr_sequence_addop(seq, opcode, 0, loc);
+}
+
+static Py_ssize_t
+dict_add_o(PyObject *dict, PyObject *o)
+{
+ PyObject *v;
+ Py_ssize_t arg;
+
+ v = PyDict_GetItemWithError(dict, o);
+ if (!v) {
+ if (PyErr_Occurred()) {
+ return ERROR;
+ }
+ arg = PyDict_GET_SIZE(dict);
+ v = PyLong_FromSsize_t(arg);
+ if (!v) {
+ return ERROR;
+ }
+ if (PyDict_SetItem(dict, o, v) < 0) {
+ Py_DECREF(v);
+ return ERROR;
+ }
+ Py_DECREF(v);
+ }
+ else
+ arg = PyLong_AsLong(v);
+ return arg;
+}
+
+// Merge const *o* recursively and return constant key object.
+static PyObject*
+merge_consts_recursive(PyObject *const_cache, PyObject *o)
+{
+ assert(PyDict_CheckExact(const_cache));
+ // None and Ellipsis are singleton, and key is the singleton.
+ // No need to merge object and key.
+ if (o == Py_None || o == Py_Ellipsis) {
+ return Py_NewRef(o);
+ }
+
+ PyObject *key = _PyCode_ConstantKey(o);
+ if (key == NULL) {
+ return NULL;
+ }
+
+ // t is borrowed reference
+ PyObject *t = PyDict_SetDefault(const_cache, key, key);
+ if (t != key) {
+ // o is registered in const_cache. Just use it.
+ Py_XINCREF(t);
+ Py_DECREF(key);
+ return t;
+ }
+
+ // We registered o in const_cache.
+ // When o is a tuple or frozenset, we want to merge its
+ // items too.
+ if (PyTuple_CheckExact(o)) {
+ Py_ssize_t len = PyTuple_GET_SIZE(o);
+ for (Py_ssize_t i = 0; i < len; i++) {
+ PyObject *item = PyTuple_GET_ITEM(o, i);
+ PyObject *u = merge_consts_recursive(const_cache, item);
+ if (u == NULL) {
+ Py_DECREF(key);
+ return NULL;
+ }
+
+ // See _PyCode_ConstantKey()
+ PyObject *v; // borrowed
+ if (PyTuple_CheckExact(u)) {
+ v = PyTuple_GET_ITEM(u, 1);
+ }
+ else {
+ v = u;
+ }
+ if (v != item) {
+ PyTuple_SET_ITEM(o, i, Py_NewRef(v));
+ Py_DECREF(item);
+ }
+
+ Py_DECREF(u);
+ }
+ }
+ else if (PyFrozenSet_CheckExact(o)) {
+ // *key* is tuple. And its first item is frozenset of
+ // constant keys.
+ // See _PyCode_ConstantKey() for detail.
+ assert(PyTuple_CheckExact(key));
+ assert(PyTuple_GET_SIZE(key) == 2);
+
+ Py_ssize_t len = PySet_GET_SIZE(o);
+ if (len == 0) { // empty frozenset should not be re-created.
+ return key;
+ }
+ PyObject *tuple = PyTuple_New(len);
+ if (tuple == NULL) {
+ Py_DECREF(key);
+ return NULL;
+ }
+ Py_ssize_t i = 0, pos = 0;
+ PyObject *item;
+ Py_hash_t hash;
+ while (_PySet_NextEntry(o, &pos, &item, &hash)) {
+ PyObject *k = merge_consts_recursive(const_cache, item);
+ if (k == NULL) {
+ Py_DECREF(tuple);
+ Py_DECREF(key);
+ return NULL;
+ }
+ PyObject *u;
+ if (PyTuple_CheckExact(k)) {
+ u = Py_NewRef(PyTuple_GET_ITEM(k, 1));
+ Py_DECREF(k);
+ }
+ else {
+ u = k;
+ }
+ PyTuple_SET_ITEM(tuple, i, u); // Steals reference of u.
+ i++;
+ }
+
+ // Instead of rewriting o, we create new frozenset and embed in the
+ // key tuple. Caller should get merged frozenset from the key tuple.
+ PyObject *new = PyFrozenSet_New(tuple);
+ Py_DECREF(tuple);
+ if (new == NULL) {
+ Py_DECREF(key);
+ return NULL;
+ }
+ assert(PyTuple_GET_ITEM(key, 1) == o);
+ Py_DECREF(o);
+ PyTuple_SET_ITEM(key, 1, new);
+ }
+
+ return key;
+}
+
+static Py_ssize_t
+compiler_add_const(PyObject *const_cache, struct compiler_unit *u, PyObject *o)
+{
+ assert(PyDict_CheckExact(const_cache));
+ PyObject *key = merge_consts_recursive(const_cache, o);
+ if (key == NULL) {
+ return ERROR;
+ }
+
+ Py_ssize_t arg = dict_add_o(u->u_metadata.u_consts, key);
+ Py_DECREF(key);
+ return arg;
+}
+
+static int
+compiler_addop_load_const(PyObject *const_cache, struct compiler_unit *u, location loc, PyObject *o)
+{
+ Py_ssize_t arg = compiler_add_const(const_cache, u, o);
+ if (arg < 0) {
+ return ERROR;
+ }
+ return codegen_addop_i(&u->u_instr_sequence, LOAD_CONST, arg, loc);
+}
+
+static int
+compiler_addop_o(struct compiler_unit *u, location loc,
+ int opcode, PyObject *dict, PyObject *o)
+{
+ Py_ssize_t arg = dict_add_o(dict, o);
+ if (arg < 0) {
+ return ERROR;
+ }
+ return codegen_addop_i(&u->u_instr_sequence, opcode, arg, loc);
+}
+
+static int
+compiler_addop_name(struct compiler_unit *u, location loc,
+ int opcode, PyObject *dict, PyObject *o)
+{
+ PyObject *mangled = _Py_Mangle(u->u_private, o);
+ if (!mangled) {
+ return ERROR;
+ }
+ Py_ssize_t arg = dict_add_o(dict, mangled);
+ Py_DECREF(mangled);
+ if (arg < 0) {
+ return ERROR;
+ }
+ if (opcode == LOAD_ATTR) {
+ arg <<= 1;
+ }
+ if (opcode == LOAD_METHOD) {
+ opcode = LOAD_ATTR;
+ arg <<= 1;
+ arg |= 1;
+ }
+ if (opcode == LOAD_SUPER_ATTR) {
+ arg <<= 2;
+ arg |= 2;
+ }
+ if (opcode == LOAD_SUPER_METHOD) {
+ opcode = LOAD_SUPER_ATTR;
+ arg <<= 2;
+ arg |= 3;
+ }
+ if (opcode == LOAD_ZERO_SUPER_ATTR) {
+ opcode = LOAD_SUPER_ATTR;
+ arg <<= 2;
+ }
+ if (opcode == LOAD_ZERO_SUPER_METHOD) {
+ opcode = LOAD_SUPER_ATTR;
+ arg <<= 2;
+ arg |= 1;
+ }
+ return codegen_addop_i(&u->u_instr_sequence, opcode, arg, loc);
+}
+
+/* Add an opcode with an integer argument */
+static int
+codegen_addop_i(instr_sequence *seq, int opcode, Py_ssize_t oparg, location loc)
+{
+ /* oparg value is unsigned, but a signed C int is usually used to store
+ it in the C code (like Python/ceval.c).
+
+ Limit to 32-bit signed C int (rather than INT_MAX) for portability.
+
+ The argument of a concrete bytecode instruction is limited to 8-bit.
+ EXTENDED_ARG is used for 16, 24, and 32-bit arguments. */
+
+ int oparg_ = Py_SAFE_DOWNCAST(oparg, Py_ssize_t, int);
+ assert(!IS_ASSEMBLER_OPCODE(opcode));
+ return instr_sequence_addop(seq, opcode, oparg_, loc);
+}
+
+static int
+codegen_addop_j(instr_sequence *seq, location loc,
+ int opcode, jump_target_label target)
+{
+ assert(IS_LABEL(target));
+ assert(IS_JUMP_OPCODE(opcode) || IS_BLOCK_PUSH_OPCODE(opcode));
+ assert(!IS_ASSEMBLER_OPCODE(opcode));
+ return instr_sequence_addop(seq, opcode, target.id, loc);
+}
+
+#define RETURN_IF_ERROR_IN_SCOPE(C, CALL) { \
+ if ((CALL) < 0) { \
+ compiler_exit_scope((C)); \
+ return ERROR; \
+ } \
+}
+
+#define ADDOP(C, LOC, OP) \
+ RETURN_IF_ERROR(codegen_addop_noarg(INSTR_SEQUENCE(C), (OP), (LOC)))
+
+#define ADDOP_IN_SCOPE(C, LOC, OP) RETURN_IF_ERROR_IN_SCOPE((C), codegen_addop_noarg(INSTR_SEQUENCE(C), (OP), (LOC)))
+
+#define ADDOP_LOAD_CONST(C, LOC, O) \
+ RETURN_IF_ERROR(compiler_addop_load_const((C)->c_const_cache, (C)->u, (LOC), (O)))
+
+/* Same as ADDOP_LOAD_CONST, but steals a reference. */
+#define ADDOP_LOAD_CONST_NEW(C, LOC, O) { \
+ PyObject *__new_const = (O); \
+ if (__new_const == NULL) { \
+ return ERROR; \
+ } \
+ if (compiler_addop_load_const((C)->c_const_cache, (C)->u, (LOC), __new_const) < 0) { \
+ Py_DECREF(__new_const); \
+ return ERROR; \
+ } \
+ Py_DECREF(__new_const); \
+}
+
+#define ADDOP_N(C, LOC, OP, O, TYPE) { \
+ assert(!HAS_CONST(OP)); /* use ADDOP_LOAD_CONST_NEW */ \
+ if (compiler_addop_o((C)->u, (LOC), (OP), (C)->u->u_metadata.u_ ## TYPE, (O)) < 0) { \
+ Py_DECREF((O)); \
+ return ERROR; \
+ } \
+ Py_DECREF((O)); \
+}
+
+#define ADDOP_NAME(C, LOC, OP, O, TYPE) \
+ RETURN_IF_ERROR(compiler_addop_name((C)->u, (LOC), (OP), (C)->u->u_metadata.u_ ## TYPE, (O)))
+
+#define ADDOP_I(C, LOC, OP, O) \
+ RETURN_IF_ERROR(codegen_addop_i(INSTR_SEQUENCE(C), (OP), (O), (LOC)))
+
+#define ADDOP_JUMP(C, LOC, OP, O) \
+ RETURN_IF_ERROR(codegen_addop_j(INSTR_SEQUENCE(C), (LOC), (OP), (O)))
+
+#define ADDOP_COMPARE(C, LOC, CMP) \
+ RETURN_IF_ERROR(compiler_addcompare((C), (LOC), (cmpop_ty)(CMP)))
+
+#define ADDOP_BINARY(C, LOC, BINOP) \
+ RETURN_IF_ERROR(addop_binary((C), (LOC), (BINOP), false))
+
+#define ADDOP_INPLACE(C, LOC, BINOP) \
+ RETURN_IF_ERROR(addop_binary((C), (LOC), (BINOP), true))
+
+#define ADD_YIELD_FROM(C, LOC, await) \
+ RETURN_IF_ERROR(compiler_add_yield_from((C), (LOC), (await)))
+
+#define POP_EXCEPT_AND_RERAISE(C, LOC) \
+ RETURN_IF_ERROR(compiler_pop_except_and_reraise((C), (LOC)))
+
+#define ADDOP_YIELD(C, LOC) \
+ RETURN_IF_ERROR(addop_yield((C), (LOC)))
+
+/* VISIT and VISIT_SEQ takes an ASDL type as their second argument. They use
+ the ASDL name to synthesize the name of the C type and the visit function.
+*/
+
+#define VISIT(C, TYPE, V) \
+ RETURN_IF_ERROR(compiler_visit_ ## TYPE((C), (V)));
+
+#define VISIT_IN_SCOPE(C, TYPE, V) \
+ RETURN_IF_ERROR_IN_SCOPE((C), compiler_visit_ ## TYPE((C), (V)))
+
+#define VISIT_SEQ(C, TYPE, SEQ) { \
+ int _i; \
+ asdl_ ## TYPE ## _seq *seq = (SEQ); /* avoid variable capture */ \
+ for (_i = 0; _i < asdl_seq_LEN(seq); _i++) { \
+ TYPE ## _ty elt = (TYPE ## _ty)asdl_seq_GET(seq, _i); \
+ RETURN_IF_ERROR(compiler_visit_ ## TYPE((C), elt)); \
+ } \
+}
+
+#define VISIT_SEQ_IN_SCOPE(C, TYPE, SEQ) { \
+ int _i; \
+ asdl_ ## TYPE ## _seq *seq = (SEQ); /* avoid variable capture */ \
+ for (_i = 0; _i < asdl_seq_LEN(seq); _i++) { \
+ TYPE ## _ty elt = (TYPE ## _ty)asdl_seq_GET(seq, _i); \
+ if (compiler_visit_ ## TYPE((C), elt) < 0) { \
+ compiler_exit_scope(C); \
+ return ERROR; \
+ } \
+ } \
+}
+
+
+static int
+compiler_enter_scope(struct compiler *c, identifier name,
+ int scope_type, void *key, int lineno)
+{
+ location loc = LOCATION(lineno, lineno, 0, 0);
+
+ struct compiler_unit *u;
+
+ u = (struct compiler_unit *)PyObject_Calloc(1, sizeof(
+ struct compiler_unit));
+ if (!u) {
+ PyErr_NoMemory();
+ return ERROR;
+ }
+ u->u_scope_type = scope_type;
+ u->u_metadata.u_argcount = 0;
+ u->u_metadata.u_posonlyargcount = 0;
+ u->u_metadata.u_kwonlyargcount = 0;
+ u->u_ste = PySymtable_Lookup(c->c_st, key);
+ if (!u->u_ste) {
+ compiler_unit_free(u);
+ return ERROR;
+ }
+ u->u_metadata.u_name = Py_NewRef(name);
+ u->u_metadata.u_varnames = list2dict(u->u_ste->ste_varnames);
+ if (!u->u_metadata.u_varnames) {
+ compiler_unit_free(u);
+ return ERROR;
+ }
+ u->u_metadata.u_cellvars = dictbytype(u->u_ste->ste_symbols, CELL, DEF_COMP_CELL, 0);
+ if (!u->u_metadata.u_cellvars) {
+ compiler_unit_free(u);
+ return ERROR;
+ }
+ if (u->u_ste->ste_needs_class_closure) {
+ /* Cook up an implicit __class__ cell. */
+ Py_ssize_t res;
+ assert(u->u_scope_type == COMPILER_SCOPE_CLASS);
+ res = dict_add_o(u->u_metadata.u_cellvars, &_Py_ID(__class__));
+ if (res < 0) {
+ compiler_unit_free(u);
+ return ERROR;
+ }
+ }
+ if (u->u_ste->ste_needs_classdict) {
+ /* Cook up an implicit __classdict__ cell. */
+ Py_ssize_t res;
+ assert(u->u_scope_type == COMPILER_SCOPE_CLASS);
+ res = dict_add_o(u->u_metadata.u_cellvars, &_Py_ID(__classdict__));
+ if (res < 0) {
+ compiler_unit_free(u);
+ return ERROR;
+ }
+ }
+
+ u->u_metadata.u_freevars = dictbytype(u->u_ste->ste_symbols, FREE, DEF_FREE_CLASS,
+ PyDict_GET_SIZE(u->u_metadata.u_cellvars));
+ if (!u->u_metadata.u_freevars) {
+ compiler_unit_free(u);
+ return ERROR;
+ }
+
+ u->u_metadata.u_fasthidden = PyDict_New();
+ if (!u->u_metadata.u_fasthidden) {
+ compiler_unit_free(u);
+ return ERROR;
+ }
+
+ u->u_nfblocks = 0;
+ u->u_in_inlined_comp = 0;
+ u->u_metadata.u_firstlineno = lineno;
+ u->u_metadata.u_consts = PyDict_New();
+ if (!u->u_metadata.u_consts) {
+ compiler_unit_free(u);
+ return ERROR;
+ }
+ u->u_metadata.u_names = PyDict_New();
+ if (!u->u_metadata.u_names) {
+ compiler_unit_free(u);
+ return ERROR;
+ }
+
+ u->u_private = NULL;
+
+ /* Push the old compiler_unit on the stack. */
+ if (c->u) {
+ PyObject *capsule = PyCapsule_New(c->u, CAPSULE_NAME, NULL);
+ if (!capsule || PyList_Append(c->c_stack, capsule) < 0) {
+ Py_XDECREF(capsule);
+ compiler_unit_free(u);
+ return ERROR;
+ }
+ Py_DECREF(capsule);
+ u->u_private = Py_XNewRef(c->u->u_private);
+ }
+ c->u = u;
+
+ c->c_nestlevel++;
+
+ if (u->u_scope_type == COMPILER_SCOPE_MODULE) {
+ loc.lineno = 0;
+ }
+ else {
+ RETURN_IF_ERROR(compiler_set_qualname(c));
+ }
+ ADDOP_I(c, loc, RESUME, 0);
+
+ if (u->u_scope_type == COMPILER_SCOPE_MODULE) {
+ loc.lineno = -1;
+ }
+ return SUCCESS;
+}
+
+static void
+compiler_exit_scope(struct compiler *c)
+{
+ // Don't call PySequence_DelItem() with an exception raised
+ PyObject *exc = PyErr_GetRaisedException();
+
+ c->c_nestlevel--;
+ compiler_unit_free(c->u);
+ /* Restore c->u to the parent unit. */
+ Py_ssize_t n = PyList_GET_SIZE(c->c_stack) - 1;
+ if (n >= 0) {
+ PyObject *capsule = PyList_GET_ITEM(c->c_stack, n);
+ c->u = (struct compiler_unit *)PyCapsule_GetPointer(capsule, CAPSULE_NAME);
+ assert(c->u);
+ /* we are deleting from a list so this really shouldn't fail */
+ if (PySequence_DelItem(c->c_stack, n) < 0) {
+ _PyErr_WriteUnraisableMsg("on removing the last compiler "
+ "stack item", NULL);
+ }
+ }
+ else {
+ c->u = NULL;
+ }
+
+ PyErr_SetRaisedException(exc);
+}
+
+/* Search if variable annotations are present statically in a block. */
+
+static bool
+find_ann(asdl_stmt_seq *stmts)
+{
+ int i, j, res = 0;
+ stmt_ty st;
+
+ for (i = 0; i < asdl_seq_LEN(stmts); i++) {
+ st = (stmt_ty)asdl_seq_GET(stmts, i);
+ switch (st->kind) {
+ case AnnAssign_kind:
+ return true;
+ case For_kind:
+ res = find_ann(st->v.For.body) ||
+ find_ann(st->v.For.orelse);
+ break;
+ case AsyncFor_kind:
+ res = find_ann(st->v.AsyncFor.body) ||
+ find_ann(st->v.AsyncFor.orelse);
+ break;
+ case While_kind:
+ res = find_ann(st->v.While.body) ||
+ find_ann(st->v.While.orelse);
+ break;
+ case If_kind:
+ res = find_ann(st->v.If.body) ||
+ find_ann(st->v.If.orelse);
+ break;
+ case With_kind:
+ res = find_ann(st->v.With.body);
+ break;
+ case AsyncWith_kind:
+ res = find_ann(st->v.AsyncWith.body);
+ break;
+ case Try_kind:
+ for (j = 0; j < asdl_seq_LEN(st->v.Try.handlers); j++) {
+ excepthandler_ty handler = (excepthandler_ty)asdl_seq_GET(
+ st->v.Try.handlers, j);
+ if (find_ann(handler->v.ExceptHandler.body)) {
+ return true;
+ }
+ }
+ res = find_ann(st->v.Try.body) ||
+ find_ann(st->v.Try.finalbody) ||
+ find_ann(st->v.Try.orelse);
+ break;
+ case TryStar_kind:
+ for (j = 0; j < asdl_seq_LEN(st->v.TryStar.handlers); j++) {
+ excepthandler_ty handler = (excepthandler_ty)asdl_seq_GET(
+ st->v.TryStar.handlers, j);
+ if (find_ann(handler->v.ExceptHandler.body)) {
+ return true;
+ }
+ }
+ res = find_ann(st->v.TryStar.body) ||
+ find_ann(st->v.TryStar.finalbody) ||
+ find_ann(st->v.TryStar.orelse);
+ break;
+ case Match_kind:
+ for (j = 0; j < asdl_seq_LEN(st->v.Match.cases); j++) {
+ match_case_ty match_case = (match_case_ty)asdl_seq_GET(
+ st->v.Match.cases, j);
+ if (find_ann(match_case->body)) {
+ return true;
+ }
+ }
+ break;
+ default:
+ res = false;
+ break;
+ }
+ if (res) {
+ break;
+ }
+ }
+ return res;
+}
+
+/*
+ * Frame block handling functions
+ */
+
+static int
+compiler_push_fblock(struct compiler *c, location loc,
+ enum fblocktype t, jump_target_label block_label,
+ jump_target_label exit, void *datum)
+{
+ struct fblockinfo *f;
+ if (c->u->u_nfblocks >= CO_MAXBLOCKS) {
+ return compiler_error(c, loc, "too many statically nested blocks");
+ }
+ f = &c->u->u_fblock[c->u->u_nfblocks++];
+ f->fb_type = t;
+ f->fb_block = block_label;
+ f->fb_exit = exit;
+ f->fb_datum = datum;
+ return SUCCESS;
+}
+
+static void
+compiler_pop_fblock(struct compiler *c, enum fblocktype t, jump_target_label block_label)
+{
+ struct compiler_unit *u = c->u;
+ assert(u->u_nfblocks > 0);
+ u->u_nfblocks--;
+ assert(u->u_fblock[u->u_nfblocks].fb_type == t);
+ assert(SAME_LABEL(u->u_fblock[u->u_nfblocks].fb_block, block_label));
+}
+
+static int
+compiler_call_exit_with_nones(struct compiler *c, location loc)
+{
+ ADDOP_LOAD_CONST(c, loc, Py_None);
+ ADDOP_LOAD_CONST(c, loc, Py_None);
+ ADDOP_LOAD_CONST(c, loc, Py_None);
+ ADDOP_I(c, loc, CALL, 2);
+ return SUCCESS;
+}
+
+static int
+compiler_add_yield_from(struct compiler *c, location loc, int await)
+{
+ NEW_JUMP_TARGET_LABEL(c, send);
+ NEW_JUMP_TARGET_LABEL(c, fail);
+ NEW_JUMP_TARGET_LABEL(c, exit);
+
+ USE_LABEL(c, send);
+ ADDOP_JUMP(c, loc, SEND, exit);
+ // Set up a virtual try/except to handle when StopIteration is raised during
+ // a close or throw call. The only way YIELD_VALUE raises if they do!
+ ADDOP_JUMP(c, loc, SETUP_FINALLY, fail);
+ ADDOP_I(c, loc, YIELD_VALUE, 0);
+ ADDOP(c, NO_LOCATION, POP_BLOCK);
+ ADDOP_I(c, loc, RESUME, await ? 3 : 2);
+ ADDOP_JUMP(c, loc, JUMP_NO_INTERRUPT, send);
+
+ USE_LABEL(c, fail);
+ ADDOP(c, loc, CLEANUP_THROW);
+
+ USE_LABEL(c, exit);
+ ADDOP(c, loc, END_SEND);
+ return SUCCESS;
+}
+
+static int
+compiler_pop_except_and_reraise(struct compiler *c, location loc)
+{
+ /* Stack contents
+ * [exc_info, lasti, exc] COPY 3
+ * [exc_info, lasti, exc, exc_info] POP_EXCEPT
+ * [exc_info, lasti, exc] RERAISE 1
+ * (exception_unwind clears the stack)
+ */
+
+ ADDOP_I(c, loc, COPY, 3);
+ ADDOP(c, loc, POP_EXCEPT);
+ ADDOP_I(c, loc, RERAISE, 1);
+ return SUCCESS;
+}
+
+/* Unwind a frame block. If preserve_tos is true, the TOS before
+ * popping the blocks will be restored afterwards, unless another
+ * return, break or continue is found. In which case, the TOS will
+ * be popped.
+ */
+static int
+compiler_unwind_fblock(struct compiler *c, location *ploc,
+ struct fblockinfo *info, int preserve_tos)
+{
+ switch (info->fb_type) {
+ case WHILE_LOOP:
+ case EXCEPTION_HANDLER:
+ case EXCEPTION_GROUP_HANDLER:
+ case ASYNC_COMPREHENSION_GENERATOR:
+ return SUCCESS;
+
+ case FOR_LOOP:
+ /* Pop the iterator */
+ if (preserve_tos) {
+ ADDOP_I(c, *ploc, SWAP, 2);
+ }
+ ADDOP(c, *ploc, POP_TOP);
+ return SUCCESS;
+
+ case TRY_EXCEPT:
+ ADDOP(c, *ploc, POP_BLOCK);
+ return SUCCESS;
+
+ case FINALLY_TRY:
+ /* This POP_BLOCK gets the line number of the unwinding statement */
+ ADDOP(c, *ploc, POP_BLOCK);
+ if (preserve_tos) {
+ RETURN_IF_ERROR(
+ compiler_push_fblock(c, *ploc, POP_VALUE, NO_LABEL, NO_LABEL, NULL));
+ }
+ /* Emit the finally block */
+ VISIT_SEQ(c, stmt, info->fb_datum);
+ if (preserve_tos) {
+ compiler_pop_fblock(c, POP_VALUE, NO_LABEL);
+ }
+ /* The finally block should appear to execute after the
+ * statement causing the unwinding, so make the unwinding
+ * instruction artificial */
+ *ploc = NO_LOCATION;
+ return SUCCESS;
+
+ case FINALLY_END:
+ if (preserve_tos) {
+ ADDOP_I(c, *ploc, SWAP, 2);
+ }
+ ADDOP(c, *ploc, POP_TOP); /* exc_value */
+ if (preserve_tos) {
+ ADDOP_I(c, *ploc, SWAP, 2);
+ }
+ ADDOP(c, *ploc, POP_BLOCK);
+ ADDOP(c, *ploc, POP_EXCEPT);
+ return SUCCESS;
+
+ case WITH:
+ case ASYNC_WITH:
+ *ploc = LOC((stmt_ty)info->fb_datum);
+ ADDOP(c, *ploc, POP_BLOCK);
+ if (preserve_tos) {
+ ADDOP_I(c, *ploc, SWAP, 2);
+ }
+ RETURN_IF_ERROR(compiler_call_exit_with_nones(c, *ploc));
+ if (info->fb_type == ASYNC_WITH) {
+ ADDOP_I(c, *ploc, GET_AWAITABLE, 2);
+ ADDOP_LOAD_CONST(c, *ploc, Py_None);
+ ADD_YIELD_FROM(c, *ploc, 1);
+ }
+ ADDOP(c, *ploc, POP_TOP);
+ /* The exit block should appear to execute after the
+ * statement causing the unwinding, so make the unwinding
+ * instruction artificial */
+ *ploc = NO_LOCATION;
+ return SUCCESS;
+
+ case HANDLER_CLEANUP: {
+ if (info->fb_datum) {
+ ADDOP(c, *ploc, POP_BLOCK);
+ }
+ if (preserve_tos) {
+ ADDOP_I(c, *ploc, SWAP, 2);
+ }
+ ADDOP(c, *ploc, POP_BLOCK);
+ ADDOP(c, *ploc, POP_EXCEPT);
+ if (info->fb_datum) {
+ ADDOP_LOAD_CONST(c, *ploc, Py_None);
+ RETURN_IF_ERROR(compiler_nameop(c, *ploc, info->fb_datum, Store));
+ RETURN_IF_ERROR(compiler_nameop(c, *ploc, info->fb_datum, Del));
+ }
+ return SUCCESS;
+ }
+ case POP_VALUE: {
+ if (preserve_tos) {
+ ADDOP_I(c, *ploc, SWAP, 2);
+ }
+ ADDOP(c, *ploc, POP_TOP);
+ return SUCCESS;
+ }
+ }
+ Py_UNREACHABLE();
+}
+
+/** Unwind block stack. If loop is not NULL, then stop when the first loop is encountered. */
+static int
+compiler_unwind_fblock_stack(struct compiler *c, location *ploc,
+ int preserve_tos, struct fblockinfo **loop)
+{
+ if (c->u->u_nfblocks == 0) {
+ return SUCCESS;
+ }
+ struct fblockinfo *top = &c->u->u_fblock[c->u->u_nfblocks-1];
+ if (top->fb_type == EXCEPTION_GROUP_HANDLER) {
+ return compiler_error(
+ c, *ploc, "'break', 'continue' and 'return' cannot appear in an except* block");
+ }
+ if (loop != NULL && (top->fb_type == WHILE_LOOP || top->fb_type == FOR_LOOP)) {
+ *loop = top;
+ return SUCCESS;
+ }
+ struct fblockinfo copy = *top;
+ c->u->u_nfblocks--;
+ RETURN_IF_ERROR(compiler_unwind_fblock(c, ploc, &copy, preserve_tos));
+ RETURN_IF_ERROR(compiler_unwind_fblock_stack(c, ploc, preserve_tos, loop));
+ c->u->u_fblock[c->u->u_nfblocks] = copy;
+ c->u->u_nfblocks++;
+ return SUCCESS;
+}
+
+/* Compile a sequence of statements, checking for a docstring
+ and for annotations. */
+
+static int
+compiler_body(struct compiler *c, location loc, asdl_stmt_seq *stmts)
+{
+ int i = 0;
+ stmt_ty st;
+ PyObject *docstring;
+
+ /* Set current line number to the line number of first statement.
+ This way line number for SETUP_ANNOTATIONS will always
+ coincide with the line number of first "real" statement in module.
+ If body is empty, then lineno will be set later in optimize_and_assemble. */
+ if (c->u->u_scope_type == COMPILER_SCOPE_MODULE && asdl_seq_LEN(stmts)) {
+ st = (stmt_ty)asdl_seq_GET(stmts, 0);
+ loc = LOC(st);
+ }
+ /* Every annotated class and module should have __annotations__. */
+ if (find_ann(stmts)) {
+ ADDOP(c, loc, SETUP_ANNOTATIONS);
+ }
+ if (!asdl_seq_LEN(stmts)) {
+ return SUCCESS;
+ }
+ /* if not -OO mode, set docstring */
+ if (c->c_optimize < 2) {
+ docstring = _PyAST_GetDocString(stmts);
+ if (docstring) {
+ i = 1;
+ st = (stmt_ty)asdl_seq_GET(stmts, 0);
+ assert(st->kind == Expr_kind);
+ VISIT(c, expr, st->v.Expr.value);
+ RETURN_IF_ERROR(compiler_nameop(c, NO_LOCATION, &_Py_ID(__doc__), Store));
+ }
+ }
+ for (; i < asdl_seq_LEN(stmts); i++) {
+ VISIT(c, stmt, (stmt_ty)asdl_seq_GET(stmts, i));
+ }
+ return SUCCESS;
+}
+
+static int
+compiler_codegen(struct compiler *c, mod_ty mod)
+{
+ _Py_DECLARE_STR(anon_module, "<module>");
+ RETURN_IF_ERROR(
+ compiler_enter_scope(c, &_Py_STR(anon_module), COMPILER_SCOPE_MODULE,
+ mod, 1));
+
+ location loc = LOCATION(1, 1, 0, 0);
+ switch (mod->kind) {
+ case Module_kind:
+ if (compiler_body(c, loc, mod->v.Module.body) < 0) {
+ compiler_exit_scope(c);
+ return ERROR;
+ }
+ break;
+ case Interactive_kind:
+ if (find_ann(mod->v.Interactive.body)) {
+ ADDOP(c, loc, SETUP_ANNOTATIONS);
+ }
+ c->c_interactive = 1;
+ VISIT_SEQ_IN_SCOPE(c, stmt, mod->v.Interactive.body);
+ break;
+ case Expression_kind:
+ VISIT_IN_SCOPE(c, expr, mod->v.Expression.body);
+ break;
+ default:
+ PyErr_Format(PyExc_SystemError,
+ "module kind %d should not be possible",
+ mod->kind);
+ return ERROR;
+ }
+ return SUCCESS;
+}
+
+static PyCodeObject *
+compiler_mod(struct compiler *c, mod_ty mod)
+{
+ int addNone = mod->kind != Expression_kind;
+ if (compiler_codegen(c, mod) < 0) {
+ return NULL;
+ }
+ PyCodeObject *co = optimize_and_assemble(c, addNone);
+ compiler_exit_scope(c);
+ return co;
+}
+
+/* The test for LOCAL must come before the test for FREE in order to
+ handle classes where name is both local and free. The local var is
+ a method and the free var is a free var referenced within a method.
+*/
+
+static int
+get_ref_type(struct compiler *c, PyObject *name)
+{
+ int scope;
+ if (c->u->u_scope_type == COMPILER_SCOPE_CLASS &&
+ (_PyUnicode_EqualToASCIIString(name, "__class__") ||
+ _PyUnicode_EqualToASCIIString(name, "__classdict__"))) {
+ return CELL;
+ }
+ scope = _PyST_GetScope(c->u->u_ste, name);
+ if (scope == 0) {
+ PyErr_Format(PyExc_SystemError,
+ "_PyST_GetScope(name=%R) failed: "
+ "unknown scope in unit %S (%R); "
+ "symbols: %R; locals: %R; globals: %R",
+ name,
+ c->u->u_metadata.u_name, c->u->u_ste->ste_id,
+ c->u->u_ste->ste_symbols, c->u->u_metadata.u_varnames, c->u->u_metadata.u_names);
+ return ERROR;
+ }
+ return scope;
+}
+
+static int
+compiler_lookup_arg(PyObject *dict, PyObject *name)
+{
+ PyObject *v = PyDict_GetItemWithError(dict, name);
+ if (v == NULL) {
+ return ERROR;
+ }
+ return PyLong_AS_LONG(v);
+}
+
+static int
+compiler_make_closure(struct compiler *c, location loc,
+ PyCodeObject *co, Py_ssize_t flags)
+{
+ if (co->co_nfreevars) {
+ int i = PyCode_GetFirstFree(co);
+ for (; i < co->co_nlocalsplus; ++i) {
+ /* Bypass com_addop_varname because it will generate
+ LOAD_DEREF but LOAD_CLOSURE is needed.
+ */
+ PyObject *name = PyTuple_GET_ITEM(co->co_localsplusnames, i);
+
+ /* Special case: If a class contains a method with a
+ free variable that has the same name as a method,
+ the name will be considered free *and* local in the
+ class. It should be handled by the closure, as
+ well as by the normal name lookup logic.
+ */
+ int reftype = get_ref_type(c, name);
+ if (reftype == -1) {
+ return ERROR;
+ }
+ int arg;
+ if (reftype == CELL) {
+ arg = compiler_lookup_arg(c->u->u_metadata.u_cellvars, name);
+ }
+ else {
+ arg = compiler_lookup_arg(c->u->u_metadata.u_freevars, name);
+ }
+ if (arg == -1) {
+ PyObject *freevars = _PyCode_GetFreevars(co);
+ if (freevars == NULL) {
+ PyErr_Clear();
+ }
+ PyErr_Format(PyExc_SystemError,
+ "compiler_lookup_arg(name=%R) with reftype=%d failed in %S; "
+ "freevars of code %S: %R",
+ name,
+ reftype,
+ c->u->u_metadata.u_name,
+ co->co_name,
+ freevars);
+ Py_DECREF(freevars);
+ return ERROR;
+ }
+ ADDOP_I(c, loc, LOAD_CLOSURE, arg);
+ }
+ flags |= 0x08;
+ ADDOP_I(c, loc, BUILD_TUPLE, co->co_nfreevars);
+ }
+ ADDOP_LOAD_CONST(c, loc, (PyObject*)co);
+ ADDOP_I(c, loc, MAKE_FUNCTION, flags);
+ return SUCCESS;
+}
+
+static int
+compiler_decorators(struct compiler *c, asdl_expr_seq* decos)
+{
+ if (!decos) {
+ return SUCCESS;
+ }
+
+ for (Py_ssize_t i = 0; i < asdl_seq_LEN(decos); i++) {
+ VISIT(c, expr, (expr_ty)asdl_seq_GET(decos, i));
+ }
+ return SUCCESS;
+}
+
+static int
+compiler_apply_decorators(struct compiler *c, asdl_expr_seq* decos)
+{
+ if (!decos) {
+ return SUCCESS;
+ }
+
+ for (Py_ssize_t i = asdl_seq_LEN(decos) - 1; i > -1; i--) {
+ location loc = LOC((expr_ty)asdl_seq_GET(decos, i));
+ ADDOP_I(c, loc, CALL, 0);
+ }
+ return SUCCESS;
+}
+
+static int
+compiler_visit_kwonlydefaults(struct compiler *c, location loc,
+ asdl_arg_seq *kwonlyargs, asdl_expr_seq *kw_defaults)
+{
+ /* Push a dict of keyword-only default values.
+
+ Return -1 on error, 0 if no dict pushed, 1 if a dict is pushed.
+ */
+ int i;
+ PyObject *keys = NULL;
+
+ for (i = 0; i < asdl_seq_LEN(kwonlyargs); i++) {
+ arg_ty arg = asdl_seq_GET(kwonlyargs, i);
+ expr_ty default_ = asdl_seq_GET(kw_defaults, i);
+ if (default_) {
+ PyObject *mangled = _Py_Mangle(c->u->u_private, arg->arg);
+ if (!mangled) {
+ goto error;
+ }
+ if (keys == NULL) {
+ keys = PyList_New(1);
+ if (keys == NULL) {
+ Py_DECREF(mangled);
+ return ERROR;
+ }
+ PyList_SET_ITEM(keys, 0, mangled);
+ }
+ else {
+ int res = PyList_Append(keys, mangled);
+ Py_DECREF(mangled);
+ if (res == -1) {
+ goto error;
+ }
+ }
+ if (compiler_visit_expr(c, default_) < 0) {
+ goto error;
+ }
+ }
+ }
+ if (keys != NULL) {
+ Py_ssize_t default_count = PyList_GET_SIZE(keys);
+ PyObject *keys_tuple = PyList_AsTuple(keys);
+ Py_DECREF(keys);
+ ADDOP_LOAD_CONST_NEW(c, loc, keys_tuple);
+ ADDOP_I(c, loc, BUILD_CONST_KEY_MAP, default_count);
+ assert(default_count > 0);
+ return 1;
+ }
+ else {
+ return 0;
+ }
+
+error:
+ Py_XDECREF(keys);
+ return ERROR;
+}
+
+static int
+compiler_visit_annexpr(struct compiler *c, expr_ty annotation)
+{
+ location loc = LOC(annotation);
+ ADDOP_LOAD_CONST_NEW(c, loc, _PyAST_ExprAsUnicode(annotation));
+ return SUCCESS;
+}
+
+static int
+compiler_visit_argannotation(struct compiler *c, identifier id,
+ expr_ty annotation, Py_ssize_t *annotations_len, location loc)
+{
+ if (!annotation) {
+ return SUCCESS;
+ }
+ PyObject *mangled = _Py_Mangle(c->u->u_private, id);
+ if (!mangled) {
+ return ERROR;
+ }
+ ADDOP_LOAD_CONST(c, loc, mangled);
+ Py_DECREF(mangled);
+
+ if (c->c_future.ff_features & CO_FUTURE_ANNOTATIONS) {
+ VISIT(c, annexpr, annotation);
+ }
+ else {
+ if (annotation->kind == Starred_kind) {
+ // *args: *Ts (where Ts is a TypeVarTuple).
+ // Do [annotation_value] = [*Ts].
+ // (Note that in theory we could end up here even for an argument
+ // other than *args, but in practice the grammar doesn't allow it.)
+ VISIT(c, expr, annotation->v.Starred.value);
+ ADDOP_I(c, loc, UNPACK_SEQUENCE, (Py_ssize_t) 1);
+ }
+ else {
+ VISIT(c, expr, annotation);
+ }
+ }
+ *annotations_len += 2;
+ return SUCCESS;
+}
+
+static int
+compiler_visit_argannotations(struct compiler *c, asdl_arg_seq* args,
+ Py_ssize_t *annotations_len, location loc)
+{
+ int i;
+ for (i = 0; i < asdl_seq_LEN(args); i++) {
+ arg_ty arg = (arg_ty)asdl_seq_GET(args, i);
+ RETURN_IF_ERROR(
+ compiler_visit_argannotation(
+ c,
+ arg->arg,
+ arg->annotation,
+ annotations_len,
+ loc));
+ }
+ return SUCCESS;
+}
+
+static int
+compiler_visit_annotations(struct compiler *c, location loc,
+ arguments_ty args, expr_ty returns)
+{
+ /* Push arg annotation names and values.
+ The expressions are evaluated out-of-order wrt the source code.
+
+ Return -1 on error, 0 if no annotations pushed, 1 if a annotations is pushed.
+ */
+ Py_ssize_t annotations_len = 0;
+
+ RETURN_IF_ERROR(
+ compiler_visit_argannotations(c, args->args, &annotations_len, loc));
+
+ RETURN_IF_ERROR(
+ compiler_visit_argannotations(c, args->posonlyargs, &annotations_len, loc));
+
+ if (args->vararg && args->vararg->annotation) {
+ RETURN_IF_ERROR(
+ compiler_visit_argannotation(c, args->vararg->arg,
+ args->vararg->annotation, &annotations_len, loc));
+ }
+
+ RETURN_IF_ERROR(
+ compiler_visit_argannotations(c, args->kwonlyargs, &annotations_len, loc));
+
+ if (args->kwarg && args->kwarg->annotation) {
+ RETURN_IF_ERROR(
+ compiler_visit_argannotation(c, args->kwarg->arg,
+ args->kwarg->annotation, &annotations_len, loc));
+ }
+
+ RETURN_IF_ERROR(
+ compiler_visit_argannotation(c, &_Py_ID(return), returns, &annotations_len, loc));
+
+ if (annotations_len) {
+ ADDOP_I(c, loc, BUILD_TUPLE, annotations_len);
+ return 1;
+ }
+
+ return 0;
+}
+
+static int
+compiler_visit_defaults(struct compiler *c, arguments_ty args,
+ location loc)
+{
+ VISIT_SEQ(c, expr, args->defaults);
+ ADDOP_I(c, loc, BUILD_TUPLE, asdl_seq_LEN(args->defaults));
+ return SUCCESS;
+}
+
+static Py_ssize_t
+compiler_default_arguments(struct compiler *c, location loc,
+ arguments_ty args)
+{
+ Py_ssize_t funcflags = 0;
+ if (args->defaults && asdl_seq_LEN(args->defaults) > 0) {
+ RETURN_IF_ERROR(compiler_visit_defaults(c, args, loc));
+ funcflags |= 0x01;
+ }
+ if (args->kwonlyargs) {
+ int res = compiler_visit_kwonlydefaults(c, loc,
+ args->kwonlyargs,
+ args->kw_defaults);
+ RETURN_IF_ERROR(res);
+ if (res > 0) {
+ funcflags |= 0x02;
+ }
+ }
+ return funcflags;
+}
+
+static bool
+forbidden_name(struct compiler *c, location loc, identifier name,
+ expr_context_ty ctx)
+{
+ if (ctx == Store && _PyUnicode_EqualToASCIIString(name, "__debug__")) {
+ compiler_error(c, loc, "cannot assign to __debug__");
+ return true;
+ }
+ if (ctx == Del && _PyUnicode_EqualToASCIIString(name, "__debug__")) {
+ compiler_error(c, loc, "cannot delete __debug__");
+ return true;
+ }
+ return false;
+}
+
+static int
+compiler_check_debug_one_arg(struct compiler *c, arg_ty arg)
+{
+ if (arg != NULL) {
+ if (forbidden_name(c, LOC(arg), arg->arg, Store)) {
+ return ERROR;
+ }
+ }
+ return SUCCESS;
+}
+
+static int
+compiler_check_debug_args_seq(struct compiler *c, asdl_arg_seq *args)
+{
+ if (args != NULL) {
+ for (Py_ssize_t i = 0, n = asdl_seq_LEN(args); i < n; i++) {
+ RETURN_IF_ERROR(
+ compiler_check_debug_one_arg(c, asdl_seq_GET(args, i)));
+ }
+ }
+ return SUCCESS;
+}
+
+static int
+compiler_check_debug_args(struct compiler *c, arguments_ty args)
+{
+ RETURN_IF_ERROR(compiler_check_debug_args_seq(c, args->posonlyargs));
+ RETURN_IF_ERROR(compiler_check_debug_args_seq(c, args->args));
+ RETURN_IF_ERROR(compiler_check_debug_one_arg(c, args->vararg));
+ RETURN_IF_ERROR(compiler_check_debug_args_seq(c, args->kwonlyargs));
+ RETURN_IF_ERROR(compiler_check_debug_one_arg(c, args->kwarg));
+ return SUCCESS;
+}
+
+static int
+wrap_in_stopiteration_handler(struct compiler *c)
+{
+ NEW_JUMP_TARGET_LABEL(c, handler);
+
+ /* Insert SETUP_CLEANUP at start */
+ RETURN_IF_ERROR(
+ instr_sequence_insert_instruction(
+ INSTR_SEQUENCE(c), 0,
+ SETUP_CLEANUP, handler.id, NO_LOCATION));
+
+ ADDOP_LOAD_CONST(c, NO_LOCATION, Py_None);
+ ADDOP(c, NO_LOCATION, RETURN_VALUE);
+ USE_LABEL(c, handler);
+ ADDOP_I(c, NO_LOCATION, CALL_INTRINSIC_1, INTRINSIC_STOPITERATION_ERROR);
+ ADDOP_I(c, NO_LOCATION, RERAISE, 1);
+ return SUCCESS;
+}
+
+static int
+compiler_type_params(struct compiler *c, asdl_type_param_seq *type_params)
+{
+ if (!type_params) {
+ return SUCCESS;
+ }
+ Py_ssize_t n = asdl_seq_LEN(type_params);
+
+ for (Py_ssize_t i = 0; i < n; i++) {
+ type_param_ty typeparam = asdl_seq_GET(type_params, i);
+ location loc = LOC(typeparam);
+ switch(typeparam->kind) {
+ case TypeVar_kind:
+ ADDOP_LOAD_CONST(c, loc, typeparam->v.TypeVar.name);
+ if (typeparam->v.TypeVar.bound) {
+ expr_ty bound = typeparam->v.TypeVar.bound;
+ if (compiler_enter_scope(c, typeparam->v.TypeVar.name, COMPILER_SCOPE_TYPEPARAMS,
+ (void *)typeparam, bound->lineno) == -1) {
+ return ERROR;
+ }
+ VISIT_IN_SCOPE(c, expr, bound);
+ ADDOP_IN_SCOPE(c, loc, RETURN_VALUE);
+ PyCodeObject *co = optimize_and_assemble(c, 1);
+ compiler_exit_scope(c);
+ if (co == NULL) {
+ return ERROR;
+ }
+ if (compiler_make_closure(c, loc, co, 0) < 0) {
+ Py_DECREF(co);
+ return ERROR;
+ }
+ Py_DECREF(co);
+
+ int intrinsic = bound->kind == Tuple_kind
+ ? INTRINSIC_TYPEVAR_WITH_CONSTRAINTS
+ : INTRINSIC_TYPEVAR_WITH_BOUND;
+ ADDOP_I(c, loc, CALL_INTRINSIC_2, intrinsic);
+ }
+ else {
+ ADDOP_I(c, loc, CALL_INTRINSIC_1, INTRINSIC_TYPEVAR);
+ }
+ ADDOP_I(c, loc, COPY, 1);
+ RETURN_IF_ERROR(compiler_nameop(c, loc, typeparam->v.TypeVar.name, Store));
+ break;
+ case TypeVarTuple_kind:
+ ADDOP_LOAD_CONST(c, loc, typeparam->v.TypeVarTuple.name);
+ ADDOP_I(c, loc, CALL_INTRINSIC_1, INTRINSIC_TYPEVARTUPLE);
+ ADDOP_I(c, loc, COPY, 1);
+ RETURN_IF_ERROR(compiler_nameop(c, loc, typeparam->v.TypeVarTuple.name, Store));
+ break;
+ case ParamSpec_kind:
+ ADDOP_LOAD_CONST(c, loc, typeparam->v.ParamSpec.name);
+ ADDOP_I(c, loc, CALL_INTRINSIC_1, INTRINSIC_PARAMSPEC);
+ ADDOP_I(c, loc, COPY, 1);
+ RETURN_IF_ERROR(compiler_nameop(c, loc, typeparam->v.ParamSpec.name, Store));
+ break;
+ }
+ }
+ ADDOP_I(c, LOC(asdl_seq_GET(type_params, 0)), BUILD_TUPLE, n);
+ return SUCCESS;
+}
+
+static int
+compiler_function_body(struct compiler *c, stmt_ty s, int is_async, Py_ssize_t funcflags,
+ int firstlineno)
+{
+ PyObject *docstring = NULL;
+ arguments_ty args;
+ identifier name;
+ asdl_stmt_seq *body;
+ int scope_type;
+
+ if (is_async) {
+ assert(s->kind == AsyncFunctionDef_kind);
+
+ args = s->v.AsyncFunctionDef.args;
+ name = s->v.AsyncFunctionDef.name;
+ body = s->v.AsyncFunctionDef.body;
+
+ scope_type = COMPILER_SCOPE_ASYNC_FUNCTION;
+ } else {
+ assert(s->kind == FunctionDef_kind);
+
+ args = s->v.FunctionDef.args;
+ name = s->v.FunctionDef.name;
+ body = s->v.FunctionDef.body;
+
+ scope_type = COMPILER_SCOPE_FUNCTION;
+ }
+
+ RETURN_IF_ERROR(
+ compiler_enter_scope(c, name, scope_type, (void *)s, firstlineno));
+
+ /* if not -OO mode, add docstring */
+ if (c->c_optimize < 2) {
+ docstring = _PyAST_GetDocString(body);
+ }
+ if (compiler_add_const(c->c_const_cache, c->u, docstring ? docstring : Py_None) < 0) {
+ compiler_exit_scope(c);
+ return ERROR;
+ }
+
+ c->u->u_metadata.u_argcount = asdl_seq_LEN(args->args);
+ c->u->u_metadata.u_posonlyargcount = asdl_seq_LEN(args->posonlyargs);
+ c->u->u_metadata.u_kwonlyargcount = asdl_seq_LEN(args->kwonlyargs);
+ for (Py_ssize_t i = docstring ? 1 : 0; i < asdl_seq_LEN(body); i++) {
+ VISIT_IN_SCOPE(c, stmt, (stmt_ty)asdl_seq_GET(body, i));
+ }
+ if (c->u->u_ste->ste_coroutine || c->u->u_ste->ste_generator) {
+ if (wrap_in_stopiteration_handler(c) < 0) {
+ compiler_exit_scope(c);
+ return ERROR;
+ }
+ }
+ PyCodeObject *co = optimize_and_assemble(c, 1);
+ compiler_exit_scope(c);
+ if (co == NULL) {
+ Py_XDECREF(co);
+ return ERROR;
+ }
+ location loc = LOC(s);
+ if (compiler_make_closure(c, loc, co, funcflags) < 0) {
+ Py_DECREF(co);
+ return ERROR;
+ }
+ Py_DECREF(co);
+ return SUCCESS;
+}
+
+static int
+compiler_function(struct compiler *c, stmt_ty s, int is_async)
+{
+ arguments_ty args;
+ expr_ty returns;
+ identifier name;
+ asdl_expr_seq *decos;
+ asdl_type_param_seq *type_params;
+ Py_ssize_t funcflags;
+ int annotations;
+ int firstlineno;
+
+ if (is_async) {
+ assert(s->kind == AsyncFunctionDef_kind);
+
+ args = s->v.AsyncFunctionDef.args;
+ returns = s->v.AsyncFunctionDef.returns;
+ decos = s->v.AsyncFunctionDef.decorator_list;
+ name = s->v.AsyncFunctionDef.name;
+ type_params = s->v.AsyncFunctionDef.type_params;
+ } else {
+ assert(s->kind == FunctionDef_kind);
+
+ args = s->v.FunctionDef.args;
+ returns = s->v.FunctionDef.returns;
+ decos = s->v.FunctionDef.decorator_list;
+ name = s->v.FunctionDef.name;
+ type_params = s->v.FunctionDef.type_params;
+ }
+
+ RETURN_IF_ERROR(compiler_check_debug_args(c, args));
+ RETURN_IF_ERROR(compiler_decorators(c, decos));
+
+ firstlineno = s->lineno;
+ if (asdl_seq_LEN(decos)) {
+ firstlineno = ((expr_ty)asdl_seq_GET(decos, 0))->lineno;
+ }
+
+ location loc = LOC(s);
+
+ int is_generic = asdl_seq_LEN(type_params) > 0;
+
+ if (is_generic) {
+ // Used by the CALL to the type parameters function.
+ ADDOP(c, loc, PUSH_NULL);
+ }
+
+ funcflags = compiler_default_arguments(c, loc, args);
+ if (funcflags == -1) {
+ return ERROR;
+ }
+
+ int num_typeparam_args = 0;
+
+ if (is_generic) {
+ if (funcflags & 0x01) {
+ num_typeparam_args += 1;
+ }
+ if (funcflags & 0x02) {
+ num_typeparam_args += 1;
+ }
+ if (num_typeparam_args == 2) {
+ ADDOP_I(c, loc, SWAP, 2);
+ }
+ PyObject *type_params_name = PyUnicode_FromFormat("<generic parameters of %U>", name);
+ if (!type_params_name) {
+ return ERROR;
+ }
+ if (compiler_enter_scope(c, type_params_name, COMPILER_SCOPE_TYPEPARAMS,
+ (void *)type_params, firstlineno) == -1) {
+ Py_DECREF(type_params_name);
+ return ERROR;
+ }
+ Py_DECREF(type_params_name);
+ RETURN_IF_ERROR_IN_SCOPE(c, compiler_type_params(c, type_params));
+ if ((funcflags & 0x01) || (funcflags & 0x02)) {
+ RETURN_IF_ERROR_IN_SCOPE(c, codegen_addop_i(INSTR_SEQUENCE(c), LOAD_FAST, 0, loc));
+ }
+ if ((funcflags & 0x01) && (funcflags & 0x02)) {
+ RETURN_IF_ERROR_IN_SCOPE(c, codegen_addop_i(INSTR_SEQUENCE(c), LOAD_FAST, 1, loc));
+ }
+ }
+
+ annotations = compiler_visit_annotations(c, loc, args, returns);
+ if (annotations < 0) {
+ if (is_generic) {
+ compiler_exit_scope(c);
+ }
+ return ERROR;
+ }
+ if (annotations > 0) {
+ funcflags |= 0x04;
+ }
+
+ if (compiler_function_body(c, s, is_async, funcflags, firstlineno) < 0) {
+ if (is_generic) {
+ compiler_exit_scope(c);
+ }
+ return ERROR;
+ }
+
+ if (is_generic) {
+ RETURN_IF_ERROR_IN_SCOPE(c, codegen_addop_i(
+ INSTR_SEQUENCE(c), SWAP, 2, loc));
+ RETURN_IF_ERROR_IN_SCOPE(c, codegen_addop_i(
+ INSTR_SEQUENCE(c), CALL_INTRINSIC_2, INTRINSIC_SET_FUNCTION_TYPE_PARAMS, loc));
+
+ c->u->u_metadata.u_argcount = num_typeparam_args;
+ PyCodeObject *co = optimize_and_assemble(c, 0);
+ compiler_exit_scope(c);
+ if (co == NULL) {
+ return ERROR;
+ }
+ if (compiler_make_closure(c, loc, co, 0) < 0) {
+ Py_DECREF(co);
+ return ERROR;
+ }
+ Py_DECREF(co);
+ if (num_typeparam_args > 0) {
+ ADDOP_I(c, loc, SWAP, num_typeparam_args + 1);
+ }
+ ADDOP_I(c, loc, CALL, num_typeparam_args);
+ }
+
+ RETURN_IF_ERROR(compiler_apply_decorators(c, decos));
+ return compiler_nameop(c, loc, name, Store);
+}
+
+static int
+compiler_set_type_params_in_class(struct compiler *c, location loc)
+{
+ _Py_DECLARE_STR(type_params, ".type_params");
+ RETURN_IF_ERROR(compiler_nameop(c, loc, &_Py_STR(type_params), Load));
+ RETURN_IF_ERROR(compiler_nameop(c, loc, &_Py_ID(__type_params__), Store));
+ return 1;
+}
+
+static int
+compiler_class_body(struct compiler *c, stmt_ty s, int firstlineno)
+{
+ /* ultimately generate code for:
+ <name> = __build_class__(<func>, <name>, *<bases>, **<keywords>)
+ where:
+ <func> is a zero arg function/closure created from the class body.
+ It mutates its locals to build the class namespace.
+ <name> is the class name
+ <bases> is the positional arguments and *varargs argument
+ <keywords> is the keyword arguments and **kwds argument
+ This borrows from compiler_call.
+ */
+
+ /* 1. compile the class body into a code object */
+ RETURN_IF_ERROR(
+ compiler_enter_scope(c, s->v.ClassDef.name,
+ COMPILER_SCOPE_CLASS, (void *)s, firstlineno));
+
+ location loc = LOCATION(firstlineno, firstlineno, 0, 0);
+ /* use the class name for name mangling */
+ Py_XSETREF(c->u->u_private, Py_NewRef(s->v.ClassDef.name));
+ /* load (global) __name__ ... */
+ if (compiler_nameop(c, loc, &_Py_ID(__name__), Load) < 0) {
+ compiler_exit_scope(c);
+ return ERROR;
+ }
+ /* ... and store it as __module__ */
+ if (compiler_nameop(c, loc, &_Py_ID(__module__), Store) < 0) {
+ compiler_exit_scope(c);
+ return ERROR;
+ }
+ assert(c->u->u_metadata.u_qualname);
+ ADDOP_LOAD_CONST(c, loc, c->u->u_metadata.u_qualname);
+ if (compiler_nameop(c, loc, &_Py_ID(__qualname__), Store) < 0) {
+ compiler_exit_scope(c);
+ return ERROR;
+ }
+ asdl_type_param_seq *type_params = s->v.ClassDef.type_params;
+ if (asdl_seq_LEN(type_params) > 0) {
+ if (!compiler_set_type_params_in_class(c, loc)) {
+ compiler_exit_scope(c);
+ return ERROR;
+ }
+ }
+ if (c->u->u_ste->ste_needs_classdict) {
+ ADDOP(c, loc, LOAD_LOCALS);
+
+ // We can't use compiler_nameop here because we need to generate a
+ // STORE_DEREF in a class namespace, and compiler_nameop() won't do
+ // that by default.
+ PyObject *cellvars = c->u->u_metadata.u_cellvars;
+ if (compiler_addop_o(c->u, loc, STORE_DEREF, cellvars,
+ &_Py_ID(__classdict__)) < 0) {
+ compiler_exit_scope(c);
+ return ERROR;
+ }
+ }
+ /* compile the body proper */
+ if (compiler_body(c, loc, s->v.ClassDef.body) < 0) {
+ compiler_exit_scope(c);
+ return ERROR;
+ }
+ /* The following code is artificial */
+ /* Set __classdictcell__ if necessary */
+ if (c->u->u_ste->ste_needs_classdict) {
+ /* Store __classdictcell__ into class namespace */
+ int i = compiler_lookup_arg(c->u->u_metadata.u_cellvars, &_Py_ID(__classdict__));
+ if (i < 0) {
+ compiler_exit_scope(c);
+ return ERROR;
+ }
+ ADDOP_I(c, NO_LOCATION, LOAD_CLOSURE, i);
+ if (compiler_nameop(c, NO_LOCATION, &_Py_ID(__classdictcell__), Store) < 0) {
+ compiler_exit_scope(c);
+ return ERROR;
+ }
+ }
+ /* Return __classcell__ if it is referenced, otherwise return None */
+ if (c->u->u_ste->ste_needs_class_closure) {
+ /* Store __classcell__ into class namespace & return it */
+ int i = compiler_lookup_arg(c->u->u_metadata.u_cellvars, &_Py_ID(__class__));
+ if (i < 0) {
+ compiler_exit_scope(c);
+ return ERROR;
+ }
+ ADDOP_I(c, NO_LOCATION, LOAD_CLOSURE, i);
+ ADDOP_I(c, NO_LOCATION, COPY, 1);
+ if (compiler_nameop(c, NO_LOCATION, &_Py_ID(__classcell__), Store) < 0) {
+ compiler_exit_scope(c);
+ return ERROR;
+ }
+ }
+ else {
+ /* No methods referenced __class__, so just return None */
+ ADDOP_LOAD_CONST(c, NO_LOCATION, Py_None);
+ }
+ ADDOP_IN_SCOPE(c, NO_LOCATION, RETURN_VALUE);
+ /* create the code object */
+ PyCodeObject *co = optimize_and_assemble(c, 1);
+
+ /* leave the new scope */
+ compiler_exit_scope(c);
+ if (co == NULL) {
+ return ERROR;
+ }
+
+ /* 2. load the 'build_class' function */
+
+ // these instructions should be attributed to the class line,
+ // not a decorator line
+ loc = LOC(s);
+ ADDOP(c, loc, PUSH_NULL);
+ ADDOP(c, loc, LOAD_BUILD_CLASS);
+
+ /* 3. load a function (or closure) made from the code object */
+ if (compiler_make_closure(c, loc, co, 0) < 0) {
+ Py_DECREF(co);
+ return ERROR;
+ }
+ Py_DECREF(co);
+
+ /* 4. load class name */
+ ADDOP_LOAD_CONST(c, loc, s->v.ClassDef.name);
+
+ return SUCCESS;
+}
+
+static int
+compiler_class(struct compiler *c, stmt_ty s)
+{
+ asdl_expr_seq *decos = s->v.ClassDef.decorator_list;
+
+ RETURN_IF_ERROR(compiler_decorators(c, decos));
+
+ int firstlineno = s->lineno;
+ if (asdl_seq_LEN(decos)) {
+ firstlineno = ((expr_ty)asdl_seq_GET(decos, 0))->lineno;
+ }
+ location loc = LOC(s);
+
+ asdl_type_param_seq *type_params = s->v.ClassDef.type_params;
+ int is_generic = asdl_seq_LEN(type_params) > 0;
+ if (is_generic) {
+ Py_XSETREF(c->u->u_private, Py_NewRef(s->v.ClassDef.name));
+ ADDOP(c, loc, PUSH_NULL);
+ PyObject *type_params_name = PyUnicode_FromFormat("<generic parameters of %U>",
+ s->v.ClassDef.name);
+ if (!type_params_name) {
+ return ERROR;
+ }
+ if (compiler_enter_scope(c, type_params_name, COMPILER_SCOPE_TYPEPARAMS,
+ (void *)type_params, firstlineno) == -1) {
+ Py_DECREF(type_params_name);
+ return ERROR;
+ }
+ Py_DECREF(type_params_name);
+ RETURN_IF_ERROR_IN_SCOPE(c, compiler_type_params(c, type_params));
+ _Py_DECLARE_STR(type_params, ".type_params");
+ RETURN_IF_ERROR_IN_SCOPE(c, compiler_nameop(c, loc, &_Py_STR(type_params), Store));
+ }
+
+ if (compiler_class_body(c, s, firstlineno) < 0) {
+ if (is_generic) {
+ compiler_exit_scope(c);
+ }
+ return ERROR;
+ }
+
+ /* generate the rest of the code for the call */
+
+ if (is_generic) {
+ _Py_DECLARE_STR(type_params, ".type_params");
+ _Py_DECLARE_STR(generic_base, ".generic_base");
+ RETURN_IF_ERROR_IN_SCOPE(c, compiler_nameop(c, loc, &_Py_STR(type_params), Load));
+ RETURN_IF_ERROR_IN_SCOPE(
+ c, codegen_addop_i(INSTR_SEQUENCE(c), CALL_INTRINSIC_1, INTRINSIC_SUBSCRIPT_GENERIC, loc)
+ )
+ RETURN_IF_ERROR_IN_SCOPE(c, compiler_nameop(c, loc, &_Py_STR(generic_base), Store));
+
+ Py_ssize_t original_len = asdl_seq_LEN(s->v.ClassDef.bases);
+ asdl_expr_seq *bases = _Py_asdl_expr_seq_new(
+ original_len + 1, c->c_arena);
+ if (bases == NULL) {
+ compiler_exit_scope(c);
+ return ERROR;
+ }
+ for (Py_ssize_t i = 0; i < original_len; i++) {
+ asdl_seq_SET(bases, i, asdl_seq_GET(s->v.ClassDef.bases, i));
+ }
+ expr_ty name_node = _PyAST_Name(
+ &_Py_STR(generic_base), Load,
+ loc.lineno, loc.col_offset, loc.end_lineno, loc.end_col_offset, c->c_arena
+ );
+ if (name_node == NULL) {
+ compiler_exit_scope(c);
+ return ERROR;
+ }
+ asdl_seq_SET(bases, original_len, name_node);
+ RETURN_IF_ERROR_IN_SCOPE(c, compiler_call_helper(c, loc, 2,
+ bases,
+ s->v.ClassDef.keywords));
+
+ PyCodeObject *co = optimize_and_assemble(c, 0);
+ compiler_exit_scope(c);
+ if (co == NULL) {
+ return ERROR;
+ }
+ if (compiler_make_closure(c, loc, co, 0) < 0) {
+ Py_DECREF(co);
+ return ERROR;
+ }
+ Py_DECREF(co);
+ ADDOP_I(c, loc, CALL, 0);
+ } else {
+ RETURN_IF_ERROR(compiler_call_helper(c, loc, 2,
+ s->v.ClassDef.bases,
+ s->v.ClassDef.keywords));
+ }
+
+ /* 6. apply decorators */
+ RETURN_IF_ERROR(compiler_apply_decorators(c, decos));
+
+ /* 7. store into <name> */
+ RETURN_IF_ERROR(compiler_nameop(c, loc, s->v.ClassDef.name, Store));
+ return SUCCESS;
+}
+
+static int
+compiler_typealias_body(struct compiler *c, stmt_ty s)
+{
+ location loc = LOC(s);
+ PyObject *name = s->v.TypeAlias.name->v.Name.id;
+ RETURN_IF_ERROR(
+ compiler_enter_scope(c, name, COMPILER_SCOPE_FUNCTION, s, loc.lineno));
+ /* Make None the first constant, so the evaluate function can't have a
+ docstring. */
+ RETURN_IF_ERROR(compiler_add_const(c->c_const_cache, c->u, Py_None));
+ VISIT_IN_SCOPE(c, expr, s->v.TypeAlias.value);
+ ADDOP_IN_SCOPE(c, loc, RETURN_VALUE);
+ PyCodeObject *co = optimize_and_assemble(c, 0);
+ compiler_exit_scope(c);
+ if (co == NULL) {
+ return ERROR;
+ }
+ if (compiler_make_closure(c, loc, co, 0) < 0) {
+ Py_DECREF(co);
+ return ERROR;
+ }
+ Py_DECREF(co);
+ ADDOP_I(c, loc, BUILD_TUPLE, 3);
+ ADDOP_I(c, loc, CALL_INTRINSIC_1, INTRINSIC_TYPEALIAS);
+ return SUCCESS;
+}
+
+static int
+compiler_typealias(struct compiler *c, stmt_ty s)
+{
+ location loc = LOC(s);
+ asdl_type_param_seq *type_params = s->v.TypeAlias.type_params;
+ int is_generic = asdl_seq_LEN(type_params) > 0;
+ PyObject *name = s->v.TypeAlias.name->v.Name.id;
+ if (is_generic) {
+ ADDOP(c, loc, PUSH_NULL);
+ PyObject *type_params_name = PyUnicode_FromFormat("<generic parameters of %U>",
+ name);
+ if (!type_params_name) {
+ return ERROR;
+ }
+ if (compiler_enter_scope(c, type_params_name, COMPILER_SCOPE_TYPEPARAMS,
+ (void *)type_params, loc.lineno) == -1) {
+ Py_DECREF(type_params_name);
+ return ERROR;
+ }
+ Py_DECREF(type_params_name);
+ RETURN_IF_ERROR_IN_SCOPE(
+ c, compiler_addop_load_const(c->c_const_cache, c->u, loc, name)
+ );
+ RETURN_IF_ERROR_IN_SCOPE(c, compiler_type_params(c, type_params));
+ }
+ else {
+ ADDOP_LOAD_CONST(c, loc, name);
+ ADDOP_LOAD_CONST(c, loc, Py_None);
+ }
+
+ if (compiler_typealias_body(c, s) < 0) {
+ if (is_generic) {
+ compiler_exit_scope(c);
+ }
+ return ERROR;
+ }
+
+ if (is_generic) {
+ PyCodeObject *co = optimize_and_assemble(c, 0);
+ compiler_exit_scope(c);
+ if (co == NULL) {
+ return ERROR;
+ }
+ if (compiler_make_closure(c, loc, co, 0) < 0) {
+ Py_DECREF(co);
+ return ERROR;
+ }
+ Py_DECREF(co);
+ ADDOP_I(c, loc, CALL, 0);
+ }
+ RETURN_IF_ERROR(compiler_nameop(c, loc, name, Store));
+ return SUCCESS;
+}
+
+/* Return false if the expression is a constant value except named singletons.
+ Return true otherwise. */
+static bool
+check_is_arg(expr_ty e)
+{
+ if (e->kind != Constant_kind) {
+ return true;
+ }
+ PyObject *value = e->v.Constant.value;
+ return (value == Py_None
+ || value == Py_False
+ || value == Py_True
+ || value == Py_Ellipsis);
+}
+
+static PyTypeObject * infer_type(expr_ty e);
+
+/* Check operands of identity checks ("is" and "is not").
+ Emit a warning if any operand is a constant except named singletons.
+ */
+static int
+check_compare(struct compiler *c, expr_ty e)
+{
+ Py_ssize_t i, n;
+ bool left = check_is_arg(e->v.Compare.left);
+ expr_ty left_expr = e->v.Compare.left;
+ n = asdl_seq_LEN(e->v.Compare.ops);
+ for (i = 0; i < n; i++) {
+ cmpop_ty op = (cmpop_ty)asdl_seq_GET(e->v.Compare.ops, i);
+ expr_ty right_expr = (expr_ty)asdl_seq_GET(e->v.Compare.comparators, i);
+ bool right = check_is_arg(right_expr);
+ if (op == Is || op == IsNot) {
+ if (!right || !left) {
+ const char *msg = (op == Is)
+ ? "\"is\" with '%.200s' literal. Did you mean \"==\"?"
+ : "\"is not\" with '%.200s' literal. Did you mean \"!=\"?";
+ expr_ty literal = !left ? left_expr : right_expr;
+ return compiler_warn(
+ c, LOC(e), msg, infer_type(literal)->tp_name
+ );
+ }
+ }
+ left = right;
+ left_expr = right_expr;
+ }
+ return SUCCESS;
+}
+
+static const int compare_masks[] = {
+ [Py_LT] = COMPARISON_LESS_THAN,
+ [Py_LE] = COMPARISON_LESS_THAN | COMPARISON_EQUALS,
+ [Py_EQ] = COMPARISON_EQUALS,
+ [Py_NE] = COMPARISON_NOT_EQUALS,
+ [Py_GT] = COMPARISON_GREATER_THAN,
+ [Py_GE] = COMPARISON_GREATER_THAN | COMPARISON_EQUALS,
+};
+
+static int compiler_addcompare(struct compiler *c, location loc,
+ cmpop_ty op)
+{
+ int cmp;
+ switch (op) {
+ case Eq:
+ cmp = Py_EQ;
+ break;
+ case NotEq:
+ cmp = Py_NE;
+ break;
+ case Lt:
+ cmp = Py_LT;
+ break;
+ case LtE:
+ cmp = Py_LE;
+ break;
+ case Gt:
+ cmp = Py_GT;
+ break;
+ case GtE:
+ cmp = Py_GE;
+ break;
+ case Is:
+ ADDOP_I(c, loc, IS_OP, 0);
+ return SUCCESS;
+ case IsNot:
+ ADDOP_I(c, loc, IS_OP, 1);
+ return SUCCESS;
+ case In:
+ ADDOP_I(c, loc, CONTAINS_OP, 0);
+ return SUCCESS;
+ case NotIn:
+ ADDOP_I(c, loc, CONTAINS_OP, 1);
+ return SUCCESS;
+ default:
+ Py_UNREACHABLE();
+ }
+ /* cmp goes in top bits of the oparg, while the low bits are used by quickened
+ * versions of this opcode to store the comparison mask. */
+ ADDOP_I(c, loc, COMPARE_OP, (cmp << 4) | compare_masks[cmp]);
+ return SUCCESS;
+}
+
+
+
+static int
+compiler_jump_if(struct compiler *c, location loc,
+ expr_ty e, jump_target_label next, int cond)
+{
+ switch (e->kind) {
+ case UnaryOp_kind:
+ if (e->v.UnaryOp.op == Not) {
+ return compiler_jump_if(c, loc, e->v.UnaryOp.operand, next, !cond);
+ }
+ /* fallback to general implementation */
+ break;
+ case BoolOp_kind: {
+ asdl_expr_seq *s = e->v.BoolOp.values;
+ Py_ssize_t i, n = asdl_seq_LEN(s) - 1;
+ assert(n >= 0);
+ int cond2 = e->v.BoolOp.op == Or;
+ jump_target_label next2 = next;
+ if (!cond2 != !cond) {
+ NEW_JUMP_TARGET_LABEL(c, new_next2);
+ next2 = new_next2;
+ }
+ for (i = 0; i < n; ++i) {
+ RETURN_IF_ERROR(
+ compiler_jump_if(c, loc, (expr_ty)asdl_seq_GET(s, i), next2, cond2));
+ }
+ RETURN_IF_ERROR(
+ compiler_jump_if(c, loc, (expr_ty)asdl_seq_GET(s, n), next, cond));
+ if (!SAME_LABEL(next2, next)) {
+ USE_LABEL(c, next2);
+ }
+ return SUCCESS;
+ }
+ case IfExp_kind: {
+ NEW_JUMP_TARGET_LABEL(c, end);
+ NEW_JUMP_TARGET_LABEL(c, next2);
+ RETURN_IF_ERROR(
+ compiler_jump_if(c, loc, e->v.IfExp.test, next2, 0));
+ RETURN_IF_ERROR(
+ compiler_jump_if(c, loc, e->v.IfExp.body, next, cond));
+ ADDOP_JUMP(c, NO_LOCATION, JUMP, end);
+
+ USE_LABEL(c, next2);
+ RETURN_IF_ERROR(
+ compiler_jump_if(c, loc, e->v.IfExp.orelse, next, cond));
+
+ USE_LABEL(c, end);
+ return SUCCESS;
+ }
+ case Compare_kind: {
+ Py_ssize_t n = asdl_seq_LEN(e->v.Compare.ops) - 1;
+ if (n > 0) {
+ RETURN_IF_ERROR(check_compare(c, e));
+ NEW_JUMP_TARGET_LABEL(c, cleanup);
+ VISIT(c, expr, e->v.Compare.left);
+ for (Py_ssize_t i = 0; i < n; i++) {
+ VISIT(c, expr,
+ (expr_ty)asdl_seq_GET(e->v.Compare.comparators, i));
+ ADDOP_I(c, LOC(e), SWAP, 2);
+ ADDOP_I(c, LOC(e), COPY, 2);
+ ADDOP_COMPARE(c, LOC(e), asdl_seq_GET(e->v.Compare.ops, i));
+ ADDOP_JUMP(c, LOC(e), POP_JUMP_IF_FALSE, cleanup);
+ }
+ VISIT(c, expr, (expr_ty)asdl_seq_GET(e->v.Compare.comparators, n));
+ ADDOP_COMPARE(c, LOC(e), asdl_seq_GET(e->v.Compare.ops, n));
+ ADDOP_JUMP(c, LOC(e), cond ? POP_JUMP_IF_TRUE : POP_JUMP_IF_FALSE, next);
+ NEW_JUMP_TARGET_LABEL(c, end);
+ ADDOP_JUMP(c, NO_LOCATION, JUMP, end);
+
+ USE_LABEL(c, cleanup);
+ ADDOP(c, LOC(e), POP_TOP);
+ if (!cond) {
+ ADDOP_JUMP(c, NO_LOCATION, JUMP, next);
+ }
+
+ USE_LABEL(c, end);
+ return SUCCESS;
+ }
+ /* fallback to general implementation */
+ break;
+ }
+ default:
+ /* fallback to general implementation */
+ break;
+ }
+
+ /* general implementation */
+ VISIT(c, expr, e);
+ ADDOP_JUMP(c, LOC(e), cond ? POP_JUMP_IF_TRUE : POP_JUMP_IF_FALSE, next);
+ return SUCCESS;
+}
+
+static int
+compiler_ifexp(struct compiler *c, expr_ty e)
+{
+ assert(e->kind == IfExp_kind);
+ NEW_JUMP_TARGET_LABEL(c, end);
+ NEW_JUMP_TARGET_LABEL(c, next);
+
+ RETURN_IF_ERROR(
+ compiler_jump_if(c, LOC(e), e->v.IfExp.test, next, 0));
+
+ VISIT(c, expr, e->v.IfExp.body);
+ ADDOP_JUMP(c, NO_LOCATION, JUMP, end);
+
+ USE_LABEL(c, next);
+ VISIT(c, expr, e->v.IfExp.orelse);
+
+ USE_LABEL(c, end);
+ return SUCCESS;
+}
+
+static int
+compiler_lambda(struct compiler *c, expr_ty e)
+{
+ PyCodeObject *co;
+ Py_ssize_t funcflags;
+ arguments_ty args = e->v.Lambda.args;
+ assert(e->kind == Lambda_kind);
+
+ RETURN_IF_ERROR(compiler_check_debug_args(c, args));
+
+ location loc = LOC(e);
+ funcflags = compiler_default_arguments(c, loc, args);
+ if (funcflags == -1) {
+ return ERROR;
+ }
+
+ _Py_DECLARE_STR(anon_lambda, "<lambda>");
+ RETURN_IF_ERROR(
+ compiler_enter_scope(c, &_Py_STR(anon_lambda), COMPILER_SCOPE_LAMBDA,
+ (void *)e, e->lineno));
+
+ /* Make None the first constant, so the lambda can't have a
+ docstring. */
+ RETURN_IF_ERROR(compiler_add_const(c->c_const_cache, c->u, Py_None));
+
+ c->u->u_metadata.u_argcount = asdl_seq_LEN(args->args);
+ c->u->u_metadata.u_posonlyargcount = asdl_seq_LEN(args->posonlyargs);
+ c->u->u_metadata.u_kwonlyargcount = asdl_seq_LEN(args->kwonlyargs);
+ VISIT_IN_SCOPE(c, expr, e->v.Lambda.body);
+ if (c->u->u_ste->ste_generator) {
+ co = optimize_and_assemble(c, 0);
+ }
+ else {
+ location loc = LOCATION(e->lineno, e->lineno, 0, 0);
+ ADDOP_IN_SCOPE(c, loc, RETURN_VALUE);
+ co = optimize_and_assemble(c, 1);
+ }
+ compiler_exit_scope(c);
+ if (co == NULL) {
+ return ERROR;
+ }
+
+ if (compiler_make_closure(c, loc, co, funcflags) < 0) {
+ Py_DECREF(co);
+ return ERROR;
+ }
+ Py_DECREF(co);
+
+ return SUCCESS;
+}
+
+static int
+compiler_if(struct compiler *c, stmt_ty s)
+{
+ jump_target_label next;
+ assert(s->kind == If_kind);
+ NEW_JUMP_TARGET_LABEL(c, end);
+ if (asdl_seq_LEN(s->v.If.orelse)) {
+ NEW_JUMP_TARGET_LABEL(c, orelse);
+ next = orelse;
+ }
+ else {
+ next = end;
+ }
+ RETURN_IF_ERROR(
+ compiler_jump_if(c, LOC(s), s->v.If.test, next, 0));
+
+ VISIT_SEQ(c, stmt, s->v.If.body);
+ if (asdl_seq_LEN(s->v.If.orelse)) {
+ ADDOP_JUMP(c, NO_LOCATION, JUMP, end);
+
+ USE_LABEL(c, next);
+ VISIT_SEQ(c, stmt, s->v.If.orelse);
+ }
+
+ USE_LABEL(c, end);
+ return SUCCESS;
+}
+
+static int
+compiler_for(struct compiler *c, stmt_ty s)
+{
+ location loc = LOC(s);
+ NEW_JUMP_TARGET_LABEL(c, start);
+ NEW_JUMP_TARGET_LABEL(c, body);
+ NEW_JUMP_TARGET_LABEL(c, cleanup);
+ NEW_JUMP_TARGET_LABEL(c, end);
+
+ RETURN_IF_ERROR(compiler_push_fblock(c, loc, FOR_LOOP, start, end, NULL));
+
+ VISIT(c, expr, s->v.For.iter);
+ ADDOP(c, loc, GET_ITER);
+
+ USE_LABEL(c, start);
+ ADDOP_JUMP(c, loc, FOR_ITER, cleanup);
+
+ USE_LABEL(c, body);
+ VISIT(c, expr, s->v.For.target);
+ VISIT_SEQ(c, stmt, s->v.For.body);
+ /* Mark jump as artificial */
+ ADDOP_JUMP(c, NO_LOCATION, JUMP, start);
+
+ USE_LABEL(c, cleanup);
+ ADDOP(c, NO_LOCATION, END_FOR);
+
+ compiler_pop_fblock(c, FOR_LOOP, start);
+
+ VISIT_SEQ(c, stmt, s->v.For.orelse);
+
+ USE_LABEL(c, end);
+ return SUCCESS;
+}
+
+
+static int
+compiler_async_for(struct compiler *c, stmt_ty s)
+{
+ location loc = LOC(s);
+ if (IS_TOP_LEVEL_AWAIT(c)){
+ c->u->u_ste->ste_coroutine = 1;
+ } else if (c->u->u_scope_type != COMPILER_SCOPE_ASYNC_FUNCTION) {
+ return compiler_error(c, loc, "'async for' outside async function");
+ }
+
+ NEW_JUMP_TARGET_LABEL(c, start);
+ NEW_JUMP_TARGET_LABEL(c, except);
+ NEW_JUMP_TARGET_LABEL(c, end);
+
+ VISIT(c, expr, s->v.AsyncFor.iter);
+ ADDOP(c, loc, GET_AITER);
+
+ USE_LABEL(c, start);
+ RETURN_IF_ERROR(compiler_push_fblock(c, loc, FOR_LOOP, start, end, NULL));
+
+ /* SETUP_FINALLY to guard the __anext__ call */
+ ADDOP_JUMP(c, loc, SETUP_FINALLY, except);
+ ADDOP(c, loc, GET_ANEXT);
+ ADDOP_LOAD_CONST(c, loc, Py_None);
+ ADD_YIELD_FROM(c, loc, 1);
+ ADDOP(c, loc, POP_BLOCK); /* for SETUP_FINALLY */
+
+ /* Success block for __anext__ */
+ VISIT(c, expr, s->v.AsyncFor.target);
+ VISIT_SEQ(c, stmt, s->v.AsyncFor.body);
+ /* Mark jump as artificial */
+ ADDOP_JUMP(c, NO_LOCATION, JUMP, start);
+
+ compiler_pop_fblock(c, FOR_LOOP, start);
+
+ /* Except block for __anext__ */
+ USE_LABEL(c, except);
+
+ /* Use same line number as the iterator,
+ * as the END_ASYNC_FOR succeeds the `for`, not the body. */
+ loc = LOC(s->v.AsyncFor.iter);
+ ADDOP(c, loc, END_ASYNC_FOR);
+
+ /* `else` block */
+ VISIT_SEQ(c, stmt, s->v.For.orelse);
+
+ USE_LABEL(c, end);
+ return SUCCESS;
+}
+
+static int
+compiler_while(struct compiler *c, stmt_ty s)
+{
+ NEW_JUMP_TARGET_LABEL(c, loop);
+ NEW_JUMP_TARGET_LABEL(c, body);
+ NEW_JUMP_TARGET_LABEL(c, end);
+ NEW_JUMP_TARGET_LABEL(c, anchor);
+
+ USE_LABEL(c, loop);
+
+ RETURN_IF_ERROR(compiler_push_fblock(c, LOC(s), WHILE_LOOP, loop, end, NULL));
+ RETURN_IF_ERROR(compiler_jump_if(c, LOC(s), s->v.While.test, anchor, 0));
+
+ USE_LABEL(c, body);
+ VISIT_SEQ(c, stmt, s->v.While.body);
+ RETURN_IF_ERROR(compiler_jump_if(c, LOC(s), s->v.While.test, body, 1));
+
+ compiler_pop_fblock(c, WHILE_LOOP, loop);
+
+ USE_LABEL(c, anchor);
+ if (s->v.While.orelse) {
+ VISIT_SEQ(c, stmt, s->v.While.orelse);
+ }
+
+ USE_LABEL(c, end);
+ return SUCCESS;
+}
+
+static int
+compiler_return(struct compiler *c, stmt_ty s)
+{
+ location loc = LOC(s);
+ int preserve_tos = ((s->v.Return.value != NULL) &&
+ (s->v.Return.value->kind != Constant_kind));
+ if (!_PyST_IsFunctionLike(c->u->u_ste)) {
+ return compiler_error(c, loc, "'return' outside function");
+ }
+ if (s->v.Return.value != NULL &&
+ c->u->u_ste->ste_coroutine && c->u->u_ste->ste_generator)
+ {
+ return compiler_error(c, loc, "'return' with value in async generator");
+ }
+
+ if (preserve_tos) {
+ VISIT(c, expr, s->v.Return.value);
+ } else {
+ /* Emit instruction with line number for return value */
+ if (s->v.Return.value != NULL) {
+ loc = LOC(s->v.Return.value);
+ ADDOP(c, loc, NOP);
+ }
+ }
+ if (s->v.Return.value == NULL || s->v.Return.value->lineno != s->lineno) {
+ loc = LOC(s);
+ ADDOP(c, loc, NOP);
+ }
+
+ RETURN_IF_ERROR(compiler_unwind_fblock_stack(c, &loc, preserve_tos, NULL));
+ if (s->v.Return.value == NULL) {
+ ADDOP_LOAD_CONST(c, loc, Py_None);
+ }
+ else if (!preserve_tos) {
+ ADDOP_LOAD_CONST(c, loc, s->v.Return.value->v.Constant.value);
+ }
+ ADDOP(c, loc, RETURN_VALUE);
+
+ return SUCCESS;
+}
+
+static int
+compiler_break(struct compiler *c, location loc)
+{
+ struct fblockinfo *loop = NULL;
+ location origin_loc = loc;
+ /* Emit instruction with line number */
+ ADDOP(c, loc, NOP);
+ RETURN_IF_ERROR(compiler_unwind_fblock_stack(c, &loc, 0, &loop));
+ if (loop == NULL) {
+ return compiler_error(c, origin_loc, "'break' outside loop");
+ }
+ RETURN_IF_ERROR(compiler_unwind_fblock(c, &loc, loop, 0));
+ ADDOP_JUMP(c, loc, JUMP, loop->fb_exit);
+ return SUCCESS;
+}
+
+static int
+compiler_continue(struct compiler *c, location loc)
+{
+ struct fblockinfo *loop = NULL;
+ location origin_loc = loc;
+ /* Emit instruction with line number */
+ ADDOP(c, loc, NOP);
+ RETURN_IF_ERROR(compiler_unwind_fblock_stack(c, &loc, 0, &loop));
+ if (loop == NULL) {
+ return compiler_error(c, origin_loc, "'continue' not properly in loop");
+ }
+ ADDOP_JUMP(c, loc, JUMP, loop->fb_block);
+ return SUCCESS;
+}
+
+
+/* Code generated for "try: <body> finally: <finalbody>" is as follows:
+
+ SETUP_FINALLY L
+ <code for body>
+ POP_BLOCK
+ <code for finalbody>
+ JUMP E
+ L:
+ <code for finalbody>
+ E:
+
+ The special instructions use the block stack. Each block
+ stack entry contains the instruction that created it (here
+ SETUP_FINALLY), the level of the value stack at the time the
+ block stack entry was created, and a label (here L).
+
+ SETUP_FINALLY:
+ Pushes the current value stack level and the label
+ onto the block stack.
+ POP_BLOCK:
+ Pops en entry from the block stack.
+
+ The block stack is unwound when an exception is raised:
+ when a SETUP_FINALLY entry is found, the raised and the caught
+ exceptions are pushed onto the value stack (and the exception
+ condition is cleared), and the interpreter jumps to the label
+ gotten from the block stack.
+*/
+
+static int
+compiler_try_finally(struct compiler *c, stmt_ty s)
+{
+ location loc = LOC(s);
+
+ NEW_JUMP_TARGET_LABEL(c, body);
+ NEW_JUMP_TARGET_LABEL(c, end);
+ NEW_JUMP_TARGET_LABEL(c, exit);
+ NEW_JUMP_TARGET_LABEL(c, cleanup);
+
+ /* `try` block */
+ ADDOP_JUMP(c, loc, SETUP_FINALLY, end);
+
+ USE_LABEL(c, body);
+ RETURN_IF_ERROR(
+ compiler_push_fblock(c, loc, FINALLY_TRY, body, end,
+ s->v.Try.finalbody));
+
+ if (s->v.Try.handlers && asdl_seq_LEN(s->v.Try.handlers)) {
+ RETURN_IF_ERROR(compiler_try_except(c, s));
+ }
+ else {
+ VISIT_SEQ(c, stmt, s->v.Try.body);
+ }
+ ADDOP(c, NO_LOCATION, POP_BLOCK);
+ compiler_pop_fblock(c, FINALLY_TRY, body);
+ VISIT_SEQ(c, stmt, s->v.Try.finalbody);
+
+ ADDOP_JUMP(c, NO_LOCATION, JUMP, exit);
+ /* `finally` block */
+
+ USE_LABEL(c, end);
+
+ loc = NO_LOCATION;
+ ADDOP_JUMP(c, loc, SETUP_CLEANUP, cleanup);
+ ADDOP(c, loc, PUSH_EXC_INFO);
+ RETURN_IF_ERROR(
+ compiler_push_fblock(c, loc, FINALLY_END, end, NO_LABEL, NULL));
+ VISIT_SEQ(c, stmt, s->v.Try.finalbody);
+ compiler_pop_fblock(c, FINALLY_END, end);
+
+ loc = NO_LOCATION;
+ ADDOP_I(c, loc, RERAISE, 0);
+
+ USE_LABEL(c, cleanup);
+ POP_EXCEPT_AND_RERAISE(c, loc);
+
+ USE_LABEL(c, exit);
+ return SUCCESS;
+}
+
+static int
+compiler_try_star_finally(struct compiler *c, stmt_ty s)
+{
+ location loc = LOC(s);
+
+ NEW_JUMP_TARGET_LABEL(c, body);
+ NEW_JUMP_TARGET_LABEL(c, end);
+ NEW_JUMP_TARGET_LABEL(c, exit);
+ NEW_JUMP_TARGET_LABEL(c, cleanup);
+ /* `try` block */
+ ADDOP_JUMP(c, loc, SETUP_FINALLY, end);
+
+ USE_LABEL(c, body);
+ RETURN_IF_ERROR(
+ compiler_push_fblock(c, loc, FINALLY_TRY, body, end,
+ s->v.TryStar.finalbody));
+
+ if (s->v.TryStar.handlers && asdl_seq_LEN(s->v.TryStar.handlers)) {
+ RETURN_IF_ERROR(compiler_try_star_except(c, s));
+ }
+ else {
+ VISIT_SEQ(c, stmt, s->v.TryStar.body);
+ }
+ ADDOP(c, NO_LOCATION, POP_BLOCK);
+ compiler_pop_fblock(c, FINALLY_TRY, body);
+ VISIT_SEQ(c, stmt, s->v.TryStar.finalbody);
+
+ ADDOP_JUMP(c, NO_LOCATION, JUMP, exit);
+
+ /* `finally` block */
+ USE_LABEL(c, end);
+
+ loc = NO_LOCATION;
+ ADDOP_JUMP(c, loc, SETUP_CLEANUP, cleanup);
+ ADDOP(c, loc, PUSH_EXC_INFO);
+ RETURN_IF_ERROR(
+ compiler_push_fblock(c, loc, FINALLY_END, end, NO_LABEL, NULL));
+
+ VISIT_SEQ(c, stmt, s->v.TryStar.finalbody);
+
+ compiler_pop_fblock(c, FINALLY_END, end);
+ loc = NO_LOCATION;
+ ADDOP_I(c, loc, RERAISE, 0);
+
+ USE_LABEL(c, cleanup);
+ POP_EXCEPT_AND_RERAISE(c, loc);
+
+ USE_LABEL(c, exit);
+ return SUCCESS;
+}
+
+
+/*
+ Code generated for "try: S except E1 as V1: S1 except E2 as V2: S2 ...":
+ (The contents of the value stack is shown in [], with the top
+ at the right; 'tb' is trace-back info, 'val' the exception's
+ associated value, and 'exc' the exception.)
+
+ Value stack Label Instruction Argument
+ [] SETUP_FINALLY L1
+ [] <code for S>
+ [] POP_BLOCK
+ [] JUMP L0
+
+ [exc] L1: <evaluate E1> )
+ [exc, E1] CHECK_EXC_MATCH )
+ [exc, bool] POP_JUMP_IF_FALSE L2 ) only if E1
+ [exc] <assign to V1> (or POP if no V1)
+ [] <code for S1>
+ JUMP L0
+
+ [exc] L2: <evaluate E2>
+ .............................etc.......................
+
+ [exc] Ln+1: RERAISE # re-raise exception
+
+ [] L0: <next statement>
+
+ Of course, parts are not generated if Vi or Ei is not present.
+*/
+static int
+compiler_try_except(struct compiler *c, stmt_ty s)
+{
+ location loc = LOC(s);
+ Py_ssize_t i, n;
+
+ NEW_JUMP_TARGET_LABEL(c, body);
+ NEW_JUMP_TARGET_LABEL(c, except);
+ NEW_JUMP_TARGET_LABEL(c, end);
+ NEW_JUMP_TARGET_LABEL(c, cleanup);
+
+ ADDOP_JUMP(c, loc, SETUP_FINALLY, except);
+
+ USE_LABEL(c, body);
+ RETURN_IF_ERROR(
+ compiler_push_fblock(c, loc, TRY_EXCEPT, body, NO_LABEL, NULL));
+ VISIT_SEQ(c, stmt, s->v.Try.body);
+ compiler_pop_fblock(c, TRY_EXCEPT, body);
+ ADDOP(c, NO_LOCATION, POP_BLOCK);
+ if (s->v.Try.orelse && asdl_seq_LEN(s->v.Try.orelse)) {
+ VISIT_SEQ(c, stmt, s->v.Try.orelse);
+ }
+ ADDOP_JUMP(c, NO_LOCATION, JUMP, end);
+ n = asdl_seq_LEN(s->v.Try.handlers);
+
+ USE_LABEL(c, except);
+
+ ADDOP_JUMP(c, NO_LOCATION, SETUP_CLEANUP, cleanup);
+ ADDOP(c, NO_LOCATION, PUSH_EXC_INFO);
+
+ /* Runtime will push a block here, so we need to account for that */
+ RETURN_IF_ERROR(
+ compiler_push_fblock(c, loc, EXCEPTION_HANDLER, NO_LABEL, NO_LABEL, NULL));
+
+ for (i = 0; i < n; i++) {
+ excepthandler_ty handler = (excepthandler_ty)asdl_seq_GET(
+ s->v.Try.handlers, i);
+ location loc = LOC(handler);
+ if (!handler->v.ExceptHandler.type && i < n-1) {
+ return compiler_error(c, loc, "default 'except:' must be last");
+ }
+ NEW_JUMP_TARGET_LABEL(c, next_except);
+ except = next_except;
+ if (handler->v.ExceptHandler.type) {
+ VISIT(c, expr, handler->v.ExceptHandler.type);
+ ADDOP(c, loc, CHECK_EXC_MATCH);
+ ADDOP_JUMP(c, loc, POP_JUMP_IF_FALSE, except);
+ }
+ if (handler->v.ExceptHandler.name) {
+ NEW_JUMP_TARGET_LABEL(c, cleanup_end);
+ NEW_JUMP_TARGET_LABEL(c, cleanup_body);
+
+ RETURN_IF_ERROR(
+ compiler_nameop(c, loc, handler->v.ExceptHandler.name, Store));
+
+ /*
+ try:
+ # body
+ except type as name:
+ try:
+ # body
+ finally:
+ name = None # in case body contains "del name"
+ del name
+ */
+
+ /* second try: */
+ ADDOP_JUMP(c, loc, SETUP_CLEANUP, cleanup_end);
+
+ USE_LABEL(c, cleanup_body);
+ RETURN_IF_ERROR(
+ compiler_push_fblock(c, loc, HANDLER_CLEANUP, cleanup_body,
+ NO_LABEL, handler->v.ExceptHandler.name));
+
+ /* second # body */
+ VISIT_SEQ(c, stmt, handler->v.ExceptHandler.body);
+ compiler_pop_fblock(c, HANDLER_CLEANUP, cleanup_body);
+ /* name = None; del name; # Mark as artificial */
+ ADDOP(c, NO_LOCATION, POP_BLOCK);
+ ADDOP(c, NO_LOCATION, POP_BLOCK);
+ ADDOP(c, NO_LOCATION, POP_EXCEPT);
+ ADDOP_LOAD_CONST(c, NO_LOCATION, Py_None);
+ RETURN_IF_ERROR(
+ compiler_nameop(c, NO_LOCATION, handler->v.ExceptHandler.name, Store));
+ RETURN_IF_ERROR(
+ compiler_nameop(c, NO_LOCATION, handler->v.ExceptHandler.name, Del));
+ ADDOP_JUMP(c, NO_LOCATION, JUMP, end);
+
+ /* except: */
+ USE_LABEL(c, cleanup_end);
+
+ /* name = None; del name; # artificial */
+ ADDOP_LOAD_CONST(c, NO_LOCATION, Py_None);
+ RETURN_IF_ERROR(
+ compiler_nameop(c, NO_LOCATION, handler->v.ExceptHandler.name, Store));
+ RETURN_IF_ERROR(
+ compiler_nameop(c, NO_LOCATION, handler->v.ExceptHandler.name, Del));
+
+ ADDOP_I(c, NO_LOCATION, RERAISE, 1);
+ }
+ else {
+ NEW_JUMP_TARGET_LABEL(c, cleanup_body);
+
+ ADDOP(c, loc, POP_TOP); /* exc_value */
+
+ USE_LABEL(c, cleanup_body);
+ RETURN_IF_ERROR(
+ compiler_push_fblock(c, loc, HANDLER_CLEANUP, cleanup_body,
+ NO_LABEL, NULL));
+
+ VISIT_SEQ(c, stmt, handler->v.ExceptHandler.body);
+ compiler_pop_fblock(c, HANDLER_CLEANUP, cleanup_body);
+ ADDOP(c, NO_LOCATION, POP_BLOCK);
+ ADDOP(c, NO_LOCATION, POP_EXCEPT);
+ ADDOP_JUMP(c, NO_LOCATION, JUMP, end);
+ }
+
+ USE_LABEL(c, except);
+ }
+ /* artificial */
+ compiler_pop_fblock(c, EXCEPTION_HANDLER, NO_LABEL);
+ ADDOP_I(c, NO_LOCATION, RERAISE, 0);
+
+ USE_LABEL(c, cleanup);
+ POP_EXCEPT_AND_RERAISE(c, NO_LOCATION);
+
+ USE_LABEL(c, end);
+ return SUCCESS;
+}
+
+/*
+ Code generated for "try: S except* E1 as V1: S1 except* E2 as V2: S2 ...":
+ (The contents of the value stack is shown in [], with the top
+ at the right; 'tb' is trace-back info, 'val' the exception instance,
+ and 'typ' the exception's type.)
+
+ Value stack Label Instruction Argument
+ [] SETUP_FINALLY L1
+ [] <code for S>
+ [] POP_BLOCK
+ [] JUMP L0
+
+ [exc] L1: BUILD_LIST ) list for raised/reraised excs ("result")
+ [orig, res] COPY 2 ) make a copy of the original EG
+
+ [orig, res, exc] <evaluate E1>
+ [orig, res, exc, E1] CHECK_EG_MATCH
+ [orig, res, rest/exc, match?] COPY 1
+ [orig, res, rest/exc, match?, match?] POP_JUMP_IF_NONE C1
+
+ [orig, res, rest, match] <assign to V1> (or POP if no V1)
+
+ [orig, res, rest] SETUP_FINALLY R1
+ [orig, res, rest] <code for S1>
+ [orig, res, rest] JUMP L2
+
+ [orig, res, rest, i, v] R1: LIST_APPEND 3 ) exc raised in except* body - add to res
+ [orig, res, rest, i] POP
+ [orig, res, rest] JUMP LE2
+
+ [orig, res, rest] L2: NOP ) for lineno
+ [orig, res, rest] JUMP LE2
+
+ [orig, res, rest/exc, None] C1: POP
+
+ [orig, res, rest] LE2: <evaluate E2>
+ .............................etc.......................
+
+ [orig, res, rest] Ln+1: LIST_APPEND 1 ) add unhandled exc to res (could be None)
+
+ [orig, res] CALL_INTRINSIC_2 PREP_RERAISE_STAR
+ [exc] COPY 1
+ [exc, exc] POP_JUMP_IF_NOT_NONE RER
+ [exc] POP_TOP
+ [] JUMP L0
+
+ [exc] RER: SWAP 2
+ [exc, prev_exc_info] POP_EXCEPT
+ [exc] RERAISE 0
+
+ [] L0: <next statement>
+*/
+static int
+compiler_try_star_except(struct compiler *c, stmt_ty s)
+{
+ location loc = LOC(s);
+
+ NEW_JUMP_TARGET_LABEL(c, body);
+ NEW_JUMP_TARGET_LABEL(c, except);
+ NEW_JUMP_TARGET_LABEL(c, orelse);
+ NEW_JUMP_TARGET_LABEL(c, end);
+ NEW_JUMP_TARGET_LABEL(c, cleanup);
+ NEW_JUMP_TARGET_LABEL(c, reraise_star);
+
+ ADDOP_JUMP(c, loc, SETUP_FINALLY, except);
+
+ USE_LABEL(c, body);
+ RETURN_IF_ERROR(
+ compiler_push_fblock(c, loc, TRY_EXCEPT, body, NO_LABEL, NULL));
+ VISIT_SEQ(c, stmt, s->v.TryStar.body);
+ compiler_pop_fblock(c, TRY_EXCEPT, body);
+ ADDOP(c, NO_LOCATION, POP_BLOCK);
+ ADDOP_JUMP(c, NO_LOCATION, JUMP, orelse);
+ Py_ssize_t n = asdl_seq_LEN(s->v.TryStar.handlers);
+
+ USE_LABEL(c, except);
+
+ ADDOP_JUMP(c, NO_LOCATION, SETUP_CLEANUP, cleanup);
+ ADDOP(c, NO_LOCATION, PUSH_EXC_INFO);
+
+ /* Runtime will push a block here, so we need to account for that */
+ RETURN_IF_ERROR(
+ compiler_push_fblock(c, loc, EXCEPTION_GROUP_HANDLER,
+ NO_LABEL, NO_LABEL, "except handler"));
+
+ for (Py_ssize_t i = 0; i < n; i++) {
+ excepthandler_ty handler = (excepthandler_ty)asdl_seq_GET(
+ s->v.TryStar.handlers, i);
+ location loc = LOC(handler);
+ NEW_JUMP_TARGET_LABEL(c, next_except);
+ except = next_except;
+ NEW_JUMP_TARGET_LABEL(c, except_with_error);
+ NEW_JUMP_TARGET_LABEL(c, no_match);
+ if (i == 0) {
+ /* create empty list for exceptions raised/reraise in the except* blocks */
+ /*
+ [orig] BUILD_LIST
+ */
+ /* Create a copy of the original EG */
+ /*
+ [orig, []] COPY 2
+ [orig, [], exc]
+ */
+ ADDOP_I(c, loc, BUILD_LIST, 0);
+ ADDOP_I(c, loc, COPY, 2);
+ }
+ if (handler->v.ExceptHandler.type) {
+ VISIT(c, expr, handler->v.ExceptHandler.type);
+ ADDOP(c, loc, CHECK_EG_MATCH);
+ ADDOP_I(c, loc, COPY, 1);
+ ADDOP_JUMP(c, loc, POP_JUMP_IF_NONE, no_match);
+ }
+
+ NEW_JUMP_TARGET_LABEL(c, cleanup_end);
+ NEW_JUMP_TARGET_LABEL(c, cleanup_body);
+
+ if (handler->v.ExceptHandler.name) {
+ RETURN_IF_ERROR(
+ compiler_nameop(c, loc, handler->v.ExceptHandler.name, Store));
+ }
+ else {
+ ADDOP(c, loc, POP_TOP); // match
+ }
+
+ /*
+ try:
+ # body
+ except type as name:
+ try:
+ # body
+ finally:
+ name = None # in case body contains "del name"
+ del name
+ */
+ /* second try: */
+ ADDOP_JUMP(c, loc, SETUP_CLEANUP, cleanup_end);
+
+ USE_LABEL(c, cleanup_body);
+ RETURN_IF_ERROR(
+ compiler_push_fblock(c, loc, HANDLER_CLEANUP, cleanup_body,
+ NO_LABEL, handler->v.ExceptHandler.name));
+
+ /* second # body */
+ VISIT_SEQ(c, stmt, handler->v.ExceptHandler.body);
+ compiler_pop_fblock(c, HANDLER_CLEANUP, cleanup_body);
+ /* name = None; del name; # artificial */
+ ADDOP(c, NO_LOCATION, POP_BLOCK);
+ if (handler->v.ExceptHandler.name) {
+ ADDOP_LOAD_CONST(c, NO_LOCATION, Py_None);
+ RETURN_IF_ERROR(
+ compiler_nameop(c, NO_LOCATION, handler->v.ExceptHandler.name, Store));
+ RETURN_IF_ERROR(
+ compiler_nameop(c, NO_LOCATION, handler->v.ExceptHandler.name, Del));
+ }
+ ADDOP_JUMP(c, NO_LOCATION, JUMP, except);
+
+ /* except: */
+ USE_LABEL(c, cleanup_end);
+
+ /* name = None; del name; # artificial */
+ if (handler->v.ExceptHandler.name) {
+ ADDOP_LOAD_CONST(c, NO_LOCATION, Py_None);
+ RETURN_IF_ERROR(
+ compiler_nameop(c, NO_LOCATION, handler->v.ExceptHandler.name, Store));
+ RETURN_IF_ERROR(
+ compiler_nameop(c, NO_LOCATION, handler->v.ExceptHandler.name, Del));
+ }
+
+ /* add exception raised to the res list */
+ ADDOP_I(c, NO_LOCATION, LIST_APPEND, 3); // exc
+ ADDOP(c, NO_LOCATION, POP_TOP); // lasti
+ ADDOP_JUMP(c, NO_LOCATION, JUMP, except_with_error);
+
+ USE_LABEL(c, except);
+ ADDOP(c, NO_LOCATION, NOP); // to hold a propagated location info
+ ADDOP_JUMP(c, NO_LOCATION, JUMP, except_with_error);
+
+ USE_LABEL(c, no_match);
+ ADDOP(c, loc, POP_TOP); // match (None)
+
+ USE_LABEL(c, except_with_error);
+
+ if (i == n - 1) {
+ /* Add exc to the list (if not None it's the unhandled part of the EG) */
+ ADDOP_I(c, NO_LOCATION, LIST_APPEND, 1);
+ ADDOP_JUMP(c, NO_LOCATION, JUMP, reraise_star);
+ }
+ }
+ /* artificial */
+ compiler_pop_fblock(c, EXCEPTION_GROUP_HANDLER, NO_LABEL);
+ NEW_JUMP_TARGET_LABEL(c, reraise);
+
+ USE_LABEL(c, reraise_star);
+ ADDOP_I(c, NO_LOCATION, CALL_INTRINSIC_2, INTRINSIC_PREP_RERAISE_STAR);
+ ADDOP_I(c, NO_LOCATION, COPY, 1);
+ ADDOP_JUMP(c, NO_LOCATION, POP_JUMP_IF_NOT_NONE, reraise);
+
+ /* Nothing to reraise */
+ ADDOP(c, NO_LOCATION, POP_TOP);
+ ADDOP(c, NO_LOCATION, POP_BLOCK);
+ ADDOP(c, NO_LOCATION, POP_EXCEPT);
+ ADDOP_JUMP(c, NO_LOCATION, JUMP, end);
+
+ USE_LABEL(c, reraise);
+ ADDOP(c, NO_LOCATION, POP_BLOCK);
+ ADDOP_I(c, NO_LOCATION, SWAP, 2);
+ ADDOP(c, NO_LOCATION, POP_EXCEPT);
+ ADDOP_I(c, NO_LOCATION, RERAISE, 0);
+
+ USE_LABEL(c, cleanup);
+ POP_EXCEPT_AND_RERAISE(c, NO_LOCATION);
+
+ USE_LABEL(c, orelse);
+ VISIT_SEQ(c, stmt, s->v.TryStar.orelse);
+
+ USE_LABEL(c, end);
+ return SUCCESS;
+}
+
+static int
+compiler_try(struct compiler *c, stmt_ty s) {
+ if (s->v.Try.finalbody && asdl_seq_LEN(s->v.Try.finalbody))
+ return compiler_try_finally(c, s);
+ else
+ return compiler_try_except(c, s);
+}
+
+static int
+compiler_try_star(struct compiler *c, stmt_ty s)
+{
+ if (s->v.TryStar.finalbody && asdl_seq_LEN(s->v.TryStar.finalbody)) {
+ return compiler_try_star_finally(c, s);
+ }
+ else {
+ return compiler_try_star_except(c, s);
+ }
+}
+
+static int
+compiler_import_as(struct compiler *c, location loc,
+ identifier name, identifier asname)
+{
+ /* The IMPORT_NAME opcode was already generated. This function
+ merely needs to bind the result to a name.
+
+ If there is a dot in name, we need to split it and emit a
+ IMPORT_FROM for each name.
+ */
+ Py_ssize_t len = PyUnicode_GET_LENGTH(name);
+ Py_ssize_t dot = PyUnicode_FindChar(name, '.', 0, len, 1);
+ if (dot == -2) {
+ return ERROR;
+ }
+ if (dot != -1) {
+ /* Consume the base module name to get the first attribute */
+ while (1) {
+ Py_ssize_t pos = dot + 1;
+ PyObject *attr;
+ dot = PyUnicode_FindChar(name, '.', pos, len, 1);
+ if (dot == -2) {
+ return ERROR;
+ }
+ attr = PyUnicode_Substring(name, pos, (dot != -1) ? dot : len);
+ if (!attr) {
+ return ERROR;
+ }
+ ADDOP_N(c, loc, IMPORT_FROM, attr, names);
+ if (dot == -1) {
+ break;
+ }
+ ADDOP_I(c, loc, SWAP, 2);
+ ADDOP(c, loc, POP_TOP);
+ }
+ RETURN_IF_ERROR(compiler_nameop(c, loc, asname, Store));
+ ADDOP(c, loc, POP_TOP);
+ return SUCCESS;
+ }
+ return compiler_nameop(c, loc, asname, Store);
+}
+
+static int
+compiler_import(struct compiler *c, stmt_ty s)
+{
+ location loc = LOC(s);
+ /* The Import node stores a module name like a.b.c as a single
+ string. This is convenient for all cases except
+ import a.b.c as d
+ where we need to parse that string to extract the individual
+ module names.
+ XXX Perhaps change the representation to make this case simpler?
+ */
+ Py_ssize_t i, n = asdl_seq_LEN(s->v.Import.names);
+
+ PyObject *zero = _PyLong_GetZero(); // borrowed reference
+ for (i = 0; i < n; i++) {
+ alias_ty alias = (alias_ty)asdl_seq_GET(s->v.Import.names, i);
+ int r;
+
+ ADDOP_LOAD_CONST(c, loc, zero);
+ ADDOP_LOAD_CONST(c, loc, Py_None);
+ ADDOP_NAME(c, loc, IMPORT_NAME, alias->name, names);
+
+ if (alias->asname) {
+ r = compiler_import_as(c, loc, alias->name, alias->asname);
+ RETURN_IF_ERROR(r);
+ }
+ else {
+ identifier tmp = alias->name;
+ Py_ssize_t dot = PyUnicode_FindChar(
+ alias->name, '.', 0, PyUnicode_GET_LENGTH(alias->name), 1);
+ if (dot != -1) {
+ tmp = PyUnicode_Substring(alias->name, 0, dot);
+ if (tmp == NULL) {
+ return ERROR;
+ }
+ }
+ r = compiler_nameop(c, loc, tmp, Store);
+ if (dot != -1) {
+ Py_DECREF(tmp);
+ }
+ RETURN_IF_ERROR(r);
+ }
+ }
+ return SUCCESS;
+}
+
+static int
+compiler_from_import(struct compiler *c, stmt_ty s)
+{
+ Py_ssize_t n = asdl_seq_LEN(s->v.ImportFrom.names);
+
+ ADDOP_LOAD_CONST_NEW(c, LOC(s), PyLong_FromLong(s->v.ImportFrom.level));
+
+ PyObject *names = PyTuple_New(n);
+ if (!names) {
+ return ERROR;
+ }
+
+ /* build up the names */
+ for (Py_ssize_t i = 0; i < n; i++) {
+ alias_ty alias = (alias_ty)asdl_seq_GET(s->v.ImportFrom.names, i);
+ PyTuple_SET_ITEM(names, i, Py_NewRef(alias->name));
+ }
+
+ if (location_is_after(LOC(s), c->c_future.ff_location) &&
+ s->v.ImportFrom.module &&
+ _PyUnicode_EqualToASCIIString(s->v.ImportFrom.module, "__future__"))
+ {
+ Py_DECREF(names);
+ return compiler_error(c, LOC(s), "from __future__ imports must occur "
+ "at the beginning of the file");
+ }
+ ADDOP_LOAD_CONST_NEW(c, LOC(s), names);
+
+ if (s->v.ImportFrom.module) {
+ ADDOP_NAME(c, LOC(s), IMPORT_NAME, s->v.ImportFrom.module, names);
+ }
+ else {
+ _Py_DECLARE_STR(empty, "");
+ ADDOP_NAME(c, LOC(s), IMPORT_NAME, &_Py_STR(empty), names);
+ }
+ for (Py_ssize_t i = 0; i < n; i++) {
+ alias_ty alias = (alias_ty)asdl_seq_GET(s->v.ImportFrom.names, i);
+ identifier store_name;
+
+ if (i == 0 && PyUnicode_READ_CHAR(alias->name, 0) == '*') {
+ assert(n == 1);
+ ADDOP_I(c, LOC(s), CALL_INTRINSIC_1, INTRINSIC_IMPORT_STAR);
+ ADDOP(c, NO_LOCATION, POP_TOP);
+ return SUCCESS;
+ }
+
+ ADDOP_NAME(c, LOC(s), IMPORT_FROM, alias->name, names);
+ store_name = alias->name;
+ if (alias->asname) {
+ store_name = alias->asname;
+ }
+
+ RETURN_IF_ERROR(compiler_nameop(c, LOC(s), store_name, Store));
+ }
+ /* remove imported module */
+ ADDOP(c, LOC(s), POP_TOP);
+ return SUCCESS;
+}
+
+static int
+compiler_assert(struct compiler *c, stmt_ty s)
+{
+ /* Always emit a warning if the test is a non-zero length tuple */
+ if ((s->v.Assert.test->kind == Tuple_kind &&
+ asdl_seq_LEN(s->v.Assert.test->v.Tuple.elts) > 0) ||
+ (s->v.Assert.test->kind == Constant_kind &&
+ PyTuple_Check(s->v.Assert.test->v.Constant.value) &&
+ PyTuple_Size(s->v.Assert.test->v.Constant.value) > 0))
+ {
+ RETURN_IF_ERROR(
+ compiler_warn(c, LOC(s), "assertion is always true, "
+ "perhaps remove parentheses?"));
+ }
+ if (c->c_optimize) {
+ return SUCCESS;
+ }
+ NEW_JUMP_TARGET_LABEL(c, end);
+ RETURN_IF_ERROR(compiler_jump_if(c, LOC(s), s->v.Assert.test, end, 1));
+ ADDOP(c, LOC(s), LOAD_ASSERTION_ERROR);
+ if (s->v.Assert.msg) {
+ VISIT(c, expr, s->v.Assert.msg);
+ ADDOP_I(c, LOC(s), CALL, 0);
+ }
+ ADDOP_I(c, LOC(s), RAISE_VARARGS, 1);
+
+ USE_LABEL(c, end);
+ return SUCCESS;
+}
+
+static int
+compiler_stmt_expr(struct compiler *c, location loc, expr_ty value)
+{
+ if (c->c_interactive && c->c_nestlevel <= 1) {
+ VISIT(c, expr, value);
+ ADDOP_I(c, loc, CALL_INTRINSIC_1, INTRINSIC_PRINT);
+ ADDOP(c, NO_LOCATION, POP_TOP);
+ return SUCCESS;
+ }
+
+ if (value->kind == Constant_kind) {
+ /* ignore constant statement */
+ ADDOP(c, loc, NOP);
+ return SUCCESS;
+ }
+
+ VISIT(c, expr, value);
+ ADDOP(c, NO_LOCATION, POP_TOP); /* artificial */
+ return SUCCESS;
+}
+
+static int
+compiler_visit_stmt(struct compiler *c, stmt_ty s)
+{
+
+ switch (s->kind) {
+ case FunctionDef_kind:
+ return compiler_function(c, s, 0);
+ case ClassDef_kind:
+ return compiler_class(c, s);
+ case TypeAlias_kind:
+ return compiler_typealias(c, s);
+ case Return_kind:
+ return compiler_return(c, s);
+ case Delete_kind:
+ VISIT_SEQ(c, expr, s->v.Delete.targets)
+ break;
+ case Assign_kind:
+ {
+ Py_ssize_t n = asdl_seq_LEN(s->v.Assign.targets);
+ VISIT(c, expr, s->v.Assign.value);
+ for (Py_ssize_t i = 0; i < n; i++) {
+ if (i < n - 1) {
+ ADDOP_I(c, LOC(s), COPY, 1);
+ }
+ VISIT(c, expr,
+ (expr_ty)asdl_seq_GET(s->v.Assign.targets, i));
+ }
+ break;
+ }
+ case AugAssign_kind:
+ return compiler_augassign(c, s);
+ case AnnAssign_kind:
+ return compiler_annassign(c, s);
+ case For_kind:
+ return compiler_for(c, s);
+ case While_kind:
+ return compiler_while(c, s);
+ case If_kind:
+ return compiler_if(c, s);
+ case Match_kind:
+ return compiler_match(c, s);
+ case Raise_kind:
+ {
+ Py_ssize_t n = 0;
+ if (s->v.Raise.exc) {
+ VISIT(c, expr, s->v.Raise.exc);
+ n++;
+ if (s->v.Raise.cause) {
+ VISIT(c, expr, s->v.Raise.cause);
+ n++;
+ }
+ }
+ ADDOP_I(c, LOC(s), RAISE_VARARGS, (int)n);
+ break;
+ }
+ case Try_kind:
+ return compiler_try(c, s);
+ case TryStar_kind:
+ return compiler_try_star(c, s);
+ case Assert_kind:
+ return compiler_assert(c, s);
+ case Import_kind:
+ return compiler_import(c, s);
+ case ImportFrom_kind:
+ return compiler_from_import(c, s);
+ case Global_kind:
+ case Nonlocal_kind:
+ break;
+ case Expr_kind:
+ {
+ return compiler_stmt_expr(c, LOC(s), s->v.Expr.value);
+ }
+ case Pass_kind:
+ {
+ ADDOP(c, LOC(s), NOP);
+ break;
+ }
+ case Break_kind:
+ {
+ return compiler_break(c, LOC(s));
+ }
+ case Continue_kind:
+ {
+ return compiler_continue(c, LOC(s));
+ }
+ case With_kind:
+ return compiler_with(c, s, 0);
+ case AsyncFunctionDef_kind:
+ return compiler_function(c, s, 1);
+ case AsyncWith_kind:
+ return compiler_async_with(c, s, 0);
+ case AsyncFor_kind:
+ return compiler_async_for(c, s);
+ }
+
+ return SUCCESS;
+}
+
+static int
+unaryop(unaryop_ty op)
+{
+ switch (op) {
+ case Invert:
+ return UNARY_INVERT;
+ case Not:
+ return UNARY_NOT;
+ case USub:
+ return UNARY_NEGATIVE;
+ default:
+ PyErr_Format(PyExc_SystemError,
+ "unary op %d should not be possible", op);
+ return 0;
+ }
+}
+
+static int
+addop_binary(struct compiler *c, location loc, operator_ty binop,
+ bool inplace)
+{
+ int oparg;
+ switch (binop) {
+ case Add:
+ oparg = inplace ? NB_INPLACE_ADD : NB_ADD;
+ break;
+ case Sub:
+ oparg = inplace ? NB_INPLACE_SUBTRACT : NB_SUBTRACT;
+ break;
+ case Mult:
+ oparg = inplace ? NB_INPLACE_MULTIPLY : NB_MULTIPLY;
+ break;
+ case MatMult:
+ oparg = inplace ? NB_INPLACE_MATRIX_MULTIPLY : NB_MATRIX_MULTIPLY;
+ break;
+ case Div:
+ oparg = inplace ? NB_INPLACE_TRUE_DIVIDE : NB_TRUE_DIVIDE;
+ break;
+ case Mod:
+ oparg = inplace ? NB_INPLACE_REMAINDER : NB_REMAINDER;
+ break;
+ case Pow:
+ oparg = inplace ? NB_INPLACE_POWER : NB_POWER;
+ break;
+ case LShift:
+ oparg = inplace ? NB_INPLACE_LSHIFT : NB_LSHIFT;
+ break;
+ case RShift:
+ oparg = inplace ? NB_INPLACE_RSHIFT : NB_RSHIFT;
+ break;
+ case BitOr:
+ oparg = inplace ? NB_INPLACE_OR : NB_OR;
+ break;
+ case BitXor:
+ oparg = inplace ? NB_INPLACE_XOR : NB_XOR;
+ break;
+ case BitAnd:
+ oparg = inplace ? NB_INPLACE_AND : NB_AND;
+ break;
+ case FloorDiv:
+ oparg = inplace ? NB_INPLACE_FLOOR_DIVIDE : NB_FLOOR_DIVIDE;
+ break;
+ default:
+ PyErr_Format(PyExc_SystemError, "%s op %d should not be possible",
+ inplace ? "inplace" : "binary", binop);
+ return ERROR;
+ }
+ ADDOP_I(c, loc, BINARY_OP, oparg);
+ return SUCCESS;
+}
+
+
+static int
+addop_yield(struct compiler *c, location loc) {
+ if (c->u->u_ste->ste_generator && c->u->u_ste->ste_coroutine) {
+ ADDOP_I(c, loc, CALL_INTRINSIC_1, INTRINSIC_ASYNC_GEN_WRAP);
+ }
+ ADDOP_I(c, loc, YIELD_VALUE, 0);
+ ADDOP_I(c, loc, RESUME, 1);
+ return SUCCESS;
+}
+
+static int
+compiler_nameop(struct compiler *c, location loc,
+ identifier name, expr_context_ty ctx)
+{
+ int op, scope;
+ Py_ssize_t arg;
+ enum { OP_FAST, OP_GLOBAL, OP_DEREF, OP_NAME } optype;
+
+ PyObject *dict = c->u->u_metadata.u_names;
+ PyObject *mangled;
+
+ assert(!_PyUnicode_EqualToASCIIString(name, "None") &&
+ !_PyUnicode_EqualToASCIIString(name, "True") &&
+ !_PyUnicode_EqualToASCIIString(name, "False"));
+
+ if (forbidden_name(c, loc, name, ctx)) {
+ return ERROR;
+ }
+
+ mangled = _Py_Mangle(c->u->u_private, name);
+ if (!mangled) {
+ return ERROR;
+ }
+
+ op = 0;
+ optype = OP_NAME;
+ scope = _PyST_GetScope(c->u->u_ste, mangled);
+ switch (scope) {
+ case FREE:
+ dict = c->u->u_metadata.u_freevars;
+ optype = OP_DEREF;
+ break;
+ case CELL:
+ dict = c->u->u_metadata.u_cellvars;
+ optype = OP_DEREF;
+ break;
+ case LOCAL:
+ if (_PyST_IsFunctionLike(c->u->u_ste) ||
+ (PyDict_GetItem(c->u->u_metadata.u_fasthidden, mangled) == Py_True))
+ optype = OP_FAST;
+ break;
+ case GLOBAL_IMPLICIT:
+ if (_PyST_IsFunctionLike(c->u->u_ste))
+ optype = OP_GLOBAL;
+ break;
+ case GLOBAL_EXPLICIT:
+ optype = OP_GLOBAL;
+ break;
+ default:
+ /* scope can be 0 */
+ break;
+ }
+
+ /* XXX Leave assert here, but handle __doc__ and the like better */
+ assert(scope || PyUnicode_READ_CHAR(name, 0) == '_');
+
+ switch (optype) {
+ case OP_DEREF:
+ switch (ctx) {
+ case Load:
+ if (c->u->u_ste->ste_type == ClassBlock && !c->u->u_in_inlined_comp) {
+ op = LOAD_FROM_DICT_OR_DEREF;
+ // First load the locals
+ if (codegen_addop_noarg(INSTR_SEQUENCE(c), LOAD_LOCALS, loc) < 0) {
+ return ERROR;
+ }
+ }
+ else if (c->u->u_ste->ste_can_see_class_scope) {
+ op = LOAD_FROM_DICT_OR_DEREF;
+ // First load the classdict
+ if (compiler_addop_o(c->u, loc, LOAD_DEREF,
+ c->u->u_metadata.u_freevars, &_Py_ID(__classdict__)) < 0) {
+ return ERROR;
+ }
+ }
+ else {
+ op = LOAD_DEREF;
+ }
+ break;
+ case Store: op = STORE_DEREF; break;
+ case Del: op = DELETE_DEREF; break;
+ }
+ break;
+ case OP_FAST:
+ switch (ctx) {
+ case Load: op = LOAD_FAST; break;
+ case Store: op = STORE_FAST; break;
+ case Del: op = DELETE_FAST; break;
+ }
+ ADDOP_N(c, loc, op, mangled, varnames);
+ return SUCCESS;
+ case OP_GLOBAL:
+ switch (ctx) {
+ case Load:
+ if (c->u->u_ste->ste_can_see_class_scope && scope == GLOBAL_IMPLICIT) {
+ op = LOAD_FROM_DICT_OR_GLOBALS;
+ // First load the classdict
+ if (compiler_addop_o(c->u, loc, LOAD_DEREF,
+ c->u->u_metadata.u_freevars, &_Py_ID(__classdict__)) < 0) {
+ return ERROR;
+ }
+ } else {
+ op = LOAD_GLOBAL;
+ }
+ break;
+ case Store: op = STORE_GLOBAL; break;
+ case Del: op = DELETE_GLOBAL; break;
+ }
+ break;
+ case OP_NAME:
+ switch (ctx) {
+ case Load:
+ op = (c->u->u_ste->ste_type == ClassBlock
+ && c->u->u_in_inlined_comp)
+ ? LOAD_GLOBAL
+ : LOAD_NAME;
+ break;
+ case Store: op = STORE_NAME; break;
+ case Del: op = DELETE_NAME; break;
+ }
+ break;
+ }
+
+ assert(op);
+ arg = dict_add_o(dict, mangled);
+ Py_DECREF(mangled);
+ if (arg < 0) {
+ return ERROR;
+ }
+ if (op == LOAD_GLOBAL) {
+ arg <<= 1;
+ }
+ return codegen_addop_i(INSTR_SEQUENCE(c), op, arg, loc);
+}
+
+static int
+compiler_boolop(struct compiler *c, expr_ty e)
+{
+ int jumpi;
+ Py_ssize_t i, n;
+ asdl_expr_seq *s;
+
+ location loc = LOC(e);
+ assert(e->kind == BoolOp_kind);
+ if (e->v.BoolOp.op == And)
+ jumpi = POP_JUMP_IF_FALSE;
+ else
+ jumpi = POP_JUMP_IF_TRUE;
+ NEW_JUMP_TARGET_LABEL(c, end);
+ s = e->v.BoolOp.values;
+ n = asdl_seq_LEN(s) - 1;
+ assert(n >= 0);
+ for (i = 0; i < n; ++i) {
+ VISIT(c, expr, (expr_ty)asdl_seq_GET(s, i));
+ ADDOP_I(c, loc, COPY, 1);
+ ADDOP_JUMP(c, loc, jumpi, end);
+ ADDOP(c, loc, POP_TOP);
+ }
+ VISIT(c, expr, (expr_ty)asdl_seq_GET(s, n));
+
+ USE_LABEL(c, end);
+ return SUCCESS;
+}
+
+static int
+starunpack_helper(struct compiler *c, location loc,
+ asdl_expr_seq *elts, int pushed,
+ int build, int add, int extend, int tuple)
+{
+ Py_ssize_t n = asdl_seq_LEN(elts);
+ if (n > 2 && are_all_items_const(elts, 0, n)) {
+ PyObject *folded = PyTuple_New(n);
+ if (folded == NULL) {
+ return ERROR;
+ }
+ PyObject *val;
+ for (Py_ssize_t i = 0; i < n; i++) {
+ val = ((expr_ty)asdl_seq_GET(elts, i))->v.Constant.value;
+ PyTuple_SET_ITEM(folded, i, Py_NewRef(val));
+ }
+ if (tuple && !pushed) {
+ ADDOP_LOAD_CONST_NEW(c, loc, folded);
+ } else {
+ if (add == SET_ADD) {
+ Py_SETREF(folded, PyFrozenSet_New(folded));
+ if (folded == NULL) {
+ return ERROR;
+ }
+ }
+ ADDOP_I(c, loc, build, pushed);
+ ADDOP_LOAD_CONST_NEW(c, loc, folded);
+ ADDOP_I(c, loc, extend, 1);
+ if (tuple) {
+ ADDOP_I(c, loc, CALL_INTRINSIC_1, INTRINSIC_LIST_TO_TUPLE);
+ }
+ }
+ return SUCCESS;
+ }
+
+ int big = n+pushed > STACK_USE_GUIDELINE;
+ int seen_star = 0;
+ for (Py_ssize_t i = 0; i < n; i++) {
+ expr_ty elt = asdl_seq_GET(elts, i);
+ if (elt->kind == Starred_kind) {
+ seen_star = 1;
+ break;
+ }
+ }
+ if (!seen_star && !big) {
+ for (Py_ssize_t i = 0; i < n; i++) {
+ expr_ty elt = asdl_seq_GET(elts, i);
+ VISIT(c, expr, elt);
+ }
+ if (tuple) {
+ ADDOP_I(c, loc, BUILD_TUPLE, n+pushed);
+ } else {
+ ADDOP_I(c, loc, build, n+pushed);
+ }
+ return SUCCESS;
+ }
+ int sequence_built = 0;
+ if (big) {
+ ADDOP_I(c, loc, build, pushed);
+ sequence_built = 1;
+ }
+ for (Py_ssize_t i = 0; i < n; i++) {
+ expr_ty elt = asdl_seq_GET(elts, i);
+ if (elt->kind == Starred_kind) {
+ if (sequence_built == 0) {
+ ADDOP_I(c, loc, build, i+pushed);
+ sequence_built = 1;
+ }
+ VISIT(c, expr, elt->v.Starred.value);
+ ADDOP_I(c, loc, extend, 1);
+ }
+ else {
+ VISIT(c, expr, elt);
+ if (sequence_built) {
+ ADDOP_I(c, loc, add, 1);
+ }
+ }
+ }
+ assert(sequence_built);
+ if (tuple) {
+ ADDOP_I(c, loc, CALL_INTRINSIC_1, INTRINSIC_LIST_TO_TUPLE);
+ }
+ return SUCCESS;
+}
+
+static int
+unpack_helper(struct compiler *c, location loc, asdl_expr_seq *elts)
+{
+ Py_ssize_t n = asdl_seq_LEN(elts);
+ int seen_star = 0;
+ for (Py_ssize_t i = 0; i < n; i++) {
+ expr_ty elt = asdl_seq_GET(elts, i);
+ if (elt->kind == Starred_kind && !seen_star) {
+ if ((i >= (1 << 8)) ||
+ (n-i-1 >= (INT_MAX >> 8))) {
+ return compiler_error(c, loc,
+ "too many expressions in "
+ "star-unpacking assignment");
+ }
+ ADDOP_I(c, loc, UNPACK_EX, (i + ((n-i-1) << 8)));
+ seen_star = 1;
+ }
+ else if (elt->kind == Starred_kind) {
+ return compiler_error(c, loc,
+ "multiple starred expressions in assignment");
+ }
+ }
+ if (!seen_star) {
+ ADDOP_I(c, loc, UNPACK_SEQUENCE, n);
+ }
+ return SUCCESS;
+}
+
+static int
+assignment_helper(struct compiler *c, location loc, asdl_expr_seq *elts)
+{
+ Py_ssize_t n = asdl_seq_LEN(elts);
+ RETURN_IF_ERROR(unpack_helper(c, loc, elts));
+ for (Py_ssize_t i = 0; i < n; i++) {
+ expr_ty elt = asdl_seq_GET(elts, i);
+ VISIT(c, expr, elt->kind != Starred_kind ? elt : elt->v.Starred.value);
+ }
+ return SUCCESS;
+}
+
+static int
+compiler_list(struct compiler *c, expr_ty e)
+{
+ location loc = LOC(e);
+ asdl_expr_seq *elts = e->v.List.elts;
+ if (e->v.List.ctx == Store) {
+ return assignment_helper(c, loc, elts);
+ }
+ else if (e->v.List.ctx == Load) {
+ return starunpack_helper(c, loc, elts, 0,
+ BUILD_LIST, LIST_APPEND, LIST_EXTEND, 0);
+ }
+ else {
+ VISIT_SEQ(c, expr, elts);
+ }
+ return SUCCESS;
+}
+
+static int
+compiler_tuple(struct compiler *c, expr_ty e)
+{
+ location loc = LOC(e);
+ asdl_expr_seq *elts = e->v.Tuple.elts;
+ if (e->v.Tuple.ctx == Store) {
+ return assignment_helper(c, loc, elts);
+ }
+ else if (e->v.Tuple.ctx == Load) {
+ return starunpack_helper(c, loc, elts, 0,
+ BUILD_LIST, LIST_APPEND, LIST_EXTEND, 1);
+ }
+ else {
+ VISIT_SEQ(c, expr, elts);
+ }
+ return SUCCESS;
+}
+
+static int
+compiler_set(struct compiler *c, expr_ty e)
+{
+ location loc = LOC(e);
+ return starunpack_helper(c, loc, e->v.Set.elts, 0,
+ BUILD_SET, SET_ADD, SET_UPDATE, 0);
+}
+
+static bool
+are_all_items_const(asdl_expr_seq *seq, Py_ssize_t begin, Py_ssize_t end)
+{
+ for (Py_ssize_t i = begin; i < end; i++) {
+ expr_ty key = (expr_ty)asdl_seq_GET(seq, i);
+ if (key == NULL || key->kind != Constant_kind) {
+ return false;
+ }
+ }
+ return true;
+}
+
+static int
+compiler_subdict(struct compiler *c, expr_ty e, Py_ssize_t begin, Py_ssize_t end)
+{
+ Py_ssize_t i, n = end - begin;
+ PyObject *keys, *key;
+ int big = n*2 > STACK_USE_GUIDELINE;
+ location loc = LOC(e);
+ if (n > 1 && !big && are_all_items_const(e->v.Dict.keys, begin, end)) {
+ for (i = begin; i < end; i++) {
+ VISIT(c, expr, (expr_ty)asdl_seq_GET(e->v.Dict.values, i));
+ }
+ keys = PyTuple_New(n);
+ if (keys == NULL) {
+ return SUCCESS;
+ }
+ for (i = begin; i < end; i++) {
+ key = ((expr_ty)asdl_seq_GET(e->v.Dict.keys, i))->v.Constant.value;
+ PyTuple_SET_ITEM(keys, i - begin, Py_NewRef(key));
+ }
+ ADDOP_LOAD_CONST_NEW(c, loc, keys);
+ ADDOP_I(c, loc, BUILD_CONST_KEY_MAP, n);
+ return SUCCESS;
+ }
+ if (big) {
+ ADDOP_I(c, loc, BUILD_MAP, 0);
+ }
+ for (i = begin; i < end; i++) {
+ VISIT(c, expr, (expr_ty)asdl_seq_GET(e->v.Dict.keys, i));
+ VISIT(c, expr, (expr_ty)asdl_seq_GET(e->v.Dict.values, i));
+ if (big) {
+ ADDOP_I(c, loc, MAP_ADD, 1);
+ }
+ }
+ if (!big) {
+ ADDOP_I(c, loc, BUILD_MAP, n);
+ }
+ return SUCCESS;
+}
+
+static int
+compiler_dict(struct compiler *c, expr_ty e)
+{
+ location loc = LOC(e);
+ Py_ssize_t i, n, elements;
+ int have_dict;
+ int is_unpacking = 0;
+ n = asdl_seq_LEN(e->v.Dict.values);
+ have_dict = 0;
+ elements = 0;
+ for (i = 0; i < n; i++) {
+ is_unpacking = (expr_ty)asdl_seq_GET(e->v.Dict.keys, i) == NULL;
+ if (is_unpacking) {
+ if (elements) {
+ RETURN_IF_ERROR(compiler_subdict(c, e, i - elements, i));
+ if (have_dict) {
+ ADDOP_I(c, loc, DICT_UPDATE, 1);
+ }
+ have_dict = 1;
+ elements = 0;
+ }
+ if (have_dict == 0) {
+ ADDOP_I(c, loc, BUILD_MAP, 0);
+ have_dict = 1;
+ }
+ VISIT(c, expr, (expr_ty)asdl_seq_GET(e->v.Dict.values, i));
+ ADDOP_I(c, loc, DICT_UPDATE, 1);
+ }
+ else {
+ if (elements*2 > STACK_USE_GUIDELINE) {
+ RETURN_IF_ERROR(compiler_subdict(c, e, i - elements, i + 1));
+ if (have_dict) {
+ ADDOP_I(c, loc, DICT_UPDATE, 1);
+ }
+ have_dict = 1;
+ elements = 0;
+ }
+ else {
+ elements++;
+ }
+ }
+ }
+ if (elements) {
+ RETURN_IF_ERROR(compiler_subdict(c, e, n - elements, n));
+ if (have_dict) {
+ ADDOP_I(c, loc, DICT_UPDATE, 1);
+ }
+ have_dict = 1;
+ }
+ if (!have_dict) {
+ ADDOP_I(c, loc, BUILD_MAP, 0);
+ }
+ return SUCCESS;
+}
+
+static int
+compiler_compare(struct compiler *c, expr_ty e)
+{
+ location loc = LOC(e);
+ Py_ssize_t i, n;
+
+ RETURN_IF_ERROR(check_compare(c, e));
+ VISIT(c, expr, e->v.Compare.left);
+ assert(asdl_seq_LEN(e->v.Compare.ops) > 0);
+ n = asdl_seq_LEN(e->v.Compare.ops) - 1;
+ if (n == 0) {
+ VISIT(c, expr, (expr_ty)asdl_seq_GET(e->v.Compare.comparators, 0));
+ ADDOP_COMPARE(c, loc, asdl_seq_GET(e->v.Compare.ops, 0));
+ }
+ else {
+ NEW_JUMP_TARGET_LABEL(c, cleanup);
+ for (i = 0; i < n; i++) {
+ VISIT(c, expr,
+ (expr_ty)asdl_seq_GET(e->v.Compare.comparators, i));
+ ADDOP_I(c, loc, SWAP, 2);
+ ADDOP_I(c, loc, COPY, 2);
+ ADDOP_COMPARE(c, loc, asdl_seq_GET(e->v.Compare.ops, i));
+ ADDOP_I(c, loc, COPY, 1);
+ ADDOP_JUMP(c, loc, POP_JUMP_IF_FALSE, cleanup);
+ ADDOP(c, loc, POP_TOP);
+ }
+ VISIT(c, expr, (expr_ty)asdl_seq_GET(e->v.Compare.comparators, n));
+ ADDOP_COMPARE(c, loc, asdl_seq_GET(e->v.Compare.ops, n));
+ NEW_JUMP_TARGET_LABEL(c, end);
+ ADDOP_JUMP(c, NO_LOCATION, JUMP, end);
+
+ USE_LABEL(c, cleanup);
+ ADDOP_I(c, loc, SWAP, 2);
+ ADDOP(c, loc, POP_TOP);
+
+ USE_LABEL(c, end);
+ }
+ return SUCCESS;
+}
+
+static PyTypeObject *
+infer_type(expr_ty e)
+{
+ switch (e->kind) {
+ case Tuple_kind:
+ return &PyTuple_Type;
+ case List_kind:
+ case ListComp_kind:
+ return &PyList_Type;
+ case Dict_kind:
+ case DictComp_kind:
+ return &PyDict_Type;
+ case Set_kind:
+ case SetComp_kind:
+ return &PySet_Type;
+ case GeneratorExp_kind:
+ return &PyGen_Type;
+ case Lambda_kind:
+ return &PyFunction_Type;
+ case JoinedStr_kind:
+ case FormattedValue_kind:
+ return &PyUnicode_Type;
+ case Constant_kind:
+ return Py_TYPE(e->v.Constant.value);
+ default:
+ return NULL;
+ }
+}
+
+static int
+check_caller(struct compiler *c, expr_ty e)
+{
+ switch (e->kind) {
+ case Constant_kind:
+ case Tuple_kind:
+ case List_kind:
+ case ListComp_kind:
+ case Dict_kind:
+ case DictComp_kind:
+ case Set_kind:
+ case SetComp_kind:
+ case GeneratorExp_kind:
+ case JoinedStr_kind:
+ case FormattedValue_kind: {
+ location loc = LOC(e);
+ return compiler_warn(c, loc, "'%.200s' object is not callable; "
+ "perhaps you missed a comma?",
+ infer_type(e)->tp_name);
+ }
+ default:
+ return SUCCESS;
+ }
+}
+
+static int
+check_subscripter(struct compiler *c, expr_ty e)
+{
+ PyObject *v;
+
+ switch (e->kind) {
+ case Constant_kind:
+ v = e->v.Constant.value;
+ if (!(v == Py_None || v == Py_Ellipsis ||
+ PyLong_Check(v) || PyFloat_Check(v) || PyComplex_Check(v) ||
+ PyAnySet_Check(v)))
+ {
+ return SUCCESS;
+ }
+ /* fall through */
+ case Set_kind:
+ case SetComp_kind:
+ case GeneratorExp_kind:
+ case Lambda_kind: {
+ location loc = LOC(e);
+ return compiler_warn(c, loc, "'%.200s' object is not subscriptable; "
+ "perhaps you missed a comma?",
+ infer_type(e)->tp_name);
+ }
+ default:
+ return SUCCESS;
+ }
+}
+
+static int
+check_index(struct compiler *c, expr_ty e, expr_ty s)
+{
+ PyObject *v;
+
+ PyTypeObject *index_type = infer_type(s);
+ if (index_type == NULL
+ || PyType_FastSubclass(index_type, Py_TPFLAGS_LONG_SUBCLASS)
+ || index_type == &PySlice_Type) {
+ return SUCCESS;
+ }
+
+ switch (e->kind) {
+ case Constant_kind:
+ v = e->v.Constant.value;
+ if (!(PyUnicode_Check(v) || PyBytes_Check(v) || PyTuple_Check(v))) {
+ return SUCCESS;
+ }
+ /* fall through */
+ case Tuple_kind:
+ case List_kind:
+ case ListComp_kind:
+ case JoinedStr_kind:
+ case FormattedValue_kind: {
+ location loc = LOC(e);
+ return compiler_warn(c, loc, "%.200s indices must be integers "
+ "or slices, not %.200s; "
+ "perhaps you missed a comma?",
+ infer_type(e)->tp_name,
+ index_type->tp_name);
+ }
+ default:
+ return SUCCESS;
+ }
+}
+
+static int
+is_import_originated(struct compiler *c, expr_ty e)
+{
+ /* Check whether the global scope has an import named
+ e, if it is a Name object. For not traversing all the
+ scope stack every time this function is called, it will
+ only check the global scope to determine whether something
+ is imported or not. */
+
+ if (e->kind != Name_kind) {
+ return 0;
+ }
+
+ long flags = _PyST_GetSymbol(c->c_st->st_top, e->v.Name.id);
+ return flags & DEF_IMPORT;
+}
+
+static int
+can_optimize_super_call(struct compiler *c, expr_ty attr)
+{
+ expr_ty e = attr->v.Attribute.value;
+ if (e->kind != Call_kind ||
+ e->v.Call.func->kind != Name_kind ||
+ !_PyUnicode_EqualToASCIIString(e->v.Call.func->v.Name.id, "super") ||
+ _PyUnicode_EqualToASCIIString(attr->v.Attribute.attr, "__class__") ||
+ asdl_seq_LEN(e->v.Call.keywords) != 0) {
+ return 0;
+ }
+ Py_ssize_t num_args = asdl_seq_LEN(e->v.Call.args);
+
+ PyObject *super_name = e->v.Call.func->v.Name.id;
+ // detect statically-visible shadowing of 'super' name
+ int scope = _PyST_GetScope(c->u->u_ste, super_name);
+ if (scope != GLOBAL_IMPLICIT) {
+ return 0;
+ }
+ scope = _PyST_GetScope(c->c_st->st_top, super_name);
+ if (scope != 0) {
+ return 0;
+ }
+
+ if (num_args == 2) {
+ for (Py_ssize_t i = 0; i < num_args; i++) {
+ expr_ty elt = asdl_seq_GET(e->v.Call.args, i);
+ if (elt->kind == Starred_kind) {
+ return 0;
+ }
+ }
+ // exactly two non-starred args; we can just load
+ // the provided args
+ return 1;
+ }
+
+ if (num_args != 0) {
+ return 0;
+ }
+ // we need the following for zero-arg super():
+
+ // enclosing function should have at least one argument
+ if (c->u->u_metadata.u_argcount == 0 &&
+ c->u->u_metadata.u_posonlyargcount == 0) {
+ return 0;
+ }
+ // __class__ cell should be available
+ if (get_ref_type(c, &_Py_ID(__class__)) == FREE) {
+ return 1;
+ }
+ return 0;
+}
+
+static int
+load_args_for_super(struct compiler *c, expr_ty e) {
+ location loc = LOC(e);
+
+ // load super() global
+ PyObject *super_name = e->v.Call.func->v.Name.id;
+ RETURN_IF_ERROR(compiler_nameop(c, LOC(e->v.Call.func), super_name, Load));
+
+ if (asdl_seq_LEN(e->v.Call.args) == 2) {
+ VISIT(c, expr, asdl_seq_GET(e->v.Call.args, 0));
+ VISIT(c, expr, asdl_seq_GET(e->v.Call.args, 1));
+ return SUCCESS;
+ }
+
+ // load __class__ cell
+ PyObject *name = &_Py_ID(__class__);
+ assert(get_ref_type(c, name) == FREE);
+ RETURN_IF_ERROR(compiler_nameop(c, loc, name, Load));
+
+ // load self (first argument)
+ Py_ssize_t i = 0;
+ PyObject *key, *value;
+ if (!PyDict_Next(c->u->u_metadata.u_varnames, &i, &key, &value)) {
+ return ERROR;
+ }
+ RETURN_IF_ERROR(compiler_nameop(c, loc, key, Load));
+
+ return SUCCESS;
+}
+
+// If an attribute access spans multiple lines, update the current start
+// location to point to the attribute name.
+static location
+update_start_location_to_match_attr(struct compiler *c, location loc,
+ expr_ty attr)
+{
+ assert(attr->kind == Attribute_kind);
+ if (loc.lineno != attr->end_lineno) {
+ loc.lineno = attr->end_lineno;
+ int len = (int)PyUnicode_GET_LENGTH(attr->v.Attribute.attr);
+ if (len <= attr->end_col_offset) {
+ loc.col_offset = attr->end_col_offset - len;
+ }
+ else {
+ // GH-94694: Somebody's compiling weird ASTs. Just drop the columns:
+ loc.col_offset = -1;
+ loc.end_col_offset = -1;
+ }
+ // Make sure the end position still follows the start position, even for
+ // weird ASTs:
+ loc.end_lineno = Py_MAX(loc.lineno, loc.end_lineno);
+ if (loc.lineno == loc.end_lineno) {
+ loc.end_col_offset = Py_MAX(loc.col_offset, loc.end_col_offset);
+ }
+ }
+ return loc;
+}
+
+// Return 1 if the method call was optimized, 0 if not, and -1 on error.
+static int
+maybe_optimize_method_call(struct compiler *c, expr_ty e)
+{
+ Py_ssize_t argsl, i, kwdsl;
+ expr_ty meth = e->v.Call.func;
+ asdl_expr_seq *args = e->v.Call.args;
+ asdl_keyword_seq *kwds = e->v.Call.keywords;
+
+ /* Check that the call node is an attribute access */
+ if (meth->kind != Attribute_kind || meth->v.Attribute.ctx != Load) {
+ return 0;
+ }
+
+ /* Check that the base object is not something that is imported */
+ if (is_import_originated(c, meth->v.Attribute.value)) {
+ return 0;
+ }
+
+ /* Check that there aren't too many arguments */
+ argsl = asdl_seq_LEN(args);
+ kwdsl = asdl_seq_LEN(kwds);
+ if (argsl + kwdsl + (kwdsl != 0) >= STACK_USE_GUIDELINE) {
+ return 0;
+ }
+ /* Check that there are no *varargs types of arguments. */
+ for (i = 0; i < argsl; i++) {
+ expr_ty elt = asdl_seq_GET(args, i);
+ if (elt->kind == Starred_kind) {
+ return 0;
+ }
+ }
+
+ for (i = 0; i < kwdsl; i++) {
+ keyword_ty kw = asdl_seq_GET(kwds, i);
+ if (kw->arg == NULL) {
+ return 0;
+ }
+ }
+
+ /* Alright, we can optimize the code. */
+ location loc = LOC(meth);
+
+ if (can_optimize_super_call(c, meth)) {
+ RETURN_IF_ERROR(load_args_for_super(c, meth->v.Attribute.value));
+ int opcode = asdl_seq_LEN(meth->v.Attribute.value->v.Call.args) ?
+ LOAD_SUPER_METHOD : LOAD_ZERO_SUPER_METHOD;
+ ADDOP_NAME(c, loc, opcode, meth->v.Attribute.attr, names);
+ loc = update_start_location_to_match_attr(c, loc, meth);
+ ADDOP(c, loc, NOP);
+ } else {
+ VISIT(c, expr, meth->v.Attribute.value);
+ loc = update_start_location_to_match_attr(c, loc, meth);
+ ADDOP_NAME(c, loc, LOAD_METHOD, meth->v.Attribute.attr, names);
+ }
+
+ VISIT_SEQ(c, expr, e->v.Call.args);
+
+ if (kwdsl) {
+ VISIT_SEQ(c, keyword, kwds);
+ RETURN_IF_ERROR(
+ compiler_call_simple_kw_helper(c, loc, kwds, kwdsl));
+ }
+ loc = update_start_location_to_match_attr(c, LOC(e), meth);
+ ADDOP_I(c, loc, CALL, argsl + kwdsl);
+ return 1;
+}
+
+static int
+validate_keywords(struct compiler *c, asdl_keyword_seq *keywords)
+{
+ Py_ssize_t nkeywords = asdl_seq_LEN(keywords);
+ for (Py_ssize_t i = 0; i < nkeywords; i++) {
+ keyword_ty key = ((keyword_ty)asdl_seq_GET(keywords, i));
+ if (key->arg == NULL) {
+ continue;
+ }
+ location loc = LOC(key);
+ if (forbidden_name(c, loc, key->arg, Store)) {
+ return ERROR;
+ }
+ for (Py_ssize_t j = i + 1; j < nkeywords; j++) {
+ keyword_ty other = ((keyword_ty)asdl_seq_GET(keywords, j));
+ if (other->arg && !PyUnicode_Compare(key->arg, other->arg)) {
+ compiler_error(c, LOC(other), "keyword argument repeated: %U", key->arg);
+ return ERROR;
+ }
+ }
+ }
+ return SUCCESS;
+}
+
+static int
+compiler_call(struct compiler *c, expr_ty e)
+{
+ RETURN_IF_ERROR(validate_keywords(c, e->v.Call.keywords));
+ int ret = maybe_optimize_method_call(c, e);
+ if (ret < 0) {
+ return ERROR;
+ }
+ if (ret == 1) {
+ return SUCCESS;
+ }
+ RETURN_IF_ERROR(check_caller(c, e->v.Call.func));
+ location loc = LOC(e->v.Call.func);
+ ADDOP(c, loc, PUSH_NULL);
+ VISIT(c, expr, e->v.Call.func);
+ loc = LOC(e);
+ return compiler_call_helper(c, loc, 0,
+ e->v.Call.args,
+ e->v.Call.keywords);
+}
+
+static int
+compiler_joined_str(struct compiler *c, expr_ty e)
+{
+ location loc = LOC(e);
+ Py_ssize_t value_count = asdl_seq_LEN(e->v.JoinedStr.values);
+ if (value_count > STACK_USE_GUIDELINE) {
+ _Py_DECLARE_STR(empty, "");
+ ADDOP_LOAD_CONST_NEW(c, loc, Py_NewRef(&_Py_STR(empty)));
+ ADDOP_NAME(c, loc, LOAD_METHOD, &_Py_ID(join), names);
+ ADDOP_I(c, loc, BUILD_LIST, 0);
+ for (Py_ssize_t i = 0; i < asdl_seq_LEN(e->v.JoinedStr.values); i++) {
+ VISIT(c, expr, asdl_seq_GET(e->v.JoinedStr.values, i));
+ ADDOP_I(c, loc, LIST_APPEND, 1);
+ }
+ ADDOP_I(c, loc, CALL, 1);
+ }
+ else {
+ VISIT_SEQ(c, expr, e->v.JoinedStr.values);
+ if (asdl_seq_LEN(e->v.JoinedStr.values) != 1) {
+ ADDOP_I(c, loc, BUILD_STRING, asdl_seq_LEN(e->v.JoinedStr.values));
+ }
+ }
+ return SUCCESS;
+}
+
+/* Used to implement f-strings. Format a single value. */
+static int
+compiler_formatted_value(struct compiler *c, expr_ty e)
+{
+ /* Our oparg encodes 2 pieces of information: the conversion
+ character, and whether or not a format_spec was provided.
+
+ Convert the conversion char to 3 bits:
+ : 000 0x0 FVC_NONE The default if nothing specified.
+ !s : 001 0x1 FVC_STR
+ !r : 010 0x2 FVC_REPR
+ !a : 011 0x3 FVC_ASCII
+
+ next bit is whether or not we have a format spec:
+ yes : 100 0x4
+ no : 000 0x0
+ */
+
+ int conversion = e->v.FormattedValue.conversion;
+ int oparg;
+
+ /* The expression to be formatted. */
+ VISIT(c, expr, e->v.FormattedValue.value);
+
+ switch (conversion) {
+ case 's': oparg = FVC_STR; break;
+ case 'r': oparg = FVC_REPR; break;
+ case 'a': oparg = FVC_ASCII; break;
+ case -1: oparg = FVC_NONE; break;
+ default:
+ PyErr_Format(PyExc_SystemError,
+ "Unrecognized conversion character %d", conversion);
+ return ERROR;
+ }
+ if (e->v.FormattedValue.format_spec) {
+ /* Evaluate the format spec, and update our opcode arg. */
+ VISIT(c, expr, e->v.FormattedValue.format_spec);
+ oparg |= FVS_HAVE_SPEC;
+ }
+
+ /* And push our opcode and oparg */
+ location loc = LOC(e);
+ ADDOP_I(c, loc, FORMAT_VALUE, oparg);
+
+ return SUCCESS;
+}
+
+static int
+compiler_subkwargs(struct compiler *c, location loc,
+ asdl_keyword_seq *keywords,
+ Py_ssize_t begin, Py_ssize_t end)
+{
+ Py_ssize_t i, n = end - begin;
+ keyword_ty kw;
+ PyObject *keys, *key;
+ assert(n > 0);
+ int big = n*2 > STACK_USE_GUIDELINE;
+ if (n > 1 && !big) {
+ for (i = begin; i < end; i++) {
+ kw = asdl_seq_GET(keywords, i);
+ VISIT(c, expr, kw->value);
+ }
+ keys = PyTuple_New(n);
+ if (keys == NULL) {
+ return ERROR;
+ }
+ for (i = begin; i < end; i++) {
+ key = ((keyword_ty) asdl_seq_GET(keywords, i))->arg;
+ PyTuple_SET_ITEM(keys, i - begin, Py_NewRef(key));
+ }
+ ADDOP_LOAD_CONST_NEW(c, loc, keys);
+ ADDOP_I(c, loc, BUILD_CONST_KEY_MAP, n);
+ return SUCCESS;
+ }
+ if (big) {
+ ADDOP_I(c, NO_LOCATION, BUILD_MAP, 0);
+ }
+ for (i = begin; i < end; i++) {
+ kw = asdl_seq_GET(keywords, i);
+ ADDOP_LOAD_CONST(c, loc, kw->arg);
+ VISIT(c, expr, kw->value);
+ if (big) {
+ ADDOP_I(c, NO_LOCATION, MAP_ADD, 1);
+ }
+ }
+ if (!big) {
+ ADDOP_I(c, loc, BUILD_MAP, n);
+ }
+ return SUCCESS;
+}
+
+/* Used by compiler_call_helper and maybe_optimize_method_call to emit
+ * KW_NAMES before CALL.
+ */
+static int
+compiler_call_simple_kw_helper(struct compiler *c, location loc,
+ asdl_keyword_seq *keywords, Py_ssize_t nkwelts)
+{
+ PyObject *names;
+ names = PyTuple_New(nkwelts);
+ if (names == NULL) {
+ return ERROR;
+ }
+ for (int i = 0; i < nkwelts; i++) {
+ keyword_ty kw = asdl_seq_GET(keywords, i);
+ PyTuple_SET_ITEM(names, i, Py_NewRef(kw->arg));
+ }
+ Py_ssize_t arg = compiler_add_const(c->c_const_cache, c->u, names);
+ if (arg < 0) {
+ return ERROR;
+ }
+ Py_DECREF(names);
+ ADDOP_I(c, loc, KW_NAMES, arg);
+ return SUCCESS;
+}
+
+
+/* shared code between compiler_call and compiler_class */
+static int
+compiler_call_helper(struct compiler *c, location loc,
+ int n, /* Args already pushed */
+ asdl_expr_seq *args,
+ asdl_keyword_seq *keywords)
+{
+ Py_ssize_t i, nseen, nelts, nkwelts;
+
+ RETURN_IF_ERROR(validate_keywords(c, keywords));
+
+ nelts = asdl_seq_LEN(args);
+ nkwelts = asdl_seq_LEN(keywords);
+
+ if (nelts + nkwelts*2 > STACK_USE_GUIDELINE) {
+ goto ex_call;
+ }
+ for (i = 0; i < nelts; i++) {
+ expr_ty elt = asdl_seq_GET(args, i);
+ if (elt->kind == Starred_kind) {
+ goto ex_call;
+ }
+ }
+ for (i = 0; i < nkwelts; i++) {
+ keyword_ty kw = asdl_seq_GET(keywords, i);
+ if (kw->arg == NULL) {
+ goto ex_call;
+ }
+ }
+
+ /* No * or ** args, so can use faster calling sequence */
+ for (i = 0; i < nelts; i++) {
+ expr_ty elt = asdl_seq_GET(args, i);
+ assert(elt->kind != Starred_kind);
+ VISIT(c, expr, elt);
+ }
+ if (nkwelts) {
+ VISIT_SEQ(c, keyword, keywords);
+ RETURN_IF_ERROR(
+ compiler_call_simple_kw_helper(c, loc, keywords, nkwelts));
+ }
+ ADDOP_I(c, loc, CALL, n + nelts + nkwelts);
+ return SUCCESS;
+
+ex_call:
+
+ /* Do positional arguments. */
+ if (n ==0 && nelts == 1 && ((expr_ty)asdl_seq_GET(args, 0))->kind == Starred_kind) {
+ VISIT(c, expr, ((expr_ty)asdl_seq_GET(args, 0))->v.Starred.value);
+ }
+ else {
+ RETURN_IF_ERROR(starunpack_helper(c, loc, args, n, BUILD_LIST,
+ LIST_APPEND, LIST_EXTEND, 1));
+ }
+ /* Then keyword arguments */
+ if (nkwelts) {
+ /* Has a new dict been pushed */
+ int have_dict = 0;
+
+ nseen = 0; /* the number of keyword arguments on the stack following */
+ for (i = 0; i < nkwelts; i++) {
+ keyword_ty kw = asdl_seq_GET(keywords, i);
+ if (kw->arg == NULL) {
+ /* A keyword argument unpacking. */
+ if (nseen) {
+ RETURN_IF_ERROR(compiler_subkwargs(c, loc, keywords, i - nseen, i));
+ if (have_dict) {
+ ADDOP_I(c, loc, DICT_MERGE, 1);
+ }
+ have_dict = 1;
+ nseen = 0;
+ }
+ if (!have_dict) {
+ ADDOP_I(c, loc, BUILD_MAP, 0);
+ have_dict = 1;
+ }
+ VISIT(c, expr, kw->value);
+ ADDOP_I(c, loc, DICT_MERGE, 1);
+ }
+ else {
+ nseen++;
+ }
+ }
+ if (nseen) {
+ /* Pack up any trailing keyword arguments. */
+ RETURN_IF_ERROR(compiler_subkwargs(c, loc, keywords, nkwelts - nseen, nkwelts));
+ if (have_dict) {
+ ADDOP_I(c, loc, DICT_MERGE, 1);
+ }
+ have_dict = 1;
+ }
+ assert(have_dict);
+ }
+ ADDOP_I(c, loc, CALL_FUNCTION_EX, nkwelts > 0);
+ return SUCCESS;
+}
+
+
+/* List and set comprehensions and generator expressions work by creating a
+ nested function to perform the actual iteration. This means that the
+ iteration variables don't leak into the current scope.
+ The defined function is called immediately following its definition, with the
+ result of that call being the result of the expression.
+ The LC/SC version returns the populated container, while the GE version is
+ flagged in symtable.c as a generator, so it returns the generator object
+ when the function is called.
+
+ Possible cleanups:
+ - iterate over the generator sequence instead of using recursion
+*/
+
+
+static int
+compiler_comprehension_generator(struct compiler *c, location loc,
+ asdl_comprehension_seq *generators, int gen_index,
+ int depth,
+ expr_ty elt, expr_ty val, int type,
+ int iter_on_stack)
+{
+ comprehension_ty gen;
+ gen = (comprehension_ty)asdl_seq_GET(generators, gen_index);
+ if (gen->is_async) {
+ return compiler_async_comprehension_generator(
+ c, loc, generators, gen_index, depth, elt, val, type,
+ iter_on_stack);
+ } else {
+ return compiler_sync_comprehension_generator(
+ c, loc, generators, gen_index, depth, elt, val, type,
+ iter_on_stack);
+ }
+}
+
+static int
+compiler_sync_comprehension_generator(struct compiler *c, location loc,
+ asdl_comprehension_seq *generators,
+ int gen_index, int depth,
+ expr_ty elt, expr_ty val, int type,
+ int iter_on_stack)
+{
+ /* generate code for the iterator, then each of the ifs,
+ and then write to the element */
+
+ NEW_JUMP_TARGET_LABEL(c, start);
+ NEW_JUMP_TARGET_LABEL(c, if_cleanup);
+ NEW_JUMP_TARGET_LABEL(c, anchor);
+
+ comprehension_ty gen = (comprehension_ty)asdl_seq_GET(generators,
+ gen_index);
+
+ if (!iter_on_stack) {
+ if (gen_index == 0) {
+ /* Receive outermost iter as an implicit argument */
+ c->u->u_metadata.u_argcount = 1;
+ ADDOP_I(c, loc, LOAD_FAST, 0);
+ }
+ else {
+ /* Sub-iter - calculate on the fly */
+ /* Fast path for the temporary variable assignment idiom:
+ for y in [f(x)]
+ */
+ asdl_expr_seq *elts;
+ switch (gen->iter->kind) {
+ case List_kind:
+ elts = gen->iter->v.List.elts;
+ break;
+ case Tuple_kind:
+ elts = gen->iter->v.Tuple.elts;
+ break;
+ default:
+ elts = NULL;
+ }
+ if (asdl_seq_LEN(elts) == 1) {
+ expr_ty elt = asdl_seq_GET(elts, 0);
+ if (elt->kind != Starred_kind) {
+ VISIT(c, expr, elt);
+ start = NO_LABEL;
+ }
+ }
+ if (IS_LABEL(start)) {
+ VISIT(c, expr, gen->iter);
+ ADDOP(c, loc, GET_ITER);
+ }
+ }
+ }
+ if (IS_LABEL(start)) {
+ depth++;
+ USE_LABEL(c, start);
+ ADDOP_JUMP(c, loc, FOR_ITER, anchor);
+ }
+ VISIT(c, expr, gen->target);
+
+ /* XXX this needs to be cleaned up...a lot! */
+ Py_ssize_t n = asdl_seq_LEN(gen->ifs);
+ for (Py_ssize_t i = 0; i < n; i++) {
+ expr_ty e = (expr_ty)asdl_seq_GET(gen->ifs, i);
+ RETURN_IF_ERROR(compiler_jump_if(c, loc, e, if_cleanup, 0));
+ }
+
+ if (++gen_index < asdl_seq_LEN(generators)) {
+ RETURN_IF_ERROR(
+ compiler_comprehension_generator(c, loc,
+ generators, gen_index, depth,
+ elt, val, type, 0));
+ }
+
+ location elt_loc = LOC(elt);
+
+ /* only append after the last for generator */
+ if (gen_index >= asdl_seq_LEN(generators)) {
+ /* comprehension specific code */
+ switch (type) {
+ case COMP_GENEXP:
+ VISIT(c, expr, elt);
+ ADDOP_YIELD(c, elt_loc);
+ ADDOP(c, elt_loc, POP_TOP);
+ break;
+ case COMP_LISTCOMP:
+ VISIT(c, expr, elt);
+ ADDOP_I(c, elt_loc, LIST_APPEND, depth + 1);
+ break;
+ case COMP_SETCOMP:
+ VISIT(c, expr, elt);
+ ADDOP_I(c, elt_loc, SET_ADD, depth + 1);
+ break;
+ case COMP_DICTCOMP:
+ /* With '{k: v}', k is evaluated before v, so we do
+ the same. */
+ VISIT(c, expr, elt);
+ VISIT(c, expr, val);
+ elt_loc = LOCATION(elt->lineno,
+ val->end_lineno,
+ elt->col_offset,
+ val->end_col_offset);
+ ADDOP_I(c, elt_loc, MAP_ADD, depth + 1);
+ break;
+ default:
+ return ERROR;
+ }
+ }
+
+ USE_LABEL(c, if_cleanup);
+ if (IS_LABEL(start)) {
+ ADDOP_JUMP(c, elt_loc, JUMP, start);
+
+ USE_LABEL(c, anchor);
+ ADDOP(c, NO_LOCATION, END_FOR);
+ }
+
+ return SUCCESS;
+}
+
+static int
+compiler_async_comprehension_generator(struct compiler *c, location loc,
+ asdl_comprehension_seq *generators,
+ int gen_index, int depth,
+ expr_ty elt, expr_ty val, int type,
+ int iter_on_stack)
+{
+ NEW_JUMP_TARGET_LABEL(c, start);
+ NEW_JUMP_TARGET_LABEL(c, except);
+ NEW_JUMP_TARGET_LABEL(c, if_cleanup);
+
+ comprehension_ty gen = (comprehension_ty)asdl_seq_GET(generators,
+ gen_index);
+
+ if (!iter_on_stack) {
+ if (gen_index == 0) {
+ /* Receive outermost iter as an implicit argument */
+ c->u->u_metadata.u_argcount = 1;
+ ADDOP_I(c, loc, LOAD_FAST, 0);
+ }
+ else {
+ /* Sub-iter - calculate on the fly */
+ VISIT(c, expr, gen->iter);
+ ADDOP(c, loc, GET_AITER);
+ }
+ }
+
+ USE_LABEL(c, start);
+ /* Runtime will push a block here, so we need to account for that */
+ RETURN_IF_ERROR(
+ compiler_push_fblock(c, loc, ASYNC_COMPREHENSION_GENERATOR,
+ start, NO_LABEL, NULL));
+
+ ADDOP_JUMP(c, loc, SETUP_FINALLY, except);
+ ADDOP(c, loc, GET_ANEXT);
+ ADDOP_LOAD_CONST(c, loc, Py_None);
+ ADD_YIELD_FROM(c, loc, 1);
+ ADDOP(c, loc, POP_BLOCK);
+ VISIT(c, expr, gen->target);
+
+ Py_ssize_t n = asdl_seq_LEN(gen->ifs);
+ for (Py_ssize_t i = 0; i < n; i++) {
+ expr_ty e = (expr_ty)asdl_seq_GET(gen->ifs, i);
+ RETURN_IF_ERROR(compiler_jump_if(c, loc, e, if_cleanup, 0));
+ }
+
+ depth++;
+ if (++gen_index < asdl_seq_LEN(generators)) {
+ RETURN_IF_ERROR(
+ compiler_comprehension_generator(c, loc,
+ generators, gen_index, depth,
+ elt, val, type, 0));
+ }
+
+ location elt_loc = LOC(elt);
+ /* only append after the last for generator */
+ if (gen_index >= asdl_seq_LEN(generators)) {
+ /* comprehension specific code */
+ switch (type) {
+ case COMP_GENEXP:
+ VISIT(c, expr, elt);
+ ADDOP_YIELD(c, elt_loc);
+ ADDOP(c, elt_loc, POP_TOP);
+ break;
+ case COMP_LISTCOMP:
+ VISIT(c, expr, elt);
+ ADDOP_I(c, elt_loc, LIST_APPEND, depth + 1);
+ break;
+ case COMP_SETCOMP:
+ VISIT(c, expr, elt);
+ ADDOP_I(c, elt_loc, SET_ADD, depth + 1);
+ break;
+ case COMP_DICTCOMP:
+ /* With '{k: v}', k is evaluated before v, so we do
+ the same. */
+ VISIT(c, expr, elt);
+ VISIT(c, expr, val);
+ elt_loc = LOCATION(elt->lineno,
+ val->end_lineno,
+ elt->col_offset,
+ val->end_col_offset);
+ ADDOP_I(c, elt_loc, MAP_ADD, depth + 1);
+ break;
+ default:
+ return ERROR;
+ }
+ }
+
+ USE_LABEL(c, if_cleanup);
+ ADDOP_JUMP(c, elt_loc, JUMP, start);
+
+ compiler_pop_fblock(c, ASYNC_COMPREHENSION_GENERATOR, start);
+
+ USE_LABEL(c, except);
+
+ ADDOP(c, loc, END_ASYNC_FOR);
+
+ return SUCCESS;
+}
+
+typedef struct {
+ PyObject *pushed_locals;
+ PyObject *temp_symbols;
+ PyObject *fast_hidden;
+ jump_target_label cleanup;
+ jump_target_label end;
+} inlined_comprehension_state;
+
+static int
+push_inlined_comprehension_state(struct compiler *c, location loc,
+ PySTEntryObject *entry,
+ inlined_comprehension_state *state)
+{
+ int in_class_block = (c->u->u_ste->ste_type == ClassBlock) && !c->u->u_in_inlined_comp;
+ c->u->u_in_inlined_comp++;
+ // iterate over names bound in the comprehension and ensure we isolate
+ // them from the outer scope as needed
+ PyObject *k, *v;
+ Py_ssize_t pos = 0;
+ while (PyDict_Next(entry->ste_symbols, &pos, &k, &v)) {
+ assert(PyLong_Check(v));
+ long symbol = PyLong_AS_LONG(v);
+ // only values bound in the comprehension (DEF_LOCAL) need to be handled
+ // at all; DEF_LOCAL | DEF_NONLOCAL can occur in the case of an
+ // assignment expression to a nonlocal in the comprehension, these don't
+ // need handling here since they shouldn't be isolated
+ if ((symbol & DEF_LOCAL && !(symbol & DEF_NONLOCAL)) || in_class_block) {
+ if (!_PyST_IsFunctionLike(c->u->u_ste)) {
+ // non-function scope: override this name to use fast locals
+ PyObject *orig = PyDict_GetItem(c->u->u_metadata.u_fasthidden, k);
+ if (orig != Py_True) {
+ if (PyDict_SetItem(c->u->u_metadata.u_fasthidden, k, Py_True) < 0) {
+ return ERROR;
+ }
+ if (state->fast_hidden == NULL) {
+ state->fast_hidden = PySet_New(NULL);
+ if (state->fast_hidden == NULL) {
+ return ERROR;
+ }
+ }
+ if (PySet_Add(state->fast_hidden, k) < 0) {
+ return ERROR;
+ }
+ }
+ }
+ long scope = (symbol >> SCOPE_OFFSET) & SCOPE_MASK;
+ PyObject *outv = PyDict_GetItemWithError(c->u->u_ste->ste_symbols, k);
+ if (outv == NULL) {
+ outv = _PyLong_GetZero();
+ }
+ assert(PyLong_Check(outv));
+ long outsc = (PyLong_AS_LONG(outv) >> SCOPE_OFFSET) & SCOPE_MASK;
+ if (scope != outsc && !(scope == CELL && outsc == FREE)) {
+ // If a name has different scope inside than outside the
+ // comprehension, we need to temporarily handle it with the
+ // right scope while compiling the comprehension. (If it's free
+ // in outer scope and cell in inner scope, we can't treat it as
+ // both cell and free in the same function, but treating it as
+ // free throughout is fine; it's *_DEREF either way.)
+
+ if (state->temp_symbols == NULL) {
+ state->temp_symbols = PyDict_New();
+ if (state->temp_symbols == NULL) {
+ return ERROR;
+ }
+ }
+ // update the symbol to the in-comprehension version and save
+ // the outer version; we'll restore it after running the
+ // comprehension
+ Py_INCREF(outv);
+ if (PyDict_SetItem(c->u->u_ste->ste_symbols, k, v) < 0) {
+ Py_DECREF(outv);
+ return ERROR;
+ }
+ if (PyDict_SetItem(state->temp_symbols, k, outv) < 0) {
+ Py_DECREF(outv);
+ return ERROR;
+ }
+ Py_DECREF(outv);
+ }
+ // local names bound in comprehension must be isolated from
+ // outer scope; push existing value (which may be NULL if
+ // not defined) on stack
+ if (state->pushed_locals == NULL) {
+ state->pushed_locals = PyList_New(0);
+ if (state->pushed_locals == NULL) {
+ return ERROR;
+ }
+ }
+ // in the case of a cell, this will actually push the cell
+ // itself to the stack, then we'll create a new one for the
+ // comprehension and restore the original one after
+ ADDOP_NAME(c, loc, LOAD_FAST_AND_CLEAR, k, varnames);
+ if (scope == CELL) {
+ if (outsc == FREE) {
+ ADDOP_NAME(c, loc, MAKE_CELL, k, freevars);
+ } else {
+ ADDOP_NAME(c, loc, MAKE_CELL, k, cellvars);
+ }
+ }
+ if (PyList_Append(state->pushed_locals, k) < 0) {
+ return ERROR;
+ }
+ }
+ }
+ if (state->pushed_locals) {
+ // Outermost iterable expression was already evaluated and is on the
+ // stack, we need to swap it back to TOS. This also rotates the order of
+ // `pushed_locals` on the stack, but this will be reversed when we swap
+ // out the comprehension result in pop_inlined_comprehension_state
+ ADDOP_I(c, loc, SWAP, PyList_GET_SIZE(state->pushed_locals) + 1);
+
+ // Add our own cleanup handler to restore comprehension locals in case
+ // of exception, so they have the correct values inside an exception
+ // handler or finally block.
+ NEW_JUMP_TARGET_LABEL(c, cleanup);
+ state->cleanup = cleanup;
+ NEW_JUMP_TARGET_LABEL(c, end);
+ state->end = end;
+
+ // no need to push an fblock for this "virtual" try/finally; there can't
+ // be return/continue/break inside a comprehension
+ ADDOP_JUMP(c, loc, SETUP_FINALLY, cleanup);
+ }
+
+ return SUCCESS;
+}
+
+static int
+restore_inlined_comprehension_locals(struct compiler *c, location loc,
+ inlined_comprehension_state state)
+{
+ PyObject *k;
+ // pop names we pushed to stack earlier
+ Py_ssize_t npops = PyList_GET_SIZE(state.pushed_locals);
+ // Preserve the comprehension result (or exception) as TOS. This
+ // reverses the SWAP we did in push_inlined_comprehension_state to get
+ // the outermost iterable to TOS, so we can still just iterate
+ // pushed_locals in simple reverse order
+ ADDOP_I(c, loc, SWAP, npops + 1);
+ for (Py_ssize_t i = npops - 1; i >= 0; --i) {
+ k = PyList_GetItem(state.pushed_locals, i);
+ if (k == NULL) {
+ return ERROR;
+ }
+ ADDOP_NAME(c, loc, STORE_FAST_MAYBE_NULL, k, varnames);
+ }
+ return SUCCESS;
+}
+
+static int
+pop_inlined_comprehension_state(struct compiler *c, location loc,
+ inlined_comprehension_state state)
+{
+ c->u->u_in_inlined_comp--;
+ PyObject *k, *v;
+ Py_ssize_t pos = 0;
+ if (state.temp_symbols) {
+ while (PyDict_Next(state.temp_symbols, &pos, &k, &v)) {
+ if (PyDict_SetItem(c->u->u_ste->ste_symbols, k, v)) {
+ return ERROR;
+ }
+ }
+ Py_CLEAR(state.temp_symbols);
+ }
+ if (state.pushed_locals) {
+ ADDOP(c, NO_LOCATION, POP_BLOCK);
+ ADDOP_JUMP(c, NO_LOCATION, JUMP, state.end);
+
+ // cleanup from an exception inside the comprehension
+ USE_LABEL(c, state.cleanup);
+ // discard incomplete comprehension result (beneath exc on stack)
+ ADDOP_I(c, NO_LOCATION, SWAP, 2);
+ ADDOP(c, NO_LOCATION, POP_TOP);
+ if (restore_inlined_comprehension_locals(c, loc, state) < 0) {
+ return ERROR;
+ }
+ ADDOP_I(c, NO_LOCATION, RERAISE, 0);
+
+ USE_LABEL(c, state.end);
+ if (restore_inlined_comprehension_locals(c, loc, state) < 0) {
+ return ERROR;
+ }
+ Py_CLEAR(state.pushed_locals);
+ }
+ if (state.fast_hidden) {
+ while (PySet_Size(state.fast_hidden) > 0) {
+ PyObject *k = PySet_Pop(state.fast_hidden);
+ if (k == NULL) {
+ return ERROR;
+ }
+ // we set to False instead of clearing, so we can track which names
+ // were temporarily fast-locals and should use CO_FAST_HIDDEN
+ if (PyDict_SetItem(c->u->u_metadata.u_fasthidden, k, Py_False)) {
+ Py_DECREF(k);
+ return ERROR;
+ }
+ Py_DECREF(k);
+ }
+ Py_CLEAR(state.fast_hidden);
+ }
+ return SUCCESS;
+}
+
+static inline int
+compiler_comprehension_iter(struct compiler *c, location loc,
+ comprehension_ty comp)
+{
+ VISIT(c, expr, comp->iter);
+ if (comp->is_async) {
+ ADDOP(c, loc, GET_AITER);
+ }
+ else {
+ ADDOP(c, loc, GET_ITER);
+ }
+ return SUCCESS;
+}
+
+static int
+compiler_comprehension(struct compiler *c, expr_ty e, int type,
+ identifier name, asdl_comprehension_seq *generators, expr_ty elt,
+ expr_ty val)
+{
+ PyCodeObject *co = NULL;
+ inlined_comprehension_state inline_state = {NULL, NULL, NULL, NO_LABEL, NO_LABEL};
+ comprehension_ty outermost;
+ int scope_type = c->u->u_scope_type;
+ int is_top_level_await = IS_TOP_LEVEL_AWAIT(c);
+ PySTEntryObject *entry = PySymtable_Lookup(c->c_st, (void *)e);
+ if (entry == NULL) {
+ goto error;
+ }
+ int is_inlined = entry->ste_comp_inlined;
+ int is_async_generator = entry->ste_coroutine;
+
+ location loc = LOC(e);
+
+ outermost = (comprehension_ty) asdl_seq_GET(generators, 0);
+ if (is_inlined) {
+ if (compiler_comprehension_iter(c, loc, outermost)) {
+ goto error;
+ }
+ if (push_inlined_comprehension_state(c, loc, entry, &inline_state)) {
+ goto error;
+ }
+ }
+ else {
+ if (compiler_enter_scope(c, name, COMPILER_SCOPE_COMPREHENSION,
+ (void *)e, e->lineno) < 0)
+ {
+ goto error;
+ }
+ }
+ Py_CLEAR(entry);
+
+ if (is_async_generator && type != COMP_GENEXP &&
+ scope_type != COMPILER_SCOPE_ASYNC_FUNCTION &&
+ scope_type != COMPILER_SCOPE_COMPREHENSION &&
+ !is_top_level_await)
+ {
+ compiler_error(c, loc, "asynchronous comprehension outside of "
+ "an asynchronous function");
+ goto error_in_scope;
+ }
+
+ if (type != COMP_GENEXP) {
+ int op;
+ switch (type) {
+ case COMP_LISTCOMP:
+ op = BUILD_LIST;
+ break;
+ case COMP_SETCOMP:
+ op = BUILD_SET;
+ break;
+ case COMP_DICTCOMP:
+ op = BUILD_MAP;
+ break;
+ default:
+ PyErr_Format(PyExc_SystemError,
+ "unknown comprehension type %d", type);
+ goto error_in_scope;
+ }
+
+ ADDOP_I(c, loc, op, 0);
+ if (is_inlined) {
+ ADDOP_I(c, loc, SWAP, 2);
+ }
+ }
+
+ if (compiler_comprehension_generator(c, loc, generators, 0, 0,
+ elt, val, type, is_inlined) < 0) {
+ goto error_in_scope;
+ }
+
+ if (is_inlined) {
+ if (pop_inlined_comprehension_state(c, loc, inline_state)) {
+ goto error;
+ }
+ return SUCCESS;
+ }
+
+ if (type != COMP_GENEXP) {
+ ADDOP(c, LOC(e), RETURN_VALUE);
+ }
+ if (type == COMP_GENEXP) {
+ if (wrap_in_stopiteration_handler(c) < 0) {
+ goto error_in_scope;
+ }
+ }
+
+ co = optimize_and_assemble(c, 1);
+ compiler_exit_scope(c);
+ if (is_top_level_await && is_async_generator){
+ c->u->u_ste->ste_coroutine = 1;
+ }
+ if (co == NULL) {
+ goto error;
+ }
+
+ loc = LOC(e);
+ if (compiler_make_closure(c, loc, co, 0) < 0) {
+ goto error;
+ }
+ Py_CLEAR(co);
+
+ if (compiler_comprehension_iter(c, loc, outermost)) {
+ goto error;
+ }
+
+ ADDOP_I(c, loc, CALL, 0);
+
+ if (is_async_generator && type != COMP_GENEXP) {
+ ADDOP_I(c, loc, GET_AWAITABLE, 0);
+ ADDOP_LOAD_CONST(c, loc, Py_None);
+ ADD_YIELD_FROM(c, loc, 1);
+ }
+
+ return SUCCESS;
+error_in_scope:
+ if (!is_inlined) {
+ compiler_exit_scope(c);
+ }
+error:
+ Py_XDECREF(co);
+ Py_XDECREF(entry);
+ Py_XDECREF(inline_state.pushed_locals);
+ Py_XDECREF(inline_state.temp_symbols);
+ Py_XDECREF(inline_state.fast_hidden);
+ return ERROR;
+}
+
+static int
+compiler_genexp(struct compiler *c, expr_ty e)
+{
+ assert(e->kind == GeneratorExp_kind);
+ _Py_DECLARE_STR(anon_genexpr, "<genexpr>");
+ return compiler_comprehension(c, e, COMP_GENEXP, &_Py_STR(anon_genexpr),
+ e->v.GeneratorExp.generators,
+ e->v.GeneratorExp.elt, NULL);
+}
+
+static int
+compiler_listcomp(struct compiler *c, expr_ty e)
+{
+ assert(e->kind == ListComp_kind);
+ _Py_DECLARE_STR(anon_listcomp, "<listcomp>");
+ return compiler_comprehension(c, e, COMP_LISTCOMP, &_Py_STR(anon_listcomp),
+ e->v.ListComp.generators,
+ e->v.ListComp.elt, NULL);
+}
+
+static int
+compiler_setcomp(struct compiler *c, expr_ty e)
+{
+ assert(e->kind == SetComp_kind);
+ _Py_DECLARE_STR(anon_setcomp, "<setcomp>");
+ return compiler_comprehension(c, e, COMP_SETCOMP, &_Py_STR(anon_setcomp),
+ e->v.SetComp.generators,
+ e->v.SetComp.elt, NULL);
+}
+
+
+static int
+compiler_dictcomp(struct compiler *c, expr_ty e)
+{
+ assert(e->kind == DictComp_kind);
+ _Py_DECLARE_STR(anon_dictcomp, "<dictcomp>");
+ return compiler_comprehension(c, e, COMP_DICTCOMP, &_Py_STR(anon_dictcomp),
+ e->v.DictComp.generators,
+ e->v.DictComp.key, e->v.DictComp.value);
+}
+
+
+static int
+compiler_visit_keyword(struct compiler *c, keyword_ty k)
+{
+ VISIT(c, expr, k->value);
+ return SUCCESS;
+}
+
+
+static int
+compiler_with_except_finish(struct compiler *c, jump_target_label cleanup) {
+ NEW_JUMP_TARGET_LABEL(c, suppress);
+ ADDOP_JUMP(c, NO_LOCATION, POP_JUMP_IF_TRUE, suppress);
+ ADDOP_I(c, NO_LOCATION, RERAISE, 2);
+
+ USE_LABEL(c, suppress);
+ ADDOP(c, NO_LOCATION, POP_TOP); /* exc_value */
+ ADDOP(c, NO_LOCATION, POP_BLOCK);
+ ADDOP(c, NO_LOCATION, POP_EXCEPT);
+ ADDOP(c, NO_LOCATION, POP_TOP);
+ ADDOP(c, NO_LOCATION, POP_TOP);
+ NEW_JUMP_TARGET_LABEL(c, exit);
+ ADDOP_JUMP(c, NO_LOCATION, JUMP, exit);
+
+ USE_LABEL(c, cleanup);
+ POP_EXCEPT_AND_RERAISE(c, NO_LOCATION);
+
+ USE_LABEL(c, exit);
+ return SUCCESS;
+}
+
+/*
+ Implements the async with statement.
+
+ The semantics outlined in that PEP are as follows:
+
+ async with EXPR as VAR:
+ BLOCK
+
+ It is implemented roughly as:
+
+ context = EXPR
+ exit = context.__aexit__ # not calling it
+ value = await context.__aenter__()
+ try:
+ VAR = value # if VAR present in the syntax
+ BLOCK
+ finally:
+ if an exception was raised:
+ exc = copy of (exception, instance, traceback)
+ else:
+ exc = (None, None, None)
+ if not (await exit(*exc)):
+ raise
+ */
+static int
+compiler_async_with(struct compiler *c, stmt_ty s, int pos)
+{
+ location loc = LOC(s);
+ withitem_ty item = asdl_seq_GET(s->v.AsyncWith.items, pos);
+
+ assert(s->kind == AsyncWith_kind);
+ if (IS_TOP_LEVEL_AWAIT(c)){
+ c->u->u_ste->ste_coroutine = 1;
+ } else if (c->u->u_scope_type != COMPILER_SCOPE_ASYNC_FUNCTION){
+ return compiler_error(c, loc, "'async with' outside async function");
+ }
+
+ NEW_JUMP_TARGET_LABEL(c, block);
+ NEW_JUMP_TARGET_LABEL(c, final);
+ NEW_JUMP_TARGET_LABEL(c, exit);
+ NEW_JUMP_TARGET_LABEL(c, cleanup);
+
+ /* Evaluate EXPR */
+ VISIT(c, expr, item->context_expr);
+
+ ADDOP(c, loc, BEFORE_ASYNC_WITH);
+ ADDOP_I(c, loc, GET_AWAITABLE, 1);
+ ADDOP_LOAD_CONST(c, loc, Py_None);
+ ADD_YIELD_FROM(c, loc, 1);
+
+ ADDOP_JUMP(c, loc, SETUP_WITH, final);
+
+ /* SETUP_WITH pushes a finally block. */
+ USE_LABEL(c, block);
+ RETURN_IF_ERROR(compiler_push_fblock(c, loc, ASYNC_WITH, block, final, s));
+
+ if (item->optional_vars) {
+ VISIT(c, expr, item->optional_vars);
+ }
+ else {
+ /* Discard result from context.__aenter__() */
+ ADDOP(c, loc, POP_TOP);
+ }
+
+ pos++;
+ if (pos == asdl_seq_LEN(s->v.AsyncWith.items)) {
+ /* BLOCK code */
+ VISIT_SEQ(c, stmt, s->v.AsyncWith.body)
+ }
+ else {
+ RETURN_IF_ERROR(compiler_async_with(c, s, pos));
+ }
+
+ compiler_pop_fblock(c, ASYNC_WITH, block);
+
+ ADDOP(c, loc, POP_BLOCK);
+ /* End of body; start the cleanup */
+
+ /* For successful outcome:
+ * call __exit__(None, None, None)
+ */
+ RETURN_IF_ERROR(compiler_call_exit_with_nones(c, loc));
+ ADDOP_I(c, loc, GET_AWAITABLE, 2);
+ ADDOP_LOAD_CONST(c, loc, Py_None);
+ ADD_YIELD_FROM(c, loc, 1);
+
+ ADDOP(c, loc, POP_TOP);
+
+ ADDOP_JUMP(c, loc, JUMP, exit);
+
+ /* For exceptional outcome: */
+ USE_LABEL(c, final);
+
+ ADDOP_JUMP(c, loc, SETUP_CLEANUP, cleanup);
+ ADDOP(c, loc, PUSH_EXC_INFO);
+ ADDOP(c, loc, WITH_EXCEPT_START);
+ ADDOP_I(c, loc, GET_AWAITABLE, 2);
+ ADDOP_LOAD_CONST(c, loc, Py_None);
+ ADD_YIELD_FROM(c, loc, 1);
+ RETURN_IF_ERROR(compiler_with_except_finish(c, cleanup));
+
+ USE_LABEL(c, exit);
+ return SUCCESS;
+}
+
+
+/*
+ Implements the with statement from PEP 343.
+ with EXPR as VAR:
+ BLOCK
+ is implemented as:
+ <code for EXPR>
+ SETUP_WITH E
+ <code to store to VAR> or POP_TOP
+ <code for BLOCK>
+ LOAD_CONST (None, None, None)
+ CALL_FUNCTION_EX 0
+ JUMP EXIT
+ E: WITH_EXCEPT_START (calls EXPR.__exit__)
+ POP_JUMP_IF_TRUE T:
+ RERAISE
+ T: POP_TOP (remove exception from stack)
+ POP_EXCEPT
+ POP_TOP
+ EXIT:
+ */
+
+static int
+compiler_with(struct compiler *c, stmt_ty s, int pos)
+{
+ withitem_ty item = asdl_seq_GET(s->v.With.items, pos);
+
+ assert(s->kind == With_kind);
+
+ NEW_JUMP_TARGET_LABEL(c, block);
+ NEW_JUMP_TARGET_LABEL(c, final);
+ NEW_JUMP_TARGET_LABEL(c, exit);
+ NEW_JUMP_TARGET_LABEL(c, cleanup);
+
+ /* Evaluate EXPR */
+ VISIT(c, expr, item->context_expr);
+ /* Will push bound __exit__ */
+ location loc = LOC(s);
+ ADDOP(c, loc, BEFORE_WITH);
+ ADDOP_JUMP(c, loc, SETUP_WITH, final);
+
+ /* SETUP_WITH pushes a finally block. */
+ USE_LABEL(c, block);
+ RETURN_IF_ERROR(compiler_push_fblock(c, loc, WITH, block, final, s));
+
+ if (item->optional_vars) {
+ VISIT(c, expr, item->optional_vars);
+ }
+ else {
+ /* Discard result from context.__enter__() */
+ ADDOP(c, loc, POP_TOP);
+ }
+
+ pos++;
+ if (pos == asdl_seq_LEN(s->v.With.items)) {
+ /* BLOCK code */
+ VISIT_SEQ(c, stmt, s->v.With.body)
+ }
+ else {
+ RETURN_IF_ERROR(compiler_with(c, s, pos));
+ }
+
+ ADDOP(c, NO_LOCATION, POP_BLOCK);
+ compiler_pop_fblock(c, WITH, block);
+
+ /* End of body; start the cleanup. */
+
+ /* For successful outcome:
+ * call __exit__(None, None, None)
+ */
+ loc = LOC(s);
+ RETURN_IF_ERROR(compiler_call_exit_with_nones(c, loc));
+ ADDOP(c, loc, POP_TOP);
+ ADDOP_JUMP(c, loc, JUMP, exit);
+
+ /* For exceptional outcome: */
+ USE_LABEL(c, final);
+
+ ADDOP_JUMP(c, loc, SETUP_CLEANUP, cleanup);
+ ADDOP(c, loc, PUSH_EXC_INFO);
+ ADDOP(c, loc, WITH_EXCEPT_START);
+ RETURN_IF_ERROR(compiler_with_except_finish(c, cleanup));
+
+ USE_LABEL(c, exit);
+ return SUCCESS;
+}
+
+static int
+compiler_visit_expr1(struct compiler *c, expr_ty e)
+{
+ location loc = LOC(e);
+ switch (e->kind) {
+ case NamedExpr_kind:
+ VISIT(c, expr, e->v.NamedExpr.value);
+ ADDOP_I(c, loc, COPY, 1);
+ VISIT(c, expr, e->v.NamedExpr.target);
+ break;
+ case BoolOp_kind:
+ return compiler_boolop(c, e);
+ case BinOp_kind:
+ VISIT(c, expr, e->v.BinOp.left);
+ VISIT(c, expr, e->v.BinOp.right);
+ ADDOP_BINARY(c, loc, e->v.BinOp.op);
+ break;
+ case UnaryOp_kind:
+ VISIT(c, expr, e->v.UnaryOp.operand);
+ if (e->v.UnaryOp.op == UAdd) {
+ ADDOP_I(c, loc, CALL_INTRINSIC_1, INTRINSIC_UNARY_POSITIVE);
+ }
+ else {
+ ADDOP(c, loc, unaryop(e->v.UnaryOp.op));
+ }
+ break;
+ case Lambda_kind:
+ return compiler_lambda(c, e);
+ case IfExp_kind:
+ return compiler_ifexp(c, e);
+ case Dict_kind:
+ return compiler_dict(c, e);
+ case Set_kind:
+ return compiler_set(c, e);
+ case GeneratorExp_kind:
+ return compiler_genexp(c, e);
+ case ListComp_kind:
+ return compiler_listcomp(c, e);
+ case SetComp_kind:
+ return compiler_setcomp(c, e);
+ case DictComp_kind:
+ return compiler_dictcomp(c, e);
+ case Yield_kind:
+ if (!_PyST_IsFunctionLike(c->u->u_ste)) {
+ return compiler_error(c, loc, "'yield' outside function");
+ }
+ if (e->v.Yield.value) {
+ VISIT(c, expr, e->v.Yield.value);
+ }
+ else {
+ ADDOP_LOAD_CONST(c, loc, Py_None);
+ }
+ ADDOP_YIELD(c, loc);
+ break;
+ case YieldFrom_kind:
+ if (!_PyST_IsFunctionLike(c->u->u_ste)) {
+ return compiler_error(c, loc, "'yield' outside function");
+ }
+ if (c->u->u_scope_type == COMPILER_SCOPE_ASYNC_FUNCTION) {
+ return compiler_error(c, loc, "'yield from' inside async function");
+ }
+ VISIT(c, expr, e->v.YieldFrom.value);
+ ADDOP(c, loc, GET_YIELD_FROM_ITER);
+ ADDOP_LOAD_CONST(c, loc, Py_None);
+ ADD_YIELD_FROM(c, loc, 0);
+ break;
+ case Await_kind:
+ if (!IS_TOP_LEVEL_AWAIT(c)){
+ if (!_PyST_IsFunctionLike(c->u->u_ste)) {
+ return compiler_error(c, loc, "'await' outside function");
+ }
+
+ if (c->u->u_scope_type != COMPILER_SCOPE_ASYNC_FUNCTION &&
+ c->u->u_scope_type != COMPILER_SCOPE_COMPREHENSION) {
+ return compiler_error(c, loc, "'await' outside async function");
+ }
+ }
+
+ VISIT(c, expr, e->v.Await.value);
+ ADDOP_I(c, loc, GET_AWAITABLE, 0);
+ ADDOP_LOAD_CONST(c, loc, Py_None);
+ ADD_YIELD_FROM(c, loc, 1);
+ break;
+ case Compare_kind:
+ return compiler_compare(c, e);
+ case Call_kind:
+ return compiler_call(c, e);
+ case Constant_kind:
+ ADDOP_LOAD_CONST(c, loc, e->v.Constant.value);
+ break;
+ case JoinedStr_kind:
+ return compiler_joined_str(c, e);
+ case FormattedValue_kind:
+ return compiler_formatted_value(c, e);
+ /* The following exprs can be assignment targets. */
+ case Attribute_kind:
+ if (e->v.Attribute.ctx == Load && can_optimize_super_call(c, e)) {
+ RETURN_IF_ERROR(load_args_for_super(c, e->v.Attribute.value));
+ int opcode = asdl_seq_LEN(e->v.Attribute.value->v.Call.args) ?
+ LOAD_SUPER_ATTR : LOAD_ZERO_SUPER_ATTR;
+ ADDOP_NAME(c, loc, opcode, e->v.Attribute.attr, names);
+ loc = update_start_location_to_match_attr(c, loc, e);
+ ADDOP(c, loc, NOP);
+ return SUCCESS;
+ }
+ VISIT(c, expr, e->v.Attribute.value);
+ loc = LOC(e);
+ loc = update_start_location_to_match_attr(c, loc, e);
+ switch (e->v.Attribute.ctx) {
+ case Load:
+ ADDOP_NAME(c, loc, LOAD_ATTR, e->v.Attribute.attr, names);
+ break;
+ case Store:
+ if (forbidden_name(c, loc, e->v.Attribute.attr, e->v.Attribute.ctx)) {
+ return ERROR;
+ }
+ ADDOP_NAME(c, loc, STORE_ATTR, e->v.Attribute.attr, names);
+ break;
+ case Del:
+ ADDOP_NAME(c, loc, DELETE_ATTR, e->v.Attribute.attr, names);
+ break;
+ }
+ break;
+ case Subscript_kind:
+ return compiler_subscript(c, e);
+ case Starred_kind:
+ switch (e->v.Starred.ctx) {
+ case Store:
+ /* In all legitimate cases, the Starred node was already replaced
+ * by compiler_list/compiler_tuple. XXX: is that okay? */
+ return compiler_error(c, loc,
+ "starred assignment target must be in a list or tuple");
+ default:
+ return compiler_error(c, loc,
+ "can't use starred expression here");
+ }
+ break;
+ case Slice_kind:
+ {
+ int n = compiler_slice(c, e);
+ RETURN_IF_ERROR(n);
+ ADDOP_I(c, loc, BUILD_SLICE, n);
+ break;
+ }
+ case Name_kind:
+ return compiler_nameop(c, loc, e->v.Name.id, e->v.Name.ctx);
+ /* child nodes of List and Tuple will have expr_context set */
+ case List_kind:
+ return compiler_list(c, e);
+ case Tuple_kind:
+ return compiler_tuple(c, e);
+ }
+ return SUCCESS;
+}
+
+static int
+compiler_visit_expr(struct compiler *c, expr_ty e)
+{
+ int res = compiler_visit_expr1(c, e);
+ return res;
+}
+
+static bool
+is_two_element_slice(expr_ty s)
+{
+ return s->kind == Slice_kind &&
+ s->v.Slice.step == NULL;
+}
+
+static int
+compiler_augassign(struct compiler *c, stmt_ty s)
+{
+ assert(s->kind == AugAssign_kind);
+ expr_ty e = s->v.AugAssign.target;
+
+ location loc = LOC(e);
+
+ switch (e->kind) {
+ case Attribute_kind:
+ VISIT(c, expr, e->v.Attribute.value);
+ ADDOP_I(c, loc, COPY, 1);
+ loc = update_start_location_to_match_attr(c, loc, e);
+ ADDOP_NAME(c, loc, LOAD_ATTR, e->v.Attribute.attr, names);
+ break;
+ case Subscript_kind:
+ VISIT(c, expr, e->v.Subscript.value);
+ if (is_two_element_slice(e->v.Subscript.slice)) {
+ RETURN_IF_ERROR(compiler_slice(c, e->v.Subscript.slice));
+ ADDOP_I(c, loc, COPY, 3);
+ ADDOP_I(c, loc, COPY, 3);
+ ADDOP_I(c, loc, COPY, 3);
+ ADDOP(c, loc, BINARY_SLICE);
+ }
+ else {
+ VISIT(c, expr, e->v.Subscript.slice);
+ ADDOP_I(c, loc, COPY, 2);
+ ADDOP_I(c, loc, COPY, 2);
+ ADDOP(c, loc, BINARY_SUBSCR);
+ }
+ break;
+ case Name_kind:
+ RETURN_IF_ERROR(compiler_nameop(c, loc, e->v.Name.id, Load));
+ break;
+ default:
+ PyErr_Format(PyExc_SystemError,
+ "invalid node type (%d) for augmented assignment",
+ e->kind);
+ return ERROR;
+ }
+
+ loc = LOC(s);
+
+ VISIT(c, expr, s->v.AugAssign.value);
+ ADDOP_INPLACE(c, loc, s->v.AugAssign.op);
+
+ loc = LOC(e);
+
+ switch (e->kind) {
+ case Attribute_kind:
+ loc = update_start_location_to_match_attr(c, loc, e);
+ ADDOP_I(c, loc, SWAP, 2);
+ ADDOP_NAME(c, loc, STORE_ATTR, e->v.Attribute.attr, names);
+ break;
+ case Subscript_kind:
+ if (is_two_element_slice(e->v.Subscript.slice)) {
+ ADDOP_I(c, loc, SWAP, 4);
+ ADDOP_I(c, loc, SWAP, 3);
+ ADDOP_I(c, loc, SWAP, 2);
+ ADDOP(c, loc, STORE_SLICE);
+ }
+ else {
+ ADDOP_I(c, loc, SWAP, 3);
+ ADDOP_I(c, loc, SWAP, 2);
+ ADDOP(c, loc, STORE_SUBSCR);
+ }
+ break;
+ case Name_kind:
+ return compiler_nameop(c, loc, e->v.Name.id, Store);
+ default:
+ Py_UNREACHABLE();
+ }
+ return SUCCESS;
+}
+
+static int
+check_ann_expr(struct compiler *c, expr_ty e)
+{
+ VISIT(c, expr, e);
+ ADDOP(c, LOC(e), POP_TOP);
+ return SUCCESS;
+}
+
+static int
+check_annotation(struct compiler *c, stmt_ty s)
+{
+ /* Annotations of complex targets does not produce anything
+ under annotations future */
+ if (c->c_future.ff_features & CO_FUTURE_ANNOTATIONS) {
+ return SUCCESS;
+ }
+
+ /* Annotations are only evaluated in a module or class. */
+ if (c->u->u_scope_type == COMPILER_SCOPE_MODULE ||
+ c->u->u_scope_type == COMPILER_SCOPE_CLASS) {
+ return check_ann_expr(c, s->v.AnnAssign.annotation);
+ }
+ return SUCCESS;
+}
+
+static int
+check_ann_subscr(struct compiler *c, expr_ty e)
+{
+ /* We check that everything in a subscript is defined at runtime. */
+ switch (e->kind) {
+ case Slice_kind:
+ if (e->v.Slice.lower && check_ann_expr(c, e->v.Slice.lower) < 0) {
+ return ERROR;
+ }
+ if (e->v.Slice.upper && check_ann_expr(c, e->v.Slice.upper) < 0) {
+ return ERROR;
+ }
+ if (e->v.Slice.step && check_ann_expr(c, e->v.Slice.step) < 0) {
+ return ERROR;
+ }
+ return SUCCESS;
+ case Tuple_kind: {
+ /* extended slice */
+ asdl_expr_seq *elts = e->v.Tuple.elts;
+ Py_ssize_t i, n = asdl_seq_LEN(elts);
+ for (i = 0; i < n; i++) {
+ RETURN_IF_ERROR(check_ann_subscr(c, asdl_seq_GET(elts, i)));
+ }
+ return SUCCESS;
+ }
+ default:
+ return check_ann_expr(c, e);
+ }
+}
+
+static int
+compiler_annassign(struct compiler *c, stmt_ty s)
+{
+ location loc = LOC(s);
+ expr_ty targ = s->v.AnnAssign.target;
+ PyObject* mangled;
+
+ assert(s->kind == AnnAssign_kind);
+
+ /* We perform the actual assignment first. */
+ if (s->v.AnnAssign.value) {
+ VISIT(c, expr, s->v.AnnAssign.value);
+ VISIT(c, expr, targ);
+ }
+ switch (targ->kind) {
+ case Name_kind:
+ if (forbidden_name(c, loc, targ->v.Name.id, Store)) {
+ return ERROR;
+ }
+ /* If we have a simple name in a module or class, store annotation. */
+ if (s->v.AnnAssign.simple &&
+ (c->u->u_scope_type == COMPILER_SCOPE_MODULE ||
+ c->u->u_scope_type == COMPILER_SCOPE_CLASS)) {
+ if (c->c_future.ff_features & CO_FUTURE_ANNOTATIONS) {
+ VISIT(c, annexpr, s->v.AnnAssign.annotation)
+ }
+ else {
+ VISIT(c, expr, s->v.AnnAssign.annotation);
+ }
+ ADDOP_NAME(c, loc, LOAD_NAME, &_Py_ID(__annotations__), names);
+ mangled = _Py_Mangle(c->u->u_private, targ->v.Name.id);
+ ADDOP_LOAD_CONST_NEW(c, loc, mangled);
+ ADDOP(c, loc, STORE_SUBSCR);
+ }
+ break;
+ case Attribute_kind:
+ if (forbidden_name(c, loc, targ->v.Attribute.attr, Store)) {
+ return ERROR;
+ }
+ if (!s->v.AnnAssign.value &&
+ check_ann_expr(c, targ->v.Attribute.value) < 0) {
+ return ERROR;
+ }
+ break;
+ case Subscript_kind:
+ if (!s->v.AnnAssign.value &&
+ (check_ann_expr(c, targ->v.Subscript.value) < 0 ||
+ check_ann_subscr(c, targ->v.Subscript.slice) < 0)) {
+ return ERROR;
+ }
+ break;
+ default:
+ PyErr_Format(PyExc_SystemError,
+ "invalid node type (%d) for annotated assignment",
+ targ->kind);
+ return ERROR;
+ }
+ /* Annotation is evaluated last. */
+ if (!s->v.AnnAssign.simple && check_annotation(c, s) < 0) {
+ return ERROR;
+ }
+ return SUCCESS;
+}
+
+/* Raises a SyntaxError and returns 0.
+ If something goes wrong, a different exception may be raised.
+*/
+
+static int
+compiler_error(struct compiler *c, location loc,
+ const char *format, ...)
+{
+ va_list vargs;
+ va_start(vargs, format);
+ PyObject *msg = PyUnicode_FromFormatV(format, vargs);
+ va_end(vargs);
+ if (msg == NULL) {
+ return ERROR;
+ }
+ PyObject *loc_obj = PyErr_ProgramTextObject(c->c_filename, loc.lineno);
+ if (loc_obj == NULL) {
+ loc_obj = Py_NewRef(Py_None);
+ }
+ PyObject *args = Py_BuildValue("O(OiiOii)", msg, c->c_filename,
+ loc.lineno, loc.col_offset + 1, loc_obj,
+ loc.end_lineno, loc.end_col_offset + 1);
+ Py_DECREF(msg);
+ if (args == NULL) {
+ goto exit;
+ }
+ PyErr_SetObject(PyExc_SyntaxError, args);
+ exit:
+ Py_DECREF(loc_obj);
+ Py_XDECREF(args);
+ return ERROR;
+}
+
+/* Emits a SyntaxWarning and returns 1 on success.
+ If a SyntaxWarning raised as error, replaces it with a SyntaxError
+ and returns 0.
+*/
+static int
+compiler_warn(struct compiler *c, location loc,
+ const char *format, ...)
+{
+ va_list vargs;
+ va_start(vargs, format);
+ PyObject *msg = PyUnicode_FromFormatV(format, vargs);
+ va_end(vargs);
+ if (msg == NULL) {
+ return ERROR;
+ }
+ if (PyErr_WarnExplicitObject(PyExc_SyntaxWarning, msg, c->c_filename,
+ loc.lineno, NULL, NULL) < 0)
+ {
+ if (PyErr_ExceptionMatches(PyExc_SyntaxWarning)) {
+ /* Replace the SyntaxWarning exception with a SyntaxError
+ to get a more accurate error report */
+ PyErr_Clear();
+ assert(PyUnicode_AsUTF8(msg) != NULL);
+ compiler_error(c, loc, PyUnicode_AsUTF8(msg));
+ }
+ Py_DECREF(msg);
+ return ERROR;
+ }
+ Py_DECREF(msg);
+ return SUCCESS;
+}
+
+static int
+compiler_subscript(struct compiler *c, expr_ty e)
+{
+ location loc = LOC(e);
+ expr_context_ty ctx = e->v.Subscript.ctx;
+ int op = 0;
+
+ if (ctx == Load) {
+ RETURN_IF_ERROR(check_subscripter(c, e->v.Subscript.value));
+ RETURN_IF_ERROR(check_index(c, e->v.Subscript.value, e->v.Subscript.slice));
+ }
+
+ VISIT(c, expr, e->v.Subscript.value);
+ if (is_two_element_slice(e->v.Subscript.slice) && ctx != Del) {
+ RETURN_IF_ERROR(compiler_slice(c, e->v.Subscript.slice));
+ if (ctx == Load) {
+ ADDOP(c, loc, BINARY_SLICE);
+ }
+ else {
+ assert(ctx == Store);
+ ADDOP(c, loc, STORE_SLICE);
+ }
+ }
+ else {
+ VISIT(c, expr, e->v.Subscript.slice);
+ switch (ctx) {
+ case Load: op = BINARY_SUBSCR; break;
+ case Store: op = STORE_SUBSCR; break;
+ case Del: op = DELETE_SUBSCR; break;
+ }
+ assert(op);
+ ADDOP(c, loc, op);
+ }
+ return SUCCESS;
+}
+
+/* Returns the number of the values emitted,
+ * thus are needed to build the slice, or -1 if there is an error. */
+static int
+compiler_slice(struct compiler *c, expr_ty s)
+{
+ int n = 2;
+ assert(s->kind == Slice_kind);
+
+ /* only handles the cases where BUILD_SLICE is emitted */
+ if (s->v.Slice.lower) {
+ VISIT(c, expr, s->v.Slice.lower);
+ }
+ else {
+ ADDOP_LOAD_CONST(c, LOC(s), Py_None);
+ }
+
+ if (s->v.Slice.upper) {
+ VISIT(c, expr, s->v.Slice.upper);
+ }
+ else {
+ ADDOP_LOAD_CONST(c, LOC(s), Py_None);
+ }
+
+ if (s->v.Slice.step) {
+ n++;
+ VISIT(c, expr, s->v.Slice.step);
+ }
+ return n;
+}
+
+
+// PEP 634: Structural Pattern Matching
+
+// 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)
+
+#define WILDCARD_STAR_CHECK(N) \
+ ((N)->kind == MatchStar_kind && !(N)->v.MatchStar.name)
+
+// Limit permitted subexpressions, even if the parser & AST validator let them through
+#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 SUCCESS;
+ }
+ Py_ssize_t needed = sizeof(jump_target_label) * size;
+ jump_target_label *resized = PyObject_Realloc(pc->fail_pop, needed);
+ if (resized == NULL) {
+ PyErr_NoMemory();
+ return ERROR;
+ }
+ pc->fail_pop = resized;
+ while (pc->fail_pop_size < size) {
+ NEW_JUMP_TARGET_LABEL(c, new_block);
+ pc->fail_pop[pc->fail_pop_size++] = new_block;
+ }
+ return SUCCESS;
+}
+
+// Use op to jump to the correct fail_pop block.
+static int
+jump_to_fail_pop(struct compiler *c, location loc,
+ 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_ERROR(ensure_fail_pop(c, pc, pops));
+ ADDOP_JUMP(c, loc, op, pc->fail_pop[pops]);
+ return SUCCESS;
+}
+
+// Build all of the fail_pop blocks and reset fail_pop.
+static int
+emit_and_reset_fail_pop(struct compiler *c, location loc,
+ pattern_context *pc)
+{
+ if (!pc->fail_pop_size) {
+ assert(pc->fail_pop == NULL);
+ return SUCCESS;
+ }
+ while (--pc->fail_pop_size) {
+ USE_LABEL(c, pc->fail_pop[pc->fail_pop_size]);
+ if (codegen_addop_noarg(INSTR_SEQUENCE(c), POP_TOP, loc) < 0) {
+ pc->fail_pop_size = 0;
+ PyObject_Free(pc->fail_pop);
+ pc->fail_pop = NULL;
+ return ERROR;
+ }
+ }
+ USE_LABEL(c, pc->fail_pop[0]);
+ PyObject_Free(pc->fail_pop);
+ pc->fail_pop = NULL;
+ return SUCCESS;
+}
+
+static int
+compiler_error_duplicate_store(struct compiler *c, location loc, identifier n)
+{
+ return compiler_error(c, loc,
+ "multiple assignments to name %R in pattern", n);
+}
+
+// Duplicate the effect of 3.10's ROT_* instructions using SWAPs.
+static int
+pattern_helper_rotate(struct compiler *c, location loc, Py_ssize_t count)
+{
+ while (1 < count) {
+ ADDOP_I(c, loc, SWAP, count--);
+ }
+ return SUCCESS;
+}
+
+static int
+pattern_helper_store_name(struct compiler *c, location loc,
+ identifier n, pattern_context *pc)
+{
+ if (n == NULL) {
+ ADDOP(c, loc, POP_TOP);
+ return SUCCESS;
+ }
+ if (forbidden_name(c, loc, n, Store)) {
+ return ERROR;
+ }
+ // Can't assign to the same name twice:
+ int duplicate = PySequence_Contains(pc->stores, n);
+ RETURN_IF_ERROR(duplicate);
+ if (duplicate) {
+ return compiler_error_duplicate_store(c, loc, n);
+ }
+ // Rotate this object underneath any items we need to preserve:
+ Py_ssize_t rotations = pc->on_top + PyList_GET_SIZE(pc->stores) + 1;
+ RETURN_IF_ERROR(pattern_helper_rotate(c, loc, rotations));
+ RETURN_IF_ERROR(PyList_Append(pc->stores, n));
+ return SUCCESS;
+}
+
+
+static int
+pattern_unpack_helper(struct compiler *c, location loc,
+ asdl_pattern_seq *elts)
+{
+ Py_ssize_t n = asdl_seq_LEN(elts);
+ int seen_star = 0;
+ for (Py_ssize_t i = 0; i < n; i++) {
+ pattern_ty elt = asdl_seq_GET(elts, i);
+ if (elt->kind == MatchStar_kind && !seen_star) {
+ if ((i >= (1 << 8)) ||
+ (n-i-1 >= (INT_MAX >> 8))) {
+ return compiler_error(c, loc,
+ "too many expressions in "
+ "star-unpacking sequence pattern");
+ }
+ ADDOP_I(c, loc, UNPACK_EX, (i + ((n-i-1) << 8)));
+ seen_star = 1;
+ }
+ else if (elt->kind == MatchStar_kind) {
+ return compiler_error(c, loc,
+ "multiple starred expressions in sequence pattern");
+ }
+ }
+ if (!seen_star) {
+ ADDOP_I(c, loc, UNPACK_SEQUENCE, n);
+ }
+ return SUCCESS;
+}
+
+static int
+pattern_helper_sequence_unpack(struct compiler *c, location loc,
+ asdl_pattern_seq *patterns, Py_ssize_t star,
+ pattern_context *pc)
+{
+ RETURN_IF_ERROR(pattern_unpack_helper(c, loc, patterns));
+ Py_ssize_t size = asdl_seq_LEN(patterns);
+ // 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++) {
+ // One less item to keep track of each time we loop through:
+ pc->on_top--;
+ pattern_ty pattern = asdl_seq_GET(patterns, i);
+ RETURN_IF_ERROR(compiler_pattern_subpattern(c, pattern, pc));
+ }
+ return SUCCESS;
+}
+
+// Like pattern_helper_sequence_unpack, but uses BINARY_SUBSCR instead of
+// UNPACK_SEQUENCE / UNPACK_EX. This is more efficient for patterns with a
+// starred wildcard like [first, *_] / [first, *_, last] / [*_, last] / etc.
+static int
+pattern_helper_sequence_subscr(struct compiler *c, location loc,
+ asdl_pattern_seq *patterns, Py_ssize_t star,
+ pattern_context *pc)
+{
+ // 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);
+ if (WILDCARD_CHECK(pattern)) {
+ continue;
+ }
+ if (i == star) {
+ assert(WILDCARD_STAR_CHECK(pattern));
+ continue;
+ }
+ ADDOP_I(c, loc, COPY, 1);
+ if (i < star) {
+ ADDOP_LOAD_CONST_NEW(c, loc, PyLong_FromSsize_t(i));
+ }
+ else {
+ // The subject may not support negative indexing! Compute a
+ // nonnegative index:
+ ADDOP(c, loc, GET_LEN);
+ ADDOP_LOAD_CONST_NEW(c, loc, PyLong_FromSsize_t(size - i));
+ ADDOP_BINARY(c, loc, Sub);
+ }
+ ADDOP(c, loc, BINARY_SUBSCR);
+ RETURN_IF_ERROR(compiler_pattern_subpattern(c, pattern, pc));
+ }
+ // Pop the subject, we're done with it:
+ pc->on_top--;
+ ADDOP(c, loc, POP_TOP);
+ return SUCCESS;
+}
+
+// Like compiler_pattern, but turn off checks for irrefutability.
+static int
+compiler_pattern_subpattern(struct compiler *c,
+ pattern_ty p, pattern_context *pc)
+{
+ int allow_irrefutable = pc->allow_irrefutable;
+ pc->allow_irrefutable = 1;
+ RETURN_IF_ERROR(compiler_pattern(c, p, pc));
+ pc->allow_irrefutable = allow_irrefutable;
+ return SUCCESS;
+}
+
+static int
+compiler_pattern_as(struct compiler *c, pattern_ty p, pattern_context *pc)
+{
+ assert(p->kind == MatchAs_kind);
+ if (p->v.MatchAs.pattern == NULL) {
+ // An irrefutable match:
+ if (!pc->allow_irrefutable) {
+ if (p->v.MatchAs.name) {
+ const char *e = "name capture %R makes remaining patterns unreachable";
+ return compiler_error(c, LOC(p), e, p->v.MatchAs.name);
+ }
+ const char *e = "wildcard makes remaining patterns unreachable";
+ return compiler_error(c, LOC(p), e);
+ }
+ return pattern_helper_store_name(c, LOC(p), p->v.MatchAs.name, pc);
+ }
+ // Need to make a copy for (possibly) storing later:
+ pc->on_top++;
+ ADDOP_I(c, LOC(p), COPY, 1);
+ RETURN_IF_ERROR(compiler_pattern(c, p->v.MatchAs.pattern, pc));
+ // Success! Store it:
+ pc->on_top--;
+ RETURN_IF_ERROR(pattern_helper_store_name(c, LOC(p), p->v.MatchAs.name, pc));
+ return SUCCESS;
+}
+
+static int
+compiler_pattern_star(struct compiler *c, pattern_ty p, pattern_context *pc)
+{
+ assert(p->kind == MatchStar_kind);
+ RETURN_IF_ERROR(
+ pattern_helper_store_name(c, LOC(p), p->v.MatchStar.name, pc));
+ return SUCCESS;
+}
+
+static int
+validate_kwd_attrs(struct compiler *c, asdl_identifier_seq *attrs, asdl_pattern_seq* patterns)
+{
+ // Any errors will point to the pattern rather than the arg name as the
+ // parser is only supplying identifiers rather than Name or keyword nodes
+ Py_ssize_t nattrs = asdl_seq_LEN(attrs);
+ for (Py_ssize_t i = 0; i < nattrs; i++) {
+ identifier attr = ((identifier)asdl_seq_GET(attrs, i));
+ location loc = LOC((pattern_ty) asdl_seq_GET(patterns, i));
+ if (forbidden_name(c, loc, attr, Store)) {
+ return ERROR;
+ }
+ for (Py_ssize_t j = i + 1; j < nattrs; j++) {
+ identifier other = ((identifier)asdl_seq_GET(attrs, j));
+ if (!PyUnicode_Compare(attr, other)) {
+ location loc = LOC((pattern_ty) asdl_seq_GET(patterns, j));
+ compiler_error(c, loc, "attribute name repeated in class pattern: %U", attr);
+ return ERROR;
+ }
+ }
+ }
+ return SUCCESS;
+}
+
+static int
+compiler_pattern_class(struct compiler *c, pattern_ty p, pattern_context *pc)
+{
+ assert(p->kind == MatchClass_kind);
+ asdl_pattern_seq *patterns = p->v.MatchClass.patterns;
+ asdl_identifier_seq *kwd_attrs = p->v.MatchClass.kwd_attrs;
+ asdl_pattern_seq *kwd_patterns = p->v.MatchClass.kwd_patterns;
+ Py_ssize_t nargs = asdl_seq_LEN(patterns);
+ Py_ssize_t nattrs = asdl_seq_LEN(kwd_attrs);
+ Py_ssize_t nkwd_patterns = asdl_seq_LEN(kwd_patterns);
+ if (nattrs != nkwd_patterns) {
+ // AST validator shouldn't let this happen, but if it does,
+ // just fail, don't crash out of the interpreter
+ const char * e = "kwd_attrs (%d) / kwd_patterns (%d) length mismatch in class pattern";
+ return compiler_error(c, LOC(p), e, nattrs, nkwd_patterns);
+ }
+ if (INT_MAX < nargs || INT_MAX < nargs + nattrs - 1) {
+ const char *e = "too many sub-patterns in class pattern %R";
+ return compiler_error(c, LOC(p), e, p->v.MatchClass.cls);
+ }
+ if (nattrs) {
+ RETURN_IF_ERROR(validate_kwd_attrs(c, kwd_attrs, kwd_patterns));
+ }
+ VISIT(c, expr, p->v.MatchClass.cls);
+ PyObject *attr_names = PyTuple_New(nattrs);
+ if (attr_names == NULL) {
+ return ERROR;
+ }
+ Py_ssize_t i;
+ for (i = 0; i < nattrs; i++) {
+ PyObject *name = asdl_seq_GET(kwd_attrs, i);
+ PyTuple_SET_ITEM(attr_names, i, Py_NewRef(name));
+ }
+ ADDOP_LOAD_CONST_NEW(c, LOC(p), attr_names);
+ ADDOP_I(c, LOC(p), MATCH_CLASS, nargs);
+ ADDOP_I(c, LOC(p), COPY, 1);
+ ADDOP_LOAD_CONST(c, LOC(p), Py_None);
+ ADDOP_I(c, LOC(p), IS_OP, 1);
+ // TOS is now a tuple of (nargs + nattrs) attributes (or None):
+ pc->on_top++;
+ RETURN_IF_ERROR(jump_to_fail_pop(c, LOC(p), pc, POP_JUMP_IF_FALSE));
+ ADDOP_I(c, LOC(p), UNPACK_SEQUENCE, nargs + nattrs);
+ pc->on_top += nargs + nattrs - 1;
+ for (i = 0; i < nargs + nattrs; i++) {
+ pc->on_top--;
+ pattern_ty pattern;
+ if (i < nargs) {
+ // Positional:
+ pattern = asdl_seq_GET(patterns, i);
+ }
+ else {
+ // Keyword:
+ pattern = asdl_seq_GET(kwd_patterns, i - nargs);
+ }
+ if (WILDCARD_CHECK(pattern)) {
+ ADDOP(c, LOC(p), POP_TOP);
+ continue;
+ }
+ RETURN_IF_ERROR(compiler_pattern_subpattern(c, pattern, pc));
+ }
+ // Success! Pop the tuple of attributes:
+ return SUCCESS;
+}
+
+static int
+compiler_pattern_mapping(struct compiler *c, pattern_ty p,
+ pattern_context *pc)
+{
+ assert(p->kind == MatchMapping_kind);
+ asdl_expr_seq *keys = p->v.MatchMapping.keys;
+ asdl_pattern_seq *patterns = p->v.MatchMapping.patterns;
+ Py_ssize_t size = asdl_seq_LEN(keys);
+ Py_ssize_t npatterns = asdl_seq_LEN(patterns);
+ if (size != npatterns) {
+ // AST validator shouldn't let this happen, but if it does,
+ // just fail, don't crash out of the interpreter
+ const char * e = "keys (%d) / patterns (%d) length mismatch in mapping pattern";
+ return compiler_error(c, LOC(p), e, size, npatterns);
+ }
+ // 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, LOC(p), MATCH_MAPPING);
+ RETURN_IF_ERROR(jump_to_fail_pop(c, LOC(p), pc, POP_JUMP_IF_FALSE));
+ if (!size && !star_target) {
+ // If the pattern is just "{}", we're done! Pop the subject:
+ pc->on_top--;
+ ADDOP(c, LOC(p), POP_TOP);
+ return SUCCESS;
+ }
+ if (size) {
+ // If the pattern has any keys in it, perform a length check:
+ ADDOP(c, LOC(p), GET_LEN);
+ ADDOP_LOAD_CONST_NEW(c, LOC(p), PyLong_FromSsize_t(size));
+ ADDOP_COMPARE(c, LOC(p), GtE);
+ RETURN_IF_ERROR(jump_to_fail_pop(c, LOC(p), pc, POP_JUMP_IF_FALSE));
+ }
+ if (INT_MAX < size - 1) {
+ return compiler_error(c, LOC(p), "too many sub-patterns in mapping pattern");
+ }
+ // Collect all of the keys into a tuple for MATCH_KEYS and
+ // **rest. They can either be dotted names or literals:
+
+ // Maintaining a set of Constant_kind kind keys allows us to raise a
+ // SyntaxError in the case of duplicates.
+ PyObject *seen = PySet_New(NULL);
+ if (seen == NULL) {
+ return ERROR;
+ }
+
+ // NOTE: goto error on failure in the loop below to avoid leaking `seen`
+ for (Py_ssize_t i = 0; i < size; i++) {
+ expr_ty key = asdl_seq_GET(keys, i);
+ if (key == NULL) {
+ const char *e = "can't use NULL keys in MatchMapping "
+ "(set 'rest' parameter instead)";
+ location loc = LOC((pattern_ty) asdl_seq_GET(patterns, i));
+ compiler_error(c, loc, e);
+ goto error;
+ }
+
+ if (key->kind == Constant_kind) {
+ int in_seen = PySet_Contains(seen, key->v.Constant.value);
+ if (in_seen < 0) {
+ goto error;
+ }
+ if (in_seen) {
+ const char *e = "mapping pattern checks duplicate key (%R)";
+ compiler_error(c, LOC(p), e, key->v.Constant.value);
+ goto error;
+ }
+ if (PySet_Add(seen, key->v.Constant.value)) {
+ goto error;
+ }
+ }
+
+ else if (key->kind != Attribute_kind) {
+ const char *e = "mapping pattern keys may only match literals and attribute lookups";
+ compiler_error(c, LOC(p), e);
+ goto error;
+ }
+ if (compiler_visit_expr(c, key) < 0) {
+ goto error;
+ }
+ }
+
+ // all keys have been checked; there are no duplicates
+ Py_DECREF(seen);
+
+ ADDOP_I(c, LOC(p), BUILD_TUPLE, size);
+ ADDOP(c, LOC(p), MATCH_KEYS);
+ // There's now a tuple of keys and a tuple of values on top of the subject:
+ pc->on_top += 2;
+ ADDOP_I(c, LOC(p), COPY, 1);
+ ADDOP_LOAD_CONST(c, LOC(p), Py_None);
+ ADDOP_I(c, LOC(p), IS_OP, 1);
+ RETURN_IF_ERROR(jump_to_fail_pop(c, LOC(p), pc, POP_JUMP_IF_FALSE));
+ // So far so good. Use that tuple of values on the stack to match
+ // sub-patterns against:
+ ADDOP_I(c, LOC(p), UNPACK_SEQUENCE, size);
+ pc->on_top += size - 1;
+ for (Py_ssize_t i = 0; i < size; i++) {
+ pc->on_top--;
+ pattern_ty pattern = asdl_seq_GET(patterns, i);
+ RETURN_IF_ERROR(compiler_pattern_subpattern(c, pattern, pc));
+ }
+ // If we get this far, it's a match! Whatever happens next should consume
+ // the tuple of keys and the subject:
+ pc->on_top -= 2;
+ if (star_target) {
+ // If we have a starred name, bind a dict of remaining items to it (this may
+ // seem a bit inefficient, but keys is rarely big enough to actually impact
+ // runtime):
+ // rest = dict(TOS1)
+ // for key in TOS:
+ // del rest[key]
+ ADDOP_I(c, LOC(p), BUILD_MAP, 0); // [subject, keys, empty]
+ ADDOP_I(c, LOC(p), SWAP, 3); // [empty, keys, subject]
+ ADDOP_I(c, LOC(p), DICT_UPDATE, 2); // [copy, keys]
+ ADDOP_I(c, LOC(p), UNPACK_SEQUENCE, size); // [copy, keys...]
+ while (size) {
+ ADDOP_I(c, LOC(p), COPY, 1 + size--); // [copy, keys..., copy]
+ ADDOP_I(c, LOC(p), SWAP, 2); // [copy, keys..., copy, key]
+ ADDOP(c, LOC(p), DELETE_SUBSCR); // [copy, keys...]
+ }
+ RETURN_IF_ERROR(pattern_helper_store_name(c, LOC(p), star_target, pc));
+ }
+ else {
+ ADDOP(c, LOC(p), POP_TOP); // Tuple of keys.
+ ADDOP(c, LOC(p), POP_TOP); // Subject.
+ }
+ return SUCCESS;
+
+error:
+ Py_DECREF(seen);
+ return ERROR;
+}
+
+static int
+compiler_pattern_or(struct compiler *c, pattern_ty p, pattern_context *pc)
+{
+ assert(p->kind == MatchOr_kind);
+ NEW_JUMP_TARGET_LABEL(c, end);
+ 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:
+ 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++) {
+ pattern_ty alt = asdl_seq_GET(p->v.MatchOr.patterns, i);
+ 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 (codegen_addop_i(INSTR_SEQUENCE(c), COPY, 1, LOC(alt)) < 0 ||
+ compiler_pattern(c, alt, pc) < 0) {
+ goto error;
+ }
+ // Success!
+ Py_ssize_t nstores = PyList_GET_SIZE(pc->stores);
+ if (!i) {
+ // 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 = Py_NewRef(pc->stores);
+ }
+ else if (nstores != PyList_GET_SIZE(control)) {
+ goto diff;
+ }
+ 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, and the peephole optimizer will ensure
+ // that the final code is as efficient as possible.
+ assert(istores < icontrol);
+ Py_ssize_t rotations = istores + 1;
+ // Perform 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
+ // rotations:
+ while (rotations--) {
+ if (pattern_helper_rotate(c, LOC(alt), icontrol + 1) < 0) {
+ goto error;
+ }
+ }
+ }
+ }
+ }
+ assert(control);
+ if (codegen_addop_j(INSTR_SEQUENCE(c), LOC(alt), JUMP, end) < 0 ||
+ emit_and_reset_fail_pop(c, LOC(alt), pc) < 0)
+ {
+ goto error;
+ }
+ }
+ 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 (codegen_addop_noarg(INSTR_SEQUENCE(c), POP_TOP, LOC(p)) < 0 ||
+ jump_to_fail_pop(c, LOC(p), pc, JUMP) < 0) {
+ goto error;
+ }
+
+ USE_LABEL(c, end);
+ Py_ssize_t nstores = PyList_GET_SIZE(control);
+ // There's a bunch of stuff on the stack between 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.
+ Py_ssize_t 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 (pattern_helper_rotate(c, LOC(p), nrots) < 0) {
+ 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, LOC(p), 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, LOC(p), POP_TOP);
+ return SUCCESS;
+diff:
+ compiler_error(c, LOC(p), "alternative patterns bind different names");
+error:
+ PyObject_Free(old_pc.fail_pop);
+ Py_DECREF(old_pc.stores);
+ Py_XDECREF(control);
+ return ERROR;
+}
+
+
+static int
+compiler_pattern_sequence(struct compiler *c, pattern_ty p,
+ pattern_context *pc)
+{
+ assert(p->kind == MatchSequence_kind);
+ asdl_pattern_seq *patterns = p->v.MatchSequence.patterns;
+ Py_ssize_t size = asdl_seq_LEN(patterns);
+ Py_ssize_t star = -1;
+ int only_wildcard = 1;
+ int star_wildcard = 0;
+ // Find a starred name, if it exists. There may be at most one:
+ for (Py_ssize_t i = 0; i < size; i++) {
+ pattern_ty pattern = asdl_seq_GET(patterns, i);
+ if (pattern->kind == MatchStar_kind) {
+ if (star >= 0) {
+ const char *e = "multiple starred names in sequence pattern";
+ return compiler_error(c, LOC(p), e);
+ }
+ star_wildcard = WILDCARD_STAR_CHECK(pattern);
+ only_wildcard &= star_wildcard;
+ star = i;
+ continue;
+ }
+ only_wildcard &= WILDCARD_CHECK(pattern);
+ }
+ // We need to keep the subject on top during the sequence and length checks:
+ pc->on_top++;
+ ADDOP(c, LOC(p), MATCH_SEQUENCE);
+ RETURN_IF_ERROR(jump_to_fail_pop(c, LOC(p), pc, POP_JUMP_IF_FALSE));
+ if (star < 0) {
+ // No star: len(subject) == size
+ ADDOP(c, LOC(p), GET_LEN);
+ ADDOP_LOAD_CONST_NEW(c, LOC(p), PyLong_FromSsize_t(size));
+ ADDOP_COMPARE(c, LOC(p), Eq);
+ RETURN_IF_ERROR(jump_to_fail_pop(c, LOC(p), pc, POP_JUMP_IF_FALSE));
+ }
+ else if (size > 1) {
+ // Star: len(subject) >= size - 1
+ ADDOP(c, LOC(p), GET_LEN);
+ ADDOP_LOAD_CONST_NEW(c, LOC(p), PyLong_FromSsize_t(size - 1));
+ ADDOP_COMPARE(c, LOC(p), GtE);
+ RETURN_IF_ERROR(jump_to_fail_pop(c, LOC(p), pc, POP_JUMP_IF_FALSE));
+ }
+ // Whatever comes next should consume the subject:
+ pc->on_top--;
+ if (only_wildcard) {
+ // Patterns like: [] / [_] / [_, _] / [*_] / [_, *_] / [_, _, *_] / etc.
+ ADDOP(c, LOC(p), POP_TOP);
+ }
+ else if (star_wildcard) {
+ RETURN_IF_ERROR(pattern_helper_sequence_subscr(c, LOC(p), patterns, star, pc));
+ }
+ else {
+ RETURN_IF_ERROR(pattern_helper_sequence_unpack(c, LOC(p), patterns, star, pc));
+ }
+ return SUCCESS;
+}
+
+static int
+compiler_pattern_value(struct compiler *c, pattern_ty p, pattern_context *pc)
+{
+ assert(p->kind == MatchValue_kind);
+ expr_ty value = p->v.MatchValue.value;
+ if (!MATCH_VALUE_EXPR(value)) {
+ const char *e = "patterns may only match literals and attribute lookups";
+ return compiler_error(c, LOC(p), e);
+ }
+ VISIT(c, expr, value);
+ ADDOP_COMPARE(c, LOC(p), Eq);
+ RETURN_IF_ERROR(jump_to_fail_pop(c, LOC(p), pc, POP_JUMP_IF_FALSE));
+ return SUCCESS;
+}
+
+static int
+compiler_pattern_singleton(struct compiler *c, pattern_ty p, pattern_context *pc)
+{
+ assert(p->kind == MatchSingleton_kind);
+ ADDOP_LOAD_CONST(c, LOC(p), p->v.MatchSingleton.value);
+ ADDOP_COMPARE(c, LOC(p), Is);
+ RETURN_IF_ERROR(jump_to_fail_pop(c, LOC(p), pc, POP_JUMP_IF_FALSE));
+ return SUCCESS;
+}
+
+static int
+compiler_pattern(struct compiler *c, pattern_ty p, pattern_context *pc)
+{
+ switch (p->kind) {
+ case MatchValue_kind:
+ return compiler_pattern_value(c, p, pc);
+ case MatchSingleton_kind:
+ return compiler_pattern_singleton(c, p, pc);
+ case MatchSequence_kind:
+ return compiler_pattern_sequence(c, p, pc);
+ case MatchMapping_kind:
+ return compiler_pattern_mapping(c, p, pc);
+ case MatchClass_kind:
+ return compiler_pattern_class(c, p, pc);
+ case MatchStar_kind:
+ return compiler_pattern_star(c, p, pc);
+ case MatchAs_kind:
+ return compiler_pattern_as(c, p, pc);
+ case MatchOr_kind:
+ return compiler_pattern_or(c, p, pc);
+ }
+ // AST validator shouldn't let this happen, but if it does,
+ // just fail, don't crash out of the interpreter
+ const char *e = "invalid match pattern node in AST (kind=%d)";
+ return compiler_error(c, LOC(p), e, p->kind);
+}
+
+static int
+compiler_match_inner(struct compiler *c, stmt_ty s, pattern_context *pc)
+{
+ VISIT(c, expr, s->v.Match.subject);
+ NEW_JUMP_TARGET_LABEL(c, end);
+ Py_ssize_t cases = asdl_seq_LEN(s->v.Match.cases);
+ assert(cases > 0);
+ 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);
+ // Only copy the subject if we're *not* on the last case:
+ if (i != cases - has_default - 1) {
+ ADDOP_I(c, LOC(m->pattern), COPY, 1);
+ }
+ pc->stores = PyList_New(0);
+ if (pc->stores == NULL) {
+ return ERROR;
+ }
+ // 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) < 0) {
+ Py_DECREF(pc->stores);
+ return ERROR;
+ }
+ 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, LOC(m->pattern), name, Store) < 0) {
+ Py_DECREF(pc->stores);
+ return ERROR;
+ }
+ }
+ Py_DECREF(pc->stores);
+ // NOTE: Returning macros are safe again.
+ if (m->guard) {
+ RETURN_IF_ERROR(ensure_fail_pop(c, pc, 0));
+ RETURN_IF_ERROR(compiler_jump_if(c, LOC(m->pattern), m->guard, pc->fail_pop[0], 0));
+ }
+ // Success! Pop the subject off, we're done with it:
+ if (i != cases - has_default - 1) {
+ ADDOP(c, LOC(m->pattern), POP_TOP);
+ }
+ VISIT_SEQ(c, stmt, m->body);
+ ADDOP_JUMP(c, NO_LOCATION, JUMP, end);
+ // If the pattern fails to match, we want the line number of the
+ // cleanup to be associated with the failed pattern, not the last line
+ // of the body
+ RETURN_IF_ERROR(emit_and_reset_fail_pop(c, LOC(m->pattern), pc));
+ }
+ if (has_default) {
+ // A trailing "case _" is common, and lets us save a bit of redundant
+ // pushing and popping in the loop above:
+ m = asdl_seq_GET(s->v.Match.cases, cases - 1);
+ if (cases == 1) {
+ // No matches. Done with the subject:
+ ADDOP(c, LOC(m->pattern), POP_TOP);
+ }
+ else {
+ // Show line coverage for default case (it doesn't create bytecode)
+ ADDOP(c, LOC(m->pattern), NOP);
+ }
+ if (m->guard) {
+ RETURN_IF_ERROR(compiler_jump_if(c, LOC(m->pattern), m->guard, end, 0));
+ }
+ VISIT_SEQ(c, stmt, m->body);
+ }
+ USE_LABEL(c, end);
+ return SUCCESS;
+}
+
+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
+
+static PyObject *
+consts_dict_keys_inorder(PyObject *dict)
+{
+ PyObject *consts, *k, *v;
+ Py_ssize_t i, pos = 0, size = PyDict_GET_SIZE(dict);
+
+ consts = PyList_New(size); /* PyCode_Optimize() requires a list */
+ if (consts == NULL)
+ return NULL;
+ while (PyDict_Next(dict, &pos, &k, &v)) {
+ i = PyLong_AS_LONG(v);
+ /* The keys of the dictionary can be tuples wrapping a constant.
+ * (see dict_add_o and _PyCode_ConstantKey). In that case
+ * the object we want is always second. */
+ if (PyTuple_CheckExact(k)) {
+ k = PyTuple_GET_ITEM(k, 1);
+ }
+ assert(i < size);
+ assert(i >= 0);
+ PyList_SET_ITEM(consts, i, Py_NewRef(k));
+ }
+ return consts;
+}
+
+static int
+compute_code_flags(struct compiler *c)
+{
+ PySTEntryObject *ste = c->u->u_ste;
+ int flags = 0;
+ if (_PyST_IsFunctionLike(c->u->u_ste)) {
+ flags |= CO_NEWLOCALS | CO_OPTIMIZED;
+ if (ste->ste_nested)
+ flags |= CO_NESTED;
+ if (ste->ste_generator && !ste->ste_coroutine)
+ flags |= CO_GENERATOR;
+ if (!ste->ste_generator && ste->ste_coroutine)
+ flags |= CO_COROUTINE;
+ if (ste->ste_generator && ste->ste_coroutine)
+ flags |= CO_ASYNC_GENERATOR;
+ if (ste->ste_varargs)
+ flags |= CO_VARARGS;
+ if (ste->ste_varkeywords)
+ flags |= CO_VARKEYWORDS;
+ }
+
+ /* (Only) inherit compilerflags in PyCF_MASK */
+ flags |= (c->c_flags.cf_flags & PyCF_MASK);
+
+ if ((IS_TOP_LEVEL_AWAIT(c)) &&
+ ste->ste_coroutine &&
+ !ste->ste_generator) {
+ flags |= CO_COROUTINE;
+ }
+
+ return flags;
+}
+
+// Merge *obj* with constant cache.
+// Unlike merge_consts_recursive(), this function doesn't work recursively.
+int
+_PyCompile_ConstCacheMergeOne(PyObject *const_cache, PyObject **obj)
+{
+ assert(PyDict_CheckExact(const_cache));
+ PyObject *key = _PyCode_ConstantKey(*obj);
+ if (key == NULL) {
+ return ERROR;
+ }
+
+ // t is borrowed reference
+ PyObject *t = PyDict_SetDefault(const_cache, key, key);
+ Py_DECREF(key);
+ if (t == NULL) {
+ return ERROR;
+ }
+ if (t == key) { // obj is new constant.
+ return SUCCESS;
+ }
+
+ if (PyTuple_CheckExact(t)) {
+ // t is still borrowed reference
+ t = PyTuple_GET_ITEM(t, 1);
+ }
+
+ Py_SETREF(*obj, Py_NewRef(t));
+ return SUCCESS;
+}
+
+
+static int *
+build_cellfixedoffsets(_PyCompile_CodeUnitMetadata *umd)
+{
+ int nlocals = (int)PyDict_GET_SIZE(umd->u_varnames);
+ int ncellvars = (int)PyDict_GET_SIZE(umd->u_cellvars);
+ int nfreevars = (int)PyDict_GET_SIZE(umd->u_freevars);
+
+ int noffsets = ncellvars + nfreevars;
+ int *fixed = PyMem_New(int, noffsets);
+ if (fixed == NULL) {
+ PyErr_NoMemory();
+ return NULL;
+ }
+ for (int i = 0; i < noffsets; i++) {
+ fixed[i] = nlocals + i;
+ }
+
+ PyObject *varname, *cellindex;
+ Py_ssize_t pos = 0;
+ while (PyDict_Next(umd->u_cellvars, &pos, &varname, &cellindex)) {
+ PyObject *varindex = PyDict_GetItem(umd->u_varnames, varname);
+ if (varindex != NULL) {
+ assert(PyLong_AS_LONG(cellindex) < INT_MAX);
+ assert(PyLong_AS_LONG(varindex) < INT_MAX);
+ int oldindex = (int)PyLong_AS_LONG(cellindex);
+ int argoffset = (int)PyLong_AS_LONG(varindex);
+ fixed[oldindex] = argoffset;
+ }
+ }
+
+ return fixed;
+}
+
+static int
+insert_prefix_instructions(_PyCompile_CodeUnitMetadata *umd, basicblock *entryblock,
+ int *fixed, int nfreevars, int code_flags)
+{
+ assert(umd->u_firstlineno > 0);
+
+ /* Add the generator prefix instructions. */
+ if (code_flags & (CO_GENERATOR | CO_COROUTINE | CO_ASYNC_GENERATOR)) {
+ cfg_instr make_gen = {
+ .i_opcode = RETURN_GENERATOR,
+ .i_oparg = 0,
+ .i_loc = LOCATION(umd->u_firstlineno, umd->u_firstlineno, -1, -1),
+ .i_target = NULL,
+ };
+ RETURN_IF_ERROR(_PyBasicblock_InsertInstruction(entryblock, 0, &make_gen));
+ cfg_instr pop_top = {
+ .i_opcode = POP_TOP,
+ .i_oparg = 0,
+ .i_loc = NO_LOCATION,
+ .i_target = NULL,
+ };
+ RETURN_IF_ERROR(_PyBasicblock_InsertInstruction(entryblock, 1, &pop_top));
+ }
+
+ /* Set up cells for any variable that escapes, to be put in a closure. */
+ const int ncellvars = (int)PyDict_GET_SIZE(umd->u_cellvars);
+ if (ncellvars) {
+ // umd->u_cellvars has the cells out of order so we sort them
+ // before adding the MAKE_CELL instructions. Note that we
+ // adjust for arg cells, which come first.
+ const int nvars = ncellvars + (int)PyDict_GET_SIZE(umd->u_varnames);
+ int *sorted = PyMem_RawCalloc(nvars, sizeof(int));
+ if (sorted == NULL) {
+ PyErr_NoMemory();
+ return ERROR;
+ }
+ for (int i = 0; i < ncellvars; i++) {
+ sorted[fixed[i]] = i + 1;
+ }
+ for (int i = 0, ncellsused = 0; ncellsused < ncellvars; i++) {
+ int oldindex = sorted[i] - 1;
+ if (oldindex == -1) {
+ continue;
+ }
+ cfg_instr make_cell = {
+ .i_opcode = MAKE_CELL,
+ // This will get fixed in offset_derefs().
+ .i_oparg = oldindex,
+ .i_loc = NO_LOCATION,
+ .i_target = NULL,
+ };
+ if (_PyBasicblock_InsertInstruction(entryblock, ncellsused, &make_cell) < 0) {
+ PyMem_RawFree(sorted);
+ return ERROR;
+ }
+ ncellsused += 1;
+ }
+ PyMem_RawFree(sorted);
+ }
+
+ if (nfreevars) {
+ cfg_instr copy_frees = {
+ .i_opcode = COPY_FREE_VARS,
+ .i_oparg = nfreevars,
+ .i_loc = NO_LOCATION,
+ .i_target = NULL,
+ };
+ RETURN_IF_ERROR(_PyBasicblock_InsertInstruction(entryblock, 0, &copy_frees));
+ }
+
+ return SUCCESS;
+}
+
+static int
+fix_cell_offsets(_PyCompile_CodeUnitMetadata *umd, basicblock *entryblock, int *fixedmap)
+{
+ int nlocals = (int)PyDict_GET_SIZE(umd->u_varnames);
+ int ncellvars = (int)PyDict_GET_SIZE(umd->u_cellvars);
+ int nfreevars = (int)PyDict_GET_SIZE(umd->u_freevars);
+ int noffsets = ncellvars + nfreevars;
+
+ // First deal with duplicates (arg cells).
+ int numdropped = 0;
+ for (int i = 0; i < noffsets ; i++) {
+ if (fixedmap[i] == i + nlocals) {
+ fixedmap[i] -= numdropped;
+ }
+ else {
+ // It was a duplicate (cell/arg).
+ numdropped += 1;
+ }
+ }
+
+ // Then update offsets, either relative to locals or by cell2arg.
+ for (basicblock *b = entryblock; b != NULL; b = b->b_next) {
+ for (int i = 0; i < b->b_iused; i++) {
+ cfg_instr *inst = &b->b_instr[i];
+ // This is called before extended args are generated.
+ assert(inst->i_opcode != EXTENDED_ARG);
+ int oldoffset = inst->i_oparg;
+ switch(inst->i_opcode) {
+ case MAKE_CELL:
+ case LOAD_CLOSURE:
+ case LOAD_DEREF:
+ case STORE_DEREF:
+ case DELETE_DEREF:
+ case LOAD_FROM_DICT_OR_DEREF:
+ assert(oldoffset >= 0);
+ assert(oldoffset < noffsets);
+ assert(fixedmap[oldoffset] >= 0);
+ inst->i_oparg = fixedmap[oldoffset];
+ }
+ }
+ }
+
+ return numdropped;
+}
+
+
+static int
+prepare_localsplus(_PyCompile_CodeUnitMetadata *umd, cfg_builder *g, int code_flags)
+{
+ assert(PyDict_GET_SIZE(umd->u_varnames) < INT_MAX);
+ assert(PyDict_GET_SIZE(umd->u_cellvars) < INT_MAX);
+ assert(PyDict_GET_SIZE(umd->u_freevars) < INT_MAX);
+ int nlocals = (int)PyDict_GET_SIZE(umd->u_varnames);
+ int ncellvars = (int)PyDict_GET_SIZE(umd->u_cellvars);
+ int nfreevars = (int)PyDict_GET_SIZE(umd->u_freevars);
+ assert(INT_MAX - nlocals - ncellvars > 0);
+ assert(INT_MAX - nlocals - ncellvars - nfreevars > 0);
+ int nlocalsplus = nlocals + ncellvars + nfreevars;
+ int* cellfixedoffsets = build_cellfixedoffsets(umd);
+ if (cellfixedoffsets == NULL) {
+ return ERROR;
+ }
+
+
+ // This must be called before fix_cell_offsets().
+ if (insert_prefix_instructions(umd, g->g_entryblock, cellfixedoffsets, nfreevars, code_flags)) {
+ PyMem_Free(cellfixedoffsets);
+ return ERROR;
+ }
+
+ int numdropped = fix_cell_offsets(umd, g->g_entryblock, cellfixedoffsets);
+ PyMem_Free(cellfixedoffsets); // At this point we're done with it.
+ cellfixedoffsets = NULL;
+ if (numdropped < 0) {
+ return ERROR;
+ }
+
+ nlocalsplus -= numdropped;
+ return nlocalsplus;
+}
+
+static int
+add_return_at_end(struct compiler *c, int addNone)
+{
+ /* Make sure every instruction stream that falls off the end returns None.
+ * This also ensures that no jump target offsets are out of bounds.
+ */
+ if (addNone) {
+ ADDOP_LOAD_CONST(c, NO_LOCATION, Py_None);
+ }
+ ADDOP(c, NO_LOCATION, RETURN_VALUE);
+ return SUCCESS;
+}
+
+static int cfg_to_instr_sequence(cfg_builder *g, instr_sequence *seq);
+
+static PyCodeObject *
+optimize_and_assemble_code_unit(struct compiler_unit *u, PyObject *const_cache,
+ int code_flags, PyObject *filename)
+{
+ instr_sequence optimized_instrs;
+ memset(&optimized_instrs, 0, sizeof(instr_sequence));
+
+ PyCodeObject *co = NULL;
+ PyObject *consts = consts_dict_keys_inorder(u->u_metadata.u_consts);
+ if (consts == NULL) {
+ goto error;
+ }
+ cfg_builder g;
+ if (instr_sequence_to_cfg(&u->u_instr_sequence, &g) < 0) {
+ goto error;
+ }
+ int nparams = (int)PyList_GET_SIZE(u->u_ste->ste_varnames);
+ int nlocals = (int)PyDict_GET_SIZE(u->u_metadata.u_varnames);
+ assert(u->u_metadata.u_firstlineno);
+ if (_PyCfg_OptimizeCodeUnit(&g, consts, const_cache, code_flags, nlocals,
+ nparams, u->u_metadata.u_firstlineno) < 0) {
+ goto error;
+ }
+
+ /** Assembly **/
+ int nlocalsplus = prepare_localsplus(&u->u_metadata, &g, code_flags);
+ if (nlocalsplus < 0) {
+ goto error;
+ }
+
+ int maxdepth = _PyCfg_Stackdepth(g.g_entryblock, code_flags);
+ if (maxdepth < 0) {
+ goto error;
+ }
+
+ _PyCfg_ConvertPseudoOps(g.g_entryblock);
+
+ /* Order of basic blocks must have been determined by now */
+
+ if (_PyCfg_ResolveJumps(&g) < 0) {
+ goto error;
+ }
+
+ /* Can't modify the bytecode after computing jump offsets. */
+
+ if (cfg_to_instr_sequence(&g, &optimized_instrs) < 0) {
+ goto error;
+ }
+
+ co = _PyAssemble_MakeCodeObject(&u->u_metadata, const_cache, consts,
+ maxdepth, &optimized_instrs, nlocalsplus,
+ code_flags, filename);
+
+error:
+ Py_XDECREF(consts);
+ instr_sequence_fini(&optimized_instrs);
+ _PyCfgBuilder_Fini(&g);
+ return co;
+}
+
+static PyCodeObject *
+optimize_and_assemble(struct compiler *c, int addNone)
+{
+ struct compiler_unit *u = c->u;
+ PyObject *const_cache = c->c_const_cache;
+ PyObject *filename = c->c_filename;
+
+ int code_flags = compute_code_flags(c);
+ if (code_flags < 0) {
+ return NULL;
+ }
+
+ if (add_return_at_end(c, addNone) < 0) {
+ return NULL;
+ }
+
+ return optimize_and_assemble_code_unit(u, const_cache, code_flags, filename);
+}
+
+static int
+cfg_to_instr_sequence(cfg_builder *g, instr_sequence *seq)
+{
+ int lbl = 0;
+ for (basicblock *b = g->g_entryblock; b != NULL; b = b->b_next) {
+ b->b_label = (jump_target_label){lbl};
+ lbl += b->b_iused;
+ }
+ for (basicblock *b = g->g_entryblock; b != NULL; b = b->b_next) {
+ RETURN_IF_ERROR(instr_sequence_use_label(seq, b->b_label.id));
+ for (int i = 0; i < b->b_iused; i++) {
+ cfg_instr *instr = &b->b_instr[i];
+ RETURN_IF_ERROR(
+ instr_sequence_addop(seq, instr->i_opcode, instr->i_oparg, instr->i_loc));
+
+ _PyCompile_ExceptHandlerInfo *hi = &seq->s_instrs[seq->s_used-1].i_except_handler_info;
+ if (instr->i_except != NULL) {
+ hi->h_offset = instr->i_except->b_offset;
+ hi->h_startdepth = instr->i_except->b_startdepth;
+ hi->h_preserve_lasti = instr->i_except->b_preserve_lasti;
+ }
+ else {
+ hi->h_offset = -1;
+ }
+ }
+ }
+ return SUCCESS;
+}
+
+
+/* Access to compiler optimizations for unit tests.
+ *
+ * _PyCompile_CodeGen takes and AST, applies code-gen and
+ * returns the unoptimized CFG as an instruction list.
+ *
+ * _PyCompile_OptimizeCfg takes an instruction list, constructs
+ * a CFG, optimizes it and converts back to an instruction list.
+ *
+ * An instruction list is a PyList where each item is either
+ * a tuple describing a single instruction:
+ * (opcode, oparg, lineno, end_lineno, col, end_col), or
+ * a jump target label marking the beginning of a basic block.
+ */
+
+static int
+instructions_to_instr_sequence(PyObject *instructions, instr_sequence *seq)
+{
+ assert(PyList_Check(instructions));
+
+ Py_ssize_t num_insts = PyList_GET_SIZE(instructions);
+ bool *is_target = PyMem_Calloc(num_insts, sizeof(bool));
+ if (is_target == NULL) {
+ return ERROR;
+ }
+ for (Py_ssize_t i = 0; i < num_insts; i++) {
+ PyObject *item = PyList_GET_ITEM(instructions, i);
+ if (!PyTuple_Check(item) || PyTuple_GET_SIZE(item) != 6) {
+ PyErr_SetString(PyExc_ValueError, "expected a 6-tuple");
+ goto error;
+ }
+ int opcode = PyLong_AsLong(PyTuple_GET_ITEM(item, 0));
+ if (PyErr_Occurred()) {
+ goto error;
+ }
+ if (HAS_TARGET(opcode)) {
+ int oparg = PyLong_AsLong(PyTuple_GET_ITEM(item, 1));
+ if (PyErr_Occurred()) {
+ goto error;
+ }
+ if (oparg < 0 || oparg >= num_insts) {
+ PyErr_SetString(PyExc_ValueError, "label out of range");
+ goto error;
+ }
+ is_target[oparg] = true;
+ }
+ }
+
+ for (int i = 0; i < num_insts; i++) {
+ if (is_target[i]) {
+ if (instr_sequence_use_label(seq, i) < 0) {
+ goto error;
+ }
+ }
+ PyObject *item = PyList_GET_ITEM(instructions, i);
+ if (!PyTuple_Check(item) || PyTuple_GET_SIZE(item) != 6) {
+ PyErr_SetString(PyExc_ValueError, "expected a 6-tuple");
+ goto error;
+ }
+ int opcode = PyLong_AsLong(PyTuple_GET_ITEM(item, 0));
+ if (PyErr_Occurred()) {
+ goto error;
+ }
+ int oparg;
+ if (HAS_ARG(opcode)) {
+ oparg = PyLong_AsLong(PyTuple_GET_ITEM(item, 1));
+ if (PyErr_Occurred()) {
+ goto error;
+ }
+ }
+ else {
+ oparg = 0;
+ }
+ location loc;
+ loc.lineno = PyLong_AsLong(PyTuple_GET_ITEM(item, 2));
+ if (PyErr_Occurred()) {
+ goto error;
+ }
+ loc.end_lineno = PyLong_AsLong(PyTuple_GET_ITEM(item, 3));
+ if (PyErr_Occurred()) {
+ goto error;
+ }
+ loc.col_offset = PyLong_AsLong(PyTuple_GET_ITEM(item, 4));
+ if (PyErr_Occurred()) {
+ goto error;
+ }
+ loc.end_col_offset = PyLong_AsLong(PyTuple_GET_ITEM(item, 5));
+ if (PyErr_Occurred()) {
+ goto error;
+ }
+ if (instr_sequence_addop(seq, opcode, oparg, loc) < 0) {
+ goto error;
+ }
+ }
+ PyMem_Free(is_target);
+ return SUCCESS;
+error:
+ PyMem_Free(is_target);
+ return ERROR;
+}
+
+static int
+instructions_to_cfg(PyObject *instructions, cfg_builder *g)
+{
+ instr_sequence seq;
+ memset(&seq, 0, sizeof(instr_sequence));
+
+ if (instructions_to_instr_sequence(instructions, &seq) < 0) {
+ goto error;
+ }
+ if (instr_sequence_to_cfg(&seq, g) < 0) {
+ goto error;
+ }
+ instr_sequence_fini(&seq);
+ return SUCCESS;
+error:
+ instr_sequence_fini(&seq);
+ return ERROR;
+}
+
+static PyObject *
+instr_sequence_to_instructions(instr_sequence *seq)
+{
+ PyObject *instructions = PyList_New(0);
+ if (instructions == NULL) {
+ return NULL;
+ }
+ for (int i = 0; i < seq->s_used; i++) {
+ instruction *instr = &seq->s_instrs[i];
+ location loc = instr->i_loc;
+ int arg = HAS_TARGET(instr->i_opcode) ?
+ seq->s_labelmap[instr->i_oparg] : instr->i_oparg;
+
+ PyObject *inst_tuple = Py_BuildValue(
+ "(iiiiii)", instr->i_opcode, arg,
+ loc.lineno, loc.end_lineno,
+ loc.col_offset, loc.end_col_offset);
+ if (inst_tuple == NULL) {
+ goto error;
+ }
+
+ int res = PyList_Append(instructions, inst_tuple);
+ Py_DECREF(inst_tuple);
+ if (res != 0) {
+ goto error;
+ }
+ }
+ return instructions;
+error:
+ Py_XDECREF(instructions);
+ return NULL;
+}
+
+static PyObject *
+cfg_to_instructions(cfg_builder *g)
+{
+ PyObject *instructions = PyList_New(0);
+ if (instructions == NULL) {
+ return NULL;
+ }
+ int lbl = 0;
+ for (basicblock *b = g->g_entryblock; b != NULL; b = b->b_next) {
+ b->b_label = (jump_target_label){lbl};
+ lbl += b->b_iused;
+ }
+ for (basicblock *b = g->g_entryblock; b != NULL; b = b->b_next) {
+ for (int i = 0; i < b->b_iused; i++) {
+ cfg_instr *instr = &b->b_instr[i];
+ location loc = instr->i_loc;
+ int arg = HAS_TARGET(instr->i_opcode) ?
+ instr->i_target->b_label.id : instr->i_oparg;
+
+ PyObject *inst_tuple = Py_BuildValue(
+ "(iiiiii)", instr->i_opcode, arg,
+ loc.lineno, loc.end_lineno,
+ loc.col_offset, loc.end_col_offset);
+ if (inst_tuple == NULL) {
+ goto error;
+ }
+
+ if (PyList_Append(instructions, inst_tuple) != 0) {
+ Py_DECREF(inst_tuple);
+ goto error;
+ }
+ Py_DECREF(inst_tuple);
+ }
+ }
+
+ return instructions;
+error:
+ Py_DECREF(instructions);
+ return NULL;
+}
+
+PyObject *
+_PyCompile_CodeGen(PyObject *ast, PyObject *filename, PyCompilerFlags *pflags,
+ int optimize, int compile_mode)
+{
+ PyObject *res = NULL;
+ PyObject *metadata = NULL;
+
+ if (!PyAST_Check(ast)) {
+ PyErr_SetString(PyExc_TypeError, "expected an AST");
+ return NULL;
+ }
+
+ PyArena *arena = _PyArena_New();
+ if (arena == NULL) {
+ return NULL;
+ }
+
+ mod_ty mod = PyAST_obj2mod(ast, arena, compile_mode);
+ if (mod == NULL || !_PyAST_Validate(mod)) {
+ _PyArena_Free(arena);
+ return NULL;
+ }
+
+ struct compiler *c = new_compiler(mod, filename, pflags, optimize, arena);
+ if (c == NULL) {
+ _PyArena_Free(arena);
+ return NULL;
+ }
+
+ if (compiler_codegen(c, mod) < 0) {
+ goto finally;
+ }
+
+ _PyCompile_CodeUnitMetadata *umd = &c->u->u_metadata;
+ metadata = PyDict_New();
+ if (metadata == NULL) {
+ goto finally;
+ }
+#define SET_MATADATA_ITEM(key, value) \
+ if (value != NULL) { \
+ if (PyDict_SetItemString(metadata, key, value) < 0) goto finally; \
+ }
+
+ SET_MATADATA_ITEM("name", umd->u_name);
+ SET_MATADATA_ITEM("qualname", umd->u_qualname);
+ SET_MATADATA_ITEM("consts", umd->u_consts);
+ SET_MATADATA_ITEM("names", umd->u_names);
+ SET_MATADATA_ITEM("varnames", umd->u_varnames);
+ SET_MATADATA_ITEM("cellvars", umd->u_cellvars);
+ SET_MATADATA_ITEM("freevars", umd->u_freevars);
+#undef SET_MATADATA_ITEM
+
+#define SET_MATADATA_INT(key, value) do { \
+ PyObject *v = PyLong_FromLong((long)value); \
+ if (v == NULL) goto finally; \
+ int res = PyDict_SetItemString(metadata, key, v); \
+ Py_XDECREF(v); \
+ if (res < 0) goto finally; \
+ } while (0);
+
+ SET_MATADATA_INT("argcount", umd->u_argcount);
+ SET_MATADATA_INT("posonlyargcount", umd->u_posonlyargcount);
+ SET_MATADATA_INT("kwonlyargcount", umd->u_kwonlyargcount);
+#undef SET_MATADATA_INT
+
+ int addNone = mod->kind != Expression_kind;
+ if (add_return_at_end(c, addNone) < 0) {
+ goto finally;
+ }
+
+ PyObject *insts = instr_sequence_to_instructions(INSTR_SEQUENCE(c));
+ if (insts == NULL) {
+ goto finally;
+ }
+ res = PyTuple_Pack(2, insts, metadata);
+ Py_DECREF(insts);
+
+finally:
+ Py_XDECREF(metadata);
+ compiler_exit_scope(c);
+ compiler_free(c);
+ _PyArena_Free(arena);
+ return res;
+}
+
+PyObject *
+_PyCompile_OptimizeCfg(PyObject *instructions, PyObject *consts, int nlocals)
+{
+ PyObject *res = NULL;
+ PyObject *const_cache = PyDict_New();
+ if (const_cache == NULL) {
+ return NULL;
+ }
+
+ cfg_builder g;
+ if (instructions_to_cfg(instructions, &g) < 0) {
+ goto error;
+ }
+ int code_flags = 0, nparams = 0, firstlineno = 1;
+ if (_PyCfg_OptimizeCodeUnit(&g, consts, const_cache, code_flags, nlocals,
+ nparams, firstlineno) < 0) {
+ goto error;
+ }
+ res = cfg_to_instructions(&g);
+error:
+ Py_DECREF(const_cache);
+ _PyCfgBuilder_Fini(&g);
+ return res;
+}
+
+int _PyCfg_JumpLabelsToTargets(basicblock *entryblock);
+
+PyCodeObject *
+_PyCompile_Assemble(_PyCompile_CodeUnitMetadata *umd, PyObject *filename,
+ PyObject *instructions)
+{
+ PyCodeObject *co = NULL;
+ instr_sequence optimized_instrs;
+ memset(&optimized_instrs, 0, sizeof(instr_sequence));
+
+ PyObject *const_cache = PyDict_New();
+ if (const_cache == NULL) {
+ return NULL;
+ }
+
+ cfg_builder g;
+ if (instructions_to_cfg(instructions, &g) < 0) {
+ goto error;
+ }
+
+ if (_PyCfg_JumpLabelsToTargets(g.g_entryblock) < 0) {
+ goto error;
+ }
+
+ int code_flags = 0;
+ int nlocalsplus = prepare_localsplus(umd, &g, code_flags);
+ if (nlocalsplus < 0) {
+ goto error;
+ }
+
+ int maxdepth = _PyCfg_Stackdepth(g.g_entryblock, code_flags);
+ if (maxdepth < 0) {
+ goto error;
+ }
+
+ _PyCfg_ConvertPseudoOps(g.g_entryblock);
+
+ /* Order of basic blocks must have been determined by now */
+
+ if (_PyCfg_ResolveJumps(&g) < 0) {
+ goto error;
+ }
+
+ /* Can't modify the bytecode after computing jump offsets. */
+
+ if (cfg_to_instr_sequence(&g, &optimized_instrs) < 0) {
+ goto error;
+ }
+
+ PyObject *consts = consts_dict_keys_inorder(umd->u_consts);
+ if (consts == NULL) {
+ goto error;
+ }
+ co = _PyAssemble_MakeCodeObject(umd, const_cache,
+ consts, maxdepth, &optimized_instrs,
+ nlocalsplus, code_flags, filename);
+ Py_DECREF(consts);
+
+error:
+ Py_DECREF(const_cache);
+ _PyCfgBuilder_Fini(&g);
+ instr_sequence_fini(&optimized_instrs);
+ return co;
+}
+
+
+/* Retained for API compatibility.
+ * Optimization is now done in _PyCfg_OptimizeCodeUnit */
+
+PyObject *
+PyCode_Optimize(PyObject *code, PyObject* Py_UNUSED(consts),
+ PyObject *Py_UNUSED(names), PyObject *Py_UNUSED(lnotab_obj))
+{
+ return Py_NewRef(code);
+}
diff --git a/contrib/tools/python3/Python/condvar.h b/contrib/tools/python3/Python/condvar.h
new file mode 100644
index 00000000000..4ddc5311cf8
--- /dev/null
+++ b/contrib/tools/python3/Python/condvar.h
@@ -0,0 +1,309 @@
+/*
+ * Portable condition variable support for windows and pthreads.
+ * Everything is inline, this header can be included where needed.
+ *
+ * APIs generally return 0 on success and non-zero on error,
+ * and the caller needs to use its platform's error mechanism to
+ * discover the error (errno, or GetLastError())
+ *
+ * Note that some implementations cannot distinguish between a
+ * condition variable wait time-out and successful wait. Most often
+ * the difference is moot anyway since the wait condition must be
+ * re-checked.
+ * PyCOND_TIMEDWAIT, in addition to returning negative on error,
+ * thus returns 0 on regular success, 1 on timeout
+ * or 2 if it can't tell.
+ *
+ * There are at least two caveats with using these condition variables,
+ * due to the fact that they may be emulated with Semaphores on
+ * Windows:
+ * 1) While PyCOND_SIGNAL() will wake up at least one thread, we
+ * cannot currently guarantee that it will be one of the threads
+ * already waiting in a PyCOND_WAIT() call. It _could_ cause
+ * the wakeup of a subsequent thread to try a PyCOND_WAIT(),
+ * including the thread doing the PyCOND_SIGNAL() itself.
+ * The same applies to PyCOND_BROADCAST(), if N threads are waiting
+ * then at least N threads will be woken up, but not necessarily
+ * those already waiting.
+ * For this reason, don't make the scheduling assumption that a
+ * specific other thread will get the wakeup signal
+ * 2) The _mutex_ must be held when calling PyCOND_SIGNAL() and
+ * PyCOND_BROADCAST().
+ * While e.g. the posix standard strongly recommends that the mutex
+ * associated with the condition variable is held when a
+ * pthread_cond_signal() call is made, this is not a hard requirement,
+ * although scheduling will not be "reliable" if it isn't. Here
+ * the mutex is used for internal synchronization of the emulated
+ * Condition Variable.
+ */
+
+#ifndef _CONDVAR_IMPL_H_
+#define _CONDVAR_IMPL_H_
+
+#include "Python.h"
+#include "pycore_condvar.h"
+
+#ifdef _POSIX_THREADS
+/*
+ * POSIX support
+ */
+
+/* These private functions are implemented in Python/thread_pthread.h */
+int _PyThread_cond_init(PyCOND_T *cond);
+void _PyThread_cond_after(long long us, struct timespec *abs);
+
+/* The following functions return 0 on success, nonzero on error */
+#define PyMUTEX_INIT(mut) pthread_mutex_init((mut), NULL)
+#define PyMUTEX_FINI(mut) pthread_mutex_destroy(mut)
+#define PyMUTEX_LOCK(mut) pthread_mutex_lock(mut)
+#define PyMUTEX_UNLOCK(mut) pthread_mutex_unlock(mut)
+
+#define PyCOND_INIT(cond) _PyThread_cond_init(cond)
+#define PyCOND_FINI(cond) pthread_cond_destroy(cond)
+#define PyCOND_SIGNAL(cond) pthread_cond_signal(cond)
+#define PyCOND_BROADCAST(cond) pthread_cond_broadcast(cond)
+#define PyCOND_WAIT(cond, mut) pthread_cond_wait((cond), (mut))
+
+/* return 0 for success, 1 on timeout, -1 on error */
+Py_LOCAL_INLINE(int)
+PyCOND_TIMEDWAIT(PyCOND_T *cond, PyMUTEX_T *mut, long long us)
+{
+ struct timespec abs_timeout;
+ _PyThread_cond_after(us, &abs_timeout);
+ int ret = pthread_cond_timedwait(cond, mut, &abs_timeout);
+ if (ret == ETIMEDOUT) {
+ return 1;
+ }
+ if (ret) {
+ return -1;
+ }
+ return 0;
+}
+
+#elif defined(NT_THREADS)
+/*
+ * Windows (XP, 2003 server and later, as well as (hopefully) CE) support
+ *
+ * Emulated condition variables ones that work with XP and later, plus
+ * example native support on VISTA and onwards.
+ */
+
+#if _PY_EMULATED_WIN_CV
+
+/* The mutex is a CriticalSection object and
+ The condition variables is emulated with the help of a semaphore.
+
+ This implementation still has the problem that the threads woken
+ with a "signal" aren't necessarily those that are already
+ waiting. It corresponds to listing 2 in:
+ http://birrell.org/andrew/papers/ImplementingCVs.pdf
+
+ Generic emulations of the pthread_cond_* API using
+ earlier Win32 functions can be found on the web.
+ The following read can be give background information to these issues,
+ but the implementations are all broken in some way.
+ http://www.cse.wustl.edu/~schmidt/win32-cv-1.html
+*/
+
+Py_LOCAL_INLINE(int)
+PyMUTEX_INIT(PyMUTEX_T *cs)
+{
+ InitializeCriticalSection(cs);
+ return 0;
+}
+
+Py_LOCAL_INLINE(int)
+PyMUTEX_FINI(PyMUTEX_T *cs)
+{
+ DeleteCriticalSection(cs);
+ return 0;
+}
+
+Py_LOCAL_INLINE(int)
+PyMUTEX_LOCK(PyMUTEX_T *cs)
+{
+ EnterCriticalSection(cs);
+ return 0;
+}
+
+Py_LOCAL_INLINE(int)
+PyMUTEX_UNLOCK(PyMUTEX_T *cs)
+{
+ LeaveCriticalSection(cs);
+ return 0;
+}
+
+
+Py_LOCAL_INLINE(int)
+PyCOND_INIT(PyCOND_T *cv)
+{
+ /* A semaphore with a "large" max value, The positive value
+ * is only needed to catch those "lost wakeup" events and
+ * race conditions when a timed wait elapses.
+ */
+ cv->sem = CreateSemaphore(NULL, 0, 100000, NULL);
+ if (cv->sem==NULL)
+ return -1;
+ cv->waiting = 0;
+ return 0;
+}
+
+Py_LOCAL_INLINE(int)
+PyCOND_FINI(PyCOND_T *cv)
+{
+ return CloseHandle(cv->sem) ? 0 : -1;
+}
+
+/* this implementation can detect a timeout. Returns 1 on timeout,
+ * 0 otherwise (and -1 on error)
+ */
+Py_LOCAL_INLINE(int)
+_PyCOND_WAIT_MS(PyCOND_T *cv, PyMUTEX_T *cs, DWORD ms)
+{
+ DWORD wait;
+ cv->waiting++;
+ PyMUTEX_UNLOCK(cs);
+ /* "lost wakeup bug" would occur if the caller were interrupted here,
+ * but we are safe because we are using a semaphore which has an internal
+ * count.
+ */
+ wait = WaitForSingleObjectEx(cv->sem, ms, FALSE);
+ PyMUTEX_LOCK(cs);
+ if (wait != WAIT_OBJECT_0)
+ --cv->waiting;
+ /* Here we have a benign race condition with PyCOND_SIGNAL.
+ * When failure occurs or timeout, it is possible that
+ * PyCOND_SIGNAL also decrements this value
+ * and signals releases the mutex. This is benign because it
+ * just means an extra spurious wakeup for a waiting thread.
+ * ('waiting' corresponds to the semaphore's "negative" count and
+ * we may end up with e.g. (waiting == -1 && sem.count == 1). When
+ * a new thread comes along, it will pass right through, having
+ * adjusted it to (waiting == 0 && sem.count == 0).
+ */
+
+ if (wait == WAIT_FAILED)
+ return -1;
+ /* return 0 on success, 1 on timeout */
+ return wait != WAIT_OBJECT_0;
+}
+
+Py_LOCAL_INLINE(int)
+PyCOND_WAIT(PyCOND_T *cv, PyMUTEX_T *cs)
+{
+ int result = _PyCOND_WAIT_MS(cv, cs, INFINITE);
+ return result >= 0 ? 0 : result;
+}
+
+Py_LOCAL_INLINE(int)
+PyCOND_TIMEDWAIT(PyCOND_T *cv, PyMUTEX_T *cs, long long us)
+{
+ return _PyCOND_WAIT_MS(cv, cs, (DWORD)(us/1000));
+}
+
+Py_LOCAL_INLINE(int)
+PyCOND_SIGNAL(PyCOND_T *cv)
+{
+ /* this test allows PyCOND_SIGNAL to be a no-op unless required
+ * to wake someone up, thus preventing an unbounded increase of
+ * the semaphore's internal counter.
+ */
+ if (cv->waiting > 0) {
+ /* notifying thread decreases the cv->waiting count so that
+ * a delay between notify and actual wakeup of the target thread
+ * doesn't cause a number of extra ReleaseSemaphore calls.
+ */
+ cv->waiting--;
+ return ReleaseSemaphore(cv->sem, 1, NULL) ? 0 : -1;
+ }
+ return 0;
+}
+
+Py_LOCAL_INLINE(int)
+PyCOND_BROADCAST(PyCOND_T *cv)
+{
+ int waiting = cv->waiting;
+ if (waiting > 0) {
+ cv->waiting = 0;
+ return ReleaseSemaphore(cv->sem, waiting, NULL) ? 0 : -1;
+ }
+ return 0;
+}
+
+#else /* !_PY_EMULATED_WIN_CV */
+
+Py_LOCAL_INLINE(int)
+PyMUTEX_INIT(PyMUTEX_T *cs)
+{
+ InitializeSRWLock(cs);
+ return 0;
+}
+
+Py_LOCAL_INLINE(int)
+PyMUTEX_FINI(PyMUTEX_T *cs)
+{
+ return 0;
+}
+
+Py_LOCAL_INLINE(int)
+PyMUTEX_LOCK(PyMUTEX_T *cs)
+{
+ AcquireSRWLockExclusive(cs);
+ return 0;
+}
+
+Py_LOCAL_INLINE(int)
+PyMUTEX_UNLOCK(PyMUTEX_T *cs)
+{
+ ReleaseSRWLockExclusive(cs);
+ return 0;
+}
+
+
+Py_LOCAL_INLINE(int)
+PyCOND_INIT(PyCOND_T *cv)
+{
+ InitializeConditionVariable(cv);
+ return 0;
+}
+Py_LOCAL_INLINE(int)
+PyCOND_FINI(PyCOND_T *cv)
+{
+ return 0;
+}
+
+Py_LOCAL_INLINE(int)
+PyCOND_WAIT(PyCOND_T *cv, PyMUTEX_T *cs)
+{
+ return SleepConditionVariableSRW(cv, cs, INFINITE, 0) ? 0 : -1;
+}
+
+/* This implementation makes no distinction about timeouts. Signal
+ * 2 to indicate that we don't know.
+ */
+Py_LOCAL_INLINE(int)
+PyCOND_TIMEDWAIT(PyCOND_T *cv, PyMUTEX_T *cs, long long us)
+{
+ return SleepConditionVariableSRW(cv, cs, (DWORD)(us/1000), 0) ? 2 : -1;
+}
+
+Py_LOCAL_INLINE(int)
+PyCOND_SIGNAL(PyCOND_T *cv)
+{
+ WakeConditionVariable(cv);
+ return 0;
+}
+
+Py_LOCAL_INLINE(int)
+PyCOND_BROADCAST(PyCOND_T *cv)
+{
+ WakeAllConditionVariable(cv);
+ return 0;
+}
+
+
+#endif /* _PY_EMULATED_WIN_CV */
+
+#endif /* _POSIX_THREADS, NT_THREADS */
+
+#endif /* _CONDVAR_IMPL_H_ */
diff --git a/contrib/tools/python3/Python/context.c b/contrib/tools/python3/Python/context.c
new file mode 100644
index 00000000000..1ffae9871be
--- /dev/null
+++ b/contrib/tools/python3/Python/context.c
@@ -0,0 +1,1320 @@
+#include "Python.h"
+#include "pycore_call.h" // _PyObject_VectorcallTstate()
+#include "pycore_context.h"
+#include "pycore_gc.h" // _PyObject_GC_MAY_BE_TRACKED()
+#include "pycore_hamt.h"
+#include "pycore_initconfig.h" // _PyStatus_OK()
+#include "pycore_object.h"
+#include "pycore_pyerrors.h"
+#include "pycore_pystate.h" // _PyThreadState_GET()
+#include "structmember.h" // PyMemberDef
+
+
+#include "clinic/context.c.h"
+/*[clinic input]
+module _contextvars
+[clinic start generated code]*/
+/*[clinic end generated code: output=da39a3ee5e6b4b0d input=a0955718c8b8cea6]*/
+
+
+#define ENSURE_Context(o, err_ret) \
+ if (!PyContext_CheckExact(o)) { \
+ PyErr_SetString(PyExc_TypeError, \
+ "an instance of Context was expected"); \
+ return err_ret; \
+ }
+
+#define ENSURE_ContextVar(o, err_ret) \
+ if (!PyContextVar_CheckExact(o)) { \
+ PyErr_SetString(PyExc_TypeError, \
+ "an instance of ContextVar was expected"); \
+ return err_ret; \
+ }
+
+#define ENSURE_ContextToken(o, err_ret) \
+ if (!PyContextToken_CheckExact(o)) { \
+ PyErr_SetString(PyExc_TypeError, \
+ "an instance of Token was expected"); \
+ return err_ret; \
+ }
+
+
+/////////////////////////// Context API
+
+
+static PyContext *
+context_new_empty(void);
+
+static PyContext *
+context_new_from_vars(PyHamtObject *vars);
+
+static inline PyContext *
+context_get(void);
+
+static PyContextToken *
+token_new(PyContext *ctx, PyContextVar *var, PyObject *val);
+
+static PyContextVar *
+contextvar_new(PyObject *name, PyObject *def);
+
+static int
+contextvar_set(PyContextVar *var, PyObject *val);
+
+static int
+contextvar_del(PyContextVar *var);
+
+
+#if PyContext_MAXFREELIST > 0
+static struct _Py_context_state *
+get_context_state(void)
+{
+ PyInterpreterState *interp = _PyInterpreterState_GET();
+ return &interp->context;
+}
+#endif
+
+
+PyObject *
+_PyContext_NewHamtForTests(void)
+{
+ return (PyObject *)_PyHamt_New();
+}
+
+
+PyObject *
+PyContext_New(void)
+{
+ return (PyObject *)context_new_empty();
+}
+
+
+PyObject *
+PyContext_Copy(PyObject * octx)
+{
+ ENSURE_Context(octx, NULL)
+ PyContext *ctx = (PyContext *)octx;
+ return (PyObject *)context_new_from_vars(ctx->ctx_vars);
+}
+
+
+PyObject *
+PyContext_CopyCurrent(void)
+{
+ PyContext *ctx = context_get();
+ if (ctx == NULL) {
+ return NULL;
+ }
+
+ return (PyObject *)context_new_from_vars(ctx->ctx_vars);
+}
+
+
+static int
+_PyContext_Enter(PyThreadState *ts, PyObject *octx)
+{
+ ENSURE_Context(octx, -1)
+ PyContext *ctx = (PyContext *)octx;
+
+ if (ctx->ctx_entered) {
+ _PyErr_Format(ts, PyExc_RuntimeError,
+ "cannot enter context: %R is already entered", ctx);
+ return -1;
+ }
+
+ ctx->ctx_prev = (PyContext *)ts->context; /* borrow */
+ ctx->ctx_entered = 1;
+
+ ts->context = Py_NewRef(ctx);
+ ts->context_ver++;
+
+ return 0;
+}
+
+
+int
+PyContext_Enter(PyObject *octx)
+{
+ PyThreadState *ts = _PyThreadState_GET();
+ assert(ts != NULL);
+ return _PyContext_Enter(ts, octx);
+}
+
+
+static int
+_PyContext_Exit(PyThreadState *ts, PyObject *octx)
+{
+ ENSURE_Context(octx, -1)
+ PyContext *ctx = (PyContext *)octx;
+
+ if (!ctx->ctx_entered) {
+ PyErr_Format(PyExc_RuntimeError,
+ "cannot exit context: %R has not been entered", ctx);
+ return -1;
+ }
+
+ if (ts->context != (PyObject *)ctx) {
+ /* Can only happen if someone misuses the C API */
+ PyErr_SetString(PyExc_RuntimeError,
+ "cannot exit context: thread state references "
+ "a different context object");
+ return -1;
+ }
+
+ Py_SETREF(ts->context, (PyObject *)ctx->ctx_prev);
+ ts->context_ver++;
+
+ ctx->ctx_prev = NULL;
+ ctx->ctx_entered = 0;
+
+ return 0;
+}
+
+int
+PyContext_Exit(PyObject *octx)
+{
+ PyThreadState *ts = _PyThreadState_GET();
+ assert(ts != NULL);
+ return _PyContext_Exit(ts, octx);
+}
+
+
+PyObject *
+PyContextVar_New(const char *name, PyObject *def)
+{
+ PyObject *pyname = PyUnicode_FromString(name);
+ if (pyname == NULL) {
+ return NULL;
+ }
+ PyContextVar *var = contextvar_new(pyname, def);
+ Py_DECREF(pyname);
+ return (PyObject *)var;
+}
+
+
+int
+PyContextVar_Get(PyObject *ovar, PyObject *def, PyObject **val)
+{
+ ENSURE_ContextVar(ovar, -1)
+ PyContextVar *var = (PyContextVar *)ovar;
+
+ PyThreadState *ts = _PyThreadState_GET();
+ assert(ts != NULL);
+ if (ts->context == NULL) {
+ goto not_found;
+ }
+
+ if (var->var_cached != NULL &&
+ var->var_cached_tsid == ts->id &&
+ var->var_cached_tsver == ts->context_ver)
+ {
+ *val = var->var_cached;
+ goto found;
+ }
+
+ assert(PyContext_CheckExact(ts->context));
+ PyHamtObject *vars = ((PyContext *)ts->context)->ctx_vars;
+
+ PyObject *found = NULL;
+ int res = _PyHamt_Find(vars, (PyObject*)var, &found);
+ if (res < 0) {
+ goto error;
+ }
+ if (res == 1) {
+ assert(found != NULL);
+ var->var_cached = found; /* borrow */
+ var->var_cached_tsid = ts->id;
+ var->var_cached_tsver = ts->context_ver;
+
+ *val = found;
+ goto found;
+ }
+
+not_found:
+ if (def == NULL) {
+ if (var->var_default != NULL) {
+ *val = var->var_default;
+ goto found;
+ }
+
+ *val = NULL;
+ goto found;
+ }
+ else {
+ *val = def;
+ goto found;
+ }
+
+found:
+ Py_XINCREF(*val);
+ return 0;
+
+error:
+ *val = NULL;
+ return -1;
+}
+
+
+PyObject *
+PyContextVar_Set(PyObject *ovar, PyObject *val)
+{
+ ENSURE_ContextVar(ovar, NULL)
+ PyContextVar *var = (PyContextVar *)ovar;
+
+ if (!PyContextVar_CheckExact(var)) {
+ PyErr_SetString(
+ PyExc_TypeError, "an instance of ContextVar was expected");
+ return NULL;
+ }
+
+ PyContext *ctx = context_get();
+ if (ctx == NULL) {
+ return NULL;
+ }
+
+ PyObject *old_val = NULL;
+ int found = _PyHamt_Find(ctx->ctx_vars, (PyObject *)var, &old_val);
+ if (found < 0) {
+ return NULL;
+ }
+
+ Py_XINCREF(old_val);
+ PyContextToken *tok = token_new(ctx, var, old_val);
+ Py_XDECREF(old_val);
+
+ if (contextvar_set(var, val)) {
+ Py_DECREF(tok);
+ return NULL;
+ }
+
+ return (PyObject *)tok;
+}
+
+
+int
+PyContextVar_Reset(PyObject *ovar, PyObject *otok)
+{
+ ENSURE_ContextVar(ovar, -1)
+ ENSURE_ContextToken(otok, -1)
+ PyContextVar *var = (PyContextVar *)ovar;
+ PyContextToken *tok = (PyContextToken *)otok;
+
+ if (tok->tok_used) {
+ PyErr_Format(PyExc_RuntimeError,
+ "%R has already been used once", tok);
+ return -1;
+ }
+
+ if (var != tok->tok_var) {
+ PyErr_Format(PyExc_ValueError,
+ "%R was created by a different ContextVar", tok);
+ return -1;
+ }
+
+ PyContext *ctx = context_get();
+ if (ctx != tok->tok_ctx) {
+ PyErr_Format(PyExc_ValueError,
+ "%R was created in a different Context", tok);
+ return -1;
+ }
+
+ tok->tok_used = 1;
+
+ if (tok->tok_oldval == NULL) {
+ return contextvar_del(var);
+ }
+ else {
+ return contextvar_set(var, tok->tok_oldval);
+ }
+}
+
+
+/////////////////////////// PyContext
+
+/*[clinic input]
+class _contextvars.Context "PyContext *" "&PyContext_Type"
+[clinic start generated code]*/
+/*[clinic end generated code: output=da39a3ee5e6b4b0d input=bdf87f8e0cb580e8]*/
+
+
+static inline PyContext *
+_context_alloc(void)
+{
+ PyContext *ctx;
+#if PyContext_MAXFREELIST > 0
+ struct _Py_context_state *state = get_context_state();
+#ifdef Py_DEBUG
+ // _context_alloc() must not be called after _PyContext_Fini()
+ assert(state->numfree != -1);
+#endif
+ if (state->numfree) {
+ state->numfree--;
+ ctx = state->freelist;
+ state->freelist = (PyContext *)ctx->ctx_weakreflist;
+ OBJECT_STAT_INC(from_freelist);
+ ctx->ctx_weakreflist = NULL;
+ _Py_NewReference((PyObject *)ctx);
+ }
+ else
+#endif
+ {
+ ctx = PyObject_GC_New(PyContext, &PyContext_Type);
+ if (ctx == NULL) {
+ return NULL;
+ }
+ }
+
+ ctx->ctx_vars = NULL;
+ ctx->ctx_prev = NULL;
+ ctx->ctx_entered = 0;
+ ctx->ctx_weakreflist = NULL;
+
+ return ctx;
+}
+
+
+static PyContext *
+context_new_empty(void)
+{
+ PyContext *ctx = _context_alloc();
+ if (ctx == NULL) {
+ return NULL;
+ }
+
+ ctx->ctx_vars = _PyHamt_New();
+ if (ctx->ctx_vars == NULL) {
+ Py_DECREF(ctx);
+ return NULL;
+ }
+
+ _PyObject_GC_TRACK(ctx);
+ return ctx;
+}
+
+
+static PyContext *
+context_new_from_vars(PyHamtObject *vars)
+{
+ PyContext *ctx = _context_alloc();
+ if (ctx == NULL) {
+ return NULL;
+ }
+
+ ctx->ctx_vars = (PyHamtObject*)Py_NewRef(vars);
+
+ _PyObject_GC_TRACK(ctx);
+ return ctx;
+}
+
+
+static inline PyContext *
+context_get(void)
+{
+ PyThreadState *ts = _PyThreadState_GET();
+ assert(ts != NULL);
+ PyContext *current_ctx = (PyContext *)ts->context;
+ if (current_ctx == NULL) {
+ current_ctx = context_new_empty();
+ if (current_ctx == NULL) {
+ return NULL;
+ }
+ ts->context = (PyObject *)current_ctx;
+ }
+ return current_ctx;
+}
+
+static int
+context_check_key_type(PyObject *key)
+{
+ if (!PyContextVar_CheckExact(key)) {
+ // abort();
+ PyErr_Format(PyExc_TypeError,
+ "a ContextVar key was expected, got %R", key);
+ return -1;
+ }
+ return 0;
+}
+
+static PyObject *
+context_tp_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
+{
+ if (PyTuple_Size(args) || (kwds != NULL && PyDict_Size(kwds))) {
+ PyErr_SetString(
+ PyExc_TypeError, "Context() does not accept any arguments");
+ return NULL;
+ }
+ return PyContext_New();
+}
+
+static int
+context_tp_clear(PyContext *self)
+{
+ Py_CLEAR(self->ctx_prev);
+ Py_CLEAR(self->ctx_vars);
+ return 0;
+}
+
+static int
+context_tp_traverse(PyContext *self, visitproc visit, void *arg)
+{
+ Py_VISIT(self->ctx_prev);
+ Py_VISIT(self->ctx_vars);
+ return 0;
+}
+
+static void
+context_tp_dealloc(PyContext *self)
+{
+ _PyObject_GC_UNTRACK(self);
+
+ if (self->ctx_weakreflist != NULL) {
+ PyObject_ClearWeakRefs((PyObject*)self);
+ }
+ (void)context_tp_clear(self);
+
+#if PyContext_MAXFREELIST > 0
+ struct _Py_context_state *state = get_context_state();
+#ifdef Py_DEBUG
+ // _context_alloc() must not be called after _PyContext_Fini()
+ assert(state->numfree != -1);
+#endif
+ if (state->numfree < PyContext_MAXFREELIST) {
+ state->numfree++;
+ self->ctx_weakreflist = (PyObject *)state->freelist;
+ state->freelist = self;
+ OBJECT_STAT_INC(to_freelist);
+ }
+ else
+#endif
+ {
+ Py_TYPE(self)->tp_free(self);
+ }
+}
+
+static PyObject *
+context_tp_iter(PyContext *self)
+{
+ return _PyHamt_NewIterKeys(self->ctx_vars);
+}
+
+static PyObject *
+context_tp_richcompare(PyObject *v, PyObject *w, int op)
+{
+ if (!PyContext_CheckExact(v) || !PyContext_CheckExact(w) ||
+ (op != Py_EQ && op != Py_NE))
+ {
+ Py_RETURN_NOTIMPLEMENTED;
+ }
+
+ int res = _PyHamt_Eq(
+ ((PyContext *)v)->ctx_vars, ((PyContext *)w)->ctx_vars);
+ if (res < 0) {
+ return NULL;
+ }
+
+ if (op == Py_NE) {
+ res = !res;
+ }
+
+ if (res) {
+ Py_RETURN_TRUE;
+ }
+ else {
+ Py_RETURN_FALSE;
+ }
+}
+
+static Py_ssize_t
+context_tp_len(PyContext *self)
+{
+ return _PyHamt_Len(self->ctx_vars);
+}
+
+static PyObject *
+context_tp_subscript(PyContext *self, PyObject *key)
+{
+ if (context_check_key_type(key)) {
+ return NULL;
+ }
+ PyObject *val = NULL;
+ int found = _PyHamt_Find(self->ctx_vars, key, &val);
+ if (found < 0) {
+ return NULL;
+ }
+ if (found == 0) {
+ PyErr_SetObject(PyExc_KeyError, key);
+ return NULL;
+ }
+ return Py_NewRef(val);
+}
+
+static int
+context_tp_contains(PyContext *self, PyObject *key)
+{
+ if (context_check_key_type(key)) {
+ return -1;
+ }
+ PyObject *val = NULL;
+ return _PyHamt_Find(self->ctx_vars, key, &val);
+}
+
+
+/*[clinic input]
+_contextvars.Context.get
+ key: object
+ default: object = None
+ /
+
+Return the value for `key` if `key` has the value in the context object.
+
+If `key` does not exist, return `default`. If `default` is not given,
+return None.
+[clinic start generated code]*/
+
+static PyObject *
+_contextvars_Context_get_impl(PyContext *self, PyObject *key,
+ PyObject *default_value)
+/*[clinic end generated code: output=0c54aa7664268189 input=c8eeb81505023995]*/
+{
+ if (context_check_key_type(key)) {
+ return NULL;
+ }
+
+ PyObject *val = NULL;
+ int found = _PyHamt_Find(self->ctx_vars, key, &val);
+ if (found < 0) {
+ return NULL;
+ }
+ if (found == 0) {
+ return Py_NewRef(default_value);
+ }
+ return Py_NewRef(val);
+}
+
+
+/*[clinic input]
+_contextvars.Context.items
+
+Return all variables and their values in the context object.
+
+The result is returned as a list of 2-tuples (variable, value).
+[clinic start generated code]*/
+
+static PyObject *
+_contextvars_Context_items_impl(PyContext *self)
+/*[clinic end generated code: output=fa1655c8a08502af input=00db64ae379f9f42]*/
+{
+ return _PyHamt_NewIterItems(self->ctx_vars);
+}
+
+
+/*[clinic input]
+_contextvars.Context.keys
+
+Return a list of all variables in the context object.
+[clinic start generated code]*/
+
+static PyObject *
+_contextvars_Context_keys_impl(PyContext *self)
+/*[clinic end generated code: output=177227c6b63ec0e2 input=114b53aebca3449c]*/
+{
+ return _PyHamt_NewIterKeys(self->ctx_vars);
+}
+
+
+/*[clinic input]
+_contextvars.Context.values
+
+Return a list of all variables' values in the context object.
+[clinic start generated code]*/
+
+static PyObject *
+_contextvars_Context_values_impl(PyContext *self)
+/*[clinic end generated code: output=d286dabfc8db6dde input=ce8075d04a6ea526]*/
+{
+ return _PyHamt_NewIterValues(self->ctx_vars);
+}
+
+
+/*[clinic input]
+_contextvars.Context.copy
+
+Return a shallow copy of the context object.
+[clinic start generated code]*/
+
+static PyObject *
+_contextvars_Context_copy_impl(PyContext *self)
+/*[clinic end generated code: output=30ba8896c4707a15 input=ebafdbdd9c72d592]*/
+{
+ return (PyObject *)context_new_from_vars(self->ctx_vars);
+}
+
+
+static PyObject *
+context_run(PyContext *self, PyObject *const *args,
+ Py_ssize_t nargs, PyObject *kwnames)
+{
+ PyThreadState *ts = _PyThreadState_GET();
+
+ if (nargs < 1) {
+ _PyErr_SetString(ts, PyExc_TypeError,
+ "run() missing 1 required positional argument");
+ return NULL;
+ }
+
+ if (_PyContext_Enter(ts, (PyObject *)self)) {
+ return NULL;
+ }
+
+ PyObject *call_result = _PyObject_VectorcallTstate(
+ ts, args[0], args + 1, nargs - 1, kwnames);
+
+ if (_PyContext_Exit(ts, (PyObject *)self)) {
+ return NULL;
+ }
+
+ return call_result;
+}
+
+
+static PyMethodDef PyContext_methods[] = {
+ _CONTEXTVARS_CONTEXT_GET_METHODDEF
+ _CONTEXTVARS_CONTEXT_ITEMS_METHODDEF
+ _CONTEXTVARS_CONTEXT_KEYS_METHODDEF
+ _CONTEXTVARS_CONTEXT_VALUES_METHODDEF
+ _CONTEXTVARS_CONTEXT_COPY_METHODDEF
+ {"run", _PyCFunction_CAST(context_run), METH_FASTCALL | METH_KEYWORDS, NULL},
+ {NULL, NULL}
+};
+
+static PySequenceMethods PyContext_as_sequence = {
+ 0, /* sq_length */
+ 0, /* sq_concat */
+ 0, /* sq_repeat */
+ 0, /* sq_item */
+ 0, /* sq_slice */
+ 0, /* sq_ass_item */
+ 0, /* sq_ass_slice */
+ (objobjproc)context_tp_contains, /* sq_contains */
+ 0, /* sq_inplace_concat */
+ 0, /* sq_inplace_repeat */
+};
+
+static PyMappingMethods PyContext_as_mapping = {
+ (lenfunc)context_tp_len, /* mp_length */
+ (binaryfunc)context_tp_subscript, /* mp_subscript */
+};
+
+PyTypeObject PyContext_Type = {
+ PyVarObject_HEAD_INIT(&PyType_Type, 0)
+ "_contextvars.Context",
+ sizeof(PyContext),
+ .tp_methods = PyContext_methods,
+ .tp_as_mapping = &PyContext_as_mapping,
+ .tp_as_sequence = &PyContext_as_sequence,
+ .tp_iter = (getiterfunc)context_tp_iter,
+ .tp_dealloc = (destructor)context_tp_dealloc,
+ .tp_getattro = PyObject_GenericGetAttr,
+ .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC,
+ .tp_richcompare = context_tp_richcompare,
+ .tp_traverse = (traverseproc)context_tp_traverse,
+ .tp_clear = (inquiry)context_tp_clear,
+ .tp_new = context_tp_new,
+ .tp_weaklistoffset = offsetof(PyContext, ctx_weakreflist),
+ .tp_hash = PyObject_HashNotImplemented,
+};
+
+
+/////////////////////////// ContextVar
+
+
+static int
+contextvar_set(PyContextVar *var, PyObject *val)
+{
+ var->var_cached = NULL;
+ PyThreadState *ts = _PyThreadState_GET();
+
+ PyContext *ctx = context_get();
+ if (ctx == NULL) {
+ return -1;
+ }
+
+ PyHamtObject *new_vars = _PyHamt_Assoc(
+ ctx->ctx_vars, (PyObject *)var, val);
+ if (new_vars == NULL) {
+ return -1;
+ }
+
+ Py_SETREF(ctx->ctx_vars, new_vars);
+
+ var->var_cached = val; /* borrow */
+ var->var_cached_tsid = ts->id;
+ var->var_cached_tsver = ts->context_ver;
+ return 0;
+}
+
+static int
+contextvar_del(PyContextVar *var)
+{
+ var->var_cached = NULL;
+
+ PyContext *ctx = context_get();
+ if (ctx == NULL) {
+ return -1;
+ }
+
+ PyHamtObject *vars = ctx->ctx_vars;
+ PyHamtObject *new_vars = _PyHamt_Without(vars, (PyObject *)var);
+ if (new_vars == NULL) {
+ return -1;
+ }
+
+ if (vars == new_vars) {
+ Py_DECREF(new_vars);
+ PyErr_SetObject(PyExc_LookupError, (PyObject *)var);
+ return -1;
+ }
+
+ Py_SETREF(ctx->ctx_vars, new_vars);
+ return 0;
+}
+
+static Py_hash_t
+contextvar_generate_hash(void *addr, PyObject *name)
+{
+ /* Take hash of `name` and XOR it with the object's addr.
+
+ The structure of the tree is encoded in objects' hashes, which
+ means that sufficiently similar hashes would result in tall trees
+ with many Collision nodes. Which would, in turn, result in slower
+ get and set operations.
+
+ The XORing helps to ensure that:
+
+ (1) sequentially allocated ContextVar objects have
+ different hashes;
+
+ (2) context variables with equal names have
+ different hashes.
+ */
+
+ Py_hash_t name_hash = PyObject_Hash(name);
+ if (name_hash == -1) {
+ return -1;
+ }
+
+ Py_hash_t res = _Py_HashPointer(addr) ^ name_hash;
+ return res == -1 ? -2 : res;
+}
+
+static PyContextVar *
+contextvar_new(PyObject *name, PyObject *def)
+{
+ if (!PyUnicode_Check(name)) {
+ PyErr_SetString(PyExc_TypeError,
+ "context variable name must be a str");
+ return NULL;
+ }
+
+ PyContextVar *var = PyObject_GC_New(PyContextVar, &PyContextVar_Type);
+ if (var == NULL) {
+ return NULL;
+ }
+
+ var->var_hash = contextvar_generate_hash(var, name);
+ if (var->var_hash == -1) {
+ Py_DECREF(var);
+ return NULL;
+ }
+
+ var->var_name = Py_NewRef(name);
+
+ var->var_default = Py_XNewRef(def);
+
+ var->var_cached = NULL;
+ var->var_cached_tsid = 0;
+ var->var_cached_tsver = 0;
+
+ if (_PyObject_GC_MAY_BE_TRACKED(name) ||
+ (def != NULL && _PyObject_GC_MAY_BE_TRACKED(def)))
+ {
+ PyObject_GC_Track(var);
+ }
+ return var;
+}
+
+
+/*[clinic input]
+class _contextvars.ContextVar "PyContextVar *" "&PyContextVar_Type"
+[clinic start generated code]*/
+/*[clinic end generated code: output=da39a3ee5e6b4b0d input=445da935fa8883c3]*/
+
+
+static PyObject *
+contextvar_tp_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
+{
+ static char *kwlist[] = {"", "default", NULL};
+ PyObject *name;
+ PyObject *def = NULL;
+
+ if (!PyArg_ParseTupleAndKeywords(
+ args, kwds, "O|$O:ContextVar", kwlist, &name, &def))
+ {
+ return NULL;
+ }
+
+ return (PyObject *)contextvar_new(name, def);
+}
+
+static int
+contextvar_tp_clear(PyContextVar *self)
+{
+ Py_CLEAR(self->var_name);
+ Py_CLEAR(self->var_default);
+ self->var_cached = NULL;
+ self->var_cached_tsid = 0;
+ self->var_cached_tsver = 0;
+ return 0;
+}
+
+static int
+contextvar_tp_traverse(PyContextVar *self, visitproc visit, void *arg)
+{
+ Py_VISIT(self->var_name);
+ Py_VISIT(self->var_default);
+ return 0;
+}
+
+static void
+contextvar_tp_dealloc(PyContextVar *self)
+{
+ PyObject_GC_UnTrack(self);
+ (void)contextvar_tp_clear(self);
+ Py_TYPE(self)->tp_free(self);
+}
+
+static Py_hash_t
+contextvar_tp_hash(PyContextVar *self)
+{
+ return self->var_hash;
+}
+
+static PyObject *
+contextvar_tp_repr(PyContextVar *self)
+{
+ _PyUnicodeWriter writer;
+
+ _PyUnicodeWriter_Init(&writer);
+
+ if (_PyUnicodeWriter_WriteASCIIString(
+ &writer, "<ContextVar name=", 17) < 0)
+ {
+ goto error;
+ }
+
+ PyObject *name = PyObject_Repr(self->var_name);
+ if (name == NULL) {
+ goto error;
+ }
+ if (_PyUnicodeWriter_WriteStr(&writer, name) < 0) {
+ Py_DECREF(name);
+ goto error;
+ }
+ Py_DECREF(name);
+
+ if (self->var_default != NULL) {
+ if (_PyUnicodeWriter_WriteASCIIString(&writer, " default=", 9) < 0) {
+ goto error;
+ }
+
+ PyObject *def = PyObject_Repr(self->var_default);
+ if (def == NULL) {
+ goto error;
+ }
+ if (_PyUnicodeWriter_WriteStr(&writer, def) < 0) {
+ Py_DECREF(def);
+ goto error;
+ }
+ Py_DECREF(def);
+ }
+
+ PyObject *addr = PyUnicode_FromFormat(" at %p>", self);
+ if (addr == NULL) {
+ goto error;
+ }
+ if (_PyUnicodeWriter_WriteStr(&writer, addr) < 0) {
+ Py_DECREF(addr);
+ goto error;
+ }
+ Py_DECREF(addr);
+
+ return _PyUnicodeWriter_Finish(&writer);
+
+error:
+ _PyUnicodeWriter_Dealloc(&writer);
+ return NULL;
+}
+
+
+/*[clinic input]
+_contextvars.ContextVar.get
+ default: object = NULL
+ /
+
+Return a value for the context variable for the current context.
+
+If there is no value for the variable in the current context, the method will:
+ * return the value of the default argument of the method, if provided; or
+ * return the default value for the context variable, if it was created
+ with one; or
+ * raise a LookupError.
+[clinic start generated code]*/
+
+static PyObject *
+_contextvars_ContextVar_get_impl(PyContextVar *self, PyObject *default_value)
+/*[clinic end generated code: output=0746bd0aa2ced7bf input=30aa2ab9e433e401]*/
+{
+ if (!PyContextVar_CheckExact(self)) {
+ PyErr_SetString(
+ PyExc_TypeError, "an instance of ContextVar was expected");
+ return NULL;
+ }
+
+ PyObject *val;
+ if (PyContextVar_Get((PyObject *)self, default_value, &val) < 0) {
+ return NULL;
+ }
+
+ if (val == NULL) {
+ PyErr_SetObject(PyExc_LookupError, (PyObject *)self);
+ return NULL;
+ }
+
+ return val;
+}
+
+/*[clinic input]
+_contextvars.ContextVar.set
+ value: object
+ /
+
+Call to set a new value for the context variable in the current context.
+
+The required value argument is the new value for the context variable.
+
+Returns a Token object that can be used to restore the variable to its previous
+value via the `ContextVar.reset()` method.
+[clinic start generated code]*/
+
+static PyObject *
+_contextvars_ContextVar_set(PyContextVar *self, PyObject *value)
+/*[clinic end generated code: output=446ed5e820d6d60b input=c0a6887154227453]*/
+{
+ return PyContextVar_Set((PyObject *)self, value);
+}
+
+/*[clinic input]
+_contextvars.ContextVar.reset
+ token: object
+ /
+
+Reset the context variable.
+
+The variable is reset to the value it had before the `ContextVar.set()` that
+created the token was used.
+[clinic start generated code]*/
+
+static PyObject *
+_contextvars_ContextVar_reset(PyContextVar *self, PyObject *token)
+/*[clinic end generated code: output=d4ee34d0742d62ee input=ebe2881e5af4ffda]*/
+{
+ if (!PyContextToken_CheckExact(token)) {
+ PyErr_Format(PyExc_TypeError,
+ "expected an instance of Token, got %R", token);
+ return NULL;
+ }
+
+ if (PyContextVar_Reset((PyObject *)self, token)) {
+ return NULL;
+ }
+
+ Py_RETURN_NONE;
+}
+
+
+static PyMemberDef PyContextVar_members[] = {
+ {"name", T_OBJECT, offsetof(PyContextVar, var_name), READONLY},
+ {NULL}
+};
+
+static PyMethodDef PyContextVar_methods[] = {
+ _CONTEXTVARS_CONTEXTVAR_GET_METHODDEF
+ _CONTEXTVARS_CONTEXTVAR_SET_METHODDEF
+ _CONTEXTVARS_CONTEXTVAR_RESET_METHODDEF
+ {"__class_getitem__", Py_GenericAlias,
+ METH_O|METH_CLASS, PyDoc_STR("See PEP 585")},
+ {NULL, NULL}
+};
+
+PyTypeObject PyContextVar_Type = {
+ PyVarObject_HEAD_INIT(&PyType_Type, 0)
+ "_contextvars.ContextVar",
+ sizeof(PyContextVar),
+ .tp_methods = PyContextVar_methods,
+ .tp_members = PyContextVar_members,
+ .tp_dealloc = (destructor)contextvar_tp_dealloc,
+ .tp_getattro = PyObject_GenericGetAttr,
+ .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC,
+ .tp_traverse = (traverseproc)contextvar_tp_traverse,
+ .tp_clear = (inquiry)contextvar_tp_clear,
+ .tp_new = contextvar_tp_new,
+ .tp_free = PyObject_GC_Del,
+ .tp_hash = (hashfunc)contextvar_tp_hash,
+ .tp_repr = (reprfunc)contextvar_tp_repr,
+};
+
+
+/////////////////////////// Token
+
+static PyObject * get_token_missing(void);
+
+
+/*[clinic input]
+class _contextvars.Token "PyContextToken *" "&PyContextToken_Type"
+[clinic start generated code]*/
+/*[clinic end generated code: output=da39a3ee5e6b4b0d input=338a5e2db13d3f5b]*/
+
+
+static PyObject *
+token_tp_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
+{
+ PyErr_SetString(PyExc_RuntimeError,
+ "Tokens can only be created by ContextVars");
+ return NULL;
+}
+
+static int
+token_tp_clear(PyContextToken *self)
+{
+ Py_CLEAR(self->tok_ctx);
+ Py_CLEAR(self->tok_var);
+ Py_CLEAR(self->tok_oldval);
+ return 0;
+}
+
+static int
+token_tp_traverse(PyContextToken *self, visitproc visit, void *arg)
+{
+ Py_VISIT(self->tok_ctx);
+ Py_VISIT(self->tok_var);
+ Py_VISIT(self->tok_oldval);
+ return 0;
+}
+
+static void
+token_tp_dealloc(PyContextToken *self)
+{
+ PyObject_GC_UnTrack(self);
+ (void)token_tp_clear(self);
+ Py_TYPE(self)->tp_free(self);
+}
+
+static PyObject *
+token_tp_repr(PyContextToken *self)
+{
+ _PyUnicodeWriter writer;
+
+ _PyUnicodeWriter_Init(&writer);
+
+ if (_PyUnicodeWriter_WriteASCIIString(&writer, "<Token", 6) < 0) {
+ goto error;
+ }
+
+ if (self->tok_used) {
+ if (_PyUnicodeWriter_WriteASCIIString(&writer, " used", 5) < 0) {
+ goto error;
+ }
+ }
+
+ if (_PyUnicodeWriter_WriteASCIIString(&writer, " var=", 5) < 0) {
+ goto error;
+ }
+
+ PyObject *var = PyObject_Repr((PyObject *)self->tok_var);
+ if (var == NULL) {
+ goto error;
+ }
+ if (_PyUnicodeWriter_WriteStr(&writer, var) < 0) {
+ Py_DECREF(var);
+ goto error;
+ }
+ Py_DECREF(var);
+
+ PyObject *addr = PyUnicode_FromFormat(" at %p>", self);
+ if (addr == NULL) {
+ goto error;
+ }
+ if (_PyUnicodeWriter_WriteStr(&writer, addr) < 0) {
+ Py_DECREF(addr);
+ goto error;
+ }
+ Py_DECREF(addr);
+
+ return _PyUnicodeWriter_Finish(&writer);
+
+error:
+ _PyUnicodeWriter_Dealloc(&writer);
+ return NULL;
+}
+
+static PyObject *
+token_get_var(PyContextToken *self, void *Py_UNUSED(ignored))
+{
+ return Py_NewRef(self->tok_var);;
+}
+
+static PyObject *
+token_get_old_value(PyContextToken *self, void *Py_UNUSED(ignored))
+{
+ if (self->tok_oldval == NULL) {
+ return get_token_missing();
+ }
+
+ return Py_NewRef(self->tok_oldval);
+}
+
+static PyGetSetDef PyContextTokenType_getsetlist[] = {
+ {"var", (getter)token_get_var, NULL, NULL},
+ {"old_value", (getter)token_get_old_value, NULL, NULL},
+ {NULL}
+};
+
+static PyMethodDef PyContextTokenType_methods[] = {
+ {"__class_getitem__", Py_GenericAlias,
+ METH_O|METH_CLASS, PyDoc_STR("See PEP 585")},
+ {NULL}
+};
+
+PyTypeObject PyContextToken_Type = {
+ PyVarObject_HEAD_INIT(&PyType_Type, 0)
+ "_contextvars.Token",
+ sizeof(PyContextToken),
+ .tp_methods = PyContextTokenType_methods,
+ .tp_getset = PyContextTokenType_getsetlist,
+ .tp_dealloc = (destructor)token_tp_dealloc,
+ .tp_getattro = PyObject_GenericGetAttr,
+ .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC,
+ .tp_traverse = (traverseproc)token_tp_traverse,
+ .tp_clear = (inquiry)token_tp_clear,
+ .tp_new = token_tp_new,
+ .tp_free = PyObject_GC_Del,
+ .tp_hash = PyObject_HashNotImplemented,
+ .tp_repr = (reprfunc)token_tp_repr,
+};
+
+static PyContextToken *
+token_new(PyContext *ctx, PyContextVar *var, PyObject *val)
+{
+ PyContextToken *tok = PyObject_GC_New(PyContextToken, &PyContextToken_Type);
+ if (tok == NULL) {
+ return NULL;
+ }
+
+ tok->tok_ctx = (PyContext*)Py_NewRef(ctx);
+
+ tok->tok_var = (PyContextVar*)Py_NewRef(var);
+
+ tok->tok_oldval = Py_XNewRef(val);
+
+ tok->tok_used = 0;
+
+ PyObject_GC_Track(tok);
+ return tok;
+}
+
+
+/////////////////////////// Token.MISSING
+
+
+static PyObject *
+context_token_missing_tp_repr(PyObject *self)
+{
+ return PyUnicode_FromString("<Token.MISSING>");
+}
+
+static void
+context_token_missing_tp_dealloc(_PyContextTokenMissing *Py_UNUSED(self))
+{
+#ifdef Py_DEBUG
+ /* The singleton is statically allocated. */
+ _Py_FatalRefcountError("deallocating the token missing singleton");
+#else
+ return;
+#endif
+}
+
+
+PyTypeObject _PyContextTokenMissing_Type = {
+ PyVarObject_HEAD_INIT(&PyType_Type, 0)
+ "Token.MISSING",
+ sizeof(_PyContextTokenMissing),
+ .tp_dealloc = (destructor)context_token_missing_tp_dealloc,
+ .tp_getattro = PyObject_GenericGetAttr,
+ .tp_flags = Py_TPFLAGS_DEFAULT,
+ .tp_repr = context_token_missing_tp_repr,
+};
+
+
+static PyObject *
+get_token_missing(void)
+{
+ return Py_NewRef(&_Py_SINGLETON(context_token_missing));
+}
+
+
+///////////////////////////
+
+
+void
+_PyContext_ClearFreeList(PyInterpreterState *interp)
+{
+#if PyContext_MAXFREELIST > 0
+ struct _Py_context_state *state = &interp->context;
+ for (; state->numfree; state->numfree--) {
+ PyContext *ctx = state->freelist;
+ state->freelist = (PyContext *)ctx->ctx_weakreflist;
+ ctx->ctx_weakreflist = NULL;
+ PyObject_GC_Del(ctx);
+ }
+#endif
+}
+
+
+void
+_PyContext_Fini(PyInterpreterState *interp)
+{
+ _PyContext_ClearFreeList(interp);
+#if defined(Py_DEBUG) && PyContext_MAXFREELIST > 0
+ struct _Py_context_state *state = &interp->context;
+ state->numfree = -1;
+#endif
+}
+
+
+PyStatus
+_PyContext_Init(PyInterpreterState *interp)
+{
+ if (!_Py_IsMainInterpreter(interp)) {
+ return _PyStatus_OK();
+ }
+
+ PyObject *missing = get_token_missing();
+ if (PyDict_SetItemString(
+ _PyType_GetDict(&PyContextToken_Type), "MISSING", missing))
+ {
+ Py_DECREF(missing);
+ return _PyStatus_ERR("can't init context types");
+ }
+ Py_DECREF(missing);
+
+ return _PyStatus_OK();
+}
diff --git a/contrib/tools/python3/Python/deepfreeze/README.txt b/contrib/tools/python3/Python/deepfreeze/README.txt
new file mode 100644
index 00000000000..276ab51143a
--- /dev/null
+++ b/contrib/tools/python3/Python/deepfreeze/README.txt
@@ -0,0 +1,6 @@
+This directory contains the generated .c files for all the deep-frozen
+modules. Python/frozen.c depends on these files.
+
+None of these files are committed into the repo.
+
+See Tools/build/freeze_modules.py for more info.
diff --git a/contrib/tools/python3/Python/deepfreeze/deepfreeze.c b/contrib/tools/python3/Python/deepfreeze/deepfreeze.c
new file mode 100644
index 00000000000..d6ce3426b45
--- /dev/null
+++ b/contrib/tools/python3/Python/deepfreeze/deepfreeze.c
@@ -0,0 +1,146746 @@
+#include "Python.h"
+#include "internal/pycore_gc.h"
+#include "internal/pycore_code.h"
+#include "internal/pycore_frame.h"
+#include "internal/pycore_long.h"
+
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[340];
+ }
+importlib__bootstrap_toplevel_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 339,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x43\x6f\x72\x65\x20\x69\x6d\x70\x6c\x65\x6d\x65\x6e\x74\x61\x74\x69\x6f\x6e\x20\x6f\x66\x20\x69\x6d\x70\x6f\x72\x74\x2e\x0a\x0a\x54\x68\x69\x73\x20\x6d\x6f\x64\x75\x6c\x65\x20\x69\x73\x20\x4e\x4f\x54\x20\x6d\x65\x61\x6e\x74\x20\x74\x6f\x20\x62\x65\x20\x64\x69\x72\x65\x63\x74\x6c\x79\x20\x69\x6d\x70\x6f\x72\x74\x65\x64\x21\x20\x49\x74\x20\x68\x61\x73\x20\x62\x65\x65\x6e\x20\x64\x65\x73\x69\x67\x6e\x65\x64\x20\x73\x75\x63\x68\x0a\x74\x68\x61\x74\x20\x69\x74\x20\x63\x61\x6e\x20\x62\x65\x20\x62\x6f\x6f\x74\x73\x74\x72\x61\x70\x70\x65\x64\x20\x69\x6e\x74\x6f\x20\x50\x79\x74\x68\x6f\x6e\x20\x61\x73\x20\x74\x68\x65\x20\x69\x6d\x70\x6c\x65\x6d\x65\x6e\x74\x61\x74\x69\x6f\x6e\x20\x6f\x66\x20\x69\x6d\x70\x6f\x72\x74\x2e\x20\x41\x73\x0a\x73\x75\x63\x68\x20\x69\x74\x20\x72\x65\x71\x75\x69\x72\x65\x73\x20\x74\x68\x65\x20\x69\x6e\x6a\x65\x63\x74\x69\x6f\x6e\x20\x6f\x66\x20\x73\x70\x65\x63\x69\x66\x69\x63\x20\x6d\x6f\x64\x75\x6c\x65\x73\x20\x61\x6e\x64\x20\x61\x74\x74\x72\x69\x62\x75\x74\x65\x73\x20\x69\x6e\x20\x6f\x72\x64\x65\x72\x20\x74\x6f\x0a\x77\x6f\x72\x6b\x2e\x20\x4f\x6e\x65\x20\x73\x68\x6f\x75\x6c\x64\x20\x75\x73\x65\x20\x69\x6d\x70\x6f\x72\x74\x6c\x69\x62\x20\x61\x73\x20\x74\x68\x65\x20\x70\x75\x62\x6c\x69\x63\x2d\x66\x61\x63\x69\x6e\x67\x20\x76\x65\x72\x73\x69\x6f\x6e\x20\x6f\x66\x20\x74\x68\x69\x73\x20\x6d\x6f\x64\x75\x6c\x65\x2e\x0a\x0a",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_1_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ Py_None,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[15];
+ }
+const_str_AttributeError = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 14,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "AttributeError",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_1_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ &_Py_ID(__qualname__),
+ & const_str_AttributeError._ascii.ob_base,
+ &_Py_ID(type),
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[30];
+ }
+importlib__bootstrap_toplevel_consts_1_filename = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 29,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "<frozen importlib._bootstrap>",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[13];
+ }
+const_str__object_name = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 12,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_object_name",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[51];
+ }
+importlib__bootstrap_toplevel_consts_1_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 50,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf0\x02\x03\x05\x26\xd8\x0f\x12\xd7\x0f\x1f\xd1\x0f\x1f\xd0\x08\x1f\xf8\xdc\x0b\x19\xf2\x00\x01\x05\x26\xdc\x0f\x13\x90\x43\x8b\x79\xd7\x0f\x25\xd1\x0f\x25\xd2\x08\x25\xf0\x03\x01\x05\x26\xfa",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[13];
+ }
+importlib__bootstrap_toplevel_consts_1_exceptiontable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 12,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x82\x0b\x0e\x00\x8e\x1e\x2f\x03\xae\x01\x2f\x03",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_1_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ &_Py_ID(obj),
+ },
+ },
+};
+static
+ struct _PyCode_DEF(100)
+importlib__bootstrap_toplevel_consts_1 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 50,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_1_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_toplevel_consts_1_names._object.ob_base.ob_base,
+ .co_exceptiontable = & importlib__bootstrap_toplevel_consts_1_exceptiontable.ob_base.ob_base,
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 5 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 23,
+ .co_nlocalsplus = 1,
+ .co_nlocals = 1,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 1,
+ .co_localsplusnames = & importlib__bootstrap_toplevel_consts_1_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_characters[32]),
+ .co_filename = & importlib__bootstrap_toplevel_consts_1_filename._ascii.ob_base,
+ .co_name = & const_str__object_name._ascii.ob_base,
+ .co_qualname = & const_str__object_name._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_toplevel_consts_1_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x09\x00\x7c\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x53\x00\x23\x00\x74\x02\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x72\x18\x01\x00\x74\x05\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x63\x02\x59\x00\x53\x00\x77\x00\x78\x03\x59\x00\x77\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[48];
+ }
+importlib__bootstrap_toplevel_consts_3_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 47,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Simple substitute for functools.update_wrapper.",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[4];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_3_consts_1 = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_item = {
+ &_Py_ID(__module__),
+ &_Py_ID(__name__),
+ &_Py_ID(__qualname__),
+ &_Py_ID(__doc__),
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_3_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ & importlib__bootstrap_toplevel_consts_3_consts_0._ascii.ob_base,
+ & importlib__bootstrap_toplevel_consts_3_consts_1._object.ob_base.ob_base,
+ Py_None,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[8];
+ }
+const_str_hasattr = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 7,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "hasattr",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[8];
+ }
+const_str_setattr = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 7,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "setattr",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[7];
+ }
+const_str_update = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 6,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "update",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[5];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_3_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 5,
+ },
+ .ob_item = {
+ & const_str_hasattr._ascii.ob_base,
+ & const_str_setattr._ascii.ob_base,
+ &_Py_ID(getattr),
+ &_Py_ID(__dict__),
+ & const_str_update._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[6];
+ }
+const_str__wrap = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 5,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_wrap",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[71];
+ }
+importlib__bootstrap_toplevel_consts_3_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 70,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xe0\x13\x48\xf2\x00\x02\x05\x39\x88\x07\xdc\x0b\x12\x90\x33\x98\x07\xd5\x0b\x20\xdc\x0c\x13\x90\x43\x98\x17\xa4\x27\xa8\x23\xa8\x77\xd3\x22\x37\xd5\x0c\x38\xf0\x05\x02\x05\x39\xf0\x06\x00\x05\x08\x87\x4c\x81\x4c\xd7\x04\x17\xd1\x04\x17\x98\x03\x9f\x0c\x99\x0c\xd5\x04\x25",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[4];
+ }
+const_str_new = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 3,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "new",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[4];
+ }
+const_str_old = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 3,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "old",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_3_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ & const_str_new._ascii.ob_base,
+ & const_str_old._ascii.ob_base,
+ &_Py_ID(replace),
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[4];
+ }
+importlib__bootstrap_toplevel_consts_3_localspluskinds = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_shash = -1,
+ .ob_sval = " ",
+};
+static
+ struct _PyCode_DEF(164)
+importlib__bootstrap_toplevel_consts_3 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 82,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_3_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_toplevel_consts_3_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 12 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 9,
+ .co_firstlineno = 40,
+ .co_nlocalsplus = 3,
+ .co_nlocals = 3,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 2,
+ .co_localsplusnames = & importlib__bootstrap_toplevel_consts_3_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_3_localspluskinds.ob_base.ob_base,
+ .co_filename = & importlib__bootstrap_toplevel_consts_1_filename._ascii.ob_base,
+ .co_name = & const_str__wrap._ascii.ob_base,
+ .co_qualname = & const_str__wrap._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_toplevel_consts_3_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x64\x01\x44\x00\x5d\x26\x00\x00\x7d\x02\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x7c\x02\xab\x02\x00\x00\x00\x00\x00\x00\x73\x01\x8c\x10\x74\x03\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x7c\x02\x74\x05\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x7c\x02\xab\x02\x00\x00\x00\x00\x00\x00\xab\x03\x00\x00\x00\x00\x00\x00\x01\x00\x8c\x28\x04\x00\x7c\x00\x6a\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x6a\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x79\x02",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[4];
+ }
+const_str_sys = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 3,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "sys",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_4_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ &_Py_ID(type),
+ & const_str_sys._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[12];
+ }
+const_str__new_module = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 11,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_new_module",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[19];
+ }
+importlib__bootstrap_toplevel_consts_4_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 18,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xd8\x0b\x14\x8c\x34\x94\x03\x8b\x39\x90\x54\x8b\x3f\xd0\x04\x1a",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_4_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ &_Py_ID(name),
+ },
+ },
+};
+static
+ struct _PyCode_DEF(44)
+importlib__bootstrap_toplevel_consts_4 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 22,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_1_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_toplevel_consts_4_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 5 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 48,
+ .co_nlocalsplus = 1,
+ .co_nlocals = 1,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 3,
+ .co_localsplusnames = & importlib__bootstrap_toplevel_consts_4_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_characters[32]),
+ .co_filename = & importlib__bootstrap_toplevel_consts_1_filename._ascii.ob_base,
+ .co_name = & const_str__new_module._ascii.ob_base,
+ .co_qualname = & const_str__new_module._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_toplevel_consts_4_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x02\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x74\x02\x00\x00\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[6];
+ }
+const_str__List = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 5,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_List",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_5_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & const_str__List._ascii.ob_base,
+ Py_None,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_5_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ &_Py_ID(__name__),
+ &_Py_ID(__module__),
+ &_Py_ID(__qualname__),
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[6];
+ }
+importlib__bootstrap_toplevel_consts_5_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 5,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x84\x00\xd8\x04\x08",
+};
+static
+ struct _PyCode_DEF(12)
+importlib__bootstrap_toplevel_consts_5 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 6,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_5_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_toplevel_consts_5_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 0,
+ .co_argcount = 0,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 1 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 1,
+ .co_firstlineno = 55,
+ .co_nlocalsplus = 0,
+ .co_nlocals = 0,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 4,
+ .co_localsplusnames = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_filename = & importlib__bootstrap_toplevel_consts_1_filename._ascii.ob_base,
+ .co_name = & const_str__List._ascii.ob_base,
+ .co_qualname = & const_str__List._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_toplevel_consts_5_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x65\x00\x5a\x01\x64\x00\x5a\x02\x79\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[21];
+ }
+const_str__WeakValueDictionary = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 20,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_WeakValueDictionary",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[48];
+ }
+importlib__bootstrap_toplevel_consts_7_consts_1_consts_1_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 47,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_WeakValueDictionary.__init__.<locals>.KeyedRef",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_7_consts_1_consts_1_consts_1 = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ &_Py_ID(key),
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[6];
+ }
+const_str_super = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 5,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "super",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[7];
+ }
+const_str_remove = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 6,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "remove",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[4];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_7_consts_1_consts_1_consts_2_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_item = {
+ & const_str_super._ascii.ob_base,
+ &_Py_ID(__new__),
+ & const_str_remove._ascii.ob_base,
+ &_Py_ID(key),
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[56];
+ }
+importlib__bootstrap_toplevel_consts_7_consts_1_consts_1_consts_2_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 55,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_WeakValueDictionary.__init__.<locals>.KeyedRef.__new__",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[38];
+ }
+importlib__bootstrap_toplevel_consts_7_consts_1_consts_1_consts_2_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 37,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\xf8\x80\x00\xdc\x17\x1c\x91\x77\x91\x7f\xa0\x74\xa8\x52\xb0\x14\xb7\x1b\xb1\x1b\xd3\x17\x3d\x90\x04\xd8\x1b\x1e\x90\x04\x94\x08\xd8\x17\x1b\x90\x0b",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[3];
+ }
+const_str_ob = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 2,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "ob",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[5];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_7_consts_1_consts_1_consts_2_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 5,
+ },
+ .ob_item = {
+ &_Py_ID(type),
+ & const_str_ob._ascii.ob_base,
+ &_Py_ID(key),
+ &_Py_ID(self),
+ &_Py_ID(__class__),
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[6];
+ }
+importlib__bootstrap_toplevel_consts_7_consts_1_consts_1_consts_2_localspluskinds = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 5,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x20\x20\x20\x20\x80",
+};
+static
+ struct _PyCode_DEF(76)
+importlib__bootstrap_toplevel_consts_7_consts_1_consts_1_consts_2 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 38,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_1_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_toplevel_consts_7_consts_1_consts_1_consts_2_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 19,
+ .co_argcount = 3,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 10 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 5,
+ .co_firstlineno = 74,
+ .co_nlocalsplus = 5,
+ .co_nlocals = 4,
+ .co_ncellvars = 0,
+ .co_nfreevars = 1,
+ .co_version = 5,
+ .co_localsplusnames = & importlib__bootstrap_toplevel_consts_7_consts_1_consts_1_consts_2_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_7_consts_1_consts_1_consts_2_localspluskinds.ob_base.ob_base,
+ .co_filename = & importlib__bootstrap_toplevel_consts_1_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__new__),
+ .co_qualname = & importlib__bootstrap_toplevel_consts_7_consts_1_consts_1_consts_2_qualname._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_toplevel_consts_7_consts_1_consts_1_consts_2_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x95\x01\x97\x00\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x89\x04\x7c\x00\x8d\x05\x00\x00\x7c\x00\x7c\x01\x7c\x00\x6a\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x03\x00\x00\x00\x00\x00\x00\x7d\x03\x7c\x02\x7c\x03\x5f\x03\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x03\x53\x00",
+ ._co_firsttraceable = 1,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_7_consts_1_consts_1_consts_3_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ & const_str_super._ascii.ob_base,
+ &_Py_ID(__init__),
+ & const_str_remove._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[57];
+ }
+importlib__bootstrap_toplevel_consts_7_consts_1_consts_1_consts_3_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 56,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_WeakValueDictionary.__init__.<locals>.KeyedRef.__init__",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[23];
+ }
+importlib__bootstrap_toplevel_consts_7_consts_1_consts_1_consts_3_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 22,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\xf8\x80\x00\xdc\x10\x15\x91\x07\xd1\x10\x20\xa0\x12\xa0\x54\xa7\x5b\xa1\x5b\xd5\x10\x31",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[4];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_7_consts_1_consts_1_consts_3_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_item = {
+ &_Py_ID(self),
+ & const_str_ob._ascii.ob_base,
+ &_Py_ID(key),
+ &_Py_ID(__class__),
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[5];
+ }
+importlib__bootstrap_toplevel_consts_7_consts_1_consts_1_consts_3_localspluskinds = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x20\x20\x20\x80",
+};
+static
+ struct _PyCode_DEF(58)
+importlib__bootstrap_toplevel_consts_7_consts_1_consts_1_consts_3 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 29,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_1_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_toplevel_consts_7_consts_1_consts_1_consts_3_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 19,
+ .co_argcount = 3,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 8 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 79,
+ .co_nlocalsplus = 4,
+ .co_nlocals = 3,
+ .co_ncellvars = 0,
+ .co_nfreevars = 1,
+ .co_version = 6,
+ .co_localsplusnames = & importlib__bootstrap_toplevel_consts_7_consts_1_consts_1_consts_3_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_7_consts_1_consts_1_consts_3_localspluskinds.ob_base.ob_base,
+ .co_filename = & importlib__bootstrap_toplevel_consts_1_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__init__),
+ .co_qualname = & importlib__bootstrap_toplevel_consts_7_consts_1_consts_1_consts_3_qualname._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_toplevel_consts_7_consts_1_consts_1_consts_3_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x95\x01\x97\x00\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x89\x03\x7c\x00\x8d\x05\x00\x00\x7c\x01\x7c\x00\x6a\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x02\x00\x00\x00\x00\x00\x00\x01\x00\x79\x00",
+ ._co_firsttraceable = 1,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[11];
+ }
+const_str__iterating = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 10,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_iterating",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[18];
+ }
+const_str__pending_removals = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 17,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_pending_removals",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[9];
+ }
+const_str__weakref = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 8,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_weakref",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[21];
+ }
+const_str__remove_dead_weakref = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 20,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_remove_dead_weakref",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[7];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_7_consts_1_consts_1_consts_4_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 7,
+ },
+ .ob_item = {
+ & const_str__iterating._ascii.ob_base,
+ & const_str__pending_removals._ascii.ob_base,
+ &_Py_ID(append),
+ &_Py_ID(key),
+ & const_str__weakref._ascii.ob_base,
+ & const_str__remove_dead_weakref._ascii.ob_base,
+ &_Py_ID(data),
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[55];
+ }
+importlib__bootstrap_toplevel_consts_7_consts_1_consts_1_consts_4_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 54,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_WeakValueDictionary.__init__.<locals>.KeyedRef.remove",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[79];
+ }
+importlib__bootstrap_toplevel_consts_7_consts_1_consts_1_consts_4_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 78,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\xf8\x80\x00\xf1\x08\x00\x18\x24\x93\x7e\x90\x04\xd8\x13\x17\xd0\x13\x23\xd8\x17\x1b\x97\x7f\x92\x7f\xd8\x18\x1c\xd7\x18\x2e\xd1\x18\x2e\xd7\x18\x35\xd1\x18\x35\xb0\x62\xb7\x66\xb1\x66\xd5\x18\x3d\xe4\x18\x20\xd7\x18\x35\xd1\x18\x35\xb0\x64\xb7\x69\xb1\x69\xc0\x12\xc7\x16\xc1\x16\xd5\x18\x48\xf0\x09\x00\x14\x24",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[3];
+ }
+const_str_wr = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 2,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "wr",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[13];
+ }
+const_str_self_weakref = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 12,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "self_weakref",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_7_consts_1_consts_1_consts_4_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ & const_str_wr._ascii.ob_base,
+ &_Py_ID(self),
+ & const_str_self_weakref._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[4];
+ }
+importlib__bootstrap_toplevel_consts_7_consts_1_consts_1_consts_4_localspluskinds = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x20\x20\x80",
+};
+static
+ struct _PyCode_DEF(210)
+importlib__bootstrap_toplevel_consts_7_consts_1_consts_1_consts_4 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 105,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_1_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_toplevel_consts_7_consts_1_consts_1_consts_4_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 19,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 7 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 82,
+ .co_nlocalsplus = 3,
+ .co_nlocals = 2,
+ .co_ncellvars = 0,
+ .co_nfreevars = 1,
+ .co_version = 7,
+ .co_localsplusnames = & importlib__bootstrap_toplevel_consts_7_consts_1_consts_1_consts_4_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_7_consts_1_consts_1_consts_4_localspluskinds.ob_base.ob_base,
+ .co_filename = & importlib__bootstrap_toplevel_consts_1_filename._ascii.ob_base,
+ .co_name = & const_str_remove._ascii.ob_base,
+ .co_qualname = & importlib__bootstrap_toplevel_consts_7_consts_1_consts_1_consts_4_qualname._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_toplevel_consts_7_consts_1_consts_1_consts_4_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x95\x01\x97\x00\x02\x00\x89\x02\xab\x00\x00\x00\x00\x00\x00\x00\x7d\x01\x7c\x01\x81\x5d\x7c\x01\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x72\x26\x7c\x01\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x6a\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x79\x00\x74\x08\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x6a\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x6a\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x02\x00\x00\x00\x00\x00\x00\x01\x00\x79\x00\x79\x00",
+ ._co_firsttraceable = 1,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[5];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_7_consts_1_consts_1_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 5,
+ },
+ .ob_item = {
+ & importlib__bootstrap_toplevel_consts_7_consts_1_consts_1_consts_0._ascii.ob_base,
+ & importlib__bootstrap_toplevel_consts_7_consts_1_consts_1_consts_1._object.ob_base.ob_base,
+ & importlib__bootstrap_toplevel_consts_7_consts_1_consts_1_consts_2.ob_base.ob_base,
+ & importlib__bootstrap_toplevel_consts_7_consts_1_consts_1_consts_3.ob_base.ob_base,
+ & importlib__bootstrap_toplevel_consts_7_consts_1_consts_1_consts_4.ob_base.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[13];
+ }
+const_str_staticmethod = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 12,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "staticmethod",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[9];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_7_consts_1_consts_1_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 9,
+ },
+ .ob_item = {
+ &_Py_ID(__name__),
+ &_Py_ID(__module__),
+ &_Py_ID(__qualname__),
+ &_Py_ID(__slots__),
+ &_Py_ID(__new__),
+ &_Py_ID(__init__),
+ & const_str_staticmethod._ascii.ob_base,
+ & const_str_remove._ascii.ob_base,
+ &_Py_ID(__classcell__),
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[9];
+ }
+const_str_KeyedRef = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 8,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "KeyedRef",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[41];
+ }
+importlib__bootstrap_toplevel_consts_7_consts_1_consts_1_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 40,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\xf9\x84\x00\xe0\x18\x1e\x88\x49\xf4\x04\x03\x0d\x1c\xf4\x0a\x01\x0d\x32\xf0\x06\x00\x0e\x1a\xf3\x02\x08\x0d\x49\x01\xf3\x03\x00\x0e\x1a\xf4\x02\x08\x0d\x49\x01",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_7_consts_1_consts_1_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ &_Py_ID(__class__),
+ & const_str_self_weakref._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[3];
+ }
+importlib__bootstrap_toplevel_consts_7_consts_1_consts_1_localspluskinds = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x40\x80",
+};
+static
+ struct _PyCode_DEF(66)
+importlib__bootstrap_toplevel_consts_7_consts_1_consts_1 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 33,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_7_consts_1_consts_1_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_toplevel_consts_7_consts_1_consts_1_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 0,
+ .co_argcount = 0,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 5 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 3,
+ .co_firstlineno = 70,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 0,
+ .co_ncellvars = 1,
+ .co_nfreevars = 1,
+ .co_version = 8,
+ .co_localsplusnames = & importlib__bootstrap_toplevel_consts_7_consts_1_consts_1_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_7_consts_1_consts_1_localspluskinds.ob_base.ob_base,
+ .co_filename = & importlib__bootstrap_toplevel_consts_1_filename._ascii.ob_base,
+ .co_name = & const_str_KeyedRef._ascii.ob_base,
+ .co_qualname = & importlib__bootstrap_toplevel_consts_7_consts_1_consts_1_consts_0._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_toplevel_consts_7_consts_1_consts_1_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x95\x01\x87\x00\x97\x00\x65\x00\x5a\x01\x64\x00\x5a\x02\x64\x01\x5a\x03\x88\x00\x66\x01\x64\x02\x84\x08\x5a\x04\x88\x00\x66\x01\x64\x03\x84\x08\x5a\x05\x65\x06\x88\x01\x66\x01\x64\x04\x84\x08\xab\x00\x00\x00\x00\x00\x00\x00\x5a\x07\x88\x00\x78\x01\x5a\x08\x53\x00",
+ ._co_firsttraceable = 2,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_7_consts_1_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ Py_None,
+ & importlib__bootstrap_toplevel_consts_7_consts_1_consts_1.ob_base.ob_base,
+ & const_str_KeyedRef._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[4];
+ }
+const_str_ref = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 3,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "ref",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[10];
+ }
+const_str__KeyedRef = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 9,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_KeyedRef",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[4];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_7_consts_1_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_item = {
+ & const_str__weakref._ascii.ob_base,
+ & const_str_ref._ascii.ob_base,
+ & const_str__KeyedRef._ascii.ob_base,
+ &_Py_ID(clear),
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[30];
+ }
+importlib__bootstrap_toplevel_consts_7_consts_1_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 29,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_WeakValueDictionary.__init__",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[54];
+ }
+importlib__bootstrap_toplevel_consts_7_consts_1_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 53,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\xf8\x80\x00\xdc\x17\x1f\x97\x7c\x91\x7c\xa0\x44\xd3\x17\x29\x88\x0c\xf6\x0a\x15\x09\x49\x01\x94\x78\x97\x7c\x91\x7c\xf4\x00\x15\x09\x49\x01\xf0\x2e\x00\x1a\x22\x88\x04\x8c\x0e\xd8\x08\x0c\x8f\x0a\x89\x0a\x8d\x0c",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_7_consts_1_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ &_Py_ID(self),
+ & const_str_KeyedRef._ascii.ob_base,
+ & const_str_self_weakref._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[4];
+ }
+importlib__bootstrap_toplevel_consts_7_consts_1_localspluskinds = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_shash = -1,
+ .ob_sval = " @",
+};
+static
+ struct _PyCode_DEF(148)
+importlib__bootstrap_toplevel_consts_7_consts_1 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 74,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_7_consts_1_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_toplevel_consts_7_consts_1_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 8 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 5,
+ .co_firstlineno = 64,
+ .co_nlocalsplus = 3,
+ .co_nlocals = 2,
+ .co_ncellvars = 1,
+ .co_nfreevars = 0,
+ .co_version = 9,
+ .co_localsplusnames = & importlib__bootstrap_toplevel_consts_7_consts_1_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_7_consts_1_localspluskinds.ob_base.ob_base,
+ .co_filename = & importlib__bootstrap_toplevel_consts_1_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__init__),
+ .co_qualname = & importlib__bootstrap_toplevel_consts_7_consts_1_qualname._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_toplevel_consts_7_consts_1_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x87\x02\x97\x00\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x8a\x02\x02\x00\x47\x00\x88\x02\x66\x01\x64\x01\x84\x08\x64\x02\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x03\x00\x00\x00\x00\x00\x00\x7d\x01\x7c\x01\x7c\x00\x5f\x02\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x6a\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x01\x00\x79\x00",
+ ._co_firsttraceable = 1,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[4];
+ }
+const_str_set = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 3,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "set",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[4];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_7_consts_2_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_item = {
+ & const_str__pending_removals._ascii.ob_base,
+ & const_str_set._ascii.ob_base,
+ & const_str__iterating._ascii.ob_base,
+ &_Py_ID(data),
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[27];
+ }
+importlib__bootstrap_toplevel_consts_7_consts_2_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 26,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_WeakValueDictionary.clear",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[27];
+ }
+importlib__bootstrap_toplevel_consts_7_consts_2_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 26,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xd8\x21\x23\x88\x04\xd4\x08\x1e\xdc\x1a\x1d\x9b\x25\x88\x04\x8c\x0f\xd8\x14\x16\x88\x04\x8d\x09",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_7_consts_2_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ &_Py_ID(self),
+ },
+ },
+};
+static
+ struct _PyCode_DEF(62)
+importlib__bootstrap_toplevel_consts_7_consts_2 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 31,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_1_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_toplevel_consts_7_consts_2_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 3 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 2,
+ .co_firstlineno = 96,
+ .co_nlocalsplus = 1,
+ .co_nlocals = 1,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 10,
+ .co_localsplusnames = & importlib__bootstrap_toplevel_consts_7_consts_2_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_characters[32]),
+ .co_filename = & importlib__bootstrap_toplevel_consts_1_filename._ascii.ob_base,
+ .co_name = &_Py_ID(clear),
+ .co_qualname = & importlib__bootstrap_toplevel_consts_7_consts_2_qualname._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_toplevel_consts_7_consts_2_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x67\x00\x7c\x00\x5f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x74\x03\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x5f\x02\x00\x00\x00\x00\x00\x00\x00\x00\x69\x00\x7c\x00\x5f\x03\x00\x00\x00\x00\x00\x00\x00\x00\x79\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[4];
+ }
+const_str_pop = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 3,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "pop",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[11];
+ }
+const_str_IndexError = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 10,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "IndexError",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[6];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_7_consts_3_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 6,
+ },
+ .ob_item = {
+ & const_str__pending_removals._ascii.ob_base,
+ & const_str_pop._ascii.ob_base,
+ &_Py_ID(data),
+ & const_str_IndexError._ascii.ob_base,
+ & const_str__weakref._ascii.ob_base,
+ & const_str__remove_dead_weakref._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[17];
+ }
+const_str__commit_removals = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 16,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_commit_removals",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[38];
+ }
+importlib__bootstrap_toplevel_consts_7_consts_3_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 37,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_WeakValueDictionary._commit_removals",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[87];
+ }
+importlib__bootstrap_toplevel_consts_7_consts_3_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 86,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xd8\x0e\x12\xd7\x0e\x24\xd1\x0e\x24\xd7\x0e\x28\xd1\x0e\x28\x88\x03\xd8\x0c\x10\x8f\x49\x89\x49\x88\x01\xd8\x0e\x12\xf0\x02\x03\x0d\x17\xd9\x16\x19\x93\x65\x90\x03\xf4\x06\x00\x0d\x15\xd7\x0c\x29\xd1\x0c\x29\xa8\x21\xa8\x53\xd4\x0c\x31\xf0\x0b\x00\x0f\x13\xf8\xf4\x06\x00\x14\x1e\xf2\x00\x01\x0d\x17\xd9\x10\x16\xf0\x03\x01\x0d\x17\xfa",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[18];
+ }
+importlib__bootstrap_toplevel_consts_7_consts_3_exceptiontable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 17,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\xa5\x07\x41\x03\x00\xc1\x03\x09\x41\x0f\x03\xc1\x0e\x01\x41\x0f\x03",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[4];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_7_consts_3_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_item = {
+ &_Py_ID(self),
+ & const_str_pop._ascii.ob_base,
+ &_Py_ID(d),
+ &_Py_ID(key),
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[5];
+ }
+importlib__bootstrap_toplevel_consts_7_consts_3_localspluskinds = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_shash = -1,
+ .ob_sval = " ",
+};
+static
+ struct _PyCode_DEF(164)
+importlib__bootstrap_toplevel_consts_7_consts_3 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 82,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_1_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_toplevel_consts_7_consts_3_names._object.ob_base.ob_base,
+ .co_exceptiontable = & importlib__bootstrap_toplevel_consts_7_consts_3_exceptiontable.ob_base.ob_base,
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 8 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 101,
+ .co_nlocalsplus = 4,
+ .co_nlocals = 4,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 11,
+ .co_localsplusnames = & importlib__bootstrap_toplevel_consts_7_consts_3_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_7_consts_3_localspluskinds.ob_base.ob_base,
+ .co_filename = & importlib__bootstrap_toplevel_consts_1_filename._ascii.ob_base,
+ .co_name = & const_str__commit_removals._ascii.ob_base,
+ .co_qualname = & importlib__bootstrap_toplevel_consts_7_consts_3_qualname._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_toplevel_consts_7_consts_3_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7d\x01\x7c\x00\x6a\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7d\x02\x09\x00\x09\x00\x02\x00\x7c\x01\xab\x00\x00\x00\x00\x00\x00\x00\x7d\x03\x74\x08\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x02\x7c\x03\xab\x02\x00\x00\x00\x00\x00\x00\x01\x00\x8c\x1f\x23\x00\x74\x06\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x72\x03\x01\x00\x59\x00\x79\x00\x77\x00\x78\x03\x59\x00\x77\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[9];
+ }
+const_str_KeyError = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 8,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "KeyError",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[4];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_7_consts_5_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_item = {
+ & const_str__pending_removals._ascii.ob_base,
+ & const_str__commit_removals._ascii.ob_base,
+ &_Py_ID(data),
+ & const_str_KeyError._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[25];
+ }
+importlib__bootstrap_toplevel_consts_7_consts_5_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 24,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_WeakValueDictionary.get",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[88];
+ }
+importlib__bootstrap_toplevel_consts_7_consts_5_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 87,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xd8\x0b\x0f\xd7\x0b\x21\xd2\x0b\x21\xd8\x0c\x10\xd7\x0c\x21\xd1\x0c\x21\xd4\x0c\x23\xf0\x02\x08\x09\x19\xd8\x11\x15\x97\x19\x91\x19\x98\x33\x91\x1e\x88\x42\xf1\x08\x00\x16\x18\x93\x54\x90\x09\x90\x01\xd0\x0f\x22\xd8\x17\x1e\x90\x0e\xe0\x17\x18\x90\x08\xf8\xf4\x0d\x00\x10\x18\xf2\x00\x01\x09\x1b\xd8\x13\x1a\x8a\x4e\xf0\x03\x01\x09\x1b\xfa",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[16];
+ }
+importlib__bootstrap_toplevel_consts_7_consts_5_exceptiontable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 15,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x9e\x0f\x3a\x00\xba\x0b\x41\x08\x03\xc1\x07\x01\x41\x08\x03",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[5];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_7_consts_5_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 5,
+ },
+ .ob_item = {
+ &_Py_ID(self),
+ &_Py_ID(key),
+ &_Py_ID(default),
+ & const_str_wr._ascii.ob_base,
+ (PyObject *)&_Py_SINGLETON(strings).ascii[111],
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[6];
+ }
+importlib__bootstrap_toplevel_consts_7_consts_5_localspluskinds = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 5,
+ },
+ .ob_shash = -1,
+ .ob_sval = " ",
+};
+static
+ struct _PyCode_DEF(150)
+importlib__bootstrap_toplevel_consts_7_consts_5 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 75,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_1_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_toplevel_consts_7_consts_5_names._object.ob_base.ob_base,
+ .co_exceptiontable = & importlib__bootstrap_toplevel_consts_7_consts_5_exceptiontable.ob_base.ob_base,
+ .co_flags = 3,
+ .co_argcount = 3,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 9 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 111,
+ .co_nlocalsplus = 5,
+ .co_nlocals = 5,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 12,
+ .co_localsplusnames = & importlib__bootstrap_toplevel_consts_7_consts_5_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_7_consts_5_localspluskinds.ob_base.ob_base,
+ .co_filename = & importlib__bootstrap_toplevel_consts_1_filename._ascii.ob_base,
+ .co_name = &_Py_ID(get),
+ .co_qualname = & importlib__bootstrap_toplevel_consts_7_consts_5_qualname._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_toplevel_consts_7_consts_5_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x72\x10\x7c\x00\x6a\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x01\x00\x09\x00\x7c\x00\x6a\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x19\x00\x00\x00\x7d\x03\x02\x00\x7c\x03\xab\x00\x00\x00\x00\x00\x00\x00\x78\x01\x7d\x04\x80\x02\x7c\x02\x53\x00\x7c\x04\x53\x00\x23\x00\x74\x06\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x72\x05\x01\x00\x7c\x02\x63\x02\x59\x00\x53\x00\x77\x00\x78\x03\x59\x00\x77\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[5];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_7_consts_6_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 5,
+ },
+ .ob_item = {
+ &_Py_ID(data),
+ & const_str_KeyError._ascii.ob_base,
+ & const_str__pending_removals._ascii.ob_base,
+ & const_str__commit_removals._ascii.ob_base,
+ & const_str__KeyedRef._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[11];
+ }
+const_str_setdefault = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 10,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "setdefault",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[32];
+ }
+importlib__bootstrap_toplevel_consts_7_consts_6_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 31,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_WeakValueDictionary.setdefault",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[110];
+ }
+importlib__bootstrap_toplevel_consts_7_consts_6_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 109,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf0\x02\x03\x09\x15\xd8\x10\x1e\x90\x04\x97\x09\x91\x09\x98\x23\x91\x0e\xd3\x10\x20\x88\x41\xf0\x06\x00\x0c\x0d\x88\x39\xd8\x0f\x13\xd7\x0f\x25\xd2\x0f\x25\xd8\x10\x14\xd7\x10\x25\xd1\x10\x25\xd4\x10\x27\xd8\x1d\x21\x9f\x5e\x99\x5e\xa8\x47\xb0\x53\xd3\x1d\x39\x88\x44\x8f\x49\x89\x49\x90\x63\x89\x4e\xd8\x13\x1a\x88\x4e\xe0\x13\x14\x88\x48\xf8\xf4\x11\x00\x10\x18\xf2\x00\x01\x09\x15\xd8\x10\x14\x8a\x41\xf0\x03\x01\x09\x15\xfa",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[18];
+ }
+importlib__bootstrap_toplevel_consts_7_consts_6_exceptiontable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 17,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x82\x14\x41\x17\x00\xc1\x17\x0b\x41\x25\x03\xc1\x24\x01\x41\x25\x03",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[4];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_7_consts_6_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_item = {
+ &_Py_ID(self),
+ &_Py_ID(key),
+ &_Py_ID(default),
+ (PyObject *)&_Py_SINGLETON(strings).ascii[111],
+ },
+ },
+};
+static
+ struct _PyCode_DEF(208)
+importlib__bootstrap_toplevel_consts_7_consts_6 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 104,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_1_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_toplevel_consts_7_consts_6_names._object.ob_base.ob_base,
+ .co_exceptiontable = & importlib__bootstrap_toplevel_consts_7_consts_6_exceptiontable.ob_base.ob_base,
+ .co_flags = 3,
+ .co_argcount = 3,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 8 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 124,
+ .co_nlocalsplus = 4,
+ .co_nlocals = 4,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 13,
+ .co_localsplusnames = & importlib__bootstrap_toplevel_consts_7_consts_6_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_7_consts_3_localspluskinds.ob_base.ob_base,
+ .co_filename = & importlib__bootstrap_toplevel_consts_1_filename._ascii.ob_base,
+ .co_name = & const_str_setdefault._ascii.ob_base,
+ .co_qualname = & importlib__bootstrap_toplevel_consts_7_consts_6_qualname._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_toplevel_consts_7_consts_6_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x09\x00\x02\x00\x7c\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x19\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x7d\x03\x7c\x03\x80\x3d\x7c\x00\x6a\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x72\x10\x7c\x00\x6a\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x01\x00\x7c\x00\x6a\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x02\x7c\x01\xab\x02\x00\x00\x00\x00\x00\x00\x7c\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x3c\x00\x00\x00\x7c\x02\x53\x00\x7c\x03\x53\x00\x23\x00\x74\x02\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x72\x05\x01\x00\x64\x00\x7d\x03\x59\x00\x8c\x4e\x77\x00\x78\x03\x59\x00\x77\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[8];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_7_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 8,
+ },
+ .ob_item = {
+ & const_str__WeakValueDictionary._ascii.ob_base,
+ & importlib__bootstrap_toplevel_consts_7_consts_1.ob_base.ob_base,
+ & importlib__bootstrap_toplevel_consts_7_consts_2.ob_base.ob_base,
+ & importlib__bootstrap_toplevel_consts_7_consts_3.ob_base.ob_base,
+ Py_None,
+ & importlib__bootstrap_toplevel_consts_7_consts_5.ob_base.ob_base,
+ & importlib__bootstrap_toplevel_consts_7_consts_6.ob_base.ob_base,
+ & importlib__bootstrap_toplevel_consts_1_consts._object.ob_base.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[8];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_7_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 8,
+ },
+ .ob_item = {
+ &_Py_ID(__name__),
+ &_Py_ID(__module__),
+ &_Py_ID(__qualname__),
+ &_Py_ID(__init__),
+ &_Py_ID(clear),
+ & const_str__commit_removals._ascii.ob_base,
+ &_Py_ID(get),
+ & const_str_setdefault._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[29];
+ }
+importlib__bootstrap_toplevel_consts_7_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 28,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x84\x00\xf2\x04\x1e\x05\x15\xf2\x40\x01\x03\x05\x17\xf2\x0a\x08\x05\x32\xf3\x14\x0b\x05\x19\xf4\x1a\x0b\x05\x15",
+};
+static
+ struct _PyCode_DEF(46)
+importlib__bootstrap_toplevel_consts_7 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 23,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_7_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_toplevel_consts_7_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 0,
+ .co_argcount = 0,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 2 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 2,
+ .co_firstlineno = 62,
+ .co_nlocalsplus = 0,
+ .co_nlocals = 0,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 14,
+ .co_localsplusnames = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_filename = & importlib__bootstrap_toplevel_consts_1_filename._ascii.ob_base,
+ .co_name = & const_str__WeakValueDictionary._ascii.ob_base,
+ .co_qualname = & const_str__WeakValueDictionary._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_toplevel_consts_7_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x65\x00\x5a\x01\x64\x00\x5a\x02\x64\x01\x84\x00\x5a\x03\x64\x02\x84\x00\x5a\x04\x64\x03\x84\x00\x5a\x05\x64\x07\x64\x05\x84\x01\x5a\x06\x64\x07\x64\x06\x84\x01\x5a\x07\x79\x04",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[19];
+ }
+const_str__BlockingOnManager = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 18,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_BlockingOnManager",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[60];
+ }
+importlib__bootstrap_toplevel_consts_9_consts_1 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 59,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "A context manager responsible to updating ``_blocking_on``.",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[10];
+ }
+const_str_thread_id = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 9,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "thread_id",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[5];
+ }
+const_str_lock = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 4,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "lock",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_9_consts_2_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & const_str_thread_id._ascii.ob_base,
+ & const_str_lock._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[28];
+ }
+importlib__bootstrap_toplevel_consts_9_consts_2_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 27,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_BlockingOnManager.__init__",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[17];
+ }
+importlib__bootstrap_toplevel_consts_9_consts_2_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 16,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xd8\x19\x22\x88\x04\x8c\x0e\xd8\x14\x18\x88\x04\x8d\x09",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_9_consts_2_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ &_Py_ID(self),
+ & const_str_thread_id._ascii.ob_base,
+ & const_str_lock._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(32)
+importlib__bootstrap_toplevel_consts_9_consts_2 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 16,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_1_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_toplevel_consts_9_consts_2_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 3,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 5 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 2,
+ .co_firstlineno = 158,
+ .co_nlocalsplus = 3,
+ .co_nlocals = 3,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 15,
+ .co_localsplusnames = & importlib__bootstrap_toplevel_consts_9_consts_2_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_3_localspluskinds.ob_base.ob_base,
+ .co_filename = & importlib__bootstrap_toplevel_consts_1_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__init__),
+ .co_qualname = & importlib__bootstrap_toplevel_consts_9_consts_2_qualname._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_toplevel_consts_9_consts_2_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x01\x7c\x00\x5f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x02\x7c\x00\x5f\x01\x00\x00\x00\x00\x00\x00\x00\x00\x79\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[68];
+ }
+importlib__bootstrap_toplevel_consts_9_consts_3_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 67,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Mark the running thread as waiting for self.lock. via _blocking_on.",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_9_consts_3_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & importlib__bootstrap_toplevel_consts_9_consts_3_consts_0._ascii.ob_base,
+ Py_None,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[13];
+ }
+const_str__blocking_on = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 12,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_blocking_on",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[11];
+ }
+const_str_blocked_on = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 10,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "blocked_on",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[7];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_9_consts_3_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 7,
+ },
+ .ob_item = {
+ & const_str__blocking_on._ascii.ob_base,
+ & const_str_setdefault._ascii.ob_base,
+ & const_str_thread_id._ascii.ob_base,
+ & const_str__List._ascii.ob_base,
+ & const_str_blocked_on._ascii.ob_base,
+ &_Py_ID(append),
+ & const_str_lock._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[29];
+ }
+importlib__bootstrap_toplevel_consts_9_consts_3_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 28,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_BlockingOnManager.__enter__",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[53];
+ }
+importlib__bootstrap_toplevel_consts_9_consts_3_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 52,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf4\x10\x00\x1b\x27\xd7\x1a\x31\xd1\x1a\x31\xb0\x24\xb7\x2e\xb1\x2e\xc4\x25\xc3\x27\xd3\x1a\x4a\x88\x04\x8c\x0f\xd8\x08\x0c\x8f\x0f\x89\x0f\xd7\x08\x1e\xd1\x08\x1e\x98\x74\x9f\x79\x99\x79\xd5\x08\x29",
+};
+static
+ struct _PyCode_DEF(168)
+importlib__bootstrap_toplevel_consts_9_consts_3 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 84,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_9_consts_3_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_toplevel_consts_9_consts_3_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 6 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 5,
+ .co_firstlineno = 162,
+ .co_nlocalsplus = 1,
+ .co_nlocals = 1,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 16,
+ .co_localsplusnames = & importlib__bootstrap_toplevel_consts_7_consts_2_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_characters[32]),
+ .co_filename = & importlib__bootstrap_toplevel_consts_1_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__enter__),
+ .co_qualname = & importlib__bootstrap_toplevel_consts_9_consts_3_qualname._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_toplevel_consts_9_consts_3_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x6a\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x74\x07\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\xab\x02\x00\x00\x00\x00\x00\x00\x7c\x00\x5f\x04\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x6a\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x6a\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x79\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[55];
+ }
+importlib__bootstrap_toplevel_consts_9_consts_4_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 54,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Remove self.lock from this thread's _blocking_on list.",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_9_consts_4_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & importlib__bootstrap_toplevel_consts_9_consts_4_consts_0._ascii.ob_base,
+ Py_None,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_9_consts_4_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ & const_str_blocked_on._ascii.ob_base,
+ & const_str_remove._ascii.ob_base,
+ & const_str_lock._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[28];
+ }
+importlib__bootstrap_toplevel_consts_9_consts_4_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 27,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_BlockingOnManager.__exit__",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[25];
+ }
+importlib__bootstrap_toplevel_consts_9_consts_4_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 24,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xe0\x08\x0c\x8f\x0f\x89\x0f\xd7\x08\x1e\xd1\x08\x1e\x98\x74\x9f\x79\x99\x79\xd5\x08\x29",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[7];
+ }
+const_str_kwargs = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 6,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "kwargs",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_9_consts_4_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ &_Py_ID(self),
+ &_Py_ID(args),
+ & const_str_kwargs._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(78)
+importlib__bootstrap_toplevel_consts_9_consts_4 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 39,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_9_consts_4_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_toplevel_consts_9_consts_4_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 15,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 6 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 3,
+ .co_firstlineno = 173,
+ .co_nlocalsplus = 3,
+ .co_nlocals = 3,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 17,
+ .co_localsplusnames = & importlib__bootstrap_toplevel_consts_9_consts_4_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_3_localspluskinds.ob_base.ob_base,
+ .co_filename = & importlib__bootstrap_toplevel_consts_1_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__exit__),
+ .co_qualname = & importlib__bootstrap_toplevel_consts_9_consts_4_qualname._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_toplevel_consts_9_consts_4_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x6a\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x79\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[6];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_9_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 6,
+ },
+ .ob_item = {
+ & const_str__BlockingOnManager._ascii.ob_base,
+ & importlib__bootstrap_toplevel_consts_9_consts_1._ascii.ob_base,
+ & importlib__bootstrap_toplevel_consts_9_consts_2.ob_base.ob_base,
+ & importlib__bootstrap_toplevel_consts_9_consts_3.ob_base.ob_base,
+ & importlib__bootstrap_toplevel_consts_9_consts_4.ob_base.ob_base,
+ Py_None,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[7];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_9_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 7,
+ },
+ .ob_item = {
+ &_Py_ID(__name__),
+ &_Py_ID(__module__),
+ &_Py_ID(__qualname__),
+ &_Py_ID(__doc__),
+ &_Py_ID(__init__),
+ &_Py_ID(__enter__),
+ &_Py_ID(__exit__),
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[21];
+ }
+importlib__bootstrap_toplevel_consts_9_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 20,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x84\x00\xd9\x04\x45\xf2\x02\x02\x05\x19\xf2\x08\x09\x05\x2a\xf3\x16\x02\x05\x2a",
+};
+static
+ struct _PyCode_DEF(34)
+importlib__bootstrap_toplevel_consts_9 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 17,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_9_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_toplevel_consts_9_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 0,
+ .co_argcount = 0,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 1 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 1,
+ .co_firstlineno = 156,
+ .co_nlocalsplus = 0,
+ .co_nlocals = 0,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 18,
+ .co_localsplusnames = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_filename = & importlib__bootstrap_toplevel_consts_1_filename._ascii.ob_base,
+ .co_name = & const_str__BlockingOnManager._ascii.ob_base,
+ .co_qualname = & const_str__BlockingOnManager._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_toplevel_consts_9_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x65\x00\x5a\x01\x64\x00\x5a\x02\x64\x01\x5a\x03\x64\x02\x84\x00\x5a\x04\x64\x03\x84\x00\x5a\x05\x64\x04\x84\x00\x5a\x06\x79\x05",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[15];
+ }
+const_str__DeadlockError = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 14,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_DeadlockError",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_11_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & const_str__DeadlockError._ascii.ob_base,
+ Py_None,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(12)
+importlib__bootstrap_toplevel_consts_11 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 6,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_11_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_toplevel_consts_5_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 0,
+ .co_argcount = 0,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 1 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 1,
+ .co_firstlineno = 178,
+ .co_nlocalsplus = 0,
+ .co_nlocals = 0,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 19,
+ .co_localsplusnames = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_filename = & importlib__bootstrap_toplevel_consts_1_filename._ascii.ob_base,
+ .co_name = & const_str__DeadlockError._ascii.ob_base,
+ .co_qualname = & const_str__DeadlockError._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_toplevel_consts_5_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x65\x00\x5a\x01\x64\x00\x5a\x02\x79\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[755];
+ }
+importlib__bootstrap_toplevel_consts_13_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 754,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x43\x68\x65\x63\x6b\x20\x69\x66\x20\x27\x74\x61\x72\x67\x65\x74\x5f\x69\x64\x27\x20\x69\x73\x20\x68\x6f\x6c\x64\x69\x6e\x67\x20\x74\x68\x65\x20\x73\x61\x6d\x65\x20\x6c\x6f\x63\x6b\x20\x61\x73\x20\x61\x6e\x6f\x74\x68\x65\x72\x20\x74\x68\x72\x65\x61\x64\x28\x73\x29\x2e\x0a\x0a\x20\x20\x20\x20\x54\x68\x65\x20\x73\x65\x61\x72\x63\x68\x20\x77\x69\x74\x68\x69\x6e\x20\x27\x62\x6c\x6f\x63\x6b\x69\x6e\x67\x5f\x6f\x6e\x27\x20\x73\x74\x61\x72\x74\x73\x20\x77\x69\x74\x68\x20\x74\x68\x65\x20\x74\x68\x72\x65\x61\x64\x73\x20\x6c\x69\x73\x74\x65\x64\x20\x69\x6e\x0a\x20\x20\x20\x20\x27\x63\x61\x6e\x64\x69\x64\x61\x74\x65\x5f\x69\x64\x73\x27\x2e\x20\x20\x27\x73\x65\x65\x6e\x5f\x69\x64\x73\x27\x20\x63\x6f\x6e\x74\x61\x69\x6e\x73\x20\x61\x6e\x79\x20\x74\x68\x72\x65\x61\x64\x73\x20\x74\x68\x61\x74\x20\x61\x72\x65\x20\x63\x6f\x6e\x73\x69\x64\x65\x72\x65\x64\x0a\x20\x20\x20\x20\x61\x6c\x72\x65\x61\x64\x79\x20\x74\x72\x61\x76\x65\x72\x73\x65\x64\x20\x69\x6e\x20\x74\x68\x65\x20\x73\x65\x61\x72\x63\x68\x2e\x0a\x0a\x20\x20\x20\x20\x4b\x65\x79\x77\x6f\x72\x64\x20\x61\x72\x67\x75\x6d\x65\x6e\x74\x73\x3a\x0a\x20\x20\x20\x20\x74\x61\x72\x67\x65\x74\x5f\x69\x64\x20\x20\x20\x20\x20\x2d\x2d\x20\x54\x68\x65\x20\x74\x68\x72\x65\x61\x64\x20\x69\x64\x20\x74\x6f\x20\x74\x72\x79\x20\x74\x6f\x20\x72\x65\x61\x63\x68\x2e\x0a\x20\x20\x20\x20\x73\x65\x65\x6e\x5f\x69\x64\x73\x20\x20\x20\x20\x20\x20\x2d\x2d\x20\x41\x20\x73\x65\x74\x20\x6f\x66\x20\x74\x68\x72\x65\x61\x64\x73\x20\x74\x68\x61\x74\x20\x68\x61\x76\x65\x20\x61\x6c\x72\x65\x61\x64\x79\x20\x62\x65\x65\x6e\x20\x76\x69\x73\x69\x74\x65\x64\x2e\x0a\x20\x20\x20\x20\x63\x61\x6e\x64\x69\x64\x61\x74\x65\x5f\x69\x64\x73\x20\x2d\x2d\x20\x54\x68\x65\x20\x74\x68\x72\x65\x61\x64\x20\x69\x64\x73\x20\x66\x72\x6f\x6d\x20\x77\x68\x69\x63\x68\x20\x74\x6f\x20\x62\x65\x67\x69\x6e\x2e\x0a\x20\x20\x20\x20\x62\x6c\x6f\x63\x6b\x69\x6e\x67\x5f\x6f\x6e\x20\x20\x20\x2d\x2d\x20\x41\x20\x64\x69\x63\x74\x20\x72\x65\x70\x72\x65\x73\x65\x6e\x74\x69\x6e\x67\x20\x74\x68\x65\x20\x74\x68\x72\x65\x61\x64\x2f\x62\x6c\x6f\x63\x6b\x69\x6e\x67\x2d\x6f\x6e\x20\x67\x72\x61\x70\x68\x2e\x20\x20\x54\x68\x69\x73\x20\x6d\x61\x79\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x62\x65\x20\x74\x68\x65\x20\x73\x61\x6d\x65\x20\x6f\x62\x6a\x65\x63\x74\x20\x61\x73\x20\x74\x68\x65\x20\x67\x6c\x6f\x62\x61\x6c\x20\x27\x5f\x62\x6c\x6f\x63\x6b\x69\x6e\x67\x5f\x6f\x6e\x27\x20\x62\x75\x74\x20\x69\x74\x20\x69\x73\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x61\x20\x70\x61\x72\x61\x6d\x65\x74\x65\x72\x20\x74\x6f\x20\x72\x65\x64\x75\x63\x65\x20\x74\x68\x65\x20\x69\x6d\x70\x61\x63\x74\x20\x74\x68\x61\x74\x20\x67\x6c\x6f\x62\x61\x6c\x20\x6d\x75\x74\x61\x62\x6c\x65\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x73\x74\x61\x74\x65\x20\x68\x61\x73\x20\x6f\x6e\x20\x74\x68\x65\x20\x72\x65\x73\x75\x6c\x74\x20\x6f\x66\x20\x74\x68\x69\x73\x20\x66\x75\x6e\x63\x74\x69\x6f\x6e\x2e\x0a\x20\x20\x20\x20",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[9];
+ }
+const_str_seen_ids = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 8,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "seen_ids",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[14];
+ }
+const_str_candidate_ids = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 13,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "candidate_ids",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[12];
+ }
+const_str_blocking_on = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 11,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "blocking_on",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_13_consts_3 = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ & const_str_seen_ids._ascii.ob_base,
+ & const_str_candidate_ids._ascii.ob_base,
+ & const_str_blocking_on._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[4];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_13_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_item = {
+ & importlib__bootstrap_toplevel_consts_13_consts_0._ascii.ob_base,
+ Py_True,
+ Py_False,
+ & importlib__bootstrap_toplevel_consts_13_consts_3._object.ob_base.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[16];
+ }
+const_str__has_deadlocked = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 15,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_has_deadlocked",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[4];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_13_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_item = {
+ &_Py_ID(get),
+ &_Py_ID(add),
+ &_Py_ID(owner),
+ & const_str__has_deadlocked._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[138];
+ }
+importlib__bootstrap_toplevel_consts_13_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 137,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf0\x20\x00\x08\x11\x90\x4d\xd1\x07\x21\xf0\x06\x00\x10\x14\xf0\x06\x00\x10\x1d\xf2\x00\x10\x05\x18\x88\x03\xd8\x29\x34\xaf\x1f\xa9\x1f\xb8\x13\xd3\x29\x3d\xd0\x10\x3d\xd0\x10\x25\xd0\x10\x3d\xe0\x0c\x14\xd8\x0d\x10\x90\x48\x89\x5f\xf1\x0a\x00\x14\x19\xd8\x08\x10\x8f\x0c\x89\x0c\x90\x53\xd4\x08\x19\xf0\x06\x00\x29\x3e\xd6\x10\x3e\xa0\x04\x90\x14\x97\x1a\x93\x1a\xd0\x10\x3e\x88\x05\xd0\x10\x3e\xdc\x0b\x1a\x98\x39\xa8\x78\xc0\x75\xd8\x1c\x27\xf6\x03\x01\x0c\x29\xe1\x13\x17\xf0\x21\x10\x05\x18\xf0\x24\x00\x0c\x11\xf9\xf2\x0b\x00\x11\x3f",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[6];
+ }
+importlib__bootstrap_toplevel_consts_13_exceptiontable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 5,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\xba\x13\x41\x23\x06",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[10];
+ }
+const_str_target_id = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 9,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "target_id",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[4];
+ }
+const_str_tid = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 3,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "tid",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[22];
+ }
+const_str_candidate_blocking_on = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 21,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "candidate_blocking_on",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[6];
+ }
+const_str_edges = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 5,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "edges",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[8];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_13_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 8,
+ },
+ .ob_item = {
+ & const_str_target_id._ascii.ob_base,
+ & const_str_seen_ids._ascii.ob_base,
+ & const_str_candidate_ids._ascii.ob_base,
+ & const_str_blocking_on._ascii.ob_base,
+ & const_str_tid._ascii.ob_base,
+ & const_str_candidate_blocking_on._ascii.ob_base,
+ & const_str_lock._ascii.ob_base,
+ & const_str_edges._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[9];
+ }
+importlib__bootstrap_toplevel_consts_13_localspluskinds = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 8,
+ },
+ .ob_shash = -1,
+ .ob_sval = " ",
+};
+static
+ struct _PyCode_DEF(208)
+importlib__bootstrap_toplevel_consts_13 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 104,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_13_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_toplevel_consts_13_names._object.ob_base.ob_base,
+ .co_exceptiontable = & importlib__bootstrap_toplevel_consts_13_exceptiontable.ob_base.ob_base,
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 3,
+ .co_framesize = 15 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 7,
+ .co_firstlineno = 183,
+ .co_nlocalsplus = 8,
+ .co_nlocals = 8,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 20,
+ .co_localsplusnames = & importlib__bootstrap_toplevel_consts_13_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_13_localspluskinds.ob_base.ob_base,
+ .co_filename = & importlib__bootstrap_toplevel_consts_1_filename._ascii.ob_base,
+ .co_name = & const_str__has_deadlocked._ascii.ob_base,
+ .co_qualname = & const_str__has_deadlocked._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_toplevel_consts_13_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x00\x7c\x02\x76\x00\x72\x01\x79\x01\x7c\x02\x44\x00\x5d\x57\x00\x00\x7d\x04\x7c\x03\x6a\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x04\xab\x01\x00\x00\x00\x00\x00\x00\x78\x01\x7d\x05\x73\x01\x8c\x17\x7c\x04\x7c\x01\x76\x00\x72\x02\x01\x00\x79\x02\x7c\x01\x6a\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x04\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x7c\x05\x44\x00\x8f\x06\x63\x02\x67\x00\x63\x02\x5d\x0e\x00\x00\x7d\x06\x7c\x06\x6a\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x91\x02\x8c\x10\x04\x00\x7d\x07\x7d\x06\x74\x07\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x7c\x01\x7c\x07\x7c\x03\xac\x03\xab\x04\x00\x00\x00\x00\x00\x00\x73\x01\x8c\x57\x01\x00\x79\x01\x04\x00\x79\x02\x63\x02\x01\x00\x63\x02\x7d\x06\x77\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[12];
+ }
+const_str__ModuleLock = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 11,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_ModuleLock",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[170];
+ }
+importlib__bootstrap_toplevel_consts_14_consts_1 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 169,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x41\x20\x72\x65\x63\x75\x72\x73\x69\x76\x65\x20\x6c\x6f\x63\x6b\x20\x69\x6d\x70\x6c\x65\x6d\x65\x6e\x74\x61\x74\x69\x6f\x6e\x20\x77\x68\x69\x63\x68\x20\x69\x73\x20\x61\x62\x6c\x65\x20\x74\x6f\x20\x64\x65\x74\x65\x63\x74\x20\x64\x65\x61\x64\x6c\x6f\x63\x6b\x73\x0a\x20\x20\x20\x20\x28\x65\x2e\x67\x2e\x20\x74\x68\x72\x65\x61\x64\x20\x31\x20\x74\x72\x79\x69\x6e\x67\x20\x74\x6f\x20\x74\x61\x6b\x65\x20\x6c\x6f\x63\x6b\x73\x20\x41\x20\x74\x68\x65\x6e\x20\x42\x2c\x20\x61\x6e\x64\x20\x74\x68\x72\x65\x61\x64\x20\x32\x20\x74\x72\x79\x69\x6e\x67\x20\x74\x6f\x0a\x20\x20\x20\x20\x74\x61\x6b\x65\x20\x6c\x6f\x63\x6b\x73\x20\x42\x20\x74\x68\x65\x6e\x20\x41\x29\x2e\x0a\x20\x20\x20\x20",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[8];
+ }
+const_str__thread = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 7,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_thread",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[6];
+ }
+const_str_RLock = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 5,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "RLock",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[14];
+ }
+const_str_allocate_lock = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 13,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "allocate_lock",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[7];
+ }
+const_str_wakeup = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 6,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "wakeup",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[8];
+ }
+const_str_waiters = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 7,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "waiters",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[9];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_14_consts_2_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 9,
+ },
+ .ob_item = {
+ & const_str__thread._ascii.ob_base,
+ & const_str_RLock._ascii.ob_base,
+ & const_str_lock._ascii.ob_base,
+ & const_str_allocate_lock._ascii.ob_base,
+ & const_str_wakeup._ascii.ob_base,
+ &_Py_ID(name),
+ &_Py_ID(owner),
+ &_Py_ID(count),
+ & const_str_waiters._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[21];
+ }
+importlib__bootstrap_toplevel_consts_14_consts_2_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 20,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_ModuleLock.__init__",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[70];
+ }
+importlib__bootstrap_toplevel_consts_14_consts_2_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 69,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf4\x2a\x00\x15\x1c\x97\x4d\x91\x4d\x93\x4f\x88\x04\x8c\x09\xdc\x16\x1d\xd7\x16\x2b\xd1\x16\x2b\xd3\x16\x2d\x88\x04\x8c\x0b\xf0\x06\x00\x15\x19\x88\x04\x8c\x09\xf0\x08\x00\x16\x1a\x88\x04\x8c\x0a\xf0\x16\x00\x16\x18\x88\x04\x8c\x0a\xf0\x1c\x00\x18\x1a\x88\x04\x8d\x0c",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_14_consts_2_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ &_Py_ID(self),
+ &_Py_ID(name),
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[3];
+ }
+importlib__bootstrap_toplevel_consts_14_consts_2_localspluskinds = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_shash = -1,
+ .ob_sval = " ",
+};
+static
+ struct _PyCode_DEF(160)
+importlib__bootstrap_toplevel_consts_14_consts_2 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 80,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_1_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_toplevel_consts_14_consts_2_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 4 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 2,
+ .co_firstlineno = 232,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 2,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 21,
+ .co_localsplusnames = & importlib__bootstrap_toplevel_consts_14_consts_2_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_14_consts_2_localspluskinds.ob_base.ob_base,
+ .co_filename = & importlib__bootstrap_toplevel_consts_1_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__init__),
+ .co_qualname = & importlib__bootstrap_toplevel_consts_14_consts_2_qualname._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_toplevel_consts_14_consts_2_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x5f\x02\x00\x00\x00\x00\x00\x00\x00\x00\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x5f\x04\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x7c\x00\x5f\x05\x00\x00\x00\x00\x00\x00\x00\x00\x64\x00\x7c\x00\x5f\x06\x00\x00\x00\x00\x00\x00\x00\x00\x67\x00\x7c\x00\x5f\x07\x00\x00\x00\x00\x00\x00\x00\x00\x67\x00\x7c\x00\x5f\x08\x00\x00\x00\x00\x00\x00\x00\x00\x79\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[4];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_14_consts_3_consts_1 = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_item = {
+ & const_str_target_id._ascii.ob_base,
+ & const_str_seen_ids._ascii.ob_base,
+ & const_str_candidate_ids._ascii.ob_base,
+ & const_str_blocking_on._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_14_consts_3_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ Py_None,
+ & importlib__bootstrap_toplevel_consts_14_consts_3_consts_1._object.ob_base.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[10];
+ }
+const_str_get_ident = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 9,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "get_ident",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[6];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_14_consts_3_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 6,
+ },
+ .ob_item = {
+ & const_str__has_deadlocked._ascii.ob_base,
+ & const_str__thread._ascii.ob_base,
+ & const_str_get_ident._ascii.ob_base,
+ & const_str_set._ascii.ob_base,
+ &_Py_ID(owner),
+ & const_str__blocking_on._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[13];
+ }
+const_str_has_deadlock = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 12,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "has_deadlock",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[25];
+ }
+importlib__bootstrap_toplevel_consts_14_consts_3_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 24,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_ModuleLock.has_deadlock",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[49];
+ }
+importlib__bootstrap_toplevel_consts_14_consts_3_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 48,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf4\x0a\x00\x10\x1f\xe4\x16\x1d\xd7\x16\x27\xd1\x16\x27\xd3\x16\x29\xdc\x15\x18\x93\x55\xf0\x06\x00\x1c\x20\x9f\x3a\x99\x3a\x98\x2c\xe4\x18\x24\xf4\x11\x09\x10\x0a\xf0\x00\x09\x09\x0a",
+};
+static
+ struct _PyCode_DEF(114)
+importlib__bootstrap_toplevel_consts_14_consts_3 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 57,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_14_consts_3_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_toplevel_consts_14_consts_3_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 7 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 6,
+ .co_firstlineno = 288,
+ .co_nlocalsplus = 1,
+ .co_nlocals = 1,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 22,
+ .co_localsplusnames = & importlib__bootstrap_toplevel_consts_7_consts_2_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_characters[32]),
+ .co_filename = & importlib__bootstrap_toplevel_consts_1_filename._ascii.ob_base,
+ .co_name = & const_str_has_deadlock._ascii.ob_base,
+ .co_qualname = & importlib__bootstrap_toplevel_consts_14_consts_3_qualname._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_toplevel_consts_14_consts_3_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x74\x02\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x74\x07\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x6a\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x67\x01\x74\x0a\x00\x00\x00\x00\x00\x00\x00\x00\xac\x01\xab\x04\x00\x00\x00\x00\x00\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[186];
+ }
+importlib__bootstrap_toplevel_consts_14_consts_4_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 185,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x41\x63\x71\x75\x69\x72\x65\x20\x74\x68\x65\x20\x6d\x6f\x64\x75\x6c\x65\x20\x6c\x6f\x63\x6b\x2e\x20\x20\x49\x66\x20\x61\x20\x70\x6f\x74\x65\x6e\x74\x69\x61\x6c\x20\x64\x65\x61\x64\x6c\x6f\x63\x6b\x20\x69\x73\x20\x64\x65\x74\x65\x63\x74\x65\x64\x2c\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x61\x20\x5f\x44\x65\x61\x64\x6c\x6f\x63\x6b\x45\x72\x72\x6f\x72\x20\x69\x73\x20\x72\x61\x69\x73\x65\x64\x2e\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x4f\x74\x68\x65\x72\x77\x69\x73\x65\x2c\x20\x74\x68\x65\x20\x6c\x6f\x63\x6b\x20\x69\x73\x20\x61\x6c\x77\x61\x79\x73\x20\x61\x63\x71\x75\x69\x72\x65\x64\x20\x61\x6e\x64\x20\x54\x72\x75\x65\x20\x69\x73\x20\x72\x65\x74\x75\x72\x6e\x65\x64\x2e\x0a\x20\x20\x20\x20\x20\x20\x20\x20",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[22];
+ }
+importlib__bootstrap_toplevel_consts_14_consts_4_consts_3 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 21,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "deadlock detected by ",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[5];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_14_consts_4_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 5,
+ },
+ .ob_item = {
+ & importlib__bootstrap_toplevel_consts_14_consts_4_consts_0._ascii.ob_base,
+ Py_True,
+ Py_None,
+ & importlib__bootstrap_toplevel_consts_14_consts_4_consts_3._ascii.ob_base,
+ Py_False,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[8];
+ }
+const_str_acquire = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 7,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "acquire",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[13];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_14_consts_4_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 13,
+ },
+ .ob_item = {
+ & const_str__thread._ascii.ob_base,
+ & const_str_get_ident._ascii.ob_base,
+ & const_str__BlockingOnManager._ascii.ob_base,
+ & const_str_lock._ascii.ob_base,
+ &_Py_ID(count),
+ &_Py_ID(owner),
+ &_Py_ID(append),
+ & const_str_has_deadlock._ascii.ob_base,
+ & const_str__DeadlockError._ascii.ob_base,
+ & const_str_wakeup._ascii.ob_base,
+ & const_str_acquire._ascii.ob_base,
+ & const_str_waiters._ascii.ob_base,
+ &_Py_ID(release),
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[20];
+ }
+importlib__bootstrap_toplevel_consts_14_consts_4_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 19,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_ModuleLock.acquire",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[262];
+ }
+importlib__bootstrap_toplevel_consts_14_consts_4_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 261,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf4\x0c\x00\x0f\x16\xd7\x0e\x1f\xd1\x0e\x1f\xd3\x0e\x21\x88\x03\xdc\x0d\x1f\xa0\x03\xa0\x54\xd3\x0d\x2a\xf1\x00\x3b\x09\x26\xd8\x12\x16\xf0\x08\x00\x16\x1a\x97\x59\x91\x59\xf1\x00\x2c\x11\x32\xd8\x17\x1b\x97\x7a\x91\x7a\xa0\x52\xd2\x17\x27\xa8\x34\xaf\x3a\xa9\x3a\xb8\x13\xd2\x2b\x3c\xf0\x0e\x00\x26\x29\x98\x04\x9c\x0a\xd8\x18\x1c\x9f\x0a\x99\x0a\xd7\x18\x29\xd1\x18\x29\xa8\x24\xd4\x18\x2f\xd8\x1f\x23\xf7\x15\x2c\x11\x32\xf7\x0b\x3b\x09\x26\xf0\x00\x3b\x09\x26\xf0\x44\x01\x00\x18\x1c\xd7\x17\x28\xd1\x17\x28\xd4\x17\x2a\xdc\x1e\x2c\xd0\x2f\x44\xc0\x54\xc0\x48\xd0\x2d\x4d\xd3\x1e\x4e\xd0\x18\x4e\xf0\x1a\x00\x18\x1c\x97\x7b\x91\x7b\xd7\x17\x2a\xd1\x17\x2a\xa8\x35\xd4\x17\x31\xd8\x18\x1c\x9f\x0c\x99\x0c\xd7\x18\x2b\xd1\x18\x2b\xa8\x44\xd4\x18\x31\xf7\x59\x01\x2c\x11\x32\xf0\x62\x01\x00\x11\x15\x97\x0b\x91\x0b\xd7\x10\x23\xd1\x10\x23\xd4\x10\x25\xf0\x0a\x00\x11\x15\x97\x0b\x91\x0b\xd7\x10\x23\xd1\x10\x23\xd4\x10\x25\xf0\x75\x01\x00\x13\x17\xf7\x08\x2c\x11\x32\xf0\x00\x2c\x11\x32\xfa\xf7\x0b\x3b\x09\x26\xf0\x00\x3b\x09\x26\xfa",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[49];
+ }
+importlib__bootstrap_toplevel_consts_14_consts_4_exceptiontable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 48,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\xa1\x0e\x44\x1f\x03\xaf\x41\x02\x44\x13\x05\xc1\x31\x08\x44\x1f\x03\xc2\x02\x41\x14\x44\x13\x05\xc3\x16\x3d\x44\x1f\x03\xc4\x13\x05\x44\x1c\x09\xc4\x18\x07\x44\x1f\x03\xc4\x1f\x05\x44\x28\x07",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_14_consts_4_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ &_Py_ID(self),
+ & const_str_tid._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(598)
+importlib__bootstrap_toplevel_consts_14_consts_4 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 299,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_14_consts_4_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_toplevel_consts_14_consts_4_names._object.ob_base.ob_base,
+ .co_exceptiontable = & importlib__bootstrap_toplevel_consts_14_consts_4_exceptiontable.ob_base.ob_base,
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 9 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 7,
+ .co_firstlineno = 304,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 2,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 23,
+ .co_localsplusnames = & importlib__bootstrap_toplevel_consts_14_consts_4_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_14_consts_2_localspluskinds.ob_base.ob_base,
+ .co_filename = & importlib__bootstrap_toplevel_consts_1_filename._ascii.ob_base,
+ .co_name = & const_str_acquire._ascii.ob_base,
+ .co_qualname = & importlib__bootstrap_toplevel_consts_14_consts_4_qualname._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_toplevel_consts_14_consts_4_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x7d\x01\x74\x05\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x7c\x00\xab\x02\x00\x00\x00\x00\x00\x00\x35\x00\x01\x00\x09\x00\x7c\x00\x6a\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x35\x00\x01\x00\x7c\x00\x6a\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x67\x00\x6b\x28\x00\x00\x73\x0f\x7c\x00\x6a\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x6b\x28\x00\x00\x72\x34\x7c\x01\x7c\x00\x5f\x05\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x6a\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x01\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x09\x00\x64\x02\x64\x02\x64\x02\xab\x02\x00\x00\x00\x00\x00\x00\x01\x00\x64\x02\x64\x02\x64\x02\xab\x02\x00\x00\x00\x00\x00\x00\x01\x00\x79\x01\x7c\x00\x6a\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x72\x0e\x74\x11\x00\x00\x00\x00\x00\x00\x00\x00\x64\x03\x7c\x00\x9b\x02\x9d\x02\xab\x01\x00\x00\x00\x00\x00\x00\x82\x01\x7c\x00\x6a\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x15\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x04\xab\x01\x00\x00\x00\x00\x00\x00\x72\x1b\x7c\x00\x6a\x16\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x02\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x64\x02\x64\x02\x64\x02\xab\x02\x00\x00\x00\x00\x00\x00\x01\x00\x7c\x00\x6a\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x15\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x01\x00\x7c\x00\x6a\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x01\x00\x8c\xf0\x23\x00\x31\x00\x73\x01\x77\x02\x01\x00\x59\x00\x01\x00\x01\x00\x8c\x3e\x78\x03\x59\x00\x77\x01\x23\x00\x31\x00\x73\x01\x77\x02\x01\x00\x59\x00\x01\x00\x01\x00\x79\x02\x78\x03\x59\x00\x77\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[32];
+ }
+importlib__bootstrap_toplevel_consts_14_consts_5_consts_1 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 31,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "cannot release un-acquired lock",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_14_consts_5_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ Py_None,
+ & importlib__bootstrap_toplevel_consts_14_consts_5_consts_1._ascii.ob_base,
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 0],
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[13];
+ }
+const_str_RuntimeError = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 12,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "RuntimeError",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[11];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_14_consts_5_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 11,
+ },
+ .ob_item = {
+ & const_str__thread._ascii.ob_base,
+ & const_str_get_ident._ascii.ob_base,
+ & const_str_lock._ascii.ob_base,
+ &_Py_ID(owner),
+ & const_str_RuntimeError._ascii.ob_base,
+ &_Py_ID(len),
+ &_Py_ID(count),
+ & const_str_pop._ascii.ob_base,
+ & const_str_waiters._ascii.ob_base,
+ & const_str_wakeup._ascii.ob_base,
+ &_Py_ID(release),
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[20];
+ }
+importlib__bootstrap_toplevel_consts_14_consts_5_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 19,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_ModuleLock.release",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[169];
+ }
+importlib__bootstrap_toplevel_consts_14_consts_5_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 168,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xdc\x0e\x15\xd7\x0e\x1f\xd1\x0e\x1f\xd3\x0e\x21\x88\x03\xd8\x0d\x11\x8f\x59\x89\x59\xf1\x00\x09\x09\x2a\xd8\x0f\x13\x8f\x7a\x89\x7a\x98\x53\xd2\x0f\x20\xdc\x16\x22\xd0\x23\x44\xd3\x16\x45\xd0\x10\x45\xdc\x13\x16\x90\x74\x97\x7a\x91\x7a\x93\x3f\xa0\x51\xd2\x13\x26\xd1\x0c\x26\xd8\x0c\x10\x8f\x4a\x89\x4a\x8f\x4e\x89\x4e\xd4\x0c\x1c\xdc\x13\x16\x90\x74\x97\x7a\x91\x7a\x94\x3f\xd8\x1d\x21\x90\x04\x94\x0a\xdc\x13\x16\x90\x74\x97\x7c\x91\x7c\xd3\x13\x24\xa0\x71\xd2\x13\x28\xd8\x14\x18\x97\x4c\x91\x4c\xd7\x14\x24\xd1\x14\x24\xd4\x14\x26\xd8\x14\x18\x97\x4b\x91\x4b\xd7\x14\x27\xd1\x14\x27\xd4\x14\x29\xf7\x13\x09\x09\x2a\xf7\x00\x09\x09\x2a\xf1\x00\x09\x09\x2a\xfa",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[13];
+ }
+importlib__bootstrap_toplevel_consts_14_consts_5_exceptiontable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 12,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\xa1\x42\x37\x43\x21\x03\xc3\x21\x05\x43\x2a\x07",
+};
+static
+ struct _PyCode_DEF(474)
+importlib__bootstrap_toplevel_consts_14_consts_5 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 237,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_14_consts_5_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_toplevel_consts_14_consts_5_names._object.ob_base.ob_base,
+ .co_exceptiontable = & importlib__bootstrap_toplevel_consts_14_consts_5_exceptiontable.ob_base.ob_base,
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 8 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 6,
+ .co_firstlineno = 372,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 2,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 24,
+ .co_localsplusnames = & importlib__bootstrap_toplevel_consts_14_consts_4_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_14_consts_2_localspluskinds.ob_base.ob_base,
+ .co_filename = & importlib__bootstrap_toplevel_consts_1_filename._ascii.ob_base,
+ .co_name = &_Py_ID(release),
+ .co_qualname = & importlib__bootstrap_toplevel_consts_14_consts_5_qualname._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_toplevel_consts_14_consts_5_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x7d\x01\x7c\x00\x6a\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x35\x00\x01\x00\x7c\x00\x6a\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x6b\x37\x00\x00\x72\x0b\x74\x09\x00\x00\x00\x00\x00\x00\x00\x00\x64\x01\xab\x01\x00\x00\x00\x00\x00\x00\x82\x01\x74\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x6a\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x64\x02\x6b\x44\x00\x00\x73\x02\x4a\x00\x82\x01\x7c\x00\x6a\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x01\x00\x74\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x6a\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x73\x53\x64\x00\x7c\x00\x5f\x03\x00\x00\x00\x00\x00\x00\x00\x00\x74\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x6a\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x64\x02\x6b\x44\x00\x00\x72\x34\x7c\x00\x6a\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x01\x00\x7c\x00\x6a\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x15\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x01\x00\x64\x00\x64\x00\x64\x00\xab\x02\x00\x00\x00\x00\x00\x00\x01\x00\x79\x00\x23\x00\x31\x00\x73\x01\x77\x02\x01\x00\x59\x00\x01\x00\x01\x00\x79\x00\x78\x03\x59\x00\x77\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[13];
+ }
+importlib__bootstrap_toplevel_consts_14_consts_6_consts_1 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 12,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_ModuleLock(",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[6];
+ }
+importlib__bootstrap_toplevel_consts_14_consts_6_consts_2 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 5,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = ") at ",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_14_consts_6_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ Py_None,
+ & importlib__bootstrap_toplevel_consts_14_consts_6_consts_1._ascii.ob_base,
+ & importlib__bootstrap_toplevel_consts_14_consts_6_consts_2._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_14_consts_6_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ &_Py_ID(name),
+ &_Py_ID(id),
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[21];
+ }
+importlib__bootstrap_toplevel_consts_14_consts_6_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 20,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_ModuleLock.__repr__",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[30];
+ }
+importlib__bootstrap_toplevel_consts_14_consts_6_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 29,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xd8\x11\x1d\x98\x64\x9f\x69\x99\x69\x98\x5d\xa8\x25\xb4\x02\xb0\x34\xb3\x08\xa8\x7a\xd0\x0f\x3a\xd0\x08\x3a",
+};
+static
+ struct _PyCode_DEF(56)
+importlib__bootstrap_toplevel_consts_14_consts_6 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 28,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_14_consts_6_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_toplevel_consts_14_consts_6_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 7 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 6,
+ .co_firstlineno = 385,
+ .co_nlocalsplus = 1,
+ .co_nlocals = 1,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 25,
+ .co_localsplusnames = & importlib__bootstrap_toplevel_consts_7_consts_2_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_characters[32]),
+ .co_filename = & importlib__bootstrap_toplevel_consts_1_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__repr__),
+ .co_qualname = & importlib__bootstrap_toplevel_consts_14_consts_6_qualname._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_toplevel_consts_14_consts_6_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x64\x01\x7c\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9b\x02\x64\x02\x74\x03\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x9b\x00\x9d\x04\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[8];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_14_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 8,
+ },
+ .ob_item = {
+ & const_str__ModuleLock._ascii.ob_base,
+ & importlib__bootstrap_toplevel_consts_14_consts_1._ascii.ob_base,
+ & importlib__bootstrap_toplevel_consts_14_consts_2.ob_base.ob_base,
+ & importlib__bootstrap_toplevel_consts_14_consts_3.ob_base.ob_base,
+ & importlib__bootstrap_toplevel_consts_14_consts_4.ob_base.ob_base,
+ & importlib__bootstrap_toplevel_consts_14_consts_5.ob_base.ob_base,
+ & importlib__bootstrap_toplevel_consts_14_consts_6.ob_base.ob_base,
+ Py_None,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[9];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_14_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 9,
+ },
+ .ob_item = {
+ &_Py_ID(__name__),
+ &_Py_ID(__module__),
+ &_Py_ID(__qualname__),
+ &_Py_ID(__doc__),
+ &_Py_ID(__init__),
+ & const_str_has_deadlock._ascii.ob_base,
+ & const_str_acquire._ascii.ob_base,
+ &_Py_ID(release),
+ &_Py_ID(__repr__),
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[36];
+ }
+importlib__bootstrap_toplevel_consts_14_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 35,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x84\x00\xf1\x02\x03\x05\x08\xf2\x0a\x36\x05\x1a\xf2\x70\x01\x0e\x05\x0a\xf2\x20\x42\x01\x05\x26\xf2\x48\x02\x0b\x05\x2a\xf3\x1a\x01\x05\x3b",
+};
+static
+ struct _PyCode_DEF(46)
+importlib__bootstrap_toplevel_consts_14 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 23,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_14_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_toplevel_consts_14_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 0,
+ .co_argcount = 0,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 1 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 1,
+ .co_firstlineno = 226,
+ .co_nlocalsplus = 0,
+ .co_nlocals = 0,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 26,
+ .co_localsplusnames = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_filename = & importlib__bootstrap_toplevel_consts_1_filename._ascii.ob_base,
+ .co_name = & const_str__ModuleLock._ascii.ob_base,
+ .co_qualname = & const_str__ModuleLock._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_toplevel_consts_14_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x65\x00\x5a\x01\x64\x00\x5a\x02\x64\x01\x5a\x03\x64\x02\x84\x00\x5a\x04\x64\x03\x84\x00\x5a\x05\x64\x04\x84\x00\x5a\x06\x64\x05\x84\x00\x5a\x07\x64\x06\x84\x00\x5a\x08\x79\x07",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[17];
+ }
+const_str__DummyModuleLock = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 16,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_DummyModuleLock",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[87];
+ }
+importlib__bootstrap_toplevel_consts_16_consts_1 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 86,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x41\x20\x73\x69\x6d\x70\x6c\x65\x20\x5f\x4d\x6f\x64\x75\x6c\x65\x4c\x6f\x63\x6b\x20\x65\x71\x75\x69\x76\x61\x6c\x65\x6e\x74\x20\x66\x6f\x72\x20\x50\x79\x74\x68\x6f\x6e\x20\x62\x75\x69\x6c\x64\x73\x20\x77\x69\x74\x68\x6f\x75\x74\x0a\x20\x20\x20\x20\x6d\x75\x6c\x74\x69\x2d\x74\x68\x72\x65\x61\x64\x69\x6e\x67\x20\x73\x75\x70\x70\x6f\x72\x74\x2e",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_16_consts_2_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ Py_None,
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 0],
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_16_consts_2_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ &_Py_ID(name),
+ &_Py_ID(count),
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[26];
+ }
+importlib__bootstrap_toplevel_consts_16_consts_2_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 25,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_DummyModuleLock.__init__",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[17];
+ }
+importlib__bootstrap_toplevel_consts_16_consts_2_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 16,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xd8\x14\x18\x88\x04\x8c\x09\xd8\x15\x16\x88\x04\x8d\x0a",
+};
+static
+ struct _PyCode_DEF(32)
+importlib__bootstrap_toplevel_consts_16_consts_2 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 16,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_16_consts_2_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_toplevel_consts_16_consts_2_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 4 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 2,
+ .co_firstlineno = 393,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 2,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 27,
+ .co_localsplusnames = & importlib__bootstrap_toplevel_consts_14_consts_2_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_14_consts_2_localspluskinds.ob_base.ob_base,
+ .co_filename = & importlib__bootstrap_toplevel_consts_1_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__init__),
+ .co_qualname = & importlib__bootstrap_toplevel_consts_16_consts_2_qualname._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_toplevel_consts_16_consts_2_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x01\x7c\x00\x5f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x01\x7c\x00\x5f\x01\x00\x00\x00\x00\x00\x00\x00\x00\x79\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_16_consts_3_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ Py_None,
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 1],
+ Py_True,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_16_consts_3_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ &_Py_ID(count),
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[25];
+ }
+importlib__bootstrap_toplevel_consts_16_consts_3_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 24,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_DummyModuleLock.acquire",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[19];
+ }
+importlib__bootstrap_toplevel_consts_16_consts_3_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 18,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xd8\x08\x0c\x8f\x0a\x8a\x0a\x90\x61\x89\x0f\x8d\x0a\xd8\x0f\x13",
+};
+static
+ struct _PyCode_DEF(46)
+importlib__bootstrap_toplevel_consts_16_consts_3 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 23,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_16_consts_3_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_toplevel_consts_16_consts_3_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 4 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 3,
+ .co_firstlineno = 397,
+ .co_nlocalsplus = 1,
+ .co_nlocals = 1,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 28,
+ .co_localsplusnames = & importlib__bootstrap_toplevel_consts_7_consts_2_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_characters[32]),
+ .co_filename = & importlib__bootstrap_toplevel_consts_1_filename._ascii.ob_base,
+ .co_name = & const_str_acquire._ascii.ob_base,
+ .co_qualname = & importlib__bootstrap_toplevel_consts_16_consts_3_qualname._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_toplevel_consts_16_consts_3_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x00\x78\x01\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x01\x7a\x0d\x00\x00\x63\x02\x5f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x79\x02",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[4];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_16_consts_4_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_item = {
+ Py_None,
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 0],
+ & importlib__bootstrap_toplevel_consts_14_consts_5_consts_1._ascii.ob_base,
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 1],
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_16_consts_4_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ &_Py_ID(count),
+ & const_str_RuntimeError._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[25];
+ }
+importlib__bootstrap_toplevel_consts_16_consts_4_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 24,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_DummyModuleLock.release",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[39];
+ }
+importlib__bootstrap_toplevel_consts_16_consts_4_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 38,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xd8\x0b\x0f\x8f\x3a\x89\x3a\x98\x11\x8a\x3f\xdc\x12\x1e\xd0\x1f\x40\xd3\x12\x41\xd0\x0c\x41\xd8\x08\x0c\x8f\x0a\x8a\x0a\x90\x61\x89\x0f\x8e\x0a",
+};
+static
+ struct _PyCode_DEF(98)
+importlib__bootstrap_toplevel_consts_16_consts_4 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 49,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_16_consts_4_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_toplevel_consts_16_consts_4_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 4 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 3,
+ .co_firstlineno = 401,
+ .co_nlocalsplus = 1,
+ .co_nlocals = 1,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 29,
+ .co_localsplusnames = & importlib__bootstrap_toplevel_consts_7_consts_2_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_characters[32]),
+ .co_filename = & importlib__bootstrap_toplevel_consts_1_filename._ascii.ob_base,
+ .co_name = &_Py_ID(release),
+ .co_qualname = & importlib__bootstrap_toplevel_consts_16_consts_4_qualname._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_toplevel_consts_16_consts_4_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x01\x6b\x28\x00\x00\x72\x0b\x74\x03\x00\x00\x00\x00\x00\x00\x00\x00\x64\x02\xab\x01\x00\x00\x00\x00\x00\x00\x82\x01\x7c\x00\x78\x01\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x03\x7a\x17\x00\x00\x63\x02\x5f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x79\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[18];
+ }
+importlib__bootstrap_toplevel_consts_16_consts_5_consts_1 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 17,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_DummyModuleLock(",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_16_consts_5_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ Py_None,
+ & importlib__bootstrap_toplevel_consts_16_consts_5_consts_1._ascii.ob_base,
+ & importlib__bootstrap_toplevel_consts_14_consts_6_consts_2._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[26];
+ }
+importlib__bootstrap_toplevel_consts_16_consts_5_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 25,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_DummyModuleLock.__repr__",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[30];
+ }
+importlib__bootstrap_toplevel_consts_16_consts_5_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 29,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xd8\x11\x22\xa0\x34\xa7\x39\xa1\x39\xa0\x2d\xa8\x75\xb4\x52\xb8\x04\xb3\x58\xb0\x4a\xd0\x0f\x3f\xd0\x08\x3f",
+};
+static
+ struct _PyCode_DEF(56)
+importlib__bootstrap_toplevel_consts_16_consts_5 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 28,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_16_consts_5_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_toplevel_consts_14_consts_6_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 7 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 6,
+ .co_firstlineno = 406,
+ .co_nlocalsplus = 1,
+ .co_nlocals = 1,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 30,
+ .co_localsplusnames = & importlib__bootstrap_toplevel_consts_7_consts_2_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_characters[32]),
+ .co_filename = & importlib__bootstrap_toplevel_consts_1_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__repr__),
+ .co_qualname = & importlib__bootstrap_toplevel_consts_16_consts_5_qualname._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_toplevel_consts_16_consts_5_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x64\x01\x7c\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9b\x02\x64\x02\x74\x03\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x9b\x00\x9d\x04\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[7];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_16_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 7,
+ },
+ .ob_item = {
+ & const_str__DummyModuleLock._ascii.ob_base,
+ & importlib__bootstrap_toplevel_consts_16_consts_1._ascii.ob_base,
+ & importlib__bootstrap_toplevel_consts_16_consts_2.ob_base.ob_base,
+ & importlib__bootstrap_toplevel_consts_16_consts_3.ob_base.ob_base,
+ & importlib__bootstrap_toplevel_consts_16_consts_4.ob_base.ob_base,
+ & importlib__bootstrap_toplevel_consts_16_consts_5.ob_base.ob_base,
+ Py_None,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[8];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_16_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 8,
+ },
+ .ob_item = {
+ &_Py_ID(__name__),
+ &_Py_ID(__module__),
+ &_Py_ID(__qualname__),
+ &_Py_ID(__doc__),
+ &_Py_ID(__init__),
+ & const_str_acquire._ascii.ob_base,
+ &_Py_ID(release),
+ &_Py_ID(__repr__),
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[29];
+ }
+importlib__bootstrap_toplevel_consts_16_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 28,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x84\x00\xf1\x02\x01\x05\x20\xf2\x06\x02\x05\x17\xf2\x08\x02\x05\x14\xf2\x08\x03\x05\x18\xf3\x0a\x01\x05\x40\x01",
+};
+static
+ struct _PyCode_DEF(40)
+importlib__bootstrap_toplevel_consts_16 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 20,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_16_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_toplevel_consts_16_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 0,
+ .co_argcount = 0,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 1 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 1,
+ .co_firstlineno = 389,
+ .co_nlocalsplus = 0,
+ .co_nlocals = 0,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 31,
+ .co_localsplusnames = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_filename = & importlib__bootstrap_toplevel_consts_1_filename._ascii.ob_base,
+ .co_name = & const_str__DummyModuleLock._ascii.ob_base,
+ .co_qualname = & const_str__DummyModuleLock._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_toplevel_consts_16_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x65\x00\x5a\x01\x64\x00\x5a\x02\x64\x01\x5a\x03\x64\x02\x84\x00\x5a\x04\x64\x03\x84\x00\x5a\x05\x64\x04\x84\x00\x5a\x06\x64\x05\x84\x00\x5a\x07\x79\x06",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[19];
+ }
+const_str__ModuleLockManager = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 18,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_ModuleLockManager",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[6];
+ }
+const_str__name = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 5,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_name",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[6];
+ }
+const_str__lock = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 5,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_lock",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_18_consts_1_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & const_str__name._ascii.ob_base,
+ & const_str__lock._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[28];
+ }
+importlib__bootstrap_toplevel_consts_18_consts_1_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 27,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_ModuleLockManager.__init__",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[17];
+ }
+importlib__bootstrap_toplevel_consts_18_consts_1_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 16,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xd8\x15\x19\x88\x04\x8c\x0a\xd8\x15\x19\x88\x04\x8d\x0a",
+};
+static
+ struct _PyCode_DEF(32)
+importlib__bootstrap_toplevel_consts_18_consts_1 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 16,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_1_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_toplevel_consts_18_consts_1_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 4 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 2,
+ .co_firstlineno = 412,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 2,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 32,
+ .co_localsplusnames = & importlib__bootstrap_toplevel_consts_14_consts_2_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_14_consts_2_localspluskinds.ob_base.ob_base,
+ .co_filename = & importlib__bootstrap_toplevel_consts_1_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__init__),
+ .co_qualname = & importlib__bootstrap_toplevel_consts_18_consts_1_qualname._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_toplevel_consts_18_consts_1_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x01\x7c\x00\x5f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x00\x7c\x00\x5f\x01\x00\x00\x00\x00\x00\x00\x00\x00\x79\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[17];
+ }
+const_str__get_module_lock = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 16,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_get_module_lock",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[4];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_18_consts_2_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_item = {
+ & const_str__get_module_lock._ascii.ob_base,
+ & const_str__name._ascii.ob_base,
+ & const_str__lock._ascii.ob_base,
+ & const_str_acquire._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[29];
+ }
+importlib__bootstrap_toplevel_consts_18_consts_2_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 28,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_ModuleLockManager.__enter__",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[35];
+ }
+importlib__bootstrap_toplevel_consts_18_consts_2_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 34,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xdc\x15\x25\xa0\x64\xa7\x6a\xa1\x6a\xd3\x15\x31\x88\x04\x8c\x0a\xd8\x08\x0c\x8f\x0a\x89\x0a\xd7\x08\x1a\xd1\x08\x1a\xd5\x08\x1c",
+};
+static
+ struct _PyCode_DEF(108)
+importlib__bootstrap_toplevel_consts_18_consts_2 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 54,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_1_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_toplevel_consts_18_consts_2_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 4 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 3,
+ .co_firstlineno = 416,
+ .co_nlocalsplus = 1,
+ .co_nlocals = 1,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 33,
+ .co_localsplusnames = & importlib__bootstrap_toplevel_consts_7_consts_2_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_characters[32]),
+ .co_filename = & importlib__bootstrap_toplevel_consts_1_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__enter__),
+ .co_qualname = & importlib__bootstrap_toplevel_consts_18_consts_2_qualname._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_toplevel_consts_18_consts_2_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7c\x00\x5f\x02\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x6a\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x01\x00\x79\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_18_consts_3_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & const_str__lock._ascii.ob_base,
+ &_Py_ID(release),
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[28];
+ }
+importlib__bootstrap_toplevel_consts_18_consts_3_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 27,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_ModuleLockManager.__exit__",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[19];
+ }
+importlib__bootstrap_toplevel_consts_18_consts_3_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 18,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xd8\x08\x0c\x8f\x0a\x89\x0a\xd7\x08\x1a\xd1\x08\x1a\xd5\x08\x1c",
+};
+static
+ struct _PyCode_DEF(56)
+importlib__bootstrap_toplevel_consts_18_consts_3 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 28,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_1_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_toplevel_consts_18_consts_3_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 15,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 5 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 2,
+ .co_firstlineno = 420,
+ .co_nlocalsplus = 3,
+ .co_nlocals = 3,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 34,
+ .co_localsplusnames = & importlib__bootstrap_toplevel_consts_9_consts_4_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_3_localspluskinds.ob_base.ob_base,
+ .co_filename = & importlib__bootstrap_toplevel_consts_1_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__exit__),
+ .co_qualname = & importlib__bootstrap_toplevel_consts_18_consts_3_qualname._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_toplevel_consts_18_consts_3_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x01\x00\x79\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[5];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_18_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 5,
+ },
+ .ob_item = {
+ & const_str__ModuleLockManager._ascii.ob_base,
+ & importlib__bootstrap_toplevel_consts_18_consts_1.ob_base.ob_base,
+ & importlib__bootstrap_toplevel_consts_18_consts_2.ob_base.ob_base,
+ & importlib__bootstrap_toplevel_consts_18_consts_3.ob_base.ob_base,
+ Py_None,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[6];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_18_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 6,
+ },
+ .ob_item = {
+ &_Py_ID(__name__),
+ &_Py_ID(__module__),
+ &_Py_ID(__qualname__),
+ &_Py_ID(__init__),
+ &_Py_ID(__enter__),
+ &_Py_ID(__exit__),
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[18];
+ }
+importlib__bootstrap_toplevel_consts_18_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 17,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x84\x00\xf2\x04\x02\x05\x1a\xf2\x08\x02\x05\x1d\xf3\x08\x01\x05\x1d",
+};
+static
+ struct _PyCode_DEF(30)
+importlib__bootstrap_toplevel_consts_18 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 15,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_18_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_toplevel_consts_18_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 0,
+ .co_argcount = 0,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 1 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 1,
+ .co_firstlineno = 410,
+ .co_nlocalsplus = 0,
+ .co_nlocals = 0,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 35,
+ .co_localsplusnames = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_filename = & importlib__bootstrap_toplevel_consts_1_filename._ascii.ob_base,
+ .co_name = & const_str__ModuleLockManager._ascii.ob_base,
+ .co_qualname = & const_str__ModuleLockManager._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_toplevel_consts_18_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x65\x00\x5a\x01\x64\x00\x5a\x02\x64\x01\x84\x00\x5a\x03\x64\x02\x84\x00\x5a\x04\x64\x03\x84\x00\x5a\x05\x79\x04",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[140];
+ }
+importlib__bootstrap_toplevel_consts_20_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 139,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x47\x65\x74\x20\x6f\x72\x20\x63\x72\x65\x61\x74\x65\x20\x74\x68\x65\x20\x6d\x6f\x64\x75\x6c\x65\x20\x6c\x6f\x63\x6b\x20\x66\x6f\x72\x20\x61\x20\x67\x69\x76\x65\x6e\x20\x6d\x6f\x64\x75\x6c\x65\x20\x6e\x61\x6d\x65\x2e\x0a\x0a\x20\x20\x20\x20\x41\x63\x71\x75\x69\x72\x65\x2f\x72\x65\x6c\x65\x61\x73\x65\x20\x69\x6e\x74\x65\x72\x6e\x61\x6c\x6c\x79\x20\x74\x68\x65\x20\x67\x6c\x6f\x62\x61\x6c\x20\x69\x6d\x70\x6f\x72\x74\x20\x6c\x6f\x63\x6b\x20\x74\x6f\x20\x70\x72\x6f\x74\x65\x63\x74\x0a\x20\x20\x20\x20\x5f\x6d\x6f\x64\x75\x6c\x65\x5f\x6c\x6f\x63\x6b\x73\x2e",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[5];
+ }
+const_str__imp = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 4,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_imp",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[13];
+ }
+const_str_acquire_lock = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 12,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "acquire_lock",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[14];
+ }
+const_str__module_locks = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 13,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_module_locks",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[13];
+ }
+const_str_release_lock = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 12,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "release_lock",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[5];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_20_consts_2_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 5,
+ },
+ .ob_item = {
+ & const_str__imp._ascii.ob_base,
+ & const_str_acquire_lock._ascii.ob_base,
+ & const_str__module_locks._ascii.ob_base,
+ &_Py_ID(get),
+ & const_str_release_lock._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[3];
+ }
+const_str_cb = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 2,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "cb",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[29];
+ }
+importlib__bootstrap_toplevel_consts_20_consts_2_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 28,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_get_module_lock.<locals>.cb",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[74];
+ }
+importlib__bootstrap_toplevel_consts_20_consts_2_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 73,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xdc\x10\x14\xd7\x10\x21\xd1\x10\x21\xd4\x10\x23\xf0\x02\x07\x11\x28\xf4\x08\x00\x18\x25\xd7\x17\x28\xd1\x17\x28\xa8\x14\xd3\x17\x2e\xb0\x23\xd1\x17\x35\xdc\x1c\x29\xa8\x24\xd0\x1c\x2f\xe4\x14\x18\xd7\x14\x25\xd1\x14\x25\xd5\x14\x27\xf8\x94\x44\xd7\x14\x25\xd1\x14\x25\xd5\x14\x27\xfa",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[12];
+ }
+importlib__bootstrap_toplevel_consts_20_consts_2_exceptiontable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 11,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x96\x1e\x41\x09\x00\xc1\x09\x16\x41\x1f\x03",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_20_consts_2_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & const_str_ref._ascii.ob_base,
+ &_Py_ID(name),
+ },
+ },
+};
+static
+ struct _PyCode_DEF(196)
+importlib__bootstrap_toplevel_consts_20_consts_2 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 98,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_1_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_toplevel_consts_20_consts_2_names._object.ob_base.ob_base,
+ .co_exceptiontable = & importlib__bootstrap_toplevel_consts_20_consts_2_exceptiontable.ob_base.ob_base,
+ .co_flags = 19,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 6 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 445,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 2,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 36,
+ .co_localsplusnames = & importlib__bootstrap_toplevel_consts_20_consts_2_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_14_consts_2_localspluskinds.ob_base.ob_base,
+ .co_filename = & importlib__bootstrap_toplevel_consts_1_filename._ascii.ob_base,
+ .co_name = & const_str_cb._ascii.ob_base,
+ .co_qualname = & importlib__bootstrap_toplevel_consts_20_consts_2_qualname._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_toplevel_consts_20_consts_2_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x01\x00\x09\x00\x74\x04\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\xab\x01\x00\x00\x00\x00\x00\x00\x7c\x00\x75\x00\x72\x07\x74\x04\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x3d\x00\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x01\x00\x79\x00\x23\x00\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x01\x00\x77\x00\x78\x03\x59\x00\x77\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_20_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ & importlib__bootstrap_toplevel_consts_20_consts_0._ascii.ob_base,
+ Py_None,
+ & importlib__bootstrap_toplevel_consts_20_consts_2.ob_base.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[10];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_20_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 10,
+ },
+ .ob_item = {
+ & const_str__imp._ascii.ob_base,
+ & const_str_acquire_lock._ascii.ob_base,
+ & const_str__module_locks._ascii.ob_base,
+ & const_str_KeyError._ascii.ob_base,
+ & const_str__thread._ascii.ob_base,
+ & const_str__DummyModuleLock._ascii.ob_base,
+ & const_str__ModuleLock._ascii.ob_base,
+ & const_str__weakref._ascii.ob_base,
+ & const_str_ref._ascii.ob_base,
+ & const_str_release_lock._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[157];
+ }
+importlib__bootstrap_toplevel_consts_20_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 156,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf4\x0c\x00\x05\x09\xd7\x04\x15\xd1\x04\x15\xd4\x04\x17\xf0\x02\x19\x05\x1c\xf0\x02\x03\x09\x18\xdc\x13\x20\xa0\x14\xd1\x13\x26\xd3\x13\x28\x88\x44\xf0\x08\x00\x0c\x10\x88\x3c\xdc\x0f\x16\x88\x7f\xdc\x17\x27\xa8\x04\xd3\x17\x2d\x91\x04\xe4\x17\x22\xa0\x34\xd3\x17\x28\x90\x04\xe0\x1d\x21\xf3\x00\x09\x0d\x28\xf4\x16\x00\x23\x2b\xa7\x2c\xa1\x2c\xa8\x74\xb0\x52\xd3\x22\x38\x8c\x4d\x98\x24\xd1\x0c\x1f\xe4\x08\x0c\xd7\x08\x19\xd1\x08\x19\xd4\x08\x1b\xe0\x0b\x0f\x80\x4b\xf8\xf4\x31\x00\x10\x18\xf2\x00\x01\x09\x18\xd8\x13\x17\x8a\x44\xf0\x03\x01\x09\x18\xfb\xf4\x2c\x00\x09\x0d\xd7\x08\x19\xd1\x08\x19\xd5\x08\x1b\xfa",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[42];
+ }
+importlib__bootstrap_toplevel_consts_20_exceptiontable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 41,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x97\x0d\x41\x3b\x00\xa4\x41\x01\x42\x0c\x00\xc1\x3b\x0b\x42\x09\x03\xc2\x06\x02\x42\x0c\x00\xc2\x08\x01\x42\x09\x03\xc2\x09\x03\x42\x0c\x00\xc2\x0c\x16\x42\x22\x03",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_20_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ &_Py_ID(name),
+ & const_str_lock._ascii.ob_base,
+ & const_str_cb._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(330)
+importlib__bootstrap_toplevel_consts_20 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 165,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_20_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_toplevel_consts_20_names._object.ob_base.ob_base,
+ .co_exceptiontable = & importlib__bootstrap_toplevel_consts_20_exceptiontable.ob_base.ob_base,
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 7 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 426,
+ .co_nlocalsplus = 3,
+ .co_nlocals = 3,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 37,
+ .co_localsplusnames = & importlib__bootstrap_toplevel_consts_20_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_3_localspluskinds.ob_base.ob_base,
+ .co_filename = & importlib__bootstrap_toplevel_consts_1_filename._ascii.ob_base,
+ .co_name = & const_str__get_module_lock._ascii.ob_base,
+ .co_qualname = & const_str__get_module_lock._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_toplevel_consts_20_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x01\x00\x09\x00\x09\x00\x74\x05\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x19\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x7d\x01\x7c\x01\x80\x3f\x74\x08\x00\x00\x00\x00\x00\x00\x00\x00\x80\x0c\x74\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x01\x6e\x0b\x74\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x01\x7c\x00\x66\x01\x64\x02\x84\x01\x7d\x02\x74\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x11\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x7c\x02\xab\x02\x00\x00\x00\x00\x00\x00\x74\x04\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x3c\x00\x00\x00\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x01\x00\x7c\x01\x53\x00\x23\x00\x74\x06\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x72\x05\x01\x00\x64\x01\x7d\x01\x59\x00\x8c\x64\x77\x00\x78\x03\x59\x00\x77\x01\x23\x00\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x01\x00\x77\x00\x78\x03\x59\x00\x77\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[190];
+ }
+importlib__bootstrap_toplevel_consts_21_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 189,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x41\x63\x71\x75\x69\x72\x65\x73\x20\x74\x68\x65\x6e\x20\x72\x65\x6c\x65\x61\x73\x65\x73\x20\x74\x68\x65\x20\x6d\x6f\x64\x75\x6c\x65\x20\x6c\x6f\x63\x6b\x20\x66\x6f\x72\x20\x61\x20\x67\x69\x76\x65\x6e\x20\x6d\x6f\x64\x75\x6c\x65\x20\x6e\x61\x6d\x65\x2e\x0a\x0a\x20\x20\x20\x20\x54\x68\x69\x73\x20\x69\x73\x20\x75\x73\x65\x64\x20\x74\x6f\x20\x65\x6e\x73\x75\x72\x65\x20\x61\x20\x6d\x6f\x64\x75\x6c\x65\x20\x69\x73\x20\x63\x6f\x6d\x70\x6c\x65\x74\x65\x6c\x79\x20\x69\x6e\x69\x74\x69\x61\x6c\x69\x7a\x65\x64\x2c\x20\x69\x6e\x20\x74\x68\x65\x0a\x20\x20\x20\x20\x65\x76\x65\x6e\x74\x20\x69\x74\x20\x69\x73\x20\x62\x65\x69\x6e\x67\x20\x69\x6d\x70\x6f\x72\x74\x65\x64\x20\x62\x79\x20\x61\x6e\x6f\x74\x68\x65\x72\x20\x74\x68\x72\x65\x61\x64\x2e\x0a\x20\x20\x20\x20",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_21_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & importlib__bootstrap_toplevel_consts_21_consts_0._ascii.ob_base,
+ Py_None,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[4];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_21_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_item = {
+ & const_str__get_module_lock._ascii.ob_base,
+ & const_str_acquire._ascii.ob_base,
+ &_Py_ID(release),
+ & const_str__DeadlockError._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[62];
+ }
+importlib__bootstrap_toplevel_consts_21_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 61,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf4\x0c\x00\x0c\x1c\x98\x44\xd3\x0b\x21\x80\x44\xf0\x02\x07\x05\x17\xd8\x08\x0c\x8f\x0c\x89\x0c\x8c\x0e\xf0\x0c\x00\x09\x0d\x8f\x0c\x89\x0c\x8d\x0e\xf8\xf4\x0b\x00\x0c\x1a\xf2\x00\x03\x05\x0d\xf1\x06\x00\x09\x0d\xf0\x07\x03\x05\x0d\xfa",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[13];
+ }
+importlib__bootstrap_toplevel_consts_21_exceptiontable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 12,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x8d\x10\x2e\x00\xae\x09\x3a\x03\xb9\x01\x3a\x03",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_21_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ &_Py_ID(name),
+ & const_str_lock._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(122)
+importlib__bootstrap_toplevel_consts_21 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 61,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_21_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_toplevel_consts_21_names._object.ob_base.ob_base,
+ .co_exceptiontable = & importlib__bootstrap_toplevel_consts_21_exceptiontable.ob_base.ob_base,
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 6 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 463,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 2,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 38,
+ .co_localsplusnames = & importlib__bootstrap_toplevel_consts_21_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_14_consts_2_localspluskinds.ob_base.ob_base,
+ .co_filename = & importlib__bootstrap_toplevel_consts_1_filename._ascii.ob_base,
+ .co_name = &_Py_ID(_lock_unlock_module),
+ .co_qualname = &_Py_ID(_lock_unlock_module),
+ .co_linetable = & importlib__bootstrap_toplevel_consts_21_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x01\x09\x00\x7c\x01\x6a\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x01\x00\x7c\x01\x6a\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x01\x00\x79\x01\x23\x00\x74\x06\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x72\x03\x01\x00\x59\x00\x79\x01\x77\x00\x78\x03\x59\x00\x77\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[303];
+ }
+importlib__bootstrap_toplevel_consts_22_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 302,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x72\x65\x6d\x6f\x76\x65\x5f\x69\x6d\x70\x6f\x72\x74\x6c\x69\x62\x5f\x66\x72\x61\x6d\x65\x73\x20\x69\x6e\x20\x69\x6d\x70\x6f\x72\x74\x2e\x63\x20\x77\x69\x6c\x6c\x20\x61\x6c\x77\x61\x79\x73\x20\x72\x65\x6d\x6f\x76\x65\x20\x73\x65\x71\x75\x65\x6e\x63\x65\x73\x0a\x20\x20\x20\x20\x6f\x66\x20\x69\x6d\x70\x6f\x72\x74\x6c\x69\x62\x20\x66\x72\x61\x6d\x65\x73\x20\x74\x68\x61\x74\x20\x65\x6e\x64\x20\x77\x69\x74\x68\x20\x61\x20\x63\x61\x6c\x6c\x20\x74\x6f\x20\x74\x68\x69\x73\x20\x66\x75\x6e\x63\x74\x69\x6f\x6e\x0a\x0a\x20\x20\x20\x20\x55\x73\x65\x20\x69\x74\x20\x69\x6e\x73\x74\x65\x61\x64\x20\x6f\x66\x20\x61\x20\x6e\x6f\x72\x6d\x61\x6c\x20\x63\x61\x6c\x6c\x20\x69\x6e\x20\x70\x6c\x61\x63\x65\x73\x20\x77\x68\x65\x72\x65\x20\x69\x6e\x63\x6c\x75\x64\x69\x6e\x67\x20\x74\x68\x65\x20\x69\x6d\x70\x6f\x72\x74\x6c\x69\x62\x0a\x20\x20\x20\x20\x66\x72\x61\x6d\x65\x73\x20\x69\x6e\x74\x72\x6f\x64\x75\x63\x65\x73\x20\x75\x6e\x77\x61\x6e\x74\x65\x64\x20\x6e\x6f\x69\x73\x65\x20\x69\x6e\x74\x6f\x20\x74\x68\x65\x20\x74\x72\x61\x63\x65\x62\x61\x63\x6b\x20\x28\x65\x2e\x67\x2e\x20\x77\x68\x65\x6e\x20\x65\x78\x65\x63\x75\x74\x69\x6e\x67\x0a\x20\x20\x20\x20\x6d\x6f\x64\x75\x6c\x65\x20\x63\x6f\x64\x65\x29\x0a\x20\x20\x20\x20",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_22_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & importlib__bootstrap_toplevel_consts_22_consts_0._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[26];
+ }
+const_str__call_with_frames_removed = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 25,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_call_with_frames_removed",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[21];
+ }
+importlib__bootstrap_toplevel_consts_22_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 20,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf1\x10\x00\x0c\x0d\x88\x64\xd0\x0b\x1b\x90\x64\xd1\x0b\x1b\xd0\x04\x1b",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[5];
+ }
+const_str_kwds = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 4,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "kwds",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_22_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ (PyObject *)&_Py_SINGLETON(strings).ascii[102],
+ &_Py_ID(args),
+ & const_str_kwds._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(18)
+importlib__bootstrap_toplevel_consts_22 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 9,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_22_consts._object.ob_base.ob_base,
+ .co_names = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 15,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 8 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 5,
+ .co_firstlineno = 480,
+ .co_nlocalsplus = 3,
+ .co_nlocals = 3,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 39,
+ .co_localsplusnames = & importlib__bootstrap_toplevel_consts_22_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_3_localspluskinds.ob_base.ob_base,
+ .co_filename = & importlib__bootstrap_toplevel_consts_1_filename._ascii.ob_base,
+ .co_name = & const_str__call_with_frames_removed._ascii.ob_base,
+ .co_qualname = & const_str__call_with_frames_removed._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_toplevel_consts_22_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x02\x00\x7c\x00\x7c\x01\x69\x00\x7c\x02\xa4\x01\x8e\x01\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[10];
+ }
+const_str_verbosity = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 9,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "verbosity",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_24 = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & const_str_verbosity._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[62];
+ }
+importlib__bootstrap_toplevel_consts_25_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 61,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Print the message to stderr if -v/PYTHONVERBOSE is turned on.",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[8];
+ }
+importlib__bootstrap_toplevel_consts_25_consts_1_1 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 7,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "import ",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_25_consts_1 = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ (PyObject *)&_Py_SINGLETON(strings).ascii[35],
+ & importlib__bootstrap_toplevel_consts_25_consts_1_1._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[3];
+ }
+importlib__bootstrap_toplevel_consts_25_consts_2 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 2,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "# ",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_25_consts_3 = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ &_Py_ID(file),
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[5];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_25_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 5,
+ },
+ .ob_item = {
+ & importlib__bootstrap_toplevel_consts_25_consts_0._ascii.ob_base,
+ & importlib__bootstrap_toplevel_consts_25_consts_1._object.ob_base.ob_base,
+ & importlib__bootstrap_toplevel_consts_25_consts_2._ascii.ob_base,
+ & importlib__bootstrap_toplevel_consts_25_consts_3._object.ob_base.ob_base,
+ Py_None,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[8];
+ }
+const_str_verbose = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 7,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "verbose",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[11];
+ }
+const_str_startswith = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 10,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "startswith",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[6];
+ }
+const_str_print = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 5,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "print",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[7];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_25_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 7,
+ },
+ .ob_item = {
+ & const_str_sys._ascii.ob_base,
+ &_Py_ID(flags),
+ & const_str_verbose._ascii.ob_base,
+ & const_str_startswith._ascii.ob_base,
+ & const_str_print._ascii.ob_base,
+ &_Py_ID(format),
+ &_Py_ID(stderr),
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[17];
+ }
+const_str__verbose_message = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 16,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_verbose_message",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[75];
+ }
+importlib__bootstrap_toplevel_consts_25_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 74,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xe4\x07\x0a\x87\x79\x81\x79\xd7\x07\x18\xd1\x07\x18\x98\x49\xd2\x07\x25\xd8\x0f\x16\xd7\x0f\x21\xd1\x0f\x21\xd0\x22\x32\xd4\x0f\x33\xd8\x16\x1a\x98\x57\x91\x6e\x88\x47\xdc\x08\x0d\x88\x6e\x88\x67\x8f\x6e\x89\x6e\x98\x64\xd0\x0e\x23\xac\x23\xaf\x2a\xa9\x2a\xd6\x08\x35\xf0\x07\x00\x08\x26",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_25_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ &_Py_ID(message),
+ & const_str_verbosity._ascii.ob_base,
+ &_Py_ID(args),
+ },
+ },
+};
+static
+ struct _PyCode_DEF(188)
+importlib__bootstrap_toplevel_consts_25 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 94,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_25_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_toplevel_consts_25_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 7,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 1,
+ .co_framesize = 8 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 5,
+ .co_firstlineno = 491,
+ .co_nlocalsplus = 3,
+ .co_nlocals = 3,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 40,
+ .co_localsplusnames = & importlib__bootstrap_toplevel_consts_25_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_3_localspluskinds.ob_base.ob_base,
+ .co_filename = & importlib__bootstrap_toplevel_consts_1_filename._ascii.ob_base,
+ .co_name = & const_str__verbose_message._ascii.ob_base,
+ .co_qualname = & const_str__verbose_message._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_toplevel_consts_25_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x6b\x5c\x00\x00\x72\x3f\x7c\x00\x6a\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x01\xab\x01\x00\x00\x00\x00\x00\x00\x73\x05\x64\x02\x7c\x00\x7a\x00\x00\x00\x7d\x00\x74\x09\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x7c\x00\x6a\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x02\x8e\x00\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xac\x03\xab\x02\x00\x00\x00\x00\x00\x00\x01\x00\x79\x04\x79\x04",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[50];
+ }
+importlib__bootstrap_toplevel_consts_26_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 49,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Decorator to verify the named module is built-in.",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[26];
+ }
+importlib__bootstrap_toplevel_consts_26_consts_1_consts_1 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 25,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = " is not a built-in module",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_26_consts_1_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ Py_None,
+ & importlib__bootstrap_toplevel_consts_26_consts_1_consts_1._ascii.ob_base,
+ & importlib__bootstrap_toplevel_consts_4_localsplusnames._object.ob_base.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[21];
+ }
+const_str_builtin_module_names = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 20,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "builtin_module_names",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[12];
+ }
+const_str_ImportError = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 11,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "ImportError",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_26_consts_1_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ & const_str_sys._ascii.ob_base,
+ & const_str_builtin_module_names._ascii.ob_base,
+ & const_str_ImportError._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[26];
+ }
+const_str__requires_builtin_wrapper = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 25,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_requires_builtin_wrapper",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[53];
+ }
+importlib__bootstrap_toplevel_consts_26_consts_1_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 52,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_requires_builtin.<locals>._requires_builtin_wrapper",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[57];
+ }
+importlib__bootstrap_toplevel_consts_26_consts_1_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 56,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\xf8\x80\x00\xd8\x0b\x13\x9c\x33\xd7\x1b\x33\xd1\x1b\x33\xd1\x0b\x33\xdc\x12\x1d\xa0\x18\xa0\x0c\xd0\x2c\x45\xd0\x1e\x46\xd8\x23\x2b\xf4\x03\x01\x13\x2d\xf0\x00\x01\x0d\x2d\xe1\x0f\x12\x90\x34\x98\x18\xd3\x0f\x22\xd0\x08\x22",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[9];
+ }
+const_str_fullname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 8,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "fullname",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[4];
+ }
+const_str_fxn = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 3,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "fxn",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_26_consts_1_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ &_Py_ID(self),
+ & const_str_fullname._ascii.ob_base,
+ & const_str_fxn._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(90)
+importlib__bootstrap_toplevel_consts_26_consts_1 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 45,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_26_consts_1_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_toplevel_consts_26_consts_1_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 19,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 7 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 501,
+ .co_nlocalsplus = 3,
+ .co_nlocals = 2,
+ .co_ncellvars = 0,
+ .co_nfreevars = 1,
+ .co_version = 41,
+ .co_localsplusnames = & importlib__bootstrap_toplevel_consts_26_consts_1_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_7_consts_1_consts_1_consts_4_localspluskinds.ob_base.ob_base,
+ .co_filename = & importlib__bootstrap_toplevel_consts_1_filename._ascii.ob_base,
+ .co_name = & const_str__requires_builtin_wrapper._ascii.ob_base,
+ .co_qualname = & importlib__bootstrap_toplevel_consts_26_consts_1_qualname._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_toplevel_consts_26_consts_1_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x95\x01\x97\x00\x7c\x01\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x76\x01\x72\x10\x74\x05\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x9b\x02\x64\x01\x9d\x02\x7c\x01\xac\x02\xab\x02\x00\x00\x00\x00\x00\x00\x82\x01\x02\x00\x89\x02\x7c\x00\x7c\x01\xab\x02\x00\x00\x00\x00\x00\x00\x53\x00",
+ ._co_firsttraceable = 1,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_26_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & importlib__bootstrap_toplevel_consts_26_consts_0._ascii.ob_base,
+ & importlib__bootstrap_toplevel_consts_26_consts_1.ob_base.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_26_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & const_str__wrap._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[18];
+ }
+const_str__requires_builtin = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 17,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_requires_builtin",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[28];
+ }
+importlib__bootstrap_toplevel_consts_26_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 27,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\xf8\x80\x00\xf4\x04\x04\x05\x23\xf4\x0a\x00\x05\x0a\xd0\x0a\x23\xa0\x53\xd4\x04\x29\xd8\x0b\x24\xd0\x04\x24",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_26_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & const_str_fxn._ascii.ob_base,
+ & const_str__requires_builtin_wrapper._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[3];
+ }
+importlib__bootstrap_toplevel_consts_26_localspluskinds = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_shash = -1,
+ .ob_sval = "` ",
+};
+static
+ struct _PyCode_DEF(42)
+importlib__bootstrap_toplevel_consts_26 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 21,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_26_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_toplevel_consts_26_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 6 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 499,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 2,
+ .co_ncellvars = 1,
+ .co_nfreevars = 0,
+ .co_version = 42,
+ .co_localsplusnames = & importlib__bootstrap_toplevel_consts_26_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_26_localspluskinds.ob_base.ob_base,
+ .co_filename = & importlib__bootstrap_toplevel_consts_1_filename._ascii.ob_base,
+ .co_name = & const_str__requires_builtin._ascii.ob_base,
+ .co_qualname = & const_str__requires_builtin._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_toplevel_consts_26_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x87\x00\x97\x00\x88\x00\x66\x01\x64\x01\x84\x08\x7d\x01\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x89\x00\xab\x02\x00\x00\x00\x00\x00\x00\x01\x00\x7c\x01\x53\x00",
+ ._co_firsttraceable = 1,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[48];
+ }
+importlib__bootstrap_toplevel_consts_27_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 47,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Decorator to verify the named module is frozen.",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[24];
+ }
+importlib__bootstrap_toplevel_consts_27_consts_1_consts_1 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 23,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = " is not a frozen module",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_27_consts_1_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ Py_None,
+ & importlib__bootstrap_toplevel_consts_27_consts_1_consts_1._ascii.ob_base,
+ & importlib__bootstrap_toplevel_consts_4_localsplusnames._object.ob_base.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[10];
+ }
+const_str_is_frozen = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 9,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "is_frozen",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_27_consts_1_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ & const_str__imp._ascii.ob_base,
+ & const_str_is_frozen._ascii.ob_base,
+ & const_str_ImportError._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[25];
+ }
+const_str__requires_frozen_wrapper = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 24,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_requires_frozen_wrapper",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[51];
+ }
+importlib__bootstrap_toplevel_consts_27_consts_1_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 50,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_requires_frozen.<locals>._requires_frozen_wrapper",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[55];
+ }
+importlib__bootstrap_toplevel_consts_27_consts_1_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 54,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\xf8\x80\x00\xdc\x0f\x13\x8f\x7e\x89\x7e\x98\x68\xd4\x0f\x27\xdc\x12\x1d\xa0\x18\xa0\x0c\xd0\x2c\x43\xd0\x1e\x44\xd8\x23\x2b\xf4\x03\x01\x13\x2d\xf0\x00\x01\x0d\x2d\xe1\x0f\x12\x90\x34\x98\x18\xd3\x0f\x22\xd0\x08\x22",
+};
+static
+ struct _PyCode_DEF(96)
+importlib__bootstrap_toplevel_consts_27_consts_1 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 48,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_27_consts_1_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_toplevel_consts_27_consts_1_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 19,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 7 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 512,
+ .co_nlocalsplus = 3,
+ .co_nlocals = 2,
+ .co_ncellvars = 0,
+ .co_nfreevars = 1,
+ .co_version = 43,
+ .co_localsplusnames = & importlib__bootstrap_toplevel_consts_26_consts_1_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_7_consts_1_consts_1_consts_4_localspluskinds.ob_base.ob_base,
+ .co_filename = & importlib__bootstrap_toplevel_consts_1_filename._ascii.ob_base,
+ .co_name = & const_str__requires_frozen_wrapper._ascii.ob_base,
+ .co_qualname = & importlib__bootstrap_toplevel_consts_27_consts_1_qualname._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_toplevel_consts_27_consts_1_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x95\x01\x97\x00\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\xab\x01\x00\x00\x00\x00\x00\x00\x73\x10\x74\x05\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x9b\x02\x64\x01\x9d\x02\x7c\x01\xac\x02\xab\x02\x00\x00\x00\x00\x00\x00\x82\x01\x02\x00\x89\x02\x7c\x00\x7c\x01\xab\x02\x00\x00\x00\x00\x00\x00\x53\x00",
+ ._co_firsttraceable = 1,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_27_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & importlib__bootstrap_toplevel_consts_27_consts_0._ascii.ob_base,
+ & importlib__bootstrap_toplevel_consts_27_consts_1.ob_base.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[17];
+ }
+const_str__requires_frozen = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 16,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_requires_frozen",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[28];
+ }
+importlib__bootstrap_toplevel_consts_27_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 27,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\xf8\x80\x00\xf4\x04\x04\x05\x23\xf4\x0a\x00\x05\x0a\xd0\x0a\x22\xa0\x43\xd4\x04\x28\xd8\x0b\x23\xd0\x04\x23",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_27_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & const_str_fxn._ascii.ob_base,
+ & const_str__requires_frozen_wrapper._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(42)
+importlib__bootstrap_toplevel_consts_27 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 21,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_27_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_toplevel_consts_26_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 6 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 510,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 2,
+ .co_ncellvars = 1,
+ .co_nfreevars = 0,
+ .co_version = 44,
+ .co_localsplusnames = & importlib__bootstrap_toplevel_consts_27_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_26_localspluskinds.ob_base.ob_base,
+ .co_filename = & importlib__bootstrap_toplevel_consts_1_filename._ascii.ob_base,
+ .co_name = & const_str__requires_frozen._ascii.ob_base,
+ .co_qualname = & const_str__requires_frozen._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_toplevel_consts_27_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x87\x00\x97\x00\x88\x00\x66\x01\x64\x01\x84\x08\x7d\x01\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x89\x00\xab\x02\x00\x00\x00\x00\x00\x00\x01\x00\x7c\x01\x53\x00",
+ ._co_firsttraceable = 1,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[131];
+ }
+importlib__bootstrap_toplevel_consts_28_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 130,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x4c\x6f\x61\x64\x20\x74\x68\x65\x20\x73\x70\x65\x63\x69\x66\x69\x65\x64\x20\x6d\x6f\x64\x75\x6c\x65\x20\x69\x6e\x74\x6f\x20\x73\x79\x73\x2e\x6d\x6f\x64\x75\x6c\x65\x73\x20\x61\x6e\x64\x20\x72\x65\x74\x75\x72\x6e\x20\x69\x74\x2e\x0a\x0a\x20\x20\x20\x20\x54\x68\x69\x73\x20\x6d\x65\x74\x68\x6f\x64\x20\x69\x73\x20\x64\x65\x70\x72\x65\x63\x61\x74\x65\x64\x2e\x20\x20\x55\x73\x65\x20\x6c\x6f\x61\x64\x65\x72\x2e\x65\x78\x65\x63\x5f\x6d\x6f\x64\x75\x6c\x65\x28\x29\x20\x69\x6e\x73\x74\x65\x61\x64\x2e\x0a\x0a\x20\x20\x20\x20",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[104];
+ }
+importlib__bootstrap_toplevel_consts_28_consts_1 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 103,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "the load_module() method is deprecated and slated for removal in Python 3.12; use exec_module() instead",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_28_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & importlib__bootstrap_toplevel_consts_28_consts_0._ascii.ob_base,
+ & importlib__bootstrap_toplevel_consts_28_consts_1._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[10];
+ }
+const_str__warnings = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 9,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_warnings",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[5];
+ }
+const_str_warn = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 4,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "warn",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[19];
+ }
+const_str_DeprecationWarning = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 18,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "DeprecationWarning",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[17];
+ }
+const_str_spec_from_loader = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 16,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "spec_from_loader",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[6];
+ }
+const_str__exec = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 5,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_exec",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[6];
+ }
+const_str__load = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 5,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_load",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[8];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_28_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 8,
+ },
+ .ob_item = {
+ & const_str__warnings._ascii.ob_base,
+ & const_str_warn._ascii.ob_base,
+ & const_str_DeprecationWarning._ascii.ob_base,
+ & const_str_spec_from_loader._ascii.ob_base,
+ & const_str_sys._ascii.ob_base,
+ &_Py_ID(modules),
+ & const_str__exec._ascii.ob_base,
+ & const_str__load._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[18];
+ }
+const_str__load_module_shim = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 17,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_load_module_shim",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[98];
+ }
+importlib__bootstrap_toplevel_consts_28_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 97,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf0\x0c\x01\x0c\x33\x80\x43\xe4\x04\x0d\x87\x4e\x81\x4e\x90\x33\xd4\x18\x2a\xd4\x04\x2b\xdc\x0b\x1b\x98\x48\xa0\x64\xd3\x0b\x2b\x80\x44\xd8\x07\x0f\x94\x33\x97\x3b\x91\x3b\xd1\x07\x1e\xdc\x11\x14\x97\x1b\x91\x1b\x98\x58\xd1\x11\x26\x88\x06\xdc\x08\x0d\x88\x64\x90\x46\xd4\x08\x1b\xdc\x0f\x12\x8f\x7b\x89\x7b\x98\x38\xd1\x0f\x24\xd0\x08\x24\xe4\x0f\x14\x90\x54\x8b\x7b\xd0\x08\x1a",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[5];
+ }
+const_str_spec = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 4,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "spec",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[5];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_28_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 5,
+ },
+ .ob_item = {
+ &_Py_ID(self),
+ & const_str_fullname._ascii.ob_base,
+ &_Py_ID(msg),
+ & const_str_spec._ascii.ob_base,
+ &_Py_ID(module),
+ },
+ },
+};
+static
+ struct _PyCode_DEF(240)
+importlib__bootstrap_toplevel_consts_28 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 120,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_28_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_toplevel_consts_28_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 9 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 522,
+ .co_nlocalsplus = 5,
+ .co_nlocals = 5,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 45,
+ .co_localsplusnames = & importlib__bootstrap_toplevel_consts_28_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_7_consts_5_localspluskinds.ob_base.ob_base,
+ .co_filename = & importlib__bootstrap_toplevel_consts_1_filename._ascii.ob_base,
+ .co_name = & const_str__load_module_shim._ascii.ob_base,
+ .co_qualname = & const_str__load_module_shim._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_toplevel_consts_28_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x64\x01\x7d\x02\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x02\x74\x04\x00\x00\x00\x00\x00\x00\x00\x00\xab\x02\x00\x00\x00\x00\x00\x00\x01\x00\x74\x07\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x7c\x00\xab\x02\x00\x00\x00\x00\x00\x00\x7d\x03\x7c\x01\x74\x08\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x76\x00\x72\x32\x74\x08\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x19\x00\x00\x00\x7d\x04\x74\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x03\x7c\x04\xab\x02\x00\x00\x00\x00\x00\x00\x01\x00\x74\x08\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x19\x00\x00\x00\x53\x00\x74\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x03\xab\x01\x00\x00\x00\x00\x00\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[45];
+ }
+importlib__bootstrap_toplevel_consts_29_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 44,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "The implementation of ModuleType.__repr__().",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[9];
+ }
+importlib__bootstrap_toplevel_consts_29_consts_5 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 8,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "<module ",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[7];
+ }
+importlib__bootstrap_toplevel_consts_29_consts_6 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 6,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = " from ",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[3];
+ }
+importlib__bootstrap_toplevel_consts_29_consts_8 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 2,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = " (",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[3];
+ }
+importlib__bootstrap_toplevel_consts_29_consts_9 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 2,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = ")>",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[10];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_29_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 10,
+ },
+ .ob_item = {
+ & importlib__bootstrap_toplevel_consts_29_consts_0._ascii.ob_base,
+ &_Py_ID(__loader__),
+ Py_None,
+ &_Py_ID(__spec__),
+ (PyObject *)&_Py_SINGLETON(strings).ascii[63],
+ & importlib__bootstrap_toplevel_consts_29_consts_5._ascii.ob_base,
+ & importlib__bootstrap_toplevel_consts_29_consts_6._ascii.ob_base,
+ (PyObject *)&_Py_SINGLETON(strings).ascii[62],
+ & importlib__bootstrap_toplevel_consts_29_consts_8._ascii.ob_base,
+ & importlib__bootstrap_toplevel_consts_29_consts_9._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[23];
+ }
+const_str__module_repr_from_spec = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 22,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_module_repr_from_spec",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[5];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_29_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 5,
+ },
+ .ob_item = {
+ &_Py_ID(getattr),
+ & const_str__module_repr_from_spec._ascii.ob_base,
+ &_Py_ID(__name__),
+ & const_str_AttributeError._ascii.ob_base,
+ &_Py_ID(__file__),
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[13];
+ }
+const_str__module_repr = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 12,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_module_repr",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[178];
+ }
+importlib__bootstrap_toplevel_consts_29_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 177,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xe4\x0d\x14\x90\x56\x98\x5c\xa8\x34\xd3\x0d\x30\x80\x46\xdc\x0f\x16\x90\x76\x98\x7a\xa8\x34\xd3\x0f\x30\xd0\x07\x30\x80\x74\xd0\x07\x30\xdc\x0f\x25\xa0\x64\xd3\x0f\x2b\xd0\x08\x2b\xf0\x04\x03\x05\x13\xd8\x0f\x15\x8f\x7f\x89\x7f\x88\x04\xf0\x06\x08\x05\x36\xd8\x13\x19\x97\x3f\x91\x3f\x88\x08\xf0\x0e\x00\x12\x1a\x98\x24\x98\x18\xa0\x16\xa8\x08\xa0\x7c\xb0\x31\xd0\x0f\x35\xd0\x08\x35\xf8\xf4\x15\x00\x0c\x1a\xf2\x00\x01\x05\x13\xd8\x0f\x12\x8a\x04\xf0\x03\x01\x05\x13\xfb\xf4\x08\x00\x0c\x1a\xf2\x00\x04\x05\x35\xd8\x0b\x11\x88\x3e\xd8\x15\x1d\x98\x64\x98\x58\xa0\x51\xd0\x13\x27\xd2\x0c\x27\xe0\x15\x1d\x98\x64\x98\x58\xa0\x52\xa8\x06\xa0\x7a\xb0\x12\xd0\x13\x34\xd2\x0c\x34\xf0\x09\x04\x05\x35\xfa",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[41];
+ }
+importlib__bootstrap_toplevel_consts_29_exceptiontable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 40,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\xa9\x0c\x41\x0b\x00\xb6\x0c\x41\x1c\x00\xc1\x0b\x0b\x41\x19\x03\xc1\x18\x01\x41\x19\x03\xc1\x1c\x11\x41\x3b\x03\xc1\x2f\x09\x41\x3b\x03\xc1\x3a\x01\x41\x3b\x03",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[7];
+ }
+const_str_loader = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 6,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "loader",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[5];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_29_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 5,
+ },
+ .ob_item = {
+ &_Py_ID(module),
+ & const_str_loader._ascii.ob_base,
+ & const_str_spec._ascii.ob_base,
+ &_Py_ID(name),
+ &_Py_ID(filename),
+ },
+ },
+};
+static
+ struct _PyCode_DEF(252)
+importlib__bootstrap_toplevel_consts_29 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 126,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_29_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_toplevel_consts_29_names._object.ob_base.ob_base,
+ .co_exceptiontable = & importlib__bootstrap_toplevel_consts_29_exceptiontable.ob_base.ob_base,
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 11 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 6,
+ .co_firstlineno = 541,
+ .co_nlocalsplus = 5,
+ .co_nlocals = 5,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 46,
+ .co_localsplusnames = & importlib__bootstrap_toplevel_consts_29_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_7_consts_5_localspluskinds.ob_base.ob_base,
+ .co_filename = & importlib__bootstrap_toplevel_consts_1_filename._ascii.ob_base,
+ .co_name = & const_str__module_repr._ascii.ob_base,
+ .co_qualname = & const_str__module_repr._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_toplevel_consts_29_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x64\x01\x64\x02\xab\x03\x00\x00\x00\x00\x00\x00\x7d\x01\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x64\x03\x64\x02\xab\x03\x00\x00\x00\x00\x00\x00\x78\x01\x7d\x02\x72\x0b\x74\x03\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x02\xab\x01\x00\x00\x00\x00\x00\x00\x53\x00\x09\x00\x7c\x00\x6a\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7d\x03\x09\x00\x7c\x00\x6a\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7d\x04\x64\x05\x7c\x03\x9b\x02\x64\x06\x7c\x04\x9b\x02\x64\x07\x9d\x05\x53\x00\x23\x00\x74\x06\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x72\x05\x01\x00\x64\x04\x7d\x03\x59\x00\x8c\x23\x77\x00\x78\x03\x59\x00\x77\x01\x23\x00\x74\x06\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x72\x16\x01\x00\x7c\x01\x80\x08\x64\x05\x7c\x03\x9b\x02\x64\x07\x9d\x03\x63\x02\x59\x00\x53\x00\x64\x05\x7c\x03\x9b\x02\x64\x08\x7c\x01\x9b\x02\x64\x09\x9d\x05\x63\x02\x59\x00\x53\x00\x77\x00\x78\x03\x59\x00\x77\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[11];
+ }
+const_str_ModuleSpec = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 10,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "ModuleSpec",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[1489];
+ }
+importlib__bootstrap_toplevel_consts_30_consts_1 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 1488,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x54\x68\x65\x20\x73\x70\x65\x63\x69\x66\x69\x63\x61\x74\x69\x6f\x6e\x20\x66\x6f\x72\x20\x61\x20\x6d\x6f\x64\x75\x6c\x65\x2c\x20\x75\x73\x65\x64\x20\x66\x6f\x72\x20\x6c\x6f\x61\x64\x69\x6e\x67\x2e\x0a\x0a\x20\x20\x20\x20\x41\x20\x6d\x6f\x64\x75\x6c\x65\x27\x73\x20\x73\x70\x65\x63\x20\x69\x73\x20\x74\x68\x65\x20\x73\x6f\x75\x72\x63\x65\x20\x66\x6f\x72\x20\x69\x6e\x66\x6f\x72\x6d\x61\x74\x69\x6f\x6e\x20\x61\x62\x6f\x75\x74\x20\x74\x68\x65\x20\x6d\x6f\x64\x75\x6c\x65\x2e\x20\x20\x46\x6f\x72\x0a\x20\x20\x20\x20\x64\x61\x74\x61\x20\x61\x73\x73\x6f\x63\x69\x61\x74\x65\x64\x20\x77\x69\x74\x68\x20\x74\x68\x65\x20\x6d\x6f\x64\x75\x6c\x65\x2c\x20\x69\x6e\x63\x6c\x75\x64\x69\x6e\x67\x20\x73\x6f\x75\x72\x63\x65\x2c\x20\x75\x73\x65\x20\x74\x68\x65\x20\x73\x70\x65\x63\x27\x73\x0a\x20\x20\x20\x20\x6c\x6f\x61\x64\x65\x72\x2e\x0a\x0a\x20\x20\x20\x20\x60\x6e\x61\x6d\x65\x60\x20\x69\x73\x20\x74\x68\x65\x20\x61\x62\x73\x6f\x6c\x75\x74\x65\x20\x6e\x61\x6d\x65\x20\x6f\x66\x20\x74\x68\x65\x20\x6d\x6f\x64\x75\x6c\x65\x2e\x20\x20\x60\x6c\x6f\x61\x64\x65\x72\x60\x20\x69\x73\x20\x74\x68\x65\x20\x6c\x6f\x61\x64\x65\x72\x0a\x20\x20\x20\x20\x74\x6f\x20\x75\x73\x65\x20\x77\x68\x65\x6e\x20\x6c\x6f\x61\x64\x69\x6e\x67\x20\x74\x68\x65\x20\x6d\x6f\x64\x75\x6c\x65\x2e\x20\x20\x60\x70\x61\x72\x65\x6e\x74\x60\x20\x69\x73\x20\x74\x68\x65\x20\x6e\x61\x6d\x65\x20\x6f\x66\x20\x74\x68\x65\x0a\x20\x20\x20\x20\x70\x61\x63\x6b\x61\x67\x65\x20\x74\x68\x65\x20\x6d\x6f\x64\x75\x6c\x65\x20\x69\x73\x20\x69\x6e\x2e\x20\x20\x54\x68\x65\x20\x70\x61\x72\x65\x6e\x74\x20\x69\x73\x20\x64\x65\x72\x69\x76\x65\x64\x20\x66\x72\x6f\x6d\x20\x74\x68\x65\x20\x6e\x61\x6d\x65\x2e\x0a\x0a\x20\x20\x20\x20\x60\x69\x73\x5f\x70\x61\x63\x6b\x61\x67\x65\x60\x20\x64\x65\x74\x65\x72\x6d\x69\x6e\x65\x73\x20\x69\x66\x20\x74\x68\x65\x20\x6d\x6f\x64\x75\x6c\x65\x20\x69\x73\x20\x63\x6f\x6e\x73\x69\x64\x65\x72\x65\x64\x20\x61\x20\x70\x61\x63\x6b\x61\x67\x65\x20\x6f\x72\x0a\x20\x20\x20\x20\x6e\x6f\x74\x2e\x20\x20\x4f\x6e\x20\x6d\x6f\x64\x75\x6c\x65\x73\x20\x74\x68\x69\x73\x20\x69\x73\x20\x72\x65\x66\x6c\x65\x63\x74\x65\x64\x20\x62\x79\x20\x74\x68\x65\x20\x60\x5f\x5f\x70\x61\x74\x68\x5f\x5f\x60\x20\x61\x74\x74\x72\x69\x62\x75\x74\x65\x2e\x0a\x0a\x20\x20\x20\x20\x60\x6f\x72\x69\x67\x69\x6e\x60\x20\x69\x73\x20\x74\x68\x65\x20\x73\x70\x65\x63\x69\x66\x69\x63\x20\x6c\x6f\x63\x61\x74\x69\x6f\x6e\x20\x75\x73\x65\x64\x20\x62\x79\x20\x74\x68\x65\x20\x6c\x6f\x61\x64\x65\x72\x20\x66\x72\x6f\x6d\x20\x77\x68\x69\x63\x68\x20\x74\x6f\x0a\x20\x20\x20\x20\x6c\x6f\x61\x64\x20\x74\x68\x65\x20\x6d\x6f\x64\x75\x6c\x65\x2c\x20\x69\x66\x20\x74\x68\x61\x74\x20\x69\x6e\x66\x6f\x72\x6d\x61\x74\x69\x6f\x6e\x20\x69\x73\x20\x61\x76\x61\x69\x6c\x61\x62\x6c\x65\x2e\x20\x20\x57\x68\x65\x6e\x20\x66\x69\x6c\x65\x6e\x61\x6d\x65\x20\x69\x73\x0a\x20\x20\x20\x20\x73\x65\x74\x2c\x20\x6f\x72\x69\x67\x69\x6e\x20\x77\x69\x6c\x6c\x20\x6d\x61\x74\x63\x68\x2e\x0a\x0a\x20\x20\x20\x20\x60\x68\x61\x73\x5f\x6c\x6f\x63\x61\x74\x69\x6f\x6e\x60\x20\x69\x6e\x64\x69\x63\x61\x74\x65\x73\x20\x74\x68\x61\x74\x20\x61\x20\x73\x70\x65\x63\x27\x73\x20\x22\x6f\x72\x69\x67\x69\x6e\x22\x20\x72\x65\x66\x6c\x65\x63\x74\x73\x20\x61\x20\x6c\x6f\x63\x61\x74\x69\x6f\x6e\x2e\x0a\x20\x20\x20\x20\x57\x68\x65\x6e\x20\x74\x68\x69\x73\x20\x69\x73\x20\x54\x72\x75\x65\x2c\x20\x60\x5f\x5f\x66\x69\x6c\x65\x5f\x5f\x60\x20\x61\x74\x74\x72\x69\x62\x75\x74\x65\x20\x6f\x66\x20\x74\x68\x65\x20\x6d\x6f\x64\x75\x6c\x65\x20\x69\x73\x20\x73\x65\x74\x2e\x0a\x0a\x20\x20\x20\x20\x60\x63\x61\x63\x68\x65\x64\x60\x20\x69\x73\x20\x74\x68\x65\x20\x6c\x6f\x63\x61\x74\x69\x6f\x6e\x20\x6f\x66\x20\x74\x68\x65\x20\x63\x61\x63\x68\x65\x64\x20\x62\x79\x74\x65\x63\x6f\x64\x65\x20\x66\x69\x6c\x65\x2c\x20\x69\x66\x20\x61\x6e\x79\x2e\x20\x20\x49\x74\x0a\x20\x20\x20\x20\x63\x6f\x72\x72\x65\x73\x70\x6f\x6e\x64\x73\x20\x74\x6f\x20\x74\x68\x65\x20\x60\x5f\x5f\x63\x61\x63\x68\x65\x64\x5f\x5f\x60\x20\x61\x74\x74\x72\x69\x62\x75\x74\x65\x2e\x0a\x0a\x20\x20\x20\x20\x60\x73\x75\x62\x6d\x6f\x64\x75\x6c\x65\x5f\x73\x65\x61\x72\x63\x68\x5f\x6c\x6f\x63\x61\x74\x69\x6f\x6e\x73\x60\x20\x69\x73\x20\x74\x68\x65\x20\x73\x65\x71\x75\x65\x6e\x63\x65\x20\x6f\x66\x20\x70\x61\x74\x68\x20\x65\x6e\x74\x72\x69\x65\x73\x20\x74\x6f\x0a\x20\x20\x20\x20\x73\x65\x61\x72\x63\x68\x20\x77\x68\x65\x6e\x20\x69\x6d\x70\x6f\x72\x74\x69\x6e\x67\x20\x73\x75\x62\x6d\x6f\x64\x75\x6c\x65\x73\x2e\x20\x20\x49\x66\x20\x73\x65\x74\x2c\x20\x69\x73\x5f\x70\x61\x63\x6b\x61\x67\x65\x20\x73\x68\x6f\x75\x6c\x64\x20\x62\x65\x0a\x20\x20\x20\x20\x54\x72\x75\x65\x2d\x2d\x61\x6e\x64\x20\x46\x61\x6c\x73\x65\x20\x6f\x74\x68\x65\x72\x77\x69\x73\x65\x2e\x0a\x0a\x20\x20\x20\x20\x50\x61\x63\x6b\x61\x67\x65\x73\x20\x61\x72\x65\x20\x73\x69\x6d\x70\x6c\x79\x20\x6d\x6f\x64\x75\x6c\x65\x73\x20\x74\x68\x61\x74\x20\x28\x6d\x61\x79\x29\x20\x68\x61\x76\x65\x20\x73\x75\x62\x6d\x6f\x64\x75\x6c\x65\x73\x2e\x20\x20\x49\x66\x20\x61\x20\x73\x70\x65\x63\x0a\x20\x20\x20\x20\x68\x61\x73\x20\x61\x20\x6e\x6f\x6e\x2d\x4e\x6f\x6e\x65\x20\x76\x61\x6c\x75\x65\x20\x69\x6e\x20\x60\x73\x75\x62\x6d\x6f\x64\x75\x6c\x65\x5f\x73\x65\x61\x72\x63\x68\x5f\x6c\x6f\x63\x61\x74\x69\x6f\x6e\x73\x60\x2c\x20\x74\x68\x65\x20\x69\x6d\x70\x6f\x72\x74\x0a\x20\x20\x20\x20\x73\x79\x73\x74\x65\x6d\x20\x77\x69\x6c\x6c\x20\x63\x6f\x6e\x73\x69\x64\x65\x72\x20\x6d\x6f\x64\x75\x6c\x65\x73\x20\x6c\x6f\x61\x64\x65\x64\x20\x66\x72\x6f\x6d\x20\x74\x68\x65\x20\x73\x70\x65\x63\x20\x61\x73\x20\x70\x61\x63\x6b\x61\x67\x65\x73\x2e\x0a\x0a\x20\x20\x20\x20\x4f\x6e\x6c\x79\x20\x66\x69\x6e\x64\x65\x72\x73\x20\x28\x73\x65\x65\x20\x69\x6d\x70\x6f\x72\x74\x6c\x69\x62\x2e\x61\x62\x63\x2e\x4d\x65\x74\x61\x50\x61\x74\x68\x46\x69\x6e\x64\x65\x72\x20\x61\x6e\x64\x0a\x20\x20\x20\x20\x69\x6d\x70\x6f\x72\x74\x6c\x69\x62\x2e\x61\x62\x63\x2e\x50\x61\x74\x68\x45\x6e\x74\x72\x79\x46\x69\x6e\x64\x65\x72\x29\x20\x73\x68\x6f\x75\x6c\x64\x20\x6d\x6f\x64\x69\x66\x79\x20\x4d\x6f\x64\x75\x6c\x65\x53\x70\x65\x63\x20\x69\x6e\x73\x74\x61\x6e\x63\x65\x73\x2e\x0a\x0a\x20\x20\x20\x20",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[13];
+ }
+const_str_loader_state = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 12,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "loader_state",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[11];
+ }
+const_str_is_package = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 10,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "is_package",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_30_consts_3 = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ &_Py_ID(origin),
+ & const_str_loader_state._ascii.ob_base,
+ & const_str_is_package._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_30_consts_4_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ Py_None,
+ Py_False,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[27];
+ }
+const_str_submodule_search_locations = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 26,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "submodule_search_locations",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[14];
+ }
+const_str__set_fileattr = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 13,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_set_fileattr",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[8];
+ }
+const_str__cached = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 7,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_cached",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[8];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_30_consts_4_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 8,
+ },
+ .ob_item = {
+ &_Py_ID(name),
+ & const_str_loader._ascii.ob_base,
+ &_Py_ID(origin),
+ & const_str_loader_state._ascii.ob_base,
+ & const_str_submodule_search_locations._ascii.ob_base,
+ &_Py_ID(_uninitialized_submodules),
+ & const_str__set_fileattr._ascii.ob_base,
+ & const_str__cached._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[20];
+ }
+importlib__bootstrap_toplevel_consts_30_consts_4_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 19,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "ModuleSpec.__init__",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[69];
+ }
+importlib__bootstrap_toplevel_consts_30_consts_4_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 68,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xe0\x14\x18\x88\x04\x8c\x09\xd8\x16\x1c\x88\x04\x8c\x0b\xd8\x16\x1c\x88\x04\x8c\x0b\xd8\x1c\x28\x88\x04\xd4\x08\x19\xd9\x30\x3a\xa9\x22\xc0\x04\x88\x04\xd4\x08\x27\xd8\x29\x2b\x88\x04\xd4\x08\x26\xf0\x06\x00\x1e\x23\x88\x04\xd4\x08\x1a\xd8\x17\x1b\x88\x04\x8d\x0c",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[6];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_30_consts_4_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 6,
+ },
+ .ob_item = {
+ &_Py_ID(self),
+ &_Py_ID(name),
+ & const_str_loader._ascii.ob_base,
+ &_Py_ID(origin),
+ & const_str_loader_state._ascii.ob_base,
+ & const_str_is_package._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[7];
+ }
+importlib__bootstrap_toplevel_consts_30_consts_4_localspluskinds = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 6,
+ },
+ .ob_shash = -1,
+ .ob_sval = " ",
+};
+static
+ struct _PyCode_DEF(124)
+importlib__bootstrap_toplevel_consts_30_consts_4 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 62,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_30_consts_4_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_toplevel_consts_30_consts_4_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 3,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 3,
+ .co_framesize = 8 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 2,
+ .co_firstlineno = 599,
+ .co_nlocalsplus = 6,
+ .co_nlocals = 6,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 47,
+ .co_localsplusnames = & importlib__bootstrap_toplevel_consts_30_consts_4_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_30_consts_4_localspluskinds.ob_base.ob_base,
+ .co_filename = & importlib__bootstrap_toplevel_consts_1_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__init__),
+ .co_qualname = & importlib__bootstrap_toplevel_consts_30_consts_4_qualname._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_toplevel_consts_30_consts_4_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x01\x7c\x00\x5f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x02\x7c\x00\x5f\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x03\x7c\x00\x5f\x02\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x04\x7c\x00\x5f\x03\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x05\x72\x02\x67\x00\x6e\x01\x64\x00\x7c\x00\x5f\x04\x00\x00\x00\x00\x00\x00\x00\x00\x67\x00\x7c\x00\x5f\x05\x00\x00\x00\x00\x00\x00\x00\x00\x64\x01\x7c\x00\x5f\x06\x00\x00\x00\x00\x00\x00\x00\x00\x64\x00\x7c\x00\x5f\x07\x00\x00\x00\x00\x00\x00\x00\x00\x79\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[6];
+ }
+importlib__bootstrap_toplevel_consts_30_consts_5_consts_1 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 5,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "name=",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[8];
+ }
+importlib__bootstrap_toplevel_consts_30_consts_5_consts_2 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 7,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "loader=",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[8];
+ }
+importlib__bootstrap_toplevel_consts_30_consts_5_consts_3 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 7,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "origin=",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[28];
+ }
+importlib__bootstrap_toplevel_consts_30_consts_5_consts_4 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 27,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "submodule_search_locations=",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[3];
+ }
+importlib__bootstrap_toplevel_consts_30_consts_5_consts_6 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 2,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = ", ",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[8];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_30_consts_5_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 8,
+ },
+ .ob_item = {
+ Py_None,
+ & importlib__bootstrap_toplevel_consts_30_consts_5_consts_1._ascii.ob_base,
+ & importlib__bootstrap_toplevel_consts_30_consts_5_consts_2._ascii.ob_base,
+ & importlib__bootstrap_toplevel_consts_30_consts_5_consts_3._ascii.ob_base,
+ & importlib__bootstrap_toplevel_consts_30_consts_5_consts_4._ascii.ob_base,
+ (PyObject *)&_Py_SINGLETON(strings).ascii[40],
+ & importlib__bootstrap_toplevel_consts_30_consts_5_consts_6._ascii.ob_base,
+ (PyObject *)&_Py_SINGLETON(strings).ascii[41],
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[8];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_30_consts_5_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 8,
+ },
+ .ob_item = {
+ &_Py_ID(name),
+ & const_str_loader._ascii.ob_base,
+ &_Py_ID(origin),
+ &_Py_ID(append),
+ & const_str_submodule_search_locations._ascii.ob_base,
+ &_Py_ID(__class__),
+ &_Py_ID(__name__),
+ &_Py_ID(join),
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[20];
+ }
+importlib__bootstrap_toplevel_consts_30_consts_5_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 19,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "ModuleSpec.__repr__",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[146];
+ }
+importlib__bootstrap_toplevel_consts_30_consts_5_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 145,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xd8\x12\x17\x98\x04\x9f\x09\x99\x09\x90\x7d\xd0\x10\x25\xa8\x17\xb0\x14\xb7\x1b\xb1\x1b\xb0\x0f\xd0\x27\x40\xd0\x0f\x41\x88\x04\xd8\x0b\x0f\x8f\x3b\x89\x3b\xd0\x0b\x22\xd8\x0c\x10\x8f\x4b\x89\x4b\x98\x27\xa0\x24\xa7\x2b\xa1\x2b\xa0\x1f\xd0\x18\x31\xd4\x0c\x32\xd8\x0b\x0f\xd7\x0b\x2a\xd1\x0b\x2a\xd0\x0b\x36\xd8\x0c\x10\x8f\x4b\x89\x4b\xd0\x1a\x35\xb0\x64\xd7\x36\x55\xd1\x36\x55\xd0\x35\x56\xd0\x18\x57\xd4\x0c\x58\xd8\x12\x16\x97\x2e\x91\x2e\xd7\x12\x29\xd1\x12\x29\xd0\x11\x2a\xa8\x21\xa8\x44\xaf\x49\xa9\x49\xb0\x64\xab\x4f\xd0\x2b\x3c\xb8\x41\xd0\x0f\x3e\xd0\x08\x3e",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_30_consts_5_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ &_Py_ID(self),
+ &_Py_ID(args),
+ },
+ },
+};
+static
+ struct _PyCode_DEF(316)
+importlib__bootstrap_toplevel_consts_30_consts_5 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 158,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_30_consts_5_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_toplevel_consts_30_consts_5_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 7 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 5,
+ .co_firstlineno = 612,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 2,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 48,
+ .co_localsplusnames = & importlib__bootstrap_toplevel_consts_30_consts_5_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_14_consts_2_localspluskinds.ob_base.ob_base,
+ .co_filename = & importlib__bootstrap_toplevel_consts_1_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__repr__),
+ .co_qualname = & importlib__bootstrap_toplevel_consts_30_consts_5_qualname._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_toplevel_consts_30_consts_5_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x64\x01\x7c\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9b\x02\x9d\x02\x64\x02\x7c\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9b\x02\x9d\x02\x67\x02\x7d\x01\x7c\x00\x6a\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x81\x1e\x7c\x01\x6a\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x03\x7c\x00\x6a\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9b\x02\x9d\x02\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x7c\x00\x6a\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x81\x1e\x7c\x01\x6a\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x04\x7c\x00\x6a\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9b\x00\x9d\x02\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x7c\x00\x6a\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9b\x00\x64\x05\x64\x06\x6a\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\xab\x01\x00\x00\x00\x00\x00\x00\x9b\x00\x64\x07\x9d\x04\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[7];
+ }
+const_str_cached = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 6,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "cached",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[13];
+ }
+const_str_has_location = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 12,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "has_location",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[15];
+ }
+const_str_NotImplemented = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 14,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "NotImplemented",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[8];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_30_consts_6_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 8,
+ },
+ .ob_item = {
+ & const_str_submodule_search_locations._ascii.ob_base,
+ &_Py_ID(name),
+ & const_str_loader._ascii.ob_base,
+ &_Py_ID(origin),
+ & const_str_cached._ascii.ob_base,
+ & const_str_has_location._ascii.ob_base,
+ & const_str_AttributeError._ascii.ob_base,
+ & const_str_NotImplemented._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[18];
+ }
+importlib__bootstrap_toplevel_consts_30_consts_6_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 17,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "ModuleSpec.__eq__",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[176];
+ }
+importlib__bootstrap_toplevel_consts_30_consts_6_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 175,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xd8\x0f\x13\xd7\x0f\x2e\xd1\x0f\x2e\x88\x04\xf0\x02\x08\x09\x22\xd8\x14\x18\x97\x49\x91\x49\xa0\x15\xa7\x1a\xa1\x1a\xd1\x14\x2b\xf2\x00\x05\x15\x3c\xd8\x14\x18\x97\x4b\x91\x4b\xa0\x35\xa7\x3c\xa1\x3c\xd1\x14\x2f\xf2\x03\x05\x15\x3c\xe0\x14\x18\x97\x4b\x91\x4b\xa0\x35\xa7\x3c\xa1\x3c\xd1\x14\x2f\xf2\x05\x05\x15\x3c\xf0\x06\x00\x15\x19\x98\x45\xd7\x1c\x3c\xd1\x1c\x3c\xd1\x14\x3c\xf2\x07\x05\x15\x3c\xf0\x08\x00\x15\x19\x97\x4b\x91\x4b\xa0\x35\xa7\x3c\xa1\x3c\xd1\x14\x2f\xf2\x09\x05\x15\x3c\xf0\x0a\x00\x15\x19\xd7\x14\x25\xd1\x14\x25\xa8\x15\xd7\x29\x3b\xd1\x29\x3b\xd1\x14\x3b\xf0\x0b\x05\x0d\x3d\xf8\xf4\x0c\x00\x10\x1e\xf2\x00\x01\x09\x22\xdc\x13\x21\xd2\x0c\x21\xf0\x03\x01\x09\x22\xfa",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[19];
+ }
+importlib__bootstrap_toplevel_consts_30_consts_6_exceptiontable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 18,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x8e\x42\x15\x42\x24\x00\xc2\x24\x0f\x42\x36\x03\xc2\x35\x01\x42\x36\x03",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[6];
+ }
+const_str_other = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 5,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "other",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[5];
+ }
+const_str_smsl = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 4,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "smsl",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_30_consts_6_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ &_Py_ID(self),
+ & const_str_other._ascii.ob_base,
+ & const_str_smsl._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(370)
+importlib__bootstrap_toplevel_consts_30_consts_6 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 185,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_1_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_toplevel_consts_30_consts_6_names._object.ob_base.ob_base,
+ .co_exceptiontable = & importlib__bootstrap_toplevel_consts_30_consts_6_exceptiontable.ob_base.ob_base,
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 7 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 620,
+ .co_nlocalsplus = 3,
+ .co_nlocals = 3,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 49,
+ .co_localsplusnames = & importlib__bootstrap_toplevel_consts_30_consts_6_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_3_localspluskinds.ob_base.ob_base,
+ .co_filename = & importlib__bootstrap_toplevel_consts_1_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__eq__),
+ .co_qualname = & importlib__bootstrap_toplevel_consts_30_consts_6_qualname._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_toplevel_consts_30_consts_6_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7d\x02\x09\x00\x7c\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6b\x28\x00\x00\x78\x01\x72\x7b\x01\x00\x7c\x00\x6a\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x6a\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6b\x28\x00\x00\x78\x01\x72\x60\x01\x00\x7c\x00\x6a\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x6a\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6b\x28\x00\x00\x78\x01\x72\x45\x01\x00\x7c\x02\x7c\x01\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6b\x28\x00\x00\x78\x01\x72\x34\x01\x00\x7c\x00\x6a\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x6a\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6b\x28\x00\x00\x78\x01\x72\x19\x01\x00\x7c\x00\x6a\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x6a\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6b\x28\x00\x00\x53\x00\x23\x00\x74\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x72\x09\x01\x00\x74\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x63\x02\x59\x00\x53\x00\x77\x00\x78\x03\x59\x00\x77\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[20];
+ }
+const_str__bootstrap_external = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 19,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_bootstrap_external",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[20];
+ }
+const_str_NotImplementedError = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 19,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "NotImplementedError",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[12];
+ }
+const_str__get_cached = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 11,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_get_cached",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[6];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_30_consts_7_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 6,
+ },
+ .ob_item = {
+ & const_str__cached._ascii.ob_base,
+ &_Py_ID(origin),
+ & const_str__set_fileattr._ascii.ob_base,
+ & const_str__bootstrap_external._ascii.ob_base,
+ & const_str_NotImplementedError._ascii.ob_base,
+ & const_str__get_cached._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[18];
+ }
+importlib__bootstrap_toplevel_consts_30_consts_7_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 17,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "ModuleSpec.cached",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[75];
+ }
+importlib__bootstrap_toplevel_consts_30_consts_7_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 74,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xe0\x0b\x0f\x8f\x3c\x89\x3c\xd0\x0b\x1f\xd8\x0f\x13\x8f\x7b\x89\x7b\xd0\x0f\x26\xa8\x34\xd7\x2b\x3d\xd2\x2b\x3d\xdc\x13\x26\xd0\x13\x2e\xdc\x1a\x2d\xd0\x14\x2d\xdc\x1f\x32\xd7\x1f\x3e\xd1\x1f\x3e\xb8\x74\xbf\x7b\xb9\x7b\xd3\x1f\x4b\x90\x04\x94\x0c\xd8\x0f\x13\x8f\x7c\x89\x7c\xd0\x08\x1b",
+};
+static
+ struct _PyCode_DEF(194)
+importlib__bootstrap_toplevel_consts_30_consts_7 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 97,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_1_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_toplevel_consts_30_consts_7_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 4 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 3,
+ .co_firstlineno = 632,
+ .co_nlocalsplus = 1,
+ .co_nlocals = 1,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 50,
+ .co_localsplusnames = & importlib__bootstrap_toplevel_consts_7_consts_2_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_characters[32]),
+ .co_filename = & importlib__bootstrap_toplevel_consts_1_filename._ascii.ob_base,
+ .co_name = & const_str_cached._ascii.ob_base,
+ .co_qualname = & importlib__bootstrap_toplevel_consts_30_consts_7_qualname._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_toplevel_consts_30_consts_7_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x48\x7c\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x81\x3c\x7c\x00\x6a\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x72\x30\x74\x06\x00\x00\x00\x00\x00\x00\x00\x00\x80\x06\x74\x08\x00\x00\x00\x00\x00\x00\x00\x00\x82\x01\x74\x06\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7c\x00\x5f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_30_consts_8_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & const_str__cached._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[10];
+ }
+importlib__bootstrap_toplevel_consts_30_consts_8_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 9,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xe0\x17\x1d\x88\x04\x8d\x0c",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_30_consts_8_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ &_Py_ID(self),
+ & const_str_cached._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(18)
+importlib__bootstrap_toplevel_consts_30_consts_8 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 9,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_1_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_toplevel_consts_30_consts_8_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 4 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 2,
+ .co_firstlineno = 641,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 2,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 51,
+ .co_localsplusnames = & importlib__bootstrap_toplevel_consts_30_consts_8_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_14_consts_2_localspluskinds.ob_base.ob_base,
+ .co_filename = & importlib__bootstrap_toplevel_consts_1_filename._ascii.ob_base,
+ .co_name = & const_str_cached._ascii.ob_base,
+ .co_qualname = & importlib__bootstrap_toplevel_consts_30_consts_7_qualname._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_toplevel_consts_30_consts_8_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x01\x7c\x00\x5f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x79\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[33];
+ }
+importlib__bootstrap_toplevel_consts_30_consts_9_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 32,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "The name of the module's parent.",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_30_consts_9_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ & importlib__bootstrap_toplevel_consts_30_consts_9_consts_0._ascii.ob_base,
+ &_Py_STR(dot),
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 0],
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[11];
+ }
+const_str_rpartition = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 10,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "rpartition",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_30_consts_9_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ & const_str_submodule_search_locations._ascii.ob_base,
+ &_Py_ID(name),
+ & const_str_rpartition._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[18];
+ }
+importlib__bootstrap_toplevel_consts_30_consts_9_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 17,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "ModuleSpec.parent",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[53];
+ }
+importlib__bootstrap_toplevel_consts_30_consts_9_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 52,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf0\x06\x00\x0c\x10\xd7\x0b\x2a\xd1\x0b\x2a\xd0\x0b\x32\xd8\x13\x17\x97\x39\x91\x39\xd7\x13\x27\xd1\x13\x27\xa8\x03\xd3\x13\x2c\xa8\x51\xd1\x13\x2f\xd0\x0c\x2f\xe0\x13\x17\x97\x39\x91\x39\xd0\x0c\x1c",
+};
+static
+ struct _PyCode_DEF(110)
+importlib__bootstrap_toplevel_consts_30_consts_9 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 55,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_30_consts_9_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_toplevel_consts_30_consts_9_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 4 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 3,
+ .co_firstlineno = 645,
+ .co_nlocalsplus = 1,
+ .co_nlocals = 1,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 52,
+ .co_localsplusnames = & importlib__bootstrap_toplevel_consts_7_consts_2_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_characters[32]),
+ .co_filename = & importlib__bootstrap_toplevel_consts_1_filename._ascii.ob_base,
+ .co_name = &_Py_ID(parent),
+ .co_qualname = & importlib__bootstrap_toplevel_consts_30_consts_9_qualname._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_toplevel_consts_30_consts_9_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x1e\x7c\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x01\xab\x01\x00\x00\x00\x00\x00\x00\x64\x02\x19\x00\x00\x00\x53\x00\x7c\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_30_consts_10_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & const_str__set_fileattr._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[24];
+ }
+importlib__bootstrap_toplevel_consts_30_consts_10_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 23,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "ModuleSpec.has_location",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[15];
+ }
+importlib__bootstrap_toplevel_consts_30_consts_10_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 14,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xe0\x0f\x13\xd7\x0f\x21\xd1\x0f\x21\xd0\x08\x21",
+};
+static
+ struct _PyCode_DEF(26)
+importlib__bootstrap_toplevel_consts_30_consts_10 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 13,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_1_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_toplevel_consts_30_consts_10_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 2 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 1,
+ .co_firstlineno = 653,
+ .co_nlocalsplus = 1,
+ .co_nlocals = 1,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 53,
+ .co_localsplusnames = & importlib__bootstrap_toplevel_consts_7_consts_2_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_characters[32]),
+ .co_filename = & importlib__bootstrap_toplevel_consts_1_filename._ascii.ob_base,
+ .co_name = & const_str_has_location._ascii.ob_base,
+ .co_qualname = & importlib__bootstrap_toplevel_consts_30_consts_10_qualname._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_toplevel_consts_30_consts_10_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[5];
+ }
+const_str_bool = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 4,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "bool",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_30_consts_11_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & const_str_bool._ascii.ob_base,
+ & const_str__set_fileattr._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[15];
+ }
+importlib__bootstrap_toplevel_consts_30_consts_11_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 14,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xe4\x1d\x21\xa0\x25\x9b\x5b\x88\x04\xd5\x08\x1a",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_30_consts_11_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ &_Py_ID(self),
+ &_Py_ID(value),
+ },
+ },
+};
+static
+ struct _PyCode_DEF(36)
+importlib__bootstrap_toplevel_consts_30_consts_11 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 18,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_1_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_toplevel_consts_30_consts_11_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 5 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 3,
+ .co_firstlineno = 657,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 2,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 54,
+ .co_localsplusnames = & importlib__bootstrap_toplevel_consts_30_consts_11_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_14_consts_2_localspluskinds.ob_base.ob_base,
+ .co_filename = & importlib__bootstrap_toplevel_consts_1_filename._ascii.ob_base,
+ .co_name = & const_str_has_location._ascii.ob_base,
+ .co_qualname = & importlib__bootstrap_toplevel_consts_30_consts_10_qualname._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_toplevel_consts_30_consts_11_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\xab\x01\x00\x00\x00\x00\x00\x00\x7c\x00\x5f\x01\x00\x00\x00\x00\x00\x00\x00\x00\x79\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[12];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_30_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 12,
+ },
+ .ob_item = {
+ & const_str_ModuleSpec._ascii.ob_base,
+ & importlib__bootstrap_toplevel_consts_30_consts_1._ascii.ob_base,
+ Py_None,
+ & importlib__bootstrap_toplevel_consts_30_consts_3._object.ob_base.ob_base,
+ & importlib__bootstrap_toplevel_consts_30_consts_4.ob_base.ob_base,
+ & importlib__bootstrap_toplevel_consts_30_consts_5.ob_base.ob_base,
+ & importlib__bootstrap_toplevel_consts_30_consts_6.ob_base.ob_base,
+ & importlib__bootstrap_toplevel_consts_30_consts_7.ob_base.ob_base,
+ & importlib__bootstrap_toplevel_consts_30_consts_8.ob_base.ob_base,
+ & importlib__bootstrap_toplevel_consts_30_consts_9.ob_base.ob_base,
+ & importlib__bootstrap_toplevel_consts_30_consts_10.ob_base.ob_base,
+ & importlib__bootstrap_toplevel_consts_30_consts_11.ob_base.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[9];
+ }
+const_str_property = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 8,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "property",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[7];
+ }
+const_str_setter = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 6,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "setter",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[12];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_30_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 12,
+ },
+ .ob_item = {
+ &_Py_ID(__name__),
+ &_Py_ID(__module__),
+ &_Py_ID(__qualname__),
+ &_Py_ID(__doc__),
+ &_Py_ID(__init__),
+ &_Py_ID(__repr__),
+ &_Py_ID(__eq__),
+ & const_str_property._ascii.ob_base,
+ & const_str_cached._ascii.ob_base,
+ & const_str_setter._ascii.ob_base,
+ &_Py_ID(parent),
+ & const_str_has_location._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[144];
+ }
+importlib__bootstrap_toplevel_consts_30_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 143,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x84\x00\xf1\x02\x22\x05\x08\xf0\x48\x01\x00\x30\x34\xc0\x24\xd8\x1c\x20\xf4\x03\x0b\x05\x1c\xf2\x1a\x06\x05\x3f\xf2\x10\x0a\x05\x22\xf0\x18\x00\x06\x0e\xf1\x02\x06\x05\x1c\xf3\x03\x00\x06\x0e\xf0\x02\x06\x05\x1c\xf0\x10\x00\x06\x0c\x87\x5d\x81\x5d\xf1\x02\x01\x05\x1e\xf3\x03\x00\x06\x13\xf0\x02\x01\x05\x1e\xf0\x06\x00\x06\x0e\xf1\x02\x05\x05\x1d\xf3\x03\x00\x06\x0e\xf0\x02\x05\x05\x1d\xf0\x0e\x00\x06\x0e\xf1\x02\x01\x05\x22\xf3\x03\x00\x06\x0e\xf0\x02\x01\x05\x22\xf0\x06\x00\x06\x12\xd7\x05\x18\xd1\x05\x18\xf1\x02\x01\x05\x29\xf3\x03\x00\x06\x19\xf1\x02\x01\x05\x29",
+};
+static
+ struct _PyCode_DEF(164)
+importlib__bootstrap_toplevel_consts_30 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 82,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_30_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_toplevel_consts_30_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 0,
+ .co_argcount = 0,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 4 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 562,
+ .co_nlocalsplus = 0,
+ .co_nlocals = 0,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 55,
+ .co_localsplusnames = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_filename = & importlib__bootstrap_toplevel_consts_1_filename._ascii.ob_base,
+ .co_name = & const_str_ModuleSpec._ascii.ob_base,
+ .co_qualname = & const_str_ModuleSpec._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_toplevel_consts_30_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x65\x00\x5a\x01\x64\x00\x5a\x02\x64\x01\x5a\x03\x64\x02\x64\x02\x64\x02\x64\x03\x9c\x03\x64\x04\x84\x02\x5a\x04\x64\x05\x84\x00\x5a\x05\x64\x06\x84\x00\x5a\x06\x65\x07\x64\x07\x84\x00\xab\x00\x00\x00\x00\x00\x00\x00\x5a\x08\x65\x08\x6a\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x08\x84\x00\xab\x00\x00\x00\x00\x00\x00\x00\x5a\x08\x65\x07\x64\x09\x84\x00\xab\x00\x00\x00\x00\x00\x00\x00\x5a\x0a\x65\x07\x64\x0a\x84\x00\xab\x00\x00\x00\x00\x00\x00\x00\x5a\x0b\x65\x0b\x6a\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x0b\x84\x00\xab\x00\x00\x00\x00\x00\x00\x00\x5a\x0b\x79\x02",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_32 = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ &_Py_ID(origin),
+ & const_str_is_package._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[54];
+ }
+importlib__bootstrap_toplevel_consts_33_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 53,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Return a module spec based on various loader methods.",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[8];
+ }
+const_str__ORIGIN = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 7,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_ORIGIN",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[13];
+ }
+const_str_get_filename = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 12,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "get_filename",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_33_consts_4 = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & const_str_loader._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_33_consts_5 = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & const_str_loader._ascii.ob_base,
+ & const_str_submodule_search_locations._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[9];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_33_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 9,
+ },
+ .ob_item = {
+ & importlib__bootstrap_toplevel_consts_33_consts_0._ascii.ob_base,
+ Py_None,
+ & const_str__ORIGIN._ascii.ob_base,
+ & const_str_get_filename._ascii.ob_base,
+ & importlib__bootstrap_toplevel_consts_33_consts_4._object.ob_base.ob_base,
+ & importlib__bootstrap_toplevel_consts_33_consts_5._object.ob_base.ob_base,
+ & const_str_is_package._ascii.ob_base,
+ Py_False,
+ & importlib__bootstrap_toplevel_consts_32._object.ob_base.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[24];
+ }
+const_str_spec_from_file_location = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 23,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "spec_from_file_location",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[8];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_33_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 8,
+ },
+ .ob_item = {
+ &_Py_ID(getattr),
+ & const_str_hasattr._ascii.ob_base,
+ & const_str__bootstrap_external._ascii.ob_base,
+ & const_str_NotImplementedError._ascii.ob_base,
+ & const_str_spec_from_file_location._ascii.ob_base,
+ & const_str_is_package._ascii.ob_base,
+ & const_str_ImportError._ascii.ob_base,
+ & const_str_ModuleSpec._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[193];
+ }
+importlib__bootstrap_toplevel_consts_33_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 192,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xe0\x07\x0d\x80\x7e\xdc\x11\x18\x98\x16\xa0\x19\xa8\x44\xd3\x11\x31\x88\x06\xe1\x0b\x11\x94\x67\x98\x66\xa0\x6e\xd4\x16\x35\xdc\x0b\x1e\xd0\x0b\x26\xdc\x12\x25\xd0\x0c\x25\xdc\x22\x35\xd7\x22\x4d\xd1\x22\x4d\xd0\x08\x1f\xe0\x0b\x15\xd0\x0b\x1d\xd9\x13\x2a\xa8\x34\xb8\x06\xd4\x13\x3f\xd0\x0c\x3f\xd9\x17\x21\x91\x12\xa0\x74\x88\x06\xd9\x0f\x26\xa0\x74\xb0\x46\xd8\x42\x48\xf4\x03\x01\x10\x4a\x01\xf0\x00\x01\x09\x4a\x01\xf0\x06\x00\x08\x12\xd0\x07\x19\xdc\x0b\x12\x90\x36\x98\x3c\xd4\x0b\x28\xf0\x02\x03\x0d\x22\xd8\x1d\x23\xd7\x1d\x2e\xd1\x1d\x2e\xa8\x74\xd3\x1d\x34\x91\x0a\xf0\x0a\x00\x1a\x1f\x88\x4a\xe4\x0b\x15\x90\x64\x98\x46\xa8\x36\xb8\x6a\xd4\x0b\x49\xd0\x04\x49\xf8\xf4\x0d\x00\x14\x1f\xf2\x00\x01\x0d\x22\xd8\x1d\x21\x92\x0a\xf0\x03\x01\x0d\x22\xfa",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[19];
+ }
+importlib__bootstrap_toplevel_consts_33_exceptiontable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 18,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\xc1\x26\x11\x42\x09\x00\xc2\x09\x0b\x42\x17\x03\xc2\x16\x01\x42\x17\x03",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[7];
+ }
+const_str_search = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 6,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "search",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[6];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_33_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 6,
+ },
+ .ob_item = {
+ &_Py_ID(name),
+ & const_str_loader._ascii.ob_base,
+ &_Py_ID(origin),
+ & const_str_is_package._ascii.ob_base,
+ & const_str_spec_from_file_location._ascii.ob_base,
+ & const_str_search._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(308)
+importlib__bootstrap_toplevel_consts_33 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 154,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_33_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_toplevel_consts_33_names._object.ob_base.ob_base,
+ .co_exceptiontable = & importlib__bootstrap_toplevel_consts_33_exceptiontable.ob_base.ob_base,
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 2,
+ .co_framesize = 12 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 6,
+ .co_firstlineno = 662,
+ .co_nlocalsplus = 6,
+ .co_nlocals = 6,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 56,
+ .co_localsplusnames = & importlib__bootstrap_toplevel_consts_33_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_30_consts_4_localspluskinds.ob_base.ob_base,
+ .co_filename = & importlib__bootstrap_toplevel_consts_1_filename._ascii.ob_base,
+ .co_name = & const_str_spec_from_loader._ascii.ob_base,
+ .co_qualname = & const_str_spec_from_loader._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_toplevel_consts_33_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x02\x80\x0d\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x64\x02\x64\x01\xab\x03\x00\x00\x00\x00\x00\x00\x7d\x02\x7c\x02\x73\x45\x74\x03\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x64\x03\xab\x02\x00\x00\x00\x00\x00\x00\x72\x39\x74\x04\x00\x00\x00\x00\x00\x00\x00\x00\x80\x06\x74\x06\x00\x00\x00\x00\x00\x00\x00\x00\x82\x01\x74\x04\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7d\x04\x7c\x03\x80\x0a\x02\x00\x7c\x04\x7c\x00\x7c\x01\xac\x04\xab\x02\x00\x00\x00\x00\x00\x00\x53\x00\x7c\x03\x72\x02\x67\x00\x6e\x01\x64\x01\x7d\x05\x02\x00\x7c\x04\x7c\x00\x7c\x01\x7c\x05\xac\x05\xab\x03\x00\x00\x00\x00\x00\x00\x53\x00\x7c\x03\x80\x21\x74\x03\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x64\x06\xab\x02\x00\x00\x00\x00\x00\x00\x72\x13\x09\x00\x7c\x01\x6a\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x03\x6e\x02\x64\x07\x7d\x03\x74\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x7c\x01\x7c\x02\x7c\x03\xac\x08\xab\x04\x00\x00\x00\x00\x00\x00\x53\x00\x23\x00\x74\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x72\x05\x01\x00\x64\x01\x7d\x03\x59\x00\x8c\x1c\x77\x00\x78\x03\x59\x00\x77\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_34_consts_2 = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ &_Py_ID(origin),
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[4];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_34_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_item = {
+ Py_None,
+ & const_str__ORIGIN._ascii.ob_base,
+ & importlib__bootstrap_toplevel_consts_34_consts_2._object.ob_base.ob_base,
+ Py_False,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[11];
+ }
+const_str___cached__ = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 10,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "__cached__",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[5];
+ }
+const_str_list = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 4,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "list",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[13];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_34_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 13,
+ },
+ .ob_item = {
+ &_Py_ID(__spec__),
+ & const_str_AttributeError._ascii.ob_base,
+ &_Py_ID(__name__),
+ &_Py_ID(__loader__),
+ &_Py_ID(__file__),
+ &_Py_ID(getattr),
+ & const_str___cached__._ascii.ob_base,
+ & const_str_list._ascii.ob_base,
+ &_Py_ID(__path__),
+ & const_str_ModuleSpec._ascii.ob_base,
+ & const_str__set_fileattr._ascii.ob_base,
+ & const_str_cached._ascii.ob_base,
+ & const_str_submodule_search_locations._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[18];
+ }
+const_str__spec_from_module = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 17,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_spec_from_module",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[310];
+ }
+importlib__bootstrap_toplevel_consts_34_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 309,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf0\x04\x06\x05\x18\xd8\x0f\x15\x8f\x7f\x89\x7f\x88\x04\xf0\x08\x00\x0c\x10\xd0\x0b\x1b\xd8\x13\x17\x88\x4b\xe0\x0b\x11\x8f\x3f\x89\x3f\x80\x44\xd8\x07\x0d\x80\x7e\xf0\x02\x04\x09\x11\xd8\x15\x1b\xd7\x15\x26\xd1\x15\x26\x88\x46\xf0\x08\x03\x05\x18\xd8\x13\x19\x97\x3f\x91\x3f\x88\x08\xf0\x06\x00\x08\x0e\x80\x7e\xd8\x0b\x11\xd0\x0b\x1d\xdc\x15\x1c\x98\x56\xa0\x59\xb0\x04\xd3\x15\x35\x88\x46\xd9\x0f\x15\x98\x28\xd0\x1a\x2e\xd8\x15\x1d\x88\x46\xf0\x02\x03\x05\x16\xd8\x11\x17\xd7\x11\x22\xd1\x11\x22\x88\x06\xf0\x06\x03\x05\x2a\xdc\x25\x29\xa8\x26\xaf\x2f\xa9\x2f\xd3\x25\x3a\xd0\x08\x22\xf4\x08\x00\x0c\x16\x90\x64\x98\x46\xa8\x36\xd4\x0b\x32\x80\x44\xd8\x22\x2a\xd0\x22\x32\x99\x15\xb8\x16\xc0\x38\xd1\x39\x4b\x80\x44\xd4\x04\x16\xd8\x12\x18\x80\x44\x84\x4b\xd8\x26\x40\x80\x44\xd4\x04\x23\xd8\x0b\x0f\x80\x4b\xf8\xf4\x47\x01\x00\x0c\x1a\xf2\x00\x01\x05\x0d\xd9\x08\x0c\xf0\x03\x01\x05\x0d\xfb\xf4\x14\x00\x10\x1e\xf2\x00\x02\x09\x11\xe1\x0c\x10\xf0\x05\x02\x09\x11\xfb\xf4\x0a\x00\x0c\x1a\xf2\x00\x01\x05\x18\xd8\x13\x17\x8a\x08\xf0\x03\x01\x05\x18\xfb\xf4\x12\x00\x0c\x1a\xf2\x00\x01\x05\x16\xd8\x11\x15\x8a\x06\xf0\x03\x01\x05\x16\xfb\xf4\x08\x00\x0c\x1a\xf2\x00\x01\x05\x2a\xd8\x25\x29\xd2\x08\x22\xf0\x03\x01\x05\x2a\xfa",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[88];
+ }
+importlib__bootstrap_toplevel_consts_34_exceptiontable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 87,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x82\x0c\x42\x20\x00\xa1\x0c\x42\x2f\x00\xae\x0c\x42\x3e\x00\xc1\x12\x0c\x43\x0f\x00\xc1\x1f\x15\x43\x20\x00\xc2\x20\x09\x42\x2c\x03\xc2\x2b\x01\x42\x2c\x03\xc2\x2f\x09\x42\x3b\x03\xc2\x3a\x01\x42\x3b\x03\xc2\x3e\x0b\x43\x0c\x03\xc3\x0b\x01\x43\x0c\x03\xc3\x0f\x0b\x43\x1d\x03\xc3\x1c\x01\x43\x1d\x03\xc3\x20\x0b\x43\x2e\x03\xc3\x2d\x01\x43\x2e\x03",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[9];
+ }
+const_str_location = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 8,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "location",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[8];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_34_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 8,
+ },
+ .ob_item = {
+ &_Py_ID(module),
+ & const_str_loader._ascii.ob_base,
+ &_Py_ID(origin),
+ & const_str_spec._ascii.ob_base,
+ &_Py_ID(name),
+ & const_str_location._ascii.ob_base,
+ & const_str_cached._ascii.ob_base,
+ & const_str_submodule_search_locations._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(482)
+importlib__bootstrap_toplevel_consts_34 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 241,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_34_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_toplevel_consts_34_names._object.ob_base.ob_base,
+ .co_exceptiontable = & importlib__bootstrap_toplevel_consts_34_exceptiontable.ob_base.ob_base,
+ .co_flags = 3,
+ .co_argcount = 3,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 13 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 5,
+ .co_firstlineno = 691,
+ .co_nlocalsplus = 8,
+ .co_nlocals = 8,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 57,
+ .co_localsplusnames = & importlib__bootstrap_toplevel_consts_34_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_13_localspluskinds.ob_base.ob_base,
+ .co_filename = & importlib__bootstrap_toplevel_consts_1_filename._ascii.ob_base,
+ .co_name = & const_str__spec_from_module._ascii.ob_base,
+ .co_qualname = & const_str__spec_from_module._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_toplevel_consts_34_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x09\x00\x7c\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7d\x03\x7c\x03\x81\x02\x7c\x03\x53\x00\x7c\x00\x6a\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7d\x04\x7c\x01\x80\x0d\x09\x00\x7c\x00\x6a\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7d\x01\x09\x00\x7c\x00\x6a\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7d\x05\x7c\x02\x80\x15\x7c\x01\x81\x0d\x74\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x64\x01\x64\x00\xab\x03\x00\x00\x00\x00\x00\x00\x7d\x02\x7c\x02\x73\x04\x7c\x05\x81\x02\x7c\x05\x7d\x02\x09\x00\x7c\x00\x6a\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7d\x06\x09\x00\x74\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x6a\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x07\x74\x13\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x04\x7c\x01\x7c\x02\xac\x02\xab\x03\x00\x00\x00\x00\x00\x00\x7d\x03\x7c\x05\x80\x02\x64\x03\x6e\x04\x7c\x02\x7c\x05\x6b\x28\x00\x00\x7c\x03\x5f\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x06\x7c\x03\x5f\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x07\x7c\x03\x5f\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x03\x53\x00\x23\x00\x74\x02\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x72\x03\x01\x00\x59\x00\x8c\x99\x77\x00\x78\x03\x59\x00\x77\x01\x23\x00\x74\x02\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x72\x03\x01\x00\x59\x00\x8c\x8d\x77\x00\x78\x03\x59\x00\x77\x01\x23\x00\x74\x02\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x72\x05\x01\x00\x64\x00\x7d\x05\x59\x00\x8c\x91\x77\x00\x78\x03\x59\x00\x77\x01\x23\x00\x74\x02\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x72\x05\x01\x00\x64\x00\x7d\x06\x59\x00\x8c\x7e\x77\x00\x78\x03\x59\x00\x77\x01\x23\x00\x74\x02\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x72\x05\x01\x00\x64\x00\x7d\x07\x59\x00\x8c\x79\x77\x00\x78\x03\x59\x00\x77\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[9];
+ }
+const_str_override = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 8,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "override",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_36 = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & const_str_override._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[7];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_37_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 7,
+ },
+ .ob_item = {
+ Py_None,
+ &_Py_ID(__name__),
+ &_Py_ID(__loader__),
+ &_Py_ID(__package__),
+ &_Py_ID(__path__),
+ &_Py_ID(__file__),
+ & const_str___cached__._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[16];
+ }
+const_str_NamespaceLoader = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 15,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "NamespaceLoader",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[6];
+ }
+const_str__path = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 5,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_path",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[21];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_37_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 21,
+ },
+ .ob_item = {
+ &_Py_ID(getattr),
+ &_Py_ID(name),
+ &_Py_ID(__name__),
+ & const_str_AttributeError._ascii.ob_base,
+ & const_str_loader._ascii.ob_base,
+ & const_str_submodule_search_locations._ascii.ob_base,
+ & const_str__bootstrap_external._ascii.ob_base,
+ & const_str_NotImplementedError._ascii.ob_base,
+ & const_str_NamespaceLoader._ascii.ob_base,
+ &_Py_ID(__new__),
+ & const_str__path._ascii.ob_base,
+ &_Py_ID(__file__),
+ &_Py_ID(__loader__),
+ &_Py_ID(parent),
+ &_Py_ID(__package__),
+ &_Py_ID(__spec__),
+ &_Py_ID(__path__),
+ & const_str_has_location._ascii.ob_base,
+ &_Py_ID(origin),
+ & const_str_cached._ascii.ob_base,
+ & const_str___cached__._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[19];
+ }
+const_str__init_module_attrs = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 18,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_init_module_attrs",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[502];
+ }
+importlib__bootstrap_toplevel_consts_37_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 501,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf1\x08\x00\x09\x11\x94\x47\x98\x46\xa0\x4a\xb0\x04\xd3\x14\x35\xd0\x14\x3d\xf0\x02\x03\x09\x11\xd8\x1e\x22\x9f\x69\x99\x69\x88\x46\x8c\x4f\xf1\x08\x00\x08\x10\x94\x37\x98\x36\xa0\x3c\xb0\x14\xd3\x13\x36\xd0\x13\x3e\xd8\x11\x15\x97\x1b\x91\x1b\x88\x06\xd8\x0b\x11\x88\x3e\xe0\x0f\x13\xd7\x0f\x2e\xd1\x0f\x2e\xd0\x0f\x3a\xdc\x13\x26\xd0\x13\x2e\xdc\x1a\x2d\xd0\x14\x2d\xdc\x22\x35\xd7\x22\x45\xd1\x22\x45\x90\x0f\xe0\x19\x28\xd7\x19\x30\xd1\x19\x30\xb0\x1f\xd3\x19\x41\x90\x06\xd8\x1f\x23\xd7\x1f\x3e\xd1\x1f\x3e\x90\x06\x94\x0c\xd8\x1e\x24\x90\x04\x94\x0b\xf0\x16\x00\x23\x27\x90\x06\x94\x0f\xf0\x02\x03\x09\x11\xd8\x20\x26\x88\x46\xd4\x0c\x1d\xf1\x08\x00\x08\x10\x94\x37\x98\x36\xa0\x3d\xb0\x24\xd3\x13\x37\xd0\x13\x3f\xf0\x02\x03\x09\x11\xd8\x21\x25\xa7\x1b\xa1\x1b\x88\x46\xd4\x0c\x1e\xf0\x08\x03\x05\x0d\xd8\x1a\x1e\x88\x06\x8c\x0f\xf1\x08\x00\x08\x10\x94\x37\x98\x36\xa0\x3a\xa8\x74\xd3\x13\x34\xd0\x13\x3c\xd8\x0b\x0f\xd7\x0b\x2a\xd1\x0b\x2a\xd0\x0b\x36\xf0\x04\x03\x0d\x15\xd8\x22\x26\xd7\x22\x41\xd1\x22\x41\x90\x06\x94\x0f\xf0\x08\x00\x08\x0c\xd7\x07\x18\xd2\x07\x18\xd9\x0b\x13\x94\x77\x98\x76\xa0\x7a\xb0\x34\xd3\x17\x38\xd0\x17\x40\xf0\x02\x03\x0d\x15\xd8\x22\x26\xa7\x2b\xa1\x2b\x90\x06\x94\x0f\xf1\x08\x00\x0c\x14\x94\x77\x98\x76\xa0\x7c\xb0\x54\xd3\x17\x3a\xd0\x17\x42\xd8\x0f\x13\x8f\x7b\x89\x7b\xd0\x0f\x26\xf0\x02\x03\x11\x19\xd8\x28\x2c\xaf\x0b\xa9\x0b\x90\x46\xd4\x14\x25\xf0\x06\x00\x0c\x12\x80\x4d\x88\x36\x80\x4d\xf8\xf4\x7f\x01\x00\x10\x1e\xf2\x00\x01\x09\x11\xda\x0c\x10\xf0\x03\x01\x09\x11\xfb\xf4\x38\x00\x10\x1e\xf2\x00\x01\x09\x11\xd9\x0c\x10\xf0\x03\x01\x09\x11\xfb\xf4\x0c\x00\x10\x1e\xf2\x00\x01\x09\x11\xd9\x0c\x10\xf0\x03\x01\x09\x11\xfb\xf4\x0a\x00\x0c\x1a\xf2\x00\x01\x05\x0d\xd9\x08\x0c\xf0\x03\x01\x05\x0d\xfb\xf4\x10\x00\x14\x22\xf2\x00\x01\x0d\x15\xd9\x10\x14\xf0\x03\x01\x0d\x15\xfb\xf4\x0e\x00\x14\x22\xf2\x00\x01\x0d\x15\xd9\x10\x14\xf0\x03\x01\x0d\x15\xfb\xf4\x0e\x00\x18\x26\xf2\x00\x01\x11\x19\xd8\x14\x18\xd8\x0b\x11\x80\x4d\xf0\x05\x01\x11\x19\xfa",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[126];
+ }
+importlib__bootstrap_toplevel_consts_37_exceptiontable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 125,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x91\x11\x45\x13\x00\xc2\x18\x07\x45\x23\x00\xc2\x2f\x11\x45\x32\x00\xc3\x01\x07\x46\x01\x00\xc3\x24\x11\x46\x10\x00\xc4\x11\x11\x46\x1f\x00\xc4\x3e\x11\x46\x2e\x00\xc5\x13\x09\x45\x20\x03\xc5\x1f\x01\x45\x20\x03\xc5\x23\x09\x45\x2f\x03\xc5\x2e\x01\x45\x2f\x03\xc5\x32\x09\x45\x3e\x03\xc5\x3d\x01\x45\x3e\x03\xc6\x01\x09\x46\x0d\x03\xc6\x0c\x01\x46\x0d\x03\xc6\x10\x09\x46\x1c\x03\xc6\x1b\x01\x46\x1c\x03\xc6\x1f\x09\x46\x2b\x03\xc6\x2a\x01\x46\x2b\x03\xc6\x2e\x09\x46\x3b\x03\xc6\x3a\x01\x46\x3b\x03",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[5];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_37_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 5,
+ },
+ .ob_item = {
+ & const_str_spec._ascii.ob_base,
+ &_Py_ID(module),
+ & const_str_override._ascii.ob_base,
+ & const_str_loader._ascii.ob_base,
+ & const_str_NamespaceLoader._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(892)
+importlib__bootstrap_toplevel_consts_37 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 446,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_37_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_toplevel_consts_37_names._object.ob_base.ob_base,
+ .co_exceptiontable = & importlib__bootstrap_toplevel_consts_37_exceptiontable.ob_base.ob_base,
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 1,
+ .co_framesize = 10 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 5,
+ .co_firstlineno = 733,
+ .co_nlocalsplus = 5,
+ .co_nlocals = 5,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 58,
+ .co_localsplusnames = & importlib__bootstrap_toplevel_consts_37_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_7_consts_5_localspluskinds.ob_base.ob_base,
+ .co_filename = & importlib__bootstrap_toplevel_consts_1_filename._ascii.ob_base,
+ .co_name = & const_str__init_module_attrs._ascii.ob_base,
+ .co_qualname = & const_str__init_module_attrs._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_toplevel_consts_37_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x02\x73\x0d\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x64\x01\x64\x00\xab\x03\x00\x00\x00\x00\x00\x00\x80\x12\x09\x00\x7c\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x5f\x02\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x02\x73\x0d\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x64\x02\x64\x00\xab\x03\x00\x00\x00\x00\x00\x00\x80\x6e\x7c\x00\x6a\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7d\x03\x7c\x03\x80\x58\x7c\x00\x6a\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x81\x4c\x74\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x80\x06\x74\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x82\x01\x74\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7d\x04\x7c\x04\x6a\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x04\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x03\x7c\x00\x6a\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x03\x5f\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x03\x7c\x00\x5f\x04\x00\x00\x00\x00\x00\x00\x00\x00\x64\x00\x7c\x01\x5f\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x09\x00\x7c\x03\x7c\x01\x5f\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x02\x73\x0d\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x64\x03\x64\x00\xab\x03\x00\x00\x00\x00\x00\x00\x80\x12\x09\x00\x7c\x00\x6a\x1a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x5f\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x09\x00\x7c\x00\x7c\x01\x5f\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x02\x73\x0d\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x64\x04\x64\x00\xab\x03\x00\x00\x00\x00\x00\x00\x80\x1e\x7c\x00\x6a\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x81\x12\x09\x00\x7c\x00\x6a\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x5f\x10\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x6a\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x72\x50\x7c\x02\x73\x0d\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x64\x05\x64\x00\xab\x03\x00\x00\x00\x00\x00\x00\x80\x12\x09\x00\x7c\x00\x6a\x24\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x5f\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x02\x73\x0d\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x64\x06\x64\x00\xab\x03\x00\x00\x00\x00\x00\x00\x80\x20\x7c\x00\x6a\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x81\x14\x09\x00\x7c\x00\x6a\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x5f\x14\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x53\x00\x7c\x01\x53\x00\x23\x00\x74\x06\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x72\x04\x01\x00\x59\x00\x90\x01\x8c\x3d\x77\x00\x78\x03\x59\x00\x77\x01\x23\x00\x74\x06\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x72\x03\x01\x00\x59\x00\x8c\xcf\x77\x00\x78\x03\x59\x00\x77\x01\x23\x00\x74\x06\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x72\x03\x01\x00\x59\x00\x8c\xbd\x77\x00\x78\x03\x59\x00\x77\x01\x23\x00\x74\x06\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x72\x03\x01\x00\x59\x00\x8c\xc4\x77\x00\x78\x03\x59\x00\x77\x01\x23\x00\x74\x06\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x72\x03\x01\x00\x59\x00\x8c\xa6\x77\x00\x78\x03\x59\x00\x77\x01\x23\x00\x74\x06\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x72\x03\x01\x00\x59\x00\x8c\x88\x77\x00\x78\x03\x59\x00\x77\x01\x23\x00\x74\x06\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x72\x04\x01\x00\x59\x00\x7c\x01\x53\x00\x77\x00\x78\x03\x59\x00\x77\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[44];
+ }
+importlib__bootstrap_toplevel_consts_38_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 43,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Create a module based on the provided spec.",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[14];
+ }
+const_str_create_module = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 13,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "create_module",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[12];
+ }
+const_str_exec_module = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 11,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "exec_module",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[67];
+ }
+importlib__bootstrap_toplevel_consts_38_consts_4 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 66,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "loaders that define exec_module() must also define create_module()",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[5];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_38_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 5,
+ },
+ .ob_item = {
+ & importlib__bootstrap_toplevel_consts_38_consts_0._ascii.ob_base,
+ Py_None,
+ & const_str_create_module._ascii.ob_base,
+ & const_str_exec_module._ascii.ob_base,
+ & importlib__bootstrap_toplevel_consts_38_consts_4._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[7];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_38_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 7,
+ },
+ .ob_item = {
+ & const_str_hasattr._ascii.ob_base,
+ & const_str_loader._ascii.ob_base,
+ & const_str_create_module._ascii.ob_base,
+ & const_str_ImportError._ascii.ob_base,
+ & const_str__new_module._ascii.ob_base,
+ &_Py_ID(name),
+ & const_str__init_module_attrs._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[17];
+ }
+const_str_module_from_spec = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 16,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "module_from_spec",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[112];
+ }
+importlib__bootstrap_toplevel_consts_38_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 111,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf0\x06\x00\x0e\x12\x80\x46\xdc\x07\x0e\x88\x74\x8f\x7b\x89\x7b\x98\x4f\xd4\x07\x2c\xf0\x06\x00\x12\x16\x97\x1b\x91\x1b\xd7\x11\x2a\xd1\x11\x2a\xa8\x34\xd3\x11\x30\x89\x06\xdc\x09\x10\x90\x14\x97\x1b\x91\x1b\x98\x6d\xd4\x09\x2c\xdc\x0e\x19\xf0\x00\x01\x1b\x3d\xf3\x00\x01\x0f\x3e\xf0\x00\x01\x09\x3e\xe0\x07\x0d\x80\x7e\xdc\x11\x1c\x98\x54\x9f\x59\x99\x59\xd3\x11\x27\x88\x06\xdc\x04\x16\x90\x74\x98\x56\xd4\x04\x24\xd8\x0b\x11\x80\x4d",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_38_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & const_str_spec._ascii.ob_base,
+ &_Py_ID(module),
+ },
+ },
+};
+static
+ struct _PyCode_DEF(246)
+importlib__bootstrap_toplevel_consts_38 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 123,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_38_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_toplevel_consts_38_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 6 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 806,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 2,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 59,
+ .co_localsplusnames = & importlib__bootstrap_toplevel_consts_38_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_14_consts_2_localspluskinds.ob_base.ob_base,
+ .co_filename = & importlib__bootstrap_toplevel_consts_1_filename._ascii.ob_base,
+ .co_name = & const_str_module_from_spec._ascii.ob_base,
+ .co_qualname = & const_str_module_from_spec._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_toplevel_consts_38_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x64\x01\x7d\x01\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x02\xab\x02\x00\x00\x00\x00\x00\x00\x72\x1c\x7c\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x01\x6e\x21\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x03\xab\x02\x00\x00\x00\x00\x00\x00\x72\x0b\x74\x07\x00\x00\x00\x00\x00\x00\x00\x00\x64\x04\xab\x01\x00\x00\x00\x00\x00\x00\x82\x01\x7c\x01\x80\x15\x74\x09\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x6a\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x01\x74\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x7c\x01\xab\x02\x00\x00\x00\x00\x00\x00\x01\x00\x7c\x01\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[39];
+ }
+importlib__bootstrap_toplevel_consts_39_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 38,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Return the repr to use for the module.",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[19];
+ }
+importlib__bootstrap_toplevel_consts_39_consts_4 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 18,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = " (namespace) from ",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[8];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_39_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 8,
+ },
+ .ob_item = {
+ & importlib__bootstrap_toplevel_consts_39_consts_0._ascii.ob_base,
+ (PyObject *)&_Py_SINGLETON(strings).ascii[63],
+ & importlib__bootstrap_toplevel_consts_29_consts_5._ascii.ob_base,
+ (PyObject *)&_Py_SINGLETON(strings).ascii[62],
+ & importlib__bootstrap_toplevel_consts_39_consts_4._ascii.ob_base,
+ & importlib__bootstrap_toplevel_consts_29_consts_8._ascii.ob_base,
+ & importlib__bootstrap_toplevel_consts_29_consts_9._ascii.ob_base,
+ & importlib__bootstrap_toplevel_consts_29_consts_6._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[9];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_39_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 9,
+ },
+ .ob_item = {
+ &_Py_ID(name),
+ &_Py_ID(origin),
+ & const_str_loader._ascii.ob_base,
+ & const_str__bootstrap_external._ascii.ob_base,
+ &_Py_ID(isinstance),
+ & const_str_NamespaceLoader._ascii.ob_base,
+ & const_str_list._ascii.ob_base,
+ & const_str__path._ascii.ob_base,
+ & const_str_has_location._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[201];
+ }
+importlib__bootstrap_toplevel_consts_39_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 200,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xe0\x12\x16\x97\x29\x91\x29\xd0\x12\x23\x89\x33\xa8\x14\xaf\x19\xa9\x19\x80\x44\xd8\x07\x0b\x87\x7b\x81\x7b\xd0\x07\x1a\xd8\x11\x15\x97\x1b\x91\x1b\x88\x06\xd8\x0b\x11\x88\x3e\xd8\x15\x1d\x98\x64\x98\x58\xa0\x51\xd0\x13\x27\xd0\x0c\x27\xe4\x0c\x1f\xd0\x0c\x2b\xdc\x10\x1a\x98\x36\xd4\x23\x36\xd7\x23\x46\xd1\x23\x46\xd4\x10\x47\xe0\x15\x1d\x98\x64\x98\x58\xd0\x25\x37\xbc\x04\xb8\x56\xbf\x5c\xb9\x5c\xd3\x38\x4a\xd0\x37\x4b\xc8\x31\xd0\x13\x4d\xd0\x0c\x4d\xe0\x15\x1d\x98\x64\x98\x58\xa0\x52\xa8\x06\xa0\x7a\xb0\x12\xd0\x13\x34\xd0\x0c\x34\xe0\x0b\x0f\xd7\x0b\x1c\xd2\x0b\x1c\xd8\x15\x1d\x98\x64\x98\x58\xa0\x56\xa8\x44\xaf\x4b\xa9\x4b\xa8\x3f\xb8\x21\xd0\x13\x3c\xd0\x0c\x3c\xe0\x15\x1d\x98\x64\x9f\x69\x99\x69\x98\x5d\xa8\x22\xa8\x54\xaf\x5b\xa9\x5b\xa8\x4d\xb8\x12\xd0\x13\x3c\xd0\x0c\x3c",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_39_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ & const_str_spec._ascii.ob_base,
+ &_Py_ID(name),
+ & const_str_loader._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(376)
+importlib__bootstrap_toplevel_consts_39 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 188,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_39_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_toplevel_consts_39_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 9 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 6,
+ .co_firstlineno = 823,
+ .co_nlocalsplus = 3,
+ .co_nlocals = 3,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 60,
+ .co_localsplusnames = & importlib__bootstrap_toplevel_consts_39_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_3_localspluskinds.ob_base.ob_base,
+ .co_filename = & importlib__bootstrap_toplevel_consts_1_filename._ascii.ob_base,
+ .co_name = & const_str__module_repr_from_spec._ascii.ob_base,
+ .co_qualname = & const_str__module_repr_from_spec._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_toplevel_consts_39_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x02\x64\x01\x6e\x0b\x7c\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7d\x01\x7c\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x59\x7c\x00\x6a\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7d\x02\x7c\x02\x80\x06\x64\x02\x7c\x01\x9b\x02\x64\x03\x9d\x03\x53\x00\x74\x06\x00\x00\x00\x00\x00\x00\x00\x00\x81\x36\x74\x09\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x02\x74\x06\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x02\x00\x00\x00\x00\x00\x00\x72\x1c\x64\x02\x7c\x01\x9b\x02\x64\x04\x74\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x02\x6a\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x9b\x00\x64\x03\x9d\x05\x53\x00\x64\x02\x7c\x01\x9b\x02\x64\x05\x7c\x02\x9b\x02\x64\x06\x9d\x05\x53\x00\x7c\x00\x6a\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x72\x13\x64\x02\x7c\x01\x9b\x02\x64\x07\x7c\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9b\x02\x64\x03\x9d\x05\x53\x00\x64\x02\x7c\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9b\x02\x64\x05\x7c\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9b\x00\x64\x06\x9d\x05\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[71];
+ }
+importlib__bootstrap_toplevel_consts_40_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 70,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Execute the spec's specified module in an existing module's namespace.",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[8];
+ }
+importlib__bootstrap_toplevel_consts_40_consts_1 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 7,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "module ",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[20];
+ }
+importlib__bootstrap_toplevel_consts_40_consts_2 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 19,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = " not in sys.modules",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[15];
+ }
+importlib__bootstrap_toplevel_consts_40_consts_5 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 14,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "missing loader",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[56];
+ }
+importlib__bootstrap_toplevel_consts_40_consts_9 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 55,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = ".exec_module() not found; falling back to load_module()",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[10];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_40_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 10,
+ },
+ .ob_item = {
+ & importlib__bootstrap_toplevel_consts_40_consts_0._ascii.ob_base,
+ & importlib__bootstrap_toplevel_consts_40_consts_1._ascii.ob_base,
+ & importlib__bootstrap_toplevel_consts_40_consts_2._ascii.ob_base,
+ & importlib__bootstrap_toplevel_consts_4_localsplusnames._object.ob_base.ob_base,
+ Py_None,
+ & importlib__bootstrap_toplevel_consts_40_consts_5._ascii.ob_base,
+ Py_True,
+ & importlib__bootstrap_toplevel_consts_36._object.ob_base.ob_base,
+ & const_str_exec_module._ascii.ob_base,
+ & importlib__bootstrap_toplevel_consts_40_consts_9._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[14];
+ }
+const_str_ImportWarning = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 13,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "ImportWarning",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[12];
+ }
+const_str_load_module = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 11,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "load_module",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[17];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_40_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 17,
+ },
+ .ob_item = {
+ &_Py_ID(name),
+ & const_str__ModuleLockManager._ascii.ob_base,
+ & const_str_sys._ascii.ob_base,
+ &_Py_ID(modules),
+ &_Py_ID(get),
+ & const_str_ImportError._ascii.ob_base,
+ & const_str_loader._ascii.ob_base,
+ & const_str_submodule_search_locations._ascii.ob_base,
+ & const_str__init_module_attrs._ascii.ob_base,
+ & const_str_hasattr._ascii.ob_base,
+ & const_str__object_name._ascii.ob_base,
+ & const_str__warnings._ascii.ob_base,
+ & const_str_warn._ascii.ob_base,
+ & const_str_ImportWarning._ascii.ob_base,
+ & const_str_load_module._ascii.ob_base,
+ & const_str_exec_module._ascii.ob_base,
+ & const_str_pop._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[345];
+ }
+importlib__bootstrap_toplevel_consts_40_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 344,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xe0\x0b\x0f\x8f\x39\x89\x39\x80\x44\xdc\x09\x1b\x98\x44\xd3\x09\x21\xf1\x00\x17\x05\x2c\xdc\x0b\x0e\x8f\x3b\x89\x3b\x8f\x3f\x89\x3f\x98\x34\xd3\x0b\x20\xa8\x06\xd1\x0b\x2e\xd8\x14\x1b\x98\x44\x98\x38\xd0\x23\x36\xd0\x12\x37\x88\x43\xdc\x12\x1d\x98\x63\xa8\x04\xd4\x12\x2d\xd0\x0c\x2d\xf0\x02\x13\x09\x2c\xd8\x0f\x13\x8f\x7b\x89\x7b\xd0\x0f\x22\xd8\x13\x17\xd7\x13\x32\xd1\x13\x32\xd0\x13\x3a\xdc\x1a\x25\xd0\x26\x36\xb8\x54\xbf\x59\xb9\x59\xd4\x1a\x47\xd0\x14\x47\xe4\x10\x22\xa0\x34\xa8\x16\xb8\x24\xd6\x10\x3f\xe4\x10\x22\xa0\x34\xa8\x16\xb8\x24\xd5\x10\x3f\xdc\x17\x1e\x98\x74\x9f\x7b\x99\x7b\xa8\x4d\xd4\x17\x3a\xdc\x1e\x2a\xa8\x34\xaf\x3b\xa9\x3b\xd3\x1e\x37\xd0\x1d\x38\xf0\x00\x01\x39\x3b\xf0\x00\x01\x1c\x3b\x90\x43\xe4\x14\x1d\x97\x4e\x91\x4e\xa0\x33\xac\x0d\xd4\x14\x36\xd8\x14\x18\x97\x4b\x91\x4b\xd7\x14\x2b\xd1\x14\x2b\xa8\x44\xd5\x14\x31\xe0\x14\x18\x97\x4b\x91\x4b\xd7\x14\x2b\xd1\x14\x2b\xa8\x46\xd4\x14\x33\xf4\x08\x00\x16\x19\x97\x5b\x91\x5b\x97\x5f\x91\x5f\xa0\x54\xa7\x59\xa1\x59\xd3\x15\x2f\x88\x46\xd8\x25\x2b\x8c\x43\x8f\x4b\x89\x4b\x98\x04\x9f\x09\x99\x09\xd2\x0c\x22\xf7\x2f\x17\x05\x2c\xf0\x30\x00\x0c\x12\x80\x4d\xf8\xf4\x05\x00\x16\x19\x97\x5b\x91\x5b\x97\x5f\x91\x5f\xa0\x54\xa7\x59\xa1\x59\xd3\x15\x2f\x88\x46\xd8\x25\x2b\x8c\x43\x8f\x4b\x89\x4b\x98\x04\x9f\x09\x99\x09\xd2\x0c\x22\xfa\xf7\x2f\x17\x05\x2c\xf0\x30\x00\x0c\x12\x80\x4d\xfa",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[39];
+ }
+importlib__bootstrap_toplevel_consts_40_exceptiontable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 38,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x98\x35\x46\x35\x03\xc1\x0e\x43\x0b\x45\x2a\x02\xc4\x19\x41\x06\x46\x35\x03\xc5\x2a\x41\x08\x46\x32\x05\xc6\x32\x03\x46\x35\x03\xc6\x35\x05\x46\x3f\x07",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[4];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_40_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_item = {
+ & const_str_spec._ascii.ob_base,
+ &_Py_ID(module),
+ &_Py_ID(name),
+ &_Py_ID(msg),
+ },
+ },
+};
+static
+ struct _PyCode_DEF(900)
+importlib__bootstrap_toplevel_consts_40 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 450,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_40_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_toplevel_consts_40_names._object.ob_base.ob_base,
+ .co_exceptiontable = & importlib__bootstrap_toplevel_consts_40_exceptiontable.ob_base.ob_base,
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 10 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 6,
+ .co_firstlineno = 845,
+ .co_nlocalsplus = 4,
+ .co_nlocals = 4,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 61,
+ .co_localsplusnames = & importlib__bootstrap_toplevel_consts_40_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_7_consts_3_localspluskinds.ob_base.ob_base,
+ .co_filename = & importlib__bootstrap_toplevel_consts_1_filename._ascii.ob_base,
+ .co_name = & const_str__exec._ascii.ob_base,
+ .co_qualname = & const_str__exec._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_toplevel_consts_40_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7d\x02\x74\x03\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x02\xab\x01\x00\x00\x00\x00\x00\x00\x35\x00\x01\x00\x74\x04\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x02\xab\x01\x00\x00\x00\x00\x00\x00\x7c\x01\x75\x01\x72\x13\x64\x01\x7c\x02\x9b\x02\x64\x02\x9d\x03\x7d\x03\x74\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x03\x7c\x02\xac\x03\xab\x02\x00\x00\x00\x00\x00\x00\x82\x01\x09\x00\x7c\x00\x6a\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x32\x7c\x00\x6a\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x17\x74\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x64\x05\x7c\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xac\x03\xab\x02\x00\x00\x00\x00\x00\x00\x82\x01\x74\x11\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x7c\x01\x64\x06\xac\x07\xab\x03\x00\x00\x00\x00\x00\x00\x01\x00\x6e\x8d\x74\x11\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x7c\x01\x64\x06\xac\x07\xab\x03\x00\x00\x00\x00\x00\x00\x01\x00\x74\x13\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x6a\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x08\xab\x02\x00\x00\x00\x00\x00\x00\x73\x4e\x74\x15\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x6a\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x9b\x00\x64\x09\x9d\x02\x7d\x03\x74\x16\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x03\x74\x1a\x00\x00\x00\x00\x00\x00\x00\x00\xab\x02\x00\x00\x00\x00\x00\x00\x01\x00\x7c\x00\x6a\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x1d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x02\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x6e\x1b\x7c\x00\x6a\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x74\x04\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x21\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x01\x7c\x01\x74\x04\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3c\x00\x00\x00\x09\x00\x64\x04\x64\x04\x64\x04\xab\x02\x00\x00\x00\x00\x00\x00\x01\x00\x7c\x01\x53\x00\x23\x00\x74\x04\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x21\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x01\x7c\x01\x74\x04\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3c\x00\x00\x00\x77\x00\x78\x03\x59\x00\x77\x01\x23\x00\x31\x00\x73\x01\x77\x02\x01\x00\x59\x00\x01\x00\x01\x00\x7c\x01\x53\x00\x78\x03\x59\x00\x77\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[7];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_41_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 7,
+ },
+ .ob_item = {
+ Py_None,
+ &_Py_ID(__loader__),
+ &_Py_ID(__package__),
+ &_Py_ID(__path__),
+ &_Py_STR(dot),
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 0],
+ &_Py_ID(__spec__),
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[14];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_41_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 14,
+ },
+ .ob_item = {
+ & const_str_loader._ascii.ob_base,
+ & const_str_load_module._ascii.ob_base,
+ &_Py_ID(name),
+ & const_str_sys._ascii.ob_base,
+ &_Py_ID(modules),
+ & const_str_pop._ascii.ob_base,
+ &_Py_ID(getattr),
+ &_Py_ID(__loader__),
+ & const_str_AttributeError._ascii.ob_base,
+ &_Py_ID(__name__),
+ &_Py_ID(__package__),
+ & const_str_hasattr._ascii.ob_base,
+ & const_str_rpartition._ascii.ob_base,
+ &_Py_ID(__spec__),
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[26];
+ }
+const_str__load_backward_compatible = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 25,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_load_backward_compatible",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[346];
+ }
+importlib__bootstrap_toplevel_consts_41_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 345,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf0\x06\x06\x05\x0e\xd8\x08\x0c\x8f\x0b\x89\x0b\xd7\x08\x1f\xd1\x08\x1f\xa0\x04\xa7\x09\xa1\x09\xd4\x08\x2a\xf4\x10\x00\x0e\x11\x8f\x5b\x89\x5b\x8f\x5f\x89\x5f\x98\x54\x9f\x59\x99\x59\xd3\x0d\x27\x80\x46\xd8\x1d\x23\x84\x43\x87\x4b\x81\x4b\x90\x04\x97\x09\x91\x09\xd1\x04\x1a\xdc\x07\x0e\x88\x76\x90\x7c\xa0\x54\xd3\x07\x2a\xd0\x07\x32\xf0\x02\x03\x09\x11\xd8\x20\x24\xa7\x0b\xa1\x0b\x88\x46\xd4\x0c\x1d\xf4\x06\x00\x08\x0f\x88\x76\x90\x7d\xa0\x64\xd3\x07\x2b\xd0\x07\x33\xf0\x02\x08\x09\x11\xf0\x08\x00\x22\x28\xa7\x1f\xa1\x1f\x88\x46\xd4\x0c\x1e\xdc\x13\x1a\x98\x36\xa0\x3a\xd4\x13\x2e\xd8\x25\x29\xa7\x59\xa1\x59\xd7\x25\x39\xd1\x25\x39\xb8\x23\xd3\x25\x3e\xb8\x71\xd1\x25\x41\x90\x06\xd4\x10\x22\xf4\x06\x00\x08\x0f\x88\x76\x90\x7a\xa0\x34\xd3\x07\x28\xd0\x07\x30\xf0\x02\x03\x09\x11\xd8\x1e\x22\x88\x46\x8c\x4f\xf0\x06\x00\x0c\x12\x80\x4d\x88\x36\x80\x4d\xf8\xf0\x3b\x04\x05\x0e\xd8\x0b\x0f\x8f\x39\x89\x39\x9c\x03\x9f\x0b\x99\x0b\xd1\x0b\x23\xdc\x15\x18\x97\x5b\x91\x5b\x97\x5f\x91\x5f\xa0\x54\xa7\x59\xa1\x59\xd3\x15\x2f\x88\x46\xd8\x25\x2b\x8c\x43\x8f\x4b\x89\x4b\x98\x04\x9f\x09\x99\x09\xd1\x0c\x22\xd8\x08\x0d\xfb\xf4\x10\x00\x10\x1e\xf2\x00\x01\x09\x11\xd9\x0c\x10\xf0\x03\x01\x09\x11\xfb\xf4\x14\x00\x10\x1e\xf2\x00\x01\x09\x11\xd9\x0c\x10\xf0\x03\x01\x09\x11\xfb\xf4\x0a\x00\x10\x1e\xf2\x00\x01\x09\x11\xd8\x0c\x10\xd8\x0b\x11\x80\x4d\xf0\x05\x01\x09\x11\xfa",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[68];
+ }
+importlib__bootstrap_toplevel_consts_41_exceptiontable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 67,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x82\x25\x43\x33\x00\xc1\x3b\x11\x45\x1b\x00\xc2\x1a\x41\x00\x45\x2a\x00\xc3\x28\x07\x45\x39\x00\xc3\x33\x41\x25\x45\x18\x03\xc5\x1b\x09\x45\x27\x03\xc5\x26\x01\x45\x27\x03\xc5\x2a\x09\x45\x36\x03\xc5\x35\x01\x45\x36\x03\xc5\x39\x09\x46\x06\x03\xc6\x05\x01\x46\x06\x03",
+};
+static
+ struct _PyCode_DEF(786)
+importlib__bootstrap_toplevel_consts_41 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 393,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_41_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_toplevel_consts_41_names._object.ob_base.ob_base,
+ .co_exceptiontable = & importlib__bootstrap_toplevel_consts_41_exceptiontable.ob_base.ob_base,
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 7 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 5,
+ .co_firstlineno = 875,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 2,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 62,
+ .co_localsplusnames = & importlib__bootstrap_toplevel_consts_38_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_14_consts_2_localspluskinds.ob_base.ob_base,
+ .co_filename = & importlib__bootstrap_toplevel_consts_1_filename._ascii.ob_base,
+ .co_name = & const_str__load_backward_compatible._ascii.ob_base,
+ .co_qualname = & const_str__load_backward_compatible._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_toplevel_consts_41_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x09\x00\x7c\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x6a\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x74\x06\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x6a\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x01\x7c\x01\x74\x06\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x6a\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3c\x00\x00\x00\x74\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x64\x01\x64\x00\xab\x03\x00\x00\x00\x00\x00\x00\x80\x12\x09\x00\x7c\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x5f\x07\x00\x00\x00\x00\x00\x00\x00\x00\x74\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x64\x02\x64\x00\xab\x03\x00\x00\x00\x00\x00\x00\x80\x41\x09\x00\x7c\x01\x6a\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x5f\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x74\x17\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x64\x03\xab\x02\x00\x00\x00\x00\x00\x00\x73\x23\x7c\x00\x6a\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x04\xab\x01\x00\x00\x00\x00\x00\x00\x64\x05\x19\x00\x00\x00\x7c\x01\x5f\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x74\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x64\x06\x64\x00\xab\x03\x00\x00\x00\x00\x00\x00\x80\x0a\x09\x00\x7c\x00\x7c\x01\x5f\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x53\x00\x7c\x01\x53\x00\x23\x00\x01\x00\x7c\x00\x6a\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x74\x06\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x76\x00\x72\x46\x74\x06\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x6a\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x01\x7c\x01\x74\x06\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x6a\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3c\x00\x00\x00\x82\x00\x78\x03\x59\x00\x77\x01\x23\x00\x74\x10\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x72\x03\x01\x00\x59\x00\x8c\xda\x77\x00\x78\x03\x59\x00\x77\x01\x23\x00\x74\x10\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x72\x03\x01\x00\x59\x00\x8c\x9b\x77\x00\x78\x03\x59\x00\x77\x01\x23\x00\x74\x10\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x72\x04\x01\x00\x59\x00\x7c\x01\x53\x00\x77\x00\x78\x03\x59\x00\x77\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[19];
+ }
+importlib__bootstrap_toplevel_consts_42_consts_6 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 18,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "import {!r} # {!r}",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[8];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_42_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 8,
+ },
+ .ob_item = {
+ Py_None,
+ & const_str_exec_module._ascii.ob_base,
+ & importlib__bootstrap_toplevel_consts_40_consts_9._ascii.ob_base,
+ Py_True,
+ & importlib__bootstrap_toplevel_consts_40_consts_5._ascii.ob_base,
+ & importlib__bootstrap_toplevel_consts_4_localsplusnames._object.ob_base.ob_base,
+ & importlib__bootstrap_toplevel_consts_42_consts_6._ascii.ob_base,
+ Py_False,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[18];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_42_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 18,
+ },
+ .ob_item = {
+ & const_str_loader._ascii.ob_base,
+ & const_str_hasattr._ascii.ob_base,
+ & const_str__object_name._ascii.ob_base,
+ & const_str__warnings._ascii.ob_base,
+ & const_str_warn._ascii.ob_base,
+ & const_str_ImportWarning._ascii.ob_base,
+ & const_str__load_backward_compatible._ascii.ob_base,
+ & const_str_module_from_spec._ascii.ob_base,
+ &_Py_ID(_initializing),
+ & const_str_sys._ascii.ob_base,
+ &_Py_ID(modules),
+ &_Py_ID(name),
+ & const_str_submodule_search_locations._ascii.ob_base,
+ & const_str_ImportError._ascii.ob_base,
+ & const_str_exec_module._ascii.ob_base,
+ & const_str_KeyError._ascii.ob_base,
+ & const_str_pop._ascii.ob_base,
+ & const_str__verbose_message._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[15];
+ }
+const_str__load_unlocked = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 14,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_load_unlocked",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[329];
+ }
+importlib__bootstrap_toplevel_consts_42_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 328,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xe0\x07\x0b\x87\x7b\x81\x7b\xd0\x07\x1e\xe4\x0f\x16\x90\x74\x97\x7b\x91\x7b\xa0\x4d\xd4\x0f\x32\xdc\x16\x22\xa0\x34\xa7\x3b\xa1\x3b\xd3\x16\x2f\xd0\x15\x30\xf0\x00\x01\x31\x34\xf0\x00\x01\x14\x34\x88\x43\xe4\x0c\x15\x8f\x4e\x89\x4e\x98\x33\xa4\x0d\xd4\x0c\x2e\xdc\x13\x2c\xa8\x54\xd3\x13\x32\xd0\x0c\x32\xe4\x0d\x1d\x98\x64\xd3\x0d\x23\x80\x46\xf0\x0a\x00\x1a\x1e\x80\x44\xd4\x04\x16\xf0\x02\x17\x05\x23\xd8\x21\x27\x8c\x03\x8f\x0b\x89\x0b\x90\x44\x97\x49\x91\x49\xd1\x08\x1e\xf0\x02\x0c\x09\x12\xd8\x0f\x13\x8f\x7b\x89\x7b\xd0\x0f\x22\xd8\x13\x17\xd7\x13\x32\xd1\x13\x32\xd0\x13\x3a\xdc\x1a\x25\xd0\x26\x36\xb8\x54\xbf\x59\xb9\x59\xd4\x1a\x47\xd0\x14\x47\xf0\x06\x00\x11\x15\x97\x0b\x91\x0b\xd7\x10\x27\xd1\x10\x27\xa8\x06\xd4\x10\x2f\xf4\x16\x00\x12\x15\x97\x1b\x91\x1b\x97\x1f\x91\x1f\xa0\x14\xa7\x19\xa1\x19\xd3\x11\x2b\x88\x06\xd8\x21\x27\x8c\x03\x8f\x0b\x89\x0b\x90\x44\x97\x49\x91\x49\xd1\x08\x1e\xdc\x08\x18\xd0\x19\x2d\xa8\x74\xaf\x79\xa9\x79\xb8\x24\xbf\x2b\xb9\x2b\xd4\x08\x46\xe0\x1d\x22\x88\x04\xd4\x08\x1a\xe0\x0b\x11\x80\x4d\xf8\xf0\x21\x05\x09\x12\xf0\x02\x03\x0d\x15\xdc\x14\x17\x97\x4b\x91\x4b\xa0\x04\xa7\x09\xa1\x09\xd0\x14\x2a\xf0\x06\x00\x0d\x12\xf8\xf4\x05\x00\x14\x1c\xf2\x00\x01\x0d\x15\xd8\x10\x14\xd8\x0c\x11\xf0\x05\x01\x0d\x15\xfe\xf0\x16\x00\x1e\x23\x88\x04\xd5\x08\x1a\xfa",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[75];
+ }
+importlib__bootstrap_toplevel_consts_42_exceptiontable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 74,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\xc1\x33\x1d\x45\x3c\x00\xc2\x11\x41\x0a\x45\x0b\x00\xc3\x1b\x41\x27\x45\x3c\x00\xc5\x0b\x02\x45\x39\x03\xc5\x0e\x1b\x45\x2a\x02\xc5\x29\x01\x45\x39\x03\xc5\x2a\x09\x45\x36\x05\xc5\x33\x02\x45\x39\x03\xc5\x35\x01\x45\x36\x05\xc5\x36\x03\x45\x39\x03\xc5\x39\x03\x45\x3c\x00\xc5\x3c\x09\x46\x05\x03",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_42_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ & const_str_spec._ascii.ob_base,
+ &_Py_ID(msg),
+ &_Py_ID(module),
+ },
+ },
+};
+static
+ struct _PyCode_DEF(784)
+importlib__bootstrap_toplevel_consts_42 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 392,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_42_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_toplevel_consts_42_names._object.ob_base.ob_base,
+ .co_exceptiontable = & importlib__bootstrap_toplevel_consts_42_exceptiontable.ob_base.ob_base,
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 8 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 5,
+ .co_firstlineno = 911,
+ .co_nlocalsplus = 3,
+ .co_nlocals = 3,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 63,
+ .co_localsplusnames = & importlib__bootstrap_toplevel_consts_42_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_3_localspluskinds.ob_base.ob_base,
+ .co_filename = & importlib__bootstrap_toplevel_consts_1_filename._ascii.ob_base,
+ .co_name = & const_str__load_unlocked._ascii.ob_base,
+ .co_qualname = & const_str__load_unlocked._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_toplevel_consts_42_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x81\x53\x74\x03\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x01\xab\x02\x00\x00\x00\x00\x00\x00\x73\x3d\x74\x05\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x9b\x00\x64\x02\x9d\x02\x7d\x01\x74\x06\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x74\x0a\x00\x00\x00\x00\x00\x00\x00\x00\xab\x02\x00\x00\x00\x00\x00\x00\x01\x00\x74\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x53\x00\x74\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x02\x64\x03\x7c\x00\x5f\x08\x00\x00\x00\x00\x00\x00\x00\x00\x09\x00\x7c\x02\x74\x12\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x14\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x6a\x16\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3c\x00\x00\x00\x09\x00\x7c\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x23\x7c\x00\x6a\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x32\x74\x1b\x00\x00\x00\x00\x00\x00\x00\x00\x64\x04\x7c\x00\x6a\x16\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xac\x05\xab\x02\x00\x00\x00\x00\x00\x00\x82\x01\x7c\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x1d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x02\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x74\x12\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x14\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x21\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x6a\x16\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x02\x7c\x02\x74\x12\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x14\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x6a\x16\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3c\x00\x00\x00\x74\x23\x00\x00\x00\x00\x00\x00\x00\x00\x64\x06\x7c\x00\x6a\x16\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x03\x00\x00\x00\x00\x00\x00\x01\x00\x64\x07\x7c\x00\x5f\x08\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x02\x53\x00\x23\x00\x01\x00\x09\x00\x74\x12\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x14\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x6a\x16\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x82\x00\x23\x00\x74\x1e\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x72\x03\x01\x00\x59\x00\x82\x00\x77\x00\x78\x03\x59\x00\x77\x01\x78\x03\x59\x00\x77\x01\x23\x00\x64\x07\x7c\x00\x5f\x08\x00\x00\x00\x00\x00\x00\x00\x00\x77\x00\x78\x03\x59\x00\x77\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[192];
+ }
+importlib__bootstrap_toplevel_consts_43_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 191,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x52\x65\x74\x75\x72\x6e\x20\x61\x20\x6e\x65\x77\x20\x6d\x6f\x64\x75\x6c\x65\x20\x6f\x62\x6a\x65\x63\x74\x2c\x20\x6c\x6f\x61\x64\x65\x64\x20\x62\x79\x20\x74\x68\x65\x20\x73\x70\x65\x63\x27\x73\x20\x6c\x6f\x61\x64\x65\x72\x2e\x0a\x0a\x20\x20\x20\x20\x54\x68\x65\x20\x6d\x6f\x64\x75\x6c\x65\x20\x69\x73\x20\x6e\x6f\x74\x20\x61\x64\x64\x65\x64\x20\x74\x6f\x20\x69\x74\x73\x20\x70\x61\x72\x65\x6e\x74\x2e\x0a\x0a\x20\x20\x20\x20\x49\x66\x20\x61\x20\x6d\x6f\x64\x75\x6c\x65\x20\x69\x73\x20\x61\x6c\x72\x65\x61\x64\x79\x20\x69\x6e\x20\x73\x79\x73\x2e\x6d\x6f\x64\x75\x6c\x65\x73\x2c\x20\x74\x68\x61\x74\x20\x65\x78\x69\x73\x74\x69\x6e\x67\x20\x6d\x6f\x64\x75\x6c\x65\x20\x67\x65\x74\x73\x0a\x20\x20\x20\x20\x63\x6c\x6f\x62\x62\x65\x72\x65\x64\x2e\x0a\x0a\x20\x20\x20\x20",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_43_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & importlib__bootstrap_toplevel_consts_43_consts_0._ascii.ob_base,
+ Py_None,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_43_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ & const_str__ModuleLockManager._ascii.ob_base,
+ &_Py_ID(name),
+ & const_str__load_unlocked._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[46];
+ }
+importlib__bootstrap_toplevel_consts_43_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 45,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf4\x12\x00\x0a\x1c\x98\x44\x9f\x49\x99\x49\xd3\x09\x26\xf1\x00\x01\x05\x24\xdc\x0f\x1d\x98\x64\xd3\x0f\x23\xf7\x03\x01\x05\x24\xf7\x00\x01\x05\x24\xf2\x00\x01\x05\x24\xfa",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[9];
+ }
+importlib__bootstrap_toplevel_consts_43_exceptiontable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 8,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x96\x0b\x2b\x03\xab\x05\x34\x07",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_43_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & const_str_spec._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(110)
+importlib__bootstrap_toplevel_consts_43 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 55,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_43_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_toplevel_consts_43_names._object.ob_base.ob_base,
+ .co_exceptiontable = & importlib__bootstrap_toplevel_consts_43_exceptiontable.ob_base.ob_base,
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 7 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 6,
+ .co_firstlineno = 956,
+ .co_nlocalsplus = 1,
+ .co_nlocals = 1,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 64,
+ .co_localsplusnames = & importlib__bootstrap_toplevel_consts_43_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_characters[32]),
+ .co_filename = & importlib__bootstrap_toplevel_consts_1_filename._ascii.ob_base,
+ .co_name = & const_str__load._ascii.ob_base,
+ .co_qualname = & const_str__load._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_toplevel_consts_43_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x35\x00\x01\x00\x74\x05\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x63\x02\x64\x01\x64\x01\x64\x01\xab\x02\x00\x00\x00\x00\x00\x00\x01\x00\x53\x00\x23\x00\x31\x00\x73\x01\x77\x02\x01\x00\x59\x00\x01\x00\x01\x00\x79\x01\x78\x03\x59\x00\x77\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[16];
+ }
+const_str_BuiltinImporter = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 15,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "BuiltinImporter",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[145];
+ }
+importlib__bootstrap_toplevel_consts_44_consts_1 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 144,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x4d\x65\x74\x61\x20\x70\x61\x74\x68\x20\x69\x6d\x70\x6f\x72\x74\x20\x66\x6f\x72\x20\x62\x75\x69\x6c\x74\x2d\x69\x6e\x20\x6d\x6f\x64\x75\x6c\x65\x73\x2e\x0a\x0a\x20\x20\x20\x20\x41\x6c\x6c\x20\x6d\x65\x74\x68\x6f\x64\x73\x20\x61\x72\x65\x20\x65\x69\x74\x68\x65\x72\x20\x63\x6c\x61\x73\x73\x20\x6f\x72\x20\x73\x74\x61\x74\x69\x63\x20\x6d\x65\x74\x68\x6f\x64\x73\x20\x74\x6f\x20\x61\x76\x6f\x69\x64\x20\x74\x68\x65\x20\x6e\x65\x65\x64\x20\x74\x6f\x0a\x20\x20\x20\x20\x69\x6e\x73\x74\x61\x6e\x74\x69\x61\x74\x65\x20\x74\x68\x65\x20\x63\x6c\x61\x73\x73\x2e\x0a\x0a\x20\x20\x20\x20",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[9];
+ }
+importlib__bootstrap_toplevel_consts_44_consts_2 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 8,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "built-in",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_44_consts_4_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ Py_None,
+ & importlib__bootstrap_toplevel_consts_34_consts_2._object.ob_base.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[11];
+ }
+const_str_is_builtin = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 10,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "is_builtin",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[4];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_44_consts_4_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_item = {
+ & const_str__imp._ascii.ob_base,
+ & const_str_is_builtin._ascii.ob_base,
+ & const_str_spec_from_loader._ascii.ob_base,
+ & const_str__ORIGIN._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[10];
+ }
+const_str_find_spec = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 9,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "find_spec",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[26];
+ }
+importlib__bootstrap_toplevel_consts_44_consts_4_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 25,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "BuiltinImporter.find_spec",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[37];
+ }
+importlib__bootstrap_toplevel_consts_44_consts_4_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 36,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xe4\x0b\x0f\x8f\x3f\x89\x3f\x98\x38\xd4\x0b\x24\xdc\x13\x23\xa0\x48\xa8\x63\xb8\x23\xbf\x2b\xb9\x2b\xd4\x13\x46\xd0\x0c\x46\xe0\x13\x17",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[4];
+ }
+const_str_cls = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 3,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "cls",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[4];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_44_consts_4_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_item = {
+ & const_str_cls._ascii.ob_base,
+ & const_str_fullname._ascii.ob_base,
+ &_Py_ID(path),
+ &_Py_ID(target),
+ },
+ },
+};
+static
+ struct _PyCode_DEF(94)
+importlib__bootstrap_toplevel_consts_44_consts_4 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 47,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_44_consts_4_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_toplevel_consts_44_consts_4_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 4,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 9 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 5,
+ .co_firstlineno = 982,
+ .co_nlocalsplus = 4,
+ .co_nlocals = 4,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 65,
+ .co_localsplusnames = & importlib__bootstrap_toplevel_consts_44_consts_4_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_7_consts_3_localspluskinds.ob_base.ob_base,
+ .co_filename = & importlib__bootstrap_toplevel_consts_1_filename._ascii.ob_base,
+ .co_name = & const_str_find_spec._ascii.ob_base,
+ .co_qualname = & importlib__bootstrap_toplevel_consts_44_consts_4_qualname._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_toplevel_consts_44_consts_4_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\xab\x01\x00\x00\x00\x00\x00\x00\x72\x18\x74\x05\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x7c\x00\x7c\x00\x6a\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xac\x01\xab\x03\x00\x00\x00\x00\x00\x00\x53\x00\x79\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[25];
+ }
+importlib__bootstrap_toplevel_consts_44_consts_5_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 24,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Create a built-in module",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_44_consts_5_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ & importlib__bootstrap_toplevel_consts_44_consts_5_consts_0._ascii.ob_base,
+ & importlib__bootstrap_toplevel_consts_26_consts_1_consts_1._ascii.ob_base,
+ & importlib__bootstrap_toplevel_consts_4_localsplusnames._object.ob_base.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[15];
+ }
+const_str_create_builtin = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 14,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "create_builtin",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[7];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_44_consts_5_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 7,
+ },
+ .ob_item = {
+ &_Py_ID(name),
+ & const_str_sys._ascii.ob_base,
+ & const_str_builtin_module_names._ascii.ob_base,
+ & const_str_ImportError._ascii.ob_base,
+ & const_str__call_with_frames_removed._ascii.ob_base,
+ & const_str__imp._ascii.ob_base,
+ & const_str_create_builtin._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[30];
+ }
+importlib__bootstrap_toplevel_consts_44_consts_5_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 29,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "BuiltinImporter.create_module",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[76];
+ }
+importlib__bootstrap_toplevel_consts_44_consts_5_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 75,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf0\x06\x00\x0c\x10\x8f\x39\x89\x39\x9c\x43\xd7\x1c\x34\xd1\x1c\x34\xd1\x0b\x34\xdc\x12\x1d\xa0\x14\xa7\x19\xa1\x19\xa0\x0d\xd0\x2d\x46\xd0\x1e\x47\xd8\x23\x27\xa7\x39\xa1\x39\xf4\x03\x01\x13\x2e\xf0\x00\x01\x0d\x2e\xe4\x0f\x28\xac\x14\xd7\x29\x3c\xd1\x29\x3c\xb8\x64\xd3\x0f\x43\xd0\x08\x43",
+};
+static
+ struct _PyCode_DEF(182)
+importlib__bootstrap_toplevel_consts_44_consts_5 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 91,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_44_consts_5_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_toplevel_consts_44_consts_5_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 5 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 989,
+ .co_nlocalsplus = 1,
+ .co_nlocals = 1,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 66,
+ .co_localsplusnames = & importlib__bootstrap_toplevel_consts_43_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_characters[32]),
+ .co_filename = & importlib__bootstrap_toplevel_consts_1_filename._ascii.ob_base,
+ .co_name = & const_str_create_module._ascii.ob_base,
+ .co_qualname = & importlib__bootstrap_toplevel_consts_44_consts_5_qualname._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_toplevel_consts_44_consts_5_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x74\x02\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x76\x01\x72\x24\x74\x07\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9b\x02\x64\x01\x9d\x02\x7c\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xac\x02\xab\x02\x00\x00\x00\x00\x00\x00\x82\x01\x74\x09\x00\x00\x00\x00\x00\x00\x00\x00\x74\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x02\x00\x00\x00\x00\x00\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[23];
+ }
+importlib__bootstrap_toplevel_consts_44_consts_6_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 22,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Exec a built-in module",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_44_consts_6_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & importlib__bootstrap_toplevel_consts_44_consts_6_consts_0._ascii.ob_base,
+ Py_None,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[13];
+ }
+const_str_exec_builtin = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 12,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "exec_builtin",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_44_consts_6_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ & const_str__call_with_frames_removed._ascii.ob_base,
+ & const_str__imp._ascii.ob_base,
+ & const_str_exec_builtin._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[28];
+ }
+importlib__bootstrap_toplevel_consts_44_consts_6_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 27,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "BuiltinImporter.exec_module",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[21];
+ }
+importlib__bootstrap_toplevel_consts_44_consts_6_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 20,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf4\x06\x00\x09\x22\xa4\x24\xd7\x22\x33\xd1\x22\x33\xb0\x56\xd5\x08\x3c",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_44_consts_6_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ &_Py_ID(module),
+ },
+ },
+};
+static
+ struct _PyCode_DEF(56)
+importlib__bootstrap_toplevel_consts_44_consts_6 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 28,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_44_consts_6_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_toplevel_consts_44_consts_6_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 5 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 997,
+ .co_nlocalsplus = 1,
+ .co_nlocals = 1,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 67,
+ .co_localsplusnames = & importlib__bootstrap_toplevel_consts_44_consts_6_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_characters[32]),
+ .co_filename = & importlib__bootstrap_toplevel_consts_1_filename._ascii.ob_base,
+ .co_name = & const_str_exec_module._ascii.ob_base,
+ .co_qualname = & importlib__bootstrap_toplevel_consts_44_consts_6_qualname._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_toplevel_consts_44_consts_6_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x74\x02\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x02\x00\x00\x00\x00\x00\x00\x01\x00\x79\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[58];
+ }
+importlib__bootstrap_toplevel_consts_44_consts_7_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 57,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Return None as built-in modules do not have code objects.",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_44_consts_7_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & importlib__bootstrap_toplevel_consts_44_consts_7_consts_0._ascii.ob_base,
+ Py_None,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[9];
+ }
+const_str_get_code = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 8,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "get_code",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[25];
+ }
+importlib__bootstrap_toplevel_consts_44_consts_7_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 24,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "BuiltinImporter.get_code",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[8];
+ }
+importlib__bootstrap_toplevel_consts_44_consts_7_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 7,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf0\x08\x00\x10\x14",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_44_consts_7_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & const_str_cls._ascii.ob_base,
+ & const_str_fullname._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(4)
+importlib__bootstrap_toplevel_consts_44_consts_7 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 2,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_44_consts_7_consts._object.ob_base.ob_base,
+ .co_names = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 2 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 0,
+ .co_firstlineno = 1002,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 2,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 68,
+ .co_localsplusnames = & importlib__bootstrap_toplevel_consts_44_consts_7_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_14_consts_2_localspluskinds.ob_base.ob_base,
+ .co_filename = & importlib__bootstrap_toplevel_consts_1_filename._ascii.ob_base,
+ .co_name = & const_str_get_code._ascii.ob_base,
+ .co_qualname = & importlib__bootstrap_toplevel_consts_44_consts_7_qualname._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_toplevel_consts_44_consts_7_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x79\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[57];
+ }
+importlib__bootstrap_toplevel_consts_44_consts_8_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 56,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Return None as built-in modules do not have source code.",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_44_consts_8_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & importlib__bootstrap_toplevel_consts_44_consts_8_consts_0._ascii.ob_base,
+ Py_None,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[27];
+ }
+importlib__bootstrap_toplevel_consts_44_consts_8_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 26,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "BuiltinImporter.get_source",
+};
+static
+ struct _PyCode_DEF(4)
+importlib__bootstrap_toplevel_consts_44_consts_8 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 2,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_44_consts_8_consts._object.ob_base.ob_base,
+ .co_names = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 2 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 0,
+ .co_firstlineno = 1008,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 2,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 69,
+ .co_localsplusnames = & importlib__bootstrap_toplevel_consts_44_consts_7_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_14_consts_2_localspluskinds.ob_base.ob_base,
+ .co_filename = & importlib__bootstrap_toplevel_consts_1_filename._ascii.ob_base,
+ .co_name = &_Py_ID(get_source),
+ .co_qualname = & importlib__bootstrap_toplevel_consts_44_consts_8_qualname._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_toplevel_consts_44_consts_7_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x79\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[53];
+ }
+importlib__bootstrap_toplevel_consts_44_consts_9_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 52,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Return False as built-in modules are never packages.",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_44_consts_9_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & importlib__bootstrap_toplevel_consts_44_consts_9_consts_0._ascii.ob_base,
+ Py_False,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[27];
+ }
+importlib__bootstrap_toplevel_consts_44_consts_9_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 26,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "BuiltinImporter.is_package",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[8];
+ }
+importlib__bootstrap_toplevel_consts_44_consts_9_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 7,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf0\x08\x00\x10\x15",
+};
+static
+ struct _PyCode_DEF(4)
+importlib__bootstrap_toplevel_consts_44_consts_9 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 2,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_44_consts_9_consts._object.ob_base.ob_base,
+ .co_names = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 2 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 0,
+ .co_firstlineno = 1014,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 2,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 70,
+ .co_localsplusnames = & importlib__bootstrap_toplevel_consts_44_consts_7_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_14_consts_2_localspluskinds.ob_base.ob_base,
+ .co_filename = & importlib__bootstrap_toplevel_consts_1_filename._ascii.ob_base,
+ .co_name = & const_str_is_package._ascii.ob_base,
+ .co_qualname = & importlib__bootstrap_toplevel_consts_44_consts_9_qualname._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_toplevel_consts_44_consts_9_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x79\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_44_consts_10 = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ Py_None,
+ Py_None,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[11];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_44_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 11,
+ },
+ .ob_item = {
+ & const_str_BuiltinImporter._ascii.ob_base,
+ & importlib__bootstrap_toplevel_consts_44_consts_1._ascii.ob_base,
+ & importlib__bootstrap_toplevel_consts_44_consts_2._ascii.ob_base,
+ Py_None,
+ & importlib__bootstrap_toplevel_consts_44_consts_4.ob_base.ob_base,
+ & importlib__bootstrap_toplevel_consts_44_consts_5.ob_base.ob_base,
+ & importlib__bootstrap_toplevel_consts_44_consts_6.ob_base.ob_base,
+ & importlib__bootstrap_toplevel_consts_44_consts_7.ob_base.ob_base,
+ & importlib__bootstrap_toplevel_consts_44_consts_8.ob_base.ob_base,
+ & importlib__bootstrap_toplevel_consts_44_consts_9.ob_base.ob_base,
+ & importlib__bootstrap_toplevel_consts_44_consts_10._object.ob_base.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[12];
+ }
+const_str_classmethod = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 11,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "classmethod",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[16];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_44_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 16,
+ },
+ .ob_item = {
+ &_Py_ID(__name__),
+ &_Py_ID(__module__),
+ &_Py_ID(__qualname__),
+ &_Py_ID(__doc__),
+ & const_str__ORIGIN._ascii.ob_base,
+ & const_str_classmethod._ascii.ob_base,
+ & const_str_find_spec._ascii.ob_base,
+ & const_str_staticmethod._ascii.ob_base,
+ & const_str_create_module._ascii.ob_base,
+ & const_str_exec_module._ascii.ob_base,
+ & const_str__requires_builtin._ascii.ob_base,
+ & const_str_get_code._ascii.ob_base,
+ &_Py_ID(get_source),
+ & const_str_is_package._ascii.ob_base,
+ & const_str__load_module_shim._ascii.ob_base,
+ & const_str_load_module._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[172];
+ }
+importlib__bootstrap_toplevel_consts_44_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 171,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x84\x00\xf1\x04\x05\x05\x08\xf0\x0e\x00\x0f\x19\x80\x47\xe0\x05\x10\xf2\x02\x04\x05\x18\xf3\x03\x00\x06\x11\xf0\x02\x04\x05\x18\xf0\x0c\x00\x06\x12\xf1\x02\x05\x05\x44\x01\xf3\x03\x00\x06\x12\xf0\x02\x05\x05\x44\x01\xf0\x0e\x00\x06\x12\xf1\x02\x02\x05\x3d\xf3\x03\x00\x06\x12\xf0\x02\x02\x05\x3d\xf0\x08\x00\x06\x11\xd8\x05\x16\xf1\x02\x02\x05\x14\xf3\x03\x00\x06\x17\xf3\x03\x00\x06\x11\xf0\x04\x02\x05\x14\xf0\x08\x00\x06\x11\xd8\x05\x16\xf1\x02\x02\x05\x14\xf3\x03\x00\x06\x17\xf3\x03\x00\x06\x11\xf0\x04\x02\x05\x14\xf0\x08\x00\x06\x11\xd8\x05\x16\xf1\x02\x02\x05\x15\xf3\x03\x00\x06\x17\xf3\x03\x00\x06\x11\xf0\x04\x02\x05\x15\xf1\x08\x00\x13\x1e\xd0\x1e\x2f\xd3\x12\x30\x81\x4b",
+};
+static
+ struct _PyCode_DEF(164)
+importlib__bootstrap_toplevel_consts_44 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 82,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_44_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_toplevel_consts_44_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 0,
+ .co_argcount = 0,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 3 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 3,
+ .co_firstlineno = 971,
+ .co_nlocalsplus = 0,
+ .co_nlocals = 0,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 71,
+ .co_localsplusnames = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_filename = & importlib__bootstrap_toplevel_consts_1_filename._ascii.ob_base,
+ .co_name = & const_str_BuiltinImporter._ascii.ob_base,
+ .co_qualname = & const_str_BuiltinImporter._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_toplevel_consts_44_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x65\x00\x5a\x01\x64\x00\x5a\x02\x64\x01\x5a\x03\x64\x02\x5a\x04\x65\x05\x64\x0a\x64\x04\x84\x01\xab\x00\x00\x00\x00\x00\x00\x00\x5a\x06\x65\x07\x64\x05\x84\x00\xab\x00\x00\x00\x00\x00\x00\x00\x5a\x08\x65\x07\x64\x06\x84\x00\xab\x00\x00\x00\x00\x00\x00\x00\x5a\x09\x65\x05\x65\x0a\x64\x07\x84\x00\xab\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x5a\x0b\x65\x05\x65\x0a\x64\x08\x84\x00\xab\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x5a\x0c\x65\x05\x65\x0a\x64\x09\x84\x00\xab\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x5a\x0d\x02\x00\x65\x05\x65\x0e\xab\x01\x00\x00\x00\x00\x00\x00\x5a\x0f\x79\x03",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[15];
+ }
+const_str_FrozenImporter = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 14,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "FrozenImporter",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[143];
+ }
+importlib__bootstrap_toplevel_consts_46_consts_1 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 142,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x4d\x65\x74\x61\x20\x70\x61\x74\x68\x20\x69\x6d\x70\x6f\x72\x74\x20\x66\x6f\x72\x20\x66\x72\x6f\x7a\x65\x6e\x20\x6d\x6f\x64\x75\x6c\x65\x73\x2e\x0a\x0a\x20\x20\x20\x20\x41\x6c\x6c\x20\x6d\x65\x74\x68\x6f\x64\x73\x20\x61\x72\x65\x20\x65\x69\x74\x68\x65\x72\x20\x63\x6c\x61\x73\x73\x20\x6f\x72\x20\x73\x74\x61\x74\x69\x63\x20\x6d\x65\x74\x68\x6f\x64\x73\x20\x74\x6f\x20\x61\x76\x6f\x69\x64\x20\x74\x68\x65\x20\x6e\x65\x65\x64\x20\x74\x6f\x0a\x20\x20\x20\x20\x69\x6e\x73\x74\x61\x6e\x74\x69\x61\x74\x65\x20\x74\x68\x65\x20\x63\x6c\x61\x73\x73\x2e\x0a\x0a\x20\x20\x20\x20",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[7];
+ }
+const_str_frozen = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 6,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "frozen",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[13];
+ }
+const_str___origname__ = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 12,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "__origname__",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[40];
+ }
+importlib__bootstrap_toplevel_consts_46_consts_3_consts_2 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 39,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "see PyImport_ImportFrozenModuleObject()",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[9];
+ }
+const_str_origname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 8,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "origname",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_46_consts_3_consts_4 = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ &_Py_ID(filename),
+ & const_str_origname._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[9];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_46_consts_3_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 9,
+ },
+ .ob_item = {
+ Py_None,
+ & const_str___origname__._ascii.ob_base,
+ & importlib__bootstrap_toplevel_consts_46_consts_3_consts_2._ascii.ob_base,
+ &_Py_ID(__path__),
+ & importlib__bootstrap_toplevel_consts_46_consts_3_consts_4._object.ob_base.ob_base,
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 0],
+ &_Py_ID(__file__),
+ &_Py_ID(filename),
+ & const_str_origname._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[5];
+ }
+const_str_vars = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 4,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "vars",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[18];
+ }
+const_str_is_frozen_package = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 17,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "is_frozen_package",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[18];
+ }
+const_str__resolve_filename = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 17,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_resolve_filename",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[15];
+ }
+const_str_implementation = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 14,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "implementation",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[7];
+ }
+const_str_insert = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 6,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "insert",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[7];
+ }
+const_str_sorted = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 6,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "sorted",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[23];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_46_consts_3_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 23,
+ },
+ .ob_item = {
+ &_Py_ID(__spec__),
+ & const_str_loader_state._ascii.ob_base,
+ & const_str_vars._ascii.ob_base,
+ & const_str_pop._ascii.ob_base,
+ & const_str_hasattr._ascii.ob_base,
+ & const_str__imp._ascii.ob_base,
+ & const_str_is_frozen_package._ascii.ob_base,
+ &_Py_ID(__name__),
+ & const_str__resolve_filename._ascii.ob_base,
+ &_Py_ID(name),
+ &_Py_ID(type),
+ & const_str_sys._ascii.ob_base,
+ & const_str_implementation._ascii.ob_base,
+ & const_str_submodule_search_locations._ascii.ob_base,
+ & const_str_insert._ascii.ob_base,
+ &_Py_ID(__file__),
+ & const_str_AttributeError._ascii.ob_base,
+ &_Py_ID(__path__),
+ &_Py_ID(extend),
+ & const_str_sorted._ascii.ob_base,
+ & const_str_origname._ascii.ob_base,
+ &_Py_ID(filename),
+ & const_str_has_location._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[30];
+ }
+importlib__bootstrap_toplevel_consts_46_consts_3_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 29,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "FrozenImporter._fix_up_module",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[725];
+ }
+importlib__bootstrap_toplevel_consts_46_consts_3_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 724,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xe0\x0f\x15\x8f\x7f\x89\x7f\x88\x04\xd8\x10\x14\xd7\x10\x21\xd1\x10\x21\x88\x05\xd8\x0b\x10\x89\x3d\xf4\x08\x00\x18\x1c\x98\x46\x93\x7c\xd7\x17\x27\xd1\x17\x27\xa8\x0e\xb8\x04\xd3\x17\x3d\x88\x48\xd9\x13\x1b\xd0\x0c\x46\xd0\x1d\x46\xd4\x0c\x46\xdc\x14\x1b\x98\x46\xa0\x4a\xd3\x14\x2f\x88\x45\xdc\x13\x17\xd7\x13\x29\xd1\x13\x29\xa8\x26\xaf\x2f\xa9\x2f\xd3\x13\x3a\xb8\x65\xd2\x13\x43\xd0\x0c\x4a\xc0\x55\xd4\x0c\x4a\xd8\x1f\x22\xd7\x1f\x34\xd1\x1f\x34\xb0\x58\xb8\x74\xbf\x79\xb9\x79\xc8\x25\xd3\x1f\x50\xd1\x0c\x1c\x88\x48\x90\x66\xd8\x20\x38\xa4\x04\xa4\x53\xd7\x25\x37\xd1\x25\x37\xd3\x20\x38\xd8\x19\x21\xd8\x19\x21\xf4\x05\x03\x21\x0e\x88\x44\xd4\x0c\x1d\xf0\x08\x00\x18\x1c\xd7\x17\x36\xd1\x17\x36\x88\x48\xd9\x0f\x14\xd8\x17\x1f\xa0\x32\x92\x7e\xd0\x10\x2f\xa0\x78\xd4\x10\x2f\xd9\x13\x19\xd8\x14\x18\xd7\x14\x33\xd1\x14\x33\xd7\x14\x3a\xd1\x14\x3a\xb8\x31\xb8\x66\xd5\x14\x45\xe0\x17\x1f\xd0\x17\x27\xd0\x10\x31\xa8\x18\xd4\x10\x31\xf4\x06\x00\x18\x1f\x98\x76\xa0\x7a\xd4\x17\x32\xd0\x0c\x43\xb0\x46\xb7\x4f\xb1\x4f\xd4\x0c\x43\xd9\x0f\x17\xf0\x02\x03\x11\x19\xd8\x26\x2e\x90\x46\x94\x4f\xf2\x06\x00\x10\x15\xd8\x13\x19\x97\x3f\x91\x3f\xa0\x68\xd3\x13\x2e\xd8\x1b\x21\x9f\x3f\x99\x3f\xa8\x62\xd2\x1b\x30\xd0\x14\x41\xb0\x26\xb7\x2f\xb1\x2f\xd4\x14\x41\xd8\x14\x1a\x97\x4f\x91\x4f\xd7\x14\x2a\xd1\x14\x2a\xa8\x38\xd6\x14\x34\xf0\x08\x00\x18\x1c\xd7\x17\x36\xd1\x17\x36\x88\x48\xd8\x14\x1c\xa0\x44\xd0\x14\x28\x88\x45\xe4\x13\x19\x9c\x24\x98\x75\x9b\x2b\xd3\x13\x26\xa8\x3a\xb0\x7a\xd0\x2a\x42\xd2\x13\x42\xd0\x0c\x49\xc0\x45\xd4\x0c\x49\xd8\x0f\x14\x8f\x7e\x8a\x7e\xf0\x06\x00\x16\x19\xd7\x15\x2a\xd1\x15\x2a\xa8\x35\xaf\x3e\xa9\x3e\xb8\x34\xbf\x39\xb9\x39\xc0\x65\xd3\x15\x4c\xf1\x03\x01\x11\x13\x90\x18\x98\x36\xe0\x17\x1c\x97\x7e\x91\x7e\xa8\x18\xd2\x17\x31\xd0\x10\x4d\xb0\x45\xb7\x4e\xb1\x4e\xc0\x48\xd0\x33\x4d\xd4\x10\x4d\xd9\x13\x19\xd8\x1b\x23\xa8\x06\xa0\x78\xd2\x1b\x2f\xd0\x14\x43\xb0\x28\xb8\x46\xd0\x31\x43\xd4\x14\x43\xe0\x1b\x23\xa9\x65\xa9\x02\xb8\x14\xd2\x1b\x3e\xd0\x14\x48\xc0\x08\xd4\x14\x48\xe0\x1b\x1f\x90\x08\xd8\x17\x1c\x97\x7e\x91\x7e\xd0\x17\x2d\xd0\x10\x3d\xa8\x75\xaf\x7e\xa9\x7e\xd4\x10\x3d\xd8\x17\x1f\xa9\x25\xa1\x42\xb0\x54\xd2\x17\x3a\xd0\x10\x44\xb8\x48\xd4\x10\x44\xe1\x0f\x17\xdc\x17\x1e\x98\x76\xa0\x7a\xd4\x17\x32\xd1\x10\x32\xd8\x17\x1d\x97\x7f\x91\x7f\xa8\x28\xd2\x17\x32\xd0\x10\x4f\xb0\x56\xb7\x5f\xb1\x5f\xc0\x68\xd0\x34\x4f\xd4\x10\x4f\xe4\x1b\x22\xa0\x36\xa8\x3a\xd4\x1b\x36\xd0\x10\x47\xb8\x06\xbf\x0f\xb9\x0f\xd4\x10\x47\xd9\x0f\x14\xdc\x17\x1e\x98\x76\xa0\x7a\xd4\x17\x32\xd1\x10\x32\xd8\x17\x1d\x97\x7f\x91\x7f\xa8\x28\xd2\x17\x32\xd0\x10\x4f\xb0\x56\xb7\x5f\xb1\x5f\xc0\x68\xd0\x34\x4f\xd4\x10\x4f\xe4\x1b\x22\xa0\x36\xa8\x3a\xd4\x1b\x36\xd0\x10\x47\xb8\x06\xbf\x0f\xb9\x0f\xd4\x10\x47\xd8\x13\x17\xd7\x13\x24\xd2\x13\x24\xd1\x08\x24\xd0\x13\x24\xf8\xf4\x4b\x01\x00\x18\x26\xf2\x00\x01\x11\x19\xda\x14\x18\xf0\x03\x01\x11\x19\xfa",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[19];
+ }
+importlib__bootstrap_toplevel_consts_46_consts_3_exceptiontable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 18,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\xc4\x1d\x07\x4b\x39\x00\xcb\x39\x09\x4c\x06\x03\xcc\x05\x01\x4c\x06\x03",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[6];
+ }
+const_str_state = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 5,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "state",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[6];
+ }
+const_str_ispkg = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 5,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "ispkg",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[7];
+ }
+const_str_pkgdir = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 6,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "pkgdir",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[10];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_46_consts_3_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 10,
+ },
+ .ob_item = {
+ & const_str_cls._ascii.ob_base,
+ &_Py_ID(module),
+ & const_str_spec._ascii.ob_base,
+ & const_str_state._ascii.ob_base,
+ & const_str_origname._ascii.ob_base,
+ & const_str_ispkg._ascii.ob_base,
+ &_Py_ID(filename),
+ & const_str_pkgdir._ascii.ob_base,
+ &_Py_ID(__path__),
+ &_Py_ID(__file__),
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[11];
+ }
+importlib__bootstrap_toplevel_consts_46_consts_3_localspluskinds = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 10,
+ },
+ .ob_shash = -1,
+ .ob_sval = " ",
+};
+static
+ struct _PyCode_DEF(1554)
+importlib__bootstrap_toplevel_consts_46_consts_3 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 777,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_46_consts_3_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_toplevel_consts_46_consts_3_names._object.ob_base.ob_base,
+ .co_exceptiontable = & importlib__bootstrap_toplevel_consts_46_consts_3_exceptiontable.ob_base.ob_base,
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 15 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 5,
+ .co_firstlineno = 1034,
+ .co_nlocalsplus = 10,
+ .co_nlocals = 10,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 72,
+ .co_localsplusnames = & importlib__bootstrap_toplevel_consts_46_consts_3_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_46_consts_3_localspluskinds.ob_base.ob_base,
+ .co_filename = & importlib__bootstrap_toplevel_consts_1_filename._ascii.ob_base,
+ .co_name = &_Py_ID(_fix_up_module),
+ .co_qualname = & importlib__bootstrap_toplevel_consts_46_consts_3_qualname._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_toplevel_consts_46_consts_3_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x01\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7d\x02\x7c\x02\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7d\x03\x7c\x03\x90\x01\x80\x58\x74\x05\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\xab\x01\x00\x00\x00\x00\x00\x00\x6a\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x01\x64\x00\xab\x02\x00\x00\x00\x00\x00\x00\x7d\x04\x7c\x04\x73\x07\x4a\x00\x64\x02\xab\x00\x00\x00\x00\x00\x00\x00\x82\x01\x74\x09\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x64\x03\xab\x02\x00\x00\x00\x00\x00\x00\x7d\x05\x74\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x6a\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7c\x05\x6b\x28\x00\x00\x73\x07\x4a\x00\x7c\x05\xab\x00\x00\x00\x00\x00\x00\x00\x82\x01\x7c\x00\x6a\x11\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x04\x7c\x02\x6a\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x05\xab\x03\x00\x00\x00\x00\x00\x00\x5c\x02\x00\x00\x7d\x06\x7d\x07\x02\x00\x74\x15\x00\x00\x00\x00\x00\x00\x00\x00\x74\x16\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7c\x06\x7c\x04\xac\x04\xab\x02\x00\x00\x00\x00\x00\x00\x7c\x02\x5f\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x02\x6a\x1a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7d\x08\x7c\x05\x72\x2b\x7c\x08\x67\x00\x6b\x28\x00\x00\x73\x07\x4a\x00\x7c\x08\xab\x00\x00\x00\x00\x00\x00\x00\x82\x01\x7c\x07\x72\x26\x7c\x02\x6a\x1a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x1d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x05\x7c\x07\xab\x02\x00\x00\x00\x00\x00\x00\x01\x00\x6e\x09\x7c\x08\x81\x07\x4a\x00\x7c\x08\xab\x00\x00\x00\x00\x00\x00\x00\x82\x01\x74\x09\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x64\x06\xab\x02\x00\x00\x00\x00\x00\x00\x72\x11\x4a\x00\x7c\x01\x6a\x1e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x82\x01\x7c\x06\x72\x08\x09\x00\x7c\x06\x7c\x01\x5f\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x05\x90\x01\x72\xc3\x7c\x01\x6a\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x08\x6b\x37\x00\x00\x90\x01\x72\xb3\x7c\x01\x6a\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x67\x00\x6b\x28\x00\x00\x73\x11\x4a\x00\x7c\x01\x6a\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x82\x01\x7c\x01\x6a\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x08\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x90\x01\x6e\x76\x7c\x02\x6a\x1a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7d\x08\x7c\x08\x64\x00\x75\x01\x7d\x05\x74\x27\x00\x00\x00\x00\x00\x00\x00\x00\x74\x05\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x03\xab\x01\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x64\x07\x64\x08\x67\x02\x6b\x28\x00\x00\x73\x07\x4a\x00\x7c\x03\xab\x00\x00\x00\x00\x00\x00\x00\x82\x01\x7c\x03\x6a\x28\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x72\x6d\x7c\x00\x6a\x11\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x03\x6a\x28\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x02\x6a\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x05\xab\x03\x00\x00\x00\x00\x00\x00\x5c\x02\x00\x00\x7d\x09\x7d\x07\x7c\x03\x6a\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x09\x6b\x28\x00\x00\x73\x13\x4a\x00\x7c\x03\x6a\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x09\x66\x02\xab\x00\x00\x00\x00\x00\x00\x00\x82\x01\x7c\x07\x72\x0f\x7c\x08\x7c\x07\x67\x01\x6b\x28\x00\x00\x73\x48\x4a\x00\x7c\x08\x7c\x07\x66\x02\xab\x00\x00\x00\x00\x00\x00\x00\x82\x01\x7c\x08\x7c\x05\x72\x02\x67\x00\x6e\x01\x64\x00\x6b\x28\x00\x00\x73\x36\x4a\x00\x7c\x08\xab\x00\x00\x00\x00\x00\x00\x00\x82\x01\x64\x00\x7d\x09\x7c\x03\x6a\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x81\x11\x4a\x00\x7c\x03\x6a\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x82\x01\x7c\x08\x7c\x05\x72\x02\x67\x00\x6e\x01\x64\x00\x6b\x28\x00\x00\x73\x07\x4a\x00\x7c\x08\xab\x00\x00\x00\x00\x00\x00\x00\x82\x01\x7c\x09\x72\x30\x74\x09\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x64\x06\xab\x02\x00\x00\x00\x00\x00\x00\x73\x02\x4a\x00\x82\x01\x7c\x01\x6a\x1e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x09\x6b\x28\x00\x00\x73\x30\x4a\x00\x7c\x01\x6a\x1e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x09\x66\x02\xab\x00\x00\x00\x00\x00\x00\x00\x82\x01\x74\x09\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x64\x06\xab\x02\x00\x00\x00\x00\x00\x00\x72\x11\x4a\x00\x7c\x01\x6a\x1e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x82\x01\x7c\x05\x72\x30\x74\x09\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x64\x03\xab\x02\x00\x00\x00\x00\x00\x00\x73\x02\x4a\x00\x82\x01\x7c\x01\x6a\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x08\x6b\x28\x00\x00\x73\x30\x4a\x00\x7c\x01\x6a\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x08\x66\x02\xab\x00\x00\x00\x00\x00\x00\x00\x82\x01\x74\x09\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x64\x03\xab\x02\x00\x00\x00\x00\x00\x00\x72\x11\x4a\x00\x7c\x01\x6a\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x82\x01\x7c\x02\x6a\x2c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x72\x02\x4a\x00\x82\x01\x79\x00\x23\x00\x74\x20\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x72\x04\x01\x00\x59\x00\x90\x01\x8c\xe1\x77\x00\x78\x03\x59\x00\x77\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[12];
+ }
+const_str__stdlib_dir = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 11,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_stdlib_dir",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[6];
+ }
+const_str_win32 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 5,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "win32",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[10];
+ }
+importlib__bootstrap_toplevel_consts_46_consts_5_consts_8 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 9,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = ".__init__",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[12];
+ }
+importlib__bootstrap_toplevel_consts_46_consts_5_consts_11 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 11,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "__init__.py",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[4];
+ }
+importlib__bootstrap_toplevel_consts_46_consts_5_consts_12 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 3,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = ".py",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[13];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_46_consts_5_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 13,
+ },
+ .ob_item = {
+ Py_None,
+ & const_str__stdlib_dir._ascii.ob_base,
+ & importlib__bootstrap_toplevel_consts_44_consts_10._object.ob_base.ob_base,
+ & const_str_win32._ascii.ob_base,
+ (PyObject *)&_Py_SINGLETON(strings).ascii[92],
+ (PyObject *)&_Py_SINGLETON(strings).ascii[47],
+ (PyObject *)&_Py_SINGLETON(strings).ascii[60],
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 1],
+ & importlib__bootstrap_toplevel_consts_46_consts_5_consts_8._ascii.ob_base,
+ Py_False,
+ &_Py_STR(dot),
+ & importlib__bootstrap_toplevel_consts_46_consts_5_consts_11._ascii.ob_base,
+ & importlib__bootstrap_toplevel_consts_46_consts_5_consts_12._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[5];
+ }
+const_str__SEP = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 4,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_SEP",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[9];
+ }
+const_str_platform = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 8,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "platform",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[8];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_46_consts_5_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 8,
+ },
+ .ob_item = {
+ &_Py_ID(getattr),
+ & const_str_sys._ascii.ob_base,
+ & const_str__SEP._ascii.ob_base,
+ & const_str_AttributeError._ascii.ob_base,
+ & const_str_platform._ascii.ob_base,
+ & const_str_startswith._ascii.ob_base,
+ &_Py_ID(replace),
+ & const_str__stdlib_dir._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[33];
+ }
+importlib__bootstrap_toplevel_consts_46_consts_5_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 32,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "FrozenImporter._resolve_filename",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[250];
+ }
+importlib__bootstrap_toplevel_consts_46_consts_5_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 249,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xe1\x0f\x17\x9c\x77\xa4\x73\xa8\x4d\xb8\x34\xd4\x1f\x40\xd8\x13\x1d\xf0\x02\x03\x09\x46\x01\xd8\x12\x15\x97\x28\x91\x28\x88\x43\xf0\x08\x00\x0c\x14\x90\x75\xd2\x0b\x1c\xd8\x0f\x17\xd7\x0f\x22\xd1\x0f\x22\xa0\x33\xd4\x0f\x27\xd8\x1b\x23\xa0\x41\xa0\x42\x98\x3c\x90\x08\xd9\x17\x1c\xd8\x22\x2a\xa0\x1a\xa8\x39\xd0\x1f\x35\x91\x48\xe0\x18\x1d\x90\x05\xd8\x12\x1a\xd7\x12\x22\xd1\x12\x22\xa0\x33\xa8\x03\xd3\x12\x2c\x88\x07\xd9\x0b\x10\xdc\x18\x1b\x9f\x0f\x99\x0f\xd0\x17\x28\xa8\x13\xa8\x05\xa8\x67\xa8\x59\xd0\x15\x37\x88\x46\xd8\x1a\x20\x98\x18\xa0\x23\xa0\x15\xa0\x6b\xd0\x17\x32\x88\x48\xf0\x08\x00\x10\x18\x98\x16\xd0\x0f\x1f\xd0\x08\x1f\xf0\x05\x00\x16\x1a\x88\x46\xdc\x1a\x1d\x9f\x2f\x99\x2f\xd0\x19\x2a\xa8\x33\xa8\x25\xb0\x07\xa8\x79\xb8\x03\xd0\x17\x3c\x88\x48\xd8\x0f\x17\x98\x16\xd0\x0f\x1f\xd0\x08\x1f\xf8\xf4\x23\x00\x10\x1e\xf2\x00\x01\x09\x46\x01\xdc\x25\x28\xa7\x5c\xa1\x5c\xb0\x57\xd2\x25\x3c\x99\x54\xc0\x23\xd0\x0c\x45\x88\x43\x90\x23\x96\x28\xf0\x03\x01\x09\x46\x01\xfa",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[18];
+ }
+importlib__bootstrap_toplevel_consts_46_consts_5_exceptiontable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 17,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x96\x0c\x42\x19\x00\xc2\x19\x27\x43\x03\x03\xc3\x02\x01\x43\x03\x03",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[8];
+ }
+const_str_relfile = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 7,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "relfile",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[8];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_46_consts_5_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 8,
+ },
+ .ob_item = {
+ & const_str_cls._ascii.ob_base,
+ & const_str_fullname._ascii.ob_base,
+ &_Py_ID(alias),
+ & const_str_ispkg._ascii.ob_base,
+ &_Py_ID(sep),
+ & const_str_relfile._ascii.ob_base,
+ & const_str_pkgdir._ascii.ob_base,
+ &_Py_ID(filename),
+ },
+ },
+};
+static
+ struct _PyCode_DEF(396)
+importlib__bootstrap_toplevel_consts_46_consts_5 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 198,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_46_consts_5_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_toplevel_consts_46_consts_5_names._object.ob_base.ob_base,
+ .co_exceptiontable = & importlib__bootstrap_toplevel_consts_46_consts_5_exceptiontable.ob_base.ob_base,
+ .co_flags = 3,
+ .co_argcount = 4,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 13 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 5,
+ .co_firstlineno = 1103,
+ .co_nlocalsplus = 8,
+ .co_nlocals = 8,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 73,
+ .co_localsplusnames = & importlib__bootstrap_toplevel_consts_46_consts_5_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_13_localspluskinds.ob_base.ob_base,
+ .co_filename = & importlib__bootstrap_toplevel_consts_1_filename._ascii.ob_base,
+ .co_name = & const_str__resolve_filename._ascii.ob_base,
+ .co_qualname = & importlib__bootstrap_toplevel_consts_46_consts_5_qualname._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_toplevel_consts_46_consts_5_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x01\x72\x11\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x74\x02\x00\x00\x00\x00\x00\x00\x00\x00\x64\x01\x64\x00\xab\x03\x00\x00\x00\x00\x00\x00\x73\x01\x79\x02\x09\x00\x7c\x00\x6a\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7d\x04\x7c\x01\x7c\x02\x6b\x37\x00\x00\x72\x20\x7c\x01\x6a\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x06\xab\x01\x00\x00\x00\x00\x00\x00\x72\x0d\x7c\x01\x64\x07\x64\x00\x1a\x00\x7d\x01\x7c\x03\x73\x08\x7c\x01\x9b\x00\x64\x08\x9d\x02\x7d\x01\x6e\x02\x64\x09\x7d\x03\x7c\x01\x6a\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x0a\x7c\x04\xab\x02\x00\x00\x00\x00\x00\x00\x7d\x05\x7c\x03\x72\x21\x74\x02\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9b\x00\x7c\x04\x9b\x00\x7c\x05\x9b\x00\x9d\x03\x7d\x06\x7c\x06\x9b\x00\x7c\x04\x9b\x00\x64\x0b\x9d\x03\x7d\x07\x7c\x07\x7c\x06\x66\x02\x53\x00\x64\x00\x7d\x06\x74\x02\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9b\x00\x7c\x04\x9b\x00\x7c\x05\x9b\x00\x64\x0c\x9d\x04\x7d\x07\x7c\x07\x7c\x06\x66\x02\x53\x00\x23\x00\x74\x06\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x72\x21\x01\x00\x74\x02\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x03\x6b\x28\x00\x00\x72\x02\x64\x04\x6e\x01\x64\x05\x78\x01\x7d\x04\x7c\x00\x5f\x02\x00\x00\x00\x00\x00\x00\x00\x00\x59\x00\x8c\xa0\x77\x00\x78\x03\x59\x00\x77\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[4];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_46_consts_6_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_item = {
+ Py_None,
+ & importlib__bootstrap_toplevel_consts_32._object.ob_base.ob_base,
+ & importlib__bootstrap_toplevel_consts_46_consts_3_consts_4._object.ob_base.ob_base,
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 0],
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[12];
+ }
+const_str_find_frozen = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 11,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "find_frozen",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[12];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_46_consts_6_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 12,
+ },
+ .ob_item = {
+ & const_str__call_with_frames_removed._ascii.ob_base,
+ & const_str__imp._ascii.ob_base,
+ & const_str_find_frozen._ascii.ob_base,
+ & const_str_spec_from_loader._ascii.ob_base,
+ & const_str__ORIGIN._ascii.ob_base,
+ & const_str__resolve_filename._ascii.ob_base,
+ &_Py_ID(type),
+ & const_str_sys._ascii.ob_base,
+ & const_str_implementation._ascii.ob_base,
+ & const_str_loader_state._ascii.ob_base,
+ & const_str_submodule_search_locations._ascii.ob_base,
+ & const_str_insert._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[25];
+ }
+importlib__bootstrap_toplevel_consts_46_consts_6_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 24,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "FrozenImporter.find_spec",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[158];
+ }
+importlib__bootstrap_toplevel_consts_46_consts_6_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 157,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xe4\x0f\x28\xac\x14\xd7\x29\x39\xd1\x29\x39\xb8\x38\xd3\x0f\x44\x88\x04\xd8\x0b\x0f\x88\x3c\xd8\x13\x17\xf0\x1a\x00\x1e\x22\xd1\x08\x1a\x88\x01\x88\x35\x90\x28\xdc\x0f\x1f\xa0\x08\xa8\x23\xd8\x27\x2a\xa7\x7b\xa1\x7b\xd8\x2b\x30\xf4\x05\x02\x10\x32\x88\x04\xf0\x06\x00\x1c\x1f\xd7\x1b\x30\xd1\x1b\x30\xb0\x18\xb8\x38\xc0\x55\xd3\x1b\x4b\xd1\x08\x18\x88\x08\x90\x26\xd8\x1c\x34\x9c\x44\xa4\x13\xd7\x21\x33\xd1\x21\x33\xd3\x1c\x34\xd8\x15\x1d\xd8\x15\x1d\xf4\x05\x03\x1d\x0a\x88\x04\xd4\x08\x19\xf1\x08\x00\x0c\x12\xd8\x0c\x10\xd7\x0c\x2b\xd1\x0c\x2b\xd7\x0c\x32\xd1\x0c\x32\xb0\x31\xb0\x66\xd4\x0c\x3d\xd8\x0f\x13\x88\x0b",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[5];
+ }
+const_str_info = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 4,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "info",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[11];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_46_consts_6_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 11,
+ },
+ .ob_item = {
+ & const_str_cls._ascii.ob_base,
+ & const_str_fullname._ascii.ob_base,
+ &_Py_ID(path),
+ &_Py_ID(target),
+ & const_str_info._ascii.ob_base,
+ &_Py_ID(_),
+ & const_str_ispkg._ascii.ob_base,
+ & const_str_origname._ascii.ob_base,
+ & const_str_spec._ascii.ob_base,
+ &_Py_ID(filename),
+ & const_str_pkgdir._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[12];
+ }
+importlib__bootstrap_toplevel_consts_46_consts_6_localspluskinds = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 11,
+ },
+ .ob_shash = -1,
+ .ob_sval = " ",
+};
+static
+ struct _PyCode_DEF(306)
+importlib__bootstrap_toplevel_consts_46_consts_6 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 153,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_46_consts_6_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_toplevel_consts_46_consts_6_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 4,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 17 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 6,
+ .co_firstlineno = 1128,
+ .co_nlocalsplus = 11,
+ .co_nlocals = 11,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 74,
+ .co_localsplusnames = & importlib__bootstrap_toplevel_consts_46_consts_6_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_46_consts_6_localspluskinds.ob_base.ob_base,
+ .co_filename = & importlib__bootstrap_toplevel_consts_1_filename._ascii.ob_base,
+ .co_name = & const_str_find_spec._ascii.ob_base,
+ .co_qualname = & importlib__bootstrap_toplevel_consts_46_consts_6_qualname._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_toplevel_consts_46_consts_6_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x74\x02\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\xab\x02\x00\x00\x00\x00\x00\x00\x7d\x04\x7c\x04\x80\x01\x79\x00\x7c\x04\x5c\x03\x00\x00\x7d\x05\x7d\x06\x7d\x07\x74\x07\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x7c\x00\x7c\x00\x6a\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x06\xac\x01\xab\x04\x00\x00\x00\x00\x00\x00\x7d\x08\x7c\x00\x6a\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x07\x7c\x01\x7c\x06\xab\x03\x00\x00\x00\x00\x00\x00\x5c\x02\x00\x00\x7d\x09\x7d\x0a\x02\x00\x74\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x74\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7c\x09\x7c\x07\xac\x02\xab\x02\x00\x00\x00\x00\x00\x00\x7c\x08\x5f\x09\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x0a\x72\x1c\x7c\x08\x6a\x14\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x17\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x03\x7c\x0a\xab\x02\x00\x00\x00\x00\x00\x00\x01\x00\x7c\x08\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[23];
+ }
+importlib__bootstrap_toplevel_consts_46_consts_7_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 22,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Set __file__, if able.",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_46_consts_7_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & importlib__bootstrap_toplevel_consts_46_consts_7_consts_0._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[6];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_46_consts_7_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 6,
+ },
+ .ob_item = {
+ & const_str__new_module._ascii.ob_base,
+ &_Py_ID(name),
+ & const_str_loader_state._ascii.ob_base,
+ &_Py_ID(filename),
+ &_Py_ID(__file__),
+ & const_str_AttributeError._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[29];
+ }
+importlib__bootstrap_toplevel_consts_46_consts_7_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 28,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "FrozenImporter.create_module",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[85];
+ }
+importlib__bootstrap_toplevel_consts_46_consts_7_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 84,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf4\x06\x00\x12\x1d\x98\x54\x9f\x59\x99\x59\xd3\x11\x27\x88\x06\xf0\x02\x06\x09\x2b\xd8\x17\x1b\xd7\x17\x28\xd1\x17\x28\xd7\x17\x31\xd1\x17\x31\x88\x48\xf1\x08\x00\x10\x18\xd8\x22\x2a\x90\x06\x94\x0f\xd8\x0f\x15\x88\x0d\xf8\xf4\x0b\x00\x10\x1e\xf2\x00\x01\x09\x11\xd8\x0c\x10\xf0\x08\x00\x10\x16\x88\x0d\xf0\x0b\x01\x09\x11\xfa",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[16];
+ }
+importlib__bootstrap_toplevel_consts_46_consts_7_exceptiontable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 15,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x97\x16\x38\x00\xb8\x09\x41\x05\x03\xc1\x04\x01\x41\x05\x03",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_46_consts_7_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ & const_str_spec._ascii.ob_base,
+ &_Py_ID(module),
+ &_Py_ID(filename),
+ },
+ },
+};
+static
+ struct _PyCode_DEF(144)
+importlib__bootstrap_toplevel_consts_46_consts_7 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 72,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_46_consts_7_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_toplevel_consts_46_consts_7_names._object.ob_base.ob_base,
+ .co_exceptiontable = & importlib__bootstrap_toplevel_consts_46_consts_7_exceptiontable.ob_base.ob_base,
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 7 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 1158,
+ .co_nlocalsplus = 3,
+ .co_nlocals = 3,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 75,
+ .co_localsplusnames = & importlib__bootstrap_toplevel_consts_46_consts_7_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_3_localspluskinds.ob_base.ob_base,
+ .co_filename = & importlib__bootstrap_toplevel_consts_1_filename._ascii.ob_base,
+ .co_name = & const_str_create_module._ascii.ob_base,
+ .co_qualname = & importlib__bootstrap_toplevel_consts_46_consts_7_qualname._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_toplevel_consts_46_consts_7_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x01\x09\x00\x7c\x00\x6a\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7d\x02\x7c\x02\x72\x07\x7c\x02\x7c\x01\x5f\x04\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x53\x00\x23\x00\x74\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x72\x04\x01\x00\x59\x00\x7c\x01\x53\x00\x77\x00\x78\x03\x59\x00\x77\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[18];
+ }
+const_str_get_frozen_object = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 17,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "get_frozen_object",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[5];
+ }
+const_str_exec = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 4,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "exec",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[7];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_46_consts_8_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 7,
+ },
+ .ob_item = {
+ &_Py_ID(__spec__),
+ &_Py_ID(name),
+ & const_str__call_with_frames_removed._ascii.ob_base,
+ & const_str__imp._ascii.ob_base,
+ & const_str_get_frozen_object._ascii.ob_base,
+ & const_str_exec._ascii.ob_base,
+ &_Py_ID(__dict__),
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[27];
+ }
+importlib__bootstrap_toplevel_consts_46_consts_8_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 26,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "FrozenImporter.exec_module",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[53];
+ }
+importlib__bootstrap_toplevel_consts_46_consts_8_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 52,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xe0\x0f\x15\x8f\x7f\x89\x7f\x88\x04\xd8\x0f\x13\x8f\x79\x89\x79\x88\x04\xdc\x0f\x28\xac\x14\xd7\x29\x3f\xd1\x29\x3f\xc0\x14\xd3\x0f\x46\x88\x04\xdc\x08\x0c\x88\x54\x90\x36\x97\x3f\x91\x3f\xd5\x08\x23",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[4];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_46_consts_8_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_item = {
+ &_Py_ID(module),
+ & const_str_spec._ascii.ob_base,
+ &_Py_ID(name),
+ &_Py_ID(code),
+ },
+ },
+};
+static
+ struct _PyCode_DEF(148)
+importlib__bootstrap_toplevel_consts_46_consts_8 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 74,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_1_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_toplevel_consts_46_consts_8_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 8 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 1171,
+ .co_nlocalsplus = 4,
+ .co_nlocals = 4,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 76,
+ .co_localsplusnames = & importlib__bootstrap_toplevel_consts_46_consts_8_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_7_consts_3_localspluskinds.ob_base.ob_base,
+ .co_filename = & importlib__bootstrap_toplevel_consts_1_filename._ascii.ob_base,
+ .co_name = & const_str_exec_module._ascii.ob_base,
+ .co_qualname = & importlib__bootstrap_toplevel_consts_46_consts_8_qualname._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_toplevel_consts_46_consts_8_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7d\x01\x7c\x01\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7d\x02\x74\x05\x00\x00\x00\x00\x00\x00\x00\x00\x74\x06\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x02\xab\x02\x00\x00\x00\x00\x00\x00\x7d\x03\x74\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x03\x7c\x00\x6a\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x02\x00\x00\x00\x00\x00\x00\x01\x00\x79\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[96];
+ }
+importlib__bootstrap_toplevel_consts_46_consts_9_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 95,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x4c\x6f\x61\x64\x20\x61\x20\x66\x72\x6f\x7a\x65\x6e\x20\x6d\x6f\x64\x75\x6c\x65\x2e\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x54\x68\x69\x73\x20\x6d\x65\x74\x68\x6f\x64\x20\x69\x73\x20\x64\x65\x70\x72\x65\x63\x61\x74\x65\x64\x2e\x20\x20\x55\x73\x65\x20\x65\x78\x65\x63\x5f\x6d\x6f\x64\x75\x6c\x65\x28\x29\x20\x69\x6e\x73\x74\x65\x61\x64\x2e\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_46_consts_9_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ & importlib__bootstrap_toplevel_consts_46_consts_9_consts_0._ascii.ob_base,
+ Py_None,
+ &_Py_ID(__file__),
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[8];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_46_consts_9_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 8,
+ },
+ .ob_item = {
+ & const_str__load_module_shim._ascii.ob_base,
+ & const_str__imp._ascii.ob_base,
+ & const_str_find_frozen._ascii.ob_base,
+ & const_str___origname__._ascii.ob_base,
+ & const_str_vars._ascii.ob_base,
+ & const_str_pop._ascii.ob_base,
+ &_Py_ID(__path__),
+ &_Py_ID(_fix_up_module),
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[27];
+ }
+importlib__bootstrap_toplevel_consts_46_consts_9_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 26,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "FrozenImporter.load_module",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[111];
+ }
+importlib__bootstrap_toplevel_consts_46_consts_9_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 110,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf4\x10\x00\x12\x23\xa0\x33\xa8\x08\xd3\x11\x31\x88\x06\xdc\x0f\x13\xd7\x0f\x1f\xd1\x0f\x1f\xa0\x08\xd3\x0f\x29\x88\x04\xd8\x0f\x13\xd0\x0f\x1f\xd1\x08\x1f\xd8\x1d\x21\xd1\x08\x1a\x88\x01\x88\x35\x90\x28\xd8\x1e\x26\x88\x06\xd4\x08\x1b\xdc\x08\x0c\x88\x56\x8b\x0c\xd7\x08\x18\xd1\x08\x18\x98\x1a\xa0\x54\xd4\x08\x2a\xd9\x0b\x10\xd8\x1e\x20\x88\x46\x8c\x4f\xd8\x08\x0b\xd7\x08\x1a\xd1\x08\x1a\x98\x36\xd4\x08\x22\xd8\x0f\x15\x88\x0d",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[7];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_46_consts_9_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 7,
+ },
+ .ob_item = {
+ & const_str_cls._ascii.ob_base,
+ & const_str_fullname._ascii.ob_base,
+ &_Py_ID(module),
+ & const_str_info._ascii.ob_base,
+ &_Py_ID(_),
+ & const_str_ispkg._ascii.ob_base,
+ & const_str_origname._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[8];
+ }
+importlib__bootstrap_toplevel_consts_46_consts_9_localspluskinds = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 7,
+ },
+ .ob_shash = -1,
+ .ob_sval = " ",
+};
+static
+ struct _PyCode_DEF(212)
+importlib__bootstrap_toplevel_consts_46_consts_9 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 106,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_46_consts_9_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_toplevel_consts_46_consts_9_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 11 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 1178,
+ .co_nlocalsplus = 7,
+ .co_nlocals = 7,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 77,
+ .co_localsplusnames = & importlib__bootstrap_toplevel_consts_46_consts_9_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_46_consts_9_localspluskinds.ob_base.ob_base,
+ .co_filename = & importlib__bootstrap_toplevel_consts_1_filename._ascii.ob_base,
+ .co_name = & const_str_load_module._ascii.ob_base,
+ .co_qualname = & importlib__bootstrap_toplevel_consts_46_consts_9_qualname._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_toplevel_consts_46_consts_9_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x7c\x01\xab\x02\x00\x00\x00\x00\x00\x00\x7d\x02\x74\x02\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x03\x7c\x03\x80\x02\x4a\x00\x82\x01\x7c\x03\x5c\x03\x00\x00\x7d\x04\x7d\x05\x7d\x06\x7c\x06\x7c\x02\x5f\x03\x00\x00\x00\x00\x00\x00\x00\x00\x74\x09\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x02\xab\x01\x00\x00\x00\x00\x00\x00\x6a\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x02\x64\x01\xab\x02\x00\x00\x00\x00\x00\x00\x01\x00\x7c\x05\x72\x07\x67\x00\x7c\x02\x5f\x06\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x6a\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x02\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x7c\x02\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[46];
+ }
+importlib__bootstrap_toplevel_consts_46_consts_10_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 45,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Return the code object for the frozen module.",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_46_consts_10_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & importlib__bootstrap_toplevel_consts_46_consts_10_consts_0._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_46_consts_10_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & const_str__imp._ascii.ob_base,
+ & const_str_get_frozen_object._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[24];
+ }
+importlib__bootstrap_toplevel_consts_46_consts_10_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 23,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "FrozenImporter.get_code",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[22];
+ }
+importlib__bootstrap_toplevel_consts_46_consts_10_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 21,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf4\x08\x00\x10\x14\xd7\x0f\x25\xd1\x0f\x25\xa0\x68\xd3\x0f\x2f\xd0\x08\x2f",
+};
+static
+ struct _PyCode_DEF(44)
+importlib__bootstrap_toplevel_consts_46_consts_10 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 22,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_46_consts_10_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_toplevel_consts_46_consts_10_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 5 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 3,
+ .co_firstlineno = 1197,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 2,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 78,
+ .co_localsplusnames = & importlib__bootstrap_toplevel_consts_44_consts_7_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_14_consts_2_localspluskinds.ob_base.ob_base,
+ .co_filename = & importlib__bootstrap_toplevel_consts_1_filename._ascii.ob_base,
+ .co_name = & const_str_get_code._ascii.ob_base,
+ .co_qualname = & importlib__bootstrap_toplevel_consts_46_consts_10_qualname._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_toplevel_consts_46_consts_10_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\xab\x01\x00\x00\x00\x00\x00\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[55];
+ }
+importlib__bootstrap_toplevel_consts_46_consts_11_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 54,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Return None as frozen modules do not have source code.",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_46_consts_11_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & importlib__bootstrap_toplevel_consts_46_consts_11_consts_0._ascii.ob_base,
+ Py_None,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[26];
+ }
+importlib__bootstrap_toplevel_consts_46_consts_11_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 25,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "FrozenImporter.get_source",
+};
+static
+ struct _PyCode_DEF(4)
+importlib__bootstrap_toplevel_consts_46_consts_11 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 2,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_46_consts_11_consts._object.ob_base.ob_base,
+ .co_names = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 2 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 0,
+ .co_firstlineno = 1203,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 2,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 79,
+ .co_localsplusnames = & importlib__bootstrap_toplevel_consts_44_consts_7_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_14_consts_2_localspluskinds.ob_base.ob_base,
+ .co_filename = & importlib__bootstrap_toplevel_consts_1_filename._ascii.ob_base,
+ .co_name = &_Py_ID(get_source),
+ .co_qualname = & importlib__bootstrap_toplevel_consts_46_consts_11_qualname._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_toplevel_consts_44_consts_7_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x79\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[47];
+ }
+importlib__bootstrap_toplevel_consts_46_consts_12_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 46,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Return True if the frozen module is a package.",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_46_consts_12_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & importlib__bootstrap_toplevel_consts_46_consts_12_consts_0._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_46_consts_12_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & const_str__imp._ascii.ob_base,
+ & const_str_is_frozen_package._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[26];
+ }
+importlib__bootstrap_toplevel_consts_46_consts_12_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 25,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "FrozenImporter.is_package",
+};
+static
+ struct _PyCode_DEF(44)
+importlib__bootstrap_toplevel_consts_46_consts_12 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 22,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_46_consts_12_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_toplevel_consts_46_consts_12_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 5 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 3,
+ .co_firstlineno = 1209,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 2,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 80,
+ .co_localsplusnames = & importlib__bootstrap_toplevel_consts_44_consts_7_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_14_consts_2_localspluskinds.ob_base.ob_base,
+ .co_filename = & importlib__bootstrap_toplevel_consts_1_filename._ascii.ob_base,
+ .co_name = & const_str_is_package._ascii.ob_base,
+ .co_qualname = & importlib__bootstrap_toplevel_consts_46_consts_12_qualname._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_toplevel_consts_46_consts_10_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\xab\x01\x00\x00\x00\x00\x00\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[15];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_46_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 15,
+ },
+ .ob_item = {
+ & const_str_FrozenImporter._ascii.ob_base,
+ & importlib__bootstrap_toplevel_consts_46_consts_1._ascii.ob_base,
+ & const_str_frozen._ascii.ob_base,
+ & importlib__bootstrap_toplevel_consts_46_consts_3.ob_base.ob_base,
+ Py_None,
+ & importlib__bootstrap_toplevel_consts_46_consts_5.ob_base.ob_base,
+ & importlib__bootstrap_toplevel_consts_46_consts_6.ob_base.ob_base,
+ & importlib__bootstrap_toplevel_consts_46_consts_7.ob_base.ob_base,
+ & importlib__bootstrap_toplevel_consts_46_consts_8.ob_base.ob_base,
+ & importlib__bootstrap_toplevel_consts_46_consts_9.ob_base.ob_base,
+ & importlib__bootstrap_toplevel_consts_46_consts_10.ob_base.ob_base,
+ & importlib__bootstrap_toplevel_consts_46_consts_11.ob_base.ob_base,
+ & importlib__bootstrap_toplevel_consts_46_consts_12.ob_base.ob_base,
+ & importlib__bootstrap_toplevel_consts_30_consts_4_consts._object.ob_base.ob_base,
+ & importlib__bootstrap_toplevel_consts_44_consts_10._object.ob_base.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[17];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_46_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 17,
+ },
+ .ob_item = {
+ &_Py_ID(__name__),
+ &_Py_ID(__module__),
+ &_Py_ID(__qualname__),
+ &_Py_ID(__doc__),
+ & const_str__ORIGIN._ascii.ob_base,
+ & const_str_classmethod._ascii.ob_base,
+ &_Py_ID(_fix_up_module),
+ & const_str__resolve_filename._ascii.ob_base,
+ & const_str_find_spec._ascii.ob_base,
+ & const_str_staticmethod._ascii.ob_base,
+ & const_str_create_module._ascii.ob_base,
+ & const_str_exec_module._ascii.ob_base,
+ & const_str_load_module._ascii.ob_base,
+ & const_str__requires_frozen._ascii.ob_base,
+ & const_str_get_code._ascii.ob_base,
+ &_Py_ID(get_source),
+ & const_str_is_package._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[220];
+ }
+importlib__bootstrap_toplevel_consts_46_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 219,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x84\x00\xf1\x04\x05\x05\x08\xf0\x0e\x00\x0f\x17\x80\x47\xe0\x05\x10\xf1\x02\x42\x01\x05\x25\xf3\x03\x00\x06\x11\xf0\x02\x42\x01\x05\x25\xf0\x48\x02\x00\x06\x11\xf2\x02\x16\x05\x20\xf3\x03\x00\x06\x11\xf0\x02\x16\x05\x20\xf0\x30\x00\x06\x11\xf2\x02\x1b\x05\x14\xf3\x03\x00\x06\x11\xf0\x02\x1b\x05\x14\xf0\x3a\x00\x06\x12\xf1\x02\x0a\x05\x16\xf3\x03\x00\x06\x12\xf0\x02\x0a\x05\x16\xf0\x18\x00\x06\x12\xf1\x02\x04\x05\x24\xf3\x03\x00\x06\x12\xf0\x02\x04\x05\x24\xf0\x0c\x00\x06\x11\xf1\x02\x10\x05\x16\xf3\x03\x00\x06\x11\xf0\x02\x10\x05\x16\xf0\x24\x00\x06\x11\xd8\x05\x15\xf1\x02\x02\x05\x30\xf3\x03\x00\x06\x16\xf3\x03\x00\x06\x11\xf0\x04\x02\x05\x30\xf0\x08\x00\x06\x11\xd8\x05\x15\xf1\x02\x02\x05\x14\xf3\x03\x00\x06\x16\xf3\x03\x00\x06\x11\xf0\x04\x02\x05\x14\xf0\x08\x00\x06\x11\xd8\x05\x15\xf1\x02\x02\x05\x30\xf3\x03\x00\x06\x16\xf3\x03\x00\x06\x11\xf1\x04\x02\x05\x30",
+};
+static
+ struct _PyCode_DEF(198)
+importlib__bootstrap_toplevel_consts_46 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 99,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_46_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_toplevel_consts_46_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 0,
+ .co_argcount = 0,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 3 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 3,
+ .co_firstlineno = 1023,
+ .co_nlocalsplus = 0,
+ .co_nlocals = 0,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 81,
+ .co_localsplusnames = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_filename = & importlib__bootstrap_toplevel_consts_1_filename._ascii.ob_base,
+ .co_name = & const_str_FrozenImporter._ascii.ob_base,
+ .co_qualname = & const_str_FrozenImporter._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_toplevel_consts_46_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x65\x00\x5a\x01\x64\x00\x5a\x02\x64\x01\x5a\x03\x64\x02\x5a\x04\x65\x05\x64\x03\x84\x00\xab\x00\x00\x00\x00\x00\x00\x00\x5a\x06\x65\x05\x64\x0d\x64\x05\x84\x01\xab\x00\x00\x00\x00\x00\x00\x00\x5a\x07\x65\x05\x64\x0e\x64\x06\x84\x01\xab\x00\x00\x00\x00\x00\x00\x00\x5a\x08\x65\x09\x64\x07\x84\x00\xab\x00\x00\x00\x00\x00\x00\x00\x5a\x0a\x65\x09\x64\x08\x84\x00\xab\x00\x00\x00\x00\x00\x00\x00\x5a\x0b\x65\x05\x64\x09\x84\x00\xab\x00\x00\x00\x00\x00\x00\x00\x5a\x0c\x65\x05\x65\x0d\x64\x0a\x84\x00\xab\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x5a\x0e\x65\x05\x65\x0d\x64\x0b\x84\x00\xab\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x5a\x0f\x65\x05\x65\x0d\x64\x0c\x84\x00\xab\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x5a\x10\x79\x04",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[19];
+ }
+const_str__ImportLockContext = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 18,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_ImportLockContext",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[37];
+ }
+importlib__bootstrap_toplevel_consts_48_consts_1 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 36,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Context manager for the import lock.",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[25];
+ }
+importlib__bootstrap_toplevel_consts_48_consts_2_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 24,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Acquire the import lock.",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_48_consts_2_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & importlib__bootstrap_toplevel_consts_48_consts_2_consts_0._ascii.ob_base,
+ Py_None,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_48_consts_2_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & const_str__imp._ascii.ob_base,
+ & const_str_acquire_lock._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[29];
+ }
+importlib__bootstrap_toplevel_consts_48_consts_2_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 28,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_ImportLockContext.__enter__",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[15];
+ }
+importlib__bootstrap_toplevel_consts_48_consts_2_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 14,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xe4\x08\x0c\xd7\x08\x19\xd1\x08\x19\xd5\x08\x1b",
+};
+static
+ struct _PyCode_DEF(44)
+importlib__bootstrap_toplevel_consts_48_consts_2 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 22,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_48_consts_2_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_toplevel_consts_48_consts_2_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 3 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 2,
+ .co_firstlineno = 1222,
+ .co_nlocalsplus = 1,
+ .co_nlocals = 1,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 82,
+ .co_localsplusnames = & importlib__bootstrap_toplevel_consts_7_consts_2_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_characters[32]),
+ .co_filename = & importlib__bootstrap_toplevel_consts_1_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__enter__),
+ .co_qualname = & importlib__bootstrap_toplevel_consts_48_consts_2_qualname._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_toplevel_consts_48_consts_2_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x01\x00\x79\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[61];
+ }
+importlib__bootstrap_toplevel_consts_48_consts_3_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 60,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Release the import lock regardless of any raised exceptions.",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_48_consts_3_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & importlib__bootstrap_toplevel_consts_48_consts_3_consts_0._ascii.ob_base,
+ Py_None,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_48_consts_3_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & const_str__imp._ascii.ob_base,
+ & const_str_release_lock._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[28];
+ }
+importlib__bootstrap_toplevel_consts_48_consts_3_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 27,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_ImportLockContext.__exit__",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[14];
+ }
+const_str_exc_traceback = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 13,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "exc_traceback",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[4];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_48_consts_3_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_item = {
+ &_Py_ID(self),
+ &_Py_ID(exc_type),
+ &_Py_ID(exc_value),
+ & const_str_exc_traceback._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(44)
+importlib__bootstrap_toplevel_consts_48_consts_3 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 22,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_48_consts_3_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_toplevel_consts_48_consts_3_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 4,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 6 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 2,
+ .co_firstlineno = 1226,
+ .co_nlocalsplus = 4,
+ .co_nlocals = 4,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 83,
+ .co_localsplusnames = & importlib__bootstrap_toplevel_consts_48_consts_3_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_7_consts_3_localspluskinds.ob_base.ob_base,
+ .co_filename = & importlib__bootstrap_toplevel_consts_1_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__exit__),
+ .co_qualname = & importlib__bootstrap_toplevel_consts_48_consts_3_qualname._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_toplevel_consts_48_consts_2_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x01\x00\x79\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[5];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_48_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 5,
+ },
+ .ob_item = {
+ & const_str__ImportLockContext._ascii.ob_base,
+ & importlib__bootstrap_toplevel_consts_48_consts_1._ascii.ob_base,
+ & importlib__bootstrap_toplevel_consts_48_consts_2.ob_base.ob_base,
+ & importlib__bootstrap_toplevel_consts_48_consts_3.ob_base.ob_base,
+ Py_None,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[6];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_48_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 6,
+ },
+ .ob_item = {
+ &_Py_ID(__name__),
+ &_Py_ID(__module__),
+ &_Py_ID(__qualname__),
+ &_Py_ID(__doc__),
+ &_Py_ID(__enter__),
+ &_Py_ID(__exit__),
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[16];
+ }
+importlib__bootstrap_toplevel_consts_48_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 15,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x84\x00\xe1\x04\x2e\xf2\x04\x02\x05\x1c\xf3\x08\x02\x05\x1c",
+};
+static
+ struct _PyCode_DEF(28)
+importlib__bootstrap_toplevel_consts_48 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 14,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_48_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_toplevel_consts_48_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 0,
+ .co_argcount = 0,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 1 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 1,
+ .co_firstlineno = 1218,
+ .co_nlocalsplus = 0,
+ .co_nlocals = 0,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 84,
+ .co_localsplusnames = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_filename = & importlib__bootstrap_toplevel_consts_1_filename._ascii.ob_base,
+ .co_name = & const_str__ImportLockContext._ascii.ob_base,
+ .co_qualname = & const_str__ImportLockContext._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_toplevel_consts_48_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x65\x00\x5a\x01\x64\x00\x5a\x02\x64\x01\x5a\x03\x64\x02\x84\x00\x5a\x04\x64\x03\x84\x00\x5a\x05\x79\x04",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[51];
+ }
+importlib__bootstrap_toplevel_consts_50_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 50,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Resolve a relative module name to an absolute one.",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[51];
+ }
+importlib__bootstrap_toplevel_consts_50_consts_3 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 50,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "attempted relative import beyond top-level package",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[5];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_50_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 5,
+ },
+ .ob_item = {
+ & importlib__bootstrap_toplevel_consts_50_consts_0._ascii.ob_base,
+ &_Py_STR(dot),
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 1],
+ & importlib__bootstrap_toplevel_consts_50_consts_3._ascii.ob_base,
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 0],
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[7];
+ }
+const_str_rsplit = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 6,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "rsplit",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_50_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ & const_str_rsplit._ascii.ob_base,
+ &_Py_ID(len),
+ & const_str_ImportError._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[14];
+ }
+const_str__resolve_name = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 13,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_resolve_name",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[80];
+ }
+importlib__bootstrap_toplevel_consts_50_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 79,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xe0\x0b\x12\x8f\x3e\x89\x3e\x98\x23\x98\x75\xa0\x71\x99\x79\xd3\x0b\x29\x80\x44\xdc\x07\x0a\x88\x34\x83\x79\x90\x35\xd2\x07\x18\xdc\x0e\x19\xd0\x1a\x4e\xd3\x0e\x4f\xd0\x08\x4f\xd8\x0b\x0f\x90\x01\x89\x37\x80\x44\xd9\x1f\x23\x88\x64\x88\x56\x90\x31\x90\x54\x90\x46\xd0\x0b\x1b\xd0\x04\x2d\xa8\x14\xd0\x04\x2d",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[8];
+ }
+const_str_package = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 7,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "package",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[5];
+ }
+const_str_bits = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 4,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "bits",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[5];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_50_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 5,
+ },
+ .ob_item = {
+ &_Py_ID(name),
+ & const_str_package._ascii.ob_base,
+ &_Py_ID(level),
+ & const_str_bits._ascii.ob_base,
+ &_Py_ID(base),
+ },
+ },
+};
+static
+ struct _PyCode_DEF(126)
+importlib__bootstrap_toplevel_consts_50 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 63,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_50_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_toplevel_consts_50_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 3,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 10 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 5,
+ .co_firstlineno = 1231,
+ .co_nlocalsplus = 5,
+ .co_nlocals = 5,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 85,
+ .co_localsplusnames = & importlib__bootstrap_toplevel_consts_50_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_7_consts_5_localspluskinds.ob_base.ob_base,
+ .co_filename = & importlib__bootstrap_toplevel_consts_1_filename._ascii.ob_base,
+ .co_name = & const_str__resolve_name._ascii.ob_base,
+ .co_qualname = & const_str__resolve_name._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_toplevel_consts_50_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x01\x6a\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x01\x7c\x02\x64\x02\x7a\x0a\x00\x00\xab\x02\x00\x00\x00\x00\x00\x00\x7d\x03\x74\x03\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x03\xab\x01\x00\x00\x00\x00\x00\x00\x7c\x02\x6b\x02\x00\x00\x72\x0b\x74\x05\x00\x00\x00\x00\x00\x00\x00\x00\x64\x03\xab\x01\x00\x00\x00\x00\x00\x00\x82\x01\x7c\x03\x64\x04\x19\x00\x00\x00\x7d\x04\x7c\x00\x72\x07\x7c\x04\x9b\x00\x64\x01\x7c\x00\x9b\x00\x9d\x03\x53\x00\x7c\x04\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[22];
+ }
+importlib__bootstrap_toplevel_consts_51_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 21,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Find a module's spec.",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[54];
+ }
+importlib__bootstrap_toplevel_consts_51_consts_2 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 53,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "sys.meta_path is None, Python is likely shutting down",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[23];
+ }
+importlib__bootstrap_toplevel_consts_51_consts_3 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 22,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "sys.meta_path is empty",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[4];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_51_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_item = {
+ & importlib__bootstrap_toplevel_consts_51_consts_0._ascii.ob_base,
+ Py_None,
+ & importlib__bootstrap_toplevel_consts_51_consts_2._ascii.ob_base,
+ & importlib__bootstrap_toplevel_consts_51_consts_3._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[10];
+ }
+const_str_meta_path = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 9,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "meta_path",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[11];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_51_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 11,
+ },
+ .ob_item = {
+ & const_str_sys._ascii.ob_base,
+ & const_str_meta_path._ascii.ob_base,
+ & const_str_ImportError._ascii.ob_base,
+ & const_str__warnings._ascii.ob_base,
+ & const_str_warn._ascii.ob_base,
+ & const_str_ImportWarning._ascii.ob_base,
+ &_Py_ID(modules),
+ & const_str__ImportLockContext._ascii.ob_base,
+ & const_str_find_spec._ascii.ob_base,
+ & const_str_AttributeError._ascii.ob_base,
+ &_Py_ID(__spec__),
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[11];
+ }
+const_str__find_spec = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 10,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_find_spec",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[277];
+ }
+importlib__bootstrap_toplevel_consts_51_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 276,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xe4\x10\x13\x97\x0d\x91\x0d\x80\x49\xd8\x07\x10\xd0\x07\x18\xe4\x0e\x19\xf0\x00\x01\x1b\x2a\xf3\x00\x01\x0f\x2b\xf0\x00\x01\x09\x2b\xf1\x06\x00\x0c\x15\xdc\x08\x11\x8f\x0e\x89\x0e\xd0\x17\x2f\xb4\x1d\xd4\x08\x3f\xf0\x0a\x00\x11\x15\x9c\x03\x9f\x0b\x99\x0b\xd0\x10\x23\x80\x49\xd8\x12\x1b\xf2\x00\x1b\x05\x14\x88\x06\xdc\x0d\x1f\xd3\x0d\x21\xf1\x00\x06\x09\x35\xf0\x02\x05\x0d\x35\xd8\x1c\x22\xd7\x1c\x2c\xd1\x1c\x2c\x90\x09\xf1\x08\x00\x18\x21\xa0\x14\xa0\x74\xa8\x56\xd3\x17\x34\x91\x04\xf7\x0d\x06\x09\x35\xf0\x0e\x00\x0c\x10\xd1\x0b\x1b\xe1\x13\x1c\xa0\x14\xac\x13\xaf\x1b\xa9\x1b\xd1\x21\x34\xdc\x19\x1c\x9f\x1b\x99\x1b\xa0\x54\xd1\x19\x2a\x90\x06\xf0\x02\x0b\x11\x28\xd8\x1f\x25\x9f\x7f\x99\x7f\x90\x48\xf0\x0e\x00\x18\x20\xd0\x17\x27\xd8\x1f\x23\x9a\x0b\xe0\x1f\x27\x9a\x0f\xe0\x17\x1b\x92\x0b\xf0\x33\x1b\x05\x14\xf0\x36\x00\x10\x14\xf8\xf4\x2f\x00\x14\x22\xf2\x00\x01\x0d\x19\xd8\x10\x18\xf7\x09\x06\x09\x35\xf0\x00\x06\x09\x35\xf0\x06\x01\x0d\x19\xfa\xf7\x07\x06\x09\x35\xf0\x00\x06\x09\x35\xfb\xf4\x1a\x00\x18\x26\xf2\x00\x04\x11\x20\xf0\x08\x00\x1c\x20\x94\x4b\xf0\x09\x04\x11\x20\xfa",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[67];
+ }
+importlib__bootstrap_toplevel_consts_51_exceptiontable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 66,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\xc1\x1b\x01\x43\x1a\x05\xc1\x1d\x0c\x43\x03\x04\xc1\x29\x0a\x43\x1a\x05\xc2\x27\x0c\x43\x26\x02\xc3\x03\x09\x43\x17\x07\xc3\x0c\x01\x43\x1a\x05\xc3\x16\x01\x43\x17\x07\xc3\x17\x03\x43\x1a\x05\xc3\x1a\x05\x43\x23\x09\xc3\x26\x0b\x43\x36\x05\xc3\x35\x01\x43\x36\x05",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[10];
+ }
+const_str_is_reload = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 9,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "is_reload",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[7];
+ }
+const_str_finder = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 6,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "finder",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[10];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_51_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 10,
+ },
+ .ob_item = {
+ &_Py_ID(name),
+ &_Py_ID(path),
+ &_Py_ID(target),
+ & const_str_meta_path._ascii.ob_base,
+ & const_str_is_reload._ascii.ob_base,
+ & const_str_finder._ascii.ob_base,
+ & const_str_find_spec._ascii.ob_base,
+ & const_str_spec._ascii.ob_base,
+ &_Py_ID(module),
+ &_Py_ID(__spec__),
+ },
+ },
+};
+static
+ struct _PyCode_DEF(498)
+importlib__bootstrap_toplevel_consts_51 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 249,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_51_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_toplevel_consts_51_names._object.ob_base.ob_base,
+ .co_exceptiontable = & importlib__bootstrap_toplevel_consts_51_exceptiontable.ob_base.ob_base,
+ .co_flags = 3,
+ .co_argcount = 3,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 17 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 7,
+ .co_firstlineno = 1240,
+ .co_nlocalsplus = 10,
+ .co_nlocals = 10,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 86,
+ .co_localsplusnames = & importlib__bootstrap_toplevel_consts_51_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_46_consts_3_localspluskinds.ob_base.ob_base,
+ .co_filename = & importlib__bootstrap_toplevel_consts_1_filename._ascii.ob_base,
+ .co_name = & const_str__find_spec._ascii.ob_base,
+ .co_qualname = & const_str__find_spec._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_toplevel_consts_51_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7d\x03\x7c\x03\x80\x0b\x74\x05\x00\x00\x00\x00\x00\x00\x00\x00\x64\x02\xab\x01\x00\x00\x00\x00\x00\x00\x82\x01\x7c\x03\x73\x1a\x74\x06\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x03\x74\x0a\x00\x00\x00\x00\x00\x00\x00\x00\xab\x02\x00\x00\x00\x00\x00\x00\x01\x00\x7c\x00\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x76\x00\x7d\x04\x7c\x03\x44\x00\x5d\x71\x00\x00\x7d\x05\x74\x0f\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x35\x00\x01\x00\x09\x00\x7c\x05\x6a\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7d\x06\x02\x00\x7c\x06\x7c\x00\x7c\x01\x7c\x02\xab\x03\x00\x00\x00\x00\x00\x00\x7d\x07\x09\x00\x64\x01\x64\x01\x64\x01\xab\x02\x00\x00\x00\x00\x00\x00\x01\x00\x7f\x07\x80\x01\x8c\x31\x7c\x04\x73\x3c\x7c\x00\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x76\x00\x72\x2a\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x19\x00\x00\x00\x7d\x08\x09\x00\x7c\x08\x6a\x14\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7d\x09\x7c\x09\x80\x04\x7c\x07\x63\x02\x01\x00\x53\x00\x7c\x09\x63\x02\x01\x00\x53\x00\x7c\x07\x63\x02\x01\x00\x53\x00\x04\x00\x79\x01\x23\x00\x74\x12\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x72\x0b\x01\x00\x59\x00\x64\x01\x64\x01\x64\x01\xab\x02\x00\x00\x00\x00\x00\x00\x01\x00\x8c\x88\x77\x00\x78\x03\x59\x00\x77\x01\x23\x00\x31\x00\x73\x01\x77\x02\x01\x00\x59\x00\x01\x00\x01\x00\x8c\x67\x78\x03\x59\x00\x77\x01\x23\x00\x74\x12\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x72\x07\x01\x00\x7c\x07\x63\x02\x59\x00\x63\x02\x01\x00\x53\x00\x77\x00\x78\x03\x59\x00\x77\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[29];
+ }
+importlib__bootstrap_toplevel_consts_52_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 28,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Verify arguments are \"sane\".",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[30];
+ }
+importlib__bootstrap_toplevel_consts_52_consts_1 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 29,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "module name must be str, not ",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[19];
+ }
+importlib__bootstrap_toplevel_consts_52_consts_3 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 18,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "level must be >= 0",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[32];
+ }
+importlib__bootstrap_toplevel_consts_52_consts_4 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 31,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "__package__ not set to a string",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[55];
+ }
+importlib__bootstrap_toplevel_consts_52_consts_5 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 54,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "attempted relative import with no known parent package",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[18];
+ }
+importlib__bootstrap_toplevel_consts_52_consts_6 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 17,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Empty module name",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[8];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_52_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 8,
+ },
+ .ob_item = {
+ & importlib__bootstrap_toplevel_consts_52_consts_0._ascii.ob_base,
+ & importlib__bootstrap_toplevel_consts_52_consts_1._ascii.ob_base,
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 0],
+ & importlib__bootstrap_toplevel_consts_52_consts_3._ascii.ob_base,
+ & importlib__bootstrap_toplevel_consts_52_consts_4._ascii.ob_base,
+ & importlib__bootstrap_toplevel_consts_52_consts_5._ascii.ob_base,
+ & importlib__bootstrap_toplevel_consts_52_consts_6._ascii.ob_base,
+ Py_None,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[4];
+ }
+const_str_str = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 3,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "str",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[10];
+ }
+const_str_TypeError = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 9,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "TypeError",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[11];
+ }
+const_str_ValueError = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 10,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "ValueError",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[6];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_52_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 6,
+ },
+ .ob_item = {
+ &_Py_ID(isinstance),
+ & const_str_str._ascii.ob_base,
+ & const_str_TypeError._ascii.ob_base,
+ &_Py_ID(type),
+ & const_str_ValueError._ascii.ob_base,
+ & const_str_ImportError._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[14];
+ }
+const_str__sanity_check = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 13,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_sanity_check",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[133];
+ }
+importlib__bootstrap_toplevel_consts_52_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 132,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xe4\x0b\x15\x90\x64\x9c\x43\xd4\x0b\x20\xdc\x0e\x17\xd0\x1a\x37\xbc\x04\xb8\x54\xbb\x0a\xb0\x7c\xd0\x18\x44\xd3\x0e\x45\xd0\x08\x45\xd8\x07\x0c\x88\x71\x82\x79\xdc\x0e\x18\xd0\x19\x2d\xd3\x0e\x2e\xd0\x08\x2e\xd8\x07\x0c\x88\x71\x82\x79\xdc\x0f\x19\x98\x27\xa4\x33\xd4\x0f\x27\xdc\x12\x1b\xd0\x1c\x3d\xd3\x12\x3e\xd0\x0c\x3e\xd9\x11\x18\xdc\x12\x1d\xf0\x00\x01\x1f\x28\xf3\x00\x01\x13\x29\xf0\x00\x01\x0d\x29\xe1\x0b\x0f\x90\x45\x98\x51\x92\x4a\xdc\x0e\x18\xd0\x19\x2c\xd3\x0e\x2d\xd0\x08\x2d\xf0\x03\x00\x15\x1f\x88\x34",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_52_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ &_Py_ID(name),
+ & const_str_package._ascii.ob_base,
+ &_Py_ID(level),
+ },
+ },
+};
+static
+ struct _PyCode_DEF(242)
+importlib__bootstrap_toplevel_consts_52 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 121,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_52_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_toplevel_consts_52_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 3,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 9 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 6,
+ .co_firstlineno = 1285,
+ .co_nlocalsplus = 3,
+ .co_nlocals = 3,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 87,
+ .co_localsplusnames = & importlib__bootstrap_toplevel_consts_52_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_3_localspluskinds.ob_base.ob_base,
+ .co_filename = & importlib__bootstrap_toplevel_consts_1_filename._ascii.ob_base,
+ .co_name = & const_str__sanity_check._ascii.ob_base,
+ .co_qualname = & const_str__sanity_check._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_toplevel_consts_52_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x74\x02\x00\x00\x00\x00\x00\x00\x00\x00\xab\x02\x00\x00\x00\x00\x00\x00\x73\x17\x74\x05\x00\x00\x00\x00\x00\x00\x00\x00\x64\x01\x74\x07\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x9b\x00\x9d\x02\xab\x01\x00\x00\x00\x00\x00\x00\x82\x01\x7c\x02\x64\x02\x6b\x02\x00\x00\x72\x0b\x74\x09\x00\x00\x00\x00\x00\x00\x00\x00\x64\x03\xab\x01\x00\x00\x00\x00\x00\x00\x82\x01\x7c\x02\x64\x02\x6b\x44\x00\x00\x72\x28\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x74\x02\x00\x00\x00\x00\x00\x00\x00\x00\xab\x02\x00\x00\x00\x00\x00\x00\x73\x0b\x74\x05\x00\x00\x00\x00\x00\x00\x00\x00\x64\x04\xab\x01\x00\x00\x00\x00\x00\x00\x82\x01\x7c\x01\x73\x0b\x74\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x64\x05\xab\x01\x00\x00\x00\x00\x00\x00\x82\x01\x7c\x00\x73\x11\x7c\x02\x64\x02\x6b\x28\x00\x00\x72\x0b\x74\x09\x00\x00\x00\x00\x00\x00\x00\x00\x64\x06\xab\x01\x00\x00\x00\x00\x00\x00\x82\x01\x79\x07\x79\x07",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[17];
+ }
+importlib__bootstrap_toplevel_consts_53 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 16,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "No module named ",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[5];
+ }
+importlib__bootstrap_toplevel_consts_54 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 4,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "{!r}",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[3];
+ }
+importlib__bootstrap_toplevel_consts_55_consts_3 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 2,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "; ",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[18];
+ }
+importlib__bootstrap_toplevel_consts_55_consts_4 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 17,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = " is not a package",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[28];
+ }
+importlib__bootstrap_toplevel_consts_55_consts_7 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 27,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Cannot set an attribute on ",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[19];
+ }
+importlib__bootstrap_toplevel_consts_55_consts_8 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 18,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = " for child module ",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[9];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_55_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 9,
+ },
+ .ob_item = {
+ Py_None,
+ &_Py_STR(dot),
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 0],
+ & importlib__bootstrap_toplevel_consts_55_consts_3._ascii.ob_base,
+ & importlib__bootstrap_toplevel_consts_55_consts_4._ascii.ob_base,
+ & importlib__bootstrap_toplevel_consts_4_localsplusnames._object.ob_base.ob_base,
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 2],
+ & importlib__bootstrap_toplevel_consts_55_consts_7._ascii.ob_base,
+ & importlib__bootstrap_toplevel_consts_55_consts_8._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[16];
+ }
+const_str__ERR_MSG_PREFIX = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 15,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_ERR_MSG_PREFIX",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[20];
+ }
+const_str_ModuleNotFoundError = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 19,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "ModuleNotFoundError",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[18];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_55_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 18,
+ },
+ .ob_item = {
+ & const_str_rpartition._ascii.ob_base,
+ & const_str_sys._ascii.ob_base,
+ &_Py_ID(modules),
+ & const_str__call_with_frames_removed._ascii.ob_base,
+ &_Py_ID(__path__),
+ & const_str_AttributeError._ascii.ob_base,
+ & const_str__ERR_MSG_PREFIX._ascii.ob_base,
+ & const_str_ModuleNotFoundError._ascii.ob_base,
+ &_Py_ID(__spec__),
+ & const_str__find_spec._ascii.ob_base,
+ &_Py_ID(_uninitialized_submodules),
+ &_Py_ID(append),
+ & const_str__load_unlocked._ascii.ob_base,
+ & const_str_pop._ascii.ob_base,
+ & const_str_setattr._ascii.ob_base,
+ & const_str__warnings._ascii.ob_base,
+ & const_str_warn._ascii.ob_base,
+ & const_str_ImportWarning._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[24];
+ }
+const_str__find_and_load_unlocked = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 23,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_find_and_load_unlocked",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[434];
+ }
+importlib__bootstrap_toplevel_consts_55_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 433,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xd8\x0b\x0f\x80\x44\xd8\x0d\x11\x8f\x5f\x89\x5f\x98\x53\xd3\x0d\x21\xa0\x21\xd1\x0d\x24\x80\x46\xd8\x12\x16\x80\x4b\xd9\x07\x0d\xd8\x0b\x11\x9c\x13\x9f\x1b\x99\x1b\xd1\x0b\x24\xdc\x0c\x25\xa0\x67\xa8\x76\xd4\x0c\x36\xe0\x0b\x0f\x94\x33\x97\x3b\x91\x3b\xd1\x0b\x1e\xdc\x13\x16\x97\x3b\x91\x3b\x98\x74\xd1\x13\x24\xd0\x0c\x24\xdc\x18\x1b\x9f\x0b\x99\x0b\xa0\x46\xd1\x18\x2b\x88\x0d\xf0\x02\x04\x09\x40\x01\xd8\x13\x20\xd7\x13\x29\xd1\x13\x29\x88\x44\xf0\x08\x00\x17\x24\xd7\x16\x2c\xd1\x16\x2c\x88\x0b\xd8\x10\x14\x97\x0f\x91\x0f\xa0\x03\xd3\x10\x24\xa0\x51\xd1\x10\x27\x88\x05\xdc\x0b\x15\x90\x64\x98\x44\xd3\x0b\x21\x80\x44\xd8\x07\x0b\x80\x7c\xdc\x0e\x21\xa4\x5f\xd0\x24\x35\xb0\x64\xb0\x58\xd0\x22\x3e\xc0\x54\xd4\x0e\x4a\xd0\x08\x4a\xe1\x0b\x16\xf0\x06\x00\x0d\x18\xd7\x0c\x31\xd1\x0c\x31\xd7\x0c\x38\xd1\x0c\x38\xb8\x15\xd4\x0c\x3f\xf0\x02\x04\x09\x3c\xdc\x15\x23\xa0\x44\xd3\x15\x29\x88\x46\xe1\x0f\x1a\xd8\x10\x1b\xd7\x10\x35\xd1\x10\x35\xd7\x10\x39\xd1\x10\x39\xd5\x10\x3b\xd9\x07\x0d\xe4\x18\x1b\x9f\x0b\x99\x0b\xa0\x46\xd1\x18\x2b\x88\x0d\xf0\x02\x04\x09\x2f\xdc\x0c\x13\x90\x4d\xa0\x35\xa8\x26\xd4\x0c\x31\xf0\x08\x00\x0c\x12\x80\x4d\x88\x36\x80\x4d\xf8\xf4\x35\x00\x10\x1e\xf2\x00\x02\x09\x40\x01\xdc\x15\x24\xd0\x14\x25\xa0\x64\xa0\x58\xa8\x52\xb0\x06\xa8\x7a\xd0\x39\x4a\xd0\x12\x4b\x88\x43\xdc\x12\x25\xa0\x63\xb0\x04\xd4\x12\x35\xb8\x34\xd0\x0c\x3f\xf0\x05\x02\x09\x40\x01\xfb\xf1\x20\x00\x10\x1b\xd8\x10\x1b\xd7\x10\x35\xd1\x10\x35\xd7\x10\x39\xd1\x10\x39\xd5\x10\x3b\xf0\x03\x00\x10\x1b\xfb\xf4\x0e\x00\x10\x1e\xf2\x00\x02\x09\x2f\xd8\x14\x2f\xb0\x06\xa8\x7a\xd0\x39\x4b\xc8\x45\xc8\x39\xd0\x12\x55\x88\x43\xdc\x0c\x15\x8f\x4e\x89\x4e\x98\x33\xa4\x0d\xd5\x0c\x2e\xd8\x0b\x11\x80\x4d\xf0\x07\x02\x09\x2f\xfa",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[43];
+ }
+importlib__bootstrap_toplevel_consts_55_exceptiontable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 42,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\xc1\x32\x0c\x44\x2e\x00\xc3\x1f\x0b\x45\x17\x00\xc4\x1d\x0d\x45\x39\x00\xc4\x2e\x26\x45\x14\x03\xc5\x17\x1f\x45\x36\x03\xc5\x39\x2b\x46\x28\x03\xc6\x27\x01\x46\x28\x03",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[8];
+ }
+const_str_import_ = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 7,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "import_",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[12];
+ }
+const_str_parent_spec = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 11,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "parent_spec",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[14];
+ }
+const_str_parent_module = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 13,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "parent_module",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[6];
+ }
+const_str_child = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 5,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "child",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[10];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_55_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 10,
+ },
+ .ob_item = {
+ &_Py_ID(name),
+ & const_str_import_._ascii.ob_base,
+ &_Py_ID(path),
+ &_Py_ID(parent),
+ & const_str_parent_spec._ascii.ob_base,
+ & const_str_parent_module._ascii.ob_base,
+ &_Py_ID(msg),
+ & const_str_child._ascii.ob_base,
+ & const_str_spec._ascii.ob_base,
+ &_Py_ID(module),
+ },
+ },
+};
+static
+ struct _PyCode_DEF(854)
+importlib__bootstrap_toplevel_consts_55 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 427,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_55_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_toplevel_consts_55_names._object.ob_base.ob_base,
+ .co_exceptiontable = & importlib__bootstrap_toplevel_consts_55_exceptiontable.ob_base.ob_base,
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 16 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 6,
+ .co_firstlineno = 1304,
+ .co_nlocalsplus = 10,
+ .co_nlocals = 10,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 88,
+ .co_localsplusnames = & importlib__bootstrap_toplevel_consts_55_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_46_consts_3_localspluskinds.ob_base.ob_base,
+ .co_filename = & importlib__bootstrap_toplevel_consts_1_filename._ascii.ob_base,
+ .co_name = & const_str__find_and_load_unlocked._ascii.ob_base,
+ .co_qualname = & const_str__find_and_load_unlocked._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_toplevel_consts_55_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x64\x00\x7d\x02\x7c\x00\x6a\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x01\xab\x01\x00\x00\x00\x00\x00\x00\x64\x02\x19\x00\x00\x00\x7d\x03\x64\x00\x7d\x04\x7c\x03\x72\x83\x7c\x03\x74\x02\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x76\x01\x72\x0c\x74\x07\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x7c\x03\xab\x02\x00\x00\x00\x00\x00\x00\x01\x00\x7c\x00\x74\x02\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x76\x00\x72\x13\x74\x02\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x19\x00\x00\x00\x53\x00\x74\x02\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x03\x19\x00\x00\x00\x7d\x05\x09\x00\x7c\x05\x6a\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7d\x02\x7c\x05\x6a\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7d\x04\x7c\x00\x6a\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x01\xab\x01\x00\x00\x00\x00\x00\x00\x64\x06\x19\x00\x00\x00\x7d\x07\x74\x13\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x7c\x02\xab\x02\x00\x00\x00\x00\x00\x00\x7d\x08\x7c\x08\x80\x15\x74\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x74\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x9b\x00\x7c\x00\x9b\x02\x9d\x02\x7c\x00\xac\x05\xab\x02\x00\x00\x00\x00\x00\x00\x82\x01\x7c\x04\x72\x1b\x7c\x04\x6a\x14\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x17\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7f\x07\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x09\x00\x74\x19\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x08\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x09\x7c\x04\x72\x1b\x7c\x04\x6a\x14\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x1b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x01\x00\x09\x00\x7c\x03\x72\x23\x74\x02\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x03\x19\x00\x00\x00\x7d\x05\x09\x00\x74\x1d\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x05\x7f\x07\x7c\x09\xab\x03\x00\x00\x00\x00\x00\x00\x01\x00\x7c\x09\x53\x00\x7c\x09\x53\x00\x23\x00\x74\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x72\x1d\x01\x00\x74\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x9b\x00\x7c\x00\x9b\x02\x64\x03\x7c\x03\x9b\x02\x64\x04\x9d\x05\x7d\x06\x74\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x06\x7c\x00\xac\x05\xab\x02\x00\x00\x00\x00\x00\x00\x64\x00\x82\x02\x77\x00\x78\x03\x59\x00\x77\x01\x23\x00\x7c\x04\x72\x1b\x7c\x04\x6a\x14\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x1b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x01\x00\x77\x00\x77\x00\x78\x03\x59\x00\x77\x01\x23\x00\x74\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x72\x26\x01\x00\x64\x07\x7c\x03\x9b\x02\x64\x08\x7f\x07\x9b\x02\x9d\x04\x7d\x06\x74\x1e\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x21\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x06\x74\x22\x00\x00\x00\x00\x00\x00\x00\x00\xab\x02\x00\x00\x00\x00\x00\x00\x01\x00\x59\x00\x7c\x09\x53\x00\x77\x00\x78\x03\x59\x00\x77\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[26];
+ }
+importlib__bootstrap_toplevel_consts_56_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 25,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Find and load the module.",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[11];
+ }
+importlib__bootstrap_toplevel_consts_56_consts_5 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 10,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "import of ",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[29];
+ }
+importlib__bootstrap_toplevel_consts_56_consts_6 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 28,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = " halted; None in sys.modules",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[8];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_56_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 8,
+ },
+ .ob_item = {
+ & importlib__bootstrap_toplevel_consts_56_consts_0._ascii.ob_base,
+ &_Py_ID(__spec__),
+ Py_None,
+ &_Py_ID(_initializing),
+ Py_False,
+ & importlib__bootstrap_toplevel_consts_56_consts_5._ascii.ob_base,
+ & importlib__bootstrap_toplevel_consts_56_consts_6._ascii.ob_base,
+ & importlib__bootstrap_toplevel_consts_4_localsplusnames._object.ob_base.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[15];
+ }
+const_str__NEEDS_LOADING = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 14,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_NEEDS_LOADING",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[9];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_56_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 9,
+ },
+ .ob_item = {
+ & const_str_sys._ascii.ob_base,
+ &_Py_ID(modules),
+ &_Py_ID(get),
+ & const_str__NEEDS_LOADING._ascii.ob_base,
+ &_Py_ID(getattr),
+ & const_str__ModuleLockManager._ascii.ob_base,
+ & const_str__find_and_load_unlocked._ascii.ob_base,
+ &_Py_ID(_lock_unlock_module),
+ & const_str_ModuleNotFoundError._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[182];
+ }
+importlib__bootstrap_toplevel_consts_56_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 181,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf4\x0a\x00\x0e\x11\x8f\x5b\x89\x5b\x8f\x5f\x89\x5f\x98\x54\xa4\x3e\xd3\x0d\x32\x80\x46\xd8\x08\x0e\x94\x2e\xd1\x08\x20\xdc\x08\x0f\x94\x07\x98\x06\xa0\x0a\xa8\x44\xd3\x10\x31\xb0\x3f\xc0\x45\xd4\x08\x4a\xdc\x0d\x1f\xa0\x04\xd3\x0d\x25\xf1\x00\x03\x09\x3e\xdc\x15\x18\x97\x5b\x91\x5b\x97\x5f\x91\x5f\xa0\x54\xac\x3e\xd3\x15\x3a\x88\x46\xd8\x0f\x15\x9c\x1e\xd1\x0f\x27\xdc\x17\x2e\xa8\x74\xb0\x57\xd3\x17\x3d\xf7\x07\x03\x09\x3e\xf1\x00\x03\x09\x3e\xe0\x0f\x27\xf7\x05\x03\x09\x3e\xf4\x12\x00\x09\x1c\x98\x44\xd4\x08\x21\xe0\x07\x0d\x80\x7e\xd8\x14\x1e\x98\x74\x98\x66\xd0\x24\x40\xd0\x12\x41\x88\x07\xdc\x0e\x21\xa0\x27\xb0\x04\xd4\x0e\x35\xd0\x08\x35\xe0\x0b\x11\x80\x4d\xf7\x1f\x03\x09\x3e\xf0\x00\x03\x09\x3e\xfa",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[13];
+ }
+importlib__bootstrap_toplevel_consts_56_exceptiontable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 12,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\xc1\x10\x38\x42\x3d\x03\xc2\x3d\x05\x43\x06\x07",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[4];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_56_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_item = {
+ &_Py_ID(name),
+ & const_str_import_._ascii.ob_base,
+ &_Py_ID(module),
+ &_Py_ID(message),
+ },
+ },
+};
+static
+ struct _PyCode_DEF(402)
+importlib__bootstrap_toplevel_consts_56 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 201,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_56_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_toplevel_consts_56_names._object.ob_base.ob_base,
+ .co_exceptiontable = & importlib__bootstrap_toplevel_consts_56_exceptiontable.ob_base.ob_base,
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 11 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 7,
+ .co_firstlineno = 1349,
+ .co_nlocalsplus = 4,
+ .co_nlocals = 4,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 89,
+ .co_localsplusnames = & importlib__bootstrap_toplevel_consts_56_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_7_consts_3_localspluskinds.ob_base.ob_base,
+ .co_filename = & importlib__bootstrap_toplevel_consts_1_filename._ascii.ob_base,
+ .co_name = &_Py_ID(_find_and_load),
+ .co_qualname = &_Py_ID(_find_and_load),
+ .co_linetable = & importlib__bootstrap_toplevel_consts_56_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x74\x06\x00\x00\x00\x00\x00\x00\x00\x00\xab\x02\x00\x00\x00\x00\x00\x00\x7d\x02\x7c\x02\x74\x06\x00\x00\x00\x00\x00\x00\x00\x00\x75\x00\x73\x18\x74\x09\x00\x00\x00\x00\x00\x00\x00\x00\x74\x09\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x02\x64\x01\x64\x02\xab\x03\x00\x00\x00\x00\x00\x00\x64\x03\x64\x04\xab\x03\x00\x00\x00\x00\x00\x00\x72\x61\x74\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x35\x00\x01\x00\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x74\x06\x00\x00\x00\x00\x00\x00\x00\x00\xab\x02\x00\x00\x00\x00\x00\x00\x7d\x02\x7c\x02\x74\x06\x00\x00\x00\x00\x00\x00\x00\x00\x75\x00\x72\x15\x74\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x7c\x01\xab\x02\x00\x00\x00\x00\x00\x00\x63\x02\x64\x02\x64\x02\x64\x02\xab\x02\x00\x00\x00\x00\x00\x00\x01\x00\x53\x00\x09\x00\x64\x02\x64\x02\x64\x02\xab\x02\x00\x00\x00\x00\x00\x00\x01\x00\x74\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x7c\x02\x80\x13\x64\x05\x7c\x00\x9b\x00\x64\x06\x9d\x03\x7d\x03\x74\x11\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x03\x7c\x00\xac\x07\xab\x02\x00\x00\x00\x00\x00\x00\x82\x01\x7c\x02\x53\x00\x23\x00\x31\x00\x73\x01\x77\x02\x01\x00\x59\x00\x01\x00\x01\x00\x8c\x2b\x78\x03\x59\x00\x77\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[307];
+ }
+importlib__bootstrap_toplevel_consts_57_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 306,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x49\x6d\x70\x6f\x72\x74\x20\x61\x6e\x64\x20\x72\x65\x74\x75\x72\x6e\x20\x74\x68\x65\x20\x6d\x6f\x64\x75\x6c\x65\x20\x62\x61\x73\x65\x64\x20\x6f\x6e\x20\x69\x74\x73\x20\x6e\x61\x6d\x65\x2c\x20\x74\x68\x65\x20\x70\x61\x63\x6b\x61\x67\x65\x20\x74\x68\x65\x20\x63\x61\x6c\x6c\x20\x69\x73\x0a\x20\x20\x20\x20\x62\x65\x69\x6e\x67\x20\x6d\x61\x64\x65\x20\x66\x72\x6f\x6d\x2c\x20\x61\x6e\x64\x20\x74\x68\x65\x20\x6c\x65\x76\x65\x6c\x20\x61\x64\x6a\x75\x73\x74\x6d\x65\x6e\x74\x2e\x0a\x0a\x20\x20\x20\x20\x54\x68\x69\x73\x20\x66\x75\x6e\x63\x74\x69\x6f\x6e\x20\x72\x65\x70\x72\x65\x73\x65\x6e\x74\x73\x20\x74\x68\x65\x20\x67\x72\x65\x61\x74\x65\x73\x74\x20\x63\x6f\x6d\x6d\x6f\x6e\x20\x64\x65\x6e\x6f\x6d\x69\x6e\x61\x74\x6f\x72\x20\x6f\x66\x20\x66\x75\x6e\x63\x74\x69\x6f\x6e\x61\x6c\x69\x74\x79\x0a\x20\x20\x20\x20\x62\x65\x74\x77\x65\x65\x6e\x20\x69\x6d\x70\x6f\x72\x74\x5f\x6d\x6f\x64\x75\x6c\x65\x20\x61\x6e\x64\x20\x5f\x5f\x69\x6d\x70\x6f\x72\x74\x5f\x5f\x2e\x20\x54\x68\x69\x73\x20\x69\x6e\x63\x6c\x75\x64\x65\x73\x20\x73\x65\x74\x74\x69\x6e\x67\x20\x5f\x5f\x70\x61\x63\x6b\x61\x67\x65\x5f\x5f\x20\x69\x66\x0a\x20\x20\x20\x20\x74\x68\x65\x20\x6c\x6f\x61\x64\x65\x72\x20\x64\x69\x64\x20\x6e\x6f\x74\x2e\x0a\x0a\x20\x20\x20\x20",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_57_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & importlib__bootstrap_toplevel_consts_57_consts_0._ascii.ob_base,
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 0],
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[12];
+ }
+const_str__gcd_import = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 11,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_gcd_import",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[4];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_57_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_item = {
+ & const_str__sanity_check._ascii.ob_base,
+ & const_str__resolve_name._ascii.ob_base,
+ &_Py_ID(_find_and_load),
+ & const_str__gcd_import._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[51];
+ }
+importlib__bootstrap_toplevel_consts_57_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 50,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf4\x12\x00\x05\x12\x90\x24\x98\x07\xa0\x15\xd4\x04\x27\xd8\x07\x0c\x88\x71\x82\x79\xdc\x0f\x1c\x98\x54\xa0\x37\xa8\x45\xd3\x0f\x32\x88\x04\xdc\x0b\x19\x98\x24\xa4\x0b\xd3\x0b\x2c\xd0\x04\x2c",
+};
+static
+ struct _PyCode_DEF(96)
+importlib__bootstrap_toplevel_consts_57 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 48,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_57_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_toplevel_consts_57_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 3,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 8 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 5,
+ .co_firstlineno = 1375,
+ .co_nlocalsplus = 3,
+ .co_nlocals = 3,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 90,
+ .co_localsplusnames = & importlib__bootstrap_toplevel_consts_52_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_3_localspluskinds.ob_base.ob_base,
+ .co_filename = & importlib__bootstrap_toplevel_consts_1_filename._ascii.ob_base,
+ .co_name = & const_str__gcd_import._ascii.ob_base,
+ .co_qualname = & const_str__gcd_import._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_toplevel_consts_57_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x7c\x01\x7c\x02\xab\x03\x00\x00\x00\x00\x00\x00\x01\x00\x7c\x02\x64\x01\x6b\x44\x00\x00\x72\x0d\x74\x03\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x7c\x01\x7c\x02\xab\x03\x00\x00\x00\x00\x00\x00\x7d\x00\x74\x05\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x74\x06\x00\x00\x00\x00\x00\x00\x00\x00\xab\x02\x00\x00\x00\x00\x00\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[10];
+ }
+const_str_recursive = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 9,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "recursive",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_58 = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & const_str_recursive._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[239];
+ }
+importlib__bootstrap_toplevel_consts_59_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 238,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x46\x69\x67\x75\x72\x65\x20\x6f\x75\x74\x20\x77\x68\x61\x74\x20\x5f\x5f\x69\x6d\x70\x6f\x72\x74\x5f\x5f\x20\x73\x68\x6f\x75\x6c\x64\x20\x72\x65\x74\x75\x72\x6e\x2e\x0a\x0a\x20\x20\x20\x20\x54\x68\x65\x20\x69\x6d\x70\x6f\x72\x74\x5f\x20\x70\x61\x72\x61\x6d\x65\x74\x65\x72\x20\x69\x73\x20\x61\x20\x63\x61\x6c\x6c\x61\x62\x6c\x65\x20\x77\x68\x69\x63\x68\x20\x74\x61\x6b\x65\x73\x20\x74\x68\x65\x20\x6e\x61\x6d\x65\x20\x6f\x66\x20\x6d\x6f\x64\x75\x6c\x65\x20\x74\x6f\x0a\x20\x20\x20\x20\x69\x6d\x70\x6f\x72\x74\x2e\x20\x49\x74\x20\x69\x73\x20\x72\x65\x71\x75\x69\x72\x65\x64\x20\x74\x6f\x20\x64\x65\x63\x6f\x75\x70\x6c\x65\x20\x74\x68\x65\x20\x66\x75\x6e\x63\x74\x69\x6f\x6e\x20\x66\x72\x6f\x6d\x20\x61\x73\x73\x75\x6d\x69\x6e\x67\x20\x69\x6d\x70\x6f\x72\x74\x6c\x69\x62\x27\x73\x0a\x20\x20\x20\x20\x69\x6d\x70\x6f\x72\x74\x20\x69\x6d\x70\x6c\x65\x6d\x65\x6e\x74\x61\x74\x69\x6f\x6e\x20\x69\x73\x20\x64\x65\x73\x69\x72\x65\x64\x2e\x0a\x0a\x20\x20\x20\x20",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[9];
+ }
+importlib__bootstrap_toplevel_consts_59_consts_1 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 8,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = ".__all__",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[14];
+ }
+importlib__bootstrap_toplevel_consts_59_consts_2 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 13,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "``from list''",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[9];
+ }
+importlib__bootstrap_toplevel_consts_59_consts_3 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 8,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Item in ",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[19];
+ }
+importlib__bootstrap_toplevel_consts_59_consts_4 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 18,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = " must be str, not ",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[11];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_59_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 11,
+ },
+ .ob_item = {
+ & importlib__bootstrap_toplevel_consts_59_consts_0._ascii.ob_base,
+ & importlib__bootstrap_toplevel_consts_59_consts_1._ascii.ob_base,
+ & importlib__bootstrap_toplevel_consts_59_consts_2._ascii.ob_base,
+ & importlib__bootstrap_toplevel_consts_59_consts_3._ascii.ob_base,
+ & importlib__bootstrap_toplevel_consts_59_consts_4._ascii.ob_base,
+ (PyObject *)&_Py_SINGLETON(strings).ascii[42],
+ &_Py_ID(__all__),
+ Py_True,
+ & importlib__bootstrap_toplevel_consts_58._object.ob_base.ob_base,
+ &_Py_STR(dot),
+ Py_None,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[15];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_59_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 15,
+ },
+ .ob_item = {
+ &_Py_ID(isinstance),
+ & const_str_str._ascii.ob_base,
+ &_Py_ID(__name__),
+ & const_str_TypeError._ascii.ob_base,
+ &_Py_ID(type),
+ & const_str_hasattr._ascii.ob_base,
+ &_Py_ID(_handle_fromlist),
+ &_Py_ID(__all__),
+ & const_str__call_with_frames_removed._ascii.ob_base,
+ & const_str_ModuleNotFoundError._ascii.ob_base,
+ &_Py_ID(name),
+ & const_str_sys._ascii.ob_base,
+ &_Py_ID(modules),
+ &_Py_ID(get),
+ & const_str__NEEDS_LOADING._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[249];
+ }
+importlib__bootstrap_toplevel_consts_59_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 248,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf0\x14\x00\x0e\x16\xf2\x00\x17\x05\x16\x88\x01\xdc\x0f\x19\x98\x21\x9c\x53\xd4\x0f\x21\xd9\x0f\x18\xd8\x18\x1e\x9f\x0f\x99\x0f\xa8\x2a\xd1\x18\x34\x91\x05\xe0\x18\x27\x90\x05\xdc\x12\x1b\x98\x68\xa0\x75\xa0\x67\xf0\x00\x01\x2e\x23\xdc\x23\x27\xa8\x01\xa3\x37\xd7\x23\x33\xd1\x23\x33\xd0\x22\x34\xf0\x03\x01\x1d\x36\xf3\x00\x01\x13\x37\xf0\x00\x01\x0d\x37\xe0\x0d\x0e\x90\x23\x8a\x58\xda\x13\x1c\xa4\x17\xa8\x16\xb0\x19\xd5\x21\x3b\xdc\x10\x20\xa0\x16\xa8\x16\xaf\x1e\xa9\x1e\xb8\x17\xd8\x2b\x2f\xf6\x03\x01\x11\x31\xe4\x11\x18\x98\x16\xa0\x11\xd5\x11\x23\xd8\x1b\x21\x9f\x3f\x99\x3f\xd0\x1a\x2b\xa8\x31\xa8\x51\xa8\x43\xd0\x18\x30\x88\x49\xf0\x02\x09\x0d\x16\xdc\x10\x29\xa8\x27\xb0\x39\xd5\x10\x3d\xf0\x1f\x17\x05\x16\xf0\x30\x00\x0c\x12\x80\x4d\xf8\xf4\x11\x00\x14\x27\xf2\x00\x07\x0d\x16\xf0\x08\x00\x15\x18\x97\x48\x91\x48\xa0\x09\xd2\x14\x29\xdc\x14\x17\x97\x4b\x91\x4b\x97\x4f\x91\x4f\xa0\x49\xac\x7e\xd3\x14\x3e\xd0\x14\x4a\xdc\x14\x1c\xd8\x10\x15\xfb\xf0\x0f\x07\x0d\x16\xfa",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[31];
+ }
+importlib__bootstrap_toplevel_consts_59_exceptiontable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 30,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\xc2\x1c\x0c\x42\x2c\x02\xc2\x2c\x09\x43\x33\x05\xc2\x35\x33\x43\x2e\x05\xc3\x2d\x01\x43\x2e\x05\xc3\x2e\x05\x43\x33\x05",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[6];
+ }
+const_str_where = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 5,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "where",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[10];
+ }
+const_str_from_name = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 9,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "from_name",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[4];
+ }
+const_str_exc = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 3,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "exc",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[8];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_59_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 8,
+ },
+ .ob_item = {
+ &_Py_ID(module),
+ &_Py_ID(fromlist),
+ & const_str_import_._ascii.ob_base,
+ & const_str_recursive._ascii.ob_base,
+ &_Py_ID(x),
+ & const_str_where._ascii.ob_base,
+ & const_str_from_name._ascii.ob_base,
+ & const_str_exc._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(492)
+importlib__bootstrap_toplevel_consts_59 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 246,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_59_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_toplevel_consts_59_names._object.ob_base.ob_base,
+ .co_exceptiontable = & importlib__bootstrap_toplevel_consts_59_exceptiontable.ob_base.ob_base,
+ .co_flags = 3,
+ .co_argcount = 3,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 1,
+ .co_framesize = 17 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 9,
+ .co_firstlineno = 1390,
+ .co_nlocalsplus = 8,
+ .co_nlocals = 8,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 91,
+ .co_localsplusnames = & importlib__bootstrap_toplevel_consts_59_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_13_localspluskinds.ob_base.ob_base,
+ .co_filename = & importlib__bootstrap_toplevel_consts_1_filename._ascii.ob_base,
+ .co_name = &_Py_ID(_handle_fromlist),
+ .co_qualname = &_Py_ID(_handle_fromlist),
+ .co_linetable = & importlib__bootstrap_toplevel_consts_59_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x01\x44\x00\x5d\xa4\x00\x00\x7d\x04\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x04\x74\x02\x00\x00\x00\x00\x00\x00\x00\x00\xab\x02\x00\x00\x00\x00\x00\x00\x73\x38\x7c\x03\x72\x10\x7c\x00\x6a\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x01\x7a\x00\x00\x00\x7d\x05\x6e\x02\x64\x02\x7d\x05\x74\x07\x00\x00\x00\x00\x00\x00\x00\x00\x64\x03\x7c\x05\x9b\x00\x64\x04\x74\x09\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x04\xab\x01\x00\x00\x00\x00\x00\x00\x6a\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9b\x00\x9d\x04\xab\x01\x00\x00\x00\x00\x00\x00\x82\x01\x7c\x04\x64\x05\x6b\x28\x00\x00\x72\x2a\x7c\x03\x72\x01\x8c\x53\x74\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x64\x06\xab\x02\x00\x00\x00\x00\x00\x00\x73\x01\x8c\x60\x74\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x7c\x00\x6a\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x02\x64\x07\xac\x08\xab\x04\x00\x00\x00\x00\x00\x00\x01\x00\x8c\x7a\x74\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x7c\x04\xab\x02\x00\x00\x00\x00\x00\x00\x72\x01\x8c\x87\x7c\x00\x6a\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9b\x00\x64\x09\x7c\x04\x9b\x00\x9d\x03\x7d\x06\x09\x00\x74\x11\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x02\x7c\x06\xab\x02\x00\x00\x00\x00\x00\x00\x01\x00\x8c\xa6\x04\x00\x7c\x00\x53\x00\x23\x00\x74\x12\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x72\x3e\x7d\x07\x7c\x07\x6a\x14\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x06\x6b\x28\x00\x00\x72\x29\x74\x16\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x1b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x06\x74\x1c\x00\x00\x00\x00\x00\x00\x00\x00\xab\x02\x00\x00\x00\x00\x00\x00\x81\x05\x59\x00\x64\x0a\x7d\x07\x7e\x07\x8c\xea\x82\x00\x64\x0a\x7d\x07\x7e\x07\x77\x01\x77\x00\x78\x03\x59\x00\x77\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[168];
+ }
+importlib__bootstrap_toplevel_consts_60_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 167,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x43\x61\x6c\x63\x75\x6c\x61\x74\x65\x20\x77\x68\x61\x74\x20\x5f\x5f\x70\x61\x63\x6b\x61\x67\x65\x5f\x5f\x20\x73\x68\x6f\x75\x6c\x64\x20\x62\x65\x2e\x0a\x0a\x20\x20\x20\x20\x5f\x5f\x70\x61\x63\x6b\x61\x67\x65\x5f\x5f\x20\x69\x73\x20\x6e\x6f\x74\x20\x67\x75\x61\x72\x61\x6e\x74\x65\x65\x64\x20\x74\x6f\x20\x62\x65\x20\x64\x65\x66\x69\x6e\x65\x64\x20\x6f\x72\x20\x63\x6f\x75\x6c\x64\x20\x62\x65\x20\x73\x65\x74\x20\x74\x6f\x20\x4e\x6f\x6e\x65\x0a\x20\x20\x20\x20\x74\x6f\x20\x72\x65\x70\x72\x65\x73\x65\x6e\x74\x20\x74\x68\x61\x74\x20\x69\x74\x73\x20\x70\x72\x6f\x70\x65\x72\x20\x76\x61\x6c\x75\x65\x20\x69\x73\x20\x75\x6e\x6b\x6e\x6f\x77\x6e\x2e\x0a\x0a\x20\x20\x20\x20",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[33];
+ }
+importlib__bootstrap_toplevel_consts_60_consts_3 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 32,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "__package__ != __spec__.parent (",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[5];
+ }
+importlib__bootstrap_toplevel_consts_60_consts_4 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 4,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = " != ",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_60_consts_7 = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ &_Py_ID(stacklevel),
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[90];
+ }
+importlib__bootstrap_toplevel_consts_60_consts_8 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 89,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "can't resolve package from __spec__ or __package__, falling back on __name__ and __path__",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[13];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_60_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 13,
+ },
+ .ob_item = {
+ & importlib__bootstrap_toplevel_consts_60_consts_0._ascii.ob_base,
+ &_Py_ID(__package__),
+ &_Py_ID(__spec__),
+ & importlib__bootstrap_toplevel_consts_60_consts_3._ascii.ob_base,
+ & importlib__bootstrap_toplevel_consts_60_consts_4._ascii.ob_base,
+ (PyObject *)&_Py_SINGLETON(strings).ascii[41],
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 3],
+ & importlib__bootstrap_toplevel_consts_60_consts_7._object.ob_base.ob_base,
+ & importlib__bootstrap_toplevel_consts_60_consts_8._ascii.ob_base,
+ &_Py_ID(__name__),
+ &_Py_ID(__path__),
+ &_Py_STR(dot),
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 0],
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[7];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_60_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 7,
+ },
+ .ob_item = {
+ &_Py_ID(get),
+ &_Py_ID(parent),
+ & const_str__warnings._ascii.ob_base,
+ & const_str_warn._ascii.ob_base,
+ & const_str_DeprecationWarning._ascii.ob_base,
+ & const_str_ImportWarning._ascii.ob_base,
+ & const_str_rpartition._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[18];
+ }
+const_str__calc___package__ = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 17,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_calc___package__",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[201];
+ }
+importlib__bootstrap_toplevel_consts_60_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 200,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf0\x0e\x00\x0f\x16\x8f\x6b\x89\x6b\x98\x2d\xd3\x0e\x28\x80\x47\xd8\x0b\x12\x8f\x3b\x89\x3b\x90\x7a\xd3\x0b\x22\x80\x44\xd8\x07\x0e\xd0\x07\x1a\xd8\x0b\x0f\xd0\x0b\x1b\xa0\x07\xa8\x34\xaf\x3b\xa9\x3b\xd2\x20\x36\xdc\x0c\x15\x8f\x4e\x89\x4e\xf0\x00\x01\x1c\x1f\xd8\x1f\x26\x98\x6b\xa8\x14\xa8\x64\xaf\x6b\xa9\x6b\xa8\x5f\xb8\x41\xf0\x03\x01\x1c\x3f\xe4\x1b\x2d\xb8\x21\xf0\x05\x00\x0d\x1b\xf4\x00\x02\x0d\x3d\xf0\x06\x00\x10\x17\x88\x0e\xd8\x09\x0d\xd0\x09\x19\xd8\x0f\x13\x8f\x7b\x89\x7b\xd0\x08\x1a\xe4\x08\x11\x8f\x0e\x89\x0e\xf0\x00\x01\x18\x3f\xe4\x17\x24\xb0\x11\xf0\x05\x00\x09\x17\xf4\x00\x02\x09\x34\xf0\x06\x00\x13\x1a\x98\x2a\xd1\x12\x25\x88\x07\xd8\x0b\x15\x98\x57\xd1\x0b\x24\xd8\x16\x1d\xd7\x16\x28\xd1\x16\x28\xa8\x13\xd3\x16\x2d\xa8\x61\xd1\x16\x30\x88\x47\xd8\x0b\x12\x80\x4e",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_60_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ &_Py_ID(globals),
+ & const_str_package._ascii.ob_base,
+ & const_str_spec._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(348)
+importlib__bootstrap_toplevel_consts_60 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 174,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_60_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_toplevel_consts_60_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 10 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 7,
+ .co_firstlineno = 1427,
+ .co_nlocalsplus = 3,
+ .co_nlocals = 3,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 92,
+ .co_localsplusnames = & importlib__bootstrap_toplevel_consts_60_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_3_localspluskinds.ob_base.ob_base,
+ .co_filename = & importlib__bootstrap_toplevel_consts_1_filename._ascii.ob_base,
+ .co_name = & const_str__calc___package__._ascii.ob_base,
+ .co_qualname = & const_str__calc___package__._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_toplevel_consts_60_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x00\x6a\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x01\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x01\x7c\x00\x6a\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x02\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x02\x7c\x01\x81\x40\x7c\x02\x81\x3c\x7c\x01\x7c\x02\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6b\x37\x00\x00\x72\x2d\x74\x04\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x03\x7c\x01\x9b\x02\x64\x04\x7c\x02\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9b\x02\x64\x05\x9d\x05\x74\x08\x00\x00\x00\x00\x00\x00\x00\x00\x64\x06\xac\x07\xab\x03\x00\x00\x00\x00\x00\x00\x01\x00\x7c\x01\x53\x00\x7c\x02\x81\x0c\x7c\x02\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x53\x00\x74\x04\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x08\x74\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x64\x06\xac\x07\xab\x03\x00\x00\x00\x00\x00\x00\x01\x00\x7c\x00\x64\x09\x19\x00\x00\x00\x7d\x01\x64\x0a\x7c\x00\x76\x01\x72\x14\x7c\x01\x6a\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x0b\xab\x01\x00\x00\x00\x00\x00\x00\x64\x0c\x19\x00\x00\x00\x7d\x01\x7c\x01\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[472];
+ }
+importlib__bootstrap_toplevel_consts_61_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 471,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x49\x6d\x70\x6f\x72\x74\x20\x61\x20\x6d\x6f\x64\x75\x6c\x65\x2e\x0a\x0a\x20\x20\x20\x20\x54\x68\x65\x20\x27\x67\x6c\x6f\x62\x61\x6c\x73\x27\x20\x61\x72\x67\x75\x6d\x65\x6e\x74\x20\x69\x73\x20\x75\x73\x65\x64\x20\x74\x6f\x20\x69\x6e\x66\x65\x72\x20\x77\x68\x65\x72\x65\x20\x74\x68\x65\x20\x69\x6d\x70\x6f\x72\x74\x20\x69\x73\x20\x6f\x63\x63\x75\x72\x72\x69\x6e\x67\x20\x66\x72\x6f\x6d\x0a\x20\x20\x20\x20\x74\x6f\x20\x68\x61\x6e\x64\x6c\x65\x20\x72\x65\x6c\x61\x74\x69\x76\x65\x20\x69\x6d\x70\x6f\x72\x74\x73\x2e\x20\x54\x68\x65\x20\x27\x6c\x6f\x63\x61\x6c\x73\x27\x20\x61\x72\x67\x75\x6d\x65\x6e\x74\x20\x69\x73\x20\x69\x67\x6e\x6f\x72\x65\x64\x2e\x20\x54\x68\x65\x0a\x20\x20\x20\x20\x27\x66\x72\x6f\x6d\x6c\x69\x73\x74\x27\x20\x61\x72\x67\x75\x6d\x65\x6e\x74\x20\x73\x70\x65\x63\x69\x66\x69\x65\x73\x20\x77\x68\x61\x74\x20\x73\x68\x6f\x75\x6c\x64\x20\x65\x78\x69\x73\x74\x20\x61\x73\x20\x61\x74\x74\x72\x69\x62\x75\x74\x65\x73\x20\x6f\x6e\x20\x74\x68\x65\x20\x6d\x6f\x64\x75\x6c\x65\x0a\x20\x20\x20\x20\x62\x65\x69\x6e\x67\x20\x69\x6d\x70\x6f\x72\x74\x65\x64\x20\x28\x65\x2e\x67\x2e\x20\x60\x60\x66\x72\x6f\x6d\x20\x6d\x6f\x64\x75\x6c\x65\x20\x69\x6d\x70\x6f\x72\x74\x20\x3c\x66\x72\x6f\x6d\x6c\x69\x73\x74\x3e\x60\x60\x29\x2e\x20\x20\x54\x68\x65\x20\x27\x6c\x65\x76\x65\x6c\x27\x0a\x20\x20\x20\x20\x61\x72\x67\x75\x6d\x65\x6e\x74\x20\x72\x65\x70\x72\x65\x73\x65\x6e\x74\x73\x20\x74\x68\x65\x20\x70\x61\x63\x6b\x61\x67\x65\x20\x6c\x6f\x63\x61\x74\x69\x6f\x6e\x20\x74\x6f\x20\x69\x6d\x70\x6f\x72\x74\x20\x66\x72\x6f\x6d\x20\x69\x6e\x20\x61\x20\x72\x65\x6c\x61\x74\x69\x76\x65\x0a\x20\x20\x20\x20\x69\x6d\x70\x6f\x72\x74\x20\x28\x65\x2e\x67\x2e\x20\x60\x60\x66\x72\x6f\x6d\x20\x2e\x2e\x70\x6b\x67\x20\x69\x6d\x70\x6f\x72\x74\x20\x6d\x6f\x64\x60\x60\x20\x77\x6f\x75\x6c\x64\x20\x68\x61\x76\x65\x20\x61\x20\x27\x6c\x65\x76\x65\x6c\x27\x20\x6f\x66\x20\x32\x29\x2e\x0a\x0a\x20\x20\x20\x20",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[5];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_61_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 5,
+ },
+ .ob_item = {
+ & importlib__bootstrap_toplevel_consts_61_consts_0._ascii.ob_base,
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 0],
+ Py_None,
+ &_Py_STR(dot),
+ &_Py_ID(__path__),
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[10];
+ }
+const_str_partition = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 9,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "partition",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[9];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_61_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 9,
+ },
+ .ob_item = {
+ & const_str__gcd_import._ascii.ob_base,
+ & const_str__calc___package__._ascii.ob_base,
+ & const_str_partition._ascii.ob_base,
+ &_Py_ID(len),
+ & const_str_sys._ascii.ob_base,
+ &_Py_ID(modules),
+ &_Py_ID(__name__),
+ & const_str_hasattr._ascii.ob_base,
+ &_Py_ID(_handle_fromlist),
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[211];
+ }
+importlib__bootstrap_toplevel_consts_61_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 210,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf0\x16\x00\x08\x0d\x90\x01\x82\x7a\xdc\x11\x1c\x98\x54\xd3\x11\x22\x89\x06\xe0\x1e\x25\xd0\x1e\x31\x91\x37\xb0\x72\x88\x08\xdc\x12\x23\xa0\x48\xd3\x12\x2d\x88\x07\xdc\x11\x1c\x98\x54\xa0\x37\xa8\x45\xd3\x11\x32\x88\x06\xd9\x0b\x13\xf0\x06\x00\x0c\x11\x90\x41\x8a\x3a\xdc\x13\x1e\x98\x74\x9f\x7e\x99\x7e\xa8\x63\xd3\x1f\x32\xb0\x31\xd1\x1f\x35\xd3\x13\x36\xd0\x0c\x36\xd9\x11\x15\xd8\x13\x19\x88\x4d\xf4\x08\x00\x17\x1a\x98\x24\x93\x69\xa4\x23\xa0\x64\xa7\x6e\xa1\x6e\xb0\x53\xd3\x26\x39\xb8\x21\xd1\x26\x3c\xd3\x22\x3d\xd1\x16\x3d\x88\x47\xf4\x06\x00\x14\x17\x97\x3b\x91\x3b\x98\x76\x9f\x7f\x99\x7f\xd0\x2f\x4c\xb4\x03\xb0\x46\xb7\x4f\xb1\x4f\xd3\x30\x44\xc0\x57\xd1\x30\x4c\xd0\x1f\x4d\xd1\x13\x4e\xd0\x0c\x4e\xdc\x09\x10\x90\x16\x98\x1a\xd4\x09\x24\xdc\x0f\x1f\xa0\x06\xa8\x08\xb4\x2b\xd3\x0f\x3e\xd0\x08\x3e\xe0\x0f\x15\x88\x0d",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[9];
+ }
+const_str_globals_ = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 8,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "globals_",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[8];
+ }
+const_str_cut_off = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 7,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "cut_off",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[9];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_61_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 9,
+ },
+ .ob_item = {
+ &_Py_ID(name),
+ &_Py_ID(globals),
+ &_Py_ID(locals),
+ &_Py_ID(fromlist),
+ &_Py_ID(level),
+ &_Py_ID(module),
+ & const_str_globals_._ascii.ob_base,
+ & const_str_package._ascii.ob_base,
+ & const_str_cut_off._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[10];
+ }
+importlib__bootstrap_toplevel_consts_61_localspluskinds = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 9,
+ },
+ .ob_shash = -1,
+ .ob_sval = " ",
+};
+static
+ struct _PyCode_DEF(428)
+importlib__bootstrap_toplevel_consts_61 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 214,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_61_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_toplevel_consts_61_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 5,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 15 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 6,
+ .co_firstlineno = 1454,
+ .co_nlocalsplus = 9,
+ .co_nlocals = 9,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 93,
+ .co_localsplusnames = & importlib__bootstrap_toplevel_consts_61_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_61_localspluskinds.ob_base.ob_base,
+ .co_filename = & importlib__bootstrap_toplevel_consts_1_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__import__),
+ .co_qualname = &_Py_ID(__import__),
+ .co_linetable = & importlib__bootstrap_toplevel_consts_61_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x04\x64\x01\x6b\x28\x00\x00\x72\x0c\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x05\x6e\x1e\x7c\x01\x81\x02\x7c\x01\x6e\x01\x69\x00\x7d\x06\x74\x03\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x06\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x07\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x7c\x07\x7c\x04\xab\x03\x00\x00\x00\x00\x00\x00\x7d\x05\x7c\x03\x73\x85\x7c\x04\x64\x01\x6b\x28\x00\x00\x72\x1d\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x6a\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x03\xab\x01\x00\x00\x00\x00\x00\x00\x64\x01\x19\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x53\x00\x7c\x00\x73\x02\x7c\x05\x53\x00\x74\x07\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x74\x07\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x6a\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x03\xab\x01\x00\x00\x00\x00\x00\x00\x64\x01\x19\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7a\x0a\x00\x00\x7d\x08\x74\x08\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x05\x6a\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x02\x74\x07\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x05\x6a\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7c\x08\x7a\x0a\x00\x00\x1a\x00\x19\x00\x00\x00\x53\x00\x74\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x05\x64\x04\xab\x02\x00\x00\x00\x00\x00\x00\x72\x11\x74\x11\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x05\x7c\x03\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x03\x00\x00\x00\x00\x00\x00\x53\x00\x7c\x05\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[26];
+ }
+importlib__bootstrap_toplevel_consts_62_consts_1 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 25,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "no built-in module named ",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_62_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ Py_None,
+ & importlib__bootstrap_toplevel_consts_62_consts_1._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[4];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_62_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_item = {
+ & const_str_BuiltinImporter._ascii.ob_base,
+ & const_str_find_spec._ascii.ob_base,
+ & const_str_ImportError._ascii.ob_base,
+ & const_str__load_unlocked._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[19];
+ }
+const_str__builtin_from_name = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 18,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_builtin_from_name",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[52];
+ }
+importlib__bootstrap_toplevel_consts_62_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 51,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xdc\x0b\x1a\xd7\x0b\x24\xd1\x0b\x24\xa0\x54\xd3\x0b\x2a\x80\x44\xd8\x07\x0b\x80\x7c\xdc\x0e\x19\xd0\x1a\x35\xb8\x04\xd1\x1a\x3c\xd3\x0e\x3d\xd0\x08\x3d\xdc\x0b\x19\x98\x24\xd3\x0b\x1f\xd0\x04\x1f",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_62_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ &_Py_ID(name),
+ & const_str_spec._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(98)
+importlib__bootstrap_toplevel_consts_62 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 49,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_62_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_toplevel_consts_62_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 6 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 1491,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 2,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 94,
+ .co_localsplusnames = & importlib__bootstrap_toplevel_consts_62_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_14_consts_2_localspluskinds.ob_base.ob_base,
+ .co_filename = & importlib__bootstrap_toplevel_consts_1_filename._ascii.ob_base,
+ .co_name = & const_str__builtin_from_name._ascii.ob_base,
+ .co_qualname = & const_str__builtin_from_name._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_toplevel_consts_62_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x01\x7c\x01\x80\x0e\x74\x05\x00\x00\x00\x00\x00\x00\x00\x00\x64\x01\x7c\x00\x7a\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x82\x01\x74\x07\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\xab\x01\x00\x00\x00\x00\x00\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[251];
+ }
+importlib__bootstrap_toplevel_consts_63_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 250,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x53\x65\x74\x75\x70\x20\x69\x6d\x70\x6f\x72\x74\x6c\x69\x62\x20\x62\x79\x20\x69\x6d\x70\x6f\x72\x74\x69\x6e\x67\x20\x6e\x65\x65\x64\x65\x64\x20\x62\x75\x69\x6c\x74\x2d\x69\x6e\x20\x6d\x6f\x64\x75\x6c\x65\x73\x20\x61\x6e\x64\x20\x69\x6e\x6a\x65\x63\x74\x69\x6e\x67\x20\x74\x68\x65\x6d\x0a\x20\x20\x20\x20\x69\x6e\x74\x6f\x20\x74\x68\x65\x20\x67\x6c\x6f\x62\x61\x6c\x20\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x0a\x0a\x20\x20\x20\x20\x41\x73\x20\x73\x79\x73\x20\x69\x73\x20\x6e\x65\x65\x64\x65\x64\x20\x66\x6f\x72\x20\x73\x79\x73\x2e\x6d\x6f\x64\x75\x6c\x65\x73\x20\x61\x63\x63\x65\x73\x73\x20\x61\x6e\x64\x20\x5f\x69\x6d\x70\x20\x69\x73\x20\x6e\x65\x65\x64\x65\x64\x20\x74\x6f\x20\x6c\x6f\x61\x64\x20\x62\x75\x69\x6c\x74\x2d\x69\x6e\x0a\x20\x20\x20\x20\x6d\x6f\x64\x75\x6c\x65\x73\x2c\x20\x74\x68\x6f\x73\x65\x20\x74\x77\x6f\x20\x6d\x6f\x64\x75\x6c\x65\x73\x20\x6d\x75\x73\x74\x20\x62\x65\x20\x65\x78\x70\x6c\x69\x63\x69\x74\x6c\x79\x20\x70\x61\x73\x73\x65\x64\x20\x69\x6e\x2e\x0a\x0a\x20\x20\x20\x20",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_63_consts_1 = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ & const_str__thread._ascii.ob_base,
+ & const_str__warnings._ascii.ob_base,
+ & const_str__weakref._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_63_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ & importlib__bootstrap_toplevel_consts_63_consts_0._ascii.ob_base,
+ & importlib__bootstrap_toplevel_consts_63_consts_1._object.ob_base.ob_base,
+ Py_None,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[18];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_63_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 18,
+ },
+ .ob_item = {
+ & const_str__imp._ascii.ob_base,
+ & const_str_sys._ascii.ob_base,
+ &_Py_ID(type),
+ &_Py_ID(modules),
+ &_Py_ID(items),
+ &_Py_ID(isinstance),
+ & const_str_builtin_module_names._ascii.ob_base,
+ & const_str_BuiltinImporter._ascii.ob_base,
+ & const_str_is_frozen._ascii.ob_base,
+ & const_str_FrozenImporter._ascii.ob_base,
+ & const_str__spec_from_module._ascii.ob_base,
+ & const_str__init_module_attrs._ascii.ob_base,
+ &_Py_ID(_fix_up_module),
+ &_Py_ID(__name__),
+ & const_str__builtin_from_name._ascii.ob_base,
+ & const_str_setattr._ascii.ob_base,
+ & const_str__WeakValueDictionary._ascii.ob_base,
+ & const_str__blocking_on._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[7];
+ }
+const_str__setup = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 6,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_setup",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[240];
+ }
+importlib__bootstrap_toplevel_consts_63_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 239,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf0\x12\x00\x0c\x17\x80\x44\xd8\x0a\x14\x80\x43\xf4\x06\x00\x13\x17\x94\x73\x93\x29\x80\x4b\xdc\x18\x1b\x9f\x0b\x99\x0b\xd7\x18\x29\xd1\x18\x29\xd3\x18\x2b\xf2\x00\x0b\x05\x2e\x89\x0c\x88\x04\x88\x66\xdc\x0b\x15\x90\x66\x98\x6b\xd5\x0b\x2a\xd8\x0f\x13\x94\x73\xd7\x17\x2f\xd1\x17\x2f\xd1\x0f\x2f\xdc\x19\x28\x91\x06\xdc\x11\x15\x97\x1e\x91\x1e\xa0\x04\xd4\x11\x25\xdc\x19\x27\x91\x06\xe0\x10\x18\xdc\x13\x24\xa0\x56\xa8\x56\xd3\x13\x34\x88\x44\xdc\x0c\x1e\x98\x74\xa0\x56\xd4\x0c\x2c\xd8\x0f\x15\x9c\x1e\xd2\x0f\x27\xd8\x10\x16\xd7\x10\x25\xd1\x10\x25\xa0\x66\xd5\x10\x2d\xf0\x17\x0b\x05\x2e\xf4\x1c\x00\x13\x16\x97\x2b\x91\x2b\x9c\x68\xd1\x12\x27\x80\x4b\xd8\x18\x3c\xf2\x00\x05\x05\x3b\x88\x0c\xd8\x0b\x17\x9c\x73\x9f\x7b\x99\x7b\xd1\x0b\x2a\xdc\x1d\x2f\xb0\x0c\xd3\x1d\x3d\x89\x4e\xe4\x1d\x20\x9f\x5b\x99\x5b\xa8\x1c\xd1\x1d\x36\x88\x4e\xdc\x08\x0f\x90\x0b\x98\x5c\xa8\x3e\xd5\x08\x3a\xf0\x0b\x05\x05\x3b\xf4\x10\x00\x14\x28\xd3\x13\x29\x81\x4c",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[11];
+ }
+const_str_sys_module = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 10,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "sys_module",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[12];
+ }
+const_str__imp_module = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 11,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_imp_module",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[12];
+ }
+const_str_module_type = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 11,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "module_type",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[12];
+ }
+const_str_self_module = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 11,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "self_module",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[13];
+ }
+const_str_builtin_name = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 12,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "builtin_name",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[15];
+ }
+const_str_builtin_module = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 14,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "builtin_module",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[10];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_63_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 10,
+ },
+ .ob_item = {
+ & const_str_sys_module._ascii.ob_base,
+ & const_str__imp_module._ascii.ob_base,
+ & const_str_module_type._ascii.ob_base,
+ &_Py_ID(name),
+ &_Py_ID(module),
+ & const_str_loader._ascii.ob_base,
+ & const_str_spec._ascii.ob_base,
+ & const_str_self_module._ascii.ob_base,
+ & const_str_builtin_name._ascii.ob_base,
+ & const_str_builtin_module._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(556)
+importlib__bootstrap_toplevel_consts_63 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 278,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_63_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_toplevel_consts_63_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 16 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 6,
+ .co_firstlineno = 1498,
+ .co_nlocalsplus = 10,
+ .co_nlocals = 10,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 95,
+ .co_localsplusnames = & importlib__bootstrap_toplevel_consts_63_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_46_consts_3_localspluskinds.ob_base.ob_base,
+ .co_filename = & importlib__bootstrap_toplevel_consts_1_filename._ascii.ob_base,
+ .co_name = & const_str__setup._ascii.ob_base,
+ .co_qualname = & const_str__setup._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_toplevel_consts_63_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x01\x61\x00\x7c\x00\x61\x01\x74\x05\x00\x00\x00\x00\x00\x00\x00\x00\x74\x02\x00\x00\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x02\x74\x02\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x44\x00\x5d\x7a\x00\x00\x5c\x02\x00\x00\x7d\x03\x7d\x04\x74\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x04\x7c\x02\xab\x02\x00\x00\x00\x00\x00\x00\x73\x01\x8c\x13\x7c\x03\x74\x02\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x76\x00\x72\x07\x74\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x7d\x05\x6e\x1d\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x11\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x03\xab\x01\x00\x00\x00\x00\x00\x00\x72\x07\x74\x12\x00\x00\x00\x00\x00\x00\x00\x00\x7d\x05\x6e\x01\x8c\x49\x74\x15\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x04\x7c\x05\xab\x02\x00\x00\x00\x00\x00\x00\x7d\x06\x74\x17\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x06\x7c\x04\xab\x02\x00\x00\x00\x00\x00\x00\x01\x00\x7c\x05\x74\x12\x00\x00\x00\x00\x00\x00\x00\x00\x75\x00\x73\x01\x8c\x6a\x7c\x05\x6a\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x04\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x8c\x7c\x04\x00\x74\x02\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x74\x1a\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x7d\x07\x64\x01\x44\x00\x5d\x40\x00\x00\x7d\x08\x7c\x08\x74\x02\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x76\x01\x72\x0c\x74\x1d\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x08\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x09\x6e\x13\x74\x02\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x08\x19\x00\x00\x00\x7d\x09\x74\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x07\x7c\x08\x7c\x09\xab\x03\x00\x00\x00\x00\x00\x00\x01\x00\x8c\x42\x04\x00\x74\x21\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x61\x11\x79\x02",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[49];
+ }
+importlib__bootstrap_toplevel_consts_64_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 48,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Install importers for builtin and frozen modules",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_64_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & importlib__bootstrap_toplevel_consts_64_consts_0._ascii.ob_base,
+ Py_None,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[6];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_64_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 6,
+ },
+ .ob_item = {
+ & const_str__setup._ascii.ob_base,
+ & const_str_sys._ascii.ob_base,
+ & const_str_meta_path._ascii.ob_base,
+ &_Py_ID(append),
+ & const_str_BuiltinImporter._ascii.ob_base,
+ & const_str_FrozenImporter._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[9];
+ }
+const_str__install = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 8,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_install",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[49];
+ }
+importlib__bootstrap_toplevel_consts_64_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 48,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xe4\x04\x0a\x88\x3a\x90\x7b\xd4\x04\x23\xe4\x04\x07\x87\x4d\x81\x4d\xd7\x04\x18\xd1\x04\x18\x9c\x1f\xd4\x04\x29\xdc\x04\x07\x87\x4d\x81\x4d\xd7\x04\x18\xd1\x04\x18\x9c\x1e\xd5\x04\x28",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_64_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & const_str_sys_module._ascii.ob_base,
+ & const_str__imp_module._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(168)
+importlib__bootstrap_toplevel_consts_64 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 84,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_64_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_toplevel_consts_64_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 6 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 1538,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 2,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 96,
+ .co_localsplusnames = & importlib__bootstrap_toplevel_consts_64_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_14_consts_2_localspluskinds.ob_base.ob_base,
+ .co_filename = & importlib__bootstrap_toplevel_consts_1_filename._ascii.ob_base,
+ .co_name = & const_str__install._ascii.ob_base,
+ .co_qualname = & const_str__install._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_toplevel_consts_64_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x7c\x01\xab\x02\x00\x00\x00\x00\x00\x00\x01\x00\x74\x02\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x74\x08\x00\x00\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x74\x02\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x74\x0a\x00\x00\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x79\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[58];
+ }
+importlib__bootstrap_toplevel_consts_65_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 57,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Install importers that require external filesystem access",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_65_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ & importlib__bootstrap_toplevel_consts_65_consts_0._ascii.ob_base,
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 0],
+ Py_None,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[27];
+ }
+const_str__frozen_importlib_external = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 26,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_frozen_importlib_external",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[6];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_65_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 6,
+ },
+ .ob_item = {
+ & const_str__frozen_importlib_external._ascii.ob_base,
+ & const_str__bootstrap_external._ascii.ob_base,
+ & const_str__install._ascii.ob_base,
+ & const_str_sys._ascii.ob_base,
+ &_Py_ID(modules),
+ &_Py_ID(__name__),
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[28];
+ }
+const_str__install_external_importers = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 27,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_install_external_importers",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[37];
+ }
+importlib__bootstrap_toplevel_consts_65_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 36,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf3\x06\x00\x05\x26\xd8\x1a\x34\xd0\x04\x17\xd8\x04\x1e\xd7\x04\x27\xd1\x04\x27\xac\x03\xaf\x0b\xa9\x0b\xb4\x48\xd1\x28\x3d\xd5\x04\x3e",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_65_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & const_str__frozen_importlib_external._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(92)
+importlib__bootstrap_toplevel_consts_65 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 46,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_65_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_toplevel_consts_65_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 0,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 5 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 1546,
+ .co_nlocalsplus = 1,
+ .co_nlocals = 1,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 97,
+ .co_localsplusnames = & importlib__bootstrap_toplevel_consts_65_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_characters[32]),
+ .co_filename = & importlib__bootstrap_toplevel_consts_1_filename._ascii.ob_base,
+ .co_name = & const_str__install_external_importers._ascii.ob_base,
+ .co_qualname = & const_str__install_external_importers._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_toplevel_consts_65_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x64\x01\x64\x02\x6c\x00\x7d\x00\x7c\x00\x61\x01\x7c\x00\x6a\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x74\x06\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x74\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x79\x02",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[4];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts_69 = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_item = {
+ Py_None,
+ Py_None,
+ (PyObject *)& _Py_SINGLETON(tuple_empty),
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 0],
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[70];
+ }_object;
+ }
+importlib__bootstrap_toplevel_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 70,
+ },
+ .ob_item = {
+ & importlib__bootstrap_toplevel_consts_0._ascii.ob_base,
+ & importlib__bootstrap_toplevel_consts_1.ob_base.ob_base,
+ Py_None,
+ & importlib__bootstrap_toplevel_consts_3.ob_base.ob_base,
+ & importlib__bootstrap_toplevel_consts_4.ob_base.ob_base,
+ & importlib__bootstrap_toplevel_consts_5.ob_base.ob_base,
+ & const_str__List._ascii.ob_base,
+ & importlib__bootstrap_toplevel_consts_7.ob_base.ob_base,
+ & const_str__WeakValueDictionary._ascii.ob_base,
+ & importlib__bootstrap_toplevel_consts_9.ob_base.ob_base,
+ & const_str__BlockingOnManager._ascii.ob_base,
+ & importlib__bootstrap_toplevel_consts_11.ob_base.ob_base,
+ & const_str__DeadlockError._ascii.ob_base,
+ & importlib__bootstrap_toplevel_consts_13.ob_base.ob_base,
+ & importlib__bootstrap_toplevel_consts_14.ob_base.ob_base,
+ & const_str__ModuleLock._ascii.ob_base,
+ & importlib__bootstrap_toplevel_consts_16.ob_base.ob_base,
+ & const_str__DummyModuleLock._ascii.ob_base,
+ & importlib__bootstrap_toplevel_consts_18.ob_base.ob_base,
+ & const_str__ModuleLockManager._ascii.ob_base,
+ & importlib__bootstrap_toplevel_consts_20.ob_base.ob_base,
+ & importlib__bootstrap_toplevel_consts_21.ob_base.ob_base,
+ & importlib__bootstrap_toplevel_consts_22.ob_base.ob_base,
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 1],
+ & importlib__bootstrap_toplevel_consts_24._object.ob_base.ob_base,
+ & importlib__bootstrap_toplevel_consts_25.ob_base.ob_base,
+ & importlib__bootstrap_toplevel_consts_26.ob_base.ob_base,
+ & importlib__bootstrap_toplevel_consts_27.ob_base.ob_base,
+ & importlib__bootstrap_toplevel_consts_28.ob_base.ob_base,
+ & importlib__bootstrap_toplevel_consts_29.ob_base.ob_base,
+ & importlib__bootstrap_toplevel_consts_30.ob_base.ob_base,
+ & const_str_ModuleSpec._ascii.ob_base,
+ & importlib__bootstrap_toplevel_consts_32._object.ob_base.ob_base,
+ & importlib__bootstrap_toplevel_consts_33.ob_base.ob_base,
+ & importlib__bootstrap_toplevel_consts_34.ob_base.ob_base,
+ Py_False,
+ & importlib__bootstrap_toplevel_consts_36._object.ob_base.ob_base,
+ & importlib__bootstrap_toplevel_consts_37.ob_base.ob_base,
+ & importlib__bootstrap_toplevel_consts_38.ob_base.ob_base,
+ & importlib__bootstrap_toplevel_consts_39.ob_base.ob_base,
+ & importlib__bootstrap_toplevel_consts_40.ob_base.ob_base,
+ & importlib__bootstrap_toplevel_consts_41.ob_base.ob_base,
+ & importlib__bootstrap_toplevel_consts_42.ob_base.ob_base,
+ & importlib__bootstrap_toplevel_consts_43.ob_base.ob_base,
+ & importlib__bootstrap_toplevel_consts_44.ob_base.ob_base,
+ & const_str_BuiltinImporter._ascii.ob_base,
+ & importlib__bootstrap_toplevel_consts_46.ob_base.ob_base,
+ & const_str_FrozenImporter._ascii.ob_base,
+ & importlib__bootstrap_toplevel_consts_48.ob_base.ob_base,
+ & const_str__ImportLockContext._ascii.ob_base,
+ & importlib__bootstrap_toplevel_consts_50.ob_base.ob_base,
+ & importlib__bootstrap_toplevel_consts_51.ob_base.ob_base,
+ & importlib__bootstrap_toplevel_consts_52.ob_base.ob_base,
+ & importlib__bootstrap_toplevel_consts_53._ascii.ob_base,
+ & importlib__bootstrap_toplevel_consts_54._ascii.ob_base,
+ & importlib__bootstrap_toplevel_consts_55.ob_base.ob_base,
+ & importlib__bootstrap_toplevel_consts_56.ob_base.ob_base,
+ & importlib__bootstrap_toplevel_consts_57.ob_base.ob_base,
+ & importlib__bootstrap_toplevel_consts_58._object.ob_base.ob_base,
+ & importlib__bootstrap_toplevel_consts_59.ob_base.ob_base,
+ & importlib__bootstrap_toplevel_consts_60.ob_base.ob_base,
+ & importlib__bootstrap_toplevel_consts_61.ob_base.ob_base,
+ & importlib__bootstrap_toplevel_consts_62.ob_base.ob_base,
+ & importlib__bootstrap_toplevel_consts_63.ob_base.ob_base,
+ & importlib__bootstrap_toplevel_consts_64.ob_base.ob_base,
+ & importlib__bootstrap_toplevel_consts_65.ob_base.ob_base,
+ & importlib__bootstrap_toplevel_consts_44_consts_10._object.ob_base.ob_base,
+ & importlib__bootstrap_toplevel_consts_1_consts._object.ob_base.ob_base,
+ & importlib__bootstrap_toplevel_consts_16_consts_2_consts._object.ob_base.ob_base,
+ & importlib__bootstrap_toplevel_consts_69._object.ob_base.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[9];
+ }
+const_str__ERR_MSG = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 8,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_ERR_MSG",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[58];
+ }_object;
+ }
+importlib__bootstrap_toplevel_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 58,
+ },
+ .ob_item = {
+ &_Py_ID(__doc__),
+ & const_str__object_name._ascii.ob_base,
+ & const_str__thread._ascii.ob_base,
+ & const_str__warnings._ascii.ob_base,
+ & const_str__weakref._ascii.ob_base,
+ & const_str__bootstrap_external._ascii.ob_base,
+ & const_str__wrap._ascii.ob_base,
+ & const_str__new_module._ascii.ob_base,
+ & const_str_list._ascii.ob_base,
+ & const_str__List._ascii.ob_base,
+ & const_str__WeakValueDictionary._ascii.ob_base,
+ & const_str__module_locks._ascii.ob_base,
+ & const_str__blocking_on._ascii.ob_base,
+ & const_str__BlockingOnManager._ascii.ob_base,
+ & const_str_RuntimeError._ascii.ob_base,
+ & const_str__DeadlockError._ascii.ob_base,
+ & const_str__has_deadlocked._ascii.ob_base,
+ & const_str__ModuleLock._ascii.ob_base,
+ & const_str__DummyModuleLock._ascii.ob_base,
+ & const_str__ModuleLockManager._ascii.ob_base,
+ & const_str__get_module_lock._ascii.ob_base,
+ &_Py_ID(_lock_unlock_module),
+ & const_str__call_with_frames_removed._ascii.ob_base,
+ & const_str__verbose_message._ascii.ob_base,
+ & const_str__requires_builtin._ascii.ob_base,
+ & const_str__requires_frozen._ascii.ob_base,
+ & const_str__load_module_shim._ascii.ob_base,
+ & const_str__module_repr._ascii.ob_base,
+ & const_str_ModuleSpec._ascii.ob_base,
+ & const_str_spec_from_loader._ascii.ob_base,
+ & const_str__spec_from_module._ascii.ob_base,
+ & const_str__init_module_attrs._ascii.ob_base,
+ & const_str_module_from_spec._ascii.ob_base,
+ & const_str__module_repr_from_spec._ascii.ob_base,
+ & const_str__exec._ascii.ob_base,
+ & const_str__load_backward_compatible._ascii.ob_base,
+ & const_str__load_unlocked._ascii.ob_base,
+ & const_str__load._ascii.ob_base,
+ & const_str_BuiltinImporter._ascii.ob_base,
+ & const_str_FrozenImporter._ascii.ob_base,
+ & const_str__ImportLockContext._ascii.ob_base,
+ & const_str__resolve_name._ascii.ob_base,
+ & const_str__find_spec._ascii.ob_base,
+ & const_str__sanity_check._ascii.ob_base,
+ & const_str__ERR_MSG_PREFIX._ascii.ob_base,
+ & const_str__ERR_MSG._ascii.ob_base,
+ & const_str__find_and_load_unlocked._ascii.ob_base,
+ &_Py_ID(object),
+ & const_str__NEEDS_LOADING._ascii.ob_base,
+ &_Py_ID(_find_and_load),
+ & const_str__gcd_import._ascii.ob_base,
+ &_Py_ID(_handle_fromlist),
+ & const_str__calc___package__._ascii.ob_base,
+ &_Py_ID(__import__),
+ & const_str__builtin_from_name._ascii.ob_base,
+ & const_str__setup._ascii.ob_base,
+ & const_str__install._ascii.ob_base,
+ & const_str__install_external_importers._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[411];
+ }
+importlib__bootstrap_toplevel_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 410,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\xf0\x03\x01\x01\x01\xf1\x02\x07\x01\x04\xf2\x2c\x04\x01\x26\xf0\x12\x00\x0b\x0f\x80\x07\xd8\x0c\x10\x80\x09\xd8\x0b\x0f\x80\x08\xf0\x06\x00\x17\x1b\xd0\x00\x13\xf2\x06\x05\x01\x26\xf2\x10\x01\x01\x1b\xf4\x0e\x01\x01\x09\x88\x44\xf4\x00\x01\x01\x09\xf7\x0e\x49\x01\x01\x15\xf1\x00\x49\x01\x01\x15\xf0\x5c\x02\x00\x11\x13\x80\x0d\xf0\x1a\x00\x10\x14\x80\x0c\xf7\x06\x13\x01\x2a\xf1\x00\x13\x01\x2a\xf4\x2c\x01\x01\x09\x90\x5c\xf4\x00\x01\x01\x09\xf2\x0a\x28\x01\x11\xf7\x56\x01\x60\x02\x01\x3b\xf1\x00\x60\x02\x01\x3b\xf7\x46\x05\x12\x01\x40\x01\xf1\x00\x12\x01\x40\x01\xf7\x2a\x0b\x01\x1d\xf1\x00\x0b\x01\x1d\xf2\x20\x22\x01\x10\xf2\x4a\x01\x0e\x01\x17\xf2\x22\x08\x01\x1c\xf0\x16\x00\x30\x31\xf4\x00\x05\x01\x36\xf2\x10\x08\x01\x25\xf2\x16\x08\x01\x24\xf2\x18\x0f\x01\x1b\xf2\x26\x12\x01\x36\xf7\x2a\x61\x01\x01\x29\xf1\x00\x61\x01\x01\x29\xf0\x48\x03\x00\x2e\x32\xb8\x64\xf4\x00\x1a\x01\x4a\x01\xf3\x3a\x27\x01\x10\xf0\x54\x01\x00\x32\x37\xf4\x00\x46\x01\x01\x12\xf2\x52\x02\x0e\x01\x12\xf2\x22\x12\x01\x3d\xf2\x2c\x1b\x01\x12\xf2\x3c\x22\x01\x12\xf2\x48\x01\x29\x01\x12\xf2\x5a\x01\x0a\x01\x24\xf7\x1e\x31\x01\x31\xf1\x00\x31\x01\x31\xf7\x68\x01\x7e\x02\x01\x30\xf1\x00\x7e\x02\x01\x30\xf7\x46\x06\x0a\x01\x1c\xf1\x00\x0a\x01\x1c\xf2\x1a\x06\x01\x2e\xf3\x12\x2a\x01\x14\xf2\x5a\x01\x0d\x01\x2e\xf0\x20\x00\x13\x25\x80\x0f\xd8\x0b\x1a\x98\x56\xd1\x0b\x23\x80\x08\xf2\x04\x27\x01\x12\xf1\x54\x01\x00\x12\x18\x93\x18\x80\x0e\xf2\x06\x17\x01\x12\xf3\x34\x0c\x01\x2d\xf0\x1e\x00\x3e\x43\x01\xf4\x00\x22\x01\x12\xf2\x4a\x01\x18\x01\x13\xf3\x36\x22\x01\x16\xf2\x4a\x01\x04\x01\x20\xf2\x0e\x25\x01\x2a\xf2\x50\x01\x05\x01\x29\xf3\x10\x05\x01\x3f",
+};
+static
+ struct _PyCode_DEF(522)
+importlib__bootstrap_toplevel = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 261,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_toplevel_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 0,
+ .co_argcount = 0,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 5 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 5,
+ .co_firstlineno = 1,
+ .co_nlocalsplus = 0,
+ .co_nlocals = 0,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 98,
+ .co_localsplusnames = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_filename = & importlib__bootstrap_toplevel_consts_1_filename._ascii.ob_base,
+ .co_name = &_Py_STR(anon_module),
+ .co_qualname = &_Py_STR(anon_module),
+ .co_linetable = & importlib__bootstrap_toplevel_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x64\x00\x5a\x00\x64\x01\x84\x00\x5a\x01\x64\x02\x5a\x02\x64\x02\x5a\x03\x64\x02\x5a\x04\x64\x02\x61\x05\x64\x03\x84\x00\x5a\x06\x64\x04\x84\x00\x5a\x07\x02\x00\x47\x00\x64\x05\x84\x00\x64\x06\x65\x08\xab\x03\x00\x00\x00\x00\x00\x00\x5a\x09\x02\x00\x47\x00\x64\x07\x84\x00\x64\x08\xab\x02\x00\x00\x00\x00\x00\x00\x5a\x0a\x69\x00\x5a\x0b\x64\x02\x61\x0c\x02\x00\x47\x00\x64\x09\x84\x00\x64\x0a\xab\x02\x00\x00\x00\x00\x00\x00\x5a\x0d\x02\x00\x47\x00\x64\x0b\x84\x00\x64\x0c\x65\x0e\xab\x03\x00\x00\x00\x00\x00\x00\x5a\x0f\x64\x0d\x84\x00\x5a\x10\x02\x00\x47\x00\x64\x0e\x84\x00\x64\x0f\xab\x02\x00\x00\x00\x00\x00\x00\x5a\x11\x02\x00\x47\x00\x64\x10\x84\x00\x64\x11\xab\x02\x00\x00\x00\x00\x00\x00\x5a\x12\x02\x00\x47\x00\x64\x12\x84\x00\x64\x13\xab\x02\x00\x00\x00\x00\x00\x00\x5a\x13\x64\x14\x84\x00\x5a\x14\x64\x15\x84\x00\x5a\x15\x64\x16\x84\x00\x5a\x16\x64\x17\x64\x18\x9c\x01\x64\x19\x84\x02\x5a\x17\x64\x1a\x84\x00\x5a\x18\x64\x1b\x84\x00\x5a\x19\x64\x1c\x84\x00\x5a\x1a\x64\x1d\x84\x00\x5a\x1b\x02\x00\x47\x00\x64\x1e\x84\x00\x64\x1f\xab\x02\x00\x00\x00\x00\x00\x00\x5a\x1c\x64\x02\x64\x02\x64\x20\x9c\x02\x64\x21\x84\x02\x5a\x1d\x64\x42\x64\x22\x84\x01\x5a\x1e\x64\x23\x64\x24\x9c\x01\x64\x25\x84\x02\x5a\x1f\x64\x26\x84\x00\x5a\x20\x64\x27\x84\x00\x5a\x21\x64\x28\x84\x00\x5a\x22\x64\x29\x84\x00\x5a\x23\x64\x2a\x84\x00\x5a\x24\x64\x2b\x84\x00\x5a\x25\x02\x00\x47\x00\x64\x2c\x84\x00\x64\x2d\xab\x02\x00\x00\x00\x00\x00\x00\x5a\x26\x02\x00\x47\x00\x64\x2e\x84\x00\x64\x2f\xab\x02\x00\x00\x00\x00\x00\x00\x5a\x27\x02\x00\x47\x00\x64\x30\x84\x00\x64\x31\xab\x02\x00\x00\x00\x00\x00\x00\x5a\x28\x64\x32\x84\x00\x5a\x29\x64\x43\x64\x33\x84\x01\x5a\x2a\x64\x34\x84\x00\x5a\x2b\x64\x35\x5a\x2c\x65\x2c\x64\x36\x7a\x00\x00\x00\x5a\x2d\x64\x37\x84\x00\x5a\x2e\x02\x00\x65\x2f\xab\x00\x00\x00\x00\x00\x00\x00\x5a\x30\x64\x38\x84\x00\x5a\x31\x64\x44\x64\x39\x84\x01\x5a\x32\x64\x23\x64\x3a\x9c\x01\x64\x3b\x84\x02\x5a\x33\x64\x3c\x84\x00\x5a\x34\x64\x45\x64\x3d\x84\x01\x5a\x35\x64\x3e\x84\x00\x5a\x36\x64\x3f\x84\x00\x5a\x37\x64\x40\x84\x00\x5a\x38\x64\x41\x84\x00\x5a\x39\x79\x02",
+ ._co_firsttraceable = 0,
+};
+
+PyObject *
+_Py_get_importlib__bootstrap_toplevel(void)
+{
+ return Py_NewRef((PyObject *) &importlib__bootstrap_toplevel);
+}
+
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[351];
+ }
+importlib__bootstrap_external_toplevel_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 350,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x43\x6f\x72\x65\x20\x69\x6d\x70\x6c\x65\x6d\x65\x6e\x74\x61\x74\x69\x6f\x6e\x20\x6f\x66\x20\x70\x61\x74\x68\x2d\x62\x61\x73\x65\x64\x20\x69\x6d\x70\x6f\x72\x74\x2e\x0a\x0a\x54\x68\x69\x73\x20\x6d\x6f\x64\x75\x6c\x65\x20\x69\x73\x20\x4e\x4f\x54\x20\x6d\x65\x61\x6e\x74\x20\x74\x6f\x20\x62\x65\x20\x64\x69\x72\x65\x63\x74\x6c\x79\x20\x69\x6d\x70\x6f\x72\x74\x65\x64\x21\x20\x49\x74\x20\x68\x61\x73\x20\x62\x65\x65\x6e\x20\x64\x65\x73\x69\x67\x6e\x65\x64\x20\x73\x75\x63\x68\x0a\x74\x68\x61\x74\x20\x69\x74\x20\x63\x61\x6e\x20\x62\x65\x20\x62\x6f\x6f\x74\x73\x74\x72\x61\x70\x70\x65\x64\x20\x69\x6e\x74\x6f\x20\x50\x79\x74\x68\x6f\x6e\x20\x61\x73\x20\x74\x68\x65\x20\x69\x6d\x70\x6c\x65\x6d\x65\x6e\x74\x61\x74\x69\x6f\x6e\x20\x6f\x66\x20\x69\x6d\x70\x6f\x72\x74\x2e\x20\x41\x73\x0a\x73\x75\x63\x68\x20\x69\x74\x20\x72\x65\x71\x75\x69\x72\x65\x73\x20\x74\x68\x65\x20\x69\x6e\x6a\x65\x63\x74\x69\x6f\x6e\x20\x6f\x66\x20\x73\x70\x65\x63\x69\x66\x69\x63\x20\x6d\x6f\x64\x75\x6c\x65\x73\x20\x61\x6e\x64\x20\x61\x74\x74\x72\x69\x62\x75\x74\x65\x73\x20\x69\x6e\x20\x6f\x72\x64\x65\x72\x20\x74\x6f\x0a\x77\x6f\x72\x6b\x2e\x20\x4f\x6e\x65\x20\x73\x68\x6f\x75\x6c\x64\x20\x75\x73\x65\x20\x69\x6d\x70\x6f\x72\x74\x6c\x69\x62\x20\x61\x73\x20\x74\x68\x65\x20\x70\x75\x62\x6c\x69\x63\x2d\x66\x61\x63\x69\x6e\x67\x20\x76\x65\x72\x73\x69\x6f\x6e\x20\x6f\x66\x20\x74\x68\x69\x73\x20\x6d\x6f\x64\x75\x6c\x65\x2e\x0a\x0a",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_6_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 1],
+ Py_None,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_6_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ &_Py_ID(len),
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[39];
+ }
+importlib__bootstrap_external_toplevel_consts_6_filename = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 38,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "<frozen importlib._bootstrap_external>",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[25];
+ }
+importlib__bootstrap_external_toplevel_consts_6_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 24,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\xe8\x00\xf8\x80\x00\xd2\x0a\x34\x98\x53\x8c\x33\x88\x73\x8b\x38\x90\x71\x8d\x3d\xd1\x0a\x34\xf9",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[5];
+ }
+importlib__bootstrap_external_toplevel_consts_6_exceptiontable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x82\x18\x1a\x01",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[3];
+ }
+importlib__bootstrap_external_toplevel_consts_6_localsplusnames_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 2,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = ".0",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_6_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & importlib__bootstrap_external_toplevel_consts_6_localsplusnames_0._ascii.ob_base,
+ &_Py_ID(sep),
+ },
+ },
+};
+static
+ struct _PyCode_DEF(56)
+importlib__bootstrap_external_toplevel_consts_6 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 28,
+ },
+ .co_consts = & importlib__bootstrap_external_toplevel_consts_6_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_external_toplevel_consts_6_names._object.ob_base.ob_base,
+ .co_exceptiontable = & importlib__bootstrap_external_toplevel_consts_6_exceptiontable.ob_base.ob_base,
+ .co_flags = 35,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 6 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 46,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 2,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 99,
+ .co_localsplusnames = & importlib__bootstrap_external_toplevel_consts_6_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_14_consts_2_localspluskinds.ob_base.ob_base,
+ .co_filename = & importlib__bootstrap_external_toplevel_consts_6_filename._ascii.ob_base,
+ .co_name = &_Py_STR(anon_genexpr),
+ .co_qualname = &_Py_STR(anon_genexpr),
+ .co_linetable = & importlib__bootstrap_external_toplevel_consts_6_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x4b\x00\x01\x00\x97\x00\x7c\x00\x5d\x12\x00\x00\x7d\x01\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\xab\x01\x00\x00\x00\x00\x00\x00\x64\x00\x6b\x28\x00\x00\x96\x01\x97\x01\x01\x00\x8c\x14\x04\x00\x79\x01\xad\x03\x77\x01",
+ ._co_firsttraceable = 2,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[4];
+ }
+const_str_win = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 3,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "win",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_9 = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & const_str_win._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[7];
+ }
+const_str_cygwin = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 6,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "cygwin",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[7];
+ }
+const_str_darwin = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 6,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "darwin",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_10 = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & const_str_cygwin._ascii.ob_base,
+ & const_str_darwin._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[13];
+ }
+const_str_PYTHONCASEOK = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 12,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "PYTHONCASEOK",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[13];
+ }
+importlib__bootstrap_external_toplevel_consts_11_consts_2 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 12,
+ },
+ .ob_shash = -1,
+ .ob_sval = "PYTHONCASEOK",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[95];
+ }
+importlib__bootstrap_external_toplevel_consts_11_consts_3_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 94,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "True if filenames must be checked case-insensitively and ignore environment flags are not set.",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_11_consts_3_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & importlib__bootstrap_external_toplevel_consts_11_consts_3_consts_0._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[19];
+ }
+const_str_ignore_environment = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 18,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "ignore_environment",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[4];
+ }
+const_str__os = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 3,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_os",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[8];
+ }
+const_str_environ = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 7,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "environ",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[5];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_11_consts_3_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 5,
+ },
+ .ob_item = {
+ & const_str_sys._ascii.ob_base,
+ &_Py_ID(flags),
+ & const_str_ignore_environment._ascii.ob_base,
+ & const_str__os._ascii.ob_base,
+ & const_str_environ._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[12];
+ }
+const_str__relax_case = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 11,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_relax_case",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[38];
+ }
+importlib__bootstrap_external_toplevel_consts_11_consts_3_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 37,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_make_relax_case.<locals>._relax_case",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[37];
+ }
+importlib__bootstrap_external_toplevel_consts_11_consts_3_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 36,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\xf8\x80\x00\xe4\x17\x1a\x97\x79\x91\x79\xd7\x17\x33\xd1\x17\x33\xd0\x13\x33\xd2\x13\x4a\xb8\x03\xbc\x73\xbf\x7b\xb9\x7b\xd0\x38\x4a\xd0\x0c\x4a",
+};
+static
+ struct _PyCode_DEF(98)
+importlib__bootstrap_external_toplevel_consts_11_consts_3 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 49,
+ },
+ .co_consts = & importlib__bootstrap_external_toplevel_consts_11_consts_3_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_external_toplevel_consts_11_consts_3_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 19,
+ .co_argcount = 0,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 3 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 2,
+ .co_firstlineno = 67,
+ .co_nlocalsplus = 1,
+ .co_nlocals = 0,
+ .co_ncellvars = 0,
+ .co_nfreevars = 1,
+ .co_version = 100,
+ .co_localsplusnames = & importlib__bootstrap_toplevel_consts_7_consts_1_consts_1_consts_1._object.ob_base.ob_base,
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_characters[128]),
+ .co_filename = & importlib__bootstrap_external_toplevel_consts_6_filename._ascii.ob_base,
+ .co_name = & const_str__relax_case._ascii.ob_base,
+ .co_qualname = & importlib__bootstrap_external_toplevel_consts_11_consts_3_qualname._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_external_toplevel_consts_11_consts_3_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x95\x01\x97\x00\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x78\x01\x72\x12\x01\x00\x89\x00\x74\x06\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x76\x00\x53\x00",
+ ._co_firsttraceable = 1,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[54];
+ }
+importlib__bootstrap_external_toplevel_consts_11_consts_4_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 53,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "True if filenames must be checked case-insensitively.",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_11_consts_4_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & importlib__bootstrap_external_toplevel_consts_11_consts_4_consts_0._ascii.ob_base,
+ Py_False,
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[6];
+ }
+importlib__bootstrap_external_toplevel_consts_11_consts_4_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 5,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xe0\x13\x18",
+};
+static
+ struct _PyCode_DEF(4)
+importlib__bootstrap_external_toplevel_consts_11_consts_4 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 2,
+ },
+ .co_consts = & importlib__bootstrap_external_toplevel_consts_11_consts_4_consts._object.ob_base.ob_base,
+ .co_names = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 19,
+ .co_argcount = 0,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 0 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 0,
+ .co_firstlineno = 71,
+ .co_nlocalsplus = 0,
+ .co_nlocals = 0,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 101,
+ .co_localsplusnames = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_filename = & importlib__bootstrap_external_toplevel_consts_6_filename._ascii.ob_base,
+ .co_name = & const_str__relax_case._ascii.ob_base,
+ .co_qualname = & importlib__bootstrap_external_toplevel_consts_11_consts_3_qualname._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_external_toplevel_consts_11_consts_4_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x79\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[5];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_11_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 5,
+ },
+ .ob_item = {
+ Py_None,
+ & const_str_PYTHONCASEOK._ascii.ob_base,
+ & importlib__bootstrap_external_toplevel_consts_11_consts_2.ob_base.ob_base,
+ & importlib__bootstrap_external_toplevel_consts_11_consts_3.ob_base.ob_base,
+ & importlib__bootstrap_external_toplevel_consts_11_consts_4.ob_base.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[28];
+ }
+const_str__CASE_INSENSITIVE_PLATFORMS = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 27,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_CASE_INSENSITIVE_PLATFORMS",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[36];
+ }
+const_str__CASE_INSENSITIVE_PLATFORMS_STR_KEY = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 35,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_CASE_INSENSITIVE_PLATFORMS_STR_KEY",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[5];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_11_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 5,
+ },
+ .ob_item = {
+ & const_str_sys._ascii.ob_base,
+ & const_str_platform._ascii.ob_base,
+ & const_str_startswith._ascii.ob_base,
+ & const_str__CASE_INSENSITIVE_PLATFORMS._ascii.ob_base,
+ & const_str__CASE_INSENSITIVE_PLATFORMS_STR_KEY._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[17];
+ }
+const_str__make_relax_case = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 16,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_make_relax_case",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[79];
+ }
+importlib__bootstrap_external_toplevel_consts_11_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 78,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\xf8\x80\x00\xdc\x07\x0a\x87\x7c\x81\x7c\xd7\x07\x1e\xd1\x07\x1e\xd4\x1f\x3a\xd4\x07\x3b\xdc\x0b\x0e\x8f\x3c\x89\x3c\xd7\x0b\x22\xd1\x0b\x22\xd4\x23\x46\xd4\x0b\x47\xd8\x12\x20\x89\x43\xe0\x12\x21\x88\x43\xf4\x04\x02\x09\x4b\x01\xf0\x0e\x00\x0c\x17\xd0\x04\x16\xf2\x07\x02\x09\x19\xf0\x06\x00\x0c\x17\xd0\x04\x16",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_11_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & const_str__relax_case._ascii.ob_base,
+ &_Py_ID(key),
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[3];
+ }
+importlib__bootstrap_external_toplevel_consts_11_localspluskinds = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_shash = -1,
+ .ob_sval = " @",
+};
+static
+ struct _PyCode_DEF(178)
+importlib__bootstrap_external_toplevel_consts_11 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 89,
+ },
+ .co_consts = & importlib__bootstrap_external_toplevel_consts_11_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_external_toplevel_consts_11_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 0,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 5 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 3,
+ .co_firstlineno = 60,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 1,
+ .co_ncellvars = 1,
+ .co_nfreevars = 0,
+ .co_version = 102,
+ .co_localsplusnames = & importlib__bootstrap_external_toplevel_consts_11_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_external_toplevel_consts_11_localspluskinds.ob_base.ob_base,
+ .co_filename = & importlib__bootstrap_external_toplevel_consts_6_filename._ascii.ob_base,
+ .co_name = & const_str__make_relax_case._ascii.ob_base,
+ .co_qualname = & const_str__make_relax_case._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_external_toplevel_consts_11_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x87\x01\x97\x00\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x74\x06\x00\x00\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x72\x2f\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x74\x08\x00\x00\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x72\x03\x64\x01\x8a\x01\x6e\x02\x64\x02\x8a\x01\x88\x01\x66\x01\x64\x03\x84\x08\x7d\x00\x7c\x00\x53\x00\x64\x04\x84\x00\x7d\x00\x7c\x00\x53\x00",
+ ._co_firsttraceable = 1,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[43];
+ }
+importlib__bootstrap_external_toplevel_consts_12_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 42,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Convert a 32-bit integer to little-endian.",
+};
+#if PYLONG_BITS_IN_DIGIT == 15
+static
+ struct {
+ PyObject ob_base;
+ uintptr_t lv_tag;
+ digit ob_digit[3];
+ }
+const_int_4294967295 = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyLong_Type,
+ },
+ .lv_tag = TAG_FROM_SIGN_AND_SIZE(1, 3),
+ .ob_digit = { 32767, 32767, 3 },
+};
+#elif PYLONG_BITS_IN_DIGIT == 30
+static
+ struct {
+ PyObject ob_base;
+ uintptr_t lv_tag;
+ digit ob_digit[2];
+ }
+const_int_4294967295 = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyLong_Type,
+ },
+ .lv_tag = TAG_FROM_SIGN_AND_SIZE(1, 2),
+ .ob_digit = { 1073741823, 3 },
+};
+#else
+#error "PYLONG_BITS_IN_DIGIT should be 15 or 30"
+#endif
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[4];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_12_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_item = {
+ & importlib__bootstrap_external_toplevel_consts_12_consts_0._ascii.ob_base,
+ & const_int_4294967295.ob_base,
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 4],
+ &_Py_ID(little),
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[4];
+ }
+const_str_int = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 3,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "int",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[9];
+ }
+const_str_to_bytes = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 8,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "to_bytes",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_12_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & const_str_int._ascii.ob_base,
+ & const_str_to_bytes._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[13];
+ }
+const_str__pack_uint32 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 12,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_pack_uint32",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[31];
+ }
+importlib__bootstrap_external_toplevel_consts_12_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 30,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xe4\x0c\x0f\x90\x01\x8b\x46\x90\x5a\xd1\x0c\x1f\xd7\x0b\x29\xd1\x0b\x29\xa8\x21\xa8\x58\xd3\x0b\x36\xd0\x04\x36",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_12_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ &_Py_ID(x),
+ },
+ },
+};
+static
+ struct _PyCode_DEF(62)
+importlib__bootstrap_external_toplevel_consts_12 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 31,
+ },
+ .co_consts = & importlib__bootstrap_external_toplevel_consts_12_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_external_toplevel_consts_12_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 5 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 79,
+ .co_nlocalsplus = 1,
+ .co_nlocals = 1,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 103,
+ .co_localsplusnames = & importlib__bootstrap_external_toplevel_consts_12_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_characters[32]),
+ .co_filename = & importlib__bootstrap_external_toplevel_consts_6_filename._ascii.ob_base,
+ .co_name = & const_str__pack_uint32._ascii.ob_base,
+ .co_qualname = & const_str__pack_uint32._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_external_toplevel_consts_12_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x64\x01\x7a\x01\x00\x00\x6a\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x02\x64\x03\xab\x02\x00\x00\x00\x00\x00\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[48];
+ }
+importlib__bootstrap_external_toplevel_consts_13_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 47,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Convert 4 bytes in little-endian to an integer.",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_13_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ & importlib__bootstrap_external_toplevel_consts_13_consts_0._ascii.ob_base,
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 4],
+ &_Py_ID(little),
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[11];
+ }
+const_str_from_bytes = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 10,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "from_bytes",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_13_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ &_Py_ID(len),
+ & const_str_int._ascii.ob_base,
+ & const_str_from_bytes._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[15];
+ }
+const_str__unpack_uint32 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 14,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_unpack_uint32",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[34];
+ }
+importlib__bootstrap_external_toplevel_consts_13_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 33,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xe4\x0b\x0e\x88\x74\x8b\x39\x98\x01\x8a\x3e\xd1\x04\x19\xdc\x0b\x0e\x8f\x3e\x89\x3e\x98\x24\xa0\x08\xd3\x0b\x29\xd0\x04\x29",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_13_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ &_Py_ID(data),
+ },
+ },
+};
+static
+ struct _PyCode_DEF(78)
+importlib__bootstrap_external_toplevel_consts_13 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 39,
+ },
+ .co_consts = & importlib__bootstrap_external_toplevel_consts_13_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_external_toplevel_consts_13_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 5 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 84,
+ .co_nlocalsplus = 1,
+ .co_nlocals = 1,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 104,
+ .co_localsplusnames = & importlib__bootstrap_external_toplevel_consts_13_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_characters[32]),
+ .co_filename = & importlib__bootstrap_external_toplevel_consts_6_filename._ascii.ob_base,
+ .co_name = & const_str__unpack_uint32._ascii.ob_base,
+ .co_qualname = & const_str__unpack_uint32._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_external_toplevel_consts_13_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x64\x01\x6b\x28\x00\x00\x73\x02\x4a\x00\x82\x01\x74\x02\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x64\x02\xab\x02\x00\x00\x00\x00\x00\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[48];
+ }
+importlib__bootstrap_external_toplevel_consts_14_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 47,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Convert 2 bytes in little-endian to an integer.",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_14_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ & importlib__bootstrap_external_toplevel_consts_14_consts_0._ascii.ob_base,
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 2],
+ &_Py_ID(little),
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[15];
+ }
+const_str__unpack_uint16 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 14,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_unpack_uint16",
+};
+static
+ struct _PyCode_DEF(78)
+importlib__bootstrap_external_toplevel_consts_14 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 39,
+ },
+ .co_consts = & importlib__bootstrap_external_toplevel_consts_14_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_external_toplevel_consts_13_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 5 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 89,
+ .co_nlocalsplus = 1,
+ .co_nlocals = 1,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 105,
+ .co_localsplusnames = & importlib__bootstrap_external_toplevel_consts_13_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_characters[32]),
+ .co_filename = & importlib__bootstrap_external_toplevel_consts_6_filename._ascii.ob_base,
+ .co_name = & const_str__unpack_uint16._ascii.ob_base,
+ .co_qualname = & const_str__unpack_uint16._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_external_toplevel_consts_13_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x64\x01\x6b\x28\x00\x00\x73\x02\x4a\x00\x82\x01\x74\x02\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x64\x02\xab\x02\x00\x00\x00\x00\x00\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[32];
+ }
+importlib__bootstrap_external_toplevel_consts_15_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 31,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Replacement for os.path.join().",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[5];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_15_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 5,
+ },
+ .ob_item = {
+ & importlib__bootstrap_external_toplevel_consts_15_consts_0._ascii.ob_base,
+ &_Py_STR(empty),
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 1],
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 0],
+ (PyObject *)&_Py_SINGLETON(strings).ascii[58],
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[4];
+ }
+const_str_map = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 3,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "map",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[16];
+ }
+const_str__path_splitroot = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 15,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_path_splitroot",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[15];
+ }
+const_str_path_sep_tuple = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 14,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "path_sep_tuple",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[9];
+ }
+const_str_endswith = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 8,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "endswith",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[7];
+ }
+const_str_rstrip = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 6,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "rstrip",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[16];
+ }
+const_str_path_separators = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 15,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "path_separators",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[9];
+ }
+const_str_path_sep = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 8,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "path_sep",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[9];
+ }
+const_str_casefold = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 8,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "casefold",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[13];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_15_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 13,
+ },
+ .ob_item = {
+ &_Py_ID(len),
+ & const_str_map._ascii.ob_base,
+ & const_str__os._ascii.ob_base,
+ & const_str__path_splitroot._ascii.ob_base,
+ & const_str_startswith._ascii.ob_base,
+ & const_str_path_sep_tuple._ascii.ob_base,
+ & const_str_endswith._ascii.ob_base,
+ & const_str_rstrip._ascii.ob_base,
+ & const_str_path_separators._ascii.ob_base,
+ & const_str_path_sep._ascii.ob_base,
+ & const_str_casefold._ascii.ob_base,
+ &_Py_ID(append),
+ &_Py_ID(join),
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[11];
+ }
+const_str__path_join = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 10,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_path_join",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[300];
+ }
+importlib__bootstrap_external_toplevel_consts_15_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 299,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xe1\x0f\x19\xd8\x13\x15\xdc\x0b\x0e\x88\x7a\x8b\x3f\x98\x61\xd2\x0b\x1f\xd8\x13\x1d\x98\x61\x91\x3d\xd0\x0c\x20\xd8\x0f\x11\x88\x04\xd8\x0f\x11\x88\x04\xdc\x1e\x21\xa4\x23\xd7\x22\x35\xd1\x22\x35\xb0\x7a\xd3\x1e\x42\xf2\x00\x0e\x09\x22\x89\x4e\x88\x48\x90\x64\xd8\x0f\x17\xd7\x0f\x22\xd1\x0f\x22\xa4\x3e\xd4\x0f\x32\xb0\x68\xd7\x36\x47\xd1\x36\x47\xcc\x0e\xd4\x36\x57\xd8\x17\x1f\x97\x7f\x91\x7f\xa4\x7f\xd3\x17\x37\xd2\x17\x3f\xb8\x34\x90\x04\xdc\x18\x20\xa0\x34\x99\x0f\xd0\x17\x28\x91\x04\xd8\x11\x19\xd7\x11\x22\xd1\x11\x22\xa0\x33\xd4\x11\x27\xd8\x13\x17\x97\x3d\x91\x3d\x93\x3f\xa0\x68\xd7\x26\x37\xd1\x26\x37\xd3\x26\x39\xd2\x13\x39\xf0\x06\x00\x1c\x24\x90\x44\xd8\x1c\x20\x98\x36\x91\x44\xe0\x14\x18\x97\x4b\x91\x4b\xa0\x04\xd5\x14\x25\xe0\x17\x1f\xd2\x17\x27\xa0\x34\x90\x04\xd8\x10\x14\x97\x0b\x91\x0b\x98\x44\xd5\x10\x21\xf0\x1d\x0e\x09\x22\xf0\x1e\x00\x34\x38\xd6\x0f\x3d\xa8\x61\xba\x31\x90\x01\x97\x08\x91\x08\x9c\x1f\xd5\x10\x29\xd0\x0f\x3d\x88\x04\xd0\x0f\x3d\xdc\x0b\x0e\x88\x74\x8b\x39\x98\x01\x8a\x3e\xa0\x24\xa0\x71\xa2\x27\xe0\x13\x17\x9c\x28\x91\x3f\xd0\x0c\x22\xd8\x0f\x13\x94\x68\x97\x6d\x91\x6d\xa0\x44\xd3\x16\x29\xd1\x0f\x29\xd0\x08\x29\xf9\xf2\x09\x00\x10\x3e",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[13];
+ }
+importlib__bootstrap_external_toplevel_consts_15_exceptiontable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 12,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\xc3\x30\x07\x45\x05\x04\xc3\x38\x17\x45\x05\x04",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[11];
+ }
+const_str_path_parts = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 10,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "path_parts",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[5];
+ }
+const_str_root = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 4,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "root",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[9];
+ }
+const_str_new_root = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 8,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "new_root",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[5];
+ }
+const_str_tail = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 4,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "tail",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[6];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_15_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 6,
+ },
+ .ob_item = {
+ & const_str_path_parts._ascii.ob_base,
+ & const_str_root._ascii.ob_base,
+ &_Py_ID(path),
+ & const_str_new_root._ascii.ob_base,
+ & const_str_tail._ascii.ob_base,
+ &_Py_ID(p),
+ },
+ },
+};
+static
+ struct _PyCode_DEF(660)
+importlib__bootstrap_external_toplevel_consts_15 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 330,
+ },
+ .co_consts = & importlib__bootstrap_external_toplevel_consts_15_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_external_toplevel_consts_15_names._object.ob_base.ob_base,
+ .co_exceptiontable = & importlib__bootstrap_external_toplevel_consts_15_exceptiontable.ob_base.ob_base,
+ .co_flags = 7,
+ .co_argcount = 0,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 12 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 6,
+ .co_firstlineno = 96,
+ .co_nlocalsplus = 6,
+ .co_nlocals = 6,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 106,
+ .co_localsplusnames = & importlib__bootstrap_external_toplevel_consts_15_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_30_consts_4_localspluskinds.ob_base.ob_base,
+ .co_filename = & importlib__bootstrap_external_toplevel_consts_6_filename._ascii.ob_base,
+ .co_name = & const_str__path_join._ascii.ob_base,
+ .co_qualname = & const_str__path_join._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_external_toplevel_consts_15_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x00\x73\x01\x79\x01\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x64\x02\x6b\x28\x00\x00\x72\x05\x7c\x00\x64\x03\x19\x00\x00\x00\x53\x00\x64\x01\x7d\x01\x67\x00\x7d\x02\x74\x03\x00\x00\x00\x00\x00\x00\x00\x00\x74\x04\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x02\x00\x00\x00\x00\x00\x00\x44\x00\x5d\xb4\x00\x00\x5c\x02\x00\x00\x7d\x03\x7d\x04\x7c\x03\x6a\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x74\x0a\x00\x00\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x73\x15\x7c\x03\x6a\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x74\x0a\x00\x00\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x72\x24\x7c\x03\x6a\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x74\x10\x00\x00\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x78\x01\x73\x02\x01\x00\x7c\x01\x7d\x01\x74\x12\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x04\x7a\x00\x00\x00\x67\x01\x7d\x02\x8c\x54\x7c\x03\x6a\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x04\xab\x01\x00\x00\x00\x00\x00\x00\x72\x39\x7c\x01\x6a\x15\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x7c\x03\x6a\x15\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x6b\x37\x00\x00\x72\x06\x7c\x03\x7d\x01\x7c\x04\x67\x01\x7d\x02\x8c\x8c\x7c\x02\x6a\x17\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x04\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x8c\x9e\x7c\x03\x78\x01\x73\x02\x01\x00\x7c\x01\x7d\x01\x7c\x02\x6a\x17\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x04\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x8c\xb6\x04\x00\x7c\x02\x44\x00\x8f\x05\x63\x02\x67\x00\x63\x02\x5d\x1a\x00\x00\x7d\x05\x7c\x05\x73\x01\x8c\x06\x7c\x05\x6a\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x74\x10\x00\x00\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x91\x02\x8c\x1c\x04\x00\x7d\x02\x7d\x05\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x02\xab\x01\x00\x00\x00\x00\x00\x00\x64\x02\x6b\x28\x00\x00\x72\x0e\x7c\x02\x64\x03\x19\x00\x00\x00\x73\x09\x7c\x01\x74\x12\x00\x00\x00\x00\x00\x00\x00\x00\x7a\x00\x00\x00\x53\x00\x7c\x01\x74\x12\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x02\xab\x01\x00\x00\x00\x00\x00\x00\x7a\x00\x00\x00\x53\x00\x63\x02\x01\x00\x63\x02\x7d\x05\x77\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_16_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & importlib__bootstrap_external_toplevel_consts_15_consts_0._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[4];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_16_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_item = {
+ & const_str_path_sep._ascii.ob_base,
+ &_Py_ID(join),
+ & const_str_rstrip._ascii.ob_base,
+ & const_str_path_separators._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[58];
+ }
+importlib__bootstrap_external_toplevel_consts_16_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 57,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xe4\x0f\x17\x8f\x7d\x89\x7d\xd8\x2a\x34\xf6\x03\x01\x1e\x3e\xd8\x22\x26\xb9\x04\xf0\x03\x00\x1f\x23\x9f\x6b\x99\x6b\xac\x2f\xd5\x1e\x3a\xf2\x00\x01\x1e\x3e\xf3\x00\x01\x10\x3f\xf0\x00\x01\x09\x3f\xf9\xf2\x00\x01\x1e\x3e",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[5];
+ }
+importlib__bootstrap_external_toplevel_consts_16_exceptiontable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x94\x1e\x39\x08",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[5];
+ }
+const_str_part = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 4,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "part",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_16_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & const_str_path_parts._ascii.ob_base,
+ & const_str_part._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(124)
+importlib__bootstrap_external_toplevel_consts_16 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 62,
+ },
+ .co_consts = & importlib__bootstrap_external_toplevel_consts_16_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_external_toplevel_consts_16_names._object.ob_base.ob_base,
+ .co_exceptiontable = & importlib__bootstrap_external_toplevel_consts_16_exceptiontable.ob_base.ob_base,
+ .co_flags = 7,
+ .co_argcount = 0,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 10 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 8,
+ .co_firstlineno = 126,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 2,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 107,
+ .co_localsplusnames = & importlib__bootstrap_external_toplevel_consts_16_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_14_consts_2_localspluskinds.ob_base.ob_base,
+ .co_filename = & importlib__bootstrap_external_toplevel_consts_6_filename._ascii.ob_base,
+ .co_name = & const_str__path_join._ascii.ob_base,
+ .co_qualname = & const_str__path_join._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_external_toplevel_consts_16_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x44\x00\x8f\x01\x63\x02\x67\x00\x63\x02\x5d\x19\x00\x00\x7d\x01\x7c\x01\x72\x15\x7c\x01\x6a\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x74\x06\x00\x00\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x91\x02\x8c\x1b\x04\x00\x63\x02\x7d\x01\xab\x01\x00\x00\x00\x00\x00\x00\x53\x00\x63\x02\x01\x00\x63\x02\x7d\x01\x77\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[33];
+ }
+importlib__bootstrap_external_toplevel_consts_17_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 32,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Replacement for os.path.split().",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[6];
+ }
+const_str_rfind = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 5,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "rfind",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_17_consts_1_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & const_str_rfind._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[31];
+ }
+importlib__bootstrap_external_toplevel_consts_17_consts_1_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 30,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_path_split.<locals>.<genexpr>",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[26];
+ }
+importlib__bootstrap_external_toplevel_consts_17_consts_1_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 25,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\xf8\xe8\x00\xf8\x80\x00\xd2\x0b\x33\x98\x61\x88\x44\x8f\x4a\x89\x4a\x90\x71\x8f\x4d\xd1\x0b\x33\xf9",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[5];
+ }
+importlib__bootstrap_external_toplevel_consts_17_consts_1_exceptiontable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x83\x1b\x1e\x01",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_17_consts_1_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ & importlib__bootstrap_external_toplevel_consts_6_localsplusnames_0._ascii.ob_base,
+ &_Py_ID(p),
+ &_Py_ID(path),
+ },
+ },
+};
+static
+ struct _PyCode_DEF(64)
+importlib__bootstrap_external_toplevel_consts_17_consts_1 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 32,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_1_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_external_toplevel_consts_17_consts_1_names._object.ob_base.ob_base,
+ .co_exceptiontable = & importlib__bootstrap_external_toplevel_consts_17_consts_1_exceptiontable.ob_base.ob_base,
+ .co_flags = 51,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 7 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 134,
+ .co_nlocalsplus = 3,
+ .co_nlocals = 2,
+ .co_ncellvars = 0,
+ .co_nfreevars = 1,
+ .co_version = 108,
+ .co_localsplusnames = & importlib__bootstrap_external_toplevel_consts_17_consts_1_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_7_consts_1_consts_1_consts_4_localspluskinds.ob_base.ob_base,
+ .co_filename = & importlib__bootstrap_external_toplevel_consts_6_filename._ascii.ob_base,
+ .co_name = &_Py_STR(anon_genexpr),
+ .co_qualname = & importlib__bootstrap_external_toplevel_consts_17_consts_1_qualname._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_external_toplevel_consts_17_consts_1_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x95\x01\x4b\x00\x01\x00\x97\x00\x7c\x00\x5d\x15\x00\x00\x7d\x01\x89\x02\x6a\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\xab\x01\x00\x00\x00\x00\x00\x00\x96\x01\x97\x01\x01\x00\x8c\x17\x04\x00\x79\x00\xad\x03\x77\x01",
+ ._co_firsttraceable = 3,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[6];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_17_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 6,
+ },
+ .ob_item = {
+ & importlib__bootstrap_external_toplevel_consts_17_consts_0._ascii.ob_base,
+ & importlib__bootstrap_external_toplevel_consts_17_consts_1.ob_base.ob_base,
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 0],
+ &_Py_STR(empty),
+ Py_None,
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 1],
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[4];
+ }
+const_str_max = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 3,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "max",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_17_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & const_str_max._ascii.ob_base,
+ & const_str_path_separators._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[12];
+ }
+const_str__path_split = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 11,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_path_split",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[63];
+ }
+importlib__bootstrap_external_toplevel_consts_17_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 62,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\xf8\x80\x00\xe4\x08\x0b\xd3\x0b\x33\xa4\x3f\xd4\x0b\x33\xd3\x08\x33\x80\x41\xd8\x07\x08\x88\x31\x82\x75\xd8\x0f\x11\x90\x34\x88\x78\x88\x0f\xd8\x0b\x0f\x90\x02\x90\x11\x88\x38\x90\x54\x98\x21\x98\x61\x99\x25\x98\x26\x90\x5c\xd0\x0b\x21\xd0\x04\x21",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_17_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ &_Py_ID(path),
+ (PyObject *)&_Py_SINGLETON(strings).ascii[105],
+ },
+ },
+};
+static
+ struct _PyCode_DEF(96)
+importlib__bootstrap_external_toplevel_consts_17 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 48,
+ },
+ .co_consts = & importlib__bootstrap_external_toplevel_consts_17_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_external_toplevel_consts_17_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 6 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 132,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 2,
+ .co_ncellvars = 1,
+ .co_nfreevars = 0,
+ .co_version = 109,
+ .co_localsplusnames = & importlib__bootstrap_external_toplevel_consts_17_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_26_localspluskinds.ob_base.ob_base,
+ .co_filename = & importlib__bootstrap_external_toplevel_consts_6_filename._ascii.ob_base,
+ .co_name = & const_str__path_split._ascii.ob_base,
+ .co_qualname = & const_str__path_split._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_external_toplevel_consts_17_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x87\x00\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x88\x00\x66\x01\x64\x01\x84\x08\x74\x02\x00\x00\x00\x00\x00\x00\x00\x00\x44\x00\xab\x00\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x01\x7c\x01\x64\x02\x6b\x02\x00\x00\x72\x04\x64\x03\x89\x00\x66\x02\x53\x00\x89\x00\x64\x04\x7c\x01\x1a\x00\x89\x00\x7c\x01\x64\x05\x7a\x00\x00\x00\x64\x04\x1a\x00\x66\x02\x53\x00",
+ ._co_firsttraceable = 1,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[127];
+ }
+importlib__bootstrap_external_toplevel_consts_18_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 126,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x53\x74\x61\x74\x20\x74\x68\x65\x20\x70\x61\x74\x68\x2e\x0a\x0a\x20\x20\x20\x20\x4d\x61\x64\x65\x20\x61\x20\x73\x65\x70\x61\x72\x61\x74\x65\x20\x66\x75\x6e\x63\x74\x69\x6f\x6e\x20\x74\x6f\x20\x6d\x61\x6b\x65\x20\x69\x74\x20\x65\x61\x73\x69\x65\x72\x20\x74\x6f\x20\x6f\x76\x65\x72\x72\x69\x64\x65\x20\x69\x6e\x20\x65\x78\x70\x65\x72\x69\x6d\x65\x6e\x74\x73\x0a\x20\x20\x20\x20\x28\x65\x2e\x67\x2e\x20\x63\x61\x63\x68\x65\x20\x73\x74\x61\x74\x20\x72\x65\x73\x75\x6c\x74\x73\x29\x2e\x0a\x0a\x20\x20\x20\x20",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_18_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & importlib__bootstrap_external_toplevel_consts_18_consts_0._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[5];
+ }
+const_str_stat = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 4,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "stat",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_18_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & const_str__os._ascii.ob_base,
+ & const_str_stat._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[11];
+ }
+const_str__path_stat = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 10,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_path_stat",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[19];
+ }
+importlib__bootstrap_external_toplevel_consts_18_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 18,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf4\x0e\x00\x0c\x0f\x8f\x38\x89\x38\x90\x44\x8b\x3e\xd0\x04\x19",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_18_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ &_Py_ID(path),
+ },
+ },
+};
+static
+ struct _PyCode_DEF(44)
+importlib__bootstrap_external_toplevel_consts_18 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 22,
+ },
+ .co_consts = & importlib__bootstrap_external_toplevel_consts_18_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_external_toplevel_consts_18_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 4 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 3,
+ .co_firstlineno = 140,
+ .co_nlocalsplus = 1,
+ .co_nlocals = 1,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 110,
+ .co_localsplusnames = & importlib__bootstrap_external_toplevel_consts_18_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_characters[32]),
+ .co_filename = & importlib__bootstrap_external_toplevel_consts_6_filename._ascii.ob_base,
+ .co_name = & const_str__path_stat._ascii.ob_base,
+ .co_qualname = & const_str__path_stat._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_external_toplevel_consts_18_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[50];
+ }
+importlib__bootstrap_external_toplevel_consts_19_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 49,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Test whether the path is the specified mode type.",
+};
+#if PYLONG_BITS_IN_DIGIT == 15
+static
+ struct {
+ PyObject ob_base;
+ uintptr_t lv_tag;
+ digit ob_digit[2];
+ }
+const_int_61440 = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyLong_Type,
+ },
+ .lv_tag = TAG_FROM_SIGN_AND_SIZE(1, 2),
+ .ob_digit = { 28672, 1 },
+};
+#elif PYLONG_BITS_IN_DIGIT == 30
+static
+ struct {
+ PyObject ob_base;
+ uintptr_t lv_tag;
+ digit ob_digit[1];
+ }
+const_int_61440 = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyLong_Type,
+ },
+ .lv_tag = TAG_FROM_SIGN_AND_SIZE(1, 1),
+ .ob_digit = { 61440 },
+};
+#else
+#error "PYLONG_BITS_IN_DIGIT should be 15 or 30"
+#endif
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_19_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ & importlib__bootstrap_external_toplevel_consts_19_consts_0._ascii.ob_base,
+ Py_False,
+ & const_int_61440.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[8];
+ }
+const_str_OSError = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 7,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "OSError",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[8];
+ }
+const_str_st_mode = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 7,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "st_mode",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_19_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ & const_str__path_stat._ascii.ob_base,
+ & const_str_OSError._ascii.ob_base,
+ & const_str_st_mode._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[19];
+ }
+const_str__path_is_mode_type = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 18,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_path_is_mode_type",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[62];
+ }
+importlib__bootstrap_external_toplevel_consts_19_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 61,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf0\x04\x03\x05\x15\xdc\x14\x1e\x98\x74\xd3\x14\x24\x88\x09\xf0\x06\x00\x0d\x16\xd7\x0c\x1d\xd1\x0c\x1d\xa0\x08\xd1\x0c\x28\xa8\x54\xd1\x0b\x31\xd0\x04\x31\xf8\xf4\x05\x00\x0c\x13\xf2\x00\x01\x05\x15\xd9\x0f\x14\xf0\x03\x01\x05\x15\xfa",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[13];
+ }
+importlib__bootstrap_external_toplevel_consts_19_exceptiontable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 12,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x82\x0b\x1f\x00\x9f\x09\x2b\x03\xaa\x01\x2b\x03",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[10];
+ }
+const_str_stat_info = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 9,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "stat_info",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_19_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ &_Py_ID(path),
+ &_Py_ID(mode),
+ & const_str_stat_info._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(92)
+importlib__bootstrap_external_toplevel_consts_19 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 46,
+ },
+ .co_consts = & importlib__bootstrap_external_toplevel_consts_19_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_external_toplevel_consts_19_names._object.ob_base.ob_base,
+ .co_exceptiontable = & importlib__bootstrap_external_toplevel_consts_19_exceptiontable.ob_base.ob_base,
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 7 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 150,
+ .co_nlocalsplus = 3,
+ .co_nlocals = 3,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 111,
+ .co_localsplusnames = & importlib__bootstrap_external_toplevel_consts_19_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_3_localspluskinds.ob_base.ob_base,
+ .co_filename = & importlib__bootstrap_external_toplevel_consts_6_filename._ascii.ob_base,
+ .co_name = & const_str__path_is_mode_type._ascii.ob_base,
+ .co_qualname = & const_str__path_is_mode_type._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_external_toplevel_consts_19_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x09\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x02\x7c\x02\x6a\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x02\x7a\x01\x00\x00\x7c\x01\x6b\x28\x00\x00\x53\x00\x23\x00\x74\x02\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x72\x03\x01\x00\x59\x00\x79\x01\x77\x00\x78\x03\x59\x00\x77\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[32];
+ }
+importlib__bootstrap_external_toplevel_consts_20_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 31,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Replacement for os.path.isfile.",
+};
+#if PYLONG_BITS_IN_DIGIT == 15
+static
+ struct {
+ PyObject ob_base;
+ uintptr_t lv_tag;
+ digit ob_digit[2];
+ }
+const_int_32768 = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyLong_Type,
+ },
+ .lv_tag = TAG_FROM_SIGN_AND_SIZE(1, 2),
+ .ob_digit = { 0, 1 },
+};
+#elif PYLONG_BITS_IN_DIGIT == 30
+static
+ struct {
+ PyObject ob_base;
+ uintptr_t lv_tag;
+ digit ob_digit[1];
+ }
+const_int_32768 = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyLong_Type,
+ },
+ .lv_tag = TAG_FROM_SIGN_AND_SIZE(1, 1),
+ .ob_digit = { 32768 },
+};
+#else
+#error "PYLONG_BITS_IN_DIGIT should be 15 or 30"
+#endif
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_20_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & importlib__bootstrap_external_toplevel_consts_20_consts_0._ascii.ob_base,
+ & const_int_32768.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_20_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & const_str__path_is_mode_type._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[13];
+ }
+const_str__path_isfile = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 12,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_path_isfile",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[16];
+ }
+importlib__bootstrap_external_toplevel_consts_20_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 15,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xe4\x0b\x1d\x98\x64\xa0\x48\xd3\x0b\x2d\xd0\x04\x2d",
+};
+static
+ struct _PyCode_DEF(26)
+importlib__bootstrap_external_toplevel_consts_20 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 13,
+ },
+ .co_consts = & importlib__bootstrap_external_toplevel_consts_20_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_external_toplevel_consts_20_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 5 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 159,
+ .co_nlocalsplus = 1,
+ .co_nlocals = 1,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 112,
+ .co_localsplusnames = & importlib__bootstrap_external_toplevel_consts_18_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_characters[32]),
+ .co_filename = & importlib__bootstrap_external_toplevel_consts_6_filename._ascii.ob_base,
+ .co_name = & const_str__path_isfile._ascii.ob_base,
+ .co_qualname = & const_str__path_isfile._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_external_toplevel_consts_20_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x64\x01\xab\x02\x00\x00\x00\x00\x00\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[31];
+ }
+importlib__bootstrap_external_toplevel_consts_21_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 30,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Replacement for os.path.isdir.",
+};
+static
+ struct {
+ PyObject ob_base;
+ uintptr_t lv_tag;
+ digit ob_digit[1];
+ }
+const_int_16384 = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyLong_Type,
+ },
+ .lv_tag = TAG_FROM_SIGN_AND_SIZE(1, 1),
+ .ob_digit = { 16384 },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_21_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & importlib__bootstrap_external_toplevel_consts_21_consts_0._ascii.ob_base,
+ & const_int_16384.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[7];
+ }
+const_str_getcwd = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 6,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "getcwd",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_21_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ & const_str__os._ascii.ob_base,
+ & const_str_getcwd._ascii.ob_base,
+ & const_str__path_is_mode_type._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[12];
+ }
+const_str__path_isdir = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 11,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_path_isdir",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[30];
+ }
+importlib__bootstrap_external_toplevel_consts_21_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 29,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xe1\x0b\x0f\xdc\x0f\x12\x8f\x7a\x89\x7a\x8b\x7c\x88\x04\xdc\x0b\x1d\x98\x64\xa0\x48\xd3\x0b\x2d\xd0\x04\x2d",
+};
+static
+ struct _PyCode_DEF(70)
+importlib__bootstrap_external_toplevel_consts_21 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 35,
+ },
+ .co_consts = & importlib__bootstrap_external_toplevel_consts_21_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_external_toplevel_consts_21_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 5 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 164,
+ .co_nlocalsplus = 1,
+ .co_nlocals = 1,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 113,
+ .co_localsplusnames = & importlib__bootstrap_external_toplevel_consts_18_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_characters[32]),
+ .co_filename = & importlib__bootstrap_external_toplevel_consts_6_filename._ascii.ob_base,
+ .co_name = & const_str__path_isdir._ascii.ob_base,
+ .co_qualname = & const_str__path_isdir._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_external_toplevel_consts_21_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x00\x73\x14\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x7d\x00\x74\x05\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x64\x01\xab\x02\x00\x00\x00\x00\x00\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[31];
+ }
+importlib__bootstrap_external_toplevel_consts_22_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 30,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Replacement for os.path.isabs.",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[3];
+ }
+importlib__bootstrap_external_toplevel_consts_22_consts_6 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 2,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\\\\",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[7];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_22_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 7,
+ },
+ .ob_item = {
+ & importlib__bootstrap_external_toplevel_consts_22_consts_0._ascii.ob_base,
+ Py_False,
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 0],
+ (PyObject *)&_Py_SINGLETON(strings).ascii[47],
+ (PyObject *)&_Py_SINGLETON(strings).ascii[92],
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 1],
+ & importlib__bootstrap_external_toplevel_consts_22_consts_6._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[6];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_22_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 6,
+ },
+ .ob_item = {
+ & const_str__os._ascii.ob_base,
+ & const_str__path_splitroot._ascii.ob_base,
+ &_Py_ID(replace),
+ &_Py_ID(len),
+ & const_str_startswith._ascii.ob_base,
+ & const_str_endswith._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[12];
+ }
+const_str__path_isabs = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 11,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_path_isabs",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[85];
+ }
+importlib__bootstrap_external_toplevel_consts_22_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 84,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xe1\x0f\x13\xd8\x13\x18\xdc\x0f\x12\xd7\x0f\x22\xd1\x0f\x22\xa0\x34\xd3\x0f\x28\xa8\x11\xd1\x0f\x2b\xd7\x0f\x33\xd1\x0f\x33\xb0\x43\xb8\x14\xd3\x0f\x3e\x88\x04\xdc\x0f\x12\x90\x34\x8b\x79\x98\x31\x89\x7d\xd2\x0f\x51\xa0\x24\xa7\x2f\xa1\x2f\xb0\x26\xd3\x22\x39\xd2\x22\x50\xb8\x54\xbf\x5d\xb9\x5d\xc8\x34\xd3\x3d\x50\xd0\x08\x51",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_22_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ &_Py_ID(path),
+ & const_str_root._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(192)
+importlib__bootstrap_external_toplevel_consts_22 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 96,
+ },
+ .co_consts = & importlib__bootstrap_external_toplevel_consts_22_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_external_toplevel_consts_22_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 6 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 172,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 2,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 114,
+ .co_localsplusnames = & importlib__bootstrap_external_toplevel_consts_22_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_14_consts_2_localspluskinds.ob_base.ob_base,
+ .co_filename = & importlib__bootstrap_external_toplevel_consts_6_filename._ascii.ob_base,
+ .co_name = & const_str__path_isabs._ascii.ob_base,
+ .co_qualname = & const_str__path_isabs._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_external_toplevel_consts_22_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x00\x73\x01\x79\x01\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x64\x02\x19\x00\x00\x00\x6a\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x03\x64\x04\xab\x02\x00\x00\x00\x00\x00\x00\x7d\x01\x74\x07\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\xab\x01\x00\x00\x00\x00\x00\x00\x64\x05\x6b\x44\x00\x00\x78\x01\x72\x24\x01\x00\x7c\x01\x6a\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x06\xab\x01\x00\x00\x00\x00\x00\x00\x78\x01\x73\x11\x01\x00\x7c\x01\x6a\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x04\xab\x01\x00\x00\x00\x00\x00\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_23_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & importlib__bootstrap_external_toplevel_consts_22_consts_0._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_23_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & const_str_startswith._ascii.ob_base,
+ & const_str_path_separators._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[18];
+ }
+importlib__bootstrap_external_toplevel_consts_23_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 17,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xe0\x0f\x13\x8f\x7f\x89\x7f\x9c\x7f\xd3\x0f\x2f\xd0\x08\x2f",
+};
+static
+ struct _PyCode_DEF(44)
+importlib__bootstrap_external_toplevel_consts_23 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 22,
+ },
+ .co_consts = & importlib__bootstrap_external_toplevel_consts_23_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_external_toplevel_consts_23_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 4 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 3,
+ .co_firstlineno = 180,
+ .co_nlocalsplus = 1,
+ .co_nlocals = 1,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 115,
+ .co_localsplusnames = & importlib__bootstrap_external_toplevel_consts_18_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_characters[32]),
+ .co_filename = & importlib__bootstrap_external_toplevel_consts_6_filename._ascii.ob_base,
+ .co_name = & const_str__path_isabs._ascii.ob_base,
+ .co_qualname = & const_str__path_isabs._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_external_toplevel_consts_23_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x00\x6a\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x74\x02\x00\x00\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[33];
+ }
+importlib__bootstrap_external_toplevel_consts_24_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 32,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Replacement for os.path.abspath.",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_24_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & importlib__bootstrap_external_toplevel_consts_24_consts_0._ascii.ob_base,
+ &_Py_STR(dot),
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[13];
+ }
+const_str_removeprefix = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 12,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "removeprefix",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[6];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_24_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 6,
+ },
+ .ob_item = {
+ & const_str__path_isabs._ascii.ob_base,
+ & const_str_path_separators._ascii.ob_base,
+ & const_str_removeprefix._ascii.ob_base,
+ & const_str__path_join._ascii.ob_base,
+ & const_str__os._ascii.ob_base,
+ & const_str_getcwd._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[14];
+ }
+const_str__path_abspath = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 13,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_path_abspath",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[72];
+ }
+importlib__bootstrap_external_toplevel_consts_24_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 71,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xe4\x0b\x16\x90\x74\xd4\x0b\x1c\xdc\x13\x22\xf2\x00\x01\x09\x30\x88\x43\xd8\x13\x17\xd7\x13\x24\xd1\x13\x24\xa0\x71\xa8\x13\xa8\x05\xa0\x59\xd3\x13\x2f\x89\x44\xf0\x03\x01\x09\x30\xe4\x0f\x19\x9c\x23\x9f\x2a\x99\x2a\x9b\x2c\xa8\x04\xd3\x0f\x2d\xd0\x08\x2d\xe0\x0f\x13\x88\x0b",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_24_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ &_Py_ID(path),
+ &_Py_ID(sep),
+ },
+ },
+};
+static
+ struct _PyCode_DEF(150)
+importlib__bootstrap_external_toplevel_consts_24 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 75,
+ },
+ .co_consts = & importlib__bootstrap_external_toplevel_consts_24_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_external_toplevel_consts_24_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 7 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 5,
+ .co_firstlineno = 185,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 2,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 116,
+ .co_localsplusnames = & importlib__bootstrap_external_toplevel_consts_24_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_14_consts_2_localspluskinds.ob_base.ob_base,
+ .co_filename = & importlib__bootstrap_external_toplevel_consts_6_filename._ascii.ob_base,
+ .co_name = & const_str__path_abspath._ascii.ob_base,
+ .co_qualname = & const_str__path_abspath._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_external_toplevel_consts_24_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x73\x3d\x74\x02\x00\x00\x00\x00\x00\x00\x00\x00\x44\x00\x5d\x16\x00\x00\x7d\x01\x7c\x00\x6a\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x01\x7c\x01\x9b\x00\x9d\x02\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x00\x8c\x18\x04\x00\x74\x07\x00\x00\x00\x00\x00\x00\x00\x00\x74\x09\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x02\x00\x00\x00\x00\x00\x00\x53\x00\x7c\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[163];
+ }
+importlib__bootstrap_external_toplevel_consts_25_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 162,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x42\x65\x73\x74\x2d\x65\x66\x66\x6f\x72\x74\x20\x66\x75\x6e\x63\x74\x69\x6f\x6e\x20\x74\x6f\x20\x77\x72\x69\x74\x65\x20\x64\x61\x74\x61\x20\x74\x6f\x20\x61\x20\x70\x61\x74\x68\x20\x61\x74\x6f\x6d\x69\x63\x61\x6c\x6c\x79\x2e\x0a\x20\x20\x20\x20\x42\x65\x20\x70\x72\x65\x70\x61\x72\x65\x64\x20\x74\x6f\x20\x68\x61\x6e\x64\x6c\x65\x20\x61\x20\x46\x69\x6c\x65\x45\x78\x69\x73\x74\x73\x45\x72\x72\x6f\x72\x20\x69\x66\x20\x63\x6f\x6e\x63\x75\x72\x72\x65\x6e\x74\x20\x77\x72\x69\x74\x69\x6e\x67\x20\x6f\x66\x20\x74\x68\x65\x0a\x20\x20\x20\x20\x74\x65\x6d\x70\x6f\x72\x61\x72\x79\x20\x66\x69\x6c\x65\x20\x69\x73\x20\x61\x74\x74\x65\x6d\x70\x74\x65\x64\x2e",
+};
+static
+ struct {
+ PyObject ob_base;
+ uintptr_t lv_tag;
+ digit ob_digit[1];
+ }
+const_int_438 = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyLong_Type,
+ },
+ .lv_tag = TAG_FROM_SIGN_AND_SIZE(1, 1),
+ .ob_digit = { 438 },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[3];
+ }
+const_str_wb = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 2,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "wb",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[5];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_25_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 5,
+ },
+ .ob_item = {
+ & importlib__bootstrap_external_toplevel_consts_25_consts_0._ascii.ob_base,
+ &_Py_STR(dot),
+ & const_int_438.ob_base,
+ & const_str_wb._ascii.ob_base,
+ Py_None,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[7];
+ }
+const_str_O_EXCL = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 6,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "O_EXCL",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[8];
+ }
+const_str_O_CREAT = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 7,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "O_CREAT",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[9];
+ }
+const_str_O_WRONLY = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 8,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "O_WRONLY",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[7];
+ }
+const_str_FileIO = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 6,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "FileIO",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[12];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_25_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 12,
+ },
+ .ob_item = {
+ &_Py_ID(id),
+ & const_str__os._ascii.ob_base,
+ &_Py_ID(open),
+ & const_str_O_EXCL._ascii.ob_base,
+ & const_str_O_CREAT._ascii.ob_base,
+ & const_str_O_WRONLY._ascii.ob_base,
+ &_Py_ID(_io),
+ & const_str_FileIO._ascii.ob_base,
+ &_Py_ID(write),
+ &_Py_ID(replace),
+ & const_str_OSError._ascii.ob_base,
+ &_Py_ID(unlink),
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[14];
+ }
+const_str__write_atomic = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 13,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_write_atomic",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[204];
+ }
+importlib__bootstrap_external_toplevel_consts_25_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 203,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf0\x0a\x00\x13\x17\x90\x16\x90\x71\x9c\x12\x98\x44\x9b\x18\x98\x0a\xd0\x0f\x23\x80\x48\xdc\x09\x0c\x8f\x18\x89\x18\x90\x28\xdc\x12\x15\x97\x2a\x91\x2a\x9c\x73\x9f\x7b\x99\x7b\xd1\x12\x2a\xac\x53\xaf\x5c\xa9\x5c\xd1\x12\x39\xb8\x34\xc0\x25\xb9\x3c\xf3\x03\x01\x0a\x49\x01\x80\x42\xf0\x04\x0b\x05\x0e\xf4\x06\x00\x0e\x11\x8f\x5a\x89\x5a\x98\x02\x98\x44\xd3\x0d\x21\xf0\x00\x01\x09\x1d\xa0\x54\xd8\x0c\x10\x8f\x4a\x89\x4a\x90\x74\xd4\x0c\x1c\xf7\x03\x01\x09\x1d\xe4\x08\x0b\x8f\x0b\x89\x0b\x90\x48\x98\x64\xd5\x08\x23\xf7\x05\x01\x09\x1d\xf0\x00\x01\x09\x1d\xfb\xf4\x06\x00\x0c\x13\xf2\x00\x05\x05\x0e\xf0\x02\x03\x09\x11\xdc\x0c\x0f\x8f\x4a\x89\x4a\x90\x78\xd4\x0c\x20\xf0\x06\x00\x09\x0e\xf8\xf4\x05\x00\x10\x17\xf2\x00\x01\x09\x11\xd8\x0c\x10\xd8\x08\x0d\xf0\x05\x01\x09\x11\xfa\xf0\x07\x05\x05\x0e\xfa",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[73];
+ }
+importlib__bootstrap_external_toplevel_consts_25_exceptiontable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 72,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\xc1\x1c\x16\x42\x2f\x00\xc1\x32\x12\x42\x23\x03\xc2\x04\x1e\x42\x2f\x00\xc2\x23\x05\x42\x2c\x07\xc2\x28\x07\x42\x2f\x00\xc2\x2f\x09\x43\x1f\x03\xc2\x39\x15\x43\x0f\x02\xc3\x0e\x01\x43\x1f\x03\xc3\x0f\x09\x43\x1b\x05\xc3\x18\x02\x43\x1f\x03\xc3\x1a\x01\x43\x1b\x05\xc3\x1b\x04\x43\x1f\x03",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[9];
+ }
+const_str_path_tmp = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 8,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "path_tmp",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[6];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_25_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 6,
+ },
+ .ob_item = {
+ &_Py_ID(path),
+ &_Py_ID(data),
+ &_Py_ID(mode),
+ & const_str_path_tmp._ascii.ob_base,
+ &_Py_ID(fd),
+ &_Py_ID(file),
+ },
+ },
+};
+static
+ struct _PyCode_DEF(452)
+importlib__bootstrap_external_toplevel_consts_25 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 226,
+ },
+ .co_consts = & importlib__bootstrap_external_toplevel_consts_25_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_external_toplevel_consts_25_names._object.ob_base.ob_base,
+ .co_exceptiontable = & importlib__bootstrap_external_toplevel_consts_25_exceptiontable.ob_base.ob_base,
+ .co_flags = 3,
+ .co_argcount = 3,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 12 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 6,
+ .co_firstlineno = 195,
+ .co_nlocalsplus = 6,
+ .co_nlocals = 6,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 117,
+ .co_localsplusnames = & importlib__bootstrap_external_toplevel_consts_25_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_30_consts_4_localspluskinds.ob_base.ob_base,
+ .co_filename = & importlib__bootstrap_external_toplevel_consts_6_filename._ascii.ob_base,
+ .co_name = & const_str__write_atomic._ascii.ob_base,
+ .co_qualname = & const_str__write_atomic._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_external_toplevel_consts_25_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x00\x9b\x00\x64\x01\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x9b\x00\x9d\x03\x7d\x03\x74\x03\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x03\x74\x02\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x74\x02\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7a\x07\x00\x00\x74\x02\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7a\x07\x00\x00\x7c\x02\x64\x02\x7a\x01\x00\x00\xab\x03\x00\x00\x00\x00\x00\x00\x7d\x04\x09\x00\x74\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x04\x64\x03\xab\x02\x00\x00\x00\x00\x00\x00\x35\x00\x7d\x05\x7c\x05\x6a\x11\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x64\x04\x64\x04\x64\x04\xab\x02\x00\x00\x00\x00\x00\x00\x01\x00\x74\x03\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x03\x7c\x00\xab\x02\x00\x00\x00\x00\x00\x00\x01\x00\x79\x04\x23\x00\x31\x00\x73\x01\x77\x02\x01\x00\x59\x00\x01\x00\x01\x00\x8c\x20\x78\x03\x59\x00\x77\x01\x23\x00\x74\x14\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x72\x27\x01\x00\x09\x00\x74\x03\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x16\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x03\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x82\x00\x23\x00\x74\x14\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x72\x03\x01\x00\x59\x00\x82\x00\x77\x00\x78\x03\x59\x00\x77\x01\x77\x00\x78\x03\x59\x00\x77\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyObject ob_base;
+ uintptr_t lv_tag;
+ digit ob_digit[1];
+ }
+const_int_3531 = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyLong_Type,
+ },
+ .lv_tag = TAG_FROM_SIGN_AND_SIZE(1, 1),
+ .ob_digit = { 3531 },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[3];
+ }
+importlib__bootstrap_external_toplevel_consts_29 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x0d\x0a",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[12];
+ }
+const_str___pycache__ = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 11,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "__pycache__",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[5];
+ }
+importlib__bootstrap_external_toplevel_consts_31 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 4,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "opt-",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[5];
+ }
+importlib__bootstrap_external_toplevel_consts_33 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 4,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = ".pyw",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[5];
+ }
+importlib__bootstrap_external_toplevel_consts_34 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 4,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = ".pyc",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[13];
+ }
+const_str_optimization = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 12,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "optimization",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_35 = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & const_str_optimization._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[767];
+ }
+importlib__bootstrap_external_toplevel_consts_36_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 766,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x47\x69\x76\x65\x6e\x20\x74\x68\x65\x20\x70\x61\x74\x68\x20\x74\x6f\x20\x61\x20\x2e\x70\x79\x20\x66\x69\x6c\x65\x2c\x20\x72\x65\x74\x75\x72\x6e\x20\x74\x68\x65\x20\x70\x61\x74\x68\x20\x74\x6f\x20\x69\x74\x73\x20\x2e\x70\x79\x63\x20\x66\x69\x6c\x65\x2e\x0a\x0a\x20\x20\x20\x20\x54\x68\x65\x20\x2e\x70\x79\x20\x66\x69\x6c\x65\x20\x64\x6f\x65\x73\x20\x6e\x6f\x74\x20\x6e\x65\x65\x64\x20\x74\x6f\x20\x65\x78\x69\x73\x74\x3b\x20\x74\x68\x69\x73\x20\x73\x69\x6d\x70\x6c\x79\x20\x72\x65\x74\x75\x72\x6e\x73\x20\x74\x68\x65\x20\x70\x61\x74\x68\x20\x74\x6f\x20\x74\x68\x65\x0a\x20\x20\x20\x20\x2e\x70\x79\x63\x20\x66\x69\x6c\x65\x20\x63\x61\x6c\x63\x75\x6c\x61\x74\x65\x64\x20\x61\x73\x20\x69\x66\x20\x74\x68\x65\x20\x2e\x70\x79\x20\x66\x69\x6c\x65\x20\x77\x65\x72\x65\x20\x69\x6d\x70\x6f\x72\x74\x65\x64\x2e\x0a\x0a\x20\x20\x20\x20\x54\x68\x65\x20\x27\x6f\x70\x74\x69\x6d\x69\x7a\x61\x74\x69\x6f\x6e\x27\x20\x70\x61\x72\x61\x6d\x65\x74\x65\x72\x20\x63\x6f\x6e\x74\x72\x6f\x6c\x73\x20\x74\x68\x65\x20\x70\x72\x65\x73\x75\x6d\x65\x64\x20\x6f\x70\x74\x69\x6d\x69\x7a\x61\x74\x69\x6f\x6e\x20\x6c\x65\x76\x65\x6c\x20\x6f\x66\x0a\x20\x20\x20\x20\x74\x68\x65\x20\x62\x79\x74\x65\x63\x6f\x64\x65\x20\x66\x69\x6c\x65\x2e\x20\x49\x66\x20\x27\x6f\x70\x74\x69\x6d\x69\x7a\x61\x74\x69\x6f\x6e\x27\x20\x69\x73\x20\x6e\x6f\x74\x20\x4e\x6f\x6e\x65\x2c\x20\x74\x68\x65\x20\x73\x74\x72\x69\x6e\x67\x20\x72\x65\x70\x72\x65\x73\x65\x6e\x74\x61\x74\x69\x6f\x6e\x0a\x20\x20\x20\x20\x6f\x66\x20\x74\x68\x65\x20\x61\x72\x67\x75\x6d\x65\x6e\x74\x20\x69\x73\x20\x74\x61\x6b\x65\x6e\x20\x61\x6e\x64\x20\x76\x65\x72\x69\x66\x69\x65\x64\x20\x74\x6f\x20\x62\x65\x20\x61\x6c\x70\x68\x61\x6e\x75\x6d\x65\x72\x69\x63\x20\x28\x65\x6c\x73\x65\x20\x56\x61\x6c\x75\x65\x45\x72\x72\x6f\x72\x0a\x20\x20\x20\x20\x69\x73\x20\x72\x61\x69\x73\x65\x64\x29\x2e\x0a\x0a\x20\x20\x20\x20\x54\x68\x65\x20\x64\x65\x62\x75\x67\x5f\x6f\x76\x65\x72\x72\x69\x64\x65\x20\x70\x61\x72\x61\x6d\x65\x74\x65\x72\x20\x69\x73\x20\x64\x65\x70\x72\x65\x63\x61\x74\x65\x64\x2e\x20\x49\x66\x20\x64\x65\x62\x75\x67\x5f\x6f\x76\x65\x72\x72\x69\x64\x65\x20\x69\x73\x20\x6e\x6f\x74\x20\x4e\x6f\x6e\x65\x2c\x0a\x20\x20\x20\x20\x61\x20\x54\x72\x75\x65\x20\x76\x61\x6c\x75\x65\x20\x69\x73\x20\x74\x68\x65\x20\x73\x61\x6d\x65\x20\x61\x73\x20\x73\x65\x74\x74\x69\x6e\x67\x20\x27\x6f\x70\x74\x69\x6d\x69\x7a\x61\x74\x69\x6f\x6e\x27\x20\x74\x6f\x20\x74\x68\x65\x20\x65\x6d\x70\x74\x79\x20\x73\x74\x72\x69\x6e\x67\x0a\x20\x20\x20\x20\x77\x68\x69\x6c\x65\x20\x61\x20\x46\x61\x6c\x73\x65\x20\x76\x61\x6c\x75\x65\x20\x69\x73\x20\x65\x71\x75\x69\x76\x61\x6c\x65\x6e\x74\x20\x74\x6f\x20\x73\x65\x74\x74\x69\x6e\x67\x20\x27\x6f\x70\x74\x69\x6d\x69\x7a\x61\x74\x69\x6f\x6e\x27\x20\x74\x6f\x20\x27\x31\x27\x2e\x0a\x0a\x20\x20\x20\x20\x49\x66\x20\x73\x79\x73\x2e\x69\x6d\x70\x6c\x65\x6d\x65\x6e\x74\x61\x74\x69\x6f\x6e\x2e\x63\x61\x63\x68\x65\x5f\x74\x61\x67\x20\x69\x73\x20\x4e\x6f\x6e\x65\x20\x74\x68\x65\x6e\x20\x4e\x6f\x74\x49\x6d\x70\x6c\x65\x6d\x65\x6e\x74\x65\x64\x45\x72\x72\x6f\x72\x20\x69\x73\x20\x72\x61\x69\x73\x65\x64\x2e\x0a\x0a\x20\x20\x20\x20",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[71];
+ }
+importlib__bootstrap_external_toplevel_consts_36_consts_2 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 70,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "the debug_override parameter is deprecated; use 'optimization' instead",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[51];
+ }
+importlib__bootstrap_external_toplevel_consts_36_consts_3 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 50,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "debug_override or optimization must be set to None",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[37];
+ }
+importlib__bootstrap_external_toplevel_consts_36_consts_7 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 36,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "sys.implementation.cache_tag is None",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[21];
+ }
+importlib__bootstrap_external_toplevel_consts_36_consts_9 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 20,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = " is not alphanumeric",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[12];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_36_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 12,
+ },
+ .ob_item = {
+ & importlib__bootstrap_external_toplevel_consts_36_consts_0._ascii.ob_base,
+ Py_None,
+ & importlib__bootstrap_external_toplevel_consts_36_consts_2._ascii.ob_base,
+ & importlib__bootstrap_external_toplevel_consts_36_consts_3._ascii.ob_base,
+ &_Py_STR(empty),
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 1],
+ &_Py_STR(dot),
+ & importlib__bootstrap_external_toplevel_consts_36_consts_7._ascii.ob_base,
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 0],
+ & importlib__bootstrap_external_toplevel_consts_36_consts_9._ascii.ob_base,
+ (PyObject *)&_Py_SINGLETON(strings).ascii[58],
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 2],
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[7];
+ }
+const_str_fspath = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 6,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "fspath",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[10];
+ }
+const_str_cache_tag = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 9,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "cache_tag",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[8];
+ }
+const_str_isalnum = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 7,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "isalnum",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[5];
+ }
+const_str__OPT = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 4,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_OPT",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[18];
+ }
+const_str_BYTECODE_SUFFIXES = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 17,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "BYTECODE_SUFFIXES",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[15];
+ }
+const_str_pycache_prefix = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 14,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "pycache_prefix",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[7];
+ }
+const_str_lstrip = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 6,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "lstrip",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[9];
+ }
+const_str__PYCACHE = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 8,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_PYCACHE",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[26];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_36_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 26,
+ },
+ .ob_item = {
+ & const_str__warnings._ascii.ob_base,
+ & const_str_warn._ascii.ob_base,
+ & const_str_DeprecationWarning._ascii.ob_base,
+ & const_str_TypeError._ascii.ob_base,
+ & const_str__os._ascii.ob_base,
+ & const_str_fspath._ascii.ob_base,
+ & const_str__path_split._ascii.ob_base,
+ & const_str_rpartition._ascii.ob_base,
+ & const_str_sys._ascii.ob_base,
+ & const_str_implementation._ascii.ob_base,
+ & const_str_cache_tag._ascii.ob_base,
+ & const_str_NotImplementedError._ascii.ob_base,
+ &_Py_ID(join),
+ &_Py_ID(flags),
+ &_Py_ID(optimize),
+ & const_str_str._ascii.ob_base,
+ & const_str_isalnum._ascii.ob_base,
+ & const_str_ValueError._ascii.ob_base,
+ & const_str__OPT._ascii.ob_base,
+ & const_str_BYTECODE_SUFFIXES._ascii.ob_base,
+ & const_str_pycache_prefix._ascii.ob_base,
+ & const_str__path_abspath._ascii.ob_base,
+ & const_str_path_separators._ascii.ob_base,
+ & const_str__path_join._ascii.ob_base,
+ & const_str_lstrip._ascii.ob_base,
+ & const_str__PYCACHE._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[18];
+ }
+const_str_cache_from_source = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 17,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "cache_from_source",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[416];
+ }
+importlib__bootstrap_external_toplevel_consts_36_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 415,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf0\x24\x00\x08\x16\xd0\x07\x21\xdc\x08\x11\x8f\x0e\x89\x0e\xf0\x00\x01\x18\x30\xdc\x31\x43\xf4\x03\x01\x09\x45\x01\xe0\x0b\x17\xd0\x0b\x23\xd8\x16\x4a\x88\x47\xdc\x12\x1b\x98\x47\xd3\x12\x24\xd0\x0c\x24\xd9\x1d\x2b\x91\x72\xb0\x11\x88\x0c\xdc\x0b\x0e\x8f\x3a\x89\x3a\x90\x64\xd3\x0b\x1b\x80\x44\xdc\x11\x1c\x98\x54\xd3\x11\x22\x81\x4a\x80\x44\x88\x24\xd8\x16\x1a\x97\x6f\x91\x6f\xa0\x63\xd3\x16\x2a\x81\x4f\x80\x44\x88\x23\x88\x74\xdc\x0a\x0d\xd7\x0a\x1c\xd1\x0a\x1c\xd7\x0a\x26\xd1\x0a\x26\x80\x43\xd8\x07\x0a\x80\x7b\xdc\x0e\x21\xd0\x22\x48\xd3\x0e\x49\xd0\x08\x49\xd8\x16\x18\x97\x67\x91\x67\xa9\x04\xa1\x04\xb0\x24\xb8\x13\xb8\x63\xd0\x1e\x42\xd3\x16\x43\x80\x4f\xd8\x07\x13\xd0\x07\x1b\xdc\x0b\x0e\x8f\x39\x89\x39\xd7\x0b\x1d\xd1\x0b\x1d\xa0\x11\xd2\x0b\x22\xd8\x1b\x1d\x89\x4c\xe4\x1b\x1e\x9f\x39\x99\x39\xd7\x1b\x2d\xd1\x1b\x2d\x88\x4c\xdc\x13\x16\x90\x7c\xd3\x13\x24\x80\x4c\xd8\x07\x13\x90\x72\xd2\x07\x19\xd8\x0f\x1b\xd7\x0f\x23\xd1\x0f\x23\xd4\x0f\x25\xdc\x12\x1c\xa0\x0c\xd0\x1f\x2f\xd0\x2f\x43\xd0\x1d\x44\xd3\x12\x45\xd0\x0c\x45\xd8\x1d\x2c\xd0\x1c\x2d\xa8\x51\xac\x74\xa8\x66\xb0\x5c\xb0\x4e\xd0\x1a\x43\x88\x0f\xd8\x0f\x1e\xd4\x21\x32\xb0\x31\xd1\x21\x35\xd1\x0f\x35\x80\x48\xdc\x07\x0a\xd7\x07\x19\xd1\x07\x19\xd0\x07\x25\xf4\x12\x00\x10\x1d\x98\x54\xd3\x0f\x22\x88\x04\xf0\x0a\x00\x0c\x10\x90\x01\x89\x37\x90\x63\x8a\x3e\x98\x64\xa0\x31\x99\x67\xac\x5f\xd1\x1e\x3c\xd8\x13\x17\x98\x01\x98\x02\x90\x38\x88\x44\xf4\x08\x00\x10\x1a\xdc\x0c\x0f\xd7\x0c\x1e\xd1\x0c\x1e\xd8\x0c\x10\x8f\x4b\x89\x4b\x9c\x0f\xd3\x0c\x28\xd8\x0c\x14\xf3\x07\x04\x10\x0a\xf0\x00\x04\x09\x0a\xf4\x0a\x00\x0c\x16\x90\x64\x9c\x48\xa0\x68\xd3\x0b\x2f\xd0\x04\x2f",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[15];
+ }
+const_str_debug_override = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 14,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "debug_override",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[5];
+ }
+const_str_head = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 4,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "head",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[5];
+ }
+const_str_rest = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 4,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "rest",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[16];
+ }
+const_str_almost_filename = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 15,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "almost_filename",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[12];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_36_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 12,
+ },
+ .ob_item = {
+ &_Py_ID(path),
+ & const_str_debug_override._ascii.ob_base,
+ & const_str_optimization._ascii.ob_base,
+ &_Py_ID(message),
+ & const_str_head._ascii.ob_base,
+ & const_str_tail._ascii.ob_base,
+ &_Py_ID(base),
+ &_Py_ID(sep),
+ & const_str_rest._ascii.ob_base,
+ &_Py_ID(tag),
+ & const_str_almost_filename._ascii.ob_base,
+ &_Py_ID(filename),
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[13];
+ }
+importlib__bootstrap_external_toplevel_consts_36_localspluskinds = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 12,
+ },
+ .ob_shash = -1,
+ .ob_sval = " ",
+};
+static
+ struct _PyCode_DEF(828)
+importlib__bootstrap_external_toplevel_consts_36 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 414,
+ },
+ .co_consts = & importlib__bootstrap_external_toplevel_consts_36_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_external_toplevel_consts_36_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 1,
+ .co_framesize = 18 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 6,
+ .co_firstlineno = 482,
+ .co_nlocalsplus = 12,
+ .co_nlocals = 12,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 118,
+ .co_localsplusnames = & importlib__bootstrap_external_toplevel_consts_36_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_external_toplevel_consts_36_localspluskinds.ob_base.ob_base,
+ .co_filename = & importlib__bootstrap_external_toplevel_consts_6_filename._ascii.ob_base,
+ .co_name = & const_str_cache_from_source._ascii.ob_base,
+ .co_qualname = & const_str_cache_from_source._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_external_toplevel_consts_36_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x01\x81\x2f\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x02\x74\x04\x00\x00\x00\x00\x00\x00\x00\x00\xab\x02\x00\x00\x00\x00\x00\x00\x01\x00\x7c\x02\x81\x0d\x64\x03\x7d\x03\x74\x07\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x03\xab\x01\x00\x00\x00\x00\x00\x00\x82\x01\x7c\x01\x72\x02\x64\x04\x6e\x01\x64\x05\x7d\x02\x74\x09\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x00\x74\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x5c\x02\x00\x00\x7d\x04\x7d\x05\x7c\x05\x6a\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x06\xab\x01\x00\x00\x00\x00\x00\x00\x5c\x03\x00\x00\x7d\x06\x7d\x07\x7d\x08\x74\x10\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x14\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7d\x09\x7c\x09\x80\x0b\x74\x17\x00\x00\x00\x00\x00\x00\x00\x00\x64\x07\xab\x01\x00\x00\x00\x00\x00\x00\x82\x01\x64\x04\x6a\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x06\x72\x02\x7c\x06\x6e\x01\x7c\x08\x7c\x07\x7c\x09\x67\x03\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x0a\x7c\x02\x80\x3a\x74\x10\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x1a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x1c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x08\x6b\x28\x00\x00\x72\x03\x64\x04\x7d\x02\x6e\x1a\x74\x10\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x1a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x1c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7d\x02\x74\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x02\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x02\x7c\x02\x64\x04\x6b\x37\x00\x00\x72\x2b\x7c\x02\x6a\x21\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x73\x0e\x74\x23\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x02\x9b\x02\x64\x09\x9d\x02\xab\x01\x00\x00\x00\x00\x00\x00\x82\x01\x7c\x0a\x9b\x00\x64\x06\x74\x24\x00\x00\x00\x00\x00\x00\x00\x00\x9b\x00\x7c\x02\x9b\x00\x9d\x04\x7d\x0a\x7c\x0a\x74\x26\x00\x00\x00\x00\x00\x00\x00\x00\x64\x08\x19\x00\x00\x00\x7a\x00\x00\x00\x7d\x0b\x74\x10\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x28\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x81\x51\x74\x2b\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x04\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x04\x7c\x04\x64\x05\x19\x00\x00\x00\x64\x0a\x6b\x28\x00\x00\x72\x10\x7c\x04\x64\x08\x19\x00\x00\x00\x74\x2c\x00\x00\x00\x00\x00\x00\x00\x00\x76\x01\x72\x05\x7c\x04\x64\x0b\x64\x01\x1a\x00\x7d\x04\x74\x2f\x00\x00\x00\x00\x00\x00\x00\x00\x74\x10\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x28\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x04\x6a\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x74\x2c\x00\x00\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7c\x0b\xab\x03\x00\x00\x00\x00\x00\x00\x53\x00\x74\x2f\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x04\x74\x32\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x0b\xab\x03\x00\x00\x00\x00\x00\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[367];
+ }
+importlib__bootstrap_external_toplevel_consts_37_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 366,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x47\x69\x76\x65\x6e\x20\x74\x68\x65\x20\x70\x61\x74\x68\x20\x74\x6f\x20\x61\x20\x2e\x70\x79\x63\x2e\x20\x66\x69\x6c\x65\x2c\x20\x72\x65\x74\x75\x72\x6e\x20\x74\x68\x65\x20\x70\x61\x74\x68\x20\x74\x6f\x20\x69\x74\x73\x20\x2e\x70\x79\x20\x66\x69\x6c\x65\x2e\x0a\x0a\x20\x20\x20\x20\x54\x68\x65\x20\x2e\x70\x79\x63\x20\x66\x69\x6c\x65\x20\x64\x6f\x65\x73\x20\x6e\x6f\x74\x20\x6e\x65\x65\x64\x20\x74\x6f\x20\x65\x78\x69\x73\x74\x3b\x20\x74\x68\x69\x73\x20\x73\x69\x6d\x70\x6c\x79\x20\x72\x65\x74\x75\x72\x6e\x73\x20\x74\x68\x65\x20\x70\x61\x74\x68\x20\x74\x6f\x0a\x20\x20\x20\x20\x74\x68\x65\x20\x2e\x70\x79\x20\x66\x69\x6c\x65\x20\x63\x61\x6c\x63\x75\x6c\x61\x74\x65\x64\x20\x74\x6f\x20\x63\x6f\x72\x72\x65\x73\x70\x6f\x6e\x64\x20\x74\x6f\x20\x74\x68\x65\x20\x2e\x70\x79\x63\x20\x66\x69\x6c\x65\x2e\x20\x20\x49\x66\x20\x70\x61\x74\x68\x20\x64\x6f\x65\x73\x0a\x20\x20\x20\x20\x6e\x6f\x74\x20\x63\x6f\x6e\x66\x6f\x72\x6d\x20\x74\x6f\x20\x50\x45\x50\x20\x33\x31\x34\x37\x2f\x34\x38\x38\x20\x66\x6f\x72\x6d\x61\x74\x2c\x20\x56\x61\x6c\x75\x65\x45\x72\x72\x6f\x72\x20\x77\x69\x6c\x6c\x20\x62\x65\x20\x72\x61\x69\x73\x65\x64\x2e\x20\x49\x66\x0a\x20\x20\x20\x20\x73\x79\x73\x2e\x69\x6d\x70\x6c\x65\x6d\x65\x6e\x74\x61\x74\x69\x6f\x6e\x2e\x63\x61\x63\x68\x65\x5f\x74\x61\x67\x20\x69\x73\x20\x4e\x6f\x6e\x65\x20\x74\x68\x65\x6e\x20\x4e\x6f\x74\x49\x6d\x70\x6c\x65\x6d\x65\x6e\x74\x65\x64\x45\x72\x72\x6f\x72\x20\x69\x73\x20\x72\x61\x69\x73\x65\x64\x2e\x0a\x0a\x20\x20\x20\x20",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[32];
+ }
+importlib__bootstrap_external_toplevel_consts_37_consts_5 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 31,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = " not bottom-level directory in ",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_37_consts_7 = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 2],
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 3],
+ },
+ },
+};
+// TODO: The above tuple should be a frozenset
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[30];
+ }
+importlib__bootstrap_external_toplevel_consts_37_consts_8 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 29,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "expected only 2 or 3 dots in ",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[54];
+ }
+importlib__bootstrap_external_toplevel_consts_37_consts_12 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 53,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "optimization portion of filename does not start with ",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[20];
+ }
+importlib__bootstrap_external_toplevel_consts_37_consts_13 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 19,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "optimization level ",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[30];
+ }
+importlib__bootstrap_external_toplevel_consts_37_consts_14 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 29,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = " is not an alphanumeric value",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[16];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_37_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 16,
+ },
+ .ob_item = {
+ & importlib__bootstrap_external_toplevel_consts_37_consts_0._ascii.ob_base,
+ Py_None,
+ & importlib__bootstrap_external_toplevel_consts_36_consts_7._ascii.ob_base,
+ Py_False,
+ Py_True,
+ & importlib__bootstrap_external_toplevel_consts_37_consts_5._ascii.ob_base,
+ &_Py_STR(dot),
+ & importlib__bootstrap_external_toplevel_consts_37_consts_7._object.ob_base.ob_base,
+ & importlib__bootstrap_external_toplevel_consts_37_consts_8._ascii.ob_base,
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 3],
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 2],
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + -2],
+ & importlib__bootstrap_external_toplevel_consts_37_consts_12._ascii.ob_base,
+ & importlib__bootstrap_external_toplevel_consts_37_consts_13._ascii.ob_base,
+ & importlib__bootstrap_external_toplevel_consts_37_consts_14._ascii.ob_base,
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 0],
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[16];
+ }
+const_str_SOURCE_SUFFIXES = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 15,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "SOURCE_SUFFIXES",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[22];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_37_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 22,
+ },
+ .ob_item = {
+ & const_str_sys._ascii.ob_base,
+ & const_str_implementation._ascii.ob_base,
+ & const_str_cache_tag._ascii.ob_base,
+ & const_str_NotImplementedError._ascii.ob_base,
+ & const_str__os._ascii.ob_base,
+ & const_str_fspath._ascii.ob_base,
+ & const_str__path_split._ascii.ob_base,
+ & const_str_pycache_prefix._ascii.ob_base,
+ & const_str_rstrip._ascii.ob_base,
+ & const_str_path_separators._ascii.ob_base,
+ & const_str_startswith._ascii.ob_base,
+ & const_str_path_sep._ascii.ob_base,
+ &_Py_ID(len),
+ & const_str__PYCACHE._ascii.ob_base,
+ & const_str_ValueError._ascii.ob_base,
+ &_Py_ID(count),
+ & const_str_rsplit._ascii.ob_base,
+ & const_str__OPT._ascii.ob_base,
+ & const_str_isalnum._ascii.ob_base,
+ & const_str_partition._ascii.ob_base,
+ & const_str__path_join._ascii.ob_base,
+ & const_str_SOURCE_SUFFIXES._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[18];
+ }
+const_str_source_from_cache = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 17,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "source_from_cache",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[422];
+ }
+importlib__bootstrap_external_toplevel_consts_37_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 421,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf4\x12\x00\x08\x0b\xd7\x07\x19\xd1\x07\x19\xd7\x07\x23\xd1\x07\x23\xd0\x07\x2b\xdc\x0e\x21\xd0\x22\x48\xd3\x0e\x49\xd0\x08\x49\xdc\x0b\x0e\x8f\x3a\x89\x3a\x90\x64\xd3\x0b\x1b\x80\x44\xdc\x1d\x28\xa8\x14\xd3\x1d\x2e\xd1\x04\x1a\x80\x44\xd0\x0a\x1a\xd8\x1e\x23\xd0\x04\x1b\xdc\x07\x0a\xd7\x07\x19\xd1\x07\x19\xd0\x07\x25\xdc\x18\x1b\xd7\x18\x2a\xd1\x18\x2a\xd7\x18\x31\xd1\x18\x31\xb4\x2f\xd3\x18\x42\x88\x0d\xd8\x0b\x0f\x8f\x3f\x89\x3f\x98\x3d\xac\x38\xd1\x1b\x33\xd4\x0b\x34\xd8\x13\x17\x9c\x03\x98\x4d\xd3\x18\x2a\xd0\x18\x2b\xd0\x13\x2c\x88\x44\xd8\x26\x2a\xd0\x0c\x23\xd9\x0b\x22\xdc\x18\x23\xa0\x44\xd3\x18\x29\x89\x0d\x88\x04\x88\x67\xd8\x0b\x12\x94\x68\xd2\x0b\x1e\xdc\x12\x1c\xa4\x08\x98\x7a\xd0\x29\x48\xd8\x20\x24\x98\x78\xf0\x03\x01\x1e\x29\xf3\x00\x01\x13\x2a\xf0\x00\x01\x0d\x2a\xe0\x10\x20\xd7\x10\x26\xd1\x10\x26\xa0\x73\xd3\x10\x2b\x80\x49\xd8\x07\x10\x98\x06\xd1\x07\x1e\xdc\x0e\x18\xd0\x1b\x38\xd0\x39\x49\xd0\x38\x4c\xd0\x19\x4d\xd3\x0e\x4e\xd0\x08\x4e\xd8\x09\x12\x90\x61\x8a\x1e\xd8\x17\x27\xd7\x17\x2e\xd1\x17\x2e\xa8\x73\xb0\x41\xd3\x17\x36\xb0\x72\xd1\x17\x3a\x88\x0c\xd8\x0f\x1b\xd7\x0f\x26\xd1\x0f\x26\xa4\x74\xd4\x0f\x2c\xdc\x12\x1c\xf0\x00\x01\x1e\x25\xdc\x25\x29\xa0\x48\xf0\x03\x01\x1e\x2e\xf3\x00\x01\x13\x2f\xf0\x00\x01\x0d\x2f\xe0\x14\x20\xa4\x13\xa4\x54\xa3\x19\xa0\x1a\xd0\x14\x2c\x88\x09\xd8\x0f\x18\xd7\x0f\x20\xd1\x0f\x20\xd4\x0f\x22\xdc\x12\x1c\xd0\x1f\x32\xb0\x3c\xd0\x32\x42\xf0\x00\x01\x43\x01\x32\xf0\x00\x01\x1e\x32\xf3\x00\x01\x13\x33\xf0\x00\x01\x0d\x33\xe0\x14\x24\xd7\x14\x2e\xd1\x14\x2e\xa8\x73\xd3\x14\x33\xb0\x41\xd1\x14\x36\x80\x4d\xdc\x0b\x15\x90\x64\x98\x4d\xac\x4f\xb8\x41\xd1\x2c\x3e\xd1\x1c\x3e\xd3\x0b\x3f\xd0\x04\x3f",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[17];
+ }
+const_str_pycache_filename = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 16,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "pycache_filename",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[24];
+ }
+const_str_found_in_pycache_prefix = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 23,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "found_in_pycache_prefix",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[14];
+ }
+const_str_stripped_path = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 13,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "stripped_path",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[8];
+ }
+const_str_pycache = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 7,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "pycache",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[10];
+ }
+const_str_dot_count = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 9,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "dot_count",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[10];
+ }
+const_str_opt_level = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 9,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "opt_level",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[14];
+ }
+const_str_base_filename = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 13,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "base_filename",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[10];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_37_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 10,
+ },
+ .ob_item = {
+ &_Py_ID(path),
+ & const_str_head._ascii.ob_base,
+ & const_str_pycache_filename._ascii.ob_base,
+ & const_str_found_in_pycache_prefix._ascii.ob_base,
+ & const_str_stripped_path._ascii.ob_base,
+ & const_str_pycache._ascii.ob_base,
+ & const_str_dot_count._ascii.ob_base,
+ & const_str_optimization._ascii.ob_base,
+ & const_str_opt_level._ascii.ob_base,
+ & const_str_base_filename._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(804)
+importlib__bootstrap_external_toplevel_consts_37 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 402,
+ },
+ .co_consts = & importlib__bootstrap_external_toplevel_consts_37_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_external_toplevel_consts_37_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 16 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 6,
+ .co_firstlineno = 552,
+ .co_nlocalsplus = 10,
+ .co_nlocals = 10,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 119,
+ .co_localsplusnames = & importlib__bootstrap_external_toplevel_consts_37_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_46_consts_3_localspluskinds.ob_base.ob_base,
+ .co_filename = & importlib__bootstrap_external_toplevel_consts_6_filename._ascii.ob_base,
+ .co_name = & const_str_source_from_cache._ascii.ob_base,
+ .co_qualname = & const_str_source_from_cache._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_external_toplevel_consts_37_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x0b\x74\x07\x00\x00\x00\x00\x00\x00\x00\x00\x64\x02\xab\x01\x00\x00\x00\x00\x00\x00\x82\x01\x74\x09\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x00\x74\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x5c\x02\x00\x00\x7d\x01\x7d\x02\x64\x03\x7d\x03\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x81\x4b\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x11\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x74\x12\x00\x00\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x04\x7c\x01\x6a\x15\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x04\x74\x16\x00\x00\x00\x00\x00\x00\x00\x00\x7a\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x72\x10\x7c\x01\x74\x19\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x04\xab\x01\x00\x00\x00\x00\x00\x00\x64\x01\x1a\x00\x7d\x01\x64\x04\x7d\x03\x7c\x03\x73\x2b\x74\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\xab\x01\x00\x00\x00\x00\x00\x00\x5c\x02\x00\x00\x7d\x01\x7d\x05\x7c\x05\x74\x1a\x00\x00\x00\x00\x00\x00\x00\x00\x6b\x37\x00\x00\x72\x14\x74\x1d\x00\x00\x00\x00\x00\x00\x00\x00\x74\x1a\x00\x00\x00\x00\x00\x00\x00\x00\x9b\x00\x64\x05\x7c\x00\x9b\x02\x9d\x03\xab\x01\x00\x00\x00\x00\x00\x00\x82\x01\x7c\x02\x6a\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x06\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x06\x7c\x06\x64\x07\x76\x01\x72\x0e\x74\x1d\x00\x00\x00\x00\x00\x00\x00\x00\x64\x08\x7c\x02\x9b\x02\x9d\x02\xab\x01\x00\x00\x00\x00\x00\x00\x82\x01\x7c\x06\x64\x09\x6b\x28\x00\x00\x72\x6d\x7c\x02\x6a\x21\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x06\x64\x0a\xab\x02\x00\x00\x00\x00\x00\x00\x64\x0b\x19\x00\x00\x00\x7d\x07\x7c\x07\x6a\x15\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x74\x22\x00\x00\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x73\x12\x74\x1d\x00\x00\x00\x00\x00\x00\x00\x00\x64\x0c\x74\x22\x00\x00\x00\x00\x00\x00\x00\x00\x9b\x02\x9d\x02\xab\x01\x00\x00\x00\x00\x00\x00\x82\x01\x7c\x07\x74\x19\x00\x00\x00\x00\x00\x00\x00\x00\x74\x22\x00\x00\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x64\x01\x1a\x00\x7d\x08\x7c\x08\x6a\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x73\x0f\x74\x1d\x00\x00\x00\x00\x00\x00\x00\x00\x64\x0d\x7c\x07\x9b\x02\x64\x0e\x9d\x03\xab\x01\x00\x00\x00\x00\x00\x00\x82\x01\x7c\x02\x6a\x27\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x06\xab\x01\x00\x00\x00\x00\x00\x00\x64\x0f\x19\x00\x00\x00\x7d\x09\x74\x29\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x7c\x09\x74\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x64\x0f\x19\x00\x00\x00\x7a\x00\x00\x00\xab\x02\x00\x00\x00\x00\x00\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[189];
+ }
+importlib__bootstrap_external_toplevel_consts_38_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 188,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x43\x6f\x6e\x76\x65\x72\x74\x20\x61\x20\x62\x79\x74\x65\x63\x6f\x64\x65\x20\x66\x69\x6c\x65\x20\x70\x61\x74\x68\x20\x74\x6f\x20\x61\x20\x73\x6f\x75\x72\x63\x65\x20\x70\x61\x74\x68\x20\x28\x69\x66\x20\x70\x6f\x73\x73\x69\x62\x6c\x65\x29\x2e\x0a\x0a\x20\x20\x20\x20\x54\x68\x69\x73\x20\x66\x75\x6e\x63\x74\x69\x6f\x6e\x20\x65\x78\x69\x73\x74\x73\x20\x70\x75\x72\x65\x6c\x79\x20\x66\x6f\x72\x20\x62\x61\x63\x6b\x77\x61\x72\x64\x73\x2d\x63\x6f\x6d\x70\x61\x74\x69\x62\x69\x6c\x69\x74\x79\x20\x66\x6f\x72\x0a\x20\x20\x20\x20\x50\x79\x49\x6d\x70\x6f\x72\x74\x5f\x45\x78\x65\x63\x43\x6f\x64\x65\x4d\x6f\x64\x75\x6c\x65\x57\x69\x74\x68\x46\x69\x6c\x65\x6e\x61\x6d\x65\x73\x28\x29\x20\x69\x6e\x20\x74\x68\x65\x20\x43\x20\x41\x50\x49\x2e\x0a\x0a\x20\x20\x20\x20",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[3];
+ }
+const_str_py = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 2,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "py",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[7];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_38_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 7,
+ },
+ .ob_item = {
+ & importlib__bootstrap_external_toplevel_consts_38_consts_0._ascii.ob_base,
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 0],
+ Py_None,
+ &_Py_STR(dot),
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + -3],
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + -1],
+ & const_str_py._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[6];
+ }
+const_str_lower = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 5,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "lower",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[7];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_38_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 7,
+ },
+ .ob_item = {
+ &_Py_ID(len),
+ & const_str_rpartition._ascii.ob_base,
+ & const_str_lower._ascii.ob_base,
+ & const_str_source_from_cache._ascii.ob_base,
+ & const_str_NotImplementedError._ascii.ob_base,
+ & const_str_ValueError._ascii.ob_base,
+ & const_str__path_isfile._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[143];
+ }
+importlib__bootstrap_external_toplevel_consts_38_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 142,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf4\x0e\x00\x08\x0b\x88\x3d\xd3\x07\x19\x98\x51\xd2\x07\x1e\xd8\x0f\x13\xd8\x19\x26\xd7\x19\x31\xd1\x19\x31\xb0\x23\xd3\x19\x36\xd1\x04\x16\x80\x44\x88\x21\x88\x59\xd9\x0b\x0f\x90\x39\x97\x3f\x91\x3f\xd3\x13\x24\xa0\x52\xa8\x02\xd0\x13\x2b\xa8\x74\xd2\x13\x33\xd8\x0f\x1c\xd0\x08\x1c\xf0\x02\x03\x05\x29\xdc\x16\x27\xa8\x0d\xd3\x16\x36\x88\x0b\xf4\x06\x00\x1b\x27\xa0\x7b\xd4\x1a\x33\x88\x3b\xd0\x04\x46\xb8\x1d\xd0\x04\x46\xf8\xf4\x05\x00\x0d\x20\xa4\x1a\xd0\x0b\x2c\xf2\x00\x01\x05\x29\xd8\x16\x23\xa0\x43\xa0\x52\xd0\x16\x28\x8a\x0b\xf0\x03\x01\x05\x29\xfa",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[19];
+ }
+importlib__bootstrap_external_toplevel_consts_38_exceptiontable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 18,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\xc1\x00\x0b\x41\x1a\x00\xc1\x1a\x14\x41\x31\x03\xc1\x30\x01\x41\x31\x03",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[14];
+ }
+const_str_bytecode_path = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 13,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "bytecode_path",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[10];
+ }
+const_str_extension = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 9,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "extension",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[12];
+ }
+const_str_source_path = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 11,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "source_path",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[5];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_38_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 5,
+ },
+ .ob_item = {
+ & const_str_bytecode_path._ascii.ob_base,
+ & const_str_rest._ascii.ob_base,
+ &_Py_ID(_),
+ & const_str_extension._ascii.ob_base,
+ & const_str_source_path._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(232)
+importlib__bootstrap_external_toplevel_consts_38 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 116,
+ },
+ .co_consts = & importlib__bootstrap_external_toplevel_consts_38_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_external_toplevel_consts_38_names._object.ob_base.ob_base,
+ .co_exceptiontable = & importlib__bootstrap_external_toplevel_consts_38_exceptiontable.ob_base.ob_base,
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 9 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 592,
+ .co_nlocalsplus = 5,
+ .co_nlocals = 5,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 120,
+ .co_localsplusnames = & importlib__bootstrap_external_toplevel_consts_38_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_7_consts_5_localspluskinds.ob_base.ob_base,
+ .co_filename = & importlib__bootstrap_external_toplevel_consts_6_filename._ascii.ob_base,
+ .co_name = &_Py_ID(_get_sourcefile),
+ .co_qualname = &_Py_ID(_get_sourcefile),
+ .co_linetable = & importlib__bootstrap_external_toplevel_consts_38_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x64\x01\x6b\x28\x00\x00\x72\x01\x79\x02\x7c\x00\x6a\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x03\xab\x01\x00\x00\x00\x00\x00\x00\x5c\x03\x00\x00\x7d\x01\x7d\x02\x7d\x03\x7c\x01\x72\x16\x7c\x03\x6a\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x64\x04\x64\x05\x1a\x00\x64\x06\x6b\x37\x00\x00\x72\x02\x7c\x00\x53\x00\x09\x00\x74\x07\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x04\x74\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x04\xab\x01\x00\x00\x00\x00\x00\x00\x72\x02\x7c\x04\x53\x00\x7c\x00\x53\x00\x23\x00\x74\x08\x00\x00\x00\x00\x00\x00\x00\x00\x74\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x66\x02\x24\x00\x72\x08\x01\x00\x7c\x00\x64\x02\x64\x05\x1a\x00\x7d\x04\x59\x00\x8c\x25\x77\x00\x78\x03\x59\x00\x77\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[6];
+ }
+const_str_tuple = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 5,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "tuple",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[6];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_39_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 6,
+ },
+ .ob_item = {
+ & const_str_endswith._ascii.ob_base,
+ & const_str_tuple._ascii.ob_base,
+ & const_str_SOURCE_SUFFIXES._ascii.ob_base,
+ & const_str_cache_from_source._ascii.ob_base,
+ & const_str_NotImplementedError._ascii.ob_base,
+ & const_str_BYTECODE_SUFFIXES._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[88];
+ }
+importlib__bootstrap_external_toplevel_consts_39_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 87,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xd8\x07\x0f\xd7\x07\x18\xd1\x07\x18\x9c\x15\x9c\x7f\xd3\x19\x2f\xd4\x07\x30\xf0\x02\x03\x09\x11\xdc\x13\x24\xa0\x58\xd3\x13\x2e\xd0\x0c\x2e\xf0\x06\x00\x0a\x12\xd7\x09\x1a\xd1\x09\x1a\x9c\x35\xd4\x21\x32\xd3\x1b\x33\xd4\x09\x34\xd8\x0f\x17\x88\x0f\xe0\x0f\x13\xf8\xf4\x0b\x00\x10\x23\xf2\x00\x01\x09\x11\xd9\x0c\x10\xf0\x03\x01\x09\x11\xfa",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[18];
+ }
+importlib__bootstrap_external_toplevel_consts_39_exceptiontable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 17,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\xa0\x0a\x41\x0c\x00\xc1\x0c\x09\x41\x18\x03\xc1\x17\x01\x41\x18\x03",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_39_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ &_Py_ID(filename),
+ },
+ },
+};
+static
+ struct _PyCode_DEF(182)
+importlib__bootstrap_external_toplevel_consts_39 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 91,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_1_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_external_toplevel_consts_39_names._object.ob_base.ob_base,
+ .co_exceptiontable = & importlib__bootstrap_external_toplevel_consts_39_exceptiontable.ob_base.ob_base,
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 6 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 5,
+ .co_firstlineno = 611,
+ .co_nlocalsplus = 1,
+ .co_nlocals = 1,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 121,
+ .co_localsplusnames = & importlib__bootstrap_external_toplevel_consts_39_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_characters[32]),
+ .co_filename = & importlib__bootstrap_external_toplevel_consts_6_filename._ascii.ob_base,
+ .co_name = & const_str__get_cached._ascii.ob_base,
+ .co_qualname = & const_str__get_cached._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_external_toplevel_consts_39_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x00\x6a\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x74\x03\x00\x00\x00\x00\x00\x00\x00\x00\x74\x04\x00\x00\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x72\x0c\x09\x00\x74\x07\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x53\x00\x7c\x00\x6a\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x74\x03\x00\x00\x00\x00\x00\x00\x00\x00\x74\x0a\x00\x00\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x72\x02\x7c\x00\x53\x00\x79\x00\x23\x00\x74\x08\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x72\x03\x01\x00\x59\x00\x79\x00\x77\x00\x78\x03\x59\x00\x77\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[52];
+ }
+importlib__bootstrap_external_toplevel_consts_40_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 51,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Calculate the mode permissions for a bytecode file.",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_40_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ & importlib__bootstrap_external_toplevel_consts_40_consts_0._ascii.ob_base,
+ & const_int_438.ob_base,
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 128],
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_40_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ & const_str__path_stat._ascii.ob_base,
+ & const_str_st_mode._ascii.ob_base,
+ & const_str_OSError._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[11];
+ }
+const_str__calc_mode = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 10,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_calc_mode",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[62];
+ }
+importlib__bootstrap_external_toplevel_consts_40_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 61,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf0\x04\x03\x05\x15\xdc\x0f\x19\x98\x24\xd3\x0f\x1f\xd7\x0f\x27\xd1\x0f\x27\x88\x04\xf0\x0a\x00\x05\x09\x88\x45\x81\x4d\x80\x44\xd8\x0b\x0f\x80\x4b\xf8\xf4\x0b\x00\x0c\x13\xf2\x00\x01\x05\x15\xd8\x0f\x14\x8a\x04\xf0\x03\x01\x05\x15\xfa",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[13];
+ }
+importlib__bootstrap_external_toplevel_consts_40_exceptiontable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 12,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x82\x15\x1e\x00\x9e\x0b\x2c\x03\xab\x01\x2c\x03",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_40_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ &_Py_ID(path),
+ &_Py_ID(mode),
+ },
+ },
+};
+static
+ struct _PyCode_DEF(94)
+importlib__bootstrap_external_toplevel_consts_40 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 47,
+ },
+ .co_consts = & importlib__bootstrap_external_toplevel_consts_40_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_external_toplevel_consts_40_names._object.ob_base.ob_base,
+ .co_exceptiontable = & importlib__bootstrap_external_toplevel_consts_40_exceptiontable.ob_base.ob_base,
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 6 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 623,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 2,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 122,
+ .co_localsplusnames = & importlib__bootstrap_external_toplevel_consts_40_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_14_consts_2_localspluskinds.ob_base.ob_base,
+ .co_filename = & importlib__bootstrap_external_toplevel_consts_6_filename._ascii.ob_base,
+ .co_name = & const_str__calc_mode._ascii.ob_base,
+ .co_qualname = & const_str__calc_mode._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_external_toplevel_consts_40_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x09\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7d\x01\x7c\x01\x64\x02\x7a\x14\x00\x00\x7d\x01\x7c\x01\x53\x00\x23\x00\x74\x04\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x72\x05\x01\x00\x64\x01\x7d\x01\x59\x00\x8c\x14\x77\x00\x78\x03\x59\x00\x77\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[253];
+ }
+importlib__bootstrap_external_toplevel_consts_41_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 252,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x44\x65\x63\x6f\x72\x61\x74\x6f\x72\x20\x74\x6f\x20\x76\x65\x72\x69\x66\x79\x20\x74\x68\x61\x74\x20\x74\x68\x65\x20\x6d\x6f\x64\x75\x6c\x65\x20\x62\x65\x69\x6e\x67\x20\x72\x65\x71\x75\x65\x73\x74\x65\x64\x20\x6d\x61\x74\x63\x68\x65\x73\x20\x74\x68\x65\x20\x6f\x6e\x65\x20\x74\x68\x65\x0a\x20\x20\x20\x20\x6c\x6f\x61\x64\x65\x72\x20\x63\x61\x6e\x20\x68\x61\x6e\x64\x6c\x65\x2e\x0a\x0a\x20\x20\x20\x20\x54\x68\x65\x20\x66\x69\x72\x73\x74\x20\x61\x72\x67\x75\x6d\x65\x6e\x74\x20\x28\x73\x65\x6c\x66\x29\x20\x6d\x75\x73\x74\x20\x64\x65\x66\x69\x6e\x65\x20\x5f\x6e\x61\x6d\x65\x20\x77\x68\x69\x63\x68\x20\x74\x68\x65\x20\x73\x65\x63\x6f\x6e\x64\x20\x61\x72\x67\x75\x6d\x65\x6e\x74\x20\x69\x73\x0a\x20\x20\x20\x20\x63\x6f\x6d\x70\x61\x72\x65\x64\x20\x61\x67\x61\x69\x6e\x73\x74\x2e\x20\x49\x66\x20\x74\x68\x65\x20\x63\x6f\x6d\x70\x61\x72\x69\x73\x6f\x6e\x20\x66\x61\x69\x6c\x73\x20\x74\x68\x65\x6e\x20\x49\x6d\x70\x6f\x72\x74\x45\x72\x72\x6f\x72\x20\x69\x73\x20\x72\x61\x69\x73\x65\x64\x2e\x0a\x0a\x20\x20\x20\x20",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[12];
+ }
+importlib__bootstrap_external_toplevel_consts_41_consts_1_consts_1 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 11,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "loader for ",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[16];
+ }
+importlib__bootstrap_external_toplevel_consts_41_consts_1_consts_2 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 15,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = " cannot handle ",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[4];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_41_consts_1_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_item = {
+ Py_None,
+ & importlib__bootstrap_external_toplevel_consts_41_consts_1_consts_1._ascii.ob_base,
+ & importlib__bootstrap_external_toplevel_consts_41_consts_1_consts_2._ascii.ob_base,
+ & importlib__bootstrap_toplevel_consts_4_localsplusnames._object.ob_base.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_41_consts_1_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ &_Py_ID(name),
+ & const_str_ImportError._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[20];
+ }
+const_str__check_name_wrapper = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 19,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_check_name_wrapper",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[41];
+ }
+importlib__bootstrap_external_toplevel_consts_41_consts_1_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 40,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_check_name.<locals>._check_name_wrapper",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[83];
+ }
+importlib__bootstrap_external_toplevel_consts_41_consts_1_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 82,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\xf8\x80\x00\xd8\x0b\x0f\x88\x3c\xd8\x13\x17\x97\x39\x91\x39\x89\x44\xd8\x0d\x11\x8f\x59\x89\x59\x98\x24\xd2\x0d\x1e\xdd\x12\x1d\xd8\x21\x25\xa7\x19\xa3\x19\xa9\x44\xf0\x03\x01\x1f\x32\xd8\x38\x3c\xf4\x03\x01\x13\x3e\xf0\x00\x01\x0d\x3e\xe1\x0f\x15\x90\x64\x98\x44\xd0\x0f\x32\xa0\x34\xd2\x0f\x32\xa8\x36\xd1\x0f\x32\xd0\x08\x32",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[5];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_41_consts_1_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 5,
+ },
+ .ob_item = {
+ &_Py_ID(self),
+ &_Py_ID(name),
+ &_Py_ID(args),
+ & const_str_kwargs._ascii.ob_base,
+ &_Py_ID(method),
+ },
+ },
+};
+static
+ struct _PyCode_DEF(148)
+importlib__bootstrap_external_toplevel_consts_41_consts_1 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 74,
+ },
+ .co_consts = & importlib__bootstrap_external_toplevel_consts_41_consts_1_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_external_toplevel_consts_41_consts_1_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 31,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 11 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 6,
+ .co_firstlineno = 643,
+ .co_nlocalsplus = 5,
+ .co_nlocals = 4,
+ .co_ncellvars = 0,
+ .co_nfreevars = 1,
+ .co_version = 123,
+ .co_localsplusnames = & importlib__bootstrap_external_toplevel_consts_41_consts_1_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_7_consts_1_consts_1_consts_2_localspluskinds.ob_base.ob_base,
+ .co_filename = & importlib__bootstrap_external_toplevel_consts_6_filename._ascii.ob_base,
+ .co_name = & const_str__check_name_wrapper._ascii.ob_base,
+ .co_qualname = & importlib__bootstrap_external_toplevel_consts_41_consts_1_qualname._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_external_toplevel_consts_41_consts_1_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x95\x01\x97\x00\x7c\x01\x80\x0d\x7c\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7d\x01\x6e\x2c\x7c\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x6b\x37\x00\x00\x72\x1d\x74\x03\x00\x00\x00\x00\x00\x00\x00\x00\x64\x01\x7c\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9b\x01\x64\x02\x7c\x01\x9b\x01\x9d\x04\x7c\x01\xac\x03\xab\x02\x00\x00\x00\x00\x00\x00\x82\x01\x02\x00\x89\x04\x7c\x00\x7c\x01\x67\x02\x7c\x02\xa2\x01\xad\x06\x69\x00\x7c\x03\xa4\x01\x8e\x01\x53\x00",
+ ._co_firsttraceable = 1,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_41_consts_2_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ Py_None,
+ & importlib__bootstrap_toplevel_consts_3_consts_1._object.ob_base.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[27];
+ }
+importlib__bootstrap_external_toplevel_consts_41_consts_2_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 26,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_check_name.<locals>._wrap",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[73];
+ }
+importlib__bootstrap_external_toplevel_consts_41_consts_2_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 72,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xd8\x1b\x50\xf2\x00\x02\x0d\x41\x01\x90\x07\xdc\x13\x1a\x98\x33\xa0\x07\xd5\x13\x28\xdc\x14\x1b\x98\x43\xa0\x17\xac\x27\xb0\x23\xb0\x77\xd3\x2a\x3f\xd5\x14\x40\xf0\x05\x02\x0d\x41\x01\xf0\x06\x00\x0d\x10\x8f\x4c\x89\x4c\xd7\x0c\x1f\xd1\x0c\x1f\xa0\x03\xa7\x0c\xa1\x0c\xd5\x0c\x2d",
+};
+static
+ struct _PyCode_DEF(164)
+importlib__bootstrap_external_toplevel_consts_41_consts_2 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 82,
+ },
+ .co_consts = & importlib__bootstrap_external_toplevel_consts_41_consts_2_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_toplevel_consts_3_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 19,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 12 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 9,
+ .co_firstlineno = 656,
+ .co_nlocalsplus = 3,
+ .co_nlocals = 3,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 124,
+ .co_localsplusnames = & importlib__bootstrap_toplevel_consts_3_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_3_localspluskinds.ob_base.ob_base,
+ .co_filename = & importlib__bootstrap_external_toplevel_consts_6_filename._ascii.ob_base,
+ .co_name = & const_str__wrap._ascii.ob_base,
+ .co_qualname = & importlib__bootstrap_external_toplevel_consts_41_consts_2_qualname._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_external_toplevel_consts_41_consts_2_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x64\x01\x44\x00\x5d\x26\x00\x00\x7d\x02\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x7c\x02\xab\x02\x00\x00\x00\x00\x00\x00\x73\x01\x8c\x10\x74\x03\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x7c\x02\x74\x05\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x7c\x02\xab\x02\x00\x00\x00\x00\x00\x00\xab\x03\x00\x00\x00\x00\x00\x00\x01\x00\x8c\x28\x04\x00\x7c\x00\x6a\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x6a\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x79\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[4];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_41_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_item = {
+ & importlib__bootstrap_external_toplevel_consts_41_consts_0._ascii.ob_base,
+ & importlib__bootstrap_external_toplevel_consts_41_consts_1.ob_base.ob_base,
+ & importlib__bootstrap_external_toplevel_consts_41_consts_2.ob_base.ob_base,
+ & importlib__bootstrap_toplevel_consts_1_consts._object.ob_base.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_41_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ &_Py_ID(_bootstrap),
+ & const_str__wrap._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[12];
+ }
+const_str__check_name = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 11,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_check_name",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[52];
+ }
+importlib__bootstrap_external_toplevel_consts_41_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 51,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\xf8\x80\x00\xf5\x10\x06\x05\x33\xf4\x14\x00\x08\x12\xd0\x07\x1d\xdc\x10\x1a\xd7\x10\x20\xd1\x10\x20\x89\x05\xf2\x04\x04\x09\x2e\xf1\x0c\x00\x05\x0a\xd0\x0a\x1d\x98\x76\xd4\x04\x26\xd8\x0b\x1e\xd0\x04\x1e",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_41_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ &_Py_ID(method),
+ & const_str__check_name_wrapper._ascii.ob_base,
+ & const_str__wrap._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[4];
+ }
+importlib__bootstrap_external_toplevel_consts_41_localspluskinds = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_shash = -1,
+ .ob_sval = "` ",
+};
+static
+ struct _PyCode_DEF(90)
+importlib__bootstrap_external_toplevel_consts_41 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 45,
+ },
+ .co_consts = & importlib__bootstrap_external_toplevel_consts_41_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_external_toplevel_consts_41_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 7 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 635,
+ .co_nlocalsplus = 3,
+ .co_nlocals = 3,
+ .co_ncellvars = 1,
+ .co_nfreevars = 0,
+ .co_version = 125,
+ .co_localsplusnames = & importlib__bootstrap_external_toplevel_consts_41_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_external_toplevel_consts_41_localspluskinds.ob_base.ob_base,
+ .co_filename = & importlib__bootstrap_external_toplevel_consts_6_filename._ascii.ob_base,
+ .co_name = & const_str__check_name._ascii.ob_base,
+ .co_qualname = & const_str__check_name._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_external_toplevel_consts_41_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x87\x00\x97\x00\x64\x03\x88\x00\x66\x01\x64\x01\x84\x09\x7d\x01\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x81\x11\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7d\x02\x6e\x03\x64\x02\x84\x00\x7d\x02\x02\x00\x7c\x02\x7c\x01\x89\x00\xab\x02\x00\x00\x00\x00\x00\x00\x01\x00\x7c\x01\x53\x00",
+ ._co_firsttraceable = 1,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[597];
+ }
+importlib__bootstrap_external_toplevel_consts_42_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 596,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x50\x65\x72\x66\x6f\x72\x6d\x20\x62\x61\x73\x69\x63\x20\x76\x61\x6c\x69\x64\x69\x74\x79\x20\x63\x68\x65\x63\x6b\x69\x6e\x67\x20\x6f\x66\x20\x61\x20\x70\x79\x63\x20\x68\x65\x61\x64\x65\x72\x20\x61\x6e\x64\x20\x72\x65\x74\x75\x72\x6e\x20\x74\x68\x65\x20\x66\x6c\x61\x67\x73\x20\x66\x69\x65\x6c\x64\x2c\x0a\x20\x20\x20\x20\x77\x68\x69\x63\x68\x20\x64\x65\x74\x65\x72\x6d\x69\x6e\x65\x73\x20\x68\x6f\x77\x20\x74\x68\x65\x20\x70\x79\x63\x20\x73\x68\x6f\x75\x6c\x64\x20\x62\x65\x20\x66\x75\x72\x74\x68\x65\x72\x20\x76\x61\x6c\x69\x64\x61\x74\x65\x64\x20\x61\x67\x61\x69\x6e\x73\x74\x20\x74\x68\x65\x20\x73\x6f\x75\x72\x63\x65\x2e\x0a\x0a\x20\x20\x20\x20\x2a\x64\x61\x74\x61\x2a\x20\x69\x73\x20\x74\x68\x65\x20\x63\x6f\x6e\x74\x65\x6e\x74\x73\x20\x6f\x66\x20\x74\x68\x65\x20\x70\x79\x63\x20\x66\x69\x6c\x65\x2e\x20\x28\x4f\x6e\x6c\x79\x20\x74\x68\x65\x20\x66\x69\x72\x73\x74\x20\x31\x36\x20\x62\x79\x74\x65\x73\x20\x61\x72\x65\x0a\x20\x20\x20\x20\x72\x65\x71\x75\x69\x72\x65\x64\x2c\x20\x74\x68\x6f\x75\x67\x68\x2e\x29\x0a\x0a\x20\x20\x20\x20\x2a\x6e\x61\x6d\x65\x2a\x20\x69\x73\x20\x74\x68\x65\x20\x6e\x61\x6d\x65\x20\x6f\x66\x20\x74\x68\x65\x20\x6d\x6f\x64\x75\x6c\x65\x20\x62\x65\x69\x6e\x67\x20\x69\x6d\x70\x6f\x72\x74\x65\x64\x2e\x20\x49\x74\x20\x69\x73\x20\x75\x73\x65\x64\x20\x66\x6f\x72\x20\x6c\x6f\x67\x67\x69\x6e\x67\x2e\x0a\x0a\x20\x20\x20\x20\x2a\x65\x78\x63\x5f\x64\x65\x74\x61\x69\x6c\x73\x2a\x20\x69\x73\x20\x61\x20\x64\x69\x63\x74\x69\x6f\x6e\x61\x72\x79\x20\x70\x61\x73\x73\x65\x64\x20\x74\x6f\x20\x49\x6d\x70\x6f\x72\x74\x45\x72\x72\x6f\x72\x20\x69\x66\x20\x69\x74\x20\x72\x61\x69\x73\x65\x64\x20\x66\x6f\x72\x0a\x20\x20\x20\x20\x69\x6d\x70\x72\x6f\x76\x65\x64\x20\x64\x65\x62\x75\x67\x67\x69\x6e\x67\x2e\x0a\x0a\x20\x20\x20\x20\x49\x6d\x70\x6f\x72\x74\x45\x72\x72\x6f\x72\x20\x69\x73\x20\x72\x61\x69\x73\x65\x64\x20\x77\x68\x65\x6e\x20\x74\x68\x65\x20\x6d\x61\x67\x69\x63\x20\x6e\x75\x6d\x62\x65\x72\x20\x69\x73\x20\x69\x6e\x63\x6f\x72\x72\x65\x63\x74\x20\x6f\x72\x20\x77\x68\x65\x6e\x20\x74\x68\x65\x20\x66\x6c\x61\x67\x73\x0a\x20\x20\x20\x20\x66\x69\x65\x6c\x64\x20\x69\x73\x20\x69\x6e\x76\x61\x6c\x69\x64\x2e\x20\x45\x4f\x46\x45\x72\x72\x6f\x72\x20\x69\x73\x20\x72\x61\x69\x73\x65\x64\x20\x77\x68\x65\x6e\x20\x74\x68\x65\x20\x64\x61\x74\x61\x20\x69\x73\x20\x66\x6f\x75\x6e\x64\x20\x74\x6f\x20\x62\x65\x20\x74\x72\x75\x6e\x63\x61\x74\x65\x64\x2e\x0a\x0a\x20\x20\x20\x20",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[21];
+ }
+importlib__bootstrap_external_toplevel_consts_42_consts_3 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 20,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "bad magic number in ",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[3];
+ }
+importlib__bootstrap_external_toplevel_consts_42_consts_4 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 2,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = ": ",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[3];
+ }
+importlib__bootstrap_external_toplevel_consts_42_consts_5 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 2,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "{}",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[41];
+ }
+importlib__bootstrap_external_toplevel_consts_42_consts_7 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 40,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "reached EOF while reading pyc header of ",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[15];
+ }
+importlib__bootstrap_external_toplevel_consts_42_consts_10 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 14,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "invalid flags ",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[5];
+ }
+importlib__bootstrap_external_toplevel_consts_42_consts_11 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 4,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = " in ",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[12];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_42_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 12,
+ },
+ .ob_item = {
+ & importlib__bootstrap_external_toplevel_consts_42_consts_0._ascii.ob_base,
+ Py_None,
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 4],
+ & importlib__bootstrap_external_toplevel_consts_42_consts_3._ascii.ob_base,
+ & importlib__bootstrap_external_toplevel_consts_42_consts_4._ascii.ob_base,
+ & importlib__bootstrap_external_toplevel_consts_42_consts_5._ascii.ob_base,
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 16],
+ & importlib__bootstrap_external_toplevel_consts_42_consts_7._ascii.ob_base,
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 8],
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + -4],
+ & importlib__bootstrap_external_toplevel_consts_42_consts_10._ascii.ob_base,
+ & importlib__bootstrap_external_toplevel_consts_42_consts_11._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[13];
+ }
+const_str_MAGIC_NUMBER = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 12,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "MAGIC_NUMBER",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[9];
+ }
+const_str_EOFError = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 8,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "EOFError",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[7];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_42_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 7,
+ },
+ .ob_item = {
+ & const_str_MAGIC_NUMBER._ascii.ob_base,
+ &_Py_ID(_bootstrap),
+ & const_str__verbose_message._ascii.ob_base,
+ & const_str_ImportError._ascii.ob_base,
+ &_Py_ID(len),
+ & const_str_EOFError._ascii.ob_base,
+ & const_str__unpack_uint32._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[14];
+ }
+const_str__classify_pyc = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 13,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_classify_pyc",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[186];
+ }
+importlib__bootstrap_external_toplevel_consts_42_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 185,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf0\x20\x00\x0d\x11\x90\x12\x90\x21\x88\x48\x80\x45\xd8\x07\x0c\x94\x0c\xd2\x07\x1c\xd8\x14\x28\xa8\x14\xa8\x08\xb0\x02\xb0\x35\xb0\x29\xd0\x12\x3c\x88\x07\xdc\x08\x12\xd7\x08\x23\xd1\x08\x23\xa0\x44\xa8\x27\xd4\x08\x32\xdc\x0e\x19\x98\x27\xd1\x0e\x31\xa0\x5b\xd1\x0e\x31\xd0\x08\x31\xdc\x07\x0a\x88\x34\x83\x79\x90\x32\x82\x7e\xd8\x14\x3c\xb8\x54\xb8\x48\xd0\x12\x45\x88\x07\xdc\x08\x12\xd7\x08\x23\xd1\x08\x23\xa0\x44\xa8\x27\xd4\x08\x32\xdc\x0e\x16\x90\x77\xd3\x0e\x1f\xd0\x08\x1f\xdc\x0c\x1a\x98\x34\xa0\x01\xa0\x21\x98\x39\xd3\x0c\x25\x80\x45\xe0\x07\x0c\x88\x75\x82\x7d\xd8\x14\x22\xa0\x35\xa0\x29\xa8\x34\xb0\x04\xa8\x78\xd0\x12\x38\x88\x07\xdc\x0e\x19\x98\x27\xd1\x0e\x31\xa0\x5b\xd1\x0e\x31\xd0\x08\x31\xd8\x0b\x10\x80\x4c",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[12];
+ }
+const_str_exc_details = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 11,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "exc_details",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[6];
+ }
+const_str_magic = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 5,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "magic",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[6];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_42_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 6,
+ },
+ .ob_item = {
+ &_Py_ID(data),
+ &_Py_ID(name),
+ & const_str_exc_details._ascii.ob_base,
+ & const_str_magic._ascii.ob_base,
+ &_Py_ID(message),
+ &_Py_ID(flags),
+ },
+ },
+};
+static
+ struct _PyCode_DEF(300)
+importlib__bootstrap_external_toplevel_consts_42 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 150,
+ },
+ .co_consts = & importlib__bootstrap_external_toplevel_consts_42_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_external_toplevel_consts_42_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 3,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 11 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 5,
+ .co_firstlineno = 666,
+ .co_nlocalsplus = 6,
+ .co_nlocals = 6,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 126,
+ .co_localsplusnames = & importlib__bootstrap_external_toplevel_consts_42_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_30_consts_4_localspluskinds.ob_base.ob_base,
+ .co_filename = & importlib__bootstrap_external_toplevel_consts_6_filename._ascii.ob_base,
+ .co_name = & const_str__classify_pyc._ascii.ob_base,
+ .co_qualname = & const_str__classify_pyc._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_external_toplevel_consts_42_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x00\x64\x01\x64\x02\x1a\x00\x7d\x03\x7c\x03\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6b\x37\x00\x00\x72\x2a\x64\x03\x7c\x01\x9b\x02\x64\x04\x7c\x03\x9b\x02\x9d\x04\x7d\x04\x74\x02\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x05\x7c\x04\xab\x02\x00\x00\x00\x00\x00\x00\x01\x00\x74\x07\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x04\x66\x01\x69\x00\x7c\x02\xa4\x01\x8e\x01\x82\x01\x74\x09\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x64\x06\x6b\x02\x00\x00\x72\x26\x64\x07\x7c\x01\x9b\x02\x9d\x02\x7d\x04\x74\x02\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x05\x7c\x04\xab\x02\x00\x00\x00\x00\x00\x00\x01\x00\x74\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x04\xab\x01\x00\x00\x00\x00\x00\x00\x82\x01\x74\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x64\x02\x64\x08\x1a\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x05\x7c\x05\x64\x09\x7a\x01\x00\x00\x72\x14\x64\x0a\x7c\x05\x9b\x02\x64\x0b\x7c\x01\x9b\x02\x9d\x04\x7d\x04\x74\x07\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x04\x66\x01\x69\x00\x7c\x02\xa4\x01\x8e\x01\x82\x01\x7c\x05\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[520];
+ }
+importlib__bootstrap_external_toplevel_consts_43_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 519,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x56\x61\x6c\x69\x64\x61\x74\x65\x20\x61\x20\x70\x79\x63\x20\x61\x67\x61\x69\x6e\x73\x74\x20\x74\x68\x65\x20\x73\x6f\x75\x72\x63\x65\x20\x6c\x61\x73\x74\x2d\x6d\x6f\x64\x69\x66\x69\x65\x64\x20\x74\x69\x6d\x65\x2e\x0a\x0a\x20\x20\x20\x20\x2a\x64\x61\x74\x61\x2a\x20\x69\x73\x20\x74\x68\x65\x20\x63\x6f\x6e\x74\x65\x6e\x74\x73\x20\x6f\x66\x20\x74\x68\x65\x20\x70\x79\x63\x20\x66\x69\x6c\x65\x2e\x20\x28\x4f\x6e\x6c\x79\x20\x74\x68\x65\x20\x66\x69\x72\x73\x74\x20\x31\x36\x20\x62\x79\x74\x65\x73\x20\x61\x72\x65\x0a\x20\x20\x20\x20\x72\x65\x71\x75\x69\x72\x65\x64\x2e\x29\x0a\x0a\x20\x20\x20\x20\x2a\x73\x6f\x75\x72\x63\x65\x5f\x6d\x74\x69\x6d\x65\x2a\x20\x69\x73\x20\x74\x68\x65\x20\x6c\x61\x73\x74\x20\x6d\x6f\x64\x69\x66\x69\x65\x64\x20\x74\x69\x6d\x65\x73\x74\x61\x6d\x70\x20\x6f\x66\x20\x74\x68\x65\x20\x73\x6f\x75\x72\x63\x65\x20\x66\x69\x6c\x65\x2e\x0a\x0a\x20\x20\x20\x20\x2a\x73\x6f\x75\x72\x63\x65\x5f\x73\x69\x7a\x65\x2a\x20\x69\x73\x20\x4e\x6f\x6e\x65\x20\x6f\x72\x20\x74\x68\x65\x20\x73\x69\x7a\x65\x20\x6f\x66\x20\x74\x68\x65\x20\x73\x6f\x75\x72\x63\x65\x20\x66\x69\x6c\x65\x20\x69\x6e\x20\x62\x79\x74\x65\x73\x2e\x0a\x0a\x20\x20\x20\x20\x2a\x6e\x61\x6d\x65\x2a\x20\x69\x73\x20\x74\x68\x65\x20\x6e\x61\x6d\x65\x20\x6f\x66\x20\x74\x68\x65\x20\x6d\x6f\x64\x75\x6c\x65\x20\x62\x65\x69\x6e\x67\x20\x69\x6d\x70\x6f\x72\x74\x65\x64\x2e\x20\x49\x74\x20\x69\x73\x20\x75\x73\x65\x64\x20\x66\x6f\x72\x20\x6c\x6f\x67\x67\x69\x6e\x67\x2e\x0a\x0a\x20\x20\x20\x20\x2a\x65\x78\x63\x5f\x64\x65\x74\x61\x69\x6c\x73\x2a\x20\x69\x73\x20\x61\x20\x64\x69\x63\x74\x69\x6f\x6e\x61\x72\x79\x20\x70\x61\x73\x73\x65\x64\x20\x74\x6f\x20\x49\x6d\x70\x6f\x72\x74\x45\x72\x72\x6f\x72\x20\x69\x66\x20\x69\x74\x20\x72\x61\x69\x73\x65\x64\x20\x66\x6f\x72\x0a\x20\x20\x20\x20\x69\x6d\x70\x72\x6f\x76\x65\x64\x20\x64\x65\x62\x75\x67\x67\x69\x6e\x67\x2e\x0a\x0a\x20\x20\x20\x20\x41\x6e\x20\x49\x6d\x70\x6f\x72\x74\x45\x72\x72\x6f\x72\x20\x69\x73\x20\x72\x61\x69\x73\x65\x64\x20\x69\x66\x20\x74\x68\x65\x20\x62\x79\x74\x65\x63\x6f\x64\x65\x20\x69\x73\x20\x73\x74\x61\x6c\x65\x2e\x0a\x0a\x20\x20\x20\x20",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[23];
+ }
+importlib__bootstrap_external_toplevel_consts_43_consts_4 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 22,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "bytecode is stale for ",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[8];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_43_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 8,
+ },
+ .ob_item = {
+ & importlib__bootstrap_external_toplevel_consts_43_consts_0._ascii.ob_base,
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 8],
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 12],
+ & const_int_4294967295.ob_base,
+ & importlib__bootstrap_external_toplevel_consts_43_consts_4._ascii.ob_base,
+ & importlib__bootstrap_external_toplevel_consts_42_consts_5._ascii.ob_base,
+ Py_None,
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 16],
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[4];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_43_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_item = {
+ & const_str__unpack_uint32._ascii.ob_base,
+ &_Py_ID(_bootstrap),
+ & const_str__verbose_message._ascii.ob_base,
+ & const_str_ImportError._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[24];
+ }
+const_str__validate_timestamp_pyc = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 23,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_validate_timestamp_pyc",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[138];
+ }
+importlib__bootstrap_external_toplevel_consts_43_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 137,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf4\x26\x00\x08\x16\x90\x64\x98\x31\x98\x52\x90\x6a\xd3\x07\x21\xa0\x6c\xb0\x5a\xd1\x26\x3f\xd2\x07\x40\xd8\x14\x2a\xa8\x34\xa8\x28\xd0\x12\x33\x88\x07\xdc\x08\x12\xd7\x08\x23\xd1\x08\x23\xa0\x44\xa8\x27\xd4\x08\x32\xdc\x0e\x19\x98\x27\xd1\x0e\x31\xa0\x5b\xd1\x0e\x31\xd0\x08\x31\xd8\x08\x13\xd0\x08\x1f\xdc\x08\x16\x90\x74\x98\x42\x98\x72\x90\x7b\xd3\x08\x23\xa8\x0b\xb0\x6a\xd1\x28\x40\xd2\x08\x41\xdc\x0e\x19\xd0\x1c\x32\xb0\x34\xb0\x28\xd0\x1a\x3b\xd1\x0e\x4b\xb8\x7b\xd1\x0e\x4b\xd0\x08\x4b\xf0\x03\x00\x09\x42\x01\xf0\x03\x00\x09\x20",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[13];
+ }
+const_str_source_mtime = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 12,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "source_mtime",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[12];
+ }
+const_str_source_size = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 11,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "source_size",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[6];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_43_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 6,
+ },
+ .ob_item = {
+ &_Py_ID(data),
+ & const_str_source_mtime._ascii.ob_base,
+ & const_str_source_size._ascii.ob_base,
+ &_Py_ID(name),
+ & const_str_exc_details._ascii.ob_base,
+ &_Py_ID(message),
+ },
+ },
+};
+static
+ struct _PyCode_DEF(198)
+importlib__bootstrap_external_toplevel_consts_43 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 99,
+ },
+ .co_consts = & importlib__bootstrap_external_toplevel_consts_43_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_external_toplevel_consts_43_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 5,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 11 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 5,
+ .co_firstlineno = 699,
+ .co_nlocalsplus = 6,
+ .co_nlocals = 6,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 127,
+ .co_localsplusnames = & importlib__bootstrap_external_toplevel_consts_43_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_30_consts_4_localspluskinds.ob_base.ob_base,
+ .co_filename = & importlib__bootstrap_external_toplevel_consts_6_filename._ascii.ob_base,
+ .co_name = & const_str__validate_timestamp_pyc._ascii.ob_base,
+ .co_qualname = & const_str__validate_timestamp_pyc._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_external_toplevel_consts_43_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x64\x01\x64\x02\x1a\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7c\x01\x64\x03\x7a\x01\x00\x00\x6b\x37\x00\x00\x72\x27\x64\x04\x7c\x03\x9b\x02\x9d\x02\x7d\x05\x74\x02\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x05\x7c\x05\xab\x02\x00\x00\x00\x00\x00\x00\x01\x00\x74\x07\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x05\x66\x01\x69\x00\x7c\x04\xa4\x01\x8e\x01\x82\x01\x7c\x02\x81\x24\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x64\x02\x64\x07\x1a\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7c\x02\x64\x03\x7a\x01\x00\x00\x6b\x37\x00\x00\x72\x0f\x74\x07\x00\x00\x00\x00\x00\x00\x00\x00\x64\x04\x7c\x03\x9b\x02\x9d\x02\x66\x01\x69\x00\x7c\x04\xa4\x01\x8e\x01\x82\x01\x79\x06\x79\x06",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[500];
+ }
+importlib__bootstrap_external_toplevel_consts_44_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 499,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x56\x61\x6c\x69\x64\x61\x74\x65\x20\x61\x20\x68\x61\x73\x68\x2d\x62\x61\x73\x65\x64\x20\x70\x79\x63\x20\x62\x79\x20\x63\x68\x65\x63\x6b\x69\x6e\x67\x20\x74\x68\x65\x20\x72\x65\x61\x6c\x20\x73\x6f\x75\x72\x63\x65\x20\x68\x61\x73\x68\x20\x61\x67\x61\x69\x6e\x73\x74\x20\x74\x68\x65\x20\x6f\x6e\x65\x20\x69\x6e\x0a\x20\x20\x20\x20\x74\x68\x65\x20\x70\x79\x63\x20\x68\x65\x61\x64\x65\x72\x2e\x0a\x0a\x20\x20\x20\x20\x2a\x64\x61\x74\x61\x2a\x20\x69\x73\x20\x74\x68\x65\x20\x63\x6f\x6e\x74\x65\x6e\x74\x73\x20\x6f\x66\x20\x74\x68\x65\x20\x70\x79\x63\x20\x66\x69\x6c\x65\x2e\x20\x28\x4f\x6e\x6c\x79\x20\x74\x68\x65\x20\x66\x69\x72\x73\x74\x20\x31\x36\x20\x62\x79\x74\x65\x73\x20\x61\x72\x65\x0a\x20\x20\x20\x20\x72\x65\x71\x75\x69\x72\x65\x64\x2e\x29\x0a\x0a\x20\x20\x20\x20\x2a\x73\x6f\x75\x72\x63\x65\x5f\x68\x61\x73\x68\x2a\x20\x69\x73\x20\x74\x68\x65\x20\x69\x6d\x70\x6f\x72\x74\x6c\x69\x62\x2e\x75\x74\x69\x6c\x2e\x73\x6f\x75\x72\x63\x65\x5f\x68\x61\x73\x68\x28\x29\x20\x6f\x66\x20\x74\x68\x65\x20\x73\x6f\x75\x72\x63\x65\x20\x66\x69\x6c\x65\x2e\x0a\x0a\x20\x20\x20\x20\x2a\x6e\x61\x6d\x65\x2a\x20\x69\x73\x20\x74\x68\x65\x20\x6e\x61\x6d\x65\x20\x6f\x66\x20\x74\x68\x65\x20\x6d\x6f\x64\x75\x6c\x65\x20\x62\x65\x69\x6e\x67\x20\x69\x6d\x70\x6f\x72\x74\x65\x64\x2e\x20\x49\x74\x20\x69\x73\x20\x75\x73\x65\x64\x20\x66\x6f\x72\x20\x6c\x6f\x67\x67\x69\x6e\x67\x2e\x0a\x0a\x20\x20\x20\x20\x2a\x65\x78\x63\x5f\x64\x65\x74\x61\x69\x6c\x73\x2a\x20\x69\x73\x20\x61\x20\x64\x69\x63\x74\x69\x6f\x6e\x61\x72\x79\x20\x70\x61\x73\x73\x65\x64\x20\x74\x6f\x20\x49\x6d\x70\x6f\x72\x74\x45\x72\x72\x6f\x72\x20\x69\x66\x20\x69\x74\x20\x72\x61\x69\x73\x65\x64\x20\x66\x6f\x72\x0a\x20\x20\x20\x20\x69\x6d\x70\x72\x6f\x76\x65\x64\x20\x64\x65\x62\x75\x67\x67\x69\x6e\x67\x2e\x0a\x0a\x20\x20\x20\x20\x41\x6e\x20\x49\x6d\x70\x6f\x72\x74\x45\x72\x72\x6f\x72\x20\x69\x73\x20\x72\x61\x69\x73\x65\x64\x20\x69\x66\x20\x74\x68\x65\x20\x62\x79\x74\x65\x63\x6f\x64\x65\x20\x69\x73\x20\x73\x74\x61\x6c\x65\x2e\x0a\x0a\x20\x20\x20\x20",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[47];
+ }
+importlib__bootstrap_external_toplevel_consts_44_consts_3 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 46,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "hash in bytecode doesn't match hash of source ",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[5];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_44_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 5,
+ },
+ .ob_item = {
+ & importlib__bootstrap_external_toplevel_consts_44_consts_0._ascii.ob_base,
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 8],
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 16],
+ & importlib__bootstrap_external_toplevel_consts_44_consts_3._ascii.ob_base,
+ Py_None,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_44_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & const_str_ImportError._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[19];
+ }
+const_str__validate_hash_pyc = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 18,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_validate_hash_pyc",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[55];
+ }
+importlib__bootstrap_external_toplevel_consts_44_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 54,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf0\x22\x00\x08\x0c\x88\x41\x88\x62\x80\x7a\x90\x5b\xd2\x07\x20\xdc\x0e\x19\xd8\x0e\x3d\xb8\x64\xb8\x58\xd0\x0c\x46\xf1\x03\x03\x0f\x0a\xe0\x0e\x19\xf1\x05\x03\x0f\x0a\xf0\x00\x03\x09\x0a\xf0\x03\x00\x08\x21",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[12];
+ }
+const_str_source_hash = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 11,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "source_hash",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[4];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_44_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_item = {
+ &_Py_ID(data),
+ & const_str_source_hash._ascii.ob_base,
+ &_Py_ID(name),
+ & const_str_exc_details._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(50)
+importlib__bootstrap_external_toplevel_consts_44 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 25,
+ },
+ .co_consts = & importlib__bootstrap_external_toplevel_consts_44_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_external_toplevel_consts_44_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 4,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 9 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 5,
+ .co_firstlineno = 727,
+ .co_nlocalsplus = 4,
+ .co_nlocals = 4,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 128,
+ .co_localsplusnames = & importlib__bootstrap_external_toplevel_consts_44_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_7_consts_3_localspluskinds.ob_base.ob_base,
+ .co_filename = & importlib__bootstrap_external_toplevel_consts_6_filename._ascii.ob_base,
+ .co_name = & const_str__validate_hash_pyc._ascii.ob_base,
+ .co_qualname = & const_str__validate_hash_pyc._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_external_toplevel_consts_44_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x00\x64\x01\x64\x02\x1a\x00\x7c\x01\x6b\x37\x00\x00\x72\x0f\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x64\x03\x7c\x02\x9b\x02\x9d\x02\x66\x01\x69\x00\x7c\x03\xa4\x01\x8e\x01\x82\x01\x79\x04",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[36];
+ }
+importlib__bootstrap_external_toplevel_consts_45_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 35,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Compile bytecode as found in a pyc.",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[22];
+ }
+importlib__bootstrap_external_toplevel_consts_45_consts_1 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 21,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "code object from {!r}",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[20];
+ }
+importlib__bootstrap_external_toplevel_consts_45_consts_2 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 19,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Non-code object in ",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_45_consts_3 = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ &_Py_ID(name),
+ &_Py_ID(path),
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[4];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_45_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_item = {
+ & importlib__bootstrap_external_toplevel_consts_45_consts_0._ascii.ob_base,
+ & importlib__bootstrap_external_toplevel_consts_45_consts_1._ascii.ob_base,
+ & importlib__bootstrap_external_toplevel_consts_45_consts_2._ascii.ob_base,
+ & importlib__bootstrap_external_toplevel_consts_45_consts_3._object.ob_base.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[8];
+ }
+const_str_marshal = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 7,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "marshal",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[6];
+ }
+const_str_loads = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 5,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "loads",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[11];
+ }
+const_str__code_type = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 10,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_code_type",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[17];
+ }
+const_str__fix_co_filename = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 16,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_fix_co_filename",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[9];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_45_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 9,
+ },
+ .ob_item = {
+ & const_str_marshal._ascii.ob_base,
+ & const_str_loads._ascii.ob_base,
+ &_Py_ID(isinstance),
+ & const_str__code_type._ascii.ob_base,
+ &_Py_ID(_bootstrap),
+ & const_str__verbose_message._ascii.ob_base,
+ & const_str__imp._ascii.ob_base,
+ & const_str__fix_co_filename._ascii.ob_base,
+ & const_str_ImportError._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[18];
+ }
+const_str__compile_bytecode = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 17,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_compile_bytecode",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[100];
+ }
+importlib__bootstrap_external_toplevel_consts_45_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 99,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xe4\x0b\x12\x8f\x3d\x89\x3d\x98\x14\xd3\x0b\x1e\x80\x44\xdc\x07\x11\x90\x24\x9c\x0a\xd4\x07\x23\xdc\x08\x12\xd7\x08\x23\xd1\x08\x23\xd0\x24\x3b\xb8\x5d\xd4\x08\x4b\xd8\x0b\x16\xd0\x0b\x22\xdc\x0c\x10\xd7\x0c\x21\xd1\x0c\x21\xa0\x24\xa8\x0b\xd4\x0c\x34\xd8\x0f\x13\x88\x0b\xe4\x0e\x19\xd0\x1c\x2f\xb0\x0d\xd0\x2f\x40\xd0\x1a\x41\xd8\x1f\x23\xa8\x2d\xf4\x03\x01\x0f\x39\xf0\x00\x01\x09\x39",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[5];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_45_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 5,
+ },
+ .ob_item = {
+ &_Py_ID(data),
+ &_Py_ID(name),
+ & const_str_bytecode_path._ascii.ob_base,
+ & const_str_source_path._ascii.ob_base,
+ &_Py_ID(code),
+ },
+ },
+};
+static
+ struct _PyCode_DEF(206)
+importlib__bootstrap_external_toplevel_consts_45 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 103,
+ },
+ .co_consts = & importlib__bootstrap_external_toplevel_consts_45_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_external_toplevel_consts_45_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 4,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 10 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 5,
+ .co_firstlineno = 751,
+ .co_nlocalsplus = 5,
+ .co_nlocals = 5,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 129,
+ .co_localsplusnames = & importlib__bootstrap_external_toplevel_consts_45_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_7_consts_5_localspluskinds.ob_base.ob_base,
+ .co_filename = & importlib__bootstrap_external_toplevel_consts_6_filename._ascii.ob_base,
+ .co_name = & const_str__compile_bytecode._ascii.ob_base,
+ .co_qualname = & const_str__compile_bytecode._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_external_toplevel_consts_45_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x04\x74\x05\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x04\x74\x06\x00\x00\x00\x00\x00\x00\x00\x00\xab\x02\x00\x00\x00\x00\x00\x00\x72\x30\x74\x08\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x01\x7c\x02\xab\x02\x00\x00\x00\x00\x00\x00\x01\x00\x7c\x03\x81\x16\x74\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x04\x7c\x03\xab\x02\x00\x00\x00\x00\x00\x00\x01\x00\x7c\x04\x53\x00\x74\x11\x00\x00\x00\x00\x00\x00\x00\x00\x64\x02\x7c\x02\x9b\x02\x9d\x02\x7c\x01\x7c\x02\xac\x03\xab\x03\x00\x00\x00\x00\x00\x00\x82\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[44];
+ }
+importlib__bootstrap_external_toplevel_consts_46_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 43,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Produce the data for a timestamp-based pyc.",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_46_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & importlib__bootstrap_external_toplevel_consts_46_consts_0._ascii.ob_base,
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 0],
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[10];
+ }
+const_str_bytearray = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 9,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "bytearray",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[6];
+ }
+const_str_dumps = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 5,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "dumps",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[6];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_46_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 6,
+ },
+ .ob_item = {
+ & const_str_bytearray._ascii.ob_base,
+ & const_str_MAGIC_NUMBER._ascii.ob_base,
+ &_Py_ID(extend),
+ & const_str__pack_uint32._ascii.ob_base,
+ & const_str_marshal._ascii.ob_base,
+ & const_str_dumps._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[23];
+ }
+const_str__code_to_timestamp_pyc = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 22,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_code_to_timestamp_pyc",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[89];
+ }
+importlib__bootstrap_external_toplevel_consts_46_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 88,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xe4\x0b\x14\x94\x5c\xd3\x0b\x22\x80\x44\xd8\x04\x08\x87\x4b\x81\x4b\x94\x0c\x98\x51\x93\x0f\xd4\x04\x20\xd8\x04\x08\x87\x4b\x81\x4b\x94\x0c\x98\x55\xd3\x10\x23\xd4\x04\x24\xd8\x04\x08\x87\x4b\x81\x4b\x94\x0c\x98\x5b\xd3\x10\x29\xd4\x04\x2a\xd8\x04\x08\x87\x4b\x81\x4b\x94\x07\x97\x0d\x91\x0d\x98\x64\xd3\x10\x23\xd4\x04\x24\xd8\x0b\x0f\x80\x4b",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[6];
+ }
+const_str_mtime = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 5,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "mtime",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[4];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_46_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_item = {
+ &_Py_ID(code),
+ & const_str_mtime._ascii.ob_base,
+ & const_str_source_size._ascii.ob_base,
+ &_Py_ID(data),
+ },
+ },
+};
+static
+ struct _PyCode_DEF(264)
+importlib__bootstrap_external_toplevel_consts_46 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 132,
+ },
+ .co_consts = & importlib__bootstrap_external_toplevel_consts_46_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_external_toplevel_consts_46_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 3,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 9 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 5,
+ .co_firstlineno = 764,
+ .co_nlocalsplus = 4,
+ .co_nlocals = 4,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 130,
+ .co_localsplusnames = & importlib__bootstrap_external_toplevel_consts_46_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_7_consts_3_localspluskinds.ob_base.ob_base,
+ .co_filename = & importlib__bootstrap_external_toplevel_consts_6_filename._ascii.ob_base,
+ .co_name = & const_str__code_to_timestamp_pyc._ascii.ob_base,
+ .co_qualname = & const_str__code_to_timestamp_pyc._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_external_toplevel_consts_46_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x74\x02\x00\x00\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x03\x7c\x03\x6a\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x74\x07\x00\x00\x00\x00\x00\x00\x00\x00\x64\x01\xab\x01\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x7c\x03\x6a\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x74\x07\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\xab\x01\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x7c\x03\x6a\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x74\x07\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x02\xab\x01\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x7c\x03\x6a\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x74\x09\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x7c\x03\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[39];
+ }
+importlib__bootstrap_external_toplevel_consts_47_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 38,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Produce the data for a hash-based pyc.",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_47_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ & importlib__bootstrap_external_toplevel_consts_47_consts_0._ascii.ob_base,
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 1],
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 8],
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[7];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_47_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 7,
+ },
+ .ob_item = {
+ & const_str_bytearray._ascii.ob_base,
+ & const_str_MAGIC_NUMBER._ascii.ob_base,
+ &_Py_ID(extend),
+ & const_str__pack_uint32._ascii.ob_base,
+ &_Py_ID(len),
+ & const_str_marshal._ascii.ob_base,
+ & const_str_dumps._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[18];
+ }
+const_str__code_to_hash_pyc = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 17,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_code_to_hash_pyc",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[98];
+ }
+importlib__bootstrap_external_toplevel_consts_47_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 97,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xe4\x0b\x14\x94\x5c\xd3\x0b\x22\x80\x44\xd8\x0c\x0f\x90\x27\x98\x51\x91\x2c\xd1\x0c\x1e\x80\x45\xd8\x04\x08\x87\x4b\x81\x4b\x94\x0c\x98\x55\xd3\x10\x23\xd4\x04\x24\xdc\x0b\x0e\x88\x7b\xd3\x0b\x1b\x98\x71\xd2\x0b\x20\xd1\x04\x20\xd8\x04\x08\x87\x4b\x81\x4b\x90\x0b\xd4\x04\x1c\xd8\x04\x08\x87\x4b\x81\x4b\x94\x07\x97\x0d\x91\x0d\x98\x64\xd3\x10\x23\xd4\x04\x24\xd8\x0b\x0f\x80\x4b",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[8];
+ }
+const_str_checked = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 7,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "checked",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[5];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_47_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 5,
+ },
+ .ob_item = {
+ &_Py_ID(code),
+ & const_str_source_hash._ascii.ob_base,
+ & const_str_checked._ascii.ob_base,
+ &_Py_ID(data),
+ &_Py_ID(flags),
+ },
+ },
+};
+static
+ struct _PyCode_DEF(242)
+importlib__bootstrap_external_toplevel_consts_47 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 121,
+ },
+ .co_consts = & importlib__bootstrap_external_toplevel_consts_47_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_external_toplevel_consts_47_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 3,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 10 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 5,
+ .co_firstlineno = 774,
+ .co_nlocalsplus = 5,
+ .co_nlocals = 5,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 131,
+ .co_localsplusnames = & importlib__bootstrap_external_toplevel_consts_47_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_7_consts_5_localspluskinds.ob_base.ob_base,
+ .co_filename = & importlib__bootstrap_external_toplevel_consts_6_filename._ascii.ob_base,
+ .co_name = & const_str__code_to_hash_pyc._ascii.ob_base,
+ .co_qualname = & const_str__code_to_hash_pyc._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_external_toplevel_consts_47_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x74\x02\x00\x00\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x03\x64\x01\x7c\x02\x64\x01\x7a\x03\x00\x00\x7a\x07\x00\x00\x7d\x04\x7c\x03\x6a\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x74\x07\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x04\xab\x01\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x74\x09\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\xab\x01\x00\x00\x00\x00\x00\x00\x64\x02\x6b\x28\x00\x00\x73\x02\x4a\x00\x82\x01\x7c\x03\x6a\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x7c\x03\x6a\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x74\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x7c\x03\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[122];
+ }
+importlib__bootstrap_external_toplevel_consts_48_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 121,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x44\x65\x63\x6f\x64\x65\x20\x62\x79\x74\x65\x73\x20\x72\x65\x70\x72\x65\x73\x65\x6e\x74\x69\x6e\x67\x20\x73\x6f\x75\x72\x63\x65\x20\x63\x6f\x64\x65\x20\x61\x6e\x64\x20\x72\x65\x74\x75\x72\x6e\x20\x74\x68\x65\x20\x73\x74\x72\x69\x6e\x67\x2e\x0a\x0a\x20\x20\x20\x20\x55\x6e\x69\x76\x65\x72\x73\x61\x6c\x20\x6e\x65\x77\x6c\x69\x6e\x65\x20\x73\x75\x70\x70\x6f\x72\x74\x20\x69\x73\x20\x75\x73\x65\x64\x20\x69\x6e\x20\x74\x68\x65\x20\x64\x65\x63\x6f\x64\x69\x6e\x67\x2e\x0a\x20\x20\x20\x20",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[4];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_48_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_item = {
+ & importlib__bootstrap_external_toplevel_consts_48_consts_0._ascii.ob_base,
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 0],
+ Py_None,
+ Py_True,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[9];
+ }
+const_str_tokenize = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 8,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "tokenize",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[8];
+ }
+const_str_BytesIO = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 7,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "BytesIO",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[16];
+ }
+const_str_detect_encoding = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 15,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "detect_encoding",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[26];
+ }
+const_str_IncrementalNewlineDecoder = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 25,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "IncrementalNewlineDecoder",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[7];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_48_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 7,
+ },
+ .ob_item = {
+ & const_str_tokenize._ascii.ob_base,
+ &_Py_ID(_io),
+ & const_str_BytesIO._ascii.ob_base,
+ &_Py_ID(readline),
+ & const_str_detect_encoding._ascii.ob_base,
+ & const_str_IncrementalNewlineDecoder._ascii.ob_base,
+ &_Py_ID(decode),
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[14];
+ }
+const_str_decode_source = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 13,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "decode_source",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[96];
+ }
+importlib__bootstrap_external_toplevel_consts_48_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 95,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf3\x0a\x00\x05\x14\xdc\x1c\x1f\x9f\x4b\x99\x4b\xa8\x0c\xd3\x1c\x35\xd7\x1c\x3e\xd1\x1c\x3e\xd0\x04\x19\xd8\x0f\x17\xd7\x0f\x27\xd1\x0f\x27\xd0\x28\x3d\xd3\x0f\x3e\x80\x48\xdc\x16\x19\xd7\x16\x33\xd1\x16\x33\xb0\x44\xb8\x24\xd3\x16\x3f\x80\x4f\xd8\x0b\x1a\xd7\x0b\x21\xd1\x0b\x21\xa0\x2c\xd7\x22\x35\xd1\x22\x35\xb0\x68\xb8\x71\xb1\x6b\xd3\x22\x42\xd3\x0b\x43\xd0\x04\x43",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[13];
+ }
+const_str_source_bytes = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 12,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "source_bytes",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[22];
+ }
+const_str_source_bytes_readline = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 21,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "source_bytes_readline",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[16];
+ }
+const_str_newline_decoder = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 15,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "newline_decoder",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[5];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_48_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 5,
+ },
+ .ob_item = {
+ & const_str_source_bytes._ascii.ob_base,
+ & const_str_tokenize._ascii.ob_base,
+ & const_str_source_bytes_readline._ascii.ob_base,
+ &_Py_ID(encoding),
+ & const_str_newline_decoder._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(220)
+importlib__bootstrap_external_toplevel_consts_48 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 110,
+ },
+ .co_consts = & importlib__bootstrap_external_toplevel_consts_48_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_external_toplevel_consts_48_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 11 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 6,
+ .co_firstlineno = 785,
+ .co_nlocalsplus = 5,
+ .co_nlocals = 5,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 132,
+ .co_localsplusnames = & importlib__bootstrap_external_toplevel_consts_48_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_7_consts_5_localspluskinds.ob_base.ob_base,
+ .co_filename = & importlib__bootstrap_external_toplevel_consts_6_filename._ascii.ob_base,
+ .co_name = & const_str_decode_source._ascii.ob_base,
+ .co_qualname = & const_str_decode_source._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_external_toplevel_consts_48_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x64\x01\x64\x02\x6c\x00\x7d\x01\x74\x03\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x6a\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7d\x02\x7c\x01\x6a\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x02\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x03\x74\x03\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x02\x64\x03\xab\x02\x00\x00\x00\x00\x00\x00\x7d\x04\x7c\x04\x6a\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x6a\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x03\x64\x01\x19\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[318];
+ }
+importlib__bootstrap_external_toplevel_consts_50_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 317,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x52\x65\x74\x75\x72\x6e\x20\x61\x20\x6d\x6f\x64\x75\x6c\x65\x20\x73\x70\x65\x63\x20\x62\x61\x73\x65\x64\x20\x6f\x6e\x20\x61\x20\x66\x69\x6c\x65\x20\x6c\x6f\x63\x61\x74\x69\x6f\x6e\x2e\x0a\x0a\x20\x20\x20\x20\x54\x6f\x20\x69\x6e\x64\x69\x63\x61\x74\x65\x20\x74\x68\x61\x74\x20\x74\x68\x65\x20\x6d\x6f\x64\x75\x6c\x65\x20\x69\x73\x20\x61\x20\x70\x61\x63\x6b\x61\x67\x65\x2c\x20\x73\x65\x74\x0a\x20\x20\x20\x20\x73\x75\x62\x6d\x6f\x64\x75\x6c\x65\x5f\x73\x65\x61\x72\x63\x68\x5f\x6c\x6f\x63\x61\x74\x69\x6f\x6e\x73\x20\x74\x6f\x20\x61\x20\x6c\x69\x73\x74\x20\x6f\x66\x20\x64\x69\x72\x65\x63\x74\x6f\x72\x79\x20\x70\x61\x74\x68\x73\x2e\x20\x20\x41\x6e\x0a\x20\x20\x20\x20\x65\x6d\x70\x74\x79\x20\x6c\x69\x73\x74\x20\x69\x73\x20\x73\x75\x66\x66\x69\x63\x69\x65\x6e\x74\x2c\x20\x74\x68\x6f\x75\x67\x68\x20\x69\x74\x73\x20\x6e\x6f\x74\x20\x6f\x74\x68\x65\x72\x77\x69\x73\x65\x20\x75\x73\x65\x66\x75\x6c\x20\x74\x6f\x20\x74\x68\x65\x0a\x20\x20\x20\x20\x69\x6d\x70\x6f\x72\x74\x20\x73\x79\x73\x74\x65\x6d\x2e\x0a\x0a\x20\x20\x20\x20\x54\x68\x65\x20\x6c\x6f\x61\x64\x65\x72\x20\x6d\x75\x73\x74\x20\x74\x61\x6b\x65\x20\x61\x20\x73\x70\x65\x63\x20\x61\x73\x20\x69\x74\x73\x20\x6f\x6e\x6c\x79\x20\x5f\x5f\x69\x6e\x69\x74\x5f\x5f\x28\x29\x20\x61\x72\x67\x2e\x0a\x0a\x20\x20\x20\x20",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[8];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_50_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 8,
+ },
+ .ob_item = {
+ & importlib__bootstrap_external_toplevel_consts_50_consts_0._ascii.ob_base,
+ Py_None,
+ &_Py_STR(anon_unknown),
+ & const_str_get_filename._ascii.ob_base,
+ & importlib__bootstrap_toplevel_consts_34_consts_2._object.ob_base.ob_base,
+ Py_True,
+ & const_str_is_package._ascii.ob_base,
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 0],
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[28];
+ }
+const_str__get_supported_file_loaders = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 27,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_get_supported_file_loaders",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[10];
+ }
+const_str__POPULATE = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 9,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_POPULATE",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[19];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_50_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 19,
+ },
+ .ob_item = {
+ & const_str_hasattr._ascii.ob_base,
+ & const_str_get_filename._ascii.ob_base,
+ & const_str_ImportError._ascii.ob_base,
+ & const_str__os._ascii.ob_base,
+ & const_str_fspath._ascii.ob_base,
+ & const_str__path_abspath._ascii.ob_base,
+ & const_str_OSError._ascii.ob_base,
+ &_Py_ID(_bootstrap),
+ & const_str_ModuleSpec._ascii.ob_base,
+ & const_str__set_fileattr._ascii.ob_base,
+ & const_str__get_supported_file_loaders._ascii.ob_base,
+ & const_str_endswith._ascii.ob_base,
+ & const_str_tuple._ascii.ob_base,
+ & const_str_loader._ascii.ob_base,
+ & const_str__POPULATE._ascii.ob_base,
+ & const_str_is_package._ascii.ob_base,
+ & const_str_submodule_search_locations._ascii.ob_base,
+ & const_str__path_split._ascii.ob_base,
+ &_Py_ID(append),
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[366];
+ }
+importlib__bootstrap_external_toplevel_consts_50_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 365,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf0\x18\x00\x08\x10\xd0\x07\x17\xf0\x08\x00\x14\x1f\x88\x08\xdc\x0b\x12\x90\x36\x98\x3e\xd4\x0b\x2a\xf0\x04\x03\x0d\x15\xd8\x1b\x21\xd7\x1b\x2e\xd1\x1b\x2e\xa8\x74\xd3\x1b\x34\x91\x08\xf4\x08\x00\x14\x17\x97\x3a\x91\x3a\x98\x68\xd3\x13\x27\x88\x08\xf0\x02\x03\x09\x11\xdc\x17\x24\xa0\x58\xd3\x17\x2e\x88\x48\xf4\x14\x00\x0c\x16\xd7\x0b\x20\xd1\x0b\x20\xa0\x14\xa0\x76\xb0\x68\xd0\x0b\x20\xd3\x0b\x3f\x80\x44\xd8\x19\x1d\x80\x44\xd4\x04\x16\xf0\x06\x00\x08\x0e\x80\x7e\xdc\x26\x41\xd3\x26\x43\xf2\x00\x06\x09\x18\xd1\x0c\x22\x88\x4c\x98\x28\xd8\x0f\x17\xd7\x0f\x20\xd1\x0f\x20\xa4\x15\xa0\x78\xa3\x1f\xd5\x0f\x31\xd9\x19\x25\xa0\x64\xa8\x48\xd3\x19\x35\x90\x06\xd8\x1e\x24\x90\x04\x94\x0b\xd9\x10\x15\xf0\x09\x06\x09\x18\xf0\x0c\x00\x14\x18\xf0\x06\x00\x08\x22\xa4\x59\xd1\x07\x2e\xe4\x0b\x12\x90\x36\x98\x3c\xd4\x0b\x28\xf0\x02\x06\x0d\x39\xd8\x1d\x23\xd7\x1d\x2e\xd1\x1d\x2e\xa8\x74\xd3\x1d\x34\x90\x0a\xf1\x08\x00\x14\x1e\xd8\x36\x38\x90\x44\xd5\x14\x33\xe0\x2a\x44\x88\x04\xd4\x08\x27\xd8\x07\x0b\xd7\x07\x26\xd1\x07\x26\xa8\x22\xd2\x07\x2c\xd9\x0b\x13\xdc\x16\x21\xa0\x28\xd3\x16\x2b\xa8\x41\xd1\x16\x2e\x88\x47\xd8\x0c\x10\xd7\x0c\x2b\xd1\x0c\x2b\xd7\x0c\x32\xd1\x0c\x32\xb0\x37\xd4\x0c\x3b\xe0\x0b\x0f\x80\x4b\xf8\xf4\x5d\x01\x00\x14\x1f\xf2\x00\x01\x0d\x15\xd9\x10\x14\xf0\x03\x01\x0d\x15\xfb\xf4\x0c\x00\x10\x17\xf2\x00\x01\x09\x11\xd9\x0c\x10\xf0\x03\x01\x09\x11\xfb\xf4\x38\x00\x14\x1f\xf2\x00\x01\x0d\x15\xd9\x10\x14\xf0\x03\x01\x0d\x15\xfa",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[53];
+ }
+importlib__bootstrap_external_toplevel_consts_50_exceptiontable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 52,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x92\x11\x44\x18\x00\xba\x0b\x44\x27\x00\xc2\x3a\x11\x44\x36\x00\xc4\x18\x09\x44\x24\x03\xc4\x23\x01\x44\x24\x03\xc4\x27\x09\x44\x33\x03\xc4\x32\x01\x44\x33\x03\xc4\x36\x09\x45\x02\x03\xc5\x01\x01\x45\x02\x03",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[13];
+ }
+const_str_loader_class = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 12,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "loader_class",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[9];
+ }
+const_str_suffixes = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 8,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "suffixes",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[8];
+ }
+const_str_dirname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 7,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "dirname",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[9];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_50_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 9,
+ },
+ .ob_item = {
+ &_Py_ID(name),
+ & const_str_location._ascii.ob_base,
+ & const_str_loader._ascii.ob_base,
+ & const_str_submodule_search_locations._ascii.ob_base,
+ & const_str_spec._ascii.ob_base,
+ & const_str_loader_class._ascii.ob_base,
+ & const_str_suffixes._ascii.ob_base,
+ & const_str_is_package._ascii.ob_base,
+ & const_str_dirname._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(650)
+importlib__bootstrap_external_toplevel_consts_50 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 325,
+ },
+ .co_consts = & importlib__bootstrap_external_toplevel_consts_50_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_external_toplevel_consts_50_names._object.ob_base.ob_base,
+ .co_exceptiontable = & importlib__bootstrap_external_toplevel_consts_50_exceptiontable.ob_base.ob_base,
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 2,
+ .co_framesize = 15 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 6,
+ .co_firstlineno = 802,
+ .co_nlocalsplus = 9,
+ .co_nlocals = 9,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 133,
+ .co_localsplusnames = & importlib__bootstrap_external_toplevel_consts_50_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_61_localspluskinds.ob_base.ob_base,
+ .co_filename = & importlib__bootstrap_external_toplevel_consts_6_filename._ascii.ob_base,
+ .co_name = & const_str_spec_from_file_location._ascii.ob_base,
+ .co_qualname = & const_str_spec_from_file_location._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_external_toplevel_consts_50_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x01\x80\x21\x64\x02\x7d\x01\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x02\x64\x03\xab\x02\x00\x00\x00\x00\x00\x00\x72\x34\x09\x00\x7c\x02\x6a\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x01\x6e\x21\x74\x07\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x01\x09\x00\x74\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x01\x74\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x11\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x7c\x02\x7c\x01\xac\x04\xab\x03\x00\x00\x00\x00\x00\x00\x7d\x04\x64\x05\x7c\x04\x5f\x09\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x02\x80\x3f\x74\x15\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x44\x00\x5d\x31\x00\x00\x5c\x02\x00\x00\x7d\x05\x7d\x06\x7c\x01\x6a\x17\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x74\x19\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x06\xab\x01\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x73\x01\x8c\x21\x02\x00\x7c\x05\x7c\x00\x7c\x01\xab\x02\x00\x00\x00\x00\x00\x00\x7d\x02\x7c\x02\x7c\x04\x5f\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x6e\x02\x04\x00\x79\x01\x7c\x03\x74\x1c\x00\x00\x00\x00\x00\x00\x00\x00\x75\x00\x72\x28\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x02\x64\x06\xab\x02\x00\x00\x00\x00\x00\x00\x72\x23\x09\x00\x7c\x02\x6a\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x07\x7c\x07\x72\x0f\x67\x00\x7c\x04\x5f\x10\x00\x00\x00\x00\x00\x00\x00\x00\x6e\x07\x7c\x03\x7c\x04\x5f\x10\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x04\x6a\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x67\x00\x6b\x28\x00\x00\x72\x2b\x7c\x01\x72\x29\x74\x23\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\xab\x01\x00\x00\x00\x00\x00\x00\x64\x07\x19\x00\x00\x00\x7d\x08\x7c\x04\x6a\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x08\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x7c\x04\x53\x00\x23\x00\x74\x04\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x72\x03\x01\x00\x59\x00\x8c\xde\x77\x00\x78\x03\x59\x00\x77\x01\x23\x00\x74\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x72\x03\x01\x00\x59\x00\x8c\xed\x77\x00\x78\x03\x59\x00\x77\x01\x23\x00\x74\x04\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x72\x03\x01\x00\x59\x00\x8c\x65\x77\x00\x78\x03\x59\x00\x77\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[68];
+ }
+importlib__bootstrap_external_toplevel_consts_51_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 67,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x48\x65\x6c\x70\x65\x72\x20\x66\x75\x6e\x63\x74\x69\x6f\x6e\x20\x66\x6f\x72\x20\x5f\x77\x61\x72\x6e\x69\x6e\x67\x73\x2e\x63\x0a\x0a\x20\x20\x20\x20\x53\x65\x65\x20\x47\x48\x23\x39\x37\x38\x35\x30\x20\x66\x6f\x72\x20\x64\x65\x74\x61\x69\x6c\x73\x2e\x0a\x20\x20\x20\x20",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[44];
+ }
+importlib__bootstrap_external_toplevel_consts_51_consts_4 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 43,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Module globals is missing a __spec__.loader",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[46];
+ }
+importlib__bootstrap_external_toplevel_consts_51_consts_6 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 45,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Module globals; __loader__ != __spec__.loader",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[7];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_51_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 7,
+ },
+ .ob_item = {
+ & importlib__bootstrap_external_toplevel_consts_51_consts_0._ascii.ob_base,
+ Py_None,
+ &_Py_ID(__loader__),
+ &_Py_ID(__spec__),
+ & importlib__bootstrap_external_toplevel_consts_51_consts_4._ascii.ob_base,
+ & const_str_loader._ascii.ob_base,
+ & importlib__bootstrap_external_toplevel_consts_51_consts_6._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[10];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_51_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 10,
+ },
+ .ob_item = {
+ &_Py_ID(isinstance),
+ &_Py_ID(dict),
+ &_Py_ID(object),
+ &_Py_ID(get),
+ & const_str_ValueError._ascii.ob_base,
+ &_Py_ID(getattr),
+ & const_str_AttributeError._ascii.ob_base,
+ & const_str__warnings._ascii.ob_base,
+ & const_str_warn._ascii.ob_base,
+ & const_str_DeprecationWarning._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[17];
+ }
+const_str__bless_my_loader = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 16,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_bless_my_loader",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[230];
+ }
+importlib__bootstrap_external_toplevel_consts_51_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 229,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf4\x18\x00\x0c\x16\x90\x6e\xa4\x64\xd4\x0b\x2b\xd8\x0f\x13\xe4\x0e\x14\x8b\x68\x80\x47\xd8\x0d\x1b\xd7\x0d\x1f\xd1\x0d\x1f\xa0\x0c\xa8\x64\xd3\x0d\x33\x80\x46\xd8\x0b\x19\xd7\x0b\x1d\xd1\x0b\x1d\x98\x6a\xa8\x27\xd3\x0b\x32\x80\x44\xe0\x07\x0d\x80\x7e\xd8\x0b\x0f\x90\x37\x89\x3f\xf0\x06\x00\x14\x18\xd8\x0d\x11\x88\x5c\xdc\x12\x1c\xd0\x1d\x4a\xd3\x12\x4b\xd0\x0c\x4b\xe4\x12\x19\x98\x24\xa0\x08\xa8\x27\xd3\x12\x32\x80\x4b\xe0\x07\x12\x90\x77\xa0\x04\x90\x6f\xd1\x07\x25\xd8\x0b\x11\x88\x3e\xd8\x24\x2f\xb0\x37\xd1\x24\x3a\x95\x2e\xc4\x0a\x88\x43\xd9\x12\x15\xd0\x16\x43\xd3\x12\x44\xd0\x0c\x44\xdc\x08\x11\x8f\x0e\x89\x0e\xd8\x0c\x39\xdc\x0c\x1e\xf4\x05\x02\x09\x20\xf0\x06\x00\x17\x1d\x88\x0b\xe0\x0b\x16\xd0\x0b\x22\xd1\x04\x22\xd8\x07\x0d\xd0\x07\x19\x98\x66\xa8\x0b\xd2\x1e\x33\xdc\x08\x11\x8f\x0e\x89\x0e\xd8\x0c\x3b\xdc\x0c\x1e\xf4\x05\x02\x09\x20\xf0\x06\x00\x10\x16\x88\x0d\xe0\x0b\x16\xd0\x04\x16",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[8];
+ }
+const_str_missing = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 7,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "missing",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[12];
+ }
+const_str_spec_loader = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 11,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "spec_loader",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[6];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_51_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 6,
+ },
+ .ob_item = {
+ &_Py_ID(module_globals),
+ & const_str_missing._ascii.ob_base,
+ & const_str_loader._ascii.ob_base,
+ & const_str_spec._ascii.ob_base,
+ & const_str_spec_loader._ascii.ob_base,
+ & const_str_exc._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(396)
+importlib__bootstrap_external_toplevel_consts_51 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 198,
+ },
+ .co_consts = & importlib__bootstrap_external_toplevel_consts_51_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_external_toplevel_consts_51_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 11 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 5,
+ .co_firstlineno = 872,
+ .co_nlocalsplus = 6,
+ .co_nlocals = 6,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 134,
+ .co_localsplusnames = & importlib__bootstrap_external_toplevel_consts_51_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_30_consts_4_localspluskinds.ob_base.ob_base,
+ .co_filename = & importlib__bootstrap_external_toplevel_consts_6_filename._ascii.ob_base,
+ .co_name = & const_str__bless_my_loader._ascii.ob_base,
+ .co_qualname = & const_str__bless_my_loader._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_external_toplevel_consts_51_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x74\x02\x00\x00\x00\x00\x00\x00\x00\x00\xab\x02\x00\x00\x00\x00\x00\x00\x73\x01\x79\x01\x74\x05\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x7d\x01\x7c\x00\x6a\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x02\x64\x01\xab\x02\x00\x00\x00\x00\x00\x00\x7d\x02\x7c\x00\x6a\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x03\x7c\x01\xab\x02\x00\x00\x00\x00\x00\x00\x7d\x03\x7c\x02\x80\x12\x7c\x03\x7c\x01\x75\x00\x72\x01\x79\x01\x7c\x03\x80\x0b\x74\x09\x00\x00\x00\x00\x00\x00\x00\x00\x64\x04\xab\x01\x00\x00\x00\x00\x00\x00\x82\x01\x74\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x03\x64\x05\x7c\x01\xab\x03\x00\x00\x00\x00\x00\x00\x7d\x04\x7c\x04\x7c\x01\x64\x01\x66\x02\x76\x00\x72\x36\x7c\x02\x80\x18\x7c\x04\x7c\x01\x75\x00\x72\x06\x74\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x6e\x05\x74\x08\x00\x00\x00\x00\x00\x00\x00\x00\x7d\x05\x02\x00\x7c\x05\x64\x04\xab\x01\x00\x00\x00\x00\x00\x00\x82\x01\x74\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x04\x74\x12\x00\x00\x00\x00\x00\x00\x00\x00\xab\x02\x00\x00\x00\x00\x00\x00\x01\x00\x7c\x02\x7d\x04\x7c\x04\x80\x02\x4a\x00\x82\x01\x7c\x02\x81\x21\x7c\x02\x7c\x04\x6b\x37\x00\x00\x72\x1c\x74\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x06\x74\x12\x00\x00\x00\x00\x00\x00\x00\x00\xab\x02\x00\x00\x00\x00\x00\x00\x01\x00\x7c\x02\x53\x00\x7c\x04\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[22];
+ }
+const_str_WindowsRegistryFinder = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 21,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "WindowsRegistryFinder",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[63];
+ }
+importlib__bootstrap_external_toplevel_consts_52_consts_1 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 62,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Meta path finder for modules declared in the Windows registry.",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[60];
+ }
+importlib__bootstrap_external_toplevel_consts_52_consts_2 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 59,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Software\\Python\\PythonCore\\{sys_version}\\Modules\\{fullname}",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[66];
+ }
+importlib__bootstrap_external_toplevel_consts_52_consts_3 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 65,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Software\\Python\\PythonCore\\{sys_version}\\Modules\\{fullname}\\Debug",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[7];
+ }
+importlib__bootstrap_external_toplevel_consts_52_consts_4 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 6,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_d.pyd",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[7];
+ }
+const_str_winreg = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 6,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "winreg",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[8];
+ }
+const_str_OpenKey = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 7,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "OpenKey",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[18];
+ }
+const_str_HKEY_CURRENT_USER = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 17,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "HKEY_CURRENT_USER",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[19];
+ }
+const_str_HKEY_LOCAL_MACHINE = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 18,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "HKEY_LOCAL_MACHINE",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[5];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_52_consts_5_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 5,
+ },
+ .ob_item = {
+ & const_str_winreg._ascii.ob_base,
+ & const_str_OpenKey._ascii.ob_base,
+ & const_str_HKEY_CURRENT_USER._ascii.ob_base,
+ & const_str_OSError._ascii.ob_base,
+ & const_str_HKEY_LOCAL_MACHINE._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[15];
+ }
+const_str__open_registry = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 14,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_open_registry",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[37];
+ }
+importlib__bootstrap_external_toplevel_consts_52_consts_5_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 36,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "WindowsRegistryFinder._open_registry",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[72];
+ }
+importlib__bootstrap_external_toplevel_consts_52_consts_5_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 71,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf0\x04\x03\x09\x42\x01\xdc\x13\x19\x97\x3e\x91\x3e\xa4\x26\xd7\x22\x3a\xd1\x22\x3a\xb8\x43\xd3\x13\x40\xd0\x0c\x40\xf8\xdc\x0f\x16\xf2\x00\x01\x09\x42\x01\xdc\x13\x19\x97\x3e\x91\x3e\xa4\x26\xd7\x22\x3b\xd1\x22\x3b\xb8\x53\xd3\x13\x41\xd2\x0c\x41\xf0\x03\x01\x09\x42\x01\xfa",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[16];
+ }
+importlib__bootstrap_external_toplevel_consts_52_consts_5_exceptiontable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 15,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x82\x23\x26\x00\xa6\x2d\x41\x16\x03\xc1\x15\x01\x41\x16\x03",
+};
+static
+ struct _PyCode_DEF(178)
+importlib__bootstrap_external_toplevel_consts_52_consts_5 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 89,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_1_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_external_toplevel_consts_52_consts_5_names._object.ob_base.ob_base,
+ .co_exceptiontable = & importlib__bootstrap_external_toplevel_consts_52_consts_5_exceptiontable.ob_base.ob_base,
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 6 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 5,
+ .co_firstlineno = 934,
+ .co_nlocalsplus = 1,
+ .co_nlocals = 1,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 135,
+ .co_localsplusnames = & importlib__bootstrap_toplevel_consts_7_consts_1_consts_1_consts_1._object.ob_base.ob_base,
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_characters[32]),
+ .co_filename = & importlib__bootstrap_external_toplevel_consts_6_filename._ascii.ob_base,
+ .co_name = & const_str__open_registry._ascii.ob_base,
+ .co_qualname = & importlib__bootstrap_external_toplevel_consts_52_consts_5_qualname._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_external_toplevel_consts_52_consts_5_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x09\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x02\x00\x00\x00\x00\x00\x00\x53\x00\x23\x00\x74\x06\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x72\x27\x01\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x02\x00\x00\x00\x00\x00\x00\x63\x02\x59\x00\x53\x00\x77\x00\x78\x03\x59\x00\x77\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[6];
+ }
+importlib__bootstrap_external_toplevel_consts_52_consts_6_consts_1 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 5,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "%d.%d",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[12];
+ }
+const_str_sys_version = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 11,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "sys_version",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_52_consts_6_consts_3 = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & const_str_fullname._ascii.ob_base,
+ & const_str_sys_version._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[5];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_52_consts_6_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 5,
+ },
+ .ob_item = {
+ Py_None,
+ & importlib__bootstrap_external_toplevel_consts_52_consts_6_consts_1._ascii.ob_base,
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 2],
+ & importlib__bootstrap_external_toplevel_consts_52_consts_6_consts_3._object.ob_base.ob_base,
+ &_Py_STR(empty),
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[12];
+ }
+const_str_DEBUG_BUILD = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 11,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "DEBUG_BUILD",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[19];
+ }
+const_str_REGISTRY_KEY_DEBUG = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 18,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "REGISTRY_KEY_DEBUG",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[13];
+ }
+const_str_REGISTRY_KEY = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 12,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "REGISTRY_KEY",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[13];
+ }
+const_str_version_info = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 12,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "version_info",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[11];
+ }
+const_str_QueryValue = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 10,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "QueryValue",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[10];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_52_consts_6_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 10,
+ },
+ .ob_item = {
+ & const_str_DEBUG_BUILD._ascii.ob_base,
+ & const_str_REGISTRY_KEY_DEBUG._ascii.ob_base,
+ & const_str_REGISTRY_KEY._ascii.ob_base,
+ &_Py_ID(format),
+ & const_str_sys._ascii.ob_base,
+ & const_str_version_info._ascii.ob_base,
+ & const_str__open_registry._ascii.ob_base,
+ & const_str_winreg._ascii.ob_base,
+ & const_str_QueryValue._ascii.ob_base,
+ & const_str_OSError._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[17];
+ }
+const_str__search_registry = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 16,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_search_registry",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[39];
+ }
+importlib__bootstrap_external_toplevel_consts_52_consts_6_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 38,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "WindowsRegistryFinder._search_registry",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[165];
+ }
+importlib__bootstrap_external_toplevel_consts_52_consts_6_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 164,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xe0\x0b\x0e\x8f\x3f\x8a\x3f\xd8\x1b\x1e\xd7\x1b\x31\xd1\x1b\x31\x89\x4c\xe0\x1b\x1e\xd7\x1b\x2b\xd1\x1b\x2b\x88\x4c\xd8\x0e\x1a\xd7\x0e\x21\xd1\x0e\x21\xa8\x38\xd8\x2e\x35\xbc\x03\xd7\x38\x48\xd1\x38\x48\xc8\x12\xc8\x21\xd0\x38\x4c\xd1\x2e\x4c\xf0\x03\x00\x0f\x22\xf3\x00\x01\x0f\x4e\x01\x88\x03\xf0\x04\x04\x09\x18\xd8\x11\x14\xd7\x11\x23\xd1\x11\x23\xa0\x43\xd3\x11\x28\xf0\x00\x01\x0d\x37\xa8\x44\xdc\x1b\x21\xd7\x1b\x2c\xd1\x1b\x2c\xa8\x54\xb0\x32\xd3\x1b\x36\x90\x08\xf7\x03\x01\x0d\x37\xf0\x08\x00\x10\x18\x88\x0f\xf7\x09\x01\x0d\x37\xf0\x08\x00\x10\x18\x88\x0f\xfb\xf4\x05\x00\x10\x17\xf2\x00\x01\x09\x18\xd9\x13\x17\xf0\x03\x01\x09\x18\xfa",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[49];
+ }
+importlib__bootstrap_external_toplevel_consts_52_consts_6_exceptiontable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 48,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\xc1\x0e\x11\x42\x0d\x00\xc1\x1f\x17\x42\x00\x03\xc1\x36\x08\x42\x0d\x00\xc2\x00\x05\x42\x0a\x07\xc2\x05\x03\x42\x0d\x00\xc2\x0a\x03\x42\x0d\x00\xc2\x0d\x09\x42\x19\x03\xc2\x18\x01\x42\x19\x03",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[13];
+ }
+const_str_registry_key = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 12,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "registry_key",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[5];
+ }
+const_str_hkey = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 4,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "hkey",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[6];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_52_consts_6_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 6,
+ },
+ .ob_item = {
+ & const_str_cls._ascii.ob_base,
+ & const_str_fullname._ascii.ob_base,
+ & const_str_registry_key._ascii.ob_base,
+ &_Py_ID(key),
+ & const_str_hkey._ascii.ob_base,
+ &_Py_ID(filepath),
+ },
+ },
+};
+static
+ struct _PyCode_DEF(312)
+importlib__bootstrap_external_toplevel_consts_52_consts_6 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 156,
+ },
+ .co_consts = & importlib__bootstrap_external_toplevel_consts_52_consts_6_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_external_toplevel_consts_52_consts_6_names._object.ob_base.ob_base,
+ .co_exceptiontable = & importlib__bootstrap_external_toplevel_consts_52_consts_6_exceptiontable.ob_base.ob_base,
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 13 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 7,
+ .co_firstlineno = 941,
+ .co_nlocalsplus = 6,
+ .co_nlocals = 6,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 136,
+ .co_localsplusnames = & importlib__bootstrap_external_toplevel_consts_52_consts_6_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_30_consts_4_localspluskinds.ob_base.ob_base,
+ .co_filename = & importlib__bootstrap_external_toplevel_consts_6_filename._ascii.ob_base,
+ .co_name = & const_str__search_registry._ascii.ob_base,
+ .co_qualname = & importlib__bootstrap_external_toplevel_consts_52_consts_6_qualname._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_external_toplevel_consts_52_consts_6_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x72\x0d\x7c\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7d\x02\x6e\x0c\x7c\x00\x6a\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7d\x02\x7c\x02\x6a\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x64\x01\x74\x08\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x00\x64\x02\x1a\x00\x7a\x06\x00\x00\xac\x03\xab\x02\x00\x00\x00\x00\x00\x00\x7d\x03\x09\x00\x7c\x00\x6a\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x03\xab\x01\x00\x00\x00\x00\x00\x00\x35\x00\x7d\x04\x74\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x04\x64\x04\xab\x02\x00\x00\x00\x00\x00\x00\x7d\x05\x64\x00\x64\x00\x64\x00\xab\x02\x00\x00\x00\x00\x00\x00\x01\x00\x7c\x05\x53\x00\x23\x00\x31\x00\x73\x01\x77\x02\x01\x00\x59\x00\x01\x00\x01\x00\x7f\x05\x53\x00\x78\x03\x59\x00\x77\x01\x23\x00\x74\x12\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x72\x03\x01\x00\x59\x00\x79\x00\x77\x00\x78\x03\x59\x00\x77\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[8];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_52_consts_8_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 8,
+ },
+ .ob_item = {
+ & const_str__search_registry._ascii.ob_base,
+ & const_str__path_stat._ascii.ob_base,
+ & const_str_OSError._ascii.ob_base,
+ & const_str__get_supported_file_loaders._ascii.ob_base,
+ & const_str_endswith._ascii.ob_base,
+ & const_str_tuple._ascii.ob_base,
+ &_Py_ID(_bootstrap),
+ & const_str_spec_from_loader._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[32];
+ }
+importlib__bootstrap_external_toplevel_consts_52_consts_8_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 31,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "WindowsRegistryFinder.find_spec",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[148];
+ }
+importlib__bootstrap_external_toplevel_consts_52_consts_8_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 147,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xe0\x13\x16\xd7\x13\x27\xd1\x13\x27\xa8\x08\xd3\x13\x31\x88\x08\xd8\x0b\x13\xd0\x0b\x1b\xd8\x13\x17\xf0\x02\x03\x09\x18\xdc\x0c\x16\x90\x78\xd4\x0c\x20\xf4\x06\x00\x21\x3c\xd3\x20\x3d\xf2\x00\x05\x09\x1c\xd1\x0c\x1c\x88\x46\x90\x48\xd8\x0f\x17\xd7\x0f\x20\xd1\x0f\x20\xa4\x15\xa0\x78\xa3\x1f\xd5\x0f\x31\xdc\x17\x21\xd7\x17\x32\xd1\x17\x32\xb0\x38\xd9\x33\x39\xb8\x28\xc0\x48\xd3\x33\x4d\xd8\x3a\x42\xf0\x05\x00\x18\x33\xf3\x00\x02\x18\x44\x01\x90\x04\xf0\x06\x00\x18\x1c\x92\x0b\xf1\x0b\x05\x09\x1c\xf8\xf4\x05\x00\x10\x17\xf2\x00\x01\x09\x18\xd9\x13\x17\xf0\x03\x01\x09\x18\xfa",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[18];
+ }
+importlib__bootstrap_external_toplevel_consts_52_consts_8_exceptiontable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 17,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x96\x0b\x41\x31\x00\xc1\x31\x09\x41\x3d\x03\xc1\x3c\x01\x41\x3d\x03",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[8];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_52_consts_8_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 8,
+ },
+ .ob_item = {
+ & const_str_cls._ascii.ob_base,
+ & const_str_fullname._ascii.ob_base,
+ &_Py_ID(path),
+ &_Py_ID(target),
+ &_Py_ID(filepath),
+ & const_str_loader._ascii.ob_base,
+ & const_str_suffixes._ascii.ob_base,
+ & const_str_spec._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(256)
+importlib__bootstrap_external_toplevel_consts_52_consts_8 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 128,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_44_consts_4_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_external_toplevel_consts_52_consts_8_names._object.ob_base.ob_base,
+ .co_exceptiontable = & importlib__bootstrap_external_toplevel_consts_52_consts_8_exceptiontable.ob_base.ob_base,
+ .co_flags = 3,
+ .co_argcount = 4,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 16 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 8,
+ .co_firstlineno = 956,
+ .co_nlocalsplus = 8,
+ .co_nlocals = 8,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 137,
+ .co_localsplusnames = & importlib__bootstrap_external_toplevel_consts_52_consts_8_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_13_localspluskinds.ob_base.ob_base,
+ .co_filename = & importlib__bootstrap_external_toplevel_consts_6_filename._ascii.ob_base,
+ .co_name = & const_str_find_spec._ascii.ob_base,
+ .co_qualname = & importlib__bootstrap_external_toplevel_consts_52_consts_8_qualname._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_external_toplevel_consts_52_consts_8_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x00\x6a\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x04\x7c\x04\x80\x01\x79\x00\x09\x00\x74\x03\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x04\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x74\x07\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x44\x00\x5d\x42\x00\x00\x5c\x02\x00\x00\x7d\x05\x7d\x06\x7c\x04\x6a\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x74\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x06\xab\x01\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x73\x01\x8c\x21\x74\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x02\x00\x7c\x05\x7c\x01\x7c\x04\xab\x02\x00\x00\x00\x00\x00\x00\x7c\x04\xac\x01\xab\x03\x00\x00\x00\x00\x00\x00\x7d\x07\x7c\x07\x63\x02\x01\x00\x53\x00\x04\x00\x79\x00\x23\x00\x74\x04\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x72\x03\x01\x00\x59\x00\x79\x00\x77\x00\x78\x03\x59\x00\x77\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[10];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_52_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 10,
+ },
+ .ob_item = {
+ & const_str_WindowsRegistryFinder._ascii.ob_base,
+ & importlib__bootstrap_external_toplevel_consts_52_consts_1._ascii.ob_base,
+ & importlib__bootstrap_external_toplevel_consts_52_consts_2._ascii.ob_base,
+ & importlib__bootstrap_external_toplevel_consts_52_consts_3._ascii.ob_base,
+ & importlib__bootstrap_external_toplevel_consts_52_consts_4._ascii.ob_base,
+ & importlib__bootstrap_external_toplevel_consts_52_consts_5.ob_base.ob_base,
+ & importlib__bootstrap_external_toplevel_consts_52_consts_6.ob_base.ob_base,
+ Py_None,
+ & importlib__bootstrap_external_toplevel_consts_52_consts_8.ob_base.ob_base,
+ & importlib__bootstrap_toplevel_consts_44_consts_10._object.ob_base.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[12];
+ }
+const_str__MS_WINDOWS = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 11,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_MS_WINDOWS",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[19];
+ }
+const_str_EXTENSION_SUFFIXES = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 18,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "EXTENSION_SUFFIXES",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[14];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_52_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 14,
+ },
+ .ob_item = {
+ &_Py_ID(__name__),
+ &_Py_ID(__module__),
+ &_Py_ID(__qualname__),
+ &_Py_ID(__doc__),
+ & const_str_REGISTRY_KEY._ascii.ob_base,
+ & const_str_REGISTRY_KEY_DEBUG._ascii.ob_base,
+ & const_str__MS_WINDOWS._ascii.ob_base,
+ & const_str_EXTENSION_SUFFIXES._ascii.ob_base,
+ & const_str_DEBUG_BUILD._ascii.ob_base,
+ & const_str_staticmethod._ascii.ob_base,
+ & const_str__open_registry._ascii.ob_base,
+ & const_str_classmethod._ascii.ob_base,
+ & const_str__search_registry._ascii.ob_base,
+ & const_str_find_spec._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[104];
+ }
+importlib__bootstrap_external_toplevel_consts_52_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 103,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x84\x00\xe1\x04\x48\xf0\x06\x01\x09\x20\xf0\x03\x00\x05\x11\xf0\x08\x01\x09\x27\xf0\x03\x00\x05\x17\xf0\x06\x00\x14\x1f\xd2\x13\x41\xa0\x38\xd0\x2f\x41\xd0\x23\x41\x80\x4b\xe0\x05\x11\xf1\x02\x04\x05\x42\x01\xf3\x03\x00\x06\x12\xf0\x02\x04\x05\x42\x01\xf0\x0c\x00\x06\x11\xf1\x02\x0c\x05\x18\xf3\x03\x00\x06\x11\xf0\x02\x0c\x05\x18\xf0\x1c\x00\x06\x11\xf2\x02\x0d\x05\x1c\xf3\x03\x00\x06\x11\xf1\x02\x0d\x05\x1c",
+};
+static
+ struct _PyCode_DEF(90)
+importlib__bootstrap_external_toplevel_consts_52 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 45,
+ },
+ .co_consts = & importlib__bootstrap_external_toplevel_consts_52_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_external_toplevel_consts_52_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 0,
+ .co_argcount = 0,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 3 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 3,
+ .co_firstlineno = 922,
+ .co_nlocalsplus = 0,
+ .co_nlocals = 0,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 138,
+ .co_localsplusnames = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_filename = & importlib__bootstrap_external_toplevel_consts_6_filename._ascii.ob_base,
+ .co_name = & const_str_WindowsRegistryFinder._ascii.ob_base,
+ .co_qualname = & const_str_WindowsRegistryFinder._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_external_toplevel_consts_52_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x65\x00\x5a\x01\x64\x00\x5a\x02\x64\x01\x5a\x03\x64\x02\x5a\x04\x64\x03\x5a\x05\x65\x06\x78\x01\x72\x04\x01\x00\x64\x04\x65\x07\x76\x00\x5a\x08\x65\x09\x64\x05\x84\x00\xab\x00\x00\x00\x00\x00\x00\x00\x5a\x0a\x65\x0b\x64\x06\x84\x00\xab\x00\x00\x00\x00\x00\x00\x00\x5a\x0c\x65\x0b\x64\x09\x64\x08\x84\x01\xab\x00\x00\x00\x00\x00\x00\x00\x5a\x0d\x79\x07",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[14];
+ }
+const_str__LoaderBasics = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 13,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_LoaderBasics",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[84];
+ }
+importlib__bootstrap_external_toplevel_consts_54_consts_1 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 83,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x42\x61\x73\x65\x20\x63\x6c\x61\x73\x73\x20\x6f\x66\x20\x63\x6f\x6d\x6d\x6f\x6e\x20\x63\x6f\x64\x65\x20\x6e\x65\x65\x64\x65\x64\x20\x62\x79\x20\x62\x6f\x74\x68\x20\x53\x6f\x75\x72\x63\x65\x4c\x6f\x61\x64\x65\x72\x20\x61\x6e\x64\x0a\x20\x20\x20\x20\x53\x6f\x75\x72\x63\x65\x6c\x65\x73\x73\x46\x69\x6c\x65\x4c\x6f\x61\x64\x65\x72\x2e",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[142];
+ }
+importlib__bootstrap_external_toplevel_consts_54_consts_2_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 141,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x43\x6f\x6e\x63\x72\x65\x74\x65\x20\x69\x6d\x70\x6c\x65\x6d\x65\x6e\x74\x61\x74\x69\x6f\x6e\x20\x6f\x66\x20\x49\x6e\x73\x70\x65\x63\x74\x4c\x6f\x61\x64\x65\x72\x2e\x69\x73\x5f\x70\x61\x63\x6b\x61\x67\x65\x20\x62\x79\x20\x63\x68\x65\x63\x6b\x69\x6e\x67\x20\x69\x66\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x74\x68\x65\x20\x70\x61\x74\x68\x20\x72\x65\x74\x75\x72\x6e\x65\x64\x20\x62\x79\x20\x67\x65\x74\x5f\x66\x69\x6c\x65\x6e\x61\x6d\x65\x20\x68\x61\x73\x20\x61\x20\x66\x69\x6c\x65\x6e\x61\x6d\x65\x20\x6f\x66\x20\x27\x5f\x5f\x69\x6e\x69\x74\x5f\x5f\x2e\x70\x79\x27\x2e",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[6];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_54_consts_2_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 6,
+ },
+ .ob_item = {
+ & importlib__bootstrap_external_toplevel_consts_54_consts_2_consts_0._ascii.ob_base,
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 1],
+ &_Py_STR(dot),
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 0],
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 2],
+ &_Py_ID(__init__),
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[4];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_54_consts_2_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_item = {
+ & const_str__path_split._ascii.ob_base,
+ & const_str_get_filename._ascii.ob_base,
+ & const_str_rsplit._ascii.ob_base,
+ & const_str_rpartition._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[25];
+ }
+importlib__bootstrap_external_toplevel_consts_54_consts_2_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 24,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_LoaderBasics.is_package",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[94];
+ }
+importlib__bootstrap_external_toplevel_consts_54_consts_2_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 93,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf4\x06\x00\x14\x1f\x98\x74\xd7\x1f\x30\xd1\x1f\x30\xb0\x18\xd3\x1f\x3a\xd3\x13\x3b\xb8\x41\xd1\x13\x3e\x88\x08\xd8\x18\x20\x9f\x0f\x99\x0f\xa8\x03\xa8\x51\xd3\x18\x2f\xb0\x01\xd1\x18\x32\x88\x0d\xd8\x14\x1c\xd7\x14\x27\xd1\x14\x27\xa8\x03\xd3\x14\x2c\xa8\x51\xd1\x14\x2f\x88\x09\xd8\x0f\x1c\xa0\x0a\xd1\x0f\x2a\xd2\x0f\x46\xa8\x79\xb8\x4a\xd1\x2f\x46\xd0\x08\x46",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[14];
+ }
+const_str_filename_base = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 13,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "filename_base",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[10];
+ }
+const_str_tail_name = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 9,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "tail_name",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[5];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_54_consts_2_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 5,
+ },
+ .ob_item = {
+ &_Py_ID(self),
+ & const_str_fullname._ascii.ob_base,
+ &_Py_ID(filename),
+ & const_str_filename_base._ascii.ob_base,
+ & const_str_tail_name._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(166)
+importlib__bootstrap_external_toplevel_consts_54_consts_2 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 83,
+ },
+ .co_consts = & importlib__bootstrap_external_toplevel_consts_54_consts_2_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_external_toplevel_consts_54_consts_2_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 10 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 5,
+ .co_firstlineno = 978,
+ .co_nlocalsplus = 5,
+ .co_nlocals = 5,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 139,
+ .co_localsplusnames = & importlib__bootstrap_external_toplevel_consts_54_consts_2_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_7_consts_5_localspluskinds.ob_base.ob_base,
+ .co_filename = & importlib__bootstrap_external_toplevel_consts_6_filename._ascii.ob_base,
+ .co_name = & const_str_is_package._ascii.ob_base,
+ .co_qualname = & importlib__bootstrap_external_toplevel_consts_54_consts_2_qualname._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_external_toplevel_consts_54_consts_2_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x6a\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\xab\x01\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x64\x01\x19\x00\x00\x00\x7d\x02\x7c\x02\x6a\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x02\x64\x01\xab\x02\x00\x00\x00\x00\x00\x00\x64\x03\x19\x00\x00\x00\x7d\x03\x7c\x01\x6a\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x02\xab\x01\x00\x00\x00\x00\x00\x00\x64\x04\x19\x00\x00\x00\x7d\x04\x7c\x03\x64\x05\x6b\x28\x00\x00\x78\x01\x72\x05\x01\x00\x7c\x04\x64\x05\x6b\x37\x00\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[43];
+ }
+importlib__bootstrap_external_toplevel_consts_54_consts_3_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 42,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Use default semantics for module creation.",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_54_consts_3_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & importlib__bootstrap_external_toplevel_consts_54_consts_3_consts_0._ascii.ob_base,
+ Py_None,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[28];
+ }
+importlib__bootstrap_external_toplevel_consts_54_consts_3_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 27,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_LoaderBasics.create_module",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[3];
+ }
+importlib__bootstrap_external_toplevel_consts_54_consts_3_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x81\x00",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_54_consts_3_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ &_Py_ID(self),
+ & const_str_spec._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(4)
+importlib__bootstrap_external_toplevel_consts_54_consts_3 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 2,
+ },
+ .co_consts = & importlib__bootstrap_external_toplevel_consts_54_consts_3_consts._object.ob_base.ob_base,
+ .co_names = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 2 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 0,
+ .co_firstlineno = 986,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 2,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 140,
+ .co_localsplusnames = & importlib__bootstrap_external_toplevel_consts_54_consts_3_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_14_consts_2_localspluskinds.ob_base.ob_base,
+ .co_filename = & importlib__bootstrap_external_toplevel_consts_6_filename._ascii.ob_base,
+ .co_name = & const_str_create_module._ascii.ob_base,
+ .co_qualname = & importlib__bootstrap_external_toplevel_consts_54_consts_3_qualname._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_external_toplevel_consts_54_consts_3_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x79\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[20];
+ }
+importlib__bootstrap_external_toplevel_consts_54_consts_4_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 19,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Execute the module.",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[20];
+ }
+importlib__bootstrap_external_toplevel_consts_54_consts_4_consts_2 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 19,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "cannot load module ",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[30];
+ }
+importlib__bootstrap_external_toplevel_consts_54_consts_4_consts_3 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 29,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = " when get_code() returns None",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[4];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_54_consts_4_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_item = {
+ & importlib__bootstrap_external_toplevel_consts_54_consts_4_consts_0._ascii.ob_base,
+ Py_None,
+ & importlib__bootstrap_external_toplevel_consts_54_consts_4_consts_2._ascii.ob_base,
+ & importlib__bootstrap_external_toplevel_consts_54_consts_4_consts_3._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[7];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_54_consts_4_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 7,
+ },
+ .ob_item = {
+ & const_str_get_code._ascii.ob_base,
+ &_Py_ID(__name__),
+ & const_str_ImportError._ascii.ob_base,
+ &_Py_ID(_bootstrap),
+ & const_str__call_with_frames_removed._ascii.ob_base,
+ & const_str_exec._ascii.ob_base,
+ &_Py_ID(__dict__),
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[26];
+ }
+importlib__bootstrap_external_toplevel_consts_54_consts_4_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 25,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_LoaderBasics.exec_module",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[84];
+ }
+importlib__bootstrap_external_toplevel_consts_54_consts_4_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 83,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xe0\x0f\x13\x8f\x7d\x89\x7d\x98\x56\x9f\x5f\x99\x5f\xd3\x0f\x2d\x88\x04\xd8\x0b\x0f\x88\x3c\xdc\x12\x1d\xd0\x20\x33\xb0\x46\xb7\x4f\xb1\x4f\xd0\x33\x46\xf0\x00\x01\x47\x01\x38\xf0\x00\x01\x1f\x38\xf3\x00\x01\x13\x39\xf0\x00\x01\x0d\x39\xe4\x08\x12\xd7\x08\x2c\xd1\x08\x2c\xac\x54\xb0\x34\xb8\x16\xbf\x1f\xb9\x1f\xd5\x08\x49",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_54_consts_4_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ &_Py_ID(self),
+ &_Py_ID(module),
+ &_Py_ID(code),
+ },
+ },
+};
+static
+ struct _PyCode_DEF(186)
+importlib__bootstrap_external_toplevel_consts_54_consts_4 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 93,
+ },
+ .co_consts = & importlib__bootstrap_external_toplevel_consts_54_consts_4_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_external_toplevel_consts_54_consts_4_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 8 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 5,
+ .co_firstlineno = 989,
+ .co_nlocalsplus = 3,
+ .co_nlocals = 3,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 141,
+ .co_localsplusnames = & importlib__bootstrap_external_toplevel_consts_54_consts_4_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_3_localspluskinds.ob_base.ob_base,
+ .co_filename = & importlib__bootstrap_external_toplevel_consts_6_filename._ascii.ob_base,
+ .co_name = & const_str_exec_module._ascii.ob_base,
+ .co_qualname = & importlib__bootstrap_external_toplevel_consts_54_consts_4_qualname._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_external_toplevel_consts_54_consts_4_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x00\x6a\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x02\x7c\x02\x80\x19\x74\x05\x00\x00\x00\x00\x00\x00\x00\x00\x64\x02\x7c\x01\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9b\x02\x64\x03\x9d\x03\xab\x01\x00\x00\x00\x00\x00\x00\x82\x01\x74\x06\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x74\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x02\x7c\x01\x6a\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x03\x00\x00\x00\x00\x00\x00\x01\x00\x79\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[27];
+ }
+importlib__bootstrap_external_toplevel_consts_54_consts_5_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 26,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "This method is deprecated.",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_54_consts_5_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & importlib__bootstrap_external_toplevel_consts_54_consts_5_consts_0._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_54_consts_5_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ &_Py_ID(_bootstrap),
+ & const_str__load_module_shim._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[26];
+ }
+importlib__bootstrap_external_toplevel_consts_54_consts_5_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 25,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_LoaderBasics.load_module",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[24];
+ }
+importlib__bootstrap_external_toplevel_consts_54_consts_5_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 23,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf4\x06\x00\x10\x1a\xd7\x0f\x2b\xd1\x0f\x2b\xa8\x44\xb0\x28\xd3\x0f\x3b\xd0\x08\x3b",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_54_consts_5_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ &_Py_ID(self),
+ & const_str_fullname._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(46)
+importlib__bootstrap_external_toplevel_consts_54_consts_5 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 23,
+ },
+ .co_consts = & importlib__bootstrap_external_toplevel_consts_54_consts_5_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_external_toplevel_consts_54_consts_5_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 6 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 997,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 2,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 142,
+ .co_localsplusnames = & importlib__bootstrap_external_toplevel_consts_54_consts_5_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_14_consts_2_localspluskinds.ob_base.ob_base,
+ .co_filename = & importlib__bootstrap_external_toplevel_consts_6_filename._ascii.ob_base,
+ .co_name = & const_str_load_module._ascii.ob_base,
+ .co_qualname = & importlib__bootstrap_external_toplevel_consts_54_consts_5_qualname._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_external_toplevel_consts_54_consts_5_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x7c\x01\xab\x02\x00\x00\x00\x00\x00\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[7];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_54_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 7,
+ },
+ .ob_item = {
+ & const_str__LoaderBasics._ascii.ob_base,
+ & importlib__bootstrap_external_toplevel_consts_54_consts_1._ascii.ob_base,
+ & importlib__bootstrap_external_toplevel_consts_54_consts_2.ob_base.ob_base,
+ & importlib__bootstrap_external_toplevel_consts_54_consts_3.ob_base.ob_base,
+ & importlib__bootstrap_external_toplevel_consts_54_consts_4.ob_base.ob_base,
+ & importlib__bootstrap_external_toplevel_consts_54_consts_5.ob_base.ob_base,
+ Py_None,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[8];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_54_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 8,
+ },
+ .ob_item = {
+ &_Py_ID(__name__),
+ &_Py_ID(__module__),
+ &_Py_ID(__qualname__),
+ &_Py_ID(__doc__),
+ & const_str_is_package._ascii.ob_base,
+ & const_str_create_module._ascii.ob_base,
+ & const_str_exec_module._ascii.ob_base,
+ & const_str_load_module._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[30];
+ }
+importlib__bootstrap_external_toplevel_consts_54_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 29,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x84\x00\xf1\x04\x01\x05\x1d\xf2\x06\x06\x05\x47\x01\xf2\x10\x01\x05\x39\xf2\x06\x06\x05\x4a\x01\xf3\x10\x03\x05\x3c",
+};
+static
+ struct _PyCode_DEF(40)
+importlib__bootstrap_external_toplevel_consts_54 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 20,
+ },
+ .co_consts = & importlib__bootstrap_external_toplevel_consts_54_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_external_toplevel_consts_54_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 0,
+ .co_argcount = 0,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 1 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 1,
+ .co_firstlineno = 973,
+ .co_nlocalsplus = 0,
+ .co_nlocals = 0,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 143,
+ .co_localsplusnames = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_filename = & importlib__bootstrap_external_toplevel_consts_6_filename._ascii.ob_base,
+ .co_name = & const_str__LoaderBasics._ascii.ob_base,
+ .co_qualname = & const_str__LoaderBasics._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_external_toplevel_consts_54_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x65\x00\x5a\x01\x64\x00\x5a\x02\x64\x01\x5a\x03\x64\x02\x84\x00\x5a\x04\x64\x03\x84\x00\x5a\x05\x64\x04\x84\x00\x5a\x06\x64\x05\x84\x00\x5a\x07\x79\x06",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[13];
+ }
+const_str_SourceLoader = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 12,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "SourceLoader",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[166];
+ }
+importlib__bootstrap_external_toplevel_consts_56_consts_1_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 165,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x4f\x70\x74\x69\x6f\x6e\x61\x6c\x20\x6d\x65\x74\x68\x6f\x64\x20\x74\x68\x61\x74\x20\x72\x65\x74\x75\x72\x6e\x73\x20\x74\x68\x65\x20\x6d\x6f\x64\x69\x66\x69\x63\x61\x74\x69\x6f\x6e\x20\x74\x69\x6d\x65\x20\x28\x61\x6e\x20\x69\x6e\x74\x29\x20\x66\x6f\x72\x20\x74\x68\x65\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x73\x70\x65\x63\x69\x66\x69\x65\x64\x20\x70\x61\x74\x68\x20\x28\x61\x20\x73\x74\x72\x29\x2e\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x52\x61\x69\x73\x65\x73\x20\x4f\x53\x45\x72\x72\x6f\x72\x20\x77\x68\x65\x6e\x20\x74\x68\x65\x20\x70\x61\x74\x68\x20\x63\x61\x6e\x6e\x6f\x74\x20\x62\x65\x20\x68\x61\x6e\x64\x6c\x65\x64\x2e\x0a\x20\x20\x20\x20\x20\x20\x20\x20",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_56_consts_1_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & importlib__bootstrap_external_toplevel_consts_56_consts_1_consts_0._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_56_consts_1_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & const_str_OSError._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[11];
+ }
+const_str_path_mtime = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 10,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "path_mtime",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[24];
+ }
+importlib__bootstrap_external_toplevel_consts_56_consts_1_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 23,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "SourceLoader.path_mtime",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[10];
+ }
+importlib__bootstrap_external_toplevel_consts_56_consts_1_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 9,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf4\x0c\x00\x0f\x16\x88\x0d",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_56_consts_1_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ &_Py_ID(self),
+ &_Py_ID(path),
+ },
+ },
+};
+static
+ struct _PyCode_DEF(14)
+importlib__bootstrap_external_toplevel_consts_56_consts_1 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 7,
+ },
+ .co_consts = & importlib__bootstrap_external_toplevel_consts_56_consts_1_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_external_toplevel_consts_56_consts_1_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 3 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 1,
+ .co_firstlineno = 1005,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 2,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 144,
+ .co_localsplusnames = & importlib__bootstrap_external_toplevel_consts_56_consts_1_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_14_consts_2_localspluskinds.ob_base.ob_base,
+ .co_filename = & importlib__bootstrap_external_toplevel_consts_6_filename._ascii.ob_base,
+ .co_name = & const_str_path_mtime._ascii.ob_base,
+ .co_qualname = & importlib__bootstrap_external_toplevel_consts_56_consts_1_qualname._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_external_toplevel_consts_56_consts_1_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x82\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[415];
+ }
+importlib__bootstrap_external_toplevel_consts_56_consts_2_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 414,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x4f\x70\x74\x69\x6f\x6e\x61\x6c\x20\x6d\x65\x74\x68\x6f\x64\x20\x72\x65\x74\x75\x72\x6e\x69\x6e\x67\x20\x61\x20\x6d\x65\x74\x61\x64\x61\x74\x61\x20\x64\x69\x63\x74\x20\x66\x6f\x72\x20\x74\x68\x65\x20\x73\x70\x65\x63\x69\x66\x69\x65\x64\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x70\x61\x74\x68\x20\x28\x61\x20\x73\x74\x72\x29\x2e\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x50\x6f\x73\x73\x69\x62\x6c\x65\x20\x6b\x65\x79\x73\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x2d\x20\x27\x6d\x74\x69\x6d\x65\x27\x20\x28\x6d\x61\x6e\x64\x61\x74\x6f\x72\x79\x29\x20\x69\x73\x20\x74\x68\x65\x20\x6e\x75\x6d\x65\x72\x69\x63\x20\x74\x69\x6d\x65\x73\x74\x61\x6d\x70\x20\x6f\x66\x20\x6c\x61\x73\x74\x20\x73\x6f\x75\x72\x63\x65\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x63\x6f\x64\x65\x20\x6d\x6f\x64\x69\x66\x69\x63\x61\x74\x69\x6f\x6e\x3b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x2d\x20\x27\x73\x69\x7a\x65\x27\x20\x28\x6f\x70\x74\x69\x6f\x6e\x61\x6c\x29\x20\x69\x73\x20\x74\x68\x65\x20\x73\x69\x7a\x65\x20\x69\x6e\x20\x62\x79\x74\x65\x73\x20\x6f\x66\x20\x74\x68\x65\x20\x73\x6f\x75\x72\x63\x65\x20\x63\x6f\x64\x65\x2e\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x49\x6d\x70\x6c\x65\x6d\x65\x6e\x74\x69\x6e\x67\x20\x74\x68\x69\x73\x20\x6d\x65\x74\x68\x6f\x64\x20\x61\x6c\x6c\x6f\x77\x73\x20\x74\x68\x65\x20\x6c\x6f\x61\x64\x65\x72\x20\x74\x6f\x20\x72\x65\x61\x64\x20\x62\x79\x74\x65\x63\x6f\x64\x65\x20\x66\x69\x6c\x65\x73\x2e\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x52\x61\x69\x73\x65\x73\x20\x4f\x53\x45\x72\x72\x6f\x72\x20\x77\x68\x65\x6e\x20\x74\x68\x65\x20\x70\x61\x74\x68\x20\x63\x61\x6e\x6e\x6f\x74\x20\x62\x65\x20\x68\x61\x6e\x64\x6c\x65\x64\x2e\x0a\x20\x20\x20\x20\x20\x20\x20\x20",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_56_consts_2_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & importlib__bootstrap_external_toplevel_consts_56_consts_2_consts_0._ascii.ob_base,
+ & const_str_mtime._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_56_consts_2_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & const_str_path_mtime._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[11];
+ }
+const_str_path_stats = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 10,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "path_stats",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[24];
+ }
+importlib__bootstrap_external_toplevel_consts_56_consts_2_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 23,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "SourceLoader.path_stats",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[25];
+ }
+importlib__bootstrap_external_toplevel_consts_56_consts_2_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 24,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf0\x18\x00\x11\x18\x98\x14\x9f\x1f\x99\x1f\xa8\x14\xd3\x19\x2e\xd0\x0f\x2f\xd0\x08\x2f",
+};
+static
+ struct _PyCode_DEF(40)
+importlib__bootstrap_external_toplevel_consts_56_consts_2 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 20,
+ },
+ .co_consts = & importlib__bootstrap_external_toplevel_consts_56_consts_2_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_external_toplevel_consts_56_consts_2_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 6 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 1013,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 2,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 145,
+ .co_localsplusnames = & importlib__bootstrap_external_toplevel_consts_56_consts_1_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_14_consts_2_localspluskinds.ob_base.ob_base,
+ .co_filename = & importlib__bootstrap_external_toplevel_consts_6_filename._ascii.ob_base,
+ .co_name = & const_str_path_stats._ascii.ob_base,
+ .co_qualname = & importlib__bootstrap_external_toplevel_consts_56_consts_2_qualname._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_external_toplevel_consts_56_consts_2_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x64\x01\x7c\x00\x6a\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\xab\x01\x00\x00\x00\x00\x00\x00\x69\x01\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[229];
+ }
+importlib__bootstrap_external_toplevel_consts_56_consts_3_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 228,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x4f\x70\x74\x69\x6f\x6e\x61\x6c\x20\x6d\x65\x74\x68\x6f\x64\x20\x77\x68\x69\x63\x68\x20\x77\x72\x69\x74\x65\x73\x20\x64\x61\x74\x61\x20\x28\x62\x79\x74\x65\x73\x29\x20\x74\x6f\x20\x61\x20\x66\x69\x6c\x65\x20\x70\x61\x74\x68\x20\x28\x61\x20\x73\x74\x72\x29\x2e\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x49\x6d\x70\x6c\x65\x6d\x65\x6e\x74\x69\x6e\x67\x20\x74\x68\x69\x73\x20\x6d\x65\x74\x68\x6f\x64\x20\x61\x6c\x6c\x6f\x77\x73\x20\x66\x6f\x72\x20\x74\x68\x65\x20\x77\x72\x69\x74\x69\x6e\x67\x20\x6f\x66\x20\x62\x79\x74\x65\x63\x6f\x64\x65\x20\x66\x69\x6c\x65\x73\x2e\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x54\x68\x65\x20\x73\x6f\x75\x72\x63\x65\x20\x70\x61\x74\x68\x20\x69\x73\x20\x6e\x65\x65\x64\x65\x64\x20\x69\x6e\x20\x6f\x72\x64\x65\x72\x20\x74\x6f\x20\x63\x6f\x72\x72\x65\x63\x74\x6c\x79\x20\x74\x72\x61\x6e\x73\x66\x65\x72\x20\x70\x65\x72\x6d\x69\x73\x73\x69\x6f\x6e\x73\x0a\x20\x20\x20\x20\x20\x20\x20\x20",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_56_consts_3_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & importlib__bootstrap_external_toplevel_consts_56_consts_3_consts_0._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[9];
+ }
+const_str_set_data = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 8,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "set_data",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_56_consts_3_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & const_str_set_data._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[16];
+ }
+const_str__cache_bytecode = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 15,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_cache_bytecode",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[29];
+ }
+importlib__bootstrap_external_toplevel_consts_56_consts_3_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 28,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "SourceLoader._cache_bytecode",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[22];
+ }
+importlib__bootstrap_external_toplevel_consts_56_consts_3_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 21,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf0\x10\x00\x10\x14\x8f\x7d\x89\x7d\x98\x5a\xa8\x14\xd3\x0f\x2e\xd0\x08\x2e",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[11];
+ }
+const_str_cache_path = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 10,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "cache_path",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[4];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_56_consts_3_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_item = {
+ &_Py_ID(self),
+ & const_str_source_path._ascii.ob_base,
+ & const_str_cache_path._ascii.ob_base,
+ &_Py_ID(data),
+ },
+ },
+};
+static
+ struct _PyCode_DEF(38)
+importlib__bootstrap_external_toplevel_consts_56_consts_3 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 19,
+ },
+ .co_consts = & importlib__bootstrap_external_toplevel_consts_56_consts_3_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_external_toplevel_consts_56_consts_3_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 4,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 8 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 1027,
+ .co_nlocalsplus = 4,
+ .co_nlocals = 4,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 146,
+ .co_localsplusnames = & importlib__bootstrap_external_toplevel_consts_56_consts_3_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_7_consts_3_localspluskinds.ob_base.ob_base,
+ .co_filename = & importlib__bootstrap_external_toplevel_consts_6_filename._ascii.ob_base,
+ .co_name = & const_str__cache_bytecode._ascii.ob_base,
+ .co_qualname = & importlib__bootstrap_external_toplevel_consts_56_consts_3_qualname._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_external_toplevel_consts_56_consts_3_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x00\x6a\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x02\x7c\x03\xab\x02\x00\x00\x00\x00\x00\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[151];
+ }
+importlib__bootstrap_external_toplevel_consts_56_consts_4_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 150,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x4f\x70\x74\x69\x6f\x6e\x61\x6c\x20\x6d\x65\x74\x68\x6f\x64\x20\x77\x68\x69\x63\x68\x20\x77\x72\x69\x74\x65\x73\x20\x64\x61\x74\x61\x20\x28\x62\x79\x74\x65\x73\x29\x20\x74\x6f\x20\x61\x20\x66\x69\x6c\x65\x20\x70\x61\x74\x68\x20\x28\x61\x20\x73\x74\x72\x29\x2e\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x49\x6d\x70\x6c\x65\x6d\x65\x6e\x74\x69\x6e\x67\x20\x74\x68\x69\x73\x20\x6d\x65\x74\x68\x6f\x64\x20\x61\x6c\x6c\x6f\x77\x73\x20\x66\x6f\x72\x20\x74\x68\x65\x20\x77\x72\x69\x74\x69\x6e\x67\x20\x6f\x66\x20\x62\x79\x74\x65\x63\x6f\x64\x65\x20\x66\x69\x6c\x65\x73\x2e\x0a\x20\x20\x20\x20\x20\x20\x20\x20",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_56_consts_4_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & importlib__bootstrap_external_toplevel_consts_56_consts_4_consts_0._ascii.ob_base,
+ Py_None,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[22];
+ }
+importlib__bootstrap_external_toplevel_consts_56_consts_4_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 21,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "SourceLoader.set_data",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_56_consts_4_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ &_Py_ID(self),
+ &_Py_ID(path),
+ &_Py_ID(data),
+ },
+ },
+};
+static
+ struct _PyCode_DEF(4)
+importlib__bootstrap_external_toplevel_consts_56_consts_4 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 2,
+ },
+ .co_consts = & importlib__bootstrap_external_toplevel_consts_56_consts_4_consts._object.ob_base.ob_base,
+ .co_names = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 3,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 3 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 0,
+ .co_firstlineno = 1037,
+ .co_nlocalsplus = 3,
+ .co_nlocals = 3,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 147,
+ .co_localsplusnames = & importlib__bootstrap_external_toplevel_consts_56_consts_4_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_3_localspluskinds.ob_base.ob_base,
+ .co_filename = & importlib__bootstrap_external_toplevel_consts_6_filename._ascii.ob_base,
+ .co_name = & const_str_set_data._ascii.ob_base,
+ .co_qualname = & importlib__bootstrap_external_toplevel_consts_56_consts_4_qualname._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_external_toplevel_consts_54_consts_3_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x79\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[53];
+ }
+importlib__bootstrap_external_toplevel_consts_56_consts_5_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 52,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Concrete implementation of InspectLoader.get_source.",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[40];
+ }
+importlib__bootstrap_external_toplevel_consts_56_consts_5_consts_1 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 39,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "source not available through get_data()",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[4];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_56_consts_5_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_item = {
+ & importlib__bootstrap_external_toplevel_consts_56_consts_5_consts_0._ascii.ob_base,
+ & importlib__bootstrap_external_toplevel_consts_56_consts_5_consts_1._ascii.ob_base,
+ & importlib__bootstrap_toplevel_consts_4_localsplusnames._object.ob_base.ob_base,
+ Py_None,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[9];
+ }
+const_str_get_data = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 8,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "get_data",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[5];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_56_consts_5_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 5,
+ },
+ .ob_item = {
+ & const_str_get_filename._ascii.ob_base,
+ & const_str_get_data._ascii.ob_base,
+ & const_str_OSError._ascii.ob_base,
+ & const_str_ImportError._ascii.ob_base,
+ & const_str_decode_source._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[24];
+ }
+importlib__bootstrap_external_toplevel_consts_56_consts_5_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 23,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "SourceLoader.get_source",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[91];
+ }
+importlib__bootstrap_external_toplevel_consts_56_consts_5_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 90,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xe0\x0f\x13\xd7\x0f\x20\xd1\x0f\x20\xa0\x18\xd3\x0f\x2a\x88\x04\xf0\x02\x04\x09\x36\xd8\x1b\x1f\x9f\x3d\x99\x3d\xa8\x14\xd3\x1b\x2e\x88\x4c\xf4\x08\x00\x10\x1d\x98\x5c\xd3\x0f\x2a\xd0\x08\x2a\xf8\xf4\x07\x00\x10\x17\xf2\x00\x02\x09\x36\xdc\x12\x1d\xd0\x1e\x47\xd8\x23\x2b\xf4\x03\x01\x13\x2d\xd8\x32\x35\xf0\x03\x01\x0d\x36\xfb\xf0\x03\x02\x09\x36\xfa",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[21];
+ }
+importlib__bootstrap_external_toplevel_consts_56_consts_5_exceptiontable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 20,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x93\x11\x2f\x00\xaf\x09\x41\x0b\x03\xb8\x0e\x41\x06\x03\xc1\x06\x05\x41\x0b\x03",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[5];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_56_consts_5_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 5,
+ },
+ .ob_item = {
+ &_Py_ID(self),
+ & const_str_fullname._ascii.ob_base,
+ &_Py_ID(path),
+ & const_str_source_bytes._ascii.ob_base,
+ & const_str_exc._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(156)
+importlib__bootstrap_external_toplevel_consts_56_consts_5 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 78,
+ },
+ .co_consts = & importlib__bootstrap_external_toplevel_consts_56_consts_5_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_external_toplevel_consts_56_consts_5_names._object.ob_base.ob_base,
+ .co_exceptiontable = & importlib__bootstrap_external_toplevel_consts_56_consts_5_exceptiontable.ob_base.ob_base,
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 10 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 5,
+ .co_firstlineno = 1044,
+ .co_nlocalsplus = 5,
+ .co_nlocals = 5,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 148,
+ .co_localsplusnames = & importlib__bootstrap_external_toplevel_consts_56_consts_5_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_7_consts_5_localspluskinds.ob_base.ob_base,
+ .co_filename = & importlib__bootstrap_external_toplevel_consts_6_filename._ascii.ob_base,
+ .co_name = &_Py_ID(get_source),
+ .co_qualname = & importlib__bootstrap_external_toplevel_consts_56_consts_5_qualname._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_external_toplevel_consts_56_consts_5_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x00\x6a\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x02\x09\x00\x7c\x00\x6a\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x02\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x03\x74\x09\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x03\xab\x01\x00\x00\x00\x00\x00\x00\x53\x00\x23\x00\x74\x04\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x72\x13\x7d\x04\x74\x07\x00\x00\x00\x00\x00\x00\x00\x00\x64\x01\x7c\x01\xac\x02\xab\x02\x00\x00\x00\x00\x00\x00\x7c\x04\x82\x02\x64\x03\x7d\x04\x7e\x04\x77\x01\x77\x00\x78\x03\x59\x00\x77\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[10];
+ }
+const_str__optimize = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 9,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_optimize",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_56_consts_7 = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & const_str__optimize._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[131];
+ }
+importlib__bootstrap_external_toplevel_consts_56_consts_8_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 130,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x52\x65\x74\x75\x72\x6e\x20\x74\x68\x65\x20\x63\x6f\x64\x65\x20\x6f\x62\x6a\x65\x63\x74\x20\x63\x6f\x6d\x70\x69\x6c\x65\x64\x20\x66\x72\x6f\x6d\x20\x73\x6f\x75\x72\x63\x65\x2e\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x54\x68\x65\x20\x27\x64\x61\x74\x61\x27\x20\x61\x72\x67\x75\x6d\x65\x6e\x74\x20\x63\x61\x6e\x20\x62\x65\x20\x61\x6e\x79\x20\x6f\x62\x6a\x65\x63\x74\x20\x74\x79\x70\x65\x20\x74\x68\x61\x74\x20\x63\x6f\x6d\x70\x69\x6c\x65\x28\x29\x20\x73\x75\x70\x70\x6f\x72\x74\x73\x2e\x0a\x20\x20\x20\x20\x20\x20\x20\x20",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_56_consts_8_consts_3 = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ &_Py_ID(dont_inherit),
+ &_Py_ID(optimize),
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[4];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_56_consts_8_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_item = {
+ & importlib__bootstrap_external_toplevel_consts_56_consts_8_consts_0._ascii.ob_base,
+ & const_str_exec._ascii.ob_base,
+ Py_True,
+ & importlib__bootstrap_external_toplevel_consts_56_consts_8_consts_3._object.ob_base.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[8];
+ }
+const_str_compile = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 7,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "compile",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_56_consts_8_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ &_Py_ID(_bootstrap),
+ & const_str__call_with_frames_removed._ascii.ob_base,
+ & const_str_compile._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[15];
+ }
+const_str_source_to_code = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 14,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "source_to_code",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[28];
+ }
+importlib__bootstrap_external_toplevel_consts_56_consts_8_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 27,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "SourceLoader.source_to_code",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[44];
+ }
+importlib__bootstrap_external_toplevel_consts_56_consts_8_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 43,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf4\x0a\x00\x10\x1a\xd7\x0f\x33\xd1\x0f\x33\xb4\x47\xb8\x54\xc0\x34\xc8\x16\xd8\x35\x39\xc0\x49\xf0\x03\x00\x10\x34\xf3\x00\x01\x10\x4f\x01\xf0\x00\x01\x09\x4f\x01",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[4];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_56_consts_8_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_item = {
+ &_Py_ID(self),
+ &_Py_ID(data),
+ &_Py_ID(path),
+ & const_str__optimize._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(64)
+importlib__bootstrap_external_toplevel_consts_56_consts_8 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 32,
+ },
+ .co_consts = & importlib__bootstrap_external_toplevel_consts_56_consts_8_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_external_toplevel_consts_56_consts_8_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 3,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 1,
+ .co_framesize = 12 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 8,
+ .co_firstlineno = 1054,
+ .co_nlocalsplus = 4,
+ .co_nlocals = 4,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 149,
+ .co_localsplusnames = & importlib__bootstrap_external_toplevel_consts_56_consts_8_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_7_consts_3_localspluskinds.ob_base.ob_base,
+ .co_filename = & importlib__bootstrap_external_toplevel_consts_6_filename._ascii.ob_base,
+ .co_name = & const_str_source_to_code._ascii.ob_base,
+ .co_qualname = & importlib__bootstrap_external_toplevel_consts_56_consts_8_qualname._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_external_toplevel_consts_56_consts_8_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x74\x04\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x7c\x02\x64\x01\x64\x02\x7c\x03\xac\x03\xab\x06\x00\x00\x00\x00\x00\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[191];
+ }
+importlib__bootstrap_external_toplevel_consts_56_consts_9_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 190,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x43\x6f\x6e\x63\x72\x65\x74\x65\x20\x69\x6d\x70\x6c\x65\x6d\x65\x6e\x74\x61\x74\x69\x6f\x6e\x20\x6f\x66\x20\x49\x6e\x73\x70\x65\x63\x74\x4c\x6f\x61\x64\x65\x72\x2e\x67\x65\x74\x5f\x63\x6f\x64\x65\x2e\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x52\x65\x61\x64\x69\x6e\x67\x20\x6f\x66\x20\x62\x79\x74\x65\x63\x6f\x64\x65\x20\x72\x65\x71\x75\x69\x72\x65\x73\x20\x70\x61\x74\x68\x5f\x73\x74\x61\x74\x73\x20\x74\x6f\x20\x62\x65\x20\x69\x6d\x70\x6c\x65\x6d\x65\x6e\x74\x65\x64\x2e\x20\x54\x6f\x20\x77\x72\x69\x74\x65\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x62\x79\x74\x65\x63\x6f\x64\x65\x2c\x20\x73\x65\x74\x5f\x64\x61\x74\x61\x20\x6d\x75\x73\x74\x20\x61\x6c\x73\x6f\x20\x62\x65\x20\x69\x6d\x70\x6c\x65\x6d\x65\x6e\x74\x65\x64\x2e\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[6];
+ }
+const_str_never = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 5,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "never",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[7];
+ }
+const_str_always = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 6,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "always",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[14];
+ }
+importlib__bootstrap_external_toplevel_consts_56_consts_9_consts_13 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 13,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "{} matches {}",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_56_consts_9_consts_14 = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ &_Py_ID(name),
+ & const_str_bytecode_path._ascii.ob_base,
+ & const_str_source_path._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[20];
+ }
+importlib__bootstrap_external_toplevel_consts_56_consts_9_consts_15 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 19,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "code object from {}",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[16];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_56_consts_9_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 16,
+ },
+ .ob_item = {
+ & importlib__bootstrap_external_toplevel_consts_56_consts_9_consts_0._ascii.ob_base,
+ Py_None,
+ Py_False,
+ Py_True,
+ & const_str_mtime._ascii.ob_base,
+ & importlib__bootstrap_external_toplevel_consts_45_consts_3._object.ob_base.ob_base,
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 16],
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 1],
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 0],
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 2],
+ & const_str_never._ascii.ob_base,
+ & const_str_always._ascii.ob_base,
+ &_Py_ID(size),
+ & importlib__bootstrap_external_toplevel_consts_56_consts_9_consts_13._ascii.ob_base,
+ & importlib__bootstrap_external_toplevel_consts_56_consts_9_consts_14._object.ob_base.ob_base,
+ & importlib__bootstrap_external_toplevel_consts_56_consts_9_consts_15._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[11];
+ }
+const_str_memoryview = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 10,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "memoryview",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[22];
+ }
+const_str_check_hash_based_pycs = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 21,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "check_hash_based_pycs",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[18];
+ }
+const_str__RAW_MAGIC_NUMBER = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 17,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_RAW_MAGIC_NUMBER",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[20];
+ }
+const_str_dont_write_bytecode = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 19,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "dont_write_bytecode",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[27];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_56_consts_9_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 27,
+ },
+ .ob_item = {
+ & const_str_get_filename._ascii.ob_base,
+ & const_str_cache_from_source._ascii.ob_base,
+ & const_str_path_stats._ascii.ob_base,
+ & const_str_int._ascii.ob_base,
+ & const_str_get_data._ascii.ob_base,
+ & const_str__classify_pyc._ascii.ob_base,
+ & const_str_memoryview._ascii.ob_base,
+ & const_str__imp._ascii.ob_base,
+ & const_str_check_hash_based_pycs._ascii.ob_base,
+ & const_str_source_hash._ascii.ob_base,
+ & const_str__RAW_MAGIC_NUMBER._ascii.ob_base,
+ & const_str__validate_hash_pyc._ascii.ob_base,
+ & const_str__validate_timestamp_pyc._ascii.ob_base,
+ &_Py_ID(_bootstrap),
+ & const_str__verbose_message._ascii.ob_base,
+ & const_str__compile_bytecode._ascii.ob_base,
+ & const_str_ImportError._ascii.ob_base,
+ & const_str_EOFError._ascii.ob_base,
+ & const_str_OSError._ascii.ob_base,
+ & const_str_NotImplementedError._ascii.ob_base,
+ & const_str_source_to_code._ascii.ob_base,
+ & const_str_sys._ascii.ob_base,
+ & const_str_dont_write_bytecode._ascii.ob_base,
+ & const_str__code_to_hash_pyc._ascii.ob_base,
+ & const_str__code_to_timestamp_pyc._ascii.ob_base,
+ &_Py_ID(len),
+ & const_str__cache_bytecode._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[22];
+ }
+importlib__bootstrap_external_toplevel_consts_56_consts_9_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 21,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "SourceLoader.get_code",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[660];
+ }
+importlib__bootstrap_external_toplevel_consts_56_consts_9_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 659,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf0\x0e\x00\x17\x1b\xd7\x16\x27\xd1\x16\x27\xa8\x08\xd3\x16\x31\x88\x0b\xd8\x17\x1b\x88\x0c\xd8\x17\x1b\x88\x0c\xd8\x16\x1a\x88\x0b\xd8\x15\x1a\x88\x0a\xd8\x17\x1b\x88\x0c\xf0\x02\x33\x09\x4a\x01\xdc\x1c\x2d\xa8\x6b\xd3\x1c\x3a\x88\x4d\xf0\x08\x2e\x0d\x4a\x01\xd8\x15\x19\x97\x5f\x91\x5f\xa0\x5b\xd3\x15\x31\x90\x02\xf4\x08\x00\x20\x23\xa0\x32\xa0\x67\xa1\x3b\xd3\x1f\x2f\x90\x0c\xf0\x02\x28\x11\x4a\x01\xd8\x1b\x1f\x9f\x3d\x99\x3d\xa8\x1d\xd3\x1b\x37\x90\x44\xf0\x0a\x00\x21\x29\xd8\x20\x2d\xf1\x05\x03\x23\x16\x90\x4b\xf0\x08\x1f\x15\x4a\x01\xdc\x20\x2d\xa8\x64\xb0\x48\xb8\x6b\xd3\x20\x4a\x98\x05\xdc\x25\x2f\xb0\x04\xd3\x25\x35\xb0\x62\xb0\x63\xd0\x25\x3a\x98\x0a\xd8\x25\x2a\xa8\x53\xa1\x5b\xb0\x41\xd1\x25\x35\x98\x0a\xd9\x1b\x25\xd8\x2b\x30\xb0\x34\xa9\x3c\xb8\x31\xd1\x2b\x3c\x98\x4c\xdc\x20\x24\xd7\x20\x3a\xd1\x20\x3a\xb8\x67\xd2\x20\x45\xd9\x21\x2d\xdc\x21\x25\xd7\x21\x3b\xd1\x21\x3b\xb8\x78\xd2\x21\x47\xd8\x2f\x33\xaf\x7d\xa9\x7d\xb8\x5b\xd3\x2f\x49\xa0\x0c\xdc\x2e\x32\xd7\x2e\x3e\xd1\x2e\x3e\xdc\x24\x35\xd8\x24\x30\xf3\x05\x03\x2f\x22\xa0\x0b\xf4\x08\x00\x21\x33\xb0\x34\xb8\x1b\xc0\x68\xd8\x33\x3e\xf5\x03\x01\x21\x40\x01\xf4\x06\x00\x1d\x34\xd8\x20\x24\xd8\x20\x2c\xd8\x20\x22\xa0\x36\xa1\x0a\xd8\x20\x28\xd8\x20\x2b\xf4\x0b\x06\x1d\x1e\xf4\x14\x00\x19\x23\xd7\x18\x33\xd1\x18\x33\xb0\x4f\xc0\x5d\xd8\x34\x3f\xf4\x03\x01\x19\x41\x01\xe4\x1f\x30\xb0\x1a\xc0\x28\xd8\x3f\x4c\xd8\x3d\x48\xf4\x05\x02\x20\x4a\x01\xf0\x00\x02\x19\x4a\x01\xf8\xf4\x0b\x00\x1d\x28\xac\x18\xd0\x1b\x32\xf2\x00\x01\x15\x1d\xd9\x18\x1c\xf0\x03\x01\x15\x1d\xfb\xf4\x3f\x00\x18\x1f\xf2\x00\x01\x11\x19\xd9\x14\x18\xf0\x03\x01\x11\x19\xfb\xf4\x0d\x00\x14\x1b\xf2\x00\x01\x0d\x15\xd9\x10\x14\xf0\x03\x01\x0d\x15\xfb\xf4\x0b\x00\x10\x23\xf2\x00\x01\x09\x21\xd8\x1c\x20\x8a\x4d\xf0\x03\x01\x09\x21\xfa\xf0\x64\x01\x00\x0c\x18\xd0\x0b\x1f\xd8\x1b\x1f\x9f\x3d\x99\x3d\xa8\x1b\xd3\x1b\x35\x88\x4c\xd8\x16\x1a\xd7\x16\x29\xd1\x16\x29\xa8\x2c\xb8\x0b\xd3\x16\x44\x88\x0b\xdc\x08\x12\xd7\x08\x23\xd1\x08\x23\xd0\x24\x39\xb8\x3b\xd4\x08\x47\xdc\x10\x13\xd7\x10\x27\xd2\x10\x27\xa8\x4d\xd0\x2c\x45\xd8\x10\x1c\xd0\x10\x28\xd9\x0f\x19\xd8\x13\x1e\xd0\x13\x26\xdc\x22\x26\xd7\x22\x32\xd1\x22\x32\xd4\x33\x44\xd8\x33\x3f\xf3\x03\x01\x23\x41\x01\x90\x4b\xe4\x17\x28\xa8\x1b\xb0\x6b\xc0\x3c\xd3\x17\x50\x91\x04\xe4\x17\x2d\xa8\x6b\xb8\x3c\xdc\x2e\x31\xb0\x2c\xd3\x2e\x3f\xf3\x03\x01\x18\x41\x01\x90\x04\xf0\x04\x03\x0d\x15\xd8\x10\x14\xd7\x10\x24\xd1\x10\x24\xa0\x5b\xb0\x2d\xc0\x14\xd4\x10\x46\xf0\x06\x00\x10\x1b\xd0\x08\x1a\xf8\xf4\x05\x00\x14\x27\xf2\x00\x01\x0d\x15\xd8\x10\x14\xd8\x0f\x1a\xd0\x08\x1a\xf0\x05\x01\x0d\x15\xfa\xe0\x0f\x1a\xd0\x08\x1a",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[90];
+ }
+importlib__bootstrap_external_toplevel_consts_56_consts_9_exceptiontable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 89,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x9d\x0b\x45\x1a\x00\xa9\x11\x45\x0b\x00\xc1\x09\x11\x44\x3c\x00\xc1\x20\x42\x21\x44\x27\x00\xc4\x27\x0f\x44\x39\x03\xc4\x38\x01\x44\x39\x03\xc4\x3c\x09\x45\x08\x03\xc5\x07\x01\x45\x08\x03\xc5\x0b\x09\x45\x17\x03\xc5\x16\x01\x45\x17\x03\xc5\x1a\x0b\x45\x28\x03\xc5\x27\x01\x45\x28\x03\xc7\x3d\x13\x48\x12\x00\xc8\x12\x09\x48\x1f\x03\xc8\x1e\x01\x48\x1f\x03",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[11];
+ }
+const_str_hash_based = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 10,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "hash_based",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[13];
+ }
+const_str_check_source = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 12,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "check_source",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[3];
+ }
+const_str_st = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 2,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "st",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[11];
+ }
+const_str_bytes_data = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 10,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "bytes_data",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[12];
+ }
+const_str_code_object = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 11,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "code_object",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[15];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_56_consts_9_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 15,
+ },
+ .ob_item = {
+ &_Py_ID(self),
+ & const_str_fullname._ascii.ob_base,
+ & const_str_source_path._ascii.ob_base,
+ & const_str_source_mtime._ascii.ob_base,
+ & const_str_source_bytes._ascii.ob_base,
+ & const_str_source_hash._ascii.ob_base,
+ & const_str_hash_based._ascii.ob_base,
+ & const_str_check_source._ascii.ob_base,
+ & const_str_bytecode_path._ascii.ob_base,
+ & const_str_st._ascii.ob_base,
+ &_Py_ID(data),
+ & const_str_exc_details._ascii.ob_base,
+ &_Py_ID(flags),
+ & const_str_bytes_data._ascii.ob_base,
+ & const_str_code_object._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[16];
+ }
+importlib__bootstrap_external_toplevel_consts_56_consts_9_localspluskinds = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 15,
+ },
+ .ob_shash = -1,
+ .ob_sval = " ",
+};
+static
+ struct _PyCode_DEF(1096)
+importlib__bootstrap_external_toplevel_consts_56_consts_9 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 548,
+ },
+ .co_consts = & importlib__bootstrap_external_toplevel_consts_56_consts_9_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_external_toplevel_consts_56_consts_9_names._object.ob_base.ob_base,
+ .co_exceptiontable = & importlib__bootstrap_external_toplevel_consts_56_consts_9_exceptiontable.ob_base.ob_base,
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 22 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 7,
+ .co_firstlineno = 1062,
+ .co_nlocalsplus = 15,
+ .co_nlocals = 15,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 150,
+ .co_localsplusnames = & importlib__bootstrap_external_toplevel_consts_56_consts_9_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_external_toplevel_consts_56_consts_9_localspluskinds.ob_base.ob_base,
+ .co_filename = & importlib__bootstrap_external_toplevel_consts_6_filename._ascii.ob_base,
+ .co_name = & const_str_get_code._ascii.ob_base,
+ .co_qualname = & importlib__bootstrap_external_toplevel_consts_56_consts_9_qualname._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_external_toplevel_consts_56_consts_9_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x00\x6a\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x02\x64\x01\x7d\x03\x64\x01\x7d\x04\x64\x01\x7d\x05\x64\x02\x7d\x06\x64\x03\x7d\x07\x09\x00\x74\x03\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x02\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x08\x09\x00\x7c\x00\x6a\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x02\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x09\x74\x07\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x09\x64\x04\x19\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x03\x09\x00\x7c\x00\x6a\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x08\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x0a\x7c\x01\x7c\x08\x64\x05\x9c\x02\x7d\x0b\x09\x00\x74\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x0a\x7c\x01\x7c\x0b\xab\x03\x00\x00\x00\x00\x00\x00\x7d\x0c\x74\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x0a\xab\x01\x00\x00\x00\x00\x00\x00\x64\x06\x64\x01\x1a\x00\x7d\x0d\x7c\x0c\x64\x07\x7a\x01\x00\x00\x64\x08\x6b\x37\x00\x00\x7d\x06\x7c\x06\x72\x6a\x7c\x0c\x64\x09\x7a\x01\x00\x00\x64\x08\x6b\x37\x00\x00\x7d\x07\x74\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x0a\x6b\x37\x00\x00\x72\x61\x7c\x07\x73\x13\x74\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x0b\x6b\x28\x00\x00\x72\x4c\x7c\x00\x6a\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x02\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x04\x74\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x74\x14\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x04\xab\x02\x00\x00\x00\x00\x00\x00\x7d\x05\x74\x17\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x0a\x7c\x05\x7c\x01\x7c\x0b\xab\x04\x00\x00\x00\x00\x00\x00\x01\x00\x6e\x12\x74\x19\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x0a\x7c\x03\x7c\x09\x64\x0c\x19\x00\x00\x00\x7c\x01\x7c\x0b\xab\x05\x00\x00\x00\x00\x00\x00\x01\x00\x74\x1a\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x1d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x0d\x7c\x08\x7c\x02\xab\x03\x00\x00\x00\x00\x00\x00\x01\x00\x74\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x0d\x7c\x01\x7c\x08\x7c\x02\xac\x0e\xab\x04\x00\x00\x00\x00\x00\x00\x53\x00\x23\x00\x74\x20\x00\x00\x00\x00\x00\x00\x00\x00\x74\x22\x00\x00\x00\x00\x00\x00\x00\x00\x66\x02\x24\x00\x72\x03\x01\x00\x59\x00\x6e\x33\x77\x00\x78\x03\x59\x00\x77\x01\x23\x00\x74\x24\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x72\x03\x01\x00\x59\x00\x6e\x24\x77\x00\x78\x03\x59\x00\x77\x01\x23\x00\x74\x24\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x72\x03\x01\x00\x59\x00\x6e\x15\x77\x00\x78\x03\x59\x00\x77\x01\x23\x00\x74\x26\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x72\x05\x01\x00\x64\x01\x7d\x08\x59\x00\x6e\x04\x77\x00\x78\x03\x59\x00\x77\x01\x7c\x04\x80\x11\x7c\x00\x6a\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x02\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x04\x7c\x00\x6a\x29\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x04\x7c\x02\xab\x02\x00\x00\x00\x00\x00\x00\x7d\x0e\x74\x1a\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x1d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x0f\x7c\x02\xab\x02\x00\x00\x00\x00\x00\x00\x01\x00\x74\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x2c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x73\x6c\x7c\x08\x81\x6a\x7c\x03\x81\x68\x7c\x06\x72\x2a\x7c\x05\x80\x1a\x74\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x74\x14\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x04\xab\x02\x00\x00\x00\x00\x00\x00\x7d\x05\x74\x2f\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x0e\x7c\x05\x7c\x07\xab\x03\x00\x00\x00\x00\x00\x00\x7d\x0a\x6e\x16\x74\x31\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x0e\x7c\x03\x74\x33\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x04\xab\x01\x00\x00\x00\x00\x00\x00\xab\x03\x00\x00\x00\x00\x00\x00\x7d\x0a\x09\x00\x7c\x00\x6a\x35\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x02\x7c\x08\x7c\x0a\xab\x03\x00\x00\x00\x00\x00\x00\x01\x00\x7c\x0e\x53\x00\x23\x00\x74\x26\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x72\x04\x01\x00\x59\x00\x7c\x0e\x53\x00\x77\x00\x78\x03\x59\x00\x77\x01\x7c\x0e\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[11];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_56_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 11,
+ },
+ .ob_item = {
+ & const_str_SourceLoader._ascii.ob_base,
+ & importlib__bootstrap_external_toplevel_consts_56_consts_1.ob_base.ob_base,
+ & importlib__bootstrap_external_toplevel_consts_56_consts_2.ob_base.ob_base,
+ & importlib__bootstrap_external_toplevel_consts_56_consts_3.ob_base.ob_base,
+ & importlib__bootstrap_external_toplevel_consts_56_consts_4.ob_base.ob_base,
+ & importlib__bootstrap_external_toplevel_consts_56_consts_5.ob_base.ob_base,
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + -1],
+ & importlib__bootstrap_external_toplevel_consts_56_consts_7._object.ob_base.ob_base,
+ & importlib__bootstrap_external_toplevel_consts_56_consts_8.ob_base.ob_base,
+ & importlib__bootstrap_external_toplevel_consts_56_consts_9.ob_base.ob_base,
+ Py_None,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[10];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_56_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 10,
+ },
+ .ob_item = {
+ &_Py_ID(__name__),
+ &_Py_ID(__module__),
+ &_Py_ID(__qualname__),
+ & const_str_path_mtime._ascii.ob_base,
+ & const_str_path_stats._ascii.ob_base,
+ & const_str__cache_bytecode._ascii.ob_base,
+ & const_str_set_data._ascii.ob_base,
+ &_Py_ID(get_source),
+ & const_str_source_to_code._ascii.ob_base,
+ & const_str_get_code._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[45];
+ }
+importlib__bootstrap_external_toplevel_consts_56_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 44,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x84\x00\xf2\x04\x06\x05\x16\xf2\x10\x0c\x05\x30\xf2\x1c\x08\x05\x2f\xf2\x14\x04\x05\x0c\xf2\x0e\x08\x05\x2b\xf0\x14\x00\x37\x39\xf4\x00\x06\x05\x4f\x01\xf3\x10\x53\x01\x05\x1b",
+};
+static
+ struct _PyCode_DEF(60)
+importlib__bootstrap_external_toplevel_consts_56 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 30,
+ },
+ .co_consts = & importlib__bootstrap_external_toplevel_consts_56_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_external_toplevel_consts_56_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 0,
+ .co_argcount = 0,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 2 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 2,
+ .co_firstlineno = 1003,
+ .co_nlocalsplus = 0,
+ .co_nlocals = 0,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 151,
+ .co_localsplusnames = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_filename = & importlib__bootstrap_external_toplevel_consts_6_filename._ascii.ob_base,
+ .co_name = & const_str_SourceLoader._ascii.ob_base,
+ .co_qualname = & const_str_SourceLoader._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_external_toplevel_consts_56_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x65\x00\x5a\x01\x64\x00\x5a\x02\x64\x01\x84\x00\x5a\x03\x64\x02\x84\x00\x5a\x04\x64\x03\x84\x00\x5a\x05\x64\x04\x84\x00\x5a\x06\x64\x05\x84\x00\x5a\x07\x64\x06\x64\x07\x9c\x01\x64\x08\x84\x02\x5a\x08\x64\x09\x84\x00\x5a\x09\x79\x0a",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[11];
+ }
+const_str_FileLoader = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 10,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "FileLoader",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[104];
+ }
+importlib__bootstrap_external_toplevel_consts_58_consts_1 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 103,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x42\x61\x73\x65\x20\x66\x69\x6c\x65\x20\x6c\x6f\x61\x64\x65\x72\x20\x63\x6c\x61\x73\x73\x20\x77\x68\x69\x63\x68\x20\x69\x6d\x70\x6c\x65\x6d\x65\x6e\x74\x73\x20\x74\x68\x65\x20\x6c\x6f\x61\x64\x65\x72\x20\x70\x72\x6f\x74\x6f\x63\x6f\x6c\x20\x6d\x65\x74\x68\x6f\x64\x73\x20\x74\x68\x61\x74\x0a\x20\x20\x20\x20\x72\x65\x71\x75\x69\x72\x65\x20\x66\x69\x6c\x65\x20\x73\x79\x73\x74\x65\x6d\x20\x75\x73\x61\x67\x65\x2e",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[76];
+ }
+importlib__bootstrap_external_toplevel_consts_58_consts_2_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 75,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x43\x61\x63\x68\x65\x20\x74\x68\x65\x20\x6d\x6f\x64\x75\x6c\x65\x20\x6e\x61\x6d\x65\x20\x61\x6e\x64\x20\x74\x68\x65\x20\x70\x61\x74\x68\x20\x74\x6f\x20\x74\x68\x65\x20\x66\x69\x6c\x65\x20\x66\x6f\x75\x6e\x64\x20\x62\x79\x20\x74\x68\x65\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x66\x69\x6e\x64\x65\x72\x2e",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_58_consts_2_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & importlib__bootstrap_external_toplevel_consts_58_consts_2_consts_0._ascii.ob_base,
+ Py_None,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[20];
+ }
+importlib__bootstrap_external_toplevel_consts_58_consts_2_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 19,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "FileLoader.__init__",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[19];
+ }
+importlib__bootstrap_external_toplevel_consts_58_consts_2_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 18,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf0\x06\x00\x15\x1d\x88\x04\x8c\x09\xd8\x14\x18\x88\x04\x8d\x09",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_58_consts_2_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ &_Py_ID(self),
+ & const_str_fullname._ascii.ob_base,
+ &_Py_ID(path),
+ },
+ },
+};
+static
+ struct _PyCode_DEF(32)
+importlib__bootstrap_external_toplevel_consts_58_consts_2 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 16,
+ },
+ .co_consts = & importlib__bootstrap_external_toplevel_consts_58_consts_2_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_external_toplevel_consts_45_consts_3._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 3,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 5 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 2,
+ .co_firstlineno = 1153,
+ .co_nlocalsplus = 3,
+ .co_nlocals = 3,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 152,
+ .co_localsplusnames = & importlib__bootstrap_external_toplevel_consts_58_consts_2_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_3_localspluskinds.ob_base.ob_base,
+ .co_filename = & importlib__bootstrap_external_toplevel_consts_6_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__init__),
+ .co_qualname = & importlib__bootstrap_external_toplevel_consts_58_consts_2_qualname._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_external_toplevel_consts_58_consts_2_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x01\x7c\x00\x5f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x02\x7c\x00\x5f\x01\x00\x00\x00\x00\x00\x00\x00\x00\x79\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_58_consts_3_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ &_Py_ID(__class__),
+ &_Py_ID(__dict__),
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[18];
+ }
+importlib__bootstrap_external_toplevel_consts_58_consts_3_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 17,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "FileLoader.__eq__",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[45];
+ }
+importlib__bootstrap_external_toplevel_consts_58_consts_3_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 44,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xd8\x10\x14\x97\x0e\x91\x0e\xa0\x25\xa7\x2f\xa1\x2f\xd1\x10\x31\xf2\x00\x01\x11\x30\xd8\x10\x14\x97\x0d\x91\x0d\xa0\x15\xa7\x1e\xa1\x1e\xd1\x10\x2f\xf0\x03\x01\x09\x31",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_58_consts_3_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ &_Py_ID(self),
+ & const_str_other._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(106)
+importlib__bootstrap_external_toplevel_consts_58_consts_3 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 53,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_1_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_external_toplevel_consts_58_consts_3_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 4 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 2,
+ .co_firstlineno = 1159,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 2,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 153,
+ .co_localsplusnames = & importlib__bootstrap_external_toplevel_consts_58_consts_3_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_14_consts_2_localspluskinds.ob_base.ob_base,
+ .co_filename = & importlib__bootstrap_external_toplevel_consts_6_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__eq__),
+ .co_qualname = & importlib__bootstrap_external_toplevel_consts_58_consts_3_qualname._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_external_toplevel_consts_58_consts_3_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6b\x28\x00\x00\x78\x01\x72\x19\x01\x00\x7c\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6b\x28\x00\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[5];
+ }
+const_str_hash = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 4,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "hash",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_58_consts_4_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ & const_str_hash._ascii.ob_base,
+ &_Py_ID(name),
+ &_Py_ID(path),
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[20];
+ }
+importlib__bootstrap_external_toplevel_consts_58_consts_4_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 19,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "FileLoader.__hash__",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[30];
+ }
+importlib__bootstrap_external_toplevel_consts_58_consts_4_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 29,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xdc\x0f\x13\x90\x44\x97\x49\x91\x49\x8b\x7f\xa4\x14\xa0\x64\xa7\x69\xa1\x69\xa3\x1f\xd1\x0f\x30\xd0\x08\x30",
+};
+static
+ struct _PyCode_DEF(88)
+importlib__bootstrap_external_toplevel_consts_58_consts_4 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 44,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_1_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_external_toplevel_consts_58_consts_4_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 5 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 1163,
+ .co_nlocalsplus = 1,
+ .co_nlocals = 1,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 154,
+ .co_localsplusnames = & importlib__bootstrap_toplevel_consts_7_consts_2_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_characters[32]),
+ .co_filename = & importlib__bootstrap_external_toplevel_consts_6_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__hash__),
+ .co_qualname = & importlib__bootstrap_external_toplevel_consts_58_consts_4_qualname._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_external_toplevel_consts_58_consts_4_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x6a\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7a\x0c\x00\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[101];
+ }
+importlib__bootstrap_external_toplevel_consts_58_consts_5_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 100,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x4c\x6f\x61\x64\x20\x61\x20\x6d\x6f\x64\x75\x6c\x65\x20\x66\x72\x6f\x6d\x20\x61\x20\x66\x69\x6c\x65\x2e\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x54\x68\x69\x73\x20\x6d\x65\x74\x68\x6f\x64\x20\x69\x73\x20\x64\x65\x70\x72\x65\x63\x61\x74\x65\x64\x2e\x20\x20\x55\x73\x65\x20\x65\x78\x65\x63\x5f\x6d\x6f\x64\x75\x6c\x65\x28\x29\x20\x69\x6e\x73\x74\x65\x61\x64\x2e\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_58_consts_5_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & importlib__bootstrap_external_toplevel_consts_58_consts_5_consts_0._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_58_consts_5_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ & const_str_super._ascii.ob_base,
+ & const_str_FileLoader._ascii.ob_base,
+ & const_str_load_module._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[23];
+ }
+importlib__bootstrap_external_toplevel_consts_58_consts_5_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 22,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "FileLoader.load_module",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[24];
+ }
+importlib__bootstrap_external_toplevel_consts_58_consts_5_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 23,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\xf8\x80\x00\xf4\x14\x00\x10\x15\x94\x5a\xa0\x14\xd1\x0f\x32\xb0\x38\xd3\x0f\x3c\xd0\x08\x3c",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_58_consts_5_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ &_Py_ID(self),
+ & const_str_fullname._ascii.ob_base,
+ &_Py_ID(__class__),
+ },
+ },
+};
+static
+ struct _PyCode_DEF(42)
+importlib__bootstrap_external_toplevel_consts_58_consts_5 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 21,
+ },
+ .co_consts = & importlib__bootstrap_external_toplevel_consts_58_consts_5_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_external_toplevel_consts_58_consts_5_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 6 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 3,
+ .co_firstlineno = 1166,
+ .co_nlocalsplus = 3,
+ .co_nlocals = 2,
+ .co_ncellvars = 0,
+ .co_nfreevars = 1,
+ .co_version = 155,
+ .co_localsplusnames = & importlib__bootstrap_external_toplevel_consts_58_consts_5_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_7_consts_1_consts_1_consts_4_localspluskinds.ob_base.ob_base,
+ .co_filename = & importlib__bootstrap_external_toplevel_consts_6_filename._ascii.ob_base,
+ .co_name = & const_str_load_module._ascii.ob_base,
+ .co_qualname = & importlib__bootstrap_external_toplevel_consts_58_consts_5_qualname._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_external_toplevel_consts_58_consts_5_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x95\x01\x97\x00\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x74\x02\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x8d\x0b\x00\x00\x7c\x01\xab\x01\x00\x00\x00\x00\x00\x00\x53\x00",
+ ._co_firsttraceable = 1,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[59];
+ }
+importlib__bootstrap_external_toplevel_consts_58_consts_6_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 58,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Return the path to the source file as found by the finder.",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_58_consts_6_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & importlib__bootstrap_external_toplevel_consts_58_consts_6_consts_0._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[24];
+ }
+importlib__bootstrap_external_toplevel_consts_58_consts_6_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 23,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "FileLoader.get_filename",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[15];
+ }
+importlib__bootstrap_external_toplevel_consts_58_consts_6_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 14,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf0\x06\x00\x10\x14\x8f\x79\x89\x79\xd0\x08\x18",
+};
+static
+ struct _PyCode_DEF(26)
+importlib__bootstrap_external_toplevel_consts_58_consts_6 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 13,
+ },
+ .co_consts = & importlib__bootstrap_external_toplevel_consts_58_consts_6_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_external_toplevel_consts_18_localsplusnames._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 3 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 1,
+ .co_firstlineno = 1178,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 2,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 156,
+ .co_localsplusnames = & importlib__bootstrap_external_toplevel_consts_54_consts_5_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_14_consts_2_localspluskinds.ob_base.ob_base,
+ .co_filename = & importlib__bootstrap_external_toplevel_consts_6_filename._ascii.ob_base,
+ .co_name = & const_str_get_filename._ascii.ob_base,
+ .co_qualname = & importlib__bootstrap_external_toplevel_consts_58_consts_6_qualname._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_external_toplevel_consts_58_consts_6_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[40];
+ }
+importlib__bootstrap_external_toplevel_consts_58_consts_7_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 39,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Return the data from path as raw bytes.",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_58_consts_7_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ & importlib__bootstrap_external_toplevel_consts_58_consts_7_consts_0._ascii.ob_base,
+ Py_None,
+ &_Py_ID(r),
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[20];
+ }
+const_str_ExtensionFileLoader = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 19,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "ExtensionFileLoader",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[10];
+ }
+const_str_open_code = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 9,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "open_code",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[8];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_58_consts_7_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 8,
+ },
+ .ob_item = {
+ &_Py_ID(isinstance),
+ & const_str_SourceLoader._ascii.ob_base,
+ & const_str_ExtensionFileLoader._ascii.ob_base,
+ &_Py_ID(_io),
+ & const_str_open_code._ascii.ob_base,
+ & const_str_str._ascii.ob_base,
+ &_Py_ID(read),
+ & const_str_FileIO._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[20];
+ }
+importlib__bootstrap_external_toplevel_consts_58_consts_7_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 19,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "FileLoader.get_data",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[125];
+ }
+importlib__bootstrap_external_toplevel_consts_58_consts_7_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 124,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xe4\x0b\x15\x90\x64\x9c\x5c\xd4\x2b\x3e\xd0\x1c\x3f\xd4\x0b\x40\xdc\x11\x14\x97\x1d\x91\x1d\x9c\x73\xa0\x34\x9b\x79\xd3\x11\x29\xf0\x00\x01\x0d\x23\xa8\x54\xd8\x17\x1b\x97\x79\x91\x79\x93\x7b\xf7\x03\x01\x0d\x23\xf1\x00\x01\x0d\x23\xf4\x06\x00\x12\x15\x97\x1a\x91\x1a\x98\x44\xa0\x23\xd3\x11\x26\xf0\x00\x01\x0d\x23\xa8\x24\xd8\x17\x1b\x97\x79\x91\x79\x93\x7b\xf7\x03\x01\x0d\x23\xf1\x00\x01\x0d\x23\xf7\x07\x01\x0d\x23\xf0\x00\x01\x0d\x23\xfa\xf7\x06\x01\x0d\x23\xf0\x00\x01\x0d\x23\xfa",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[24];
+ }
+importlib__bootstrap_external_toplevel_consts_58_consts_7_exceptiontable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 23,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\xb5\x10\x41\x3f\x03\xc1\x25\x10\x42\x0b\x03\xc1\x3f\x05\x42\x08\x07\xc2\x0b\x05\x42\x14\x07",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_58_consts_7_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ &_Py_ID(self),
+ &_Py_ID(path),
+ &_Py_ID(file),
+ },
+ },
+};
+static
+ struct _PyCode_DEF(302)
+importlib__bootstrap_external_toplevel_consts_58_consts_7 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 151,
+ },
+ .co_consts = & importlib__bootstrap_external_toplevel_consts_58_consts_7_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_external_toplevel_consts_58_consts_7_names._object.ob_base.ob_base,
+ .co_exceptiontable = & importlib__bootstrap_external_toplevel_consts_58_consts_7_exceptiontable.ob_base.ob_base,
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 9 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 6,
+ .co_firstlineno = 1183,
+ .co_nlocalsplus = 3,
+ .co_nlocals = 3,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 157,
+ .co_localsplusnames = & importlib__bootstrap_external_toplevel_consts_58_consts_7_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_3_localspluskinds.ob_base.ob_base,
+ .co_filename = & importlib__bootstrap_external_toplevel_consts_6_filename._ascii.ob_base,
+ .co_name = & const_str_get_data._ascii.ob_base,
+ .co_qualname = & importlib__bootstrap_external_toplevel_consts_58_consts_7_qualname._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_external_toplevel_consts_58_consts_7_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x74\x02\x00\x00\x00\x00\x00\x00\x00\x00\x74\x04\x00\x00\x00\x00\x00\x00\x00\x00\x66\x02\xab\x02\x00\x00\x00\x00\x00\x00\x72\x38\x74\x07\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x74\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\xab\x01\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x35\x00\x7d\x02\x7c\x02\x6a\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x63\x02\x64\x01\x64\x01\x64\x01\xab\x02\x00\x00\x00\x00\x00\x00\x01\x00\x53\x00\x74\x07\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x64\x02\xab\x02\x00\x00\x00\x00\x00\x00\x35\x00\x7d\x02\x7c\x02\x6a\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x63\x02\x64\x01\x64\x01\x64\x01\xab\x02\x00\x00\x00\x00\x00\x00\x01\x00\x53\x00\x23\x00\x31\x00\x73\x01\x77\x02\x01\x00\x59\x00\x01\x00\x01\x00\x79\x01\x78\x03\x59\x00\x77\x01\x23\x00\x31\x00\x73\x01\x77\x02\x01\x00\x59\x00\x01\x00\x01\x00\x79\x01\x78\x03\x59\x00\x77\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[11];
+ }
+const_str_FileReader = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 10,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "FileReader",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_58_consts_8_consts_2 = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & const_str_FileReader._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_58_consts_8_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ Py_None,
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 0],
+ & importlib__bootstrap_external_toplevel_consts_58_consts_8_consts_2._object.ob_base.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[18];
+ }
+importlib__bootstrap_external_toplevel_consts_58_consts_8_names_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 17,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "importlib.readers",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_58_consts_8_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & importlib__bootstrap_external_toplevel_consts_58_consts_8_names_0._ascii.ob_base,
+ & const_str_FileReader._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[20];
+ }
+const_str_get_resource_reader = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 19,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "get_resource_reader",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[31];
+ }
+importlib__bootstrap_external_toplevel_consts_58_consts_8_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 30,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "FileLoader.get_resource_reader",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[17];
+ }
+importlib__bootstrap_external_toplevel_consts_58_consts_8_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 16,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xe5\x08\x30\xd9\x0f\x19\x98\x24\xd3\x0f\x1f\xd0\x08\x1f",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_58_consts_8_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ &_Py_ID(self),
+ &_Py_ID(module),
+ & const_str_FileReader._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(30)
+importlib__bootstrap_external_toplevel_consts_58_consts_8 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 15,
+ },
+ .co_consts = & importlib__bootstrap_external_toplevel_consts_58_consts_8_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_external_toplevel_consts_58_consts_8_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 6 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 3,
+ .co_firstlineno = 1192,
+ .co_nlocalsplus = 3,
+ .co_nlocals = 3,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 158,
+ .co_localsplusnames = & importlib__bootstrap_external_toplevel_consts_58_consts_8_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_3_localspluskinds.ob_base.ob_base,
+ .co_filename = & importlib__bootstrap_external_toplevel_consts_6_filename._ascii.ob_base,
+ .co_name = & const_str_get_resource_reader._ascii.ob_base,
+ .co_qualname = & importlib__bootstrap_external_toplevel_consts_58_consts_8_qualname._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_external_toplevel_consts_58_consts_8_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x64\x01\x64\x02\x6c\x00\x6d\x01\x7d\x02\x01\x00\x02\x00\x7c\x02\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[9];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_58_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 9,
+ },
+ .ob_item = {
+ & const_str_FileLoader._ascii.ob_base,
+ & importlib__bootstrap_external_toplevel_consts_58_consts_1._ascii.ob_base,
+ & importlib__bootstrap_external_toplevel_consts_58_consts_2.ob_base.ob_base,
+ & importlib__bootstrap_external_toplevel_consts_58_consts_3.ob_base.ob_base,
+ & importlib__bootstrap_external_toplevel_consts_58_consts_4.ob_base.ob_base,
+ & importlib__bootstrap_external_toplevel_consts_58_consts_5.ob_base.ob_base,
+ & importlib__bootstrap_external_toplevel_consts_58_consts_6.ob_base.ob_base,
+ & importlib__bootstrap_external_toplevel_consts_58_consts_7.ob_base.ob_base,
+ & importlib__bootstrap_external_toplevel_consts_58_consts_8.ob_base.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[13];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_58_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 13,
+ },
+ .ob_item = {
+ &_Py_ID(__name__),
+ &_Py_ID(__module__),
+ &_Py_ID(__qualname__),
+ &_Py_ID(__doc__),
+ &_Py_ID(__init__),
+ &_Py_ID(__eq__),
+ &_Py_ID(__hash__),
+ & const_str__check_name._ascii.ob_base,
+ & const_str_load_module._ascii.ob_base,
+ & const_str_get_filename._ascii.ob_base,
+ & const_str_get_data._ascii.ob_base,
+ & const_str_get_resource_reader._ascii.ob_base,
+ &_Py_ID(__classcell__),
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[89];
+ }
+importlib__bootstrap_external_toplevel_consts_58_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 88,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\xf8\x84\x00\xf1\x04\x01\x05\x22\xf2\x06\x04\x05\x19\xf2\x0c\x02\x05\x31\xf2\x08\x01\x05\x31\xf0\x06\x00\x06\x11\xf3\x02\x09\x05\x3d\xf3\x03\x00\x06\x11\xf0\x02\x09\x05\x3d\xf0\x16\x00\x06\x11\xf1\x02\x02\x05\x19\xf3\x03\x00\x06\x11\xf0\x02\x02\x05\x19\xf2\x08\x07\x05\x23\xf0\x12\x00\x06\x11\xf1\x02\x02\x05\x20\xf3\x03\x00\x06\x11\xf4\x02\x02\x05\x20",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_58_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ &_Py_ID(__class__),
+ },
+ },
+};
+static
+ struct _PyCode_DEF(100)
+importlib__bootstrap_external_toplevel_consts_58 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 50,
+ },
+ .co_consts = & importlib__bootstrap_external_toplevel_consts_58_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_external_toplevel_consts_58_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 0,
+ .co_argcount = 0,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 4 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 3,
+ .co_firstlineno = 1148,
+ .co_nlocalsplus = 1,
+ .co_nlocals = 0,
+ .co_ncellvars = 1,
+ .co_nfreevars = 0,
+ .co_version = 159,
+ .co_localsplusnames = & importlib__bootstrap_external_toplevel_consts_58_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_characters[64]),
+ .co_filename = & importlib__bootstrap_external_toplevel_consts_6_filename._ascii.ob_base,
+ .co_name = & const_str_FileLoader._ascii.ob_base,
+ .co_qualname = & const_str_FileLoader._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_external_toplevel_consts_58_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x87\x00\x97\x00\x65\x00\x5a\x01\x64\x00\x5a\x02\x64\x01\x5a\x03\x64\x02\x84\x00\x5a\x04\x64\x03\x84\x00\x5a\x05\x64\x04\x84\x00\x5a\x06\x65\x07\x88\x00\x66\x01\x64\x05\x84\x08\xab\x00\x00\x00\x00\x00\x00\x00\x5a\x08\x65\x07\x64\x06\x84\x00\xab\x00\x00\x00\x00\x00\x00\x00\x5a\x09\x64\x07\x84\x00\x5a\x0a\x65\x07\x64\x08\x84\x00\xab\x00\x00\x00\x00\x00\x00\x00\x5a\x0b\x88\x00\x78\x01\x5a\x0c\x53\x00",
+ ._co_firsttraceable = 1,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[17];
+ }
+const_str_SourceFileLoader = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 16,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "SourceFileLoader",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[63];
+ }
+importlib__bootstrap_external_toplevel_consts_60_consts_1 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 62,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Concrete implementation of SourceLoader using the file system.",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[34];
+ }
+importlib__bootstrap_external_toplevel_consts_60_consts_2_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 33,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Return the metadata for the path.",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_60_consts_2_consts_1 = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & const_str_mtime._ascii.ob_base,
+ &_Py_ID(size),
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_60_consts_2_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & importlib__bootstrap_external_toplevel_consts_60_consts_2_consts_0._ascii.ob_base,
+ & importlib__bootstrap_external_toplevel_consts_60_consts_2_consts_1._object.ob_base.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[9];
+ }
+const_str_st_mtime = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 8,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "st_mtime",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[8];
+ }
+const_str_st_size = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 7,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "st_size",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_60_consts_2_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ & const_str__path_stat._ascii.ob_base,
+ & const_str_st_mtime._ascii.ob_base,
+ & const_str_st_size._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[28];
+ }
+importlib__bootstrap_external_toplevel_consts_60_consts_2_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 27,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "SourceFileLoader.path_stats",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[32];
+ }
+importlib__bootstrap_external_toplevel_consts_60_consts_2_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 31,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xe4\x0d\x17\x98\x04\xd3\x0d\x1d\x88\x02\xd8\x19\x1b\x9f\x1b\x99\x1b\xa8\x62\xaf\x6a\xa9\x6a\xd1\x0f\x39\xd0\x08\x39",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_60_consts_2_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ &_Py_ID(self),
+ &_Py_ID(path),
+ & const_str_st._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(74)
+importlib__bootstrap_external_toplevel_consts_60_consts_2 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 37,
+ },
+ .co_consts = & importlib__bootstrap_external_toplevel_consts_60_consts_2_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_external_toplevel_consts_60_consts_2_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 6 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 3,
+ .co_firstlineno = 1202,
+ .co_nlocalsplus = 3,
+ .co_nlocals = 3,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 160,
+ .co_localsplusnames = & importlib__bootstrap_external_toplevel_consts_60_consts_2_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_3_localspluskinds.ob_base.ob_base,
+ .co_filename = & importlib__bootstrap_external_toplevel_consts_6_filename._ascii.ob_base,
+ .co_name = & const_str_path_stats._ascii.ob_base,
+ .co_qualname = & importlib__bootstrap_external_toplevel_consts_60_consts_2_qualname._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_external_toplevel_consts_60_consts_2_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x02\x7c\x02\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x02\x6a\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x01\x9c\x02\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[6];
+ }
+const_str__mode = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 5,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_mode",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_60_consts_3_consts_1 = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & const_str__mode._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_60_consts_3_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ Py_None,
+ & importlib__bootstrap_external_toplevel_consts_60_consts_3_consts_1._object.ob_base.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_60_consts_3_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & const_str__calc_mode._ascii.ob_base,
+ & const_str_set_data._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[33];
+ }
+importlib__bootstrap_external_toplevel_consts_60_consts_3_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 32,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "SourceFileLoader._cache_bytecode",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[34];
+ }
+importlib__bootstrap_external_toplevel_consts_60_consts_3_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 33,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xe4\x0f\x19\x98\x2b\xd3\x0f\x26\x88\x04\xd8\x0f\x13\x8f\x7d\x89\x7d\x98\x5d\xa8\x44\xb8\x04\x88\x7d\xd3\x0f\x3d\xd0\x08\x3d",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[5];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_60_consts_3_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 5,
+ },
+ .ob_item = {
+ &_Py_ID(self),
+ & const_str_source_path._ascii.ob_base,
+ & const_str_bytecode_path._ascii.ob_base,
+ &_Py_ID(data),
+ &_Py_ID(mode),
+ },
+ },
+};
+static
+ struct _PyCode_DEF(64)
+importlib__bootstrap_external_toplevel_consts_60_consts_3 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 32,
+ },
+ .co_consts = & importlib__bootstrap_external_toplevel_consts_60_consts_3_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_external_toplevel_consts_60_consts_3_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 4,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 10 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 5,
+ .co_firstlineno = 1207,
+ .co_nlocalsplus = 5,
+ .co_nlocals = 5,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 161,
+ .co_localsplusnames = & importlib__bootstrap_external_toplevel_consts_60_consts_3_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_7_consts_5_localspluskinds.ob_base.ob_base,
+ .co_filename = & importlib__bootstrap_external_toplevel_consts_6_filename._ascii.ob_base,
+ .co_name = & const_str__cache_bytecode._ascii.ob_base,
+ .co_qualname = & importlib__bootstrap_external_toplevel_consts_60_consts_3_qualname._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_external_toplevel_consts_60_consts_3_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x04\x7c\x00\x6a\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x02\x7c\x03\x7c\x04\xac\x01\xab\x03\x00\x00\x00\x00\x00\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[28];
+ }
+importlib__bootstrap_external_toplevel_consts_60_consts_6_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 27,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Write bytes data to a file.",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[28];
+ }
+importlib__bootstrap_external_toplevel_consts_60_consts_6_consts_1 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 27,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "could not create {!r}: {!r}",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[13];
+ }
+importlib__bootstrap_external_toplevel_consts_60_consts_6_consts_3 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 12,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "created {!r}",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[4];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_60_consts_6_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_item = {
+ & importlib__bootstrap_external_toplevel_consts_60_consts_6_consts_0._ascii.ob_base,
+ & importlib__bootstrap_external_toplevel_consts_60_consts_6_consts_1._ascii.ob_base,
+ Py_None,
+ & importlib__bootstrap_external_toplevel_consts_60_consts_6_consts_3._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[6];
+ }
+const_str_mkdir = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 5,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "mkdir",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[16];
+ }
+const_str_FileExistsError = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 15,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "FileExistsError",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[12];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_60_consts_6_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 12,
+ },
+ .ob_item = {
+ & const_str__path_split._ascii.ob_base,
+ & const_str__path_isdir._ascii.ob_base,
+ &_Py_ID(append),
+ &_Py_ID(reversed),
+ & const_str__path_join._ascii.ob_base,
+ & const_str__os._ascii.ob_base,
+ & const_str_mkdir._ascii.ob_base,
+ & const_str_FileExistsError._ascii.ob_base,
+ & const_str_OSError._ascii.ob_base,
+ &_Py_ID(_bootstrap),
+ & const_str__verbose_message._ascii.ob_base,
+ & const_str__write_atomic._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[26];
+ }
+importlib__bootstrap_external_toplevel_consts_60_consts_6_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 25,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "SourceFileLoader.set_data",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[257];
+ }
+importlib__bootstrap_external_toplevel_consts_60_consts_6_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 256,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xe4\x1b\x26\xa0\x74\xd3\x1b\x2c\xd1\x08\x18\x88\x06\x90\x08\xd8\x15\x17\x88\x0a\xe1\x0e\x14\x9c\x5b\xa8\x16\xd4\x1d\x30\xdc\x1b\x26\xa0\x76\xd3\x1b\x2e\x89\x4c\x88\x46\x90\x44\xd8\x0c\x16\xd7\x0c\x1d\xd1\x0c\x1d\x98\x64\xd4\x0c\x23\xf1\x05\x00\x0f\x15\x9c\x5b\xa8\x16\xd5\x1d\x30\xf4\x08\x00\x15\x1d\x98\x5a\xd3\x14\x28\xf2\x00\x0c\x09\x17\x88\x44\xdc\x15\x1f\xa0\x06\xa8\x04\xd3\x15\x2d\x88\x46\xf0\x02\x0a\x0d\x17\xdc\x10\x13\x97\x09\x91\x09\x98\x26\xd5\x10\x21\xf0\x07\x0c\x09\x17\xf0\x1a\x06\x09\x2d\xdc\x0c\x19\x98\x24\xa0\x04\xa0\x65\xd4\x0c\x2c\xdc\x0c\x16\xd7\x0c\x27\xd1\x0c\x27\xa8\x0e\xb8\x04\xd5\x0c\x3d\xf8\xf4\x17\x00\x14\x23\xf2\x00\x02\x0d\x19\xe1\x10\x18\xdc\x13\x1a\xf2\x00\x05\x0d\x17\xf4\x06\x00\x11\x1b\xd7\x10\x2b\xd1\x10\x2b\xd0\x2c\x49\xd8\x2c\x32\xb0\x43\xf4\x03\x01\x11\x39\xe5\x10\x16\xfb\xf0\x0b\x05\x0d\x17\xfb\xf4\x12\x00\x10\x17\xf2\x00\x03\x09\x2d\xe4\x0c\x16\xd7\x0c\x27\xd1\x0c\x27\xd0\x28\x45\xc0\x74\xd8\x28\x2b\xf7\x03\x01\x0d\x2d\xf1\x00\x01\x0d\x2d\xfb\xf0\x05\x03\x09\x2d\xfa",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[55];
+ }
+importlib__bootstrap_external_toplevel_consts_60_consts_6_exceptiontable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 54,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\xc1\x26\x15\x42\x22\x02\xc1\x3e\x23\x43\x1a\x00\xc2\x22\x09\x43\x17\x05\xc2\x2d\x08\x43\x17\x05\xc2\x35\x17\x43\x12\x05\xc3\x12\x05\x43\x17\x05\xc3\x1a\x09\x44\x04\x03\xc3\x23\x17\x43\x3f\x03\xc3\x3f\x05\x44\x04\x03",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[9];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_60_consts_6_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 9,
+ },
+ .ob_item = {
+ &_Py_ID(self),
+ &_Py_ID(path),
+ &_Py_ID(data),
+ & const_str__mode._ascii.ob_base,
+ &_Py_ID(parent),
+ &_Py_ID(filename),
+ & const_str_path_parts._ascii.ob_base,
+ & const_str_part._ascii.ob_base,
+ & const_str_exc._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(526)
+importlib__bootstrap_external_toplevel_consts_60_consts_6 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 263,
+ },
+ .co_consts = & importlib__bootstrap_external_toplevel_consts_60_consts_6_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_external_toplevel_consts_60_consts_6_names._object.ob_base.ob_base,
+ .co_exceptiontable = & importlib__bootstrap_external_toplevel_consts_60_consts_6_exceptiontable.ob_base.ob_base,
+ .co_flags = 3,
+ .co_argcount = 3,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 1,
+ .co_framesize = 16 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 7,
+ .co_firstlineno = 1212,
+ .co_nlocalsplus = 9,
+ .co_nlocals = 9,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 162,
+ .co_localsplusnames = & importlib__bootstrap_external_toplevel_consts_60_consts_6_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_61_localspluskinds.ob_base.ob_base,
+ .co_filename = & importlib__bootstrap_external_toplevel_consts_6_filename._ascii.ob_base,
+ .co_name = & const_str_set_data._ascii.ob_base,
+ .co_qualname = & importlib__bootstrap_external_toplevel_consts_60_consts_6_qualname._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_external_toplevel_consts_60_consts_6_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\xab\x01\x00\x00\x00\x00\x00\x00\x5c\x02\x00\x00\x7d\x04\x7d\x05\x67\x00\x7d\x06\x7c\x04\x72\x38\x74\x03\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x04\xab\x01\x00\x00\x00\x00\x00\x00\x73\x2d\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x04\xab\x01\x00\x00\x00\x00\x00\x00\x5c\x02\x00\x00\x7d\x04\x7d\x07\x7c\x06\x6a\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x07\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x7c\x04\x72\x0c\x74\x03\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x04\xab\x01\x00\x00\x00\x00\x00\x00\x73\x01\x8c\x2d\x74\x07\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x06\xab\x01\x00\x00\x00\x00\x00\x00\x44\x00\x5d\x24\x00\x00\x7d\x07\x74\x09\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x04\x7c\x07\xab\x02\x00\x00\x00\x00\x00\x00\x7d\x04\x09\x00\x74\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x04\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x8c\x26\x04\x00\x09\x00\x74\x17\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x7c\x02\x7c\x03\xab\x03\x00\x00\x00\x00\x00\x00\x01\x00\x74\x12\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x15\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x03\x7c\x01\xab\x02\x00\x00\x00\x00\x00\x00\x01\x00\x79\x02\x23\x00\x74\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x72\x03\x01\x00\x59\x00\x8c\x57\x74\x10\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x72\x22\x7d\x08\x74\x12\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x15\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x01\x7c\x04\x7c\x08\xab\x03\x00\x00\x00\x00\x00\x00\x01\x00\x59\x00\x64\x02\x7d\x08\x7e\x08\x01\x00\x79\x02\x64\x02\x7d\x08\x7e\x08\x77\x01\x77\x00\x78\x03\x59\x00\x77\x01\x23\x00\x74\x10\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x72\x21\x7d\x08\x74\x12\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x15\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x01\x7c\x01\x7c\x08\xab\x03\x00\x00\x00\x00\x00\x00\x01\x00\x59\x00\x64\x02\x7d\x08\x7e\x08\x79\x02\x64\x02\x7d\x08\x7e\x08\x77\x01\x77\x00\x78\x03\x59\x00\x77\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[8];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_60_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 8,
+ },
+ .ob_item = {
+ & const_str_SourceFileLoader._ascii.ob_base,
+ & importlib__bootstrap_external_toplevel_consts_60_consts_1._ascii.ob_base,
+ & importlib__bootstrap_external_toplevel_consts_60_consts_2.ob_base.ob_base,
+ & importlib__bootstrap_external_toplevel_consts_60_consts_3.ob_base.ob_base,
+ & const_int_438.ob_base,
+ & importlib__bootstrap_external_toplevel_consts_60_consts_3_consts_1._object.ob_base.ob_base,
+ & importlib__bootstrap_external_toplevel_consts_60_consts_6.ob_base.ob_base,
+ Py_None,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[7];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_60_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 7,
+ },
+ .ob_item = {
+ &_Py_ID(__name__),
+ &_Py_ID(__module__),
+ &_Py_ID(__qualname__),
+ &_Py_ID(__doc__),
+ & const_str_path_stats._ascii.ob_base,
+ & const_str__cache_bytecode._ascii.ob_base,
+ & const_str_set_data._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[26];
+ }
+importlib__bootstrap_external_toplevel_consts_60_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 25,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x84\x00\xe1\x04\x48\xf2\x04\x03\x05\x3a\xf2\x0a\x03\x05\x3e\xf0\x0a\x00\x2d\x32\xf5\x00\x1c\x05\x2d",
+};
+static
+ struct _PyCode_DEF(40)
+importlib__bootstrap_external_toplevel_consts_60 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 20,
+ },
+ .co_consts = & importlib__bootstrap_external_toplevel_consts_60_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_external_toplevel_consts_60_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 0,
+ .co_argcount = 0,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 2 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 2,
+ .co_firstlineno = 1198,
+ .co_nlocalsplus = 0,
+ .co_nlocals = 0,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 163,
+ .co_localsplusnames = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_filename = & importlib__bootstrap_external_toplevel_consts_6_filename._ascii.ob_base,
+ .co_name = & const_str_SourceFileLoader._ascii.ob_base,
+ .co_qualname = & const_str_SourceFileLoader._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_external_toplevel_consts_60_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x65\x00\x5a\x01\x64\x00\x5a\x02\x64\x01\x5a\x03\x64\x02\x84\x00\x5a\x04\x64\x03\x84\x00\x5a\x05\x64\x04\x64\x05\x9c\x01\x64\x06\x84\x02\x5a\x06\x79\x07",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[21];
+ }
+const_str_SourcelessFileLoader = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 20,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "SourcelessFileLoader",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[46];
+ }
+importlib__bootstrap_external_toplevel_consts_62_consts_1 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 45,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Loader which handles sourceless file imports.",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_62_consts_2_consts_3 = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ &_Py_ID(name),
+ & const_str_bytecode_path._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[4];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_62_consts_2_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_item = {
+ Py_None,
+ & importlib__bootstrap_external_toplevel_consts_45_consts_3._object.ob_base.ob_base,
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 16],
+ & importlib__bootstrap_external_toplevel_consts_62_consts_2_consts_3._object.ob_base.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[5];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_62_consts_2_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 5,
+ },
+ .ob_item = {
+ & const_str_get_filename._ascii.ob_base,
+ & const_str_get_data._ascii.ob_base,
+ & const_str__classify_pyc._ascii.ob_base,
+ & const_str__compile_bytecode._ascii.ob_base,
+ & const_str_memoryview._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[30];
+ }
+importlib__bootstrap_external_toplevel_consts_62_consts_2_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 29,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "SourcelessFileLoader.get_code",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[96];
+ }
+importlib__bootstrap_external_toplevel_consts_62_consts_2_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 95,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xd8\x0f\x13\xd7\x0f\x20\xd1\x0f\x20\xa0\x18\xd3\x0f\x2a\x88\x04\xd8\x0f\x13\x8f\x7d\x89\x7d\x98\x54\xd3\x0f\x22\x88\x04\xf0\x08\x00\x15\x1d\xd8\x14\x18\xf1\x05\x03\x17\x0a\x88\x0b\xf4\x08\x00\x09\x16\x90\x64\x98\x48\xa0\x6b\xd4\x08\x32\xdc\x0f\x20\xdc\x0c\x16\x90\x74\xd3\x0c\x1c\x98\x52\x98\x53\xd0\x0c\x21\xd8\x11\x19\xd8\x1a\x1e\xf4\x07\x04\x10\x0a\xf0\x00\x04\x09\x0a",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[5];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_62_consts_2_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 5,
+ },
+ .ob_item = {
+ &_Py_ID(self),
+ & const_str_fullname._ascii.ob_base,
+ &_Py_ID(path),
+ &_Py_ID(data),
+ & const_str_exc_details._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(158)
+importlib__bootstrap_external_toplevel_consts_62_consts_2 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 79,
+ },
+ .co_consts = & importlib__bootstrap_external_toplevel_consts_62_consts_2_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_external_toplevel_consts_62_consts_2_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 10 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 5,
+ .co_firstlineno = 1247,
+ .co_nlocalsplus = 5,
+ .co_nlocals = 5,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 164,
+ .co_localsplusnames = & importlib__bootstrap_external_toplevel_consts_62_consts_2_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_7_consts_5_localspluskinds.ob_base.ob_base,
+ .co_filename = & importlib__bootstrap_external_toplevel_consts_6_filename._ascii.ob_base,
+ .co_name = & const_str_get_code._ascii.ob_base,
+ .co_qualname = & importlib__bootstrap_external_toplevel_consts_62_consts_2_qualname._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_external_toplevel_consts_62_consts_2_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x00\x6a\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x02\x7c\x00\x6a\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x02\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x03\x7c\x01\x7c\x02\x64\x01\x9c\x02\x7d\x04\x74\x05\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x03\x7c\x01\x7c\x04\xab\x03\x00\x00\x00\x00\x00\x00\x01\x00\x74\x07\x00\x00\x00\x00\x00\x00\x00\x00\x74\x09\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x03\xab\x01\x00\x00\x00\x00\x00\x00\x64\x02\x64\x00\x1a\x00\x7c\x01\x7c\x02\xac\x03\xab\x03\x00\x00\x00\x00\x00\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[40];
+ }
+importlib__bootstrap_external_toplevel_consts_62_consts_3_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 39,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Return None as there is no source code.",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_62_consts_3_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & importlib__bootstrap_external_toplevel_consts_62_consts_3_consts_0._ascii.ob_base,
+ Py_None,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[32];
+ }
+importlib__bootstrap_external_toplevel_consts_62_consts_3_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 31,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "SourcelessFileLoader.get_source",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[6];
+ }
+importlib__bootstrap_external_toplevel_consts_62_consts_3_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 5,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xe0\x0f\x13",
+};
+static
+ struct _PyCode_DEF(4)
+importlib__bootstrap_external_toplevel_consts_62_consts_3 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 2,
+ },
+ .co_consts = & importlib__bootstrap_external_toplevel_consts_62_consts_3_consts._object.ob_base.ob_base,
+ .co_names = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 2 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 0,
+ .co_firstlineno = 1263,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 2,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 165,
+ .co_localsplusnames = & importlib__bootstrap_external_toplevel_consts_54_consts_5_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_14_consts_2_localspluskinds.ob_base.ob_base,
+ .co_filename = & importlib__bootstrap_external_toplevel_consts_6_filename._ascii.ob_base,
+ .co_name = &_Py_ID(get_source),
+ .co_qualname = & importlib__bootstrap_external_toplevel_consts_62_consts_3_qualname._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_external_toplevel_consts_62_consts_3_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x79\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[5];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_62_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 5,
+ },
+ .ob_item = {
+ & const_str_SourcelessFileLoader._ascii.ob_base,
+ & importlib__bootstrap_external_toplevel_consts_62_consts_1._ascii.ob_base,
+ & importlib__bootstrap_external_toplevel_consts_62_consts_2.ob_base.ob_base,
+ & importlib__bootstrap_external_toplevel_consts_62_consts_3.ob_base.ob_base,
+ Py_None,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[6];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_62_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 6,
+ },
+ .ob_item = {
+ &_Py_ID(__name__),
+ &_Py_ID(__module__),
+ &_Py_ID(__qualname__),
+ &_Py_ID(__doc__),
+ & const_str_get_code._ascii.ob_base,
+ &_Py_ID(get_source),
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[16];
+ }
+importlib__bootstrap_external_toplevel_consts_62_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 15,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x84\x00\xe1\x04\x37\xf2\x04\x0e\x05\x0a\xf3\x20\x02\x05\x14",
+};
+static
+ struct _PyCode_DEF(28)
+importlib__bootstrap_external_toplevel_consts_62 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 14,
+ },
+ .co_consts = & importlib__bootstrap_external_toplevel_consts_62_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_external_toplevel_consts_62_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 0,
+ .co_argcount = 0,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 1 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 1,
+ .co_firstlineno = 1243,
+ .co_nlocalsplus = 0,
+ .co_nlocals = 0,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 166,
+ .co_localsplusnames = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_filename = & importlib__bootstrap_external_toplevel_consts_6_filename._ascii.ob_base,
+ .co_name = & const_str_SourcelessFileLoader._ascii.ob_base,
+ .co_qualname = & const_str_SourcelessFileLoader._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_external_toplevel_consts_62_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x65\x00\x5a\x01\x64\x00\x5a\x02\x64\x01\x5a\x03\x64\x02\x84\x00\x5a\x04\x64\x03\x84\x00\x5a\x05\x79\x04",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[94];
+ }
+importlib__bootstrap_external_toplevel_consts_64_consts_1 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 93,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x4c\x6f\x61\x64\x65\x72\x20\x66\x6f\x72\x20\x65\x78\x74\x65\x6e\x73\x69\x6f\x6e\x20\x6d\x6f\x64\x75\x6c\x65\x73\x2e\x0a\x0a\x20\x20\x20\x20\x54\x68\x65\x20\x63\x6f\x6e\x73\x74\x72\x75\x63\x74\x6f\x72\x20\x69\x73\x20\x64\x65\x73\x69\x67\x6e\x65\x64\x20\x74\x6f\x20\x77\x6f\x72\x6b\x20\x77\x69\x74\x68\x20\x46\x69\x6c\x65\x46\x69\x6e\x64\x65\x72\x2e\x0a\x0a\x20\x20\x20\x20",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[29];
+ }
+importlib__bootstrap_external_toplevel_consts_64_consts_2_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 28,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "ExtensionFileLoader.__init__",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[17];
+ }
+importlib__bootstrap_external_toplevel_consts_64_consts_2_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 16,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xd8\x14\x18\x88\x04\x8c\x09\xd8\x14\x18\x88\x04\x8d\x09",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_64_consts_2_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ &_Py_ID(self),
+ &_Py_ID(name),
+ &_Py_ID(path),
+ },
+ },
+};
+static
+ struct _PyCode_DEF(32)
+importlib__bootstrap_external_toplevel_consts_64_consts_2 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 16,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_1_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_external_toplevel_consts_45_consts_3._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 3,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 5 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 2,
+ .co_firstlineno = 1276,
+ .co_nlocalsplus = 3,
+ .co_nlocals = 3,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 167,
+ .co_localsplusnames = & importlib__bootstrap_external_toplevel_consts_64_consts_2_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_3_localspluskinds.ob_base.ob_base,
+ .co_filename = & importlib__bootstrap_external_toplevel_consts_6_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__init__),
+ .co_qualname = & importlib__bootstrap_external_toplevel_consts_64_consts_2_qualname._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_external_toplevel_consts_64_consts_2_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x01\x7c\x00\x5f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x02\x7c\x00\x5f\x01\x00\x00\x00\x00\x00\x00\x00\x00\x79\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[27];
+ }
+importlib__bootstrap_external_toplevel_consts_64_consts_3_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 26,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "ExtensionFileLoader.__eq__",
+};
+static
+ struct _PyCode_DEF(106)
+importlib__bootstrap_external_toplevel_consts_64_consts_3 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 53,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_1_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_external_toplevel_consts_58_consts_3_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 4 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 2,
+ .co_firstlineno = 1280,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 2,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 168,
+ .co_localsplusnames = & importlib__bootstrap_external_toplevel_consts_58_consts_3_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_14_consts_2_localspluskinds.ob_base.ob_base,
+ .co_filename = & importlib__bootstrap_external_toplevel_consts_6_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__eq__),
+ .co_qualname = & importlib__bootstrap_external_toplevel_consts_64_consts_3_qualname._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_external_toplevel_consts_58_consts_3_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6b\x28\x00\x00\x78\x01\x72\x19\x01\x00\x7c\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6b\x28\x00\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[29];
+ }
+importlib__bootstrap_external_toplevel_consts_64_consts_4_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 28,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "ExtensionFileLoader.__hash__",
+};
+static
+ struct _PyCode_DEF(88)
+importlib__bootstrap_external_toplevel_consts_64_consts_4 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 44,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_1_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_external_toplevel_consts_58_consts_4_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 5 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 1284,
+ .co_nlocalsplus = 1,
+ .co_nlocals = 1,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 169,
+ .co_localsplusnames = & importlib__bootstrap_toplevel_consts_7_consts_2_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_characters[32]),
+ .co_filename = & importlib__bootstrap_external_toplevel_consts_6_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__hash__),
+ .co_qualname = & importlib__bootstrap_external_toplevel_consts_64_consts_4_qualname._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_external_toplevel_consts_58_consts_4_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x6a\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7a\x0c\x00\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[41];
+ }
+importlib__bootstrap_external_toplevel_consts_64_consts_5_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 40,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Create an uninitialized extension module",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[39];
+ }
+importlib__bootstrap_external_toplevel_consts_64_consts_5_consts_1 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 38,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "extension module {!r} loaded from {!r}",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_64_consts_5_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & importlib__bootstrap_external_toplevel_consts_64_consts_5_consts_0._ascii.ob_base,
+ & importlib__bootstrap_external_toplevel_consts_64_consts_5_consts_1._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[15];
+ }
+const_str_create_dynamic = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 14,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "create_dynamic",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[7];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_64_consts_5_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 7,
+ },
+ .ob_item = {
+ &_Py_ID(_bootstrap),
+ & const_str__call_with_frames_removed._ascii.ob_base,
+ & const_str__imp._ascii.ob_base,
+ & const_str_create_dynamic._ascii.ob_base,
+ & const_str__verbose_message._ascii.ob_base,
+ &_Py_ID(name),
+ &_Py_ID(path),
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[34];
+ }
+importlib__bootstrap_external_toplevel_consts_64_consts_5_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 33,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "ExtensionFileLoader.create_module",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[65];
+ }
+importlib__bootstrap_external_toplevel_consts_64_consts_5_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 64,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xe4\x11\x1b\xd7\x11\x35\xd1\x11\x35\xdc\x0c\x10\xd7\x0c\x1f\xd1\x0c\x1f\xa0\x14\xf3\x03\x01\x12\x27\x88\x06\xe4\x08\x12\xd7\x08\x23\xd1\x08\x23\xd0\x24\x4c\xd8\x19\x1d\x9f\x19\x99\x19\xa0\x44\xa7\x49\xa1\x49\xf4\x03\x01\x09\x2f\xe0\x0f\x15\x88\x0d",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_64_consts_5_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ &_Py_ID(self),
+ & const_str_spec._ascii.ob_base,
+ &_Py_ID(module),
+ },
+ },
+};
+static
+ struct _PyCode_DEF(164)
+importlib__bootstrap_external_toplevel_consts_64_consts_5 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 82,
+ },
+ .co_consts = & importlib__bootstrap_external_toplevel_consts_64_consts_5_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_external_toplevel_consts_64_consts_5_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 8 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 5,
+ .co_firstlineno = 1287,
+ .co_nlocalsplus = 3,
+ .co_nlocals = 3,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 170,
+ .co_localsplusnames = & importlib__bootstrap_external_toplevel_consts_64_consts_5_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_3_localspluskinds.ob_base.ob_base,
+ .co_filename = & importlib__bootstrap_external_toplevel_consts_6_filename._ascii.ob_base,
+ .co_name = & const_str_create_module._ascii.ob_base,
+ .co_qualname = & importlib__bootstrap_external_toplevel_consts_64_consts_5_qualname._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_external_toplevel_consts_64_consts_5_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x74\x04\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\xab\x02\x00\x00\x00\x00\x00\x00\x7d\x02\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x01\x7c\x01\x6a\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x6a\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x03\x00\x00\x00\x00\x00\x00\x01\x00\x7c\x02\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[31];
+ }
+importlib__bootstrap_external_toplevel_consts_64_consts_6_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 30,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Initialize an extension module",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[41];
+ }
+importlib__bootstrap_external_toplevel_consts_64_consts_6_consts_1 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 40,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "extension module {!r} executed from {!r}",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_64_consts_6_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ & importlib__bootstrap_external_toplevel_consts_64_consts_6_consts_0._ascii.ob_base,
+ & importlib__bootstrap_external_toplevel_consts_64_consts_6_consts_1._ascii.ob_base,
+ Py_None,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[13];
+ }
+const_str_exec_dynamic = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 12,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "exec_dynamic",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[7];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_64_consts_6_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 7,
+ },
+ .ob_item = {
+ &_Py_ID(_bootstrap),
+ & const_str__call_with_frames_removed._ascii.ob_base,
+ & const_str__imp._ascii.ob_base,
+ & const_str_exec_dynamic._ascii.ob_base,
+ & const_str__verbose_message._ascii.ob_base,
+ &_Py_ID(name),
+ &_Py_ID(path),
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[32];
+ }
+importlib__bootstrap_external_toplevel_consts_64_consts_6_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 31,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "ExtensionFileLoader.exec_module",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[55];
+ }
+importlib__bootstrap_external_toplevel_consts_64_consts_6_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 54,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xe4\x08\x12\xd7\x08\x2c\xd1\x08\x2c\xac\x54\xd7\x2d\x3e\xd1\x2d\x3e\xc0\x06\xd4\x08\x47\xdc\x08\x12\xd7\x08\x23\xd1\x08\x23\xd0\x24\x4e\xd8\x19\x1d\x9f\x19\x99\x19\xa0\x44\xa7\x49\xa1\x49\xf5\x03\x01\x09\x2f",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_64_consts_6_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ &_Py_ID(self),
+ &_Py_ID(module),
+ },
+ },
+};
+static
+ struct _PyCode_DEF(162)
+importlib__bootstrap_external_toplevel_consts_64_consts_6 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 81,
+ },
+ .co_consts = & importlib__bootstrap_external_toplevel_consts_64_consts_6_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_external_toplevel_consts_64_consts_6_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 7 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 5,
+ .co_firstlineno = 1295,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 2,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 171,
+ .co_localsplusnames = & importlib__bootstrap_external_toplevel_consts_64_consts_6_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_14_consts_2_localspluskinds.ob_base.ob_base,
+ .co_filename = & importlib__bootstrap_external_toplevel_consts_6_filename._ascii.ob_base,
+ .co_name = & const_str_exec_module._ascii.ob_base,
+ .co_qualname = & importlib__bootstrap_external_toplevel_consts_64_consts_6_qualname._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_external_toplevel_consts_64_consts_6_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x74\x04\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\xab\x02\x00\x00\x00\x00\x00\x00\x01\x00\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x01\x7c\x00\x6a\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x6a\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x03\x00\x00\x00\x00\x00\x00\x01\x00\x79\x02",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[50];
+ }
+importlib__bootstrap_external_toplevel_consts_64_consts_7_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 49,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Return True if the extension module is a package.",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_64_consts_7_consts_2_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ &_Py_ID(__init__),
+ Py_None,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[50];
+ }
+importlib__bootstrap_external_toplevel_consts_64_consts_7_consts_2_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 49,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "ExtensionFileLoader.is_package.<locals>.<genexpr>",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[36];
+ }
+importlib__bootstrap_external_toplevel_consts_64_consts_7_consts_2_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 35,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\xf8\xe8\x00\xf8\x80\x00\xf2\x00\x01\x13\x35\xd8\x17\x1d\xf0\x03\x00\x14\x1d\xa0\x0a\xa8\x56\xd1\x20\x33\xd5\x13\x33\xf1\x00\x01\x13\x35\xf9",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[5];
+ }
+importlib__bootstrap_external_toplevel_consts_64_consts_7_consts_2_exceptiontable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x83\x12\x15\x01",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[7];
+ }
+const_str_suffix = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 6,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "suffix",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[10];
+ }
+const_str_file_name = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 9,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "file_name",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_64_consts_7_consts_2_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ & importlib__bootstrap_external_toplevel_consts_6_localsplusnames_0._ascii.ob_base,
+ & const_str_suffix._ascii.ob_base,
+ & const_str_file_name._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(46)
+importlib__bootstrap_external_toplevel_consts_64_consts_7_consts_2 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 23,
+ },
+ .co_consts = & importlib__bootstrap_external_toplevel_consts_64_consts_7_consts_2_consts._object.ob_base.ob_base,
+ .co_names = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_exceptiontable = & importlib__bootstrap_external_toplevel_consts_64_consts_7_consts_2_exceptiontable.ob_base.ob_base,
+ .co_flags = 51,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 7 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 1304,
+ .co_nlocalsplus = 3,
+ .co_nlocals = 2,
+ .co_ncellvars = 0,
+ .co_nfreevars = 1,
+ .co_version = 172,
+ .co_localsplusnames = & importlib__bootstrap_external_toplevel_consts_64_consts_7_consts_2_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_7_consts_1_consts_1_consts_4_localspluskinds.ob_base.ob_base,
+ .co_filename = & importlib__bootstrap_external_toplevel_consts_6_filename._ascii.ob_base,
+ .co_name = &_Py_STR(anon_genexpr),
+ .co_qualname = & importlib__bootstrap_external_toplevel_consts_64_consts_7_consts_2_qualname._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_external_toplevel_consts_64_consts_7_consts_2_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x95\x01\x4b\x00\x01\x00\x97\x00\x7c\x00\x5d\x0c\x00\x00\x7d\x01\x89\x02\x64\x00\x7c\x01\x7a\x00\x00\x00\x6b\x28\x00\x00\x96\x01\x97\x01\x01\x00\x8c\x0e\x04\x00\x79\x01\xad\x03\x77\x01",
+ ._co_firsttraceable = 3,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_64_consts_7_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ & importlib__bootstrap_external_toplevel_consts_64_consts_7_consts_0._ascii.ob_base,
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 1],
+ & importlib__bootstrap_external_toplevel_consts_64_consts_7_consts_2.ob_base.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[4];
+ }
+const_str_any = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 3,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "any",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[4];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_64_consts_7_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_item = {
+ & const_str__path_split._ascii.ob_base,
+ &_Py_ID(path),
+ & const_str_any._ascii.ob_base,
+ & const_str_EXTENSION_SUFFIXES._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[31];
+ }
+importlib__bootstrap_external_toplevel_consts_64_consts_7_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 30,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "ExtensionFileLoader.is_package",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[49];
+ }
+importlib__bootstrap_external_toplevel_consts_64_consts_7_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 48,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\xf8\x80\x00\xe4\x14\x1f\xa0\x04\xa7\x09\xa1\x09\xd3\x14\x2a\xa8\x31\xd1\x14\x2d\x88\x09\xdc\x0f\x12\xf3\x00\x01\x13\x35\xdc\x21\x33\xf4\x03\x01\x13\x35\xf3\x00\x01\x10\x35\xf0\x00\x01\x09\x35",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_64_consts_7_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ &_Py_ID(self),
+ & const_str_fullname._ascii.ob_base,
+ & const_str_file_name._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(100)
+importlib__bootstrap_external_toplevel_consts_64_consts_7 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 50,
+ },
+ .co_consts = & importlib__bootstrap_external_toplevel_consts_64_consts_7_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_external_toplevel_consts_64_consts_7_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 7 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 1301,
+ .co_nlocalsplus = 3,
+ .co_nlocals = 2,
+ .co_ncellvars = 1,
+ .co_nfreevars = 0,
+ .co_version = 173,
+ .co_localsplusnames = & importlib__bootstrap_external_toplevel_consts_64_consts_7_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_7_consts_1_localspluskinds.ob_base.ob_base,
+ .co_filename = & importlib__bootstrap_external_toplevel_consts_6_filename._ascii.ob_base,
+ .co_name = & const_str_is_package._ascii.ob_base,
+ .co_qualname = & importlib__bootstrap_external_toplevel_consts_64_consts_7_qualname._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_external_toplevel_consts_64_consts_7_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x87\x02\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x64\x01\x19\x00\x00\x00\x8a\x02\x74\x05\x00\x00\x00\x00\x00\x00\x00\x00\x88\x02\x66\x01\x64\x02\x84\x08\x74\x06\x00\x00\x00\x00\x00\x00\x00\x00\x44\x00\xab\x00\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x53\x00",
+ ._co_firsttraceable = 1,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[64];
+ }
+importlib__bootstrap_external_toplevel_consts_64_consts_8_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 63,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Return None as an extension module cannot create a code object.",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_64_consts_8_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & importlib__bootstrap_external_toplevel_consts_64_consts_8_consts_0._ascii.ob_base,
+ Py_None,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[29];
+ }
+importlib__bootstrap_external_toplevel_consts_64_consts_8_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 28,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "ExtensionFileLoader.get_code",
+};
+static
+ struct _PyCode_DEF(4)
+importlib__bootstrap_external_toplevel_consts_64_consts_8 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 2,
+ },
+ .co_consts = & importlib__bootstrap_external_toplevel_consts_64_consts_8_consts._object.ob_base.ob_base,
+ .co_names = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 2 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 0,
+ .co_firstlineno = 1307,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 2,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 174,
+ .co_localsplusnames = & importlib__bootstrap_external_toplevel_consts_54_consts_5_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_14_consts_2_localspluskinds.ob_base.ob_base,
+ .co_filename = & importlib__bootstrap_external_toplevel_consts_6_filename._ascii.ob_base,
+ .co_name = & const_str_get_code._ascii.ob_base,
+ .co_qualname = & importlib__bootstrap_external_toplevel_consts_64_consts_8_qualname._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_external_toplevel_consts_62_consts_3_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x79\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[54];
+ }
+importlib__bootstrap_external_toplevel_consts_64_consts_9_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 53,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Return None as extension modules have no source code.",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_64_consts_9_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & importlib__bootstrap_external_toplevel_consts_64_consts_9_consts_0._ascii.ob_base,
+ Py_None,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[31];
+ }
+importlib__bootstrap_external_toplevel_consts_64_consts_9_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 30,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "ExtensionFileLoader.get_source",
+};
+static
+ struct _PyCode_DEF(4)
+importlib__bootstrap_external_toplevel_consts_64_consts_9 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 2,
+ },
+ .co_consts = & importlib__bootstrap_external_toplevel_consts_64_consts_9_consts._object.ob_base.ob_base,
+ .co_names = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 2 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 0,
+ .co_firstlineno = 1311,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 2,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 175,
+ .co_localsplusnames = & importlib__bootstrap_external_toplevel_consts_54_consts_5_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_14_consts_2_localspluskinds.ob_base.ob_base,
+ .co_filename = & importlib__bootstrap_external_toplevel_consts_6_filename._ascii.ob_base,
+ .co_name = &_Py_ID(get_source),
+ .co_qualname = & importlib__bootstrap_external_toplevel_consts_64_consts_9_qualname._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_external_toplevel_consts_62_consts_3_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x79\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[33];
+ }
+importlib__bootstrap_external_toplevel_consts_64_consts_10_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 32,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "ExtensionFileLoader.get_filename",
+};
+static
+ struct _PyCode_DEF(26)
+importlib__bootstrap_external_toplevel_consts_64_consts_10 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 13,
+ },
+ .co_consts = & importlib__bootstrap_external_toplevel_consts_58_consts_6_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_external_toplevel_consts_18_localsplusnames._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 3 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 1,
+ .co_firstlineno = 1315,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 2,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 176,
+ .co_localsplusnames = & importlib__bootstrap_external_toplevel_consts_54_consts_5_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_14_consts_2_localspluskinds.ob_base.ob_base,
+ .co_filename = & importlib__bootstrap_external_toplevel_consts_6_filename._ascii.ob_base,
+ .co_name = & const_str_get_filename._ascii.ob_base,
+ .co_qualname = & importlib__bootstrap_external_toplevel_consts_64_consts_10_qualname._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_external_toplevel_consts_58_consts_6_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[12];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_64_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 12,
+ },
+ .ob_item = {
+ & const_str_ExtensionFileLoader._ascii.ob_base,
+ & importlib__bootstrap_external_toplevel_consts_64_consts_1._ascii.ob_base,
+ & importlib__bootstrap_external_toplevel_consts_64_consts_2.ob_base.ob_base,
+ & importlib__bootstrap_external_toplevel_consts_64_consts_3.ob_base.ob_base,
+ & importlib__bootstrap_external_toplevel_consts_64_consts_4.ob_base.ob_base,
+ & importlib__bootstrap_external_toplevel_consts_64_consts_5.ob_base.ob_base,
+ & importlib__bootstrap_external_toplevel_consts_64_consts_6.ob_base.ob_base,
+ & importlib__bootstrap_external_toplevel_consts_64_consts_7.ob_base.ob_base,
+ & importlib__bootstrap_external_toplevel_consts_64_consts_8.ob_base.ob_base,
+ & importlib__bootstrap_external_toplevel_consts_64_consts_9.ob_base.ob_base,
+ & importlib__bootstrap_external_toplevel_consts_64_consts_10.ob_base.ob_base,
+ Py_None,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[14];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_64_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 14,
+ },
+ .ob_item = {
+ &_Py_ID(__name__),
+ &_Py_ID(__module__),
+ &_Py_ID(__qualname__),
+ &_Py_ID(__doc__),
+ &_Py_ID(__init__),
+ &_Py_ID(__eq__),
+ &_Py_ID(__hash__),
+ & const_str_create_module._ascii.ob_base,
+ & const_str_exec_module._ascii.ob_base,
+ & const_str_is_package._ascii.ob_base,
+ & const_str_get_code._ascii.ob_base,
+ &_Py_ID(get_source),
+ & const_str__check_name._ascii.ob_base,
+ & const_str_get_filename._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[68];
+ }
+importlib__bootstrap_external_toplevel_consts_64_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 67,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x84\x00\xf1\x04\x04\x05\x08\xf2\x0c\x02\x05\x19\xf2\x08\x02\x05\x31\xf2\x08\x01\x05\x31\xf2\x06\x06\x05\x16\xf2\x10\x04\x05\x2f\xf2\x0c\x04\x05\x35\xf2\x0c\x02\x05\x14\xf2\x08\x02\x05\x14\xf0\x08\x00\x06\x11\xf1\x02\x02\x05\x19\xf3\x03\x00\x06\x11\xf1\x02\x02\x05\x19",
+};
+static
+ struct _PyCode_DEF(80)
+importlib__bootstrap_external_toplevel_consts_64 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 40,
+ },
+ .co_consts = & importlib__bootstrap_external_toplevel_consts_64_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_external_toplevel_consts_64_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 0,
+ .co_argcount = 0,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 2 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 2,
+ .co_firstlineno = 1268,
+ .co_nlocalsplus = 0,
+ .co_nlocals = 0,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 177,
+ .co_localsplusnames = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_filename = & importlib__bootstrap_external_toplevel_consts_6_filename._ascii.ob_base,
+ .co_name = & const_str_ExtensionFileLoader._ascii.ob_base,
+ .co_qualname = & const_str_ExtensionFileLoader._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_external_toplevel_consts_64_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x65\x00\x5a\x01\x64\x00\x5a\x02\x64\x01\x5a\x03\x64\x02\x84\x00\x5a\x04\x64\x03\x84\x00\x5a\x05\x64\x04\x84\x00\x5a\x06\x64\x05\x84\x00\x5a\x07\x64\x06\x84\x00\x5a\x08\x64\x07\x84\x00\x5a\x09\x64\x08\x84\x00\x5a\x0a\x64\x09\x84\x00\x5a\x0b\x65\x0c\x64\x0a\x84\x00\xab\x00\x00\x00\x00\x00\x00\x00\x5a\x0d\x79\x0b",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[15];
+ }
+const_str__NamespacePath = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 14,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_NamespacePath",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[295];
+ }
+importlib__bootstrap_external_toplevel_consts_66_consts_1 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 294,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x52\x65\x70\x72\x65\x73\x65\x6e\x74\x73\x20\x61\x20\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x20\x70\x61\x63\x6b\x61\x67\x65\x27\x73\x20\x70\x61\x74\x68\x2e\x20\x20\x49\x74\x20\x75\x73\x65\x73\x20\x74\x68\x65\x20\x6d\x6f\x64\x75\x6c\x65\x20\x6e\x61\x6d\x65\x0a\x20\x20\x20\x20\x74\x6f\x20\x66\x69\x6e\x64\x20\x69\x74\x73\x20\x70\x61\x72\x65\x6e\x74\x20\x6d\x6f\x64\x75\x6c\x65\x2c\x20\x61\x6e\x64\x20\x66\x72\x6f\x6d\x20\x74\x68\x65\x72\x65\x20\x69\x74\x20\x6c\x6f\x6f\x6b\x73\x20\x75\x70\x20\x74\x68\x65\x20\x70\x61\x72\x65\x6e\x74\x27\x73\x0a\x20\x20\x20\x20\x5f\x5f\x70\x61\x74\x68\x5f\x5f\x2e\x20\x20\x57\x68\x65\x6e\x20\x74\x68\x69\x73\x20\x63\x68\x61\x6e\x67\x65\x73\x2c\x20\x74\x68\x65\x20\x6d\x6f\x64\x75\x6c\x65\x27\x73\x20\x6f\x77\x6e\x20\x70\x61\x74\x68\x20\x69\x73\x20\x72\x65\x63\x6f\x6d\x70\x75\x74\x65\x64\x2c\x0a\x20\x20\x20\x20\x75\x73\x69\x6e\x67\x20\x70\x61\x74\x68\x5f\x66\x69\x6e\x64\x65\x72\x2e\x20\x20\x46\x6f\x72\x20\x74\x6f\x70\x2d\x6c\x65\x76\x65\x6c\x20\x6d\x6f\x64\x75\x6c\x65\x73\x2c\x20\x74\x68\x65\x20\x70\x61\x72\x65\x6e\x74\x20\x6d\x6f\x64\x75\x6c\x65\x27\x73\x20\x70\x61\x74\x68\x0a\x20\x20\x20\x20\x69\x73\x20\x73\x79\x73\x2e\x70\x61\x74\x68\x2e",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[17];
+ }
+const_str__get_parent_path = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 16,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_get_parent_path",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[18];
+ }
+const_str__last_parent_path = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 17,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_last_parent_path",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[7];
+ }
+const_str__epoch = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 6,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_epoch",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[12];
+ }
+const_str__last_epoch = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 11,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_last_epoch",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[13];
+ }
+const_str__path_finder = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 12,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_path_finder",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[8];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_66_consts_3_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 8,
+ },
+ .ob_item = {
+ & const_str__name._ascii.ob_base,
+ & const_str__path._ascii.ob_base,
+ & const_str_tuple._ascii.ob_base,
+ & const_str__get_parent_path._ascii.ob_base,
+ & const_str__last_parent_path._ascii.ob_base,
+ & const_str__epoch._ascii.ob_base,
+ & const_str__last_epoch._ascii.ob_base,
+ & const_str__path_finder._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[24];
+ }
+importlib__bootstrap_external_toplevel_consts_66_consts_3_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 23,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_NamespacePath.__init__",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[59];
+ }
+importlib__bootstrap_external_toplevel_consts_66_consts_3_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 58,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xd8\x15\x19\x88\x04\x8c\x0a\xd8\x15\x19\x88\x04\x8c\x0a\xdc\x21\x26\xa0\x74\xd7\x27\x3c\xd1\x27\x3c\xd3\x27\x3e\xd3\x21\x3f\x88\x04\xd4\x08\x1e\xd8\x1b\x1f\x9f\x3b\x99\x3b\x88\x04\xd4\x08\x18\xd8\x1c\x27\x88\x04\xd5\x08\x19",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[12];
+ }
+const_str_path_finder = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 11,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "path_finder",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[4];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_66_consts_3_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_item = {
+ &_Py_ID(self),
+ &_Py_ID(name),
+ &_Py_ID(path),
+ & const_str_path_finder._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(140)
+importlib__bootstrap_external_toplevel_consts_66_consts_3 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 70,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_1_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_external_toplevel_consts_66_consts_3_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 4,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 8 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 1332,
+ .co_nlocalsplus = 4,
+ .co_nlocals = 4,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 178,
+ .co_localsplusnames = & importlib__bootstrap_external_toplevel_consts_66_consts_3_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_7_consts_3_localspluskinds.ob_base.ob_base,
+ .co_filename = & importlib__bootstrap_external_toplevel_consts_6_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__init__),
+ .co_qualname = & importlib__bootstrap_external_toplevel_consts_66_consts_3_qualname._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_external_toplevel_consts_66_consts_3_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x01\x7c\x00\x5f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x02\x7c\x00\x5f\x01\x00\x00\x00\x00\x00\x00\x00\x00\x74\x05\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x6a\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7c\x00\x5f\x04\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x6a\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x5f\x06\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x03\x7c\x00\x5f\x07\x00\x00\x00\x00\x00\x00\x00\x00\x79\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[63];
+ }
+importlib__bootstrap_external_toplevel_consts_66_consts_4_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 62,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Returns a tuple of (parent-module-name, parent-path-attr-name)",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_66_consts_4_consts_3 = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & const_str_sys._ascii.ob_base,
+ &_Py_ID(path),
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[5];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_66_consts_4_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 5,
+ },
+ .ob_item = {
+ & importlib__bootstrap_external_toplevel_consts_66_consts_4_consts_0._ascii.ob_base,
+ &_Py_STR(dot),
+ &_Py_STR(empty),
+ & importlib__bootstrap_external_toplevel_consts_66_consts_4_consts_3._object.ob_base.ob_base,
+ &_Py_ID(__path__),
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_66_consts_4_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & const_str__name._ascii.ob_base,
+ & const_str_rpartition._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[24];
+ }
+const_str__find_parent_path_names = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 23,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_find_parent_path_names",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[39];
+ }
+importlib__bootstrap_external_toplevel_consts_66_consts_4_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 38,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_NamespacePath._find_parent_path_names",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[52];
+ }
+importlib__bootstrap_external_toplevel_consts_66_consts_4_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 51,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xe0\x1a\x1e\x9f\x2a\x99\x2a\xd7\x1a\x2f\xd1\x1a\x2f\xb0\x03\xd3\x1a\x34\x89\x0f\x88\x06\x90\x03\x90\x52\xd8\x0b\x0e\x90\x22\x8a\x39\xe0\x13\x20\xf0\x06\x00\x10\x16\x90\x7a\xd0\x0f\x21\xd0\x08\x21",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[4];
+ }
+const_str_dot = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 3,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "dot",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[3];
+ }
+const_str_me = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 2,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "me",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[4];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_66_consts_4_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_item = {
+ &_Py_ID(self),
+ &_Py_ID(parent),
+ & const_str_dot._ascii.ob_base,
+ & const_str_me._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(84)
+importlib__bootstrap_external_toplevel_consts_66_consts_4 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 42,
+ },
+ .co_consts = & importlib__bootstrap_external_toplevel_consts_66_consts_4_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_external_toplevel_consts_66_consts_4_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 7 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 3,
+ .co_firstlineno = 1339,
+ .co_nlocalsplus = 4,
+ .co_nlocals = 4,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 179,
+ .co_localsplusnames = & importlib__bootstrap_external_toplevel_consts_66_consts_4_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_7_consts_3_localspluskinds.ob_base.ob_base,
+ .co_filename = & importlib__bootstrap_external_toplevel_consts_6_filename._ascii.ob_base,
+ .co_name = & const_str__find_parent_path_names._ascii.ob_base,
+ .co_qualname = & importlib__bootstrap_external_toplevel_consts_66_consts_4_qualname._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_external_toplevel_consts_66_consts_4_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x01\xab\x01\x00\x00\x00\x00\x00\x00\x5c\x03\x00\x00\x7d\x01\x7d\x02\x7d\x03\x7c\x02\x64\x02\x6b\x28\x00\x00\x72\x01\x79\x03\x7c\x01\x64\x04\x66\x02\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[4];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_66_consts_5_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_item = {
+ & const_str__find_parent_path_names._ascii.ob_base,
+ &_Py_ID(getattr),
+ & const_str_sys._ascii.ob_base,
+ &_Py_ID(modules),
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[32];
+ }
+importlib__bootstrap_external_toplevel_consts_66_consts_5_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 31,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_NamespacePath._get_parent_path",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[46];
+ }
+importlib__bootstrap_external_toplevel_consts_66_consts_5_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 45,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xd8\x2d\x31\xd7\x2d\x49\xd1\x2d\x49\xd3\x2d\x4b\xd1\x08\x2a\xd0\x08\x1a\x98\x4e\xdc\x0f\x16\x94\x73\x97\x7b\x91\x7b\xd0\x23\x35\xd1\x17\x36\xb8\x0e\xd3\x0f\x47\xd0\x08\x47",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[19];
+ }
+const_str_parent_module_name = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 18,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "parent_module_name",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[15];
+ }
+const_str_path_attr_name = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 14,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "path_attr_name",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_66_consts_5_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ &_Py_ID(self),
+ & const_str_parent_module_name._ascii.ob_base,
+ & const_str_path_attr_name._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(98)
+importlib__bootstrap_external_toplevel_consts_66_consts_5 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 49,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_1_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_external_toplevel_consts_66_consts_5_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 7 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 1349,
+ .co_nlocalsplus = 3,
+ .co_nlocals = 3,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 180,
+ .co_localsplusnames = & importlib__bootstrap_external_toplevel_consts_66_consts_5_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_3_localspluskinds.ob_base.ob_base,
+ .co_filename = & importlib__bootstrap_external_toplevel_consts_6_filename._ascii.ob_base,
+ .co_name = & const_str__get_parent_path._ascii.ob_base,
+ .co_qualname = & importlib__bootstrap_external_toplevel_consts_66_consts_5_qualname._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_external_toplevel_consts_66_consts_5_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x00\x6a\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x5c\x02\x00\x00\x7d\x01\x7d\x02\x74\x03\x00\x00\x00\x00\x00\x00\x00\x00\x74\x04\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x19\x00\x00\x00\x7c\x02\xab\x02\x00\x00\x00\x00\x00\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[10];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_66_consts_6_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 10,
+ },
+ .ob_item = {
+ & const_str_tuple._ascii.ob_base,
+ & const_str__get_parent_path._ascii.ob_base,
+ & const_str__last_parent_path._ascii.ob_base,
+ & const_str__epoch._ascii.ob_base,
+ & const_str__last_epoch._ascii.ob_base,
+ & const_str__path_finder._ascii.ob_base,
+ & const_str__name._ascii.ob_base,
+ & const_str_loader._ascii.ob_base,
+ & const_str_submodule_search_locations._ascii.ob_base,
+ & const_str__path._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[13];
+ }
+const_str__recalculate = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 12,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_recalculate",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[28];
+ }
+importlib__bootstrap_external_toplevel_consts_66_consts_6_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 27,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_NamespacePath._recalculate",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[144];
+ }
+importlib__bootstrap_external_toplevel_consts_66_consts_6_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 143,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xe4\x16\x1b\x98\x44\xd7\x1c\x31\xd1\x1c\x31\xd3\x1c\x33\xd3\x16\x34\x88\x0b\xd8\x0b\x16\x98\x24\xd7\x1a\x30\xd1\x1a\x30\xd2\x0b\x30\xb0\x44\xb7\x4b\xb1\x4b\xc0\x34\xd7\x43\x53\xd1\x43\x53\xd2\x34\x53\xd8\x13\x17\xd7\x13\x24\xd1\x13\x24\xa0\x54\xa7\x5a\xa1\x5a\xb0\x1b\xd3\x13\x3d\x88\x44\xf0\x06\x00\x10\x14\xd0\x0f\x1f\xa0\x44\xa7\x4b\xa1\x4b\xd0\x24\x37\xd8\x13\x17\xd7\x13\x32\xd2\x13\x32\xd8\x21\x25\xd7\x21\x40\xd1\x21\x40\x90\x44\x94\x4a\xd8\x25\x30\x88\x44\xd4\x0c\x22\xd8\x1f\x23\x9f\x7b\x99\x7b\x88\x44\xd4\x0c\x1c\xd8\x0f\x13\x8f\x7a\x89\x7a\xd0\x08\x19",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[12];
+ }
+const_str_parent_path = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 11,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "parent_path",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_66_consts_6_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ &_Py_ID(self),
+ & const_str_parent_path._ascii.ob_base,
+ & const_str_spec._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(346)
+importlib__bootstrap_external_toplevel_consts_66_consts_6 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 173,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_1_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_external_toplevel_consts_66_consts_6_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 7 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 1353,
+ .co_nlocalsplus = 3,
+ .co_nlocals = 3,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 181,
+ .co_localsplusnames = & importlib__bootstrap_external_toplevel_consts_66_consts_6_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_3_localspluskinds.ob_base.ob_base,
+ .co_filename = & importlib__bootstrap_external_toplevel_consts_6_filename._ascii.ob_base,
+ .co_name = & const_str__recalculate._ascii.ob_base,
+ .co_qualname = & importlib__bootstrap_external_toplevel_consts_66_consts_6_qualname._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_external_toplevel_consts_66_consts_6_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x6a\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x01\x7c\x01\x7c\x00\x6a\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6b\x37\x00\x00\x73\x19\x7c\x00\x6a\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x6a\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6b\x37\x00\x00\x72\x5f\x7c\x00\x6a\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x6a\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\xab\x02\x00\x00\x00\x00\x00\x00\x7d\x02\x7c\x02\x81\x29\x7c\x02\x6a\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x1d\x7c\x02\x6a\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x72\x11\x7c\x02\x6a\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x5f\x09\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x7c\x00\x5f\x02\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x6a\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x5f\x04\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x6a\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_66_consts_7_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ &_Py_ID(iter),
+ & const_str__recalculate._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[24];
+ }
+importlib__bootstrap_external_toplevel_consts_66_consts_7_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 23,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_NamespacePath.__iter__",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[23];
+ }
+importlib__bootstrap_external_toplevel_consts_66_consts_7_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 22,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xdc\x0f\x13\x90\x44\xd7\x14\x25\xd1\x14\x25\xd3\x14\x27\xd3\x0f\x28\xd0\x08\x28",
+};
+static
+ struct _PyCode_DEF(52)
+importlib__bootstrap_external_toplevel_consts_66_consts_7 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 26,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_1_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_external_toplevel_consts_66_consts_7_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 5 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 1367,
+ .co_nlocalsplus = 1,
+ .co_nlocals = 1,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 182,
+ .co_localsplusnames = & importlib__bootstrap_toplevel_consts_7_consts_2_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_characters[32]),
+ .co_filename = & importlib__bootstrap_external_toplevel_consts_6_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__iter__),
+ .co_qualname = & importlib__bootstrap_external_toplevel_consts_66_consts_7_qualname._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_external_toplevel_consts_66_consts_7_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x6a\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_66_consts_8_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & const_str__recalculate._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[27];
+ }
+importlib__bootstrap_external_toplevel_consts_66_consts_8_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 26,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_NamespacePath.__getitem__",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[23];
+ }
+importlib__bootstrap_external_toplevel_consts_66_consts_8_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 22,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xd8\x0f\x13\xd7\x0f\x20\xd1\x0f\x20\xd3\x0f\x22\xa0\x35\xd1\x0f\x29\xd0\x08\x29",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[6];
+ }
+const_str_index = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 5,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "index",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_66_consts_8_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ &_Py_ID(self),
+ & const_str_index._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(40)
+importlib__bootstrap_external_toplevel_consts_66_consts_8 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 20,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_1_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_external_toplevel_consts_66_consts_8_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 4 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 2,
+ .co_firstlineno = 1370,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 2,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 183,
+ .co_localsplusnames = & importlib__bootstrap_external_toplevel_consts_66_consts_8_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_14_consts_2_localspluskinds.ob_base.ob_base,
+ .co_filename = & importlib__bootstrap_external_toplevel_consts_6_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__getitem__),
+ .co_qualname = & importlib__bootstrap_external_toplevel_consts_66_consts_8_qualname._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_external_toplevel_consts_66_consts_8_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x00\x6a\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x19\x00\x00\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_66_consts_9_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & const_str__path._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[27];
+ }
+importlib__bootstrap_external_toplevel_consts_66_consts_9_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 26,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_NamespacePath.__setitem__",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[17];
+ }
+importlib__bootstrap_external_toplevel_consts_66_consts_9_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 16,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xd8\x1c\x20\x88\x04\x8f\x0a\x89\x0a\x90\x35\xd2\x08\x19",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_66_consts_9_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ &_Py_ID(self),
+ & const_str_index._ascii.ob_base,
+ &_Py_ID(path),
+ },
+ },
+};
+static
+ struct _PyCode_DEF(34)
+importlib__bootstrap_external_toplevel_consts_66_consts_9 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 17,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_1_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_external_toplevel_consts_66_consts_9_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 3,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 6 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 3,
+ .co_firstlineno = 1373,
+ .co_nlocalsplus = 3,
+ .co_nlocals = 3,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 184,
+ .co_localsplusnames = & importlib__bootstrap_external_toplevel_consts_66_consts_9_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_3_localspluskinds.ob_base.ob_base,
+ .co_filename = & importlib__bootstrap_external_toplevel_consts_6_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__setitem__),
+ .co_qualname = & importlib__bootstrap_external_toplevel_consts_66_consts_9_qualname._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_external_toplevel_consts_66_consts_9_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x02\x7c\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x3c\x00\x00\x00\x79\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_66_consts_10_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ &_Py_ID(len),
+ & const_str__recalculate._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[23];
+ }
+importlib__bootstrap_external_toplevel_consts_66_consts_10_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 22,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_NamespacePath.__len__",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[23];
+ }
+importlib__bootstrap_external_toplevel_consts_66_consts_10_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 22,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xdc\x0f\x12\x90\x34\xd7\x13\x24\xd1\x13\x24\xd3\x13\x26\xd3\x0f\x27\xd0\x08\x27",
+};
+static
+ struct _PyCode_DEF(52)
+importlib__bootstrap_external_toplevel_consts_66_consts_10 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 26,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_1_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_external_toplevel_consts_66_consts_10_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 5 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 1376,
+ .co_nlocalsplus = 1,
+ .co_nlocals = 1,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 185,
+ .co_localsplusnames = & importlib__bootstrap_toplevel_consts_7_consts_2_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_characters[32]),
+ .co_filename = & importlib__bootstrap_external_toplevel_consts_6_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__len__),
+ .co_qualname = & importlib__bootstrap_external_toplevel_consts_66_consts_10_qualname._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_external_toplevel_consts_66_consts_10_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x6a\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[16];
+ }
+importlib__bootstrap_external_toplevel_consts_66_consts_11_consts_1 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 15,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_NamespacePath(",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_66_consts_11_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ Py_None,
+ & importlib__bootstrap_external_toplevel_consts_66_consts_11_consts_1._ascii.ob_base,
+ (PyObject *)&_Py_SINGLETON(strings).ascii[41],
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[24];
+ }
+importlib__bootstrap_external_toplevel_consts_66_consts_11_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 23,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_NamespacePath.__repr__",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[22];
+ }
+importlib__bootstrap_external_toplevel_consts_66_consts_11_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 21,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xd8\x11\x20\xa0\x14\xa7\x1a\xa1\x1a\xa0\x0e\xa8\x61\xd0\x0f\x30\xd0\x08\x30",
+};
+static
+ struct _PyCode_DEF(34)
+importlib__bootstrap_external_toplevel_consts_66_consts_11 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 17,
+ },
+ .co_consts = & importlib__bootstrap_external_toplevel_consts_66_consts_11_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_external_toplevel_consts_66_consts_9_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 4 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 3,
+ .co_firstlineno = 1379,
+ .co_nlocalsplus = 1,
+ .co_nlocals = 1,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 186,
+ .co_localsplusnames = & importlib__bootstrap_toplevel_consts_7_consts_2_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_characters[32]),
+ .co_filename = & importlib__bootstrap_external_toplevel_consts_6_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__repr__),
+ .co_qualname = & importlib__bootstrap_external_toplevel_consts_66_consts_11_qualname._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_external_toplevel_consts_66_consts_11_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x64\x01\x7c\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9b\x02\x64\x02\x9d\x03\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[28];
+ }
+importlib__bootstrap_external_toplevel_consts_66_consts_12_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 27,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_NamespacePath.__contains__",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[23];
+ }
+importlib__bootstrap_external_toplevel_consts_66_consts_12_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 22,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xd8\x0f\x13\x90\x74\xd7\x17\x28\xd1\x17\x28\xd3\x17\x2a\xd0\x0f\x2a\xd0\x08\x2a",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_66_consts_12_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ &_Py_ID(self),
+ &_Py_ID(item),
+ },
+ },
+};
+static
+ struct _PyCode_DEF(38)
+importlib__bootstrap_external_toplevel_consts_66_consts_12 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 19,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_1_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_external_toplevel_consts_66_consts_8_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 5 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 3,
+ .co_firstlineno = 1382,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 2,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 187,
+ .co_localsplusnames = & importlib__bootstrap_external_toplevel_consts_66_consts_12_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_14_consts_2_localspluskinds.ob_base.ob_base,
+ .co_filename = & importlib__bootstrap_external_toplevel_consts_6_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__contains__),
+ .co_qualname = & importlib__bootstrap_external_toplevel_consts_66_consts_12_qualname._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_external_toplevel_consts_66_consts_12_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x01\x7c\x00\x6a\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x76\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_66_consts_13_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & const_str__path._ascii.ob_base,
+ &_Py_ID(append),
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[22];
+ }
+importlib__bootstrap_external_toplevel_consts_66_consts_13_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 21,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_NamespacePath.append",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[21];
+ }
+importlib__bootstrap_external_toplevel_consts_66_consts_13_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 20,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xd8\x08\x0c\x8f\x0a\x89\x0a\xd7\x08\x19\xd1\x08\x19\x98\x24\xd5\x08\x1f",
+};
+static
+ struct _PyCode_DEF(58)
+importlib__bootstrap_external_toplevel_consts_66_consts_13 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 29,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_1_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_external_toplevel_consts_66_consts_13_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 5 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 3,
+ .co_firstlineno = 1385,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 2,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 188,
+ .co_localsplusnames = & importlib__bootstrap_external_toplevel_consts_66_consts_12_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_14_consts_2_localspluskinds.ob_base.ob_base,
+ .co_filename = & importlib__bootstrap_external_toplevel_consts_6_filename._ascii.ob_base,
+ .co_name = &_Py_ID(append),
+ .co_qualname = & importlib__bootstrap_external_toplevel_consts_66_consts_13_qualname._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_external_toplevel_consts_66_consts_13_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x79\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[15];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_66_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 15,
+ },
+ .ob_item = {
+ & const_str__NamespacePath._ascii.ob_base,
+ & importlib__bootstrap_external_toplevel_consts_66_consts_1._ascii.ob_base,
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 0],
+ & importlib__bootstrap_external_toplevel_consts_66_consts_3.ob_base.ob_base,
+ & importlib__bootstrap_external_toplevel_consts_66_consts_4.ob_base.ob_base,
+ & importlib__bootstrap_external_toplevel_consts_66_consts_5.ob_base.ob_base,
+ & importlib__bootstrap_external_toplevel_consts_66_consts_6.ob_base.ob_base,
+ & importlib__bootstrap_external_toplevel_consts_66_consts_7.ob_base.ob_base,
+ & importlib__bootstrap_external_toplevel_consts_66_consts_8.ob_base.ob_base,
+ & importlib__bootstrap_external_toplevel_consts_66_consts_9.ob_base.ob_base,
+ & importlib__bootstrap_external_toplevel_consts_66_consts_10.ob_base.ob_base,
+ & importlib__bootstrap_external_toplevel_consts_66_consts_11.ob_base.ob_base,
+ & importlib__bootstrap_external_toplevel_consts_66_consts_12.ob_base.ob_base,
+ & importlib__bootstrap_external_toplevel_consts_66_consts_13.ob_base.ob_base,
+ Py_None,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[16];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_66_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 16,
+ },
+ .ob_item = {
+ &_Py_ID(__name__),
+ &_Py_ID(__module__),
+ &_Py_ID(__qualname__),
+ &_Py_ID(__doc__),
+ & const_str__epoch._ascii.ob_base,
+ &_Py_ID(__init__),
+ & const_str__find_parent_path_names._ascii.ob_base,
+ & const_str__get_parent_path._ascii.ob_base,
+ & const_str__recalculate._ascii.ob_base,
+ &_Py_ID(__iter__),
+ &_Py_ID(__getitem__),
+ &_Py_ID(__setitem__),
+ &_Py_ID(__len__),
+ &_Py_ID(__repr__),
+ &_Py_ID(__contains__),
+ &_Py_ID(append),
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[71];
+ }
+importlib__bootstrap_external_toplevel_consts_66_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 70,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x84\x00\xf1\x02\x04\x05\x14\xf0\x10\x00\x0e\x0f\x80\x46\xf2\x04\x05\x05\x28\xf2\x0e\x08\x05\x22\xf2\x14\x02\x05\x48\x01\xf2\x08\x0c\x05\x1a\xf2\x1c\x01\x05\x29\xf2\x06\x01\x05\x2a\xf2\x06\x01\x05\x21\xf2\x06\x01\x05\x28\xf2\x06\x01\x05\x31\xf2\x06\x01\x05\x2b\xf3\x06\x01\x05\x20",
+};
+static
+ struct _PyCode_DEF(86)
+importlib__bootstrap_external_toplevel_consts_66 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 43,
+ },
+ .co_consts = & importlib__bootstrap_external_toplevel_consts_66_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_external_toplevel_consts_66_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 0,
+ .co_argcount = 0,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 1 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 1,
+ .co_firstlineno = 1321,
+ .co_nlocalsplus = 0,
+ .co_nlocals = 0,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 189,
+ .co_localsplusnames = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_filename = & importlib__bootstrap_external_toplevel_consts_6_filename._ascii.ob_base,
+ .co_name = & const_str__NamespacePath._ascii.ob_base,
+ .co_qualname = & const_str__NamespacePath._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_external_toplevel_consts_66_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x65\x00\x5a\x01\x64\x00\x5a\x02\x64\x01\x5a\x03\x64\x02\x5a\x04\x64\x03\x84\x00\x5a\x05\x64\x04\x84\x00\x5a\x06\x64\x05\x84\x00\x5a\x07\x64\x06\x84\x00\x5a\x08\x64\x07\x84\x00\x5a\x09\x64\x08\x84\x00\x5a\x0a\x64\x09\x84\x00\x5a\x0b\x64\x0a\x84\x00\x5a\x0c\x64\x0b\x84\x00\x5a\x0d\x64\x0c\x84\x00\x5a\x0e\x64\x0d\x84\x00\x5a\x0f\x79\x0e",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_68_consts_1_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & const_str__NamespacePath._ascii.ob_base,
+ & const_str__path._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[25];
+ }
+importlib__bootstrap_external_toplevel_consts_68_consts_1_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 24,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "NamespaceLoader.__init__",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[19];
+ }
+importlib__bootstrap_external_toplevel_consts_68_consts_1_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 18,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xdc\x15\x23\xa0\x44\xa8\x24\xb0\x0b\xd3\x15\x3c\x88\x04\x8d\x0a",
+};
+static
+ struct _PyCode_DEF(40)
+importlib__bootstrap_external_toplevel_consts_68_consts_1 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 20,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_1_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_external_toplevel_consts_68_consts_1_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 4,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 9 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 5,
+ .co_firstlineno = 1393,
+ .co_nlocalsplus = 4,
+ .co_nlocals = 4,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 190,
+ .co_localsplusnames = & importlib__bootstrap_external_toplevel_consts_66_consts_3_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_7_consts_3_localspluskinds.ob_base.ob_base,
+ .co_filename = & importlib__bootstrap_external_toplevel_consts_6_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__init__),
+ .co_qualname = & importlib__bootstrap_external_toplevel_consts_68_consts_1_qualname._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_external_toplevel_consts_68_consts_1_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x7c\x02\x7c\x03\xab\x03\x00\x00\x00\x00\x00\x00\x7c\x00\x5f\x01\x00\x00\x00\x00\x00\x00\x00\x00\x79\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_68_consts_2_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ Py_None,
+ Py_True,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[27];
+ }
+importlib__bootstrap_external_toplevel_consts_68_consts_2_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 26,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "NamespaceLoader.is_package",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[6];
+ }
+importlib__bootstrap_external_toplevel_consts_68_consts_2_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 5,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xd8\x0f\x13",
+};
+static
+ struct _PyCode_DEF(4)
+importlib__bootstrap_external_toplevel_consts_68_consts_2 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 2,
+ },
+ .co_consts = & importlib__bootstrap_external_toplevel_consts_68_consts_2_consts._object.ob_base.ob_base,
+ .co_names = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 2 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 0,
+ .co_firstlineno = 1396,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 2,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 191,
+ .co_localsplusnames = & importlib__bootstrap_external_toplevel_consts_54_consts_5_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_14_consts_2_localspluskinds.ob_base.ob_base,
+ .co_filename = & importlib__bootstrap_external_toplevel_consts_6_filename._ascii.ob_base,
+ .co_name = & const_str_is_package._ascii.ob_base,
+ .co_qualname = & importlib__bootstrap_external_toplevel_consts_68_consts_2_qualname._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_external_toplevel_consts_68_consts_2_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x79\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_68_consts_3_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ Py_None,
+ &_Py_STR(empty),
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[27];
+ }
+importlib__bootstrap_external_toplevel_consts_68_consts_3_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 26,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "NamespaceLoader.get_source",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[6];
+ }
+importlib__bootstrap_external_toplevel_consts_68_consts_3_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 5,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xd8\x0f\x11",
+};
+static
+ struct _PyCode_DEF(4)
+importlib__bootstrap_external_toplevel_consts_68_consts_3 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 2,
+ },
+ .co_consts = & importlib__bootstrap_external_toplevel_consts_68_consts_3_consts._object.ob_base.ob_base,
+ .co_names = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 2 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 0,
+ .co_firstlineno = 1399,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 2,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 192,
+ .co_localsplusnames = & importlib__bootstrap_external_toplevel_consts_54_consts_5_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_14_consts_2_localspluskinds.ob_base.ob_base,
+ .co_filename = & importlib__bootstrap_external_toplevel_consts_6_filename._ascii.ob_base,
+ .co_name = &_Py_ID(get_source),
+ .co_qualname = & importlib__bootstrap_external_toplevel_consts_68_consts_3_qualname._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_external_toplevel_consts_68_consts_3_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x79\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_68_consts_4_consts_5 = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ &_Py_ID(dont_inherit),
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[6];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_68_consts_4_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 6,
+ },
+ .ob_item = {
+ Py_None,
+ &_Py_STR(empty),
+ &_Py_STR(anon_string),
+ & const_str_exec._ascii.ob_base,
+ Py_True,
+ & importlib__bootstrap_external_toplevel_consts_68_consts_4_consts_5._object.ob_base.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_68_consts_4_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & const_str_compile._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[25];
+ }
+importlib__bootstrap_external_toplevel_consts_68_consts_4_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 24,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "NamespaceLoader.get_code",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[20];
+ }
+importlib__bootstrap_external_toplevel_consts_68_consts_4_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 19,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xdc\x0f\x16\x90\x72\x98\x3a\xa0\x76\xb8\x44\xd4\x0f\x41\xd0\x08\x41",
+};
+static
+ struct _PyCode_DEF(32)
+importlib__bootstrap_external_toplevel_consts_68_consts_4 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 16,
+ },
+ .co_consts = & importlib__bootstrap_external_toplevel_consts_68_consts_4_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_external_toplevel_consts_68_consts_4_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 8 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 6,
+ .co_firstlineno = 1402,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 2,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 193,
+ .co_localsplusnames = & importlib__bootstrap_external_toplevel_consts_54_consts_5_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_14_consts_2_localspluskinds.ob_base.ob_base,
+ .co_filename = & importlib__bootstrap_external_toplevel_consts_6_filename._ascii.ob_base,
+ .co_name = & const_str_get_code._ascii.ob_base,
+ .co_qualname = & importlib__bootstrap_external_toplevel_consts_68_consts_4_qualname._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_external_toplevel_consts_68_consts_4_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x64\x01\x64\x02\x64\x03\x64\x04\xac\x05\xab\x04\x00\x00\x00\x00\x00\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[30];
+ }
+importlib__bootstrap_external_toplevel_consts_68_consts_5_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 29,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "NamespaceLoader.create_module",
+};
+static
+ struct _PyCode_DEF(4)
+importlib__bootstrap_external_toplevel_consts_68_consts_5 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 2,
+ },
+ .co_consts = & importlib__bootstrap_external_toplevel_consts_54_consts_3_consts._object.ob_base.ob_base,
+ .co_names = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 2 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 0,
+ .co_firstlineno = 1405,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 2,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 194,
+ .co_localsplusnames = & importlib__bootstrap_external_toplevel_consts_54_consts_3_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_14_consts_2_localspluskinds.ob_base.ob_base,
+ .co_filename = & importlib__bootstrap_external_toplevel_consts_6_filename._ascii.ob_base,
+ .co_name = & const_str_create_module._ascii.ob_base,
+ .co_qualname = & importlib__bootstrap_external_toplevel_consts_68_consts_5_qualname._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_external_toplevel_consts_54_consts_3_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x79\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[28];
+ }
+importlib__bootstrap_external_toplevel_consts_68_consts_6_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 27,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "NamespaceLoader.exec_module",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[6];
+ }
+importlib__bootstrap_external_toplevel_consts_68_consts_6_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 5,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xd8\x08\x0c",
+};
+static
+ struct _PyCode_DEF(4)
+importlib__bootstrap_external_toplevel_consts_68_consts_6 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 2,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_1_consts._object.ob_base.ob_base,
+ .co_names = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 2 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 0,
+ .co_firstlineno = 1408,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 2,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 195,
+ .co_localsplusnames = & importlib__bootstrap_external_toplevel_consts_64_consts_6_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_14_consts_2_localspluskinds.ob_base.ob_base,
+ .co_filename = & importlib__bootstrap_external_toplevel_consts_6_filename._ascii.ob_base,
+ .co_name = & const_str_exec_module._ascii.ob_base,
+ .co_qualname = & importlib__bootstrap_external_toplevel_consts_68_consts_6_qualname._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_external_toplevel_consts_68_consts_6_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x79\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[99];
+ }
+importlib__bootstrap_external_toplevel_consts_68_consts_7_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 98,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x4c\x6f\x61\x64\x20\x61\x20\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x20\x6d\x6f\x64\x75\x6c\x65\x2e\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x54\x68\x69\x73\x20\x6d\x65\x74\x68\x6f\x64\x20\x69\x73\x20\x64\x65\x70\x72\x65\x63\x61\x74\x65\x64\x2e\x20\x20\x55\x73\x65\x20\x65\x78\x65\x63\x5f\x6d\x6f\x64\x75\x6c\x65\x28\x29\x20\x69\x6e\x73\x74\x65\x61\x64\x2e\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[39];
+ }
+importlib__bootstrap_external_toplevel_consts_68_consts_7_consts_1 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 38,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "namespace module loaded with path {!r}",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_68_consts_7_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & importlib__bootstrap_external_toplevel_consts_68_consts_7_consts_0._ascii.ob_base,
+ & importlib__bootstrap_external_toplevel_consts_68_consts_7_consts_1._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[4];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_68_consts_7_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_item = {
+ &_Py_ID(_bootstrap),
+ & const_str__verbose_message._ascii.ob_base,
+ & const_str__path._ascii.ob_base,
+ & const_str__load_module_shim._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[28];
+ }
+importlib__bootstrap_external_toplevel_consts_68_consts_7_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 27,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "NamespaceLoader.load_module",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[50];
+ }
+importlib__bootstrap_external_toplevel_consts_68_consts_7_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 49,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf4\x0e\x00\x09\x13\xd7\x08\x23\xd1\x08\x23\xd0\x24\x4c\xd8\x24\x28\xa7\x4a\xa1\x4a\xf4\x03\x01\x09\x30\xf4\x06\x00\x10\x1a\xd7\x0f\x2b\xd1\x0f\x2b\xa8\x44\xb0\x28\xd3\x0f\x3b\xd0\x08\x3b",
+};
+static
+ struct _PyCode_DEF(110)
+importlib__bootstrap_external_toplevel_consts_68_consts_7 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 55,
+ },
+ .co_consts = & importlib__bootstrap_external_toplevel_consts_68_consts_7_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_external_toplevel_consts_68_consts_7_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 6 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 1411,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 2,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 196,
+ .co_localsplusnames = & importlib__bootstrap_external_toplevel_consts_54_consts_5_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_14_consts_2_localspluskinds.ob_base.ob_base,
+ .co_filename = & importlib__bootstrap_external_toplevel_consts_6_filename._ascii.ob_base,
+ .co_name = & const_str_load_module._ascii.ob_base,
+ .co_qualname = & importlib__bootstrap_external_toplevel_consts_68_consts_7_qualname._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_external_toplevel_consts_68_consts_7_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x01\x7c\x00\x6a\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x02\x00\x00\x00\x00\x00\x00\x01\x00\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x7c\x01\xab\x02\x00\x00\x00\x00\x00\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[16];
+ }
+const_str_NamespaceReader = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 15,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "NamespaceReader",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_68_consts_8_consts_2 = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & const_str_NamespaceReader._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_68_consts_8_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ Py_None,
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 0],
+ & importlib__bootstrap_external_toplevel_consts_68_consts_8_consts_2._object.ob_base.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_68_consts_8_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ & importlib__bootstrap_external_toplevel_consts_58_consts_8_names_0._ascii.ob_base,
+ & const_str_NamespaceReader._ascii.ob_base,
+ & const_str__path._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[36];
+ }
+importlib__bootstrap_external_toplevel_consts_68_consts_8_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 35,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "NamespaceLoader.get_resource_reader",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[21];
+ }
+importlib__bootstrap_external_toplevel_consts_68_consts_8_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 20,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xdd\x08\x35\xd9\x0f\x1e\x98\x74\x9f\x7a\x99\x7a\xd3\x0f\x2a\xd0\x08\x2a",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_68_consts_8_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ &_Py_ID(self),
+ &_Py_ID(module),
+ & const_str_NamespaceReader._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(50)
+importlib__bootstrap_external_toplevel_consts_68_consts_8 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 25,
+ },
+ .co_consts = & importlib__bootstrap_external_toplevel_consts_68_consts_8_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_external_toplevel_consts_68_consts_8_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 6 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 3,
+ .co_firstlineno = 1423,
+ .co_nlocalsplus = 3,
+ .co_nlocals = 3,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 197,
+ .co_localsplusnames = & importlib__bootstrap_external_toplevel_consts_68_consts_8_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_3_localspluskinds.ob_base.ob_base,
+ .co_filename = & importlib__bootstrap_external_toplevel_consts_6_filename._ascii.ob_base,
+ .co_name = & const_str_get_resource_reader._ascii.ob_base,
+ .co_qualname = & importlib__bootstrap_external_toplevel_consts_68_consts_8_qualname._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_external_toplevel_consts_68_consts_8_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x64\x01\x64\x02\x6c\x00\x6d\x01\x7d\x02\x01\x00\x02\x00\x7c\x02\x7c\x00\x6a\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[10];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_68_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 10,
+ },
+ .ob_item = {
+ & const_str_NamespaceLoader._ascii.ob_base,
+ & importlib__bootstrap_external_toplevel_consts_68_consts_1.ob_base.ob_base,
+ & importlib__bootstrap_external_toplevel_consts_68_consts_2.ob_base.ob_base,
+ & importlib__bootstrap_external_toplevel_consts_68_consts_3.ob_base.ob_base,
+ & importlib__bootstrap_external_toplevel_consts_68_consts_4.ob_base.ob_base,
+ & importlib__bootstrap_external_toplevel_consts_68_consts_5.ob_base.ob_base,
+ & importlib__bootstrap_external_toplevel_consts_68_consts_6.ob_base.ob_base,
+ & importlib__bootstrap_external_toplevel_consts_68_consts_7.ob_base.ob_base,
+ & importlib__bootstrap_external_toplevel_consts_68_consts_8.ob_base.ob_base,
+ Py_None,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[11];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_68_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 11,
+ },
+ .ob_item = {
+ &_Py_ID(__name__),
+ &_Py_ID(__module__),
+ &_Py_ID(__qualname__),
+ &_Py_ID(__init__),
+ & const_str_is_package._ascii.ob_base,
+ &_Py_ID(get_source),
+ & const_str_get_code._ascii.ob_base,
+ & const_str_create_module._ascii.ob_base,
+ & const_str_exec_module._ascii.ob_base,
+ & const_str_load_module._ascii.ob_base,
+ & const_str_get_resource_reader._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[44];
+ }
+importlib__bootstrap_external_toplevel_consts_68_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 43,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x84\x00\xf2\x02\x01\x05\x3d\xf2\x06\x01\x05\x14\xf2\x06\x01\x05\x12\xf2\x06\x01\x05\x42\x01\xf2\x06\x01\x05\x39\xf2\x06\x01\x05\x0d\xf2\x06\x0a\x05\x3c\xf3\x18\x02\x05\x2b",
+};
+static
+ struct _PyCode_DEF(60)
+importlib__bootstrap_external_toplevel_consts_68 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 30,
+ },
+ .co_consts = & importlib__bootstrap_external_toplevel_consts_68_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_external_toplevel_consts_68_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 0,
+ .co_argcount = 0,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 1 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 1,
+ .co_firstlineno = 1392,
+ .co_nlocalsplus = 0,
+ .co_nlocals = 0,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 198,
+ .co_localsplusnames = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_filename = & importlib__bootstrap_external_toplevel_consts_6_filename._ascii.ob_base,
+ .co_name = & const_str_NamespaceLoader._ascii.ob_base,
+ .co_qualname = & const_str_NamespaceLoader._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_external_toplevel_consts_68_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x65\x00\x5a\x01\x64\x00\x5a\x02\x64\x01\x84\x00\x5a\x03\x64\x02\x84\x00\x5a\x04\x64\x03\x84\x00\x5a\x05\x64\x04\x84\x00\x5a\x06\x64\x05\x84\x00\x5a\x07\x64\x06\x84\x00\x5a\x08\x64\x07\x84\x00\x5a\x09\x64\x08\x84\x00\x5a\x0a\x79\x09",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[11];
+ }
+const_str_PathFinder = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 10,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "PathFinder",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[63];
+ }
+importlib__bootstrap_external_toplevel_consts_70_consts_1 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 62,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Meta path finder for sys.path and package __path__ attributes.",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[126];
+ }
+importlib__bootstrap_external_toplevel_consts_70_consts_2_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 125,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x43\x61\x6c\x6c\x20\x74\x68\x65\x20\x69\x6e\x76\x61\x6c\x69\x64\x61\x74\x65\x5f\x63\x61\x63\x68\x65\x73\x28\x29\x20\x6d\x65\x74\x68\x6f\x64\x20\x6f\x6e\x20\x61\x6c\x6c\x20\x70\x61\x74\x68\x20\x65\x6e\x74\x72\x79\x20\x66\x69\x6e\x64\x65\x72\x73\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x73\x74\x6f\x72\x65\x64\x20\x69\x6e\x20\x73\x79\x73\x2e\x70\x61\x74\x68\x5f\x69\x6d\x70\x6f\x72\x74\x65\x72\x5f\x63\x61\x63\x68\x65\x73\x20\x28\x77\x68\x65\x72\x65\x20\x69\x6d\x70\x6c\x65\x6d\x65\x6e\x74\x65\x64\x29\x2e",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[18];
+ }
+const_str_invalidate_caches = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 17,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "invalidate_caches",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[4];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_70_consts_2_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_item = {
+ & importlib__bootstrap_external_toplevel_consts_70_consts_2_consts_0._ascii.ob_base,
+ Py_None,
+ & const_str_invalidate_caches._ascii.ob_base,
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 1],
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[20];
+ }
+const_str_path_importer_cache = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 19,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "path_importer_cache",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[9];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_70_consts_2_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 9,
+ },
+ .ob_item = {
+ & const_str_list._ascii.ob_base,
+ & const_str_sys._ascii.ob_base,
+ & const_str_path_importer_cache._ascii.ob_base,
+ &_Py_ID(items),
+ & const_str__path_isabs._ascii.ob_base,
+ & const_str_hasattr._ascii.ob_base,
+ & const_str_invalidate_caches._ascii.ob_base,
+ & const_str__NamespacePath._ascii.ob_base,
+ & const_str__epoch._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[29];
+ }
+importlib__bootstrap_external_toplevel_consts_70_consts_2_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 28,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "PathFinder.invalidate_caches",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[114];
+ }
+importlib__bootstrap_external_toplevel_consts_70_consts_2_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 113,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf4\x08\x00\x1d\x21\xa4\x13\xd7\x21\x38\xd1\x21\x38\xd7\x21\x3e\xd1\x21\x3e\xd3\x21\x40\xd3\x1c\x41\xf2\x00\x06\x09\x2b\x89\x4c\x88\x44\x90\x26\xf0\x06\x00\x10\x16\x88\x7e\xa4\x5b\xb0\x14\xd4\x25\x36\xdc\x14\x17\xd7\x14\x2b\xd1\x14\x2b\xa8\x44\xd1\x14\x31\xdc\x11\x18\x98\x16\xd0\x21\x34\xd5\x11\x35\xd8\x10\x16\xd7\x10\x28\xd1\x10\x28\xd5\x10\x2a\xf0\x0d\x06\x09\x2b\xf4\x12\x00\x09\x17\xd7\x08\x1d\xd2\x08\x1d\xa0\x11\xd1\x08\x22\xd6\x08\x1d",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_70_consts_2_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ &_Py_ID(name),
+ & const_str_finder._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(268)
+importlib__bootstrap_external_toplevel_consts_70_consts_2 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 134,
+ },
+ .co_consts = & importlib__bootstrap_external_toplevel_consts_70_consts_2_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_external_toplevel_consts_70_consts_2_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 0,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 7 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 5,
+ .co_firstlineno = 1438,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 2,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 199,
+ .co_localsplusnames = & importlib__bootstrap_external_toplevel_consts_70_consts_2_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_14_consts_2_localspluskinds.ob_base.ob_base,
+ .co_filename = & importlib__bootstrap_external_toplevel_consts_6_filename._ascii.ob_base,
+ .co_name = & const_str_invalidate_caches._ascii.ob_base,
+ .co_qualname = & importlib__bootstrap_external_toplevel_consts_70_consts_2_qualname._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_external_toplevel_consts_70_consts_2_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x74\x02\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x44\x00\x5d\x41\x00\x00\x5c\x02\x00\x00\x7d\x00\x7d\x01\x7c\x01\x81\x0b\x74\x09\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x73\x12\x74\x02\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x3d\x00\x8c\x25\x74\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x64\x02\xab\x02\x00\x00\x00\x00\x00\x00\x73\x01\x8c\x32\x7c\x01\x6a\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x01\x00\x8c\x43\x04\x00\x74\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x78\x01\x6a\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x03\x7a\x0d\x00\x00\x63\x02\x5f\x08\x00\x00\x00\x00\x00\x00\x00\x00\x79\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[47];
+ }
+importlib__bootstrap_external_toplevel_consts_70_consts_3_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 46,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Search sys.path_hooks for a finder for 'path'.",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[24];
+ }
+importlib__bootstrap_external_toplevel_consts_70_consts_3_consts_2 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 23,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "sys.path_hooks is empty",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_70_consts_3_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ & importlib__bootstrap_external_toplevel_consts_70_consts_3_consts_0._ascii.ob_base,
+ Py_None,
+ & importlib__bootstrap_external_toplevel_consts_70_consts_3_consts_2._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[11];
+ }
+const_str_path_hooks = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 10,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "path_hooks",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[6];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_70_consts_3_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 6,
+ },
+ .ob_item = {
+ & const_str_sys._ascii.ob_base,
+ & const_str_path_hooks._ascii.ob_base,
+ & const_str__warnings._ascii.ob_base,
+ & const_str_warn._ascii.ob_base,
+ & const_str_ImportWarning._ascii.ob_base,
+ & const_str_ImportError._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[12];
+ }
+const_str__path_hooks = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 11,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_path_hooks",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[23];
+ }
+importlib__bootstrap_external_toplevel_consts_70_consts_3_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 22,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "PathFinder._path_hooks",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[95];
+ }
+importlib__bootstrap_external_toplevel_consts_70_consts_3_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 94,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf4\x06\x00\x0c\x0f\x8f\x3e\x89\x3e\xd0\x0b\x25\xac\x63\xaf\x6e\xaa\x6e\xdc\x0c\x15\x8f\x4e\x89\x4e\xd0\x1b\x34\xb4\x6d\xd4\x0c\x44\xdc\x14\x17\x97\x4e\x91\x4e\xf2\x00\x06\x09\x18\x88\x44\xf0\x02\x03\x0d\x19\xd9\x17\x1b\x98\x44\x93\x7a\xd2\x10\x21\xf0\x05\x06\x09\x18\xf0\x0c\x00\x14\x18\xf8\xf4\x07\x00\x14\x1f\xf2\x00\x01\x0d\x19\xd9\x10\x18\xf0\x03\x01\x0d\x19\xfa",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[19];
+ }
+importlib__bootstrap_external_toplevel_consts_70_consts_3_exceptiontable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 18,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\xc1\x0f\x07\x41\x1b\x02\xc1\x1b\x09\x41\x27\x05\xc1\x26\x01\x41\x27\x05",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_70_consts_3_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ &_Py_ID(path),
+ &_Py_ID(hook),
+ },
+ },
+};
+static
+ struct _PyCode_DEF(212)
+importlib__bootstrap_external_toplevel_consts_70_consts_3 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 106,
+ },
+ .co_consts = & importlib__bootstrap_external_toplevel_consts_70_consts_3_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_external_toplevel_consts_70_consts_3_names._object.ob_base.ob_base,
+ .co_exceptiontable = & importlib__bootstrap_external_toplevel_consts_70_consts_3_exceptiontable.ob_base.ob_base,
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 7 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 5,
+ .co_firstlineno = 1453,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 2,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 200,
+ .co_localsplusnames = & importlib__bootstrap_external_toplevel_consts_70_consts_3_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_14_consts_2_localspluskinds.ob_base.ob_base,
+ .co_filename = & importlib__bootstrap_external_toplevel_consts_6_filename._ascii.ob_base,
+ .co_name = & const_str__path_hooks._ascii.ob_base,
+ .co_qualname = & importlib__bootstrap_external_toplevel_consts_70_consts_3_qualname._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_external_toplevel_consts_70_consts_3_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x81\x2a\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x73\x1a\x74\x05\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x02\x74\x08\x00\x00\x00\x00\x00\x00\x00\x00\xab\x02\x00\x00\x00\x00\x00\x00\x01\x00\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x00\x5d\x0c\x00\x00\x7d\x01\x09\x00\x02\x00\x7c\x01\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x63\x02\x01\x00\x53\x00\x04\x00\x79\x01\x23\x00\x74\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x72\x03\x01\x00\x59\x00\x8c\x1b\x77\x00\x78\x03\x59\x00\x77\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[211];
+ }
+importlib__bootstrap_external_toplevel_consts_70_consts_4_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 210,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x47\x65\x74\x20\x74\x68\x65\x20\x66\x69\x6e\x64\x65\x72\x20\x66\x6f\x72\x20\x74\x68\x65\x20\x70\x61\x74\x68\x20\x65\x6e\x74\x72\x79\x20\x66\x72\x6f\x6d\x20\x73\x79\x73\x2e\x70\x61\x74\x68\x5f\x69\x6d\x70\x6f\x72\x74\x65\x72\x5f\x63\x61\x63\x68\x65\x2e\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x49\x66\x20\x74\x68\x65\x20\x70\x61\x74\x68\x20\x65\x6e\x74\x72\x79\x20\x69\x73\x20\x6e\x6f\x74\x20\x69\x6e\x20\x74\x68\x65\x20\x63\x61\x63\x68\x65\x2c\x20\x66\x69\x6e\x64\x20\x74\x68\x65\x20\x61\x70\x70\x72\x6f\x70\x72\x69\x61\x74\x65\x20\x66\x69\x6e\x64\x65\x72\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x61\x6e\x64\x20\x63\x61\x63\x68\x65\x20\x69\x74\x2e\x20\x49\x66\x20\x6e\x6f\x20\x66\x69\x6e\x64\x65\x72\x20\x69\x73\x20\x61\x76\x61\x69\x6c\x61\x62\x6c\x65\x2c\x20\x73\x74\x6f\x72\x65\x20\x4e\x6f\x6e\x65\x2e\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_70_consts_4_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ & importlib__bootstrap_external_toplevel_consts_70_consts_4_consts_0._ascii.ob_base,
+ &_Py_STR(empty),
+ Py_None,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[18];
+ }
+const_str_FileNotFoundError = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 17,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "FileNotFoundError",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[7];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_70_consts_4_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 7,
+ },
+ .ob_item = {
+ & const_str__os._ascii.ob_base,
+ & const_str_getcwd._ascii.ob_base,
+ & const_str_FileNotFoundError._ascii.ob_base,
+ & const_str_sys._ascii.ob_base,
+ & const_str_path_importer_cache._ascii.ob_base,
+ & const_str_KeyError._ascii.ob_base,
+ & const_str__path_hooks._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[21];
+ }
+const_str__path_importer_cache = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 20,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_path_importer_cache",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[32];
+ }
+importlib__bootstrap_external_toplevel_consts_70_consts_4_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 31,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "PathFinder._path_importer_cache",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[129];
+ }
+importlib__bootstrap_external_toplevel_consts_70_consts_4_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 128,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf0\x10\x00\x0c\x10\x90\x32\x8a\x3a\xf0\x02\x05\x0d\x1c\xdc\x17\x1a\x97\x7a\x91\x7a\x93\x7c\x90\x04\xf0\x0a\x04\x09\x33\xdc\x15\x18\xd7\x15\x2c\xd1\x15\x2c\xa8\x54\xd1\x15\x32\x88\x46\xf0\x08\x00\x10\x16\x88\x0d\xf8\xf4\x13\x00\x14\x25\xf2\x00\x03\x0d\x1c\xf1\x06\x00\x18\x1c\xf0\x07\x03\x0d\x1c\xfb\xf4\x0c\x00\x10\x18\xf2\x00\x02\x09\x33\xd8\x15\x18\x97\x5f\x91\x5f\xa0\x54\xd3\x15\x2a\x88\x46\xd8\x2c\x32\x8c\x43\xd7\x0c\x23\xd1\x0c\x23\xa0\x44\xd2\x0c\x29\xd8\x0f\x15\x88\x0d\xf0\x07\x02\x09\x33\xfa",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[30];
+ }
+importlib__bootstrap_external_toplevel_consts_70_consts_4_exceptiontable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 29,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x87\x14\x31\x00\x9c\x13\x41\x00\x00\xb1\x09\x3d\x03\xbc\x01\x3d\x03\xc1\x00\x2d\x41\x31\x03\xc1\x30\x01\x41\x31\x03",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_70_consts_4_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ & const_str_cls._ascii.ob_base,
+ &_Py_ID(path),
+ & const_str_finder._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(232)
+importlib__bootstrap_external_toplevel_consts_70_consts_4 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 116,
+ },
+ .co_consts = & importlib__bootstrap_external_toplevel_consts_70_consts_4_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_external_toplevel_consts_70_consts_4_names._object.ob_base.ob_base,
+ .co_exceptiontable = & importlib__bootstrap_external_toplevel_consts_70_consts_4_exceptiontable.ob_base.ob_base,
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 7 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 1466,
+ .co_nlocalsplus = 3,
+ .co_nlocals = 3,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 201,
+ .co_localsplusnames = & importlib__bootstrap_external_toplevel_consts_70_consts_4_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_3_localspluskinds.ob_base.ob_base,
+ .co_filename = & importlib__bootstrap_external_toplevel_consts_6_filename._ascii.ob_base,
+ .co_name = & const_str__path_importer_cache._ascii.ob_base,
+ .co_qualname = & importlib__bootstrap_external_toplevel_consts_70_consts_4_qualname._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_external_toplevel_consts_70_consts_4_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x01\x64\x01\x6b\x28\x00\x00\x72\x15\x09\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x7d\x01\x09\x00\x74\x06\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x19\x00\x00\x00\x7d\x02\x7c\x02\x53\x00\x23\x00\x74\x04\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x72\x03\x01\x00\x59\x00\x79\x02\x77\x00\x78\x03\x59\x00\x77\x01\x23\x00\x74\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x72\x28\x01\x00\x7c\x00\x6a\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x02\x7c\x02\x74\x06\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x3c\x00\x00\x00\x59\x00\x7c\x02\x53\x00\x77\x00\x78\x03\x59\x00\x77\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[64];
+ }
+importlib__bootstrap_external_toplevel_consts_70_consts_6_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 63,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Find the loader or namespace_path for this module/package name.",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[20];
+ }
+importlib__bootstrap_external_toplevel_consts_70_consts_6_consts_2 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 19,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "spec missing loader",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_70_consts_6_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ & importlib__bootstrap_external_toplevel_consts_70_consts_6_consts_0._ascii.ob_base,
+ Py_None,
+ & importlib__bootstrap_external_toplevel_consts_70_consts_6_consts_2._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[10];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_70_consts_6_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 10,
+ },
+ .ob_item = {
+ &_Py_ID(isinstance),
+ & const_str_str._ascii.ob_base,
+ & const_str__path_importer_cache._ascii.ob_base,
+ & const_str_find_spec._ascii.ob_base,
+ & const_str_loader._ascii.ob_base,
+ & const_str_submodule_search_locations._ascii.ob_base,
+ & const_str_ImportError._ascii.ob_base,
+ &_Py_ID(extend),
+ &_Py_ID(_bootstrap),
+ & const_str_ModuleSpec._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[10];
+ }
+const_str__get_spec = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 9,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_get_spec",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[21];
+ }
+importlib__bootstrap_external_toplevel_consts_70_consts_6_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 20,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "PathFinder._get_spec",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[179];
+ }
+importlib__bootstrap_external_toplevel_consts_70_consts_6_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 178,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf0\x0a\x00\x1a\x1c\x88\x0e\xd8\x15\x19\xf2\x00\x15\x09\x18\x88\x45\xdc\x13\x1d\x98\x65\xa4\x53\xd4\x13\x29\xd8\x10\x18\xd8\x15\x18\xd7\x15\x2d\xd1\x15\x2d\xa8\x65\xd3\x15\x34\x88\x46\xd8\x0f\x15\xd1\x0f\x21\xd8\x17\x1d\xd7\x17\x27\xd1\x17\x27\xa8\x08\xb0\x26\xd3\x17\x39\x90\x04\xd8\x13\x17\x90\x3c\xd8\x14\x1c\xd8\x13\x17\x97\x3b\x91\x3b\xd0\x13\x2a\xd8\x1b\x1f\x92\x4b\xd8\x1b\x1f\xd7\x1b\x3a\xd1\x1b\x3a\x90\x08\xd8\x13\x1b\xd0\x13\x23\xdc\x1a\x25\xd0\x26\x3b\xd3\x1a\x3c\xd0\x14\x3c\xf0\x0a\x00\x11\x1f\xd7\x10\x25\xd1\x10\x25\xa0\x68\xd5\x10\x2f\xf0\x23\x15\x09\x18\xf4\x26\x00\x14\x1e\xd7\x13\x28\xd1\x13\x28\xa8\x18\xb0\x34\xd3\x13\x38\x88\x44\xd8\x2e\x3c\x88\x44\xd4\x0c\x2b\xd8\x13\x17\x88\x4b",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[15];
+ }
+const_str_namespace_path = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 14,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "namespace_path",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[6];
+ }
+const_str_entry = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 5,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "entry",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[9];
+ }
+const_str_portions = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 8,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "portions",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[9];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_70_consts_6_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 9,
+ },
+ .ob_item = {
+ & const_str_cls._ascii.ob_base,
+ & const_str_fullname._ascii.ob_base,
+ &_Py_ID(path),
+ &_Py_ID(target),
+ & const_str_namespace_path._ascii.ob_base,
+ & const_str_entry._ascii.ob_base,
+ & const_str_finder._ascii.ob_base,
+ & const_str_spec._ascii.ob_base,
+ & const_str_portions._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(314)
+importlib__bootstrap_external_toplevel_consts_70_consts_6 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 157,
+ },
+ .co_consts = & importlib__bootstrap_external_toplevel_consts_70_consts_6_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_external_toplevel_consts_70_consts_6_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 4,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 14 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 5,
+ .co_firstlineno = 1488,
+ .co_nlocalsplus = 9,
+ .co_nlocals = 9,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 202,
+ .co_localsplusnames = & importlib__bootstrap_external_toplevel_consts_70_consts_6_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_61_localspluskinds.ob_base.ob_base,
+ .co_filename = & importlib__bootstrap_external_toplevel_consts_6_filename._ascii.ob_base,
+ .co_name = & const_str__get_spec._ascii.ob_base,
+ .co_qualname = & importlib__bootstrap_external_toplevel_consts_70_consts_6_qualname._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_external_toplevel_consts_70_consts_6_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x67\x00\x7d\x04\x7c\x02\x44\x00\x5d\x76\x00\x00\x7d\x05\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x05\x74\x02\x00\x00\x00\x00\x00\x00\x00\x00\xab\x02\x00\x00\x00\x00\x00\x00\x73\x01\x8c\x14\x7c\x00\x6a\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x05\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x06\x7c\x06\x80\x01\x8c\x28\x7c\x06\x6a\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x7c\x03\xab\x02\x00\x00\x00\x00\x00\x00\x7d\x07\x7c\x07\x80\x01\x8c\x3d\x7c\x07\x6a\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x81\x04\x7c\x07\x63\x02\x01\x00\x53\x00\x7c\x07\x6a\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7d\x08\x7c\x08\x80\x0b\x74\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x64\x02\xab\x01\x00\x00\x00\x00\x00\x00\x82\x01\x7c\x04\x6a\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x08\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x8c\x78\x04\x00\x74\x10\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x64\x01\xab\x02\x00\x00\x00\x00\x00\x00\x7d\x07\x7c\x04\x7c\x07\x5f\x05\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x07\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[142];
+ }
+importlib__bootstrap_external_toplevel_consts_70_consts_7_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 141,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x54\x72\x79\x20\x74\x6f\x20\x66\x69\x6e\x64\x20\x61\x20\x73\x70\x65\x63\x20\x66\x6f\x72\x20\x27\x66\x75\x6c\x6c\x6e\x61\x6d\x65\x27\x20\x6f\x6e\x20\x73\x79\x73\x2e\x70\x61\x74\x68\x20\x6f\x72\x20\x27\x70\x61\x74\x68\x27\x2e\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x54\x68\x65\x20\x73\x65\x61\x72\x63\x68\x20\x69\x73\x20\x62\x61\x73\x65\x64\x20\x6f\x6e\x20\x73\x79\x73\x2e\x70\x61\x74\x68\x5f\x68\x6f\x6f\x6b\x73\x20\x61\x6e\x64\x20\x73\x79\x73\x2e\x70\x61\x74\x68\x5f\x69\x6d\x70\x6f\x72\x74\x65\x72\x5f\x63\x61\x63\x68\x65\x2e\x0a\x20\x20\x20\x20\x20\x20\x20\x20",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_70_consts_7_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & importlib__bootstrap_external_toplevel_consts_70_consts_7_consts_0._ascii.ob_base,
+ Py_None,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[7];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_70_consts_7_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 7,
+ },
+ .ob_item = {
+ & const_str_sys._ascii.ob_base,
+ &_Py_ID(path),
+ & const_str__get_spec._ascii.ob_base,
+ & const_str_loader._ascii.ob_base,
+ & const_str_submodule_search_locations._ascii.ob_base,
+ &_Py_ID(origin),
+ & const_str__NamespacePath._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[21];
+ }
+importlib__bootstrap_external_toplevel_consts_70_consts_7_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 20,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "PathFinder.find_spec",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[115];
+ }
+importlib__bootstrap_external_toplevel_consts_70_consts_7_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 114,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf0\x0c\x00\x0c\x10\x88\x3c\xdc\x13\x16\x97\x38\x91\x38\x88\x44\xd8\x0f\x12\x8f\x7d\x89\x7d\x98\x58\xa0\x74\xa8\x56\xd3\x0f\x34\x88\x04\xd8\x0b\x0f\x88\x3c\xd8\x13\x17\xd8\x0d\x11\x8f\x5b\x89\x5b\xd0\x0d\x20\xd8\x1d\x21\xd7\x1d\x3c\xd1\x1d\x3c\x88\x4e\xd9\x0f\x1d\xf0\x06\x00\x1f\x23\x90\x04\x94\x0b\xdc\x32\x40\xc0\x18\xc8\x3e\xd0\x5b\x5e\xd7\x5b\x68\xd1\x5b\x68\xd3\x32\x69\x90\x04\xd4\x10\x2f\xd8\x17\x1b\x90\x0b\xe0\x17\x1b\xe0\x13\x17\x88\x4b",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[6];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_70_consts_7_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 6,
+ },
+ .ob_item = {
+ & const_str_cls._ascii.ob_base,
+ & const_str_fullname._ascii.ob_base,
+ &_Py_ID(path),
+ &_Py_ID(target),
+ & const_str_spec._ascii.ob_base,
+ & const_str_namespace_path._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(214)
+importlib__bootstrap_external_toplevel_consts_70_consts_7 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 107,
+ },
+ .co_consts = & importlib__bootstrap_external_toplevel_consts_70_consts_7_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_external_toplevel_consts_70_consts_7_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 4,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 11 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 5,
+ .co_firstlineno = 1517,
+ .co_nlocalsplus = 6,
+ .co_nlocals = 6,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 203,
+ .co_localsplusnames = & importlib__bootstrap_external_toplevel_consts_70_consts_7_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_30_consts_4_localspluskinds.ob_base.ob_base,
+ .co_filename = & importlib__bootstrap_external_toplevel_consts_6_filename._ascii.ob_base,
+ .co_name = & const_str_find_spec._ascii.ob_base,
+ .co_qualname = & importlib__bootstrap_external_toplevel_consts_70_consts_7_qualname._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_external_toplevel_consts_70_consts_7_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x02\x80\x10\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7d\x02\x7c\x00\x6a\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x7c\x02\x7c\x03\xab\x03\x00\x00\x00\x00\x00\x00\x7d\x04\x7c\x04\x80\x01\x79\x01\x7c\x04\x6a\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x34\x7c\x04\x6a\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7d\x05\x7c\x05\x72\x25\x64\x01\x7c\x04\x5f\x05\x00\x00\x00\x00\x00\x00\x00\x00\x74\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x7c\x05\x7c\x00\x6a\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x03\x00\x00\x00\x00\x00\x00\x7c\x04\x5f\x04\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x04\x53\x00\x79\x01\x7c\x04\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[289];
+ }
+importlib__bootstrap_external_toplevel_consts_70_consts_8_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 288,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x46\x69\x6e\x64\x20\x64\x69\x73\x74\x72\x69\x62\x75\x74\x69\x6f\x6e\x73\x2e\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x52\x65\x74\x75\x72\x6e\x20\x61\x6e\x20\x69\x74\x65\x72\x61\x62\x6c\x65\x20\x6f\x66\x20\x61\x6c\x6c\x20\x44\x69\x73\x74\x72\x69\x62\x75\x74\x69\x6f\x6e\x20\x69\x6e\x73\x74\x61\x6e\x63\x65\x73\x20\x63\x61\x70\x61\x62\x6c\x65\x20\x6f\x66\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x6c\x6f\x61\x64\x69\x6e\x67\x20\x74\x68\x65\x20\x6d\x65\x74\x61\x64\x61\x74\x61\x20\x66\x6f\x72\x20\x70\x61\x63\x6b\x61\x67\x65\x73\x20\x6d\x61\x74\x63\x68\x69\x6e\x67\x20\x60\x60\x63\x6f\x6e\x74\x65\x78\x74\x2e\x6e\x61\x6d\x65\x60\x60\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x28\x6f\x72\x20\x61\x6c\x6c\x20\x6e\x61\x6d\x65\x73\x20\x69\x66\x20\x60\x60\x4e\x6f\x6e\x65\x60\x60\x20\x69\x6e\x64\x69\x63\x61\x74\x65\x64\x29\x20\x61\x6c\x6f\x6e\x67\x20\x74\x68\x65\x20\x70\x61\x74\x68\x73\x20\x69\x6e\x20\x74\x68\x65\x20\x6c\x69\x73\x74\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x6f\x66\x20\x64\x69\x72\x65\x63\x74\x6f\x72\x69\x65\x73\x20\x60\x60\x63\x6f\x6e\x74\x65\x78\x74\x2e\x70\x61\x74\x68\x60\x60\x2e\x0a\x20\x20\x20\x20\x20\x20\x20\x20",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[19];
+ }
+const_str_MetadataPathFinder = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 18,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "MetadataPathFinder",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_70_consts_8_consts_2 = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & const_str_MetadataPathFinder._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_70_consts_8_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ & importlib__bootstrap_external_toplevel_consts_70_consts_8_consts_0._ascii.ob_base,
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 0],
+ & importlib__bootstrap_external_toplevel_consts_70_consts_8_consts_2._object.ob_base.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[19];
+ }
+importlib__bootstrap_external_toplevel_consts_70_consts_8_names_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 18,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "importlib.metadata",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[19];
+ }
+const_str_find_distributions = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 18,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "find_distributions",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_70_consts_8_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ & importlib__bootstrap_external_toplevel_consts_70_consts_8_names_0._ascii.ob_base,
+ & const_str_MetadataPathFinder._ascii.ob_base,
+ & const_str_find_distributions._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[30];
+ }
+importlib__bootstrap_external_toplevel_consts_70_consts_8_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 29,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "PathFinder.find_distributions",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[33];
+ }
+importlib__bootstrap_external_toplevel_consts_70_consts_8_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 32,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf5\x14\x00\x09\x3a\xd8\x0f\x34\xd0\x0f\x21\xd7\x0f\x34\xd1\x0f\x34\xb0\x64\xd0\x0f\x45\xb8\x66\xd1\x0f\x45\xd0\x08\x45",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_70_consts_8_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ &_Py_ID(args),
+ & const_str_kwargs._ascii.ob_base,
+ & const_str_MetadataPathFinder._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(50)
+importlib__bootstrap_external_toplevel_consts_70_consts_8 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 25,
+ },
+ .co_consts = & importlib__bootstrap_external_toplevel_consts_70_consts_8_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_external_toplevel_consts_70_consts_8_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 15,
+ .co_argcount = 0,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 8 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 5,
+ .co_firstlineno = 1541,
+ .co_nlocalsplus = 3,
+ .co_nlocals = 3,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 204,
+ .co_localsplusnames = & importlib__bootstrap_external_toplevel_consts_70_consts_8_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_3_localspluskinds.ob_base.ob_base,
+ .co_filename = & importlib__bootstrap_external_toplevel_consts_6_filename._ascii.ob_base,
+ .co_name = & const_str_find_distributions._ascii.ob_base,
+ .co_qualname = & importlib__bootstrap_external_toplevel_consts_70_consts_8_qualname._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_external_toplevel_consts_70_consts_8_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x64\x01\x64\x02\x6c\x00\x6d\x01\x7d\x02\x01\x00\x02\x00\x7c\x02\x6a\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x69\x00\x7c\x01\xa4\x01\x8e\x01\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[11];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_70_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 11,
+ },
+ .ob_item = {
+ & const_str_PathFinder._ascii.ob_base,
+ & importlib__bootstrap_external_toplevel_consts_70_consts_1._ascii.ob_base,
+ & importlib__bootstrap_external_toplevel_consts_70_consts_2.ob_base.ob_base,
+ & importlib__bootstrap_external_toplevel_consts_70_consts_3.ob_base.ob_base,
+ & importlib__bootstrap_external_toplevel_consts_70_consts_4.ob_base.ob_base,
+ Py_None,
+ & importlib__bootstrap_external_toplevel_consts_70_consts_6.ob_base.ob_base,
+ & importlib__bootstrap_external_toplevel_consts_70_consts_7.ob_base.ob_base,
+ & importlib__bootstrap_external_toplevel_consts_70_consts_8.ob_base.ob_base,
+ & importlib__bootstrap_toplevel_consts_1_consts._object.ob_base.ob_base,
+ & importlib__bootstrap_toplevel_consts_44_consts_10._object.ob_base.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[12];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_70_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 12,
+ },
+ .ob_item = {
+ &_Py_ID(__name__),
+ &_Py_ID(__module__),
+ &_Py_ID(__qualname__),
+ &_Py_ID(__doc__),
+ & const_str_staticmethod._ascii.ob_base,
+ & const_str_invalidate_caches._ascii.ob_base,
+ & const_str__path_hooks._ascii.ob_base,
+ & const_str_classmethod._ascii.ob_base,
+ & const_str__path_importer_cache._ascii.ob_base,
+ & const_str__get_spec._ascii.ob_base,
+ & const_str_find_spec._ascii.ob_base,
+ & const_str_find_distributions._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[126];
+ }
+importlib__bootstrap_external_toplevel_consts_70_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 125,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x84\x00\xe1\x04\x48\xe0\x05\x11\xf1\x02\x0c\x05\x23\xf3\x03\x00\x06\x12\xf0\x02\x0c\x05\x23\xf0\x1c\x00\x06\x12\xf1\x02\x0a\x05\x18\xf3\x03\x00\x06\x12\xf0\x02\x0a\x05\x18\xf0\x18\x00\x06\x11\xf1\x02\x13\x05\x16\xf3\x03\x00\x06\x11\xf0\x02\x13\x05\x16\xf0\x2a\x00\x06\x11\xf2\x02\x1a\x05\x18\xf3\x03\x00\x06\x11\xf0\x02\x1a\x05\x18\xf0\x38\x00\x06\x11\xf2\x02\x15\x05\x18\xf3\x03\x00\x06\x11\xf0\x02\x15\x05\x18\xf0\x2e\x00\x06\x12\xf1\x02\x0a\x05\x46\x01\xf3\x03\x00\x06\x12\xf1\x02\x0a\x05\x46\x01",
+};
+static
+ struct _PyCode_DEF(116)
+importlib__bootstrap_external_toplevel_consts_70 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 58,
+ },
+ .co_consts = & importlib__bootstrap_external_toplevel_consts_70_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_external_toplevel_consts_70_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 0,
+ .co_argcount = 0,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 3 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 3,
+ .co_firstlineno = 1434,
+ .co_nlocalsplus = 0,
+ .co_nlocals = 0,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 205,
+ .co_localsplusnames = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_filename = & importlib__bootstrap_external_toplevel_consts_6_filename._ascii.ob_base,
+ .co_name = & const_str_PathFinder._ascii.ob_base,
+ .co_qualname = & const_str_PathFinder._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_external_toplevel_consts_70_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x65\x00\x5a\x01\x64\x00\x5a\x02\x64\x01\x5a\x03\x65\x04\x64\x02\x84\x00\xab\x00\x00\x00\x00\x00\x00\x00\x5a\x05\x65\x04\x64\x03\x84\x00\xab\x00\x00\x00\x00\x00\x00\x00\x5a\x06\x65\x07\x64\x04\x84\x00\xab\x00\x00\x00\x00\x00\x00\x00\x5a\x08\x65\x07\x64\x09\x64\x06\x84\x01\xab\x00\x00\x00\x00\x00\x00\x00\x5a\x09\x65\x07\x64\x0a\x64\x07\x84\x01\xab\x00\x00\x00\x00\x00\x00\x00\x5a\x0a\x65\x04\x64\x08\x84\x00\xab\x00\x00\x00\x00\x00\x00\x00\x5a\x0b\x79\x05",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[11];
+ }
+const_str_FileFinder = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 10,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "FileFinder",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[173];
+ }
+importlib__bootstrap_external_toplevel_consts_72_consts_1 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 172,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x46\x69\x6c\x65\x2d\x62\x61\x73\x65\x64\x20\x66\x69\x6e\x64\x65\x72\x2e\x0a\x0a\x20\x20\x20\x20\x49\x6e\x74\x65\x72\x61\x63\x74\x69\x6f\x6e\x73\x20\x77\x69\x74\x68\x20\x74\x68\x65\x20\x66\x69\x6c\x65\x20\x73\x79\x73\x74\x65\x6d\x20\x61\x72\x65\x20\x63\x61\x63\x68\x65\x64\x20\x66\x6f\x72\x20\x70\x65\x72\x66\x6f\x72\x6d\x61\x6e\x63\x65\x2c\x20\x62\x65\x69\x6e\x67\x0a\x20\x20\x20\x20\x72\x65\x66\x72\x65\x73\x68\x65\x64\x20\x77\x68\x65\x6e\x20\x74\x68\x65\x20\x64\x69\x72\x65\x63\x74\x6f\x72\x79\x20\x74\x68\x65\x20\x66\x69\x6e\x64\x65\x72\x20\x69\x73\x20\x68\x61\x6e\x64\x6c\x69\x6e\x67\x20\x68\x61\x73\x20\x62\x65\x65\x6e\x20\x6d\x6f\x64\x69\x66\x69\x65\x64\x2e\x0a\x0a\x20\x20\x20\x20",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[155];
+ }
+importlib__bootstrap_external_toplevel_consts_72_consts_2_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 154,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x49\x6e\x69\x74\x69\x61\x6c\x69\x7a\x65\x20\x77\x69\x74\x68\x20\x74\x68\x65\x20\x70\x61\x74\x68\x20\x74\x6f\x20\x73\x65\x61\x72\x63\x68\x20\x6f\x6e\x20\x61\x6e\x64\x20\x61\x20\x76\x61\x72\x69\x61\x62\x6c\x65\x20\x6e\x75\x6d\x62\x65\x72\x20\x6f\x66\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x32\x2d\x74\x75\x70\x6c\x65\x73\x20\x63\x6f\x6e\x74\x61\x69\x6e\x69\x6e\x67\x20\x74\x68\x65\x20\x6c\x6f\x61\x64\x65\x72\x20\x61\x6e\x64\x20\x74\x68\x65\x20\x66\x69\x6c\x65\x20\x73\x75\x66\x66\x69\x78\x65\x73\x20\x74\x68\x65\x20\x6c\x6f\x61\x64\x65\x72\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x63\x6f\x67\x6e\x69\x7a\x65\x73\x2e",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[39];
+ }
+importlib__bootstrap_external_toplevel_consts_72_consts_2_consts_1_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 38,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "FileFinder.__init__.<locals>.<genexpr>",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[23];
+ }
+importlib__bootstrap_external_toplevel_consts_72_consts_2_consts_1_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 22,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\xf8\xe8\x00\xf8\x80\x00\xd2\x1a\x43\xb0\x06\x98\x46\xa0\x46\xd4\x1b\x2b\xd1\x1a\x43\xf9",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[5];
+ }
+importlib__bootstrap_external_toplevel_consts_72_consts_2_consts_1_exceptiontable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x83\x0e\x11\x01",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_72_consts_2_consts_1_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ & importlib__bootstrap_external_toplevel_consts_6_localsplusnames_0._ascii.ob_base,
+ & const_str_suffix._ascii.ob_base,
+ & const_str_loader._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(38)
+importlib__bootstrap_external_toplevel_consts_72_consts_2_consts_1 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 19,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_1_consts._object.ob_base.ob_base,
+ .co_names = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_exceptiontable = & importlib__bootstrap_external_toplevel_consts_72_consts_2_consts_1_exceptiontable.ob_base.ob_base,
+ .co_flags = 51,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 6 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 3,
+ .co_firstlineno = 1570,
+ .co_nlocalsplus = 3,
+ .co_nlocals = 2,
+ .co_ncellvars = 0,
+ .co_nfreevars = 1,
+ .co_version = 206,
+ .co_localsplusnames = & importlib__bootstrap_external_toplevel_consts_72_consts_2_consts_1_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_7_consts_1_consts_1_consts_4_localspluskinds.ob_base.ob_base,
+ .co_filename = & importlib__bootstrap_external_toplevel_consts_6_filename._ascii.ob_base,
+ .co_name = &_Py_STR(anon_genexpr),
+ .co_qualname = & importlib__bootstrap_external_toplevel_consts_72_consts_2_consts_1_qualname._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_external_toplevel_consts_72_consts_2_consts_1_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x95\x01\x4b\x00\x01\x00\x97\x00\x7c\x00\x5d\x08\x00\x00\x7d\x01\x7c\x01\x89\x02\x66\x02\x96\x01\x97\x01\x01\x00\x8c\x0a\x04\x00\x79\x00\xad\x03\x77\x01",
+ ._co_firsttraceable = 3,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[5];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_72_consts_2_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 5,
+ },
+ .ob_item = {
+ & importlib__bootstrap_external_toplevel_consts_72_consts_2_consts_0._ascii.ob_base,
+ & importlib__bootstrap_external_toplevel_consts_72_consts_2_consts_1.ob_base.ob_base,
+ &_Py_STR(dot),
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + -1],
+ Py_None,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[9];
+ }
+const_str__loaders = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 8,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_loaders",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[12];
+ }
+const_str__path_mtime = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 11,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_path_mtime",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[12];
+ }
+const_str__path_cache = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 11,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_path_cache",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[20];
+ }
+const_str__relaxed_path_cache = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 19,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_relaxed_path_cache",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[10];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_72_consts_2_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 10,
+ },
+ .ob_item = {
+ &_Py_ID(extend),
+ & const_str__loaders._ascii.ob_base,
+ & const_str__os._ascii.ob_base,
+ & const_str_getcwd._ascii.ob_base,
+ &_Py_ID(path),
+ & const_str__path_abspath._ascii.ob_base,
+ & const_str__path_mtime._ascii.ob_base,
+ & const_str_set._ascii.ob_base,
+ & const_str__path_cache._ascii.ob_base,
+ & const_str__relaxed_path_cache._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[20];
+ }
+importlib__bootstrap_external_toplevel_consts_72_consts_2_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 19,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "FileFinder.__init__",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[120];
+ }
+importlib__bootstrap_external_toplevel_consts_72_consts_2_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 119,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\xf8\x80\x00\xf0\x08\x00\x13\x15\x88\x07\xd8\x20\x2e\xf2\x00\x01\x09\x44\x01\xd1\x0c\x1c\x88\x46\x90\x48\xd8\x0c\x13\x8f\x4e\x89\x4e\xd3\x1a\x43\xb8\x28\xd4\x1a\x43\xd5\x0c\x43\xf0\x03\x01\x09\x44\x01\xe0\x18\x1f\x88\x04\x8c\x0d\xe1\x0f\x13\x90\x74\x98\x73\x92\x7b\xdc\x18\x1b\x9f\x0a\x99\x0a\x9b\x0c\x88\x44\x8d\x49\xe4\x18\x25\xa0\x64\xd3\x18\x2b\x88\x44\x8c\x49\xd8\x1b\x1d\x88\x04\xd4\x08\x18\xdc\x1b\x1e\x9b\x35\x88\x04\xd4\x08\x18\xdc\x23\x26\xa3\x35\x88\x04\xd5\x08\x20",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[15];
+ }
+const_str_loader_details = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 14,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "loader_details",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[8];
+ }
+const_str_loaders = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 7,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "loaders",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[6];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_72_consts_2_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 6,
+ },
+ .ob_item = {
+ &_Py_ID(self),
+ &_Py_ID(path),
+ & const_str_loader_details._ascii.ob_base,
+ & const_str_loaders._ascii.ob_base,
+ & const_str_suffixes._ascii.ob_base,
+ & const_str_loader._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[7];
+ }
+importlib__bootstrap_external_toplevel_consts_72_consts_2_localspluskinds = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 6,
+ },
+ .ob_shash = -1,
+ .ob_sval = " @",
+};
+static
+ struct _PyCode_DEF(268)
+importlib__bootstrap_external_toplevel_consts_72_consts_2 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 134,
+ },
+ .co_consts = & importlib__bootstrap_external_toplevel_consts_72_consts_2_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_external_toplevel_consts_72_consts_2_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 7,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 11 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 5,
+ .co_firstlineno = 1564,
+ .co_nlocalsplus = 6,
+ .co_nlocals = 5,
+ .co_ncellvars = 1,
+ .co_nfreevars = 0,
+ .co_version = 207,
+ .co_localsplusnames = & importlib__bootstrap_external_toplevel_consts_72_consts_2_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_external_toplevel_consts_72_consts_2_localspluskinds.ob_base.ob_base,
+ .co_filename = & importlib__bootstrap_external_toplevel_consts_6_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__init__),
+ .co_qualname = & importlib__bootstrap_external_toplevel_consts_72_consts_2_qualname._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_external_toplevel_consts_72_consts_2_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x87\x05\x97\x00\x67\x00\x7d\x03\x7c\x02\x44\x00\x5d\x1f\x00\x00\x5c\x02\x00\x00\x8a\x05\x7d\x04\x7c\x03\x6a\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x88\x05\x66\x01\x64\x01\x84\x08\x7c\x04\x44\x00\xab\x00\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x8c\x21\x04\x00\x7c\x03\x7c\x00\x5f\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x72\x05\x7c\x01\x64\x02\x6b\x28\x00\x00\x72\x1a\x74\x05\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x5f\x04\x00\x00\x00\x00\x00\x00\x00\x00\x6e\x10\x74\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\xab\x01\x00\x00\x00\x00\x00\x00\x7c\x00\x5f\x04\x00\x00\x00\x00\x00\x00\x00\x00\x64\x03\x7c\x00\x5f\x06\x00\x00\x00\x00\x00\x00\x00\x00\x74\x0f\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x5f\x08\x00\x00\x00\x00\x00\x00\x00\x00\x74\x0f\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x5f\x09\x00\x00\x00\x00\x00\x00\x00\x00\x79\x04",
+ ._co_firsttraceable = 1,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[32];
+ }
+importlib__bootstrap_external_toplevel_consts_72_consts_3_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 31,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Invalidate the directory mtime.",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_72_consts_3_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ & importlib__bootstrap_external_toplevel_consts_72_consts_3_consts_0._ascii.ob_base,
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + -1],
+ Py_None,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_72_consts_3_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & const_str__path_mtime._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[29];
+ }
+importlib__bootstrap_external_toplevel_consts_72_consts_3_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 28,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "FileFinder.invalidate_caches",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[11];
+ }
+importlib__bootstrap_external_toplevel_consts_72_consts_3_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 10,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xe0\x1b\x1d\x88\x04\xd5\x08\x18",
+};
+static
+ struct _PyCode_DEF(18)
+importlib__bootstrap_external_toplevel_consts_72_consts_3 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 9,
+ },
+ .co_consts = & importlib__bootstrap_external_toplevel_consts_72_consts_3_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_external_toplevel_consts_72_consts_3_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 3 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 2,
+ .co_firstlineno = 1581,
+ .co_nlocalsplus = 1,
+ .co_nlocals = 1,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 208,
+ .co_localsplusnames = & importlib__bootstrap_toplevel_consts_7_consts_2_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_characters[32]),
+ .co_filename = & importlib__bootstrap_external_toplevel_consts_6_filename._ascii.ob_base,
+ .co_name = & const_str_invalidate_caches._ascii.ob_base,
+ .co_qualname = & importlib__bootstrap_external_toplevel_consts_72_consts_3_qualname._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_external_toplevel_consts_72_consts_3_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x64\x01\x7c\x00\x5f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x79\x02",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_72_consts_4_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ Py_None,
+ & importlib__bootstrap_toplevel_consts_33_consts_5._object.ob_base.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_72_consts_4_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & const_str_spec_from_file_location._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[21];
+ }
+importlib__bootstrap_external_toplevel_consts_72_consts_4_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 20,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "FileFinder._get_spec",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[39];
+ }
+importlib__bootstrap_external_toplevel_consts_72_consts_4_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 38,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xd9\x11\x1d\x98\x68\xa8\x04\xd3\x11\x2d\x88\x06\xdc\x0f\x26\xa0\x78\xb0\x14\xb8\x66\xd8\x42\x46\xf4\x03\x01\x10\x48\x01\xf0\x00\x01\x09\x48\x01",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[7];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_72_consts_4_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 7,
+ },
+ .ob_item = {
+ &_Py_ID(self),
+ & const_str_loader_class._ascii.ob_base,
+ & const_str_fullname._ascii.ob_base,
+ &_Py_ID(path),
+ & const_str_smsl._ascii.ob_base,
+ &_Py_ID(target),
+ & const_str_loader._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(50)
+importlib__bootstrap_external_toplevel_consts_72_consts_4 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 25,
+ },
+ .co_consts = & importlib__bootstrap_external_toplevel_consts_72_consts_4_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_external_toplevel_consts_72_consts_4_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 6,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 13 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 6,
+ .co_firstlineno = 1585,
+ .co_nlocalsplus = 7,
+ .co_nlocals = 7,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 209,
+ .co_localsplusnames = & importlib__bootstrap_external_toplevel_consts_72_consts_4_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_46_consts_9_localspluskinds.ob_base.ob_base,
+ .co_filename = & importlib__bootstrap_external_toplevel_consts_6_filename._ascii.ob_base,
+ .co_name = & const_str__get_spec._ascii.ob_base,
+ .co_qualname = & importlib__bootstrap_external_toplevel_consts_72_consts_4_qualname._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_external_toplevel_consts_72_consts_4_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x02\x00\x7c\x01\x7c\x02\x7c\x03\xab\x02\x00\x00\x00\x00\x00\x00\x7d\x06\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x02\x7c\x03\x7c\x06\x7c\x04\xac\x01\xab\x04\x00\x00\x00\x00\x00\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[112];
+ }
+importlib__bootstrap_external_toplevel_consts_72_consts_6_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 111,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x54\x72\x79\x20\x74\x6f\x20\x66\x69\x6e\x64\x20\x61\x20\x73\x70\x65\x63\x20\x66\x6f\x72\x20\x74\x68\x65\x20\x73\x70\x65\x63\x69\x66\x69\x65\x64\x20\x6d\x6f\x64\x75\x6c\x65\x2e\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x52\x65\x74\x75\x72\x6e\x73\x20\x74\x68\x65\x20\x6d\x61\x74\x63\x68\x69\x6e\x67\x20\x73\x70\x65\x63\x2c\x20\x6f\x72\x20\x4e\x6f\x6e\x65\x20\x69\x66\x20\x6e\x6f\x74\x20\x66\x6f\x75\x6e\x64\x2e\x0a\x20\x20\x20\x20\x20\x20\x20\x20",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[10];
+ }
+importlib__bootstrap_external_toplevel_consts_72_consts_6_consts_7 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 9,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "trying {}",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[26];
+ }
+importlib__bootstrap_external_toplevel_consts_72_consts_6_consts_9 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 25,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "possible namespace for {}",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[10];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_72_consts_6_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 10,
+ },
+ .ob_item = {
+ & importlib__bootstrap_external_toplevel_consts_72_consts_6_consts_0._ascii.ob_base,
+ Py_False,
+ &_Py_STR(dot),
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 2],
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + -1],
+ &_Py_ID(__init__),
+ Py_None,
+ & importlib__bootstrap_external_toplevel_consts_72_consts_6_consts_7._ascii.ob_base,
+ & importlib__bootstrap_toplevel_consts_24._object.ob_base.ob_base,
+ & importlib__bootstrap_external_toplevel_consts_72_consts_6_consts_9._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[12];
+ }
+const_str__fill_cache = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 11,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_fill_cache",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[23];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_72_consts_6_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 23,
+ },
+ .ob_item = {
+ & const_str_rpartition._ascii.ob_base,
+ & const_str__path_stat._ascii.ob_base,
+ &_Py_ID(path),
+ & const_str__os._ascii.ob_base,
+ & const_str_getcwd._ascii.ob_base,
+ & const_str_st_mtime._ascii.ob_base,
+ & const_str_OSError._ascii.ob_base,
+ & const_str__path_mtime._ascii.ob_base,
+ & const_str__fill_cache._ascii.ob_base,
+ & const_str__relax_case._ascii.ob_base,
+ & const_str__relaxed_path_cache._ascii.ob_base,
+ & const_str_lower._ascii.ob_base,
+ & const_str__path_cache._ascii.ob_base,
+ & const_str__path_join._ascii.ob_base,
+ & const_str__loaders._ascii.ob_base,
+ & const_str__path_isfile._ascii.ob_base,
+ & const_str__get_spec._ascii.ob_base,
+ & const_str__path_isdir._ascii.ob_base,
+ & const_str_ValueError._ascii.ob_base,
+ &_Py_ID(_bootstrap),
+ & const_str__verbose_message._ascii.ob_base,
+ & const_str_ModuleSpec._ascii.ob_base,
+ & const_str_submodule_search_locations._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[21];
+ }
+importlib__bootstrap_external_toplevel_consts_72_consts_6_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 20,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "FileFinder.find_spec",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[487];
+ }
+importlib__bootstrap_external_toplevel_consts_72_consts_6_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 486,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf0\x0a\x00\x18\x1d\x88\x0c\xd8\x16\x1e\xd7\x16\x29\xd1\x16\x29\xa8\x23\xd3\x16\x2e\xa8\x71\xd1\x16\x31\x88\x0b\xf0\x02\x03\x09\x17\xdc\x14\x1e\x98\x74\x9f\x79\x99\x79\xd2\x1f\x38\xac\x43\xaf\x4a\xa9\x4a\xab\x4c\xd3\x14\x39\xd7\x14\x42\xd1\x14\x42\x88\x45\xf0\x06\x00\x0c\x11\x90\x44\xd7\x14\x24\xd1\x14\x24\xd2\x0b\x24\xd8\x0c\x10\xd7\x0c\x1c\xd1\x0c\x1c\xd4\x0c\x1e\xd8\x1f\x24\x88\x44\xd4\x0c\x1c\xe4\x0b\x16\x8c\x3d\xd8\x14\x18\xd7\x14\x2c\xd1\x14\x2c\x88\x45\xd8\x1b\x26\xd7\x1b\x2c\xd1\x1b\x2c\xd3\x1b\x2e\x89\x4c\xe0\x14\x18\xd7\x14\x24\xd1\x14\x24\x88\x45\xd8\x1b\x26\x88\x4c\xe0\x0b\x17\x98\x35\xd1\x0b\x20\xdc\x18\x22\xa0\x34\xa7\x39\xa1\x39\xa8\x6b\xd3\x18\x3a\x88\x49\xd8\x28\x2c\xaf\x0d\xa9\x0d\xf2\x00\x08\x0d\x36\xd1\x10\x24\x90\x06\x98\x0c\xd8\x20\x2a\xa8\x56\xd1\x20\x33\x90\x0d\xdc\x1c\x26\xa0\x79\xb0\x2d\xd3\x1c\x40\x90\x09\xdc\x13\x1f\xa0\x09\xd5\x13\x2a\xd8\x1b\x1f\x9f\x3e\x99\x3e\xa8\x2c\xb8\x08\xc0\x29\xc8\x69\xc8\x5b\xd0\x5a\x60\xd3\x1b\x61\xd2\x14\x61\xf0\x09\x08\x0d\x36\xf4\x10\x00\x20\x2b\xa8\x39\xd3\x1f\x35\x90\x0c\xe0\x24\x28\xa7\x4d\xa1\x4d\xf2\x00\x09\x09\x38\xd1\x0c\x20\x88\x46\x90\x4c\xf0\x02\x03\x0d\x1c\xdc\x1c\x26\xa0\x74\xa7\x79\xa1\x79\xb0\x2b\xc0\x06\xd1\x32\x46\xd3\x1c\x47\x90\x09\xf4\x06\x00\x0d\x17\xd7\x0c\x27\xd1\x0c\x27\xa8\x0b\xb0\x59\xc8\x21\xd0\x0c\x27\xd4\x0c\x4c\xd8\x0f\x1b\x98\x66\xd1\x0f\x24\xa8\x05\xd2\x0f\x2d\xdc\x13\x1f\xa0\x09\xd5\x13\x2a\xd8\x1b\x1f\x9f\x3e\x99\x3e\xa8\x2c\xb8\x08\xc0\x29\xd8\x2a\x2e\xb0\x06\xf3\x03\x01\x1c\x38\xf2\x00\x01\x15\x38\xf0\x11\x09\x09\x38\xf1\x14\x00\x0c\x18\xdc\x0c\x16\xd7\x0c\x27\xd1\x0c\x27\xd0\x28\x43\xc0\x59\xd4\x0c\x4f\xdc\x13\x1d\xd7\x13\x28\xd1\x13\x28\xa8\x18\xb0\x34\xd3\x13\x38\x88\x44\xd8\x2f\x38\xa8\x6b\x88\x44\xd4\x0c\x2b\xd8\x13\x17\x88\x4b\xd8\x0f\x13\xf8\xf4\x51\x01\x00\x10\x17\xf2\x00\x01\x09\x17\xd8\x14\x16\x8b\x45\xf0\x03\x01\x09\x17\xfb\xf4\x38\x00\x14\x1e\xf2\x00\x01\x0d\x1c\xda\x17\x1b\xf0\x03\x01\x0d\x1c\xfa",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[36];
+ }
+importlib__bootstrap_external_toplevel_consts_72_consts_6_exceptiontable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 35,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x98\x35\x46\x3e\x00\xc4\x28\x19\x47\x10\x02\xc6\x3e\x0b\x47\x0d\x03\xc7\x0c\x01\x47\x0d\x03\xc7\x10\x09\x47\x1d\x05\xc7\x1c\x01\x47\x1d\x05",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[13];
+ }
+const_str_is_namespace = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 12,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "is_namespace",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[12];
+ }
+const_str_tail_module = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 11,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "tail_module",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[6];
+ }
+const_str_cache = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 5,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "cache",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[13];
+ }
+const_str_cache_module = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 12,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "cache_module",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[10];
+ }
+const_str_base_path = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 9,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "base_path",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[14];
+ }
+const_str_init_filename = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 13,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "init_filename",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[10];
+ }
+const_str_full_path = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 9,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "full_path",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[14];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_72_consts_6_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 14,
+ },
+ .ob_item = {
+ &_Py_ID(self),
+ & const_str_fullname._ascii.ob_base,
+ &_Py_ID(target),
+ & const_str_is_namespace._ascii.ob_base,
+ & const_str_tail_module._ascii.ob_base,
+ & const_str_mtime._ascii.ob_base,
+ & const_str_cache._ascii.ob_base,
+ & const_str_cache_module._ascii.ob_base,
+ & const_str_base_path._ascii.ob_base,
+ & const_str_suffix._ascii.ob_base,
+ & const_str_loader_class._ascii.ob_base,
+ & const_str_init_filename._ascii.ob_base,
+ & const_str_full_path._ascii.ob_base,
+ & const_str_spec._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[15];
+ }
+importlib__bootstrap_external_toplevel_consts_72_consts_6_localspluskinds = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 14,
+ },
+ .ob_shash = -1,
+ .ob_sval = " ",
+};
+static
+ struct _PyCode_DEF(960)
+importlib__bootstrap_external_toplevel_consts_72_consts_6 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 480,
+ },
+ .co_consts = & importlib__bootstrap_external_toplevel_consts_72_consts_6_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_external_toplevel_consts_72_consts_6_names._object.ob_base.ob_base,
+ .co_exceptiontable = & importlib__bootstrap_external_toplevel_consts_72_consts_6_exceptiontable.ob_base.ob_base,
+ .co_flags = 3,
+ .co_argcount = 3,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 22 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 8,
+ .co_firstlineno = 1590,
+ .co_nlocalsplus = 14,
+ .co_nlocals = 14,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 210,
+ .co_localsplusnames = & importlib__bootstrap_external_toplevel_consts_72_consts_6_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_external_toplevel_consts_72_consts_6_localspluskinds.ob_base.ob_base,
+ .co_filename = & importlib__bootstrap_external_toplevel_consts_6_filename._ascii.ob_base,
+ .co_name = & const_str_find_spec._ascii.ob_base,
+ .co_qualname = & importlib__bootstrap_external_toplevel_consts_72_consts_6_qualname._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_external_toplevel_consts_72_consts_6_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x64\x01\x7d\x03\x7c\x01\x6a\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x02\xab\x01\x00\x00\x00\x00\x00\x00\x64\x03\x19\x00\x00\x00\x7d\x04\x09\x00\x74\x03\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x6a\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x78\x01\x73\x14\x01\x00\x74\x07\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x6a\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7d\x05\x7c\x05\x7c\x00\x6a\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6b\x37\x00\x00\x72\x17\x7c\x00\x6a\x11\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x01\x00\x7c\x05\x7c\x00\x5f\x07\x00\x00\x00\x00\x00\x00\x00\x00\x74\x13\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x72\x1d\x7c\x00\x6a\x14\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7d\x06\x7c\x04\x6a\x17\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x7d\x07\x6e\x0e\x7c\x00\x6a\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7d\x06\x7c\x04\x7d\x07\x7c\x07\x7c\x06\x76\x00\x72\x69\x74\x1b\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x6a\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x04\xab\x02\x00\x00\x00\x00\x00\x00\x7d\x08\x7c\x00\x6a\x1c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x00\x5d\x39\x00\x00\x5c\x02\x00\x00\x7d\x09\x7d\x0a\x64\x05\x7c\x09\x7a\x00\x00\x00\x7d\x0b\x74\x1b\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x08\x7c\x0b\xab\x02\x00\x00\x00\x00\x00\x00\x7d\x0c\x74\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x0c\xab\x01\x00\x00\x00\x00\x00\x00\x73\x01\x8c\x23\x7c\x00\x6a\x21\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x0a\x7c\x01\x7c\x0c\x7c\x08\x67\x01\x7c\x02\xab\x05\x00\x00\x00\x00\x00\x00\x63\x02\x01\x00\x53\x00\x04\x00\x74\x23\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x08\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x03\x7c\x00\x6a\x1c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x00\x5d\x61\x00\x00\x5c\x02\x00\x00\x7d\x09\x7d\x0a\x09\x00\x74\x1b\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x6a\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x04\x7c\x09\x7a\x00\x00\x00\xab\x02\x00\x00\x00\x00\x00\x00\x7d\x0c\x74\x26\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x29\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x07\x7c\x0c\x64\x03\xac\x08\xab\x03\x00\x00\x00\x00\x00\x00\x01\x00\x7c\x07\x7c\x09\x7a\x00\x00\x00\x7c\x06\x76\x00\x73\x01\x8c\x40\x74\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x0c\xab\x01\x00\x00\x00\x00\x00\x00\x73\x01\x8c\x4c\x7c\x00\x6a\x21\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x0a\x7c\x01\x7c\x0c\x64\x06\x7c\x02\xab\x05\x00\x00\x00\x00\x00\x00\x63\x02\x01\x00\x53\x00\x04\x00\x7c\x03\x72\x36\x74\x26\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x29\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x09\x7f\x08\xab\x02\x00\x00\x00\x00\x00\x00\x01\x00\x74\x26\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x2b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x64\x06\xab\x02\x00\x00\x00\x00\x00\x00\x7d\x0d\x7c\x08\x67\x01\x7c\x0d\x5f\x16\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x0d\x53\x00\x79\x06\x23\x00\x74\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x72\x06\x01\x00\x64\x04\x7d\x05\x59\x00\x90\x01\x8c\x7f\x77\x00\x78\x03\x59\x00\x77\x01\x23\x00\x74\x24\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x72\x04\x01\x00\x59\x00\x01\x00\x79\x06\x77\x00\x78\x03\x59\x00\x77\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[69];
+ }
+importlib__bootstrap_external_toplevel_consts_72_consts_7_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 68,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Fill the cache of potential modules and packages for this directory.",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[4];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_72_consts_7_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_item = {
+ & importlib__bootstrap_external_toplevel_consts_72_consts_7_consts_0._ascii.ob_base,
+ & const_str_win._ascii.ob_base,
+ &_Py_STR(dot),
+ Py_None,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[8];
+ }
+const_str_listdir = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 7,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "listdir",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[16];
+ }
+const_str_PermissionError = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 15,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "PermissionError",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[19];
+ }
+const_str_NotADirectoryError = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 18,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "NotADirectoryError",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[17];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_72_consts_7_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 17,
+ },
+ .ob_item = {
+ &_Py_ID(path),
+ & const_str__os._ascii.ob_base,
+ & const_str_listdir._ascii.ob_base,
+ & const_str_getcwd._ascii.ob_base,
+ & const_str_FileNotFoundError._ascii.ob_base,
+ & const_str_PermissionError._ascii.ob_base,
+ & const_str_NotADirectoryError._ascii.ob_base,
+ & const_str_sys._ascii.ob_base,
+ & const_str_platform._ascii.ob_base,
+ & const_str_startswith._ascii.ob_base,
+ & const_str_set._ascii.ob_base,
+ & const_str__path_cache._ascii.ob_base,
+ & const_str_partition._ascii.ob_base,
+ & const_str_lower._ascii.ob_base,
+ &_Py_ID(add),
+ & const_str__CASE_INSENSITIVE_PLATFORMS._ascii.ob_base,
+ & const_str__relaxed_path_cache._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[23];
+ }
+importlib__bootstrap_external_toplevel_consts_72_consts_7_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 22,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "FileFinder._fill_cache",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[262];
+ }
+importlib__bootstrap_external_toplevel_consts_72_consts_7_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 261,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xe0\x0f\x13\x8f\x79\x89\x79\x88\x04\xf0\x02\x05\x09\x1a\xdc\x17\x1a\x97\x7b\x91\x7b\xa0\x34\xd2\x23\x37\xac\x33\xaf\x3a\xa9\x3a\xab\x3c\xd3\x17\x38\x88\x48\xf4\x0e\x00\x10\x13\x8f\x7c\x89\x7c\xd7\x0f\x26\xd1\x0f\x26\xa0\x75\xd4\x0f\x2d\xdc\x1f\x22\xa0\x38\x9b\x7d\x88\x44\xd5\x0c\x1c\xf4\x0e\x00\x25\x28\xa3\x45\xd0\x0c\x21\xd8\x18\x20\xf2\x00\x06\x0d\x34\x90\x04\xd8\x24\x28\xa7\x4e\xa1\x4e\xb0\x33\xd3\x24\x37\xd1\x10\x21\x90\x04\x90\x63\x98\x36\xd9\x13\x16\xd8\x22\x26\xa0\x16\xa0\x71\xa8\x16\xaf\x1c\xa9\x1c\xab\x1e\xd0\x28\x38\xd0\x1f\x39\x91\x48\xe0\x1f\x23\x90\x48\xd8\x10\x25\xd7\x10\x29\xd1\x10\x29\xa8\x28\xd5\x10\x33\xf0\x0d\x06\x0d\x34\xf0\x0e\x00\x20\x35\x88\x44\xd4\x0c\x1c\xdc\x0b\x0e\x8f\x3c\x89\x3c\xd7\x0b\x22\xd1\x0b\x22\xd4\x23\x3e\xd4\x0b\x3f\xd8\x3d\x45\xd6\x27\x46\xb0\x72\xa8\x02\xaf\x08\xa9\x08\xad\x0a\xd2\x27\x46\x88\x44\xd5\x0c\x24\xf0\x03\x00\x0c\x40\x01\xf8\xf4\x2f\x00\x11\x22\xa4\x3f\xd4\x34\x46\xd0\x0f\x47\xf2\x00\x03\x09\x1a\xf0\x06\x00\x18\x1a\x8a\x48\xf0\x07\x03\x09\x1a\xfc\xf2\x30\x00\x28\x47\x01",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[24];
+ }
+importlib__bootstrap_external_toplevel_consts_72_consts_7_exceptiontable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 23,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x8e\x2b\x44\x09\x00\xc3\x28\x17\x44\x25\x04\xc4\x09\x16\x44\x22\x03\xc4\x21\x01\x44\x22\x03",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[9];
+ }
+const_str_contents = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 8,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "contents",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[22];
+ }
+const_str_lower_suffix_contents = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 21,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "lower_suffix_contents",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[9];
+ }
+const_str_new_name = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 8,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "new_name",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[3];
+ }
+const_str_fn = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 2,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "fn",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[10];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_72_consts_7_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 10,
+ },
+ .ob_item = {
+ &_Py_ID(self),
+ &_Py_ID(path),
+ & const_str_contents._ascii.ob_base,
+ & const_str_lower_suffix_contents._ascii.ob_base,
+ &_Py_ID(item),
+ &_Py_ID(name),
+ & const_str_dot._ascii.ob_base,
+ & const_str_suffix._ascii.ob_base,
+ & const_str_new_name._ascii.ob_base,
+ & const_str_fn._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(596)
+importlib__bootstrap_external_toplevel_consts_72_consts_7 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 298,
+ },
+ .co_consts = & importlib__bootstrap_external_toplevel_consts_72_consts_7_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_external_toplevel_consts_72_consts_7_names._object.ob_base.ob_base,
+ .co_exceptiontable = & importlib__bootstrap_external_toplevel_consts_72_consts_7_exceptiontable.ob_base.ob_base,
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 15 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 5,
+ .co_firstlineno = 1641,
+ .co_nlocalsplus = 10,
+ .co_nlocals = 10,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 211,
+ .co_localsplusnames = & importlib__bootstrap_external_toplevel_consts_72_consts_7_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_46_consts_3_localspluskinds.ob_base.ob_base,
+ .co_filename = & importlib__bootstrap_external_toplevel_consts_6_filename._ascii.ob_base,
+ .co_name = & const_str__fill_cache._ascii.ob_base,
+ .co_qualname = & importlib__bootstrap_external_toplevel_consts_72_consts_7_qualname._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_external_toplevel_consts_72_consts_7_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7d\x01\x09\x00\x74\x03\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x78\x01\x73\x14\x01\x00\x74\x03\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x02\x74\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x01\xab\x01\x00\x00\x00\x00\x00\x00\x73\x11\x74\x15\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x02\xab\x01\x00\x00\x00\x00\x00\x00\x7c\x00\x5f\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x6e\x58\x74\x15\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x7d\x03\x7c\x02\x44\x00\x5d\x42\x00\x00\x7d\x04\x7c\x04\x6a\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x02\xab\x01\x00\x00\x00\x00\x00\x00\x5c\x03\x00\x00\x7d\x05\x7d\x06\x7d\x07\x7c\x06\x72\x16\x7c\x05\x9b\x00\x64\x02\x7c\x07\x6a\x1b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x9b\x00\x9d\x03\x7d\x08\x6e\x02\x7c\x05\x7d\x08\x7c\x03\x6a\x1d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x08\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x8c\x44\x04\x00\x7c\x03\x7c\x00\x5f\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x74\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x74\x1e\x00\x00\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x72\x24\x7c\x02\x44\x00\x8f\x09\x63\x02\x68\x00\x63\x02\x5d\x12\x00\x00\x7d\x09\x7c\x09\x6a\x1b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x92\x02\x8c\x14\x04\x00\x63\x02\x7d\x09\x7c\x00\x5f\x10\x00\x00\x00\x00\x00\x00\x00\x00\x79\x03\x79\x03\x23\x00\x74\x08\x00\x00\x00\x00\x00\x00\x00\x00\x74\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x74\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x66\x03\x24\x00\x72\x05\x01\x00\x67\x00\x7d\x02\x59\x00\x8c\xe8\x77\x00\x78\x03\x59\x00\x77\x01\x63\x02\x01\x00\x63\x02\x7d\x09\x77\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[277];
+ }
+importlib__bootstrap_external_toplevel_consts_72_consts_8_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 276,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x41\x20\x63\x6c\x61\x73\x73\x20\x6d\x65\x74\x68\x6f\x64\x20\x77\x68\x69\x63\x68\x20\x72\x65\x74\x75\x72\x6e\x73\x20\x61\x20\x63\x6c\x6f\x73\x75\x72\x65\x20\x74\x6f\x20\x75\x73\x65\x20\x6f\x6e\x20\x73\x79\x73\x2e\x70\x61\x74\x68\x5f\x68\x6f\x6f\x6b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x77\x68\x69\x63\x68\x20\x77\x69\x6c\x6c\x20\x72\x65\x74\x75\x72\x6e\x20\x61\x6e\x20\x69\x6e\x73\x74\x61\x6e\x63\x65\x20\x75\x73\x69\x6e\x67\x20\x74\x68\x65\x20\x73\x70\x65\x63\x69\x66\x69\x65\x64\x20\x6c\x6f\x61\x64\x65\x72\x73\x20\x61\x6e\x64\x20\x74\x68\x65\x20\x70\x61\x74\x68\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x63\x61\x6c\x6c\x65\x64\x20\x6f\x6e\x20\x74\x68\x65\x20\x63\x6c\x6f\x73\x75\x72\x65\x2e\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x49\x66\x20\x74\x68\x65\x20\x70\x61\x74\x68\x20\x63\x61\x6c\x6c\x65\x64\x20\x6f\x6e\x20\x74\x68\x65\x20\x63\x6c\x6f\x73\x75\x72\x65\x20\x69\x73\x20\x6e\x6f\x74\x20\x61\x20\x64\x69\x72\x65\x63\x74\x6f\x72\x79\x2c\x20\x49\x6d\x70\x6f\x72\x74\x45\x72\x72\x6f\x72\x20\x69\x73\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x72\x61\x69\x73\x65\x64\x2e\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[46];
+ }
+importlib__bootstrap_external_toplevel_consts_72_consts_8_consts_1_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 45,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Path hook for importlib.machinery.FileFinder.",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[31];
+ }
+importlib__bootstrap_external_toplevel_consts_72_consts_8_consts_1_consts_1 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 30,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "only directories are supported",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_72_consts_8_consts_1_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ & importlib__bootstrap_external_toplevel_consts_72_consts_8_consts_1_consts_0._ascii.ob_base,
+ & importlib__bootstrap_external_toplevel_consts_72_consts_8_consts_1_consts_1._ascii.ob_base,
+ & importlib__bootstrap_external_toplevel_consts_18_localsplusnames._object.ob_base.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_72_consts_8_consts_1_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & const_str__path_isdir._ascii.ob_base,
+ & const_str_ImportError._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[25];
+ }
+const_str_path_hook_for_FileFinder = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 24,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "path_hook_for_FileFinder",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[55];
+ }
+importlib__bootstrap_external_toplevel_consts_72_consts_8_consts_1_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 54,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "FileFinder.path_hook.<locals>.path_hook_for_FileFinder",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[42];
+ }
+importlib__bootstrap_external_toplevel_consts_72_consts_8_consts_1_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 41,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\xf8\x80\x00\xe4\x13\x1e\x98\x74\xd4\x13\x24\xdc\x16\x21\xd0\x22\x42\xc8\x14\xd4\x16\x4e\xd0\x10\x4e\xd9\x13\x16\x90\x74\xd0\x13\x2d\x98\x6e\xd2\x13\x2d\xd0\x0c\x2d",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_72_consts_8_consts_1_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ &_Py_ID(path),
+ & const_str_cls._ascii.ob_base,
+ & const_str_loader_details._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[4];
+ }
+importlib__bootstrap_external_toplevel_consts_72_consts_8_consts_1_localspluskinds = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x20\x80\x80",
+};
+static
+ struct _PyCode_DEF(70)
+importlib__bootstrap_external_toplevel_consts_72_consts_8_consts_1 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 35,
+ },
+ .co_consts = & importlib__bootstrap_external_toplevel_consts_72_consts_8_consts_1_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_external_toplevel_consts_72_consts_8_consts_1_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 19,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 7 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 1682,
+ .co_nlocalsplus = 3,
+ .co_nlocals = 1,
+ .co_ncellvars = 0,
+ .co_nfreevars = 2,
+ .co_version = 212,
+ .co_localsplusnames = & importlib__bootstrap_external_toplevel_consts_72_consts_8_consts_1_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_external_toplevel_consts_72_consts_8_consts_1_localspluskinds.ob_base.ob_base,
+ .co_filename = & importlib__bootstrap_external_toplevel_consts_6_filename._ascii.ob_base,
+ .co_name = & const_str_path_hook_for_FileFinder._ascii.ob_base,
+ .co_qualname = & importlib__bootstrap_external_toplevel_consts_72_consts_8_consts_1_qualname._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_external_toplevel_consts_72_consts_8_consts_1_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x95\x02\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x73\x0d\x74\x03\x00\x00\x00\x00\x00\x00\x00\x00\x64\x01\x7c\x00\xac\x02\xab\x02\x00\x00\x00\x00\x00\x00\x82\x01\x02\x00\x89\x01\x7c\x00\x67\x01\x89\x02\xa2\x01\xad\x06\x8e\x00\x53\x00",
+ ._co_firsttraceable = 1,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_72_consts_8_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & importlib__bootstrap_external_toplevel_consts_72_consts_8_consts_0._ascii.ob_base,
+ & importlib__bootstrap_external_toplevel_consts_72_consts_8_consts_1.ob_base.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[10];
+ }
+const_str_path_hook = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 9,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "path_hook",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[21];
+ }
+importlib__bootstrap_external_toplevel_consts_72_consts_8_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 20,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "FileFinder.path_hook",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[17];
+ }
+importlib__bootstrap_external_toplevel_consts_72_consts_8_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 16,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\xf9\x80\x00\xf5\x14\x04\x09\x2e\xf0\x0c\x00\x10\x28\xd0\x08\x27",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_72_consts_8_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ & const_str_cls._ascii.ob_base,
+ & const_str_loader_details._ascii.ob_base,
+ & const_str_path_hook_for_FileFinder._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[4];
+ }
+importlib__bootstrap_external_toplevel_consts_72_consts_8_localspluskinds = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_shash = -1,
+ .ob_sval = "`` ",
+};
+static
+ struct _PyCode_DEF(22)
+importlib__bootstrap_external_toplevel_consts_72_consts_8 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 11,
+ },
+ .co_consts = & importlib__bootstrap_external_toplevel_consts_72_consts_8_consts._object.ob_base.ob_base,
+ .co_names = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 7,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 5 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 2,
+ .co_firstlineno = 1672,
+ .co_nlocalsplus = 3,
+ .co_nlocals = 3,
+ .co_ncellvars = 2,
+ .co_nfreevars = 0,
+ .co_version = 213,
+ .co_localsplusnames = & importlib__bootstrap_external_toplevel_consts_72_consts_8_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_external_toplevel_consts_72_consts_8_localspluskinds.ob_base.ob_base,
+ .co_filename = & importlib__bootstrap_external_toplevel_consts_6_filename._ascii.ob_base,
+ .co_name = & const_str_path_hook._ascii.ob_base,
+ .co_qualname = & importlib__bootstrap_external_toplevel_consts_72_consts_8_qualname._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_external_toplevel_consts_72_consts_8_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x87\x00\x87\x01\x97\x00\x88\x00\x88\x01\x66\x02\x64\x01\x84\x08\x7d\x02\x7c\x02\x53\x00",
+ ._co_firsttraceable = 2,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[12];
+ }
+importlib__bootstrap_external_toplevel_consts_72_consts_9_consts_1 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 11,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "FileFinder(",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_72_consts_9_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ Py_None,
+ & importlib__bootstrap_external_toplevel_consts_72_consts_9_consts_1._ascii.ob_base,
+ (PyObject *)&_Py_SINGLETON(strings).ascii[41],
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[20];
+ }
+importlib__bootstrap_external_toplevel_consts_72_consts_9_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 19,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "FileFinder.__repr__",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[22];
+ }
+importlib__bootstrap_external_toplevel_consts_72_consts_9_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 21,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xd8\x11\x1c\x98\x54\x9f\x59\x99\x59\x98\x4d\xa8\x11\xd0\x0f\x2b\xd0\x08\x2b",
+};
+static
+ struct _PyCode_DEF(34)
+importlib__bootstrap_external_toplevel_consts_72_consts_9 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 17,
+ },
+ .co_consts = & importlib__bootstrap_external_toplevel_consts_72_consts_9_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_external_toplevel_consts_18_localsplusnames._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 4 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 3,
+ .co_firstlineno = 1690,
+ .co_nlocalsplus = 1,
+ .co_nlocals = 1,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 214,
+ .co_localsplusnames = & importlib__bootstrap_toplevel_consts_7_consts_2_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_characters[32]),
+ .co_filename = & importlib__bootstrap_external_toplevel_consts_6_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__repr__),
+ .co_qualname = & importlib__bootstrap_external_toplevel_consts_72_consts_9_qualname._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_external_toplevel_consts_72_consts_9_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x64\x01\x7c\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9b\x02\x64\x02\x9d\x03\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[11];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_72_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 11,
+ },
+ .ob_item = {
+ & const_str_FileFinder._ascii.ob_base,
+ & importlib__bootstrap_external_toplevel_consts_72_consts_1._ascii.ob_base,
+ & importlib__bootstrap_external_toplevel_consts_72_consts_2.ob_base.ob_base,
+ & importlib__bootstrap_external_toplevel_consts_72_consts_3.ob_base.ob_base,
+ & importlib__bootstrap_external_toplevel_consts_72_consts_4.ob_base.ob_base,
+ Py_None,
+ & importlib__bootstrap_external_toplevel_consts_72_consts_6.ob_base.ob_base,
+ & importlib__bootstrap_external_toplevel_consts_72_consts_7.ob_base.ob_base,
+ & importlib__bootstrap_external_toplevel_consts_72_consts_8.ob_base.ob_base,
+ & importlib__bootstrap_external_toplevel_consts_72_consts_9.ob_base.ob_base,
+ & importlib__bootstrap_toplevel_consts_1_consts._object.ob_base.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[12];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_72_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 12,
+ },
+ .ob_item = {
+ &_Py_ID(__name__),
+ &_Py_ID(__module__),
+ &_Py_ID(__qualname__),
+ &_Py_ID(__doc__),
+ &_Py_ID(__init__),
+ & const_str_invalidate_caches._ascii.ob_base,
+ & const_str__get_spec._ascii.ob_base,
+ & const_str_find_spec._ascii.ob_base,
+ & const_str__fill_cache._ascii.ob_base,
+ & const_str_classmethod._ascii.ob_base,
+ & const_str_path_hook._ascii.ob_base,
+ &_Py_ID(__repr__),
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[61];
+ }
+importlib__bootstrap_external_toplevel_consts_72_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 60,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x84\x00\xf1\x04\x05\x05\x08\xf2\x0e\x0f\x05\x29\xf2\x22\x02\x05\x1e\xf2\x08\x03\x05\x48\x01\xf3\x0a\x31\x05\x14\xf2\x66\x01\x1d\x05\x47\x01\xf0\x3e\x00\x06\x11\xf1\x02\x0f\x05\x28\xf3\x03\x00\x06\x11\xf0\x02\x0f\x05\x28\xf3\x22\x01\x05\x2c",
+};
+static
+ struct _PyCode_DEF(70)
+importlib__bootstrap_external_toplevel_consts_72 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 35,
+ },
+ .co_consts = & importlib__bootstrap_external_toplevel_consts_72_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_external_toplevel_consts_72_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 0,
+ .co_argcount = 0,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 2 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 2,
+ .co_firstlineno = 1555,
+ .co_nlocalsplus = 0,
+ .co_nlocals = 0,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 215,
+ .co_localsplusnames = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_filename = & importlib__bootstrap_external_toplevel_consts_6_filename._ascii.ob_base,
+ .co_name = & const_str_FileFinder._ascii.ob_base,
+ .co_qualname = & const_str_FileFinder._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_external_toplevel_consts_72_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x65\x00\x5a\x01\x64\x00\x5a\x02\x64\x01\x5a\x03\x64\x02\x84\x00\x5a\x04\x64\x03\x84\x00\x5a\x05\x64\x04\x84\x00\x5a\x06\x64\x0a\x64\x06\x84\x01\x5a\x07\x64\x07\x84\x00\x5a\x08\x65\x09\x64\x08\x84\x00\xab\x00\x00\x00\x00\x00\x00\x00\x5a\x0a\x64\x09\x84\x00\x5a\x0b\x79\x05",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[6];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_74_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 6,
+ },
+ .ob_item = {
+ Py_None,
+ &_Py_ID(__loader__),
+ &_Py_ID(__spec__),
+ & importlib__bootstrap_toplevel_consts_33_consts_4._object.ob_base.ob_base,
+ &_Py_ID(__file__),
+ & const_str___cached__._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[10];
+ }
+const_str_Exception = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 9,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Exception",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[8];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_74_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 8,
+ },
+ .ob_item = {
+ &_Py_ID(get),
+ & const_str_loader._ascii.ob_base,
+ & const_str_SourcelessFileLoader._ascii.ob_base,
+ & const_str_SourceFileLoader._ascii.ob_base,
+ & const_str_spec_from_file_location._ascii.ob_base,
+ & const_str__path_abspath._ascii.ob_base,
+ & const_str_cached._ascii.ob_base,
+ & const_str_Exception._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[171];
+ }
+importlib__bootstrap_external_toplevel_consts_74_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 170,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xe0\x0d\x0f\x8f\x56\x89\x56\x90\x4c\xd3\x0d\x21\x80\x46\xd8\x0b\x0d\x8f\x36\x89\x36\x90\x2a\xd3\x0b\x1d\x80\x44\xd9\x0b\x11\xd9\x0b\x0f\xd8\x15\x19\x97\x5b\x91\x5b\x89\x46\xd8\x0d\x15\x98\x19\xd2\x0d\x22\xdc\x15\x29\xa8\x24\xb0\x08\xd3\x15\x39\x89\x46\xe4\x15\x25\xa0\x64\xa8\x48\xd3\x15\x35\x88\x46\xd9\x0b\x0f\xdc\x0f\x26\xa0\x74\xa8\x58\xb8\x66\xd4\x0f\x45\x88\x04\xd9\x0b\x14\xdc\x1a\x27\xa8\x09\xd3\x1a\x32\x88\x44\x8c\x4b\xf0\x02\x07\x05\x0d\xd8\x19\x1d\x88\x02\x88\x3a\x89\x0e\xd8\x1b\x21\x88\x02\x88\x3c\xd1\x08\x18\xd8\x19\x21\x88\x02\x88\x3a\x89\x0e\xd8\x1b\x24\x88\x02\x88\x3c\xd2\x08\x18\xf8\xdc\x0b\x14\xf2\x00\x02\x05\x0d\xe1\x08\x0c\xf0\x05\x02\x05\x0d\xfa",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[19];
+ }
+importlib__bootstrap_external_toplevel_consts_74_exceptiontable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 18,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\xc1\x35\x14\x42\x0a\x00\xc2\x0a\x09\x42\x16\x03\xc2\x15\x01\x42\x16\x03",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[9];
+ }
+const_str_pathname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 8,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "pathname",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[10];
+ }
+const_str_cpathname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 9,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "cpathname",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[6];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_74_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 6,
+ },
+ .ob_item = {
+ &_Py_ID(ns),
+ &_Py_ID(name),
+ & const_str_pathname._ascii.ob_base,
+ & const_str_cpathname._ascii.ob_base,
+ & const_str_loader._ascii.ob_base,
+ & const_str_spec._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(306)
+importlib__bootstrap_external_toplevel_consts_74 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 153,
+ },
+ .co_consts = & importlib__bootstrap_external_toplevel_consts_74_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_external_toplevel_consts_74_names._object.ob_base.ob_base,
+ .co_exceptiontable = & importlib__bootstrap_external_toplevel_consts_74_exceptiontable.ob_base.ob_base,
+ .co_flags = 3,
+ .co_argcount = 4,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 11 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 5,
+ .co_firstlineno = 1696,
+ .co_nlocalsplus = 6,
+ .co_nlocals = 6,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 216,
+ .co_localsplusnames = & importlib__bootstrap_external_toplevel_consts_74_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_30_consts_4_localspluskinds.ob_base.ob_base,
+ .co_filename = & importlib__bootstrap_external_toplevel_consts_6_filename._ascii.ob_base,
+ .co_name = &_Py_ID(_fix_up_module),
+ .co_qualname = &_Py_ID(_fix_up_module),
+ .co_linetable = & importlib__bootstrap_external_toplevel_consts_74_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x00\x6a\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x01\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x04\x7c\x00\x6a\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x02\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x05\x7c\x04\x73\x2d\x7c\x05\x72\x0d\x7c\x05\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7d\x04\x6e\x1e\x7c\x02\x7c\x03\x6b\x28\x00\x00\x72\x0d\x74\x05\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x7c\x02\xab\x02\x00\x00\x00\x00\x00\x00\x7d\x04\x6e\x0c\x74\x07\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x7c\x02\xab\x02\x00\x00\x00\x00\x00\x00\x7d\x04\x7c\x05\x73\x20\x74\x09\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x7c\x02\x7c\x04\xac\x03\xab\x03\x00\x00\x00\x00\x00\x00\x7d\x05\x7c\x03\x72\x10\x74\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x03\xab\x01\x00\x00\x00\x00\x00\x00\x7c\x05\x5f\x06\x00\x00\x00\x00\x00\x00\x00\x00\x09\x00\x7c\x05\x7c\x00\x64\x02\x3c\x00\x00\x00\x7c\x04\x7c\x00\x64\x01\x3c\x00\x00\x00\x7c\x02\x7c\x00\x64\x04\x3c\x00\x00\x00\x7c\x03\x7c\x00\x64\x05\x3c\x00\x00\x00\x79\x00\x23\x00\x74\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x72\x03\x01\x00\x59\x00\x79\x00\x77\x00\x78\x03\x59\x00\x77\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[96];
+ }
+importlib__bootstrap_external_toplevel_consts_75_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 95,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x52\x65\x74\x75\x72\x6e\x73\x20\x61\x20\x6c\x69\x73\x74\x20\x6f\x66\x20\x66\x69\x6c\x65\x2d\x62\x61\x73\x65\x64\x20\x6d\x6f\x64\x75\x6c\x65\x20\x6c\x6f\x61\x64\x65\x72\x73\x2e\x0a\x0a\x20\x20\x20\x20\x45\x61\x63\x68\x20\x69\x74\x65\x6d\x20\x69\x73\x20\x61\x20\x74\x75\x70\x6c\x65\x20\x28\x6c\x6f\x61\x64\x65\x72\x2c\x20\x73\x75\x66\x66\x69\x78\x65\x73\x29\x2e\x0a\x20\x20\x20\x20",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_75_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & importlib__bootstrap_external_toplevel_consts_75_consts_0._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[19];
+ }
+const_str_extension_suffixes = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 18,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "extension_suffixes",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[7];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_75_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 7,
+ },
+ .ob_item = {
+ & const_str_ExtensionFileLoader._ascii.ob_base,
+ & const_str__imp._ascii.ob_base,
+ & const_str_extension_suffixes._ascii.ob_base,
+ & const_str_SourceFileLoader._ascii.ob_base,
+ & const_str_SOURCE_SUFFIXES._ascii.ob_base,
+ & const_str_SourcelessFileLoader._ascii.ob_base,
+ & const_str_BYTECODE_SUFFIXES._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[58];
+ }
+importlib__bootstrap_external_toplevel_consts_75_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 57,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf4\x0a\x00\x12\x25\xa4\x64\xd7\x26\x3d\xd1\x26\x3d\xd3\x26\x3f\xd0\x11\x3f\x80\x4a\xdc\x0d\x1d\x9c\x7f\xd0\x0d\x2e\x80\x46\xdc\x0f\x23\xd4\x25\x36\xd0\x0f\x36\x80\x48\xd8\x0c\x16\x98\x06\xa0\x08\xd0\x0b\x29\xd0\x04\x29",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[11];
+ }
+const_str_extensions = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 10,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "extensions",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[9];
+ }
+const_str_bytecode = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 8,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "bytecode",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_75_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ & const_str_extensions._ascii.ob_base,
+ &_Py_ID(source),
+ & const_str_bytecode._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(112)
+importlib__bootstrap_external_toplevel_consts_75 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 56,
+ },
+ .co_consts = & importlib__bootstrap_external_toplevel_consts_75_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_external_toplevel_consts_75_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 0,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 6 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 3,
+ .co_firstlineno = 1721,
+ .co_nlocalsplus = 3,
+ .co_nlocals = 3,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 217,
+ .co_localsplusnames = & importlib__bootstrap_external_toplevel_consts_75_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_3_localspluskinds.ob_base.ob_base,
+ .co_filename = & importlib__bootstrap_external_toplevel_consts_6_filename._ascii.ob_base,
+ .co_name = & const_str__get_supported_file_loaders._ascii.ob_base,
+ .co_qualname = & const_str__get_supported_file_loaders._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_external_toplevel_consts_75_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x74\x03\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x66\x02\x7d\x00\x74\x06\x00\x00\x00\x00\x00\x00\x00\x00\x74\x08\x00\x00\x00\x00\x00\x00\x00\x00\x66\x02\x7d\x01\x74\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x74\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x66\x02\x7d\x02\x7c\x00\x7c\x01\x7c\x02\x67\x03\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_76_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ &_Py_ID(_bootstrap),
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[22];
+ }
+const_str__set_bootstrap_module = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 21,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_set_bootstrap_module",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[8];
+ }
+importlib__bootstrap_external_toplevel_consts_76_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 7,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xe0\x11\x22\x81\x4a",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[18];
+ }
+const_str__bootstrap_module = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 17,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_bootstrap_module",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_76_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & const_str__bootstrap_module._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(8)
+importlib__bootstrap_external_toplevel_consts_76 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 4,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_1_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_external_toplevel_consts_76_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 2 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 1,
+ .co_firstlineno = 1732,
+ .co_nlocalsplus = 1,
+ .co_nlocals = 1,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 218,
+ .co_localsplusnames = & importlib__bootstrap_external_toplevel_consts_76_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_characters[32]),
+ .co_filename = & importlib__bootstrap_external_toplevel_consts_6_filename._ascii.ob_base,
+ .co_name = & const_str__set_bootstrap_module._ascii.ob_base,
+ .co_qualname = & const_str__set_bootstrap_module._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_external_toplevel_consts_76_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x00\x61\x00\x79\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[42];
+ }
+importlib__bootstrap_external_toplevel_consts_77_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 41,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Install the path-based import components.",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_77_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & importlib__bootstrap_external_toplevel_consts_77_consts_0._ascii.ob_base,
+ Py_None,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[10];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_77_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 10,
+ },
+ .ob_item = {
+ & const_str__set_bootstrap_module._ascii.ob_base,
+ & const_str__get_supported_file_loaders._ascii.ob_base,
+ & const_str_sys._ascii.ob_base,
+ & const_str_path_hooks._ascii.ob_base,
+ &_Py_ID(extend),
+ & const_str_FileFinder._ascii.ob_base,
+ & const_str_path_hook._ascii.ob_base,
+ & const_str_meta_path._ascii.ob_base,
+ &_Py_ID(append),
+ & const_str_PathFinder._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[72];
+ }
+importlib__bootstrap_external_toplevel_consts_77_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 71,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xe4\x04\x19\xd0\x1a\x2b\xd4\x04\x2c\xdc\x18\x33\xd3\x18\x35\xd0\x04\x15\xdc\x04\x07\x87\x4e\x81\x4e\xd7\x04\x19\xd1\x04\x19\x9c\x3a\xd7\x1b\x2f\xd1\x1b\x2f\xd0\x31\x42\xd0\x1b\x43\xd0\x1a\x44\xd4\x04\x45\xdc\x04\x07\x87\x4d\x81\x4d\xd7\x04\x18\xd1\x04\x18\x9c\x1a\xd5\x04\x24",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[18];
+ }
+const_str_supported_loaders = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 17,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "supported_loaders",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_77_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & const_str__bootstrap_module._ascii.ob_base,
+ & const_str_supported_loaders._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(212)
+importlib__bootstrap_external_toplevel_consts_77 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 106,
+ },
+ .co_consts = & importlib__bootstrap_external_toplevel_consts_77_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_external_toplevel_consts_77_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 7 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 5,
+ .co_firstlineno = 1737,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 2,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 219,
+ .co_localsplusnames = & importlib__bootstrap_external_toplevel_consts_77_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_14_consts_2_localspluskinds.ob_base.ob_base,
+ .co_filename = & importlib__bootstrap_external_toplevel_consts_6_filename._ascii.ob_base,
+ .co_name = & const_str__install._ascii.ob_base,
+ .co_qualname = & const_str__install._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_external_toplevel_consts_77_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x74\x03\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x7d\x01\x74\x04\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x74\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x8e\x00\x67\x01\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x74\x04\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x11\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x74\x12\x00\x00\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x79\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_78 = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & const_int_438.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_80 = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ Py_None,
+ Py_None,
+ Py_None,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_81 = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 0],
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 0],
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts_82 = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ Py_True,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[83];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 83,
+ },
+ .ob_item = {
+ & importlib__bootstrap_external_toplevel_consts_0._ascii.ob_base,
+ Py_None,
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 0],
+ & const_str_win32._ascii.ob_base,
+ (PyObject *)&_Py_SINGLETON(strings).ascii[92],
+ (PyObject *)&_Py_SINGLETON(strings).ascii[47],
+ & importlib__bootstrap_external_toplevel_consts_6.ob_base.ob_base,
+ &_Py_STR(empty),
+ (PyObject *)&_Py_SINGLETON(strings).ascii[58],
+ & importlib__bootstrap_external_toplevel_consts_9._object.ob_base.ob_base,
+ & importlib__bootstrap_external_toplevel_consts_10._object.ob_base.ob_base,
+ & importlib__bootstrap_external_toplevel_consts_11.ob_base.ob_base,
+ & importlib__bootstrap_external_toplevel_consts_12.ob_base.ob_base,
+ & importlib__bootstrap_external_toplevel_consts_13.ob_base.ob_base,
+ & importlib__bootstrap_external_toplevel_consts_14.ob_base.ob_base,
+ & importlib__bootstrap_external_toplevel_consts_15.ob_base.ob_base,
+ & importlib__bootstrap_external_toplevel_consts_16.ob_base.ob_base,
+ & importlib__bootstrap_external_toplevel_consts_17.ob_base.ob_base,
+ & importlib__bootstrap_external_toplevel_consts_18.ob_base.ob_base,
+ & importlib__bootstrap_external_toplevel_consts_19.ob_base.ob_base,
+ & importlib__bootstrap_external_toplevel_consts_20.ob_base.ob_base,
+ & importlib__bootstrap_external_toplevel_consts_21.ob_base.ob_base,
+ & importlib__bootstrap_external_toplevel_consts_22.ob_base.ob_base,
+ & importlib__bootstrap_external_toplevel_consts_23.ob_base.ob_base,
+ & importlib__bootstrap_external_toplevel_consts_24.ob_base.ob_base,
+ & importlib__bootstrap_external_toplevel_consts_25.ob_base.ob_base,
+ & const_int_3531.ob_base,
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 2],
+ &_Py_ID(little),
+ & importlib__bootstrap_external_toplevel_consts_29.ob_base.ob_base,
+ & const_str___pycache__._ascii.ob_base,
+ & importlib__bootstrap_external_toplevel_consts_31._ascii.ob_base,
+ & importlib__bootstrap_toplevel_consts_46_consts_5_consts_12._ascii.ob_base,
+ & importlib__bootstrap_external_toplevel_consts_33._ascii.ob_base,
+ & importlib__bootstrap_external_toplevel_consts_34._ascii.ob_base,
+ & importlib__bootstrap_external_toplevel_consts_35._object.ob_base.ob_base,
+ & importlib__bootstrap_external_toplevel_consts_36.ob_base.ob_base,
+ & importlib__bootstrap_external_toplevel_consts_37.ob_base.ob_base,
+ & importlib__bootstrap_external_toplevel_consts_38.ob_base.ob_base,
+ & importlib__bootstrap_external_toplevel_consts_39.ob_base.ob_base,
+ & importlib__bootstrap_external_toplevel_consts_40.ob_base.ob_base,
+ & importlib__bootstrap_external_toplevel_consts_41.ob_base.ob_base,
+ & importlib__bootstrap_external_toplevel_consts_42.ob_base.ob_base,
+ & importlib__bootstrap_external_toplevel_consts_43.ob_base.ob_base,
+ & importlib__bootstrap_external_toplevel_consts_44.ob_base.ob_base,
+ & importlib__bootstrap_external_toplevel_consts_45.ob_base.ob_base,
+ & importlib__bootstrap_external_toplevel_consts_46.ob_base.ob_base,
+ & importlib__bootstrap_external_toplevel_consts_47.ob_base.ob_base,
+ & importlib__bootstrap_external_toplevel_consts_48.ob_base.ob_base,
+ & importlib__bootstrap_toplevel_consts_33_consts_5._object.ob_base.ob_base,
+ & importlib__bootstrap_external_toplevel_consts_50.ob_base.ob_base,
+ & importlib__bootstrap_external_toplevel_consts_51.ob_base.ob_base,
+ & importlib__bootstrap_external_toplevel_consts_52.ob_base.ob_base,
+ & const_str_WindowsRegistryFinder._ascii.ob_base,
+ & importlib__bootstrap_external_toplevel_consts_54.ob_base.ob_base,
+ & const_str__LoaderBasics._ascii.ob_base,
+ & importlib__bootstrap_external_toplevel_consts_56.ob_base.ob_base,
+ & const_str_SourceLoader._ascii.ob_base,
+ & importlib__bootstrap_external_toplevel_consts_58.ob_base.ob_base,
+ & const_str_FileLoader._ascii.ob_base,
+ & importlib__bootstrap_external_toplevel_consts_60.ob_base.ob_base,
+ & const_str_SourceFileLoader._ascii.ob_base,
+ & importlib__bootstrap_external_toplevel_consts_62.ob_base.ob_base,
+ & const_str_SourcelessFileLoader._ascii.ob_base,
+ & importlib__bootstrap_external_toplevel_consts_64.ob_base.ob_base,
+ & const_str_ExtensionFileLoader._ascii.ob_base,
+ & importlib__bootstrap_external_toplevel_consts_66.ob_base.ob_base,
+ & const_str__NamespacePath._ascii.ob_base,
+ & importlib__bootstrap_external_toplevel_consts_68.ob_base.ob_base,
+ & const_str_NamespaceLoader._ascii.ob_base,
+ & importlib__bootstrap_external_toplevel_consts_70.ob_base.ob_base,
+ & const_str_PathFinder._ascii.ob_base,
+ & importlib__bootstrap_external_toplevel_consts_72.ob_base.ob_base,
+ & const_str_FileFinder._ascii.ob_base,
+ & importlib__bootstrap_external_toplevel_consts_74.ob_base.ob_base,
+ & importlib__bootstrap_external_toplevel_consts_75.ob_base.ob_base,
+ & importlib__bootstrap_external_toplevel_consts_76.ob_base.ob_base,
+ & importlib__bootstrap_external_toplevel_consts_77.ob_base.ob_base,
+ & importlib__bootstrap_external_toplevel_consts_78._object.ob_base.ob_base,
+ & importlib__bootstrap_toplevel_consts_1_consts._object.ob_base.ob_base,
+ & importlib__bootstrap_external_toplevel_consts_80._object.ob_base.ob_base,
+ & importlib__bootstrap_external_toplevel_consts_81._object.ob_base.ob_base,
+ & importlib__bootstrap_external_toplevel_consts_82._object.ob_base.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[4];
+ }
+const_str_all = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 3,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "all",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[21];
+ }
+const_str__pathseps_with_colon = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 20,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_pathseps_with_colon",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[38];
+ }
+const_str__CASE_INSENSITIVE_PLATFORMS_BYTES_KEY = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 37,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_CASE_INSENSITIVE_PLATFORMS_BYTES_KEY",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[9];
+ }
+const_str___code__ = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 8,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "__code__",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[24];
+ }
+const_str_DEBUG_BYTECODE_SUFFIXES = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 23,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "DEBUG_BYTECODE_SUFFIXES",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[28];
+ }
+const_str_OPTIMIZED_BYTECODE_SUFFIXES = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 27,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "OPTIMIZED_BYTECODE_SUFFIXES",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[17];
+ }
+const_str__NamespaceLoader = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 16,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_NamespaceLoader",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[87];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 87,
+ },
+ .ob_item = {
+ &_Py_ID(__doc__),
+ &_Py_ID(_bootstrap),
+ & const_str__imp._ascii.ob_base,
+ &_Py_ID(_io),
+ & const_str_sys._ascii.ob_base,
+ & const_str__warnings._ascii.ob_base,
+ & const_str_marshal._ascii.ob_base,
+ & const_str_platform._ascii.ob_base,
+ & const_str__MS_WINDOWS._ascii.ob_base,
+ &_Py_ID(nt),
+ & const_str__os._ascii.ob_base,
+ & const_str_winreg._ascii.ob_base,
+ &_Py_ID(posix),
+ & const_str_path_separators._ascii.ob_base,
+ & const_str_all._ascii.ob_base,
+ & const_str_path_sep._ascii.ob_base,
+ & const_str_tuple._ascii.ob_base,
+ & const_str_path_sep_tuple._ascii.ob_base,
+ &_Py_ID(join),
+ & const_str__pathseps_with_colon._ascii.ob_base,
+ & const_str__CASE_INSENSITIVE_PLATFORMS_STR_KEY._ascii.ob_base,
+ & const_str__CASE_INSENSITIVE_PLATFORMS_BYTES_KEY._ascii.ob_base,
+ & const_str__CASE_INSENSITIVE_PLATFORMS._ascii.ob_base,
+ & const_str__make_relax_case._ascii.ob_base,
+ & const_str__relax_case._ascii.ob_base,
+ & const_str__pack_uint32._ascii.ob_base,
+ & const_str__unpack_uint32._ascii.ob_base,
+ & const_str__unpack_uint16._ascii.ob_base,
+ & const_str__path_join._ascii.ob_base,
+ & const_str__path_split._ascii.ob_base,
+ & const_str__path_stat._ascii.ob_base,
+ & const_str__path_is_mode_type._ascii.ob_base,
+ & const_str__path_isfile._ascii.ob_base,
+ & const_str__path_isdir._ascii.ob_base,
+ & const_str__path_isabs._ascii.ob_base,
+ & const_str__path_abspath._ascii.ob_base,
+ & const_str__write_atomic._ascii.ob_base,
+ &_Py_ID(type),
+ & const_str___code__._ascii.ob_base,
+ & const_str__code_type._ascii.ob_base,
+ & const_str_to_bytes._ascii.ob_base,
+ & const_str_MAGIC_NUMBER._ascii.ob_base,
+ & const_str_int._ascii.ob_base,
+ & const_str_from_bytes._ascii.ob_base,
+ & const_str__RAW_MAGIC_NUMBER._ascii.ob_base,
+ & const_str__PYCACHE._ascii.ob_base,
+ & const_str__OPT._ascii.ob_base,
+ & const_str_SOURCE_SUFFIXES._ascii.ob_base,
+ &_Py_ID(append),
+ & const_str_extension_suffixes._ascii.ob_base,
+ & const_str_EXTENSION_SUFFIXES._ascii.ob_base,
+ & const_str_BYTECODE_SUFFIXES._ascii.ob_base,
+ & const_str_DEBUG_BYTECODE_SUFFIXES._ascii.ob_base,
+ & const_str_OPTIMIZED_BYTECODE_SUFFIXES._ascii.ob_base,
+ & const_str_cache_from_source._ascii.ob_base,
+ & const_str_source_from_cache._ascii.ob_base,
+ &_Py_ID(_get_sourcefile),
+ & const_str__get_cached._ascii.ob_base,
+ & const_str__calc_mode._ascii.ob_base,
+ & const_str__check_name._ascii.ob_base,
+ & const_str__classify_pyc._ascii.ob_base,
+ & const_str__validate_timestamp_pyc._ascii.ob_base,
+ & const_str__validate_hash_pyc._ascii.ob_base,
+ & const_str__compile_bytecode._ascii.ob_base,
+ & const_str__code_to_timestamp_pyc._ascii.ob_base,
+ & const_str__code_to_hash_pyc._ascii.ob_base,
+ & const_str_decode_source._ascii.ob_base,
+ &_Py_ID(object),
+ & const_str__POPULATE._ascii.ob_base,
+ & const_str_spec_from_file_location._ascii.ob_base,
+ & const_str__bless_my_loader._ascii.ob_base,
+ & const_str_WindowsRegistryFinder._ascii.ob_base,
+ & const_str__LoaderBasics._ascii.ob_base,
+ & const_str_SourceLoader._ascii.ob_base,
+ & const_str_FileLoader._ascii.ob_base,
+ & const_str_SourceFileLoader._ascii.ob_base,
+ & const_str_SourcelessFileLoader._ascii.ob_base,
+ & const_str_ExtensionFileLoader._ascii.ob_base,
+ & const_str__NamespacePath._ascii.ob_base,
+ & const_str_NamespaceLoader._ascii.ob_base,
+ & const_str__NamespaceLoader._ascii.ob_base,
+ & const_str_PathFinder._ascii.ob_base,
+ & const_str_FileFinder._ascii.ob_base,
+ &_Py_ID(_fix_up_module),
+ & const_str__get_supported_file_loaders._ascii.ob_base,
+ & const_str__set_bootstrap_module._ascii.ob_base,
+ & const_str__install._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[704];
+ }
+importlib__bootstrap_external_toplevel_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 703,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\xf0\x03\x01\x01\x01\xf1\x02\x07\x01\x04\xf0\x2c\x00\x0e\x12\x80\x0a\xf3\x06\x00\x01\x0c\xdb\x00\x0a\xdb\x00\x0a\xdb\x00\x10\xdb\x00\x0e\xf0\x06\x00\x10\x13\x8f\x7c\x89\x7c\x98\x77\xd1\x0f\x26\x80\x0b\xd9\x03\x0e\xdb\x04\x14\xdc\x04\x11\xe3\x04\x17\xf1\x06\x00\x04\x0f\xd8\x17\x1b\x98\x53\x90\x6b\x81\x4f\xe0\x17\x1a\x90\x65\x80\x4f\xe1\x07\x0a\xd1\x0a\x34\xa0\x4f\xd4\x0a\x34\xd4\x07\x34\xd1\x00\x34\xd8\x0b\x1a\x98\x31\xd1\x0b\x1d\x80\x08\xd9\x11\x16\x90\x7f\xd3\x11\x27\x80\x0e\xd8\x12\x14\x97\x27\x91\x27\x98\x2f\xd3\x12\x2a\x80\x0f\xd8\x29\x38\xd6\x17\x39\xa0\x41\x98\x21\x98\x41\x98\x33\x9a\x07\xd2\x17\x39\xd0\x00\x14\xf0\x08\x00\x27\x2d\xd0\x00\x23\xd8\x28\x3a\xd0\x00\x25\xd8\x20\x45\xd8\x22\x45\xf1\x03\x01\x21\x46\x01\xd0\x00\x1b\xf2\x08\x0e\x01\x17\xf1\x20\x00\x0f\x1f\xd3\x0e\x20\x80\x0b\xf2\x06\x02\x01\x37\xf2\x0a\x03\x01\x2a\xf2\x0a\x03\x01\x2a\xf1\x0c\x00\x04\x0f\xf3\x02\x1b\x05\x2a\xf2\x3c\x03\x05\x3f\xf2\x0c\x05\x01\x22\xf2\x10\x07\x01\x1a\xf2\x14\x06\x01\x32\xf2\x12\x02\x01\x2e\xf2\x0a\x04\x01\x2e\xf1\x0e\x00\x04\x0f\xf3\x02\x05\x05\x52\x01\xf2\x10\x02\x05\x30\xf2\x0a\x07\x01\x14\xf3\x14\x13\x01\x0e\xf1\x2c\x00\x0e\x12\x90\x2d\xd7\x12\x28\xd1\x12\x28\xd3\x0d\x29\x80\x0a\xf0\x70\x07\x00\x11\x15\x8f\x7f\x89\x7f\x98\x71\xa0\x28\xd3\x0f\x2b\xa8\x67\xd1\x0f\x35\x80\x0c\xe0\x14\x17\x97\x4e\x91\x4e\xa0\x3c\xb0\x18\xd3\x14\x3a\xd0\x00\x11\xe0\x0b\x18\x80\x08\xd8\x07\x0d\x80\x04\xe0\x13\x18\x90\x27\x80\x0f\xd9\x03\x0e\xd8\x04\x13\xd7\x04\x1a\xd1\x04\x1a\x98\x36\xd4\x04\x22\xe0\x15\x2c\x90\x54\xd7\x15\x2c\xd1\x15\x2c\xd3\x15\x2e\xd0\x00\x12\xe0\x15\x1b\x90\x48\xd0\x00\x11\xe0\x38\x49\xd0\x00\x49\xd0\x00\x17\xd0\x1a\x35\xf0\x04\x43\x01\x01\x30\xc0\x14\xf4\x00\x43\x01\x01\x30\xf2\x4c\x02\x25\x01\x40\x01\xf2\x50\x01\x10\x01\x47\x01\xf2\x26\x09\x01\x14\xf2\x18\x09\x01\x10\xf2\x18\x1c\x01\x1f\xf2\x3e\x1e\x01\x11\xf2\x42\x01\x19\x01\x4c\x01\xf2\x38\x15\x01\x0a\xf3\x30\x0a\x01\x39\xf3\x1a\x07\x01\x10\xf3\x14\x08\x01\x10\xf2\x16\x09\x01\x44\x01\xf1\x1c\x00\x0d\x13\x8b\x48\x80\x09\xf0\x06\x43\x01\x01\x10\xb8\x34\xd8\x37\x40\xf4\x03\x43\x01\x01\x10\xf2\x4c\x02\x2d\x01\x17\xf7\x64\x01\x30\x01\x1c\xf1\x00\x30\x01\x1c\xf7\x66\x01\x1b\x01\x3c\xf1\x00\x1b\x01\x3c\xf4\x3c\x4e\x02\x01\x1b\x90\x3d\xf4\x00\x4e\x02\x01\x1b\xf7\x62\x04\x2f\x01\x20\xf1\x00\x2f\x01\x20\xf4\x64\x01\x2a\x01\x2d\x90\x7a\xa0\x3c\xf4\x00\x2a\x01\x2d\xf4\x5a\x01\x16\x01\x14\x98\x3a\xa0\x7d\xf4\x00\x16\x01\x14\xf4\x32\x32\x01\x19\x98\x2a\xa0\x6d\xf4\x00\x32\x01\x19\xf7\x6a\x01\x41\x01\x01\x20\xf1\x00\x41\x01\x01\x20\xf7\x4e\x02\x21\x01\x2b\xf1\x00\x21\x01\x2b\xf0\x4a\x01\x00\x14\x23\xd0\x00\x10\xf7\x0a\x76\x01\x01\x46\x01\xf1\x00\x76\x01\x01\x46\x01\xf7\x72\x03\x48\x02\x01\x2c\xf1\x00\x48\x02\x01\x2c\xf3\x5a\x04\x16\x01\x0d\xf2\x32\x08\x01\x2a\xf2\x16\x02\x01\x23\xf3\x0a\x05\x01\x25\xf9\xf2\x6f\x34\x00\x18\x3a",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[7];
+ }
+importlib__bootstrap_external_toplevel_exceptiontable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 6,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\xc1\x34\x0c\x47\x37\x04",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+importlib__bootstrap_external_toplevel_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ &_Py_ID(s),
+ },
+ },
+};
+static
+ struct _PyCode_DEF(1016)
+importlib__bootstrap_external_toplevel = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 508,
+ },
+ .co_consts = & importlib__bootstrap_external_toplevel_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_external_toplevel_names._object.ob_base.ob_base,
+ .co_exceptiontable = & importlib__bootstrap_external_toplevel_exceptiontable.ob_base.ob_base,
+ .co_flags = 0,
+ .co_argcount = 0,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 7 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 6,
+ .co_firstlineno = 1,
+ .co_nlocalsplus = 1,
+ .co_nlocals = 1,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 220,
+ .co_localsplusnames = & importlib__bootstrap_external_toplevel_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_characters[32]),
+ .co_filename = & importlib__bootstrap_external_toplevel_consts_6_filename._ascii.ob_base,
+ .co_name = &_Py_STR(anon_module),
+ .co_qualname = &_Py_STR(anon_module),
+ .co_linetable = & importlib__bootstrap_external_toplevel_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x64\x00\x5a\x00\x64\x01\x61\x01\x64\x02\x64\x01\x6c\x02\x5a\x02\x64\x02\x64\x01\x6c\x03\x5a\x03\x64\x02\x64\x01\x6c\x04\x5a\x04\x64\x02\x64\x01\x6c\x05\x5a\x05\x64\x02\x64\x01\x6c\x06\x5a\x06\x65\x04\x6a\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x03\x6b\x28\x00\x00\x5a\x08\x65\x08\x72\x09\x64\x02\x64\x01\x6c\x09\x5a\x0a\x64\x02\x64\x01\x6c\x0b\x5a\x0b\x6e\x04\x64\x02\x64\x01\x6c\x0c\x5a\x0a\x65\x08\x72\x05\x64\x04\x64\x05\x67\x02\x5a\x0d\x6e\x03\x64\x05\x67\x01\x5a\x0d\x02\x00\x65\x0e\x64\x06\x84\x00\x65\x0d\x44\x00\xab\x00\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x73\x02\x4a\x00\x82\x01\x65\x0d\x64\x02\x19\x00\x00\x00\x5a\x0f\x02\x00\x65\x10\x65\x0d\xab\x01\x00\x00\x00\x00\x00\x00\x5a\x11\x64\x07\x6a\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\x0d\xab\x01\x00\x00\x00\x00\x00\x00\x5a\x0d\x65\x0d\x44\x00\x8f\x00\x63\x02\x68\x00\x63\x02\x5d\x07\x00\x00\x7d\x00\x64\x08\x7c\x00\x9b\x00\x9d\x02\x92\x02\x8c\x09\x04\x00\x63\x02\x7d\x00\x5a\x13\x64\x09\x5a\x14\x64\x0a\x5a\x15\x65\x15\x65\x14\x7a\x00\x00\x00\x5a\x16\x64\x0b\x84\x00\x5a\x17\x02\x00\x65\x17\xab\x00\x00\x00\x00\x00\x00\x00\x5a\x18\x64\x0c\x84\x00\x5a\x19\x64\x0d\x84\x00\x5a\x1a\x64\x0e\x84\x00\x5a\x1b\x65\x08\x72\x04\x64\x0f\x84\x00\x5a\x1c\x6e\x03\x64\x10\x84\x00\x5a\x1c\x64\x11\x84\x00\x5a\x1d\x64\x12\x84\x00\x5a\x1e\x64\x13\x84\x00\x5a\x1f\x64\x14\x84\x00\x5a\x20\x64\x15\x84\x00\x5a\x21\x65\x08\x72\x04\x64\x16\x84\x00\x5a\x22\x6e\x03\x64\x17\x84\x00\x5a\x22\x64\x18\x84\x00\x5a\x23\x64\x4e\x64\x19\x84\x01\x5a\x24\x02\x00\x65\x25\x65\x24\x6a\x4c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x5a\x27\x64\x1a\x6a\x51\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x1b\x64\x1c\xab\x02\x00\x00\x00\x00\x00\x00\x64\x1d\x7a\x00\x00\x00\x5a\x29\x65\x2a\x6a\x57\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\x29\x64\x1c\xab\x02\x00\x00\x00\x00\x00\x00\x5a\x2c\x64\x1e\x5a\x2d\x64\x1f\x5a\x2e\x64\x20\x67\x01\x5a\x2f\x65\x08\x72\x11\x65\x2f\x6a\x61\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x21\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x02\x00\x65\x02\x6a\x62\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x5a\x32\x64\x22\x67\x01\x5a\x33\x65\x33\x78\x01\x5a\x34\x5a\x35\x64\x4f\x64\x01\x64\x23\x9c\x01\x64\x24\x84\x03\x5a\x36\x64\x25\x84\x00\x5a\x37\x64\x26\x84\x00\x5a\x38\x64\x27\x84\x00\x5a\x39\x64\x28\x84\x00\x5a\x3a\x64\x29\x84\x00\x5a\x3b\x64\x2a\x84\x00\x5a\x3c\x64\x2b\x84\x00\x5a\x3d\x64\x2c\x84\x00\x5a\x3e\x64\x50\x64\x2d\x84\x01\x5a\x3f\x64\x51\x64\x2e\x84\x01\x5a\x40\x64\x52\x64\x2f\x84\x01\x5a\x41\x64\x30\x84\x00\x5a\x42\x02\x00\x65\x43\xab\x00\x00\x00\x00\x00\x00\x00\x5a\x44\x64\x4f\x64\x01\x65\x44\x64\x31\x9c\x02\x64\x32\x84\x03\x5a\x45\x64\x33\x84\x00\x5a\x46\x02\x00\x47\x00\x64\x34\x84\x00\x64\x35\xab\x02\x00\x00\x00\x00\x00\x00\x5a\x47\x02\x00\x47\x00\x64\x36\x84\x00\x64\x37\xab\x02\x00\x00\x00\x00\x00\x00\x5a\x48\x02\x00\x47\x00\x64\x38\x84\x00\x64\x39\x65\x48\xab\x03\x00\x00\x00\x00\x00\x00\x5a\x49\x02\x00\x47\x00\x64\x3a\x84\x00\x64\x3b\xab\x02\x00\x00\x00\x00\x00\x00\x5a\x4a\x02\x00\x47\x00\x64\x3c\x84\x00\x64\x3d\x65\x4a\x65\x49\xab\x04\x00\x00\x00\x00\x00\x00\x5a\x4b\x02\x00\x47\x00\x64\x3e\x84\x00\x64\x3f\x65\x4a\x65\x48\xab\x04\x00\x00\x00\x00\x00\x00\x5a\x4c\x02\x00\x47\x00\x64\x40\x84\x00\x64\x41\x65\x4a\x65\x48\xab\x04\x00\x00\x00\x00\x00\x00\x5a\x4d\x02\x00\x47\x00\x64\x42\x84\x00\x64\x43\xab\x02\x00\x00\x00\x00\x00\x00\x5a\x4e\x02\x00\x47\x00\x64\x44\x84\x00\x64\x45\xab\x02\x00\x00\x00\x00\x00\x00\x5a\x4f\x65\x4f\x5a\x50\x02\x00\x47\x00\x64\x46\x84\x00\x64\x47\xab\x02\x00\x00\x00\x00\x00\x00\x5a\x51\x02\x00\x47\x00\x64\x48\x84\x00\x64\x49\xab\x02\x00\x00\x00\x00\x00\x00\x5a\x52\x64\x4f\x64\x4a\x84\x01\x5a\x53\x64\x4b\x84\x00\x5a\x54\x64\x4c\x84\x00\x5a\x55\x64\x4d\x84\x00\x5a\x56\x79\x01\x63\x02\x01\x00\x63\x02\x7d\x00\x77\x00",
+ ._co_firsttraceable = 0,
+};
+
+PyObject *
+_Py_get_importlib__bootstrap_external_toplevel(void)
+{
+ return Py_NewRef((PyObject *) &importlib__bootstrap_external_toplevel);
+}
+
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[593];
+ }
+zipimport_toplevel_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 592,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x7a\x69\x70\x69\x6d\x70\x6f\x72\x74\x20\x70\x72\x6f\x76\x69\x64\x65\x73\x20\x73\x75\x70\x70\x6f\x72\x74\x20\x66\x6f\x72\x20\x69\x6d\x70\x6f\x72\x74\x69\x6e\x67\x20\x50\x79\x74\x68\x6f\x6e\x20\x6d\x6f\x64\x75\x6c\x65\x73\x20\x66\x72\x6f\x6d\x20\x5a\x69\x70\x20\x61\x72\x63\x68\x69\x76\x65\x73\x2e\x0a\x0a\x54\x68\x69\x73\x20\x6d\x6f\x64\x75\x6c\x65\x20\x65\x78\x70\x6f\x72\x74\x73\x20\x74\x68\x72\x65\x65\x20\x6f\x62\x6a\x65\x63\x74\x73\x3a\x0a\x2d\x20\x7a\x69\x70\x69\x6d\x70\x6f\x72\x74\x65\x72\x3a\x20\x61\x20\x63\x6c\x61\x73\x73\x3b\x20\x69\x74\x73\x20\x63\x6f\x6e\x73\x74\x72\x75\x63\x74\x6f\x72\x20\x74\x61\x6b\x65\x73\x20\x61\x20\x70\x61\x74\x68\x20\x74\x6f\x20\x61\x20\x5a\x69\x70\x20\x61\x72\x63\x68\x69\x76\x65\x2e\x0a\x2d\x20\x5a\x69\x70\x49\x6d\x70\x6f\x72\x74\x45\x72\x72\x6f\x72\x3a\x20\x65\x78\x63\x65\x70\x74\x69\x6f\x6e\x20\x72\x61\x69\x73\x65\x64\x20\x62\x79\x20\x7a\x69\x70\x69\x6d\x70\x6f\x72\x74\x65\x72\x20\x6f\x62\x6a\x65\x63\x74\x73\x2e\x20\x49\x74\x27\x73\x20\x61\x0a\x20\x20\x73\x75\x62\x63\x6c\x61\x73\x73\x20\x6f\x66\x20\x49\x6d\x70\x6f\x72\x74\x45\x72\x72\x6f\x72\x2c\x20\x73\x6f\x20\x69\x74\x20\x63\x61\x6e\x20\x62\x65\x20\x63\x61\x75\x67\x68\x74\x20\x61\x73\x20\x49\x6d\x70\x6f\x72\x74\x45\x72\x72\x6f\x72\x2c\x20\x74\x6f\x6f\x2e\x0a\x2d\x20\x5f\x7a\x69\x70\x5f\x64\x69\x72\x65\x63\x74\x6f\x72\x79\x5f\x63\x61\x63\x68\x65\x3a\x20\x61\x20\x64\x69\x63\x74\x2c\x20\x6d\x61\x70\x70\x69\x6e\x67\x20\x61\x72\x63\x68\x69\x76\x65\x20\x70\x61\x74\x68\x73\x20\x74\x6f\x20\x7a\x69\x70\x20\x64\x69\x72\x65\x63\x74\x6f\x72\x79\x0a\x20\x20\x69\x6e\x66\x6f\x20\x64\x69\x63\x74\x73\x2c\x20\x61\x73\x20\x75\x73\x65\x64\x20\x69\x6e\x20\x7a\x69\x70\x69\x6d\x70\x6f\x72\x74\x65\x72\x2e\x5f\x66\x69\x6c\x65\x73\x2e\x0a\x0a\x49\x74\x20\x69\x73\x20\x75\x73\x75\x61\x6c\x6c\x79\x20\x6e\x6f\x74\x20\x6e\x65\x65\x64\x65\x64\x20\x74\x6f\x20\x75\x73\x65\x20\x74\x68\x65\x20\x7a\x69\x70\x69\x6d\x70\x6f\x72\x74\x20\x6d\x6f\x64\x75\x6c\x65\x20\x65\x78\x70\x6c\x69\x63\x69\x74\x6c\x79\x3b\x20\x69\x74\x20\x69\x73\x0a\x75\x73\x65\x64\x20\x62\x79\x20\x74\x68\x65\x20\x62\x75\x69\x6c\x74\x69\x6e\x20\x69\x6d\x70\x6f\x72\x74\x20\x6d\x65\x63\x68\x61\x6e\x69\x73\x6d\x20\x66\x6f\x72\x20\x73\x79\x73\x2e\x70\x61\x74\x68\x20\x69\x74\x65\x6d\x73\x20\x74\x68\x61\x74\x20\x61\x72\x65\x20\x70\x61\x74\x68\x73\x0a\x74\x6f\x20\x5a\x69\x70\x20\x61\x72\x63\x68\x69\x76\x65\x73\x2e\x0a",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+zipimport_toplevel_consts_3 = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & const_str__unpack_uint16._ascii.ob_base,
+ & const_str__unpack_uint32._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[15];
+ }
+const_str_ZipImportError = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 14,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "ZipImportError",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[12];
+ }
+const_str_zipimporter = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 11,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "zipimporter",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+zipimport_toplevel_consts_7_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & const_str_ZipImportError._ascii.ob_base,
+ Py_None,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[19];
+ }
+zipimport_toplevel_consts_7_filename = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 18,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "<frozen zipimport>",
+};
+static
+ struct _PyCode_DEF(12)
+zipimport_toplevel_consts_7 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 6,
+ },
+ .co_consts = & zipimport_toplevel_consts_7_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_toplevel_consts_5_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 0,
+ .co_argcount = 0,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 1 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 1,
+ .co_firstlineno = 34,
+ .co_nlocalsplus = 0,
+ .co_nlocals = 0,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 221,
+ .co_localsplusnames = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_filename = & zipimport_toplevel_consts_7_filename._ascii.ob_base,
+ .co_name = & const_str_ZipImportError._ascii.ob_base,
+ .co_qualname = & const_str_ZipImportError._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_toplevel_consts_5_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x65\x00\x5a\x01\x64\x00\x5a\x02\x79\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[5];
+ }
+zipimport_toplevel_consts_9 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x50\x4b\x05\x06",
+};
+#if PYLONG_BITS_IN_DIGIT == 15
+static
+ struct {
+ PyObject ob_base;
+ uintptr_t lv_tag;
+ digit ob_digit[2];
+ }
+const_int_65535 = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyLong_Type,
+ },
+ .lv_tag = TAG_FROM_SIGN_AND_SIZE(1, 2),
+ .ob_digit = { 32767, 1 },
+};
+#elif PYLONG_BITS_IN_DIGIT == 30
+static
+ struct {
+ PyObject ob_base;
+ uintptr_t lv_tag;
+ digit ob_digit[1];
+ }
+const_int_65535 = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyLong_Type,
+ },
+ .lv_tag = TAG_FROM_SIGN_AND_SIZE(1, 1),
+ .ob_digit = { 65535 },
+};
+#else
+#error "PYLONG_BITS_IN_DIGIT should be 15 or 30"
+#endif
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[512];
+ }
+zipimport_toplevel_consts_11_consts_1 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 511,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x7a\x69\x70\x69\x6d\x70\x6f\x72\x74\x65\x72\x28\x61\x72\x63\x68\x69\x76\x65\x70\x61\x74\x68\x29\x20\x2d\x3e\x20\x7a\x69\x70\x69\x6d\x70\x6f\x72\x74\x65\x72\x20\x6f\x62\x6a\x65\x63\x74\x0a\x0a\x20\x20\x20\x20\x43\x72\x65\x61\x74\x65\x20\x61\x20\x6e\x65\x77\x20\x7a\x69\x70\x69\x6d\x70\x6f\x72\x74\x65\x72\x20\x69\x6e\x73\x74\x61\x6e\x63\x65\x2e\x20\x27\x61\x72\x63\x68\x69\x76\x65\x70\x61\x74\x68\x27\x20\x6d\x75\x73\x74\x20\x62\x65\x20\x61\x20\x70\x61\x74\x68\x20\x74\x6f\x0a\x20\x20\x20\x20\x61\x20\x7a\x69\x70\x66\x69\x6c\x65\x2c\x20\x6f\x72\x20\x74\x6f\x20\x61\x20\x73\x70\x65\x63\x69\x66\x69\x63\x20\x70\x61\x74\x68\x20\x69\x6e\x73\x69\x64\x65\x20\x61\x20\x7a\x69\x70\x66\x69\x6c\x65\x2e\x20\x46\x6f\x72\x20\x65\x78\x61\x6d\x70\x6c\x65\x2c\x20\x69\x74\x20\x63\x61\x6e\x20\x62\x65\x0a\x20\x20\x20\x20\x27\x2f\x74\x6d\x70\x2f\x6d\x79\x69\x6d\x70\x6f\x72\x74\x2e\x7a\x69\x70\x27\x2c\x20\x6f\x72\x20\x27\x2f\x74\x6d\x70\x2f\x6d\x79\x69\x6d\x70\x6f\x72\x74\x2e\x7a\x69\x70\x2f\x6d\x79\x64\x69\x72\x65\x63\x74\x6f\x72\x79\x27\x2c\x20\x69\x66\x20\x6d\x79\x64\x69\x72\x65\x63\x74\x6f\x72\x79\x20\x69\x73\x20\x61\x0a\x20\x20\x20\x20\x76\x61\x6c\x69\x64\x20\x64\x69\x72\x65\x63\x74\x6f\x72\x79\x20\x69\x6e\x73\x69\x64\x65\x20\x74\x68\x65\x20\x61\x72\x63\x68\x69\x76\x65\x2e\x0a\x0a\x20\x20\x20\x20\x27\x5a\x69\x70\x49\x6d\x70\x6f\x72\x74\x45\x72\x72\x6f\x72\x20\x69\x73\x20\x72\x61\x69\x73\x65\x64\x20\x69\x66\x20\x27\x61\x72\x63\x68\x69\x76\x65\x70\x61\x74\x68\x27\x20\x64\x6f\x65\x73\x6e\x27\x74\x20\x70\x6f\x69\x6e\x74\x20\x74\x6f\x20\x61\x20\x76\x61\x6c\x69\x64\x20\x5a\x69\x70\x0a\x20\x20\x20\x20\x61\x72\x63\x68\x69\x76\x65\x2e\x0a\x0a\x20\x20\x20\x20\x54\x68\x65\x20\x27\x61\x72\x63\x68\x69\x76\x65\x27\x20\x61\x74\x74\x72\x69\x62\x75\x74\x65\x20\x6f\x66\x20\x7a\x69\x70\x69\x6d\x70\x6f\x72\x74\x65\x72\x20\x6f\x62\x6a\x65\x63\x74\x73\x20\x63\x6f\x6e\x74\x61\x69\x6e\x73\x20\x74\x68\x65\x20\x6e\x61\x6d\x65\x20\x6f\x66\x20\x74\x68\x65\x0a\x20\x20\x20\x20\x7a\x69\x70\x66\x69\x6c\x65\x20\x74\x61\x72\x67\x65\x74\x65\x64\x2e\x0a\x20\x20\x20\x20",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[19];
+ }
+zipimport_toplevel_consts_11_consts_2_consts_1 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 18,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "expected str, not ",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[22];
+ }
+zipimport_toplevel_consts_11_consts_2_consts_2 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 21,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "archive path is empty",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[15];
+ }
+zipimport_toplevel_consts_11_consts_2_consts_6 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 14,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "not a Zip file",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[8];
+ }_object;
+ }
+zipimport_toplevel_consts_11_consts_2_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 8,
+ },
+ .ob_item = {
+ Py_None,
+ & zipimport_toplevel_consts_11_consts_2_consts_1._ascii.ob_base,
+ & zipimport_toplevel_consts_11_consts_2_consts_2._ascii.ob_base,
+ & importlib__bootstrap_external_toplevel_consts_18_localsplusnames._object.ob_base.ob_base,
+ & const_int_61440.ob_base,
+ & const_int_32768.ob_base,
+ & zipimport_toplevel_consts_11_consts_2_consts_6._ascii.ob_base,
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + -1],
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[13];
+ }
+const_str_alt_path_sep = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 12,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "alt_path_sep",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[21];
+ }
+const_str__zip_directory_cache = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 20,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_zip_directory_cache",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[16];
+ }
+const_str__read_directory = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 15,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_read_directory",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[7];
+ }
+const_str__files = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 6,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_files",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[8];
+ }
+const_str_archive = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 7,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "archive",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[7];
+ }
+const_str_prefix = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 6,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "prefix",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[22];
+ }_object;
+ }
+zipimport_toplevel_consts_11_consts_2_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 22,
+ },
+ .ob_item = {
+ &_Py_ID(isinstance),
+ & const_str_str._ascii.ob_base,
+ & const_str_TypeError._ascii.ob_base,
+ &_Py_ID(type),
+ & const_str_ZipImportError._ascii.ob_base,
+ & const_str_alt_path_sep._ascii.ob_base,
+ &_Py_ID(replace),
+ & const_str_path_sep._ascii.ob_base,
+ & const_str__bootstrap_external._ascii.ob_base,
+ & const_str__path_stat._ascii.ob_base,
+ & const_str_st_mode._ascii.ob_base,
+ & const_str_OSError._ascii.ob_base,
+ & const_str_ValueError._ascii.ob_base,
+ & const_str__path_split._ascii.ob_base,
+ &_Py_ID(append),
+ & const_str__zip_directory_cache._ascii.ob_base,
+ & const_str_KeyError._ascii.ob_base,
+ & const_str__read_directory._ascii.ob_base,
+ & const_str__files._ascii.ob_base,
+ & const_str_archive._ascii.ob_base,
+ & const_str__path_join._ascii.ob_base,
+ & const_str_prefix._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[21];
+ }
+zipimport_toplevel_consts_11_consts_2_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 20,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "zipimporter.__init__",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[346];
+ }
+zipimport_toplevel_consts_11_consts_2_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 345,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xdc\x0f\x19\x98\x24\xa4\x03\xd4\x0f\x24\xdc\x12\x1b\xd0\x1e\x30\xb4\x14\xb0\x64\xb3\x1a\xb0\x0e\xd0\x1c\x3f\xd3\x12\x40\xd0\x0c\x40\xd9\x0f\x13\xdc\x12\x20\xd0\x21\x38\xb8\x74\xd4\x12\x44\xd0\x0c\x44\xdd\x0b\x17\xd8\x13\x17\x97\x3c\x91\x3c\xa4\x0c\xac\x68\xd3\x13\x37\x88\x44\xe0\x11\x13\x88\x06\xd8\x0e\x12\xf0\x02\x0f\x0d\x16\xdc\x15\x28\xd7\x15\x33\xd1\x15\x33\xb0\x44\xd3\x15\x39\x90\x02\xf0\x16\x00\x15\x17\x97\x4a\x91\x4a\xa0\x18\xd1\x14\x29\xa8\x68\xd2\x13\x36\xe4\x1a\x28\xd0\x29\x39\xc0\x04\xd4\x1a\x45\xd0\x14\x45\xd8\x10\x15\xf0\x04\x04\x09\x2f\xdc\x14\x28\xa8\x14\xd1\x14\x2e\x88\x45\xf0\x08\x00\x17\x1c\x88\x04\x8c\x0b\xd8\x17\x1b\x88\x04\x8c\x0c\xe4\x16\x29\xd7\x16\x34\xd1\x16\x34\xb0\x66\xb9\x54\xb8\x72\xb8\x54\xb1\x6c\xd0\x16\x43\x88\x04\x8c\x0b\xd8\x0b\x0f\x8f\x3b\x8a\x3b\xd8\x0c\x10\x8f\x4b\x8a\x4b\x9c\x38\xd1\x0c\x23\x8e\x4b\xf0\x03\x00\x0c\x17\xf8\xf4\x31\x00\x15\x1c\x9c\x5a\xd0\x13\x28\xf2\x00\x07\x0d\x28\xf4\x06\x00\x25\x38\xd7\x24\x43\xd1\x24\x43\xc0\x44\xd3\x24\x49\xd1\x10\x21\x90\x07\x98\x18\xd8\x13\x1a\x98\x64\x92\x3f\xdc\x1a\x28\xd0\x29\x39\xc0\x04\xd4\x1a\x45\xd0\x14\x45\xd8\x17\x1e\x90\x04\xd8\x10\x16\x97\x0d\x91\x0d\x98\x68\xd6\x10\x27\xf0\x0f\x07\x0d\x28\xfa\xf0\x07\x00\x0f\x13\xf8\xf4\x28\x00\x10\x18\xf2\x00\x02\x09\x2f\xdc\x14\x23\xa0\x44\xd3\x14\x29\x88\x45\xd8\x29\x2e\xd4\x0c\x20\xa0\x14\xd3\x0c\x26\xf0\x05\x02\x09\x2f\xfa",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[38];
+ }
+zipimport_toplevel_consts_11_consts_2_exceptiontable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 37,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\xc1\x1b\x15\x43\x2c\x00\xc2\x11\x09\x44\x3f\x00\xc3\x2c\x41\x0c\x44\x3b\x03\xc4\x3a\x01\x44\x3b\x03\xc4\x3f\x1d\x45\x1f\x03\xc5\x1e\x01\x45\x1f\x03",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[9];
+ }
+const_str_basename = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 8,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "basename",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[6];
+ }
+const_str_files = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 5,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "files",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[7];
+ }_object;
+ }
+zipimport_toplevel_consts_11_consts_2_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 7,
+ },
+ .ob_item = {
+ &_Py_ID(self),
+ &_Py_ID(path),
+ & const_str_prefix._ascii.ob_base,
+ & const_str_st._ascii.ob_base,
+ & const_str_dirname._ascii.ob_base,
+ & const_str_basename._ascii.ob_base,
+ & const_str_files._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(708)
+zipimport_toplevel_consts_11_consts_2 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 354,
+ },
+ .co_consts = & zipimport_toplevel_consts_11_consts_2_consts._object.ob_base.ob_base,
+ .co_names = & zipimport_toplevel_consts_11_consts_2_names._object.ob_base.ob_base,
+ .co_exceptiontable = & zipimport_toplevel_consts_11_consts_2_exceptiontable.ob_base.ob_base,
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 13 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 6,
+ .co_firstlineno = 64,
+ .co_nlocalsplus = 7,
+ .co_nlocals = 7,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 222,
+ .co_localsplusnames = & zipimport_toplevel_consts_11_consts_2_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_46_consts_9_localspluskinds.ob_base.ob_base,
+ .co_filename = & zipimport_toplevel_consts_7_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__init__),
+ .co_qualname = & zipimport_toplevel_consts_11_consts_2_qualname._ascii.ob_base,
+ .co_linetable = & zipimport_toplevel_consts_11_consts_2_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x74\x02\x00\x00\x00\x00\x00\x00\x00\x00\xab\x02\x00\x00\x00\x00\x00\x00\x73\x17\x74\x05\x00\x00\x00\x00\x00\x00\x00\x00\x64\x01\x74\x07\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\xab\x01\x00\x00\x00\x00\x00\x00\x9b\x02\x9d\x02\xab\x01\x00\x00\x00\x00\x00\x00\x82\x01\x7c\x01\x73\x0d\x74\x09\x00\x00\x00\x00\x00\x00\x00\x00\x64\x02\x7c\x01\xac\x03\xab\x02\x00\x00\x00\x00\x00\x00\x82\x01\x74\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x72\x1a\x7c\x01\x6a\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x74\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x74\x0e\x00\x00\x00\x00\x00\x00\x00\x00\xab\x02\x00\x00\x00\x00\x00\x00\x7d\x01\x67\x00\x7d\x02\x09\x00\x09\x00\x74\x11\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x03\x7c\x03\x6a\x14\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x04\x7a\x01\x00\x00\x64\x05\x6b\x37\x00\x00\x72\x0d\x74\x09\x00\x00\x00\x00\x00\x00\x00\x00\x64\x06\x7c\x01\xac\x03\xab\x02\x00\x00\x00\x00\x00\x00\x82\x01\x09\x00\x09\x00\x74\x1e\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x19\x00\x00\x00\x7d\x06\x7c\x06\x7c\x00\x5f\x12\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x7c\x00\x5f\x13\x00\x00\x00\x00\x00\x00\x00\x00\x74\x11\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x28\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x02\x64\x00\x64\x00\x64\x07\x85\x03\x19\x00\x00\x00\x8e\x00\x7c\x00\x5f\x15\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x6a\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x72\x1a\x7c\x00\x78\x01\x6a\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x74\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x7a\x0d\x00\x00\x63\x02\x5f\x15\x00\x00\x00\x00\x00\x00\x00\x00\x79\x00\x79\x00\x23\x00\x74\x16\x00\x00\x00\x00\x00\x00\x00\x00\x74\x18\x00\x00\x00\x00\x00\x00\x00\x00\x66\x02\x24\x00\x72\x40\x01\x00\x74\x11\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x1a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\xab\x01\x00\x00\x00\x00\x00\x00\x5c\x02\x00\x00\x7d\x04\x7d\x05\x7c\x04\x7c\x01\x6b\x28\x00\x00\x72\x0d\x74\x09\x00\x00\x00\x00\x00\x00\x00\x00\x64\x06\x7c\x01\xac\x03\xab\x02\x00\x00\x00\x00\x00\x00\x82\x01\x7c\x04\x7d\x01\x7c\x02\x6a\x1d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x05\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x59\x00\x6e\x04\x77\x00\x78\x03\x59\x00\x77\x01\x8c\xe5\x23\x00\x74\x20\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x72\x17\x01\x00\x74\x23\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x06\x7c\x06\x74\x1e\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x3c\x00\x00\x00\x59\x00\x8c\xc4\x77\x00\x78\x03\x59\x00\x77\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[108];
+ }
+zipimport_toplevel_consts_11_consts_4_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 107,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x43\x72\x65\x61\x74\x65\x20\x61\x20\x4d\x6f\x64\x75\x6c\x65\x53\x70\x65\x63\x20\x66\x6f\x72\x20\x74\x68\x65\x20\x73\x70\x65\x63\x69\x66\x69\x65\x64\x20\x6d\x6f\x64\x75\x6c\x65\x2e\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x52\x65\x74\x75\x72\x6e\x73\x20\x4e\x6f\x6e\x65\x20\x69\x66\x20\x74\x68\x65\x20\x6d\x6f\x64\x75\x6c\x65\x20\x63\x61\x6e\x6e\x6f\x74\x20\x62\x65\x20\x66\x6f\x75\x6e\x64\x2e\x0a\x20\x20\x20\x20\x20\x20\x20\x20",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+zipimport_toplevel_consts_11_consts_4_consts_2 = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & const_str_is_package._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+zipimport_toplevel_consts_11_consts_4_consts_4 = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ &_Py_ID(name),
+ & const_str_loader._ascii.ob_base,
+ & const_str_is_package._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[5];
+ }_object;
+ }
+zipimport_toplevel_consts_11_consts_4_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 5,
+ },
+ .ob_item = {
+ & zipimport_toplevel_consts_11_consts_4_consts_0._ascii.ob_base,
+ Py_None,
+ & zipimport_toplevel_consts_11_consts_4_consts_2._object.ob_base.ob_base,
+ Py_True,
+ & zipimport_toplevel_consts_11_consts_4_consts_4._object.ob_base.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[17];
+ }
+const_str__get_module_info = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 16,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_get_module_info",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[17];
+ }
+const_str__get_module_path = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 16,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_get_module_path",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[8];
+ }
+const_str__is_dir = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 7,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_is_dir",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[10];
+ }_object;
+ }
+zipimport_toplevel_consts_11_consts_4_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 10,
+ },
+ .ob_item = {
+ & const_str__get_module_info._ascii.ob_base,
+ &_Py_ID(_bootstrap),
+ & const_str_spec_from_loader._ascii.ob_base,
+ & const_str__get_module_path._ascii.ob_base,
+ & const_str__is_dir._ascii.ob_base,
+ & const_str_archive._ascii.ob_base,
+ & const_str_path_sep._ascii.ob_base,
+ & const_str_ModuleSpec._ascii.ob_base,
+ & const_str_submodule_search_locations._ascii.ob_base,
+ &_Py_ID(append),
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[22];
+ }
+zipimport_toplevel_consts_11_consts_4_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 21,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "zipimporter.find_spec",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[143];
+ }
+zipimport_toplevel_consts_11_consts_4_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 142,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf4\x0a\x00\x17\x27\xa0\x74\xa8\x58\xd3\x16\x36\x88\x0b\xd8\x0b\x16\xd0\x0b\x22\xdc\x13\x1d\xd7\x13\x2e\xd1\x13\x2e\xa8\x78\xb8\x14\xc8\x2b\xd4\x13\x56\xd0\x0c\x56\xf4\x0e\x00\x17\x27\xa0\x74\xa8\x58\xd3\x16\x36\x88\x47\xdc\x0f\x16\x90\x74\x98\x57\xd4\x0f\x25\xf0\x08\x00\x1b\x1f\x9f\x2c\x99\x2c\x98\x1e\xac\x08\xa0\x7a\xb0\x27\xb0\x19\xd0\x17\x3b\x90\x04\xdc\x17\x21\xd7\x17\x2c\xd1\x17\x2c\xb0\x28\xc0\x34\xd8\x38\x3c\xf4\x03\x01\x18\x3e\x90\x04\xe0\x10\x14\xd7\x10\x2f\xd1\x10\x2f\xd7\x10\x36\xd1\x10\x36\xb0\x74\xd4\x10\x3c\xd8\x17\x1b\x90\x0b\xe0\x17\x1b",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[12];
+ }
+const_str_module_info = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 11,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "module_info",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[8];
+ }
+const_str_modpath = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 7,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "modpath",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[7];
+ }_object;
+ }
+zipimport_toplevel_consts_11_consts_4_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 7,
+ },
+ .ob_item = {
+ &_Py_ID(self),
+ & const_str_fullname._ascii.ob_base,
+ &_Py_ID(target),
+ & const_str_module_info._ascii.ob_base,
+ & const_str_modpath._ascii.ob_base,
+ &_Py_ID(path),
+ & const_str_spec._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(278)
+zipimport_toplevel_consts_11_consts_4 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 139,
+ },
+ .co_consts = & zipimport_toplevel_consts_11_consts_4_consts._object.ob_base.ob_base,
+ .co_names = & zipimport_toplevel_consts_11_consts_4_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 3,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 12 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 5,
+ .co_firstlineno = 104,
+ .co_nlocalsplus = 7,
+ .co_nlocals = 7,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 223,
+ .co_localsplusnames = & zipimport_toplevel_consts_11_consts_4_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_46_consts_9_localspluskinds.ob_base.ob_base,
+ .co_filename = & zipimport_toplevel_consts_7_filename._ascii.ob_base,
+ .co_name = & const_str_find_spec._ascii.ob_base,
+ .co_qualname = & zipimport_toplevel_consts_11_consts_4_qualname._ascii.ob_base,
+ .co_linetable = & zipimport_toplevel_consts_11_consts_4_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x7c\x01\xab\x02\x00\x00\x00\x00\x00\x00\x7d\x03\x7c\x03\x81\x18\x74\x03\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x7c\x00\x7c\x03\xac\x02\xab\x03\x00\x00\x00\x00\x00\x00\x53\x00\x74\x07\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x7c\x01\xab\x02\x00\x00\x00\x00\x00\x00\x7d\x04\x74\x09\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x7c\x04\xab\x02\x00\x00\x00\x00\x00\x00\x72\x4b\x7c\x00\x6a\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9b\x00\x74\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x9b\x00\x7c\x04\x9b\x00\x9d\x03\x7d\x05\x74\x03\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x64\x01\x64\x03\xac\x04\xab\x03\x00\x00\x00\x00\x00\x00\x7d\x06\x7c\x06\x6a\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x05\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x7c\x06\x53\x00\x79\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[167];
+ }
+zipimport_toplevel_consts_11_consts_5_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 166,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x67\x65\x74\x5f\x63\x6f\x64\x65\x28\x66\x75\x6c\x6c\x6e\x61\x6d\x65\x29\x20\x2d\x3e\x20\x63\x6f\x64\x65\x20\x6f\x62\x6a\x65\x63\x74\x2e\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x52\x65\x74\x75\x72\x6e\x20\x74\x68\x65\x20\x63\x6f\x64\x65\x20\x6f\x62\x6a\x65\x63\x74\x20\x66\x6f\x72\x20\x74\x68\x65\x20\x73\x70\x65\x63\x69\x66\x69\x65\x64\x20\x6d\x6f\x64\x75\x6c\x65\x2e\x20\x52\x61\x69\x73\x65\x20\x5a\x69\x70\x49\x6d\x70\x6f\x72\x74\x45\x72\x72\x6f\x72\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x69\x66\x20\x74\x68\x65\x20\x6d\x6f\x64\x75\x6c\x65\x20\x63\x6f\x75\x6c\x64\x6e\x27\x74\x20\x62\x65\x20\x69\x6d\x70\x6f\x72\x74\x65\x64\x2e\x0a\x20\x20\x20\x20\x20\x20\x20\x20",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+zipimport_toplevel_consts_11_consts_5_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & zipimport_toplevel_consts_11_consts_5_consts_0._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[17];
+ }
+const_str__get_module_code = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 16,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_get_module_code",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+zipimport_toplevel_consts_11_consts_5_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & const_str__get_module_code._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[21];
+ }
+zipimport_toplevel_consts_11_consts_5_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 20,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "zipimporter.get_code",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[29];
+ }
+zipimport_toplevel_consts_11_consts_5_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 28,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf4\x0c\x00\x24\x34\xb0\x44\xb8\x28\xd3\x23\x43\xd1\x08\x20\x88\x04\x88\x69\x98\x17\xd8\x0f\x13\x88\x0b",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[10];
+ }
+const_str_ispackage = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 9,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "ispackage",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[5];
+ }_object;
+ }
+zipimport_toplevel_consts_11_consts_5_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 5,
+ },
+ .ob_item = {
+ &_Py_ID(self),
+ & const_str_fullname._ascii.ob_base,
+ &_Py_ID(code),
+ & const_str_ispackage._ascii.ob_base,
+ & const_str_modpath._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(38)
+zipimport_toplevel_consts_11_consts_5 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 19,
+ },
+ .co_consts = & zipimport_toplevel_consts_11_consts_5_consts._object.ob_base.ob_base,
+ .co_names = & zipimport_toplevel_consts_11_consts_5_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 9 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 131,
+ .co_nlocalsplus = 5,
+ .co_nlocals = 5,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 224,
+ .co_localsplusnames = & zipimport_toplevel_consts_11_consts_5_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_7_consts_5_localspluskinds.ob_base.ob_base,
+ .co_filename = & zipimport_toplevel_consts_7_filename._ascii.ob_base,
+ .co_name = & const_str_get_code._ascii.ob_base,
+ .co_qualname = & zipimport_toplevel_consts_11_consts_5_qualname._ascii.ob_base,
+ .co_linetable = & zipimport_toplevel_consts_11_consts_5_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x7c\x01\xab\x02\x00\x00\x00\x00\x00\x00\x5c\x03\x00\x00\x7d\x02\x7d\x03\x7d\x04\x7c\x02\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[155];
+ }
+zipimport_toplevel_consts_11_consts_6_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 154,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x67\x65\x74\x5f\x64\x61\x74\x61\x28\x70\x61\x74\x68\x6e\x61\x6d\x65\x29\x20\x2d\x3e\x20\x73\x74\x72\x69\x6e\x67\x20\x77\x69\x74\x68\x20\x66\x69\x6c\x65\x20\x64\x61\x74\x61\x2e\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x52\x65\x74\x75\x72\x6e\x20\x74\x68\x65\x20\x64\x61\x74\x61\x20\x61\x73\x73\x6f\x63\x69\x61\x74\x65\x64\x20\x77\x69\x74\x68\x20\x27\x70\x61\x74\x68\x6e\x61\x6d\x65\x27\x2e\x20\x52\x61\x69\x73\x65\x20\x4f\x53\x45\x72\x72\x6f\x72\x20\x69\x66\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x74\x68\x65\x20\x66\x69\x6c\x65\x20\x77\x61\x73\x6e\x27\x74\x20\x66\x6f\x75\x6e\x64\x2e\x0a\x20\x20\x20\x20\x20\x20\x20\x20",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[4];
+ }_object;
+ }
+zipimport_toplevel_consts_11_consts_6_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_item = {
+ & zipimport_toplevel_consts_11_consts_6_consts_0._ascii.ob_base,
+ Py_None,
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 0],
+ &_Py_STR(empty),
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[10];
+ }
+const_str__get_data = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 9,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_get_data",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[10];
+ }_object;
+ }
+zipimport_toplevel_consts_11_consts_6_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 10,
+ },
+ .ob_item = {
+ & const_str_alt_path_sep._ascii.ob_base,
+ &_Py_ID(replace),
+ & const_str_path_sep._ascii.ob_base,
+ & const_str_startswith._ascii.ob_base,
+ & const_str_archive._ascii.ob_base,
+ &_Py_ID(len),
+ & const_str__files._ascii.ob_base,
+ & const_str_KeyError._ascii.ob_base,
+ & const_str_OSError._ascii.ob_base,
+ & const_str__get_data._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[21];
+ }
+zipimport_toplevel_consts_11_consts_6_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 20,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "zipimporter.get_data",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[151];
+ }
+zipimport_toplevel_consts_11_consts_6_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 150,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf5\x0c\x00\x0c\x18\xd8\x17\x1f\xd7\x17\x27\xd1\x17\x27\xac\x0c\xb4\x68\xd3\x17\x3f\x88\x48\xe0\x0e\x16\x88\x03\xd8\x0b\x13\xd7\x0b\x1e\xd1\x0b\x1e\x98\x74\x9f\x7c\x99\x7c\xac\x68\xd1\x1f\x36\xd4\x0b\x37\xd8\x12\x1a\x9c\x33\x98\x74\x9f\x7c\x99\x7c\xac\x68\xd1\x1f\x36\xd3\x1b\x37\xd0\x1b\x38\xd0\x12\x39\x88\x43\xf0\x04\x03\x09\x26\xd8\x18\x1c\x9f\x0b\x99\x0b\xa0\x43\xd1\x18\x28\x88\x49\xf4\x06\x00\x10\x19\x98\x14\x9f\x1c\x99\x1c\xa0\x79\xd3\x0f\x31\xd0\x08\x31\xf8\xf4\x05\x00\x10\x18\xf2\x00\x01\x09\x26\xdc\x12\x19\x98\x21\x98\x52\xa0\x13\xd3\x12\x25\xd0\x0c\x25\xf0\x03\x01\x09\x26\xfa",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[13];
+ }
+zipimport_toplevel_consts_11_consts_6_exceptiontable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 12,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\xc1\x25\x0f\x42\x0a\x00\xc2\x0a\x17\x42\x21\x03",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[10];
+ }
+const_str_toc_entry = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 9,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "toc_entry",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[4];
+ }_object;
+ }
+zipimport_toplevel_consts_11_consts_6_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_item = {
+ &_Py_ID(self),
+ & const_str_pathname._ascii.ob_base,
+ &_Py_ID(key),
+ & const_str_toc_entry._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(328)
+zipimport_toplevel_consts_11_consts_6 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 164,
+ },
+ .co_consts = & zipimport_toplevel_consts_11_consts_6_consts._object.ob_base.ob_base,
+ .co_names = & zipimport_toplevel_consts_11_consts_6_names._object.ob_base.ob_base,
+ .co_exceptiontable = & zipimport_toplevel_consts_11_consts_6_exceptiontable.ob_base.ob_base,
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 10 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 6,
+ .co_firstlineno = 141,
+ .co_nlocalsplus = 4,
+ .co_nlocals = 4,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 225,
+ .co_localsplusnames = & zipimport_toplevel_consts_11_consts_6_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_7_consts_3_localspluskinds.ob_base.ob_base,
+ .co_filename = & zipimport_toplevel_consts_7_filename._ascii.ob_base,
+ .co_name = & const_str_get_data._ascii.ob_base,
+ .co_qualname = & zipimport_toplevel_consts_11_consts_6_qualname._ascii.ob_base,
+ .co_linetable = & zipimport_toplevel_consts_11_consts_6_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x72\x1a\x7c\x01\x6a\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x74\x04\x00\x00\x00\x00\x00\x00\x00\x00\xab\x02\x00\x00\x00\x00\x00\x00\x7d\x01\x7c\x01\x7d\x02\x7c\x01\x6a\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x6a\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x74\x04\x00\x00\x00\x00\x00\x00\x00\x00\x7a\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x72\x1f\x7c\x01\x74\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x6a\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x74\x04\x00\x00\x00\x00\x00\x00\x00\x00\x7a\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x64\x01\x1a\x00\x7d\x02\x09\x00\x7c\x00\x6a\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x02\x19\x00\x00\x00\x7d\x03\x74\x13\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x6a\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x03\xab\x02\x00\x00\x00\x00\x00\x00\x53\x00\x23\x00\x74\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x72\x0e\x01\x00\x74\x11\x00\x00\x00\x00\x00\x00\x00\x00\x64\x02\x64\x03\x7c\x02\xab\x03\x00\x00\x00\x00\x00\x00\x82\x01\x77\x00\x78\x03\x59\x00\x77\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[166];
+ }
+zipimport_toplevel_consts_11_consts_7_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 165,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x67\x65\x74\x5f\x66\x69\x6c\x65\x6e\x61\x6d\x65\x28\x66\x75\x6c\x6c\x6e\x61\x6d\x65\x29\x20\x2d\x3e\x20\x66\x69\x6c\x65\x6e\x61\x6d\x65\x20\x73\x74\x72\x69\x6e\x67\x2e\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x52\x65\x74\x75\x72\x6e\x20\x74\x68\x65\x20\x66\x69\x6c\x65\x6e\x61\x6d\x65\x20\x66\x6f\x72\x20\x74\x68\x65\x20\x73\x70\x65\x63\x69\x66\x69\x65\x64\x20\x6d\x6f\x64\x75\x6c\x65\x20\x6f\x72\x20\x72\x61\x69\x73\x65\x20\x5a\x69\x70\x49\x6d\x70\x6f\x72\x74\x45\x72\x72\x6f\x72\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x69\x66\x20\x69\x74\x20\x63\x6f\x75\x6c\x64\x6e\x27\x74\x20\x62\x65\x20\x69\x6d\x70\x6f\x72\x74\x65\x64\x2e\x0a\x20\x20\x20\x20\x20\x20\x20\x20",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+zipimport_toplevel_consts_11_consts_7_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & zipimport_toplevel_consts_11_consts_7_consts_0._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[25];
+ }
+zipimport_toplevel_consts_11_consts_7_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 24,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "zipimporter.get_filename",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[29];
+ }
+zipimport_toplevel_consts_11_consts_7_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 28,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf4\x10\x00\x24\x34\xb0\x44\xb8\x28\xd3\x23\x43\xd1\x08\x20\x88\x04\x88\x69\x98\x17\xd8\x0f\x16\x88\x0e",
+};
+static
+ struct _PyCode_DEF(38)
+zipimport_toplevel_consts_11_consts_7 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 19,
+ },
+ .co_consts = & zipimport_toplevel_consts_11_consts_7_consts._object.ob_base.ob_base,
+ .co_names = & zipimport_toplevel_consts_11_consts_5_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 9 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 162,
+ .co_nlocalsplus = 5,
+ .co_nlocals = 5,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 226,
+ .co_localsplusnames = & zipimport_toplevel_consts_11_consts_5_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_7_consts_5_localspluskinds.ob_base.ob_base,
+ .co_filename = & zipimport_toplevel_consts_7_filename._ascii.ob_base,
+ .co_name = & const_str_get_filename._ascii.ob_base,
+ .co_qualname = & zipimport_toplevel_consts_11_consts_7_qualname._ascii.ob_base,
+ .co_linetable = & zipimport_toplevel_consts_11_consts_7_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x7c\x01\xab\x02\x00\x00\x00\x00\x00\x00\x5c\x03\x00\x00\x7d\x02\x7d\x03\x7d\x04\x7c\x04\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[254];
+ }
+zipimport_toplevel_consts_11_consts_8_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 253,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x67\x65\x74\x5f\x73\x6f\x75\x72\x63\x65\x28\x66\x75\x6c\x6c\x6e\x61\x6d\x65\x29\x20\x2d\x3e\x20\x73\x6f\x75\x72\x63\x65\x20\x73\x74\x72\x69\x6e\x67\x2e\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x52\x65\x74\x75\x72\x6e\x20\x74\x68\x65\x20\x73\x6f\x75\x72\x63\x65\x20\x63\x6f\x64\x65\x20\x66\x6f\x72\x20\x74\x68\x65\x20\x73\x70\x65\x63\x69\x66\x69\x65\x64\x20\x6d\x6f\x64\x75\x6c\x65\x2e\x20\x52\x61\x69\x73\x65\x20\x5a\x69\x70\x49\x6d\x70\x6f\x72\x74\x45\x72\x72\x6f\x72\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x69\x66\x20\x74\x68\x65\x20\x6d\x6f\x64\x75\x6c\x65\x20\x63\x6f\x75\x6c\x64\x6e\x27\x74\x20\x62\x65\x20\x66\x6f\x75\x6e\x64\x2c\x20\x72\x65\x74\x75\x72\x6e\x20\x4e\x6f\x6e\x65\x20\x69\x66\x20\x74\x68\x65\x20\x61\x72\x63\x68\x69\x76\x65\x20\x64\x6f\x65\x73\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x63\x6f\x6e\x74\x61\x69\x6e\x20\x74\x68\x65\x20\x6d\x6f\x64\x75\x6c\x65\x2c\x20\x62\x75\x74\x20\x68\x61\x73\x20\x6e\x6f\x20\x73\x6f\x75\x72\x63\x65\x20\x66\x6f\x72\x20\x69\x74\x2e\x0a\x20\x20\x20\x20\x20\x20\x20\x20",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[19];
+ }
+zipimport_toplevel_consts_11_consts_8_consts_2 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 18,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "can't find module ",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[6];
+ }_object;
+ }
+zipimport_toplevel_consts_11_consts_8_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 6,
+ },
+ .ob_item = {
+ & zipimport_toplevel_consts_11_consts_8_consts_0._ascii.ob_base,
+ Py_None,
+ & zipimport_toplevel_consts_11_consts_8_consts_2._ascii.ob_base,
+ & importlib__bootstrap_toplevel_consts_4_localsplusnames._object.ob_base.ob_base,
+ & importlib__bootstrap_toplevel_consts_46_consts_5_consts_11._ascii.ob_base,
+ & importlib__bootstrap_toplevel_consts_46_consts_5_consts_12._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[10];
+ }_object;
+ }
+zipimport_toplevel_consts_11_consts_8_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 10,
+ },
+ .ob_item = {
+ & const_str__get_module_info._ascii.ob_base,
+ & const_str_ZipImportError._ascii.ob_base,
+ & const_str__get_module_path._ascii.ob_base,
+ & const_str__bootstrap_external._ascii.ob_base,
+ & const_str__path_join._ascii.ob_base,
+ & const_str__files._ascii.ob_base,
+ & const_str_KeyError._ascii.ob_base,
+ & const_str__get_data._ascii.ob_base,
+ & const_str_archive._ascii.ob_base,
+ &_Py_ID(decode),
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[23];
+ }
+zipimport_toplevel_consts_11_consts_8_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 22,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "zipimporter.get_source",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[154];
+ }
+zipimport_toplevel_consts_11_consts_8_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 153,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf4\x0e\x00\x0e\x1e\x98\x64\xa0\x48\xd3\x0d\x2d\x88\x02\xd8\x0b\x0d\x88\x3a\xdc\x12\x20\xd0\x23\x35\xb0\x68\xb0\x5c\xd0\x21\x42\xc8\x18\xd4\x12\x52\xd0\x0c\x52\xe4\x0f\x1f\xa0\x04\xa0\x68\xd3\x0f\x2f\x88\x04\xd9\x0b\x0d\xdc\x17\x2a\xd7\x17\x35\xd1\x17\x35\xb0\x64\xb8\x4d\xd3\x17\x4a\x89\x48\xe0\x1a\x1e\x98\x16\x98\x73\x90\x7c\x88\x48\xf0\x04\x04\x09\x18\xd8\x18\x1c\x9f\x0b\x99\x0b\xa0\x48\xd1\x18\x2d\x88\x49\xf4\x08\x00\x10\x19\x98\x14\x9f\x1c\x99\x1c\xa0\x79\xd3\x0f\x31\xd7\x0f\x38\xd1\x0f\x38\xd3\x0f\x3a\xd0\x08\x3a\xf8\xf4\x07\x00\x10\x18\xf2\x00\x02\x09\x18\xe1\x13\x17\xf0\x05\x02\x09\x18\xfa",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[19];
+ }
+zipimport_toplevel_consts_11_consts_8_exceptiontable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 18,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\xc1\x0a\x0f\x41\x3d\x00\xc1\x3d\x09\x42\x09\x03\xc2\x08\x01\x42\x09\x03",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[3];
+ }
+const_str_mi = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 2,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "mi",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[9];
+ }
+const_str_fullpath = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 8,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "fullpath",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[6];
+ }_object;
+ }
+zipimport_toplevel_consts_11_consts_8_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 6,
+ },
+ .ob_item = {
+ &_Py_ID(self),
+ & const_str_fullname._ascii.ob_base,
+ & const_str_mi._ascii.ob_base,
+ &_Py_ID(path),
+ & const_str_fullpath._ascii.ob_base,
+ & const_str_toc_entry._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(280)
+zipimport_toplevel_consts_11_consts_8 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 140,
+ },
+ .co_consts = & zipimport_toplevel_consts_11_consts_8_consts._object.ob_base.ob_base,
+ .co_names = & zipimport_toplevel_consts_11_consts_8_names._object.ob_base.ob_base,
+ .co_exceptiontable = & zipimport_toplevel_consts_11_consts_8_exceptiontable.ob_base.ob_base,
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 10 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 174,
+ .co_nlocalsplus = 6,
+ .co_nlocals = 6,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 227,
+ .co_localsplusnames = & zipimport_toplevel_consts_11_consts_8_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_30_consts_4_localspluskinds.ob_base.ob_base,
+ .co_filename = & zipimport_toplevel_consts_7_filename._ascii.ob_base,
+ .co_name = &_Py_ID(get_source),
+ .co_qualname = & zipimport_toplevel_consts_11_consts_8_qualname._ascii.ob_base,
+ .co_linetable = & zipimport_toplevel_consts_11_consts_8_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x7c\x01\xab\x02\x00\x00\x00\x00\x00\x00\x7d\x02\x7c\x02\x80\x10\x74\x03\x00\x00\x00\x00\x00\x00\x00\x00\x64\x02\x7c\x01\x9b\x02\x9d\x02\x7c\x01\xac\x03\xab\x02\x00\x00\x00\x00\x00\x00\x82\x01\x74\x05\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x7c\x01\xab\x02\x00\x00\x00\x00\x00\x00\x7d\x03\x7c\x02\x72\x17\x74\x07\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x03\x64\x04\xab\x02\x00\x00\x00\x00\x00\x00\x7d\x04\x6e\x05\x7c\x03\x9b\x00\x64\x05\x9d\x02\x7d\x04\x09\x00\x7c\x00\x6a\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x04\x19\x00\x00\x00\x7d\x05\x74\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x6a\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x05\xab\x02\x00\x00\x00\x00\x00\x00\x6a\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x53\x00\x23\x00\x74\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x72\x03\x01\x00\x59\x00\x79\x01\x77\x00\x78\x03\x59\x00\x77\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[172];
+ }
+zipimport_toplevel_consts_11_consts_9_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 171,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x69\x73\x5f\x70\x61\x63\x6b\x61\x67\x65\x28\x66\x75\x6c\x6c\x6e\x61\x6d\x65\x29\x20\x2d\x3e\x20\x62\x6f\x6f\x6c\x2e\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x52\x65\x74\x75\x72\x6e\x20\x54\x72\x75\x65\x20\x69\x66\x20\x74\x68\x65\x20\x6d\x6f\x64\x75\x6c\x65\x20\x73\x70\x65\x63\x69\x66\x69\x65\x64\x20\x62\x79\x20\x66\x75\x6c\x6c\x6e\x61\x6d\x65\x20\x69\x73\x20\x61\x20\x70\x61\x63\x6b\x61\x67\x65\x2e\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x52\x61\x69\x73\x65\x20\x5a\x69\x70\x49\x6d\x70\x6f\x72\x74\x45\x72\x72\x6f\x72\x20\x69\x66\x20\x74\x68\x65\x20\x6d\x6f\x64\x75\x6c\x65\x20\x63\x6f\x75\x6c\x64\x6e\x27\x74\x20\x62\x65\x20\x66\x6f\x75\x6e\x64\x2e\x0a\x20\x20\x20\x20\x20\x20\x20\x20",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+zipimport_toplevel_consts_11_consts_9_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ & zipimport_toplevel_consts_11_consts_9_consts_0._ascii.ob_base,
+ & zipimport_toplevel_consts_11_consts_8_consts_2._ascii.ob_base,
+ & importlib__bootstrap_toplevel_consts_4_localsplusnames._object.ob_base.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+zipimport_toplevel_consts_11_consts_9_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & const_str__get_module_info._ascii.ob_base,
+ & const_str_ZipImportError._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[23];
+ }
+zipimport_toplevel_consts_11_consts_9_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 22,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "zipimporter.is_package",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[48];
+ }
+zipimport_toplevel_consts_11_consts_9_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 47,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf4\x0c\x00\x0e\x1e\x98\x64\xa0\x48\xd3\x0d\x2d\x88\x02\xd8\x0b\x0d\x88\x3a\xdc\x12\x20\xd0\x23\x35\xb0\x68\xb0\x5c\xd0\x21\x42\xc8\x18\xd4\x12\x52\xd0\x0c\x52\xd8\x0f\x11\x88\x09",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+zipimport_toplevel_consts_11_consts_9_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ &_Py_ID(self),
+ & const_str_fullname._ascii.ob_base,
+ & const_str_mi._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(66)
+zipimport_toplevel_consts_11_consts_9 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 33,
+ },
+ .co_consts = & zipimport_toplevel_consts_11_consts_9_consts._object.ob_base.ob_base,
+ .co_names = & zipimport_toplevel_consts_11_consts_9_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 7 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 200,
+ .co_nlocalsplus = 3,
+ .co_nlocals = 3,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 228,
+ .co_localsplusnames = & zipimport_toplevel_consts_11_consts_9_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_3_localspluskinds.ob_base.ob_base,
+ .co_filename = & zipimport_toplevel_consts_7_filename._ascii.ob_base,
+ .co_name = & const_str_is_package._ascii.ob_base,
+ .co_qualname = & zipimport_toplevel_consts_11_consts_9_qualname._ascii.ob_base,
+ .co_linetable = & zipimport_toplevel_consts_11_consts_9_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x7c\x01\xab\x02\x00\x00\x00\x00\x00\x00\x7d\x02\x7c\x02\x80\x10\x74\x03\x00\x00\x00\x00\x00\x00\x00\x00\x64\x01\x7c\x01\x9b\x02\x9d\x02\x7c\x01\xac\x02\xab\x02\x00\x00\x00\x00\x00\x00\x82\x01\x7c\x02\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[321];
+ }
+zipimport_toplevel_consts_11_consts_10_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 320,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x6c\x6f\x61\x64\x5f\x6d\x6f\x64\x75\x6c\x65\x28\x66\x75\x6c\x6c\x6e\x61\x6d\x65\x29\x20\x2d\x3e\x20\x6d\x6f\x64\x75\x6c\x65\x2e\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x4c\x6f\x61\x64\x20\x74\x68\x65\x20\x6d\x6f\x64\x75\x6c\x65\x20\x73\x70\x65\x63\x69\x66\x69\x65\x64\x20\x62\x79\x20\x27\x66\x75\x6c\x6c\x6e\x61\x6d\x65\x27\x2e\x20\x27\x66\x75\x6c\x6c\x6e\x61\x6d\x65\x27\x20\x6d\x75\x73\x74\x20\x62\x65\x20\x74\x68\x65\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x66\x75\x6c\x6c\x79\x20\x71\x75\x61\x6c\x69\x66\x69\x65\x64\x20\x28\x64\x6f\x74\x74\x65\x64\x29\x20\x6d\x6f\x64\x75\x6c\x65\x20\x6e\x61\x6d\x65\x2e\x20\x49\x74\x20\x72\x65\x74\x75\x72\x6e\x73\x20\x74\x68\x65\x20\x69\x6d\x70\x6f\x72\x74\x65\x64\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x6d\x6f\x64\x75\x6c\x65\x2c\x20\x6f\x72\x20\x72\x61\x69\x73\x65\x73\x20\x5a\x69\x70\x49\x6d\x70\x6f\x72\x74\x45\x72\x72\x6f\x72\x20\x69\x66\x20\x69\x74\x20\x63\x6f\x75\x6c\x64\x20\x6e\x6f\x74\x20\x62\x65\x20\x69\x6d\x70\x6f\x72\x74\x65\x64\x2e\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x44\x65\x70\x72\x65\x63\x61\x74\x65\x64\x20\x73\x69\x6e\x63\x65\x20\x50\x79\x74\x68\x6f\x6e\x20\x33\x2e\x31\x30\x2e\x20\x55\x73\x65\x20\x65\x78\x65\x63\x5f\x6d\x6f\x64\x75\x6c\x65\x28\x29\x20\x69\x6e\x73\x74\x65\x61\x64\x2e\x0a\x20\x20\x20\x20\x20\x20\x20\x20",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[115];
+ }
+zipimport_toplevel_consts_11_consts_10_consts_1 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 114,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "zipimport.zipimporter.load_module() is deprecated and slated for removal in Python 3.12; use exec_module() instead",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[15];
+ }
+zipimport_toplevel_consts_11_consts_10_consts_3 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 14,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Loaded module ",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[26];
+ }
+zipimport_toplevel_consts_11_consts_10_consts_4 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 25,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = " not found in sys.modules",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[31];
+ }
+zipimport_toplevel_consts_11_consts_10_consts_5 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 30,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "import {} # loaded from Zip {}",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[6];
+ }_object;
+ }
+zipimport_toplevel_consts_11_consts_10_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 6,
+ },
+ .ob_item = {
+ & zipimport_toplevel_consts_11_consts_10_consts_0._ascii.ob_base,
+ & zipimport_toplevel_consts_11_consts_10_consts_1._ascii.ob_base,
+ &_Py_ID(__builtins__),
+ & zipimport_toplevel_consts_11_consts_10_consts_3._ascii.ob_base,
+ & zipimport_toplevel_consts_11_consts_10_consts_4._ascii.ob_base,
+ & zipimport_toplevel_consts_11_consts_10_consts_5._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[13];
+ }
+const_str__module_type = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 12,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_module_type",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[24];
+ }_object;
+ }
+zipimport_toplevel_consts_11_consts_10_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 24,
+ },
+ .ob_item = {
+ & const_str__warnings._ascii.ob_base,
+ & const_str_warn._ascii.ob_base,
+ & const_str_DeprecationWarning._ascii.ob_base,
+ & const_str__get_module_code._ascii.ob_base,
+ & const_str_sys._ascii.ob_base,
+ &_Py_ID(modules),
+ &_Py_ID(get),
+ &_Py_ID(isinstance),
+ & const_str__module_type._ascii.ob_base,
+ &_Py_ID(__loader__),
+ & const_str__get_module_path._ascii.ob_base,
+ & const_str__bootstrap_external._ascii.ob_base,
+ & const_str__path_join._ascii.ob_base,
+ & const_str_archive._ascii.ob_base,
+ &_Py_ID(__path__),
+ & const_str_hasattr._ascii.ob_base,
+ &_Py_ID(__builtins__),
+ &_Py_ID(_fix_up_module),
+ &_Py_ID(__dict__),
+ & const_str_exec._ascii.ob_base,
+ & const_str_KeyError._ascii.ob_base,
+ & const_str_ImportError._ascii.ob_base,
+ &_Py_ID(_bootstrap),
+ & const_str__verbose_message._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[24];
+ }
+zipimport_toplevel_consts_11_consts_10_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 23,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "zipimporter.load_module",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[323];
+ }
+zipimport_toplevel_consts_11_consts_10_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 322,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf0\x12\x01\x10\x43\x01\x88\x03\xe4\x08\x11\x8f\x0e\x89\x0e\x90\x73\xd4\x1c\x2e\xd4\x08\x2f\xdc\x23\x33\xb0\x44\xb8\x28\xd3\x23\x43\xd1\x08\x20\x88\x04\x88\x69\x98\x17\xdc\x0e\x11\x8f\x6b\x89\x6b\x8f\x6f\x89\x6f\x98\x68\xd3\x0e\x27\x88\x03\xd8\x0b\x0e\x88\x3b\x9c\x6a\xa8\x13\xac\x6c\xd4\x1e\x3b\xdc\x12\x1e\x98\x78\xd3\x12\x28\x88\x43\xd8\x24\x27\x8c\x43\x8f\x4b\x89\x4b\x98\x08\xd1\x0c\x21\xd8\x19\x1d\x88\x03\x8c\x0e\xf0\x04\x0e\x09\x12\xd9\x0f\x18\xf4\x06\x00\x18\x28\xa8\x04\xa8\x68\xd3\x17\x37\x90\x04\xdc\x1b\x2e\xd7\x1b\x39\xd1\x1b\x39\xb8\x24\xbf\x2c\xb9\x2c\xc8\x04\xd3\x1b\x4d\x90\x08\xd8\x20\x28\x98\x7a\x90\x03\x94\x0c\xe4\x13\x1a\x98\x33\xa0\x0e\xd4\x13\x2f\xdc\x23\x2f\x90\x03\xd4\x10\x20\xdc\x0c\x1f\xd7\x0c\x2e\xd1\x0c\x2e\xa8\x73\xaf\x7c\xa9\x7c\xb8\x58\xc0\x77\xd4\x0c\x4f\xdc\x0c\x10\x90\x14\x90\x73\x97\x7c\x91\x7c\xd4\x0c\x24\xf0\x0a\x03\x09\x56\x01\xdc\x12\x15\x97\x2b\x91\x2b\x98\x68\xd1\x12\x27\x88\x43\xf4\x06\x00\x09\x13\xd7\x08\x23\xd1\x08\x23\xd0\x24\x44\xc0\x68\xd0\x50\x57\xd4\x08\x58\xd8\x0f\x12\x88\x0a\xf8\xf0\x13\x02\x09\x12\xdc\x10\x13\x97\x0b\x91\x0b\x98\x48\xd0\x10\x25\xd8\x0c\x11\xfb\xf4\x08\x00\x10\x18\xf2\x00\x01\x09\x56\x01\xdc\x12\x1d\xa0\x0e\xa8\x78\xa8\x6c\xd0\x3a\x53\xd0\x1e\x54\xd3\x12\x55\xd0\x0c\x55\xf0\x03\x01\x09\x56\x01\xfa",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[26];
+ }
+zipimport_toplevel_consts_11_consts_10_exceptiontable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 25,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\xc2\x04\x42\x04\x44\x35\x00\xc4\x09\x13\x45\x0c\x00\xc4\x35\x14\x45\x09\x03\xc5\x0c\x19\x45\x25\x03",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[9];
+ }_object;
+ }
+zipimport_toplevel_consts_11_consts_10_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 9,
+ },
+ .ob_item = {
+ &_Py_ID(self),
+ & const_str_fullname._ascii.ob_base,
+ &_Py_ID(msg),
+ &_Py_ID(code),
+ & const_str_ispackage._ascii.ob_base,
+ & const_str_modpath._ascii.ob_base,
+ &_Py_ID(mod),
+ &_Py_ID(path),
+ & const_str_fullpath._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(720)
+zipimport_toplevel_consts_11_consts_10 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 360,
+ },
+ .co_consts = & zipimport_toplevel_consts_11_consts_10_consts._object.ob_base.ob_base,
+ .co_names = & zipimport_toplevel_consts_11_consts_10_names._object.ob_base.ob_base,
+ .co_exceptiontable = & zipimport_toplevel_consts_11_consts_10_exceptiontable.ob_base.ob_base,
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 15 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 6,
+ .co_firstlineno = 213,
+ .co_nlocalsplus = 9,
+ .co_nlocals = 9,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 229,
+ .co_localsplusnames = & zipimport_toplevel_consts_11_consts_10_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_61_localspluskinds.ob_base.ob_base,
+ .co_filename = & zipimport_toplevel_consts_7_filename._ascii.ob_base,
+ .co_name = & const_str_load_module._ascii.ob_base,
+ .co_qualname = & zipimport_toplevel_consts_11_consts_10_qualname._ascii.ob_base,
+ .co_linetable = & zipimport_toplevel_consts_11_consts_10_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x64\x01\x7d\x02\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x02\x74\x04\x00\x00\x00\x00\x00\x00\x00\x00\xab\x02\x00\x00\x00\x00\x00\x00\x01\x00\x74\x07\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x7c\x01\xab\x02\x00\x00\x00\x00\x00\x00\x5c\x03\x00\x00\x7d\x03\x7d\x04\x7d\x05\x74\x08\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x06\x7c\x06\x81\x10\x74\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x06\x74\x10\x00\x00\x00\x00\x00\x00\x00\x00\xab\x02\x00\x00\x00\x00\x00\x00\x73\x1e\x74\x11\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x06\x7c\x06\x74\x08\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x3c\x00\x00\x00\x7c\x00\x7c\x06\x5f\x09\x00\x00\x00\x00\x00\x00\x00\x00\x09\x00\x7c\x04\x72\x34\x74\x15\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x7c\x01\xab\x02\x00\x00\x00\x00\x00\x00\x7d\x07\x74\x17\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x6a\x1a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x07\xab\x02\x00\x00\x00\x00\x00\x00\x7d\x08\x7c\x08\x67\x01\x7c\x06\x5f\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x74\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x06\x64\x02\xab\x02\x00\x00\x00\x00\x00\x00\x73\x0b\x74\x20\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x06\x5f\x10\x00\x00\x00\x00\x00\x00\x00\x00\x74\x17\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x06\x6a\x24\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x7c\x05\xab\x03\x00\x00\x00\x00\x00\x00\x01\x00\x74\x27\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x03\x7c\x06\x6a\x24\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x02\x00\x00\x00\x00\x00\x00\x01\x00\x09\x00\x74\x08\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x19\x00\x00\x00\x7d\x06\x74\x2d\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x2e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x05\x7c\x01\x7c\x05\xab\x03\x00\x00\x00\x00\x00\x00\x01\x00\x7c\x06\x53\x00\x23\x00\x01\x00\x74\x08\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x3d\x00\x82\x00\x78\x03\x59\x00\x77\x01\x23\x00\x74\x28\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x72\x10\x01\x00\x74\x2b\x00\x00\x00\x00\x00\x00\x00\x00\x64\x03\x7c\x01\x9b\x02\x64\x04\x9d\x03\xab\x01\x00\x00\x00\x00\x00\x00\x82\x01\x77\x00\x78\x03\x59\x00\x77\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[205];
+ }
+zipimport_toplevel_consts_11_consts_11_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 204,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x52\x65\x74\x75\x72\x6e\x20\x74\x68\x65\x20\x52\x65\x73\x6f\x75\x72\x63\x65\x52\x65\x61\x64\x65\x72\x20\x66\x6f\x72\x20\x61\x20\x70\x61\x63\x6b\x61\x67\x65\x20\x69\x6e\x20\x61\x20\x7a\x69\x70\x20\x66\x69\x6c\x65\x2e\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x49\x66\x20\x27\x66\x75\x6c\x6c\x6e\x61\x6d\x65\x27\x20\x69\x73\x20\x61\x20\x70\x61\x63\x6b\x61\x67\x65\x20\x77\x69\x74\x68\x69\x6e\x20\x74\x68\x65\x20\x7a\x69\x70\x20\x66\x69\x6c\x65\x2c\x20\x72\x65\x74\x75\x72\x6e\x20\x74\x68\x65\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x27\x52\x65\x73\x6f\x75\x72\x63\x65\x52\x65\x61\x64\x65\x72\x27\x20\x6f\x62\x6a\x65\x63\x74\x20\x66\x6f\x72\x20\x74\x68\x65\x20\x70\x61\x63\x6b\x61\x67\x65\x2e\x20\x20\x4f\x74\x68\x65\x72\x77\x69\x73\x65\x20\x72\x65\x74\x75\x72\x6e\x20\x4e\x6f\x6e\x65\x2e\x0a\x20\x20\x20\x20\x20\x20\x20\x20",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[10];
+ }
+const_str_ZipReader = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 9,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "ZipReader",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+zipimport_toplevel_consts_11_consts_11_consts_3 = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & const_str_ZipReader._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[4];
+ }_object;
+ }
+zipimport_toplevel_consts_11_consts_11_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_item = {
+ & zipimport_toplevel_consts_11_consts_11_consts_0._ascii.ob_base,
+ Py_None,
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 0],
+ & zipimport_toplevel_consts_11_consts_11_consts_3._object.ob_base.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[4];
+ }_object;
+ }
+zipimport_toplevel_consts_11_consts_11_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_item = {
+ & const_str_is_package._ascii.ob_base,
+ & const_str_ZipImportError._ascii.ob_base,
+ & importlib__bootstrap_external_toplevel_consts_58_consts_8_names_0._ascii.ob_base,
+ & const_str_ZipReader._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[32];
+ }
+zipimport_toplevel_consts_11_consts_11_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 31,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "zipimporter.get_resource_reader",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[66];
+ }
+zipimport_toplevel_consts_11_consts_11_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 65,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf0\x0c\x04\x09\x18\xd8\x13\x17\x97\x3f\x91\x3f\xa0\x38\xd4\x13\x2c\xd8\x17\x1b\xf0\x03\x00\x14\x2d\xf5\x08\x00\x09\x30\xd9\x0f\x18\x98\x14\x98\x78\xd3\x0f\x28\xd0\x08\x28\xf8\xf4\x07\x00\x10\x1e\xf2\x00\x01\x09\x18\xd9\x13\x17\xf0\x03\x01\x09\x18\xfa",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[13];
+ }
+zipimport_toplevel_consts_11_consts_11_exceptiontable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 12,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x82\x11\x24\x00\xa4\x09\x30\x03\xaf\x01\x30\x03",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+zipimport_toplevel_consts_11_consts_11_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ &_Py_ID(self),
+ & const_str_fullname._ascii.ob_base,
+ & const_str_ZipReader._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(102)
+zipimport_toplevel_consts_11_consts_11 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 51,
+ },
+ .co_consts = & zipimport_toplevel_consts_11_consts_11_consts._object.ob_base.ob_base,
+ .co_names = & zipimport_toplevel_consts_11_consts_11_names._object.ob_base.ob_base,
+ .co_exceptiontable = & zipimport_toplevel_consts_11_consts_11_exceptiontable.ob_base.ob_base,
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 7 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 256,
+ .co_nlocalsplus = 3,
+ .co_nlocals = 3,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 230,
+ .co_localsplusnames = & zipimport_toplevel_consts_11_consts_11_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_3_localspluskinds.ob_base.ob_base,
+ .co_filename = & zipimport_toplevel_consts_7_filename._ascii.ob_base,
+ .co_name = & const_str_get_resource_reader._ascii.ob_base,
+ .co_qualname = & zipimport_toplevel_consts_11_consts_11_qualname._ascii.ob_base,
+ .co_linetable = & zipimport_toplevel_consts_11_consts_11_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x09\x00\x7c\x00\x6a\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\xab\x01\x00\x00\x00\x00\x00\x00\x73\x01\x79\x01\x09\x00\x64\x02\x64\x03\x6c\x02\x6d\x03\x7d\x02\x01\x00\x02\x00\x7c\x02\x7c\x00\x7c\x01\xab\x02\x00\x00\x00\x00\x00\x00\x53\x00\x23\x00\x74\x02\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x72\x03\x01\x00\x59\x00\x79\x01\x77\x00\x78\x03\x59\x00\x77\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[42];
+ }
+zipimport_toplevel_consts_11_consts_12_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 41,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Reload the file data of the archive path.",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+zipimport_toplevel_consts_11_consts_12_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & zipimport_toplevel_consts_11_consts_12_consts_0._ascii.ob_base,
+ Py_None,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[6];
+ }_object;
+ }
+zipimport_toplevel_consts_11_consts_12_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 6,
+ },
+ .ob_item = {
+ & const_str__read_directory._ascii.ob_base,
+ & const_str_archive._ascii.ob_base,
+ & const_str__files._ascii.ob_base,
+ & const_str__zip_directory_cache._ascii.ob_base,
+ & const_str_ZipImportError._ascii.ob_base,
+ & const_str_pop._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[30];
+ }
+zipimport_toplevel_consts_11_consts_12_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 29,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "zipimporter.invalidate_caches",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[85];
+ }
+zipimport_toplevel_consts_11_consts_12_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 84,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf0\x04\x05\x09\x1d\xdc\x1a\x29\xa8\x24\xaf\x2c\xa9\x2c\xd3\x1a\x37\x88\x44\x8c\x4b\xd8\x31\x35\xb7\x1b\xb1\x1b\xd4\x0c\x20\xa0\x14\xa7\x1c\xa1\x1c\xd2\x0c\x2e\xf8\xdc\x0f\x1d\xf2\x00\x02\x09\x1d\xdc\x0c\x20\xd7\x0c\x24\xd1\x0c\x24\xa0\x54\xa7\x5c\xa1\x5c\xb0\x34\xd4\x0c\x38\xd8\x1a\x1c\x88\x44\x8e\x4b\xf0\x05\x02\x09\x1d\xfa",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[16];
+ }
+zipimport_toplevel_consts_11_consts_12_exceptiontable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 15,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x82\x37\x3a\x00\xba\x30\x41\x2d\x03\xc1\x2c\x01\x41\x2d\x03",
+};
+static
+ struct _PyCode_DEF(224)
+zipimport_toplevel_consts_11_consts_12 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 112,
+ },
+ .co_consts = & zipimport_toplevel_consts_11_consts_12_consts._object.ob_base.ob_base,
+ .co_names = & zipimport_toplevel_consts_11_consts_12_names._object.ob_base.ob_base,
+ .co_exceptiontable = & zipimport_toplevel_consts_11_consts_12_exceptiontable.ob_base.ob_base,
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 6 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 5,
+ .co_firstlineno = 271,
+ .co_nlocalsplus = 1,
+ .co_nlocals = 1,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 231,
+ .co_localsplusnames = & importlib__bootstrap_toplevel_consts_7_consts_2_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_characters[32]),
+ .co_filename = & zipimport_toplevel_consts_7_filename._ascii.ob_base,
+ .co_name = & const_str_invalidate_caches._ascii.ob_base,
+ .co_qualname = & zipimport_toplevel_consts_11_consts_12_qualname._ascii.ob_base,
+ .co_linetable = & zipimport_toplevel_consts_11_consts_12_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x09\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7c\x00\x5f\x02\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x6a\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x74\x06\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3c\x00\x00\x00\x79\x01\x23\x00\x74\x08\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x72\x2a\x01\x00\x74\x06\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x01\xab\x02\x00\x00\x00\x00\x00\x00\x01\x00\x69\x00\x7c\x00\x5f\x02\x00\x00\x00\x00\x00\x00\x00\x00\x59\x00\x79\x01\x77\x00\x78\x03\x59\x00\x77\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[22];
+ }
+zipimport_toplevel_consts_11_consts_13_consts_1 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 21,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "<zipimporter object \"",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[3];
+ }
+zipimport_toplevel_consts_11_consts_13_consts_2 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 2,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\">",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+zipimport_toplevel_consts_11_consts_13_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ Py_None,
+ & zipimport_toplevel_consts_11_consts_13_consts_1._ascii.ob_base,
+ & zipimport_toplevel_consts_11_consts_13_consts_2._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+zipimport_toplevel_consts_11_consts_13_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ & const_str_archive._ascii.ob_base,
+ & const_str_path_sep._ascii.ob_base,
+ & const_str_prefix._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[21];
+ }
+zipimport_toplevel_consts_11_consts_13_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 20,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "zipimporter.__repr__",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[34];
+ }
+zipimport_toplevel_consts_11_consts_13_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 33,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xd8\x11\x26\xa0\x74\xa7\x7c\xa1\x7c\xa0\x6e\xb4\x58\xb0\x4a\xb8\x74\xbf\x7b\xb9\x7b\xb8\x6d\xc8\x32\xd0\x0f\x4e\xd0\x08\x4e",
+};
+static
+ struct _PyCode_DEF(70)
+zipimport_toplevel_consts_11_consts_13 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 35,
+ },
+ .co_consts = & zipimport_toplevel_consts_11_consts_13_consts._object.ob_base.ob_base,
+ .co_names = & zipimport_toplevel_consts_11_consts_13_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 6 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 5,
+ .co_firstlineno = 281,
+ .co_nlocalsplus = 1,
+ .co_nlocals = 1,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 232,
+ .co_localsplusnames = & importlib__bootstrap_toplevel_consts_7_consts_2_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_characters[32]),
+ .co_filename = & zipimport_toplevel_consts_7_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__repr__),
+ .co_qualname = & zipimport_toplevel_consts_11_consts_13_qualname._ascii.ob_base,
+ .co_linetable = & zipimport_toplevel_consts_11_consts_13_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x64\x01\x7c\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9b\x00\x74\x02\x00\x00\x00\x00\x00\x00\x00\x00\x9b\x00\x7c\x00\x6a\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9b\x00\x64\x02\x9d\x05\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[15];
+ }_object;
+ }
+zipimport_toplevel_consts_11_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 15,
+ },
+ .ob_item = {
+ & const_str_zipimporter._ascii.ob_base,
+ & zipimport_toplevel_consts_11_consts_1._ascii.ob_base,
+ & zipimport_toplevel_consts_11_consts_2.ob_base.ob_base,
+ Py_None,
+ & zipimport_toplevel_consts_11_consts_4.ob_base.ob_base,
+ & zipimport_toplevel_consts_11_consts_5.ob_base.ob_base,
+ & zipimport_toplevel_consts_11_consts_6.ob_base.ob_base,
+ & zipimport_toplevel_consts_11_consts_7.ob_base.ob_base,
+ & zipimport_toplevel_consts_11_consts_8.ob_base.ob_base,
+ & zipimport_toplevel_consts_11_consts_9.ob_base.ob_base,
+ & zipimport_toplevel_consts_11_consts_10.ob_base.ob_base,
+ & zipimport_toplevel_consts_11_consts_11.ob_base.ob_base,
+ & zipimport_toplevel_consts_11_consts_12.ob_base.ob_base,
+ & zipimport_toplevel_consts_11_consts_13.ob_base.ob_base,
+ & importlib__bootstrap_toplevel_consts_1_consts._object.ob_base.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[15];
+ }_object;
+ }
+zipimport_toplevel_consts_11_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 15,
+ },
+ .ob_item = {
+ &_Py_ID(__name__),
+ &_Py_ID(__module__),
+ &_Py_ID(__qualname__),
+ &_Py_ID(__doc__),
+ &_Py_ID(__init__),
+ & const_str_find_spec._ascii.ob_base,
+ & const_str_get_code._ascii.ob_base,
+ & const_str_get_data._ascii.ob_base,
+ & const_str_get_filename._ascii.ob_base,
+ &_Py_ID(get_source),
+ & const_str_is_package._ascii.ob_base,
+ & const_str_load_module._ascii.ob_base,
+ & const_str_get_resource_reader._ascii.ob_base,
+ & const_str_invalidate_caches._ascii.ob_base,
+ &_Py_ID(__repr__),
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[66];
+ }
+zipimport_toplevel_consts_11_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 65,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x84\x00\xf1\x02\x0c\x05\x08\xf2\x22\x25\x05\x24\xf3\x50\x01\x19\x05\x1c\xf2\x36\x07\x05\x14\xf2\x14\x11\x05\x32\xf2\x2a\x09\x05\x17\xf2\x18\x16\x05\x3b\xf2\x34\x09\x05\x12\xf2\x1a\x28\x05\x13\xf2\x56\x01\x0c\x05\x29\xf2\x1e\x07\x05\x1d\xf3\x14\x01\x05\x4f\x01",
+};
+static
+ struct _PyCode_DEF(84)
+zipimport_toplevel_consts_11 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 42,
+ },
+ .co_consts = & zipimport_toplevel_consts_11_consts._object.ob_base.ob_base,
+ .co_names = & zipimport_toplevel_consts_11_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 0,
+ .co_argcount = 0,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 2 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 2,
+ .co_firstlineno = 46,
+ .co_nlocalsplus = 0,
+ .co_nlocals = 0,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 233,
+ .co_localsplusnames = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_filename = & zipimport_toplevel_consts_7_filename._ascii.ob_base,
+ .co_name = & const_str_zipimporter._ascii.ob_base,
+ .co_qualname = & const_str_zipimporter._ascii.ob_base,
+ .co_linetable = & zipimport_toplevel_consts_11_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x65\x00\x5a\x01\x64\x00\x5a\x02\x64\x01\x5a\x03\x64\x02\x84\x00\x5a\x04\x64\x0e\x64\x04\x84\x01\x5a\x05\x64\x05\x84\x00\x5a\x06\x64\x06\x84\x00\x5a\x07\x64\x07\x84\x00\x5a\x08\x64\x08\x84\x00\x5a\x09\x64\x09\x84\x00\x5a\x0a\x64\x0a\x84\x00\x5a\x0b\x64\x0b\x84\x00\x5a\x0c\x64\x0c\x84\x00\x5a\x0d\x64\x0d\x84\x00\x5a\x0e\x79\x03",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[13];
+ }
+zipimport_toplevel_consts_12 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 12,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "__init__.pyc",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+zipimport_toplevel_consts_16 = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ & importlib__bootstrap_external_toplevel_consts_34._ascii.ob_base,
+ Py_True,
+ Py_False,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+zipimport_toplevel_consts_17 = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ & importlib__bootstrap_toplevel_consts_46_consts_5_consts_12._ascii.ob_base,
+ Py_False,
+ Py_False,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+zipimport_toplevel_consts_18_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ Py_None,
+ &_Py_STR(dot),
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 2],
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+zipimport_toplevel_consts_18_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & const_str_prefix._ascii.ob_base,
+ & const_str_rpartition._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[34];
+ }
+zipimport_toplevel_consts_18_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 33,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xd8\x0b\x0f\x8f\x3b\x89\x3b\x98\x18\xd7\x19\x2c\xd1\x19\x2c\xa8\x53\xd3\x19\x31\xb0\x21\xd1\x19\x34\xd1\x0b\x34\xd0\x04\x34",
+};
+static
+ struct _PyCode_DEF(68)
+zipimport_toplevel_consts_18 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 34,
+ },
+ .co_consts = & zipimport_toplevel_consts_18_consts._object.ob_base.ob_base,
+ .co_names = & zipimport_toplevel_consts_18_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 6 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 299,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 2,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 234,
+ .co_localsplusnames = & importlib__bootstrap_external_toplevel_consts_54_consts_5_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_14_consts_2_localspluskinds.ob_base.ob_base,
+ .co_filename = & zipimport_toplevel_consts_7_filename._ascii.ob_base,
+ .co_name = & const_str__get_module_path._ascii.ob_base,
+ .co_qualname = & const_str__get_module_path._ascii.ob_base,
+ .co_linetable = & zipimport_toplevel_consts_18_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x6a\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x01\xab\x01\x00\x00\x00\x00\x00\x00\x64\x02\x19\x00\x00\x00\x7a\x00\x00\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+zipimport_toplevel_consts_19_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & const_str_path_sep._ascii.ob_base,
+ & const_str__files._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[29];
+ }
+zipimport_toplevel_consts_19_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 28,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf0\x08\x00\x0f\x13\x94\x58\x89\x6f\x80\x47\xe0\x0b\x12\x90\x64\x97\x6b\x91\x6b\xd0\x0b\x21\xd0\x04\x21",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[8];
+ }
+const_str_dirpath = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 7,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "dirpath",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+zipimport_toplevel_consts_19_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ &_Py_ID(self),
+ &_Py_ID(path),
+ & const_str_dirpath._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(48)
+zipimport_toplevel_consts_19 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 24,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_1_consts._object.ob_base.ob_base,
+ .co_names = & zipimport_toplevel_consts_19_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 5 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 2,
+ .co_firstlineno = 303,
+ .co_nlocalsplus = 3,
+ .co_nlocals = 3,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 235,
+ .co_localsplusnames = & zipimport_toplevel_consts_19_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_3_localspluskinds.ob_base.ob_base,
+ .co_filename = & zipimport_toplevel_consts_7_filename._ascii.ob_base,
+ .co_name = & const_str__is_dir._ascii.ob_base,
+ .co_qualname = & const_str__is_dir._ascii.ob_base,
+ .co_linetable = & zipimport_toplevel_consts_19_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x01\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7a\x00\x00\x00\x7d\x02\x7c\x02\x7c\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x76\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[17];
+ }
+const_str__zip_searchorder = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 16,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_zip_searchorder",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+zipimport_toplevel_consts_20_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ & const_str__get_module_path._ascii.ob_base,
+ & const_str__zip_searchorder._ascii.ob_base,
+ & const_str__files._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[69];
+ }
+zipimport_toplevel_consts_20_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 68,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xdc\x0b\x1b\x98\x44\xa0\x28\xd3\x0b\x2b\x80\x44\xdc\x29\x39\xf2\x00\x03\x05\x1d\xd1\x08\x25\x88\x06\x90\x0a\x98\x49\xd8\x13\x17\x98\x26\x91\x3d\x88\x08\xd8\x0b\x13\x90\x74\x97\x7b\x91\x7b\xd2\x0b\x22\xd8\x13\x1c\xd2\x0c\x1c\xf0\x07\x03\x05\x1d\xf0\x08\x00\x0c\x10",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[11];
+ }
+const_str_isbytecode = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 10,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "isbytecode",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[7];
+ }_object;
+ }
+zipimport_toplevel_consts_20_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 7,
+ },
+ .ob_item = {
+ &_Py_ID(self),
+ & const_str_fullname._ascii.ob_base,
+ &_Py_ID(path),
+ & const_str_suffix._ascii.ob_base,
+ & const_str_isbytecode._ascii.ob_base,
+ & const_str_ispackage._ascii.ob_base,
+ & const_str_fullpath._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(104)
+zipimport_toplevel_consts_20 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 52,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_1_consts._object.ob_base.ob_base,
+ .co_names = & zipimport_toplevel_consts_20_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 11 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 312,
+ .co_nlocalsplus = 7,
+ .co_nlocals = 7,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 236,
+ .co_localsplusnames = & zipimport_toplevel_consts_20_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_46_consts_9_localspluskinds.ob_base.ob_base,
+ .co_filename = & zipimport_toplevel_consts_7_filename._ascii.ob_base,
+ .co_name = & const_str__get_module_info._ascii.ob_base,
+ .co_qualname = & const_str__get_module_info._ascii.ob_base,
+ .co_linetable = & zipimport_toplevel_consts_20_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x7c\x01\xab\x02\x00\x00\x00\x00\x00\x00\x7d\x02\x74\x02\x00\x00\x00\x00\x00\x00\x00\x00\x44\x00\x5d\x1d\x00\x00\x5c\x03\x00\x00\x7d\x03\x7d\x04\x7d\x05\x7c\x02\x7c\x03\x7a\x00\x00\x00\x7d\x06\x7c\x06\x7c\x00\x6a\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x76\x00\x73\x01\x8c\x1b\x7c\x05\x63\x02\x01\x00\x53\x00\x04\x00\x79\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[22];
+ }
+zipimport_toplevel_consts_21_consts_1 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 21,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "can't open Zip file: ",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[22];
+ }
+zipimport_toplevel_consts_21_consts_4 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 21,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "can't read Zip file: ",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[17];
+ }
+zipimport_toplevel_consts_21_consts_7 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 16,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "not a Zip file: ",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[19];
+ }
+zipimport_toplevel_consts_21_consts_8 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 18,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "corrupt Zip file: ",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[29];
+ }
+zipimport_toplevel_consts_21_consts_12 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 28,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "bad central directory size: ",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[31];
+ }
+zipimport_toplevel_consts_21_consts_13 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 30,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "bad central directory offset: ",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[39];
+ }
+zipimport_toplevel_consts_21_consts_14 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 38,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "bad central directory size or offset: ",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[28];
+ }
+zipimport_toplevel_consts_21_consts_16 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 27,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "EOF read where not expected",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[5];
+ }
+zipimport_toplevel_consts_21_consts_17 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x50\x4b\x01\x02",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[26];
+ }
+zipimport_toplevel_consts_21_consts_27 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 25,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "bad local header offset: ",
+};
+static
+ struct {
+ PyObject ob_base;
+ uintptr_t lv_tag;
+ digit ob_digit[1];
+ }
+const_int_2048 = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyLong_Type,
+ },
+ .lv_tag = TAG_FROM_SIGN_AND_SIZE(1, 1),
+ .ob_digit = { 2048 },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[6];
+ }
+const_str_ascii = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 5,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "ascii",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[34];
+ }
+zipimport_toplevel_consts_21_consts_33 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 33,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "zipimport: found {} names in {!r}",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[34];
+ }_object;
+ }
+zipimport_toplevel_consts_21_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 34,
+ },
+ .ob_item = {
+ Py_None,
+ & zipimport_toplevel_consts_21_consts_1._ascii.ob_base,
+ & importlib__bootstrap_external_toplevel_consts_18_localsplusnames._object.ob_base.ob_base,
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 2],
+ & zipimport_toplevel_consts_21_consts_4._ascii.ob_base,
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 4],
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 0],
+ & zipimport_toplevel_consts_21_consts_7._ascii.ob_base,
+ & zipimport_toplevel_consts_21_consts_8._ascii.ob_base,
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 12],
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 16],
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 20],
+ & zipimport_toplevel_consts_21_consts_12._ascii.ob_base,
+ & zipimport_toplevel_consts_21_consts_13._ascii.ob_base,
+ & zipimport_toplevel_consts_21_consts_14._ascii.ob_base,
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 46],
+ & zipimport_toplevel_consts_21_consts_16._ascii.ob_base,
+ & zipimport_toplevel_consts_21_consts_17.ob_base.ob_base,
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 8],
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 10],
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 14],
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 24],
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 28],
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 30],
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 32],
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 34],
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 42],
+ & zipimport_toplevel_consts_21_consts_27._ascii.ob_base,
+ & const_int_2048.ob_base,
+ & const_str_ascii._ascii.ob_base,
+ &_Py_ID(latin1),
+ (PyObject *)&_Py_SINGLETON(strings).ascii[47],
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 1],
+ & zipimport_toplevel_consts_21_consts_33._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[21];
+ }
+const_str_END_CENTRAL_DIR_SIZE = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 20,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "END_CENTRAL_DIR_SIZE",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[19];
+ }
+const_str_STRING_END_ARCHIVE = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 18,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "STRING_END_ARCHIVE",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[16];
+ }
+const_str_MAX_COMMENT_LEN = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 15,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "MAX_COMMENT_LEN",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[19];
+ }
+const_str_UnicodeDecodeError = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 18,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "UnicodeDecodeError",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[12];
+ }
+const_str_cp437_table = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 11,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "cp437_table",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[26];
+ }_object;
+ }
+zipimport_toplevel_consts_21_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 26,
+ },
+ .ob_item = {
+ &_Py_ID(_io),
+ & const_str_open_code._ascii.ob_base,
+ & const_str_OSError._ascii.ob_base,
+ & const_str_ZipImportError._ascii.ob_base,
+ &_Py_ID(tell),
+ &_Py_ID(seek),
+ & const_str_END_CENTRAL_DIR_SIZE._ascii.ob_base,
+ &_Py_ID(read),
+ &_Py_ID(len),
+ & const_str_STRING_END_ARCHIVE._ascii.ob_base,
+ & const_str_max._ascii.ob_base,
+ & const_str_MAX_COMMENT_LEN._ascii.ob_base,
+ & const_str_rfind._ascii.ob_base,
+ & const_str__unpack_uint32._ascii.ob_base,
+ & const_str_EOFError._ascii.ob_base,
+ & const_str__unpack_uint16._ascii.ob_base,
+ &_Py_ID(decode),
+ & const_str_UnicodeDecodeError._ascii.ob_base,
+ &_Py_ID(translate),
+ & const_str_cp437_table._ascii.ob_base,
+ &_Py_ID(replace),
+ & const_str_path_sep._ascii.ob_base,
+ & const_str__bootstrap_external._ascii.ob_base,
+ & const_str__path_join._ascii.ob_base,
+ &_Py_ID(_bootstrap),
+ & const_str__verbose_message._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[1506];
+ }
+zipimport_toplevel_consts_21_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 1505,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf0\x02\x03\x05\x50\x01\xdc\x0d\x10\x8f\x5d\x89\x5d\x98\x37\xd3\x0d\x23\x88\x02\xf0\x08\x00\x0a\x0c\xf1\x00\x73\x01\x05\x22\xf0\x08\x00\x18\x1a\x97\x77\x91\x77\x93\x79\x88\x0c\xf0\x02\x6e\x01\x09\x22\xf0\x02\x05\x0d\x58\x01\xd8\x10\x12\x97\x07\x91\x07\xd4\x19\x2d\xd0\x18\x2d\xa8\x71\xd4\x10\x31\xd8\x22\x24\xa7\x27\xa1\x27\xa3\x29\x90\x0f\xd8\x19\x1b\x9f\x17\x99\x17\xd4\x21\x35\xd3\x19\x36\x90\x06\xf4\x06\x00\x10\x13\x90\x36\x8b\x7b\xd4\x1e\x32\xd2\x0f\x32\xdc\x16\x24\xd0\x27\x3c\xb8\x57\xb8\x4b\xd0\x25\x48\xc8\x77\xd4\x16\x57\xd0\x10\x57\xd8\x0f\x15\x90\x62\x90\x71\x88\x7a\xd4\x1d\x2f\xd2\x0f\x2f\xf0\x06\x05\x11\x37\xd8\x14\x16\x97\x47\x91\x47\x98\x41\x98\x71\x94\x4d\xd8\x20\x22\xa7\x07\xa1\x07\xa3\x09\x90\x49\xf4\x08\x00\x25\x28\xa8\x09\xb4\x4f\xd1\x28\x43\xdc\x28\x3c\xf1\x03\x01\x29\x3d\xd8\x3e\x3f\xf3\x03\x01\x25\x41\x01\xd0\x10\x21\xf0\x04\x05\x11\x37\xd8\x14\x16\x97\x47\x91\x47\xd0\x1c\x2d\xd4\x14\x2e\xd8\x1b\x1d\x9f\x37\x99\x37\x9b\x39\x90\x44\xf0\x08\x00\x17\x1b\x97\x6a\x91\x6a\xd4\x21\x33\xd3\x16\x34\x90\x03\xd8\x13\x16\x98\x11\x92\x37\xdc\x1a\x28\xd0\x2b\x3b\xb8\x47\xb8\x3b\xd0\x29\x47\xd8\x2e\x35\xf4\x03\x01\x1b\x37\xf0\x00\x01\x15\x37\xe0\x19\x1d\x98\x63\xa0\x23\xd4\x26\x3a\xd1\x22\x3a\xd0\x19\x3b\x90\x06\xdc\x13\x16\x90\x76\x93\x3b\xd4\x22\x36\xd2\x13\x36\xdc\x1a\x28\xd0\x2b\x3d\xb8\x67\xb8\x5b\xd0\x29\x49\xd8\x2e\x35\xf4\x03\x01\x1b\x37\xf0\x00\x01\x15\x37\xe0\x22\x2b\xac\x63\xb0\x24\xab\x69\xd1\x22\x37\xb8\x23\xd1\x22\x3d\x90\x0f\xe4\x1a\x28\xa8\x16\xb0\x02\xb0\x32\xa8\x1d\xd3\x1a\x37\x88\x4b\xdc\x1c\x2a\xa8\x36\xb0\x22\xb0\x52\xa8\x3d\xd3\x1c\x39\x88\x4d\xd8\x0f\x1e\xa0\x1b\xd2\x0f\x2c\xdc\x16\x24\xd0\x27\x43\xc0\x47\xc0\x3b\xd0\x25\x4f\xd0\x56\x5d\xd4\x16\x5e\xd0\x10\x5e\xd8\x0f\x1e\xa0\x1d\xd2\x0f\x2e\xdc\x16\x24\xd0\x27\x45\xc0\x67\xc0\x5b\xd0\x25\x51\xd0\x58\x5f\xd4\x16\x60\xd0\x10\x60\xd8\x0c\x1b\x98\x7b\xd1\x0c\x2a\x88\x4f\xd8\x19\x28\xa8\x3d\xd1\x19\x38\x88\x4a\xd8\x0f\x19\x98\x41\x8a\x7e\xdc\x16\x24\xd0\x27\x4d\xc8\x67\xc8\x5b\xd0\x25\x59\xd0\x60\x67\xd4\x16\x68\xd0\x10\x68\xe0\x14\x16\x88\x45\xe0\x14\x15\x88\x45\xf0\x02\x03\x0d\x58\x01\xd8\x10\x12\x97\x07\x91\x07\x98\x0f\xd4\x10\x28\xf0\x06\x00\x13\x17\xd8\x19\x1b\x9f\x17\x99\x17\xa0\x12\x9b\x1b\x90\x06\xdc\x13\x16\x90\x76\x93\x3b\xa0\x11\x92\x3f\xdc\x1a\x22\xd0\x23\x40\xd3\x1a\x41\xd0\x14\x41\xe0\x13\x19\x98\x22\x98\x31\x90\x3a\xa0\x1d\xd2\x13\x2e\xd9\x14\x19\xdc\x13\x16\x90\x76\x93\x3b\xa0\x22\xd2\x13\x24\xdc\x1a\x22\xd0\x23\x40\xd3\x1a\x41\xd0\x14\x41\xdc\x18\x26\xa0\x76\xa8\x61\xb0\x02\xa0\x7c\xd3\x18\x34\x90\x05\xdc\x1b\x29\xa8\x26\xb0\x12\xb0\x42\xa8\x2d\xd3\x1b\x38\x90\x08\xdc\x17\x25\xa0\x66\xa8\x52\xb0\x02\xa0\x6d\xd3\x17\x34\x90\x04\xdc\x17\x25\xa0\x66\xa8\x52\xb0\x02\xa0\x6d\xd3\x17\x34\x90\x04\xdc\x16\x24\xa0\x56\xa8\x42\xa8\x72\xa0\x5d\xd3\x16\x33\x90\x03\xdc\x1c\x2a\xa8\x36\xb0\x22\xb0\x52\xa8\x3d\xd3\x1c\x39\x90\x09\xdc\x1c\x2a\xa8\x36\xb0\x22\xb0\x52\xa8\x3d\xd3\x1c\x39\x90\x09\xdc\x1c\x2a\xa8\x36\xb0\x22\xb0\x52\xa8\x3d\xd3\x1c\x39\x90\x09\xdc\x1d\x2b\xa8\x46\xb0\x32\xb0\x62\xa8\x4d\xd3\x1d\x3a\x90\x0a\xdc\x1f\x2d\xa8\x66\xb0\x52\xb8\x02\xa8\x6d\xd3\x1f\x3c\x90\x0c\xdc\x1e\x2c\xa8\x56\xb0\x42\xb0\x72\xa8\x5d\xd3\x1e\x3b\x90\x0b\xd8\x1e\x27\xa8\x2a\xd1\x1e\x34\xb0\x7c\xd1\x1e\x43\x90\x0b\xd8\x13\x1e\xa0\x1d\xd2\x13\x2e\xdc\x1a\x28\xd0\x2b\x44\xc0\x57\xc0\x4b\xd0\x29\x50\xd0\x57\x5e\xd4\x1a\x5f\xd0\x14\x5f\xd8\x10\x1b\x98\x7a\xd1\x10\x29\x90\x0b\xf0\x04\x03\x11\x5c\x01\xd8\x1b\x1d\x9f\x37\x99\x37\xa0\x39\xd3\x1b\x2d\x90\x44\xf4\x06\x00\x14\x17\x90\x74\x93\x39\xa0\x09\xd2\x13\x29\xdc\x1a\x28\xd0\x2b\x40\xc0\x17\xc0\x0b\xd0\x29\x4c\xd0\x53\x5a\xd4\x1a\x5b\xd0\x14\x5b\xf0\x08\x04\x11\x5c\x01\xdc\x17\x1a\x98\x32\x9f\x37\x99\x37\xa0\x3b\xb0\x19\xd1\x23\x3a\xd3\x1b\x3b\xd3\x17\x3c\xc0\x0b\xc8\x69\xd1\x40\x57\xd2\x17\x57\xdc\x1e\x2c\xd0\x2f\x44\xc0\x57\xc0\x4b\xd0\x2d\x50\xd0\x57\x5e\xd4\x1e\x5f\xd0\x18\x5f\xf0\x03\x00\x18\x58\x01\xf0\x0a\x00\x14\x19\x98\x35\x92\x3d\xe0\x1b\x1f\x9f\x3b\x99\x3b\x9b\x3d\x91\x44\xf0\x06\x03\x15\x4c\x01\xd8\x1f\x23\x9f\x7b\x99\x7b\xa8\x37\xd3\x1f\x33\x98\x04\xf0\x08\x00\x18\x1c\x97\x7c\x91\x7c\xa0\x43\xac\x18\xd3\x17\x32\x90\x04\xdc\x17\x2a\xd7\x17\x35\xd1\x17\x35\xb0\x67\xb8\x74\xd3\x17\x44\x90\x04\xd8\x15\x19\x98\x38\xa0\x59\xb0\x09\xb8\x3b\xc8\x04\xc8\x64\xd0\x54\x57\xd0\x14\x58\x90\x01\xd8\x1e\x1f\x90\x05\x90\x64\x91\x0b\xd8\x10\x15\x98\x11\x91\x0a\x90\x05\xf1\x6d\x01\x00\x13\x17\xf0\x0c\x00\x15\x1a\xf0\x64\x01\x00\x0d\x0f\x8f\x47\x89\x47\x90\x4c\xd5\x0c\x21\xf7\x67\x03\x73\x01\x05\x22\xf4\x68\x03\x00\x05\x0f\xd7\x04\x1f\xd1\x04\x1f\xd0\x20\x43\xc0\x55\xc8\x47\xd4\x04\x54\xd8\x0b\x10\x80\x4c\xf8\xf4\x71\x03\x00\x0c\x13\xf2\x00\x01\x05\x50\x01\xdc\x0e\x1c\xd0\x1f\x34\xb0\x57\xb0\x4b\xd0\x1d\x40\xc0\x77\xd4\x0e\x4f\xd0\x08\x4f\xf0\x03\x01\x05\x50\x01\xfb\xf4\x1a\x00\x14\x1b\xf2\x00\x01\x0d\x58\x01\xdc\x16\x24\xd0\x27\x3c\xb8\x57\xb8\x4b\xd0\x25\x48\xc8\x77\xd4\x16\x57\xd0\x10\x57\xf0\x03\x01\x0d\x58\x01\xfb\xf4\x14\x00\x18\x1f\xf2\x00\x02\x11\x37\xdc\x1a\x28\xd0\x2b\x40\xc0\x17\xc0\x0b\xd0\x29\x4c\xd8\x2e\x35\xf4\x03\x01\x1b\x37\xf0\x00\x01\x15\x37\xf0\x03\x02\x11\x37\xfb\xf4\x10\x00\x18\x1f\xf2\x00\x02\x11\x37\xdc\x1a\x28\xd0\x2b\x40\xc0\x17\xc0\x0b\xd0\x29\x4c\xd8\x2e\x35\xf4\x03\x01\x1b\x37\xf0\x00\x01\x15\x37\xf0\x03\x02\x11\x37\xfb\xf4\x3a\x00\x14\x1b\xf2\x00\x01\x0d\x58\x01\xdc\x16\x24\xd0\x27\x3c\xb8\x57\xb8\x4b\xd0\x25\x48\xc8\x77\xd4\x16\x57\xd0\x10\x57\xf0\x03\x01\x0d\x58\x01\xfb\xf4\x3a\x00\x18\x1f\xf2\x00\x01\x11\x5c\x01\xdc\x1a\x28\xd0\x2b\x40\xc0\x17\xc0\x0b\xd0\x29\x4c\xd0\x53\x5a\xd4\x1a\x5b\xd0\x14\x5b\xf0\x03\x01\x11\x5c\x01\xfb\xf4\x14\x00\x18\x1f\xf2\x00\x01\x11\x5c\x01\xdc\x1a\x28\xd0\x2b\x40\xc0\x17\xc0\x0b\xd0\x29\x4c\xd0\x53\x5a\xd4\x1a\x5b\xd0\x14\x5b\xf0\x03\x01\x11\x5c\x01\xfb\xf4\x14\x00\x1c\x2e\xf2\x00\x01\x15\x4c\x01\xd8\x1f\x23\x9f\x7b\x99\x7b\xa8\x38\xd3\x1f\x34\xd7\x1f\x3e\xd1\x1f\x3e\xbc\x7b\xd3\x1f\x4b\x9b\x04\xf0\x03\x01\x15\x4c\x01\xfb\xf0\x12\x00\x0d\x0f\x8f\x47\x89\x47\x90\x4c\xd5\x0c\x21\xfa\xf7\x67\x03\x73\x01\x05\x22\xf1\x00\x73\x01\x05\x22\xfa",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[223];
+ }
+zipimport_toplevel_consts_21_exceptiontable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 222,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x82\x15\x4f\x26\x00\x99\x11\x53\x3b\x03\xac\x3c\x50\x03\x02\xc1\x28\x2e\x53\x25\x02\xc2\x17\x22\x50\x20\x02\xc2\x39\x1a\x53\x25\x02\xc3\x14\x21\x50\x3d\x02\xc3\x35\x43\x12\x53\x25\x02\xc7\x08\x11\x51\x1a\x02\xc7\x19\x44\x0a\x53\x25\x02\xcb\x24\x11\x51\x37\x02\xcb\x35\x1e\x53\x25\x02\xcc\x14\x33\x52\x14\x02\xcd\x07\x17\x53\x25\x02\xcd\x1f\x11\x52\x31\x02\xcd\x30\x41\x02\x53\x25\x02\xce\x33\x11\x53\x3b\x03\xcf\x26\x1a\x50\x00\x03\xd0\x03\x1a\x50\x1d\x05\xd0\x1d\x03\x53\x25\x02\xd0\x20\x1a\x50\x3a\x05\xd0\x3a\x03\x53\x25\x02\xd0\x3d\x1a\x51\x17\x05\xd1\x17\x03\x53\x25\x02\xd1\x1a\x1a\x51\x34\x05\xd1\x34\x03\x53\x25\x02\xd1\x37\x1a\x52\x11\x05\xd2\x11\x03\x53\x25\x02\xd2\x14\x1a\x52\x2e\x05\xd2\x2e\x03\x53\x25\x02\xd2\x31\x2d\x53\x22\x05\xd3\x1e\x03\x53\x25\x02\xd3\x21\x01\x53\x22\x05\xd3\x22\x03\x53\x25\x02\xd3\x25\x13\x53\x38\x05\xd3\x38\x03\x53\x3b\x03\xd3\x3b\x05\x54\x05\x07",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[3];
+ }
+const_str_fp = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 2,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "fp",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[13];
+ }
+const_str_start_offset = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 12,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "start_offset",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[16];
+ }
+const_str_header_position = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 15,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "header_position",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[10];
+ }
+const_str_file_size = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 9,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "file_size",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[18];
+ }
+const_str_max_comment_start = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 17,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "max_comment_start",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[12];
+ }
+const_str_header_size = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 11,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "header_size",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[14];
+ }
+const_str_header_offset = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 13,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "header_offset",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[11];
+ }
+const_str_arc_offset = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 10,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "arc_offset",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[9];
+ }
+const_str_compress = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 8,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "compress",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[5];
+ }
+const_str_time = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 4,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "time",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[5];
+ }
+const_str_date = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 4,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "date",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[4];
+ }
+const_str_crc = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 3,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "crc",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[10];
+ }
+const_str_data_size = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 9,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "data_size",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[10];
+ }
+const_str_name_size = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 9,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "name_size",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[11];
+ }
+const_str_extra_size = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 10,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "extra_size",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[13];
+ }
+const_str_comment_size = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 12,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "comment_size",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[12];
+ }
+const_str_file_offset = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 11,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "file_offset",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[27];
+ }_object;
+ }
+zipimport_toplevel_consts_21_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 27,
+ },
+ .ob_item = {
+ & const_str_archive._ascii.ob_base,
+ & const_str_fp._ascii.ob_base,
+ & const_str_start_offset._ascii.ob_base,
+ & const_str_header_position._ascii.ob_base,
+ &_Py_ID(buffer),
+ & const_str_file_size._ascii.ob_base,
+ & const_str_max_comment_start._ascii.ob_base,
+ &_Py_ID(data),
+ &_Py_ID(pos),
+ & const_str_header_size._ascii.ob_base,
+ & const_str_header_offset._ascii.ob_base,
+ & const_str_arc_offset._ascii.ob_base,
+ & const_str_files._ascii.ob_base,
+ &_Py_ID(count),
+ &_Py_ID(flags),
+ & const_str_compress._ascii.ob_base,
+ & const_str_time._ascii.ob_base,
+ & const_str_date._ascii.ob_base,
+ & const_str_crc._ascii.ob_base,
+ & const_str_data_size._ascii.ob_base,
+ & const_str_name_size._ascii.ob_base,
+ & const_str_extra_size._ascii.ob_base,
+ & const_str_comment_size._ascii.ob_base,
+ & const_str_file_offset._ascii.ob_base,
+ &_Py_ID(name),
+ &_Py_ID(path),
+ (PyObject *)&_Py_SINGLETON(strings).ascii[116],
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[28];
+ }
+zipimport_toplevel_consts_21_localspluskinds = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 27,
+ },
+ .ob_shash = -1,
+ .ob_sval = " ",
+};
+static
+ struct _PyCode_DEF(2576)
+zipimport_toplevel_consts_21 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 1288,
+ },
+ .co_consts = & zipimport_toplevel_consts_21_consts._object.ob_base.ob_base,
+ .co_names = & zipimport_toplevel_consts_21_names._object.ob_base.ob_base,
+ .co_exceptiontable = & zipimport_toplevel_consts_21_exceptiontable.ob_base.ob_base,
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 36 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 9,
+ .co_firstlineno = 343,
+ .co_nlocalsplus = 27,
+ .co_nlocals = 27,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 237,
+ .co_localsplusnames = & zipimport_toplevel_consts_21_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & zipimport_toplevel_consts_21_localspluskinds.ob_base.ob_base,
+ .co_filename = & zipimport_toplevel_consts_7_filename._ascii.ob_base,
+ .co_name = & const_str__read_directory._ascii.ob_base,
+ .co_qualname = & const_str__read_directory._ascii.ob_base,
+ .co_linetable = & zipimport_toplevel_consts_21_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x09\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x01\x7c\x01\x35\x00\x01\x00\x7c\x01\x6a\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x7d\x02\x09\x00\x09\x00\x7c\x01\x6a\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x74\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x64\x03\xab\x02\x00\x00\x00\x00\x00\x00\x01\x00\x7c\x01\x6a\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x7d\x03\x7c\x01\x6a\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x74\x0c\x00\x00\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x04\x74\x11\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x04\xab\x01\x00\x00\x00\x00\x00\x00\x74\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x6b\x37\x00\x00\x72\x10\x74\x07\x00\x00\x00\x00\x00\x00\x00\x00\x64\x04\x7c\x00\x9b\x02\x9d\x02\x7c\x00\xac\x02\xab\x02\x00\x00\x00\x00\x00\x00\x82\x01\x7c\x04\x64\x00\x64\x05\x1a\x00\x74\x12\x00\x00\x00\x00\x00\x00\x00\x00\x6b\x37\x00\x00\x72\xc8\x09\x00\x7c\x01\x6a\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x06\x64\x03\xab\x02\x00\x00\x00\x00\x00\x00\x01\x00\x7c\x01\x6a\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x7d\x05\x74\x15\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x05\x74\x16\x00\x00\x00\x00\x00\x00\x00\x00\x7a\x0a\x00\x00\x74\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x7a\x0a\x00\x00\x64\x06\xab\x02\x00\x00\x00\x00\x00\x00\x7d\x06\x09\x00\x7c\x01\x6a\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x06\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x7c\x01\x6a\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x7d\x07\x7c\x07\x6a\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x74\x12\x00\x00\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x08\x7c\x08\x64\x06\x6b\x02\x00\x00\x72\x10\x74\x07\x00\x00\x00\x00\x00\x00\x00\x00\x64\x07\x7c\x00\x9b\x02\x9d\x02\x7c\x00\xac\x02\xab\x02\x00\x00\x00\x00\x00\x00\x82\x01\x7c\x07\x7c\x08\x7c\x08\x74\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x7a\x00\x00\x00\x1a\x00\x7d\x04\x74\x11\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x04\xab\x01\x00\x00\x00\x00\x00\x00\x74\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x6b\x37\x00\x00\x72\x10\x74\x07\x00\x00\x00\x00\x00\x00\x00\x00\x64\x08\x7c\x00\x9b\x02\x9d\x02\x7c\x00\xac\x02\xab\x02\x00\x00\x00\x00\x00\x00\x82\x01\x7c\x05\x74\x11\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x07\xab\x01\x00\x00\x00\x00\x00\x00\x7a\x0a\x00\x00\x7c\x08\x7a\x00\x00\x00\x7d\x03\x74\x1b\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x04\x64\x09\x64\x0a\x1a\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x09\x74\x1b\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x04\x64\x0a\x64\x0b\x1a\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x0a\x7c\x03\x7c\x09\x6b\x02\x00\x00\x72\x10\x74\x07\x00\x00\x00\x00\x00\x00\x00\x00\x64\x0c\x7c\x00\x9b\x02\x9d\x02\x7c\x00\xac\x02\xab\x02\x00\x00\x00\x00\x00\x00\x82\x01\x7c\x03\x7c\x0a\x6b\x02\x00\x00\x72\x10\x74\x07\x00\x00\x00\x00\x00\x00\x00\x00\x64\x0d\x7c\x00\x9b\x02\x9d\x02\x7c\x00\xac\x02\xab\x02\x00\x00\x00\x00\x00\x00\x82\x01\x7c\x03\x7c\x09\x7a\x17\x00\x00\x7d\x03\x7c\x03\x7c\x0a\x7a\x0a\x00\x00\x7d\x0b\x7c\x0b\x64\x06\x6b\x02\x00\x00\x72\x10\x74\x07\x00\x00\x00\x00\x00\x00\x00\x00\x64\x0e\x7c\x00\x9b\x02\x9d\x02\x7c\x00\xac\x02\xab\x02\x00\x00\x00\x00\x00\x00\x82\x01\x69\x00\x7d\x0c\x64\x06\x7d\x0d\x09\x00\x7c\x01\x6a\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x03\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x09\x00\x7c\x01\x6a\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x0f\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x04\x74\x11\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x04\xab\x01\x00\x00\x00\x00\x00\x00\x64\x05\x6b\x02\x00\x00\x72\x0b\x74\x1d\x00\x00\x00\x00\x00\x00\x00\x00\x64\x10\xab\x01\x00\x00\x00\x00\x00\x00\x82\x01\x7c\x04\x64\x00\x64\x05\x1a\x00\x64\x11\x6b\x37\x00\x00\x72\x02\x90\x01\x6e\xa4\x74\x11\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x04\xab\x01\x00\x00\x00\x00\x00\x00\x64\x0f\x6b\x37\x00\x00\x72\x0b\x74\x1d\x00\x00\x00\x00\x00\x00\x00\x00\x64\x10\xab\x01\x00\x00\x00\x00\x00\x00\x82\x01\x74\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x04\x64\x12\x64\x13\x1a\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x0e\x74\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x04\x64\x13\x64\x09\x1a\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x0f\x74\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x04\x64\x09\x64\x14\x1a\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x10\x74\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x04\x64\x14\x64\x0a\x1a\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x11\x74\x1b\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x04\x64\x0a\x64\x0b\x1a\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x12\x74\x1b\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x04\x64\x0b\x64\x15\x1a\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x13\x74\x1b\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x04\x64\x15\x64\x16\x1a\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x05\x74\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x04\x64\x16\x64\x17\x1a\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x14\x74\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x04\x64\x17\x64\x18\x1a\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x15\x74\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x04\x64\x18\x64\x19\x1a\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x16\x74\x1b\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x04\x64\x1a\x64\x0f\x1a\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x17\x7c\x14\x7c\x15\x7a\x00\x00\x00\x7c\x16\x7a\x00\x00\x00\x7d\x09\x7c\x17\x7c\x0a\x6b\x44\x00\x00\x72\x10\x74\x07\x00\x00\x00\x00\x00\x00\x00\x00\x64\x1b\x7c\x00\x9b\x02\x9d\x02\x7c\x00\xac\x02\xab\x02\x00\x00\x00\x00\x00\x00\x82\x01\x7c\x17\x7c\x0b\x7a\x0d\x00\x00\x7d\x17\x09\x00\x7c\x01\x6a\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x14\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x18\x74\x11\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x18\xab\x01\x00\x00\x00\x00\x00\x00\x7c\x14\x6b\x37\x00\x00\x72\x10\x74\x07\x00\x00\x00\x00\x00\x00\x00\x00\x64\x04\x7c\x00\x9b\x02\x9d\x02\x7c\x00\xac\x02\xab\x02\x00\x00\x00\x00\x00\x00\x82\x01\x09\x00\x74\x11\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x6a\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x09\x7c\x14\x7a\x0a\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7c\x09\x7c\x14\x7a\x0a\x00\x00\x6b\x37\x00\x00\x72\x10\x74\x07\x00\x00\x00\x00\x00\x00\x00\x00\x64\x04\x7c\x00\x9b\x02\x9d\x02\x7c\x00\xac\x02\xab\x02\x00\x00\x00\x00\x00\x00\x82\x01\x09\x00\x7c\x0e\x64\x1c\x7a\x01\x00\x00\x72\x11\x7c\x18\x6a\x21\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x7d\x18\x6e\x12\x09\x00\x7c\x18\x6a\x21\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x1d\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x18\x7c\x18\x6a\x29\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x1f\x74\x2a\x00\x00\x00\x00\x00\x00\x00\x00\xab\x02\x00\x00\x00\x00\x00\x00\x7d\x18\x74\x2d\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x2e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x7c\x18\xab\x02\x00\x00\x00\x00\x00\x00\x7d\x19\x7c\x19\x7c\x0f\x7c\x13\x7c\x05\x7c\x17\x7c\x10\x7c\x11\x7c\x12\x66\x08\x7d\x1a\x7c\x1a\x7c\x0c\x7c\x18\x3c\x00\x00\x00\x7c\x0d\x64\x20\x7a\x0d\x00\x00\x7d\x0d\x90\x01\x8c\xd8\x09\x00\x7c\x01\x6a\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x02\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x09\x00\x64\x00\x64\x00\x64\x00\xab\x02\x00\x00\x00\x00\x00\x00\x01\x00\x74\x31\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x21\x7f\x0d\x7c\x00\xab\x03\x00\x00\x00\x00\x00\x00\x01\x00\x7f\x0c\x53\x00\x23\x00\x74\x04\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x72\x11\x01\x00\x74\x07\x00\x00\x00\x00\x00\x00\x00\x00\x64\x01\x7c\x00\x9b\x02\x9d\x02\x7c\x00\xac\x02\xab\x02\x00\x00\x00\x00\x00\x00\x82\x01\x77\x00\x78\x03\x59\x00\x77\x01\x23\x00\x74\x04\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x72\x11\x01\x00\x74\x07\x00\x00\x00\x00\x00\x00\x00\x00\x64\x04\x7c\x00\x9b\x02\x9d\x02\x7c\x00\xac\x02\xab\x02\x00\x00\x00\x00\x00\x00\x82\x01\x77\x00\x78\x03\x59\x00\x77\x01\x23\x00\x74\x04\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x72\x11\x01\x00\x74\x07\x00\x00\x00\x00\x00\x00\x00\x00\x64\x04\x7c\x00\x9b\x02\x9d\x02\x7c\x00\xac\x02\xab\x02\x00\x00\x00\x00\x00\x00\x82\x01\x77\x00\x78\x03\x59\x00\x77\x01\x23\x00\x74\x04\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x72\x11\x01\x00\x74\x07\x00\x00\x00\x00\x00\x00\x00\x00\x64\x04\x7c\x00\x9b\x02\x9d\x02\x7c\x00\xac\x02\xab\x02\x00\x00\x00\x00\x00\x00\x82\x01\x77\x00\x78\x03\x59\x00\x77\x01\x23\x00\x74\x04\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x72\x11\x01\x00\x74\x07\x00\x00\x00\x00\x00\x00\x00\x00\x64\x04\x7c\x00\x9b\x02\x9d\x02\x7c\x00\xac\x02\xab\x02\x00\x00\x00\x00\x00\x00\x82\x01\x77\x00\x78\x03\x59\x00\x77\x01\x23\x00\x74\x04\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x72\x11\x01\x00\x74\x07\x00\x00\x00\x00\x00\x00\x00\x00\x64\x04\x7c\x00\x9b\x02\x9d\x02\x7c\x00\xac\x02\xab\x02\x00\x00\x00\x00\x00\x00\x82\x01\x77\x00\x78\x03\x59\x00\x77\x01\x23\x00\x74\x04\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x72\x11\x01\x00\x74\x07\x00\x00\x00\x00\x00\x00\x00\x00\x64\x04\x7c\x00\x9b\x02\x9d\x02\x7c\x00\xac\x02\xab\x02\x00\x00\x00\x00\x00\x00\x82\x01\x77\x00\x78\x03\x59\x00\x77\x01\x23\x00\x74\x22\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x72\x28\x01\x00\x7c\x18\x6a\x21\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x1e\xab\x01\x00\x00\x00\x00\x00\x00\x6a\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x74\x26\x00\x00\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x18\x59\x00\x90\x01\x8c\x71\x77\x00\x78\x03\x59\x00\x77\x01\x23\x00\x7c\x01\x6a\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x02\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x77\x00\x78\x03\x59\x00\x77\x01\x23\x00\x31\x00\x73\x01\x77\x02\x01\x00\x59\x00\x01\x00\x01\x00\x90\x01\x8c\x38\x78\x03\x59\x00\x77\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyCompactUnicodeObject _compact;
+ uint16_t _data[257];
+ }
+zipimport_toplevel_consts_22 = {
+ ._compact = {
+ ._base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 256,
+ .hash = -1,
+ .state = {
+ .kind = 2,
+ .compact = 1,
+ .ascii = 0,
+ .statically_allocated = 1,
+ },
+ },
+ .utf8 = "\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f\x20\x21\x22\x23\x24\x25\x26\x27\x28\x29\x2a\x2b\x2c\x2d\x2e\x2f\x30\x31\x32\x33\x34\x35\x36\x37\x38\x39\x3a\x3b\x3c\x3d\x3e\x3f\x40\x41\x42\x43\x44\x45\x46\x47\x48\x49\x4a\x4b\x4c\x4d\x4e\x4f\x50\x51\x52\x53\x54\x55\x56\x57\x58\x59\x5a\x5b\x5c\x5d\x5e\x5f\x60\x61\x62\x63\x64\x65\x66\x67\x68\x69\x6a\x6b\x6c\x6d\x6e\x6f\x70\x71\x72\x73\x74\x75\x76\x77\x78\x79\x7a\x7b\x7c\x7d\x7e\x7f\xc3\x87\xc3\xbc\xc3\xa9\xc3\xa2\xc3\xa4\xc3\xa0\xc3\xa5\xc3\xa7\xc3\xaa\xc3\xab\xc3\xa8\xc3\xaf\xc3\xae\xc3\xac\xc3\x84\xc3\x85\xc3\x89\xc3\xa6\xc3\x86\xc3\xb4\xc3\xb6\xc3\xb2\xc3\xbb\xc3\xb9\xc3\xbf\xc3\x96\xc3\x9c\xc2\xa2\xc2\xa3\xc2\xa5\xe2\x82\xa7\xc6\x92\xc3\xa1\xc3\xad\xc3\xb3\xc3\xba\xc3\xb1\xc3\x91\xc2\xaa\xc2\xba\xc2\xbf\xe2\x8c\x90\xc2\xac\xc2\xbd\xc2\xbc\xc2\xa1\xc2\xab\xc2\xbb\xe2\x96\x91\xe2\x96\x92\xe2\x96\x93\xe2\x94\x82\xe2\x94\xa4\xe2\x95\xa1\xe2\x95\xa2\xe2\x95\x96\xe2\x95\x95\xe2\x95\xa3\xe2\x95\x91\xe2\x95\x97\xe2\x95\x9d\xe2\x95\x9c\xe2\x95\x9b\xe2\x94\x90\xe2\x94\x94\xe2\x94\xb4\xe2\x94\xac\xe2\x94\x9c\xe2\x94\x80\xe2\x94\xbc\xe2\x95\x9e\xe2\x95\x9f\xe2\x95\x9a\xe2\x95\x94\xe2\x95\xa9\xe2\x95\xa6\xe2\x95\xa0\xe2\x95\x90\xe2\x95\xac\xe2\x95\xa7\xe2\x95\xa8\xe2\x95\xa4\xe2\x95\xa5\xe2\x95\x99\xe2\x95\x98\xe2\x95\x92\xe2\x95\x93\xe2\x95\xab\xe2\x95\xaa\xe2\x94\x98\xe2\x94\x8c\xe2\x96\x88\xe2\x96\x84\xe2\x96\x8c\xe2\x96\x90\xe2\x96\x80\xce\xb1\xc3\x9f\xce\x93\xcf\x80\xce\xa3\xcf\x83\xc2\xb5\xcf\x84\xce\xa6\xce\x98\xce\xa9\xce\xb4\xe2\x88\x9e\xcf\x86\xce\xb5\xe2\x88\xa9\xe2\x89\xa1\xc2\xb1\xe2\x89\xa5\xe2\x89\xa4\xe2\x8c\xa0\xe2\x8c\xa1\xc3\xb7\xe2\x89\x88\xc2\xb0\xe2\x88\x99\xc2\xb7\xe2\x88\x9a\xe2\x81\xbf\xc2\xb2\xe2\x96\xa0\xc2\xa0",
+ .utf8_length = 446,
+ },
+ ._data = {
+ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
+ 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
+ 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
+ 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
+ 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
+ 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
+ 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
+ 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127,
+ 199, 252, 233, 226, 228, 224, 229, 231, 234, 235, 232, 239, 238, 236, 196, 197,
+ 201, 230, 198, 244, 246, 242, 251, 249, 255, 214, 220, 162, 163, 165, 8359, 402,
+ 225, 237, 243, 250, 241, 209, 170, 186, 191, 8976, 172, 189, 188, 161, 171, 187,
+ 9617, 9618, 9619, 9474, 9508, 9569, 9570, 9558, 9557, 9571, 9553, 9559, 9565, 9564, 9563, 9488,
+ 9492, 9524, 9516, 9500, 9472, 9532, 9566, 9567, 9562, 9556, 9577, 9574, 9568, 9552, 9580, 9575,
+ 9576, 9572, 9573, 9561, 9560, 9554, 9555, 9579, 9578, 9496, 9484, 9608, 9604, 9612, 9616, 9600,
+ 945, 223, 915, 960, 931, 963, 181, 964, 934, 920, 937, 948, 8734, 966, 949, 8745,
+ 8801, 177, 8805, 8804, 8992, 8993, 247, 8776, 176, 8729, 183, 8730, 8319, 178, 9632, 160,
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[28];
+ }
+zipimport_toplevel_consts_23_consts_1 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 27,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "zipimport: zlib UNAVAILABLE",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[42];
+ }
+zipimport_toplevel_consts_23_consts_2 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 41,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "can't decompress data; zlib not available",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[11];
+ }
+const_str_decompress = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 10,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "decompress",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+zipimport_toplevel_consts_23_consts_5 = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & const_str_decompress._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[26];
+ }
+zipimport_toplevel_consts_23_consts_7 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 25,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "zipimport: zlib available",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[8];
+ }_object;
+ }
+zipimport_toplevel_consts_23_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 8,
+ },
+ .ob_item = {
+ Py_None,
+ & zipimport_toplevel_consts_23_consts_1._ascii.ob_base,
+ & zipimport_toplevel_consts_23_consts_2._ascii.ob_base,
+ Py_True,
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 0],
+ & zipimport_toplevel_consts_23_consts_5._object.ob_base.ob_base,
+ Py_False,
+ & zipimport_toplevel_consts_23_consts_7._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[16];
+ }
+const_str__importing_zlib = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 15,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_importing_zlib",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[5];
+ }
+const_str_zlib = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 4,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "zlib",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[7];
+ }_object;
+ }
+zipimport_toplevel_consts_23_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 7,
+ },
+ .ob_item = {
+ & const_str__importing_zlib._ascii.ob_base,
+ &_Py_ID(_bootstrap),
+ & const_str__verbose_message._ascii.ob_base,
+ & const_str_ZipImportError._ascii.ob_base,
+ & const_str_zlib._ascii.ob_base,
+ & const_str_decompress._ascii.ob_base,
+ & const_str_Exception._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[21];
+ }
+const_str__get_decompress_func = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 20,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_get_decompress_func",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[130];
+ }
+zipimport_toplevel_consts_23_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 129,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xe5\x07\x16\xf4\x06\x00\x09\x13\xd7\x08\x23\xd1\x08\x23\xd0\x24\x41\xd4\x08\x42\xdc\x0e\x1c\xd0\x1d\x48\xd3\x0e\x49\xd0\x08\x49\xe0\x16\x1a\x80\x4f\xf0\x02\x06\x05\x20\xde\x08\x23\xf0\x0a\x00\x1b\x20\x88\x0f\xe4\x04\x0e\xd7\x04\x1f\xd1\x04\x1f\xd0\x20\x3b\xd4\x04\x3c\xd8\x0b\x15\xd0\x04\x15\xf8\xf4\x0f\x00\x0c\x15\xf2\x00\x02\x05\x4a\x01\xdc\x08\x12\xd7\x08\x23\xd1\x08\x23\xd0\x24\x41\xd4\x08\x42\xdc\x0e\x1c\xd0\x1d\x48\xd3\x0e\x49\xd0\x08\x49\xf0\x05\x02\x05\x4a\x01\xfb\xf0\x08\x00\x1b\x20\x89\x0f\xfa",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[24];
+ }
+zipimport_toplevel_consts_23_exceptiontable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 23,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\xaa\x06\x41\x0a\x00\xc1\x0a\x2a\x41\x34\x03\xc1\x34\x03\x41\x37\x00\xc1\x37\x04\x41\x3b\x03",
+};
+static
+ struct _PyCode_DEF(252)
+zipimport_toplevel_consts_23 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 126,
+ },
+ .co_consts = & zipimport_toplevel_consts_23_consts._object.ob_base.ob_base,
+ .co_names = & zipimport_toplevel_consts_23_names._object.ob_base.ob_base,
+ .co_exceptiontable = & zipimport_toplevel_consts_23_exceptiontable.ob_base.ob_base,
+ .co_flags = 3,
+ .co_argcount = 0,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 5 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 508,
+ .co_nlocalsplus = 1,
+ .co_nlocals = 1,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 238,
+ .co_localsplusnames = & zipimport_toplevel_consts_23_consts_5._object.ob_base.ob_base,
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_characters[32]),
+ .co_filename = & zipimport_toplevel_consts_7_filename._ascii.ob_base,
+ .co_name = & const_str__get_decompress_func._ascii.ob_base,
+ .co_qualname = & const_str__get_decompress_func._ascii.ob_base,
+ .co_linetable = & zipimport_toplevel_consts_23_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x72\x20\x74\x03\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x01\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x74\x07\x00\x00\x00\x00\x00\x00\x00\x00\x64\x02\xab\x01\x00\x00\x00\x00\x00\x00\x82\x01\x64\x03\x61\x00\x09\x00\x64\x04\x64\x05\x6c\x04\x6d\x05\x7d\x00\x01\x00\x09\x00\x64\x06\x61\x00\x74\x03\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x07\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x7c\x00\x53\x00\x23\x00\x74\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x72\x21\x01\x00\x74\x03\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x01\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x74\x07\x00\x00\x00\x00\x00\x00\x00\x00\x64\x02\xab\x01\x00\x00\x00\x00\x00\x00\x82\x01\x77\x00\x78\x03\x59\x00\x77\x01\x23\x00\x64\x06\x61\x00\x77\x00\x78\x03\x59\x00\x77\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[19];
+ }
+zipimport_toplevel_consts_24_consts_2 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 18,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "negative data size",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[5];
+ }
+zipimport_toplevel_consts_24_consts_8 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x50\x4b\x03\x04",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[24];
+ }
+zipimport_toplevel_consts_24_consts_9 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 23,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "bad local file header: ",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[27];
+ }
+zipimport_toplevel_consts_24_consts_12 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 26,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "zipimport: can't read data",
+};
+static
+ struct {
+ PyObject ob_base;
+ uintptr_t lv_tag;
+ digit ob_digit[1];
+ }
+const_int_negative_15 = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyLong_Type,
+ },
+ .lv_tag = TAG_FROM_SIGN_AND_SIZE(-1, 1),
+ .ob_digit = { 15 },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[15];
+ }_object;
+ }
+zipimport_toplevel_consts_24_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 15,
+ },
+ .ob_item = {
+ Py_None,
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 0],
+ & zipimport_toplevel_consts_24_consts_2._ascii.ob_base,
+ & zipimport_toplevel_consts_21_consts_4._ascii.ob_base,
+ & importlib__bootstrap_external_toplevel_consts_18_localsplusnames._object.ob_base.ob_base,
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 30],
+ & zipimport_toplevel_consts_21_consts_16._ascii.ob_base,
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 4],
+ & zipimport_toplevel_consts_24_consts_8.ob_base.ob_base,
+ & zipimport_toplevel_consts_24_consts_9._ascii.ob_base,
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 26],
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 28],
+ & zipimport_toplevel_consts_24_consts_12._ascii.ob_base,
+ & zipimport_toplevel_consts_23_consts_2._ascii.ob_base,
+ & const_int_negative_15.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[11];
+ }_object;
+ }
+zipimport_toplevel_consts_24_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 11,
+ },
+ .ob_item = {
+ & const_str_ZipImportError._ascii.ob_base,
+ &_Py_ID(_io),
+ & const_str_open_code._ascii.ob_base,
+ &_Py_ID(seek),
+ & const_str_OSError._ascii.ob_base,
+ &_Py_ID(read),
+ &_Py_ID(len),
+ & const_str_EOFError._ascii.ob_base,
+ & const_str__unpack_uint16._ascii.ob_base,
+ & const_str__get_decompress_func._ascii.ob_base,
+ & const_str_Exception._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[443];
+ }
+zipimport_toplevel_consts_24_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 442,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xd8\x4d\x56\xd1\x04\x4a\x80\x48\x88\x68\x98\x09\xa0\x39\xa8\x6b\xb8\x34\xc0\x14\xc0\x73\xd8\x07\x10\x90\x31\x82\x7d\xdc\x0e\x1c\xd0\x1d\x31\xd3\x0e\x32\xd0\x08\x32\xe4\x09\x0c\x8f\x1d\x89\x1d\x90\x77\xd3\x09\x1f\xf0\x00\x18\x05\x38\xa0\x32\xf0\x04\x03\x09\x54\x01\xd8\x0c\x0e\x8f\x47\x89\x47\x90\x4b\xd4\x0c\x20\xf0\x06\x00\x12\x14\x97\x17\x91\x17\x98\x12\x93\x1b\x88\x06\xdc\x0b\x0e\x88\x76\x8b\x3b\x98\x22\xd2\x0b\x1c\xdc\x12\x1a\xd0\x1b\x38\xd3\x12\x39\xd0\x0c\x39\xe0\x0b\x11\x90\x22\x90\x31\x88\x3a\x98\x1d\xd2\x0b\x26\xe4\x12\x20\xd0\x23\x3a\xb8\x37\xb8\x2b\xd0\x21\x46\xc8\x57\xd4\x12\x55\xd0\x0c\x55\xe4\x14\x22\xa0\x36\xa8\x22\xa8\x52\xa0\x3d\xd3\x14\x31\x88\x09\xdc\x15\x23\xa0\x46\xa8\x32\xa8\x62\xa0\x4d\xd3\x15\x32\x88\x0a\xd8\x16\x18\x98\x39\x91\x6e\xa0\x7a\xd1\x16\x31\x88\x0b\xd8\x08\x13\x90\x7b\xd1\x08\x22\x88\x0b\xf0\x02\x03\x09\x54\x01\xd8\x0c\x0e\x8f\x47\x89\x47\x90\x4b\xd4\x0c\x20\xf0\x06\x00\x14\x16\x97\x37\x91\x37\x98\x39\xd3\x13\x25\x88\x08\xdc\x0b\x0e\x88\x78\x8b\x3d\x98\x49\xd2\x0b\x25\xdc\x12\x19\xd0\x1a\x36\xd3\x12\x37\xd0\x0c\x37\xf0\x03\x00\x0c\x26\xf7\x2f\x18\x05\x38\xf0\x34\x00\x08\x10\x90\x31\x82\x7d\xe0\x0f\x17\x88\x0f\xf0\x06\x03\x05\x4a\x01\xdc\x15\x29\xd3\x15\x2b\x88\x0a\xf1\x06\x00\x0c\x16\x90\x68\xa0\x03\xd3\x0b\x24\xd0\x04\x24\xf8\xf4\x3f\x00\x10\x17\xf2\x00\x01\x09\x54\x01\xdc\x12\x20\xd0\x23\x38\xb8\x17\xb8\x0b\xd0\x21\x44\xc8\x37\xd4\x12\x53\xd0\x0c\x53\xf0\x03\x01\x09\x54\x01\xfb\xf4\x20\x00\x10\x17\xf2\x00\x01\x09\x54\x01\xdc\x12\x20\xd0\x23\x38\xb8\x17\xb8\x0b\xd0\x21\x44\xc8\x37\xd4\x12\x53\xd0\x0c\x53\xf0\x03\x01\x09\x54\x01\xfa\xf7\x29\x18\x05\x38\xf0\x00\x18\x05\x38\xfb\xf4\x42\x01\x00\x0c\x15\xf2\x00\x01\x05\x4a\x01\xdc\x0e\x1c\xd0\x1d\x48\xd3\x0e\x49\xd0\x08\x49\xf0\x03\x01\x05\x4a\x01\xfa",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[72];
+ }
+zipimport_toplevel_consts_24_exceptiontable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 71,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\xb1\x01\x45\x09\x03\xb3\x11\x44\x0f\x02\xc1\x04\x41\x2b\x45\x09\x03\xc2\x30\x11\x44\x2c\x02\xc3\x01\x2a\x45\x09\x03\xc3\x3c\x0a\x45\x15\x00\xc4\x0f\x1a\x44\x29\x05\xc4\x29\x03\x45\x09\x03\xc4\x2c\x1a\x45\x06\x05\xc5\x06\x03\x45\x09\x03\xc5\x09\x05\x45\x12\x07\xc5\x15\x15\x45\x2a\x03",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[9];
+ }
+const_str_datapath = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 8,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "datapath",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[9];
+ }
+const_str_raw_data = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 8,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "raw_data",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[17];
+ }_object;
+ }
+zipimport_toplevel_consts_24_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 17,
+ },
+ .ob_item = {
+ & const_str_archive._ascii.ob_base,
+ & const_str_toc_entry._ascii.ob_base,
+ & const_str_datapath._ascii.ob_base,
+ & const_str_compress._ascii.ob_base,
+ & const_str_data_size._ascii.ob_base,
+ & const_str_file_size._ascii.ob_base,
+ & const_str_file_offset._ascii.ob_base,
+ & const_str_time._ascii.ob_base,
+ & const_str_date._ascii.ob_base,
+ & const_str_crc._ascii.ob_base,
+ & const_str_fp._ascii.ob_base,
+ &_Py_ID(buffer),
+ & const_str_name_size._ascii.ob_base,
+ & const_str_extra_size._ascii.ob_base,
+ & const_str_header_size._ascii.ob_base,
+ & const_str_raw_data._ascii.ob_base,
+ & const_str_decompress._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[18];
+ }
+zipimport_toplevel_consts_24_localspluskinds = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 17,
+ },
+ .ob_shash = -1,
+ .ob_sval = " ",
+};
+static
+ struct _PyCode_DEF(730)
+zipimport_toplevel_consts_24 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 365,
+ },
+ .co_consts = & zipimport_toplevel_consts_24_consts._object.ob_base.ob_base,
+ .co_names = & zipimport_toplevel_consts_24_names._object.ob_base.ob_base,
+ .co_exceptiontable = & zipimport_toplevel_consts_24_exceptiontable.ob_base.ob_base,
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 25 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 8,
+ .co_firstlineno = 529,
+ .co_nlocalsplus = 17,
+ .co_nlocals = 17,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 239,
+ .co_localsplusnames = & zipimport_toplevel_consts_24_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & zipimport_toplevel_consts_24_localspluskinds.ob_base.ob_base,
+ .co_filename = & zipimport_toplevel_consts_7_filename._ascii.ob_base,
+ .co_name = & const_str__get_data._ascii.ob_base,
+ .co_qualname = & const_str__get_data._ascii.ob_base,
+ .co_linetable = & zipimport_toplevel_consts_24_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x01\x5c\x08\x00\x00\x7d\x02\x7d\x03\x7d\x04\x7d\x05\x7d\x06\x7d\x07\x7d\x08\x7d\x09\x7c\x04\x64\x01\x6b\x02\x00\x00\x72\x0b\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x64\x02\xab\x01\x00\x00\x00\x00\x00\x00\x82\x01\x74\x03\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x35\x00\x7d\x0a\x09\x00\x7c\x0a\x6a\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x06\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x7c\x0a\x6a\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x05\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x0b\x74\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x0b\xab\x01\x00\x00\x00\x00\x00\x00\x64\x05\x6b\x37\x00\x00\x72\x0b\x74\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x64\x06\xab\x01\x00\x00\x00\x00\x00\x00\x82\x01\x7c\x0b\x64\x00\x64\x07\x1a\x00\x64\x08\x6b\x37\x00\x00\x72\x10\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x64\x09\x7c\x00\x9b\x02\x9d\x02\x7c\x00\xac\x04\xab\x02\x00\x00\x00\x00\x00\x00\x82\x01\x74\x11\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x0b\x64\x0a\x64\x0b\x1a\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x0c\x74\x11\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x0b\x64\x0b\x64\x05\x1a\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x0d\x64\x05\x7c\x0c\x7a\x00\x00\x00\x7c\x0d\x7a\x00\x00\x00\x7d\x0e\x7c\x06\x7c\x0e\x7a\x0d\x00\x00\x7d\x06\x09\x00\x7c\x0a\x6a\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x06\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x7c\x0a\x6a\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x04\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x0f\x74\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x0f\xab\x01\x00\x00\x00\x00\x00\x00\x7c\x04\x6b\x37\x00\x00\x72\x0b\x74\x09\x00\x00\x00\x00\x00\x00\x00\x00\x64\x0c\xab\x01\x00\x00\x00\x00\x00\x00\x82\x01\x09\x00\x64\x00\x64\x00\x64\x00\xab\x02\x00\x00\x00\x00\x00\x00\x01\x00\x7c\x03\x64\x01\x6b\x28\x00\x00\x72\x02\x7f\x0f\x53\x00\x09\x00\x74\x13\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x7d\x10\x02\x00\x7c\x10\x7f\x0f\x64\x0e\xab\x02\x00\x00\x00\x00\x00\x00\x53\x00\x23\x00\x74\x08\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x72\x11\x01\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x64\x03\x7c\x00\x9b\x02\x9d\x02\x7c\x00\xac\x04\xab\x02\x00\x00\x00\x00\x00\x00\x82\x01\x77\x00\x78\x03\x59\x00\x77\x01\x23\x00\x74\x08\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x72\x11\x01\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x64\x03\x7c\x00\x9b\x02\x9d\x02\x7c\x00\xac\x04\xab\x02\x00\x00\x00\x00\x00\x00\x82\x01\x77\x00\x78\x03\x59\x00\x77\x01\x23\x00\x31\x00\x73\x01\x77\x02\x01\x00\x59\x00\x01\x00\x01\x00\x8c\x5e\x78\x03\x59\x00\x77\x01\x23\x00\x74\x14\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x72\x0c\x01\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x64\x0d\xab\x01\x00\x00\x00\x00\x00\x00\x82\x01\x77\x00\x78\x03\x59\x00\x77\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+zipimport_toplevel_consts_25_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ Py_None,
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 1],
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[4];
+ }
+const_str_abs = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 3,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "abs",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+zipimport_toplevel_consts_25_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & const_str_abs._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[10];
+ }
+const_str__eq_mtime = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 9,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_eq_mtime",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[22];
+ }
+zipimport_toplevel_consts_25_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 21,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xe4\x0b\x0e\x88\x72\x90\x42\x89\x77\x8b\x3c\x98\x31\xd1\x0b\x1c\xd0\x04\x1c",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[3];
+ }
+const_str_t1 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 2,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "t1",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[3];
+ }
+const_str_t2 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 2,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "t2",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+zipimport_toplevel_consts_25_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & const_str_t1._ascii.ob_base,
+ & const_str_t2._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(36)
+zipimport_toplevel_consts_25 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 18,
+ },
+ .co_consts = & zipimport_toplevel_consts_25_consts._object.ob_base.ob_base,
+ .co_names = & zipimport_toplevel_consts_25_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 6 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 575,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 2,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 240,
+ .co_localsplusnames = & zipimport_toplevel_consts_25_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_14_consts_2_localspluskinds.ob_base.ob_base,
+ .co_filename = & zipimport_toplevel_consts_7_filename._ascii.ob_base,
+ .co_name = & const_str__eq_mtime._ascii.ob_base,
+ .co_qualname = & const_str__eq_mtime._ascii.ob_base,
+ .co_linetable = & zipimport_toplevel_consts_25_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x7c\x01\x7a\x0a\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x64\x01\x6b\x1a\x00\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[17];
+ }
+zipimport_toplevel_consts_26_consts_11 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 16,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "compiled module ",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[22];
+ }
+zipimport_toplevel_consts_26_consts_12 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 21,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = " is not a code object",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[13];
+ }_object;
+ }
+zipimport_toplevel_consts_26_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 13,
+ },
+ .ob_item = {
+ Py_None,
+ & importlib__bootstrap_external_toplevel_consts_45_consts_3._object.ob_base.ob_base,
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 1],
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 0],
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 2],
+ & const_str_never._ascii.ob_base,
+ & const_str_always._ascii.ob_base,
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 8],
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 12],
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 16],
+ & importlib__bootstrap_external_toplevel_consts_43_consts_4._ascii.ob_base,
+ & zipimport_toplevel_consts_26_consts_11._ascii.ob_base,
+ & zipimport_toplevel_consts_26_consts_12._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[16];
+ }
+const_str__get_pyc_source = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 15,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_get_pyc_source",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[30];
+ }
+const_str__get_mtime_and_size_of_source = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 29,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_get_mtime_and_size_of_source",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[18];
+ }_object;
+ }
+zipimport_toplevel_consts_26_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 18,
+ },
+ .ob_item = {
+ & const_str__bootstrap_external._ascii.ob_base,
+ & const_str__classify_pyc._ascii.ob_base,
+ & const_str__imp._ascii.ob_base,
+ & const_str_check_hash_based_pycs._ascii.ob_base,
+ & const_str__get_pyc_source._ascii.ob_base,
+ & const_str_source_hash._ascii.ob_base,
+ & const_str__RAW_MAGIC_NUMBER._ascii.ob_base,
+ & const_str__validate_hash_pyc._ascii.ob_base,
+ & const_str__get_mtime_and_size_of_source._ascii.ob_base,
+ & const_str__eq_mtime._ascii.ob_base,
+ & const_str__unpack_uint32._ascii.ob_base,
+ &_Py_ID(_bootstrap),
+ & const_str__verbose_message._ascii.ob_base,
+ & const_str_marshal._ascii.ob_base,
+ & const_str_loads._ascii.ob_base,
+ &_Py_ID(isinstance),
+ & const_str__code_type._ascii.ob_base,
+ & const_str_TypeError._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[16];
+ }
+const_str__unmarshal_code = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 15,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_unmarshal_code",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[322];
+ }
+zipimport_toplevel_consts_26_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 321,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xe0\x10\x18\xd8\x10\x18\xf1\x05\x03\x13\x06\x80\x4b\xf4\x0a\x00\x0d\x20\xd7\x0c\x2d\xd1\x0c\x2d\xa8\x64\xb0\x48\xb8\x6b\xd3\x0c\x4a\x80\x45\xe0\x11\x16\x98\x13\x91\x1b\xa0\x01\xd1\x11\x21\x80\x4a\xd9\x07\x11\xd8\x17\x1c\x98\x74\x91\x7c\xa0\x71\xd1\x17\x28\x88\x0c\xdc\x0c\x10\xd7\x0c\x26\xd1\x0c\x26\xa8\x27\xd2\x0c\x31\xd9\x11\x1d\xa4\x14\xd7\x21\x3b\xd1\x21\x3b\xb8\x78\xd2\x21\x47\xdc\x1b\x2a\xa8\x34\xb0\x18\xd3\x1b\x3a\x88\x4c\xd8\x0f\x1b\xd0\x0f\x27\xdc\x1e\x22\xd7\x1e\x2e\xd1\x1e\x2e\xdc\x14\x27\xd7\x14\x39\xd1\x14\x39\xd8\x14\x20\xf3\x05\x03\x1f\x12\x90\x0b\xf4\x0a\x00\x11\x24\xd7\x10\x36\xd1\x10\x36\xd8\x14\x18\x98\x2b\xa0\x78\xb0\x1b\xf5\x03\x01\x11\x3e\xf4\x08\x00\x0d\x2a\xa8\x24\xb0\x08\xd3\x0c\x39\xf1\x03\x00\x09\x22\x88\x0c\x90\x6b\xf1\x06\x00\x0c\x18\xf4\x06\x00\x15\x1e\x9c\x6e\xa8\x54\xb0\x21\xb0\x42\xa8\x5a\xd3\x1e\x38\xb8\x2c\xd4\x14\x47\xdc\x14\x22\xa0\x34\xa8\x02\xa8\x32\xa0\x3b\xd3\x14\x2f\xb0\x3b\xd2\x14\x3e\xdc\x10\x1a\xd7\x10\x2b\xd1\x10\x2b\xd8\x16\x2c\xa8\x58\xa8\x4c\xd0\x14\x39\xf4\x03\x01\x11\x3b\xe0\x17\x1b\xe4\x0b\x12\x8f\x3d\x89\x3d\x98\x14\x98\x62\x98\x63\x98\x19\xd3\x0b\x23\x80\x44\xdc\x0b\x15\x90\x64\x9c\x4a\xd4\x0b\x27\xdc\x0e\x17\xd0\x1a\x2a\xa8\x38\xa8\x2c\xd0\x36\x4b\xd0\x18\x4c\xd3\x0e\x4d\xd0\x08\x4d\xd8\x0b\x0f\x80\x4b",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[14];
+ }_object;
+ }
+zipimport_toplevel_consts_26_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 14,
+ },
+ .ob_item = {
+ &_Py_ID(self),
+ & const_str_pathname._ascii.ob_base,
+ & const_str_fullpath._ascii.ob_base,
+ & const_str_fullname._ascii.ob_base,
+ &_Py_ID(data),
+ & const_str_exc_details._ascii.ob_base,
+ &_Py_ID(flags),
+ & const_str_hash_based._ascii.ob_base,
+ & const_str_check_source._ascii.ob_base,
+ & const_str_source_bytes._ascii.ob_base,
+ & const_str_source_hash._ascii.ob_base,
+ & const_str_source_mtime._ascii.ob_base,
+ & const_str_source_size._ascii.ob_base,
+ &_Py_ID(code),
+ },
+ },
+};
+static
+ struct _PyCode_DEF(604)
+zipimport_toplevel_consts_26 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 302,
+ },
+ .co_consts = & zipimport_toplevel_consts_26_consts._object.ob_base.ob_base,
+ .co_names = & zipimport_toplevel_consts_26_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 5,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 21 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 7,
+ .co_firstlineno = 583,
+ .co_nlocalsplus = 14,
+ .co_nlocals = 14,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 241,
+ .co_localsplusnames = & zipimport_toplevel_consts_26_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_external_toplevel_consts_72_consts_6_localspluskinds.ob_base.ob_base,
+ .co_filename = & zipimport_toplevel_consts_7_filename._ascii.ob_base,
+ .co_name = & const_str__unmarshal_code._ascii.ob_base,
+ .co_qualname = & const_str__unmarshal_code._ascii.ob_base,
+ .co_linetable = & zipimport_toplevel_consts_26_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x03\x7c\x02\x64\x01\x9c\x02\x7d\x05\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x04\x7c\x03\x7c\x05\xab\x03\x00\x00\x00\x00\x00\x00\x7d\x06\x7c\x06\x64\x02\x7a\x01\x00\x00\x64\x03\x6b\x37\x00\x00\x7d\x07\x7c\x07\x72\x7b\x7c\x06\x64\x04\x7a\x01\x00\x00\x64\x03\x6b\x37\x00\x00\x7d\x08\x74\x04\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x05\x6b\x37\x00\x00\x72\xb3\x7c\x08\x73\x13\x74\x04\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x06\x6b\x28\x00\x00\x72\x9e\x74\x09\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x7c\x02\xab\x02\x00\x00\x00\x00\x00\x00\x7d\x09\x7c\x09\x81\x90\x74\x05\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x09\xab\x02\x00\x00\x00\x00\x00\x00\x7d\x0a\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x04\x7c\x0a\x7c\x03\x7c\x05\xab\x04\x00\x00\x00\x00\x00\x00\x01\x00\x6e\x53\x74\x11\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x7c\x02\xab\x02\x00\x00\x00\x00\x00\x00\x5c\x02\x00\x00\x7d\x0b\x7d\x0c\x7c\x0b\x72\x42\x74\x13\x00\x00\x00\x00\x00\x00\x00\x00\x74\x15\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x04\x64\x07\x64\x08\x1a\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7c\x0b\xab\x02\x00\x00\x00\x00\x00\x00\x72\x11\x74\x15\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x04\x64\x08\x64\x09\x1a\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7c\x0c\x6b\x37\x00\x00\x72\x19\x74\x17\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x0a\x7c\x03\x9b\x02\x9d\x02\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x79\x00\x74\x1b\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x1c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x04\x64\x09\x64\x00\x1a\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x0d\x74\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x0d\x74\x20\x00\x00\x00\x00\x00\x00\x00\x00\xab\x02\x00\x00\x00\x00\x00\x00\x73\x0f\x74\x23\x00\x00\x00\x00\x00\x00\x00\x00\x64\x0b\x7c\x01\x9b\x02\x64\x0c\x9d\x03\xab\x01\x00\x00\x00\x00\x00\x00\x82\x01\x7c\x0d\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[4];
+ }_object;
+ }
+zipimport_toplevel_consts_27_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_item = {
+ Py_None,
+ & importlib__bootstrap_external_toplevel_consts_29.ob_base.ob_base,
+ (PyObject *)&_Py_SINGLETON(bytes_characters[10]),
+ (PyObject *)&_Py_SINGLETON(bytes_characters[13]),
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+zipimport_toplevel_consts_27_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ &_Py_ID(replace),
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[24];
+ }
+const_str__normalize_line_endings = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 23,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_normalize_line_endings",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[40];
+ }
+zipimport_toplevel_consts_27_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 39,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xd8\x0d\x13\x8f\x5e\x89\x5e\x98\x47\xa0\x55\xd3\x0d\x2b\x80\x46\xd8\x0d\x13\x8f\x5e\x89\x5e\x98\x45\xa0\x35\xd3\x0d\x29\x80\x46\xd8\x0b\x11\x80\x4d",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+zipimport_toplevel_consts_27_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ &_Py_ID(source),
+ },
+ },
+};
+static
+ struct _PyCode_DEF(78)
+zipimport_toplevel_consts_27 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 39,
+ },
+ .co_consts = & zipimport_toplevel_consts_27_consts._object.ob_base.ob_base,
+ .co_names = & zipimport_toplevel_consts_27_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 5 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 628,
+ .co_nlocalsplus = 1,
+ .co_nlocals = 1,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 242,
+ .co_localsplusnames = & zipimport_toplevel_consts_27_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_characters[32]),
+ .co_filename = & zipimport_toplevel_consts_7_filename._ascii.ob_base,
+ .co_name = & const_str__normalize_line_endings._ascii.ob_base,
+ .co_qualname = & const_str__normalize_line_endings._ascii.ob_base,
+ .co_linetable = & zipimport_toplevel_consts_27_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x00\x6a\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x01\x64\x02\xab\x02\x00\x00\x00\x00\x00\x00\x7d\x00\x7c\x00\x6a\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x03\x64\x02\xab\x02\x00\x00\x00\x00\x00\x00\x7d\x00\x7c\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[4];
+ }_object;
+ }
+zipimport_toplevel_consts_28_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_item = {
+ Py_None,
+ & const_str_exec._ascii.ob_base,
+ Py_True,
+ & importlib__bootstrap_external_toplevel_consts_68_consts_4_consts_5._object.ob_base.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+zipimport_toplevel_consts_28_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & const_str__normalize_line_endings._ascii.ob_base,
+ & const_str_compile._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[16];
+ }
+const_str__compile_source = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 15,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_compile_source",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[30];
+ }
+zipimport_toplevel_consts_28_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 29,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xdc\x0d\x24\xa0\x56\xd3\x0d\x2c\x80\x46\xdc\x0b\x12\x90\x36\x98\x38\xa0\x56\xb8\x24\xd4\x0b\x3f\xd0\x04\x3f",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+zipimport_toplevel_consts_28_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & const_str_pathname._ascii.ob_base,
+ &_Py_ID(source),
+ },
+ },
+};
+static
+ struct _PyCode_DEF(54)
+zipimport_toplevel_consts_28 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 27,
+ },
+ .co_consts = & zipimport_toplevel_consts_28_consts._object.ob_base.ob_base,
+ .co_names = & zipimport_toplevel_consts_28_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 8 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 6,
+ .co_firstlineno = 635,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 2,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 243,
+ .co_localsplusnames = & zipimport_toplevel_consts_28_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_14_consts_2_localspluskinds.ob_base.ob_base,
+ .co_filename = & zipimport_toplevel_consts_7_filename._ascii.ob_base,
+ .co_name = & const_str__compile_source._ascii.ob_base,
+ .co_qualname = & const_str__compile_source._ascii.ob_base,
+ .co_linetable = & zipimport_toplevel_consts_28_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x01\x74\x03\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x7c\x00\x64\x01\x64\x02\xac\x03\xab\x04\x00\x00\x00\x00\x00\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyObject ob_base;
+ uintptr_t lv_tag;
+ digit ob_digit[1];
+ }
+const_int_1980 = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyLong_Type,
+ },
+ .lv_tag = TAG_FROM_SIGN_AND_SIZE(1, 1),
+ .ob_digit = { 1980 },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[10];
+ }_object;
+ }
+zipimport_toplevel_consts_29_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 10,
+ },
+ .ob_item = {
+ Py_None,
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 9],
+ & const_int_1980.ob_base,
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 5],
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 15],
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 31],
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 11],
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 63],
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 2],
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + -1],
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[7];
+ }
+const_str_mktime = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 6,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "mktime",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+zipimport_toplevel_consts_29_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & const_str_time._ascii.ob_base,
+ & const_str_mktime._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[15];
+ }
+const_str__parse_dostime = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 14,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_parse_dostime",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[90];
+ }
+zipimport_toplevel_consts_29_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 89,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xdc\x0b\x0f\x8f\x3b\x89\x3b\xd8\x09\x0a\x88\x61\x89\x16\x90\x34\x89\x0f\xd8\x09\x0a\x88\x61\x89\x16\x90\x33\x89\x0e\xd8\x08\x09\x88\x44\x89\x08\xd8\x08\x09\x88\x52\x89\x07\xd8\x09\x0a\x88\x61\x89\x16\x90\x34\x89\x0f\xd8\x09\x0a\x88\x54\x89\x18\x90\x51\x89\x0e\xd8\x08\x0a\x88\x42\x90\x02\xf0\x0f\x07\x18\x14\xf3\x00\x07\x0c\x15\xf0\x00\x07\x05\x15",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+zipimport_toplevel_consts_29_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ &_Py_ID(d),
+ (PyObject *)&_Py_SINGLETON(strings).ascii[116],
+ },
+ },
+};
+static
+ struct _PyCode_DEF(122)
+zipimport_toplevel_consts_29 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 61,
+ },
+ .co_consts = & zipimport_toplevel_consts_29_consts._object.ob_base.ob_base,
+ .co_names = & zipimport_toplevel_consts_29_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 13 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 11,
+ .co_firstlineno = 641,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 2,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 244,
+ .co_localsplusnames = & zipimport_toplevel_consts_29_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_14_consts_2_localspluskinds.ob_base.ob_base,
+ .co_filename = & zipimport_toplevel_consts_7_filename._ascii.ob_base,
+ .co_name = & const_str__parse_dostime._ascii.ob_base,
+ .co_qualname = & const_str__parse_dostime._ascii.ob_base,
+ .co_linetable = & zipimport_toplevel_consts_29_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x64\x01\x7a\x09\x00\x00\x64\x02\x7a\x00\x00\x00\x7c\x00\x64\x03\x7a\x09\x00\x00\x64\x04\x7a\x01\x00\x00\x7c\x00\x64\x05\x7a\x01\x00\x00\x7c\x01\x64\x06\x7a\x09\x00\x00\x7c\x01\x64\x03\x7a\x09\x00\x00\x64\x07\x7a\x01\x00\x00\x7c\x01\x64\x05\x7a\x01\x00\x00\x64\x08\x7a\x05\x00\x00\x64\x09\x64\x09\x64\x09\x66\x09\xab\x01\x00\x00\x00\x00\x00\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+zipimport_toplevel_consts_30_consts_2 = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ &_Py_ID(c),
+ (PyObject *)&_Py_SINGLETON(strings).ascii[111],
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[7];
+ }_object;
+ }
+zipimport_toplevel_consts_30_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 7,
+ },
+ .ob_item = {
+ Py_None,
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + -1],
+ & zipimport_toplevel_consts_30_consts_2._object.ob_base.ob_base,
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 5],
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 6],
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 3],
+ & importlib__bootstrap_external_toplevel_consts_81._object.ob_base.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[5];
+ }_object;
+ }
+zipimport_toplevel_consts_30_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 5,
+ },
+ .ob_item = {
+ & const_str__files._ascii.ob_base,
+ & const_str__parse_dostime._ascii.ob_base,
+ & const_str_KeyError._ascii.ob_base,
+ & const_str_IndexError._ascii.ob_base,
+ & const_str_TypeError._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[124];
+ }
+zipimport_toplevel_consts_30_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 123,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf0\x02\x0c\x05\x14\xe0\x0f\x13\x90\x42\x90\x43\x88\x79\x98\x4a\xd1\x0f\x26\xd1\x08\x26\xd8\x0f\x13\x90\x43\x90\x52\x88\x79\x88\x04\xd8\x14\x18\x97\x4b\x91\x4b\xa0\x04\xd1\x14\x25\x88\x09\xf0\x06\x00\x10\x19\x98\x11\x89\x7c\x88\x04\xd8\x0f\x18\x98\x11\x89\x7c\x88\x04\xd8\x1c\x25\xa0\x61\x99\x4c\xd0\x08\x19\xdc\x0f\x1d\x98\x64\xa0\x44\xd3\x0f\x29\xd0\x2b\x3c\xd0\x0f\x3c\xd0\x08\x3c\xf8\xdc\x0c\x14\x94\x6a\xa4\x29\xd0\x0b\x2c\xf2\x00\x01\x05\x14\xd9\x0f\x13\xf0\x03\x01\x05\x14\xfa",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[16];
+ }
+zipimport_toplevel_consts_30_exceptiontable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 15,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x82\x39\x3c\x00\xbc\x14\x41\x13\x03\xc1\x12\x01\x41\x13\x03",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[18];
+ }
+const_str_uncompressed_size = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 17,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "uncompressed_size",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[6];
+ }_object;
+ }
+zipimport_toplevel_consts_30_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 6,
+ },
+ .ob_item = {
+ &_Py_ID(self),
+ &_Py_ID(path),
+ & const_str_toc_entry._ascii.ob_base,
+ & const_str_time._ascii.ob_base,
+ & const_str_date._ascii.ob_base,
+ & const_str_uncompressed_size._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(172)
+zipimport_toplevel_consts_30 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 86,
+ },
+ .co_consts = & zipimport_toplevel_consts_30_consts._object.ob_base.ob_base,
+ .co_names = & zipimport_toplevel_consts_30_names._object.ob_base.ob_base,
+ .co_exceptiontable = & zipimport_toplevel_consts_30_exceptiontable.ob_base.ob_base,
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 11 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 5,
+ .co_firstlineno = 654,
+ .co_nlocalsplus = 6,
+ .co_nlocals = 6,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 245,
+ .co_localsplusnames = & zipimport_toplevel_consts_30_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_30_consts_4_localspluskinds.ob_base.ob_base,
+ .co_filename = & zipimport_toplevel_consts_7_filename._ascii.ob_base,
+ .co_name = & const_str__get_mtime_and_size_of_source._ascii.ob_base,
+ .co_qualname = & const_str__get_mtime_and_size_of_source._ascii.ob_base,
+ .co_linetable = & zipimport_toplevel_consts_30_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x09\x00\x7c\x01\x64\x01\x64\x00\x1a\x00\x64\x02\x76\x00\x73\x02\x4a\x00\x82\x01\x7c\x01\x64\x00\x64\x01\x1a\x00\x7d\x01\x7c\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x19\x00\x00\x00\x7d\x02\x7c\x02\x64\x03\x19\x00\x00\x00\x7d\x03\x7c\x02\x64\x04\x19\x00\x00\x00\x7d\x04\x7c\x02\x64\x05\x19\x00\x00\x00\x7d\x05\x74\x03\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x04\x7c\x03\xab\x02\x00\x00\x00\x00\x00\x00\x7c\x05\x66\x02\x53\x00\x23\x00\x74\x04\x00\x00\x00\x00\x00\x00\x00\x00\x74\x06\x00\x00\x00\x00\x00\x00\x00\x00\x74\x08\x00\x00\x00\x00\x00\x00\x00\x00\x66\x03\x24\x00\x72\x03\x01\x00\x59\x00\x79\x06\x77\x00\x78\x03\x59\x00\x77\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+zipimport_toplevel_consts_31_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ Py_None,
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + -1],
+ & zipimport_toplevel_consts_30_consts_2._object.ob_base.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[4];
+ }_object;
+ }
+zipimport_toplevel_consts_31_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_item = {
+ & const_str__files._ascii.ob_base,
+ & const_str__get_data._ascii.ob_base,
+ & const_str_archive._ascii.ob_base,
+ & const_str_KeyError._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[89];
+ }
+zipimport_toplevel_consts_31_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 88,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xe0\x0b\x0f\x90\x02\x90\x03\x88\x39\x98\x0a\xd1\x0b\x22\xd1\x04\x22\xd8\x0b\x0f\x90\x03\x90\x12\x88\x39\x80\x44\xf0\x04\x05\x05\x32\xd8\x14\x18\x97\x4b\x91\x4b\xa0\x04\xd1\x14\x25\x88\x09\xf4\x08\x00\x10\x19\x98\x14\x9f\x1c\x99\x1c\xa0\x79\xd3\x0f\x31\xd0\x08\x31\xf8\xf4\x07\x00\x0c\x14\xf2\x00\x01\x05\x14\xd9\x0f\x13\xf0\x03\x01\x05\x14\xfa",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[16];
+ }
+zipimport_toplevel_consts_31_exceptiontable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 15,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x90\x0f\x35\x00\xb5\x09\x41\x01\x03\xc1\x00\x01\x41\x01\x03",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+zipimport_toplevel_consts_31_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ &_Py_ID(self),
+ &_Py_ID(path),
+ & const_str_toc_entry._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(136)
+zipimport_toplevel_consts_31 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 68,
+ },
+ .co_consts = & zipimport_toplevel_consts_31_consts._object.ob_base.ob_base,
+ .co_names = & zipimport_toplevel_consts_31_names._object.ob_base.ob_base,
+ .co_exceptiontable = & zipimport_toplevel_consts_31_exceptiontable.ob_base.ob_base,
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 7 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 673,
+ .co_nlocalsplus = 3,
+ .co_nlocals = 3,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 246,
+ .co_localsplusnames = & zipimport_toplevel_consts_31_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_3_localspluskinds.ob_base.ob_base,
+ .co_filename = & zipimport_toplevel_consts_7_filename._ascii.ob_base,
+ .co_name = & const_str__get_pyc_source._ascii.ob_base,
+ .co_qualname = & const_str__get_pyc_source._ascii.ob_base,
+ .co_linetable = & zipimport_toplevel_consts_31_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x01\x64\x01\x64\x00\x1a\x00\x64\x02\x76\x00\x73\x02\x4a\x00\x82\x01\x7c\x01\x64\x00\x64\x01\x1a\x00\x7d\x01\x09\x00\x7c\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x19\x00\x00\x00\x7d\x02\x74\x03\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x6a\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x02\xab\x02\x00\x00\x00\x00\x00\x00\x53\x00\x23\x00\x74\x06\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x72\x03\x01\x00\x59\x00\x79\x00\x77\x00\x78\x03\x59\x00\x77\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[14];
+ }
+zipimport_toplevel_consts_32_consts_1 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 13,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "trying {}{}{}",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[21];
+ }
+zipimport_toplevel_consts_32_consts_5 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 20,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "module load failed: ",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[8];
+ }_object;
+ }
+zipimport_toplevel_consts_32_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 8,
+ },
+ .ob_item = {
+ Py_None,
+ & zipimport_toplevel_consts_32_consts_1._ascii.ob_base,
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 2],
+ & importlib__bootstrap_toplevel_consts_24._object.ob_base.ob_base,
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 0],
+ & zipimport_toplevel_consts_32_consts_5._ascii.ob_base,
+ & importlib__bootstrap_toplevel_consts_4_localsplusnames._object.ob_base.ob_base,
+ & zipimport_toplevel_consts_11_consts_8_consts_2._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[13];
+ }_object;
+ }
+zipimport_toplevel_consts_32_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 13,
+ },
+ .ob_item = {
+ & const_str__get_module_path._ascii.ob_base,
+ & const_str__zip_searchorder._ascii.ob_base,
+ &_Py_ID(_bootstrap),
+ & const_str__verbose_message._ascii.ob_base,
+ & const_str_archive._ascii.ob_base,
+ & const_str_path_sep._ascii.ob_base,
+ & const_str__files._ascii.ob_base,
+ & const_str__get_data._ascii.ob_base,
+ & const_str__unmarshal_code._ascii.ob_base,
+ & const_str_ImportError._ascii.ob_base,
+ & const_str__compile_source._ascii.ob_base,
+ & const_str_KeyError._ascii.ob_base,
+ & const_str_ZipImportError._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[298];
+ }
+zipimport_toplevel_consts_32_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 297,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xdc\x0b\x1b\x98\x44\xa0\x28\xd3\x0b\x2b\x80\x44\xd8\x13\x17\x80\x4c\xdc\x29\x39\xf2\x00\x1d\x05\x53\x01\xd1\x08\x25\x88\x06\x90\x0a\x98\x49\xd8\x13\x17\x98\x26\x91\x3d\x88\x08\xdc\x08\x12\xd7\x08\x23\xd1\x08\x23\xa0\x4f\xb0\x54\xb7\x5c\xb1\x5c\xc4\x38\xc8\x58\xd0\x61\x62\xd5\x08\x63\xf0\x02\x14\x09\x2c\xd8\x18\x1c\x9f\x0b\x99\x0b\xa0\x48\xd1\x18\x2d\x88\x49\xf0\x08\x00\x17\x20\xa0\x01\x91\x6c\x88\x47\xdc\x13\x1c\x98\x54\x9f\x5c\x99\x5c\xa8\x39\xd3\x13\x35\x88\x44\xd8\x13\x17\x88\x44\xd9\x0f\x19\xf0\x02\x03\x11\x27\xdc\x1b\x2a\xa8\x34\xb0\x17\xb8\x28\xc0\x48\xc8\x64\xd3\x1b\x53\x91\x44\xf4\x08\x00\x18\x27\xa0\x77\xb0\x04\xd3\x17\x35\x90\x04\xd8\x0f\x13\x88\x7c\xf0\x06\x00\x11\x19\xd8\x16\x1f\xa0\x01\x91\x6c\x88\x47\xd8\x13\x17\x98\x19\xa0\x47\xd0\x13\x2b\xd2\x0c\x2b\xf0\x2f\x1d\x05\x53\x01\xf1\x32\x00\x0c\x18\xd8\x14\x28\xa8\x1c\xa8\x0e\xd0\x12\x37\x88\x43\xdc\x12\x20\xa0\x13\xa8\x38\xd4\x12\x34\xb8\x2c\xd0\x0c\x46\xe4\x12\x20\xd0\x23\x35\xb0\x68\xb0\x5c\xd0\x21\x42\xc8\x18\xd4\x12\x52\xd0\x0c\x52\xf8\xf4\x1f\x00\x18\x23\xf2\x00\x01\x11\x27\xd8\x23\x26\x95\x4c\xfb\xf0\x03\x01\x11\x27\xfb\xf4\x13\x00\x10\x18\xf2\x00\x01\x09\x11\xd9\x0c\x10\xf0\x03\x01\x09\x11\xfa",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[43];
+ }
+zipimport_toplevel_consts_32_exceptiontable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 42,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\xc1\x0a\x0f\x43\x22\x02\xc1\x39\x0f\x43\x0a\x02\xc3\x0a\x09\x43\x1f\x05\xc3\x13\x02\x43\x1a\x05\xc3\x1a\x05\x43\x1f\x05\xc3\x22\x09\x43\x2e\x05\xc3\x2d\x01\x43\x2e\x05",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[13];
+ }
+const_str_import_error = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 12,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "import_error",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[14];
+ }_object;
+ }
+zipimport_toplevel_consts_32_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 14,
+ },
+ .ob_item = {
+ &_Py_ID(self),
+ & const_str_fullname._ascii.ob_base,
+ &_Py_ID(path),
+ & const_str_import_error._ascii.ob_base,
+ & const_str_suffix._ascii.ob_base,
+ & const_str_isbytecode._ascii.ob_base,
+ & const_str_ispackage._ascii.ob_base,
+ & const_str_fullpath._ascii.ob_base,
+ & const_str_toc_entry._ascii.ob_base,
+ & const_str_modpath._ascii.ob_base,
+ &_Py_ID(data),
+ &_Py_ID(code),
+ & const_str_exc._ascii.ob_base,
+ &_Py_ID(msg),
+ },
+ },
+};
+static
+ struct _PyCode_DEF(482)
+zipimport_toplevel_consts_32 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 241,
+ },
+ .co_consts = & zipimport_toplevel_consts_32_consts._object.ob_base.ob_base,
+ .co_names = & zipimport_toplevel_consts_32_names._object.ob_base.ob_base,
+ .co_exceptiontable = & zipimport_toplevel_consts_32_exceptiontable.ob_base.ob_base,
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 22 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 8,
+ .co_firstlineno = 688,
+ .co_nlocalsplus = 14,
+ .co_nlocals = 14,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 247,
+ .co_localsplusnames = & zipimport_toplevel_consts_32_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_external_toplevel_consts_72_consts_6_localspluskinds.ob_base.ob_base,
+ .co_filename = & zipimport_toplevel_consts_7_filename._ascii.ob_base,
+ .co_name = & const_str__get_module_code._ascii.ob_base,
+ .co_qualname = & const_str__get_module_code._ascii.ob_base,
+ .co_linetable = & zipimport_toplevel_consts_32_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x7c\x01\xab\x02\x00\x00\x00\x00\x00\x00\x7d\x02\x64\x00\x7d\x03\x74\x02\x00\x00\x00\x00\x00\x00\x00\x00\x44\x00\x5d\x8d\x00\x00\x5c\x03\x00\x00\x7d\x04\x7d\x05\x7d\x06\x7c\x02\x7c\x04\x7a\x00\x00\x00\x7d\x07\x74\x05\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x01\x7c\x00\x6a\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x74\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x07\x64\x02\xac\x03\xab\x05\x00\x00\x00\x00\x00\x00\x01\x00\x09\x00\x7c\x00\x6a\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x07\x19\x00\x00\x00\x7d\x08\x7c\x08\x64\x04\x19\x00\x00\x00\x7d\x09\x74\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x6a\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x08\xab\x02\x00\x00\x00\x00\x00\x00\x7d\x0a\x64\x00\x7d\x0b\x7c\x05\x72\x11\x09\x00\x74\x11\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x7c\x09\x7c\x07\x7c\x01\x7c\x0a\xab\x05\x00\x00\x00\x00\x00\x00\x7d\x0b\x6e\x0c\x74\x15\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x09\x7c\x0a\xab\x02\x00\x00\x00\x00\x00\x00\x7d\x0b\x7c\x0b\x80\x01\x8c\x83\x7c\x08\x64\x04\x19\x00\x00\x00\x7d\x09\x7c\x0b\x7c\x06\x7c\x09\x66\x03\x63\x02\x01\x00\x53\x00\x04\x00\x7c\x03\x72\x13\x64\x05\x7c\x03\x9b\x00\x9d\x02\x7d\x0d\x74\x19\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x0d\x7c\x01\xac\x06\xab\x02\x00\x00\x00\x00\x00\x00\x7c\x03\x82\x02\x74\x19\x00\x00\x00\x00\x00\x00\x00\x00\x64\x07\x7c\x01\x9b\x02\x9d\x02\x7c\x01\xac\x06\xab\x02\x00\x00\x00\x00\x00\x00\x82\x01\x23\x00\x74\x12\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x72\x0c\x7d\x0c\x7c\x0c\x7d\x03\x59\x00\x64\x00\x7d\x0c\x7e\x0c\x8c\x45\x64\x00\x7d\x0c\x7e\x0c\x77\x01\x77\x00\x78\x03\x59\x00\x77\x01\x23\x00\x74\x16\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x72\x03\x01\x00\x59\x00\x8c\xd8\x77\x00\x78\x03\x59\x00\x77\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[33];
+ }_object;
+ }
+zipimport_toplevel_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 33,
+ },
+ .ob_item = {
+ & zipimport_toplevel_consts_0._ascii.ob_base,
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 0],
+ Py_None,
+ & zipimport_toplevel_consts_3._object.ob_base.ob_base,
+ & const_str_ZipImportError._ascii.ob_base,
+ & const_str_zipimporter._ascii.ob_base,
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 1],
+ & zipimport_toplevel_consts_7.ob_base.ob_base,
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 22],
+ & zipimport_toplevel_consts_9.ob_base.ob_base,
+ & const_int_65535.ob_base,
+ & zipimport_toplevel_consts_11.ob_base.ob_base,
+ & zipimport_toplevel_consts_12._ascii.ob_base,
+ Py_True,
+ & importlib__bootstrap_toplevel_consts_46_consts_5_consts_11._ascii.ob_base,
+ Py_False,
+ & zipimport_toplevel_consts_16._object.ob_base.ob_base,
+ & zipimport_toplevel_consts_17._object.ob_base.ob_base,
+ & zipimport_toplevel_consts_18.ob_base.ob_base,
+ & zipimport_toplevel_consts_19.ob_base.ob_base,
+ & zipimport_toplevel_consts_20.ob_base.ob_base,
+ & zipimport_toplevel_consts_21.ob_base.ob_base,
+ & zipimport_toplevel_consts_22._compact._base.ob_base,
+ & zipimport_toplevel_consts_23.ob_base.ob_base,
+ & zipimport_toplevel_consts_24.ob_base.ob_base,
+ & zipimport_toplevel_consts_25.ob_base.ob_base,
+ & zipimport_toplevel_consts_26.ob_base.ob_base,
+ & zipimport_toplevel_consts_27.ob_base.ob_base,
+ & zipimport_toplevel_consts_28.ob_base.ob_base,
+ & zipimport_toplevel_consts_29.ob_base.ob_base,
+ & zipimport_toplevel_consts_30.ob_base.ob_base,
+ & zipimport_toplevel_consts_31.ob_base.ob_base,
+ & zipimport_toplevel_consts_32.ob_base.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[18];
+ }
+const_str__frozen_importlib = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 17,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_frozen_importlib",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[46];
+ }_object;
+ }
+zipimport_toplevel_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 46,
+ },
+ .ob_item = {
+ &_Py_ID(__doc__),
+ & const_str__frozen_importlib_external._ascii.ob_base,
+ & const_str__bootstrap_external._ascii.ob_base,
+ & const_str__unpack_uint16._ascii.ob_base,
+ & const_str__unpack_uint32._ascii.ob_base,
+ & const_str__frozen_importlib._ascii.ob_base,
+ &_Py_ID(_bootstrap),
+ & const_str__imp._ascii.ob_base,
+ &_Py_ID(_io),
+ & const_str_marshal._ascii.ob_base,
+ & const_str_sys._ascii.ob_base,
+ & const_str_time._ascii.ob_base,
+ & const_str__warnings._ascii.ob_base,
+ &_Py_ID(__all__),
+ & const_str_path_sep._ascii.ob_base,
+ & const_str_path_separators._ascii.ob_base,
+ & const_str_alt_path_sep._ascii.ob_base,
+ & const_str_ImportError._ascii.ob_base,
+ & const_str_ZipImportError._ascii.ob_base,
+ & const_str__zip_directory_cache._ascii.ob_base,
+ &_Py_ID(type),
+ & const_str__module_type._ascii.ob_base,
+ & const_str_END_CENTRAL_DIR_SIZE._ascii.ob_base,
+ & const_str_STRING_END_ARCHIVE._ascii.ob_base,
+ & const_str_MAX_COMMENT_LEN._ascii.ob_base,
+ & const_str__LoaderBasics._ascii.ob_base,
+ & const_str_zipimporter._ascii.ob_base,
+ & const_str__zip_searchorder._ascii.ob_base,
+ & const_str__get_module_path._ascii.ob_base,
+ & const_str__is_dir._ascii.ob_base,
+ & const_str__get_module_info._ascii.ob_base,
+ & const_str__read_directory._ascii.ob_base,
+ & const_str_cp437_table._ascii.ob_base,
+ & const_str__importing_zlib._ascii.ob_base,
+ & const_str__get_decompress_func._ascii.ob_base,
+ & const_str__get_data._ascii.ob_base,
+ & const_str__eq_mtime._ascii.ob_base,
+ & const_str__unmarshal_code._ascii.ob_base,
+ & const_str___code__._ascii.ob_base,
+ & const_str__code_type._ascii.ob_base,
+ & const_str__normalize_line_endings._ascii.ob_base,
+ & const_str__compile_source._ascii.ob_base,
+ & const_str__parse_dostime._ascii.ob_base,
+ & const_str__get_mtime_and_size_of_source._ascii.ob_base,
+ & const_str__get_pyc_source._ascii.ob_base,
+ & const_str__get_module_code._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[308];
+ }
+zipimport_toplevel_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 307,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\xf0\x03\x01\x01\x01\xf1\x02\x0c\x01\x04\xf3\x20\x00\x01\x39\xdf\x00\x45\xdb\x00\x26\xdb\x00\x0b\xdb\x00\x0a\xdb\x00\x0e\xdb\x00\x0a\xdb\x00\x0b\xdb\x00\x10\xe0\x0b\x1b\x98\x5d\xd0\x0a\x2b\x80\x07\xf0\x06\x00\x0c\x1f\xd7\x0b\x27\xd1\x0b\x27\x80\x08\xd8\x0f\x22\xd7\x0f\x32\xd1\x0f\x32\xb0\x31\xb0\x32\xd0\x0f\x36\x80\x0c\xf4\x06\x01\x01\x09\x90\x5b\xf4\x00\x01\x01\x09\xf0\x08\x00\x18\x1a\xd0\x00\x14\xe1\x0f\x13\x90\x43\x8b\x79\x80\x0c\xe0\x17\x19\xd0\x00\x14\xd8\x15\x22\xd0\x00\x12\xd8\x12\x1f\x80\x0f\xf4\x04\x6c\x03\x01\x4f\x01\xd0\x12\x25\xd7\x12\x33\xd1\x12\x33\xf4\x00\x6c\x03\x01\x4f\x01\xf0\x6a\x07\x00\x06\x0e\x90\x0e\xd1\x05\x1e\xa0\x04\xa0\x64\xd0\x04\x2b\xd8\x05\x0d\x90\x0d\xd1\x05\x1d\x98\x75\xa0\x64\xd0\x04\x2b\xd8\x04\x19\xd8\x04\x19\xf0\x09\x05\x14\x02\xd0\x00\x10\xf2\x12\x01\x01\x35\xf2\x08\x06\x01\x22\xf2\x12\x06\x01\x10\xf2\x3e\x7b\x01\x01\x11\xf0\x4a\x04\x18\x05\x2f\xf0\x05\x00\x01\x0c\xf0\x3a\x00\x13\x18\x80\x0f\xf2\x0a\x12\x01\x16\xf2\x2a\x28\x01\x25\xf2\x5c\x01\x02\x01\x1d\xf2\x10\x26\x01\x10\xf1\x50\x01\x00\x0e\x12\x90\x2f\xd7\x12\x2a\xd1\x12\x2a\xd3\x0d\x2b\x80\x0a\xf2\x0a\x03\x01\x12\xf2\x0e\x02\x01\x40\x01\xf2\x0c\x08\x01\x15\xf2\x1a\x0d\x01\x14\xf2\x26\x0a\x01\x32\xf3\x1e\x20\x01\x53\x01",
+};
+static
+ struct _PyCode_DEF(410)
+zipimport_toplevel = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 205,
+ },
+ .co_consts = & zipimport_toplevel_consts._object.ob_base.ob_base,
+ .co_names = & zipimport_toplevel_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 0,
+ .co_argcount = 0,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 5 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 5,
+ .co_firstlineno = 1,
+ .co_nlocalsplus = 0,
+ .co_nlocals = 0,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 248,
+ .co_localsplusnames = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_filename = & zipimport_toplevel_consts_7_filename._ascii.ob_base,
+ .co_name = &_Py_STR(anon_module),
+ .co_qualname = &_Py_STR(anon_module),
+ .co_linetable = & zipimport_toplevel_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x64\x00\x5a\x00\x64\x01\x64\x02\x6c\x01\x5a\x02\x64\x01\x64\x03\x6c\x01\x6d\x03\x5a\x03\x6d\x04\x5a\x04\x01\x00\x64\x01\x64\x02\x6c\x05\x5a\x06\x64\x01\x64\x02\x6c\x07\x5a\x07\x64\x01\x64\x02\x6c\x08\x5a\x08\x64\x01\x64\x02\x6c\x09\x5a\x09\x64\x01\x64\x02\x6c\x0a\x5a\x0a\x64\x01\x64\x02\x6c\x0b\x5a\x0b\x64\x01\x64\x02\x6c\x0c\x5a\x0c\x64\x04\x64\x05\x67\x02\x5a\x0d\x65\x02\x6a\x1c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5a\x0e\x65\x02\x6a\x1e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x06\x64\x02\x1a\x00\x5a\x10\x02\x00\x47\x00\x64\x07\x84\x00\x64\x04\x65\x11\xab\x03\x00\x00\x00\x00\x00\x00\x5a\x12\x69\x00\x5a\x13\x02\x00\x65\x14\x65\x0a\xab\x01\x00\x00\x00\x00\x00\x00\x5a\x15\x64\x08\x5a\x16\x64\x09\x5a\x17\x64\x0a\x5a\x18\x02\x00\x47\x00\x64\x0b\x84\x00\x64\x05\x65\x02\x6a\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x03\x00\x00\x00\x00\x00\x00\x5a\x1a\x65\x0e\x64\x0c\x7a\x00\x00\x00\x64\x0d\x64\x0d\x66\x03\x65\x0e\x64\x0e\x7a\x00\x00\x00\x64\x0f\x64\x0d\x66\x03\x64\x10\x64\x11\x66\x04\x5a\x1b\x64\x12\x84\x00\x5a\x1c\x64\x13\x84\x00\x5a\x1d\x64\x14\x84\x00\x5a\x1e\x64\x15\x84\x00\x5a\x1f\x64\x16\x5a\x20\x64\x0f\x61\x21\x64\x17\x84\x00\x5a\x22\x64\x18\x84\x00\x5a\x23\x64\x19\x84\x00\x5a\x24\x64\x1a\x84\x00\x5a\x25\x02\x00\x65\x14\x65\x25\x6a\x4c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x5a\x27\x64\x1b\x84\x00\x5a\x28\x64\x1c\x84\x00\x5a\x29\x64\x1d\x84\x00\x5a\x2a\x64\x1e\x84\x00\x5a\x2b\x64\x1f\x84\x00\x5a\x2c\x64\x20\x84\x00\x5a\x2d\x79\x02",
+ ._co_firsttraceable = 0,
+};
+
+PyObject *
+_Py_get_zipimport_toplevel(void)
+{
+ return Py_NewRef((PyObject *) &zipimport_toplevel);
+}
+
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[52];
+ }
+abc_toplevel_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 51,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Abstract Base Classes (ABCs) according to PEP 3119.",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[586];
+ }
+abc_toplevel_consts_1_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 585,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x41\x20\x64\x65\x63\x6f\x72\x61\x74\x6f\x72\x20\x69\x6e\x64\x69\x63\x61\x74\x69\x6e\x67\x20\x61\x62\x73\x74\x72\x61\x63\x74\x20\x6d\x65\x74\x68\x6f\x64\x73\x2e\x0a\x0a\x20\x20\x20\x20\x52\x65\x71\x75\x69\x72\x65\x73\x20\x74\x68\x61\x74\x20\x74\x68\x65\x20\x6d\x65\x74\x61\x63\x6c\x61\x73\x73\x20\x69\x73\x20\x41\x42\x43\x4d\x65\x74\x61\x20\x6f\x72\x20\x64\x65\x72\x69\x76\x65\x64\x20\x66\x72\x6f\x6d\x20\x69\x74\x2e\x20\x20\x41\x0a\x20\x20\x20\x20\x63\x6c\x61\x73\x73\x20\x74\x68\x61\x74\x20\x68\x61\x73\x20\x61\x20\x6d\x65\x74\x61\x63\x6c\x61\x73\x73\x20\x64\x65\x72\x69\x76\x65\x64\x20\x66\x72\x6f\x6d\x20\x41\x42\x43\x4d\x65\x74\x61\x20\x63\x61\x6e\x6e\x6f\x74\x20\x62\x65\x0a\x20\x20\x20\x20\x69\x6e\x73\x74\x61\x6e\x74\x69\x61\x74\x65\x64\x20\x75\x6e\x6c\x65\x73\x73\x20\x61\x6c\x6c\x20\x6f\x66\x20\x69\x74\x73\x20\x61\x62\x73\x74\x72\x61\x63\x74\x20\x6d\x65\x74\x68\x6f\x64\x73\x20\x61\x72\x65\x20\x6f\x76\x65\x72\x72\x69\x64\x64\x65\x6e\x2e\x0a\x20\x20\x20\x20\x54\x68\x65\x20\x61\x62\x73\x74\x72\x61\x63\x74\x20\x6d\x65\x74\x68\x6f\x64\x73\x20\x63\x61\x6e\x20\x62\x65\x20\x63\x61\x6c\x6c\x65\x64\x20\x75\x73\x69\x6e\x67\x20\x61\x6e\x79\x20\x6f\x66\x20\x74\x68\x65\x20\x6e\x6f\x72\x6d\x61\x6c\x0a\x20\x20\x20\x20\x27\x73\x75\x70\x65\x72\x27\x20\x63\x61\x6c\x6c\x20\x6d\x65\x63\x68\x61\x6e\x69\x73\x6d\x73\x2e\x20\x20\x61\x62\x73\x74\x72\x61\x63\x74\x6d\x65\x74\x68\x6f\x64\x28\x29\x20\x6d\x61\x79\x20\x62\x65\x20\x75\x73\x65\x64\x20\x74\x6f\x20\x64\x65\x63\x6c\x61\x72\x65\x0a\x20\x20\x20\x20\x61\x62\x73\x74\x72\x61\x63\x74\x20\x6d\x65\x74\x68\x6f\x64\x73\x20\x66\x6f\x72\x20\x70\x72\x6f\x70\x65\x72\x74\x69\x65\x73\x20\x61\x6e\x64\x20\x64\x65\x73\x63\x72\x69\x70\x74\x6f\x72\x73\x2e\x0a\x0a\x20\x20\x20\x20\x55\x73\x61\x67\x65\x3a\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x63\x6c\x61\x73\x73\x20\x43\x28\x6d\x65\x74\x61\x63\x6c\x61\x73\x73\x3d\x41\x42\x43\x4d\x65\x74\x61\x29\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x40\x61\x62\x73\x74\x72\x61\x63\x74\x6d\x65\x74\x68\x6f\x64\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x64\x65\x66\x20\x6d\x79\x5f\x61\x62\x73\x74\x72\x61\x63\x74\x5f\x6d\x65\x74\x68\x6f\x64\x28\x73\x65\x6c\x66\x2c\x20\x61\x72\x67\x31\x2c\x20\x61\x72\x67\x32\x2c\x20\x61\x72\x67\x4e\x29\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x2e\x2e\x2e\x0a\x20\x20\x20\x20",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+abc_toplevel_consts_1_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & abc_toplevel_consts_1_consts_0._ascii.ob_base,
+ Py_True,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+abc_toplevel_consts_1_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ &_Py_ID(__isabstractmethod__),
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[13];
+ }
+abc_toplevel_consts_1_filename = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 12,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "<frozen abc>",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[15];
+ }
+const_str_abstractmethod = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 14,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "abstractmethod",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[18];
+ }
+abc_toplevel_consts_1_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 17,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf0\x22\x00\x24\x28\x80\x47\xd4\x04\x20\xd8\x0b\x12\x80\x4e",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[8];
+ }
+const_str_funcobj = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 7,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "funcobj",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+abc_toplevel_consts_1_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & const_str_funcobj._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(20)
+abc_toplevel_consts_1 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 10,
+ },
+ .co_consts = & abc_toplevel_consts_1_consts._object.ob_base.ob_base,
+ .co_names = & abc_toplevel_consts_1_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 3 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 2,
+ .co_firstlineno = 7,
+ .co_nlocalsplus = 1,
+ .co_nlocals = 1,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 249,
+ .co_localsplusnames = & abc_toplevel_consts_1_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_characters[32]),
+ .co_filename = & abc_toplevel_consts_1_filename._ascii.ob_base,
+ .co_name = & const_str_abstractmethod._ascii.ob_base,
+ .co_qualname = & const_str_abstractmethod._ascii.ob_base,
+ .co_linetable = & abc_toplevel_consts_1_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x64\x01\x7c\x00\x5f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[20];
+ }
+const_str_abstractclassmethod = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 19,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "abstractclassmethod",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[265];
+ }
+abc_toplevel_consts_2_consts_1 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 264,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x41\x20\x64\x65\x63\x6f\x72\x61\x74\x6f\x72\x20\x69\x6e\x64\x69\x63\x61\x74\x69\x6e\x67\x20\x61\x62\x73\x74\x72\x61\x63\x74\x20\x63\x6c\x61\x73\x73\x6d\x65\x74\x68\x6f\x64\x73\x2e\x0a\x0a\x20\x20\x20\x20\x44\x65\x70\x72\x65\x63\x61\x74\x65\x64\x2c\x20\x75\x73\x65\x20\x27\x63\x6c\x61\x73\x73\x6d\x65\x74\x68\x6f\x64\x27\x20\x77\x69\x74\x68\x20\x27\x61\x62\x73\x74\x72\x61\x63\x74\x6d\x65\x74\x68\x6f\x64\x27\x20\x69\x6e\x73\x74\x65\x61\x64\x3a\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x63\x6c\x61\x73\x73\x20\x43\x28\x41\x42\x43\x29\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x40\x63\x6c\x61\x73\x73\x6d\x65\x74\x68\x6f\x64\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x40\x61\x62\x73\x74\x72\x61\x63\x74\x6d\x65\x74\x68\x6f\x64\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x64\x65\x66\x20\x6d\x79\x5f\x61\x62\x73\x74\x72\x61\x63\x74\x5f\x63\x6c\x61\x73\x73\x6d\x65\x74\x68\x6f\x64\x28\x63\x6c\x73\x2c\x20\x2e\x2e\x2e\x29\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x2e\x2e\x2e\x0a\x0a\x20\x20\x20\x20",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+abc_toplevel_consts_2_consts_3_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ &_Py_ID(__isabstractmethod__),
+ & const_str_super._ascii.ob_base,
+ &_Py_ID(__init__),
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[29];
+ }
+abc_toplevel_consts_2_consts_3_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 28,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "abstractclassmethod.__init__",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[25];
+ }
+abc_toplevel_consts_2_consts_3_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 24,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\xf8\x80\x00\xd8\x28\x2c\x88\x08\xd4\x08\x25\xdc\x08\x0d\x89\x07\xd1\x08\x18\x98\x18\xd5\x08\x22",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[9];
+ }
+const_str_callable = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 8,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "callable",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+abc_toplevel_consts_2_consts_3_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ &_Py_ID(self),
+ & const_str_callable._ascii.ob_base,
+ &_Py_ID(__class__),
+ },
+ },
+};
+static
+ struct _PyCode_DEF(50)
+abc_toplevel_consts_2_consts_3 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 25,
+ },
+ .co_consts = & importlib__bootstrap_external_toplevel_consts_68_consts_2_consts._object.ob_base.ob_base,
+ .co_names = & abc_toplevel_consts_2_consts_3_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 6 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 3,
+ .co_firstlineno = 43,
+ .co_nlocalsplus = 3,
+ .co_nlocals = 2,
+ .co_ncellvars = 0,
+ .co_nfreevars = 1,
+ .co_version = 250,
+ .co_localsplusnames = & abc_toplevel_consts_2_consts_3_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_7_consts_1_consts_1_consts_4_localspluskinds.ob_base.ob_base,
+ .co_filename = & abc_toplevel_consts_1_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__init__),
+ .co_qualname = & abc_toplevel_consts_2_consts_3_qualname._ascii.ob_base,
+ .co_linetable = & abc_toplevel_consts_2_consts_3_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x95\x01\x97\x00\x64\x01\x7c\x01\x5f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x74\x02\x00\x00\x00\x00\x00\x00\x00\x00\x89\x02\x7c\x00\x8d\x09\x00\x00\x7c\x01\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x79\x00",
+ ._co_firsttraceable = 1,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[4];
+ }_object;
+ }
+abc_toplevel_consts_2_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_item = {
+ & const_str_abstractclassmethod._ascii.ob_base,
+ & abc_toplevel_consts_2_consts_1._ascii.ob_base,
+ Py_True,
+ & abc_toplevel_consts_2_consts_3.ob_base.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[7];
+ }_object;
+ }
+abc_toplevel_consts_2_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 7,
+ },
+ .ob_item = {
+ &_Py_ID(__name__),
+ &_Py_ID(__module__),
+ &_Py_ID(__qualname__),
+ &_Py_ID(__doc__),
+ &_Py_ID(__isabstractmethod__),
+ &_Py_ID(__init__),
+ &_Py_ID(__classcell__),
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[27];
+ }
+abc_toplevel_consts_2_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 26,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\xf8\x84\x00\xf1\x02\x0a\x05\x08\xf0\x18\x00\x1c\x20\xd0\x04\x18\xf7\x04\x02\x05\x23\xf0\x00\x02\x05\x23",
+};
+static
+ struct _PyCode_DEF(38)
+abc_toplevel_consts_2 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 19,
+ },
+ .co_consts = & abc_toplevel_consts_2_consts._object.ob_base.ob_base,
+ .co_names = & abc_toplevel_consts_2_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 0,
+ .co_argcount = 0,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 3 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 2,
+ .co_firstlineno = 28,
+ .co_nlocalsplus = 1,
+ .co_nlocals = 0,
+ .co_ncellvars = 1,
+ .co_nfreevars = 0,
+ .co_version = 251,
+ .co_localsplusnames = & importlib__bootstrap_external_toplevel_consts_58_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_characters[64]),
+ .co_filename = & abc_toplevel_consts_1_filename._ascii.ob_base,
+ .co_name = & const_str_abstractclassmethod._ascii.ob_base,
+ .co_qualname = & const_str_abstractclassmethod._ascii.ob_base,
+ .co_linetable = & abc_toplevel_consts_2_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x87\x00\x97\x00\x65\x00\x5a\x01\x64\x00\x5a\x02\x64\x01\x5a\x03\x64\x02\x5a\x04\x88\x00\x66\x01\x64\x03\x84\x08\x5a\x05\x88\x00\x78\x01\x5a\x06\x53\x00",
+ ._co_firsttraceable = 1,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[21];
+ }
+const_str_abstractstaticmethod = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 20,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "abstractstaticmethod",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[264];
+ }
+abc_toplevel_consts_4_consts_1 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 263,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x41\x20\x64\x65\x63\x6f\x72\x61\x74\x6f\x72\x20\x69\x6e\x64\x69\x63\x61\x74\x69\x6e\x67\x20\x61\x62\x73\x74\x72\x61\x63\x74\x20\x73\x74\x61\x74\x69\x63\x6d\x65\x74\x68\x6f\x64\x73\x2e\x0a\x0a\x20\x20\x20\x20\x44\x65\x70\x72\x65\x63\x61\x74\x65\x64\x2c\x20\x75\x73\x65\x20\x27\x73\x74\x61\x74\x69\x63\x6d\x65\x74\x68\x6f\x64\x27\x20\x77\x69\x74\x68\x20\x27\x61\x62\x73\x74\x72\x61\x63\x74\x6d\x65\x74\x68\x6f\x64\x27\x20\x69\x6e\x73\x74\x65\x61\x64\x3a\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x63\x6c\x61\x73\x73\x20\x43\x28\x41\x42\x43\x29\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x40\x73\x74\x61\x74\x69\x63\x6d\x65\x74\x68\x6f\x64\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x40\x61\x62\x73\x74\x72\x61\x63\x74\x6d\x65\x74\x68\x6f\x64\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x64\x65\x66\x20\x6d\x79\x5f\x61\x62\x73\x74\x72\x61\x63\x74\x5f\x73\x74\x61\x74\x69\x63\x6d\x65\x74\x68\x6f\x64\x28\x2e\x2e\x2e\x29\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x2e\x2e\x2e\x0a\x0a\x20\x20\x20\x20",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[30];
+ }
+abc_toplevel_consts_4_consts_3_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 29,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "abstractstaticmethod.__init__",
+};
+static
+ struct _PyCode_DEF(50)
+abc_toplevel_consts_4_consts_3 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 25,
+ },
+ .co_consts = & importlib__bootstrap_external_toplevel_consts_68_consts_2_consts._object.ob_base.ob_base,
+ .co_names = & abc_toplevel_consts_2_consts_3_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 6 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 3,
+ .co_firstlineno = 63,
+ .co_nlocalsplus = 3,
+ .co_nlocals = 2,
+ .co_ncellvars = 0,
+ .co_nfreevars = 1,
+ .co_version = 252,
+ .co_localsplusnames = & abc_toplevel_consts_2_consts_3_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_7_consts_1_consts_1_consts_4_localspluskinds.ob_base.ob_base,
+ .co_filename = & abc_toplevel_consts_1_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__init__),
+ .co_qualname = & abc_toplevel_consts_4_consts_3_qualname._ascii.ob_base,
+ .co_linetable = & abc_toplevel_consts_2_consts_3_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x95\x01\x97\x00\x64\x01\x7c\x01\x5f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x74\x02\x00\x00\x00\x00\x00\x00\x00\x00\x89\x02\x7c\x00\x8d\x09\x00\x00\x7c\x01\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x79\x00",
+ ._co_firsttraceable = 1,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[4];
+ }_object;
+ }
+abc_toplevel_consts_4_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_item = {
+ & const_str_abstractstaticmethod._ascii.ob_base,
+ & abc_toplevel_consts_4_consts_1._ascii.ob_base,
+ Py_True,
+ & abc_toplevel_consts_4_consts_3.ob_base.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(38)
+abc_toplevel_consts_4 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 19,
+ },
+ .co_consts = & abc_toplevel_consts_4_consts._object.ob_base.ob_base,
+ .co_names = & abc_toplevel_consts_2_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 0,
+ .co_argcount = 0,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 3 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 2,
+ .co_firstlineno = 48,
+ .co_nlocalsplus = 1,
+ .co_nlocals = 0,
+ .co_ncellvars = 1,
+ .co_nfreevars = 0,
+ .co_version = 253,
+ .co_localsplusnames = & importlib__bootstrap_external_toplevel_consts_58_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_characters[64]),
+ .co_filename = & abc_toplevel_consts_1_filename._ascii.ob_base,
+ .co_name = & const_str_abstractstaticmethod._ascii.ob_base,
+ .co_qualname = & const_str_abstractstaticmethod._ascii.ob_base,
+ .co_linetable = & abc_toplevel_consts_2_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x87\x00\x97\x00\x65\x00\x5a\x01\x64\x00\x5a\x02\x64\x01\x5a\x03\x64\x02\x5a\x04\x88\x00\x66\x01\x64\x03\x84\x08\x5a\x05\x88\x00\x78\x01\x5a\x06\x53\x00",
+ ._co_firsttraceable = 1,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[17];
+ }
+const_str_abstractproperty = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 16,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "abstractproperty",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[250];
+ }
+abc_toplevel_consts_6_consts_1 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 249,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x41\x20\x64\x65\x63\x6f\x72\x61\x74\x6f\x72\x20\x69\x6e\x64\x69\x63\x61\x74\x69\x6e\x67\x20\x61\x62\x73\x74\x72\x61\x63\x74\x20\x70\x72\x6f\x70\x65\x72\x74\x69\x65\x73\x2e\x0a\x0a\x20\x20\x20\x20\x44\x65\x70\x72\x65\x63\x61\x74\x65\x64\x2c\x20\x75\x73\x65\x20\x27\x70\x72\x6f\x70\x65\x72\x74\x79\x27\x20\x77\x69\x74\x68\x20\x27\x61\x62\x73\x74\x72\x61\x63\x74\x6d\x65\x74\x68\x6f\x64\x27\x20\x69\x6e\x73\x74\x65\x61\x64\x3a\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x63\x6c\x61\x73\x73\x20\x43\x28\x41\x42\x43\x29\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x40\x70\x72\x6f\x70\x65\x72\x74\x79\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x40\x61\x62\x73\x74\x72\x61\x63\x74\x6d\x65\x74\x68\x6f\x64\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x64\x65\x66\x20\x6d\x79\x5f\x61\x62\x73\x74\x72\x61\x63\x74\x5f\x70\x72\x6f\x70\x65\x72\x74\x79\x28\x73\x65\x6c\x66\x29\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x2e\x2e\x2e\x0a\x0a\x20\x20\x20\x20",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[4];
+ }_object;
+ }
+abc_toplevel_consts_6_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_item = {
+ & const_str_abstractproperty._ascii.ob_base,
+ & abc_toplevel_consts_6_consts_1._ascii.ob_base,
+ Py_True,
+ Py_None,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[5];
+ }_object;
+ }
+abc_toplevel_consts_6_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 5,
+ },
+ .ob_item = {
+ &_Py_ID(__name__),
+ &_Py_ID(__module__),
+ &_Py_ID(__qualname__),
+ &_Py_ID(__doc__),
+ &_Py_ID(__isabstractmethod__),
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[16];
+ }
+abc_toplevel_consts_6_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 15,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x84\x00\xf1\x02\x0a\x05\x08\xf0\x18\x00\x1c\x20\xd1\x04\x18",
+};
+static
+ struct _PyCode_DEF(20)
+abc_toplevel_consts_6 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 10,
+ },
+ .co_consts = & abc_toplevel_consts_6_consts._object.ob_base.ob_base,
+ .co_names = & abc_toplevel_consts_6_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 0,
+ .co_argcount = 0,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 1 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 1,
+ .co_firstlineno = 68,
+ .co_nlocalsplus = 0,
+ .co_nlocals = 0,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 254,
+ .co_localsplusnames = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_filename = & abc_toplevel_consts_1_filename._ascii.ob_base,
+ .co_name = & const_str_abstractproperty._ascii.ob_base,
+ .co_qualname = & const_str_abstractproperty._ascii.ob_base,
+ .co_linetable = & abc_toplevel_consts_6_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x65\x00\x5a\x01\x64\x00\x5a\x02\x64\x01\x5a\x03\x64\x02\x5a\x04\x79\x03",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[16];
+ }
+const_str_get_cache_token = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 15,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "get_cache_token",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[10];
+ }
+const_str__abc_init = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 9,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_abc_init",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[14];
+ }
+const_str__abc_register = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 13,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_abc_register",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[19];
+ }
+const_str__abc_instancecheck = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 18,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_abc_instancecheck",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[19];
+ }
+const_str__abc_subclasscheck = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 18,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_abc_subclasscheck",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[10];
+ }
+const_str__get_dump = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 9,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_get_dump",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[16];
+ }
+const_str__reset_registry = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 15,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_reset_registry",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[14];
+ }
+const_str__reset_caches = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 13,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_reset_caches",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[8];
+ }_object;
+ }
+abc_toplevel_consts_9 = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 8,
+ },
+ .ob_item = {
+ & const_str_get_cache_token._ascii.ob_base,
+ & const_str__abc_init._ascii.ob_base,
+ & const_str__abc_register._ascii.ob_base,
+ & const_str__abc_instancecheck._ascii.ob_base,
+ & const_str__abc_subclasscheck._ascii.ob_base,
+ & const_str__get_dump._ascii.ob_base,
+ & const_str__reset_registry._ascii.ob_base,
+ & const_str__reset_caches._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[8];
+ }
+const_str_ABCMeta = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 7,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "ABCMeta",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[657];
+ }
+abc_toplevel_consts_10_consts_1 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 656,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x4d\x65\x74\x61\x63\x6c\x61\x73\x73\x20\x66\x6f\x72\x20\x64\x65\x66\x69\x6e\x69\x6e\x67\x20\x41\x62\x73\x74\x72\x61\x63\x74\x20\x42\x61\x73\x65\x20\x43\x6c\x61\x73\x73\x65\x73\x20\x28\x41\x42\x43\x73\x29\x2e\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x55\x73\x65\x20\x74\x68\x69\x73\x20\x6d\x65\x74\x61\x63\x6c\x61\x73\x73\x20\x74\x6f\x20\x63\x72\x65\x61\x74\x65\x20\x61\x6e\x20\x41\x42\x43\x2e\x20\x20\x41\x6e\x20\x41\x42\x43\x20\x63\x61\x6e\x20\x62\x65\x20\x73\x75\x62\x63\x6c\x61\x73\x73\x65\x64\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x64\x69\x72\x65\x63\x74\x6c\x79\x2c\x20\x61\x6e\x64\x20\x74\x68\x65\x6e\x20\x61\x63\x74\x73\x20\x61\x73\x20\x61\x20\x6d\x69\x78\x2d\x69\x6e\x20\x63\x6c\x61\x73\x73\x2e\x20\x20\x59\x6f\x75\x20\x63\x61\x6e\x20\x61\x6c\x73\x6f\x20\x72\x65\x67\x69\x73\x74\x65\x72\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x75\x6e\x72\x65\x6c\x61\x74\x65\x64\x20\x63\x6f\x6e\x63\x72\x65\x74\x65\x20\x63\x6c\x61\x73\x73\x65\x73\x20\x28\x65\x76\x65\x6e\x20\x62\x75\x69\x6c\x74\x2d\x69\x6e\x20\x63\x6c\x61\x73\x73\x65\x73\x29\x20\x61\x6e\x64\x20\x75\x6e\x72\x65\x6c\x61\x74\x65\x64\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x41\x42\x43\x73\x20\x61\x73\x20\x27\x76\x69\x72\x74\x75\x61\x6c\x20\x73\x75\x62\x63\x6c\x61\x73\x73\x65\x73\x27\x20\x2d\x2d\x20\x74\x68\x65\x73\x65\x20\x61\x6e\x64\x20\x74\x68\x65\x69\x72\x20\x64\x65\x73\x63\x65\x6e\x64\x61\x6e\x74\x73\x20\x77\x69\x6c\x6c\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x62\x65\x20\x63\x6f\x6e\x73\x69\x64\x65\x72\x65\x64\x20\x73\x75\x62\x63\x6c\x61\x73\x73\x65\x73\x20\x6f\x66\x20\x74\x68\x65\x20\x72\x65\x67\x69\x73\x74\x65\x72\x69\x6e\x67\x20\x41\x42\x43\x20\x62\x79\x20\x74\x68\x65\x20\x62\x75\x69\x6c\x74\x2d\x69\x6e\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x69\x73\x73\x75\x62\x63\x6c\x61\x73\x73\x28\x29\x20\x66\x75\x6e\x63\x74\x69\x6f\x6e\x2c\x20\x62\x75\x74\x20\x74\x68\x65\x20\x72\x65\x67\x69\x73\x74\x65\x72\x69\x6e\x67\x20\x41\x42\x43\x20\x77\x6f\x6e\x27\x74\x20\x73\x68\x6f\x77\x20\x75\x70\x20\x69\x6e\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x74\x68\x65\x69\x72\x20\x4d\x52\x4f\x20\x28\x4d\x65\x74\x68\x6f\x64\x20\x52\x65\x73\x6f\x6c\x75\x74\x69\x6f\x6e\x20\x4f\x72\x64\x65\x72\x29\x20\x6e\x6f\x72\x20\x77\x69\x6c\x6c\x20\x6d\x65\x74\x68\x6f\x64\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x69\x6d\x70\x6c\x65\x6d\x65\x6e\x74\x61\x74\x69\x6f\x6e\x73\x20\x64\x65\x66\x69\x6e\x65\x64\x20\x62\x79\x20\x74\x68\x65\x20\x72\x65\x67\x69\x73\x74\x65\x72\x69\x6e\x67\x20\x41\x42\x43\x20\x62\x65\x20\x63\x61\x6c\x6c\x61\x62\x6c\x65\x20\x28\x6e\x6f\x74\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x65\x76\x65\x6e\x20\x76\x69\x61\x20\x73\x75\x70\x65\x72\x28\x29\x29\x2e\x0a\x20\x20\x20\x20\x20\x20\x20\x20",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+abc_toplevel_consts_10_consts_2_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ & const_str_super._ascii.ob_base,
+ &_Py_ID(__new__),
+ & const_str__abc_init._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[16];
+ }
+abc_toplevel_consts_10_consts_2_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 15,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "ABCMeta.__new__",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[41];
+ }
+abc_toplevel_consts_10_consts_2_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 40,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\xf8\x80\x00\xdc\x12\x17\x91\x27\x91\x2f\xa0\x24\xa8\x04\xa8\x65\xb0\x59\xd1\x12\x49\xc0\x26\xd1\x12\x49\x88\x43\xdc\x0c\x15\x90\x63\x8c\x4e\xd8\x13\x16\x88\x4a",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[5];
+ }
+const_str_mcls = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 4,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "mcls",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[6];
+ }
+const_str_bases = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 5,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "bases",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[10];
+ }
+const_str_namespace = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 9,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "namespace",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[7];
+ }_object;
+ }
+abc_toplevel_consts_10_consts_2_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 7,
+ },
+ .ob_item = {
+ & const_str_mcls._ascii.ob_base,
+ &_Py_ID(name),
+ & const_str_bases._ascii.ob_base,
+ & const_str_namespace._ascii.ob_base,
+ & const_str_kwargs._ascii.ob_base,
+ & const_str_cls._ascii.ob_base,
+ &_Py_ID(__class__),
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[8];
+ }
+abc_toplevel_consts_10_consts_2_localspluskinds = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 7,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x20\x20\x20\x20\x20\x20\x80",
+};
+static
+ struct _PyCode_DEF(68)
+abc_toplevel_consts_10_consts_2 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 34,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_1_consts._object.ob_base.ob_base,
+ .co_names = & abc_toplevel_consts_10_consts_2_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 11,
+ .co_argcount = 4,
+ .co_posonlyargcount = 4,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 13 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 6,
+ .co_firstlineno = 105,
+ .co_nlocalsplus = 7,
+ .co_nlocals = 6,
+ .co_ncellvars = 0,
+ .co_nfreevars = 1,
+ .co_version = 255,
+ .co_localsplusnames = & abc_toplevel_consts_10_consts_2_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & abc_toplevel_consts_10_consts_2_localspluskinds.ob_base.ob_base,
+ .co_filename = & abc_toplevel_consts_1_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__new__),
+ .co_qualname = & abc_toplevel_consts_10_consts_2_qualname._ascii.ob_base,
+ .co_linetable = & abc_toplevel_consts_10_consts_2_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x95\x01\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x89\x06\x7c\x00\x8d\x04\x00\x00\x7c\x00\x7c\x01\x7c\x02\x7c\x03\x66\x04\x69\x00\x7c\x04\xa4\x01\x8e\x01\x7d\x05\x74\x05\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x05\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x7c\x05\x53\x00",
+ ._co_firsttraceable = 1,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[124];
+ }
+abc_toplevel_consts_10_consts_3_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 123,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x52\x65\x67\x69\x73\x74\x65\x72\x20\x61\x20\x76\x69\x72\x74\x75\x61\x6c\x20\x73\x75\x62\x63\x6c\x61\x73\x73\x20\x6f\x66\x20\x61\x6e\x20\x41\x42\x43\x2e\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x52\x65\x74\x75\x72\x6e\x73\x20\x74\x68\x65\x20\x73\x75\x62\x63\x6c\x61\x73\x73\x2c\x20\x74\x6f\x20\x61\x6c\x6c\x6f\x77\x20\x75\x73\x61\x67\x65\x20\x61\x73\x20\x61\x20\x63\x6c\x61\x73\x73\x20\x64\x65\x63\x6f\x72\x61\x74\x6f\x72\x2e\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+abc_toplevel_consts_10_consts_3_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & abc_toplevel_consts_10_consts_3_consts_0._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+abc_toplevel_consts_10_consts_3_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & const_str__abc_register._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[9];
+ }
+const_str_register = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 8,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "register",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[17];
+ }
+abc_toplevel_consts_10_consts_3_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 16,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "ABCMeta.register",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[18];
+ }
+abc_toplevel_consts_10_consts_3_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 17,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf4\x0a\x00\x14\x21\xa0\x13\xa0\x68\xd3\x13\x2f\xd0\x0c\x2f",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[9];
+ }
+const_str_subclass = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 8,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "subclass",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+abc_toplevel_consts_10_consts_3_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & const_str_cls._ascii.ob_base,
+ & const_str_subclass._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(26)
+abc_toplevel_consts_10_consts_3 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 13,
+ },
+ .co_consts = & abc_toplevel_consts_10_consts_3_consts._object.ob_base.ob_base,
+ .co_names = & abc_toplevel_consts_10_consts_3_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 6 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 110,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 2,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 256,
+ .co_localsplusnames = & abc_toplevel_consts_10_consts_3_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_14_consts_2_localspluskinds.ob_base.ob_base,
+ .co_filename = & abc_toplevel_consts_1_filename._ascii.ob_base,
+ .co_name = & const_str_register._ascii.ob_base,
+ .co_qualname = & abc_toplevel_consts_10_consts_3_qualname._ascii.ob_base,
+ .co_linetable = & abc_toplevel_consts_10_consts_3_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x7c\x01\xab\x02\x00\x00\x00\x00\x00\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[40];
+ }
+abc_toplevel_consts_10_consts_4_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 39,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Override for isinstance(instance, cls).",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+abc_toplevel_consts_10_consts_4_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & abc_toplevel_consts_10_consts_4_consts_0._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+abc_toplevel_consts_10_consts_4_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & const_str__abc_instancecheck._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[26];
+ }
+abc_toplevel_consts_10_consts_4_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 25,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "ABCMeta.__instancecheck__",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[16];
+ }
+abc_toplevel_consts_10_consts_4_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 15,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xe4\x13\x25\xa0\x63\xa8\x38\xd3\x13\x34\xd0\x0c\x34",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[9];
+ }
+const_str_instance = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 8,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "instance",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+abc_toplevel_consts_10_consts_4_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & const_str_cls._ascii.ob_base,
+ & const_str_instance._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(26)
+abc_toplevel_consts_10_consts_4 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 13,
+ },
+ .co_consts = & abc_toplevel_consts_10_consts_4_consts._object.ob_base.ob_base,
+ .co_names = & abc_toplevel_consts_10_consts_4_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 6 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 117,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 2,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 257,
+ .co_localsplusnames = & abc_toplevel_consts_10_consts_4_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_14_consts_2_localspluskinds.ob_base.ob_base,
+ .co_filename = & abc_toplevel_consts_1_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__instancecheck__),
+ .co_qualname = & abc_toplevel_consts_10_consts_4_qualname._ascii.ob_base,
+ .co_linetable = & abc_toplevel_consts_10_consts_4_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x7c\x01\xab\x02\x00\x00\x00\x00\x00\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[40];
+ }
+abc_toplevel_consts_10_consts_5_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 39,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Override for issubclass(subclass, cls).",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+abc_toplevel_consts_10_consts_5_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & abc_toplevel_consts_10_consts_5_consts_0._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+abc_toplevel_consts_10_consts_5_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & const_str__abc_subclasscheck._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[26];
+ }
+abc_toplevel_consts_10_consts_5_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 25,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "ABCMeta.__subclasscheck__",
+};
+static
+ struct _PyCode_DEF(26)
+abc_toplevel_consts_10_consts_5 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 13,
+ },
+ .co_consts = & abc_toplevel_consts_10_consts_5_consts._object.ob_base.ob_base,
+ .co_names = & abc_toplevel_consts_10_consts_5_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 6 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 121,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 2,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 258,
+ .co_localsplusnames = & abc_toplevel_consts_10_consts_3_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_14_consts_2_localspluskinds.ob_base.ob_base,
+ .co_filename = & abc_toplevel_consts_1_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__subclasscheck__),
+ .co_qualname = & abc_toplevel_consts_10_consts_5_qualname._ascii.ob_base,
+ .co_linetable = & abc_toplevel_consts_10_consts_4_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x7c\x01\xab\x02\x00\x00\x00\x00\x00\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[40];
+ }
+abc_toplevel_consts_10_consts_6_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 39,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Debug helper to print the ABC registry.",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[8];
+ }
+abc_toplevel_consts_10_consts_6_consts_1 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 7,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Class: ",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[15];
+ }
+abc_toplevel_consts_10_consts_6_consts_4 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 14,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Inv. counter: ",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[16];
+ }
+abc_toplevel_consts_10_consts_6_consts_5 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 15,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_abc_registry: ",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[13];
+ }
+abc_toplevel_consts_10_consts_6_consts_6 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 12,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_abc_cache: ",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[22];
+ }
+abc_toplevel_consts_10_consts_6_consts_7 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 21,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_abc_negative_cache: ",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[30];
+ }
+abc_toplevel_consts_10_consts_6_consts_8 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 29,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_abc_negative_cache_version: ",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[10];
+ }_object;
+ }
+abc_toplevel_consts_10_consts_6_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 10,
+ },
+ .ob_item = {
+ & abc_toplevel_consts_10_consts_6_consts_0._ascii.ob_base,
+ & abc_toplevel_consts_10_consts_6_consts_1._ascii.ob_base,
+ &_Py_STR(dot),
+ & importlib__bootstrap_toplevel_consts_25_consts_3._object.ob_base.ob_base,
+ & abc_toplevel_consts_10_consts_6_consts_4._ascii.ob_base,
+ & abc_toplevel_consts_10_consts_6_consts_5._ascii.ob_base,
+ & abc_toplevel_consts_10_consts_6_consts_6._ascii.ob_base,
+ & abc_toplevel_consts_10_consts_6_consts_7._ascii.ob_base,
+ & abc_toplevel_consts_10_consts_6_consts_8._ascii.ob_base,
+ Py_None,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[5];
+ }_object;
+ }
+abc_toplevel_consts_10_consts_6_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 5,
+ },
+ .ob_item = {
+ & const_str_print._ascii.ob_base,
+ &_Py_ID(__module__),
+ &_Py_ID(__qualname__),
+ & const_str_get_cache_token._ascii.ob_base,
+ & const_str__get_dump._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[15];
+ }
+const_str__dump_registry = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 14,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_dump_registry",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[23];
+ }
+abc_toplevel_consts_10_consts_6_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 22,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "ABCMeta._dump_registry",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[159];
+ }
+abc_toplevel_consts_10_consts_6_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 158,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xe4\x0c\x11\x90\x47\x98\x43\x9f\x4e\x99\x4e\xd0\x1b\x2b\xa8\x31\xa8\x53\xd7\x2d\x3d\xd1\x2d\x3d\xd0\x2c\x3e\xd0\x12\x3f\xc0\x64\xd5\x0c\x4b\xdc\x0c\x11\x90\x4e\xa4\x3f\xd3\x23\x34\xd0\x22\x35\xd0\x12\x36\xb8\x54\xd5\x0c\x42\xe4\x2c\x35\xb0\x63\xab\x4e\xf1\x03\x01\x0d\x2a\x88\x5d\x98\x4a\xd0\x28\x3b\xd8\x0d\x28\xdc\x0c\x11\x90\x4f\xa0\x4d\xd0\x23\x34\xd0\x12\x35\xb8\x44\xd5\x0c\x41\xdc\x0c\x11\x90\x4c\xa0\x1a\xa0\x0e\xd0\x12\x2f\xb0\x64\xd5\x0c\x3b\xdc\x0c\x11\xd0\x14\x29\xd0\x2a\x3d\xd0\x29\x40\xd0\x12\x41\xc8\x04\xd5\x0c\x4d\xdc\x0c\x11\xd0\x14\x31\xd0\x32\x4d\xd0\x31\x50\xd0\x12\x51\xd8\x17\x1b\xf6\x03\x01\x0d\x1d",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[14];
+ }
+const_str__abc_registry = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 13,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_abc_registry",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[11];
+ }
+const_str__abc_cache = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 10,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_abc_cache",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[20];
+ }
+const_str__abc_negative_cache = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 19,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_abc_negative_cache",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[28];
+ }
+const_str__abc_negative_cache_version = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 27,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_abc_negative_cache_version",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[6];
+ }_object;
+ }
+abc_toplevel_consts_10_consts_6_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 6,
+ },
+ .ob_item = {
+ & const_str_cls._ascii.ob_base,
+ &_Py_ID(file),
+ & const_str__abc_registry._ascii.ob_base,
+ & const_str__abc_cache._ascii.ob_base,
+ & const_str__abc_negative_cache._ascii.ob_base,
+ & const_str__abc_negative_cache_version._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(290)
+abc_toplevel_consts_10_consts_6 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 145,
+ },
+ .co_consts = & abc_toplevel_consts_10_consts_6_consts._object.ob_base.ob_base,
+ .co_names = & abc_toplevel_consts_10_consts_6_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 12 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 6,
+ .co_firstlineno = 125,
+ .co_nlocalsplus = 6,
+ .co_nlocals = 6,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 259,
+ .co_localsplusnames = & abc_toplevel_consts_10_consts_6_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_30_consts_4_localspluskinds.ob_base.ob_base,
+ .co_filename = & abc_toplevel_consts_1_filename._ascii.ob_base,
+ .co_name = & const_str__dump_registry._ascii.ob_base,
+ .co_qualname = & abc_toplevel_consts_10_consts_6_qualname._ascii.ob_base,
+ .co_linetable = & abc_toplevel_consts_10_consts_6_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x64\x01\x7c\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9b\x00\x64\x02\x7c\x00\x6a\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9b\x00\x9d\x04\x7c\x01\xac\x03\xab\x02\x00\x00\x00\x00\x00\x00\x01\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x64\x04\x74\x07\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x9b\x00\x9d\x02\x7c\x01\xac\x03\xab\x02\x00\x00\x00\x00\x00\x00\x01\x00\x74\x09\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x5c\x04\x00\x00\x7d\x02\x7d\x03\x7d\x04\x7d\x05\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x64\x05\x7c\x02\x9b\x02\x9d\x02\x7c\x01\xac\x03\xab\x02\x00\x00\x00\x00\x00\x00\x01\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x64\x06\x7c\x03\x9b\x02\x9d\x02\x7c\x01\xac\x03\xab\x02\x00\x00\x00\x00\x00\x00\x01\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x64\x07\x7c\x04\x9b\x02\x9d\x02\x7c\x01\xac\x03\xab\x02\x00\x00\x00\x00\x00\x00\x01\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x64\x08\x7c\x05\x9b\x02\x9d\x02\x7c\x01\xac\x03\xab\x02\x00\x00\x00\x00\x00\x00\x01\x00\x79\x09",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[47];
+ }
+abc_toplevel_consts_10_consts_7_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 46,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Clear the registry (for debugging or testing).",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+abc_toplevel_consts_10_consts_7_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & abc_toplevel_consts_10_consts_7_consts_0._ascii.ob_base,
+ Py_None,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+abc_toplevel_consts_10_consts_7_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & const_str__reset_registry._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[20];
+ }
+const_str__abc_registry_clear = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 19,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_abc_registry_clear",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[28];
+ }
+abc_toplevel_consts_10_consts_7_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 27,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "ABCMeta._abc_registry_clear",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[11];
+ }
+abc_toplevel_consts_10_consts_7_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 10,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xe4\x0c\x1b\x98\x43\xd5\x0c\x20",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+abc_toplevel_consts_10_consts_7_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & const_str_cls._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(26)
+abc_toplevel_consts_10_consts_7 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 13,
+ },
+ .co_consts = & abc_toplevel_consts_10_consts_7_consts._object.ob_base.ob_base,
+ .co_names = & abc_toplevel_consts_10_consts_7_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 4 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 3,
+ .co_firstlineno = 137,
+ .co_nlocalsplus = 1,
+ .co_nlocals = 1,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 260,
+ .co_localsplusnames = & abc_toplevel_consts_10_consts_7_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_characters[32]),
+ .co_filename = & abc_toplevel_consts_1_filename._ascii.ob_base,
+ .co_name = & const_str__abc_registry_clear._ascii.ob_base,
+ .co_qualname = & abc_toplevel_consts_10_consts_7_qualname._ascii.ob_base,
+ .co_linetable = & abc_toplevel_consts_10_consts_7_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x79\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[45];
+ }
+abc_toplevel_consts_10_consts_8_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 44,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Clear the caches (for debugging or testing).",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+abc_toplevel_consts_10_consts_8_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & abc_toplevel_consts_10_consts_8_consts_0._ascii.ob_base,
+ Py_None,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+abc_toplevel_consts_10_consts_8_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & const_str__reset_caches._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[18];
+ }
+const_str__abc_caches_clear = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 17,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_abc_caches_clear",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[26];
+ }
+abc_toplevel_consts_10_consts_8_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 25,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "ABCMeta._abc_caches_clear",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[11];
+ }
+abc_toplevel_consts_10_consts_8_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 10,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xe4\x0c\x19\x98\x23\xd5\x0c\x1e",
+};
+static
+ struct _PyCode_DEF(26)
+abc_toplevel_consts_10_consts_8 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 13,
+ },
+ .co_consts = & abc_toplevel_consts_10_consts_8_consts._object.ob_base.ob_base,
+ .co_names = & abc_toplevel_consts_10_consts_8_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 4 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 3,
+ .co_firstlineno = 141,
+ .co_nlocalsplus = 1,
+ .co_nlocals = 1,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 261,
+ .co_localsplusnames = & abc_toplevel_consts_10_consts_7_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_characters[32]),
+ .co_filename = & abc_toplevel_consts_1_filename._ascii.ob_base,
+ .co_name = & const_str__abc_caches_clear._ascii.ob_base,
+ .co_qualname = & abc_toplevel_consts_10_consts_8_qualname._ascii.ob_base,
+ .co_linetable = & abc_toplevel_consts_10_consts_8_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x79\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[10];
+ }_object;
+ }
+abc_toplevel_consts_10_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 10,
+ },
+ .ob_item = {
+ & const_str_ABCMeta._ascii.ob_base,
+ & abc_toplevel_consts_10_consts_1._ascii.ob_base,
+ & abc_toplevel_consts_10_consts_2.ob_base.ob_base,
+ & abc_toplevel_consts_10_consts_3.ob_base.ob_base,
+ & abc_toplevel_consts_10_consts_4.ob_base.ob_base,
+ & abc_toplevel_consts_10_consts_5.ob_base.ob_base,
+ & abc_toplevel_consts_10_consts_6.ob_base.ob_base,
+ & abc_toplevel_consts_10_consts_7.ob_base.ob_base,
+ & abc_toplevel_consts_10_consts_8.ob_base.ob_base,
+ & importlib__bootstrap_toplevel_consts_1_consts._object.ob_base.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[12];
+ }_object;
+ }
+abc_toplevel_consts_10_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 12,
+ },
+ .ob_item = {
+ &_Py_ID(__name__),
+ &_Py_ID(__module__),
+ &_Py_ID(__qualname__),
+ &_Py_ID(__doc__),
+ &_Py_ID(__new__),
+ & const_str_register._ascii.ob_base,
+ &_Py_ID(__instancecheck__),
+ &_Py_ID(__subclasscheck__),
+ & const_str__dump_registry._ascii.ob_base,
+ & const_str__abc_registry_clear._ascii.ob_base,
+ & const_str__abc_caches_clear._ascii.ob_base,
+ &_Py_ID(__classcell__),
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[44];
+ }
+abc_toplevel_consts_10_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 43,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\xf8\x84\x00\xf1\x02\x0b\x09\x0c\xf4\x18\x03\x09\x17\xf2\x0a\x05\x09\x30\xf2\x0e\x02\x09\x35\xf2\x08\x02\x09\x35\xf3\x08\x0a\x09\x1d\xf2\x18\x02\x09\x21\xf6\x08\x02\x09\x1f",
+};
+static
+ struct _PyCode_DEF(72)
+abc_toplevel_consts_10 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 36,
+ },
+ .co_consts = & abc_toplevel_consts_10_consts._object.ob_base.ob_base,
+ .co_names = & abc_toplevel_consts_10_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 0,
+ .co_argcount = 0,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 3 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 2,
+ .co_firstlineno = 92,
+ .co_nlocalsplus = 1,
+ .co_nlocals = 0,
+ .co_ncellvars = 1,
+ .co_nfreevars = 0,
+ .co_version = 262,
+ .co_localsplusnames = & importlib__bootstrap_external_toplevel_consts_58_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_characters[64]),
+ .co_filename = & abc_toplevel_consts_1_filename._ascii.ob_base,
+ .co_name = & const_str_ABCMeta._ascii.ob_base,
+ .co_qualname = & const_str_ABCMeta._ascii.ob_base,
+ .co_linetable = & abc_toplevel_consts_10_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x87\x00\x97\x00\x65\x00\x5a\x01\x64\x00\x5a\x02\x64\x01\x5a\x03\x88\x00\x66\x01\x64\x02\x84\x08\x5a\x04\x64\x03\x84\x00\x5a\x05\x64\x04\x84\x00\x5a\x06\x64\x05\x84\x00\x5a\x07\x64\x09\x64\x06\x84\x01\x5a\x08\x64\x07\x84\x00\x5a\x09\x64\x08\x84\x00\x5a\x0a\x88\x00\x78\x01\x5a\x0b\x53\x00",
+ ._co_firsttraceable = 1,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+abc_toplevel_consts_12 = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & const_str_ABCMeta._ascii.ob_base,
+ & const_str_get_cache_token._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[4];
+ }
+const_str_abc = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 3,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "abc",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[668];
+ }
+abc_toplevel_consts_14_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 667,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x52\x65\x63\x61\x6c\x63\x75\x6c\x61\x74\x65\x20\x74\x68\x65\x20\x73\x65\x74\x20\x6f\x66\x20\x61\x62\x73\x74\x72\x61\x63\x74\x20\x6d\x65\x74\x68\x6f\x64\x73\x20\x6f\x66\x20\x61\x6e\x20\x61\x62\x73\x74\x72\x61\x63\x74\x20\x63\x6c\x61\x73\x73\x2e\x0a\x0a\x20\x20\x20\x20\x49\x66\x20\x61\x20\x63\x6c\x61\x73\x73\x20\x68\x61\x73\x20\x68\x61\x64\x20\x6f\x6e\x65\x20\x6f\x66\x20\x69\x74\x73\x20\x61\x62\x73\x74\x72\x61\x63\x74\x20\x6d\x65\x74\x68\x6f\x64\x73\x20\x69\x6d\x70\x6c\x65\x6d\x65\x6e\x74\x65\x64\x20\x61\x66\x74\x65\x72\x20\x74\x68\x65\x0a\x20\x20\x20\x20\x63\x6c\x61\x73\x73\x20\x77\x61\x73\x20\x63\x72\x65\x61\x74\x65\x64\x2c\x20\x74\x68\x65\x20\x6d\x65\x74\x68\x6f\x64\x20\x77\x69\x6c\x6c\x20\x6e\x6f\x74\x20\x62\x65\x20\x63\x6f\x6e\x73\x69\x64\x65\x72\x65\x64\x20\x69\x6d\x70\x6c\x65\x6d\x65\x6e\x74\x65\x64\x20\x75\x6e\x74\x69\x6c\x0a\x20\x20\x20\x20\x74\x68\x69\x73\x20\x66\x75\x6e\x63\x74\x69\x6f\x6e\x20\x69\x73\x20\x63\x61\x6c\x6c\x65\x64\x2e\x20\x41\x6c\x74\x65\x72\x6e\x61\x74\x69\x76\x65\x6c\x79\x2c\x20\x69\x66\x20\x61\x20\x6e\x65\x77\x20\x61\x62\x73\x74\x72\x61\x63\x74\x20\x6d\x65\x74\x68\x6f\x64\x20\x68\x61\x73\x20\x62\x65\x65\x6e\x0a\x20\x20\x20\x20\x61\x64\x64\x65\x64\x20\x74\x6f\x20\x74\x68\x65\x20\x63\x6c\x61\x73\x73\x2c\x20\x69\x74\x20\x77\x69\x6c\x6c\x20\x6f\x6e\x6c\x79\x20\x62\x65\x20\x63\x6f\x6e\x73\x69\x64\x65\x72\x65\x64\x20\x61\x6e\x20\x61\x62\x73\x74\x72\x61\x63\x74\x20\x6d\x65\x74\x68\x6f\x64\x20\x6f\x66\x20\x74\x68\x65\x0a\x20\x20\x20\x20\x63\x6c\x61\x73\x73\x20\x61\x66\x74\x65\x72\x20\x74\x68\x69\x73\x20\x66\x75\x6e\x63\x74\x69\x6f\x6e\x20\x69\x73\x20\x63\x61\x6c\x6c\x65\x64\x2e\x0a\x0a\x20\x20\x20\x20\x54\x68\x69\x73\x20\x66\x75\x6e\x63\x74\x69\x6f\x6e\x20\x73\x68\x6f\x75\x6c\x64\x20\x62\x65\x20\x63\x61\x6c\x6c\x65\x64\x20\x62\x65\x66\x6f\x72\x65\x20\x61\x6e\x79\x20\x75\x73\x65\x20\x69\x73\x20\x6d\x61\x64\x65\x20\x6f\x66\x20\x74\x68\x65\x20\x63\x6c\x61\x73\x73\x2c\x0a\x20\x20\x20\x20\x75\x73\x75\x61\x6c\x6c\x79\x20\x69\x6e\x20\x63\x6c\x61\x73\x73\x20\x64\x65\x63\x6f\x72\x61\x74\x6f\x72\x73\x20\x74\x68\x61\x74\x20\x61\x64\x64\x20\x6d\x65\x74\x68\x6f\x64\x73\x20\x74\x6f\x20\x74\x68\x65\x20\x73\x75\x62\x6a\x65\x63\x74\x20\x63\x6c\x61\x73\x73\x2e\x0a\x0a\x20\x20\x20\x20\x52\x65\x74\x75\x72\x6e\x73\x20\x63\x6c\x73\x2c\x20\x74\x6f\x20\x61\x6c\x6c\x6f\x77\x20\x75\x73\x61\x67\x65\x20\x61\x73\x20\x61\x20\x63\x6c\x61\x73\x73\x20\x64\x65\x63\x6f\x72\x61\x74\x6f\x72\x2e\x0a\x0a\x20\x20\x20\x20\x49\x66\x20\x63\x6c\x73\x20\x69\x73\x20\x6e\x6f\x74\x20\x61\x6e\x20\x69\x6e\x73\x74\x61\x6e\x63\x65\x20\x6f\x66\x20\x41\x42\x43\x4d\x65\x74\x61\x2c\x20\x64\x6f\x65\x73\x20\x6e\x6f\x74\x68\x69\x6e\x67\x2e\x0a\x20\x20\x20\x20",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[6];
+ }_object;
+ }
+abc_toplevel_consts_14_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 6,
+ },
+ .ob_item = {
+ & abc_toplevel_consts_14_consts_0._ascii.ob_base,
+ &_Py_ID(__abstractmethods__),
+ (PyObject *)& _Py_SINGLETON(tuple_empty),
+ Py_None,
+ &_Py_ID(__isabstractmethod__),
+ Py_False,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[10];
+ }
+const_str_frozenset = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 9,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "frozenset",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[9];
+ }_object;
+ }
+abc_toplevel_consts_14_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 9,
+ },
+ .ob_item = {
+ & const_str_hasattr._ascii.ob_base,
+ & const_str_set._ascii.ob_base,
+ &_Py_ID(__bases__),
+ &_Py_ID(getattr),
+ &_Py_ID(add),
+ &_Py_ID(__dict__),
+ &_Py_ID(items),
+ & const_str_frozenset._ascii.ob_base,
+ &_Py_ID(__abstractmethods__),
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[23];
+ }
+const_str_update_abstractmethods = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 22,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "update_abstractmethods",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[194];
+ }
+abc_toplevel_consts_14_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 193,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf4\x20\x00\x0c\x13\x90\x33\xd0\x18\x2d\xd4\x0b\x2e\xf0\x08\x00\x10\x13\x88\x0a\xe4\x10\x13\x93\x05\x80\x49\xf0\x06\x00\x11\x14\x97\x0d\x91\x0d\xf2\x00\x04\x05\x24\x88\x04\xdc\x14\x1b\x98\x44\xd0\x22\x37\xb8\x12\xd3\x14\x3c\xf2\x00\x03\x09\x24\x88\x44\xdc\x14\x1b\x98\x43\xa0\x14\xa0\x74\xd3\x14\x2c\x88\x45\xdc\x0f\x16\x90\x75\xd0\x1e\x34\xb0\x65\xd5\x0f\x3c\xd8\x10\x19\x97\x0d\x91\x0d\x98\x64\xd5\x10\x23\xf1\x07\x03\x09\x24\xf0\x03\x04\x05\x24\xf0\x0c\x00\x18\x1b\x97\x7c\x91\x7c\xd7\x17\x29\xd1\x17\x29\xd3\x17\x2b\xf2\x00\x02\x05\x20\x89\x0b\x88\x04\x88\x65\xdc\x0b\x12\x90\x35\xd0\x1a\x30\xb0\x25\xd5\x0b\x38\xd8\x0c\x15\x8f\x4d\x89\x4d\x98\x24\xd5\x0c\x1f\xf0\x05\x02\x05\x20\xf4\x06\x00\x1f\x28\xa8\x09\xd3\x1e\x32\x80\x43\xd4\x04\x1b\xd8\x0b\x0e\x80\x4a",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[10];
+ }
+const_str_abstracts = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 9,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "abstracts",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[5];
+ }
+const_str_scls = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 4,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "scls",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[5];
+ }_object;
+ }
+abc_toplevel_consts_14_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 5,
+ },
+ .ob_item = {
+ & const_str_cls._ascii.ob_base,
+ & const_str_abstracts._ascii.ob_base,
+ & const_str_scls._ascii.ob_base,
+ &_Py_ID(name),
+ &_Py_ID(value),
+ },
+ },
+};
+static
+ struct _PyCode_DEF(374)
+abc_toplevel_consts_14 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 187,
+ },
+ .co_consts = & abc_toplevel_consts_14_consts._object.ob_base.ob_base,
+ .co_names = & abc_toplevel_consts_14_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 12 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 7,
+ .co_firstlineno = 146,
+ .co_nlocalsplus = 5,
+ .co_nlocals = 5,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 263,
+ .co_localsplusnames = & abc_toplevel_consts_14_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_7_consts_5_localspluskinds.ob_base.ob_base,
+ .co_filename = & abc_toplevel_consts_1_filename._ascii.ob_base,
+ .co_name = & const_str_update_abstractmethods._ascii.ob_base,
+ .co_qualname = & const_str_update_abstractmethods._ascii.ob_base,
+ .co_linetable = & abc_toplevel_consts_14_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x64\x01\xab\x02\x00\x00\x00\x00\x00\x00\x73\x02\x7c\x00\x53\x00\x74\x03\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x7d\x01\x7c\x00\x6a\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x00\x5d\x40\x00\x00\x7d\x02\x74\x07\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x02\x64\x01\x64\x02\xab\x03\x00\x00\x00\x00\x00\x00\x44\x00\x5d\x2e\x00\x00\x7d\x03\x74\x07\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x7c\x03\x64\x03\xab\x03\x00\x00\x00\x00\x00\x00\x7d\x04\x74\x07\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x04\x64\x04\x64\x05\xab\x03\x00\x00\x00\x00\x00\x00\x73\x01\x8c\x1e\x7c\x01\x6a\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x03\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x8c\x30\x04\x00\x8c\x42\x04\x00\x7c\x00\x6a\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x44\x00\x5d\x24\x00\x00\x5c\x02\x00\x00\x7d\x03\x7d\x04\x74\x07\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x04\x64\x04\x64\x05\xab\x03\x00\x00\x00\x00\x00\x00\x73\x01\x8c\x14\x7c\x01\x6a\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x03\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x8c\x26\x04\x00\x74\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\xab\x01\x00\x00\x00\x00\x00\x00\x7c\x00\x5f\x08\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[4];
+ }
+const_str_ABC = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 3,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "ABC",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[87];
+ }
+abc_toplevel_consts_15_consts_1 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 86,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x48\x65\x6c\x70\x65\x72\x20\x63\x6c\x61\x73\x73\x20\x74\x68\x61\x74\x20\x70\x72\x6f\x76\x69\x64\x65\x73\x20\x61\x20\x73\x74\x61\x6e\x64\x61\x72\x64\x20\x77\x61\x79\x20\x74\x6f\x20\x63\x72\x65\x61\x74\x65\x20\x61\x6e\x20\x41\x42\x43\x20\x75\x73\x69\x6e\x67\x0a\x20\x20\x20\x20\x69\x6e\x68\x65\x72\x69\x74\x61\x6e\x63\x65\x2e\x0a\x20\x20\x20\x20",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[4];
+ }_object;
+ }
+abc_toplevel_consts_15_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_item = {
+ & const_str_ABC._ascii.ob_base,
+ & abc_toplevel_consts_15_consts_1._ascii.ob_base,
+ (PyObject *)& _Py_SINGLETON(tuple_empty),
+ Py_None,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[5];
+ }_object;
+ }
+abc_toplevel_consts_15_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 5,
+ },
+ .ob_item = {
+ &_Py_ID(__name__),
+ &_Py_ID(__module__),
+ &_Py_ID(__qualname__),
+ &_Py_ID(__doc__),
+ &_Py_ID(__slots__),
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[15];
+ }
+abc_toplevel_consts_15_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 14,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x84\x00\xf1\x02\x02\x05\x08\xf0\x06\x00\x11\x13\x81\x49",
+};
+static
+ struct _PyCode_DEF(20)
+abc_toplevel_consts_15 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 10,
+ },
+ .co_consts = & abc_toplevel_consts_15_consts._object.ob_base.ob_base,
+ .co_names = & abc_toplevel_consts_15_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 0,
+ .co_argcount = 0,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 1 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 1,
+ .co_firstlineno = 184,
+ .co_nlocalsplus = 0,
+ .co_nlocals = 0,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 264,
+ .co_localsplusnames = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_filename = & abc_toplevel_consts_1_filename._ascii.ob_base,
+ .co_name = & const_str_ABC._ascii.ob_base,
+ .co_qualname = & const_str_ABC._ascii.ob_base,
+ .co_linetable = & abc_toplevel_consts_15_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x65\x00\x5a\x01\x64\x00\x5a\x02\x64\x01\x5a\x03\x64\x02\x5a\x04\x79\x03",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+abc_toplevel_consts_17 = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ &_Py_ID(metaclass),
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[19];
+ }_object;
+ }
+abc_toplevel_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 19,
+ },
+ .ob_item = {
+ & abc_toplevel_consts_0._ascii.ob_base,
+ & abc_toplevel_consts_1.ob_base.ob_base,
+ & abc_toplevel_consts_2.ob_base.ob_base,
+ & const_str_abstractclassmethod._ascii.ob_base,
+ & abc_toplevel_consts_4.ob_base.ob_base,
+ & const_str_abstractstaticmethod._ascii.ob_base,
+ & abc_toplevel_consts_6.ob_base.ob_base,
+ & const_str_abstractproperty._ascii.ob_base,
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 0],
+ & abc_toplevel_consts_9._object.ob_base.ob_base,
+ & abc_toplevel_consts_10.ob_base.ob_base,
+ & const_str_ABCMeta._ascii.ob_base,
+ & abc_toplevel_consts_12._object.ob_base.ob_base,
+ & const_str_abc._ascii.ob_base,
+ & abc_toplevel_consts_14.ob_base.ob_base,
+ & abc_toplevel_consts_15.ob_base.ob_base,
+ & const_str_ABC._ascii.ob_base,
+ & abc_toplevel_consts_17._object.ob_base.ob_base,
+ Py_None,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[5];
+ }
+const_str__abc = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 4,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_abc",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[8];
+ }
+const_str__py_abc = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 7,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_py_abc",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[24];
+ }_object;
+ }
+abc_toplevel_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 24,
+ },
+ .ob_item = {
+ &_Py_ID(__doc__),
+ & const_str_abstractmethod._ascii.ob_base,
+ & const_str_classmethod._ascii.ob_base,
+ & const_str_abstractclassmethod._ascii.ob_base,
+ & const_str_staticmethod._ascii.ob_base,
+ & const_str_abstractstaticmethod._ascii.ob_base,
+ & const_str_property._ascii.ob_base,
+ & const_str_abstractproperty._ascii.ob_base,
+ & const_str__abc._ascii.ob_base,
+ & const_str_get_cache_token._ascii.ob_base,
+ & const_str__abc_init._ascii.ob_base,
+ & const_str__abc_register._ascii.ob_base,
+ & const_str__abc_instancecheck._ascii.ob_base,
+ & const_str__abc_subclasscheck._ascii.ob_base,
+ & const_str__get_dump._ascii.ob_base,
+ & const_str__reset_registry._ascii.ob_base,
+ & const_str__reset_caches._ascii.ob_base,
+ &_Py_ID(type),
+ & const_str_ABCMeta._ascii.ob_base,
+ & const_str_ImportError._ascii.ob_base,
+ & const_str__py_abc._ascii.ob_base,
+ &_Py_ID(__module__),
+ & const_str_update_abstractmethods._ascii.ob_base,
+ & const_str_ABC._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[132];
+ }
+abc_toplevel_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 131,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\xf0\x03\x01\x01\x01\xf1\x08\x00\x01\x3a\xf2\x06\x12\x01\x13\xf4\x2a\x11\x01\x23\x98\x2b\xf4\x00\x11\x01\x23\xf4\x28\x11\x01\x23\x98\x3c\xf4\x00\x11\x01\x23\xf4\x28\x0d\x01\x20\x90\x78\xf4\x00\x0d\x01\x20\xf0\x20\x3b\x01\x1f\xf7\x02\x02\x05\x36\xf7\x00\x02\x05\x36\xf3\x00\x02\x05\x36\xf4\x0e\x33\x05\x1f\x90\x24\xf4\x00\x33\x05\x1f\xf2\x6c\x01\x23\x01\x0f\xf4\x4c\x01\x04\x01\x13\x90\x47\xf6\x00\x04\x01\x13\xf8\xf0\x41\x03\x00\x08\x13\xf2\x00\x02\x01\x1f\xdf\x04\x30\xd8\x19\x1e\x80\x47\xd6\x04\x16\xf0\x05\x02\x01\x1f\xfa",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[18];
+ }
+abc_toplevel_exceptiontable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 17,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\xa8\x14\x41\x17\x00\xc1\x17\x14\x41\x2e\x03\xc1\x2d\x01\x41\x2e\x03",
+};
+static
+ struct _PyCode_DEF(226)
+abc_toplevel = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 113,
+ },
+ .co_consts = & abc_toplevel_consts._object.ob_base.ob_base,
+ .co_names = & abc_toplevel_names._object.ob_base.ob_base,
+ .co_exceptiontable = & abc_toplevel_exceptiontable.ob_base.ob_base,
+ .co_flags = 0,
+ .co_argcount = 0,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 5 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 5,
+ .co_firstlineno = 1,
+ .co_nlocalsplus = 0,
+ .co_nlocals = 0,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 265,
+ .co_localsplusnames = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_filename = & abc_toplevel_consts_1_filename._ascii.ob_base,
+ .co_name = &_Py_STR(anon_module),
+ .co_qualname = &_Py_STR(anon_module),
+ .co_linetable = & abc_toplevel_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x64\x00\x5a\x00\x64\x01\x84\x00\x5a\x01\x02\x00\x47\x00\x64\x02\x84\x00\x64\x03\x65\x02\xab\x03\x00\x00\x00\x00\x00\x00\x5a\x03\x02\x00\x47\x00\x64\x04\x84\x00\x64\x05\x65\x04\xab\x03\x00\x00\x00\x00\x00\x00\x5a\x05\x02\x00\x47\x00\x64\x06\x84\x00\x64\x07\x65\x06\xab\x03\x00\x00\x00\x00\x00\x00\x5a\x07\x09\x00\x64\x08\x64\x09\x6c\x08\x6d\x09\x5a\x09\x6d\x0a\x5a\x0a\x6d\x0b\x5a\x0b\x6d\x0c\x5a\x0c\x6d\x0d\x5a\x0d\x6d\x0e\x5a\x0e\x6d\x0f\x5a\x0f\x6d\x10\x5a\x10\x01\x00\x02\x00\x47\x00\x64\x0a\x84\x00\x64\x0b\x65\x11\xab\x03\x00\x00\x00\x00\x00\x00\x5a\x12\x64\x0e\x84\x00\x5a\x16\x02\x00\x47\x00\x64\x0f\x84\x00\x64\x10\x65\x12\xac\x11\xab\x03\x00\x00\x00\x00\x00\x00\x5a\x17\x79\x12\x23\x00\x65\x13\x24\x00\x72\x12\x01\x00\x64\x08\x64\x0c\x6c\x14\x6d\x12\x5a\x12\x6d\x09\x5a\x09\x01\x00\x64\x0d\x65\x12\x5f\x15\x00\x00\x00\x00\x00\x00\x00\x00\x59\x00\x8c\x26\x77\x00\x78\x03\x59\x00\x77\x01",
+ ._co_firsttraceable = 0,
+};
+
+PyObject *
+_Py_get_abc_toplevel(void)
+{
+ return Py_NewRef((PyObject *) &abc_toplevel);
+}
+
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[159];
+ }
+codecs_toplevel_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 158,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x20\x63\x6f\x64\x65\x63\x73\x20\x2d\x2d\x20\x50\x79\x74\x68\x6f\x6e\x20\x43\x6f\x64\x65\x63\x20\x52\x65\x67\x69\x73\x74\x72\x79\x2c\x20\x41\x50\x49\x20\x61\x6e\x64\x20\x68\x65\x6c\x70\x65\x72\x73\x2e\x0a\x0a\x0a\x57\x72\x69\x74\x74\x65\x6e\x20\x62\x79\x20\x4d\x61\x72\x63\x2d\x41\x6e\x64\x72\x65\x20\x4c\x65\x6d\x62\x75\x72\x67\x20\x28\x6d\x61\x6c\x40\x6c\x65\x6d\x62\x75\x72\x67\x2e\x63\x6f\x6d\x29\x2e\x0a\x0a\x28\x63\x29\x20\x43\x6f\x70\x79\x72\x69\x67\x68\x74\x20\x43\x4e\x52\x49\x2c\x20\x41\x6c\x6c\x20\x52\x69\x67\x68\x74\x73\x20\x52\x65\x73\x65\x72\x76\x65\x64\x2e\x20\x4e\x4f\x20\x57\x41\x52\x52\x41\x4e\x54\x59\x2e\x0a\x0a",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+codecs_toplevel_consts_3 = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ (PyObject *)&_Py_SINGLETON(strings).ascii[42],
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[38];
+ }
+codecs_toplevel_consts_4 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 37,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Failed to load the builtin codecs: %s",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[7];
+ }
+const_str_lookup = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 6,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "lookup",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[12];
+ }
+const_str_EncodedFile = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 11,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "EncodedFile",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[4];
+ }
+const_str_BOM = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 3,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "BOM",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[7];
+ }
+const_str_BOM_BE = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 6,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "BOM_BE",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[7];
+ }
+const_str_BOM_LE = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 6,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "BOM_LE",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[9];
+ }
+const_str_BOM32_BE = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 8,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "BOM32_BE",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[9];
+ }
+const_str_BOM32_LE = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 8,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "BOM32_LE",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[9];
+ }
+const_str_BOM64_BE = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 8,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "BOM64_BE",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[9];
+ }
+const_str_BOM64_LE = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 8,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "BOM64_LE",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[9];
+ }
+const_str_BOM_UTF8 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 8,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "BOM_UTF8",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[10];
+ }
+const_str_BOM_UTF16 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 9,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "BOM_UTF16",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[13];
+ }
+const_str_BOM_UTF16_LE = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 12,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "BOM_UTF16_LE",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[13];
+ }
+const_str_BOM_UTF16_BE = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 12,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "BOM_UTF16_BE",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[10];
+ }
+const_str_BOM_UTF32 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 9,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "BOM_UTF32",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[13];
+ }
+const_str_BOM_UTF32_LE = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 12,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "BOM_UTF32_LE",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[13];
+ }
+const_str_BOM_UTF32_BE = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 12,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "BOM_UTF32_BE",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[10];
+ }
+const_str_CodecInfo = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 9,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "CodecInfo",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[6];
+ }
+const_str_Codec = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 5,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Codec",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[19];
+ }
+const_str_IncrementalEncoder = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 18,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "IncrementalEncoder",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[19];
+ }
+const_str_IncrementalDecoder = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 18,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "IncrementalDecoder",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[13];
+ }
+const_str_StreamReader = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 12,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "StreamReader",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[13];
+ }
+const_str_StreamWriter = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 12,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "StreamWriter",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[19];
+ }
+const_str_StreamReaderWriter = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 18,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "StreamReaderWriter",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[14];
+ }
+const_str_StreamRecoder = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 13,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "StreamRecoder",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[11];
+ }
+const_str_getencoder = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 10,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "getencoder",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[11];
+ }
+const_str_getdecoder = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 10,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "getdecoder",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[22];
+ }
+const_str_getincrementalencoder = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 21,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "getincrementalencoder",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[22];
+ }
+const_str_getincrementaldecoder = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 21,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "getincrementaldecoder",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[10];
+ }
+const_str_getreader = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 9,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "getreader",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[10];
+ }
+const_str_getwriter = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 9,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "getwriter",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[11];
+ }
+const_str_iterencode = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 10,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "iterencode",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[11];
+ }
+const_str_iterdecode = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 10,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "iterdecode",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[14];
+ }
+const_str_strict_errors = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 13,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "strict_errors",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[14];
+ }
+const_str_ignore_errors = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 13,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "ignore_errors",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[15];
+ }
+const_str_replace_errors = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 14,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "replace_errors",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[25];
+ }
+const_str_xmlcharrefreplace_errors = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 24,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "xmlcharrefreplace_errors",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[24];
+ }
+const_str_backslashreplace_errors = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 23,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "backslashreplace_errors",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[19];
+ }
+const_str_namereplace_errors = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 18,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "namereplace_errors",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[15];
+ }
+const_str_register_error = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 14,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "register_error",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[13];
+ }
+const_str_lookup_error = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 12,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "lookup_error",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[44];
+ }_object;
+ }
+codecs_toplevel_consts_5 = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 44,
+ },
+ .ob_item = {
+ & const_str_register._ascii.ob_base,
+ & const_str_lookup._ascii.ob_base,
+ &_Py_ID(open),
+ & const_str_EncodedFile._ascii.ob_base,
+ & const_str_BOM._ascii.ob_base,
+ & const_str_BOM_BE._ascii.ob_base,
+ & const_str_BOM_LE._ascii.ob_base,
+ & const_str_BOM32_BE._ascii.ob_base,
+ & const_str_BOM32_LE._ascii.ob_base,
+ & const_str_BOM64_BE._ascii.ob_base,
+ & const_str_BOM64_LE._ascii.ob_base,
+ & const_str_BOM_UTF8._ascii.ob_base,
+ & const_str_BOM_UTF16._ascii.ob_base,
+ & const_str_BOM_UTF16_LE._ascii.ob_base,
+ & const_str_BOM_UTF16_BE._ascii.ob_base,
+ & const_str_BOM_UTF32._ascii.ob_base,
+ & const_str_BOM_UTF32_LE._ascii.ob_base,
+ & const_str_BOM_UTF32_BE._ascii.ob_base,
+ & const_str_CodecInfo._ascii.ob_base,
+ & const_str_Codec._ascii.ob_base,
+ & const_str_IncrementalEncoder._ascii.ob_base,
+ & const_str_IncrementalDecoder._ascii.ob_base,
+ & const_str_StreamReader._ascii.ob_base,
+ & const_str_StreamWriter._ascii.ob_base,
+ & const_str_StreamReaderWriter._ascii.ob_base,
+ & const_str_StreamRecoder._ascii.ob_base,
+ & const_str_getencoder._ascii.ob_base,
+ & const_str_getdecoder._ascii.ob_base,
+ & const_str_getincrementalencoder._ascii.ob_base,
+ & const_str_getincrementaldecoder._ascii.ob_base,
+ & const_str_getreader._ascii.ob_base,
+ & const_str_getwriter._ascii.ob_base,
+ &_Py_ID(encode),
+ &_Py_ID(decode),
+ & const_str_iterencode._ascii.ob_base,
+ & const_str_iterdecode._ascii.ob_base,
+ & const_str_strict_errors._ascii.ob_base,
+ & const_str_ignore_errors._ascii.ob_base,
+ & const_str_replace_errors._ascii.ob_base,
+ & const_str_xmlcharrefreplace_errors._ascii.ob_base,
+ & const_str_backslashreplace_errors._ascii.ob_base,
+ & const_str_namereplace_errors._ascii.ob_base,
+ & const_str_register_error._ascii.ob_base,
+ & const_str_lookup_error._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[4];
+ }
+codecs_toplevel_consts_6 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\xef\xbb\xbf",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[3];
+ }
+codecs_toplevel_consts_7 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\xff\xfe",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[3];
+ }
+codecs_toplevel_consts_8 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\xfe\xff",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[5];
+ }
+codecs_toplevel_consts_9 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\xff\xfe\x00\x00",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[5];
+ }
+codecs_toplevel_consts_10 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x00\x00\xfe\xff",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[49];
+ }
+codecs_toplevel_consts_12_consts_1 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 48,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Codec details when looking up the codec registry",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+codecs_toplevel_consts_12_consts_4 = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ &_Py_ID(_is_text_encoding),
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[19];
+ }
+const_str_incrementalencoder = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 18,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "incrementalencoder",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[19];
+ }
+const_str_incrementaldecoder = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 18,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "incrementaldecoder",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[13];
+ }
+const_str_streamwriter = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 12,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "streamwriter",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[13];
+ }
+const_str_streamreader = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 12,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "streamreader",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[10];
+ }_object;
+ }
+codecs_toplevel_consts_12_consts_5_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 10,
+ },
+ .ob_item = {
+ & const_str_tuple._ascii.ob_base,
+ &_Py_ID(__new__),
+ &_Py_ID(name),
+ &_Py_ID(encode),
+ &_Py_ID(decode),
+ & const_str_incrementalencoder._ascii.ob_base,
+ & const_str_incrementaldecoder._ascii.ob_base,
+ & const_str_streamwriter._ascii.ob_base,
+ & const_str_streamreader._ascii.ob_base,
+ &_Py_ID(_is_text_encoding),
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[16];
+ }
+codecs_toplevel_consts_12_consts_5_filename = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 15,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "<frozen codecs>",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[18];
+ }
+codecs_toplevel_consts_12_consts_5_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 17,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "CodecInfo.__new__",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[102];
+ }
+codecs_toplevel_consts_12_consts_5_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 101,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf4\x06\x00\x10\x15\x8f\x7d\x89\x7d\x98\x53\xa0\x36\xa8\x36\xb0\x3c\xc0\x1c\xd0\x22\x4e\xd3\x0f\x4f\x88\x04\xd8\x14\x18\x88\x04\x8c\x09\xd8\x16\x1c\x88\x04\x8c\x0b\xd8\x16\x1c\x88\x04\x8c\x0b\xd8\x22\x34\x88\x04\xd4\x08\x1f\xd8\x22\x34\x88\x04\xd4\x08\x1f\xd8\x1c\x28\x88\x04\xd4\x08\x19\xd8\x1c\x28\x88\x04\xd4\x08\x19\xd8\x0b\x1c\xd0\x0b\x28\xd8\x25\x36\x88\x44\xd4\x0c\x22\xd8\x0f\x13\x88\x0b",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[10];
+ }_object;
+ }
+codecs_toplevel_consts_12_consts_5_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 10,
+ },
+ .ob_item = {
+ & const_str_cls._ascii.ob_base,
+ &_Py_ID(encode),
+ &_Py_ID(decode),
+ & const_str_streamreader._ascii.ob_base,
+ & const_str_streamwriter._ascii.ob_base,
+ & const_str_incrementalencoder._ascii.ob_base,
+ & const_str_incrementaldecoder._ascii.ob_base,
+ &_Py_ID(name),
+ &_Py_ID(_is_text_encoding),
+ &_Py_ID(self),
+ },
+ },
+};
+static
+ struct _PyCode_DEF(174)
+codecs_toplevel_consts_12_consts_5 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 87,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_1_consts._object.ob_base.ob_base,
+ .co_names = & codecs_toplevel_consts_12_consts_5_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 8,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 1,
+ .co_framesize = 17 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 7,
+ .co_firstlineno = 94,
+ .co_nlocalsplus = 10,
+ .co_nlocals = 10,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 266,
+ .co_localsplusnames = & codecs_toplevel_consts_12_consts_5_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_46_consts_3_localspluskinds.ob_base.ob_base,
+ .co_filename = & codecs_toplevel_consts_12_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__new__),
+ .co_qualname = & codecs_toplevel_consts_12_consts_5_qualname._ascii.ob_base,
+ .co_linetable = & codecs_toplevel_consts_12_consts_5_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x7c\x01\x7c\x02\x7c\x03\x7c\x04\x66\x04\xab\x02\x00\x00\x00\x00\x00\x00\x7d\x09\x7c\x07\x7c\x09\x5f\x02\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x7c\x09\x5f\x03\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x02\x7c\x09\x5f\x04\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x05\x7c\x09\x5f\x05\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x06\x7c\x09\x5f\x06\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x04\x7c\x09\x5f\x07\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x03\x7c\x09\x5f\x08\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x08\x81\x07\x7c\x08\x7c\x09\x5f\x09\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x09\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[38];
+ }
+codecs_toplevel_consts_12_consts_6_consts_1 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 37,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "<%s.%s object for encoding %s at %#x>",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+codecs_toplevel_consts_12_consts_6_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ Py_None,
+ & codecs_toplevel_consts_12_consts_6_consts_1._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[5];
+ }_object;
+ }
+codecs_toplevel_consts_12_consts_6_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 5,
+ },
+ .ob_item = {
+ &_Py_ID(__class__),
+ &_Py_ID(__module__),
+ &_Py_ID(__qualname__),
+ &_Py_ID(name),
+ &_Py_ID(id),
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[19];
+ }
+codecs_toplevel_consts_12_consts_6_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 18,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "CodecInfo.__repr__",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[59];
+ }
+codecs_toplevel_consts_12_consts_6_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 58,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xd8\x0f\x36\xd8\x11\x15\x97\x1e\x91\x1e\xd7\x11\x2a\xd1\x11\x2a\xa8\x44\xaf\x4e\xa9\x4e\xd7\x2c\x47\xd1\x2c\x47\xd8\x11\x15\x97\x19\x91\x19\x9c\x42\x98\x74\x9b\x48\xf0\x03\x01\x11\x26\xf1\x03\x02\x10\x26\xf0\x00\x02\x09\x26",
+};
+static
+ struct _PyCode_DEF(138)
+codecs_toplevel_consts_12_consts_6 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 69,
+ },
+ .co_consts = & codecs_toplevel_consts_12_consts_6_consts._object.ob_base.ob_base,
+ .co_names = & codecs_toplevel_consts_12_consts_6_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 8 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 7,
+ .co_firstlineno = 109,
+ .co_nlocalsplus = 1,
+ .co_nlocals = 1,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 267,
+ .co_localsplusnames = & importlib__bootstrap_toplevel_consts_7_consts_2_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_characters[32]),
+ .co_filename = & codecs_toplevel_consts_12_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__repr__),
+ .co_qualname = & codecs_toplevel_consts_12_consts_6_qualname._ascii.ob_base,
+ .co_linetable = & codecs_toplevel_consts_12_consts_6_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x64\x01\x7c\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x6a\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x74\x09\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x66\x04\x7a\x06\x00\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[5];
+ }_object;
+ }
+codecs_toplevel_consts_12_consts_7 = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 5,
+ },
+ .ob_item = {
+ Py_None,
+ Py_None,
+ Py_None,
+ Py_None,
+ Py_None,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[8];
+ }_object;
+ }
+codecs_toplevel_consts_12_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 8,
+ },
+ .ob_item = {
+ & const_str_CodecInfo._ascii.ob_base,
+ & codecs_toplevel_consts_12_consts_1._ascii.ob_base,
+ Py_True,
+ Py_None,
+ & codecs_toplevel_consts_12_consts_4._object.ob_base.ob_base,
+ & codecs_toplevel_consts_12_consts_5.ob_base.ob_base,
+ & codecs_toplevel_consts_12_consts_6.ob_base.ob_base,
+ & codecs_toplevel_consts_12_consts_7._object.ob_base.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[7];
+ }_object;
+ }
+codecs_toplevel_consts_12_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 7,
+ },
+ .ob_item = {
+ &_Py_ID(__name__),
+ &_Py_ID(__module__),
+ &_Py_ID(__qualname__),
+ &_Py_ID(__doc__),
+ &_Py_ID(_is_text_encoding),
+ &_Py_ID(__new__),
+ &_Py_ID(__repr__),
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[38];
+ }
+codecs_toplevel_consts_12_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 37,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x84\x00\xd9\x04\x3a\xf0\x10\x00\x19\x1d\xd0\x04\x15\xe0\x45\x49\xd8\x3f\x43\xf0\x03\x0d\x05\x14\xe0\x1d\x21\xf4\x05\x0d\x05\x14\xf3\x1e\x03\x05\x26",
+};
+static
+ struct _PyCode_DEF(44)
+codecs_toplevel_consts_12 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 22,
+ },
+ .co_consts = & codecs_toplevel_consts_12_consts._object.ob_base.ob_base,
+ .co_names = & codecs_toplevel_consts_12_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 0,
+ .co_argcount = 0,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 3 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 3,
+ .co_firstlineno = 83,
+ .co_nlocalsplus = 0,
+ .co_nlocals = 0,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 268,
+ .co_localsplusnames = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_filename = & codecs_toplevel_consts_12_consts_5_filename._ascii.ob_base,
+ .co_name = & const_str_CodecInfo._ascii.ob_base,
+ .co_qualname = & const_str_CodecInfo._ascii.ob_base,
+ .co_linetable = & codecs_toplevel_consts_12_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x65\x00\x5a\x01\x64\x00\x5a\x02\x64\x01\x5a\x03\x64\x02\x5a\x04\x09\x00\x09\x00\x64\x07\x64\x03\x64\x04\x9c\x01\x64\x05\x84\x03\x5a\x05\x64\x06\x84\x00\x5a\x06\x79\x03",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[1082];
+ }
+codecs_toplevel_consts_14_consts_1 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 1081,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x20\x44\x65\x66\x69\x6e\x65\x73\x20\x74\x68\x65\x20\x69\x6e\x74\x65\x72\x66\x61\x63\x65\x20\x66\x6f\x72\x20\x73\x74\x61\x74\x65\x6c\x65\x73\x73\x20\x65\x6e\x63\x6f\x64\x65\x72\x73\x2f\x64\x65\x63\x6f\x64\x65\x72\x73\x2e\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x54\x68\x65\x20\x2e\x65\x6e\x63\x6f\x64\x65\x28\x29\x2f\x2e\x64\x65\x63\x6f\x64\x65\x28\x29\x20\x6d\x65\x74\x68\x6f\x64\x73\x20\x6d\x61\x79\x20\x75\x73\x65\x20\x64\x69\x66\x66\x65\x72\x65\x6e\x74\x20\x65\x72\x72\x6f\x72\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x68\x61\x6e\x64\x6c\x69\x6e\x67\x20\x73\x63\x68\x65\x6d\x65\x73\x20\x62\x79\x20\x70\x72\x6f\x76\x69\x64\x69\x6e\x67\x20\x74\x68\x65\x20\x65\x72\x72\x6f\x72\x73\x20\x61\x72\x67\x75\x6d\x65\x6e\x74\x2e\x20\x54\x68\x65\x73\x65\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x73\x74\x72\x69\x6e\x67\x20\x76\x61\x6c\x75\x65\x73\x20\x61\x72\x65\x20\x70\x72\x65\x64\x65\x66\x69\x6e\x65\x64\x3a\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x27\x73\x74\x72\x69\x63\x74\x27\x20\x2d\x20\x72\x61\x69\x73\x65\x20\x61\x20\x56\x61\x6c\x75\x65\x45\x72\x72\x6f\x72\x20\x65\x72\x72\x6f\x72\x20\x28\x6f\x72\x20\x61\x20\x73\x75\x62\x63\x6c\x61\x73\x73\x29\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x27\x69\x67\x6e\x6f\x72\x65\x27\x20\x2d\x20\x69\x67\x6e\x6f\x72\x65\x20\x74\x68\x65\x20\x63\x68\x61\x72\x61\x63\x74\x65\x72\x20\x61\x6e\x64\x20\x63\x6f\x6e\x74\x69\x6e\x75\x65\x20\x77\x69\x74\x68\x20\x74\x68\x65\x20\x6e\x65\x78\x74\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x27\x72\x65\x70\x6c\x61\x63\x65\x27\x20\x2d\x20\x72\x65\x70\x6c\x61\x63\x65\x20\x77\x69\x74\x68\x20\x61\x20\x73\x75\x69\x74\x61\x62\x6c\x65\x20\x72\x65\x70\x6c\x61\x63\x65\x6d\x65\x6e\x74\x20\x63\x68\x61\x72\x61\x63\x74\x65\x72\x3b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x50\x79\x74\x68\x6f\x6e\x20\x77\x69\x6c\x6c\x20\x75\x73\x65\x20\x74\x68\x65\x20\x6f\x66\x66\x69\x63\x69\x61\x6c\x20\x55\x2b\x46\x46\x46\x44\x20\x52\x45\x50\x4c\x41\x43\x45\x4d\x45\x4e\x54\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x43\x48\x41\x52\x41\x43\x54\x45\x52\x20\x66\x6f\x72\x20\x74\x68\x65\x20\x62\x75\x69\x6c\x74\x69\x6e\x20\x55\x6e\x69\x63\x6f\x64\x65\x20\x63\x6f\x64\x65\x63\x73\x20\x6f\x6e\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x64\x65\x63\x6f\x64\x69\x6e\x67\x20\x61\x6e\x64\x20\x27\x3f\x27\x20\x6f\x6e\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x2e\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x27\x73\x75\x72\x72\x6f\x67\x61\x74\x65\x65\x73\x63\x61\x70\x65\x27\x20\x2d\x20\x72\x65\x70\x6c\x61\x63\x65\x20\x77\x69\x74\x68\x20\x70\x72\x69\x76\x61\x74\x65\x20\x63\x6f\x64\x65\x20\x70\x6f\x69\x6e\x74\x73\x20\x55\x2b\x44\x43\x6e\x6e\x2e\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x27\x78\x6d\x6c\x63\x68\x61\x72\x72\x65\x66\x72\x65\x70\x6c\x61\x63\x65\x27\x20\x2d\x20\x52\x65\x70\x6c\x61\x63\x65\x20\x77\x69\x74\x68\x20\x74\x68\x65\x20\x61\x70\x70\x72\x6f\x70\x72\x69\x61\x74\x65\x20\x58\x4d\x4c\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x63\x68\x61\x72\x61\x63\x74\x65\x72\x20\x72\x65\x66\x65\x72\x65\x6e\x63\x65\x20\x28\x6f\x6e\x6c\x79\x20\x66\x6f\x72\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x29\x2e\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x27\x62\x61\x63\x6b\x73\x6c\x61\x73\x68\x72\x65\x70\x6c\x61\x63\x65\x27\x20\x20\x2d\x20\x52\x65\x70\x6c\x61\x63\x65\x20\x77\x69\x74\x68\x20\x62\x61\x63\x6b\x73\x6c\x61\x73\x68\x65\x64\x20\x65\x73\x63\x61\x70\x65\x20\x73\x65\x71\x75\x65\x6e\x63\x65\x73\x2e\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x27\x6e\x61\x6d\x65\x72\x65\x70\x6c\x61\x63\x65\x27\x20\x20\x20\x20\x20\x20\x20\x2d\x20\x52\x65\x70\x6c\x61\x63\x65\x20\x77\x69\x74\x68\x20\x5c\x4e\x7b\x2e\x2e\x2e\x7d\x20\x65\x73\x63\x61\x70\x65\x20\x73\x65\x71\x75\x65\x6e\x63\x65\x73\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x28\x6f\x6e\x6c\x79\x20\x66\x6f\x72\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x29\x2e\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x54\x68\x65\x20\x73\x65\x74\x20\x6f\x66\x20\x61\x6c\x6c\x6f\x77\x65\x64\x20\x76\x61\x6c\x75\x65\x73\x20\x63\x61\x6e\x20\x62\x65\x20\x65\x78\x74\x65\x6e\x64\x65\x64\x20\x76\x69\x61\x20\x72\x65\x67\x69\x73\x74\x65\x72\x5f\x65\x72\x72\x6f\x72\x2e\x0a\x0a\x20\x20\x20\x20",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[548];
+ }
+codecs_toplevel_consts_14_consts_2_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 547,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x20\x45\x6e\x63\x6f\x64\x65\x73\x20\x74\x68\x65\x20\x6f\x62\x6a\x65\x63\x74\x20\x69\x6e\x70\x75\x74\x20\x61\x6e\x64\x20\x72\x65\x74\x75\x72\x6e\x73\x20\x61\x20\x74\x75\x70\x6c\x65\x20\x28\x6f\x75\x74\x70\x75\x74\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x6f\x62\x6a\x65\x63\x74\x2c\x20\x6c\x65\x6e\x67\x74\x68\x20\x63\x6f\x6e\x73\x75\x6d\x65\x64\x29\x2e\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x65\x72\x72\x6f\x72\x73\x20\x64\x65\x66\x69\x6e\x65\x73\x20\x74\x68\x65\x20\x65\x72\x72\x6f\x72\x20\x68\x61\x6e\x64\x6c\x69\x6e\x67\x20\x74\x6f\x20\x61\x70\x70\x6c\x79\x2e\x20\x49\x74\x20\x64\x65\x66\x61\x75\x6c\x74\x73\x20\x74\x6f\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x27\x73\x74\x72\x69\x63\x74\x27\x20\x68\x61\x6e\x64\x6c\x69\x6e\x67\x2e\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x54\x68\x65\x20\x6d\x65\x74\x68\x6f\x64\x20\x6d\x61\x79\x20\x6e\x6f\x74\x20\x73\x74\x6f\x72\x65\x20\x73\x74\x61\x74\x65\x20\x69\x6e\x20\x74\x68\x65\x20\x43\x6f\x64\x65\x63\x20\x69\x6e\x73\x74\x61\x6e\x63\x65\x2e\x20\x55\x73\x65\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x53\x74\x72\x65\x61\x6d\x57\x72\x69\x74\x65\x72\x20\x66\x6f\x72\x20\x63\x6f\x64\x65\x63\x73\x20\x77\x68\x69\x63\x68\x20\x68\x61\x76\x65\x20\x74\x6f\x20\x6b\x65\x65\x70\x20\x73\x74\x61\x74\x65\x20\x69\x6e\x20\x6f\x72\x64\x65\x72\x20\x74\x6f\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x6d\x61\x6b\x65\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x20\x65\x66\x66\x69\x63\x69\x65\x6e\x74\x2e\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x54\x68\x65\x20\x65\x6e\x63\x6f\x64\x65\x72\x20\x6d\x75\x73\x74\x20\x62\x65\x20\x61\x62\x6c\x65\x20\x74\x6f\x20\x68\x61\x6e\x64\x6c\x65\x20\x7a\x65\x72\x6f\x20\x6c\x65\x6e\x67\x74\x68\x20\x69\x6e\x70\x75\x74\x20\x61\x6e\x64\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x61\x6e\x20\x65\x6d\x70\x74\x79\x20\x6f\x62\x6a\x65\x63\x74\x20\x6f\x66\x20\x74\x68\x65\x20\x6f\x75\x74\x70\x75\x74\x20\x6f\x62\x6a\x65\x63\x74\x20\x74\x79\x70\x65\x20\x69\x6e\x20\x74\x68\x69\x73\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x73\x69\x74\x75\x61\x74\x69\x6f\x6e\x2e\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+codecs_toplevel_consts_14_consts_2_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & codecs_toplevel_consts_14_consts_2_consts_0._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+codecs_toplevel_consts_14_consts_2_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & const_str_NotImplementedError._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[13];
+ }
+codecs_toplevel_consts_14_consts_2_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 12,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Codec.encode",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[11];
+ }
+codecs_toplevel_consts_14_consts_2_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 10,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf4\x22\x00\x0f\x22\xd0\x08\x21",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+codecs_toplevel_consts_14_consts_2_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ &_Py_ID(self),
+ &_Py_ID(input),
+ &_Py_ID(errors),
+ },
+ },
+};
+static
+ struct _PyCode_DEF(14)
+codecs_toplevel_consts_14_consts_2 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 7,
+ },
+ .co_consts = & codecs_toplevel_consts_14_consts_2_consts._object.ob_base.ob_base,
+ .co_names = & codecs_toplevel_consts_14_consts_2_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 3,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 4 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 1,
+ .co_firstlineno = 138,
+ .co_nlocalsplus = 3,
+ .co_nlocals = 3,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 269,
+ .co_localsplusnames = & codecs_toplevel_consts_14_consts_2_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_3_localspluskinds.ob_base.ob_base,
+ .co_filename = & codecs_toplevel_consts_12_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(encode),
+ .co_qualname = & codecs_toplevel_consts_14_consts_2_qualname._ascii.ob_base,
+ .co_linetable = & codecs_toplevel_consts_14_consts_2_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x82\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[755];
+ }
+codecs_toplevel_consts_14_consts_3_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 754,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x20\x44\x65\x63\x6f\x64\x65\x73\x20\x74\x68\x65\x20\x6f\x62\x6a\x65\x63\x74\x20\x69\x6e\x70\x75\x74\x20\x61\x6e\x64\x20\x72\x65\x74\x75\x72\x6e\x73\x20\x61\x20\x74\x75\x70\x6c\x65\x20\x28\x6f\x75\x74\x70\x75\x74\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x6f\x62\x6a\x65\x63\x74\x2c\x20\x6c\x65\x6e\x67\x74\x68\x20\x63\x6f\x6e\x73\x75\x6d\x65\x64\x29\x2e\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x69\x6e\x70\x75\x74\x20\x6d\x75\x73\x74\x20\x62\x65\x20\x61\x6e\x20\x6f\x62\x6a\x65\x63\x74\x20\x77\x68\x69\x63\x68\x20\x70\x72\x6f\x76\x69\x64\x65\x73\x20\x74\x68\x65\x20\x62\x66\x5f\x67\x65\x74\x72\x65\x61\x64\x62\x75\x66\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x62\x75\x66\x66\x65\x72\x20\x73\x6c\x6f\x74\x2e\x20\x50\x79\x74\x68\x6f\x6e\x20\x73\x74\x72\x69\x6e\x67\x73\x2c\x20\x62\x75\x66\x66\x65\x72\x20\x6f\x62\x6a\x65\x63\x74\x73\x20\x61\x6e\x64\x20\x6d\x65\x6d\x6f\x72\x79\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x6d\x61\x70\x70\x65\x64\x20\x66\x69\x6c\x65\x73\x20\x61\x72\x65\x20\x65\x78\x61\x6d\x70\x6c\x65\x73\x20\x6f\x66\x20\x6f\x62\x6a\x65\x63\x74\x73\x20\x70\x72\x6f\x76\x69\x64\x69\x6e\x67\x20\x74\x68\x69\x73\x20\x73\x6c\x6f\x74\x2e\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x65\x72\x72\x6f\x72\x73\x20\x64\x65\x66\x69\x6e\x65\x73\x20\x74\x68\x65\x20\x65\x72\x72\x6f\x72\x20\x68\x61\x6e\x64\x6c\x69\x6e\x67\x20\x74\x6f\x20\x61\x70\x70\x6c\x79\x2e\x20\x49\x74\x20\x64\x65\x66\x61\x75\x6c\x74\x73\x20\x74\x6f\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x27\x73\x74\x72\x69\x63\x74\x27\x20\x68\x61\x6e\x64\x6c\x69\x6e\x67\x2e\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x54\x68\x65\x20\x6d\x65\x74\x68\x6f\x64\x20\x6d\x61\x79\x20\x6e\x6f\x74\x20\x73\x74\x6f\x72\x65\x20\x73\x74\x61\x74\x65\x20\x69\x6e\x20\x74\x68\x65\x20\x43\x6f\x64\x65\x63\x20\x69\x6e\x73\x74\x61\x6e\x63\x65\x2e\x20\x55\x73\x65\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x53\x74\x72\x65\x61\x6d\x52\x65\x61\x64\x65\x72\x20\x66\x6f\x72\x20\x63\x6f\x64\x65\x63\x73\x20\x77\x68\x69\x63\x68\x20\x68\x61\x76\x65\x20\x74\x6f\x20\x6b\x65\x65\x70\x20\x73\x74\x61\x74\x65\x20\x69\x6e\x20\x6f\x72\x64\x65\x72\x20\x74\x6f\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x6d\x61\x6b\x65\x20\x64\x65\x63\x6f\x64\x69\x6e\x67\x20\x65\x66\x66\x69\x63\x69\x65\x6e\x74\x2e\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x54\x68\x65\x20\x64\x65\x63\x6f\x64\x65\x72\x20\x6d\x75\x73\x74\x20\x62\x65\x20\x61\x62\x6c\x65\x20\x74\x6f\x20\x68\x61\x6e\x64\x6c\x65\x20\x7a\x65\x72\x6f\x20\x6c\x65\x6e\x67\x74\x68\x20\x69\x6e\x70\x75\x74\x20\x61\x6e\x64\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x61\x6e\x20\x65\x6d\x70\x74\x79\x20\x6f\x62\x6a\x65\x63\x74\x20\x6f\x66\x20\x74\x68\x65\x20\x6f\x75\x74\x70\x75\x74\x20\x6f\x62\x6a\x65\x63\x74\x20\x74\x79\x70\x65\x20\x69\x6e\x20\x74\x68\x69\x73\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x73\x69\x74\x75\x61\x74\x69\x6f\x6e\x2e\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+codecs_toplevel_consts_14_consts_3_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & codecs_toplevel_consts_14_consts_3_consts_0._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[13];
+ }
+codecs_toplevel_consts_14_consts_3_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 12,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Codec.decode",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[11];
+ }
+codecs_toplevel_consts_14_consts_3_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 10,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf4\x2a\x00\x0f\x22\xd0\x08\x21",
+};
+static
+ struct _PyCode_DEF(14)
+codecs_toplevel_consts_14_consts_3 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 7,
+ },
+ .co_consts = & codecs_toplevel_consts_14_consts_3_consts._object.ob_base.ob_base,
+ .co_names = & codecs_toplevel_consts_14_consts_2_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 3,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 4 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 1,
+ .co_firstlineno = 157,
+ .co_nlocalsplus = 3,
+ .co_nlocals = 3,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 270,
+ .co_localsplusnames = & codecs_toplevel_consts_14_consts_2_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_3_localspluskinds.ob_base.ob_base,
+ .co_filename = & codecs_toplevel_consts_12_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(decode),
+ .co_qualname = & codecs_toplevel_consts_14_consts_3_qualname._ascii.ob_base,
+ .co_linetable = & codecs_toplevel_consts_14_consts_3_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x82\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+codecs_toplevel_consts_14_consts_5 = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ &_Py_ID(strict),
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[6];
+ }_object;
+ }
+codecs_toplevel_consts_14_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 6,
+ },
+ .ob_item = {
+ & const_str_Codec._ascii.ob_base,
+ & codecs_toplevel_consts_14_consts_1._ascii.ob_base,
+ & codecs_toplevel_consts_14_consts_2.ob_base.ob_base,
+ & codecs_toplevel_consts_14_consts_3.ob_base.ob_base,
+ Py_None,
+ & codecs_toplevel_consts_14_consts_5._object.ob_base.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[6];
+ }_object;
+ }
+codecs_toplevel_consts_14_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 6,
+ },
+ .ob_item = {
+ &_Py_ID(__name__),
+ &_Py_ID(__module__),
+ &_Py_ID(__qualname__),
+ &_Py_ID(__doc__),
+ &_Py_ID(encode),
+ &_Py_ID(decode),
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[18];
+ }
+codecs_toplevel_consts_14_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 17,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x84\x00\xf1\x04\x15\x05\x08\xf3\x2c\x11\x05\x22\xf4\x26\x15\x05\x22",
+};
+static
+ struct _PyCode_DEF(32)
+codecs_toplevel_consts_14 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 16,
+ },
+ .co_consts = & codecs_toplevel_consts_14_consts._object.ob_base.ob_base,
+ .co_names = & codecs_toplevel_consts_14_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 0,
+ .co_argcount = 0,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 2 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 2,
+ .co_firstlineno = 114,
+ .co_nlocalsplus = 0,
+ .co_nlocals = 0,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 271,
+ .co_localsplusnames = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_filename = & codecs_toplevel_consts_12_consts_5_filename._ascii.ob_base,
+ .co_name = & const_str_Codec._ascii.ob_base,
+ .co_qualname = & const_str_Codec._ascii.ob_base,
+ .co_linetable = & codecs_toplevel_consts_14_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x65\x00\x5a\x01\x64\x00\x5a\x02\x64\x01\x5a\x03\x64\x05\x64\x02\x84\x01\x5a\x04\x64\x05\x64\x03\x84\x01\x5a\x05\x79\x04",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[233];
+ }
+codecs_toplevel_consts_16_consts_1 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 232,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x0a\x20\x20\x20\x20\x41\x6e\x20\x49\x6e\x63\x72\x65\x6d\x65\x6e\x74\x61\x6c\x45\x6e\x63\x6f\x64\x65\x72\x20\x65\x6e\x63\x6f\x64\x65\x73\x20\x61\x6e\x20\x69\x6e\x70\x75\x74\x20\x69\x6e\x20\x6d\x75\x6c\x74\x69\x70\x6c\x65\x20\x73\x74\x65\x70\x73\x2e\x20\x54\x68\x65\x20\x69\x6e\x70\x75\x74\x20\x63\x61\x6e\x0a\x20\x20\x20\x20\x62\x65\x20\x70\x61\x73\x73\x65\x64\x20\x70\x69\x65\x63\x65\x20\x62\x79\x20\x70\x69\x65\x63\x65\x20\x74\x6f\x20\x74\x68\x65\x20\x65\x6e\x63\x6f\x64\x65\x28\x29\x20\x6d\x65\x74\x68\x6f\x64\x2e\x20\x54\x68\x65\x20\x49\x6e\x63\x72\x65\x6d\x65\x6e\x74\x61\x6c\x45\x6e\x63\x6f\x64\x65\x72\x0a\x20\x20\x20\x20\x72\x65\x6d\x65\x6d\x62\x65\x72\x73\x20\x74\x68\x65\x20\x73\x74\x61\x74\x65\x20\x6f\x66\x20\x74\x68\x65\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x20\x70\x72\x6f\x63\x65\x73\x73\x20\x62\x65\x74\x77\x65\x65\x6e\x20\x63\x61\x6c\x6c\x73\x20\x74\x6f\x20\x65\x6e\x63\x6f\x64\x65\x28\x29\x2e\x0a\x20\x20\x20\x20",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[245];
+ }
+codecs_toplevel_consts_16_consts_2_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 244,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x43\x72\x65\x61\x74\x65\x73\x20\x61\x6e\x20\x49\x6e\x63\x72\x65\x6d\x65\x6e\x74\x61\x6c\x45\x6e\x63\x6f\x64\x65\x72\x20\x69\x6e\x73\x74\x61\x6e\x63\x65\x2e\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x54\x68\x65\x20\x49\x6e\x63\x72\x65\x6d\x65\x6e\x74\x61\x6c\x45\x6e\x63\x6f\x64\x65\x72\x20\x6d\x61\x79\x20\x75\x73\x65\x20\x64\x69\x66\x66\x65\x72\x65\x6e\x74\x20\x65\x72\x72\x6f\x72\x20\x68\x61\x6e\x64\x6c\x69\x6e\x67\x20\x73\x63\x68\x65\x6d\x65\x73\x20\x62\x79\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x70\x72\x6f\x76\x69\x64\x69\x6e\x67\x20\x74\x68\x65\x20\x65\x72\x72\x6f\x72\x73\x20\x6b\x65\x79\x77\x6f\x72\x64\x20\x61\x72\x67\x75\x6d\x65\x6e\x74\x2e\x20\x53\x65\x65\x20\x74\x68\x65\x20\x6d\x6f\x64\x75\x6c\x65\x20\x64\x6f\x63\x73\x74\x72\x69\x6e\x67\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x66\x6f\x72\x20\x61\x20\x6c\x69\x73\x74\x20\x6f\x66\x20\x70\x6f\x73\x73\x69\x62\x6c\x65\x20\x76\x61\x6c\x75\x65\x73\x2e\x0a\x20\x20\x20\x20\x20\x20\x20\x20",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+codecs_toplevel_consts_16_consts_2_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ & codecs_toplevel_consts_16_consts_2_consts_0._ascii.ob_base,
+ &_Py_STR(empty),
+ Py_None,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+codecs_toplevel_consts_16_consts_2_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ &_Py_ID(errors),
+ &_Py_ID(buffer),
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[28];
+ }
+codecs_toplevel_consts_16_consts_2_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 27,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "IncrementalEncoder.__init__",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[19];
+ }
+codecs_toplevel_consts_16_consts_2_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 18,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf0\x10\x00\x17\x1d\x88\x04\x8c\x0b\xd8\x16\x18\x88\x04\x8d\x0b",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+codecs_toplevel_consts_16_consts_2_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ &_Py_ID(self),
+ &_Py_ID(errors),
+ },
+ },
+};
+static
+ struct _PyCode_DEF(32)
+codecs_toplevel_consts_16_consts_2 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 16,
+ },
+ .co_consts = & codecs_toplevel_consts_16_consts_2_consts._object.ob_base.ob_base,
+ .co_names = & codecs_toplevel_consts_16_consts_2_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 4 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 2,
+ .co_firstlineno = 186,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 2,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 272,
+ .co_localsplusnames = & codecs_toplevel_consts_16_consts_2_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_14_consts_2_localspluskinds.ob_base.ob_base,
+ .co_filename = & codecs_toplevel_consts_12_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__init__),
+ .co_qualname = & codecs_toplevel_consts_16_consts_2_qualname._ascii.ob_base,
+ .co_linetable = & codecs_toplevel_consts_16_consts_2_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x01\x7c\x00\x5f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x01\x7c\x00\x5f\x01\x00\x00\x00\x00\x00\x00\x00\x00\x79\x02",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[66];
+ }
+codecs_toplevel_consts_16_consts_3_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 65,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x45\x6e\x63\x6f\x64\x65\x73\x20\x69\x6e\x70\x75\x74\x20\x61\x6e\x64\x20\x72\x65\x74\x75\x72\x6e\x73\x20\x74\x68\x65\x20\x72\x65\x73\x75\x6c\x74\x69\x6e\x67\x20\x6f\x62\x6a\x65\x63\x74\x2e\x0a\x20\x20\x20\x20\x20\x20\x20\x20",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+codecs_toplevel_consts_16_consts_3_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & codecs_toplevel_consts_16_consts_3_consts_0._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[26];
+ }
+codecs_toplevel_consts_16_consts_3_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 25,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "IncrementalEncoder.encode",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[11];
+ }
+codecs_toplevel_consts_16_consts_3_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 10,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf4\x08\x00\x0f\x22\xd0\x08\x21",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+codecs_toplevel_consts_16_consts_3_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ &_Py_ID(self),
+ &_Py_ID(input),
+ &_Py_ID(final),
+ },
+ },
+};
+static
+ struct _PyCode_DEF(14)
+codecs_toplevel_consts_16_consts_3 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 7,
+ },
+ .co_consts = & codecs_toplevel_consts_16_consts_3_consts._object.ob_base.ob_base,
+ .co_names = & codecs_toplevel_consts_14_consts_2_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 3,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 4 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 1,
+ .co_firstlineno = 197,
+ .co_nlocalsplus = 3,
+ .co_nlocals = 3,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 273,
+ .co_localsplusnames = & codecs_toplevel_consts_16_consts_3_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_3_localspluskinds.ob_base.ob_base,
+ .co_filename = & codecs_toplevel_consts_12_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(encode),
+ .co_qualname = & codecs_toplevel_consts_16_consts_3_qualname._ascii.ob_base,
+ .co_linetable = & codecs_toplevel_consts_16_consts_3_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x82\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[59];
+ }
+codecs_toplevel_consts_16_consts_4_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 58,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x52\x65\x73\x65\x74\x73\x20\x74\x68\x65\x20\x65\x6e\x63\x6f\x64\x65\x72\x20\x74\x6f\x20\x74\x68\x65\x20\x69\x6e\x69\x74\x69\x61\x6c\x20\x73\x74\x61\x74\x65\x2e\x0a\x20\x20\x20\x20\x20\x20\x20\x20",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+codecs_toplevel_consts_16_consts_4_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & codecs_toplevel_consts_16_consts_4_consts_0._ascii.ob_base,
+ Py_None,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[25];
+ }
+codecs_toplevel_consts_16_consts_4_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 24,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "IncrementalEncoder.reset",
+};
+static
+ struct _PyCode_DEF(4)
+codecs_toplevel_consts_16_consts_4 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 2,
+ },
+ .co_consts = & codecs_toplevel_consts_16_consts_4_consts._object.ob_base.ob_base,
+ .co_names = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 1 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 0,
+ .co_firstlineno = 203,
+ .co_nlocalsplus = 1,
+ .co_nlocals = 1,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 274,
+ .co_localsplusnames = & importlib__bootstrap_toplevel_consts_7_consts_2_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_characters[32]),
+ .co_filename = & codecs_toplevel_consts_12_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(reset),
+ .co_qualname = & codecs_toplevel_consts_16_consts_4_qualname._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_external_toplevel_consts_54_consts_3_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x79\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[59];
+ }
+codecs_toplevel_consts_16_consts_5_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 58,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x52\x65\x74\x75\x72\x6e\x20\x74\x68\x65\x20\x63\x75\x72\x72\x65\x6e\x74\x20\x73\x74\x61\x74\x65\x20\x6f\x66\x20\x74\x68\x65\x20\x65\x6e\x63\x6f\x64\x65\x72\x2e\x0a\x20\x20\x20\x20\x20\x20\x20\x20",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+codecs_toplevel_consts_16_consts_5_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & codecs_toplevel_consts_16_consts_5_consts_0._ascii.ob_base,
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 0],
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[28];
+ }
+codecs_toplevel_consts_16_consts_5_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 27,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "IncrementalEncoder.getstate",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[8];
+ }
+codecs_toplevel_consts_16_consts_5_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 7,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf0\x08\x00\x10\x11",
+};
+static
+ struct _PyCode_DEF(4)
+codecs_toplevel_consts_16_consts_5 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 2,
+ },
+ .co_consts = & codecs_toplevel_consts_16_consts_5_consts._object.ob_base.ob_base,
+ .co_names = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 1 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 0,
+ .co_firstlineno = 208,
+ .co_nlocalsplus = 1,
+ .co_nlocals = 1,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 275,
+ .co_localsplusnames = & importlib__bootstrap_toplevel_consts_7_consts_2_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_characters[32]),
+ .co_filename = & codecs_toplevel_consts_12_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(getstate),
+ .co_qualname = & codecs_toplevel_consts_16_consts_5_qualname._ascii.ob_base,
+ .co_linetable = & codecs_toplevel_consts_16_consts_5_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x79\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[109];
+ }
+codecs_toplevel_consts_16_consts_6_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 108,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x53\x65\x74\x20\x74\x68\x65\x20\x63\x75\x72\x72\x65\x6e\x74\x20\x73\x74\x61\x74\x65\x20\x6f\x66\x20\x74\x68\x65\x20\x65\x6e\x63\x6f\x64\x65\x72\x2e\x20\x73\x74\x61\x74\x65\x20\x6d\x75\x73\x74\x20\x68\x61\x76\x65\x20\x62\x65\x65\x6e\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x65\x64\x20\x62\x79\x20\x67\x65\x74\x73\x74\x61\x74\x65\x28\x29\x2e\x0a\x20\x20\x20\x20\x20\x20\x20\x20",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+codecs_toplevel_consts_16_consts_6_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & codecs_toplevel_consts_16_consts_6_consts_0._ascii.ob_base,
+ Py_None,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[28];
+ }
+codecs_toplevel_consts_16_consts_6_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 27,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "IncrementalEncoder.setstate",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+codecs_toplevel_consts_16_consts_6_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ &_Py_ID(self),
+ & const_str_state._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(4)
+codecs_toplevel_consts_16_consts_6 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 2,
+ },
+ .co_consts = & codecs_toplevel_consts_16_consts_6_consts._object.ob_base.ob_base,
+ .co_names = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 2 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 0,
+ .co_firstlineno = 214,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 2,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 276,
+ .co_localsplusnames = & codecs_toplevel_consts_16_consts_6_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_14_consts_2_localspluskinds.ob_base.ob_base,
+ .co_filename = & codecs_toplevel_consts_12_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(setstate),
+ .co_qualname = & codecs_toplevel_consts_16_consts_6_qualname._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_external_toplevel_consts_54_consts_3_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x79\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+codecs_toplevel_consts_16_consts_9 = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ Py_False,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[10];
+ }_object;
+ }
+codecs_toplevel_consts_16_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 10,
+ },
+ .ob_item = {
+ & const_str_IncrementalEncoder._ascii.ob_base,
+ & codecs_toplevel_consts_16_consts_1._ascii.ob_base,
+ & codecs_toplevel_consts_16_consts_2.ob_base.ob_base,
+ & codecs_toplevel_consts_16_consts_3.ob_base.ob_base,
+ & codecs_toplevel_consts_16_consts_4.ob_base.ob_base,
+ & codecs_toplevel_consts_16_consts_5.ob_base.ob_base,
+ & codecs_toplevel_consts_16_consts_6.ob_base.ob_base,
+ Py_None,
+ & codecs_toplevel_consts_14_consts_5._object.ob_base.ob_base,
+ & codecs_toplevel_consts_16_consts_9._object.ob_base.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[9];
+ }_object;
+ }
+codecs_toplevel_consts_16_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 9,
+ },
+ .ob_item = {
+ &_Py_ID(__name__),
+ &_Py_ID(__module__),
+ &_Py_ID(__qualname__),
+ &_Py_ID(__doc__),
+ &_Py_ID(__init__),
+ &_Py_ID(encode),
+ &_Py_ID(reset),
+ &_Py_ID(getstate),
+ &_Py_ID(setstate),
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[33];
+ }
+codecs_toplevel_consts_16_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 32,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x84\x00\xf1\x02\x04\x05\x08\xf3\x0a\x09\x05\x19\xf3\x16\x04\x05\x22\xf2\x0c\x03\x05\x0c\xf2\x0a\x04\x05\x11\xf3\x0c\x04\x05\x0c",
+};
+static
+ struct _PyCode_DEF(50)
+codecs_toplevel_consts_16 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 25,
+ },
+ .co_consts = & codecs_toplevel_consts_16_consts._object.ob_base.ob_base,
+ .co_names = & codecs_toplevel_consts_16_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 0,
+ .co_argcount = 0,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 2 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 2,
+ .co_firstlineno = 180,
+ .co_nlocalsplus = 0,
+ .co_nlocals = 0,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 277,
+ .co_localsplusnames = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_filename = & codecs_toplevel_consts_12_consts_5_filename._ascii.ob_base,
+ .co_name = & const_str_IncrementalEncoder._ascii.ob_base,
+ .co_qualname = & const_str_IncrementalEncoder._ascii.ob_base,
+ .co_linetable = & codecs_toplevel_consts_16_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x65\x00\x5a\x01\x64\x00\x5a\x02\x64\x01\x5a\x03\x64\x08\x64\x02\x84\x01\x5a\x04\x64\x09\x64\x03\x84\x01\x5a\x05\x64\x04\x84\x00\x5a\x06\x64\x05\x84\x00\x5a\x07\x64\x06\x84\x00\x5a\x08\x79\x07",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[27];
+ }
+const_str_BufferedIncrementalEncoder = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 26,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "BufferedIncrementalEncoder",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[193];
+ }
+codecs_toplevel_consts_18_consts_1 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 192,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x0a\x20\x20\x20\x20\x54\x68\x69\x73\x20\x73\x75\x62\x63\x6c\x61\x73\x73\x20\x6f\x66\x20\x49\x6e\x63\x72\x65\x6d\x65\x6e\x74\x61\x6c\x45\x6e\x63\x6f\x64\x65\x72\x20\x63\x61\x6e\x20\x62\x65\x20\x75\x73\x65\x64\x20\x61\x73\x20\x74\x68\x65\x20\x62\x61\x73\x65\x63\x6c\x61\x73\x73\x20\x66\x6f\x72\x20\x61\x6e\x0a\x20\x20\x20\x20\x69\x6e\x63\x72\x65\x6d\x65\x6e\x74\x61\x6c\x20\x65\x6e\x63\x6f\x64\x65\x72\x20\x69\x66\x20\x74\x68\x65\x20\x65\x6e\x63\x6f\x64\x65\x72\x20\x6d\x75\x73\x74\x20\x6b\x65\x65\x70\x20\x73\x6f\x6d\x65\x20\x6f\x66\x20\x74\x68\x65\x20\x6f\x75\x74\x70\x75\x74\x20\x69\x6e\x20\x61\x0a\x20\x20\x20\x20\x62\x75\x66\x66\x65\x72\x20\x62\x65\x74\x77\x65\x65\x6e\x20\x63\x61\x6c\x6c\x73\x20\x74\x6f\x20\x65\x6e\x63\x6f\x64\x65\x28\x29\x2e\x0a\x20\x20\x20\x20",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+codecs_toplevel_consts_18_consts_2_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ & const_str_IncrementalEncoder._ascii.ob_base,
+ &_Py_ID(__init__),
+ &_Py_ID(buffer),
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[36];
+ }
+codecs_toplevel_consts_18_consts_2_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 35,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "BufferedIncrementalEncoder.__init__",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[26];
+ }
+codecs_toplevel_consts_18_consts_2_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 25,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xdc\x08\x1a\xd7\x08\x23\xd1\x08\x23\xa0\x44\xa8\x26\xd4\x08\x31\xe0\x16\x18\x88\x04\x8d\x0b",
+};
+static
+ struct _PyCode_DEF(62)
+codecs_toplevel_consts_18_consts_2 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 31,
+ },
+ .co_consts = & importlib__bootstrap_external_toplevel_consts_68_consts_3_consts._object.ob_base.ob_base,
+ .co_names = & codecs_toplevel_consts_18_consts_2_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 6 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 226,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 2,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 278,
+ .co_localsplusnames = & codecs_toplevel_consts_16_consts_2_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_14_consts_2_localspluskinds.ob_base.ob_base,
+ .co_filename = & codecs_toplevel_consts_12_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__init__),
+ .co_qualname = & codecs_toplevel_consts_18_consts_2_qualname._ascii.ob_base,
+ .co_linetable = & codecs_toplevel_consts_18_consts_2_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x7c\x01\xab\x02\x00\x00\x00\x00\x00\x00\x01\x00\x64\x01\x7c\x00\x5f\x02\x00\x00\x00\x00\x00\x00\x00\x00\x79\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[15];
+ }
+const_str__buffer_encode = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 14,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_buffer_encode",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[42];
+ }
+codecs_toplevel_consts_18_consts_3_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 41,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "BufferedIncrementalEncoder._buffer_encode",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[11];
+ }
+codecs_toplevel_consts_18_consts_3_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 10,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf4\x06\x00\x0f\x22\xd0\x08\x21",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[4];
+ }_object;
+ }
+codecs_toplevel_consts_18_consts_3_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_item = {
+ &_Py_ID(self),
+ &_Py_ID(input),
+ &_Py_ID(errors),
+ &_Py_ID(final),
+ },
+ },
+};
+static
+ struct _PyCode_DEF(14)
+codecs_toplevel_consts_18_consts_3 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 7,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_1_consts._object.ob_base.ob_base,
+ .co_names = & codecs_toplevel_consts_14_consts_2_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 4,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 5 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 1,
+ .co_firstlineno = 231,
+ .co_nlocalsplus = 4,
+ .co_nlocals = 4,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 279,
+ .co_localsplusnames = & codecs_toplevel_consts_18_consts_3_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_7_consts_3_localspluskinds.ob_base.ob_base,
+ .co_filename = & codecs_toplevel_consts_12_consts_5_filename._ascii.ob_base,
+ .co_name = & const_str__buffer_encode._ascii.ob_base,
+ .co_qualname = & codecs_toplevel_consts_18_consts_3_qualname._ascii.ob_base,
+ .co_linetable = & codecs_toplevel_consts_18_consts_3_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x82\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+codecs_toplevel_consts_18_consts_4_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ &_Py_ID(buffer),
+ & const_str__buffer_encode._ascii.ob_base,
+ &_Py_ID(errors),
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[34];
+ }
+codecs_toplevel_consts_18_consts_4_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 33,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "BufferedIncrementalEncoder.encode",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[64];
+ }
+codecs_toplevel_consts_18_consts_4_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 63,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xe0\x0f\x13\x8f\x7b\x89\x7b\x98\x55\xd1\x0f\x22\x88\x04\xd8\x1d\x21\xd7\x1d\x30\xd1\x1d\x30\xb0\x14\xb0\x74\xb7\x7b\xb1\x7b\xc0\x45\xd3\x1d\x4a\xd1\x08\x1a\x88\x16\x90\x18\xe0\x16\x1a\x98\x38\x98\x39\x90\x6f\x88\x04\x8c\x0b\xd8\x0f\x15\x88\x0d",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[7];
+ }
+const_str_result = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 6,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "result",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[9];
+ }
+const_str_consumed = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 8,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "consumed",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[6];
+ }_object;
+ }
+codecs_toplevel_consts_18_consts_4_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 6,
+ },
+ .ob_item = {
+ &_Py_ID(self),
+ &_Py_ID(input),
+ &_Py_ID(final),
+ &_Py_ID(data),
+ & const_str_result._ascii.ob_base,
+ & const_str_consumed._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(120)
+codecs_toplevel_consts_18_consts_4 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 60,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_1_consts._object.ob_base.ob_base,
+ .co_names = & codecs_toplevel_consts_18_consts_4_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 3,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 11 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 5,
+ .co_firstlineno = 236,
+ .co_nlocalsplus = 6,
+ .co_nlocals = 6,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 280,
+ .co_localsplusnames = & codecs_toplevel_consts_18_consts_4_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_30_consts_4_localspluskinds.ob_base.ob_base,
+ .co_filename = & codecs_toplevel_consts_12_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(encode),
+ .co_qualname = & codecs_toplevel_consts_18_consts_4_qualname._ascii.ob_base,
+ .co_linetable = & codecs_toplevel_consts_18_consts_4_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x7a\x00\x00\x00\x7d\x03\x7c\x00\x6a\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x03\x7c\x00\x6a\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x02\xab\x03\x00\x00\x00\x00\x00\x00\x5c\x02\x00\x00\x7d\x04\x7d\x05\x7c\x03\x7c\x05\x64\x00\x1a\x00\x7c\x00\x5f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x04\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+codecs_toplevel_consts_18_consts_5_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ & const_str_IncrementalEncoder._ascii.ob_base,
+ &_Py_ID(reset),
+ &_Py_ID(buffer),
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[33];
+ }
+codecs_toplevel_consts_18_consts_5_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 32,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "BufferedIncrementalEncoder.reset",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[24];
+ }
+codecs_toplevel_consts_18_consts_5_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 23,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xdc\x08\x1a\xd7\x08\x20\xd1\x08\x20\xa0\x14\xd4\x08\x26\xd8\x16\x18\x88\x04\x8d\x0b",
+};
+static
+ struct _PyCode_DEF(60)
+codecs_toplevel_consts_18_consts_5 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 30,
+ },
+ .co_consts = & importlib__bootstrap_external_toplevel_consts_68_consts_3_consts._object.ob_base.ob_base,
+ .co_names = & codecs_toplevel_consts_18_consts_5_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 4 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 3,
+ .co_firstlineno = 244,
+ .co_nlocalsplus = 1,
+ .co_nlocals = 1,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 281,
+ .co_localsplusnames = & importlib__bootstrap_toplevel_consts_7_consts_2_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_characters[32]),
+ .co_filename = & codecs_toplevel_consts_12_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(reset),
+ .co_qualname = & codecs_toplevel_consts_18_consts_5_qualname._ascii.ob_base,
+ .co_linetable = & codecs_toplevel_consts_18_consts_5_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x64\x01\x7c\x00\x5f\x02\x00\x00\x00\x00\x00\x00\x00\x00\x79\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+codecs_toplevel_consts_18_consts_6_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ &_Py_ID(buffer),
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[36];
+ }
+codecs_toplevel_consts_18_consts_6_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 35,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "BufferedIncrementalEncoder.getstate",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[18];
+ }
+codecs_toplevel_consts_18_consts_6_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 17,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xd8\x0f\x13\x8f\x7b\x89\x7b\xd2\x0f\x1f\x98\x61\xd0\x08\x1f",
+};
+static
+ struct _PyCode_DEF(34)
+codecs_toplevel_consts_18_consts_6 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 17,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_16_consts_2_consts._object.ob_base.ob_base,
+ .co_names = & codecs_toplevel_consts_18_consts_6_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 3 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 2,
+ .co_firstlineno = 248,
+ .co_nlocalsplus = 1,
+ .co_nlocals = 1,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 282,
+ .co_localsplusnames = & importlib__bootstrap_toplevel_consts_7_consts_2_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_characters[32]),
+ .co_filename = & codecs_toplevel_consts_12_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(getstate),
+ .co_qualname = & codecs_toplevel_consts_18_consts_6_qualname._ascii.ob_base,
+ .co_linetable = & codecs_toplevel_consts_18_consts_6_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x78\x01\x73\x02\x01\x00\x64\x01\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[36];
+ }
+codecs_toplevel_consts_18_consts_7_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 35,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "BufferedIncrementalEncoder.setstate",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[14];
+ }
+codecs_toplevel_consts_18_consts_7_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 13,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xd8\x16\x1b\x92\x6b\x98\x72\x88\x04\x8d\x0b",
+};
+static
+ struct _PyCode_DEF(26)
+codecs_toplevel_consts_18_consts_7 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 13,
+ },
+ .co_consts = & importlib__bootstrap_external_toplevel_consts_68_consts_3_consts._object.ob_base.ob_base,
+ .co_names = & codecs_toplevel_consts_18_consts_6_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 4 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 2,
+ .co_firstlineno = 251,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 2,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 283,
+ .co_localsplusnames = & codecs_toplevel_consts_16_consts_6_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_14_consts_2_localspluskinds.ob_base.ob_base,
+ .co_filename = & codecs_toplevel_consts_12_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(setstate),
+ .co_qualname = & codecs_toplevel_consts_18_consts_7_qualname._ascii.ob_base,
+ .co_linetable = & codecs_toplevel_consts_18_consts_7_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x01\x78\x01\x73\x02\x01\x00\x64\x01\x7c\x00\x5f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x79\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[11];
+ }_object;
+ }
+codecs_toplevel_consts_18_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 11,
+ },
+ .ob_item = {
+ & const_str_BufferedIncrementalEncoder._ascii.ob_base,
+ & codecs_toplevel_consts_18_consts_1._ascii.ob_base,
+ & codecs_toplevel_consts_18_consts_2.ob_base.ob_base,
+ & codecs_toplevel_consts_18_consts_3.ob_base.ob_base,
+ & codecs_toplevel_consts_18_consts_4.ob_base.ob_base,
+ & codecs_toplevel_consts_18_consts_5.ob_base.ob_base,
+ & codecs_toplevel_consts_18_consts_6.ob_base.ob_base,
+ & codecs_toplevel_consts_18_consts_7.ob_base.ob_base,
+ Py_None,
+ & codecs_toplevel_consts_14_consts_5._object.ob_base.ob_base,
+ & codecs_toplevel_consts_16_consts_9._object.ob_base.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[10];
+ }_object;
+ }
+codecs_toplevel_consts_18_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 10,
+ },
+ .ob_item = {
+ &_Py_ID(__name__),
+ &_Py_ID(__module__),
+ &_Py_ID(__qualname__),
+ &_Py_ID(__doc__),
+ &_Py_ID(__init__),
+ & const_str__buffer_encode._ascii.ob_base,
+ &_Py_ID(encode),
+ &_Py_ID(reset),
+ &_Py_ID(getstate),
+ &_Py_ID(setstate),
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[38];
+ }
+codecs_toplevel_consts_18_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 37,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x84\x00\xf1\x02\x04\x05\x08\xf3\x0a\x03\x05\x19\xf2\x0a\x03\x05\x22\xf3\x0a\x06\x05\x16\xf2\x10\x02\x05\x19\xf2\x08\x01\x05\x20\xf3\x06\x01\x05\x22",
+};
+static
+ struct _PyCode_DEF(56)
+codecs_toplevel_consts_18 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 28,
+ },
+ .co_consts = & codecs_toplevel_consts_18_consts._object.ob_base.ob_base,
+ .co_names = & codecs_toplevel_consts_18_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 0,
+ .co_argcount = 0,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 2 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 2,
+ .co_firstlineno = 220,
+ .co_nlocalsplus = 0,
+ .co_nlocals = 0,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 284,
+ .co_localsplusnames = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_filename = & codecs_toplevel_consts_12_consts_5_filename._ascii.ob_base,
+ .co_name = & const_str_BufferedIncrementalEncoder._ascii.ob_base,
+ .co_qualname = & const_str_BufferedIncrementalEncoder._ascii.ob_base,
+ .co_linetable = & codecs_toplevel_consts_18_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x65\x00\x5a\x01\x64\x00\x5a\x02\x64\x01\x5a\x03\x64\x09\x64\x02\x84\x01\x5a\x04\x64\x03\x84\x00\x5a\x05\x64\x0a\x64\x04\x84\x01\x5a\x06\x64\x05\x84\x00\x5a\x07\x64\x06\x84\x00\x5a\x08\x64\x07\x84\x00\x5a\x09\x79\x08",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[233];
+ }
+codecs_toplevel_consts_20_consts_1 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 232,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x0a\x20\x20\x20\x20\x41\x6e\x20\x49\x6e\x63\x72\x65\x6d\x65\x6e\x74\x61\x6c\x44\x65\x63\x6f\x64\x65\x72\x20\x64\x65\x63\x6f\x64\x65\x73\x20\x61\x6e\x20\x69\x6e\x70\x75\x74\x20\x69\x6e\x20\x6d\x75\x6c\x74\x69\x70\x6c\x65\x20\x73\x74\x65\x70\x73\x2e\x20\x54\x68\x65\x20\x69\x6e\x70\x75\x74\x20\x63\x61\x6e\x0a\x20\x20\x20\x20\x62\x65\x20\x70\x61\x73\x73\x65\x64\x20\x70\x69\x65\x63\x65\x20\x62\x79\x20\x70\x69\x65\x63\x65\x20\x74\x6f\x20\x74\x68\x65\x20\x64\x65\x63\x6f\x64\x65\x28\x29\x20\x6d\x65\x74\x68\x6f\x64\x2e\x20\x54\x68\x65\x20\x49\x6e\x63\x72\x65\x6d\x65\x6e\x74\x61\x6c\x44\x65\x63\x6f\x64\x65\x72\x0a\x20\x20\x20\x20\x72\x65\x6d\x65\x6d\x62\x65\x72\x73\x20\x74\x68\x65\x20\x73\x74\x61\x74\x65\x20\x6f\x66\x20\x74\x68\x65\x20\x64\x65\x63\x6f\x64\x69\x6e\x67\x20\x70\x72\x6f\x63\x65\x73\x73\x20\x62\x65\x74\x77\x65\x65\x6e\x20\x63\x61\x6c\x6c\x73\x20\x74\x6f\x20\x64\x65\x63\x6f\x64\x65\x28\x29\x2e\x0a\x20\x20\x20\x20",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[244];
+ }
+codecs_toplevel_consts_20_consts_2_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 243,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x43\x72\x65\x61\x74\x65\x20\x61\x6e\x20\x49\x6e\x63\x72\x65\x6d\x65\x6e\x74\x61\x6c\x44\x65\x63\x6f\x64\x65\x72\x20\x69\x6e\x73\x74\x61\x6e\x63\x65\x2e\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x54\x68\x65\x20\x49\x6e\x63\x72\x65\x6d\x65\x6e\x74\x61\x6c\x44\x65\x63\x6f\x64\x65\x72\x20\x6d\x61\x79\x20\x75\x73\x65\x20\x64\x69\x66\x66\x65\x72\x65\x6e\x74\x20\x65\x72\x72\x6f\x72\x20\x68\x61\x6e\x64\x6c\x69\x6e\x67\x20\x73\x63\x68\x65\x6d\x65\x73\x20\x62\x79\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x70\x72\x6f\x76\x69\x64\x69\x6e\x67\x20\x74\x68\x65\x20\x65\x72\x72\x6f\x72\x73\x20\x6b\x65\x79\x77\x6f\x72\x64\x20\x61\x72\x67\x75\x6d\x65\x6e\x74\x2e\x20\x53\x65\x65\x20\x74\x68\x65\x20\x6d\x6f\x64\x75\x6c\x65\x20\x64\x6f\x63\x73\x74\x72\x69\x6e\x67\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x66\x6f\x72\x20\x61\x20\x6c\x69\x73\x74\x20\x6f\x66\x20\x70\x6f\x73\x73\x69\x62\x6c\x65\x20\x76\x61\x6c\x75\x65\x73\x2e\x0a\x20\x20\x20\x20\x20\x20\x20\x20",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+codecs_toplevel_consts_20_consts_2_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & codecs_toplevel_consts_20_consts_2_consts_0._ascii.ob_base,
+ Py_None,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+codecs_toplevel_consts_20_consts_2_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ &_Py_ID(errors),
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[28];
+ }
+codecs_toplevel_consts_20_consts_2_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 27,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "IncrementalDecoder.__init__",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[12];
+ }
+codecs_toplevel_consts_20_consts_2_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 11,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf0\x10\x00\x17\x1d\x88\x04\x8d\x0b",
+};
+static
+ struct _PyCode_DEF(18)
+codecs_toplevel_consts_20_consts_2 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 9,
+ },
+ .co_consts = & codecs_toplevel_consts_20_consts_2_consts._object.ob_base.ob_base,
+ .co_names = & codecs_toplevel_consts_20_consts_2_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 4 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 2,
+ .co_firstlineno = 260,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 2,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 285,
+ .co_localsplusnames = & codecs_toplevel_consts_16_consts_2_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_14_consts_2_localspluskinds.ob_base.ob_base,
+ .co_filename = & codecs_toplevel_consts_12_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__init__),
+ .co_qualname = & codecs_toplevel_consts_20_consts_2_qualname._ascii.ob_base,
+ .co_linetable = & codecs_toplevel_consts_20_consts_2_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x01\x7c\x00\x5f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x79\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[65];
+ }
+codecs_toplevel_consts_20_consts_3_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 64,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x44\x65\x63\x6f\x64\x65\x20\x69\x6e\x70\x75\x74\x20\x61\x6e\x64\x20\x72\x65\x74\x75\x72\x6e\x73\x20\x74\x68\x65\x20\x72\x65\x73\x75\x6c\x74\x69\x6e\x67\x20\x6f\x62\x6a\x65\x63\x74\x2e\x0a\x20\x20\x20\x20\x20\x20\x20\x20",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+codecs_toplevel_consts_20_consts_3_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & codecs_toplevel_consts_20_consts_3_consts_0._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[26];
+ }
+codecs_toplevel_consts_20_consts_3_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 25,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "IncrementalDecoder.decode",
+};
+static
+ struct _PyCode_DEF(14)
+codecs_toplevel_consts_20_consts_3 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 7,
+ },
+ .co_consts = & codecs_toplevel_consts_20_consts_3_consts._object.ob_base.ob_base,
+ .co_names = & codecs_toplevel_consts_14_consts_2_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 3,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 4 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 1,
+ .co_firstlineno = 270,
+ .co_nlocalsplus = 3,
+ .co_nlocals = 3,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 286,
+ .co_localsplusnames = & codecs_toplevel_consts_16_consts_3_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_3_localspluskinds.ob_base.ob_base,
+ .co_filename = & codecs_toplevel_consts_12_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(decode),
+ .co_qualname = & codecs_toplevel_consts_20_consts_3_qualname._ascii.ob_base,
+ .co_linetable = & codecs_toplevel_consts_16_consts_3_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x82\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[58];
+ }
+codecs_toplevel_consts_20_consts_4_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 57,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x52\x65\x73\x65\x74\x20\x74\x68\x65\x20\x64\x65\x63\x6f\x64\x65\x72\x20\x74\x6f\x20\x74\x68\x65\x20\x69\x6e\x69\x74\x69\x61\x6c\x20\x73\x74\x61\x74\x65\x2e\x0a\x20\x20\x20\x20\x20\x20\x20\x20",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+codecs_toplevel_consts_20_consts_4_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & codecs_toplevel_consts_20_consts_4_consts_0._ascii.ob_base,
+ Py_None,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[25];
+ }
+codecs_toplevel_consts_20_consts_4_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 24,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "IncrementalDecoder.reset",
+};
+static
+ struct _PyCode_DEF(4)
+codecs_toplevel_consts_20_consts_4 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 2,
+ },
+ .co_consts = & codecs_toplevel_consts_20_consts_4_consts._object.ob_base.ob_base,
+ .co_names = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 1 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 0,
+ .co_firstlineno = 276,
+ .co_nlocalsplus = 1,
+ .co_nlocals = 1,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 287,
+ .co_localsplusnames = & importlib__bootstrap_toplevel_consts_7_consts_2_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_characters[32]),
+ .co_filename = & codecs_toplevel_consts_12_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(reset),
+ .co_qualname = & codecs_toplevel_consts_20_consts_4_qualname._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_external_toplevel_consts_54_consts_3_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x79\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[522];
+ }
+codecs_toplevel_consts_20_consts_5_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 521,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x52\x65\x74\x75\x72\x6e\x20\x74\x68\x65\x20\x63\x75\x72\x72\x65\x6e\x74\x20\x73\x74\x61\x74\x65\x20\x6f\x66\x20\x74\x68\x65\x20\x64\x65\x63\x6f\x64\x65\x72\x2e\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x54\x68\x69\x73\x20\x6d\x75\x73\x74\x20\x62\x65\x20\x61\x20\x28\x62\x75\x66\x66\x65\x72\x65\x64\x5f\x69\x6e\x70\x75\x74\x2c\x20\x61\x64\x64\x69\x74\x69\x6f\x6e\x61\x6c\x5f\x73\x74\x61\x74\x65\x5f\x69\x6e\x66\x6f\x29\x20\x74\x75\x70\x6c\x65\x2e\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x62\x75\x66\x66\x65\x72\x65\x64\x5f\x69\x6e\x70\x75\x74\x20\x6d\x75\x73\x74\x20\x62\x65\x20\x61\x20\x62\x79\x74\x65\x73\x20\x6f\x62\x6a\x65\x63\x74\x20\x63\x6f\x6e\x74\x61\x69\x6e\x69\x6e\x67\x20\x62\x79\x74\x65\x73\x20\x74\x68\x61\x74\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x77\x65\x72\x65\x20\x70\x61\x73\x73\x65\x64\x20\x74\x6f\x20\x64\x65\x63\x6f\x64\x65\x28\x29\x20\x74\x68\x61\x74\x20\x68\x61\x76\x65\x20\x6e\x6f\x74\x20\x79\x65\x74\x20\x62\x65\x65\x6e\x20\x63\x6f\x6e\x76\x65\x72\x74\x65\x64\x2e\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x61\x64\x64\x69\x74\x69\x6f\x6e\x61\x6c\x5f\x73\x74\x61\x74\x65\x5f\x69\x6e\x66\x6f\x20\x6d\x75\x73\x74\x20\x62\x65\x20\x61\x20\x6e\x6f\x6e\x2d\x6e\x65\x67\x61\x74\x69\x76\x65\x20\x69\x6e\x74\x65\x67\x65\x72\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x70\x72\x65\x73\x65\x6e\x74\x69\x6e\x67\x20\x74\x68\x65\x20\x73\x74\x61\x74\x65\x20\x6f\x66\x20\x74\x68\x65\x20\x64\x65\x63\x6f\x64\x65\x72\x20\x57\x49\x54\x48\x4f\x55\x54\x20\x79\x65\x74\x20\x68\x61\x76\x69\x6e\x67\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x70\x72\x6f\x63\x65\x73\x73\x65\x64\x20\x74\x68\x65\x20\x63\x6f\x6e\x74\x65\x6e\x74\x73\x20\x6f\x66\x20\x62\x75\x66\x66\x65\x72\x65\x64\x5f\x69\x6e\x70\x75\x74\x2e\x20\x20\x49\x6e\x20\x74\x68\x65\x20\x69\x6e\x69\x74\x69\x61\x6c\x20\x73\x74\x61\x74\x65\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x61\x6e\x64\x20\x61\x66\x74\x65\x72\x20\x72\x65\x73\x65\x74\x28\x29\x2c\x20\x67\x65\x74\x73\x74\x61\x74\x65\x28\x29\x20\x6d\x75\x73\x74\x20\x72\x65\x74\x75\x72\x6e\x20\x28\x62\x22\x22\x2c\x20\x30\x29\x2e\x0a\x20\x20\x20\x20\x20\x20\x20\x20",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+codecs_toplevel_consts_20_consts_5_consts_1 = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ (PyObject *)&_Py_SINGLETON(bytes_empty),
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 0],
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+codecs_toplevel_consts_20_consts_5_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & codecs_toplevel_consts_20_consts_5_consts_0._ascii.ob_base,
+ & codecs_toplevel_consts_20_consts_5_consts_1._object.ob_base.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[28];
+ }
+codecs_toplevel_consts_20_consts_5_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 27,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "IncrementalDecoder.getstate",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[8];
+ }
+codecs_toplevel_consts_20_consts_5_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 7,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf0\x18\x00\x10\x18",
+};
+static
+ struct _PyCode_DEF(4)
+codecs_toplevel_consts_20_consts_5 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 2,
+ },
+ .co_consts = & codecs_toplevel_consts_20_consts_5_consts._object.ob_base.ob_base,
+ .co_names = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 1 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 0,
+ .co_firstlineno = 281,
+ .co_nlocalsplus = 1,
+ .co_nlocals = 1,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 288,
+ .co_localsplusnames = & importlib__bootstrap_toplevel_consts_7_consts_2_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_characters[32]),
+ .co_filename = & codecs_toplevel_consts_12_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(getstate),
+ .co_qualname = & codecs_toplevel_consts_20_consts_5_qualname._ascii.ob_base,
+ .co_linetable = & codecs_toplevel_consts_20_consts_5_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x79\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[183];
+ }
+codecs_toplevel_consts_20_consts_6_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 182,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x53\x65\x74\x20\x74\x68\x65\x20\x63\x75\x72\x72\x65\x6e\x74\x20\x73\x74\x61\x74\x65\x20\x6f\x66\x20\x74\x68\x65\x20\x64\x65\x63\x6f\x64\x65\x72\x2e\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x73\x74\x61\x74\x65\x20\x6d\x75\x73\x74\x20\x68\x61\x76\x65\x20\x62\x65\x65\x6e\x20\x72\x65\x74\x75\x72\x6e\x65\x64\x20\x62\x79\x20\x67\x65\x74\x73\x74\x61\x74\x65\x28\x29\x2e\x20\x20\x54\x68\x65\x20\x65\x66\x66\x65\x63\x74\x20\x6f\x66\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x73\x65\x74\x73\x74\x61\x74\x65\x28\x28\x62\x22\x22\x2c\x20\x30\x29\x29\x20\x6d\x75\x73\x74\x20\x62\x65\x20\x65\x71\x75\x69\x76\x61\x6c\x65\x6e\x74\x20\x74\x6f\x20\x72\x65\x73\x65\x74\x28\x29\x2e\x0a\x20\x20\x20\x20\x20\x20\x20\x20",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+codecs_toplevel_consts_20_consts_6_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & codecs_toplevel_consts_20_consts_6_consts_0._ascii.ob_base,
+ Py_None,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[28];
+ }
+codecs_toplevel_consts_20_consts_6_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 27,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "IncrementalDecoder.setstate",
+};
+static
+ struct _PyCode_DEF(4)
+codecs_toplevel_consts_20_consts_6 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 2,
+ },
+ .co_consts = & codecs_toplevel_consts_20_consts_6_consts._object.ob_base.ob_base,
+ .co_names = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 2 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 0,
+ .co_firstlineno = 295,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 2,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 289,
+ .co_localsplusnames = & codecs_toplevel_consts_16_consts_6_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_14_consts_2_localspluskinds.ob_base.ob_base,
+ .co_filename = & codecs_toplevel_consts_12_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(setstate),
+ .co_qualname = & codecs_toplevel_consts_20_consts_6_qualname._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_external_toplevel_consts_54_consts_3_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x79\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[10];
+ }_object;
+ }
+codecs_toplevel_consts_20_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 10,
+ },
+ .ob_item = {
+ & const_str_IncrementalDecoder._ascii.ob_base,
+ & codecs_toplevel_consts_20_consts_1._ascii.ob_base,
+ & codecs_toplevel_consts_20_consts_2.ob_base.ob_base,
+ & codecs_toplevel_consts_20_consts_3.ob_base.ob_base,
+ & codecs_toplevel_consts_20_consts_4.ob_base.ob_base,
+ & codecs_toplevel_consts_20_consts_5.ob_base.ob_base,
+ & codecs_toplevel_consts_20_consts_6.ob_base.ob_base,
+ Py_None,
+ & codecs_toplevel_consts_14_consts_5._object.ob_base.ob_base,
+ & codecs_toplevel_consts_16_consts_9._object.ob_base.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[9];
+ }_object;
+ }
+codecs_toplevel_consts_20_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 9,
+ },
+ .ob_item = {
+ &_Py_ID(__name__),
+ &_Py_ID(__module__),
+ &_Py_ID(__qualname__),
+ &_Py_ID(__doc__),
+ &_Py_ID(__init__),
+ &_Py_ID(decode),
+ &_Py_ID(reset),
+ &_Py_ID(getstate),
+ &_Py_ID(setstate),
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[33];
+ }
+codecs_toplevel_consts_20_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 32,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x84\x00\xf1\x02\x04\x05\x08\xf3\x0a\x08\x05\x1d\xf3\x14\x04\x05\x22\xf2\x0c\x03\x05\x0c\xf2\x0a\x0c\x05\x18\xf3\x1c\x06\x05\x0c",
+};
+static
+ struct _PyCode_DEF(50)
+codecs_toplevel_consts_20 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 25,
+ },
+ .co_consts = & codecs_toplevel_consts_20_consts._object.ob_base.ob_base,
+ .co_names = & codecs_toplevel_consts_20_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 0,
+ .co_argcount = 0,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 2 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 2,
+ .co_firstlineno = 254,
+ .co_nlocalsplus = 0,
+ .co_nlocals = 0,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 290,
+ .co_localsplusnames = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_filename = & codecs_toplevel_consts_12_consts_5_filename._ascii.ob_base,
+ .co_name = & const_str_IncrementalDecoder._ascii.ob_base,
+ .co_qualname = & const_str_IncrementalDecoder._ascii.ob_base,
+ .co_linetable = & codecs_toplevel_consts_20_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x65\x00\x5a\x01\x64\x00\x5a\x02\x64\x01\x5a\x03\x64\x08\x64\x02\x84\x01\x5a\x04\x64\x09\x64\x03\x84\x01\x5a\x05\x64\x04\x84\x00\x5a\x06\x64\x05\x84\x00\x5a\x07\x64\x06\x84\x00\x5a\x08\x79\x07",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[27];
+ }
+const_str_BufferedIncrementalDecoder = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 26,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "BufferedIncrementalDecoder",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[175];
+ }
+codecs_toplevel_consts_22_consts_1 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 174,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x0a\x20\x20\x20\x20\x54\x68\x69\x73\x20\x73\x75\x62\x63\x6c\x61\x73\x73\x20\x6f\x66\x20\x49\x6e\x63\x72\x65\x6d\x65\x6e\x74\x61\x6c\x44\x65\x63\x6f\x64\x65\x72\x20\x63\x61\x6e\x20\x62\x65\x20\x75\x73\x65\x64\x20\x61\x73\x20\x74\x68\x65\x20\x62\x61\x73\x65\x63\x6c\x61\x73\x73\x20\x66\x6f\x72\x20\x61\x6e\x0a\x20\x20\x20\x20\x69\x6e\x63\x72\x65\x6d\x65\x6e\x74\x61\x6c\x20\x64\x65\x63\x6f\x64\x65\x72\x20\x69\x66\x20\x74\x68\x65\x20\x64\x65\x63\x6f\x64\x65\x72\x20\x6d\x75\x73\x74\x20\x62\x65\x20\x61\x62\x6c\x65\x20\x74\x6f\x20\x68\x61\x6e\x64\x6c\x65\x20\x69\x6e\x63\x6f\x6d\x70\x6c\x65\x74\x65\x0a\x20\x20\x20\x20\x62\x79\x74\x65\x20\x73\x65\x71\x75\x65\x6e\x63\x65\x73\x2e\x0a\x20\x20\x20\x20",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+codecs_toplevel_consts_22_consts_2_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ Py_None,
+ (PyObject *)&_Py_SINGLETON(bytes_empty),
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+codecs_toplevel_consts_22_consts_2_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ & const_str_IncrementalDecoder._ascii.ob_base,
+ &_Py_ID(__init__),
+ &_Py_ID(buffer),
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[36];
+ }
+codecs_toplevel_consts_22_consts_2_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 35,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "BufferedIncrementalDecoder.__init__",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[26];
+ }
+codecs_toplevel_consts_22_consts_2_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 25,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xdc\x08\x1a\xd7\x08\x23\xd1\x08\x23\xa0\x44\xa8\x26\xd4\x08\x31\xe0\x16\x19\x88\x04\x8d\x0b",
+};
+static
+ struct _PyCode_DEF(62)
+codecs_toplevel_consts_22_consts_2 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 31,
+ },
+ .co_consts = & codecs_toplevel_consts_22_consts_2_consts._object.ob_base.ob_base,
+ .co_names = & codecs_toplevel_consts_22_consts_2_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 6 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 309,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 2,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 291,
+ .co_localsplusnames = & codecs_toplevel_consts_16_consts_2_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_14_consts_2_localspluskinds.ob_base.ob_base,
+ .co_filename = & codecs_toplevel_consts_12_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__init__),
+ .co_qualname = & codecs_toplevel_consts_22_consts_2_qualname._ascii.ob_base,
+ .co_linetable = & codecs_toplevel_consts_22_consts_2_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x7c\x01\xab\x02\x00\x00\x00\x00\x00\x00\x01\x00\x64\x01\x7c\x00\x5f\x02\x00\x00\x00\x00\x00\x00\x00\x00\x79\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[15];
+ }
+const_str__buffer_decode = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 14,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_buffer_decode",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[42];
+ }
+codecs_toplevel_consts_22_consts_3_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 41,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "BufferedIncrementalDecoder._buffer_decode",
+};
+static
+ struct _PyCode_DEF(14)
+codecs_toplevel_consts_22_consts_3 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 7,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_1_consts._object.ob_base.ob_base,
+ .co_names = & codecs_toplevel_consts_14_consts_2_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 4,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 5 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 1,
+ .co_firstlineno = 314,
+ .co_nlocalsplus = 4,
+ .co_nlocals = 4,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 292,
+ .co_localsplusnames = & codecs_toplevel_consts_18_consts_3_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_7_consts_3_localspluskinds.ob_base.ob_base,
+ .co_filename = & codecs_toplevel_consts_12_consts_5_filename._ascii.ob_base,
+ .co_name = & const_str__buffer_decode._ascii.ob_base,
+ .co_qualname = & codecs_toplevel_consts_22_consts_3_qualname._ascii.ob_base,
+ .co_linetable = & codecs_toplevel_consts_18_consts_3_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x82\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+codecs_toplevel_consts_22_consts_4_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ &_Py_ID(buffer),
+ & const_str__buffer_decode._ascii.ob_base,
+ &_Py_ID(errors),
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[34];
+ }
+codecs_toplevel_consts_22_consts_4_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 33,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "BufferedIncrementalDecoder.decode",
+};
+static
+ struct _PyCode_DEF(120)
+codecs_toplevel_consts_22_consts_4 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 60,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_1_consts._object.ob_base.ob_base,
+ .co_names = & codecs_toplevel_consts_22_consts_4_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 3,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 11 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 5,
+ .co_firstlineno = 319,
+ .co_nlocalsplus = 6,
+ .co_nlocals = 6,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 293,
+ .co_localsplusnames = & codecs_toplevel_consts_18_consts_4_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_30_consts_4_localspluskinds.ob_base.ob_base,
+ .co_filename = & codecs_toplevel_consts_12_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(decode),
+ .co_qualname = & codecs_toplevel_consts_22_consts_4_qualname._ascii.ob_base,
+ .co_linetable = & codecs_toplevel_consts_18_consts_4_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x7a\x00\x00\x00\x7d\x03\x7c\x00\x6a\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x03\x7c\x00\x6a\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x02\xab\x03\x00\x00\x00\x00\x00\x00\x5c\x02\x00\x00\x7d\x04\x7d\x05\x7c\x03\x7c\x05\x64\x00\x1a\x00\x7c\x00\x5f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x04\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+codecs_toplevel_consts_22_consts_5_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ & const_str_IncrementalDecoder._ascii.ob_base,
+ &_Py_ID(reset),
+ &_Py_ID(buffer),
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[33];
+ }
+codecs_toplevel_consts_22_consts_5_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 32,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "BufferedIncrementalDecoder.reset",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[24];
+ }
+codecs_toplevel_consts_22_consts_5_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 23,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xdc\x08\x1a\xd7\x08\x20\xd1\x08\x20\xa0\x14\xd4\x08\x26\xd8\x16\x19\x88\x04\x8d\x0b",
+};
+static
+ struct _PyCode_DEF(60)
+codecs_toplevel_consts_22_consts_5 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 30,
+ },
+ .co_consts = & codecs_toplevel_consts_22_consts_2_consts._object.ob_base.ob_base,
+ .co_names = & codecs_toplevel_consts_22_consts_5_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 4 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 3,
+ .co_firstlineno = 327,
+ .co_nlocalsplus = 1,
+ .co_nlocals = 1,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 294,
+ .co_localsplusnames = & importlib__bootstrap_toplevel_consts_7_consts_2_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_characters[32]),
+ .co_filename = & codecs_toplevel_consts_12_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(reset),
+ .co_qualname = & codecs_toplevel_consts_22_consts_5_qualname._ascii.ob_base,
+ .co_linetable = & codecs_toplevel_consts_22_consts_5_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x64\x01\x7c\x00\x5f\x02\x00\x00\x00\x00\x00\x00\x00\x00\x79\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[36];
+ }
+codecs_toplevel_consts_22_consts_6_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 35,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "BufferedIncrementalDecoder.getstate",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[18];
+ }
+codecs_toplevel_consts_22_consts_6_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 17,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xe0\x10\x14\x97\x0b\x91\x0b\x98\x51\xd0\x0f\x1f\xd0\x08\x1f",
+};
+static
+ struct _PyCode_DEF(30)
+codecs_toplevel_consts_22_consts_6 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 15,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_16_consts_2_consts._object.ob_base.ob_base,
+ .co_names = & codecs_toplevel_consts_18_consts_6_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 3 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 2,
+ .co_firstlineno = 331,
+ .co_nlocalsplus = 1,
+ .co_nlocals = 1,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 295,
+ .co_localsplusnames = & importlib__bootstrap_toplevel_consts_7_consts_2_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_characters[32]),
+ .co_filename = & codecs_toplevel_consts_12_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(getstate),
+ .co_qualname = & codecs_toplevel_consts_22_consts_6_qualname._ascii.ob_base,
+ .co_linetable = & codecs_toplevel_consts_22_consts_6_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x01\x66\x02\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[36];
+ }
+codecs_toplevel_consts_22_consts_7_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 35,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "BufferedIncrementalDecoder.setstate",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[14];
+ }
+codecs_toplevel_consts_22_consts_7_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 13,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xe0\x16\x1b\x98\x41\x91\x68\x88\x04\x8d\x0b",
+};
+static
+ struct _PyCode_DEF(24)
+codecs_toplevel_consts_22_consts_7 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 12,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_16_consts_2_consts._object.ob_base.ob_base,
+ .co_names = & codecs_toplevel_consts_18_consts_6_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 4 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 2,
+ .co_firstlineno = 335,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 2,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 296,
+ .co_localsplusnames = & codecs_toplevel_consts_16_consts_6_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_14_consts_2_localspluskinds.ob_base.ob_base,
+ .co_filename = & codecs_toplevel_consts_12_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(setstate),
+ .co_qualname = & codecs_toplevel_consts_22_consts_7_qualname._ascii.ob_base,
+ .co_linetable = & codecs_toplevel_consts_22_consts_7_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x01\x64\x01\x19\x00\x00\x00\x7c\x00\x5f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x79\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[11];
+ }_object;
+ }
+codecs_toplevel_consts_22_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 11,
+ },
+ .ob_item = {
+ & const_str_BufferedIncrementalDecoder._ascii.ob_base,
+ & codecs_toplevel_consts_22_consts_1._ascii.ob_base,
+ & codecs_toplevel_consts_22_consts_2.ob_base.ob_base,
+ & codecs_toplevel_consts_22_consts_3.ob_base.ob_base,
+ & codecs_toplevel_consts_22_consts_4.ob_base.ob_base,
+ & codecs_toplevel_consts_22_consts_5.ob_base.ob_base,
+ & codecs_toplevel_consts_22_consts_6.ob_base.ob_base,
+ & codecs_toplevel_consts_22_consts_7.ob_base.ob_base,
+ Py_None,
+ & codecs_toplevel_consts_14_consts_5._object.ob_base.ob_base,
+ & codecs_toplevel_consts_16_consts_9._object.ob_base.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[10];
+ }_object;
+ }
+codecs_toplevel_consts_22_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 10,
+ },
+ .ob_item = {
+ &_Py_ID(__name__),
+ &_Py_ID(__module__),
+ &_Py_ID(__qualname__),
+ &_Py_ID(__doc__),
+ &_Py_ID(__init__),
+ & const_str__buffer_decode._ascii.ob_base,
+ &_Py_ID(decode),
+ &_Py_ID(reset),
+ &_Py_ID(getstate),
+ &_Py_ID(setstate),
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[38];
+ }
+codecs_toplevel_consts_22_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 37,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x84\x00\xf1\x02\x04\x05\x08\xf3\x0a\x03\x05\x1a\xf2\x0a\x03\x05\x22\xf3\x0a\x06\x05\x16\xf2\x10\x02\x05\x1a\xf2\x08\x02\x05\x20\xf3\x08\x02\x05\x1f",
+};
+static
+ struct _PyCode_DEF(56)
+codecs_toplevel_consts_22 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 28,
+ },
+ .co_consts = & codecs_toplevel_consts_22_consts._object.ob_base.ob_base,
+ .co_names = & codecs_toplevel_consts_22_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 0,
+ .co_argcount = 0,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 2 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 2,
+ .co_firstlineno = 303,
+ .co_nlocalsplus = 0,
+ .co_nlocals = 0,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 297,
+ .co_localsplusnames = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_filename = & codecs_toplevel_consts_12_consts_5_filename._ascii.ob_base,
+ .co_name = & const_str_BufferedIncrementalDecoder._ascii.ob_base,
+ .co_qualname = & const_str_BufferedIncrementalDecoder._ascii.ob_base,
+ .co_linetable = & codecs_toplevel_consts_22_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x65\x00\x5a\x01\x64\x00\x5a\x02\x64\x01\x5a\x03\x64\x09\x64\x02\x84\x01\x5a\x04\x64\x03\x84\x00\x5a\x05\x64\x0a\x64\x04\x84\x01\x5a\x06\x64\x05\x84\x00\x5a\x07\x64\x06\x84\x00\x5a\x08\x64\x07\x84\x00\x5a\x09\x79\x08",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[888];
+ }
+codecs_toplevel_consts_24_consts_1_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 887,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x20\x43\x72\x65\x61\x74\x65\x73\x20\x61\x20\x53\x74\x72\x65\x61\x6d\x57\x72\x69\x74\x65\x72\x20\x69\x6e\x73\x74\x61\x6e\x63\x65\x2e\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x73\x74\x72\x65\x61\x6d\x20\x6d\x75\x73\x74\x20\x62\x65\x20\x61\x20\x66\x69\x6c\x65\x2d\x6c\x69\x6b\x65\x20\x6f\x62\x6a\x65\x63\x74\x20\x6f\x70\x65\x6e\x20\x66\x6f\x72\x20\x77\x72\x69\x74\x69\x6e\x67\x2e\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x54\x68\x65\x20\x53\x74\x72\x65\x61\x6d\x57\x72\x69\x74\x65\x72\x20\x6d\x61\x79\x20\x75\x73\x65\x20\x64\x69\x66\x66\x65\x72\x65\x6e\x74\x20\x65\x72\x72\x6f\x72\x20\x68\x61\x6e\x64\x6c\x69\x6e\x67\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x73\x63\x68\x65\x6d\x65\x73\x20\x62\x79\x20\x70\x72\x6f\x76\x69\x64\x69\x6e\x67\x20\x74\x68\x65\x20\x65\x72\x72\x6f\x72\x73\x20\x6b\x65\x79\x77\x6f\x72\x64\x20\x61\x72\x67\x75\x6d\x65\x6e\x74\x2e\x20\x54\x68\x65\x73\x65\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x70\x61\x72\x61\x6d\x65\x74\x65\x72\x73\x20\x61\x72\x65\x20\x70\x72\x65\x64\x65\x66\x69\x6e\x65\x64\x3a\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x27\x73\x74\x72\x69\x63\x74\x27\x20\x2d\x20\x72\x61\x69\x73\x65\x20\x61\x20\x56\x61\x6c\x75\x65\x45\x72\x72\x6f\x72\x20\x28\x6f\x72\x20\x61\x20\x73\x75\x62\x63\x6c\x61\x73\x73\x29\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x27\x69\x67\x6e\x6f\x72\x65\x27\x20\x2d\x20\x69\x67\x6e\x6f\x72\x65\x20\x74\x68\x65\x20\x63\x68\x61\x72\x61\x63\x74\x65\x72\x20\x61\x6e\x64\x20\x63\x6f\x6e\x74\x69\x6e\x75\x65\x20\x77\x69\x74\x68\x20\x74\x68\x65\x20\x6e\x65\x78\x74\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x27\x72\x65\x70\x6c\x61\x63\x65\x27\x2d\x20\x72\x65\x70\x6c\x61\x63\x65\x20\x77\x69\x74\x68\x20\x61\x20\x73\x75\x69\x74\x61\x62\x6c\x65\x20\x72\x65\x70\x6c\x61\x63\x65\x6d\x65\x6e\x74\x20\x63\x68\x61\x72\x61\x63\x74\x65\x72\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x27\x78\x6d\x6c\x63\x68\x61\x72\x72\x65\x66\x72\x65\x70\x6c\x61\x63\x65\x27\x20\x2d\x20\x52\x65\x70\x6c\x61\x63\x65\x20\x77\x69\x74\x68\x20\x74\x68\x65\x20\x61\x70\x70\x72\x6f\x70\x72\x69\x61\x74\x65\x20\x58\x4d\x4c\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x63\x68\x61\x72\x61\x63\x74\x65\x72\x20\x72\x65\x66\x65\x72\x65\x6e\x63\x65\x2e\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x27\x62\x61\x63\x6b\x73\x6c\x61\x73\x68\x72\x65\x70\x6c\x61\x63\x65\x27\x20\x20\x2d\x20\x52\x65\x70\x6c\x61\x63\x65\x20\x77\x69\x74\x68\x20\x62\x61\x63\x6b\x73\x6c\x61\x73\x68\x65\x64\x20\x65\x73\x63\x61\x70\x65\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x73\x65\x71\x75\x65\x6e\x63\x65\x73\x2e\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x27\x6e\x61\x6d\x65\x72\x65\x70\x6c\x61\x63\x65\x27\x20\x20\x20\x20\x20\x20\x20\x2d\x20\x52\x65\x70\x6c\x61\x63\x65\x20\x77\x69\x74\x68\x20\x5c\x4e\x7b\x2e\x2e\x2e\x7d\x20\x65\x73\x63\x61\x70\x65\x20\x73\x65\x71\x75\x65\x6e\x63\x65\x73\x2e\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x54\x68\x65\x20\x73\x65\x74\x20\x6f\x66\x20\x61\x6c\x6c\x6f\x77\x65\x64\x20\x70\x61\x72\x61\x6d\x65\x74\x65\x72\x20\x76\x61\x6c\x75\x65\x73\x20\x63\x61\x6e\x20\x62\x65\x20\x65\x78\x74\x65\x6e\x64\x65\x64\x20\x76\x69\x61\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x67\x69\x73\x74\x65\x72\x5f\x65\x72\x72\x6f\x72\x2e\x0a\x20\x20\x20\x20\x20\x20\x20\x20",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+codecs_toplevel_consts_24_consts_1_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & codecs_toplevel_consts_24_consts_1_consts_0._ascii.ob_base,
+ Py_None,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[7];
+ }
+const_str_stream = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 6,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "stream",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+codecs_toplevel_consts_24_consts_1_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & const_str_stream._ascii.ob_base,
+ &_Py_ID(errors),
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[22];
+ }
+codecs_toplevel_consts_24_consts_1_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 21,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "StreamWriter.__init__",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[19];
+ }
+codecs_toplevel_consts_24_consts_1_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 18,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf0\x2c\x00\x17\x1d\x88\x04\x8c\x0b\xd8\x16\x1c\x88\x04\x8d\x0b",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+codecs_toplevel_consts_24_consts_1_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ &_Py_ID(self),
+ & const_str_stream._ascii.ob_base,
+ &_Py_ID(errors),
+ },
+ },
+};
+static
+ struct _PyCode_DEF(32)
+codecs_toplevel_consts_24_consts_1 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 16,
+ },
+ .co_consts = & codecs_toplevel_consts_24_consts_1_consts._object.ob_base.ob_base,
+ .co_names = & codecs_toplevel_consts_24_consts_1_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 3,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 5 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 2,
+ .co_firstlineno = 348,
+ .co_nlocalsplus = 3,
+ .co_nlocals = 3,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 298,
+ .co_localsplusnames = & codecs_toplevel_consts_24_consts_1_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_3_localspluskinds.ob_base.ob_base,
+ .co_filename = & codecs_toplevel_consts_12_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__init__),
+ .co_qualname = & codecs_toplevel_consts_24_consts_1_qualname._ascii.ob_base,
+ .co_linetable = & codecs_toplevel_consts_24_consts_1_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x01\x7c\x00\x5f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x02\x7c\x00\x5f\x01\x00\x00\x00\x00\x00\x00\x00\x00\x79\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[63];
+ }
+codecs_toplevel_consts_24_consts_2_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 62,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x20\x57\x72\x69\x74\x65\x73\x20\x74\x68\x65\x20\x6f\x62\x6a\x65\x63\x74\x27\x73\x20\x63\x6f\x6e\x74\x65\x6e\x74\x73\x20\x65\x6e\x63\x6f\x64\x65\x64\x20\x74\x6f\x20\x73\x65\x6c\x66\x2e\x73\x74\x72\x65\x61\x6d\x2e\x0a\x20\x20\x20\x20\x20\x20\x20\x20",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+codecs_toplevel_consts_24_consts_2_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & codecs_toplevel_consts_24_consts_2_consts_0._ascii.ob_base,
+ Py_None,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[4];
+ }_object;
+ }
+codecs_toplevel_consts_24_consts_2_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_item = {
+ &_Py_ID(encode),
+ &_Py_ID(errors),
+ & const_str_stream._ascii.ob_base,
+ &_Py_ID(write),
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[19];
+ }
+codecs_toplevel_consts_24_consts_2_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 18,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "StreamWriter.write",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[47];
+ }
+codecs_toplevel_consts_24_consts_2_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 46,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf0\x08\x00\x1a\x1e\x9f\x1b\x99\x1b\xa0\x56\xa8\x54\xaf\x5b\xa9\x5b\xd3\x19\x39\x89\x0e\x88\x04\x88\x68\xd8\x08\x0c\x8f\x0b\x89\x0b\xd7\x08\x19\xd1\x08\x19\x98\x24\xd5\x08\x1f",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[4];
+ }_object;
+ }
+codecs_toplevel_consts_24_consts_2_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_item = {
+ &_Py_ID(self),
+ &_Py_ID(object),
+ &_Py_ID(data),
+ & const_str_consumed._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(120)
+codecs_toplevel_consts_24_consts_2 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 60,
+ },
+ .co_consts = & codecs_toplevel_consts_24_consts_2_consts._object.ob_base.ob_base,
+ .co_names = & codecs_toplevel_consts_24_consts_2_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 8 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 373,
+ .co_nlocalsplus = 4,
+ .co_nlocals = 4,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 299,
+ .co_localsplusnames = & codecs_toplevel_consts_24_consts_2_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_7_consts_3_localspluskinds.ob_base.ob_base,
+ .co_filename = & codecs_toplevel_consts_12_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(write),
+ .co_qualname = & codecs_toplevel_consts_24_consts_2_qualname._ascii.ob_base,
+ .co_linetable = & codecs_toplevel_consts_24_consts_2_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x00\x6a\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x7c\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x02\x00\x00\x00\x00\x00\x00\x5c\x02\x00\x00\x7d\x02\x7d\x03\x7c\x00\x6a\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x02\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x79\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[92];
+ }
+codecs_toplevel_consts_24_consts_3_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 91,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x20\x57\x72\x69\x74\x65\x73\x20\x74\x68\x65\x20\x63\x6f\x6e\x63\x61\x74\x65\x6e\x61\x74\x65\x64\x20\x6c\x69\x73\x74\x20\x6f\x66\x20\x73\x74\x72\x69\x6e\x67\x73\x20\x74\x6f\x20\x74\x68\x65\x20\x73\x74\x72\x65\x61\x6d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x75\x73\x69\x6e\x67\x20\x2e\x77\x72\x69\x74\x65\x28\x29\x2e\x0a\x20\x20\x20\x20\x20\x20\x20\x20",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+codecs_toplevel_consts_24_consts_3_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ & codecs_toplevel_consts_24_consts_3_consts_0._ascii.ob_base,
+ &_Py_STR(empty),
+ Py_None,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+codecs_toplevel_consts_24_consts_3_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ &_Py_ID(write),
+ &_Py_ID(join),
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[11];
+ }
+const_str_writelines = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 10,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "writelines",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[24];
+ }
+codecs_toplevel_consts_24_consts_3_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 23,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "StreamWriter.writelines",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[25];
+ }
+codecs_toplevel_consts_24_consts_3_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 24,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf0\x0a\x00\x09\x0d\x8f\x0a\x89\x0a\x90\x32\x97\x37\x91\x37\x98\x34\x93\x3d\xd5\x08\x21",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+codecs_toplevel_consts_24_consts_3_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ &_Py_ID(self),
+ & const_str_list._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(68)
+codecs_toplevel_consts_24_consts_3 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 34,
+ },
+ .co_consts = & codecs_toplevel_consts_24_consts_3_consts._object.ob_base.ob_base,
+ .co_names = & codecs_toplevel_consts_24_consts_3_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 7 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 5,
+ .co_firstlineno = 380,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 2,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 300,
+ .co_localsplusnames = & codecs_toplevel_consts_24_consts_3_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_14_consts_2_localspluskinds.ob_base.ob_base,
+ .co_filename = & codecs_toplevel_consts_12_consts_5_filename._ascii.ob_base,
+ .co_name = & const_str_writelines._ascii.ob_base,
+ .co_qualname = & codecs_toplevel_consts_24_consts_3_qualname._ascii.ob_base,
+ .co_linetable = & codecs_toplevel_consts_24_consts_3_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x00\x6a\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x01\x6a\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\xab\x01\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x79\x02",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[307];
+ }
+codecs_toplevel_consts_24_consts_4_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 306,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x20\x52\x65\x73\x65\x74\x73\x20\x74\x68\x65\x20\x63\x6f\x64\x65\x63\x20\x62\x75\x66\x66\x65\x72\x73\x20\x75\x73\x65\x64\x20\x66\x6f\x72\x20\x6b\x65\x65\x70\x69\x6e\x67\x20\x69\x6e\x74\x65\x72\x6e\x61\x6c\x20\x73\x74\x61\x74\x65\x2e\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x43\x61\x6c\x6c\x69\x6e\x67\x20\x74\x68\x69\x73\x20\x6d\x65\x74\x68\x6f\x64\x20\x73\x68\x6f\x75\x6c\x64\x20\x65\x6e\x73\x75\x72\x65\x20\x74\x68\x61\x74\x20\x74\x68\x65\x20\x64\x61\x74\x61\x20\x6f\x6e\x20\x74\x68\x65\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x6f\x75\x74\x70\x75\x74\x20\x69\x73\x20\x70\x75\x74\x20\x69\x6e\x74\x6f\x20\x61\x20\x63\x6c\x65\x61\x6e\x20\x73\x74\x61\x74\x65\x2c\x20\x74\x68\x61\x74\x20\x61\x6c\x6c\x6f\x77\x73\x20\x61\x70\x70\x65\x6e\x64\x69\x6e\x67\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x6f\x66\x20\x6e\x65\x77\x20\x66\x72\x65\x73\x68\x20\x64\x61\x74\x61\x20\x77\x69\x74\x68\x6f\x75\x74\x20\x68\x61\x76\x69\x6e\x67\x20\x74\x6f\x20\x72\x65\x73\x63\x61\x6e\x20\x74\x68\x65\x20\x77\x68\x6f\x6c\x65\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x73\x74\x72\x65\x61\x6d\x20\x74\x6f\x20\x72\x65\x63\x6f\x76\x65\x72\x20\x73\x74\x61\x74\x65\x2e\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+codecs_toplevel_consts_24_consts_4_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & codecs_toplevel_consts_24_consts_4_consts_0._ascii.ob_base,
+ Py_None,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[19];
+ }
+codecs_toplevel_consts_24_consts_4_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 18,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "StreamWriter.reset",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[8];
+ }
+codecs_toplevel_consts_24_consts_4_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 7,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf0\x14\x00\x09\x0d",
+};
+static
+ struct _PyCode_DEF(4)
+codecs_toplevel_consts_24_consts_4 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 2,
+ },
+ .co_consts = & codecs_toplevel_consts_24_consts_4_consts._object.ob_base.ob_base,
+ .co_names = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 1 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 0,
+ .co_firstlineno = 387,
+ .co_nlocalsplus = 1,
+ .co_nlocals = 1,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 301,
+ .co_localsplusnames = & importlib__bootstrap_toplevel_consts_7_consts_2_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_characters[32]),
+ .co_filename = & codecs_toplevel_consts_12_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(reset),
+ .co_qualname = & codecs_toplevel_consts_24_consts_4_qualname._ascii.ob_base,
+ .co_linetable = & codecs_toplevel_consts_24_consts_4_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x79\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+codecs_toplevel_consts_24_consts_5_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ & const_str_stream._ascii.ob_base,
+ &_Py_ID(seek),
+ &_Py_ID(reset),
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[18];
+ }
+codecs_toplevel_consts_24_consts_5_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 17,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "StreamWriter.seek",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[52];
+ }
+codecs_toplevel_consts_24_consts_5_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 51,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xd8\x08\x0c\x8f\x0b\x89\x0b\xd7\x08\x18\xd1\x08\x18\x98\x16\xa0\x16\xd4\x08\x28\xd8\x0b\x11\x90\x51\x8a\x3b\x98\x36\xa0\x51\x9a\x3b\xd8\x0c\x10\x8f\x4a\x89\x4a\x8d\x4c\xf0\x03\x00\x1c\x27\x88\x3b",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[7];
+ }
+const_str_whence = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 6,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "whence",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+codecs_toplevel_consts_24_consts_5_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ &_Py_ID(self),
+ &_Py_ID(offset),
+ & const_str_whence._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(116)
+codecs_toplevel_consts_24_consts_5 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 58,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_16_consts_2_consts._object.ob_base.ob_base,
+ .co_names = & codecs_toplevel_consts_24_consts_5_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 3,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 7 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 399,
+ .co_nlocalsplus = 3,
+ .co_nlocals = 3,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 302,
+ .co_localsplusnames = & codecs_toplevel_consts_24_consts_5_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_3_localspluskinds.ob_base.ob_base,
+ .co_filename = & codecs_toplevel_consts_12_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(seek),
+ .co_qualname = & codecs_toplevel_consts_24_consts_5_qualname._ascii.ob_base,
+ .co_linetable = & codecs_toplevel_consts_24_consts_5_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x7c\x02\xab\x02\x00\x00\x00\x00\x00\x00\x01\x00\x7c\x02\x64\x01\x6b\x28\x00\x00\x72\x17\x7c\x01\x64\x01\x6b\x28\x00\x00\x72\x11\x7c\x00\x6a\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x01\x00\x79\x00\x79\x00\x79\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[64];
+ }
+codecs_toplevel_consts_24_consts_6_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 63,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x20\x49\x6e\x68\x65\x72\x69\x74\x20\x61\x6c\x6c\x20\x6f\x74\x68\x65\x72\x20\x6d\x65\x74\x68\x6f\x64\x73\x20\x66\x72\x6f\x6d\x20\x74\x68\x65\x20\x75\x6e\x64\x65\x72\x6c\x79\x69\x6e\x67\x20\x73\x74\x72\x65\x61\x6d\x2e\x0a\x20\x20\x20\x20\x20\x20\x20\x20",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+codecs_toplevel_consts_24_consts_6_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & codecs_toplevel_consts_24_consts_6_consts_0._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+codecs_toplevel_consts_24_consts_6_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & const_str_stream._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[25];
+ }
+codecs_toplevel_consts_24_consts_6_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 24,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "StreamWriter.__getattr__",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[22];
+ }
+codecs_toplevel_consts_24_consts_6_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 21,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf1\x0a\x00\x10\x17\x90\x74\x97\x7b\x91\x7b\xa0\x44\xd3\x0f\x29\xd0\x08\x29",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+codecs_toplevel_consts_24_consts_6_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ &_Py_ID(self),
+ &_Py_ID(name),
+ &_Py_ID(getattr),
+ },
+ },
+};
+static
+ struct _PyCode_DEF(40)
+codecs_toplevel_consts_24_consts_6 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 20,
+ },
+ .co_consts = & codecs_toplevel_consts_24_consts_6_consts._object.ob_base.ob_base,
+ .co_names = & codecs_toplevel_consts_24_consts_6_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 3,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 7 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 404,
+ .co_nlocalsplus = 3,
+ .co_nlocals = 3,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 303,
+ .co_localsplusnames = & codecs_toplevel_consts_24_consts_6_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_3_localspluskinds.ob_base.ob_base,
+ .co_filename = & codecs_toplevel_consts_12_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__getattr__),
+ .co_qualname = & codecs_toplevel_consts_24_consts_6_qualname._ascii.ob_base,
+ .co_linetable = & codecs_toplevel_consts_24_consts_6_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x02\x00\x7c\x02\x7c\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\xab\x02\x00\x00\x00\x00\x00\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[23];
+ }
+codecs_toplevel_consts_24_consts_7_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 22,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "StreamWriter.__enter__",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[8];
+ }
+codecs_toplevel_consts_24_consts_7_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 7,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xd8\x0f\x13\x88\x0b",
+};
+static
+ struct _PyCode_DEF(6)
+codecs_toplevel_consts_24_consts_7 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 3,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_1_consts._object.ob_base.ob_base,
+ .co_names = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 2 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 1,
+ .co_firstlineno = 411,
+ .co_nlocalsplus = 1,
+ .co_nlocals = 1,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 304,
+ .co_localsplusnames = & importlib__bootstrap_toplevel_consts_7_consts_2_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_characters[32]),
+ .co_filename = & codecs_toplevel_consts_12_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__enter__),
+ .co_qualname = & codecs_toplevel_consts_24_consts_7_qualname._ascii.ob_base,
+ .co_linetable = & codecs_toplevel_consts_24_consts_7_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+codecs_toplevel_consts_24_consts_8_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & const_str_stream._ascii.ob_base,
+ &_Py_ID(close),
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[22];
+ }
+codecs_toplevel_consts_24_consts_8_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 21,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "StreamWriter.__exit__",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[19];
+ }
+codecs_toplevel_consts_24_consts_8_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 18,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xd8\x08\x0c\x8f\x0b\x89\x0b\xd7\x08\x19\xd1\x08\x19\xd5\x08\x1b",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[3];
+ }
+const_str_tb = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 2,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "tb",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[4];
+ }_object;
+ }
+codecs_toplevel_consts_24_consts_8_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_item = {
+ &_Py_ID(self),
+ &_Py_ID(type),
+ &_Py_ID(value),
+ & const_str_tb._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(56)
+codecs_toplevel_consts_24_consts_8 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 28,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_1_consts._object.ob_base.ob_base,
+ .co_names = & codecs_toplevel_consts_24_consts_8_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 4,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 6 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 2,
+ .co_firstlineno = 414,
+ .co_nlocalsplus = 4,
+ .co_nlocals = 4,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 305,
+ .co_localsplusnames = & codecs_toplevel_consts_24_consts_8_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_7_consts_3_localspluskinds.ob_base.ob_base,
+ .co_filename = & codecs_toplevel_consts_12_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__exit__),
+ .co_qualname = & codecs_toplevel_consts_24_consts_8_qualname._ascii.ob_base,
+ .co_linetable = & codecs_toplevel_consts_24_consts_8_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x01\x00\x79\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[19];
+ }
+codecs_toplevel_consts_24_consts_9_consts_1 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 18,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "can't serialize %s",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+codecs_toplevel_consts_24_consts_9_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ Py_None,
+ & codecs_toplevel_consts_24_consts_9_consts_1._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+codecs_toplevel_consts_24_consts_9_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ & const_str_TypeError._ascii.ob_base,
+ &_Py_ID(__class__),
+ &_Py_ID(__name__),
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[27];
+ }
+codecs_toplevel_consts_24_consts_9_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 26,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "StreamWriter.__reduce_ex__",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[30];
+ }
+codecs_toplevel_consts_24_consts_9_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 29,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xdc\x0e\x17\xd0\x18\x2c\xa8\x74\xaf\x7e\xa9\x7e\xd7\x2f\x46\xd1\x2f\x46\xd1\x18\x46\xd3\x0e\x47\xd0\x08\x47",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+codecs_toplevel_consts_24_consts_9_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ &_Py_ID(self),
+ &_Py_ID(proto),
+ },
+ },
+};
+static
+ struct _PyCode_DEF(70)
+codecs_toplevel_consts_24_consts_9 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 35,
+ },
+ .co_consts = & codecs_toplevel_consts_24_consts_9_consts._object.ob_base.ob_base,
+ .co_names = & codecs_toplevel_consts_24_consts_9_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 6 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 417,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 2,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 306,
+ .co_localsplusnames = & codecs_toplevel_consts_24_consts_9_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_14_consts_2_localspluskinds.ob_base.ob_base,
+ .co_filename = & codecs_toplevel_consts_12_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__reduce_ex__),
+ .co_qualname = & codecs_toplevel_consts_24_consts_9_qualname._ascii.ob_base,
+ .co_linetable = & codecs_toplevel_consts_24_consts_9_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x64\x01\x7c\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7a\x06\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x82\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+codecs_toplevel_consts_24_consts_12 = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 0],
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[13];
+ }_object;
+ }
+codecs_toplevel_consts_24_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 13,
+ },
+ .ob_item = {
+ & const_str_StreamWriter._ascii.ob_base,
+ & codecs_toplevel_consts_24_consts_1.ob_base.ob_base,
+ & codecs_toplevel_consts_24_consts_2.ob_base.ob_base,
+ & codecs_toplevel_consts_24_consts_3.ob_base.ob_base,
+ & codecs_toplevel_consts_24_consts_4.ob_base.ob_base,
+ & codecs_toplevel_consts_24_consts_5.ob_base.ob_base,
+ & codecs_toplevel_consts_24_consts_6.ob_base.ob_base,
+ & codecs_toplevel_consts_24_consts_7.ob_base.ob_base,
+ & codecs_toplevel_consts_24_consts_8.ob_base.ob_base,
+ & codecs_toplevel_consts_24_consts_9.ob_base.ob_base,
+ Py_None,
+ & codecs_toplevel_consts_14_consts_5._object.ob_base.ob_base,
+ & codecs_toplevel_consts_24_consts_12._object.ob_base.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[13];
+ }_object;
+ }
+codecs_toplevel_consts_24_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 13,
+ },
+ .ob_item = {
+ &_Py_ID(__name__),
+ &_Py_ID(__module__),
+ &_Py_ID(__qualname__),
+ &_Py_ID(__init__),
+ &_Py_ID(write),
+ & const_str_writelines._ascii.ob_base,
+ &_Py_ID(reset),
+ &_Py_ID(seek),
+ &_Py_ID(getattr),
+ &_Py_ID(__getattr__),
+ &_Py_ID(__enter__),
+ &_Py_ID(__exit__),
+ &_Py_ID(__reduce_ex__),
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[54];
+ }
+codecs_toplevel_consts_24_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 53,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x84\x00\xf3\x04\x17\x05\x1d\xf2\x32\x05\x05\x20\xf2\x0e\x05\x05\x22\xf2\x0e\x0a\x05\x0d\xf3\x18\x03\x05\x19\xf0\x0c\x00\x1d\x24\xf3\x03\x05\x05\x2a\xf2\x0e\x01\x05\x14\xf2\x06\x01\x05\x1c\xf3\x06\x01\x05\x48\x01",
+};
+static
+ struct _PyCode_DEF(74)
+codecs_toplevel_consts_24 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 37,
+ },
+ .co_consts = & codecs_toplevel_consts_24_consts._object.ob_base.ob_base,
+ .co_names = & codecs_toplevel_consts_24_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 0,
+ .co_argcount = 0,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 2 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 2,
+ .co_firstlineno = 346,
+ .co_nlocalsplus = 0,
+ .co_nlocals = 0,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 307,
+ .co_localsplusnames = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_filename = & codecs_toplevel_consts_12_consts_5_filename._ascii.ob_base,
+ .co_name = & const_str_StreamWriter._ascii.ob_base,
+ .co_qualname = & const_str_StreamWriter._ascii.ob_base,
+ .co_linetable = & codecs_toplevel_consts_24_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x65\x00\x5a\x01\x64\x00\x5a\x02\x64\x0b\x64\x01\x84\x01\x5a\x03\x64\x02\x84\x00\x5a\x04\x64\x03\x84\x00\x5a\x05\x64\x04\x84\x00\x5a\x06\x64\x0c\x64\x05\x84\x01\x5a\x07\x65\x08\x66\x01\x64\x06\x84\x01\x5a\x09\x64\x07\x84\x00\x5a\x0a\x64\x08\x84\x00\x5a\x0b\x64\x09\x84\x00\x5a\x0c\x79\x0a",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[654];
+ }
+codecs_toplevel_consts_26_consts_1_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 653,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x20\x43\x72\x65\x61\x74\x65\x73\x20\x61\x20\x53\x74\x72\x65\x61\x6d\x52\x65\x61\x64\x65\x72\x20\x69\x6e\x73\x74\x61\x6e\x63\x65\x2e\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x73\x74\x72\x65\x61\x6d\x20\x6d\x75\x73\x74\x20\x62\x65\x20\x61\x20\x66\x69\x6c\x65\x2d\x6c\x69\x6b\x65\x20\x6f\x62\x6a\x65\x63\x74\x20\x6f\x70\x65\x6e\x20\x66\x6f\x72\x20\x72\x65\x61\x64\x69\x6e\x67\x2e\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x54\x68\x65\x20\x53\x74\x72\x65\x61\x6d\x52\x65\x61\x64\x65\x72\x20\x6d\x61\x79\x20\x75\x73\x65\x20\x64\x69\x66\x66\x65\x72\x65\x6e\x74\x20\x65\x72\x72\x6f\x72\x20\x68\x61\x6e\x64\x6c\x69\x6e\x67\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x73\x63\x68\x65\x6d\x65\x73\x20\x62\x79\x20\x70\x72\x6f\x76\x69\x64\x69\x6e\x67\x20\x74\x68\x65\x20\x65\x72\x72\x6f\x72\x73\x20\x6b\x65\x79\x77\x6f\x72\x64\x20\x61\x72\x67\x75\x6d\x65\x6e\x74\x2e\x20\x54\x68\x65\x73\x65\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x70\x61\x72\x61\x6d\x65\x74\x65\x72\x73\x20\x61\x72\x65\x20\x70\x72\x65\x64\x65\x66\x69\x6e\x65\x64\x3a\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x27\x73\x74\x72\x69\x63\x74\x27\x20\x2d\x20\x72\x61\x69\x73\x65\x20\x61\x20\x56\x61\x6c\x75\x65\x45\x72\x72\x6f\x72\x20\x28\x6f\x72\x20\x61\x20\x73\x75\x62\x63\x6c\x61\x73\x73\x29\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x27\x69\x67\x6e\x6f\x72\x65\x27\x20\x2d\x20\x69\x67\x6e\x6f\x72\x65\x20\x74\x68\x65\x20\x63\x68\x61\x72\x61\x63\x74\x65\x72\x20\x61\x6e\x64\x20\x63\x6f\x6e\x74\x69\x6e\x75\x65\x20\x77\x69\x74\x68\x20\x74\x68\x65\x20\x6e\x65\x78\x74\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x27\x72\x65\x70\x6c\x61\x63\x65\x27\x2d\x20\x72\x65\x70\x6c\x61\x63\x65\x20\x77\x69\x74\x68\x20\x61\x20\x73\x75\x69\x74\x61\x62\x6c\x65\x20\x72\x65\x70\x6c\x61\x63\x65\x6d\x65\x6e\x74\x20\x63\x68\x61\x72\x61\x63\x74\x65\x72\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x27\x62\x61\x63\x6b\x73\x6c\x61\x73\x68\x72\x65\x70\x6c\x61\x63\x65\x27\x20\x2d\x20\x52\x65\x70\x6c\x61\x63\x65\x20\x77\x69\x74\x68\x20\x62\x61\x63\x6b\x73\x6c\x61\x73\x68\x65\x64\x20\x65\x73\x63\x61\x70\x65\x20\x73\x65\x71\x75\x65\x6e\x63\x65\x73\x3b\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x54\x68\x65\x20\x73\x65\x74\x20\x6f\x66\x20\x61\x6c\x6c\x6f\x77\x65\x64\x20\x70\x61\x72\x61\x6d\x65\x74\x65\x72\x20\x76\x61\x6c\x75\x65\x73\x20\x63\x61\x6e\x20\x62\x65\x20\x65\x78\x74\x65\x6e\x64\x65\x64\x20\x76\x69\x61\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x67\x69\x73\x74\x65\x72\x5f\x65\x72\x72\x6f\x72\x2e\x0a\x20\x20\x20\x20\x20\x20\x20\x20",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+codecs_toplevel_consts_26_consts_1_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ & codecs_toplevel_consts_26_consts_1_consts_0._ascii.ob_base,
+ (PyObject *)&_Py_SINGLETON(bytes_empty),
+ Py_None,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[11];
+ }
+const_str_bytebuffer = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 10,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "bytebuffer",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[15];
+ }
+const_str_charbuffertype = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 14,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "charbuffertype",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[18];
+ }
+const_str__empty_charbuffer = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 17,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_empty_charbuffer",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[11];
+ }
+const_str_charbuffer = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 10,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "charbuffer",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[11];
+ }
+const_str_linebuffer = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 10,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "linebuffer",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[7];
+ }_object;
+ }
+codecs_toplevel_consts_26_consts_1_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 7,
+ },
+ .ob_item = {
+ & const_str_stream._ascii.ob_base,
+ &_Py_ID(errors),
+ & const_str_bytebuffer._ascii.ob_base,
+ & const_str_charbuffertype._ascii.ob_base,
+ & const_str__empty_charbuffer._ascii.ob_base,
+ & const_str_charbuffer._ascii.ob_base,
+ & const_str_linebuffer._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[22];
+ }
+codecs_toplevel_consts_26_consts_1_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 21,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "StreamReader.__init__",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[63];
+ }
+codecs_toplevel_consts_26_consts_1_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 62,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf0\x24\x00\x17\x1d\x88\x04\x8c\x0b\xd8\x16\x1c\x88\x04\x8c\x0b\xd8\x1a\x1d\x88\x04\x8c\x0f\xd8\x21\x25\xd7\x21\x34\xd1\x21\x34\xd3\x21\x36\x88\x04\xd4\x08\x1e\xd8\x1a\x1e\xd7\x1a\x30\xd1\x1a\x30\x88\x04\x8c\x0f\xd8\x1a\x1e\x88\x04\x8d\x0f",
+};
+static
+ struct _PyCode_DEF(136)
+codecs_toplevel_consts_26_consts_1 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 68,
+ },
+ .co_consts = & codecs_toplevel_consts_26_consts_1_consts._object.ob_base.ob_base,
+ .co_names = & codecs_toplevel_consts_26_consts_1_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 3,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 5 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 2,
+ .co_firstlineno = 426,
+ .co_nlocalsplus = 3,
+ .co_nlocals = 3,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 308,
+ .co_localsplusnames = & codecs_toplevel_consts_24_consts_1_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_3_localspluskinds.ob_base.ob_base,
+ .co_filename = & codecs_toplevel_consts_12_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__init__),
+ .co_qualname = & codecs_toplevel_consts_26_consts_1_qualname._ascii.ob_base,
+ .co_linetable = & codecs_toplevel_consts_26_consts_1_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x01\x7c\x00\x5f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x02\x7c\x00\x5f\x01\x00\x00\x00\x00\x00\x00\x00\x00\x64\x01\x7c\x00\x5f\x02\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x6a\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x5f\x04\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x6a\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x5f\x05\x00\x00\x00\x00\x00\x00\x00\x00\x64\x02\x7c\x00\x5f\x06\x00\x00\x00\x00\x00\x00\x00\x00\x79\x02",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[20];
+ }
+codecs_toplevel_consts_26_consts_2_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 19,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "StreamReader.decode",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[9];
+ }
+codecs_toplevel_consts_26_consts_2_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 8,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xdc\x0e\x21\xd0\x08\x21",
+};
+static
+ struct _PyCode_DEF(14)
+codecs_toplevel_consts_26_consts_2 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 7,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_1_consts._object.ob_base.ob_base,
+ .co_names = & codecs_toplevel_consts_14_consts_2_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 3,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 4 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 1,
+ .co_firstlineno = 451,
+ .co_nlocalsplus = 3,
+ .co_nlocals = 3,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 309,
+ .co_localsplusnames = & codecs_toplevel_consts_14_consts_2_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_3_localspluskinds.ob_base.ob_base,
+ .co_filename = & codecs_toplevel_consts_12_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(decode),
+ .co_qualname = & codecs_toplevel_consts_26_consts_2_qualname._ascii.ob_base,
+ .co_linetable = & codecs_toplevel_consts_26_consts_2_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x82\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[1261];
+ }
+codecs_toplevel_consts_26_consts_3_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 1260,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x20\x44\x65\x63\x6f\x64\x65\x73\x20\x64\x61\x74\x61\x20\x66\x72\x6f\x6d\x20\x74\x68\x65\x20\x73\x74\x72\x65\x61\x6d\x20\x73\x65\x6c\x66\x2e\x73\x74\x72\x65\x61\x6d\x20\x61\x6e\x64\x20\x72\x65\x74\x75\x72\x6e\x73\x20\x74\x68\x65\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x73\x75\x6c\x74\x69\x6e\x67\x20\x6f\x62\x6a\x65\x63\x74\x2e\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x63\x68\x61\x72\x73\x20\x69\x6e\x64\x69\x63\x61\x74\x65\x73\x20\x74\x68\x65\x20\x6e\x75\x6d\x62\x65\x72\x20\x6f\x66\x20\x64\x65\x63\x6f\x64\x65\x64\x20\x63\x6f\x64\x65\x20\x70\x6f\x69\x6e\x74\x73\x20\x6f\x72\x20\x62\x79\x74\x65\x73\x20\x74\x6f\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x2e\x20\x72\x65\x61\x64\x28\x29\x20\x77\x69\x6c\x6c\x20\x6e\x65\x76\x65\x72\x20\x72\x65\x74\x75\x72\x6e\x20\x6d\x6f\x72\x65\x20\x64\x61\x74\x61\x20\x74\x68\x61\x6e\x20\x72\x65\x71\x75\x65\x73\x74\x65\x64\x2c\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x62\x75\x74\x20\x69\x74\x20\x6d\x69\x67\x68\x74\x20\x72\x65\x74\x75\x72\x6e\x20\x6c\x65\x73\x73\x2c\x20\x69\x66\x20\x74\x68\x65\x72\x65\x20\x69\x73\x20\x6e\x6f\x74\x20\x65\x6e\x6f\x75\x67\x68\x20\x61\x76\x61\x69\x6c\x61\x62\x6c\x65\x2e\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x73\x69\x7a\x65\x20\x69\x6e\x64\x69\x63\x61\x74\x65\x73\x20\x74\x68\x65\x20\x61\x70\x70\x72\x6f\x78\x69\x6d\x61\x74\x65\x20\x6d\x61\x78\x69\x6d\x75\x6d\x20\x6e\x75\x6d\x62\x65\x72\x20\x6f\x66\x20\x64\x65\x63\x6f\x64\x65\x64\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x62\x79\x74\x65\x73\x20\x6f\x72\x20\x63\x6f\x64\x65\x20\x70\x6f\x69\x6e\x74\x73\x20\x74\x6f\x20\x72\x65\x61\x64\x20\x66\x6f\x72\x20\x64\x65\x63\x6f\x64\x69\x6e\x67\x2e\x20\x54\x68\x65\x20\x64\x65\x63\x6f\x64\x65\x72\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x63\x61\x6e\x20\x6d\x6f\x64\x69\x66\x79\x20\x74\x68\x69\x73\x20\x73\x65\x74\x74\x69\x6e\x67\x20\x61\x73\x20\x61\x70\x70\x72\x6f\x70\x72\x69\x61\x74\x65\x2e\x20\x54\x68\x65\x20\x64\x65\x66\x61\x75\x6c\x74\x20\x76\x61\x6c\x75\x65\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x2d\x31\x20\x69\x6e\x64\x69\x63\x61\x74\x65\x73\x20\x74\x6f\x20\x72\x65\x61\x64\x20\x61\x6e\x64\x20\x64\x65\x63\x6f\x64\x65\x20\x61\x73\x20\x6d\x75\x63\x68\x20\x61\x73\x20\x70\x6f\x73\x73\x69\x62\x6c\x65\x2e\x20\x20\x73\x69\x7a\x65\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x69\x73\x20\x69\x6e\x74\x65\x6e\x64\x65\x64\x20\x74\x6f\x20\x70\x72\x65\x76\x65\x6e\x74\x20\x68\x61\x76\x69\x6e\x67\x20\x74\x6f\x20\x64\x65\x63\x6f\x64\x65\x20\x68\x75\x67\x65\x20\x66\x69\x6c\x65\x73\x20\x69\x6e\x20\x6f\x6e\x65\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x73\x74\x65\x70\x2e\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x49\x66\x20\x66\x69\x72\x73\x74\x6c\x69\x6e\x65\x20\x69\x73\x20\x74\x72\x75\x65\x2c\x20\x61\x6e\x64\x20\x61\x20\x55\x6e\x69\x63\x6f\x64\x65\x44\x65\x63\x6f\x64\x65\x45\x72\x72\x6f\x72\x20\x68\x61\x70\x70\x65\x6e\x73\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x61\x66\x74\x65\x72\x20\x74\x68\x65\x20\x66\x69\x72\x73\x74\x20\x6c\x69\x6e\x65\x20\x74\x65\x72\x6d\x69\x6e\x61\x74\x6f\x72\x20\x69\x6e\x20\x74\x68\x65\x20\x69\x6e\x70\x75\x74\x20\x6f\x6e\x6c\x79\x20\x74\x68\x65\x20\x66\x69\x72\x73\x74\x20\x6c\x69\x6e\x65\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x77\x69\x6c\x6c\x20\x62\x65\x20\x72\x65\x74\x75\x72\x6e\x65\x64\x2c\x20\x74\x68\x65\x20\x72\x65\x73\x74\x20\x6f\x66\x20\x74\x68\x65\x20\x69\x6e\x70\x75\x74\x20\x77\x69\x6c\x6c\x20\x62\x65\x20\x6b\x65\x70\x74\x20\x75\x6e\x74\x69\x6c\x20\x74\x68\x65\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x6e\x65\x78\x74\x20\x63\x61\x6c\x6c\x20\x74\x6f\x20\x72\x65\x61\x64\x28\x29\x2e\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x54\x68\x65\x20\x6d\x65\x74\x68\x6f\x64\x20\x73\x68\x6f\x75\x6c\x64\x20\x75\x73\x65\x20\x61\x20\x67\x72\x65\x65\x64\x79\x20\x72\x65\x61\x64\x20\x73\x74\x72\x61\x74\x65\x67\x79\x2c\x20\x6d\x65\x61\x6e\x69\x6e\x67\x20\x74\x68\x61\x74\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x69\x74\x20\x73\x68\x6f\x75\x6c\x64\x20\x72\x65\x61\x64\x20\x61\x73\x20\x6d\x75\x63\x68\x20\x64\x61\x74\x61\x20\x61\x73\x20\x69\x73\x20\x61\x6c\x6c\x6f\x77\x65\x64\x20\x77\x69\x74\x68\x69\x6e\x20\x74\x68\x65\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x64\x65\x66\x69\x6e\x69\x74\x69\x6f\x6e\x20\x6f\x66\x20\x74\x68\x65\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x20\x61\x6e\x64\x20\x74\x68\x65\x20\x67\x69\x76\x65\x6e\x20\x73\x69\x7a\x65\x2c\x20\x65\x2e\x67\x2e\x20\x20\x69\x66\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x6f\x70\x74\x69\x6f\x6e\x61\x6c\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x20\x65\x6e\x64\x69\x6e\x67\x73\x20\x6f\x72\x20\x73\x74\x61\x74\x65\x20\x6d\x61\x72\x6b\x65\x72\x73\x20\x61\x72\x65\x20\x61\x76\x61\x69\x6c\x61\x62\x6c\x65\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x6f\x6e\x20\x74\x68\x65\x20\x73\x74\x72\x65\x61\x6d\x2c\x20\x74\x68\x65\x73\x65\x20\x73\x68\x6f\x75\x6c\x64\x20\x62\x65\x20\x72\x65\x61\x64\x20\x74\x6f\x6f\x2e\x0a\x20\x20\x20\x20\x20\x20\x20\x20",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+codecs_toplevel_consts_26_consts_3_consts_4 = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ &_Py_ID(keepends),
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[6];
+ }_object;
+ }
+codecs_toplevel_consts_26_consts_3_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 6,
+ },
+ .ob_item = {
+ & codecs_toplevel_consts_26_consts_3_consts_0._ascii.ob_base,
+ Py_None,
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 0],
+ Py_True,
+ & codecs_toplevel_consts_26_consts_3_consts_4._object.ob_base.ob_base,
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 1],
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[11];
+ }
+const_str_splitlines = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 10,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "splitlines",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[13];
+ }_object;
+ }
+codecs_toplevel_consts_26_consts_3_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 13,
+ },
+ .ob_item = {
+ & const_str_linebuffer._ascii.ob_base,
+ & const_str__empty_charbuffer._ascii.ob_base,
+ &_Py_ID(join),
+ & const_str_charbuffer._ascii.ob_base,
+ &_Py_ID(len),
+ & const_str_stream._ascii.ob_base,
+ &_Py_ID(read),
+ & const_str_bytebuffer._ascii.ob_base,
+ &_Py_ID(decode),
+ &_Py_ID(errors),
+ & const_str_UnicodeDecodeError._ascii.ob_base,
+ &_Py_ID(start),
+ & const_str_splitlines._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[18];
+ }
+codecs_toplevel_consts_26_consts_3_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 17,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "StreamReader.read",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[409];
+ }
+codecs_toplevel_consts_26_consts_3_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 408,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf0\x38\x00\x0c\x10\x8f\x3f\x8a\x3f\xd8\x1e\x22\xd7\x1e\x34\xd1\x1e\x34\xd7\x1e\x39\xd1\x1e\x39\xb8\x24\xbf\x2f\xb9\x2f\xd3\x1e\x4a\x88\x44\x8c\x4f\xd8\x1e\x22\x88\x44\x8c\x4f\xe0\x0b\x10\x90\x31\x8a\x39\xf0\x06\x00\x15\x19\x88\x45\xf0\x06\x00\x0f\x13\xe0\x0f\x14\x98\x01\x8a\x7a\xdc\x13\x16\x90\x74\x97\x7f\x91\x7f\xd3\x13\x27\xa8\x35\xd2\x13\x30\xd8\x14\x19\xe0\x0f\x13\x90\x61\x8a\x78\xd8\x1a\x1e\x9f\x2b\x99\x2b\xd7\x1a\x2a\xd1\x1a\x2a\xd3\x1a\x2c\x91\x07\xe0\x1a\x1e\x9f\x2b\x99\x2b\xd7\x1a\x2a\xd1\x1a\x2a\xa8\x34\xd3\x1a\x30\x90\x07\xe0\x13\x17\x97\x3f\x91\x3f\xa0\x57\xd1\x13\x2c\x88\x44\xd9\x13\x17\xd8\x10\x15\xf0\x02\x0a\x0d\x1a\xd8\x29\x2d\xaf\x1b\xa9\x1b\xb0\x54\xb8\x34\xbf\x3b\xb9\x3b\xd3\x29\x47\xd1\x10\x26\x90\x08\x98\x2c\xf0\x16\x00\x1f\x23\xa0\x3c\xa0\x3d\xd0\x1e\x31\x88\x44\x8c\x4f\xe0\x0c\x10\x8f\x4f\x8a\x4f\x98\x78\xd1\x0c\x27\x8d\x4f\xe1\x13\x1a\xd8\x10\x15\xf0\x3f\x00\x0f\x13\xf0\x40\x01\x00\x0c\x11\x90\x31\x8a\x39\xe0\x15\x19\x97\x5f\x91\x5f\x88\x46\xd8\x1e\x22\xd7\x1e\x34\xd1\x1e\x34\x88\x44\x8c\x4f\xf0\x0a\x00\x10\x16\x88\x0d\xf0\x05\x00\x16\x1a\x97\x5f\x91\x5f\xa0\x56\xa0\x65\xd0\x15\x2c\x88\x46\xd8\x1e\x22\x9f\x6f\x99\x6f\xa8\x65\xa8\x66\xd0\x1e\x35\x88\x44\x8c\x4f\xd8\x0f\x15\x88\x0d\xf8\xf4\x31\x00\x14\x26\xf2\x00\x08\x0d\x1a\xd9\x13\x1c\xe0\x18\x1c\x9f\x0b\x99\x0b\xa0\x44\xa8\x1a\xa8\x23\xaf\x29\xa9\x29\xd0\x24\x34\xb0\x64\xb7\x6b\xb1\x6b\xd3\x18\x42\xf1\x03\x00\x15\x2b\x90\x48\x98\x6c\xe0\x1c\x24\xd7\x1c\x2f\xd1\x1c\x2f\xb8\x14\xd0\x1c\x2f\xd3\x1c\x3e\x90\x45\xdc\x17\x1a\x98\x35\x93\x7a\xa0\x31\x92\x7d\xd8\x18\x1d\xe0\x14\x19\xf4\x07\x00\x18\x25\xfb\xf0\x0b\x08\x0d\x1a\xfa",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[26];
+ }
+codecs_toplevel_consts_26_consts_3_exceptiontable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 25,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\xc2\x32\x1f\x44\x3d\x00\xc4\x3d\x09\x46\x20\x03\xc5\x06\x41\x10\x46\x1b\x03\xc6\x1b\x05\x46\x20\x03",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[6];
+ }
+const_str_chars = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 5,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "chars",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[10];
+ }
+const_str_firstline = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 9,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "firstline",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[8];
+ }
+const_str_newdata = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 7,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "newdata",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[9];
+ }
+const_str_newchars = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 8,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "newchars",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[13];
+ }
+const_str_decodedbytes = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 12,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "decodedbytes",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[6];
+ }
+const_str_lines = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 5,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "lines",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[11];
+ }_object;
+ }
+codecs_toplevel_consts_26_consts_3_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 11,
+ },
+ .ob_item = {
+ &_Py_ID(self),
+ &_Py_ID(size),
+ & const_str_chars._ascii.ob_base,
+ & const_str_firstline._ascii.ob_base,
+ & const_str_newdata._ascii.ob_base,
+ &_Py_ID(data),
+ & const_str_newchars._ascii.ob_base,
+ & const_str_decodedbytes._ascii.ob_base,
+ & const_str_exc._ascii.ob_base,
+ & const_str_lines._ascii.ob_base,
+ & const_str_result._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(838)
+codecs_toplevel_consts_26_consts_3 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 419,
+ },
+ .co_consts = & codecs_toplevel_consts_26_consts_3_consts._object.ob_base.ob_base,
+ .co_names = & codecs_toplevel_consts_26_consts_3_names._object.ob_base.ob_base,
+ .co_exceptiontable = & codecs_toplevel_consts_26_consts_3_exceptiontable.ob_base.ob_base,
+ .co_flags = 3,
+ .co_argcount = 4,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 17 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 6,
+ .co_firstlineno = 454,
+ .co_nlocalsplus = 11,
+ .co_nlocals = 11,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 310,
+ .co_localsplusnames = & codecs_toplevel_consts_26_consts_3_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_46_consts_6_localspluskinds.ob_base.ob_base,
+ .co_filename = & codecs_toplevel_consts_12_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(read),
+ .co_qualname = & codecs_toplevel_consts_26_consts_3_qualname._ascii.ob_base,
+ .co_linetable = & codecs_toplevel_consts_26_consts_3_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x72\x31\x7c\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7c\x00\x5f\x03\x00\x00\x00\x00\x00\x00\x00\x00\x64\x01\x7c\x00\x5f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x02\x64\x02\x6b\x02\x00\x00\x72\x02\x7c\x01\x7d\x02\x09\x00\x7c\x02\x64\x02\x6b\x5c\x00\x00\x72\x19\x74\x09\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x6a\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7c\x02\x6b\x5c\x00\x00\x72\x01\x6e\x90\x7c\x01\x64\x02\x6b\x02\x00\x00\x72\x1b\x7c\x00\x6a\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x7d\x04\x6e\x1b\x7c\x00\x6a\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x04\x7c\x00\x6a\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x04\x7a\x00\x00\x00\x7d\x05\x7c\x05\x73\x01\x6e\x43\x09\x00\x7c\x00\x6a\x11\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x05\x7c\x00\x6a\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x02\x00\x00\x00\x00\x00\x00\x5c\x02\x00\x00\x7d\x06\x7d\x07\x7c\x05\x7c\x07\x64\x01\x1a\x00\x7c\x00\x5f\x07\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x78\x01\x6a\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x06\x7a\x0d\x00\x00\x63\x02\x5f\x03\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x04\x73\x01\x6e\x01\x8c\xae\x7c\x02\x64\x02\x6b\x02\x00\x00\x72\x1f\x7c\x00\x6a\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7d\x0a\x7c\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x5f\x03\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x0a\x53\x00\x7c\x00\x6a\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x01\x7c\x02\x1a\x00\x7d\x0a\x7c\x00\x6a\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x02\x64\x01\x1a\x00\x7c\x00\x5f\x03\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x0a\x53\x00\x23\x00\x74\x14\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x72\x5a\x7d\x08\x7c\x03\x72\x4d\x7c\x00\x6a\x11\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x05\x64\x01\x7c\x08\x6a\x16\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1a\x00\x7c\x00\x6a\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x02\x00\x00\x00\x00\x00\x00\x5c\x02\x00\x00\x7d\x06\x7d\x07\x7c\x06\x6a\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x03\xac\x04\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x09\x74\x09\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x09\xab\x01\x00\x00\x00\x00\x00\x00\x64\x05\x6b\x1a\x00\x00\x72\x02\x82\x00\x82\x00\x59\x00\x64\x01\x7d\x08\x7e\x08\x8c\xca\x64\x01\x7d\x08\x7e\x08\x77\x01\x77\x00\x78\x03\x59\x00\x77\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[178];
+ }
+codecs_toplevel_consts_26_consts_5_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 177,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x20\x52\x65\x61\x64\x20\x6f\x6e\x65\x20\x6c\x69\x6e\x65\x20\x66\x72\x6f\x6d\x20\x74\x68\x65\x20\x69\x6e\x70\x75\x74\x20\x73\x74\x72\x65\x61\x6d\x20\x61\x6e\x64\x20\x72\x65\x74\x75\x72\x6e\x20\x74\x68\x65\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x64\x65\x63\x6f\x64\x65\x64\x20\x64\x61\x74\x61\x2e\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x73\x69\x7a\x65\x2c\x20\x69\x66\x20\x67\x69\x76\x65\x6e\x2c\x20\x69\x73\x20\x70\x61\x73\x73\x65\x64\x20\x61\x73\x20\x73\x69\x7a\x65\x20\x61\x72\x67\x75\x6d\x65\x6e\x74\x20\x74\x6f\x20\x74\x68\x65\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x61\x64\x28\x29\x20\x6d\x65\x74\x68\x6f\x64\x2e\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+codecs_toplevel_consts_26_consts_5_consts_8 = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & const_str_firstline._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+codecs_toplevel_consts_26_consts_5_consts_11 = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ &_Py_ID(size),
+ & const_str_chars._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyObject ob_base;
+ uintptr_t lv_tag;
+ digit ob_digit[1];
+ }
+const_int_8000 = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyLong_Type,
+ },
+ .lv_tag = TAG_FROM_SIGN_AND_SIZE(1, 1),
+ .ob_digit = { 8000 },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[15];
+ }_object;
+ }
+codecs_toplevel_consts_26_consts_5_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 15,
+ },
+ .ob_item = {
+ & codecs_toplevel_consts_26_consts_5_consts_0._ascii.ob_base,
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 0],
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 1],
+ Py_None,
+ Py_False,
+ & codecs_toplevel_consts_26_consts_3_consts_4._object.ob_base.ob_base,
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 72],
+ Py_True,
+ & codecs_toplevel_consts_26_consts_5_consts_8._object.ob_base.ob_base,
+ (PyObject *)&_Py_SINGLETON(strings).ascii[13],
+ (PyObject *)&_Py_SINGLETON(bytes_characters[13]),
+ & codecs_toplevel_consts_26_consts_5_consts_11._object.ob_base.ob_base,
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + -1],
+ & const_int_8000.ob_base,
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 2],
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[11];
+ }_object;
+ }
+codecs_toplevel_consts_26_consts_5_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 11,
+ },
+ .ob_item = {
+ & const_str_linebuffer._ascii.ob_base,
+ &_Py_ID(len),
+ & const_str_charbuffer._ascii.ob_base,
+ & const_str_splitlines._ascii.ob_base,
+ & const_str__empty_charbuffer._ascii.ob_base,
+ &_Py_ID(read),
+ &_Py_ID(isinstance),
+ & const_str_str._ascii.ob_base,
+ & const_str_endswith._ascii.ob_base,
+ &_Py_ID(bytes),
+ &_Py_ID(join),
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[22];
+ }
+codecs_toplevel_consts_26_consts_5_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 21,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "StreamReader.readline",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[572];
+ }
+codecs_toplevel_consts_26_consts_5_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 571,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf0\x16\x00\x0c\x10\x8f\x3f\x8a\x3f\xd8\x13\x17\x97\x3f\x91\x3f\xa0\x31\xd1\x13\x25\x88\x44\xd8\x10\x14\x97\x0f\x91\x0f\xa0\x01\xd0\x10\x22\xdc\x0f\x12\x90\x34\x97\x3f\x91\x3f\xd3\x0f\x23\xa0\x71\xd2\x0f\x28\xf0\x06\x00\x23\x27\xa7\x2f\xa1\x2f\xb0\x21\xd1\x22\x34\x90\x04\x94\x0f\xd8\x22\x26\x90\x04\x94\x0f\xd9\x13\x1b\xd8\x17\x1b\x97\x7f\x91\x7f\xb0\x05\x90\x7f\xd3\x17\x36\xb0\x71\xd1\x17\x39\x90\x04\xd8\x13\x17\x88\x4b\xe0\x13\x17\x92\x3a\x98\x32\x88\x08\xd8\x0f\x13\xd7\x0f\x25\xd1\x0f\x25\x88\x04\xe0\x0e\x12\xd8\x13\x17\x97\x39\x91\x39\x98\x58\xb0\x14\x90\x39\xd3\x13\x36\x88\x44\xd9\x0f\x13\xf4\x08\x00\x15\x1f\x98\x74\xa4\x53\xd4\x14\x29\xa8\x64\xaf\x6d\xa9\x6d\xb8\x44\xd4\x2e\x41\xdc\x14\x1e\x98\x74\xa4\x55\xd4\x14\x2b\xb0\x04\xb7\x0d\xb1\x0d\xb8\x65\xd4\x30\x44\xd8\x14\x18\x98\x44\x9f\x49\x99\x49\xa8\x31\xb0\x41\x98\x49\xd3\x1c\x36\xd1\x14\x36\x90\x44\xe0\x0c\x10\x90\x44\x89\x4c\x88\x44\xd8\x14\x18\x97\x4f\x91\x4f\xa8\x54\x90\x4f\xd3\x14\x32\x88\x45\xd9\x0f\x14\xdc\x13\x16\x90\x75\x93\x3a\xa0\x01\x92\x3e\xf0\x06\x00\x1c\x21\xa0\x11\x99\x38\x90\x44\xd8\x18\x1d\x98\x61\x98\x08\xdc\x17\x1a\x98\x35\x93\x7a\xa0\x41\x92\x7e\xe0\x18\x1d\x98\x62\x9b\x09\xa0\x54\xa7\x5f\xa1\x5f\xd1\x18\x34\x9b\x09\xd8\x2a\x2f\x98\x04\x9c\x0f\xd8\x2a\x2e\x98\x04\x9d\x0f\xf0\x06\x00\x2b\x30\xb0\x01\xa9\x28\xb0\x54\xb7\x5f\xb1\x5f\xd1\x2a\x44\x98\x04\x9c\x0f\xd9\x1b\x23\xd8\x1f\x23\x9f\x7f\x99\x7f\xb8\x05\x98\x7f\xd3\x1f\x3e\xb8\x71\xd1\x1f\x41\x98\x04\xd8\x14\x19\xf0\x26\x00\x10\x14\x88\x0b\xf0\x25\x00\x20\x25\xa0\x51\x99\x78\x90\x0c\xd8\x22\x27\xa8\x01\xa1\x28\xd7\x22\x35\xd1\x22\x35\xb8\x75\xd0\x22\x35\xd3\x22\x45\xc0\x61\xd1\x22\x48\x90\x0f\xd8\x13\x1f\xa0\x3f\xd2\x13\x32\xe0\x26\x2a\xd7\x26\x3c\xd1\x26\x3c\xd7\x26\x41\xd1\x26\x41\xc0\x25\xc8\x01\xc8\x02\xc0\x29\xd3\x26\x4c\xd8\x26\x2a\xa7\x6f\xa1\x6f\xf1\x03\x01\x27\x36\x90\x44\x94\x4f\xe1\x17\x1f\xd8\x1f\x2b\x98\x04\xf0\x06\x00\x15\x1a\xf0\x10\x00\x10\x14\x88\x0b\xf0\x13\x00\x20\x2f\x98\x04\xd8\x14\x19\xf0\x10\x00\x10\x14\x88\x0b\xf1\x0d\x00\x14\x18\x98\x34\xd0\x1b\x2b\xd9\x13\x17\xa1\x08\xd8\x1b\x1f\x9f\x3f\x99\x3f\xb0\x45\x98\x3f\xd3\x1b\x3a\xb8\x31\xd1\x1b\x3d\x90\x44\xd8\x10\x15\xf0\x06\x00\x10\x14\x88\x0b\xf0\x05\x00\x10\x18\x98\x24\x8a\x7f\xd8\x10\x18\x98\x41\x91\x0d\x90\x08\xf1\x5d\x01\x00\x0f\x13",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[9];
+ }
+const_str_readsize = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 8,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "readsize",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[13];
+ }
+const_str_line0withend = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 12,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "line0withend",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[16];
+ }
+const_str_line0withoutend = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 15,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "line0withoutend",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[9];
+ }_object;
+ }
+codecs_toplevel_consts_26_consts_5_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 9,
+ },
+ .ob_item = {
+ &_Py_ID(self),
+ &_Py_ID(size),
+ &_Py_ID(keepends),
+ &_Py_ID(line),
+ & const_str_readsize._ascii.ob_base,
+ &_Py_ID(data),
+ & const_str_lines._ascii.ob_base,
+ & const_str_line0withend._ascii.ob_base,
+ & const_str_line0withoutend._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(1062)
+codecs_toplevel_consts_26_consts_5 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 531,
+ },
+ .co_consts = & codecs_toplevel_consts_26_consts_5_consts._object.ob_base.ob_base,
+ .co_names = & codecs_toplevel_consts_26_consts_5_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 3,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 14 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 5,
+ .co_firstlineno = 534,
+ .co_nlocalsplus = 9,
+ .co_nlocals = 9,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 311,
+ .co_localsplusnames = & codecs_toplevel_consts_26_consts_5_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_61_localspluskinds.ob_base.ob_base,
+ .co_filename = & codecs_toplevel_consts_12_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(readline),
+ .co_qualname = & codecs_toplevel_consts_26_consts_5_qualname._ascii.ob_base,
+ .co_linetable = & codecs_toplevel_consts_26_consts_5_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x72\x68\x7c\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x01\x19\x00\x00\x00\x7d\x03\x7c\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x01\x3d\x00\x74\x03\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x64\x02\x6b\x28\x00\x00\x72\x1b\x7c\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x01\x19\x00\x00\x00\x7c\x00\x5f\x02\x00\x00\x00\x00\x00\x00\x00\x00\x64\x03\x7c\x00\x5f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x02\x73\x15\x7c\x03\x6a\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x04\xac\x05\xab\x01\x00\x00\x00\x00\x00\x00\x64\x01\x19\x00\x00\x00\x7d\x03\x7c\x03\x53\x00\x7c\x01\x78\x01\x73\x02\x01\x00\x64\x06\x7d\x04\x7c\x00\x6a\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7d\x03\x09\x00\x7c\x00\x6a\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x04\x64\x07\xac\x08\xab\x02\x00\x00\x00\x00\x00\x00\x7d\x05\x7c\x05\x72\x58\x74\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x05\x74\x0e\x00\x00\x00\x00\x00\x00\x00\x00\xab\x02\x00\x00\x00\x00\x00\x00\x72\x11\x7c\x05\x6a\x11\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x09\xab\x01\x00\x00\x00\x00\x00\x00\x73\x21\x74\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x05\x74\x12\x00\x00\x00\x00\x00\x00\x00\x00\xab\x02\x00\x00\x00\x00\x00\x00\x72\x27\x7c\x05\x6a\x11\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x0a\xab\x01\x00\x00\x00\x00\x00\x00\x72\x16\x7c\x05\x7c\x00\x6a\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x02\x64\x02\xac\x0b\xab\x02\x00\x00\x00\x00\x00\x00\x7a\x0d\x00\x00\x7d\x05\x7c\x03\x7c\x05\x7a\x0d\x00\x00\x7d\x03\x7c\x03\x6a\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x07\xac\x05\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x06\x7c\x06\x72\xd9\x74\x03\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x06\xab\x01\x00\x00\x00\x00\x00\x00\x64\x02\x6b\x44\x00\x00\x72\x6d\x7c\x06\x64\x01\x19\x00\x00\x00\x7d\x03\x7c\x06\x64\x01\x3d\x00\x74\x03\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x06\xab\x01\x00\x00\x00\x00\x00\x00\x64\x02\x6b\x44\x00\x00\x72\x26\x7c\x06\x64\x0c\x78\x02\x78\x02\x19\x00\x00\x00\x7c\x00\x6a\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7a\x0d\x00\x00\x63\x03\x63\x02\x3c\x00\x00\x00\x7c\x06\x7c\x00\x5f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x03\x7c\x00\x5f\x02\x00\x00\x00\x00\x00\x00\x00\x00\x6e\x17\x7c\x06\x64\x01\x19\x00\x00\x00\x7c\x00\x6a\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7a\x00\x00\x00\x7c\x00\x5f\x02\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x02\x73\x15\x7c\x03\x6a\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x04\xac\x05\xab\x01\x00\x00\x00\x00\x00\x00\x64\x01\x19\x00\x00\x00\x7d\x03\x09\x00\x7c\x03\x53\x00\x7c\x06\x64\x01\x19\x00\x00\x00\x7d\x07\x7c\x06\x64\x01\x19\x00\x00\x00\x6a\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x04\xac\x05\xab\x01\x00\x00\x00\x00\x00\x00\x64\x01\x19\x00\x00\x00\x7d\x08\x7c\x07\x7c\x08\x6b\x37\x00\x00\x72\x3c\x7c\x00\x6a\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x15\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x06\x64\x02\x64\x03\x1a\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7c\x00\x6a\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7a\x00\x00\x00\x7c\x00\x5f\x02\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x02\x72\x05\x7c\x07\x7d\x03\x09\x00\x7c\x03\x53\x00\x7c\x08\x7d\x03\x09\x00\x7c\x03\x53\x00\x7c\x05\x72\x02\x7c\x01\x81\x1c\x7c\x03\x72\x17\x7c\x02\x73\x15\x7c\x03\x6a\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x04\xac\x05\xab\x01\x00\x00\x00\x00\x00\x00\x64\x01\x19\x00\x00\x00\x7d\x03\x09\x00\x7c\x03\x53\x00\x7c\x04\x64\x0d\x6b\x02\x00\x00\x72\x05\x7c\x04\x64\x0e\x7a\x12\x00\x00\x7d\x04\x90\x01\x8c\x8b",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[340];
+ }
+codecs_toplevel_consts_26_consts_6_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 339,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x20\x52\x65\x61\x64\x20\x61\x6c\x6c\x20\x6c\x69\x6e\x65\x73\x20\x61\x76\x61\x69\x6c\x61\x62\x6c\x65\x20\x6f\x6e\x20\x74\x68\x65\x20\x69\x6e\x70\x75\x74\x20\x73\x74\x72\x65\x61\x6d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x61\x6e\x64\x20\x72\x65\x74\x75\x72\x6e\x20\x74\x68\x65\x6d\x20\x61\x73\x20\x61\x20\x6c\x69\x73\x74\x2e\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x4c\x69\x6e\x65\x20\x62\x72\x65\x61\x6b\x73\x20\x61\x72\x65\x20\x69\x6d\x70\x6c\x65\x6d\x65\x6e\x74\x65\x64\x20\x75\x73\x69\x6e\x67\x20\x74\x68\x65\x20\x63\x6f\x64\x65\x63\x27\x73\x20\x64\x65\x63\x6f\x64\x65\x72\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x6d\x65\x74\x68\x6f\x64\x20\x61\x6e\x64\x20\x61\x72\x65\x20\x69\x6e\x63\x6c\x75\x64\x65\x64\x20\x69\x6e\x20\x74\x68\x65\x20\x6c\x69\x73\x74\x20\x65\x6e\x74\x72\x69\x65\x73\x2e\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x73\x69\x7a\x65\x68\x69\x6e\x74\x2c\x20\x69\x66\x20\x67\x69\x76\x65\x6e\x2c\x20\x69\x73\x20\x69\x67\x6e\x6f\x72\x65\x64\x20\x73\x69\x6e\x63\x65\x20\x74\x68\x65\x72\x65\x20\x69\x73\x20\x6e\x6f\x20\x65\x66\x66\x69\x63\x69\x65\x6e\x74\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x77\x61\x79\x20\x74\x6f\x20\x66\x69\x6e\x64\x69\x6e\x67\x20\x74\x68\x65\x20\x74\x72\x75\x65\x20\x65\x6e\x64\x2d\x6f\x66\x2d\x6c\x69\x6e\x65\x2e\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+codecs_toplevel_consts_26_consts_6_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & codecs_toplevel_consts_26_consts_6_consts_0._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+codecs_toplevel_consts_26_consts_6_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ &_Py_ID(read),
+ & const_str_splitlines._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[10];
+ }
+const_str_readlines = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 9,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "readlines",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[23];
+ }
+codecs_toplevel_consts_26_consts_6_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 22,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "StreamReader.readlines",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[31];
+ }
+codecs_toplevel_consts_26_consts_6_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 30,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf0\x18\x00\x10\x14\x8f\x79\x89\x79\x8b\x7b\x88\x04\xd8\x0f\x13\x8f\x7f\x89\x7f\x98\x78\xd3\x0f\x28\xd0\x08\x28",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[4];
+ }_object;
+ }
+codecs_toplevel_consts_26_consts_6_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_item = {
+ &_Py_ID(self),
+ &_Py_ID(sizehint),
+ &_Py_ID(keepends),
+ &_Py_ID(data),
+ },
+ },
+};
+static
+ struct _PyCode_DEF(68)
+codecs_toplevel_consts_26_consts_6 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 34,
+ },
+ .co_consts = & codecs_toplevel_consts_26_consts_6_consts._object.ob_base.ob_base,
+ .co_names = & codecs_toplevel_consts_26_consts_6_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 3,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 7 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 3,
+ .co_firstlineno = 609,
+ .co_nlocalsplus = 4,
+ .co_nlocals = 4,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 312,
+ .co_localsplusnames = & codecs_toplevel_consts_26_consts_6_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_7_consts_3_localspluskinds.ob_base.ob_base,
+ .co_filename = & codecs_toplevel_consts_12_consts_5_filename._ascii.ob_base,
+ .co_name = & const_str_readlines._ascii.ob_base,
+ .co_qualname = & codecs_toplevel_consts_26_consts_6_qualname._ascii.ob_base,
+ .co_linetable = & codecs_toplevel_consts_26_consts_6_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x00\x6a\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x7d\x03\x7c\x03\x6a\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x02\xab\x01\x00\x00\x00\x00\x00\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[237];
+ }
+codecs_toplevel_consts_26_consts_7_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 236,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x20\x52\x65\x73\x65\x74\x73\x20\x74\x68\x65\x20\x63\x6f\x64\x65\x63\x20\x62\x75\x66\x66\x65\x72\x73\x20\x75\x73\x65\x64\x20\x66\x6f\x72\x20\x6b\x65\x65\x70\x69\x6e\x67\x20\x69\x6e\x74\x65\x72\x6e\x61\x6c\x20\x73\x74\x61\x74\x65\x2e\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x4e\x6f\x74\x65\x20\x74\x68\x61\x74\x20\x6e\x6f\x20\x73\x74\x72\x65\x61\x6d\x20\x72\x65\x70\x6f\x73\x69\x74\x69\x6f\x6e\x69\x6e\x67\x20\x73\x68\x6f\x75\x6c\x64\x20\x74\x61\x6b\x65\x20\x70\x6c\x61\x63\x65\x2e\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x54\x68\x69\x73\x20\x6d\x65\x74\x68\x6f\x64\x20\x69\x73\x20\x70\x72\x69\x6d\x61\x72\x69\x6c\x79\x20\x69\x6e\x74\x65\x6e\x64\x65\x64\x20\x74\x6f\x20\x62\x65\x20\x61\x62\x6c\x65\x20\x74\x6f\x20\x72\x65\x63\x6f\x76\x65\x72\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x66\x72\x6f\x6d\x20\x64\x65\x63\x6f\x64\x69\x6e\x67\x20\x65\x72\x72\x6f\x72\x73\x2e\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+codecs_toplevel_consts_26_consts_7_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ & codecs_toplevel_consts_26_consts_7_consts_0._ascii.ob_base,
+ (PyObject *)&_Py_SINGLETON(bytes_empty),
+ Py_None,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[4];
+ }_object;
+ }
+codecs_toplevel_consts_26_consts_7_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_item = {
+ & const_str_bytebuffer._ascii.ob_base,
+ & const_str__empty_charbuffer._ascii.ob_base,
+ & const_str_charbuffer._ascii.ob_base,
+ & const_str_linebuffer._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[19];
+ }
+codecs_toplevel_consts_26_consts_7_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 18,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "StreamReader.reset",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[32];
+ }
+codecs_toplevel_consts_26_consts_7_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 31,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf0\x12\x00\x1b\x1e\x88\x04\x8c\x0f\xd8\x1a\x1e\xd7\x1a\x30\xd1\x1a\x30\x88\x04\x8c\x0f\xd8\x1a\x1e\x88\x04\x8d\x0f",
+};
+static
+ struct _PyCode_DEF(66)
+codecs_toplevel_consts_26_consts_7 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 33,
+ },
+ .co_consts = & codecs_toplevel_consts_26_consts_7_consts._object.ob_base.ob_base,
+ .co_names = & codecs_toplevel_consts_26_consts_7_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 3 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 2,
+ .co_firstlineno = 624,
+ .co_nlocalsplus = 1,
+ .co_nlocals = 1,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 313,
+ .co_localsplusnames = & importlib__bootstrap_toplevel_consts_7_consts_2_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_characters[32]),
+ .co_filename = & codecs_toplevel_consts_12_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(reset),
+ .co_qualname = & codecs_toplevel_consts_26_consts_7_qualname._ascii.ob_base,
+ .co_linetable = & codecs_toplevel_consts_26_consts_7_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x64\x01\x7c\x00\x5f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x5f\x02\x00\x00\x00\x00\x00\x00\x00\x00\x64\x02\x7c\x00\x5f\x03\x00\x00\x00\x00\x00\x00\x00\x00\x79\x02",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[113];
+ }
+codecs_toplevel_consts_26_consts_8_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 112,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x20\x53\x65\x74\x20\x74\x68\x65\x20\x69\x6e\x70\x75\x74\x20\x73\x74\x72\x65\x61\x6d\x27\x73\x20\x63\x75\x72\x72\x65\x6e\x74\x20\x70\x6f\x73\x69\x74\x69\x6f\x6e\x2e\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x52\x65\x73\x65\x74\x73\x20\x74\x68\x65\x20\x63\x6f\x64\x65\x63\x20\x62\x75\x66\x66\x65\x72\x73\x20\x75\x73\x65\x64\x20\x66\x6f\x72\x20\x6b\x65\x65\x70\x69\x6e\x67\x20\x73\x74\x61\x74\x65\x2e\x0a\x20\x20\x20\x20\x20\x20\x20\x20",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+codecs_toplevel_consts_26_consts_8_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & codecs_toplevel_consts_26_consts_8_consts_0._ascii.ob_base,
+ Py_None,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[18];
+ }
+codecs_toplevel_consts_26_consts_8_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 17,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "StreamReader.seek",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[34];
+ }
+codecs_toplevel_consts_26_consts_8_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 33,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf0\x0a\x00\x09\x0d\x8f\x0b\x89\x0b\xd7\x08\x18\xd1\x08\x18\x98\x16\xa0\x16\xd4\x08\x28\xd8\x08\x0c\x8f\x0a\x89\x0a\x8d\x0c",
+};
+static
+ struct _PyCode_DEF(92)
+codecs_toplevel_consts_26_consts_8 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 46,
+ },
+ .co_consts = & codecs_toplevel_consts_26_consts_8_consts._object.ob_base.ob_base,
+ .co_names = & codecs_toplevel_consts_24_consts_5_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 3,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 7 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 637,
+ .co_nlocalsplus = 3,
+ .co_nlocals = 3,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 314,
+ .co_localsplusnames = & codecs_toplevel_consts_24_consts_5_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_3_localspluskinds.ob_base.ob_base,
+ .co_filename = & codecs_toplevel_consts_12_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(seek),
+ .co_qualname = & codecs_toplevel_consts_26_consts_8_qualname._ascii.ob_base,
+ .co_linetable = & codecs_toplevel_consts_26_consts_8_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x7c\x02\xab\x02\x00\x00\x00\x00\x00\x00\x01\x00\x7c\x00\x6a\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x01\x00\x79\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[53];
+ }
+codecs_toplevel_consts_26_consts_9_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 52,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = " Return the next decoded line from the input stream.",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+codecs_toplevel_consts_26_consts_9_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & codecs_toplevel_consts_26_consts_9_consts_0._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[14];
+ }
+const_str_StopIteration = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 13,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "StopIteration",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+codecs_toplevel_consts_26_consts_9_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ &_Py_ID(readline),
+ & const_str_StopIteration._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[22];
+ }
+codecs_toplevel_consts_26_consts_9_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 21,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "StreamReader.__next__",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[30];
+ }
+codecs_toplevel_consts_26_consts_9_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 29,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf0\x06\x00\x10\x14\x8f\x7d\x89\x7d\x8b\x7f\x88\x04\xd9\x0b\x0f\xd8\x13\x17\x88\x4b\xdc\x0e\x1b\xd0\x08\x1b",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+codecs_toplevel_consts_26_consts_9_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ &_Py_ID(self),
+ &_Py_ID(line),
+ },
+ },
+};
+static
+ struct _PyCode_DEF(54)
+codecs_toplevel_consts_26_consts_9 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 27,
+ },
+ .co_consts = & codecs_toplevel_consts_26_consts_9_consts._object.ob_base.ob_base,
+ .co_names = & codecs_toplevel_consts_26_consts_9_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 4 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 2,
+ .co_firstlineno = 645,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 2,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 315,
+ .co_localsplusnames = & codecs_toplevel_consts_26_consts_9_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_14_consts_2_localspluskinds.ob_base.ob_base,
+ .co_filename = & codecs_toplevel_consts_12_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__next__),
+ .co_qualname = & codecs_toplevel_consts_26_consts_9_qualname._ascii.ob_base,
+ .co_linetable = & codecs_toplevel_consts_26_consts_9_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x00\x6a\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x7d\x01\x7c\x01\x72\x02\x7c\x01\x53\x00\x74\x02\x00\x00\x00\x00\x00\x00\x00\x00\x82\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[22];
+ }
+codecs_toplevel_consts_26_consts_10_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 21,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "StreamReader.__iter__",
+};
+static
+ struct _PyCode_DEF(6)
+codecs_toplevel_consts_26_consts_10 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 3,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_1_consts._object.ob_base.ob_base,
+ .co_names = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 2 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 1,
+ .co_firstlineno = 653,
+ .co_nlocalsplus = 1,
+ .co_nlocals = 1,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 316,
+ .co_localsplusnames = & importlib__bootstrap_toplevel_consts_7_consts_2_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_characters[32]),
+ .co_filename = & codecs_toplevel_consts_12_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__iter__),
+ .co_qualname = & codecs_toplevel_consts_26_consts_10_qualname._ascii.ob_base,
+ .co_linetable = & codecs_toplevel_consts_24_consts_7_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[25];
+ }
+codecs_toplevel_consts_26_consts_11_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 24,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "StreamReader.__getattr__",
+};
+static
+ struct _PyCode_DEF(40)
+codecs_toplevel_consts_26_consts_11 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 20,
+ },
+ .co_consts = & codecs_toplevel_consts_24_consts_6_consts._object.ob_base.ob_base,
+ .co_names = & codecs_toplevel_consts_24_consts_6_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 3,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 7 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 656,
+ .co_nlocalsplus = 3,
+ .co_nlocals = 3,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 317,
+ .co_localsplusnames = & codecs_toplevel_consts_24_consts_6_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_3_localspluskinds.ob_base.ob_base,
+ .co_filename = & codecs_toplevel_consts_12_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__getattr__),
+ .co_qualname = & codecs_toplevel_consts_26_consts_11_qualname._ascii.ob_base,
+ .co_linetable = & codecs_toplevel_consts_24_consts_6_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x02\x00\x7c\x02\x7c\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\xab\x02\x00\x00\x00\x00\x00\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[23];
+ }
+codecs_toplevel_consts_26_consts_12_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 22,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "StreamReader.__enter__",
+};
+static
+ struct _PyCode_DEF(6)
+codecs_toplevel_consts_26_consts_12 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 3,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_1_consts._object.ob_base.ob_base,
+ .co_names = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 2 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 1,
+ .co_firstlineno = 663,
+ .co_nlocalsplus = 1,
+ .co_nlocals = 1,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 318,
+ .co_localsplusnames = & importlib__bootstrap_toplevel_consts_7_consts_2_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_characters[32]),
+ .co_filename = & codecs_toplevel_consts_12_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__enter__),
+ .co_qualname = & codecs_toplevel_consts_26_consts_12_qualname._ascii.ob_base,
+ .co_linetable = & codecs_toplevel_consts_24_consts_7_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[22];
+ }
+codecs_toplevel_consts_26_consts_13_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 21,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "StreamReader.__exit__",
+};
+static
+ struct _PyCode_DEF(56)
+codecs_toplevel_consts_26_consts_13 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 28,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_1_consts._object.ob_base.ob_base,
+ .co_names = & codecs_toplevel_consts_24_consts_8_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 4,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 6 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 2,
+ .co_firstlineno = 666,
+ .co_nlocalsplus = 4,
+ .co_nlocals = 4,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 319,
+ .co_localsplusnames = & codecs_toplevel_consts_24_consts_8_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_7_consts_3_localspluskinds.ob_base.ob_base,
+ .co_filename = & codecs_toplevel_consts_12_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__exit__),
+ .co_qualname = & codecs_toplevel_consts_26_consts_13_qualname._ascii.ob_base,
+ .co_linetable = & codecs_toplevel_consts_24_consts_8_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x01\x00\x79\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[27];
+ }
+codecs_toplevel_consts_26_consts_14_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 26,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "StreamReader.__reduce_ex__",
+};
+static
+ struct _PyCode_DEF(70)
+codecs_toplevel_consts_26_consts_14 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 35,
+ },
+ .co_consts = & codecs_toplevel_consts_24_consts_9_consts._object.ob_base.ob_base,
+ .co_names = & codecs_toplevel_consts_24_consts_9_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 6 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 669,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 2,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 320,
+ .co_localsplusnames = & codecs_toplevel_consts_24_consts_9_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_14_consts_2_localspluskinds.ob_base.ob_base,
+ .co_filename = & codecs_toplevel_consts_12_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__reduce_ex__),
+ .co_qualname = & codecs_toplevel_consts_26_consts_14_qualname._ascii.ob_base,
+ .co_linetable = & codecs_toplevel_consts_24_consts_9_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x64\x01\x7c\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7a\x06\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x82\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+codecs_toplevel_consts_26_consts_16 = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + -1],
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + -1],
+ Py_False,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[19];
+ }_object;
+ }
+codecs_toplevel_consts_26_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 19,
+ },
+ .ob_item = {
+ & const_str_StreamReader._ascii.ob_base,
+ & codecs_toplevel_consts_26_consts_1.ob_base.ob_base,
+ & codecs_toplevel_consts_26_consts_2.ob_base.ob_base,
+ & codecs_toplevel_consts_26_consts_3.ob_base.ob_base,
+ Py_None,
+ & codecs_toplevel_consts_26_consts_5.ob_base.ob_base,
+ & codecs_toplevel_consts_26_consts_6.ob_base.ob_base,
+ & codecs_toplevel_consts_26_consts_7.ob_base.ob_base,
+ & codecs_toplevel_consts_26_consts_8.ob_base.ob_base,
+ & codecs_toplevel_consts_26_consts_9.ob_base.ob_base,
+ & codecs_toplevel_consts_26_consts_10.ob_base.ob_base,
+ & codecs_toplevel_consts_26_consts_11.ob_base.ob_base,
+ & codecs_toplevel_consts_26_consts_12.ob_base.ob_base,
+ & codecs_toplevel_consts_26_consts_13.ob_base.ob_base,
+ & codecs_toplevel_consts_26_consts_14.ob_base.ob_base,
+ & codecs_toplevel_consts_14_consts_5._object.ob_base.ob_base,
+ & codecs_toplevel_consts_26_consts_16._object.ob_base.ob_base,
+ & importlib__bootstrap_external_toplevel_consts_68_consts_2_consts._object.ob_base.ob_base,
+ & codecs_toplevel_consts_24_consts_12._object.ob_base.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[19];
+ }_object;
+ }
+codecs_toplevel_consts_26_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 19,
+ },
+ .ob_item = {
+ &_Py_ID(__name__),
+ &_Py_ID(__module__),
+ &_Py_ID(__qualname__),
+ & const_str_str._ascii.ob_base,
+ & const_str_charbuffertype._ascii.ob_base,
+ &_Py_ID(__init__),
+ &_Py_ID(decode),
+ &_Py_ID(read),
+ &_Py_ID(readline),
+ & const_str_readlines._ascii.ob_base,
+ &_Py_ID(reset),
+ &_Py_ID(seek),
+ &_Py_ID(__next__),
+ &_Py_ID(__iter__),
+ &_Py_ID(getattr),
+ &_Py_ID(__getattr__),
+ &_Py_ID(__enter__),
+ &_Py_ID(__exit__),
+ &_Py_ID(__reduce_ex__),
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[83];
+ }
+codecs_toplevel_consts_26_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 82,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x84\x00\xe0\x15\x18\x80\x4e\xf3\x04\x17\x05\x1f\xf3\x32\x01\x05\x22\xf3\x06\x4e\x01\x05\x16\xf3\x60\x02\x49\x01\x05\x14\xf3\x56\x02\x0d\x05\x29\xf2\x1e\x0b\x05\x1f\xf3\x1a\x06\x05\x15\xf2\x10\x06\x05\x1c\xf2\x10\x01\x05\x14\xf0\x08\x00\x1d\x24\xf3\x03\x05\x05\x2a\xf2\x0e\x01\x05\x14\xf2\x06\x01\x05\x1c\xf3\x06\x01\x05\x48\x01",
+};
+static
+ struct _PyCode_DEF(110)
+codecs_toplevel_consts_26 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 55,
+ },
+ .co_consts = & codecs_toplevel_consts_26_consts._object.ob_base.ob_base,
+ .co_names = & codecs_toplevel_consts_26_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 0,
+ .co_argcount = 0,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 2 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 2,
+ .co_firstlineno = 422,
+ .co_nlocalsplus = 0,
+ .co_nlocals = 0,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 321,
+ .co_localsplusnames = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_filename = & codecs_toplevel_consts_12_consts_5_filename._ascii.ob_base,
+ .co_name = & const_str_StreamReader._ascii.ob_base,
+ .co_qualname = & const_str_StreamReader._ascii.ob_base,
+ .co_linetable = & codecs_toplevel_consts_26_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x65\x00\x5a\x01\x64\x00\x5a\x02\x65\x03\x5a\x04\x64\x0f\x64\x01\x84\x01\x5a\x05\x64\x0f\x64\x02\x84\x01\x5a\x06\x64\x10\x64\x03\x84\x01\x5a\x07\x64\x11\x64\x05\x84\x01\x5a\x08\x64\x11\x64\x06\x84\x01\x5a\x09\x64\x07\x84\x00\x5a\x0a\x64\x12\x64\x08\x84\x01\x5a\x0b\x64\x09\x84\x00\x5a\x0c\x64\x0a\x84\x00\x5a\x0d\x65\x0e\x66\x01\x64\x0b\x84\x01\x5a\x0f\x64\x0c\x84\x00\x5a\x10\x64\x0d\x84\x00\x5a\x11\x64\x0e\x84\x00\x5a\x12\x79\x04",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[258];
+ }
+codecs_toplevel_consts_28_consts_1 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 257,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x20\x53\x74\x72\x65\x61\x6d\x52\x65\x61\x64\x65\x72\x57\x72\x69\x74\x65\x72\x20\x69\x6e\x73\x74\x61\x6e\x63\x65\x73\x20\x61\x6c\x6c\x6f\x77\x20\x77\x72\x61\x70\x70\x69\x6e\x67\x20\x73\x74\x72\x65\x61\x6d\x73\x20\x77\x68\x69\x63\x68\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x77\x6f\x72\x6b\x20\x69\x6e\x20\x62\x6f\x74\x68\x20\x72\x65\x61\x64\x20\x61\x6e\x64\x20\x77\x72\x69\x74\x65\x20\x6d\x6f\x64\x65\x73\x2e\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x54\x68\x65\x20\x64\x65\x73\x69\x67\x6e\x20\x69\x73\x20\x73\x75\x63\x68\x20\x74\x68\x61\x74\x20\x6f\x6e\x65\x20\x63\x61\x6e\x20\x75\x73\x65\x20\x74\x68\x65\x20\x66\x61\x63\x74\x6f\x72\x79\x20\x66\x75\x6e\x63\x74\x69\x6f\x6e\x73\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x65\x64\x20\x62\x79\x20\x74\x68\x65\x20\x63\x6f\x64\x65\x63\x2e\x6c\x6f\x6f\x6b\x75\x70\x28\x29\x20\x66\x75\x6e\x63\x74\x69\x6f\x6e\x20\x74\x6f\x20\x63\x6f\x6e\x73\x74\x72\x75\x63\x74\x20\x74\x68\x65\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x69\x6e\x73\x74\x61\x6e\x63\x65\x2e\x0a\x0a\x20\x20\x20\x20",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[8];
+ }
+const_str_unknown = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 7,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "unknown",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[339];
+ }
+codecs_toplevel_consts_28_consts_3_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 338,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x20\x43\x72\x65\x61\x74\x65\x73\x20\x61\x20\x53\x74\x72\x65\x61\x6d\x52\x65\x61\x64\x65\x72\x57\x72\x69\x74\x65\x72\x20\x69\x6e\x73\x74\x61\x6e\x63\x65\x2e\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x73\x74\x72\x65\x61\x6d\x20\x6d\x75\x73\x74\x20\x62\x65\x20\x61\x20\x53\x74\x72\x65\x61\x6d\x2d\x6c\x69\x6b\x65\x20\x6f\x62\x6a\x65\x63\x74\x2e\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x52\x65\x61\x64\x65\x72\x2c\x20\x57\x72\x69\x74\x65\x72\x20\x6d\x75\x73\x74\x20\x62\x65\x20\x66\x61\x63\x74\x6f\x72\x79\x20\x66\x75\x6e\x63\x74\x69\x6f\x6e\x73\x20\x6f\x72\x20\x63\x6c\x61\x73\x73\x65\x73\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x70\x72\x6f\x76\x69\x64\x69\x6e\x67\x20\x74\x68\x65\x20\x53\x74\x72\x65\x61\x6d\x52\x65\x61\x64\x65\x72\x2c\x20\x53\x74\x72\x65\x61\x6d\x57\x72\x69\x74\x65\x72\x20\x69\x6e\x74\x65\x72\x66\x61\x63\x65\x20\x72\x65\x73\x70\x2e\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x45\x72\x72\x6f\x72\x20\x68\x61\x6e\x64\x6c\x69\x6e\x67\x20\x69\x73\x20\x64\x6f\x6e\x65\x20\x69\x6e\x20\x74\x68\x65\x20\x73\x61\x6d\x65\x20\x77\x61\x79\x20\x61\x73\x20\x64\x65\x66\x69\x6e\x65\x64\x20\x66\x6f\x72\x20\x74\x68\x65\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x53\x74\x72\x65\x61\x6d\x57\x72\x69\x74\x65\x72\x2f\x52\x65\x61\x64\x65\x72\x73\x2e\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+codecs_toplevel_consts_28_consts_3_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & codecs_toplevel_consts_28_consts_3_consts_0._ascii.ob_base,
+ Py_None,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[7];
+ }
+const_str_reader = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 6,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "reader",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[7];
+ }
+const_str_writer = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 6,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "writer",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[4];
+ }_object;
+ }
+codecs_toplevel_consts_28_consts_3_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_item = {
+ & const_str_stream._ascii.ob_base,
+ & const_str_reader._ascii.ob_base,
+ & const_str_writer._ascii.ob_base,
+ &_Py_ID(errors),
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[28];
+ }
+codecs_toplevel_consts_28_consts_3_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 27,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "StreamReaderWriter.__init__",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[47];
+ }
+codecs_toplevel_consts_28_consts_3_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 46,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf0\x1a\x00\x17\x1d\x88\x04\x8c\x0b\xd9\x16\x1c\x98\x56\xa0\x56\xd3\x16\x2c\x88\x04\x8c\x0b\xd9\x16\x1c\x98\x56\xa0\x56\xd3\x16\x2c\x88\x04\x8c\x0b\xd8\x16\x1c\x88\x04\x8d\x0b",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[7];
+ }
+const_str_Reader = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 6,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Reader",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[7];
+ }
+const_str_Writer = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 6,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Writer",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[5];
+ }_object;
+ }
+codecs_toplevel_consts_28_consts_3_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 5,
+ },
+ .ob_item = {
+ &_Py_ID(self),
+ & const_str_stream._ascii.ob_base,
+ & const_str_Reader._ascii.ob_base,
+ & const_str_Writer._ascii.ob_base,
+ &_Py_ID(errors),
+ },
+ },
+};
+static
+ struct _PyCode_DEF(88)
+codecs_toplevel_consts_28_consts_3 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 44,
+ },
+ .co_consts = & codecs_toplevel_consts_28_consts_3_consts._object.ob_base.ob_base,
+ .co_names = & codecs_toplevel_consts_28_consts_3_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 5,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 9 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 687,
+ .co_nlocalsplus = 5,
+ .co_nlocals = 5,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 322,
+ .co_localsplusnames = & codecs_toplevel_consts_28_consts_3_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_7_consts_5_localspluskinds.ob_base.ob_base,
+ .co_filename = & codecs_toplevel_consts_12_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__init__),
+ .co_qualname = & codecs_toplevel_consts_28_consts_3_qualname._ascii.ob_base,
+ .co_linetable = & codecs_toplevel_consts_28_consts_3_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x01\x7c\x00\x5f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x7c\x02\x7c\x01\x7c\x04\xab\x02\x00\x00\x00\x00\x00\x00\x7c\x00\x5f\x01\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x7c\x03\x7c\x01\x7c\x04\xab\x02\x00\x00\x00\x00\x00\x00\x7c\x00\x5f\x02\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x04\x7c\x00\x5f\x03\x00\x00\x00\x00\x00\x00\x00\x00\x79\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+codecs_toplevel_consts_28_consts_4_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & const_str_reader._ascii.ob_base,
+ &_Py_ID(read),
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[24];
+ }
+codecs_toplevel_consts_28_consts_4_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 23,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "StreamReaderWriter.read",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[24];
+ }
+codecs_toplevel_consts_28_consts_4_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 23,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xe0\x0f\x13\x8f\x7b\x89\x7b\xd7\x0f\x1f\xd1\x0f\x1f\xa0\x04\xd3\x0f\x25\xd0\x08\x25",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+codecs_toplevel_consts_28_consts_4_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ &_Py_ID(self),
+ &_Py_ID(size),
+ },
+ },
+};
+static
+ struct _PyCode_DEF(56)
+codecs_toplevel_consts_28_consts_4 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 28,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_1_consts._object.ob_base.ob_base,
+ .co_names = & codecs_toplevel_consts_28_consts_4_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 5 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 3,
+ .co_firstlineno = 705,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 2,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 323,
+ .co_localsplusnames = & codecs_toplevel_consts_28_consts_4_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_14_consts_2_localspluskinds.ob_base.ob_base,
+ .co_filename = & codecs_toplevel_consts_12_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(read),
+ .co_qualname = & codecs_toplevel_consts_28_consts_4_qualname._ascii.ob_base,
+ .co_linetable = & codecs_toplevel_consts_28_consts_4_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\xab\x01\x00\x00\x00\x00\x00\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+codecs_toplevel_consts_28_consts_6_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & const_str_reader._ascii.ob_base,
+ &_Py_ID(readline),
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[28];
+ }
+codecs_toplevel_consts_28_consts_6_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 27,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "StreamReaderWriter.readline",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[24];
+ }
+codecs_toplevel_consts_28_consts_6_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 23,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xe0\x0f\x13\x8f\x7b\x89\x7b\xd7\x0f\x23\xd1\x0f\x23\xa0\x44\xd3\x0f\x29\xd0\x08\x29",
+};
+static
+ struct _PyCode_DEF(56)
+codecs_toplevel_consts_28_consts_6 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 28,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_1_consts._object.ob_base.ob_base,
+ .co_names = & codecs_toplevel_consts_28_consts_6_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 5 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 3,
+ .co_firstlineno = 709,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 2,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 324,
+ .co_localsplusnames = & codecs_toplevel_consts_28_consts_4_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_14_consts_2_localspluskinds.ob_base.ob_base,
+ .co_filename = & codecs_toplevel_consts_12_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(readline),
+ .co_qualname = & codecs_toplevel_consts_28_consts_6_qualname._ascii.ob_base,
+ .co_linetable = & codecs_toplevel_consts_28_consts_6_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\xab\x01\x00\x00\x00\x00\x00\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+codecs_toplevel_consts_28_consts_7_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & const_str_reader._ascii.ob_base,
+ & const_str_readlines._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[29];
+ }
+codecs_toplevel_consts_28_consts_7_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 28,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "StreamReaderWriter.readlines",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[24];
+ }
+codecs_toplevel_consts_28_consts_7_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 23,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xe0\x0f\x13\x8f\x7b\x89\x7b\xd7\x0f\x24\xd1\x0f\x24\xa0\x58\xd3\x0f\x2e\xd0\x08\x2e",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+codecs_toplevel_consts_28_consts_7_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ &_Py_ID(self),
+ &_Py_ID(sizehint),
+ },
+ },
+};
+static
+ struct _PyCode_DEF(56)
+codecs_toplevel_consts_28_consts_7 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 28,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_1_consts._object.ob_base.ob_base,
+ .co_names = & codecs_toplevel_consts_28_consts_7_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 5 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 3,
+ .co_firstlineno = 713,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 2,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 325,
+ .co_localsplusnames = & codecs_toplevel_consts_28_consts_7_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_14_consts_2_localspluskinds.ob_base.ob_base,
+ .co_filename = & codecs_toplevel_consts_12_consts_5_filename._ascii.ob_base,
+ .co_name = & const_str_readlines._ascii.ob_base,
+ .co_qualname = & codecs_toplevel_consts_28_consts_7_qualname._ascii.ob_base,
+ .co_linetable = & codecs_toplevel_consts_28_consts_7_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\xab\x01\x00\x00\x00\x00\x00\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+codecs_toplevel_consts_28_consts_8_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ &_Py_ID(next),
+ & const_str_reader._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[28];
+ }
+codecs_toplevel_consts_28_consts_8_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 27,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "StreamReaderWriter.__next__",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[20];
+ }
+codecs_toplevel_consts_28_consts_8_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 19,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf4\x06\x00\x10\x14\x90\x44\x97\x4b\x91\x4b\xd3\x0f\x20\xd0\x08\x20",
+};
+static
+ struct _PyCode_DEF(44)
+codecs_toplevel_consts_28_consts_8 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 22,
+ },
+ .co_consts = & codecs_toplevel_consts_26_consts_9_consts._object.ob_base.ob_base,
+ .co_names = & codecs_toplevel_consts_28_consts_8_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 4 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 3,
+ .co_firstlineno = 717,
+ .co_nlocalsplus = 1,
+ .co_nlocals = 1,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 326,
+ .co_localsplusnames = & importlib__bootstrap_toplevel_consts_7_consts_2_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_characters[32]),
+ .co_filename = & codecs_toplevel_consts_12_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__next__),
+ .co_qualname = & codecs_toplevel_consts_28_consts_8_qualname._ascii.ob_base,
+ .co_linetable = & codecs_toplevel_consts_28_consts_8_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[28];
+ }
+codecs_toplevel_consts_28_consts_9_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 27,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "StreamReaderWriter.__iter__",
+};
+static
+ struct _PyCode_DEF(6)
+codecs_toplevel_consts_28_consts_9 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 3,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_1_consts._object.ob_base.ob_base,
+ .co_names = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 2 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 1,
+ .co_firstlineno = 722,
+ .co_nlocalsplus = 1,
+ .co_nlocals = 1,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 327,
+ .co_localsplusnames = & importlib__bootstrap_toplevel_consts_7_consts_2_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_characters[32]),
+ .co_filename = & codecs_toplevel_consts_12_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__iter__),
+ .co_qualname = & codecs_toplevel_consts_28_consts_9_qualname._ascii.ob_base,
+ .co_linetable = & codecs_toplevel_consts_24_consts_7_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+codecs_toplevel_consts_28_consts_10_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & const_str_writer._ascii.ob_base,
+ &_Py_ID(write),
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[25];
+ }
+codecs_toplevel_consts_28_consts_10_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 24,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "StreamReaderWriter.write",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[24];
+ }
+codecs_toplevel_consts_28_consts_10_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 23,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xe0\x0f\x13\x8f\x7b\x89\x7b\xd7\x0f\x20\xd1\x0f\x20\xa0\x14\xd3\x0f\x26\xd0\x08\x26",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+codecs_toplevel_consts_28_consts_10_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ &_Py_ID(self),
+ &_Py_ID(data),
+ },
+ },
+};
+static
+ struct _PyCode_DEF(56)
+codecs_toplevel_consts_28_consts_10 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 28,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_1_consts._object.ob_base.ob_base,
+ .co_names = & codecs_toplevel_consts_28_consts_10_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 5 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 3,
+ .co_firstlineno = 725,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 2,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 328,
+ .co_localsplusnames = & codecs_toplevel_consts_28_consts_10_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_14_consts_2_localspluskinds.ob_base.ob_base,
+ .co_filename = & codecs_toplevel_consts_12_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(write),
+ .co_qualname = & codecs_toplevel_consts_28_consts_10_qualname._ascii.ob_base,
+ .co_linetable = & codecs_toplevel_consts_28_consts_10_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\xab\x01\x00\x00\x00\x00\x00\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+codecs_toplevel_consts_28_consts_11_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & const_str_writer._ascii.ob_base,
+ & const_str_writelines._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[30];
+ }
+codecs_toplevel_consts_28_consts_11_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 29,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "StreamReaderWriter.writelines",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[24];
+ }
+codecs_toplevel_consts_28_consts_11_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 23,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xe0\x0f\x13\x8f\x7b\x89\x7b\xd7\x0f\x25\xd1\x0f\x25\xa0\x64\xd3\x0f\x2b\xd0\x08\x2b",
+};
+static
+ struct _PyCode_DEF(56)
+codecs_toplevel_consts_28_consts_11 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 28,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_1_consts._object.ob_base.ob_base,
+ .co_names = & codecs_toplevel_consts_28_consts_11_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 5 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 3,
+ .co_firstlineno = 729,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 2,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 329,
+ .co_localsplusnames = & codecs_toplevel_consts_24_consts_3_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_14_consts_2_localspluskinds.ob_base.ob_base,
+ .co_filename = & codecs_toplevel_consts_12_consts_5_filename._ascii.ob_base,
+ .co_name = & const_str_writelines._ascii.ob_base,
+ .co_qualname = & codecs_toplevel_consts_28_consts_11_qualname._ascii.ob_base,
+ .co_linetable = & codecs_toplevel_consts_28_consts_11_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\xab\x01\x00\x00\x00\x00\x00\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+codecs_toplevel_consts_28_consts_12_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ & const_str_reader._ascii.ob_base,
+ &_Py_ID(reset),
+ & const_str_writer._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[25];
+ }
+codecs_toplevel_consts_28_consts_12_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 24,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "StreamReaderWriter.reset",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[35];
+ }
+codecs_toplevel_consts_28_consts_12_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 34,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xe0\x08\x0c\x8f\x0b\x89\x0b\xd7\x08\x19\xd1\x08\x19\xd4\x08\x1b\xd8\x08\x0c\x8f\x0b\x89\x0b\xd7\x08\x19\xd1\x08\x19\xd5\x08\x1b",
+};
+static
+ struct _PyCode_DEF(108)
+codecs_toplevel_consts_28_consts_12 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 54,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_1_consts._object.ob_base.ob_base,
+ .co_names = & codecs_toplevel_consts_28_consts_12_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 3 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 2,
+ .co_firstlineno = 733,
+ .co_nlocalsplus = 1,
+ .co_nlocals = 1,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 330,
+ .co_localsplusnames = & importlib__bootstrap_toplevel_consts_7_consts_2_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_characters[32]),
+ .co_filename = & codecs_toplevel_consts_12_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(reset),
+ .co_qualname = & codecs_toplevel_consts_28_consts_12_qualname._ascii.ob_base,
+ .co_linetable = & codecs_toplevel_consts_28_consts_12_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x01\x00\x7c\x00\x6a\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x01\x00\x79\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[5];
+ }_object;
+ }
+codecs_toplevel_consts_28_consts_13_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 5,
+ },
+ .ob_item = {
+ & const_str_stream._ascii.ob_base,
+ &_Py_ID(seek),
+ & const_str_reader._ascii.ob_base,
+ &_Py_ID(reset),
+ & const_str_writer._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[24];
+ }
+codecs_toplevel_consts_28_consts_13_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 23,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "StreamReaderWriter.seek",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[75];
+ }
+codecs_toplevel_consts_28_consts_13_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 74,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xd8\x08\x0c\x8f\x0b\x89\x0b\xd7\x08\x18\xd1\x08\x18\x98\x16\xa0\x16\xd4\x08\x28\xd8\x08\x0c\x8f\x0b\x89\x0b\xd7\x08\x19\xd1\x08\x19\xd4\x08\x1b\xd8\x0b\x11\x90\x51\x8a\x3b\x98\x36\xa0\x51\x9a\x3b\xd8\x0c\x10\x8f\x4b\x89\x4b\xd7\x0c\x1d\xd1\x0c\x1d\xd5\x0c\x1f\xf0\x03\x00\x1c\x27\x88\x3b",
+};
+static
+ struct _PyCode_DEF(188)
+codecs_toplevel_consts_28_consts_13 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 94,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_16_consts_2_consts._object.ob_base.ob_base,
+ .co_names = & codecs_toplevel_consts_28_consts_13_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 3,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 7 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 738,
+ .co_nlocalsplus = 3,
+ .co_nlocals = 3,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 331,
+ .co_localsplusnames = & codecs_toplevel_consts_24_consts_5_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_3_localspluskinds.ob_base.ob_base,
+ .co_filename = & codecs_toplevel_consts_12_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(seek),
+ .co_qualname = & codecs_toplevel_consts_28_consts_13_qualname._ascii.ob_base,
+ .co_linetable = & codecs_toplevel_consts_28_consts_13_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x7c\x02\xab\x02\x00\x00\x00\x00\x00\x00\x01\x00\x7c\x00\x6a\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x01\x00\x7c\x02\x64\x01\x6b\x28\x00\x00\x72\x21\x7c\x01\x64\x01\x6b\x28\x00\x00\x72\x1b\x7c\x00\x6a\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x01\x00\x79\x00\x79\x00\x79\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[31];
+ }
+codecs_toplevel_consts_28_consts_14_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 30,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "StreamReaderWriter.__getattr__",
+};
+static
+ struct _PyCode_DEF(40)
+codecs_toplevel_consts_28_consts_14 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 20,
+ },
+ .co_consts = & codecs_toplevel_consts_24_consts_6_consts._object.ob_base.ob_base,
+ .co_names = & codecs_toplevel_consts_24_consts_6_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 3,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 7 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 744,
+ .co_nlocalsplus = 3,
+ .co_nlocals = 3,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 332,
+ .co_localsplusnames = & codecs_toplevel_consts_24_consts_6_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_3_localspluskinds.ob_base.ob_base,
+ .co_filename = & codecs_toplevel_consts_12_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__getattr__),
+ .co_qualname = & codecs_toplevel_consts_28_consts_14_qualname._ascii.ob_base,
+ .co_linetable = & codecs_toplevel_consts_24_consts_6_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x02\x00\x7c\x02\x7c\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\xab\x02\x00\x00\x00\x00\x00\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[29];
+ }
+codecs_toplevel_consts_28_consts_15_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 28,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "StreamReaderWriter.__enter__",
+};
+static
+ struct _PyCode_DEF(6)
+codecs_toplevel_consts_28_consts_15 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 3,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_1_consts._object.ob_base.ob_base,
+ .co_names = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 2 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 1,
+ .co_firstlineno = 753,
+ .co_nlocalsplus = 1,
+ .co_nlocals = 1,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 333,
+ .co_localsplusnames = & importlib__bootstrap_toplevel_consts_7_consts_2_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_characters[32]),
+ .co_filename = & codecs_toplevel_consts_12_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__enter__),
+ .co_qualname = & codecs_toplevel_consts_28_consts_15_qualname._ascii.ob_base,
+ .co_linetable = & codecs_toplevel_consts_24_consts_7_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[28];
+ }
+codecs_toplevel_consts_28_consts_16_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 27,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "StreamReaderWriter.__exit__",
+};
+static
+ struct _PyCode_DEF(56)
+codecs_toplevel_consts_28_consts_16 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 28,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_1_consts._object.ob_base.ob_base,
+ .co_names = & codecs_toplevel_consts_24_consts_8_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 4,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 6 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 2,
+ .co_firstlineno = 756,
+ .co_nlocalsplus = 4,
+ .co_nlocals = 4,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 334,
+ .co_localsplusnames = & codecs_toplevel_consts_24_consts_8_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_7_consts_3_localspluskinds.ob_base.ob_base,
+ .co_filename = & codecs_toplevel_consts_12_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__exit__),
+ .co_qualname = & codecs_toplevel_consts_28_consts_16_qualname._ascii.ob_base,
+ .co_linetable = & codecs_toplevel_consts_24_consts_8_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x01\x00\x79\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[33];
+ }
+codecs_toplevel_consts_28_consts_17_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 32,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "StreamReaderWriter.__reduce_ex__",
+};
+static
+ struct _PyCode_DEF(70)
+codecs_toplevel_consts_28_consts_17 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 35,
+ },
+ .co_consts = & codecs_toplevel_consts_24_consts_9_consts._object.ob_base.ob_base,
+ .co_names = & codecs_toplevel_consts_24_consts_9_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 6 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 759,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 2,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 335,
+ .co_localsplusnames = & codecs_toplevel_consts_24_consts_9_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_14_consts_2_localspluskinds.ob_base.ob_base,
+ .co_filename = & codecs_toplevel_consts_12_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__reduce_ex__),
+ .co_qualname = & codecs_toplevel_consts_28_consts_17_qualname._ascii.ob_base,
+ .co_linetable = & codecs_toplevel_consts_24_consts_9_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x64\x01\x7c\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7a\x06\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x82\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+codecs_toplevel_consts_28_consts_19 = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + -1],
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[22];
+ }_object;
+ }
+codecs_toplevel_consts_28_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 22,
+ },
+ .ob_item = {
+ & const_str_StreamReaderWriter._ascii.ob_base,
+ & codecs_toplevel_consts_28_consts_1._ascii.ob_base,
+ & const_str_unknown._ascii.ob_base,
+ & codecs_toplevel_consts_28_consts_3.ob_base.ob_base,
+ & codecs_toplevel_consts_28_consts_4.ob_base.ob_base,
+ Py_None,
+ & codecs_toplevel_consts_28_consts_6.ob_base.ob_base,
+ & codecs_toplevel_consts_28_consts_7.ob_base.ob_base,
+ & codecs_toplevel_consts_28_consts_8.ob_base.ob_base,
+ & codecs_toplevel_consts_28_consts_9.ob_base.ob_base,
+ & codecs_toplevel_consts_28_consts_10.ob_base.ob_base,
+ & codecs_toplevel_consts_28_consts_11.ob_base.ob_base,
+ & codecs_toplevel_consts_28_consts_12.ob_base.ob_base,
+ & codecs_toplevel_consts_28_consts_13.ob_base.ob_base,
+ & codecs_toplevel_consts_28_consts_14.ob_base.ob_base,
+ & codecs_toplevel_consts_28_consts_15.ob_base.ob_base,
+ & codecs_toplevel_consts_28_consts_16.ob_base.ob_base,
+ & codecs_toplevel_consts_28_consts_17.ob_base.ob_base,
+ & codecs_toplevel_consts_14_consts_5._object.ob_base.ob_base,
+ & codecs_toplevel_consts_28_consts_19._object.ob_base.ob_base,
+ & importlib__bootstrap_toplevel_consts_1_consts._object.ob_base.ob_base,
+ & codecs_toplevel_consts_24_consts_12._object.ob_base.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[20];
+ }_object;
+ }
+codecs_toplevel_consts_28_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 20,
+ },
+ .ob_item = {
+ &_Py_ID(__name__),
+ &_Py_ID(__module__),
+ &_Py_ID(__qualname__),
+ &_Py_ID(__doc__),
+ &_Py_ID(encoding),
+ &_Py_ID(__init__),
+ &_Py_ID(read),
+ &_Py_ID(readline),
+ & const_str_readlines._ascii.ob_base,
+ &_Py_ID(__next__),
+ &_Py_ID(__iter__),
+ &_Py_ID(write),
+ & const_str_writelines._ascii.ob_base,
+ &_Py_ID(reset),
+ &_Py_ID(seek),
+ &_Py_ID(getattr),
+ &_Py_ID(__getattr__),
+ &_Py_ID(__enter__),
+ &_Py_ID(__exit__),
+ &_Py_ID(__reduce_ex__),
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[91];
+ }
+codecs_toplevel_consts_28_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 90,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x84\x00\xf1\x04\x07\x05\x08\xf0\x12\x00\x10\x19\x80\x48\xf3\x04\x10\x05\x1d\xf3\x24\x02\x05\x26\xf3\x08\x02\x05\x2a\xf3\x08\x02\x05\x2f\xf2\x08\x03\x05\x21\xf2\x0a\x01\x05\x14\xf2\x06\x02\x05\x27\xf2\x08\x02\x05\x2c\xf2\x08\x03\x05\x1c\xf3\x0a\x04\x05\x20\xf0\x0e\x00\x1d\x24\xf3\x03\x05\x05\x2a\xf2\x12\x01\x05\x14\xf2\x06\x01\x05\x1c\xf3\x06\x01\x05\x48\x01",
+};
+static
+ struct _PyCode_DEF(118)
+codecs_toplevel_consts_28 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 59,
+ },
+ .co_consts = & codecs_toplevel_consts_28_consts._object.ob_base.ob_base,
+ .co_names = & codecs_toplevel_consts_28_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 0,
+ .co_argcount = 0,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 2 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 2,
+ .co_firstlineno = 674,
+ .co_nlocalsplus = 0,
+ .co_nlocals = 0,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 336,
+ .co_localsplusnames = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_filename = & codecs_toplevel_consts_12_consts_5_filename._ascii.ob_base,
+ .co_name = & const_str_StreamReaderWriter._ascii.ob_base,
+ .co_qualname = & const_str_StreamReaderWriter._ascii.ob_base,
+ .co_linetable = & codecs_toplevel_consts_28_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x65\x00\x5a\x01\x64\x00\x5a\x02\x64\x01\x5a\x03\x64\x02\x5a\x04\x64\x12\x64\x03\x84\x01\x5a\x05\x64\x13\x64\x04\x84\x01\x5a\x06\x64\x14\x64\x06\x84\x01\x5a\x07\x64\x14\x64\x07\x84\x01\x5a\x08\x64\x08\x84\x00\x5a\x09\x64\x09\x84\x00\x5a\x0a\x64\x0a\x84\x00\x5a\x0b\x64\x0b\x84\x00\x5a\x0c\x64\x0c\x84\x00\x5a\x0d\x64\x15\x64\x0d\x84\x01\x5a\x0e\x65\x0f\x66\x01\x64\x0e\x84\x01\x5a\x10\x64\x0f\x84\x00\x5a\x11\x64\x10\x84\x00\x5a\x12\x64\x11\x84\x00\x5a\x13\x79\x05",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[579];
+ }
+codecs_toplevel_consts_30_consts_1 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 578,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x20\x53\x74\x72\x65\x61\x6d\x52\x65\x63\x6f\x64\x65\x72\x20\x69\x6e\x73\x74\x61\x6e\x63\x65\x73\x20\x74\x72\x61\x6e\x73\x6c\x61\x74\x65\x20\x64\x61\x74\x61\x20\x66\x72\x6f\x6d\x20\x6f\x6e\x65\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x20\x74\x6f\x20\x61\x6e\x6f\x74\x68\x65\x72\x2e\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x54\x68\x65\x79\x20\x75\x73\x65\x20\x74\x68\x65\x20\x63\x6f\x6d\x70\x6c\x65\x74\x65\x20\x73\x65\x74\x20\x6f\x66\x20\x41\x50\x49\x73\x20\x72\x65\x74\x75\x72\x6e\x65\x64\x20\x62\x79\x20\x74\x68\x65\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x63\x6f\x64\x65\x63\x73\x2e\x6c\x6f\x6f\x6b\x75\x70\x28\x29\x20\x66\x75\x6e\x63\x74\x69\x6f\x6e\x20\x74\x6f\x20\x69\x6d\x70\x6c\x65\x6d\x65\x6e\x74\x20\x74\x68\x65\x69\x72\x20\x74\x61\x73\x6b\x2e\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x44\x61\x74\x61\x20\x77\x72\x69\x74\x74\x65\x6e\x20\x74\x6f\x20\x74\x68\x65\x20\x53\x74\x72\x65\x61\x6d\x52\x65\x63\x6f\x64\x65\x72\x20\x69\x73\x20\x66\x69\x72\x73\x74\x20\x64\x65\x63\x6f\x64\x65\x64\x20\x69\x6e\x74\x6f\x20\x61\x6e\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x69\x6e\x74\x65\x72\x6d\x65\x64\x69\x61\x74\x65\x20\x66\x6f\x72\x6d\x61\x74\x20\x28\x64\x65\x70\x65\x6e\x64\x69\x6e\x67\x20\x6f\x6e\x20\x74\x68\x65\x20\x22\x64\x65\x63\x6f\x64\x65\x22\x20\x63\x6f\x64\x65\x63\x29\x20\x61\x6e\x64\x20\x74\x68\x65\x6e\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x77\x72\x69\x74\x74\x65\x6e\x20\x74\x6f\x20\x74\x68\x65\x20\x75\x6e\x64\x65\x72\x6c\x79\x69\x6e\x67\x20\x73\x74\x72\x65\x61\x6d\x20\x75\x73\x69\x6e\x67\x20\x61\x6e\x20\x69\x6e\x73\x74\x61\x6e\x63\x65\x20\x6f\x66\x20\x74\x68\x65\x20\x70\x72\x6f\x76\x69\x64\x65\x64\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x57\x72\x69\x74\x65\x72\x20\x63\x6c\x61\x73\x73\x2e\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x49\x6e\x20\x74\x68\x65\x20\x6f\x74\x68\x65\x72\x20\x64\x69\x72\x65\x63\x74\x69\x6f\x6e\x2c\x20\x64\x61\x74\x61\x20\x69\x73\x20\x72\x65\x61\x64\x20\x66\x72\x6f\x6d\x20\x74\x68\x65\x20\x75\x6e\x64\x65\x72\x6c\x79\x69\x6e\x67\x20\x73\x74\x72\x65\x61\x6d\x20\x75\x73\x69\x6e\x67\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x61\x20\x52\x65\x61\x64\x65\x72\x20\x69\x6e\x73\x74\x61\x6e\x63\x65\x20\x61\x6e\x64\x20\x74\x68\x65\x6e\x20\x65\x6e\x63\x6f\x64\x65\x64\x20\x61\x6e\x64\x20\x72\x65\x74\x75\x72\x6e\x65\x64\x20\x74\x6f\x20\x74\x68\x65\x20\x63\x61\x6c\x6c\x65\x72\x2e\x0a\x0a\x20\x20\x20\x20",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[746];
+ }
+codecs_toplevel_consts_30_consts_3_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 745,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x20\x43\x72\x65\x61\x74\x65\x73\x20\x61\x20\x53\x74\x72\x65\x61\x6d\x52\x65\x63\x6f\x64\x65\x72\x20\x69\x6e\x73\x74\x61\x6e\x63\x65\x20\x77\x68\x69\x63\x68\x20\x69\x6d\x70\x6c\x65\x6d\x65\x6e\x74\x73\x20\x61\x20\x74\x77\x6f\x2d\x77\x61\x79\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x63\x6f\x6e\x76\x65\x72\x73\x69\x6f\x6e\x3a\x20\x65\x6e\x63\x6f\x64\x65\x20\x61\x6e\x64\x20\x64\x65\x63\x6f\x64\x65\x20\x77\x6f\x72\x6b\x20\x6f\x6e\x20\x74\x68\x65\x20\x66\x72\x6f\x6e\x74\x65\x6e\x64\x20\x28\x74\x68\x65\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x64\x61\x74\x61\x20\x76\x69\x73\x69\x62\x6c\x65\x20\x74\x6f\x20\x2e\x72\x65\x61\x64\x28\x29\x20\x61\x6e\x64\x20\x2e\x77\x72\x69\x74\x65\x28\x29\x29\x20\x77\x68\x69\x6c\x65\x20\x52\x65\x61\x64\x65\x72\x20\x61\x6e\x64\x20\x57\x72\x69\x74\x65\x72\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x77\x6f\x72\x6b\x20\x6f\x6e\x20\x74\x68\x65\x20\x62\x61\x63\x6b\x65\x6e\x64\x20\x28\x74\x68\x65\x20\x64\x61\x74\x61\x20\x69\x6e\x20\x73\x74\x72\x65\x61\x6d\x29\x2e\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x59\x6f\x75\x20\x63\x61\x6e\x20\x75\x73\x65\x20\x74\x68\x65\x73\x65\x20\x6f\x62\x6a\x65\x63\x74\x73\x20\x74\x6f\x20\x64\x6f\x20\x74\x72\x61\x6e\x73\x70\x61\x72\x65\x6e\x74\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x74\x72\x61\x6e\x73\x63\x6f\x64\x69\x6e\x67\x73\x20\x66\x72\x6f\x6d\x20\x65\x2e\x67\x2e\x20\x6c\x61\x74\x69\x6e\x2d\x31\x20\x74\x6f\x20\x75\x74\x66\x2d\x38\x20\x61\x6e\x64\x20\x62\x61\x63\x6b\x2e\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x73\x74\x72\x65\x61\x6d\x20\x6d\x75\x73\x74\x20\x62\x65\x20\x61\x20\x66\x69\x6c\x65\x2d\x6c\x69\x6b\x65\x20\x6f\x62\x6a\x65\x63\x74\x2e\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x65\x6e\x63\x6f\x64\x65\x20\x61\x6e\x64\x20\x64\x65\x63\x6f\x64\x65\x20\x6d\x75\x73\x74\x20\x61\x64\x68\x65\x72\x65\x20\x74\x6f\x20\x74\x68\x65\x20\x43\x6f\x64\x65\x63\x20\x69\x6e\x74\x65\x72\x66\x61\x63\x65\x3b\x20\x52\x65\x61\x64\x65\x72\x20\x61\x6e\x64\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x57\x72\x69\x74\x65\x72\x20\x6d\x75\x73\x74\x20\x62\x65\x20\x66\x61\x63\x74\x6f\x72\x79\x20\x66\x75\x6e\x63\x74\x69\x6f\x6e\x73\x20\x6f\x72\x20\x63\x6c\x61\x73\x73\x65\x73\x20\x70\x72\x6f\x76\x69\x64\x69\x6e\x67\x20\x74\x68\x65\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x53\x74\x72\x65\x61\x6d\x52\x65\x61\x64\x65\x72\x20\x61\x6e\x64\x20\x53\x74\x72\x65\x61\x6d\x57\x72\x69\x74\x65\x72\x20\x69\x6e\x74\x65\x72\x66\x61\x63\x65\x73\x20\x72\x65\x73\x70\x2e\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x45\x72\x72\x6f\x72\x20\x68\x61\x6e\x64\x6c\x69\x6e\x67\x20\x69\x73\x20\x64\x6f\x6e\x65\x20\x69\x6e\x20\x74\x68\x65\x20\x73\x61\x6d\x65\x20\x77\x61\x79\x20\x61\x73\x20\x64\x65\x66\x69\x6e\x65\x64\x20\x66\x6f\x72\x20\x74\x68\x65\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x53\x74\x72\x65\x61\x6d\x57\x72\x69\x74\x65\x72\x2f\x52\x65\x61\x64\x65\x72\x73\x2e\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+codecs_toplevel_consts_30_consts_3_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & codecs_toplevel_consts_30_consts_3_consts_0._ascii.ob_base,
+ Py_None,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[6];
+ }_object;
+ }
+codecs_toplevel_consts_30_consts_3_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 6,
+ },
+ .ob_item = {
+ & const_str_stream._ascii.ob_base,
+ &_Py_ID(encode),
+ &_Py_ID(decode),
+ & const_str_reader._ascii.ob_base,
+ & const_str_writer._ascii.ob_base,
+ &_Py_ID(errors),
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[23];
+ }
+codecs_toplevel_consts_30_consts_3_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 22,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "StreamRecoder.__init__",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[61];
+ }
+codecs_toplevel_consts_30_consts_3_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 60,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf0\x2a\x00\x17\x1d\x88\x04\x8c\x0b\xd8\x16\x1c\x88\x04\x8c\x0b\xd8\x16\x1c\x88\x04\x8c\x0b\xd9\x16\x1c\x98\x56\xa0\x56\xd3\x16\x2c\x88\x04\x8c\x0b\xd9\x16\x1c\x98\x56\xa0\x56\xd3\x16\x2c\x88\x04\x8c\x0b\xd8\x16\x1c\x88\x04\x8d\x0b",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[7];
+ }_object;
+ }
+codecs_toplevel_consts_30_consts_3_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 7,
+ },
+ .ob_item = {
+ &_Py_ID(self),
+ & const_str_stream._ascii.ob_base,
+ &_Py_ID(encode),
+ &_Py_ID(decode),
+ & const_str_Reader._ascii.ob_base,
+ & const_str_Writer._ascii.ob_base,
+ &_Py_ID(errors),
+ },
+ },
+};
+static
+ struct _PyCode_DEF(116)
+codecs_toplevel_consts_30_consts_3 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 58,
+ },
+ .co_consts = & codecs_toplevel_consts_30_consts_3_consts._object.ob_base.ob_base,
+ .co_names = & codecs_toplevel_consts_30_consts_3_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 7,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 11 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 784,
+ .co_nlocalsplus = 7,
+ .co_nlocals = 7,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 337,
+ .co_localsplusnames = & codecs_toplevel_consts_30_consts_3_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_46_consts_9_localspluskinds.ob_base.ob_base,
+ .co_filename = & codecs_toplevel_consts_12_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__init__),
+ .co_qualname = & codecs_toplevel_consts_30_consts_3_qualname._ascii.ob_base,
+ .co_linetable = & codecs_toplevel_consts_30_consts_3_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x01\x7c\x00\x5f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x02\x7c\x00\x5f\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x03\x7c\x00\x5f\x02\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x7c\x04\x7c\x01\x7c\x06\xab\x02\x00\x00\x00\x00\x00\x00\x7c\x00\x5f\x03\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x7c\x05\x7c\x01\x7c\x06\xab\x02\x00\x00\x00\x00\x00\x00\x7c\x00\x5f\x04\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x06\x7c\x00\x5f\x05\x00\x00\x00\x00\x00\x00\x00\x00\x79\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[4];
+ }_object;
+ }
+codecs_toplevel_consts_30_consts_4_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_item = {
+ & const_str_reader._ascii.ob_base,
+ &_Py_ID(read),
+ &_Py_ID(encode),
+ &_Py_ID(errors),
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[19];
+ }
+codecs_toplevel_consts_30_consts_4_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 18,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "StreamRecoder.read",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[53];
+ }
+codecs_toplevel_consts_30_consts_4_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 52,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xe0\x0f\x13\x8f\x7b\x89\x7b\xd7\x0f\x1f\xd1\x0f\x1f\xa0\x04\xd3\x0f\x25\x88\x04\xd8\x1d\x21\x9f\x5b\x99\x5b\xa8\x14\xa8\x74\xaf\x7b\xa9\x7b\xd3\x1d\x3b\xd1\x08\x1a\x88\x04\x88\x6c\xd8\x0f\x13\x88\x0b",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[13];
+ }
+const_str_bytesencoded = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 12,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "bytesencoded",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[4];
+ }_object;
+ }
+codecs_toplevel_consts_30_consts_4_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_item = {
+ &_Py_ID(self),
+ &_Py_ID(size),
+ &_Py_ID(data),
+ & const_str_bytesencoded._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(122)
+codecs_toplevel_consts_30_consts_4 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 61,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_1_consts._object.ob_base.ob_base,
+ .co_names = & codecs_toplevel_consts_30_consts_4_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 8 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 812,
+ .co_nlocalsplus = 4,
+ .co_nlocals = 4,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 338,
+ .co_localsplusnames = & codecs_toplevel_consts_30_consts_4_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_7_consts_3_localspluskinds.ob_base.ob_base,
+ .co_filename = & codecs_toplevel_consts_12_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(read),
+ .co_qualname = & codecs_toplevel_consts_30_consts_4_qualname._ascii.ob_base,
+ .co_linetable = & codecs_toplevel_consts_30_consts_4_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x02\x7c\x00\x6a\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x02\x7c\x00\x6a\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x02\x00\x00\x00\x00\x00\x00\x5c\x02\x00\x00\x7d\x02\x7d\x03\x7c\x02\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[4];
+ }_object;
+ }
+codecs_toplevel_consts_30_consts_6_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_item = {
+ & const_str_reader._ascii.ob_base,
+ &_Py_ID(readline),
+ &_Py_ID(encode),
+ &_Py_ID(errors),
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[23];
+ }
+codecs_toplevel_consts_30_consts_6_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 22,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "StreamRecoder.readline",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[76];
+ }
+codecs_toplevel_consts_30_consts_6_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 75,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xe0\x0b\x0f\x88\x3c\xd8\x13\x17\x97\x3b\x91\x3b\xd7\x13\x27\xd1\x13\x27\xd3\x13\x29\x89\x44\xe0\x13\x17\x97\x3b\x91\x3b\xd7\x13\x27\xd1\x13\x27\xa8\x04\xd3\x13\x2d\x88\x44\xd8\x1d\x21\x9f\x5b\x99\x5b\xa8\x14\xa8\x74\xaf\x7b\xa9\x7b\xd3\x1d\x3b\xd1\x08\x1a\x88\x04\x88\x6c\xd8\x0f\x13\x88\x0b",
+};
+static
+ struct _PyCode_DEF(180)
+codecs_toplevel_consts_30_consts_6 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 90,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_1_consts._object.ob_base.ob_base,
+ .co_names = & codecs_toplevel_consts_30_consts_6_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 8 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 818,
+ .co_nlocalsplus = 4,
+ .co_nlocals = 4,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 339,
+ .co_localsplusnames = & codecs_toplevel_consts_30_consts_4_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_7_consts_3_localspluskinds.ob_base.ob_base,
+ .co_filename = & codecs_toplevel_consts_12_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(readline),
+ .co_qualname = & codecs_toplevel_consts_30_consts_6_qualname._ascii.ob_base,
+ .co_linetable = & codecs_toplevel_consts_30_consts_6_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x01\x80\x1b\x7c\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x7d\x02\x6e\x1b\x7c\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x02\x7c\x00\x6a\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x02\x7c\x00\x6a\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x02\x00\x00\x00\x00\x00\x00\x5c\x02\x00\x00\x7d\x02\x7d\x03\x7c\x02\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+codecs_toplevel_consts_30_consts_7_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ Py_None,
+ Py_True,
+ & codecs_toplevel_consts_26_consts_3_consts_4._object.ob_base.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[5];
+ }_object;
+ }
+codecs_toplevel_consts_30_consts_7_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 5,
+ },
+ .ob_item = {
+ & const_str_reader._ascii.ob_base,
+ &_Py_ID(read),
+ &_Py_ID(encode),
+ &_Py_ID(errors),
+ & const_str_splitlines._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[24];
+ }
+codecs_toplevel_consts_30_consts_7_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 23,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "StreamRecoder.readlines",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[63];
+ }
+codecs_toplevel_consts_30_consts_7_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 62,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xe0\x0f\x13\x8f\x7b\x89\x7b\xd7\x0f\x1f\xd1\x0f\x1f\xd3\x0f\x21\x88\x04\xd8\x1d\x21\x9f\x5b\x99\x5b\xa8\x14\xa8\x74\xaf\x7b\xa9\x7b\xd3\x1d\x3b\xd1\x08\x1a\x88\x04\x88\x6c\xd8\x0f\x13\x8f\x7f\x89\x7f\xa8\x04\x88\x7f\xd3\x0f\x2d\xd0\x08\x2d",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[4];
+ }_object;
+ }
+codecs_toplevel_consts_30_consts_7_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_item = {
+ &_Py_ID(self),
+ &_Py_ID(sizehint),
+ &_Py_ID(data),
+ & const_str_bytesencoded._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(152)
+codecs_toplevel_consts_30_consts_7 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 76,
+ },
+ .co_consts = & codecs_toplevel_consts_30_consts_7_consts._object.ob_base.ob_base,
+ .co_names = & codecs_toplevel_consts_30_consts_7_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 8 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 827,
+ .co_nlocalsplus = 4,
+ .co_nlocals = 4,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 340,
+ .co_localsplusnames = & codecs_toplevel_consts_30_consts_7_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_7_consts_3_localspluskinds.ob_base.ob_base,
+ .co_filename = & codecs_toplevel_consts_12_consts_5_filename._ascii.ob_base,
+ .co_name = & const_str_readlines._ascii.ob_base,
+ .co_qualname = & codecs_toplevel_consts_30_consts_7_qualname._ascii.ob_base,
+ .co_linetable = & codecs_toplevel_consts_30_consts_7_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x7d\x02\x7c\x00\x6a\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x02\x7c\x00\x6a\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x02\x00\x00\x00\x00\x00\x00\x5c\x02\x00\x00\x7d\x02\x7d\x03\x7c\x02\x6a\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x01\xac\x02\xab\x01\x00\x00\x00\x00\x00\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[4];
+ }_object;
+ }
+codecs_toplevel_consts_30_consts_8_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_item = {
+ &_Py_ID(next),
+ & const_str_reader._ascii.ob_base,
+ &_Py_ID(encode),
+ &_Py_ID(errors),
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[23];
+ }
+codecs_toplevel_consts_30_consts_8_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 22,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "StreamRecoder.__next__",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[49];
+ }
+codecs_toplevel_consts_30_consts_8_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 48,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf4\x06\x00\x10\x14\x90\x44\x97\x4b\x91\x4b\xd3\x0f\x20\x88\x04\xd8\x1d\x21\x9f\x5b\x99\x5b\xa8\x14\xa8\x74\xaf\x7b\xa9\x7b\xd3\x1d\x3b\xd1\x08\x1a\x88\x04\x88\x6c\xd8\x0f\x13\x88\x0b",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+codecs_toplevel_consts_30_consts_8_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ &_Py_ID(self),
+ &_Py_ID(data),
+ & const_str_bytesencoded._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(110)
+codecs_toplevel_consts_30_consts_8 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 55,
+ },
+ .co_consts = & codecs_toplevel_consts_26_consts_9_consts._object.ob_base.ob_base,
+ .co_names = & codecs_toplevel_consts_30_consts_8_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 7 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 833,
+ .co_nlocalsplus = 3,
+ .co_nlocals = 3,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 341,
+ .co_localsplusnames = & codecs_toplevel_consts_30_consts_8_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_3_localspluskinds.ob_base.ob_base,
+ .co_filename = & codecs_toplevel_consts_12_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__next__),
+ .co_qualname = & codecs_toplevel_consts_30_consts_8_qualname._ascii.ob_base,
+ .co_linetable = & codecs_toplevel_consts_30_consts_8_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x01\x7c\x00\x6a\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x7c\x00\x6a\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x02\x00\x00\x00\x00\x00\x00\x5c\x02\x00\x00\x7d\x01\x7d\x02\x7c\x01\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[23];
+ }
+codecs_toplevel_consts_30_consts_9_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 22,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "StreamRecoder.__iter__",
+};
+static
+ struct _PyCode_DEF(6)
+codecs_toplevel_consts_30_consts_9 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 3,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_1_consts._object.ob_base.ob_base,
+ .co_names = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 2 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 1,
+ .co_firstlineno = 840,
+ .co_nlocalsplus = 1,
+ .co_nlocals = 1,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 342,
+ .co_localsplusnames = & importlib__bootstrap_toplevel_consts_7_consts_2_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_characters[32]),
+ .co_filename = & codecs_toplevel_consts_12_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__iter__),
+ .co_qualname = & codecs_toplevel_consts_30_consts_9_qualname._ascii.ob_base,
+ .co_linetable = & codecs_toplevel_consts_24_consts_7_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[4];
+ }_object;
+ }
+codecs_toplevel_consts_30_consts_10_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_item = {
+ &_Py_ID(decode),
+ &_Py_ID(errors),
+ & const_str_writer._ascii.ob_base,
+ &_Py_ID(write),
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[20];
+ }
+codecs_toplevel_consts_30_consts_10_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 19,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "StreamRecoder.write",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[49];
+ }
+codecs_toplevel_consts_30_consts_10_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 48,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xe0\x1d\x21\x9f\x5b\x99\x5b\xa8\x14\xa8\x74\xaf\x7b\xa9\x7b\xd3\x1d\x3b\xd1\x08\x1a\x88\x04\x88\x6c\xd8\x0f\x13\x8f\x7b\x89\x7b\xd7\x0f\x20\xd1\x0f\x20\xa0\x14\xd3\x0f\x26\xd0\x08\x26",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[13];
+ }
+const_str_bytesdecoded = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 12,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "bytesdecoded",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+codecs_toplevel_consts_30_consts_10_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ &_Py_ID(self),
+ &_Py_ID(data),
+ & const_str_bytesdecoded._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(118)
+codecs_toplevel_consts_30_consts_10 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 59,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_1_consts._object.ob_base.ob_base,
+ .co_names = & codecs_toplevel_consts_30_consts_10_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 7 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 843,
+ .co_nlocalsplus = 3,
+ .co_nlocals = 3,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 343,
+ .co_localsplusnames = & codecs_toplevel_consts_30_consts_10_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_3_localspluskinds.ob_base.ob_base,
+ .co_filename = & codecs_toplevel_consts_12_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(write),
+ .co_qualname = & codecs_toplevel_consts_30_consts_10_qualname._ascii.ob_base,
+ .co_linetable = & codecs_toplevel_consts_30_consts_10_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x00\x6a\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x7c\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x02\x00\x00\x00\x00\x00\x00\x5c\x02\x00\x00\x7d\x01\x7d\x02\x7c\x00\x6a\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\xab\x01\x00\x00\x00\x00\x00\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[5];
+ }_object;
+ }
+codecs_toplevel_consts_30_consts_11_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 5,
+ },
+ .ob_item = {
+ &_Py_ID(join),
+ &_Py_ID(decode),
+ &_Py_ID(errors),
+ & const_str_writer._ascii.ob_base,
+ &_Py_ID(write),
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[25];
+ }
+codecs_toplevel_consts_30_consts_11_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 24,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "StreamRecoder.writelines",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[62];
+ }
+codecs_toplevel_consts_30_consts_11_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 61,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xe0\x0f\x12\x8f\x78\x89\x78\x98\x04\x8b\x7e\x88\x04\xd8\x1d\x21\x9f\x5b\x99\x5b\xa8\x14\xa8\x74\xaf\x7b\xa9\x7b\xd3\x1d\x3b\xd1\x08\x1a\x88\x04\x88\x6c\xd8\x0f\x13\x8f\x7b\x89\x7b\xd7\x0f\x20\xd1\x0f\x20\xa0\x14\xd3\x0f\x26\xd0\x08\x26",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[4];
+ }_object;
+ }
+codecs_toplevel_consts_30_consts_11_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_item = {
+ &_Py_ID(self),
+ & const_str_list._ascii.ob_base,
+ &_Py_ID(data),
+ & const_str_bytesdecoded._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(152)
+codecs_toplevel_consts_30_consts_11 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 76,
+ },
+ .co_consts = & codecs_toplevel_consts_22_consts_2_consts._object.ob_base.ob_base,
+ .co_names = & codecs_toplevel_consts_30_consts_11_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 8 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 848,
+ .co_nlocalsplus = 4,
+ .co_nlocals = 4,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 344,
+ .co_localsplusnames = & codecs_toplevel_consts_30_consts_11_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_7_consts_3_localspluskinds.ob_base.ob_base,
+ .co_filename = & codecs_toplevel_consts_12_consts_5_filename._ascii.ob_base,
+ .co_name = & const_str_writelines._ascii.ob_base,
+ .co_qualname = & codecs_toplevel_consts_30_consts_11_qualname._ascii.ob_base,
+ .co_linetable = & codecs_toplevel_consts_30_consts_11_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x64\x01\x6a\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x02\x7c\x00\x6a\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x02\x7c\x00\x6a\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x02\x00\x00\x00\x00\x00\x00\x5c\x02\x00\x00\x7d\x02\x7d\x03\x7c\x00\x6a\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x02\xab\x01\x00\x00\x00\x00\x00\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[20];
+ }
+codecs_toplevel_consts_30_consts_12_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 19,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "StreamRecoder.reset",
+};
+static
+ struct _PyCode_DEF(108)
+codecs_toplevel_consts_30_consts_12 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 54,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_1_consts._object.ob_base.ob_base,
+ .co_names = & codecs_toplevel_consts_28_consts_12_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 3 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 2,
+ .co_firstlineno = 854,
+ .co_nlocalsplus = 1,
+ .co_nlocals = 1,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 345,
+ .co_localsplusnames = & importlib__bootstrap_toplevel_consts_7_consts_2_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_characters[32]),
+ .co_filename = & codecs_toplevel_consts_12_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(reset),
+ .co_qualname = & codecs_toplevel_consts_30_consts_12_qualname._ascii.ob_base,
+ .co_linetable = & codecs_toplevel_consts_28_consts_12_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x01\x00\x7c\x00\x6a\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x01\x00\x79\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+codecs_toplevel_consts_30_consts_13_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ & const_str_reader._ascii.ob_base,
+ &_Py_ID(seek),
+ & const_str_writer._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[19];
+ }
+codecs_toplevel_consts_30_consts_13_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 18,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "StreamRecoder.seek",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[45];
+ }
+codecs_toplevel_consts_30_consts_13_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 44,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf0\x06\x00\x09\x0d\x8f\x0b\x89\x0b\xd7\x08\x18\xd1\x08\x18\x98\x16\xa0\x16\xd4\x08\x28\xd8\x08\x0c\x8f\x0b\x89\x0b\xd7\x08\x18\xd1\x08\x18\x98\x16\xa0\x16\xd5\x08\x28",
+};
+static
+ struct _PyCode_DEF(116)
+codecs_toplevel_consts_30_consts_13 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 58,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_1_consts._object.ob_base.ob_base,
+ .co_names = & codecs_toplevel_consts_30_consts_13_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 3,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 7 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 859,
+ .co_nlocalsplus = 3,
+ .co_nlocals = 3,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 346,
+ .co_localsplusnames = & codecs_toplevel_consts_24_consts_5_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_3_localspluskinds.ob_base.ob_base,
+ .co_filename = & codecs_toplevel_consts_12_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(seek),
+ .co_qualname = & codecs_toplevel_consts_30_consts_13_qualname._ascii.ob_base,
+ .co_linetable = & codecs_toplevel_consts_30_consts_13_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x7c\x02\xab\x02\x00\x00\x00\x00\x00\x00\x01\x00\x7c\x00\x6a\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x7c\x02\xab\x02\x00\x00\x00\x00\x00\x00\x01\x00\x79\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[26];
+ }
+codecs_toplevel_consts_30_consts_14_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 25,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "StreamRecoder.__getattr__",
+};
+static
+ struct _PyCode_DEF(40)
+codecs_toplevel_consts_30_consts_14 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 20,
+ },
+ .co_consts = & codecs_toplevel_consts_24_consts_6_consts._object.ob_base.ob_base,
+ .co_names = & codecs_toplevel_consts_24_consts_6_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 3,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 7 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 865,
+ .co_nlocalsplus = 3,
+ .co_nlocals = 3,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 347,
+ .co_localsplusnames = & codecs_toplevel_consts_24_consts_6_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_3_localspluskinds.ob_base.ob_base,
+ .co_filename = & codecs_toplevel_consts_12_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__getattr__),
+ .co_qualname = & codecs_toplevel_consts_30_consts_14_qualname._ascii.ob_base,
+ .co_linetable = & codecs_toplevel_consts_24_consts_6_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x02\x00\x7c\x02\x7c\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\xab\x02\x00\x00\x00\x00\x00\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[24];
+ }
+codecs_toplevel_consts_30_consts_15_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 23,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "StreamRecoder.__enter__",
+};
+static
+ struct _PyCode_DEF(6)
+codecs_toplevel_consts_30_consts_15 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 3,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_1_consts._object.ob_base.ob_base,
+ .co_names = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 2 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 1,
+ .co_firstlineno = 872,
+ .co_nlocalsplus = 1,
+ .co_nlocals = 1,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 348,
+ .co_localsplusnames = & importlib__bootstrap_toplevel_consts_7_consts_2_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_characters[32]),
+ .co_filename = & codecs_toplevel_consts_12_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__enter__),
+ .co_qualname = & codecs_toplevel_consts_30_consts_15_qualname._ascii.ob_base,
+ .co_linetable = & codecs_toplevel_consts_24_consts_7_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[23];
+ }
+codecs_toplevel_consts_30_consts_16_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 22,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "StreamRecoder.__exit__",
+};
+static
+ struct _PyCode_DEF(56)
+codecs_toplevel_consts_30_consts_16 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 28,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_1_consts._object.ob_base.ob_base,
+ .co_names = & codecs_toplevel_consts_24_consts_8_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 4,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 6 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 2,
+ .co_firstlineno = 875,
+ .co_nlocalsplus = 4,
+ .co_nlocals = 4,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 349,
+ .co_localsplusnames = & codecs_toplevel_consts_24_consts_8_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_7_consts_3_localspluskinds.ob_base.ob_base,
+ .co_filename = & codecs_toplevel_consts_12_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__exit__),
+ .co_qualname = & codecs_toplevel_consts_30_consts_16_qualname._ascii.ob_base,
+ .co_linetable = & codecs_toplevel_consts_24_consts_8_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x01\x00\x79\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[28];
+ }
+codecs_toplevel_consts_30_consts_17_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 27,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "StreamRecoder.__reduce_ex__",
+};
+static
+ struct _PyCode_DEF(70)
+codecs_toplevel_consts_30_consts_17 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 35,
+ },
+ .co_consts = & codecs_toplevel_consts_24_consts_9_consts._object.ob_base.ob_base,
+ .co_names = & codecs_toplevel_consts_24_consts_9_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 6 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 878,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 2,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 350,
+ .co_localsplusnames = & codecs_toplevel_consts_24_consts_9_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_14_consts_2_localspluskinds.ob_base.ob_base,
+ .co_filename = & codecs_toplevel_consts_12_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__reduce_ex__),
+ .co_qualname = & codecs_toplevel_consts_30_consts_17_qualname._ascii.ob_base,
+ .co_linetable = & codecs_toplevel_consts_24_consts_9_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x64\x01\x7c\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7a\x06\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x82\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[22];
+ }_object;
+ }
+codecs_toplevel_consts_30_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 22,
+ },
+ .ob_item = {
+ & const_str_StreamRecoder._ascii.ob_base,
+ & codecs_toplevel_consts_30_consts_1._ascii.ob_base,
+ & const_str_unknown._ascii.ob_base,
+ & codecs_toplevel_consts_30_consts_3.ob_base.ob_base,
+ & codecs_toplevel_consts_30_consts_4.ob_base.ob_base,
+ Py_None,
+ & codecs_toplevel_consts_30_consts_6.ob_base.ob_base,
+ & codecs_toplevel_consts_30_consts_7.ob_base.ob_base,
+ & codecs_toplevel_consts_30_consts_8.ob_base.ob_base,
+ & codecs_toplevel_consts_30_consts_9.ob_base.ob_base,
+ & codecs_toplevel_consts_30_consts_10.ob_base.ob_base,
+ & codecs_toplevel_consts_30_consts_11.ob_base.ob_base,
+ & codecs_toplevel_consts_30_consts_12.ob_base.ob_base,
+ & codecs_toplevel_consts_30_consts_13.ob_base.ob_base,
+ & codecs_toplevel_consts_30_consts_14.ob_base.ob_base,
+ & codecs_toplevel_consts_30_consts_15.ob_base.ob_base,
+ & codecs_toplevel_consts_30_consts_16.ob_base.ob_base,
+ & codecs_toplevel_consts_30_consts_17.ob_base.ob_base,
+ & codecs_toplevel_consts_14_consts_5._object.ob_base.ob_base,
+ & codecs_toplevel_consts_28_consts_19._object.ob_base.ob_base,
+ & importlib__bootstrap_toplevel_consts_1_consts._object.ob_base.ob_base,
+ & codecs_toplevel_consts_24_consts_12._object.ob_base.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[14];
+ }
+const_str_data_encoding = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 13,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "data_encoding",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[14];
+ }
+const_str_file_encoding = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 13,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "file_encoding",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[21];
+ }_object;
+ }
+codecs_toplevel_consts_30_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 21,
+ },
+ .ob_item = {
+ &_Py_ID(__name__),
+ &_Py_ID(__module__),
+ &_Py_ID(__qualname__),
+ &_Py_ID(__doc__),
+ & const_str_data_encoding._ascii.ob_base,
+ & const_str_file_encoding._ascii.ob_base,
+ &_Py_ID(__init__),
+ &_Py_ID(read),
+ &_Py_ID(readline),
+ & const_str_readlines._ascii.ob_base,
+ &_Py_ID(__next__),
+ &_Py_ID(__iter__),
+ &_Py_ID(write),
+ & const_str_writelines._ascii.ob_base,
+ &_Py_ID(reset),
+ &_Py_ID(seek),
+ &_Py_ID(getattr),
+ &_Py_ID(__getattr__),
+ &_Py_ID(__enter__),
+ &_Py_ID(__exit__),
+ &_Py_ID(__reduce_ex__),
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[101];
+ }
+codecs_toplevel_consts_30_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 100,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x84\x00\xf1\x04\x0d\x05\x08\xf0\x1e\x00\x15\x1e\x80\x4d\xd8\x14\x1d\x80\x4d\xf0\x06\x00\x19\x21\xf3\x03\x1a\x05\x1d\xf3\x38\x04\x05\x14\xf3\x0c\x07\x05\x14\xf3\x12\x04\x05\x2e\xf2\x0c\x05\x05\x14\xf2\x0e\x01\x05\x14\xf2\x06\x03\x05\x27\xf2\x0a\x04\x05\x27\xf2\x0c\x03\x05\x1c\xf3\x0a\x04\x05\x29\xf0\x0e\x00\x1d\x24\xf3\x03\x05\x05\x2a\xf2\x0e\x01\x05\x14\xf2\x06\x01\x05\x1c\xf3\x06\x01\x05\x48\x01",
+};
+static
+ struct _PyCode_DEF(124)
+codecs_toplevel_consts_30 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 62,
+ },
+ .co_consts = & codecs_toplevel_consts_30_consts._object.ob_base.ob_base,
+ .co_names = & codecs_toplevel_consts_30_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 0,
+ .co_argcount = 0,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 2 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 2,
+ .co_firstlineno = 764,
+ .co_nlocalsplus = 0,
+ .co_nlocals = 0,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 351,
+ .co_localsplusnames = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_filename = & codecs_toplevel_consts_12_consts_5_filename._ascii.ob_base,
+ .co_name = & const_str_StreamRecoder._ascii.ob_base,
+ .co_qualname = & const_str_StreamRecoder._ascii.ob_base,
+ .co_linetable = & codecs_toplevel_consts_30_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x65\x00\x5a\x01\x64\x00\x5a\x02\x64\x01\x5a\x03\x64\x02\x5a\x04\x64\x02\x5a\x05\x09\x00\x64\x12\x64\x03\x84\x01\x5a\x06\x64\x13\x64\x04\x84\x01\x5a\x07\x64\x14\x64\x06\x84\x01\x5a\x08\x64\x14\x64\x07\x84\x01\x5a\x09\x64\x08\x84\x00\x5a\x0a\x64\x09\x84\x00\x5a\x0b\x64\x0a\x84\x00\x5a\x0c\x64\x0b\x84\x00\x5a\x0d\x64\x0c\x84\x00\x5a\x0e\x64\x15\x64\x0d\x84\x01\x5a\x0f\x65\x10\x66\x01\x64\x0e\x84\x01\x5a\x11\x64\x0f\x84\x00\x5a\x12\x64\x10\x84\x00\x5a\x13\x64\x11\x84\x00\x5a\x14\x79\x05",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[1180];
+ }
+codecs_toplevel_consts_33_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 1179,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x20\x4f\x70\x65\x6e\x20\x61\x6e\x20\x65\x6e\x63\x6f\x64\x65\x64\x20\x66\x69\x6c\x65\x20\x75\x73\x69\x6e\x67\x20\x74\x68\x65\x20\x67\x69\x76\x65\x6e\x20\x6d\x6f\x64\x65\x20\x61\x6e\x64\x20\x72\x65\x74\x75\x72\x6e\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x61\x20\x77\x72\x61\x70\x70\x65\x64\x20\x76\x65\x72\x73\x69\x6f\x6e\x20\x70\x72\x6f\x76\x69\x64\x69\x6e\x67\x20\x74\x72\x61\x6e\x73\x70\x61\x72\x65\x6e\x74\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x2f\x64\x65\x63\x6f\x64\x69\x6e\x67\x2e\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x4e\x6f\x74\x65\x3a\x20\x54\x68\x65\x20\x77\x72\x61\x70\x70\x65\x64\x20\x76\x65\x72\x73\x69\x6f\x6e\x20\x77\x69\x6c\x6c\x20\x6f\x6e\x6c\x79\x20\x61\x63\x63\x65\x70\x74\x20\x74\x68\x65\x20\x6f\x62\x6a\x65\x63\x74\x20\x66\x6f\x72\x6d\x61\x74\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x64\x65\x66\x69\x6e\x65\x64\x20\x62\x79\x20\x74\x68\x65\x20\x63\x6f\x64\x65\x63\x73\x2c\x20\x69\x2e\x65\x2e\x20\x55\x6e\x69\x63\x6f\x64\x65\x20\x6f\x62\x6a\x65\x63\x74\x73\x20\x66\x6f\x72\x20\x6d\x6f\x73\x74\x20\x62\x75\x69\x6c\x74\x69\x6e\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x63\x6f\x64\x65\x63\x73\x2e\x20\x4f\x75\x74\x70\x75\x74\x20\x69\x73\x20\x61\x6c\x73\x6f\x20\x63\x6f\x64\x65\x63\x20\x64\x65\x70\x65\x6e\x64\x65\x6e\x74\x20\x61\x6e\x64\x20\x77\x69\x6c\x6c\x20\x75\x73\x75\x61\x6c\x6c\x79\x20\x62\x65\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x55\x6e\x69\x63\x6f\x64\x65\x20\x61\x73\x20\x77\x65\x6c\x6c\x2e\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x49\x66\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x20\x69\x73\x20\x6e\x6f\x74\x20\x4e\x6f\x6e\x65\x2c\x20\x74\x68\x65\x6e\x20\x74\x68\x65\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x75\x6e\x64\x65\x72\x6c\x79\x69\x6e\x67\x20\x65\x6e\x63\x6f\x64\x65\x64\x20\x66\x69\x6c\x65\x73\x20\x61\x72\x65\x20\x61\x6c\x77\x61\x79\x73\x20\x6f\x70\x65\x6e\x65\x64\x20\x69\x6e\x20\x62\x69\x6e\x61\x72\x79\x20\x6d\x6f\x64\x65\x2e\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x54\x68\x65\x20\x64\x65\x66\x61\x75\x6c\x74\x20\x66\x69\x6c\x65\x20\x6d\x6f\x64\x65\x20\x69\x73\x20\x27\x72\x27\x2c\x20\x6d\x65\x61\x6e\x69\x6e\x67\x20\x74\x6f\x20\x6f\x70\x65\x6e\x20\x74\x68\x65\x20\x66\x69\x6c\x65\x20\x69\x6e\x20\x72\x65\x61\x64\x20\x6d\x6f\x64\x65\x2e\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x20\x73\x70\x65\x63\x69\x66\x69\x65\x73\x20\x74\x68\x65\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x20\x77\x68\x69\x63\x68\x20\x69\x73\x20\x74\x6f\x20\x62\x65\x20\x75\x73\x65\x64\x20\x66\x6f\x72\x20\x74\x68\x65\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x66\x69\x6c\x65\x2e\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x65\x72\x72\x6f\x72\x73\x20\x6d\x61\x79\x20\x62\x65\x20\x67\x69\x76\x65\x6e\x20\x74\x6f\x20\x64\x65\x66\x69\x6e\x65\x20\x74\x68\x65\x20\x65\x72\x72\x6f\x72\x20\x68\x61\x6e\x64\x6c\x69\x6e\x67\x2e\x20\x49\x74\x20\x64\x65\x66\x61\x75\x6c\x74\x73\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x74\x6f\x20\x27\x73\x74\x72\x69\x63\x74\x27\x20\x77\x68\x69\x63\x68\x20\x63\x61\x75\x73\x65\x73\x20\x56\x61\x6c\x75\x65\x45\x72\x72\x6f\x72\x73\x20\x74\x6f\x20\x62\x65\x20\x72\x61\x69\x73\x65\x64\x20\x69\x6e\x20\x63\x61\x73\x65\x20\x61\x6e\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x20\x65\x72\x72\x6f\x72\x20\x6f\x63\x63\x75\x72\x73\x2e\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x62\x75\x66\x66\x65\x72\x69\x6e\x67\x20\x68\x61\x73\x20\x74\x68\x65\x20\x73\x61\x6d\x65\x20\x6d\x65\x61\x6e\x69\x6e\x67\x20\x61\x73\x20\x66\x6f\x72\x20\x74\x68\x65\x20\x62\x75\x69\x6c\x74\x69\x6e\x20\x6f\x70\x65\x6e\x28\x29\x20\x41\x50\x49\x2e\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x49\x74\x20\x64\x65\x66\x61\x75\x6c\x74\x73\x20\x74\x6f\x20\x2d\x31\x20\x77\x68\x69\x63\x68\x20\x6d\x65\x61\x6e\x73\x20\x74\x68\x61\x74\x20\x74\x68\x65\x20\x64\x65\x66\x61\x75\x6c\x74\x20\x62\x75\x66\x66\x65\x72\x20\x73\x69\x7a\x65\x20\x77\x69\x6c\x6c\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x62\x65\x20\x75\x73\x65\x64\x2e\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x54\x68\x65\x20\x72\x65\x74\x75\x72\x6e\x65\x64\x20\x77\x72\x61\x70\x70\x65\x64\x20\x66\x69\x6c\x65\x20\x6f\x62\x6a\x65\x63\x74\x20\x70\x72\x6f\x76\x69\x64\x65\x73\x20\x61\x6e\x20\x65\x78\x74\x72\x61\x20\x61\x74\x74\x72\x69\x62\x75\x74\x65\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x2e\x65\x6e\x63\x6f\x64\x69\x6e\x67\x20\x77\x68\x69\x63\x68\x20\x61\x6c\x6c\x6f\x77\x73\x20\x71\x75\x65\x72\x79\x69\x6e\x67\x20\x74\x68\x65\x20\x75\x73\x65\x64\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x2e\x20\x54\x68\x69\x73\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x61\x74\x74\x72\x69\x62\x75\x74\x65\x20\x69\x73\x20\x6f\x6e\x6c\x79\x20\x61\x76\x61\x69\x6c\x61\x62\x6c\x65\x20\x69\x66\x20\x61\x6e\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x20\x77\x61\x73\x20\x73\x70\x65\x63\x69\x66\x69\x65\x64\x20\x61\x73\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x70\x61\x72\x61\x6d\x65\x74\x65\x72\x2e\x0a\x0a\x20\x20\x20\x20",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+codecs_toplevel_consts_33_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & codecs_toplevel_consts_33_consts_0._ascii.ob_base,
+ &_Py_ID(b),
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[8];
+ }_object;
+ }
+codecs_toplevel_consts_33_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 8,
+ },
+ .ob_item = {
+ &_Py_ID(builtins),
+ &_Py_ID(open),
+ & const_str_lookup._ascii.ob_base,
+ & const_str_StreamReaderWriter._ascii.ob_base,
+ & const_str_streamreader._ascii.ob_base,
+ & const_str_streamwriter._ascii.ob_base,
+ &_Py_ID(encoding),
+ &_Py_ID(close),
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[130];
+ }
+codecs_toplevel_consts_33_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 129,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf0\x3e\x00\x08\x10\xd0\x07\x1b\xd8\x07\x0a\x90\x24\x81\x7f\xe0\x0f\x13\x90\x63\x89\x7a\x88\x04\xdc\x0b\x13\x8f\x3d\x89\x3d\x98\x18\xa0\x34\xa8\x19\xd3\x0b\x33\x80\x44\xd8\x07\x0f\xd0\x07\x17\xd8\x0f\x13\x88\x0b\xf0\x04\x08\x05\x0e\xdc\x0f\x15\x90\x68\xd3\x0f\x1f\x88\x04\xdc\x0e\x20\xa0\x14\xa0\x74\xd7\x27\x38\xd1\x27\x38\xb8\x24\xd7\x3a\x4b\xd1\x3a\x4b\xc8\x56\xd3\x0e\x54\x88\x03\xe0\x17\x1f\x88\x03\x8c\x0c\xd8\x0f\x12\x88\x0a\xf8\xf0\x02\x02\x05\x0e\xd8\x08\x0c\x8f\x0a\x89\x0a\x8c\x0c\xd8\x08\x0d\xfa",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[12];
+ }
+codecs_toplevel_consts_33_exceptiontable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 11,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\xa8\x35\x41\x1e\x00\xc1\x1e\x13\x41\x31\x03",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[4];
+ }
+const_str_srw = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 3,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "srw",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[8];
+ }_object;
+ }
+codecs_toplevel_consts_33_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 8,
+ },
+ .ob_item = {
+ &_Py_ID(filename),
+ &_Py_ID(mode),
+ &_Py_ID(encoding),
+ &_Py_ID(errors),
+ &_Py_ID(buffering),
+ &_Py_ID(file),
+ & const_str_info._ascii.ob_base,
+ & const_str_srw._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(232)
+codecs_toplevel_consts_33 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 116,
+ },
+ .co_consts = & codecs_toplevel_consts_33_consts._object.ob_base.ob_base,
+ .co_names = & codecs_toplevel_consts_33_names._object.ob_base.ob_base,
+ .co_exceptiontable = & codecs_toplevel_consts_33_exceptiontable.ob_base.ob_base,
+ .co_flags = 3,
+ .co_argcount = 5,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 14 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 6,
+ .co_firstlineno = 883,
+ .co_nlocalsplus = 8,
+ .co_nlocals = 8,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 352,
+ .co_localsplusnames = & codecs_toplevel_consts_33_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_13_localspluskinds.ob_base.ob_base,
+ .co_filename = & codecs_toplevel_consts_12_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(open),
+ .co_qualname = &_Py_ID(open),
+ .co_linetable = & codecs_toplevel_consts_33_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x02\x81\x09\x64\x01\x7c\x01\x76\x01\x72\x05\x7c\x01\x64\x01\x7a\x00\x00\x00\x7d\x01\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x7c\x01\x7c\x04\xab\x03\x00\x00\x00\x00\x00\x00\x7d\x05\x7c\x02\x80\x02\x7c\x05\x53\x00\x09\x00\x74\x05\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x02\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x06\x74\x07\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x05\x7c\x06\x6a\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x06\x6a\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x03\xab\x04\x00\x00\x00\x00\x00\x00\x7d\x07\x7c\x02\x7c\x07\x5f\x06\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x07\x53\x00\x23\x00\x01\x00\x7c\x05\x6a\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x01\x00\x82\x00\x78\x03\x59\x00\x77\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[987];
+ }
+codecs_toplevel_consts_34_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 986,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x20\x52\x65\x74\x75\x72\x6e\x20\x61\x20\x77\x72\x61\x70\x70\x65\x64\x20\x76\x65\x72\x73\x69\x6f\x6e\x20\x6f\x66\x20\x66\x69\x6c\x65\x20\x77\x68\x69\x63\x68\x20\x70\x72\x6f\x76\x69\x64\x65\x73\x20\x74\x72\x61\x6e\x73\x70\x61\x72\x65\x6e\x74\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x20\x74\x72\x61\x6e\x73\x6c\x61\x74\x69\x6f\x6e\x2e\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x44\x61\x74\x61\x20\x77\x72\x69\x74\x74\x65\x6e\x20\x74\x6f\x20\x74\x68\x65\x20\x77\x72\x61\x70\x70\x65\x64\x20\x66\x69\x6c\x65\x20\x69\x73\x20\x64\x65\x63\x6f\x64\x65\x64\x20\x61\x63\x63\x6f\x72\x64\x69\x6e\x67\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x74\x6f\x20\x74\x68\x65\x20\x67\x69\x76\x65\x6e\x20\x64\x61\x74\x61\x5f\x65\x6e\x63\x6f\x64\x69\x6e\x67\x20\x61\x6e\x64\x20\x74\x68\x65\x6e\x20\x65\x6e\x63\x6f\x64\x65\x64\x20\x74\x6f\x20\x74\x68\x65\x20\x75\x6e\x64\x65\x72\x6c\x79\x69\x6e\x67\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x66\x69\x6c\x65\x20\x75\x73\x69\x6e\x67\x20\x66\x69\x6c\x65\x5f\x65\x6e\x63\x6f\x64\x69\x6e\x67\x2e\x20\x54\x68\x65\x20\x69\x6e\x74\x65\x72\x6d\x65\x64\x69\x61\x74\x65\x20\x64\x61\x74\x61\x20\x74\x79\x70\x65\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x77\x69\x6c\x6c\x20\x75\x73\x75\x61\x6c\x6c\x79\x20\x62\x65\x20\x55\x6e\x69\x63\x6f\x64\x65\x20\x62\x75\x74\x20\x64\x65\x70\x65\x6e\x64\x73\x20\x6f\x6e\x20\x74\x68\x65\x20\x73\x70\x65\x63\x69\x66\x69\x65\x64\x20\x63\x6f\x64\x65\x63\x73\x2e\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x42\x79\x74\x65\x73\x20\x72\x65\x61\x64\x20\x66\x72\x6f\x6d\x20\x74\x68\x65\x20\x66\x69\x6c\x65\x20\x61\x72\x65\x20\x64\x65\x63\x6f\x64\x65\x64\x20\x75\x73\x69\x6e\x67\x20\x66\x69\x6c\x65\x5f\x65\x6e\x63\x6f\x64\x69\x6e\x67\x20\x61\x6e\x64\x20\x74\x68\x65\x6e\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x70\x61\x73\x73\x65\x64\x20\x62\x61\x63\x6b\x20\x74\x6f\x20\x74\x68\x65\x20\x63\x61\x6c\x6c\x65\x72\x20\x65\x6e\x63\x6f\x64\x65\x64\x20\x75\x73\x69\x6e\x67\x20\x64\x61\x74\x61\x5f\x65\x6e\x63\x6f\x64\x69\x6e\x67\x2e\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x49\x66\x20\x66\x69\x6c\x65\x5f\x65\x6e\x63\x6f\x64\x69\x6e\x67\x20\x69\x73\x20\x6e\x6f\x74\x20\x67\x69\x76\x65\x6e\x2c\x20\x69\x74\x20\x64\x65\x66\x61\x75\x6c\x74\x73\x20\x74\x6f\x20\x64\x61\x74\x61\x5f\x65\x6e\x63\x6f\x64\x69\x6e\x67\x2e\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x65\x72\x72\x6f\x72\x73\x20\x6d\x61\x79\x20\x62\x65\x20\x67\x69\x76\x65\x6e\x20\x74\x6f\x20\x64\x65\x66\x69\x6e\x65\x20\x74\x68\x65\x20\x65\x72\x72\x6f\x72\x20\x68\x61\x6e\x64\x6c\x69\x6e\x67\x2e\x20\x49\x74\x20\x64\x65\x66\x61\x75\x6c\x74\x73\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x74\x6f\x20\x27\x73\x74\x72\x69\x63\x74\x27\x20\x77\x68\x69\x63\x68\x20\x63\x61\x75\x73\x65\x73\x20\x56\x61\x6c\x75\x65\x45\x72\x72\x6f\x72\x73\x20\x74\x6f\x20\x62\x65\x20\x72\x61\x69\x73\x65\x64\x20\x69\x6e\x20\x63\x61\x73\x65\x20\x61\x6e\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x20\x65\x72\x72\x6f\x72\x20\x6f\x63\x63\x75\x72\x73\x2e\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x54\x68\x65\x20\x72\x65\x74\x75\x72\x6e\x65\x64\x20\x77\x72\x61\x70\x70\x65\x64\x20\x66\x69\x6c\x65\x20\x6f\x62\x6a\x65\x63\x74\x20\x70\x72\x6f\x76\x69\x64\x65\x73\x20\x74\x77\x6f\x20\x65\x78\x74\x72\x61\x20\x61\x74\x74\x72\x69\x62\x75\x74\x65\x73\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x2e\x64\x61\x74\x61\x5f\x65\x6e\x63\x6f\x64\x69\x6e\x67\x20\x61\x6e\x64\x20\x2e\x66\x69\x6c\x65\x5f\x65\x6e\x63\x6f\x64\x69\x6e\x67\x20\x77\x68\x69\x63\x68\x20\x72\x65\x66\x6c\x65\x63\x74\x20\x74\x68\x65\x20\x67\x69\x76\x65\x6e\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x70\x61\x72\x61\x6d\x65\x74\x65\x72\x73\x20\x6f\x66\x20\x74\x68\x65\x20\x73\x61\x6d\x65\x20\x6e\x61\x6d\x65\x2e\x20\x54\x68\x65\x20\x61\x74\x74\x72\x69\x62\x75\x74\x65\x73\x20\x63\x61\x6e\x20\x62\x65\x20\x75\x73\x65\x64\x20\x66\x6f\x72\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x69\x6e\x74\x72\x6f\x73\x70\x65\x63\x74\x69\x6f\x6e\x20\x62\x79\x20\x50\x79\x74\x68\x6f\x6e\x20\x70\x72\x6f\x67\x72\x61\x6d\x73\x2e\x0a\x0a\x20\x20\x20\x20",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+codecs_toplevel_consts_34_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & codecs_toplevel_consts_34_consts_0._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[8];
+ }_object;
+ }
+codecs_toplevel_consts_34_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 8,
+ },
+ .ob_item = {
+ & const_str_lookup._ascii.ob_base,
+ & const_str_StreamRecoder._ascii.ob_base,
+ &_Py_ID(encode),
+ &_Py_ID(decode),
+ & const_str_streamreader._ascii.ob_base,
+ & const_str_streamwriter._ascii.ob_base,
+ & const_str_data_encoding._ascii.ob_base,
+ & const_str_file_encoding._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[107];
+ }
+codecs_toplevel_consts_34_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 106,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf0\x32\x00\x08\x15\xd0\x07\x1c\xd8\x18\x25\x88\x0d\xdc\x10\x16\x90\x7d\xd3\x10\x25\x80\x49\xdc\x10\x16\x90\x7d\xd3\x10\x25\x80\x49\xdc\x09\x16\x90\x74\x98\x59\xd7\x1d\x2d\xd1\x1d\x2d\xa8\x79\xd7\x2f\x3f\xd1\x2f\x3f\xd8\x17\x20\xd7\x17\x2d\xd1\x17\x2d\xa8\x79\xd7\x2f\x45\xd1\x2f\x45\xc0\x76\xf3\x03\x01\x0a\x4f\x01\x80\x42\xf0\x06\x00\x18\x25\x80\x42\xd4\x04\x14\xd8\x17\x24\x80\x42\xd4\x04\x14\xd8\x0b\x0d\x80\x49",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[10];
+ }
+const_str_data_info = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 9,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "data_info",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[10];
+ }
+const_str_file_info = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 9,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "file_info",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[3];
+ }
+const_str_sr = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 2,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "sr",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[7];
+ }_object;
+ }
+codecs_toplevel_consts_34_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 7,
+ },
+ .ob_item = {
+ &_Py_ID(file),
+ & const_str_data_encoding._ascii.ob_base,
+ & const_str_file_encoding._ascii.ob_base,
+ &_Py_ID(errors),
+ & const_str_data_info._ascii.ob_base,
+ & const_str_file_info._ascii.ob_base,
+ & const_str_sr._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(198)
+codecs_toplevel_consts_34 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 99,
+ },
+ .co_consts = & codecs_toplevel_consts_34_consts._object.ob_base.ob_base,
+ .co_names = & codecs_toplevel_consts_34_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 4,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 15 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 8,
+ .co_firstlineno = 932,
+ .co_nlocalsplus = 7,
+ .co_nlocals = 7,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 353,
+ .co_localsplusnames = & codecs_toplevel_consts_34_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_46_consts_9_localspluskinds.ob_base.ob_base,
+ .co_filename = & codecs_toplevel_consts_12_consts_5_filename._ascii.ob_base,
+ .co_name = & const_str_EncodedFile._ascii.ob_base,
+ .co_qualname = & const_str_EncodedFile._ascii.ob_base,
+ .co_linetable = & codecs_toplevel_consts_34_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x02\x80\x02\x7c\x01\x7d\x02\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x04\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x02\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x05\x74\x03\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x7c\x04\x6a\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x04\x6a\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x05\x6a\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x05\x6a\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x03\xab\x06\x00\x00\x00\x00\x00\x00\x7d\x06\x7c\x01\x7c\x06\x5f\x06\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x02\x7c\x06\x5f\x07\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x06\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[159];
+ }
+codecs_toplevel_consts_35_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 158,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x20\x4c\x6f\x6f\x6b\x75\x70\x20\x75\x70\x20\x74\x68\x65\x20\x63\x6f\x64\x65\x63\x20\x66\x6f\x72\x20\x74\x68\x65\x20\x67\x69\x76\x65\x6e\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x20\x61\x6e\x64\x20\x72\x65\x74\x75\x72\x6e\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x69\x74\x73\x20\x65\x6e\x63\x6f\x64\x65\x72\x20\x66\x75\x6e\x63\x74\x69\x6f\x6e\x2e\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x52\x61\x69\x73\x65\x73\x20\x61\x20\x4c\x6f\x6f\x6b\x75\x70\x45\x72\x72\x6f\x72\x20\x69\x6e\x20\x63\x61\x73\x65\x20\x74\x68\x65\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x20\x63\x61\x6e\x6e\x6f\x74\x20\x62\x65\x20\x66\x6f\x75\x6e\x64\x2e\x0a\x0a\x20\x20\x20\x20",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+codecs_toplevel_consts_35_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & codecs_toplevel_consts_35_consts_0._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+codecs_toplevel_consts_35_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & const_str_lookup._ascii.ob_base,
+ &_Py_ID(encode),
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[22];
+ }
+codecs_toplevel_consts_35_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 21,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf4\x10\x00\x0c\x12\x90\x28\xd3\x0b\x1b\xd7\x0b\x22\xd1\x0b\x22\xd0\x04\x22",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+codecs_toplevel_consts_35_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ &_Py_ID(encoding),
+ },
+ },
+};
+static
+ struct _PyCode_DEF(44)
+codecs_toplevel_consts_35 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 22,
+ },
+ .co_consts = & codecs_toplevel_consts_35_consts._object.ob_base.ob_base,
+ .co_names = & codecs_toplevel_consts_35_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 4 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 3,
+ .co_firstlineno = 970,
+ .co_nlocalsplus = 1,
+ .co_nlocals = 1,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 354,
+ .co_localsplusnames = & codecs_toplevel_consts_35_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_characters[32]),
+ .co_filename = & codecs_toplevel_consts_12_consts_5_filename._ascii.ob_base,
+ .co_name = & const_str_getencoder._ascii.ob_base,
+ .co_qualname = & const_str_getencoder._ascii.ob_base,
+ .co_linetable = & codecs_toplevel_consts_35_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[159];
+ }
+codecs_toplevel_consts_36_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 158,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x20\x4c\x6f\x6f\x6b\x75\x70\x20\x75\x70\x20\x74\x68\x65\x20\x63\x6f\x64\x65\x63\x20\x66\x6f\x72\x20\x74\x68\x65\x20\x67\x69\x76\x65\x6e\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x20\x61\x6e\x64\x20\x72\x65\x74\x75\x72\x6e\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x69\x74\x73\x20\x64\x65\x63\x6f\x64\x65\x72\x20\x66\x75\x6e\x63\x74\x69\x6f\x6e\x2e\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x52\x61\x69\x73\x65\x73\x20\x61\x20\x4c\x6f\x6f\x6b\x75\x70\x45\x72\x72\x6f\x72\x20\x69\x6e\x20\x63\x61\x73\x65\x20\x74\x68\x65\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x20\x63\x61\x6e\x6e\x6f\x74\x20\x62\x65\x20\x66\x6f\x75\x6e\x64\x2e\x0a\x0a\x20\x20\x20\x20",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+codecs_toplevel_consts_36_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & codecs_toplevel_consts_36_consts_0._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+codecs_toplevel_consts_36_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & const_str_lookup._ascii.ob_base,
+ &_Py_ID(decode),
+ },
+ },
+};
+static
+ struct _PyCode_DEF(44)
+codecs_toplevel_consts_36 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 22,
+ },
+ .co_consts = & codecs_toplevel_consts_36_consts._object.ob_base.ob_base,
+ .co_names = & codecs_toplevel_consts_36_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 4 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 3,
+ .co_firstlineno = 980,
+ .co_nlocalsplus = 1,
+ .co_nlocals = 1,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 355,
+ .co_localsplusnames = & codecs_toplevel_consts_35_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_characters[32]),
+ .co_filename = & codecs_toplevel_consts_12_consts_5_filename._ascii.ob_base,
+ .co_name = & const_str_getdecoder._ascii.ob_base,
+ .co_qualname = & const_str_getdecoder._ascii.ob_base,
+ .co_linetable = & codecs_toplevel_consts_35_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[248];
+ }
+codecs_toplevel_consts_37_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 247,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x20\x4c\x6f\x6f\x6b\x75\x70\x20\x75\x70\x20\x74\x68\x65\x20\x63\x6f\x64\x65\x63\x20\x66\x6f\x72\x20\x74\x68\x65\x20\x67\x69\x76\x65\x6e\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x20\x61\x6e\x64\x20\x72\x65\x74\x75\x72\x6e\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x69\x74\x73\x20\x49\x6e\x63\x72\x65\x6d\x65\x6e\x74\x61\x6c\x45\x6e\x63\x6f\x64\x65\x72\x20\x63\x6c\x61\x73\x73\x20\x6f\x72\x20\x66\x61\x63\x74\x6f\x72\x79\x20\x66\x75\x6e\x63\x74\x69\x6f\x6e\x2e\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x52\x61\x69\x73\x65\x73\x20\x61\x20\x4c\x6f\x6f\x6b\x75\x70\x45\x72\x72\x6f\x72\x20\x69\x6e\x20\x63\x61\x73\x65\x20\x74\x68\x65\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x20\x63\x61\x6e\x6e\x6f\x74\x20\x62\x65\x20\x66\x6f\x75\x6e\x64\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x6f\x72\x20\x74\x68\x65\x20\x63\x6f\x64\x65\x63\x73\x20\x64\x6f\x65\x73\x6e\x27\x74\x20\x70\x72\x6f\x76\x69\x64\x65\x20\x61\x6e\x20\x69\x6e\x63\x72\x65\x6d\x65\x6e\x74\x61\x6c\x20\x65\x6e\x63\x6f\x64\x65\x72\x2e\x0a\x0a\x20\x20\x20\x20",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+codecs_toplevel_consts_37_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & codecs_toplevel_consts_37_consts_0._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[12];
+ }
+const_str_LookupError = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 11,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "LookupError",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+codecs_toplevel_consts_37_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ & const_str_lookup._ascii.ob_base,
+ & const_str_incrementalencoder._ascii.ob_base,
+ & const_str_LookupError._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[42];
+ }
+codecs_toplevel_consts_37_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 41,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf4\x12\x00\x0f\x15\x90\x58\xd3\x0e\x1e\xd7\x0e\x31\xd1\x0e\x31\x80\x47\xd8\x07\x0e\x80\x7f\xdc\x0e\x19\x98\x28\xd3\x0e\x23\xd0\x08\x23\xd8\x0b\x12\x80\x4e",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[8];
+ }
+const_str_encoder = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 7,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "encoder",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+codecs_toplevel_consts_37_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ &_Py_ID(encoding),
+ & const_str_encoder._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(74)
+codecs_toplevel_consts_37 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 37,
+ },
+ .co_consts = & codecs_toplevel_consts_37_consts._object.ob_base.ob_base,
+ .co_names = & codecs_toplevel_consts_37_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 5 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 3,
+ .co_firstlineno = 990,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 2,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 356,
+ .co_localsplusnames = & codecs_toplevel_consts_37_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_14_consts_2_localspluskinds.ob_base.ob_base,
+ .co_filename = & codecs_toplevel_consts_12_consts_5_filename._ascii.ob_base,
+ .co_name = & const_str_getincrementalencoder._ascii.ob_base,
+ .co_qualname = & const_str_getincrementalencoder._ascii.ob_base,
+ .co_linetable = & codecs_toplevel_consts_37_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7d\x01\x7c\x01\x80\x0b\x74\x05\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x82\x01\x7c\x01\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[248];
+ }
+codecs_toplevel_consts_38_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 247,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x20\x4c\x6f\x6f\x6b\x75\x70\x20\x75\x70\x20\x74\x68\x65\x20\x63\x6f\x64\x65\x63\x20\x66\x6f\x72\x20\x74\x68\x65\x20\x67\x69\x76\x65\x6e\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x20\x61\x6e\x64\x20\x72\x65\x74\x75\x72\x6e\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x69\x74\x73\x20\x49\x6e\x63\x72\x65\x6d\x65\x6e\x74\x61\x6c\x44\x65\x63\x6f\x64\x65\x72\x20\x63\x6c\x61\x73\x73\x20\x6f\x72\x20\x66\x61\x63\x74\x6f\x72\x79\x20\x66\x75\x6e\x63\x74\x69\x6f\x6e\x2e\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x52\x61\x69\x73\x65\x73\x20\x61\x20\x4c\x6f\x6f\x6b\x75\x70\x45\x72\x72\x6f\x72\x20\x69\x6e\x20\x63\x61\x73\x65\x20\x74\x68\x65\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x20\x63\x61\x6e\x6e\x6f\x74\x20\x62\x65\x20\x66\x6f\x75\x6e\x64\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x6f\x72\x20\x74\x68\x65\x20\x63\x6f\x64\x65\x63\x73\x20\x64\x6f\x65\x73\x6e\x27\x74\x20\x70\x72\x6f\x76\x69\x64\x65\x20\x61\x6e\x20\x69\x6e\x63\x72\x65\x6d\x65\x6e\x74\x61\x6c\x20\x64\x65\x63\x6f\x64\x65\x72\x2e\x0a\x0a\x20\x20\x20\x20",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+codecs_toplevel_consts_38_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & codecs_toplevel_consts_38_consts_0._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+codecs_toplevel_consts_38_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ & const_str_lookup._ascii.ob_base,
+ & const_str_incrementaldecoder._ascii.ob_base,
+ & const_str_LookupError._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+codecs_toplevel_consts_38_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ &_Py_ID(encoding),
+ &_Py_ID(decoder),
+ },
+ },
+};
+static
+ struct _PyCode_DEF(74)
+codecs_toplevel_consts_38 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 37,
+ },
+ .co_consts = & codecs_toplevel_consts_38_consts._object.ob_base.ob_base,
+ .co_names = & codecs_toplevel_consts_38_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 5 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 3,
+ .co_firstlineno = 1004,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 2,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 357,
+ .co_localsplusnames = & codecs_toplevel_consts_38_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_14_consts_2_localspluskinds.ob_base.ob_base,
+ .co_filename = & codecs_toplevel_consts_12_consts_5_filename._ascii.ob_base,
+ .co_name = & const_str_getincrementaldecoder._ascii.ob_base,
+ .co_qualname = & const_str_getincrementaldecoder._ascii.ob_base,
+ .co_linetable = & codecs_toplevel_consts_37_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7d\x01\x7c\x01\x80\x0b\x74\x05\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x82\x01\x7c\x01\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[181];
+ }
+codecs_toplevel_consts_39_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 180,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x20\x4c\x6f\x6f\x6b\x75\x70\x20\x75\x70\x20\x74\x68\x65\x20\x63\x6f\x64\x65\x63\x20\x66\x6f\x72\x20\x74\x68\x65\x20\x67\x69\x76\x65\x6e\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x20\x61\x6e\x64\x20\x72\x65\x74\x75\x72\x6e\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x69\x74\x73\x20\x53\x74\x72\x65\x61\x6d\x52\x65\x61\x64\x65\x72\x20\x63\x6c\x61\x73\x73\x20\x6f\x72\x20\x66\x61\x63\x74\x6f\x72\x79\x20\x66\x75\x6e\x63\x74\x69\x6f\x6e\x2e\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x52\x61\x69\x73\x65\x73\x20\x61\x20\x4c\x6f\x6f\x6b\x75\x70\x45\x72\x72\x6f\x72\x20\x69\x6e\x20\x63\x61\x73\x65\x20\x74\x68\x65\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x20\x63\x61\x6e\x6e\x6f\x74\x20\x62\x65\x20\x66\x6f\x75\x6e\x64\x2e\x0a\x0a\x20\x20\x20\x20",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+codecs_toplevel_consts_39_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & codecs_toplevel_consts_39_consts_0._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+codecs_toplevel_consts_39_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & const_str_lookup._ascii.ob_base,
+ & const_str_streamreader._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[22];
+ }
+codecs_toplevel_consts_39_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 21,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf4\x10\x00\x0c\x12\x90\x28\xd3\x0b\x1b\xd7\x0b\x28\xd1\x0b\x28\xd0\x04\x28",
+};
+static
+ struct _PyCode_DEF(44)
+codecs_toplevel_consts_39 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 22,
+ },
+ .co_consts = & codecs_toplevel_consts_39_consts._object.ob_base.ob_base,
+ .co_names = & codecs_toplevel_consts_39_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 4 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 3,
+ .co_firstlineno = 1018,
+ .co_nlocalsplus = 1,
+ .co_nlocals = 1,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 358,
+ .co_localsplusnames = & codecs_toplevel_consts_35_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_characters[32]),
+ .co_filename = & codecs_toplevel_consts_12_consts_5_filename._ascii.ob_base,
+ .co_name = & const_str_getreader._ascii.ob_base,
+ .co_qualname = & const_str_getreader._ascii.ob_base,
+ .co_linetable = & codecs_toplevel_consts_39_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[181];
+ }
+codecs_toplevel_consts_40_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 180,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x20\x4c\x6f\x6f\x6b\x75\x70\x20\x75\x70\x20\x74\x68\x65\x20\x63\x6f\x64\x65\x63\x20\x66\x6f\x72\x20\x74\x68\x65\x20\x67\x69\x76\x65\x6e\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x20\x61\x6e\x64\x20\x72\x65\x74\x75\x72\x6e\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x69\x74\x73\x20\x53\x74\x72\x65\x61\x6d\x57\x72\x69\x74\x65\x72\x20\x63\x6c\x61\x73\x73\x20\x6f\x72\x20\x66\x61\x63\x74\x6f\x72\x79\x20\x66\x75\x6e\x63\x74\x69\x6f\x6e\x2e\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x52\x61\x69\x73\x65\x73\x20\x61\x20\x4c\x6f\x6f\x6b\x75\x70\x45\x72\x72\x6f\x72\x20\x69\x6e\x20\x63\x61\x73\x65\x20\x74\x68\x65\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x20\x63\x61\x6e\x6e\x6f\x74\x20\x62\x65\x20\x66\x6f\x75\x6e\x64\x2e\x0a\x0a\x20\x20\x20\x20",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+codecs_toplevel_consts_40_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & codecs_toplevel_consts_40_consts_0._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+codecs_toplevel_consts_40_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & const_str_lookup._ascii.ob_base,
+ & const_str_streamwriter._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(44)
+codecs_toplevel_consts_40 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 22,
+ },
+ .co_consts = & codecs_toplevel_consts_40_consts._object.ob_base.ob_base,
+ .co_names = & codecs_toplevel_consts_40_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 4 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 3,
+ .co_firstlineno = 1028,
+ .co_nlocalsplus = 1,
+ .co_nlocals = 1,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 359,
+ .co_localsplusnames = & codecs_toplevel_consts_35_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_characters[32]),
+ .co_filename = & codecs_toplevel_consts_12_consts_5_filename._ascii.ob_base,
+ .co_name = & const_str_getwriter._ascii.ob_base,
+ .co_qualname = & const_str_getwriter._ascii.ob_base,
+ .co_linetable = & codecs_toplevel_consts_39_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[192];
+ }
+codecs_toplevel_consts_41_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 191,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x0a\x20\x20\x20\x20\x45\x6e\x63\x6f\x64\x69\x6e\x67\x20\x69\x74\x65\x72\x61\x74\x6f\x72\x2e\x0a\x0a\x20\x20\x20\x20\x45\x6e\x63\x6f\x64\x65\x73\x20\x74\x68\x65\x20\x69\x6e\x70\x75\x74\x20\x73\x74\x72\x69\x6e\x67\x73\x20\x66\x72\x6f\x6d\x20\x74\x68\x65\x20\x69\x74\x65\x72\x61\x74\x6f\x72\x20\x75\x73\x69\x6e\x67\x20\x61\x6e\x20\x49\x6e\x63\x72\x65\x6d\x65\x6e\x74\x61\x6c\x45\x6e\x63\x6f\x64\x65\x72\x2e\x0a\x0a\x20\x20\x20\x20\x65\x72\x72\x6f\x72\x73\x20\x61\x6e\x64\x20\x6b\x77\x61\x72\x67\x73\x20\x61\x72\x65\x20\x70\x61\x73\x73\x65\x64\x20\x74\x68\x72\x6f\x75\x67\x68\x20\x74\x6f\x20\x74\x68\x65\x20\x49\x6e\x63\x72\x65\x6d\x65\x6e\x74\x61\x6c\x45\x6e\x63\x6f\x64\x65\x72\x0a\x20\x20\x20\x20\x63\x6f\x6e\x73\x74\x72\x75\x63\x74\x6f\x72\x2e\x0a\x20\x20\x20\x20",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[4];
+ }_object;
+ }
+codecs_toplevel_consts_41_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_item = {
+ & codecs_toplevel_consts_41_consts_0._ascii.ob_base,
+ &_Py_STR(empty),
+ Py_True,
+ Py_None,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+codecs_toplevel_consts_41_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & const_str_getincrementalencoder._ascii.ob_base,
+ &_Py_ID(encode),
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[100];
+ }
+codecs_toplevel_consts_41_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 99,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\xe8\x00\xf8\x80\x00\xf0\x12\x00\x0f\x2e\xd4\x0e\x23\xa0\x48\xd3\x0e\x2d\xa8\x66\xd1\x0e\x3f\xb8\x06\xd1\x0e\x3f\x80\x47\xd8\x11\x19\xf2\x00\x03\x05\x19\x88\x05\xd8\x11\x18\x97\x1e\x91\x1e\xa0\x05\xd3\x11\x26\x88\x06\xda\x0b\x11\xd8\x12\x18\x8b\x4c\xf0\x07\x03\x05\x19\xf0\x08\x00\x0e\x15\x8f\x5e\x89\x5e\x98\x42\xa0\x04\xd3\x0d\x25\x80\x46\xd9\x07\x0d\xd8\x0e\x14\x8b\x0c\xf0\x03\x00\x08\x0e\xf9",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[11];
+ }
+codecs_toplevel_consts_41_exceptiontable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 10,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x82\x2b\x41\x0e\x01\xae\x20\x41\x0e\x01",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[9];
+ }
+const_str_iterator = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 8,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "iterator",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[7];
+ }
+const_str_output = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 6,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "output",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[7];
+ }_object;
+ }
+codecs_toplevel_consts_41_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 7,
+ },
+ .ob_item = {
+ & const_str_iterator._ascii.ob_base,
+ &_Py_ID(encoding),
+ &_Py_ID(errors),
+ & const_str_kwargs._ascii.ob_base,
+ & const_str_encoder._ascii.ob_base,
+ &_Py_ID(input),
+ & const_str_output._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(160)
+codecs_toplevel_consts_41 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 80,
+ },
+ .co_consts = & codecs_toplevel_consts_41_consts._object.ob_base.ob_base,
+ .co_names = & codecs_toplevel_consts_41_names._object.ob_base.ob_base,
+ .co_exceptiontable = & codecs_toplevel_consts_41_exceptiontable.ob_base.ob_base,
+ .co_flags = 43,
+ .co_argcount = 3,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 12 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 5,
+ .co_firstlineno = 1038,
+ .co_nlocalsplus = 7,
+ .co_nlocals = 7,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 360,
+ .co_localsplusnames = & codecs_toplevel_consts_41_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_46_consts_9_localspluskinds.ob_base.ob_base,
+ .co_filename = & codecs_toplevel_consts_12_consts_5_filename._ascii.ob_base,
+ .co_name = & const_str_iterencode._ascii.ob_base,
+ .co_qualname = & const_str_iterencode._ascii.ob_base,
+ .co_linetable = & codecs_toplevel_consts_41_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x4b\x00\x01\x00\x97\x00\x02\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\xab\x01\x00\x00\x00\x00\x00\x00\x7c\x02\x66\x01\x69\x00\x7c\x03\xa4\x01\x8e\x01\x7d\x04\x7c\x00\x44\x00\x5d\x1a\x00\x00\x7d\x05\x7c\x04\x6a\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x05\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x06\x7c\x06\x73\x01\x8c\x17\x7c\x06\x96\x01\x97\x01\x01\x00\x8c\x1c\x04\x00\x7c\x04\x6a\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x01\x64\x02\xab\x02\x00\x00\x00\x00\x00\x00\x7d\x06\x7c\x06\x72\x05\x7c\x06\x96\x01\x97\x01\x01\x00\x79\x03\x79\x03\xad\x03\x77\x01",
+ ._co_firsttraceable = 2,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[192];
+ }
+codecs_toplevel_consts_42_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 191,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x0a\x20\x20\x20\x20\x44\x65\x63\x6f\x64\x69\x6e\x67\x20\x69\x74\x65\x72\x61\x74\x6f\x72\x2e\x0a\x0a\x20\x20\x20\x20\x44\x65\x63\x6f\x64\x65\x73\x20\x74\x68\x65\x20\x69\x6e\x70\x75\x74\x20\x73\x74\x72\x69\x6e\x67\x73\x20\x66\x72\x6f\x6d\x20\x74\x68\x65\x20\x69\x74\x65\x72\x61\x74\x6f\x72\x20\x75\x73\x69\x6e\x67\x20\x61\x6e\x20\x49\x6e\x63\x72\x65\x6d\x65\x6e\x74\x61\x6c\x44\x65\x63\x6f\x64\x65\x72\x2e\x0a\x0a\x20\x20\x20\x20\x65\x72\x72\x6f\x72\x73\x20\x61\x6e\x64\x20\x6b\x77\x61\x72\x67\x73\x20\x61\x72\x65\x20\x70\x61\x73\x73\x65\x64\x20\x74\x68\x72\x6f\x75\x67\x68\x20\x74\x6f\x20\x74\x68\x65\x20\x49\x6e\x63\x72\x65\x6d\x65\x6e\x74\x61\x6c\x44\x65\x63\x6f\x64\x65\x72\x0a\x20\x20\x20\x20\x63\x6f\x6e\x73\x74\x72\x75\x63\x74\x6f\x72\x2e\x0a\x20\x20\x20\x20",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[4];
+ }_object;
+ }
+codecs_toplevel_consts_42_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_item = {
+ & codecs_toplevel_consts_42_consts_0._ascii.ob_base,
+ (PyObject *)&_Py_SINGLETON(bytes_empty),
+ Py_True,
+ Py_None,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+codecs_toplevel_consts_42_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & const_str_getincrementaldecoder._ascii.ob_base,
+ &_Py_ID(decode),
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[100];
+ }
+codecs_toplevel_consts_42_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 99,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\xe8\x00\xf8\x80\x00\xf0\x12\x00\x0f\x2e\xd4\x0e\x23\xa0\x48\xd3\x0e\x2d\xa8\x66\xd1\x0e\x3f\xb8\x06\xd1\x0e\x3f\x80\x47\xd8\x11\x19\xf2\x00\x03\x05\x19\x88\x05\xd8\x11\x18\x97\x1e\x91\x1e\xa0\x05\xd3\x11\x26\x88\x06\xda\x0b\x11\xd8\x12\x18\x8b\x4c\xf0\x07\x03\x05\x19\xf0\x08\x00\x0e\x15\x8f\x5e\x89\x5e\x98\x43\xa0\x14\xd3\x0d\x26\x80\x46\xd9\x07\x0d\xd8\x0e\x14\x8b\x0c\xf0\x03\x00\x08\x0e\xf9",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[7];
+ }_object;
+ }
+codecs_toplevel_consts_42_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 7,
+ },
+ .ob_item = {
+ & const_str_iterator._ascii.ob_base,
+ &_Py_ID(encoding),
+ &_Py_ID(errors),
+ & const_str_kwargs._ascii.ob_base,
+ &_Py_ID(decoder),
+ &_Py_ID(input),
+ & const_str_output._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(160)
+codecs_toplevel_consts_42 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 80,
+ },
+ .co_consts = & codecs_toplevel_consts_42_consts._object.ob_base.ob_base,
+ .co_names = & codecs_toplevel_consts_42_names._object.ob_base.ob_base,
+ .co_exceptiontable = & codecs_toplevel_consts_41_exceptiontable.ob_base.ob_base,
+ .co_flags = 43,
+ .co_argcount = 3,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 12 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 5,
+ .co_firstlineno = 1056,
+ .co_nlocalsplus = 7,
+ .co_nlocals = 7,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 361,
+ .co_localsplusnames = & codecs_toplevel_consts_42_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_46_consts_9_localspluskinds.ob_base.ob_base,
+ .co_filename = & codecs_toplevel_consts_12_consts_5_filename._ascii.ob_base,
+ .co_name = & const_str_iterdecode._ascii.ob_base,
+ .co_qualname = & const_str_iterdecode._ascii.ob_base,
+ .co_linetable = & codecs_toplevel_consts_42_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x4b\x00\x01\x00\x97\x00\x02\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\xab\x01\x00\x00\x00\x00\x00\x00\x7c\x02\x66\x01\x69\x00\x7c\x03\xa4\x01\x8e\x01\x7d\x04\x7c\x00\x44\x00\x5d\x1a\x00\x00\x7d\x05\x7c\x04\x6a\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x05\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x06\x7c\x06\x73\x01\x8c\x17\x7c\x06\x96\x01\x97\x01\x01\x00\x8c\x1c\x04\x00\x7c\x04\x6a\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x01\x64\x02\xab\x02\x00\x00\x00\x00\x00\x00\x7d\x06\x7c\x06\x72\x05\x7c\x06\x96\x01\x97\x01\x01\x00\x79\x03\x79\x03\xad\x03\x77\x01",
+ ._co_firsttraceable = 2,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[137];
+ }
+codecs_toplevel_consts_43_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 136,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x20\x6d\x61\x6b\x65\x5f\x69\x64\x65\x6e\x74\x69\x74\x79\x5f\x64\x69\x63\x74\x28\x72\x6e\x67\x29\x20\x2d\x3e\x20\x64\x69\x63\x74\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x52\x65\x74\x75\x72\x6e\x20\x61\x20\x64\x69\x63\x74\x69\x6f\x6e\x61\x72\x79\x20\x77\x68\x65\x72\x65\x20\x65\x6c\x65\x6d\x65\x6e\x74\x73\x20\x6f\x66\x20\x74\x68\x65\x20\x72\x6e\x67\x20\x73\x65\x71\x75\x65\x6e\x63\x65\x20\x61\x72\x65\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x6d\x61\x70\x70\x65\x64\x20\x74\x6f\x20\x74\x68\x65\x6d\x73\x65\x6c\x76\x65\x73\x2e\x0a\x0a\x20\x20\x20\x20",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+codecs_toplevel_consts_43_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & codecs_toplevel_consts_43_consts_0._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[19];
+ }
+const_str_make_identity_dict = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 18,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "make_identity_dict",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[29];
+ }
+codecs_toplevel_consts_43_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 28,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf0\x10\x00\x1a\x1d\xd6\x0b\x1d\x90\x41\x88\x41\x88\x61\x89\x43\xd2\x0b\x1d\xd0\x04\x1d\xf9\xd2\x0b\x1d",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[5];
+ }
+codecs_toplevel_consts_43_exceptiontable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x85\x0a\x12\x04",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[4];
+ }
+const_str_rng = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 3,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "rng",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+codecs_toplevel_consts_43_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & const_str_rng._ascii.ob_base,
+ (PyObject *)&_Py_SINGLETON(strings).ascii[105],
+ },
+ },
+};
+static
+ struct _PyCode_DEF(46)
+codecs_toplevel_consts_43 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 23,
+ },
+ .co_consts = & codecs_toplevel_consts_43_consts._object.ob_base.ob_base,
+ .co_names = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_exceptiontable = & codecs_toplevel_consts_43_exceptiontable.ob_base.ob_base,
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 7 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 5,
+ .co_firstlineno = 1076,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 2,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 362,
+ .co_localsplusnames = & codecs_toplevel_consts_43_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_14_consts_2_localspluskinds.ob_base.ob_base,
+ .co_filename = & codecs_toplevel_consts_12_consts_5_filename._ascii.ob_base,
+ .co_name = & const_str_make_identity_dict._ascii.ob_base,
+ .co_qualname = & const_str_make_identity_dict._ascii.ob_base,
+ .co_linetable = & codecs_toplevel_consts_43_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x00\x44\x00\x8f\x01\x63\x02\x69\x00\x63\x02\x5d\x05\x00\x00\x7d\x01\x7c\x01\x7c\x01\x93\x02\x8c\x07\x04\x00\x63\x02\x7d\x01\x53\x00\x63\x02\x01\x00\x63\x02\x7d\x01\x77\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[387];
+ }
+codecs_toplevel_consts_44_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 386,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x20\x43\x72\x65\x61\x74\x65\x73\x20\x61\x6e\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x20\x6d\x61\x70\x20\x66\x72\x6f\x6d\x20\x61\x20\x64\x65\x63\x6f\x64\x69\x6e\x67\x20\x6d\x61\x70\x2e\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x49\x66\x20\x61\x20\x74\x61\x72\x67\x65\x74\x20\x6d\x61\x70\x70\x69\x6e\x67\x20\x69\x6e\x20\x74\x68\x65\x20\x64\x65\x63\x6f\x64\x69\x6e\x67\x20\x6d\x61\x70\x20\x6f\x63\x63\x75\x72\x73\x20\x6d\x75\x6c\x74\x69\x70\x6c\x65\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x74\x69\x6d\x65\x73\x2c\x20\x74\x68\x65\x6e\x20\x74\x68\x61\x74\x20\x74\x61\x72\x67\x65\x74\x20\x69\x73\x20\x6d\x61\x70\x70\x65\x64\x20\x74\x6f\x20\x4e\x6f\x6e\x65\x20\x28\x75\x6e\x64\x65\x66\x69\x6e\x65\x64\x20\x6d\x61\x70\x70\x69\x6e\x67\x29\x2c\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x63\x61\x75\x73\x69\x6e\x67\x20\x61\x6e\x20\x65\x78\x63\x65\x70\x74\x69\x6f\x6e\x20\x77\x68\x65\x6e\x20\x65\x6e\x63\x6f\x75\x6e\x74\x65\x72\x65\x64\x20\x62\x79\x20\x74\x68\x65\x20\x63\x68\x61\x72\x6d\x61\x70\x20\x63\x6f\x64\x65\x63\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x64\x75\x72\x69\x6e\x67\x20\x74\x72\x61\x6e\x73\x6c\x61\x74\x69\x6f\x6e\x2e\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x4f\x6e\x65\x20\x65\x78\x61\x6d\x70\x6c\x65\x20\x77\x68\x65\x72\x65\x20\x74\x68\x69\x73\x20\x68\x61\x70\x70\x65\x6e\x73\x20\x69\x73\x20\x63\x70\x38\x37\x35\x2e\x70\x79\x20\x77\x68\x69\x63\x68\x20\x64\x65\x63\x6f\x64\x65\x73\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x6d\x75\x6c\x74\x69\x70\x6c\x65\x20\x63\x68\x61\x72\x61\x63\x74\x65\x72\x20\x74\x6f\x20\x5c\x75\x30\x30\x31\x61\x2e\x0a\x0a\x20\x20\x20\x20",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+codecs_toplevel_consts_44_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & codecs_toplevel_consts_44_consts_0._ascii.ob_base,
+ Py_None,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+codecs_toplevel_consts_44_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ &_Py_ID(items),
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[18];
+ }
+const_str_make_encoding_map = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 17,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "make_encoding_map",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[70];
+ }
+codecs_toplevel_consts_44_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 69,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf0\x1a\x00\x09\x0b\x80\x41\xd8\x0f\x1b\xd7\x0f\x21\xd1\x0f\x21\xd3\x0f\x23\xf2\x00\x04\x05\x18\x89\x03\x88\x01\x88\x21\xd8\x0f\x10\x90\x41\x89\x76\xd8\x13\x14\x88\x41\x88\x61\x8a\x44\xe0\x13\x17\x88\x41\x88\x61\x8a\x44\xf0\x09\x04\x05\x18\xf0\x0a\x00\x0c\x0d\x80\x48",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[13];
+ }
+const_str_decoding_map = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 12,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "decoding_map",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[4];
+ }_object;
+ }
+codecs_toplevel_consts_44_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_item = {
+ & const_str_decoding_map._ascii.ob_base,
+ (PyObject *)&_Py_SINGLETON(strings).ascii[109],
+ (PyObject *)&_Py_SINGLETON(strings).ascii[107],
+ (PyObject *)&_Py_SINGLETON(strings).ascii[118],
+ },
+ },
+};
+static
+ struct _PyCode_DEF(88)
+codecs_toplevel_consts_44 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 44,
+ },
+ .co_consts = & codecs_toplevel_consts_44_consts._object.ob_base.ob_base,
+ .co_names = & codecs_toplevel_consts_44_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 8 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 1086,
+ .co_nlocalsplus = 4,
+ .co_nlocals = 4,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 363,
+ .co_localsplusnames = & codecs_toplevel_consts_44_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_7_consts_3_localspluskinds.ob_base.ob_base,
+ .co_filename = & codecs_toplevel_consts_12_consts_5_filename._ascii.ob_base,
+ .co_name = & const_str_make_encoding_map._ascii.ob_base,
+ .co_qualname = & const_str_make_encoding_map._ascii.ob_base,
+ .co_linetable = & codecs_toplevel_consts_44_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x69\x00\x7d\x01\x7c\x00\x6a\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x44\x00\x5d\x14\x00\x00\x5c\x02\x00\x00\x7d\x02\x7d\x03\x7c\x03\x7c\x01\x76\x01\x72\x06\x7c\x02\x7c\x01\x7c\x03\x3c\x00\x00\x00\x8c\x10\x64\x01\x7c\x01\x7c\x03\x3c\x00\x00\x00\x8c\x16\x04\x00\x7c\x01\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[18];
+ }
+const_str_xmlcharrefreplace = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 17,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "xmlcharrefreplace",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[17];
+ }
+const_str_backslashreplace = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 16,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "backslashreplace",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[12];
+ }
+const_str_namereplace = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 11,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "namereplace",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[4];
+ }_object;
+ }
+codecs_toplevel_consts_50 = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_item = {
+ &_Py_ID(r),
+ Py_None,
+ &_Py_ID(strict),
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + -1],
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+codecs_toplevel_consts_51 = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ Py_None,
+ &_Py_ID(strict),
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[53];
+ }_object;
+ }
+codecs_toplevel_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 53,
+ },
+ .ob_item = {
+ & codecs_toplevel_consts_0._ascii.ob_base,
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 0],
+ Py_None,
+ & codecs_toplevel_consts_3._object.ob_base.ob_base,
+ & codecs_toplevel_consts_4._ascii.ob_base,
+ & codecs_toplevel_consts_5._object.ob_base.ob_base,
+ & codecs_toplevel_consts_6.ob_base.ob_base,
+ & codecs_toplevel_consts_7.ob_base.ob_base,
+ & codecs_toplevel_consts_8.ob_base.ob_base,
+ & codecs_toplevel_consts_9.ob_base.ob_base,
+ & codecs_toplevel_consts_10.ob_base.ob_base,
+ &_Py_ID(little),
+ & codecs_toplevel_consts_12.ob_base.ob_base,
+ & const_str_CodecInfo._ascii.ob_base,
+ & codecs_toplevel_consts_14.ob_base.ob_base,
+ & const_str_Codec._ascii.ob_base,
+ & codecs_toplevel_consts_16.ob_base.ob_base,
+ & const_str_IncrementalEncoder._ascii.ob_base,
+ & codecs_toplevel_consts_18.ob_base.ob_base,
+ & const_str_BufferedIncrementalEncoder._ascii.ob_base,
+ & codecs_toplevel_consts_20.ob_base.ob_base,
+ & const_str_IncrementalDecoder._ascii.ob_base,
+ & codecs_toplevel_consts_22.ob_base.ob_base,
+ & const_str_BufferedIncrementalDecoder._ascii.ob_base,
+ & codecs_toplevel_consts_24.ob_base.ob_base,
+ & const_str_StreamWriter._ascii.ob_base,
+ & codecs_toplevel_consts_26.ob_base.ob_base,
+ & const_str_StreamReader._ascii.ob_base,
+ & codecs_toplevel_consts_28.ob_base.ob_base,
+ & const_str_StreamReaderWriter._ascii.ob_base,
+ & codecs_toplevel_consts_30.ob_base.ob_base,
+ & const_str_StreamRecoder._ascii.ob_base,
+ &_Py_ID(strict),
+ & codecs_toplevel_consts_33.ob_base.ob_base,
+ & codecs_toplevel_consts_34.ob_base.ob_base,
+ & codecs_toplevel_consts_35.ob_base.ob_base,
+ & codecs_toplevel_consts_36.ob_base.ob_base,
+ & codecs_toplevel_consts_37.ob_base.ob_base,
+ & codecs_toplevel_consts_38.ob_base.ob_base,
+ & codecs_toplevel_consts_39.ob_base.ob_base,
+ & codecs_toplevel_consts_40.ob_base.ob_base,
+ & codecs_toplevel_consts_41.ob_base.ob_base,
+ & codecs_toplevel_consts_42.ob_base.ob_base,
+ & codecs_toplevel_consts_43.ob_base.ob_base,
+ & codecs_toplevel_consts_44.ob_base.ob_base,
+ &_Py_ID(ignore),
+ &_Py_ID(replace),
+ & const_str_xmlcharrefreplace._ascii.ob_base,
+ & const_str_backslashreplace._ascii.ob_base,
+ & const_str_namereplace._ascii.ob_base,
+ & codecs_toplevel_consts_50._object.ob_base.ob_base,
+ & codecs_toplevel_consts_51._object.ob_base.ob_base,
+ & codecs_toplevel_consts_14_consts_5._object.ob_base.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[8];
+ }
+const_str__codecs = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 7,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_codecs",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[4];
+ }
+const_str_why = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 3,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "why",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[12];
+ }
+const_str_SystemError = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 11,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "SystemError",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[7];
+ }
+const_str__false = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 6,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_false",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[10];
+ }
+const_str_encodings = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 9,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "encodings",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[57];
+ }_object;
+ }
+codecs_toplevel_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 57,
+ },
+ .ob_item = {
+ &_Py_ID(__doc__),
+ &_Py_ID(builtins),
+ & const_str_sys._ascii.ob_base,
+ & const_str__codecs._ascii.ob_base,
+ & const_str_ImportError._ascii.ob_base,
+ & const_str_why._ascii.ob_base,
+ & const_str_SystemError._ascii.ob_base,
+ &_Py_ID(__all__),
+ & const_str_BOM_UTF8._ascii.ob_base,
+ & const_str_BOM_LE._ascii.ob_base,
+ & const_str_BOM_UTF16_LE._ascii.ob_base,
+ & const_str_BOM_BE._ascii.ob_base,
+ & const_str_BOM_UTF16_BE._ascii.ob_base,
+ & const_str_BOM_UTF32_LE._ascii.ob_base,
+ & const_str_BOM_UTF32_BE._ascii.ob_base,
+ &_Py_ID(byteorder),
+ & const_str_BOM._ascii.ob_base,
+ & const_str_BOM_UTF16._ascii.ob_base,
+ & const_str_BOM_UTF32._ascii.ob_base,
+ & const_str_BOM32_LE._ascii.ob_base,
+ & const_str_BOM32_BE._ascii.ob_base,
+ & const_str_BOM64_LE._ascii.ob_base,
+ & const_str_BOM64_BE._ascii.ob_base,
+ & const_str_tuple._ascii.ob_base,
+ & const_str_CodecInfo._ascii.ob_base,
+ & const_str_Codec._ascii.ob_base,
+ &_Py_ID(object),
+ & const_str_IncrementalEncoder._ascii.ob_base,
+ & const_str_BufferedIncrementalEncoder._ascii.ob_base,
+ & const_str_IncrementalDecoder._ascii.ob_base,
+ & const_str_BufferedIncrementalDecoder._ascii.ob_base,
+ & const_str_StreamWriter._ascii.ob_base,
+ & const_str_StreamReader._ascii.ob_base,
+ & const_str_StreamReaderWriter._ascii.ob_base,
+ & const_str_StreamRecoder._ascii.ob_base,
+ &_Py_ID(open),
+ & const_str_EncodedFile._ascii.ob_base,
+ & const_str_getencoder._ascii.ob_base,
+ & const_str_getdecoder._ascii.ob_base,
+ & const_str_getincrementalencoder._ascii.ob_base,
+ & const_str_getincrementaldecoder._ascii.ob_base,
+ & const_str_getreader._ascii.ob_base,
+ & const_str_getwriter._ascii.ob_base,
+ & const_str_iterencode._ascii.ob_base,
+ & const_str_iterdecode._ascii.ob_base,
+ & const_str_make_identity_dict._ascii.ob_base,
+ & const_str_make_encoding_map._ascii.ob_base,
+ & const_str_lookup_error._ascii.ob_base,
+ & const_str_strict_errors._ascii.ob_base,
+ & const_str_ignore_errors._ascii.ob_base,
+ & const_str_replace_errors._ascii.ob_base,
+ & const_str_xmlcharrefreplace_errors._ascii.ob_base,
+ & const_str_backslashreplace_errors._ascii.ob_base,
+ & const_str_namereplace_errors._ascii.ob_base,
+ & const_str_LookupError._ascii.ob_base,
+ & const_str__false._ascii.ob_base,
+ & const_str_encodings._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[533];
+ }
+codecs_toplevel_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 532,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\xf0\x03\x01\x01\x01\xf1\x02\x07\x01\x04\xf3\x12\x00\x01\x10\xdb\x00\x0a\xf0\x08\x03\x01\x45\x01\xdc\x04\x19\xf2\x08\x0d\x0b\x2d\x80\x07\xf0\x30\x00\x0c\x1b\x80\x08\xf0\x06\x00\x19\x24\xd0\x00\x23\x80\x06\x88\x1c\xf0\x06\x00\x19\x24\xd0\x00\x23\x80\x06\x88\x1c\xf0\x06\x00\x10\x23\x80\x0c\xf0\x06\x00\x10\x23\x80\x0c\xe0\x03\x06\x87\x3d\x81\x3d\x90\x48\xd2\x03\x1c\xf0\x06\x00\x17\x23\xd0\x04\x22\x80\x43\x88\x29\xf0\x06\x00\x11\x1d\x81\x49\xf0\x0a\x00\x17\x23\xd0\x04\x22\x80\x43\x88\x29\xf0\x06\x00\x11\x1d\x80\x49\xf0\x06\x00\x0c\x18\x80\x08\xd8\x0b\x17\x80\x08\xd8\x0b\x17\x80\x08\xd8\x0b\x17\x80\x08\xf4\x0a\x1d\x01\x26\x90\x05\xf4\x00\x1d\x01\x26\xf7\x3e\x40\x01\x01\x22\xf1\x00\x40\x01\x01\x22\xf4\x44\x02\x26\x01\x0c\x98\x16\xf4\x00\x26\x01\x0c\xf4\x50\x01\x20\x01\x22\xd0\x21\x33\xf4\x00\x20\x01\x22\xf4\x44\x01\x2f\x01\x0c\x98\x16\xf4\x00\x2f\x01\x0c\xf4\x62\x01\x22\x01\x1f\xd0\x21\x33\xf4\x00\x22\x01\x1f\xf4\x56\x01\x48\x01\x01\x48\x01\x90\x35\xf4\x00\x48\x01\x01\x48\x01\xf4\x58\x02\x78\x03\x01\x48\x01\x90\x35\xf4\x00\x78\x03\x01\x48\x01\xf7\x78\x07\x56\x01\x01\x48\x01\xf1\x00\x56\x01\x01\x48\x01\xf7\x74\x02\x73\x01\x01\x48\x01\xf1\x00\x73\x01\x01\x48\x01\xf3\x6e\x03\x2f\x01\x0e\xf3\x62\x01\x22\x01\x0e\xf2\x4c\x01\x08\x01\x23\xf2\x14\x08\x01\x23\xf2\x14\x0c\x01\x13\xf2\x1c\x0c\x01\x13\xf2\x1c\x08\x01\x29\xf2\x14\x08\x01\x29\xf3\x14\x10\x01\x15\xf3\x24\x10\x01\x15\xf2\x28\x08\x01\x1e\xf2\x14\x13\x01\x0d\xf0\x2e\x0e\x01\x1e\xd9\x14\x20\xa0\x18\xd3\x14\x2a\x80\x4d\xd9\x14\x20\xa0\x18\xd3\x14\x2a\x80\x4d\xd9\x15\x21\xa0\x29\xd3\x15\x2c\x80\x4e\xd9\x1f\x2b\xd0\x2c\x3f\xd3\x1f\x40\xd0\x04\x1c\xd9\x1e\x2a\xd0\x2b\x3d\xd3\x1e\x3e\xd0\x04\x1b\xd9\x19\x25\xa0\x6d\xd3\x19\x34\xd0\x04\x16\xf0\x18\x00\x0a\x0b\x80\x06\xd9\x03\x09\xdc\x04\x14\xf0\x03\x00\x04\x0a\xf8\xf0\x6f\x22\x00\x08\x13\xf2\x00\x01\x01\x45\x01\xd9\x0a\x15\xd0\x16\x3d\xc0\x03\xd1\x16\x43\xd3\x0a\x44\xd0\x04\x44\xfb\xf0\x03\x01\x01\x45\x01\xfb\xf0\x56\x22\x00\x08\x13\xf2\x00\x07\x01\x1e\xe0\x14\x18\x80\x4d\xd8\x14\x18\x80\x4d\xd8\x15\x19\x80\x4e\xd8\x1f\x23\xd0\x04\x1c\xd8\x1e\x22\xd0\x04\x1b\xd8\x19\x1d\xd2\x04\x16\xf0\x0f\x07\x01\x1e\xfa",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[42];
+ }
+codecs_toplevel_exceptiontable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 41,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x8c\x05\x44\x15\x00\xc3\x1b\x30\x44\x2d\x00\xc4\x15\x05\x44\x2a\x03\xc4\x1a\x0b\x44\x25\x03\xc4\x25\x05\x44\x2a\x03\xc4\x2d\x11\x45\x01\x03\xc5\x00\x01\x45\x01\x03",
+};
+static
+ struct _PyCode_DEF(648)
+codecs_toplevel = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 324,
+ },
+ .co_consts = & codecs_toplevel_consts._object.ob_base.ob_base,
+ .co_names = & codecs_toplevel_names._object.ob_base.ob_base,
+ .co_exceptiontable = & codecs_toplevel_exceptiontable.ob_base.ob_base,
+ .co_flags = 0,
+ .co_argcount = 0,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 5 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 5,
+ .co_firstlineno = 1,
+ .co_nlocalsplus = 0,
+ .co_nlocals = 0,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 364,
+ .co_localsplusnames = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_filename = & codecs_toplevel_consts_12_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_STR(anon_module),
+ .co_qualname = &_Py_STR(anon_module),
+ .co_linetable = & codecs_toplevel_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x64\x00\x5a\x00\x64\x01\x64\x02\x6c\x01\x5a\x01\x64\x01\x64\x02\x6c\x02\x5a\x02\x09\x00\x64\x01\x64\x03\x6c\x03\xad\x02\x01\x00\x67\x00\x64\x05\xa2\x01\x5a\x07\x64\x06\x5a\x08\x64\x07\x78\x01\x5a\x09\x5a\x0a\x64\x08\x78\x01\x5a\x0b\x5a\x0c\x64\x09\x5a\x0d\x64\x0a\x5a\x0e\x65\x02\x6a\x1e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x0b\x6b\x28\x00\x00\x72\x07\x65\x0a\x78\x01\x5a\x10\x5a\x11\x65\x0d\x5a\x12\x6e\x06\x65\x0c\x78\x01\x5a\x10\x5a\x11\x65\x0e\x5a\x12\x65\x0a\x5a\x13\x65\x0c\x5a\x14\x65\x0d\x5a\x15\x65\x0e\x5a\x16\x02\x00\x47\x00\x64\x0c\x84\x00\x64\x0d\x65\x17\xab\x03\x00\x00\x00\x00\x00\x00\x5a\x18\x02\x00\x47\x00\x64\x0e\x84\x00\x64\x0f\xab\x02\x00\x00\x00\x00\x00\x00\x5a\x19\x02\x00\x47\x00\x64\x10\x84\x00\x64\x11\x65\x1a\xab\x03\x00\x00\x00\x00\x00\x00\x5a\x1b\x02\x00\x47\x00\x64\x12\x84\x00\x64\x13\x65\x1b\xab\x03\x00\x00\x00\x00\x00\x00\x5a\x1c\x02\x00\x47\x00\x64\x14\x84\x00\x64\x15\x65\x1a\xab\x03\x00\x00\x00\x00\x00\x00\x5a\x1d\x02\x00\x47\x00\x64\x16\x84\x00\x64\x17\x65\x1d\xab\x03\x00\x00\x00\x00\x00\x00\x5a\x1e\x02\x00\x47\x00\x64\x18\x84\x00\x64\x19\x65\x19\xab\x03\x00\x00\x00\x00\x00\x00\x5a\x1f\x02\x00\x47\x00\x64\x1a\x84\x00\x64\x1b\x65\x19\xab\x03\x00\x00\x00\x00\x00\x00\x5a\x20\x02\x00\x47\x00\x64\x1c\x84\x00\x64\x1d\xab\x02\x00\x00\x00\x00\x00\x00\x5a\x21\x02\x00\x47\x00\x64\x1e\x84\x00\x64\x1f\xab\x02\x00\x00\x00\x00\x00\x00\x5a\x22\x64\x32\x64\x21\x84\x01\x5a\x23\x64\x33\x64\x22\x84\x01\x5a\x24\x64\x23\x84\x00\x5a\x25\x64\x24\x84\x00\x5a\x26\x64\x25\x84\x00\x5a\x27\x64\x26\x84\x00\x5a\x28\x64\x27\x84\x00\x5a\x29\x64\x28\x84\x00\x5a\x2a\x64\x34\x64\x29\x84\x01\x5a\x2b\x64\x34\x64\x2a\x84\x01\x5a\x2c\x64\x2b\x84\x00\x5a\x2d\x64\x2c\x84\x00\x5a\x2e\x09\x00\x02\x00\x65\x2f\x64\x20\xab\x01\x00\x00\x00\x00\x00\x00\x5a\x30\x02\x00\x65\x2f\x64\x2d\xab\x01\x00\x00\x00\x00\x00\x00\x5a\x31\x02\x00\x65\x2f\x64\x2e\xab\x01\x00\x00\x00\x00\x00\x00\x5a\x32\x02\x00\x65\x2f\x64\x2f\xab\x01\x00\x00\x00\x00\x00\x00\x5a\x33\x02\x00\x65\x2f\x64\x30\xab\x01\x00\x00\x00\x00\x00\x00\x5a\x34\x02\x00\x65\x2f\x64\x31\xab\x01\x00\x00\x00\x00\x00\x00\x5a\x35\x64\x01\x5a\x37\x65\x37\x72\x05\x64\x01\x64\x02\x6c\x38\x5a\x38\x79\x02\x79\x02\x23\x00\x65\x04\x24\x00\x72\x10\x5a\x05\x02\x00\x65\x06\x64\x04\x65\x05\x7a\x06\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x82\x01\x64\x02\x5a\x05\x5b\x05\x77\x01\x77\x00\x78\x03\x59\x00\x77\x01\x23\x00\x65\x36\x24\x00\x72\x0f\x01\x00\x64\x02\x5a\x30\x64\x02\x5a\x31\x64\x02\x5a\x32\x64\x02\x5a\x33\x64\x02\x5a\x34\x64\x02\x5a\x35\x59\x00\x8c\x35\x77\x00\x78\x03\x59\x00\x77\x01",
+ ._co_firsttraceable = 0,
+};
+
+PyObject *
+_Py_get_codecs_toplevel(void)
+{
+ return Py_NewRef((PyObject *) &codecs_toplevel);
+}
+
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[1474];
+ }
+io_toplevel_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 1473,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x54\x68\x65\x20\x69\x6f\x20\x6d\x6f\x64\x75\x6c\x65\x20\x70\x72\x6f\x76\x69\x64\x65\x73\x20\x74\x68\x65\x20\x50\x79\x74\x68\x6f\x6e\x20\x69\x6e\x74\x65\x72\x66\x61\x63\x65\x73\x20\x74\x6f\x20\x73\x74\x72\x65\x61\x6d\x20\x68\x61\x6e\x64\x6c\x69\x6e\x67\x2e\x20\x54\x68\x65\x0a\x62\x75\x69\x6c\x74\x69\x6e\x20\x6f\x70\x65\x6e\x20\x66\x75\x6e\x63\x74\x69\x6f\x6e\x20\x69\x73\x20\x64\x65\x66\x69\x6e\x65\x64\x20\x69\x6e\x20\x74\x68\x69\x73\x20\x6d\x6f\x64\x75\x6c\x65\x2e\x0a\x0a\x41\x74\x20\x74\x68\x65\x20\x74\x6f\x70\x20\x6f\x66\x20\x74\x68\x65\x20\x49\x2f\x4f\x20\x68\x69\x65\x72\x61\x72\x63\x68\x79\x20\x69\x73\x20\x74\x68\x65\x20\x61\x62\x73\x74\x72\x61\x63\x74\x20\x62\x61\x73\x65\x20\x63\x6c\x61\x73\x73\x20\x49\x4f\x42\x61\x73\x65\x2e\x20\x49\x74\x0a\x64\x65\x66\x69\x6e\x65\x73\x20\x74\x68\x65\x20\x62\x61\x73\x69\x63\x20\x69\x6e\x74\x65\x72\x66\x61\x63\x65\x20\x74\x6f\x20\x61\x20\x73\x74\x72\x65\x61\x6d\x2e\x20\x4e\x6f\x74\x65\x2c\x20\x68\x6f\x77\x65\x76\x65\x72\x2c\x20\x74\x68\x61\x74\x20\x74\x68\x65\x72\x65\x20\x69\x73\x20\x6e\x6f\x0a\x73\x65\x70\x61\x72\x61\x74\x69\x6f\x6e\x20\x62\x65\x74\x77\x65\x65\x6e\x20\x72\x65\x61\x64\x69\x6e\x67\x20\x61\x6e\x64\x20\x77\x72\x69\x74\x69\x6e\x67\x20\x74\x6f\x20\x73\x74\x72\x65\x61\x6d\x73\x3b\x20\x69\x6d\x70\x6c\x65\x6d\x65\x6e\x74\x61\x74\x69\x6f\x6e\x73\x20\x61\x72\x65\x0a\x61\x6c\x6c\x6f\x77\x65\x64\x20\x74\x6f\x20\x72\x61\x69\x73\x65\x20\x61\x6e\x20\x4f\x53\x45\x72\x72\x6f\x72\x20\x69\x66\x20\x74\x68\x65\x79\x20\x64\x6f\x20\x6e\x6f\x74\x20\x73\x75\x70\x70\x6f\x72\x74\x20\x61\x20\x67\x69\x76\x65\x6e\x20\x6f\x70\x65\x72\x61\x74\x69\x6f\x6e\x2e\x0a\x0a\x45\x78\x74\x65\x6e\x64\x69\x6e\x67\x20\x49\x4f\x42\x61\x73\x65\x20\x69\x73\x20\x52\x61\x77\x49\x4f\x42\x61\x73\x65\x20\x77\x68\x69\x63\x68\x20\x64\x65\x61\x6c\x73\x20\x73\x69\x6d\x70\x6c\x79\x20\x77\x69\x74\x68\x20\x74\x68\x65\x20\x72\x65\x61\x64\x69\x6e\x67\x20\x61\x6e\x64\x0a\x77\x72\x69\x74\x69\x6e\x67\x20\x6f\x66\x20\x72\x61\x77\x20\x62\x79\x74\x65\x73\x20\x74\x6f\x20\x61\x20\x73\x74\x72\x65\x61\x6d\x2e\x20\x46\x69\x6c\x65\x49\x4f\x20\x73\x75\x62\x63\x6c\x61\x73\x73\x65\x73\x20\x52\x61\x77\x49\x4f\x42\x61\x73\x65\x20\x74\x6f\x20\x70\x72\x6f\x76\x69\x64\x65\x0a\x61\x6e\x20\x69\x6e\x74\x65\x72\x66\x61\x63\x65\x20\x74\x6f\x20\x4f\x53\x20\x66\x69\x6c\x65\x73\x2e\x0a\x0a\x42\x75\x66\x66\x65\x72\x65\x64\x49\x4f\x42\x61\x73\x65\x20\x64\x65\x61\x6c\x73\x20\x77\x69\x74\x68\x20\x62\x75\x66\x66\x65\x72\x69\x6e\x67\x20\x6f\x6e\x20\x61\x20\x72\x61\x77\x20\x62\x79\x74\x65\x20\x73\x74\x72\x65\x61\x6d\x20\x28\x52\x61\x77\x49\x4f\x42\x61\x73\x65\x29\x2e\x20\x49\x74\x73\x0a\x73\x75\x62\x63\x6c\x61\x73\x73\x65\x73\x2c\x20\x42\x75\x66\x66\x65\x72\x65\x64\x57\x72\x69\x74\x65\x72\x2c\x20\x42\x75\x66\x66\x65\x72\x65\x64\x52\x65\x61\x64\x65\x72\x2c\x20\x61\x6e\x64\x20\x42\x75\x66\x66\x65\x72\x65\x64\x52\x57\x50\x61\x69\x72\x20\x62\x75\x66\x66\x65\x72\x0a\x73\x74\x72\x65\x61\x6d\x73\x20\x74\x68\x61\x74\x20\x61\x72\x65\x20\x72\x65\x61\x64\x61\x62\x6c\x65\x2c\x20\x77\x72\x69\x74\x61\x62\x6c\x65\x2c\x20\x61\x6e\x64\x20\x62\x6f\x74\x68\x20\x72\x65\x73\x70\x65\x63\x74\x69\x76\x65\x6c\x79\x2e\x0a\x42\x75\x66\x66\x65\x72\x65\x64\x52\x61\x6e\x64\x6f\x6d\x20\x70\x72\x6f\x76\x69\x64\x65\x73\x20\x61\x20\x62\x75\x66\x66\x65\x72\x65\x64\x20\x69\x6e\x74\x65\x72\x66\x61\x63\x65\x20\x74\x6f\x20\x72\x61\x6e\x64\x6f\x6d\x20\x61\x63\x63\x65\x73\x73\x0a\x73\x74\x72\x65\x61\x6d\x73\x2e\x20\x42\x79\x74\x65\x73\x49\x4f\x20\x69\x73\x20\x61\x20\x73\x69\x6d\x70\x6c\x65\x20\x73\x74\x72\x65\x61\x6d\x20\x6f\x66\x20\x69\x6e\x2d\x6d\x65\x6d\x6f\x72\x79\x20\x62\x79\x74\x65\x73\x2e\x0a\x0a\x41\x6e\x6f\x74\x68\x65\x72\x20\x49\x4f\x42\x61\x73\x65\x20\x73\x75\x62\x63\x6c\x61\x73\x73\x2c\x20\x54\x65\x78\x74\x49\x4f\x42\x61\x73\x65\x2c\x20\x64\x65\x61\x6c\x73\x20\x77\x69\x74\x68\x20\x74\x68\x65\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x20\x61\x6e\x64\x20\x64\x65\x63\x6f\x64\x69\x6e\x67\x0a\x6f\x66\x20\x73\x74\x72\x65\x61\x6d\x73\x20\x69\x6e\x74\x6f\x20\x74\x65\x78\x74\x2e\x20\x54\x65\x78\x74\x49\x4f\x57\x72\x61\x70\x70\x65\x72\x2c\x20\x77\x68\x69\x63\x68\x20\x65\x78\x74\x65\x6e\x64\x73\x20\x69\x74\x2c\x20\x69\x73\x20\x61\x20\x62\x75\x66\x66\x65\x72\x65\x64\x20\x74\x65\x78\x74\x0a\x69\x6e\x74\x65\x72\x66\x61\x63\x65\x20\x74\x6f\x20\x61\x20\x62\x75\x66\x66\x65\x72\x65\x64\x20\x72\x61\x77\x20\x73\x74\x72\x65\x61\x6d\x20\x28\x60\x42\x75\x66\x66\x65\x72\x65\x64\x49\x4f\x42\x61\x73\x65\x60\x29\x2e\x20\x46\x69\x6e\x61\x6c\x6c\x79\x2c\x20\x53\x74\x72\x69\x6e\x67\x49\x4f\x0a\x69\x73\x20\x61\x6e\x20\x69\x6e\x2d\x6d\x65\x6d\x6f\x72\x79\x20\x73\x74\x72\x65\x61\x6d\x20\x66\x6f\x72\x20\x74\x65\x78\x74\x2e\x0a\x0a\x41\x72\x67\x75\x6d\x65\x6e\x74\x20\x6e\x61\x6d\x65\x73\x20\x61\x72\x65\x20\x6e\x6f\x74\x20\x70\x61\x72\x74\x20\x6f\x66\x20\x74\x68\x65\x20\x73\x70\x65\x63\x69\x66\x69\x63\x61\x74\x69\x6f\x6e\x2c\x20\x61\x6e\x64\x20\x6f\x6e\x6c\x79\x20\x74\x68\x65\x20\x61\x72\x67\x75\x6d\x65\x6e\x74\x73\x0a\x6f\x66\x20\x6f\x70\x65\x6e\x28\x29\x20\x61\x72\x65\x20\x69\x6e\x74\x65\x6e\x64\x65\x64\x20\x74\x6f\x20\x62\x65\x20\x75\x73\x65\x64\x20\x61\x73\x20\x6b\x65\x79\x77\x6f\x72\x64\x20\x61\x72\x67\x75\x6d\x65\x6e\x74\x73\x2e\x0a\x0a\x64\x61\x74\x61\x3a\x0a\x0a\x44\x45\x46\x41\x55\x4c\x54\x5f\x42\x55\x46\x46\x45\x52\x5f\x53\x49\x5a\x45\x0a\x0a\x20\x20\x20\x41\x6e\x20\x69\x6e\x74\x20\x63\x6f\x6e\x74\x61\x69\x6e\x69\x6e\x67\x20\x74\x68\x65\x20\x64\x65\x66\x61\x75\x6c\x74\x20\x62\x75\x66\x66\x65\x72\x20\x73\x69\x7a\x65\x20\x75\x73\x65\x64\x20\x62\x79\x20\x74\x68\x65\x20\x6d\x6f\x64\x75\x6c\x65\x27\x73\x20\x62\x75\x66\x66\x65\x72\x65\x64\x0a\x20\x20\x20\x49\x2f\x4f\x20\x63\x6c\x61\x73\x73\x65\x73\x2e\x20\x6f\x70\x65\x6e\x28\x29\x20\x75\x73\x65\x73\x20\x74\x68\x65\x20\x66\x69\x6c\x65\x27\x73\x20\x62\x6c\x6b\x73\x69\x7a\x65\x20\x28\x61\x73\x20\x6f\x62\x74\x61\x69\x6e\x65\x64\x20\x62\x79\x20\x6f\x73\x2e\x73\x74\x61\x74\x29\x20\x69\x66\x0a\x20\x20\x20\x70\x6f\x73\x73\x69\x62\x6c\x65\x2e\x0a",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[236];
+ }
+io_toplevel_consts_1 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 235,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Guido van Rossum <guido@python.org>, Mike Verdone <mike.verdone@gmail.com>, Mark Russell <mark.russell@zen.co.uk>, Antoine Pitrou <solipsis@pitrou.net>, Amaury Forgeot d'Arc <amauryfa@gmail.com>, Benjamin Peterson <benjamin@python.org>",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[16];
+ }
+const_str_BlockingIOError = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 15,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "BlockingIOError",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[7];
+ }
+const_str_IOBase = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 6,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "IOBase",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[10];
+ }
+const_str_RawIOBase = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 9,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "RawIOBase",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[9];
+ }
+const_str_StringIO = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 8,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "StringIO",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[15];
+ }
+const_str_BufferedIOBase = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 14,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "BufferedIOBase",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[15];
+ }
+const_str_BufferedReader = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 14,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "BufferedReader",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[15];
+ }
+const_str_BufferedWriter = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 14,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "BufferedWriter",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[15];
+ }
+const_str_BufferedRWPair = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 14,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "BufferedRWPair",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[15];
+ }
+const_str_BufferedRandom = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 14,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "BufferedRandom",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[11];
+ }
+const_str_TextIOBase = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 10,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "TextIOBase",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[21];
+ }
+const_str_UnsupportedOperation = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 20,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "UnsupportedOperation",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[9];
+ }
+const_str_SEEK_SET = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 8,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "SEEK_SET",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[9];
+ }
+const_str_SEEK_CUR = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 8,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "SEEK_CUR",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[9];
+ }
+const_str_SEEK_END = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 8,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "SEEK_END",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[20];
+ }
+const_str_DEFAULT_BUFFER_SIZE = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 19,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "DEFAULT_BUFFER_SIZE",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[14];
+ }
+const_str_text_encoding = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 13,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "text_encoding",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[22];
+ }_object;
+ }
+io_toplevel_consts_2 = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 22,
+ },
+ .ob_item = {
+ & const_str_BlockingIOError._ascii.ob_base,
+ &_Py_ID(open),
+ & const_str_open_code._ascii.ob_base,
+ & const_str_IOBase._ascii.ob_base,
+ & const_str_RawIOBase._ascii.ob_base,
+ & const_str_FileIO._ascii.ob_base,
+ & const_str_BytesIO._ascii.ob_base,
+ & const_str_StringIO._ascii.ob_base,
+ & const_str_BufferedIOBase._ascii.ob_base,
+ & const_str_BufferedReader._ascii.ob_base,
+ & const_str_BufferedWriter._ascii.ob_base,
+ & const_str_BufferedRWPair._ascii.ob_base,
+ & const_str_BufferedRandom._ascii.ob_base,
+ & const_str_TextIOBase._ascii.ob_base,
+ &_Py_ID(TextIOWrapper),
+ & const_str_UnsupportedOperation._ascii.ob_base,
+ & const_str_SEEK_SET._ascii.ob_base,
+ & const_str_SEEK_CUR._ascii.ob_base,
+ & const_str_SEEK_END._ascii.ob_base,
+ & const_str_DEFAULT_BUFFER_SIZE._ascii.ob_base,
+ & const_str_text_encoding._ascii.ob_base,
+ & const_str_IncrementalNewlineDecoder._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[15];
+ }_object;
+ }
+io_toplevel_consts_5 = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 15,
+ },
+ .ob_item = {
+ & const_str_DEFAULT_BUFFER_SIZE._ascii.ob_base,
+ & const_str_BlockingIOError._ascii.ob_base,
+ & const_str_UnsupportedOperation._ascii.ob_base,
+ &_Py_ID(open),
+ & const_str_open_code._ascii.ob_base,
+ & const_str_FileIO._ascii.ob_base,
+ & const_str_BytesIO._ascii.ob_base,
+ & const_str_StringIO._ascii.ob_base,
+ & const_str_BufferedReader._ascii.ob_base,
+ & const_str_BufferedWriter._ascii.ob_base,
+ & const_str_BufferedRWPair._ascii.ob_base,
+ & const_str_BufferedRandom._ascii.ob_base,
+ & const_str_IncrementalNewlineDecoder._ascii.ob_base,
+ & const_str_text_encoding._ascii.ob_base,
+ &_Py_ID(TextIOWrapper),
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[3];
+ }
+const_str_io = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 2,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "io",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+io_toplevel_consts_9_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & const_str_IOBase._ascii.ob_base,
+ Py_None,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[8];
+ }
+const_str__IOBase = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 7,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_IOBase",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[6];
+ }_object;
+ }
+io_toplevel_consts_9_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 6,
+ },
+ .ob_item = {
+ &_Py_ID(__name__),
+ &_Py_ID(__module__),
+ &_Py_ID(__qualname__),
+ &_Py_ID(_io),
+ & const_str__IOBase._ascii.ob_base,
+ &_Py_ID(__doc__),
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[12];
+ }
+io_toplevel_consts_9_filename = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 11,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "<frozen io>",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[18];
+ }
+io_toplevel_consts_9_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 17,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x84\x00\xd8\x0e\x11\x8f\x6b\x89\x6b\xd7\x0e\x21\xd1\x0e\x21\x81\x47",
+};
+static
+ struct _PyCode_DEF(56)
+io_toplevel_consts_9 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 28,
+ },
+ .co_consts = & io_toplevel_consts_9_consts._object.ob_base.ob_base,
+ .co_names = & io_toplevel_consts_9_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 0,
+ .co_argcount = 0,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 1 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 1,
+ .co_firstlineno = 72,
+ .co_nlocalsplus = 0,
+ .co_nlocals = 0,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 365,
+ .co_localsplusnames = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_filename = & io_toplevel_consts_9_filename._ascii.ob_base,
+ .co_name = & const_str_IOBase._ascii.ob_base,
+ .co_qualname = & const_str_IOBase._ascii.ob_base,
+ .co_linetable = & io_toplevel_consts_9_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x65\x00\x5a\x01\x64\x00\x5a\x02\x65\x03\x6a\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5a\x05\x79\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+io_toplevel_consts_12_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & const_str_RawIOBase._ascii.ob_base,
+ Py_None,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[11];
+ }
+const_str__RawIOBase = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 10,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_RawIOBase",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[6];
+ }_object;
+ }
+io_toplevel_consts_12_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 6,
+ },
+ .ob_item = {
+ &_Py_ID(__name__),
+ &_Py_ID(__module__),
+ &_Py_ID(__qualname__),
+ &_Py_ID(_io),
+ & const_str__RawIOBase._ascii.ob_base,
+ &_Py_ID(__doc__),
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[18];
+ }
+io_toplevel_consts_12_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 17,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x84\x00\xd8\x0e\x11\x8f\x6e\x89\x6e\xd7\x0e\x24\xd1\x0e\x24\x81\x47",
+};
+static
+ struct _PyCode_DEF(56)
+io_toplevel_consts_12 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 28,
+ },
+ .co_consts = & io_toplevel_consts_12_consts._object.ob_base.ob_base,
+ .co_names = & io_toplevel_consts_12_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 0,
+ .co_argcount = 0,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 1 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 1,
+ .co_firstlineno = 75,
+ .co_nlocalsplus = 0,
+ .co_nlocals = 0,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 366,
+ .co_localsplusnames = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_filename = & io_toplevel_consts_9_filename._ascii.ob_base,
+ .co_name = & const_str_RawIOBase._ascii.ob_base,
+ .co_qualname = & const_str_RawIOBase._ascii.ob_base,
+ .co_linetable = & io_toplevel_consts_12_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x65\x00\x5a\x01\x64\x00\x5a\x02\x65\x03\x6a\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5a\x05\x79\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+io_toplevel_consts_14_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & const_str_BufferedIOBase._ascii.ob_base,
+ Py_None,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[16];
+ }
+const_str__BufferedIOBase = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 15,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_BufferedIOBase",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[6];
+ }_object;
+ }
+io_toplevel_consts_14_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 6,
+ },
+ .ob_item = {
+ &_Py_ID(__name__),
+ &_Py_ID(__module__),
+ &_Py_ID(__qualname__),
+ &_Py_ID(_io),
+ & const_str__BufferedIOBase._ascii.ob_base,
+ &_Py_ID(__doc__),
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[20];
+ }
+io_toplevel_consts_14_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 19,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x84\x00\xd8\x0e\x11\xd7\x0e\x21\xd1\x0e\x21\xd7\x0e\x29\xd1\x0e\x29\x81\x47",
+};
+static
+ struct _PyCode_DEF(56)
+io_toplevel_consts_14 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 28,
+ },
+ .co_consts = & io_toplevel_consts_14_consts._object.ob_base.ob_base,
+ .co_names = & io_toplevel_consts_14_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 0,
+ .co_argcount = 0,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 1 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 1,
+ .co_firstlineno = 78,
+ .co_nlocalsplus = 0,
+ .co_nlocals = 0,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 367,
+ .co_localsplusnames = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_filename = & io_toplevel_consts_9_filename._ascii.ob_base,
+ .co_name = & const_str_BufferedIOBase._ascii.ob_base,
+ .co_qualname = & const_str_BufferedIOBase._ascii.ob_base,
+ .co_linetable = & io_toplevel_consts_14_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x65\x00\x5a\x01\x64\x00\x5a\x02\x65\x03\x6a\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5a\x05\x79\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+io_toplevel_consts_16_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & const_str_TextIOBase._ascii.ob_base,
+ Py_None,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[12];
+ }
+const_str__TextIOBase = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 11,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_TextIOBase",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[6];
+ }_object;
+ }
+io_toplevel_consts_16_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 6,
+ },
+ .ob_item = {
+ &_Py_ID(__name__),
+ &_Py_ID(__module__),
+ &_Py_ID(__qualname__),
+ &_Py_ID(_io),
+ & const_str__TextIOBase._ascii.ob_base,
+ &_Py_ID(__doc__),
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[18];
+ }
+io_toplevel_consts_16_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 17,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x84\x00\xd8\x0e\x11\x8f\x6f\x89\x6f\xd7\x0e\x25\xd1\x0e\x25\x81\x47",
+};
+static
+ struct _PyCode_DEF(56)
+io_toplevel_consts_16 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 28,
+ },
+ .co_consts = & io_toplevel_consts_16_consts._object.ob_base.ob_base,
+ .co_names = & io_toplevel_consts_16_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 0,
+ .co_argcount = 0,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 1 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 1,
+ .co_firstlineno = 81,
+ .co_nlocalsplus = 0,
+ .co_nlocals = 0,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 368,
+ .co_localsplusnames = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_filename = & io_toplevel_consts_9_filename._ascii.ob_base,
+ .co_name = & const_str_TextIOBase._ascii.ob_base,
+ .co_qualname = & const_str_TextIOBase._ascii.ob_base,
+ .co_linetable = & io_toplevel_consts_16_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x65\x00\x5a\x01\x64\x00\x5a\x02\x65\x03\x6a\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5a\x05\x79\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+io_toplevel_consts_18 = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ &_Py_ID(_WindowsConsoleIO),
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[19];
+ }_object;
+ }
+io_toplevel_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 19,
+ },
+ .ob_item = {
+ & io_toplevel_consts_0._ascii.ob_base,
+ & io_toplevel_consts_1._ascii.ob_base,
+ & io_toplevel_consts_2._object.ob_base.ob_base,
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 0],
+ Py_None,
+ & io_toplevel_consts_5._object.ob_base.ob_base,
+ & const_str_io._ascii.ob_base,
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 1],
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 2],
+ & io_toplevel_consts_9.ob_base.ob_base,
+ & const_str_IOBase._ascii.ob_base,
+ & abc_toplevel_consts_17._object.ob_base.ob_base,
+ & io_toplevel_consts_12.ob_base.ob_base,
+ & const_str_RawIOBase._ascii.ob_base,
+ & io_toplevel_consts_14.ob_base.ob_base,
+ & const_str_BufferedIOBase._ascii.ob_base,
+ & io_toplevel_consts_16.ob_base.ob_base,
+ & const_str_TextIOBase._ascii.ob_base,
+ & io_toplevel_consts_18._object.ob_base.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[11];
+ }
+const_str___author__ = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 10,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "__author__",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[6];
+ }
+const_str_klass = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 5,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "klass",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[37];
+ }_object;
+ }
+io_toplevel_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 37,
+ },
+ .ob_item = {
+ &_Py_ID(__doc__),
+ & const_str___author__._ascii.ob_base,
+ &_Py_ID(__all__),
+ &_Py_ID(_io),
+ & const_str_abc._ascii.ob_base,
+ & const_str_DEFAULT_BUFFER_SIZE._ascii.ob_base,
+ & const_str_BlockingIOError._ascii.ob_base,
+ & const_str_UnsupportedOperation._ascii.ob_base,
+ &_Py_ID(open),
+ & const_str_open_code._ascii.ob_base,
+ & const_str_FileIO._ascii.ob_base,
+ & const_str_BytesIO._ascii.ob_base,
+ & const_str_StringIO._ascii.ob_base,
+ & const_str_BufferedReader._ascii.ob_base,
+ & const_str_BufferedWriter._ascii.ob_base,
+ & const_str_BufferedRWPair._ascii.ob_base,
+ & const_str_BufferedRandom._ascii.ob_base,
+ & const_str_IncrementalNewlineDecoder._ascii.ob_base,
+ & const_str_text_encoding._ascii.ob_base,
+ &_Py_ID(TextIOWrapper),
+ &_Py_ID(__module__),
+ & const_str_SEEK_SET._ascii.ob_base,
+ & const_str_SEEK_CUR._ascii.ob_base,
+ & const_str_SEEK_END._ascii.ob_base,
+ & const_str__IOBase._ascii.ob_base,
+ & const_str_ABCMeta._ascii.ob_base,
+ & const_str_IOBase._ascii.ob_base,
+ & const_str__RawIOBase._ascii.ob_base,
+ & const_str_RawIOBase._ascii.ob_base,
+ & const_str__BufferedIOBase._ascii.ob_base,
+ & const_str_BufferedIOBase._ascii.ob_base,
+ & const_str__TextIOBase._ascii.ob_base,
+ & const_str_TextIOBase._ascii.ob_base,
+ & const_str_register._ascii.ob_base,
+ & const_str_klass._ascii.ob_base,
+ &_Py_ID(_WindowsConsoleIO),
+ & const_str_ImportError._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[314];
+ }
+io_toplevel_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 313,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\xf0\x03\x01\x01\x01\xf1\x02\x21\x01\x04\xf0\x48\x01\x05\x0f\x38\x80\x0a\xf2\x0e\x05\x0b\x50\x01\x80\x07\xf3\x10\x00\x01\x0b\xdb\x00\x0a\xf7\x04\x03\x01\x4a\x01\xf7\x00\x03\x01\x4a\x01\xf7\x00\x03\x01\x4a\x01\xf7\x00\x03\x01\x4a\x01\xf1\x00\x03\x01\x4a\x01\xf0\x0e\x00\x23\x27\xd0\x00\x14\xd4\x00\x1f\xf0\x06\x00\x0c\x0d\x80\x08\xd8\x0b\x0c\x80\x08\xd8\x0b\x0c\x80\x08\xf4\x0a\x01\x01\x22\x88\x53\x8f\x5b\x89\x5b\xa0\x43\xa7\x4b\xa1\x4b\xf5\x00\x01\x01\x22\xf4\x06\x01\x01\x25\x90\x03\x97\x0e\x91\x0e\xa0\x06\xf4\x00\x01\x01\x25\xf4\x06\x01\x01\x2a\x90\x53\xd7\x15\x28\xd1\x15\x28\xa8\x26\xf4\x00\x01\x01\x2a\xf4\x06\x01\x01\x26\x90\x13\x97\x1f\x91\x1f\xa0\x26\xf4\x00\x01\x01\x26\xf0\x06\x00\x01\x0a\xd7\x00\x12\xd1\x00\x12\x90\x36\xd4\x00\x1a\xe0\x0e\x15\x90\x7e\xa0\x7e\xb0\x7e\xd8\x0e\x1c\xf0\x03\x01\x0e\x1e\xf2\x00\x02\x01\x23\x80\x45\xe0\x04\x12\xd7\x04\x1b\xd1\x04\x1b\x98\x45\xd5\x04\x22\xf0\x05\x02\x01\x23\xf0\x08\x00\x0f\x17\x98\x0d\xd0\x0d\x26\xf2\x00\x01\x01\x1f\x80\x45\xd8\x04\x0e\xd7\x04\x17\xd1\x04\x17\x98\x05\xd5\x04\x1e\xf0\x03\x01\x01\x1f\xe0\x04\x09\xf0\x04\x05\x01\x2a\xdd\x04\x25\xf0\x08\x00\x05\x0e\xd7\x04\x16\xd1\x04\x16\xd0\x17\x28\xd5\x04\x29\xf8\xf0\x07\x00\x08\x13\xf2\x00\x01\x01\x09\xd9\x04\x08\xf0\x03\x01\x01\x09\xfa",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[19];
+ }
+io_toplevel_exceptiontable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 18,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\xc3\x2d\x06\x44\x05\x00\xc4\x05\x05\x44\x0d\x03\xc4\x0c\x01\x44\x0d\x03",
+};
+static
+ struct _PyCode_DEF(544)
+io_toplevel = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 272,
+ },
+ .co_consts = & io_toplevel_consts._object.ob_base.ob_base,
+ .co_names = & io_toplevel_names._object.ob_base.ob_base,
+ .co_exceptiontable = & io_toplevel_exceptiontable.ob_base.ob_base,
+ .co_flags = 0,
+ .co_argcount = 0,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 6 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 6,
+ .co_firstlineno = 1,
+ .co_nlocalsplus = 0,
+ .co_nlocals = 0,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 369,
+ .co_localsplusnames = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_filename = & io_toplevel_consts_9_filename._ascii.ob_base,
+ .co_name = &_Py_STR(anon_module),
+ .co_qualname = &_Py_STR(anon_module),
+ .co_linetable = & io_toplevel_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x64\x00\x5a\x00\x64\x01\x5a\x01\x67\x00\x64\x02\xa2\x01\x5a\x02\x64\x03\x64\x04\x6c\x03\x5a\x03\x64\x03\x64\x04\x6c\x04\x5a\x04\x64\x03\x64\x05\x6c\x03\x6d\x05\x5a\x05\x6d\x06\x5a\x06\x6d\x07\x5a\x07\x6d\x08\x5a\x08\x6d\x09\x5a\x09\x6d\x0a\x5a\x0a\x6d\x0b\x5a\x0b\x6d\x0c\x5a\x0c\x6d\x0d\x5a\x0d\x6d\x0e\x5a\x0e\x6d\x0f\x5a\x0f\x6d\x10\x5a\x10\x6d\x11\x5a\x11\x6d\x12\x5a\x12\x6d\x13\x5a\x13\x01\x00\x64\x06\x65\x07\x5f\x14\x00\x00\x00\x00\x00\x00\x00\x00\x64\x03\x5a\x15\x64\x07\x5a\x16\x64\x08\x5a\x17\x02\x00\x47\x00\x64\x09\x84\x00\x64\x0a\x65\x03\x6a\x30\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\x04\x6a\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xac\x0b\xab\x04\x00\x00\x00\x00\x00\x00\x5a\x1a\x02\x00\x47\x00\x64\x0c\x84\x00\x64\x0d\x65\x03\x6a\x36\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\x1a\xab\x04\x00\x00\x00\x00\x00\x00\x5a\x1c\x02\x00\x47\x00\x64\x0e\x84\x00\x64\x0f\x65\x03\x6a\x3a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\x1a\xab\x04\x00\x00\x00\x00\x00\x00\x5a\x1e\x02\x00\x47\x00\x64\x10\x84\x00\x64\x11\x65\x03\x6a\x3e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\x1a\xab\x04\x00\x00\x00\x00\x00\x00\x5a\x20\x65\x1c\x6a\x43\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\x0a\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x65\x0b\x65\x0d\x65\x0e\x65\x10\x65\x0f\x66\x05\x44\x00\x5d\x13\x00\x00\x5a\x22\x65\x1e\x6a\x43\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\x22\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x8c\x15\x04\x00\x65\x0c\x65\x13\x66\x02\x44\x00\x5d\x13\x00\x00\x5a\x22\x65\x20\x6a\x43\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\x22\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x8c\x15\x04\x00\x5b\x22\x09\x00\x64\x03\x64\x12\x6c\x03\x6d\x23\x5a\x23\x01\x00\x65\x1c\x6a\x43\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\x23\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x79\x04\x23\x00\x65\x24\x24\x00\x72\x03\x01\x00\x59\x00\x79\x04\x77\x00\x78\x03\x59\x00\x77\x01",
+ ._co_firsttraceable = 0,
+};
+
+PyObject *
+_Py_get_io_toplevel(void)
+{
+ return Py_NewRef((PyObject *) &io_toplevel);
+}
+
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[107];
+ }
+_collections_abc_toplevel_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 106,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x41\x62\x73\x74\x72\x61\x63\x74\x20\x42\x61\x73\x65\x20\x43\x6c\x61\x73\x73\x65\x73\x20\x28\x41\x42\x43\x73\x29\x20\x66\x6f\x72\x20\x63\x6f\x6c\x6c\x65\x63\x74\x69\x6f\x6e\x73\x2c\x20\x61\x63\x63\x6f\x72\x64\x69\x6e\x67\x20\x74\x6f\x20\x50\x45\x50\x20\x33\x31\x31\x39\x2e\x0a\x0a\x55\x6e\x69\x74\x20\x74\x65\x73\x74\x73\x20\x61\x72\x65\x20\x69\x6e\x20\x74\x65\x73\x74\x5f\x63\x6f\x6c\x6c\x65\x63\x74\x69\x6f\x6e\x73\x2e\x0a",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+_collections_abc_toplevel_consts_2 = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & const_str_ABCMeta._ascii.ob_base,
+ & const_str_abstractmethod._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[26];
+ }
+_collections_abc_toplevel_consts_5_filename = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 25,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "<frozen _collections_abc>",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[3];
+ }
+const_str__f = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 2,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_f",
+};
+static
+ struct _PyCode_DEF(4)
+_collections_abc_toplevel_consts_5 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 2,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_1_consts._object.ob_base.ob_base,
+ .co_names = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 0,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 0 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 0,
+ .co_firstlineno = 40,
+ .co_nlocalsplus = 0,
+ .co_nlocals = 0,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 370,
+ .co_localsplusnames = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_filename = & _collections_abc_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = & const_str__f._ascii.ob_base,
+ .co_qualname = & const_str__f._ascii.ob_base,
+ .co_linetable = & importlib__bootstrap_external_toplevel_consts_54_consts_3_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x79\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[10];
+ }
+const_str_Awaitable = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 9,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Awaitable",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[10];
+ }
+const_str_Coroutine = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 9,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Coroutine",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[14];
+ }
+const_str_AsyncIterable = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 13,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "AsyncIterable",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[14];
+ }
+const_str_AsyncIterator = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 13,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "AsyncIterator",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[15];
+ }
+const_str_AsyncGenerator = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 14,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "AsyncGenerator",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[9];
+ }
+const_str_Hashable = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 8,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Hashable",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[9];
+ }
+const_str_Iterable = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 8,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Iterable",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[9];
+ }
+const_str_Iterator = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 8,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Iterator",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[10];
+ }
+const_str_Generator = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 9,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Generator",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[11];
+ }
+const_str_Reversible = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 10,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Reversible",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[6];
+ }
+const_str_Sized = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 5,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Sized",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[10];
+ }
+const_str_Container = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 9,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Container",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[9];
+ }
+const_str_Callable = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 8,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Callable",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[11];
+ }
+const_str_Collection = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 10,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Collection",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[4];
+ }
+const_str_Set = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 3,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Set",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[11];
+ }
+const_str_MutableSet = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 10,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "MutableSet",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[8];
+ }
+const_str_Mapping = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 7,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Mapping",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[15];
+ }
+const_str_MutableMapping = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 14,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "MutableMapping",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[12];
+ }
+const_str_MappingView = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 11,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "MappingView",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[9];
+ }
+const_str_KeysView = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 8,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "KeysView",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[10];
+ }
+const_str_ItemsView = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 9,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "ItemsView",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[11];
+ }
+const_str_ValuesView = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 10,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "ValuesView",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[9];
+ }
+const_str_Sequence = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 8,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Sequence",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[16];
+ }
+const_str_MutableSequence = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 15,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "MutableSequence",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[11];
+ }
+const_str_ByteString = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 10,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "ByteString",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[7];
+ }
+const_str_Buffer = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 6,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Buffer",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[26];
+ }_object;
+ }
+_collections_abc_toplevel_consts_6 = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 26,
+ },
+ .ob_item = {
+ & const_str_Awaitable._ascii.ob_base,
+ & const_str_Coroutine._ascii.ob_base,
+ & const_str_AsyncIterable._ascii.ob_base,
+ & const_str_AsyncIterator._ascii.ob_base,
+ & const_str_AsyncGenerator._ascii.ob_base,
+ & const_str_Hashable._ascii.ob_base,
+ & const_str_Iterable._ascii.ob_base,
+ & const_str_Iterator._ascii.ob_base,
+ & const_str_Generator._ascii.ob_base,
+ & const_str_Reversible._ascii.ob_base,
+ & const_str_Sized._ascii.ob_base,
+ & const_str_Container._ascii.ob_base,
+ & const_str_Callable._ascii.ob_base,
+ & const_str_Collection._ascii.ob_base,
+ & const_str_Set._ascii.ob_base,
+ & const_str_MutableSet._ascii.ob_base,
+ & const_str_Mapping._ascii.ob_base,
+ & const_str_MutableMapping._ascii.ob_base,
+ & const_str_MappingView._ascii.ob_base,
+ & const_str_KeysView._ascii.ob_base,
+ & const_str_ItemsView._ascii.ob_base,
+ & const_str_ValuesView._ascii.ob_base,
+ & const_str_Sequence._ascii.ob_base,
+ & const_str_MutableSequence._ascii.ob_base,
+ & const_str_ByteString._ascii.ob_base,
+ & const_str_Buffer._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[16];
+ }
+_collections_abc_toplevel_consts_7 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 15,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "collections.abc",
+};
+static
+ struct {
+ PyObject ob_base;
+ uintptr_t lv_tag;
+ digit ob_digit[1];
+ }
+const_int_1000 = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyLong_Type,
+ },
+ .lv_tag = TAG_FROM_SIGN_AND_SIZE(1, 1),
+ .ob_digit = { 1000 },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[8];
+ }
+_collections_abc_toplevel_consts_13_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 7,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\xe8\x00\xf8\x80\x00\x9b\x35",
+};
+static
+ struct _PyCode_DEF(14)
+_collections_abc_toplevel_consts_13 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 7,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_1_consts._object.ob_base.ob_base,
+ .co_names = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 35,
+ .co_argcount = 0,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 1 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 1,
+ .co_firstlineno = 88,
+ .co_nlocalsplus = 0,
+ .co_nlocals = 0,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 371,
+ .co_localsplusnames = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_filename = & _collections_abc_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_STR(anon_lambda),
+ .co_qualname = &_Py_STR(anon_lambda),
+ .co_linetable = & _collections_abc_toplevel_consts_13_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x4b\x00\x01\x00\x97\x00\x64\x00\x96\x00\x97\x01\x53\x00",
+ ._co_firsttraceable = 2,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[6];
+ }
+const_str__coro = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 5,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_coro",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[7];
+ }
+_collections_abc_toplevel_consts_14_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 6,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\xe8\x00\xf8\x81\x00\xf9",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[5];
+ }
+_collections_abc_toplevel_consts_14_exceptiontable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x82\x02\x04\x01",
+};
+static
+ struct _PyCode_DEF(12)
+_collections_abc_toplevel_consts_14 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 6,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_1_consts._object.ob_base.ob_base,
+ .co_names = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_exceptiontable = & _collections_abc_toplevel_consts_14_exceptiontable.ob_base.ob_base,
+ .co_flags = 131,
+ .co_argcount = 0,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 2 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 2,
+ .co_firstlineno = 90,
+ .co_nlocalsplus = 0,
+ .co_nlocals = 0,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 372,
+ .co_localsplusnames = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_filename = & _collections_abc_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = & const_str__coro._ascii.ob_base,
+ .co_qualname = & const_str__coro._ascii.ob_base,
+ .co_linetable = & _collections_abc_toplevel_consts_14_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x4b\x00\x01\x00\x97\x00\x79\x00\xad\x03\x77\x01",
+ ._co_firsttraceable = 2,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[4];
+ }
+const_str__ag = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 3,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_ag",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[9];
+ }
+_collections_abc_toplevel_consts_15_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 8,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\xe8\x00\xf8\x80\x00\x95\x15\xf9",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[5];
+ }
+_collections_abc_toplevel_consts_15_exceptiontable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x82\x07\x09\x01",
+};
+static
+ struct _PyCode_DEF(22)
+_collections_abc_toplevel_consts_15 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 11,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_1_consts._object.ob_base.ob_base,
+ .co_names = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_exceptiontable = & _collections_abc_toplevel_consts_15_exceptiontable.ob_base.ob_base,
+ .co_flags = 515,
+ .co_argcount = 0,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 2 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 2,
+ .co_firstlineno = 96,
+ .co_nlocalsplus = 0,
+ .co_nlocals = 0,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 373,
+ .co_localsplusnames = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_filename = & _collections_abc_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = & const_str__ag._ascii.ob_base,
+ .co_qualname = & const_str__ag._ascii.ob_base,
+ .co_linetable = & _collections_abc_toplevel_consts_15_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x4b\x00\x01\x00\x97\x00\x64\x00\xad\x04\x96\x01\x97\x01\x01\x00\x79\x00\xad\x03\x77\x01",
+ ._co_firsttraceable = 2,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[8];
+ }
+const_str___mro__ = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 7,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "__mro__",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+_collections_abc_toplevel_consts_16_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ & const_str___mro__._ascii.ob_base,
+ &_Py_ID(__dict__),
+ & const_str_NotImplemented._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[15];
+ }
+const_str__check_methods = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 14,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_check_methods",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[91];
+ }
+_collections_abc_toplevel_consts_16_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 90,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xd8\x0a\x0b\x8f\x29\x89\x29\x80\x43\xd8\x12\x19\xf2\x00\x07\x05\x22\x88\x06\xd8\x11\x14\xf2\x00\x06\x09\x22\x88\x41\xd8\x0f\x15\x98\x11\x9f\x1a\x99\x1a\xd2\x0f\x23\xd8\x13\x14\x97\x3a\x91\x3a\x98\x66\xd1\x13\x25\xd0\x13\x2d\xdc\x1b\x29\xd4\x14\x29\xd9\x10\x15\xf0\x09\x06\x09\x22\xf4\x0c\x00\x14\x22\xd2\x0c\x21\xf0\x0f\x07\x05\x22\xf0\x10\x00\x0c\x10",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[8];
+ }
+const_str_methods = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 7,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "methods",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[5];
+ }_object;
+ }
+_collections_abc_toplevel_consts_16_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 5,
+ },
+ .ob_item = {
+ (PyObject *)&_Py_SINGLETON(strings).ascii[67],
+ & const_str_methods._ascii.ob_base,
+ &_Py_ID(mro),
+ &_Py_ID(method),
+ (PyObject *)&_Py_SINGLETON(strings).ascii[66],
+ },
+ },
+};
+static
+ struct _PyCode_DEF(152)
+_collections_abc_toplevel_consts_16 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 76,
+ },
+ .co_consts = & importlib__bootstrap_external_toplevel_consts_68_consts_2_consts._object.ob_base.ob_base,
+ .co_names = & _collections_abc_toplevel_consts_16_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 7,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 9 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 104,
+ .co_nlocalsplus = 5,
+ .co_nlocals = 5,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 374,
+ .co_localsplusnames = & _collections_abc_toplevel_consts_16_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_7_consts_5_localspluskinds.ob_base.ob_base,
+ .co_filename = & _collections_abc_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = & const_str__check_methods._ascii.ob_base,
+ .co_qualname = & const_str__check_methods._ascii.ob_base,
+ .co_linetable = & _collections_abc_toplevel_consts_16_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7d\x02\x7c\x01\x44\x00\x5d\x39\x00\x00\x7d\x03\x7c\x02\x44\x00\x5d\x2b\x00\x00\x7d\x04\x7c\x03\x7c\x04\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x76\x00\x73\x01\x8c\x12\x7c\x04\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x03\x19\x00\x00\x00\x80\x0a\x74\x04\x00\x00\x00\x00\x00\x00\x00\x00\x63\x02\x01\x00\x63\x02\x01\x00\x53\x00\x01\x00\x8c\x32\x04\x00\x74\x04\x00\x00\x00\x00\x00\x00\x00\x00\x63\x02\x01\x00\x53\x00\x04\x00\x79\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[18];
+ }
+_collections_abc_toplevel_consts_17_consts_2_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 17,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Hashable.__hash__",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[6];
+ }
+_collections_abc_toplevel_consts_17_consts_2_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 5,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xe0\x0f\x10",
+};
+static
+ struct _PyCode_DEF(4)
+_collections_abc_toplevel_consts_17_consts_2 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 2,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_16_consts_2_consts._object.ob_base.ob_base,
+ .co_names = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 1 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 0,
+ .co_firstlineno = 120,
+ .co_nlocalsplus = 1,
+ .co_nlocals = 1,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 375,
+ .co_localsplusnames = & importlib__bootstrap_toplevel_consts_7_consts_2_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_characters[32]),
+ .co_filename = & _collections_abc_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__hash__),
+ .co_qualname = & _collections_abc_toplevel_consts_17_consts_2_qualname._ascii.ob_base,
+ .co_linetable = & _collections_abc_toplevel_consts_17_consts_2_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x79\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+_collections_abc_toplevel_consts_17_consts_3_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ Py_None,
+ &_Py_ID(__hash__),
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+_collections_abc_toplevel_consts_17_consts_3_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ & const_str_Hashable._ascii.ob_base,
+ & const_str__check_methods._ascii.ob_base,
+ & const_str_NotImplemented._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[26];
+ }
+_collections_abc_toplevel_consts_17_consts_3_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 25,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Hashable.__subclasshook__",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[29];
+ }
+_collections_abc_toplevel_consts_17_consts_3_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 28,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xe0\x0b\x0e\x94\x28\x89\x3f\xdc\x13\x21\xa0\x21\xa0\x5a\xd3\x13\x30\xd0\x0c\x30\xdc\x0f\x1d\xd0\x08\x1d",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+_collections_abc_toplevel_consts_17_consts_3_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & const_str_cls._ascii.ob_base,
+ (PyObject *)&_Py_SINGLETON(strings).ascii[67],
+ },
+ },
+};
+static
+ struct _PyCode_DEF(54)
+_collections_abc_toplevel_consts_17_consts_3 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 27,
+ },
+ .co_consts = & _collections_abc_toplevel_consts_17_consts_3_consts._object.ob_base.ob_base,
+ .co_names = & _collections_abc_toplevel_consts_17_consts_3_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 6 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 124,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 2,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 376,
+ .co_localsplusnames = & _collections_abc_toplevel_consts_17_consts_3_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_14_consts_2_localspluskinds.ob_base.ob_base,
+ .co_filename = & _collections_abc_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__subclasshook__),
+ .co_qualname = & _collections_abc_toplevel_consts_17_consts_3_qualname._ascii.ob_base,
+ .co_linetable = & _collections_abc_toplevel_consts_17_consts_3_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x00\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x75\x00\x72\x0c\x74\x03\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x64\x01\xab\x02\x00\x00\x00\x00\x00\x00\x53\x00\x74\x04\x00\x00\x00\x00\x00\x00\x00\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[5];
+ }_object;
+ }
+_collections_abc_toplevel_consts_17_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 5,
+ },
+ .ob_item = {
+ & const_str_Hashable._ascii.ob_base,
+ (PyObject *)& _Py_SINGLETON(tuple_empty),
+ & _collections_abc_toplevel_consts_17_consts_2.ob_base.ob_base,
+ & _collections_abc_toplevel_consts_17_consts_3.ob_base.ob_base,
+ Py_None,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[8];
+ }_object;
+ }
+_collections_abc_toplevel_consts_17_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 8,
+ },
+ .ob_item = {
+ &_Py_ID(__name__),
+ &_Py_ID(__module__),
+ &_Py_ID(__qualname__),
+ &_Py_ID(__slots__),
+ & const_str_abstractmethod._ascii.ob_base,
+ &_Py_ID(__hash__),
+ & const_str_classmethod._ascii.ob_base,
+ &_Py_ID(__subclasshook__),
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[46];
+ }
+_collections_abc_toplevel_consts_17_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 45,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x84\x00\xe0\x10\x12\x80\x49\xe0\x05\x13\xf1\x02\x01\x05\x11\xf3\x03\x00\x06\x14\xf0\x02\x01\x05\x11\xf0\x06\x00\x06\x11\xf1\x02\x03\x05\x1e\xf3\x03\x00\x06\x11\xf1\x02\x03\x05\x1e",
+};
+static
+ struct _PyCode_DEF(48)
+_collections_abc_toplevel_consts_17 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 24,
+ },
+ .co_consts = & _collections_abc_toplevel_consts_17_consts._object.ob_base.ob_base,
+ .co_names = & _collections_abc_toplevel_consts_17_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 0,
+ .co_argcount = 0,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 2 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 2,
+ .co_firstlineno = 116,
+ .co_nlocalsplus = 0,
+ .co_nlocals = 0,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 377,
+ .co_localsplusnames = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_filename = & _collections_abc_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = & const_str_Hashable._ascii.ob_base,
+ .co_qualname = & const_str_Hashable._ascii.ob_base,
+ .co_linetable = & _collections_abc_toplevel_consts_17_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x65\x00\x5a\x01\x64\x00\x5a\x02\x64\x01\x5a\x03\x65\x04\x64\x02\x84\x00\xab\x00\x00\x00\x00\x00\x00\x00\x5a\x05\x65\x06\x64\x03\x84\x00\xab\x00\x00\x00\x00\x00\x00\x00\x5a\x07\x79\x04",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[20];
+ }
+_collections_abc_toplevel_consts_20_consts_2_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 19,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Awaitable.__await__",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[10];
+ }
+_collections_abc_toplevel_consts_20_consts_2_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 9,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\xe8\x00\xf8\x80\x00\xe4\x08\x0d\xf9",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[5];
+ }
+_collections_abc_toplevel_consts_20_consts_2_exceptiontable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x82\x06\x08\x01",
+};
+static
+ struct _PyCode_DEF(20)
+_collections_abc_toplevel_consts_20_consts_2 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 10,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_1_consts._object.ob_base.ob_base,
+ .co_names = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_exceptiontable = & _collections_abc_toplevel_consts_20_consts_2_exceptiontable.ob_base.ob_base,
+ .co_flags = 35,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 3 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 2,
+ .co_firstlineno = 135,
+ .co_nlocalsplus = 1,
+ .co_nlocals = 1,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 378,
+ .co_localsplusnames = & importlib__bootstrap_toplevel_consts_7_consts_2_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_characters[32]),
+ .co_filename = & _collections_abc_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__await__),
+ .co_qualname = & _collections_abc_toplevel_consts_20_consts_2_qualname._ascii.ob_base,
+ .co_linetable = & _collections_abc_toplevel_consts_20_consts_2_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x4b\x00\x01\x00\x97\x00\x64\x00\x96\x01\x97\x01\x01\x00\x79\x00\xad\x03\x77\x01",
+ ._co_firsttraceable = 2,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+_collections_abc_toplevel_consts_20_consts_3_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ Py_None,
+ &_Py_ID(__await__),
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+_collections_abc_toplevel_consts_20_consts_3_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ & const_str_Awaitable._ascii.ob_base,
+ & const_str__check_methods._ascii.ob_base,
+ & const_str_NotImplemented._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[27];
+ }
+_collections_abc_toplevel_consts_20_consts_3_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 26,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Awaitable.__subclasshook__",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[30];
+ }
+_collections_abc_toplevel_consts_20_consts_3_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 29,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xe0\x0b\x0e\x94\x29\xd1\x0b\x1b\xdc\x13\x21\xa0\x21\xa0\x5b\xd3\x13\x31\xd0\x0c\x31\xdc\x0f\x1d\xd0\x08\x1d",
+};
+static
+ struct _PyCode_DEF(54)
+_collections_abc_toplevel_consts_20_consts_3 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 27,
+ },
+ .co_consts = & _collections_abc_toplevel_consts_20_consts_3_consts._object.ob_base.ob_base,
+ .co_names = & _collections_abc_toplevel_consts_20_consts_3_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 6 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 139,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 2,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 379,
+ .co_localsplusnames = & _collections_abc_toplevel_consts_17_consts_3_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_14_consts_2_localspluskinds.ob_base.ob_base,
+ .co_filename = & _collections_abc_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__subclasshook__),
+ .co_qualname = & _collections_abc_toplevel_consts_20_consts_3_qualname._ascii.ob_base,
+ .co_linetable = & _collections_abc_toplevel_consts_20_consts_3_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x00\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x75\x00\x72\x0c\x74\x03\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x64\x01\xab\x02\x00\x00\x00\x00\x00\x00\x53\x00\x74\x04\x00\x00\x00\x00\x00\x00\x00\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[5];
+ }_object;
+ }
+_collections_abc_toplevel_consts_20_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 5,
+ },
+ .ob_item = {
+ & const_str_Awaitable._ascii.ob_base,
+ (PyObject *)& _Py_SINGLETON(tuple_empty),
+ & _collections_abc_toplevel_consts_20_consts_2.ob_base.ob_base,
+ & _collections_abc_toplevel_consts_20_consts_3.ob_base.ob_base,
+ Py_None,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[13];
+ }
+const_str_GenericAlias = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 12,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "GenericAlias",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[10];
+ }_object;
+ }
+_collections_abc_toplevel_consts_20_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 10,
+ },
+ .ob_item = {
+ &_Py_ID(__name__),
+ &_Py_ID(__module__),
+ &_Py_ID(__qualname__),
+ &_Py_ID(__slots__),
+ & const_str_abstractmethod._ascii.ob_base,
+ &_Py_ID(__await__),
+ & const_str_classmethod._ascii.ob_base,
+ &_Py_ID(__subclasshook__),
+ & const_str_GenericAlias._ascii.ob_base,
+ &_Py_ID(__class_getitem__),
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[59];
+ }
+_collections_abc_toplevel_consts_20_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 58,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x84\x00\xe0\x10\x12\x80\x49\xe0\x05\x13\xf1\x02\x01\x05\x0e\xf3\x03\x00\x06\x14\xf0\x02\x01\x05\x0e\xf0\x06\x00\x06\x11\xf1\x02\x03\x05\x1e\xf3\x03\x00\x06\x11\xf0\x02\x03\x05\x1e\xf1\x0a\x00\x19\x24\xa0\x4c\xd3\x18\x31\xd1\x04\x15",
+};
+static
+ struct _PyCode_DEF(64)
+_collections_abc_toplevel_consts_20 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 32,
+ },
+ .co_consts = & _collections_abc_toplevel_consts_20_consts._object.ob_base.ob_base,
+ .co_names = & _collections_abc_toplevel_consts_20_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 0,
+ .co_argcount = 0,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 3 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 3,
+ .co_firstlineno = 131,
+ .co_nlocalsplus = 0,
+ .co_nlocals = 0,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 380,
+ .co_localsplusnames = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_filename = & _collections_abc_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = & const_str_Awaitable._ascii.ob_base,
+ .co_qualname = & const_str_Awaitable._ascii.ob_base,
+ .co_linetable = & _collections_abc_toplevel_consts_20_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x65\x00\x5a\x01\x64\x00\x5a\x02\x64\x01\x5a\x03\x65\x04\x64\x02\x84\x00\xab\x00\x00\x00\x00\x00\x00\x00\x5a\x05\x65\x06\x64\x03\x84\x00\xab\x00\x00\x00\x00\x00\x00\x00\x5a\x07\x02\x00\x65\x06\x65\x08\xab\x01\x00\x00\x00\x00\x00\x00\x5a\x09\x79\x04",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[100];
+ }
+_collections_abc_toplevel_consts_22_consts_2_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 99,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x53\x65\x6e\x64\x20\x61\x20\x76\x61\x6c\x75\x65\x20\x69\x6e\x74\x6f\x20\x74\x68\x65\x20\x63\x6f\x72\x6f\x75\x74\x69\x6e\x65\x2e\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x52\x65\x74\x75\x72\x6e\x20\x6e\x65\x78\x74\x20\x79\x69\x65\x6c\x64\x65\x64\x20\x76\x61\x6c\x75\x65\x20\x6f\x72\x20\x72\x61\x69\x73\x65\x20\x53\x74\x6f\x70\x49\x74\x65\x72\x61\x74\x69\x6f\x6e\x2e\x0a\x20\x20\x20\x20\x20\x20\x20\x20",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+_collections_abc_toplevel_consts_22_consts_2_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & _collections_abc_toplevel_consts_22_consts_2_consts_0._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+_collections_abc_toplevel_consts_22_consts_2_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & const_str_StopIteration._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[15];
+ }
+_collections_abc_toplevel_consts_22_consts_2_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 14,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Coroutine.send",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[11];
+ }
+_collections_abc_toplevel_consts_22_consts_2_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 10,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf4\x0a\x00\x0f\x1c\xd0\x08\x1b",
+};
+static
+ struct _PyCode_DEF(14)
+_collections_abc_toplevel_consts_22_consts_2 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 7,
+ },
+ .co_consts = & _collections_abc_toplevel_consts_22_consts_2_consts._object.ob_base.ob_base,
+ .co_names = & _collections_abc_toplevel_consts_22_consts_2_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 3 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 1,
+ .co_firstlineno = 152,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 2,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 381,
+ .co_localsplusnames = & importlib__bootstrap_toplevel_consts_30_consts_11_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_14_consts_2_localspluskinds.ob_base.ob_base,
+ .co_filename = & _collections_abc_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(send),
+ .co_qualname = & _collections_abc_toplevel_consts_22_consts_2_qualname._ascii.ob_base,
+ .co_linetable = & _collections_abc_toplevel_consts_22_consts_2_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x82\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[104];
+ }
+_collections_abc_toplevel_consts_22_consts_4_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 103,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x52\x61\x69\x73\x65\x20\x61\x6e\x20\x65\x78\x63\x65\x70\x74\x69\x6f\x6e\x20\x69\x6e\x20\x74\x68\x65\x20\x63\x6f\x72\x6f\x75\x74\x69\x6e\x65\x2e\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x52\x65\x74\x75\x72\x6e\x20\x6e\x65\x78\x74\x20\x79\x69\x65\x6c\x64\x65\x64\x20\x76\x61\x6c\x75\x65\x20\x6f\x72\x20\x72\x61\x69\x73\x65\x20\x53\x74\x6f\x70\x49\x74\x65\x72\x61\x74\x69\x6f\x6e\x2e\x0a\x20\x20\x20\x20\x20\x20\x20\x20",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+_collections_abc_toplevel_consts_22_consts_4_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & _collections_abc_toplevel_consts_22_consts_4_consts_0._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[15];
+ }
+const_str_with_traceback = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 14,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "with_traceback",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+_collections_abc_toplevel_consts_22_consts_4_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & const_str_with_traceback._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[16];
+ }
+_collections_abc_toplevel_consts_22_consts_4_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 15,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Coroutine.throw",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[53];
+ }
+_collections_abc_toplevel_consts_22_consts_4_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 52,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf0\x0a\x00\x0c\x0f\x88\x3b\xd8\x0f\x11\x88\x7a\xd8\x16\x19\x90\x09\xd9\x12\x15\x93\x25\x88\x43\xd8\x0b\x0d\x88\x3e\xd8\x12\x15\xd7\x12\x24\xd1\x12\x24\xa0\x52\xd3\x12\x28\x88\x43\xd8\x0e\x11\x88\x09",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[4];
+ }
+const_str_typ = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 3,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "typ",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[4];
+ }
+const_str_val = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 3,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "val",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[4];
+ }_object;
+ }
+_collections_abc_toplevel_consts_22_consts_4_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_item = {
+ &_Py_ID(self),
+ & const_str_typ._ascii.ob_base,
+ & const_str_val._ascii.ob_base,
+ & const_str_tb._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(70)
+_collections_abc_toplevel_consts_22_consts_4 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 35,
+ },
+ .co_consts = & _collections_abc_toplevel_consts_22_consts_4_consts._object.ob_base.ob_base,
+ .co_names = & _collections_abc_toplevel_consts_22_consts_4_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 4,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 7 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 3,
+ .co_firstlineno = 159,
+ .co_nlocalsplus = 4,
+ .co_nlocals = 4,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 382,
+ .co_localsplusnames = & _collections_abc_toplevel_consts_22_consts_4_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_7_consts_3_localspluskinds.ob_base.ob_base,
+ .co_filename = & _collections_abc_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(throw),
+ .co_qualname = & _collections_abc_toplevel_consts_22_consts_4_qualname._ascii.ob_base,
+ .co_linetable = & _collections_abc_toplevel_consts_22_consts_4_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x02\x80\x0b\x7c\x03\x80\x02\x7c\x01\x82\x01\x02\x00\x7c\x01\xab\x00\x00\x00\x00\x00\x00\x00\x7d\x02\x7c\x03\x81\x11\x7c\x02\x6a\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x03\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x02\x7c\x02\x82\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[47];
+ }
+_collections_abc_toplevel_consts_22_consts_5_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 46,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x52\x61\x69\x73\x65\x20\x47\x65\x6e\x65\x72\x61\x74\x6f\x72\x45\x78\x69\x74\x20\x69\x6e\x73\x69\x64\x65\x20\x63\x6f\x72\x6f\x75\x74\x69\x6e\x65\x2e\x0a\x20\x20\x20\x20\x20\x20\x20\x20",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[32];
+ }
+_collections_abc_toplevel_consts_22_consts_5_consts_1 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 31,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "coroutine ignored GeneratorExit",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+_collections_abc_toplevel_consts_22_consts_5_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ & _collections_abc_toplevel_consts_22_consts_5_consts_0._ascii.ob_base,
+ & _collections_abc_toplevel_consts_22_consts_5_consts_1._ascii.ob_base,
+ Py_None,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[14];
+ }
+const_str_GeneratorExit = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 13,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "GeneratorExit",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[4];
+ }_object;
+ }
+_collections_abc_toplevel_consts_22_consts_5_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_item = {
+ &_Py_ID(throw),
+ & const_str_GeneratorExit._ascii.ob_base,
+ & const_str_RuntimeError._ascii.ob_base,
+ & const_str_StopIteration._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[16];
+ }
+_collections_abc_toplevel_consts_22_consts_5_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 15,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Coroutine.close",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[60];
+ }
+_collections_abc_toplevel_consts_22_consts_5_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 59,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf0\x06\x05\x09\x42\x01\xd8\x0c\x10\x8f\x4a\x89\x4a\x94\x7d\xd4\x0c\x25\xf4\x08\x00\x13\x1f\xd0\x1f\x40\xd3\x12\x41\xd0\x0c\x41\xf8\xf4\x07\x00\x11\x1e\x9c\x7d\xd0\x0f\x2d\xf2\x00\x01\x09\x11\xd9\x0c\x10\xf0\x03\x01\x09\x11\xfa",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[13];
+ }
+_collections_abc_toplevel_consts_22_consts_5_exceptiontable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 12,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x82\x15\x22\x00\xa2\x0f\x34\x03\xb3\x01\x34\x03",
+};
+static
+ struct _PyCode_DEF(110)
+_collections_abc_toplevel_consts_22_consts_5 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 55,
+ },
+ .co_consts = & _collections_abc_toplevel_consts_22_consts_5_consts._object.ob_base.ob_base,
+ .co_names = & _collections_abc_toplevel_consts_22_consts_5_names._object.ob_base.ob_base,
+ .co_exceptiontable = & _collections_abc_toplevel_consts_22_consts_5_exceptiontable.ob_base.ob_base,
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 5 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 172,
+ .co_nlocalsplus = 1,
+ .co_nlocals = 1,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 383,
+ .co_localsplusnames = & importlib__bootstrap_toplevel_consts_7_consts_2_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_characters[32]),
+ .co_filename = & _collections_abc_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(close),
+ .co_qualname = & _collections_abc_toplevel_consts_22_consts_5_qualname._ascii.ob_base,
+ .co_linetable = & _collections_abc_toplevel_consts_22_consts_5_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x09\x00\x7c\x00\x6a\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x74\x02\x00\x00\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x74\x05\x00\x00\x00\x00\x00\x00\x00\x00\x64\x01\xab\x01\x00\x00\x00\x00\x00\x00\x82\x01\x23\x00\x74\x02\x00\x00\x00\x00\x00\x00\x00\x00\x74\x06\x00\x00\x00\x00\x00\x00\x00\x00\x66\x02\x24\x00\x72\x03\x01\x00\x59\x00\x79\x02\x77\x00\x78\x03\x59\x00\x77\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[5];
+ }_object;
+ }
+_collections_abc_toplevel_consts_22_consts_6_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 5,
+ },
+ .ob_item = {
+ Py_None,
+ &_Py_ID(__await__),
+ &_Py_ID(send),
+ &_Py_ID(throw),
+ &_Py_ID(close),
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+_collections_abc_toplevel_consts_22_consts_6_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ & const_str_Coroutine._ascii.ob_base,
+ & const_str__check_methods._ascii.ob_base,
+ & const_str_NotImplemented._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[27];
+ }
+_collections_abc_toplevel_consts_22_consts_6_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 26,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Coroutine.__subclasshook__",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[36];
+ }
+_collections_abc_toplevel_consts_22_consts_6_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 35,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xe0\x0b\x0e\x94\x29\xd1\x0b\x1b\xdc\x13\x21\xa0\x21\xa0\x5b\xb0\x26\xb8\x27\xc0\x37\xd3\x13\x4b\xd0\x0c\x4b\xdc\x0f\x1d\xd0\x08\x1d",
+};
+static
+ struct _PyCode_DEF(60)
+_collections_abc_toplevel_consts_22_consts_6 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 30,
+ },
+ .co_consts = & _collections_abc_toplevel_consts_22_consts_6_consts._object.ob_base.ob_base,
+ .co_names = & _collections_abc_toplevel_consts_22_consts_6_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 9 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 7,
+ .co_firstlineno = 182,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 2,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 384,
+ .co_localsplusnames = & _collections_abc_toplevel_consts_17_consts_3_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_14_consts_2_localspluskinds.ob_base.ob_base,
+ .co_filename = & _collections_abc_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__subclasshook__),
+ .co_qualname = & _collections_abc_toplevel_consts_22_consts_6_qualname._ascii.ob_base,
+ .co_linetable = & _collections_abc_toplevel_consts_22_consts_6_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x00\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x75\x00\x72\x0f\x74\x03\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x64\x01\x64\x02\x64\x03\x64\x04\xab\x05\x00\x00\x00\x00\x00\x00\x53\x00\x74\x04\x00\x00\x00\x00\x00\x00\x00\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[8];
+ }_object;
+ }
+_collections_abc_toplevel_consts_22_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 8,
+ },
+ .ob_item = {
+ & const_str_Coroutine._ascii.ob_base,
+ (PyObject *)& _Py_SINGLETON(tuple_empty),
+ & _collections_abc_toplevel_consts_22_consts_2.ob_base.ob_base,
+ Py_None,
+ & _collections_abc_toplevel_consts_22_consts_4.ob_base.ob_base,
+ & _collections_abc_toplevel_consts_22_consts_5.ob_base.ob_base,
+ & _collections_abc_toplevel_consts_22_consts_6.ob_base.ob_base,
+ & importlib__bootstrap_toplevel_consts_44_consts_10._object.ob_base.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[10];
+ }_object;
+ }
+_collections_abc_toplevel_consts_22_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 10,
+ },
+ .ob_item = {
+ &_Py_ID(__name__),
+ &_Py_ID(__module__),
+ &_Py_ID(__qualname__),
+ &_Py_ID(__slots__),
+ & const_str_abstractmethod._ascii.ob_base,
+ &_Py_ID(send),
+ &_Py_ID(throw),
+ &_Py_ID(close),
+ & const_str_classmethod._ascii.ob_base,
+ &_Py_ID(__subclasshook__),
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[72];
+ }
+_collections_abc_toplevel_consts_22_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 71,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x84\x00\xe0\x10\x12\x80\x49\xe0\x05\x13\xf1\x02\x04\x05\x1c\xf3\x03\x00\x06\x14\xf0\x02\x04\x05\x1c\xf0\x0c\x00\x06\x14\xf2\x02\x0a\x05\x12\xf3\x03\x00\x06\x14\xf0\x02\x0a\x05\x12\xf2\x18\x08\x05\x42\x01\xf0\x14\x00\x06\x11\xf1\x02\x03\x05\x1e\xf3\x03\x00\x06\x11\xf1\x02\x03\x05\x1e",
+};
+static
+ struct _PyCode_DEF(72)
+_collections_abc_toplevel_consts_22 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 36,
+ },
+ .co_consts = & _collections_abc_toplevel_consts_22_consts._object.ob_base.ob_base,
+ .co_names = & _collections_abc_toplevel_consts_22_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 0,
+ .co_argcount = 0,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 3 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 3,
+ .co_firstlineno = 148,
+ .co_nlocalsplus = 0,
+ .co_nlocals = 0,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 385,
+ .co_localsplusnames = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_filename = & _collections_abc_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = & const_str_Coroutine._ascii.ob_base,
+ .co_qualname = & const_str_Coroutine._ascii.ob_base,
+ .co_linetable = & _collections_abc_toplevel_consts_22_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x65\x00\x5a\x01\x64\x00\x5a\x02\x64\x01\x5a\x03\x65\x04\x64\x02\x84\x00\xab\x00\x00\x00\x00\x00\x00\x00\x5a\x05\x65\x04\x64\x07\x64\x04\x84\x01\xab\x00\x00\x00\x00\x00\x00\x00\x5a\x06\x64\x05\x84\x00\x5a\x07\x65\x08\x64\x06\x84\x00\xab\x00\x00\x00\x00\x00\x00\x00\x5a\x09\x79\x03",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+_collections_abc_toplevel_consts_24_consts_2_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & const_str_AsyncIterator._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[24];
+ }
+_collections_abc_toplevel_consts_24_consts_2_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 23,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "AsyncIterable.__aiter__",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[11];
+ }
+_collections_abc_toplevel_consts_24_consts_2_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 10,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xe4\x0f\x1c\x8b\x7f\xd0\x08\x1e",
+};
+static
+ struct _PyCode_DEF(22)
+_collections_abc_toplevel_consts_24_consts_2 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 11,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_1_consts._object.ob_base.ob_base,
+ .co_names = & _collections_abc_toplevel_consts_24_consts_2_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 3 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 2,
+ .co_firstlineno = 196,
+ .co_nlocalsplus = 1,
+ .co_nlocals = 1,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 386,
+ .co_localsplusnames = & importlib__bootstrap_toplevel_consts_7_consts_2_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_characters[32]),
+ .co_filename = & _collections_abc_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__aiter__),
+ .co_qualname = & _collections_abc_toplevel_consts_24_consts_2_qualname._ascii.ob_base,
+ .co_linetable = & _collections_abc_toplevel_consts_24_consts_2_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+_collections_abc_toplevel_consts_24_consts_3_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ Py_None,
+ &_Py_ID(__aiter__),
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+_collections_abc_toplevel_consts_24_consts_3_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ & const_str_AsyncIterable._ascii.ob_base,
+ & const_str__check_methods._ascii.ob_base,
+ & const_str_NotImplemented._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[31];
+ }
+_collections_abc_toplevel_consts_24_consts_3_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 30,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "AsyncIterable.__subclasshook__",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[30];
+ }
+_collections_abc_toplevel_consts_24_consts_3_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 29,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xe0\x0b\x0e\x94\x2d\xd1\x0b\x1f\xdc\x13\x21\xa0\x21\xa0\x5b\xd3\x13\x31\xd0\x0c\x31\xdc\x0f\x1d\xd0\x08\x1d",
+};
+static
+ struct _PyCode_DEF(54)
+_collections_abc_toplevel_consts_24_consts_3 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 27,
+ },
+ .co_consts = & _collections_abc_toplevel_consts_24_consts_3_consts._object.ob_base.ob_base,
+ .co_names = & _collections_abc_toplevel_consts_24_consts_3_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 6 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 200,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 2,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 387,
+ .co_localsplusnames = & _collections_abc_toplevel_consts_17_consts_3_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_14_consts_2_localspluskinds.ob_base.ob_base,
+ .co_filename = & _collections_abc_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__subclasshook__),
+ .co_qualname = & _collections_abc_toplevel_consts_24_consts_3_qualname._ascii.ob_base,
+ .co_linetable = & _collections_abc_toplevel_consts_24_consts_3_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x00\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x75\x00\x72\x0c\x74\x03\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x64\x01\xab\x02\x00\x00\x00\x00\x00\x00\x53\x00\x74\x04\x00\x00\x00\x00\x00\x00\x00\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[5];
+ }_object;
+ }
+_collections_abc_toplevel_consts_24_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 5,
+ },
+ .ob_item = {
+ & const_str_AsyncIterable._ascii.ob_base,
+ (PyObject *)& _Py_SINGLETON(tuple_empty),
+ & _collections_abc_toplevel_consts_24_consts_2.ob_base.ob_base,
+ & _collections_abc_toplevel_consts_24_consts_3.ob_base.ob_base,
+ Py_None,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[10];
+ }_object;
+ }
+_collections_abc_toplevel_consts_24_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 10,
+ },
+ .ob_item = {
+ &_Py_ID(__name__),
+ &_Py_ID(__module__),
+ &_Py_ID(__qualname__),
+ &_Py_ID(__slots__),
+ & const_str_abstractmethod._ascii.ob_base,
+ &_Py_ID(__aiter__),
+ & const_str_classmethod._ascii.ob_base,
+ &_Py_ID(__subclasshook__),
+ & const_str_GenericAlias._ascii.ob_base,
+ &_Py_ID(__class_getitem__),
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[59];
+ }
+_collections_abc_toplevel_consts_24_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 58,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x84\x00\xe0\x10\x12\x80\x49\xe0\x05\x13\xf1\x02\x01\x05\x1f\xf3\x03\x00\x06\x14\xf0\x02\x01\x05\x1f\xf0\x06\x00\x06\x11\xf1\x02\x03\x05\x1e\xf3\x03\x00\x06\x11\xf0\x02\x03\x05\x1e\xf1\x0a\x00\x19\x24\xa0\x4c\xd3\x18\x31\xd1\x04\x15",
+};
+static
+ struct _PyCode_DEF(64)
+_collections_abc_toplevel_consts_24 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 32,
+ },
+ .co_consts = & _collections_abc_toplevel_consts_24_consts._object.ob_base.ob_base,
+ .co_names = & _collections_abc_toplevel_consts_24_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 0,
+ .co_argcount = 0,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 3 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 3,
+ .co_firstlineno = 192,
+ .co_nlocalsplus = 0,
+ .co_nlocals = 0,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 388,
+ .co_localsplusnames = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_filename = & _collections_abc_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = & const_str_AsyncIterable._ascii.ob_base,
+ .co_qualname = & const_str_AsyncIterable._ascii.ob_base,
+ .co_linetable = & _collections_abc_toplevel_consts_24_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x65\x00\x5a\x01\x64\x00\x5a\x02\x64\x01\x5a\x03\x65\x04\x64\x02\x84\x00\xab\x00\x00\x00\x00\x00\x00\x00\x5a\x05\x65\x06\x64\x03\x84\x00\xab\x00\x00\x00\x00\x00\x00\x00\x5a\x07\x02\x00\x65\x06\x65\x08\xab\x01\x00\x00\x00\x00\x00\x00\x5a\x09\x79\x04",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[65];
+ }
+_collections_abc_toplevel_consts_26_consts_2_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 64,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Return the next item or raise StopAsyncIteration when exhausted.",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+_collections_abc_toplevel_consts_26_consts_2_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & _collections_abc_toplevel_consts_26_consts_2_consts_0._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[19];
+ }
+const_str_StopAsyncIteration = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 18,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "StopAsyncIteration",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+_collections_abc_toplevel_consts_26_consts_2_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & const_str_StopAsyncIteration._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[24];
+ }
+_collections_abc_toplevel_consts_26_consts_2_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 23,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "AsyncIterator.__anext__",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[15];
+ }
+_collections_abc_toplevel_consts_26_consts_2_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 14,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\xe8\x00\xf8\x80\x00\xf4\x06\x00\x0f\x21\xd0\x08\x20\xf9",
+};
+static
+ struct _PyCode_DEF(22)
+_collections_abc_toplevel_consts_26_consts_2 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 11,
+ },
+ .co_consts = & _collections_abc_toplevel_consts_26_consts_2_consts._object.ob_base.ob_base,
+ .co_names = & _collections_abc_toplevel_consts_26_consts_2_names._object.ob_base.ob_base,
+ .co_exceptiontable = & _collections_abc_toplevel_consts_15_exceptiontable.ob_base.ob_base,
+ .co_flags = 131,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 3 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 2,
+ .co_firstlineno = 213,
+ .co_nlocalsplus = 1,
+ .co_nlocals = 1,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 389,
+ .co_localsplusnames = & importlib__bootstrap_toplevel_consts_7_consts_2_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_characters[32]),
+ .co_filename = & _collections_abc_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__anext__),
+ .co_qualname = & _collections_abc_toplevel_consts_26_consts_2_qualname._ascii.ob_base,
+ .co_linetable = & _collections_abc_toplevel_consts_26_consts_2_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x4b\x00\x01\x00\x97\x00\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x82\x01\xad\x03\x77\x01",
+ ._co_firsttraceable = 2,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[24];
+ }
+_collections_abc_toplevel_consts_26_consts_3_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 23,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "AsyncIterator.__aiter__",
+};
+static
+ struct _PyCode_DEF(6)
+_collections_abc_toplevel_consts_26_consts_3 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 3,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_1_consts._object.ob_base.ob_base,
+ .co_names = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 2 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 1,
+ .co_firstlineno = 218,
+ .co_nlocalsplus = 1,
+ .co_nlocals = 1,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 390,
+ .co_localsplusnames = & importlib__bootstrap_toplevel_consts_7_consts_2_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_characters[32]),
+ .co_filename = & _collections_abc_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__aiter__),
+ .co_qualname = & _collections_abc_toplevel_consts_26_consts_3_qualname._ascii.ob_base,
+ .co_linetable = & codecs_toplevel_consts_24_consts_7_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+_collections_abc_toplevel_consts_26_consts_4_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ Py_None,
+ &_Py_ID(__anext__),
+ &_Py_ID(__aiter__),
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+_collections_abc_toplevel_consts_26_consts_4_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ & const_str_AsyncIterator._ascii.ob_base,
+ & const_str__check_methods._ascii.ob_base,
+ & const_str_NotImplemented._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[31];
+ }
+_collections_abc_toplevel_consts_26_consts_4_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 30,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "AsyncIterator.__subclasshook__",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[32];
+ }
+_collections_abc_toplevel_consts_26_consts_4_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 31,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xe0\x0b\x0e\x94\x2d\xd1\x0b\x1f\xdc\x13\x21\xa0\x21\xa0\x5b\xb0\x2b\xd3\x13\x3e\xd0\x0c\x3e\xdc\x0f\x1d\xd0\x08\x1d",
+};
+static
+ struct _PyCode_DEF(56)
+_collections_abc_toplevel_consts_26_consts_4 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 28,
+ },
+ .co_consts = & _collections_abc_toplevel_consts_26_consts_4_consts._object.ob_base.ob_base,
+ .co_names = & _collections_abc_toplevel_consts_26_consts_4_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 7 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 5,
+ .co_firstlineno = 221,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 2,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 391,
+ .co_localsplusnames = & _collections_abc_toplevel_consts_17_consts_3_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_14_consts_2_localspluskinds.ob_base.ob_base,
+ .co_filename = & _collections_abc_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__subclasshook__),
+ .co_qualname = & _collections_abc_toplevel_consts_26_consts_4_qualname._ascii.ob_base,
+ .co_linetable = & _collections_abc_toplevel_consts_26_consts_4_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x00\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x75\x00\x72\x0d\x74\x03\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x64\x01\x64\x02\xab\x03\x00\x00\x00\x00\x00\x00\x53\x00\x74\x04\x00\x00\x00\x00\x00\x00\x00\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[6];
+ }_object;
+ }
+_collections_abc_toplevel_consts_26_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 6,
+ },
+ .ob_item = {
+ & const_str_AsyncIterator._ascii.ob_base,
+ (PyObject *)& _Py_SINGLETON(tuple_empty),
+ & _collections_abc_toplevel_consts_26_consts_2.ob_base.ob_base,
+ & _collections_abc_toplevel_consts_26_consts_3.ob_base.ob_base,
+ & _collections_abc_toplevel_consts_26_consts_4.ob_base.ob_base,
+ Py_None,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[9];
+ }_object;
+ }
+_collections_abc_toplevel_consts_26_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 9,
+ },
+ .ob_item = {
+ &_Py_ID(__name__),
+ &_Py_ID(__module__),
+ &_Py_ID(__qualname__),
+ &_Py_ID(__slots__),
+ & const_str_abstractmethod._ascii.ob_base,
+ &_Py_ID(__anext__),
+ &_Py_ID(__aiter__),
+ & const_str_classmethod._ascii.ob_base,
+ &_Py_ID(__subclasshook__),
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[51];
+ }
+_collections_abc_toplevel_consts_26_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 50,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x84\x00\xe0\x10\x12\x80\x49\xe0\x05\x13\xf1\x02\x02\x05\x21\xf3\x03\x00\x06\x14\xf0\x02\x02\x05\x21\xf2\x08\x01\x05\x14\xf0\x06\x00\x06\x11\xf1\x02\x03\x05\x1e\xf3\x03\x00\x06\x11\xf1\x02\x03\x05\x1e",
+};
+static
+ struct _PyCode_DEF(54)
+_collections_abc_toplevel_consts_26 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 27,
+ },
+ .co_consts = & _collections_abc_toplevel_consts_26_consts._object.ob_base.ob_base,
+ .co_names = & _collections_abc_toplevel_consts_26_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 0,
+ .co_argcount = 0,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 2 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 2,
+ .co_firstlineno = 209,
+ .co_nlocalsplus = 0,
+ .co_nlocals = 0,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 392,
+ .co_localsplusnames = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_filename = & _collections_abc_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = & const_str_AsyncIterator._ascii.ob_base,
+ .co_qualname = & const_str_AsyncIterator._ascii.ob_base,
+ .co_linetable = & _collections_abc_toplevel_consts_26_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x65\x00\x5a\x01\x64\x00\x5a\x02\x64\x01\x5a\x03\x65\x04\x64\x02\x84\x00\xab\x00\x00\x00\x00\x00\x00\x00\x5a\x05\x64\x03\x84\x00\x5a\x06\x65\x07\x64\x04\x84\x00\xab\x00\x00\x00\x00\x00\x00\x00\x5a\x08\x79\x05",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[113];
+ }
+_collections_abc_toplevel_consts_28_consts_2_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 112,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x52\x65\x74\x75\x72\x6e\x20\x74\x68\x65\x20\x6e\x65\x78\x74\x20\x69\x74\x65\x6d\x20\x66\x72\x6f\x6d\x20\x74\x68\x65\x20\x61\x73\x79\x6e\x63\x68\x72\x6f\x6e\x6f\x75\x73\x20\x67\x65\x6e\x65\x72\x61\x74\x6f\x72\x2e\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x57\x68\x65\x6e\x20\x65\x78\x68\x61\x75\x73\x74\x65\x64\x2c\x20\x72\x61\x69\x73\x65\x20\x53\x74\x6f\x70\x41\x73\x79\x6e\x63\x49\x74\x65\x72\x61\x74\x69\x6f\x6e\x2e\x0a\x20\x20\x20\x20\x20\x20\x20\x20",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+_collections_abc_toplevel_consts_28_consts_2_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & _collections_abc_toplevel_consts_28_consts_2_consts_0._ascii.ob_base,
+ Py_None,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[6];
+ }
+const_str_asend = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 5,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "asend",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+_collections_abc_toplevel_consts_28_consts_2_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & const_str_asend._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[25];
+ }
+_collections_abc_toplevel_consts_28_consts_2_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 24,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "AsyncGenerator.__anext__",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[30];
+ }
+_collections_abc_toplevel_consts_28_consts_2_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 29,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\xe8\x00\xf8\x80\x00\xf0\x08\x00\x16\x1a\x97\x5a\x91\x5a\xa0\x04\xd3\x15\x25\xd7\x0f\x25\xd0\x08\x25\xd0\x0f\x25\xfa",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[13];
+ }
+_collections_abc_toplevel_consts_28_consts_2_exceptiontable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 12,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x82\x15\x1e\x01\x97\x01\x1c\x04\x98\x05\x1e\x01",
+};
+static
+ struct _PyCode_DEF(64)
+_collections_abc_toplevel_consts_28_consts_2 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 32,
+ },
+ .co_consts = & _collections_abc_toplevel_consts_28_consts_2_consts._object.ob_base.ob_base,
+ .co_names = & _collections_abc_toplevel_consts_28_consts_2_names._object.ob_base.ob_base,
+ .co_exceptiontable = & _collections_abc_toplevel_consts_28_consts_2_exceptiontable.ob_base.ob_base,
+ .co_flags = 131,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 4 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 3,
+ .co_firstlineno = 232,
+ .co_nlocalsplus = 1,
+ .co_nlocals = 1,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 393,
+ .co_localsplusnames = & importlib__bootstrap_toplevel_consts_7_consts_2_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_characters[32]),
+ .co_filename = & _collections_abc_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__anext__),
+ .co_qualname = & _collections_abc_toplevel_consts_28_consts_2_qualname._ascii.ob_base,
+ .co_linetable = & _collections_abc_toplevel_consts_28_consts_2_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x4b\x00\x01\x00\x97\x00\x7c\x00\x6a\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x01\xab\x01\x00\x00\x00\x00\x00\x00\x83\x00\x64\x01\x7b\x03\x00\x00\x96\x02\x97\x03\x86\x05\x05\x00\x53\x00\x37\x00\x8c\x04\xad\x03\x77\x01",
+ ._co_firsttraceable = 2,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[118];
+ }
+_collections_abc_toplevel_consts_28_consts_3_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 117,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x53\x65\x6e\x64\x20\x61\x20\x76\x61\x6c\x75\x65\x20\x69\x6e\x74\x6f\x20\x74\x68\x65\x20\x61\x73\x79\x6e\x63\x68\x72\x6f\x6e\x6f\x75\x73\x20\x67\x65\x6e\x65\x72\x61\x74\x6f\x72\x2e\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x52\x65\x74\x75\x72\x6e\x20\x6e\x65\x78\x74\x20\x79\x69\x65\x6c\x64\x65\x64\x20\x76\x61\x6c\x75\x65\x20\x6f\x72\x20\x72\x61\x69\x73\x65\x20\x53\x74\x6f\x70\x41\x73\x79\x6e\x63\x49\x74\x65\x72\x61\x74\x69\x6f\x6e\x2e\x0a\x20\x20\x20\x20\x20\x20\x20\x20",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+_collections_abc_toplevel_consts_28_consts_3_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & _collections_abc_toplevel_consts_28_consts_3_consts_0._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[21];
+ }
+_collections_abc_toplevel_consts_28_consts_3_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 20,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "AsyncGenerator.asend",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[15];
+ }
+_collections_abc_toplevel_consts_28_consts_3_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 14,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\xe8\x00\xf8\x80\x00\xf4\x0a\x00\x0f\x21\xd0\x08\x20\xf9",
+};
+static
+ struct _PyCode_DEF(22)
+_collections_abc_toplevel_consts_28_consts_3 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 11,
+ },
+ .co_consts = & _collections_abc_toplevel_consts_28_consts_3_consts._object.ob_base.ob_base,
+ .co_names = & _collections_abc_toplevel_consts_26_consts_2_names._object.ob_base.ob_base,
+ .co_exceptiontable = & _collections_abc_toplevel_consts_15_exceptiontable.ob_base.ob_base,
+ .co_flags = 131,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 4 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 2,
+ .co_firstlineno = 238,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 2,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 394,
+ .co_localsplusnames = & importlib__bootstrap_toplevel_consts_30_consts_11_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_14_consts_2_localspluskinds.ob_base.ob_base,
+ .co_filename = & _collections_abc_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = & const_str_asend._ascii.ob_base,
+ .co_qualname = & _collections_abc_toplevel_consts_28_consts_3_qualname._ascii.ob_base,
+ .co_linetable = & _collections_abc_toplevel_consts_28_consts_3_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x4b\x00\x01\x00\x97\x00\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x82\x01\xad\x03\x77\x01",
+ ._co_firsttraceable = 2,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[122];
+ }
+_collections_abc_toplevel_consts_28_consts_5_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 121,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x52\x61\x69\x73\x65\x20\x61\x6e\x20\x65\x78\x63\x65\x70\x74\x69\x6f\x6e\x20\x69\x6e\x20\x74\x68\x65\x20\x61\x73\x79\x6e\x63\x68\x72\x6f\x6e\x6f\x75\x73\x20\x67\x65\x6e\x65\x72\x61\x74\x6f\x72\x2e\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x52\x65\x74\x75\x72\x6e\x20\x6e\x65\x78\x74\x20\x79\x69\x65\x6c\x64\x65\x64\x20\x76\x61\x6c\x75\x65\x20\x6f\x72\x20\x72\x61\x69\x73\x65\x20\x53\x74\x6f\x70\x41\x73\x79\x6e\x63\x49\x74\x65\x72\x61\x74\x69\x6f\x6e\x2e\x0a\x20\x20\x20\x20\x20\x20\x20\x20",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+_collections_abc_toplevel_consts_28_consts_5_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & _collections_abc_toplevel_consts_28_consts_5_consts_0._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[7];
+ }
+const_str_athrow = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 6,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "athrow",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[22];
+ }
+_collections_abc_toplevel_consts_28_consts_5_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 21,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "AsyncGenerator.athrow",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[57];
+ }
+_collections_abc_toplevel_consts_28_consts_5_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 56,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\xe8\x00\xf8\x80\x00\xf0\x0a\x00\x0c\x0f\x88\x3b\xd8\x0f\x11\x88\x7a\xd8\x16\x19\x90\x09\xd9\x12\x15\x93\x25\x88\x43\xd8\x0b\x0d\x88\x3e\xd8\x12\x15\xd7\x12\x24\xd1\x12\x24\xa0\x52\xd3\x12\x28\x88\x43\xd8\x0e\x11\x88\x09\xf9",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[5];
+ }
+_collections_abc_toplevel_consts_28_consts_5_exceptiontable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x82\x23\x25\x01",
+};
+static
+ struct _PyCode_DEF(78)
+_collections_abc_toplevel_consts_28_consts_5 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 39,
+ },
+ .co_consts = & _collections_abc_toplevel_consts_28_consts_5_consts._object.ob_base.ob_base,
+ .co_names = & _collections_abc_toplevel_consts_22_consts_4_names._object.ob_base.ob_base,
+ .co_exceptiontable = & _collections_abc_toplevel_consts_28_consts_5_exceptiontable.ob_base.ob_base,
+ .co_flags = 131,
+ .co_argcount = 4,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 7 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 3,
+ .co_firstlineno = 245,
+ .co_nlocalsplus = 4,
+ .co_nlocals = 4,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 395,
+ .co_localsplusnames = & _collections_abc_toplevel_consts_22_consts_4_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_7_consts_3_localspluskinds.ob_base.ob_base,
+ .co_filename = & _collections_abc_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = & const_str_athrow._ascii.ob_base,
+ .co_qualname = & _collections_abc_toplevel_consts_28_consts_5_qualname._ascii.ob_base,
+ .co_linetable = & _collections_abc_toplevel_consts_28_consts_5_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x4b\x00\x01\x00\x97\x00\x7c\x02\x80\x0b\x7c\x03\x80\x02\x7c\x01\x82\x01\x02\x00\x7c\x01\xab\x00\x00\x00\x00\x00\x00\x00\x7d\x02\x7c\x03\x81\x11\x7c\x02\x6a\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x03\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x02\x7c\x02\x82\x01\xad\x03\x77\x01",
+ ._co_firsttraceable = 2,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[45];
+ }
+_collections_abc_toplevel_consts_28_consts_6_consts_2 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 44,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "asynchronous generator ignored GeneratorExit",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+_collections_abc_toplevel_consts_28_consts_6_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ & _collections_abc_toplevel_consts_22_consts_5_consts_0._ascii.ob_base,
+ Py_None,
+ & _collections_abc_toplevel_consts_28_consts_6_consts_2._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[4];
+ }_object;
+ }
+_collections_abc_toplevel_consts_28_consts_6_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_item = {
+ & const_str_athrow._ascii.ob_base,
+ & const_str_GeneratorExit._ascii.ob_base,
+ & const_str_RuntimeError._ascii.ob_base,
+ & const_str_StopAsyncIteration._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[7];
+ }
+const_str_aclose = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 6,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "aclose",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[22];
+ }
+_collections_abc_toplevel_consts_28_consts_6_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 21,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "AsyncGenerator.aclose",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[73];
+ }
+_collections_abc_toplevel_consts_28_consts_6_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 72,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\xe8\x00\xf8\x80\x00\xf0\x06\x05\x09\x4f\x01\xd8\x12\x16\x97\x2b\x91\x2b\x9c\x6d\xd3\x12\x2c\xd7\x0c\x2c\xd0\x0c\x2c\xf4\x08\x00\x13\x1f\xd0\x1f\x4d\xd3\x12\x4e\xd0\x0c\x4e\xf0\x09\x00\x0d\x2d\xf9\xdc\x10\x1d\xd4\x1f\x31\xd0\x0f\x32\xf2\x00\x01\x09\x11\xd9\x0c\x10\xf0\x03\x01\x09\x11\xfc",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[48];
+ }
+_collections_abc_toplevel_consts_28_consts_6_exceptiontable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 47,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x82\x01\x41\x03\x01\x84\x18\x2e\x00\x9c\x01\x2c\x04\x9d\x04\x2e\x00\xa1\x0b\x41\x03\x01\xac\x01\x2e\x00\xae\x0f\x41\x00\x03\xbd\x02\x41\x03\x01\xbf\x01\x41\x00\x03\xc1\x00\x03\x41\x03\x01",
+};
+static
+ struct _PyCode_DEF(138)
+_collections_abc_toplevel_consts_28_consts_6 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 69,
+ },
+ .co_consts = & _collections_abc_toplevel_consts_28_consts_6_consts._object.ob_base.ob_base,
+ .co_names = & _collections_abc_toplevel_consts_28_consts_6_names._object.ob_base.ob_base,
+ .co_exceptiontable = & _collections_abc_toplevel_consts_28_consts_6_exceptiontable.ob_base.ob_base,
+ .co_flags = 131,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 5 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 258,
+ .co_nlocalsplus = 1,
+ .co_nlocals = 1,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 396,
+ .co_localsplusnames = & importlib__bootstrap_toplevel_consts_7_consts_2_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_characters[32]),
+ .co_filename = & _collections_abc_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = & const_str_aclose._ascii.ob_base,
+ .co_qualname = & _collections_abc_toplevel_consts_28_consts_6_qualname._ascii.ob_base,
+ .co_linetable = & _collections_abc_toplevel_consts_28_consts_6_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x4b\x00\x01\x00\x97\x00\x09\x00\x7c\x00\x6a\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x74\x02\x00\x00\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x83\x00\x64\x01\x7b\x03\x00\x00\x96\x03\x97\x03\x86\x05\x05\x00\x01\x00\x74\x05\x00\x00\x00\x00\x00\x00\x00\x00\x64\x02\xab\x01\x00\x00\x00\x00\x00\x00\x82\x01\x37\x00\x8c\x0f\x23\x00\x74\x02\x00\x00\x00\x00\x00\x00\x00\x00\x74\x06\x00\x00\x00\x00\x00\x00\x00\x00\x66\x02\x24\x00\x72\x03\x01\x00\x59\x00\x79\x01\x77\x00\x78\x03\x59\x00\x77\x01\xad\x03\x77\x01",
+ ._co_firsttraceable = 2,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[6];
+ }_object;
+ }
+_collections_abc_toplevel_consts_28_consts_7_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 6,
+ },
+ .ob_item = {
+ Py_None,
+ &_Py_ID(__aiter__),
+ &_Py_ID(__anext__),
+ & const_str_asend._ascii.ob_base,
+ & const_str_athrow._ascii.ob_base,
+ & const_str_aclose._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+_collections_abc_toplevel_consts_28_consts_7_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ & const_str_AsyncGenerator._ascii.ob_base,
+ & const_str__check_methods._ascii.ob_base,
+ & const_str_NotImplemented._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[32];
+ }
+_collections_abc_toplevel_consts_28_consts_7_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 31,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "AsyncGenerator.__subclasshook__",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[43];
+ }
+_collections_abc_toplevel_consts_28_consts_7_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 42,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xe0\x0b\x0e\x94\x2e\xd1\x0b\x20\xdc\x13\x21\xa0\x21\xa0\x5b\xb0\x2b\xd8\x22\x29\xa8\x38\xb0\x58\xf3\x03\x01\x14\x3f\xf0\x00\x01\x0d\x3f\xe4\x0f\x1d\xd0\x08\x1d",
+};
+static
+ struct _PyCode_DEF(62)
+_collections_abc_toplevel_consts_28_consts_7 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 31,
+ },
+ .co_consts = & _collections_abc_toplevel_consts_28_consts_7_consts._object.ob_base.ob_base,
+ .co_names = & _collections_abc_toplevel_consts_28_consts_7_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 10 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 8,
+ .co_firstlineno = 268,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 2,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 397,
+ .co_localsplusnames = & _collections_abc_toplevel_consts_17_consts_3_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_14_consts_2_localspluskinds.ob_base.ob_base,
+ .co_filename = & _collections_abc_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__subclasshook__),
+ .co_qualname = & _collections_abc_toplevel_consts_28_consts_7_qualname._ascii.ob_base,
+ .co_linetable = & _collections_abc_toplevel_consts_28_consts_7_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x00\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x75\x00\x72\x10\x74\x03\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x64\x01\x64\x02\x64\x03\x64\x04\x64\x05\xab\x06\x00\x00\x00\x00\x00\x00\x53\x00\x74\x04\x00\x00\x00\x00\x00\x00\x00\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[9];
+ }_object;
+ }
+_collections_abc_toplevel_consts_28_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 9,
+ },
+ .ob_item = {
+ & const_str_AsyncGenerator._ascii.ob_base,
+ (PyObject *)& _Py_SINGLETON(tuple_empty),
+ & _collections_abc_toplevel_consts_28_consts_2.ob_base.ob_base,
+ & _collections_abc_toplevel_consts_28_consts_3.ob_base.ob_base,
+ Py_None,
+ & _collections_abc_toplevel_consts_28_consts_5.ob_base.ob_base,
+ & _collections_abc_toplevel_consts_28_consts_6.ob_base.ob_base,
+ & _collections_abc_toplevel_consts_28_consts_7.ob_base.ob_base,
+ & importlib__bootstrap_toplevel_consts_44_consts_10._object.ob_base.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[11];
+ }_object;
+ }
+_collections_abc_toplevel_consts_28_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 11,
+ },
+ .ob_item = {
+ &_Py_ID(__name__),
+ &_Py_ID(__module__),
+ &_Py_ID(__qualname__),
+ &_Py_ID(__slots__),
+ &_Py_ID(__anext__),
+ & const_str_abstractmethod._ascii.ob_base,
+ & const_str_asend._ascii.ob_base,
+ & const_str_athrow._ascii.ob_base,
+ & const_str_aclose._ascii.ob_base,
+ & const_str_classmethod._ascii.ob_base,
+ &_Py_ID(__subclasshook__),
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[79];
+ }
+_collections_abc_toplevel_consts_28_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 78,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x84\x00\xe0\x10\x12\x80\x49\xf2\x04\x04\x05\x26\xf0\x0c\x00\x06\x14\xf1\x02\x04\x05\x21\xf3\x03\x00\x06\x14\xf0\x02\x04\x05\x21\xf0\x0c\x00\x06\x14\xf2\x02\x0a\x05\x12\xf3\x03\x00\x06\x14\xf0\x02\x0a\x05\x12\xf2\x18\x08\x05\x4f\x01\xf0\x14\x00\x06\x11\xf1\x02\x04\x05\x1e\xf3\x03\x00\x06\x11\xf1\x02\x04\x05\x1e",
+};
+static
+ struct _PyCode_DEF(78)
+_collections_abc_toplevel_consts_28 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 39,
+ },
+ .co_consts = & _collections_abc_toplevel_consts_28_consts._object.ob_base.ob_base,
+ .co_names = & _collections_abc_toplevel_consts_28_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 0,
+ .co_argcount = 0,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 3 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 3,
+ .co_firstlineno = 228,
+ .co_nlocalsplus = 0,
+ .co_nlocals = 0,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 398,
+ .co_localsplusnames = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_filename = & _collections_abc_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = & const_str_AsyncGenerator._ascii.ob_base,
+ .co_qualname = & const_str_AsyncGenerator._ascii.ob_base,
+ .co_linetable = & _collections_abc_toplevel_consts_28_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x65\x00\x5a\x01\x64\x00\x5a\x02\x64\x01\x5a\x03\x64\x02\x84\x00\x5a\x04\x65\x05\x64\x03\x84\x00\xab\x00\x00\x00\x00\x00\x00\x00\x5a\x06\x65\x05\x64\x08\x64\x05\x84\x01\xab\x00\x00\x00\x00\x00\x00\x00\x5a\x07\x64\x06\x84\x00\x5a\x08\x65\x09\x64\x07\x84\x00\xab\x00\x00\x00\x00\x00\x00\x00\x5a\x0a\x79\x04",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[18];
+ }
+_collections_abc_toplevel_consts_30_consts_2_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 17,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Iterable.__iter__",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[10];
+ }
+_collections_abc_toplevel_consts_30_consts_2_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 9,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\xe8\x00\xf8\x80\x00\xe0\x0e\x13\xf9",
+};
+static
+ struct _PyCode_DEF(12)
+_collections_abc_toplevel_consts_30_consts_2 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 6,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_1_consts._object.ob_base.ob_base,
+ .co_names = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_exceptiontable = & _collections_abc_toplevel_consts_14_exceptiontable.ob_base.ob_base,
+ .co_flags = 35,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 3 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 2,
+ .co_firstlineno = 283,
+ .co_nlocalsplus = 1,
+ .co_nlocals = 1,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 399,
+ .co_localsplusnames = & importlib__bootstrap_toplevel_consts_7_consts_2_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_characters[32]),
+ .co_filename = & _collections_abc_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__iter__),
+ .co_qualname = & _collections_abc_toplevel_consts_30_consts_2_qualname._ascii.ob_base,
+ .co_linetable = & _collections_abc_toplevel_consts_30_consts_2_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x4b\x00\x01\x00\x97\x00\x79\x00\xad\x03\x77\x01",
+ ._co_firsttraceable = 2,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+_collections_abc_toplevel_consts_30_consts_3_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ Py_None,
+ &_Py_ID(__iter__),
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+_collections_abc_toplevel_consts_30_consts_3_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ & const_str_Iterable._ascii.ob_base,
+ & const_str__check_methods._ascii.ob_base,
+ & const_str_NotImplemented._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[26];
+ }
+_collections_abc_toplevel_consts_30_consts_3_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 25,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Iterable.__subclasshook__",
+};
+static
+ struct _PyCode_DEF(54)
+_collections_abc_toplevel_consts_30_consts_3 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 27,
+ },
+ .co_consts = & _collections_abc_toplevel_consts_30_consts_3_consts._object.ob_base.ob_base,
+ .co_names = & _collections_abc_toplevel_consts_30_consts_3_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 6 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 288,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 2,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 400,
+ .co_localsplusnames = & _collections_abc_toplevel_consts_17_consts_3_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_14_consts_2_localspluskinds.ob_base.ob_base,
+ .co_filename = & _collections_abc_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__subclasshook__),
+ .co_qualname = & _collections_abc_toplevel_consts_30_consts_3_qualname._ascii.ob_base,
+ .co_linetable = & _collections_abc_toplevel_consts_17_consts_3_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x00\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x75\x00\x72\x0c\x74\x03\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x64\x01\xab\x02\x00\x00\x00\x00\x00\x00\x53\x00\x74\x04\x00\x00\x00\x00\x00\x00\x00\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[5];
+ }_object;
+ }
+_collections_abc_toplevel_consts_30_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 5,
+ },
+ .ob_item = {
+ & const_str_Iterable._ascii.ob_base,
+ (PyObject *)& _Py_SINGLETON(tuple_empty),
+ & _collections_abc_toplevel_consts_30_consts_2.ob_base.ob_base,
+ & _collections_abc_toplevel_consts_30_consts_3.ob_base.ob_base,
+ Py_None,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[10];
+ }_object;
+ }
+_collections_abc_toplevel_consts_30_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 10,
+ },
+ .ob_item = {
+ &_Py_ID(__name__),
+ &_Py_ID(__module__),
+ &_Py_ID(__qualname__),
+ &_Py_ID(__slots__),
+ & const_str_abstractmethod._ascii.ob_base,
+ &_Py_ID(__iter__),
+ & const_str_classmethod._ascii.ob_base,
+ &_Py_ID(__subclasshook__),
+ & const_str_GenericAlias._ascii.ob_base,
+ &_Py_ID(__class_getitem__),
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[59];
+ }
+_collections_abc_toplevel_consts_30_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 58,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x84\x00\xe0\x10\x12\x80\x49\xe0\x05\x13\xf1\x02\x02\x05\x17\xf3\x03\x00\x06\x14\xf0\x02\x02\x05\x17\xf0\x08\x00\x06\x11\xf1\x02\x03\x05\x1e\xf3\x03\x00\x06\x11\xf0\x02\x03\x05\x1e\xf1\x0a\x00\x19\x24\xa0\x4c\xd3\x18\x31\xd1\x04\x15",
+};
+static
+ struct _PyCode_DEF(64)
+_collections_abc_toplevel_consts_30 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 32,
+ },
+ .co_consts = & _collections_abc_toplevel_consts_30_consts._object.ob_base.ob_base,
+ .co_names = & _collections_abc_toplevel_consts_30_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 0,
+ .co_argcount = 0,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 3 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 3,
+ .co_firstlineno = 279,
+ .co_nlocalsplus = 0,
+ .co_nlocals = 0,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 401,
+ .co_localsplusnames = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_filename = & _collections_abc_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = & const_str_Iterable._ascii.ob_base,
+ .co_qualname = & const_str_Iterable._ascii.ob_base,
+ .co_linetable = & _collections_abc_toplevel_consts_30_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x65\x00\x5a\x01\x64\x00\x5a\x02\x64\x01\x5a\x03\x65\x04\x64\x02\x84\x00\xab\x00\x00\x00\x00\x00\x00\x00\x5a\x05\x65\x06\x64\x03\x84\x00\xab\x00\x00\x00\x00\x00\x00\x00\x5a\x07\x02\x00\x65\x06\x65\x08\xab\x01\x00\x00\x00\x00\x00\x00\x5a\x09\x79\x04",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[76];
+ }
+_collections_abc_toplevel_consts_32_consts_2_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 75,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Return the next item from the iterator. When exhausted, raise StopIteration",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+_collections_abc_toplevel_consts_32_consts_2_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & _collections_abc_toplevel_consts_32_consts_2_consts_0._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[18];
+ }
+_collections_abc_toplevel_consts_32_consts_2_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 17,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Iterator.__next__",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[11];
+ }
+_collections_abc_toplevel_consts_32_consts_2_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 10,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf4\x06\x00\x0f\x1c\xd0\x08\x1b",
+};
+static
+ struct _PyCode_DEF(14)
+_collections_abc_toplevel_consts_32_consts_2 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 7,
+ },
+ .co_consts = & _collections_abc_toplevel_consts_32_consts_2_consts._object.ob_base.ob_base,
+ .co_names = & _collections_abc_toplevel_consts_22_consts_2_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 2 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 1,
+ .co_firstlineno = 301,
+ .co_nlocalsplus = 1,
+ .co_nlocals = 1,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 402,
+ .co_localsplusnames = & importlib__bootstrap_toplevel_consts_7_consts_2_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_characters[32]),
+ .co_filename = & _collections_abc_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__next__),
+ .co_qualname = & _collections_abc_toplevel_consts_32_consts_2_qualname._ascii.ob_base,
+ .co_linetable = & _collections_abc_toplevel_consts_32_consts_2_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x82\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[18];
+ }
+_collections_abc_toplevel_consts_32_consts_3_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 17,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Iterator.__iter__",
+};
+static
+ struct _PyCode_DEF(6)
+_collections_abc_toplevel_consts_32_consts_3 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 3,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_1_consts._object.ob_base.ob_base,
+ .co_names = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 2 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 1,
+ .co_firstlineno = 306,
+ .co_nlocalsplus = 1,
+ .co_nlocals = 1,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 403,
+ .co_localsplusnames = & importlib__bootstrap_toplevel_consts_7_consts_2_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_characters[32]),
+ .co_filename = & _collections_abc_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__iter__),
+ .co_qualname = & _collections_abc_toplevel_consts_32_consts_3_qualname._ascii.ob_base,
+ .co_linetable = & codecs_toplevel_consts_24_consts_7_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+_collections_abc_toplevel_consts_32_consts_4_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ Py_None,
+ &_Py_ID(__iter__),
+ &_Py_ID(__next__),
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+_collections_abc_toplevel_consts_32_consts_4_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ & const_str_Iterator._ascii.ob_base,
+ & const_str__check_methods._ascii.ob_base,
+ & const_str_NotImplemented._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[26];
+ }
+_collections_abc_toplevel_consts_32_consts_4_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 25,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Iterator.__subclasshook__",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[31];
+ }
+_collections_abc_toplevel_consts_32_consts_4_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 30,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xe0\x0b\x0e\x94\x28\x89\x3f\xdc\x13\x21\xa0\x21\xa0\x5a\xb0\x1a\xd3\x13\x3c\xd0\x0c\x3c\xdc\x0f\x1d\xd0\x08\x1d",
+};
+static
+ struct _PyCode_DEF(56)
+_collections_abc_toplevel_consts_32_consts_4 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 28,
+ },
+ .co_consts = & _collections_abc_toplevel_consts_32_consts_4_consts._object.ob_base.ob_base,
+ .co_names = & _collections_abc_toplevel_consts_32_consts_4_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 7 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 5,
+ .co_firstlineno = 309,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 2,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 404,
+ .co_localsplusnames = & _collections_abc_toplevel_consts_17_consts_3_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_14_consts_2_localspluskinds.ob_base.ob_base,
+ .co_filename = & _collections_abc_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__subclasshook__),
+ .co_qualname = & _collections_abc_toplevel_consts_32_consts_4_qualname._ascii.ob_base,
+ .co_linetable = & _collections_abc_toplevel_consts_32_consts_4_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x00\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x75\x00\x72\x0d\x74\x03\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x64\x01\x64\x02\xab\x03\x00\x00\x00\x00\x00\x00\x53\x00\x74\x04\x00\x00\x00\x00\x00\x00\x00\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[6];
+ }_object;
+ }
+_collections_abc_toplevel_consts_32_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 6,
+ },
+ .ob_item = {
+ & const_str_Iterator._ascii.ob_base,
+ (PyObject *)& _Py_SINGLETON(tuple_empty),
+ & _collections_abc_toplevel_consts_32_consts_2.ob_base.ob_base,
+ & _collections_abc_toplevel_consts_32_consts_3.ob_base.ob_base,
+ & _collections_abc_toplevel_consts_32_consts_4.ob_base.ob_base,
+ Py_None,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[9];
+ }_object;
+ }
+_collections_abc_toplevel_consts_32_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 9,
+ },
+ .ob_item = {
+ &_Py_ID(__name__),
+ &_Py_ID(__module__),
+ &_Py_ID(__qualname__),
+ &_Py_ID(__slots__),
+ & const_str_abstractmethod._ascii.ob_base,
+ &_Py_ID(__next__),
+ &_Py_ID(__iter__),
+ & const_str_classmethod._ascii.ob_base,
+ &_Py_ID(__subclasshook__),
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[51];
+ }
+_collections_abc_toplevel_consts_32_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 50,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x84\x00\xe0\x10\x12\x80\x49\xe0\x05\x13\xf1\x02\x02\x05\x1c\xf3\x03\x00\x06\x14\xf0\x02\x02\x05\x1c\xf2\x08\x01\x05\x14\xf0\x06\x00\x06\x11\xf1\x02\x03\x05\x1e\xf3\x03\x00\x06\x11\xf1\x02\x03\x05\x1e",
+};
+static
+ struct _PyCode_DEF(54)
+_collections_abc_toplevel_consts_32 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 27,
+ },
+ .co_consts = & _collections_abc_toplevel_consts_32_consts._object.ob_base.ob_base,
+ .co_names = & _collections_abc_toplevel_consts_32_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 0,
+ .co_argcount = 0,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 2 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 2,
+ .co_firstlineno = 297,
+ .co_nlocalsplus = 0,
+ .co_nlocals = 0,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 405,
+ .co_localsplusnames = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_filename = & _collections_abc_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = & const_str_Iterator._ascii.ob_base,
+ .co_qualname = & const_str_Iterator._ascii.ob_base,
+ .co_linetable = & _collections_abc_toplevel_consts_32_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x65\x00\x5a\x01\x64\x00\x5a\x02\x64\x01\x5a\x03\x65\x04\x64\x02\x84\x00\xab\x00\x00\x00\x00\x00\x00\x00\x5a\x05\x64\x03\x84\x00\x5a\x06\x65\x07\x64\x04\x84\x00\xab\x00\x00\x00\x00\x00\x00\x00\x5a\x08\x79\x05",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[24];
+ }
+_collections_abc_toplevel_consts_34_consts_2_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 23,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Reversible.__reversed__",
+};
+static
+ struct _PyCode_DEF(12)
+_collections_abc_toplevel_consts_34_consts_2 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 6,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_1_consts._object.ob_base.ob_base,
+ .co_names = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_exceptiontable = & _collections_abc_toplevel_consts_14_exceptiontable.ob_base.ob_base,
+ .co_flags = 35,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 3 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 2,
+ .co_firstlineno = 336,
+ .co_nlocalsplus = 1,
+ .co_nlocals = 1,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 406,
+ .co_localsplusnames = & importlib__bootstrap_toplevel_consts_7_consts_2_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_characters[32]),
+ .co_filename = & _collections_abc_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__reversed__),
+ .co_qualname = & _collections_abc_toplevel_consts_34_consts_2_qualname._ascii.ob_base,
+ .co_linetable = & _collections_abc_toplevel_consts_30_consts_2_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x4b\x00\x01\x00\x97\x00\x79\x00\xad\x03\x77\x01",
+ ._co_firsttraceable = 2,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+_collections_abc_toplevel_consts_34_consts_3_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ Py_None,
+ &_Py_ID(__reversed__),
+ &_Py_ID(__iter__),
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+_collections_abc_toplevel_consts_34_consts_3_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ & const_str_Reversible._ascii.ob_base,
+ & const_str__check_methods._ascii.ob_base,
+ & const_str_NotImplemented._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[28];
+ }
+_collections_abc_toplevel_consts_34_consts_3_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 27,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Reversible.__subclasshook__",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[32];
+ }
+_collections_abc_toplevel_consts_34_consts_3_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 31,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xe0\x0b\x0e\x94\x2a\xd1\x0b\x1c\xdc\x13\x21\xa0\x21\xa0\x5e\xb0\x5a\xd3\x13\x40\xd0\x0c\x40\xdc\x0f\x1d\xd0\x08\x1d",
+};
+static
+ struct _PyCode_DEF(56)
+_collections_abc_toplevel_consts_34_consts_3 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 28,
+ },
+ .co_consts = & _collections_abc_toplevel_consts_34_consts_3_consts._object.ob_base.ob_base,
+ .co_names = & _collections_abc_toplevel_consts_34_consts_3_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 7 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 5,
+ .co_firstlineno = 341,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 2,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 407,
+ .co_localsplusnames = & _collections_abc_toplevel_consts_17_consts_3_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_14_consts_2_localspluskinds.ob_base.ob_base,
+ .co_filename = & _collections_abc_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__subclasshook__),
+ .co_qualname = & _collections_abc_toplevel_consts_34_consts_3_qualname._ascii.ob_base,
+ .co_linetable = & _collections_abc_toplevel_consts_34_consts_3_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x00\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x75\x00\x72\x0d\x74\x03\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x64\x01\x64\x02\xab\x03\x00\x00\x00\x00\x00\x00\x53\x00\x74\x04\x00\x00\x00\x00\x00\x00\x00\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[5];
+ }_object;
+ }
+_collections_abc_toplevel_consts_34_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 5,
+ },
+ .ob_item = {
+ & const_str_Reversible._ascii.ob_base,
+ (PyObject *)& _Py_SINGLETON(tuple_empty),
+ & _collections_abc_toplevel_consts_34_consts_2.ob_base.ob_base,
+ & _collections_abc_toplevel_consts_34_consts_3.ob_base.ob_base,
+ Py_None,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[8];
+ }_object;
+ }
+_collections_abc_toplevel_consts_34_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 8,
+ },
+ .ob_item = {
+ &_Py_ID(__name__),
+ &_Py_ID(__module__),
+ &_Py_ID(__qualname__),
+ &_Py_ID(__slots__),
+ & const_str_abstractmethod._ascii.ob_base,
+ &_Py_ID(__reversed__),
+ & const_str_classmethod._ascii.ob_base,
+ &_Py_ID(__subclasshook__),
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[46];
+ }
+_collections_abc_toplevel_consts_34_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 45,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x84\x00\xe0\x10\x12\x80\x49\xe0\x05\x13\xf1\x02\x02\x05\x17\xf3\x03\x00\x06\x14\xf0\x02\x02\x05\x17\xf0\x08\x00\x06\x11\xf1\x02\x03\x05\x1e\xf3\x03\x00\x06\x11\xf1\x02\x03\x05\x1e",
+};
+static
+ struct _PyCode_DEF(48)
+_collections_abc_toplevel_consts_34 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 24,
+ },
+ .co_consts = & _collections_abc_toplevel_consts_34_consts._object.ob_base.ob_base,
+ .co_names = & _collections_abc_toplevel_consts_34_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 0,
+ .co_argcount = 0,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 2 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 2,
+ .co_firstlineno = 332,
+ .co_nlocalsplus = 0,
+ .co_nlocals = 0,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 408,
+ .co_localsplusnames = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_filename = & _collections_abc_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = & const_str_Reversible._ascii.ob_base,
+ .co_qualname = & const_str_Reversible._ascii.ob_base,
+ .co_linetable = & _collections_abc_toplevel_consts_34_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x65\x00\x5a\x01\x64\x00\x5a\x02\x64\x01\x5a\x03\x65\x04\x64\x02\x84\x00\xab\x00\x00\x00\x00\x00\x00\x00\x5a\x05\x65\x06\x64\x03\x84\x00\xab\x00\x00\x00\x00\x00\x00\x00\x5a\x07\x79\x04",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[95];
+ }
+_collections_abc_toplevel_consts_36_consts_2_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 94,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x52\x65\x74\x75\x72\x6e\x20\x74\x68\x65\x20\x6e\x65\x78\x74\x20\x69\x74\x65\x6d\x20\x66\x72\x6f\x6d\x20\x74\x68\x65\x20\x67\x65\x6e\x65\x72\x61\x74\x6f\x72\x2e\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x57\x68\x65\x6e\x20\x65\x78\x68\x61\x75\x73\x74\x65\x64\x2c\x20\x72\x61\x69\x73\x65\x20\x53\x74\x6f\x70\x49\x74\x65\x72\x61\x74\x69\x6f\x6e\x2e\x0a\x20\x20\x20\x20\x20\x20\x20\x20",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+_collections_abc_toplevel_consts_36_consts_2_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & _collections_abc_toplevel_consts_36_consts_2_consts_0._ascii.ob_base,
+ Py_None,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+_collections_abc_toplevel_consts_36_consts_2_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ &_Py_ID(send),
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[19];
+ }
+_collections_abc_toplevel_consts_36_consts_2_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 18,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Generator.__next__",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[19];
+ }
+_collections_abc_toplevel_consts_36_consts_2_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 18,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf0\x08\x00\x10\x14\x8f\x79\x89\x79\x98\x14\x8b\x7f\xd0\x08\x1e",
+};
+static
+ struct _PyCode_DEF(36)
+_collections_abc_toplevel_consts_36_consts_2 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 18,
+ },
+ .co_consts = & _collections_abc_toplevel_consts_36_consts_2_consts._object.ob_base.ob_base,
+ .co_names = & _collections_abc_toplevel_consts_36_consts_2_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 4 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 3,
+ .co_firstlineno = 352,
+ .co_nlocalsplus = 1,
+ .co_nlocals = 1,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 409,
+ .co_localsplusnames = & importlib__bootstrap_toplevel_consts_7_consts_2_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_characters[32]),
+ .co_filename = & _collections_abc_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__next__),
+ .co_qualname = & _collections_abc_toplevel_consts_36_consts_2_qualname._ascii.ob_base,
+ .co_linetable = & _collections_abc_toplevel_consts_36_consts_2_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x00\x6a\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x01\xab\x01\x00\x00\x00\x00\x00\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[100];
+ }
+_collections_abc_toplevel_consts_36_consts_3_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 99,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x53\x65\x6e\x64\x20\x61\x20\x76\x61\x6c\x75\x65\x20\x69\x6e\x74\x6f\x20\x74\x68\x65\x20\x67\x65\x6e\x65\x72\x61\x74\x6f\x72\x2e\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x52\x65\x74\x75\x72\x6e\x20\x6e\x65\x78\x74\x20\x79\x69\x65\x6c\x64\x65\x64\x20\x76\x61\x6c\x75\x65\x20\x6f\x72\x20\x72\x61\x69\x73\x65\x20\x53\x74\x6f\x70\x49\x74\x65\x72\x61\x74\x69\x6f\x6e\x2e\x0a\x20\x20\x20\x20\x20\x20\x20\x20",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+_collections_abc_toplevel_consts_36_consts_3_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & _collections_abc_toplevel_consts_36_consts_3_consts_0._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[15];
+ }
+_collections_abc_toplevel_consts_36_consts_3_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 14,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Generator.send",
+};
+static
+ struct _PyCode_DEF(14)
+_collections_abc_toplevel_consts_36_consts_3 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 7,
+ },
+ .co_consts = & _collections_abc_toplevel_consts_36_consts_3_consts._object.ob_base.ob_base,
+ .co_names = & _collections_abc_toplevel_consts_22_consts_2_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 3 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 1,
+ .co_firstlineno = 358,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 2,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 410,
+ .co_localsplusnames = & importlib__bootstrap_toplevel_consts_30_consts_11_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_14_consts_2_localspluskinds.ob_base.ob_base,
+ .co_filename = & _collections_abc_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(send),
+ .co_qualname = & _collections_abc_toplevel_consts_36_consts_3_qualname._ascii.ob_base,
+ .co_linetable = & _collections_abc_toplevel_consts_22_consts_2_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x82\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[104];
+ }
+_collections_abc_toplevel_consts_36_consts_5_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 103,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x52\x61\x69\x73\x65\x20\x61\x6e\x20\x65\x78\x63\x65\x70\x74\x69\x6f\x6e\x20\x69\x6e\x20\x74\x68\x65\x20\x67\x65\x6e\x65\x72\x61\x74\x6f\x72\x2e\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x52\x65\x74\x75\x72\x6e\x20\x6e\x65\x78\x74\x20\x79\x69\x65\x6c\x64\x65\x64\x20\x76\x61\x6c\x75\x65\x20\x6f\x72\x20\x72\x61\x69\x73\x65\x20\x53\x74\x6f\x70\x49\x74\x65\x72\x61\x74\x69\x6f\x6e\x2e\x0a\x20\x20\x20\x20\x20\x20\x20\x20",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+_collections_abc_toplevel_consts_36_consts_5_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & _collections_abc_toplevel_consts_36_consts_5_consts_0._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[16];
+ }
+_collections_abc_toplevel_consts_36_consts_5_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 15,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Generator.throw",
+};
+static
+ struct _PyCode_DEF(70)
+_collections_abc_toplevel_consts_36_consts_5 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 35,
+ },
+ .co_consts = & _collections_abc_toplevel_consts_36_consts_5_consts._object.ob_base.ob_base,
+ .co_names = & _collections_abc_toplevel_consts_22_consts_4_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 4,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 7 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 3,
+ .co_firstlineno = 365,
+ .co_nlocalsplus = 4,
+ .co_nlocals = 4,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 411,
+ .co_localsplusnames = & _collections_abc_toplevel_consts_22_consts_4_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_7_consts_3_localspluskinds.ob_base.ob_base,
+ .co_filename = & _collections_abc_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(throw),
+ .co_qualname = & _collections_abc_toplevel_consts_36_consts_5_qualname._ascii.ob_base,
+ .co_linetable = & _collections_abc_toplevel_consts_22_consts_4_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x02\x80\x0b\x7c\x03\x80\x02\x7c\x01\x82\x01\x02\x00\x7c\x01\xab\x00\x00\x00\x00\x00\x00\x00\x7d\x02\x7c\x03\x81\x11\x7c\x02\x6a\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x03\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x02\x7c\x02\x82\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[47];
+ }
+_collections_abc_toplevel_consts_36_consts_6_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 46,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x52\x61\x69\x73\x65\x20\x47\x65\x6e\x65\x72\x61\x74\x6f\x72\x45\x78\x69\x74\x20\x69\x6e\x73\x69\x64\x65\x20\x67\x65\x6e\x65\x72\x61\x74\x6f\x72\x2e\x0a\x20\x20\x20\x20\x20\x20\x20\x20",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[32];
+ }
+_collections_abc_toplevel_consts_36_consts_6_consts_1 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 31,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "generator ignored GeneratorExit",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+_collections_abc_toplevel_consts_36_consts_6_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ & _collections_abc_toplevel_consts_36_consts_6_consts_0._ascii.ob_base,
+ & _collections_abc_toplevel_consts_36_consts_6_consts_1._ascii.ob_base,
+ Py_None,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[16];
+ }
+_collections_abc_toplevel_consts_36_consts_6_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 15,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Generator.close",
+};
+static
+ struct _PyCode_DEF(110)
+_collections_abc_toplevel_consts_36_consts_6 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 55,
+ },
+ .co_consts = & _collections_abc_toplevel_consts_36_consts_6_consts._object.ob_base.ob_base,
+ .co_names = & _collections_abc_toplevel_consts_22_consts_5_names._object.ob_base.ob_base,
+ .co_exceptiontable = & _collections_abc_toplevel_consts_22_consts_5_exceptiontable.ob_base.ob_base,
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 5 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 378,
+ .co_nlocalsplus = 1,
+ .co_nlocals = 1,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 412,
+ .co_localsplusnames = & importlib__bootstrap_toplevel_consts_7_consts_2_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_characters[32]),
+ .co_filename = & _collections_abc_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(close),
+ .co_qualname = & _collections_abc_toplevel_consts_36_consts_6_qualname._ascii.ob_base,
+ .co_linetable = & _collections_abc_toplevel_consts_22_consts_5_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x09\x00\x7c\x00\x6a\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x74\x02\x00\x00\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x74\x05\x00\x00\x00\x00\x00\x00\x00\x00\x64\x01\xab\x01\x00\x00\x00\x00\x00\x00\x82\x01\x23\x00\x74\x02\x00\x00\x00\x00\x00\x00\x00\x00\x74\x06\x00\x00\x00\x00\x00\x00\x00\x00\x66\x02\x24\x00\x72\x03\x01\x00\x59\x00\x79\x02\x77\x00\x78\x03\x59\x00\x77\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[6];
+ }_object;
+ }
+_collections_abc_toplevel_consts_36_consts_7_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 6,
+ },
+ .ob_item = {
+ Py_None,
+ &_Py_ID(__iter__),
+ &_Py_ID(__next__),
+ &_Py_ID(send),
+ &_Py_ID(throw),
+ &_Py_ID(close),
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+_collections_abc_toplevel_consts_36_consts_7_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ & const_str_Generator._ascii.ob_base,
+ & const_str__check_methods._ascii.ob_base,
+ & const_str_NotImplemented._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[27];
+ }
+_collections_abc_toplevel_consts_36_consts_7_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 26,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Generator.__subclasshook__",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[43];
+ }
+_collections_abc_toplevel_consts_36_consts_7_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 42,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xe0\x0b\x0e\x94\x29\xd1\x0b\x1b\xdc\x13\x21\xa0\x21\xa0\x5a\xb0\x1a\xd8\x22\x28\xa8\x27\xb0\x37\xf3\x03\x01\x14\x3c\xf0\x00\x01\x0d\x3c\xe4\x0f\x1d\xd0\x08\x1d",
+};
+static
+ struct _PyCode_DEF(62)
+_collections_abc_toplevel_consts_36_consts_7 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 31,
+ },
+ .co_consts = & _collections_abc_toplevel_consts_36_consts_7_consts._object.ob_base.ob_base,
+ .co_names = & _collections_abc_toplevel_consts_36_consts_7_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 10 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 8,
+ .co_firstlineno = 388,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 2,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 413,
+ .co_localsplusnames = & _collections_abc_toplevel_consts_17_consts_3_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_14_consts_2_localspluskinds.ob_base.ob_base,
+ .co_filename = & _collections_abc_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__subclasshook__),
+ .co_qualname = & _collections_abc_toplevel_consts_36_consts_7_qualname._ascii.ob_base,
+ .co_linetable = & _collections_abc_toplevel_consts_36_consts_7_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x00\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x75\x00\x72\x10\x74\x03\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x64\x01\x64\x02\x64\x03\x64\x04\x64\x05\xab\x06\x00\x00\x00\x00\x00\x00\x53\x00\x74\x04\x00\x00\x00\x00\x00\x00\x00\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[9];
+ }_object;
+ }
+_collections_abc_toplevel_consts_36_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 9,
+ },
+ .ob_item = {
+ & const_str_Generator._ascii.ob_base,
+ (PyObject *)& _Py_SINGLETON(tuple_empty),
+ & _collections_abc_toplevel_consts_36_consts_2.ob_base.ob_base,
+ & _collections_abc_toplevel_consts_36_consts_3.ob_base.ob_base,
+ Py_None,
+ & _collections_abc_toplevel_consts_36_consts_5.ob_base.ob_base,
+ & _collections_abc_toplevel_consts_36_consts_6.ob_base.ob_base,
+ & _collections_abc_toplevel_consts_36_consts_7.ob_base.ob_base,
+ & importlib__bootstrap_toplevel_consts_44_consts_10._object.ob_base.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[11];
+ }_object;
+ }
+_collections_abc_toplevel_consts_36_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 11,
+ },
+ .ob_item = {
+ &_Py_ID(__name__),
+ &_Py_ID(__module__),
+ &_Py_ID(__qualname__),
+ &_Py_ID(__slots__),
+ &_Py_ID(__next__),
+ & const_str_abstractmethod._ascii.ob_base,
+ &_Py_ID(send),
+ &_Py_ID(throw),
+ &_Py_ID(close),
+ & const_str_classmethod._ascii.ob_base,
+ &_Py_ID(__subclasshook__),
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[79];
+ }
+_collections_abc_toplevel_consts_36_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 78,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x84\x00\xe0\x10\x12\x80\x49\xf2\x04\x04\x05\x1f\xf0\x0c\x00\x06\x14\xf1\x02\x04\x05\x1c\xf3\x03\x00\x06\x14\xf0\x02\x04\x05\x1c\xf0\x0c\x00\x06\x14\xf2\x02\x0a\x05\x12\xf3\x03\x00\x06\x14\xf0\x02\x0a\x05\x12\xf2\x18\x08\x05\x42\x01\xf0\x14\x00\x06\x11\xf1\x02\x04\x05\x1e\xf3\x03\x00\x06\x11\xf1\x02\x04\x05\x1e",
+};
+static
+ struct _PyCode_DEF(78)
+_collections_abc_toplevel_consts_36 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 39,
+ },
+ .co_consts = & _collections_abc_toplevel_consts_36_consts._object.ob_base.ob_base,
+ .co_names = & _collections_abc_toplevel_consts_36_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 0,
+ .co_argcount = 0,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 3 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 3,
+ .co_firstlineno = 348,
+ .co_nlocalsplus = 0,
+ .co_nlocals = 0,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 414,
+ .co_localsplusnames = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_filename = & _collections_abc_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = & const_str_Generator._ascii.ob_base,
+ .co_qualname = & const_str_Generator._ascii.ob_base,
+ .co_linetable = & _collections_abc_toplevel_consts_36_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x65\x00\x5a\x01\x64\x00\x5a\x02\x64\x01\x5a\x03\x64\x02\x84\x00\x5a\x04\x65\x05\x64\x03\x84\x00\xab\x00\x00\x00\x00\x00\x00\x00\x5a\x06\x65\x05\x64\x08\x64\x05\x84\x01\xab\x00\x00\x00\x00\x00\x00\x00\x5a\x07\x64\x06\x84\x00\x5a\x08\x65\x09\x64\x07\x84\x00\xab\x00\x00\x00\x00\x00\x00\x00\x5a\x0a\x79\x04",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[14];
+ }
+_collections_abc_toplevel_consts_38_consts_2_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 13,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Sized.__len__",
+};
+static
+ struct _PyCode_DEF(4)
+_collections_abc_toplevel_consts_38_consts_2 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 2,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_16_consts_2_consts._object.ob_base.ob_base,
+ .co_names = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 1 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 0,
+ .co_firstlineno = 403,
+ .co_nlocalsplus = 1,
+ .co_nlocals = 1,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 415,
+ .co_localsplusnames = & importlib__bootstrap_toplevel_consts_7_consts_2_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_characters[32]),
+ .co_filename = & _collections_abc_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__len__),
+ .co_qualname = & _collections_abc_toplevel_consts_38_consts_2_qualname._ascii.ob_base,
+ .co_linetable = & _collections_abc_toplevel_consts_17_consts_2_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x79\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+_collections_abc_toplevel_consts_38_consts_3_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ Py_None,
+ &_Py_ID(__len__),
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+_collections_abc_toplevel_consts_38_consts_3_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ & const_str_Sized._ascii.ob_base,
+ & const_str__check_methods._ascii.ob_base,
+ & const_str_NotImplemented._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[23];
+ }
+_collections_abc_toplevel_consts_38_consts_3_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 22,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Sized.__subclasshook__",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[29];
+ }
+_collections_abc_toplevel_consts_38_consts_3_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 28,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xe0\x0b\x0e\x94\x25\x89\x3c\xdc\x13\x21\xa0\x21\xa0\x59\xd3\x13\x2f\xd0\x0c\x2f\xdc\x0f\x1d\xd0\x08\x1d",
+};
+static
+ struct _PyCode_DEF(54)
+_collections_abc_toplevel_consts_38_consts_3 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 27,
+ },
+ .co_consts = & _collections_abc_toplevel_consts_38_consts_3_consts._object.ob_base.ob_base,
+ .co_names = & _collections_abc_toplevel_consts_38_consts_3_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 6 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 407,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 2,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 416,
+ .co_localsplusnames = & _collections_abc_toplevel_consts_17_consts_3_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_14_consts_2_localspluskinds.ob_base.ob_base,
+ .co_filename = & _collections_abc_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__subclasshook__),
+ .co_qualname = & _collections_abc_toplevel_consts_38_consts_3_qualname._ascii.ob_base,
+ .co_linetable = & _collections_abc_toplevel_consts_38_consts_3_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x00\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x75\x00\x72\x0c\x74\x03\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x64\x01\xab\x02\x00\x00\x00\x00\x00\x00\x53\x00\x74\x04\x00\x00\x00\x00\x00\x00\x00\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[5];
+ }_object;
+ }
+_collections_abc_toplevel_consts_38_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 5,
+ },
+ .ob_item = {
+ & const_str_Sized._ascii.ob_base,
+ (PyObject *)& _Py_SINGLETON(tuple_empty),
+ & _collections_abc_toplevel_consts_38_consts_2.ob_base.ob_base,
+ & _collections_abc_toplevel_consts_38_consts_3.ob_base.ob_base,
+ Py_None,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[8];
+ }_object;
+ }
+_collections_abc_toplevel_consts_38_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 8,
+ },
+ .ob_item = {
+ &_Py_ID(__name__),
+ &_Py_ID(__module__),
+ &_Py_ID(__qualname__),
+ &_Py_ID(__slots__),
+ & const_str_abstractmethod._ascii.ob_base,
+ &_Py_ID(__len__),
+ & const_str_classmethod._ascii.ob_base,
+ &_Py_ID(__subclasshook__),
+ },
+ },
+};
+static
+ struct _PyCode_DEF(48)
+_collections_abc_toplevel_consts_38 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 24,
+ },
+ .co_consts = & _collections_abc_toplevel_consts_38_consts._object.ob_base.ob_base,
+ .co_names = & _collections_abc_toplevel_consts_38_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 0,
+ .co_argcount = 0,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 2 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 2,
+ .co_firstlineno = 399,
+ .co_nlocalsplus = 0,
+ .co_nlocals = 0,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 417,
+ .co_localsplusnames = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_filename = & _collections_abc_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = & const_str_Sized._ascii.ob_base,
+ .co_qualname = & const_str_Sized._ascii.ob_base,
+ .co_linetable = & _collections_abc_toplevel_consts_17_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x65\x00\x5a\x01\x64\x00\x5a\x02\x64\x01\x5a\x03\x65\x04\x64\x02\x84\x00\xab\x00\x00\x00\x00\x00\x00\x00\x5a\x05\x65\x06\x64\x03\x84\x00\xab\x00\x00\x00\x00\x00\x00\x00\x5a\x07\x79\x04",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[23];
+ }
+_collections_abc_toplevel_consts_40_consts_2_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 22,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Container.__contains__",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[6];
+ }
+_collections_abc_toplevel_consts_40_consts_2_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 5,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xe0\x0f\x14",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+_collections_abc_toplevel_consts_40_consts_2_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ &_Py_ID(self),
+ &_Py_ID(x),
+ },
+ },
+};
+static
+ struct _PyCode_DEF(4)
+_collections_abc_toplevel_consts_40_consts_2 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 2,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_30_consts_4_consts._object.ob_base.ob_base,
+ .co_names = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 2 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 0,
+ .co_firstlineno = 418,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 2,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 418,
+ .co_localsplusnames = & _collections_abc_toplevel_consts_40_consts_2_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_14_consts_2_localspluskinds.ob_base.ob_base,
+ .co_filename = & _collections_abc_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__contains__),
+ .co_qualname = & _collections_abc_toplevel_consts_40_consts_2_qualname._ascii.ob_base,
+ .co_linetable = & _collections_abc_toplevel_consts_40_consts_2_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x79\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+_collections_abc_toplevel_consts_40_consts_3_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ Py_None,
+ &_Py_ID(__contains__),
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+_collections_abc_toplevel_consts_40_consts_3_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ & const_str_Container._ascii.ob_base,
+ & const_str__check_methods._ascii.ob_base,
+ & const_str_NotImplemented._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[27];
+ }
+_collections_abc_toplevel_consts_40_consts_3_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 26,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Container.__subclasshook__",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[30];
+ }
+_collections_abc_toplevel_consts_40_consts_3_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 29,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xe0\x0b\x0e\x94\x29\xd1\x0b\x1b\xdc\x13\x21\xa0\x21\xa0\x5e\xd3\x13\x34\xd0\x0c\x34\xdc\x0f\x1d\xd0\x08\x1d",
+};
+static
+ struct _PyCode_DEF(54)
+_collections_abc_toplevel_consts_40_consts_3 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 27,
+ },
+ .co_consts = & _collections_abc_toplevel_consts_40_consts_3_consts._object.ob_base.ob_base,
+ .co_names = & _collections_abc_toplevel_consts_40_consts_3_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 6 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 422,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 2,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 419,
+ .co_localsplusnames = & _collections_abc_toplevel_consts_17_consts_3_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_14_consts_2_localspluskinds.ob_base.ob_base,
+ .co_filename = & _collections_abc_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__subclasshook__),
+ .co_qualname = & _collections_abc_toplevel_consts_40_consts_3_qualname._ascii.ob_base,
+ .co_linetable = & _collections_abc_toplevel_consts_40_consts_3_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x00\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x75\x00\x72\x0c\x74\x03\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x64\x01\xab\x02\x00\x00\x00\x00\x00\x00\x53\x00\x74\x04\x00\x00\x00\x00\x00\x00\x00\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[5];
+ }_object;
+ }
+_collections_abc_toplevel_consts_40_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 5,
+ },
+ .ob_item = {
+ & const_str_Container._ascii.ob_base,
+ (PyObject *)& _Py_SINGLETON(tuple_empty),
+ & _collections_abc_toplevel_consts_40_consts_2.ob_base.ob_base,
+ & _collections_abc_toplevel_consts_40_consts_3.ob_base.ob_base,
+ Py_None,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[10];
+ }_object;
+ }
+_collections_abc_toplevel_consts_40_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 10,
+ },
+ .ob_item = {
+ &_Py_ID(__name__),
+ &_Py_ID(__module__),
+ &_Py_ID(__qualname__),
+ &_Py_ID(__slots__),
+ & const_str_abstractmethod._ascii.ob_base,
+ &_Py_ID(__contains__),
+ & const_str_classmethod._ascii.ob_base,
+ &_Py_ID(__subclasshook__),
+ & const_str_GenericAlias._ascii.ob_base,
+ &_Py_ID(__class_getitem__),
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[59];
+ }
+_collections_abc_toplevel_consts_40_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 58,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x84\x00\xe0\x10\x12\x80\x49\xe0\x05\x13\xf1\x02\x01\x05\x15\xf3\x03\x00\x06\x14\xf0\x02\x01\x05\x15\xf0\x06\x00\x06\x11\xf1\x02\x03\x05\x1e\xf3\x03\x00\x06\x11\xf0\x02\x03\x05\x1e\xf1\x0a\x00\x19\x24\xa0\x4c\xd3\x18\x31\xd1\x04\x15",
+};
+static
+ struct _PyCode_DEF(64)
+_collections_abc_toplevel_consts_40 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 32,
+ },
+ .co_consts = & _collections_abc_toplevel_consts_40_consts._object.ob_base.ob_base,
+ .co_names = & _collections_abc_toplevel_consts_40_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 0,
+ .co_argcount = 0,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 3 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 3,
+ .co_firstlineno = 414,
+ .co_nlocalsplus = 0,
+ .co_nlocals = 0,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 420,
+ .co_localsplusnames = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_filename = & _collections_abc_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = & const_str_Container._ascii.ob_base,
+ .co_qualname = & const_str_Container._ascii.ob_base,
+ .co_linetable = & _collections_abc_toplevel_consts_40_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x65\x00\x5a\x01\x64\x00\x5a\x02\x64\x01\x5a\x03\x65\x04\x64\x02\x84\x00\xab\x00\x00\x00\x00\x00\x00\x00\x5a\x05\x65\x06\x64\x03\x84\x00\xab\x00\x00\x00\x00\x00\x00\x00\x5a\x07\x02\x00\x65\x06\x65\x08\xab\x01\x00\x00\x00\x00\x00\x00\x5a\x09\x79\x04",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[4];
+ }_object;
+ }
+_collections_abc_toplevel_consts_42_consts_2_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_item = {
+ Py_None,
+ &_Py_ID(__len__),
+ &_Py_ID(__iter__),
+ &_Py_ID(__contains__),
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+_collections_abc_toplevel_consts_42_consts_2_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ & const_str_Collection._ascii.ob_base,
+ & const_str__check_methods._ascii.ob_base,
+ & const_str_NotImplemented._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[28];
+ }
+_collections_abc_toplevel_consts_42_consts_2_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 27,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Collection.__subclasshook__",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[34];
+ }
+_collections_abc_toplevel_consts_42_consts_2_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 33,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xe0\x0b\x0e\x94\x2a\xd1\x0b\x1c\xdc\x13\x21\xa0\x21\xa0\x69\xb0\x1a\xb8\x5e\xd3\x13\x4c\xd0\x0c\x4c\xdc\x0f\x1d\xd0\x08\x1d",
+};
+static
+ struct _PyCode_DEF(58)
+_collections_abc_toplevel_consts_42_consts_2 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 29,
+ },
+ .co_consts = & _collections_abc_toplevel_consts_42_consts_2_consts._object.ob_base.ob_base,
+ .co_names = & _collections_abc_toplevel_consts_42_consts_2_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 8 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 6,
+ .co_firstlineno = 435,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 2,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 421,
+ .co_localsplusnames = & _collections_abc_toplevel_consts_17_consts_3_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_14_consts_2_localspluskinds.ob_base.ob_base,
+ .co_filename = & _collections_abc_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__subclasshook__),
+ .co_qualname = & _collections_abc_toplevel_consts_42_consts_2_qualname._ascii.ob_base,
+ .co_linetable = & _collections_abc_toplevel_consts_42_consts_2_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x00\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x75\x00\x72\x0e\x74\x03\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x64\x01\x64\x02\x64\x03\xab\x04\x00\x00\x00\x00\x00\x00\x53\x00\x74\x04\x00\x00\x00\x00\x00\x00\x00\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[4];
+ }_object;
+ }
+_collections_abc_toplevel_consts_42_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_item = {
+ & const_str_Collection._ascii.ob_base,
+ (PyObject *)& _Py_SINGLETON(tuple_empty),
+ & _collections_abc_toplevel_consts_42_consts_2.ob_base.ob_base,
+ Py_None,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[6];
+ }_object;
+ }
+_collections_abc_toplevel_consts_42_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 6,
+ },
+ .ob_item = {
+ &_Py_ID(__name__),
+ &_Py_ID(__module__),
+ &_Py_ID(__qualname__),
+ &_Py_ID(__slots__),
+ & const_str_classmethod._ascii.ob_base,
+ &_Py_ID(__subclasshook__),
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[26];
+ }
+_collections_abc_toplevel_consts_42_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 25,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x84\x00\xe0\x10\x12\x80\x49\xe0\x05\x10\xf1\x02\x03\x05\x1e\xf3\x03\x00\x06\x11\xf1\x02\x03\x05\x1e",
+};
+static
+ struct _PyCode_DEF(32)
+_collections_abc_toplevel_consts_42 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 16,
+ },
+ .co_consts = & _collections_abc_toplevel_consts_42_consts._object.ob_base.ob_base,
+ .co_names = & _collections_abc_toplevel_consts_42_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 0,
+ .co_argcount = 0,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 2 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 2,
+ .co_firstlineno = 431,
+ .co_nlocalsplus = 0,
+ .co_nlocals = 0,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 422,
+ .co_localsplusnames = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_filename = & _collections_abc_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = & const_str_Collection._ascii.ob_base,
+ .co_qualname = & const_str_Collection._ascii.ob_base,
+ .co_linetable = & _collections_abc_toplevel_consts_42_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x65\x00\x5a\x01\x64\x00\x5a\x02\x64\x01\x5a\x03\x65\x04\x64\x02\x84\x00\xab\x00\x00\x00\x00\x00\x00\x00\x5a\x05\x79\x03",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[18];
+ }
+_collections_abc_toplevel_consts_44_consts_4_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 17,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Buffer.__buffer__",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[9];
+ }
+_collections_abc_toplevel_consts_44_consts_4_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 8,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xe4\x0e\x21\xd0\x08\x21",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+_collections_abc_toplevel_consts_44_consts_4_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ &_Py_ID(self),
+ &_Py_ID(flags),
+ },
+ },
+};
+static
+ struct _PyCode_DEF(14)
+_collections_abc_toplevel_consts_44_consts_4 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 7,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_1_consts._object.ob_base.ob_base,
+ .co_names = & codecs_toplevel_consts_14_consts_2_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 2,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 3 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 1,
+ .co_firstlineno = 446,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 2,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 423,
+ .co_localsplusnames = & _collections_abc_toplevel_consts_44_consts_4_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_14_consts_2_localspluskinds.ob_base.ob_base,
+ .co_filename = & _collections_abc_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__buffer__),
+ .co_qualname = & _collections_abc_toplevel_consts_44_consts_4_qualname._ascii.ob_base,
+ .co_linetable = & _collections_abc_toplevel_consts_44_consts_4_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x82\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+_collections_abc_toplevel_consts_44_consts_5_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ Py_None,
+ &_Py_ID(__buffer__),
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+_collections_abc_toplevel_consts_44_consts_5_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ & const_str_Buffer._ascii.ob_base,
+ & const_str__check_methods._ascii.ob_base,
+ & const_str_NotImplemented._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[24];
+ }
+_collections_abc_toplevel_consts_44_consts_5_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 23,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Buffer.__subclasshook__",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[29];
+ }
+_collections_abc_toplevel_consts_44_consts_5_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 28,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xe0\x0b\x0e\x94\x26\x89\x3d\xdc\x13\x21\xa0\x21\xa0\x5c\xd3\x13\x32\xd0\x0c\x32\xdc\x0f\x1d\xd0\x08\x1d",
+};
+static
+ struct _PyCode_DEF(54)
+_collections_abc_toplevel_consts_44_consts_5 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 27,
+ },
+ .co_consts = & _collections_abc_toplevel_consts_44_consts_5_consts._object.ob_base.ob_base,
+ .co_names = & _collections_abc_toplevel_consts_44_consts_5_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 6 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 450,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 2,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 424,
+ .co_localsplusnames = & _collections_abc_toplevel_consts_17_consts_3_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_14_consts_2_localspluskinds.ob_base.ob_base,
+ .co_filename = & _collections_abc_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__subclasshook__),
+ .co_qualname = & _collections_abc_toplevel_consts_44_consts_5_qualname._ascii.ob_base,
+ .co_linetable = & _collections_abc_toplevel_consts_44_consts_5_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x00\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x75\x00\x72\x0c\x74\x03\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x64\x01\xab\x02\x00\x00\x00\x00\x00\x00\x53\x00\x74\x04\x00\x00\x00\x00\x00\x00\x00\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[7];
+ }_object;
+ }
+_collections_abc_toplevel_consts_44_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 7,
+ },
+ .ob_item = {
+ & const_str_Buffer._ascii.ob_base,
+ (PyObject *)& _Py_SINGLETON(tuple_empty),
+ &_Py_ID(flags),
+ &_Py_ID(return),
+ & _collections_abc_toplevel_consts_44_consts_4.ob_base.ob_base,
+ & _collections_abc_toplevel_consts_44_consts_5.ob_base.ob_base,
+ Py_None,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[10];
+ }_object;
+ }
+_collections_abc_toplevel_consts_44_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 10,
+ },
+ .ob_item = {
+ &_Py_ID(__name__),
+ &_Py_ID(__module__),
+ &_Py_ID(__qualname__),
+ &_Py_ID(__slots__),
+ & const_str_abstractmethod._ascii.ob_base,
+ & const_str_int._ascii.ob_base,
+ & const_str_memoryview._ascii.ob_base,
+ &_Py_ID(__buffer__),
+ & const_str_classmethod._ascii.ob_base,
+ &_Py_ID(__subclasshook__),
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[60];
+ }
+_collections_abc_toplevel_consts_44_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 59,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x84\x00\xe0\x10\x12\x80\x49\xe0\x05\x13\xf0\x02\x01\x05\x22\xa0\x03\xf0\x00\x01\x05\x22\xa8\x3a\xf2\x00\x01\x05\x22\xf3\x03\x00\x06\x14\xf0\x02\x01\x05\x22\xf0\x06\x00\x06\x11\xf1\x02\x03\x05\x1e\xf3\x03\x00\x06\x11\xf1\x02\x03\x05\x1e",
+};
+static
+ struct _PyCode_DEF(58)
+_collections_abc_toplevel_consts_44 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 29,
+ },
+ .co_consts = & _collections_abc_toplevel_consts_44_consts._object.ob_base.ob_base,
+ .co_names = & _collections_abc_toplevel_consts_44_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 0,
+ .co_argcount = 0,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 5 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 5,
+ .co_firstlineno = 442,
+ .co_nlocalsplus = 0,
+ .co_nlocals = 0,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 425,
+ .co_localsplusnames = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_filename = & _collections_abc_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = & const_str_Buffer._ascii.ob_base,
+ .co_qualname = & const_str_Buffer._ascii.ob_base,
+ .co_linetable = & _collections_abc_toplevel_consts_44_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x65\x00\x5a\x01\x64\x00\x5a\x02\x64\x01\x5a\x03\x65\x04\x64\x02\x65\x05\x64\x03\x65\x06\x66\x04\x64\x04\x84\x04\xab\x00\x00\x00\x00\x00\x00\x00\x5a\x07\x65\x08\x64\x05\x84\x00\xab\x00\x00\x00\x00\x00\x00\x00\x5a\x09\x79\x06",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[22];
+ }
+const_str__CallableGenericAlias = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 21,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_CallableGenericAlias",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[253];
+ }
+_collections_abc_toplevel_consts_46_consts_1 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 252,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x20\x52\x65\x70\x72\x65\x73\x65\x6e\x74\x20\x60\x43\x61\x6c\x6c\x61\x62\x6c\x65\x5b\x61\x72\x67\x74\x79\x70\x65\x73\x2c\x20\x72\x65\x73\x75\x6c\x74\x74\x79\x70\x65\x5d\x60\x2e\x0a\x0a\x20\x20\x20\x20\x54\x68\x69\x73\x20\x73\x65\x74\x73\x20\x60\x60\x5f\x5f\x61\x72\x67\x73\x5f\x5f\x60\x60\x20\x74\x6f\x20\x61\x20\x74\x75\x70\x6c\x65\x20\x63\x6f\x6e\x74\x61\x69\x6e\x69\x6e\x67\x20\x74\x68\x65\x20\x66\x6c\x61\x74\x74\x65\x6e\x65\x64\x20\x60\x60\x61\x72\x67\x74\x79\x70\x65\x73\x60\x60\x0a\x20\x20\x20\x20\x66\x6f\x6c\x6c\x6f\x77\x65\x64\x20\x62\x79\x20\x60\x60\x72\x65\x73\x75\x6c\x74\x74\x79\x70\x65\x60\x60\x2e\x0a\x0a\x20\x20\x20\x20\x45\x78\x61\x6d\x70\x6c\x65\x3a\x20\x60\x60\x43\x61\x6c\x6c\x61\x62\x6c\x65\x5b\x5b\x69\x6e\x74\x2c\x20\x73\x74\x72\x5d\x2c\x20\x66\x6c\x6f\x61\x74\x5d\x60\x60\x20\x73\x65\x74\x73\x20\x60\x60\x5f\x5f\x61\x72\x67\x73\x5f\x5f\x60\x60\x20\x74\x6f\x0a\x20\x20\x20\x20\x60\x60\x28\x69\x6e\x74\x2c\x20\x73\x74\x72\x2c\x20\x66\x6c\x6f\x61\x74\x29\x60\x60\x2e\x0a\x20\x20\x20\x20",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[55];
+ }
+_collections_abc_toplevel_consts_46_consts_3_consts_2 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 54,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Callable must be used as Callable[[arg, ...], result].",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[71];
+ }
+_collections_abc_toplevel_consts_46_consts_3_consts_3 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 70,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Expected a list of types, an ellipsis, ParamSpec, or Concatenate. Got ",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[4];
+ }_object;
+ }
+_collections_abc_toplevel_consts_46_consts_3_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_item = {
+ Py_None,
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 2],
+ & _collections_abc_toplevel_consts_46_consts_3_consts_2._ascii.ob_base,
+ & _collections_abc_toplevel_consts_46_consts_3_consts_3._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[15];
+ }
+const_str__is_param_expr = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 14,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_is_param_expr",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[8];
+ }_object;
+ }
+_collections_abc_toplevel_consts_46_consts_3_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 8,
+ },
+ .ob_item = {
+ &_Py_ID(isinstance),
+ & const_str_tuple._ascii.ob_base,
+ &_Py_ID(len),
+ & const_str_TypeError._ascii.ob_base,
+ & const_str_list._ascii.ob_base,
+ & const_str__is_param_expr._ascii.ob_base,
+ & const_str_super._ascii.ob_base,
+ &_Py_ID(__new__),
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[30];
+ }
+_collections_abc_toplevel_consts_46_consts_3_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 29,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_CallableGenericAlias.__new__",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[139];
+ }
+_collections_abc_toplevel_consts_46_consts_3_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 138,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\xf8\x80\x00\xdc\x10\x1a\x98\x34\xa4\x15\xd4\x10\x27\xac\x43\xb0\x04\xab\x49\xb8\x11\xaa\x4e\xdc\x12\x1b\xd8\x10\x48\xf3\x03\x01\x13\x4a\x01\xf0\x00\x01\x0d\x4a\x01\xe0\x1b\x1f\xd1\x08\x18\x88\x06\x90\x08\xdc\x0b\x15\x90\x66\x9c\x75\xa4\x64\x98\x6d\xd4\x0b\x2c\xd8\x13\x26\x90\x56\xd0\x13\x26\x98\x58\xd1\x13\x26\x89\x44\xdc\x11\x1f\xa0\x06\xd4\x11\x27\xdc\x12\x1b\xf0\x00\x01\x1f\x3e\xd8\x3e\x44\xb8\x58\xf0\x03\x01\x1d\x47\x01\xf3\x00\x01\x13\x48\x01\xf0\x00\x01\x0d\x48\x01\xe4\x0f\x14\x89\x77\x89\x7f\x98\x73\xa0\x46\xa8\x44\xd3\x0f\x31\xd0\x08\x31",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[7];
+ }
+const_str_t_args = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 6,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "t_args",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[9];
+ }
+const_str_t_result = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 8,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "t_result",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[6];
+ }_object;
+ }
+_collections_abc_toplevel_consts_46_consts_3_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 6,
+ },
+ .ob_item = {
+ & const_str_cls._ascii.ob_base,
+ &_Py_ID(origin),
+ &_Py_ID(args),
+ & const_str_t_args._ascii.ob_base,
+ & const_str_t_result._ascii.ob_base,
+ &_Py_ID(__class__),
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[7];
+ }
+_collections_abc_toplevel_consts_46_consts_3_localspluskinds = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 6,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x20\x20\x20\x20\x20\x80",
+};
+static
+ struct _PyCode_DEF(240)
+_collections_abc_toplevel_consts_46_consts_3 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 120,
+ },
+ .co_consts = & _collections_abc_toplevel_consts_46_consts_3_consts._object.ob_base.ob_base,
+ .co_names = & _collections_abc_toplevel_consts_46_consts_3_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 3,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 11 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 5,
+ .co_firstlineno = 469,
+ .co_nlocalsplus = 6,
+ .co_nlocals = 5,
+ .co_ncellvars = 0,
+ .co_nfreevars = 1,
+ .co_version = 426,
+ .co_localsplusnames = & _collections_abc_toplevel_consts_46_consts_3_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & _collections_abc_toplevel_consts_46_consts_3_localspluskinds.ob_base.ob_base,
+ .co_filename = & _collections_abc_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__new__),
+ .co_qualname = & _collections_abc_toplevel_consts_46_consts_3_qualname._ascii.ob_base,
+ .co_linetable = & _collections_abc_toplevel_consts_46_consts_3_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x95\x01\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x02\x74\x02\x00\x00\x00\x00\x00\x00\x00\x00\xab\x02\x00\x00\x00\x00\x00\x00\x72\x0e\x74\x05\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x02\xab\x01\x00\x00\x00\x00\x00\x00\x64\x01\x6b\x28\x00\x00\x73\x0b\x74\x07\x00\x00\x00\x00\x00\x00\x00\x00\x64\x02\xab\x01\x00\x00\x00\x00\x00\x00\x82\x01\x7c\x02\x5c\x02\x00\x00\x7d\x03\x7d\x04\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x03\x74\x02\x00\x00\x00\x00\x00\x00\x00\x00\x74\x08\x00\x00\x00\x00\x00\x00\x00\x00\x66\x02\xab\x02\x00\x00\x00\x00\x00\x00\x72\x08\x67\x00\x7c\x03\xa2\x01\x7c\x04\x91\x01\xad\x06\x7d\x02\x6e\x19\x74\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x03\xab\x01\x00\x00\x00\x00\x00\x00\x73\x0e\x74\x07\x00\x00\x00\x00\x00\x00\x00\x00\x64\x03\x7c\x03\x9b\x00\x9d\x02\xab\x01\x00\x00\x00\x00\x00\x00\x82\x01\x74\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x89\x05\x7c\x00\x8d\x1d\x00\x00\x7c\x00\x7c\x01\x7c\x02\xab\x03\x00\x00\x00\x00\x00\x00\x53\x00",
+ ._co_firsttraceable = 1,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[27];
+ }
+_collections_abc_toplevel_consts_46_consts_4_consts_3 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 26,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "collections.abc.Callable[[",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[4];
+ }
+_collections_abc_toplevel_consts_46_consts_4_consts_6 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 3,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "], ",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[8];
+ }_object;
+ }
+_collections_abc_toplevel_consts_46_consts_4_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 8,
+ },
+ .ob_item = {
+ Py_None,
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 2],
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 0],
+ & _collections_abc_toplevel_consts_46_consts_4_consts_3._ascii.ob_base,
+ & importlib__bootstrap_toplevel_consts_30_consts_5_consts_6._ascii.ob_base,
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + -1],
+ & _collections_abc_toplevel_consts_46_consts_4_consts_6._ascii.ob_base,
+ (PyObject *)&_Py_SINGLETON(strings).ascii[93],
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[11];
+ }
+const_str__type_repr = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 10,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_type_repr",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[7];
+ }_object;
+ }
+_collections_abc_toplevel_consts_46_consts_4_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 7,
+ },
+ .ob_item = {
+ &_Py_ID(len),
+ &_Py_ID(__args__),
+ & const_str__is_param_expr._ascii.ob_base,
+ & const_str_super._ascii.ob_base,
+ &_Py_ID(__repr__),
+ &_Py_ID(join),
+ & const_str__type_repr._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[31];
+ }
+_collections_abc_toplevel_consts_46_consts_4_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 30,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_CallableGenericAlias.__repr__",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[134];
+ }
+_collections_abc_toplevel_consts_46_consts_4_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 133,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\xf8\x80\x00\xdc\x0b\x0e\x88\x74\x8f\x7d\x89\x7d\xd3\x0b\x1d\xa0\x11\xd2\x0b\x22\xa4\x7e\xb0\x64\xb7\x6d\xb1\x6d\xc0\x41\xd1\x36\x46\xd4\x27\x47\xdc\x13\x18\x91\x37\xd1\x13\x23\xd3\x13\x25\xd0\x0c\x25\xf0\x02\x01\x13\x15\xd8\x15\x19\x97\x59\x91\x59\xb0\x74\xb7\x7d\xb1\x7d\xc0\x53\xc0\x62\xd0\x37\x49\xd6\x1f\x4a\xb0\x21\xa4\x0a\xa8\x31\xa5\x0d\xd2\x1f\x4a\xd3\x15\x4b\xd0\x14\x4c\xc8\x43\xdc\x13\x1d\x98\x64\x9f\x6d\x99\x6d\xa8\x42\xd1\x1e\x2f\xd3\x13\x30\xd0\x12\x31\xb0\x11\xf0\x05\x02\x11\x34\xf0\x00\x02\x09\x35\xf9\xda\x1f\x4a",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[7];
+ }
+_collections_abc_toplevel_consts_46_consts_4_exceptiontable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 6,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\xc1\x1d\x12\x42\x12\x0a",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+_collections_abc_toplevel_consts_46_consts_4_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ &_Py_ID(self),
+ &_Py_ID(a),
+ &_Py_ID(__class__),
+ },
+ },
+};
+static
+ struct _PyCode_DEF(302)
+_collections_abc_toplevel_consts_46_consts_4 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 151,
+ },
+ .co_consts = & _collections_abc_toplevel_consts_46_consts_4_consts._object.ob_base.ob_base,
+ .co_names = & _collections_abc_toplevel_consts_46_consts_4_names._object.ob_base.ob_base,
+ .co_exceptiontable = & _collections_abc_toplevel_consts_46_consts_4_exceptiontable.ob_base.ob_base,
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 12 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 9,
+ .co_firstlineno = 481,
+ .co_nlocalsplus = 3,
+ .co_nlocals = 2,
+ .co_ncellvars = 0,
+ .co_nfreevars = 1,
+ .co_version = 427,
+ .co_localsplusnames = & _collections_abc_toplevel_consts_46_consts_4_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_7_consts_1_consts_1_consts_4_localspluskinds.ob_base.ob_base,
+ .co_filename = & _collections_abc_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__repr__),
+ .co_qualname = & _collections_abc_toplevel_consts_46_consts_4_qualname._ascii.ob_base,
+ .co_linetable = & _collections_abc_toplevel_consts_46_consts_4_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x95\x01\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x64\x01\x6b\x28\x00\x00\x72\x26\x74\x05\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x02\x19\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x72\x0e\x74\x06\x00\x00\x00\x00\x00\x00\x00\x00\x89\x02\x7c\x00\x8d\x11\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x53\x00\x64\x03\x64\x04\x6a\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x00\x64\x05\x1a\x00\x44\x00\x8f\x01\x63\x02\x67\x00\x63\x02\x5d\x0d\x00\x00\x7d\x01\x74\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\xab\x01\x00\x00\x00\x00\x00\x00\x91\x02\x8c\x0f\x04\x00\x63\x02\x7d\x01\xab\x01\x00\x00\x00\x00\x00\x00\x9b\x00\x64\x06\x74\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x05\x19\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x9b\x00\x64\x07\x9d\x05\x53\x00\x63\x02\x01\x00\x63\x02\x7d\x01\x77\x00",
+ ._co_firsttraceable = 1,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[4];
+ }_object;
+ }
+_collections_abc_toplevel_consts_46_consts_5_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_item = {
+ Py_None,
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 2],
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 0],
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + -1],
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[6];
+ }_object;
+ }
+_collections_abc_toplevel_consts_46_consts_5_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 6,
+ },
+ .ob_item = {
+ &_Py_ID(__args__),
+ &_Py_ID(len),
+ & const_str__is_param_expr._ascii.ob_base,
+ & const_str_list._ascii.ob_base,
+ & const_str__CallableGenericAlias._ascii.ob_base,
+ & const_str_Callable._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[33];
+ }
+_collections_abc_toplevel_consts_46_consts_5_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 32,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_CallableGenericAlias.__reduce__",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[74];
+ }
+_collections_abc_toplevel_consts_46_consts_5_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 73,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xd8\x0f\x13\x8f\x7d\x89\x7d\x88\x04\xdc\x10\x13\x90\x44\x93\x09\x98\x51\x92\x0e\xa4\x3e\xb0\x24\xb0\x71\xb1\x27\xd4\x23\x3a\xdc\x13\x17\x98\x04\x98\x53\x98\x62\x98\x09\x93\x3f\xa0\x44\xa8\x12\xa1\x48\xd0\x13\x2c\x88\x44\xdc\x0f\x24\xa4\x78\xb0\x14\xd0\x26\x36\xd0\x0f\x36\xd0\x08\x36",
+};
+static
+ struct _PyCode_DEF(148)
+_collections_abc_toplevel_consts_46_consts_5 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 74,
+ },
+ .co_consts = & _collections_abc_toplevel_consts_46_consts_5_consts._object.ob_base.ob_base,
+ .co_names = & _collections_abc_toplevel_consts_46_consts_5_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 7 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 5,
+ .co_firstlineno = 488,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 2,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 428,
+ .co_localsplusnames = & importlib__bootstrap_toplevel_consts_30_consts_5_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_14_consts_2_localspluskinds.ob_base.ob_base,
+ .co_filename = & _collections_abc_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__reduce__),
+ .co_qualname = & _collections_abc_toplevel_consts_46_consts_5_qualname._ascii.ob_base,
+ .co_linetable = & _collections_abc_toplevel_consts_46_consts_5_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7d\x01\x74\x03\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\xab\x01\x00\x00\x00\x00\x00\x00\x64\x01\x6b\x28\x00\x00\x72\x0e\x74\x05\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x64\x02\x19\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x73\x13\x74\x07\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x64\x00\x64\x03\x1a\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7c\x01\x64\x03\x19\x00\x00\x00\x66\x02\x7d\x01\x74\x08\x00\x00\x00\x00\x00\x00\x00\x00\x74\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x66\x02\x66\x02\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+_collections_abc_toplevel_consts_46_consts_6_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ Py_None,
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 0],
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + -1],
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[8];
+ }_object;
+ }
+_collections_abc_toplevel_consts_46_consts_6_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 8,
+ },
+ .ob_item = {
+ &_Py_ID(isinstance),
+ & const_str_tuple._ascii.ob_base,
+ & const_str_super._ascii.ob_base,
+ &_Py_ID(__getitem__),
+ &_Py_ID(__args__),
+ & const_str_list._ascii.ob_base,
+ & const_str__CallableGenericAlias._ascii.ob_base,
+ & const_str_Callable._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[34];
+ }
+_collections_abc_toplevel_consts_46_consts_6_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 33,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_CallableGenericAlias.__getitem__",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[111];
+ }
+_collections_abc_toplevel_consts_46_consts_6_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 110,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\xf8\x80\x00\xf4\x0a\x00\x10\x1a\x98\x24\xa4\x05\xd4\x0f\x26\xd8\x14\x18\x90\x37\x88\x44\xe4\x13\x18\x91\x37\xd1\x13\x26\xa0\x74\xd3\x13\x2c\xd7\x13\x35\xd1\x13\x35\x88\x08\xf4\x06\x00\x10\x1a\x98\x28\xa0\x31\x99\x2b\xac\x05\xac\x74\xa0\x7d\xd4\x0f\x35\xd8\x17\x1f\xa0\x02\x91\x7c\x88\x48\xd8\x15\x1d\x98\x63\x98\x72\x90\x5d\x88\x46\xd8\x18\x1e\xa0\x08\xd0\x17\x29\x88\x48\xdc\x0f\x24\xa4\x58\xac\x75\xb0\x58\xab\x7f\xd3\x0f\x3f\xd0\x08\x3f",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[9];
+ }
+const_str_new_args = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 8,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "new_args",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[6];
+ }_object;
+ }
+_collections_abc_toplevel_consts_46_consts_6_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 6,
+ },
+ .ob_item = {
+ &_Py_ID(self),
+ &_Py_ID(item),
+ & const_str_new_args._ascii.ob_base,
+ & const_str_t_result._ascii.ob_base,
+ & const_str_t_args._ascii.ob_base,
+ &_Py_ID(__class__),
+ },
+ },
+};
+static
+ struct _PyCode_DEF(220)
+_collections_abc_toplevel_consts_46_consts_6 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 110,
+ },
+ .co_consts = & _collections_abc_toplevel_consts_46_consts_6_consts._object.ob_base.ob_base,
+ .co_names = & _collections_abc_toplevel_consts_46_consts_6_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 12 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 6,
+ .co_firstlineno = 494,
+ .co_nlocalsplus = 6,
+ .co_nlocals = 5,
+ .co_ncellvars = 0,
+ .co_nfreevars = 1,
+ .co_version = 429,
+ .co_localsplusnames = & _collections_abc_toplevel_consts_46_consts_6_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & _collections_abc_toplevel_consts_46_consts_3_localspluskinds.ob_base.ob_base,
+ .co_filename = & _collections_abc_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__getitem__),
+ .co_qualname = & _collections_abc_toplevel_consts_46_consts_6_qualname._ascii.ob_base,
+ .co_linetable = & _collections_abc_toplevel_consts_46_consts_6_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x95\x01\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x74\x02\x00\x00\x00\x00\x00\x00\x00\x00\xab\x02\x00\x00\x00\x00\x00\x00\x73\x03\x7c\x01\x66\x01\x7d\x01\x74\x04\x00\x00\x00\x00\x00\x00\x00\x00\x89\x05\x7c\x00\x8d\x0d\x00\x00\x7c\x01\xab\x01\x00\x00\x00\x00\x00\x00\x6a\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7d\x02\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x02\x64\x01\x19\x00\x00\x00\x74\x02\x00\x00\x00\x00\x00\x00\x00\x00\x74\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x66\x02\xab\x02\x00\x00\x00\x00\x00\x00\x73\x0e\x7c\x02\x64\x02\x19\x00\x00\x00\x7d\x03\x7c\x02\x64\x00\x64\x02\x1a\x00\x7d\x04\x7c\x04\x7c\x03\x66\x02\x7d\x02\x74\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x74\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x74\x03\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x02\xab\x01\x00\x00\x00\x00\x00\x00\xab\x02\x00\x00\x00\x00\x00\x00\x53\x00",
+ ._co_firsttraceable = 1,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[7];
+ }_object;
+ }
+_collections_abc_toplevel_consts_46_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 7,
+ },
+ .ob_item = {
+ & const_str__CallableGenericAlias._ascii.ob_base,
+ & _collections_abc_toplevel_consts_46_consts_1._ascii.ob_base,
+ (PyObject *)& _Py_SINGLETON(tuple_empty),
+ & _collections_abc_toplevel_consts_46_consts_3.ob_base.ob_base,
+ & _collections_abc_toplevel_consts_46_consts_4.ob_base.ob_base,
+ & _collections_abc_toplevel_consts_46_consts_5.ob_base.ob_base,
+ & _collections_abc_toplevel_consts_46_consts_6.ob_base.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[10];
+ }_object;
+ }
+_collections_abc_toplevel_consts_46_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 10,
+ },
+ .ob_item = {
+ &_Py_ID(__name__),
+ &_Py_ID(__module__),
+ &_Py_ID(__qualname__),
+ &_Py_ID(__doc__),
+ &_Py_ID(__slots__),
+ &_Py_ID(__new__),
+ &_Py_ID(__repr__),
+ &_Py_ID(__reduce__),
+ &_Py_ID(__getitem__),
+ &_Py_ID(__classcell__),
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[43];
+ }
+_collections_abc_toplevel_consts_46_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 42,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\xf8\x84\x00\xf1\x02\x07\x05\x08\xf0\x12\x00\x11\x13\x80\x49\xf4\x04\x0a\x05\x32\xf4\x18\x05\x05\x35\xf2\x0e\x04\x05\x37\xf7\x0c\x0f\x05\x40\x01\xf0\x00\x0f\x05\x40\x01",
+};
+static
+ struct _PyCode_DEF(64)
+_collections_abc_toplevel_consts_46 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 32,
+ },
+ .co_consts = & _collections_abc_toplevel_consts_46_consts._object.ob_base.ob_base,
+ .co_names = & _collections_abc_toplevel_consts_46_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 0,
+ .co_argcount = 0,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 3 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 2,
+ .co_firstlineno = 457,
+ .co_nlocalsplus = 1,
+ .co_nlocals = 0,
+ .co_ncellvars = 1,
+ .co_nfreevars = 0,
+ .co_version = 430,
+ .co_localsplusnames = & importlib__bootstrap_external_toplevel_consts_58_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_characters[64]),
+ .co_filename = & _collections_abc_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = & const_str__CallableGenericAlias._ascii.ob_base,
+ .co_qualname = & const_str__CallableGenericAlias._ascii.ob_base,
+ .co_linetable = & _collections_abc_toplevel_consts_46_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x87\x00\x97\x00\x65\x00\x5a\x01\x64\x00\x5a\x02\x64\x01\x5a\x03\x64\x02\x5a\x04\x88\x00\x66\x01\x64\x03\x84\x08\x5a\x05\x88\x00\x66\x01\x64\x04\x84\x08\x5a\x06\x64\x05\x84\x00\x5a\x07\x88\x00\x66\x01\x64\x06\x84\x08\x5a\x08\x88\x00\x78\x01\x5a\x09\x53\x00",
+ ._co_firsttraceable = 1,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[125];
+ }
+_collections_abc_toplevel_consts_48_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 124,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x43\x68\x65\x63\x6b\x73\x20\x69\x66\x20\x6f\x62\x6a\x20\x6d\x61\x74\x63\x68\x65\x73\x20\x65\x69\x74\x68\x65\x72\x20\x61\x20\x6c\x69\x73\x74\x20\x6f\x66\x20\x74\x79\x70\x65\x73\x2c\x20\x60\x60\x2e\x2e\x2e\x60\x60\x2c\x20\x60\x60\x50\x61\x72\x61\x6d\x53\x70\x65\x63\x60\x60\x20\x6f\x72\x0a\x20\x20\x20\x20\x60\x60\x5f\x43\x6f\x6e\x63\x61\x74\x65\x6e\x61\x74\x65\x47\x65\x6e\x65\x72\x69\x63\x41\x6c\x69\x61\x73\x60\x60\x20\x66\x72\x6f\x6d\x20\x74\x79\x70\x69\x6e\x67\x2e\x70\x79\x0a\x20\x20\x20\x20",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[10];
+ }
+const_str_ParamSpec = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 9,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "ParamSpec",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[25];
+ }
+const_str__ConcatenateGenericAlias = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 24,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_ConcatenateGenericAlias",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+_collections_abc_toplevel_consts_48_consts_2 = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & const_str_ParamSpec._ascii.ob_base,
+ & const_str__ConcatenateGenericAlias._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[7];
+ }
+const_str_typing = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 6,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "typing",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+_collections_abc_toplevel_consts_48_consts_4_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ &_Py_ID(__name__),
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[34];
+ }
+_collections_abc_toplevel_consts_48_consts_4_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 33,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_is_param_expr.<locals>.<genexpr>",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[27];
+ }
+_collections_abc_toplevel_consts_48_consts_4_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 26,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\xf8\xe8\x00\xf8\x80\x00\xd2\x2d\x55\xc0\x74\xa8\x63\xaf\x6c\xa9\x6c\xb8\x64\xd5\x2e\x42\xd1\x2d\x55\xf9",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[5];
+ }
+_collections_abc_toplevel_consts_48_consts_4_exceptiontable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x83\x19\x1c\x01",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+_collections_abc_toplevel_consts_48_consts_4_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ & importlib__bootstrap_external_toplevel_consts_6_localsplusnames_0._ascii.ob_base,
+ &_Py_ID(name),
+ &_Py_ID(obj),
+ },
+ },
+};
+static
+ struct _PyCode_DEF(60)
+_collections_abc_toplevel_consts_48_consts_4 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 30,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_1_consts._object.ob_base.ob_base,
+ .co_names = & _collections_abc_toplevel_consts_48_consts_4_names._object.ob_base.ob_base,
+ .co_exceptiontable = & _collections_abc_toplevel_consts_48_consts_4_exceptiontable.ob_base.ob_base,
+ .co_flags = 51,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 6 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 3,
+ .co_firstlineno = 521,
+ .co_nlocalsplus = 3,
+ .co_nlocals = 2,
+ .co_ncellvars = 0,
+ .co_nfreevars = 1,
+ .co_version = 431,
+ .co_localsplusnames = & _collections_abc_toplevel_consts_48_consts_4_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_7_consts_1_consts_1_consts_4_localspluskinds.ob_base.ob_base,
+ .co_filename = & _collections_abc_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_STR(anon_genexpr),
+ .co_qualname = & _collections_abc_toplevel_consts_48_consts_4_qualname._ascii.ob_base,
+ .co_linetable = & _collections_abc_toplevel_consts_48_consts_4_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x95\x01\x4b\x00\x01\x00\x97\x00\x7c\x00\x5d\x13\x00\x00\x7d\x01\x89\x02\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x6b\x28\x00\x00\x96\x01\x97\x01\x01\x00\x8c\x15\x04\x00\x79\x00\xad\x03\x77\x01",
+ ._co_firsttraceable = 3,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[5];
+ }_object;
+ }
+_collections_abc_toplevel_consts_48_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 5,
+ },
+ .ob_item = {
+ & _collections_abc_toplevel_consts_48_consts_0._ascii.ob_base,
+ Py_True,
+ & _collections_abc_toplevel_consts_48_consts_2._object.ob_base.ob_base,
+ & const_str_typing._ascii.ob_base,
+ & _collections_abc_toplevel_consts_48_consts_4.ob_base.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[9];
+ }
+const_str_Ellipsis = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 8,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Ellipsis",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[6];
+ }_object;
+ }
+_collections_abc_toplevel_consts_48_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 6,
+ },
+ .ob_item = {
+ & const_str_Ellipsis._ascii.ob_base,
+ &_Py_ID(isinstance),
+ & const_str_list._ascii.ob_base,
+ &_Py_ID(type),
+ &_Py_ID(__module__),
+ & const_str_any._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[74];
+ }
+_collections_abc_toplevel_consts_48_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 73,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\xf8\x80\x00\xf0\x08\x00\x08\x0b\x8c\x68\x81\x7f\xd8\x0f\x13\xdc\x07\x11\x90\x23\x94\x74\xd4\x07\x1c\xd8\x0f\x13\xdc\x0a\x0e\x88\x73\x8b\x29\x80\x43\xd8\x0c\x35\x80\x45\xd8\x0b\x0e\x8f\x3e\x89\x3e\x98\x58\xd1\x0b\x25\xd2\x0b\x55\xac\x23\xd3\x2d\x55\xc8\x75\xd4\x2d\x55\xd3\x2a\x55\xd0\x04\x55",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[6];
+ }
+const_str_names = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 5,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "names",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+_collections_abc_toplevel_consts_48_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ &_Py_ID(obj),
+ & const_str_names._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(156)
+_collections_abc_toplevel_consts_48 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 78,
+ },
+ .co_consts = & _collections_abc_toplevel_consts_48_consts._object.ob_base.ob_base,
+ .co_names = & _collections_abc_toplevel_consts_48_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 6 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 511,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 2,
+ .co_ncellvars = 1,
+ .co_nfreevars = 0,
+ .co_version = 432,
+ .co_localsplusnames = & _collections_abc_toplevel_consts_48_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_26_localspluskinds.ob_base.ob_base,
+ .co_filename = & _collections_abc_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = & const_str__is_param_expr._ascii.ob_base,
+ .co_qualname = & const_str__is_param_expr._ascii.ob_base,
+ .co_linetable = & _collections_abc_toplevel_consts_48_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x87\x00\x97\x00\x89\x00\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x75\x00\x72\x01\x79\x01\x74\x03\x00\x00\x00\x00\x00\x00\x00\x00\x89\x00\x74\x04\x00\x00\x00\x00\x00\x00\x00\x00\xab\x02\x00\x00\x00\x00\x00\x00\x72\x01\x79\x01\x74\x07\x00\x00\x00\x00\x00\x00\x00\x00\x89\x00\xab\x01\x00\x00\x00\x00\x00\x00\x8a\x00\x64\x02\x7d\x01\x89\x00\x6a\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x03\x6b\x28\x00\x00\x78\x01\x72\x14\x01\x00\x74\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x88\x00\x66\x01\x64\x04\x84\x08\x7c\x01\x44\x00\xab\x00\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x53\x00",
+ ._co_firsttraceable = 1,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[224];
+ }
+_collections_abc_toplevel_consts_49_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 223,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x52\x65\x74\x75\x72\x6e\x20\x74\x68\x65\x20\x72\x65\x70\x72\x28\x29\x20\x6f\x66\x20\x61\x6e\x20\x6f\x62\x6a\x65\x63\x74\x2c\x20\x73\x70\x65\x63\x69\x61\x6c\x2d\x63\x61\x73\x69\x6e\x67\x20\x74\x79\x70\x65\x73\x20\x28\x69\x6e\x74\x65\x72\x6e\x61\x6c\x20\x68\x65\x6c\x70\x65\x72\x29\x2e\x0a\x0a\x20\x20\x20\x20\x43\x6f\x70\x69\x65\x64\x20\x66\x72\x6f\x6d\x20\x3a\x6d\x6f\x64\x3a\x60\x74\x79\x70\x69\x6e\x67\x60\x20\x73\x69\x6e\x63\x65\x20\x63\x6f\x6c\x6c\x65\x63\x74\x69\x6f\x6e\x73\x2e\x61\x62\x63\x0a\x20\x20\x20\x20\x73\x68\x6f\x75\x6c\x64\x6e\x27\x74\x20\x64\x65\x70\x65\x6e\x64\x20\x6f\x6e\x20\x74\x68\x61\x74\x20\x6d\x6f\x64\x75\x6c\x65\x2e\x0a\x20\x20\x20\x20\x28\x4b\x65\x65\x70\x20\x74\x68\x69\x73\x20\x72\x6f\x75\x67\x68\x6c\x79\x20\x69\x6e\x20\x73\x79\x6e\x63\x20\x77\x69\x74\x68\x20\x74\x68\x65\x20\x74\x79\x70\x69\x6e\x67\x20\x76\x65\x72\x73\x69\x6f\x6e\x2e\x29\x0a\x20\x20\x20\x20",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[4];
+ }
+_collections_abc_toplevel_consts_49_consts_3 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 3,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "...",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[4];
+ }_object;
+ }
+_collections_abc_toplevel_consts_49_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_item = {
+ & _collections_abc_toplevel_consts_49_consts_0._ascii.ob_base,
+ &_Py_ID(builtins),
+ &_Py_STR(dot),
+ & _collections_abc_toplevel_consts_49_consts_3._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[13];
+ }
+const_str_FunctionType = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 12,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "FunctionType",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[5];
+ }
+const_str_repr = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 4,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "repr",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[8];
+ }_object;
+ }
+_collections_abc_toplevel_consts_49_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 8,
+ },
+ .ob_item = {
+ &_Py_ID(isinstance),
+ &_Py_ID(type),
+ &_Py_ID(__module__),
+ &_Py_ID(__qualname__),
+ & const_str_Ellipsis._ascii.ob_base,
+ & const_str_FunctionType._ascii.ob_base,
+ &_Py_ID(__name__),
+ & const_str_repr._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[108];
+ }
+_collections_abc_toplevel_consts_49_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 107,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf4\x0e\x00\x08\x12\x90\x23\x94\x74\xd4\x07\x1c\xd8\x0b\x0e\x8f\x3e\x89\x3e\x98\x5a\xd2\x0b\x27\xd8\x13\x16\xd7\x13\x23\xd1\x13\x23\xd0\x0c\x23\xd8\x12\x15\x97\x2e\x91\x2e\xd0\x11\x21\xa0\x11\xa0\x33\xd7\x23\x33\xd1\x23\x33\xd0\x22\x34\xd0\x0f\x35\xd0\x08\x35\xd8\x07\x0a\x8c\x68\x81\x7f\xd8\x0f\x14\xdc\x07\x11\x90\x23\x94\x7c\xd4\x07\x24\xd8\x0f\x12\x8f\x7c\x89\x7c\xd0\x08\x1b\xdc\x0b\x0f\x90\x03\x8b\x39\xd0\x04\x14",
+};
+static
+ struct _PyCode_DEF(238)
+_collections_abc_toplevel_consts_49 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 119,
+ },
+ .co_consts = & _collections_abc_toplevel_consts_49_consts._object.ob_base.ob_base,
+ .co_names = & _collections_abc_toplevel_consts_49_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 5 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 523,
+ .co_nlocalsplus = 1,
+ .co_nlocals = 1,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 433,
+ .co_localsplusnames = & importlib__bootstrap_toplevel_consts_1_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_characters[32]),
+ .co_filename = & _collections_abc_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = & const_str__type_repr._ascii.ob_base,
+ .co_qualname = & const_str__type_repr._ascii.ob_base,
+ .co_linetable = & _collections_abc_toplevel_consts_49_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x74\x02\x00\x00\x00\x00\x00\x00\x00\x00\xab\x02\x00\x00\x00\x00\x00\x00\x72\x36\x7c\x00\x6a\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x01\x6b\x28\x00\x00\x72\x0c\x7c\x00\x6a\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x53\x00\x7c\x00\x6a\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9b\x00\x64\x02\x7c\x00\x6a\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9b\x00\x9d\x03\x53\x00\x7c\x00\x74\x08\x00\x00\x00\x00\x00\x00\x00\x00\x75\x00\x72\x01\x79\x03\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x74\x0a\x00\x00\x00\x00\x00\x00\x00\x00\xab\x02\x00\x00\x00\x00\x00\x00\x72\x0c\x7c\x00\x6a\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x53\x00\x74\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[18];
+ }
+_collections_abc_toplevel_consts_50_consts_2_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 17,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Callable.__call__",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+_collections_abc_toplevel_consts_50_consts_2_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ &_Py_ID(self),
+ &_Py_ID(args),
+ & const_str_kwds._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(4)
+_collections_abc_toplevel_consts_50_consts_2 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 2,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_30_consts_4_consts._object.ob_base.ob_base,
+ .co_names = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 15,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 3 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 0,
+ .co_firstlineno = 545,
+ .co_nlocalsplus = 3,
+ .co_nlocals = 3,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 434,
+ .co_localsplusnames = & _collections_abc_toplevel_consts_50_consts_2_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_3_localspluskinds.ob_base.ob_base,
+ .co_filename = & _collections_abc_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__call__),
+ .co_qualname = & _collections_abc_toplevel_consts_50_consts_2_qualname._ascii.ob_base,
+ .co_linetable = & _collections_abc_toplevel_consts_40_consts_2_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x79\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+_collections_abc_toplevel_consts_50_consts_3_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ Py_None,
+ &_Py_ID(__call__),
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+_collections_abc_toplevel_consts_50_consts_3_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ & const_str_Callable._ascii.ob_base,
+ & const_str__check_methods._ascii.ob_base,
+ & const_str_NotImplemented._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[26];
+ }
+_collections_abc_toplevel_consts_50_consts_3_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 25,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Callable.__subclasshook__",
+};
+static
+ struct _PyCode_DEF(54)
+_collections_abc_toplevel_consts_50_consts_3 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 27,
+ },
+ .co_consts = & _collections_abc_toplevel_consts_50_consts_3_consts._object.ob_base.ob_base,
+ .co_names = & _collections_abc_toplevel_consts_50_consts_3_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 6 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 549,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 2,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 435,
+ .co_localsplusnames = & _collections_abc_toplevel_consts_17_consts_3_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_14_consts_2_localspluskinds.ob_base.ob_base,
+ .co_filename = & _collections_abc_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__subclasshook__),
+ .co_qualname = & _collections_abc_toplevel_consts_50_consts_3_qualname._ascii.ob_base,
+ .co_linetable = & _collections_abc_toplevel_consts_17_consts_3_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x00\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x75\x00\x72\x0c\x74\x03\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x64\x01\xab\x02\x00\x00\x00\x00\x00\x00\x53\x00\x74\x04\x00\x00\x00\x00\x00\x00\x00\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[5];
+ }_object;
+ }
+_collections_abc_toplevel_consts_50_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 5,
+ },
+ .ob_item = {
+ & const_str_Callable._ascii.ob_base,
+ (PyObject *)& _Py_SINGLETON(tuple_empty),
+ & _collections_abc_toplevel_consts_50_consts_2.ob_base.ob_base,
+ & _collections_abc_toplevel_consts_50_consts_3.ob_base.ob_base,
+ Py_None,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[10];
+ }_object;
+ }
+_collections_abc_toplevel_consts_50_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 10,
+ },
+ .ob_item = {
+ &_Py_ID(__name__),
+ &_Py_ID(__module__),
+ &_Py_ID(__qualname__),
+ &_Py_ID(__slots__),
+ & const_str_abstractmethod._ascii.ob_base,
+ &_Py_ID(__call__),
+ & const_str_classmethod._ascii.ob_base,
+ &_Py_ID(__subclasshook__),
+ & const_str__CallableGenericAlias._ascii.ob_base,
+ &_Py_ID(__class_getitem__),
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[60];
+ }
+_collections_abc_toplevel_consts_50_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 59,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x84\x00\xe0\x10\x12\x80\x49\xe0\x05\x13\xf1\x02\x01\x05\x15\xf3\x03\x00\x06\x14\xf0\x02\x01\x05\x15\xf0\x06\x00\x06\x11\xf1\x02\x03\x05\x1e\xf3\x03\x00\x06\x11\xf0\x02\x03\x05\x1e\xf1\x0a\x00\x19\x24\xd0\x24\x39\xd3\x18\x3a\xd1\x04\x15",
+};
+static
+ struct _PyCode_DEF(64)
+_collections_abc_toplevel_consts_50 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 32,
+ },
+ .co_consts = & _collections_abc_toplevel_consts_50_consts._object.ob_base.ob_base,
+ .co_names = & _collections_abc_toplevel_consts_50_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 0,
+ .co_argcount = 0,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 3 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 3,
+ .co_firstlineno = 541,
+ .co_nlocalsplus = 0,
+ .co_nlocals = 0,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 436,
+ .co_localsplusnames = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_filename = & _collections_abc_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = & const_str_Callable._ascii.ob_base,
+ .co_qualname = & const_str_Callable._ascii.ob_base,
+ .co_linetable = & _collections_abc_toplevel_consts_50_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x65\x00\x5a\x01\x64\x00\x5a\x02\x64\x01\x5a\x03\x65\x04\x64\x02\x84\x00\xab\x00\x00\x00\x00\x00\x00\x00\x5a\x05\x65\x06\x64\x03\x84\x00\xab\x00\x00\x00\x00\x00\x00\x00\x5a\x07\x02\x00\x65\x06\x65\x08\xab\x01\x00\x00\x00\x00\x00\x00\x5a\x09\x79\x04",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[347];
+ }
+_collections_abc_toplevel_consts_52_consts_1 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 346,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x41\x20\x73\x65\x74\x20\x69\x73\x20\x61\x20\x66\x69\x6e\x69\x74\x65\x2c\x20\x69\x74\x65\x72\x61\x62\x6c\x65\x20\x63\x6f\x6e\x74\x61\x69\x6e\x65\x72\x2e\x0a\x0a\x20\x20\x20\x20\x54\x68\x69\x73\x20\x63\x6c\x61\x73\x73\x20\x70\x72\x6f\x76\x69\x64\x65\x73\x20\x63\x6f\x6e\x63\x72\x65\x74\x65\x20\x67\x65\x6e\x65\x72\x69\x63\x20\x69\x6d\x70\x6c\x65\x6d\x65\x6e\x74\x61\x74\x69\x6f\x6e\x73\x20\x6f\x66\x20\x61\x6c\x6c\x0a\x20\x20\x20\x20\x6d\x65\x74\x68\x6f\x64\x73\x20\x65\x78\x63\x65\x70\x74\x20\x66\x6f\x72\x20\x5f\x5f\x63\x6f\x6e\x74\x61\x69\x6e\x73\x5f\x5f\x2c\x20\x5f\x5f\x69\x74\x65\x72\x5f\x5f\x20\x61\x6e\x64\x20\x5f\x5f\x6c\x65\x6e\x5f\x5f\x2e\x0a\x0a\x20\x20\x20\x20\x54\x6f\x20\x6f\x76\x65\x72\x72\x69\x64\x65\x20\x74\x68\x65\x20\x63\x6f\x6d\x70\x61\x72\x69\x73\x6f\x6e\x73\x20\x28\x70\x72\x65\x73\x75\x6d\x61\x62\x6c\x79\x20\x66\x6f\x72\x20\x73\x70\x65\x65\x64\x2c\x20\x61\x73\x20\x74\x68\x65\x0a\x20\x20\x20\x20\x73\x65\x6d\x61\x6e\x74\x69\x63\x73\x20\x61\x72\x65\x20\x66\x69\x78\x65\x64\x29\x2c\x20\x72\x65\x64\x65\x66\x69\x6e\x65\x20\x5f\x5f\x6c\x65\x5f\x5f\x20\x61\x6e\x64\x20\x5f\x5f\x67\x65\x5f\x5f\x2c\x0a\x20\x20\x20\x20\x74\x68\x65\x6e\x20\x74\x68\x65\x20\x6f\x74\x68\x65\x72\x20\x6f\x70\x65\x72\x61\x74\x69\x6f\x6e\x73\x20\x77\x69\x6c\x6c\x20\x61\x75\x74\x6f\x6d\x61\x74\x69\x63\x61\x6c\x6c\x79\x20\x66\x6f\x6c\x6c\x6f\x77\x20\x73\x75\x69\x74\x2e\x0a\x20\x20\x20\x20",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+_collections_abc_toplevel_consts_52_consts_3_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ Py_None,
+ Py_False,
+ Py_True,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[4];
+ }_object;
+ }
+_collections_abc_toplevel_consts_52_consts_3_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_item = {
+ &_Py_ID(isinstance),
+ & const_str_Set._ascii.ob_base,
+ & const_str_NotImplemented._ascii.ob_base,
+ &_Py_ID(len),
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[11];
+ }
+_collections_abc_toplevel_consts_52_consts_3_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 10,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Set.__le__",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[69];
+ }
+_collections_abc_toplevel_consts_52_consts_3_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 68,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xdc\x0f\x19\x98\x25\xa4\x13\xd4\x0f\x25\xdc\x13\x21\xd0\x0c\x21\xdc\x0b\x0e\x88\x74\x8b\x39\x94\x73\x98\x35\x93\x7a\xd2\x0b\x21\xd8\x13\x18\xd8\x14\x18\xf2\x00\x02\x09\x1d\x88\x44\xd8\x0f\x13\x98\x35\xd2\x0f\x20\xd9\x17\x1c\xf0\x05\x02\x09\x1d\xf0\x06\x00\x10\x14",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[5];
+ }
+const_str_elem = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 4,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "elem",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+_collections_abc_toplevel_consts_52_consts_3_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ &_Py_ID(self),
+ & const_str_other._ascii.ob_base,
+ & const_str_elem._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(122)
+_collections_abc_toplevel_consts_52_consts_3 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 61,
+ },
+ .co_consts = & _collections_abc_toplevel_consts_52_consts_3_consts._object.ob_base.ob_base,
+ .co_names = & _collections_abc_toplevel_consts_52_consts_3_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 7 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 574,
+ .co_nlocalsplus = 3,
+ .co_nlocals = 3,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 437,
+ .co_localsplusnames = & _collections_abc_toplevel_consts_52_consts_3_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_3_localspluskinds.ob_base.ob_base,
+ .co_filename = & _collections_abc_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__le__),
+ .co_qualname = & _collections_abc_toplevel_consts_52_consts_3_qualname._ascii.ob_base,
+ .co_linetable = & _collections_abc_toplevel_consts_52_consts_3_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x74\x02\x00\x00\x00\x00\x00\x00\x00\x00\xab\x02\x00\x00\x00\x00\x00\x00\x73\x06\x74\x04\x00\x00\x00\x00\x00\x00\x00\x00\x53\x00\x74\x07\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x74\x07\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\xab\x01\x00\x00\x00\x00\x00\x00\x6b\x44\x00\x00\x72\x01\x79\x01\x7c\x00\x44\x00\x5d\x08\x00\x00\x7d\x02\x7c\x02\x7c\x01\x76\x01\x73\x01\x8c\x08\x01\x00\x79\x01\x04\x00\x79\x02",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[5];
+ }_object;
+ }
+_collections_abc_toplevel_consts_52_consts_4_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 5,
+ },
+ .ob_item = {
+ &_Py_ID(isinstance),
+ & const_str_Set._ascii.ob_base,
+ & const_str_NotImplemented._ascii.ob_base,
+ &_Py_ID(len),
+ &_Py_ID(__le__),
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[11];
+ }
+_collections_abc_toplevel_consts_52_consts_4_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 10,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Set.__lt__",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[52];
+ }
+_collections_abc_toplevel_consts_52_consts_4_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 51,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xdc\x0f\x19\x98\x25\xa4\x13\xd4\x0f\x25\xdc\x13\x21\xd0\x0c\x21\xdc\x0f\x12\x90\x34\x8b\x79\x9c\x33\x98\x75\x9b\x3a\xd1\x0f\x25\xd2\x0f\x3c\xa8\x24\xaf\x2b\xa9\x2b\xb0\x65\xd3\x2a\x3c\xd0\x08\x3c",
+};
+static
+ struct _PyCode_DEF(130)
+_collections_abc_toplevel_consts_52_consts_4 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 65,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_1_consts._object.ob_base.ob_base,
+ .co_names = & _collections_abc_toplevel_consts_52_consts_4_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 6 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 584,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 2,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 438,
+ .co_localsplusnames = & importlib__bootstrap_external_toplevel_consts_58_consts_3_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_14_consts_2_localspluskinds.ob_base.ob_base,
+ .co_filename = & _collections_abc_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__lt__),
+ .co_qualname = & _collections_abc_toplevel_consts_52_consts_4_qualname._ascii.ob_base,
+ .co_linetable = & _collections_abc_toplevel_consts_52_consts_4_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x74\x02\x00\x00\x00\x00\x00\x00\x00\x00\xab\x02\x00\x00\x00\x00\x00\x00\x73\x06\x74\x04\x00\x00\x00\x00\x00\x00\x00\x00\x53\x00\x74\x07\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x74\x07\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\xab\x01\x00\x00\x00\x00\x00\x00\x6b\x02\x00\x00\x78\x01\x72\x11\x01\x00\x7c\x00\x6a\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\xab\x01\x00\x00\x00\x00\x00\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[5];
+ }_object;
+ }
+_collections_abc_toplevel_consts_52_consts_5_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 5,
+ },
+ .ob_item = {
+ &_Py_ID(isinstance),
+ & const_str_Set._ascii.ob_base,
+ & const_str_NotImplemented._ascii.ob_base,
+ &_Py_ID(len),
+ &_Py_ID(__ge__),
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[11];
+ }
+_collections_abc_toplevel_consts_52_consts_5_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 10,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Set.__gt__",
+};
+static
+ struct _PyCode_DEF(130)
+_collections_abc_toplevel_consts_52_consts_5 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 65,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_1_consts._object.ob_base.ob_base,
+ .co_names = & _collections_abc_toplevel_consts_52_consts_5_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 6 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 589,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 2,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 439,
+ .co_localsplusnames = & importlib__bootstrap_external_toplevel_consts_58_consts_3_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_14_consts_2_localspluskinds.ob_base.ob_base,
+ .co_filename = & _collections_abc_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__gt__),
+ .co_qualname = & _collections_abc_toplevel_consts_52_consts_5_qualname._ascii.ob_base,
+ .co_linetable = & _collections_abc_toplevel_consts_52_consts_4_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x74\x02\x00\x00\x00\x00\x00\x00\x00\x00\xab\x02\x00\x00\x00\x00\x00\x00\x73\x06\x74\x04\x00\x00\x00\x00\x00\x00\x00\x00\x53\x00\x74\x07\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x74\x07\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\xab\x01\x00\x00\x00\x00\x00\x00\x6b\x44\x00\x00\x78\x01\x72\x11\x01\x00\x7c\x00\x6a\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\xab\x01\x00\x00\x00\x00\x00\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[11];
+ }
+_collections_abc_toplevel_consts_52_consts_6_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 10,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Set.__ge__",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[69];
+ }
+_collections_abc_toplevel_consts_52_consts_6_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 68,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xdc\x0f\x19\x98\x25\xa4\x13\xd4\x0f\x25\xdc\x13\x21\xd0\x0c\x21\xdc\x0b\x0e\x88\x74\x8b\x39\x94\x73\x98\x35\x93\x7a\xd2\x0b\x21\xd8\x13\x18\xd8\x14\x19\xf2\x00\x02\x09\x1d\x88\x44\xd8\x0f\x13\x98\x34\xd2\x0f\x1f\xd9\x17\x1c\xf0\x05\x02\x09\x1d\xf0\x06\x00\x10\x14",
+};
+static
+ struct _PyCode_DEF(122)
+_collections_abc_toplevel_consts_52_consts_6 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 61,
+ },
+ .co_consts = & _collections_abc_toplevel_consts_52_consts_3_consts._object.ob_base.ob_base,
+ .co_names = & _collections_abc_toplevel_consts_52_consts_3_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 7 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 594,
+ .co_nlocalsplus = 3,
+ .co_nlocals = 3,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 440,
+ .co_localsplusnames = & _collections_abc_toplevel_consts_52_consts_3_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_3_localspluskinds.ob_base.ob_base,
+ .co_filename = & _collections_abc_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__ge__),
+ .co_qualname = & _collections_abc_toplevel_consts_52_consts_6_qualname._ascii.ob_base,
+ .co_linetable = & _collections_abc_toplevel_consts_52_consts_6_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x74\x02\x00\x00\x00\x00\x00\x00\x00\x00\xab\x02\x00\x00\x00\x00\x00\x00\x73\x06\x74\x04\x00\x00\x00\x00\x00\x00\x00\x00\x53\x00\x74\x07\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x74\x07\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\xab\x01\x00\x00\x00\x00\x00\x00\x6b\x02\x00\x00\x72\x01\x79\x01\x7c\x01\x44\x00\x5d\x08\x00\x00\x7d\x02\x7c\x02\x7c\x00\x76\x01\x73\x01\x8c\x08\x01\x00\x79\x01\x04\x00\x79\x02",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[11];
+ }
+_collections_abc_toplevel_consts_52_consts_7_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 10,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Set.__eq__",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[52];
+ }
+_collections_abc_toplevel_consts_52_consts_7_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 51,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xdc\x0f\x19\x98\x25\xa4\x13\xd4\x0f\x25\xdc\x13\x21\xd0\x0c\x21\xdc\x0f\x12\x90\x34\x8b\x79\x9c\x43\xa0\x05\x9b\x4a\xd1\x0f\x26\xd2\x0f\x3d\xa8\x34\xaf\x3b\xa9\x3b\xb0\x75\xd3\x2b\x3d\xd0\x08\x3d",
+};
+static
+ struct _PyCode_DEF(130)
+_collections_abc_toplevel_consts_52_consts_7 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 65,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_1_consts._object.ob_base.ob_base,
+ .co_names = & _collections_abc_toplevel_consts_52_consts_4_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 6 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 604,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 2,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 441,
+ .co_localsplusnames = & importlib__bootstrap_external_toplevel_consts_58_consts_3_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_14_consts_2_localspluskinds.ob_base.ob_base,
+ .co_filename = & _collections_abc_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__eq__),
+ .co_qualname = & _collections_abc_toplevel_consts_52_consts_7_qualname._ascii.ob_base,
+ .co_linetable = & _collections_abc_toplevel_consts_52_consts_7_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x74\x02\x00\x00\x00\x00\x00\x00\x00\x00\xab\x02\x00\x00\x00\x00\x00\x00\x73\x06\x74\x04\x00\x00\x00\x00\x00\x00\x00\x00\x53\x00\x74\x07\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x74\x07\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\xab\x01\x00\x00\x00\x00\x00\x00\x6b\x28\x00\x00\x78\x01\x72\x11\x01\x00\x7c\x00\x6a\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\xab\x01\x00\x00\x00\x00\x00\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[189];
+ }
+_collections_abc_toplevel_consts_52_consts_8_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 188,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x43\x6f\x6e\x73\x74\x72\x75\x63\x74\x20\x61\x6e\x20\x69\x6e\x73\x74\x61\x6e\x63\x65\x20\x6f\x66\x20\x74\x68\x65\x20\x63\x6c\x61\x73\x73\x20\x66\x72\x6f\x6d\x20\x61\x6e\x79\x20\x69\x74\x65\x72\x61\x62\x6c\x65\x20\x69\x6e\x70\x75\x74\x2e\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x4d\x75\x73\x74\x20\x6f\x76\x65\x72\x72\x69\x64\x65\x20\x74\x68\x69\x73\x20\x6d\x65\x74\x68\x6f\x64\x20\x69\x66\x20\x74\x68\x65\x20\x63\x6c\x61\x73\x73\x20\x63\x6f\x6e\x73\x74\x72\x75\x63\x74\x6f\x72\x20\x73\x69\x67\x6e\x61\x74\x75\x72\x65\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x64\x6f\x65\x73\x20\x6e\x6f\x74\x20\x61\x63\x63\x65\x70\x74\x20\x61\x6e\x20\x69\x74\x65\x72\x61\x62\x6c\x65\x20\x66\x6f\x72\x20\x61\x6e\x20\x69\x6e\x70\x75\x74\x2e\x0a\x20\x20\x20\x20\x20\x20\x20\x20",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+_collections_abc_toplevel_consts_52_consts_8_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & _collections_abc_toplevel_consts_52_consts_8_consts_0._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[15];
+ }
+const_str__from_iterable = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 14,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_from_iterable",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[19];
+ }
+_collections_abc_toplevel_consts_52_consts_8_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 18,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Set._from_iterable",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[14];
+ }
+_collections_abc_toplevel_consts_52_consts_8_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 13,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf1\x0e\x00\x10\x13\x90\x32\x8b\x77\x88\x0e",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[3];
+ }
+const_str_it = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 2,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "it",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+_collections_abc_toplevel_consts_52_consts_8_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & const_str_cls._ascii.ob_base,
+ & const_str_it._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(18)
+_collections_abc_toplevel_consts_52_consts_8 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 9,
+ },
+ .co_consts = & _collections_abc_toplevel_consts_52_consts_8_consts._object.ob_base.ob_base,
+ .co_names = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 5 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 3,
+ .co_firstlineno = 609,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 2,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 442,
+ .co_localsplusnames = & _collections_abc_toplevel_consts_52_consts_8_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_14_consts_2_localspluskinds.ob_base.ob_base,
+ .co_filename = & _collections_abc_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = & const_str__from_iterable._ascii.ob_base,
+ .co_qualname = & _collections_abc_toplevel_consts_52_consts_8_qualname._ascii.ob_base,
+ .co_linetable = & _collections_abc_toplevel_consts_52_consts_8_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x02\x00\x7c\x00\x7c\x01\xab\x01\x00\x00\x00\x00\x00\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[31];
+ }
+_collections_abc_toplevel_consts_52_consts_9_consts_1_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 30,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Set.__and__.<locals>.<genexpr>",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[24];
+ }
+_collections_abc_toplevel_consts_52_consts_9_consts_1_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 23,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\xf8\xe8\x00\xf8\x80\x00\xd2\x22\x4d\xa8\x55\xb8\x75\xc8\x04\xba\x7d\xa4\x35\xd1\x22\x4d\xf9",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[9];
+ }
+_collections_abc_toplevel_consts_52_consts_9_consts_1_exceptiontable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 8,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x83\x09\x14\x01\x8d\x07\x14\x01",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+_collections_abc_toplevel_consts_52_consts_9_consts_1_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ & importlib__bootstrap_external_toplevel_consts_6_localsplusnames_0._ascii.ob_base,
+ &_Py_ID(value),
+ &_Py_ID(self),
+ },
+ },
+};
+static
+ struct _PyCode_DEF(44)
+_collections_abc_toplevel_consts_52_consts_9_consts_1 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 22,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_1_consts._object.ob_base.ob_base,
+ .co_names = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_exceptiontable = & _collections_abc_toplevel_consts_52_consts_9_consts_1_exceptiontable.ob_base.ob_base,
+ .co_flags = 51,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 6 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 3,
+ .co_firstlineno = 621,
+ .co_nlocalsplus = 3,
+ .co_nlocals = 2,
+ .co_ncellvars = 0,
+ .co_nfreevars = 1,
+ .co_version = 443,
+ .co_localsplusnames = & _collections_abc_toplevel_consts_52_consts_9_consts_1_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_7_consts_1_consts_1_consts_4_localspluskinds.ob_base.ob_base,
+ .co_filename = & _collections_abc_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_STR(anon_genexpr),
+ .co_qualname = & _collections_abc_toplevel_consts_52_consts_9_consts_1_qualname._ascii.ob_base,
+ .co_linetable = & _collections_abc_toplevel_consts_52_consts_9_consts_1_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x95\x01\x4b\x00\x01\x00\x97\x00\x7c\x00\x5d\x0b\x00\x00\x7d\x01\x7c\x01\x89\x02\x76\x00\x73\x01\x8c\x08\x7c\x01\x96\x01\x97\x01\x01\x00\x8c\x0d\x04\x00\x79\x00\xad\x03\x77\x01",
+ ._co_firsttraceable = 3,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+_collections_abc_toplevel_consts_52_consts_9_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ Py_None,
+ & _collections_abc_toplevel_consts_52_consts_9_consts_1.ob_base.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[4];
+ }_object;
+ }
+_collections_abc_toplevel_consts_52_consts_9_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_item = {
+ &_Py_ID(isinstance),
+ & const_str_Iterable._ascii.ob_base,
+ & const_str_NotImplemented._ascii.ob_base,
+ & const_str__from_iterable._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[12];
+ }
+_collections_abc_toplevel_consts_52_consts_9_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 11,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Set.__and__",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[43];
+ }
+_collections_abc_toplevel_consts_52_consts_9_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 42,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\xf8\x80\x00\xdc\x0f\x19\x98\x25\xa4\x18\xd4\x0f\x2a\xdc\x13\x21\xd0\x0c\x21\xd8\x0f\x13\xd7\x0f\x22\xd1\x0f\x22\xd3\x22\x4d\xb0\x65\xd4\x22\x4d\xd3\x0f\x4d\xd0\x08\x4d",
+};
+static
+ struct _PyCode_DEF(100)
+_collections_abc_toplevel_consts_52_consts_9 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 50,
+ },
+ .co_consts = & _collections_abc_toplevel_consts_52_consts_9_consts._object.ob_base.ob_base,
+ .co_names = & _collections_abc_toplevel_consts_52_consts_9_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 6 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 618,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 2,
+ .co_ncellvars = 1,
+ .co_nfreevars = 0,
+ .co_version = 444,
+ .co_localsplusnames = & importlib__bootstrap_external_toplevel_consts_58_consts_3_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_26_localspluskinds.ob_base.ob_base,
+ .co_filename = & _collections_abc_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__and__),
+ .co_qualname = & _collections_abc_toplevel_consts_52_consts_9_qualname._ascii.ob_base,
+ .co_linetable = & _collections_abc_toplevel_consts_52_consts_9_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x87\x00\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x74\x02\x00\x00\x00\x00\x00\x00\x00\x00\xab\x02\x00\x00\x00\x00\x00\x00\x73\x06\x74\x04\x00\x00\x00\x00\x00\x00\x00\x00\x53\x00\x89\x00\x6a\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x88\x00\x66\x01\x64\x01\x84\x08\x7c\x01\x44\x00\xab\x00\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x53\x00",
+ ._co_firsttraceable = 1,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[50];
+ }
+_collections_abc_toplevel_consts_52_consts_10_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 49,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Return True if two sets have a null intersection.",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+_collections_abc_toplevel_consts_52_consts_10_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ & _collections_abc_toplevel_consts_52_consts_10_consts_0._ascii.ob_base,
+ Py_False,
+ Py_True,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[11];
+ }
+const_str_isdisjoint = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 10,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "isdisjoint",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[15];
+ }
+_collections_abc_toplevel_consts_52_consts_10_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 14,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Set.isdisjoint",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[33];
+ }
+_collections_abc_toplevel_consts_52_consts_10_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 32,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xe0\x15\x1a\xf2\x00\x02\x09\x1d\x88\x45\xd8\x0f\x14\x98\x04\x8a\x7d\xd9\x17\x1c\xf0\x05\x02\x09\x1d\xf0\x06\x00\x10\x14",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+_collections_abc_toplevel_consts_52_consts_10_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ &_Py_ID(self),
+ & const_str_other._ascii.ob_base,
+ &_Py_ID(value),
+ },
+ },
+};
+static
+ struct _PyCode_DEF(30)
+_collections_abc_toplevel_consts_52_consts_10 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 15,
+ },
+ .co_consts = & _collections_abc_toplevel_consts_52_consts_10_consts._object.ob_base.ob_base,
+ .co_names = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 6 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 3,
+ .co_firstlineno = 625,
+ .co_nlocalsplus = 3,
+ .co_nlocals = 3,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 445,
+ .co_localsplusnames = & _collections_abc_toplevel_consts_52_consts_10_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_3_localspluskinds.ob_base.ob_base,
+ .co_filename = & _collections_abc_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = & const_str_isdisjoint._ascii.ob_base,
+ .co_qualname = & _collections_abc_toplevel_consts_52_consts_10_qualname._ascii.ob_base,
+ .co_linetable = & _collections_abc_toplevel_consts_52_consts_10_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x01\x44\x00\x5d\x08\x00\x00\x7d\x02\x7c\x02\x7c\x00\x76\x00\x73\x01\x8c\x08\x01\x00\x79\x01\x04\x00\x79\x02",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[30];
+ }
+_collections_abc_toplevel_consts_52_consts_11_consts_1_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 29,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Set.__or__.<locals>.<genexpr>",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[29];
+ }
+_collections_abc_toplevel_consts_52_consts_11_consts_1_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 28,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\xe8\x00\xf8\x80\x00\xd2\x10\x35\x90\x71\xb0\x31\xd2\x10\x35\xa8\x61\x94\x11\xd0\x10\x35\x90\x11\xd1\x10\x35\xf9",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[5];
+ }
+_collections_abc_toplevel_consts_52_consts_11_consts_1_exceptiontable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x82\x13\x15\x01",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+_collections_abc_toplevel_consts_52_consts_11_consts_1_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ & importlib__bootstrap_external_toplevel_consts_6_localsplusnames_0._ascii.ob_base,
+ &_Py_ID(s),
+ &_Py_ID(e),
+ },
+ },
+};
+static
+ struct _PyCode_DEF(46)
+_collections_abc_toplevel_consts_52_consts_11_consts_1 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 23,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_1_consts._object.ob_base.ob_base,
+ .co_names = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_exceptiontable = & _collections_abc_toplevel_consts_52_consts_11_consts_1_exceptiontable.ob_base.ob_base,
+ .co_flags = 51,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 6 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 3,
+ .co_firstlineno = 635,
+ .co_nlocalsplus = 3,
+ .co_nlocals = 3,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 446,
+ .co_localsplusnames = & _collections_abc_toplevel_consts_52_consts_11_consts_1_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_3_localspluskinds.ob_base.ob_base,
+ .co_filename = & _collections_abc_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_STR(anon_genexpr),
+ .co_qualname = & _collections_abc_toplevel_consts_52_consts_11_consts_1_qualname._ascii.ob_base,
+ .co_linetable = & _collections_abc_toplevel_consts_52_consts_11_consts_1_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x4b\x00\x01\x00\x97\x00\x7c\x00\x5d\x0d\x00\x00\x7d\x01\x7c\x01\x44\x00\x5d\x06\x00\x00\x7d\x02\x7c\x02\x96\x01\x97\x01\x01\x00\x8c\x08\x04\x00\x8c\x0f\x04\x00\x79\x00\xad\x03\x77\x01",
+ ._co_firsttraceable = 2,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+_collections_abc_toplevel_consts_52_consts_11_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ Py_None,
+ & _collections_abc_toplevel_consts_52_consts_11_consts_1.ob_base.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[11];
+ }
+_collections_abc_toplevel_consts_52_consts_11_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 10,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Set.__or__",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[50];
+ }
+_collections_abc_toplevel_consts_52_consts_11_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 49,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xdc\x0f\x19\x98\x25\xa4\x18\xd4\x0f\x2a\xdc\x13\x21\xd0\x0c\x21\xd9\x10\x35\x98\x54\xa0\x35\x98\x4d\xd4\x10\x35\x88\x05\xd8\x0f\x13\xd7\x0f\x22\xd1\x0f\x22\xa0\x35\xd3\x0f\x29\xd0\x08\x29",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[6];
+ }
+const_str_chain = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 5,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "chain",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+_collections_abc_toplevel_consts_52_consts_11_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ &_Py_ID(self),
+ & const_str_other._ascii.ob_base,
+ & const_str_chain._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(102)
+_collections_abc_toplevel_consts_52_consts_11 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 51,
+ },
+ .co_consts = & _collections_abc_toplevel_consts_52_consts_11_consts._object.ob_base.ob_base,
+ .co_names = & _collections_abc_toplevel_consts_52_consts_9_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 7 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 632,
+ .co_nlocalsplus = 3,
+ .co_nlocals = 3,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 447,
+ .co_localsplusnames = & _collections_abc_toplevel_consts_52_consts_11_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_3_localspluskinds.ob_base.ob_base,
+ .co_filename = & _collections_abc_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__or__),
+ .co_qualname = & _collections_abc_toplevel_consts_52_consts_11_qualname._ascii.ob_base,
+ .co_linetable = & _collections_abc_toplevel_consts_52_consts_11_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x74\x02\x00\x00\x00\x00\x00\x00\x00\x00\xab\x02\x00\x00\x00\x00\x00\x00\x73\x06\x74\x04\x00\x00\x00\x00\x00\x00\x00\x00\x53\x00\x64\x01\x84\x00\x7c\x00\x7c\x01\x66\x02\x44\x00\xab\x00\x00\x00\x00\x00\x00\x00\x7d\x02\x7c\x00\x6a\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x02\xab\x01\x00\x00\x00\x00\x00\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[31];
+ }
+_collections_abc_toplevel_consts_52_consts_12_consts_1_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 30,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Set.__sub__.<locals>.<genexpr>",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[33];
+ }
+_collections_abc_toplevel_consts_52_consts_12_consts_1_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 32,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\xf8\xe8\x00\xf8\x80\x00\xf2\x00\x01\x23\x3a\xa8\x55\xd8\x26\x2b\xb0\x35\xd1\x26\x38\xf4\x03\x00\x24\x29\xf1\x00\x01\x23\x3a\xf9",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[5];
+ }
+_collections_abc_toplevel_consts_52_consts_12_consts_1_exceptiontable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x83\x10\x13\x01",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+_collections_abc_toplevel_consts_52_consts_12_consts_1_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ & importlib__bootstrap_external_toplevel_consts_6_localsplusnames_0._ascii.ob_base,
+ &_Py_ID(value),
+ & const_str_other._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(42)
+_collections_abc_toplevel_consts_52_consts_12_consts_1 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 21,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_1_consts._object.ob_base.ob_base,
+ .co_names = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_exceptiontable = & _collections_abc_toplevel_consts_52_consts_12_consts_1_exceptiontable.ob_base.ob_base,
+ .co_flags = 51,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 6 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 3,
+ .co_firstlineno = 645,
+ .co_nlocalsplus = 3,
+ .co_nlocals = 2,
+ .co_ncellvars = 0,
+ .co_nfreevars = 1,
+ .co_version = 448,
+ .co_localsplusnames = & _collections_abc_toplevel_consts_52_consts_12_consts_1_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_7_consts_1_consts_1_consts_4_localspluskinds.ob_base.ob_base,
+ .co_filename = & _collections_abc_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_STR(anon_genexpr),
+ .co_qualname = & _collections_abc_toplevel_consts_52_consts_12_consts_1_qualname._ascii.ob_base,
+ .co_linetable = & _collections_abc_toplevel_consts_52_consts_12_consts_1_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x95\x01\x4b\x00\x01\x00\x97\x00\x7c\x00\x5d\x0a\x00\x00\x7d\x01\x7c\x01\x89\x02\x76\x01\x72\x04\x7c\x01\x96\x01\x97\x01\x01\x00\x8c\x0c\x04\x00\x79\x00\xad\x03\x77\x01",
+ ._co_firsttraceable = 3,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+_collections_abc_toplevel_consts_52_consts_12_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ Py_None,
+ & _collections_abc_toplevel_consts_52_consts_12_consts_1.ob_base.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[5];
+ }_object;
+ }
+_collections_abc_toplevel_consts_52_consts_12_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 5,
+ },
+ .ob_item = {
+ &_Py_ID(isinstance),
+ & const_str_Set._ascii.ob_base,
+ & const_str_Iterable._ascii.ob_base,
+ & const_str_NotImplemented._ascii.ob_base,
+ & const_str__from_iterable._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[12];
+ }
+_collections_abc_toplevel_consts_52_consts_12_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 11,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Set.__sub__",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[77];
+ }
+_collections_abc_toplevel_consts_52_consts_12_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 76,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\xf8\x80\x00\xdc\x0f\x19\x98\x25\xa4\x13\xd4\x0f\x25\xdc\x13\x1d\x98\x65\xa4\x58\xd4\x13\x2e\xdc\x17\x25\xd0\x10\x25\xd8\x14\x18\xd7\x14\x27\xd1\x14\x27\xa8\x05\xd3\x14\x2e\x88\x45\xd8\x0f\x13\xd7\x0f\x22\xd1\x0f\x22\xf3\x00\x01\x23\x3a\xb0\x64\xf4\x00\x01\x23\x3a\xf3\x00\x01\x10\x3a\xf0\x00\x01\x09\x3a",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[3];
+ }
+_collections_abc_toplevel_consts_52_consts_12_localspluskinds = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_shash = -1,
+ .ob_sval = " `",
+};
+static
+ struct _PyCode_DEF(166)
+_collections_abc_toplevel_consts_52_consts_12 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 83,
+ },
+ .co_consts = & _collections_abc_toplevel_consts_52_consts_12_consts._object.ob_base.ob_base,
+ .co_names = & _collections_abc_toplevel_consts_52_consts_12_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 6 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 640,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 2,
+ .co_ncellvars = 1,
+ .co_nfreevars = 0,
+ .co_version = 449,
+ .co_localsplusnames = & importlib__bootstrap_external_toplevel_consts_58_consts_3_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & _collections_abc_toplevel_consts_52_consts_12_localspluskinds.ob_base.ob_base,
+ .co_filename = & _collections_abc_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__sub__),
+ .co_qualname = & _collections_abc_toplevel_consts_52_consts_12_qualname._ascii.ob_base,
+ .co_linetable = & _collections_abc_toplevel_consts_52_consts_12_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x87\x01\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x89\x01\x74\x02\x00\x00\x00\x00\x00\x00\x00\x00\xab\x02\x00\x00\x00\x00\x00\x00\x73\x27\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x89\x01\x74\x04\x00\x00\x00\x00\x00\x00\x00\x00\xab\x02\x00\x00\x00\x00\x00\x00\x73\x06\x74\x06\x00\x00\x00\x00\x00\x00\x00\x00\x53\x00\x7c\x00\x6a\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x89\x01\xab\x01\x00\x00\x00\x00\x00\x00\x8a\x01\x7c\x00\x6a\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x88\x01\x66\x01\x64\x01\x84\x08\x7c\x00\x44\x00\xab\x00\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x53\x00",
+ ._co_firsttraceable = 1,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[32];
+ }
+_collections_abc_toplevel_consts_52_consts_13_consts_1_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 31,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Set.__rsub__.<locals>.<genexpr>",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[33];
+ }
+_collections_abc_toplevel_consts_52_consts_13_consts_1_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 32,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\xf8\xe8\x00\xf8\x80\x00\xf2\x00\x01\x23\x39\xa8\x55\xd8\x26\x2b\xb0\x34\xd1\x26\x37\xf4\x03\x00\x24\x29\xf1\x00\x01\x23\x39\xf9",
+};
+static
+ struct _PyCode_DEF(42)
+_collections_abc_toplevel_consts_52_consts_13_consts_1 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 21,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_1_consts._object.ob_base.ob_base,
+ .co_names = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_exceptiontable = & _collections_abc_toplevel_consts_52_consts_12_consts_1_exceptiontable.ob_base.ob_base,
+ .co_flags = 51,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 6 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 3,
+ .co_firstlineno = 653,
+ .co_nlocalsplus = 3,
+ .co_nlocals = 2,
+ .co_ncellvars = 0,
+ .co_nfreevars = 1,
+ .co_version = 450,
+ .co_localsplusnames = & _collections_abc_toplevel_consts_52_consts_9_consts_1_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_7_consts_1_consts_1_consts_4_localspluskinds.ob_base.ob_base,
+ .co_filename = & _collections_abc_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_STR(anon_genexpr),
+ .co_qualname = & _collections_abc_toplevel_consts_52_consts_13_consts_1_qualname._ascii.ob_base,
+ .co_linetable = & _collections_abc_toplevel_consts_52_consts_13_consts_1_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x95\x01\x4b\x00\x01\x00\x97\x00\x7c\x00\x5d\x0a\x00\x00\x7d\x01\x7c\x01\x89\x02\x76\x01\x72\x04\x7c\x01\x96\x01\x97\x01\x01\x00\x8c\x0c\x04\x00\x79\x00\xad\x03\x77\x01",
+ ._co_firsttraceable = 3,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+_collections_abc_toplevel_consts_52_consts_13_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ Py_None,
+ & _collections_abc_toplevel_consts_52_consts_13_consts_1.ob_base.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[13];
+ }
+_collections_abc_toplevel_consts_52_consts_13_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 12,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Set.__rsub__",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[77];
+ }
+_collections_abc_toplevel_consts_52_consts_13_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 76,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\xf8\x80\x00\xdc\x0f\x19\x98\x25\xa4\x13\xd4\x0f\x25\xdc\x13\x1d\x98\x65\xa4\x58\xd4\x13\x2e\xdc\x17\x25\xd0\x10\x25\xd8\x14\x18\xd7\x14\x27\xd1\x14\x27\xa8\x05\xd3\x14\x2e\x88\x45\xd8\x0f\x13\xd7\x0f\x22\xd1\x0f\x22\xf3\x00\x01\x23\x39\xb0\x65\xf4\x00\x01\x23\x39\xf3\x00\x01\x10\x39\xf0\x00\x01\x09\x39",
+};
+static
+ struct _PyCode_DEF(166)
+_collections_abc_toplevel_consts_52_consts_13 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 83,
+ },
+ .co_consts = & _collections_abc_toplevel_consts_52_consts_13_consts._object.ob_base.ob_base,
+ .co_names = & _collections_abc_toplevel_consts_52_consts_12_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 6 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 648,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 2,
+ .co_ncellvars = 1,
+ .co_nfreevars = 0,
+ .co_version = 451,
+ .co_localsplusnames = & importlib__bootstrap_external_toplevel_consts_58_consts_3_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_26_localspluskinds.ob_base.ob_base,
+ .co_filename = & _collections_abc_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__rsub__),
+ .co_qualname = & _collections_abc_toplevel_consts_52_consts_13_qualname._ascii.ob_base,
+ .co_linetable = & _collections_abc_toplevel_consts_52_consts_13_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x87\x00\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x74\x02\x00\x00\x00\x00\x00\x00\x00\x00\xab\x02\x00\x00\x00\x00\x00\x00\x73\x27\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x74\x04\x00\x00\x00\x00\x00\x00\x00\x00\xab\x02\x00\x00\x00\x00\x00\x00\x73\x06\x74\x06\x00\x00\x00\x00\x00\x00\x00\x00\x53\x00\x89\x00\x6a\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x01\x89\x00\x6a\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x88\x00\x66\x01\x64\x01\x84\x08\x7c\x01\x44\x00\xab\x00\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x53\x00",
+ ._co_firsttraceable = 1,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[12];
+ }
+_collections_abc_toplevel_consts_52_consts_14_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 11,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Set.__xor__",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[64];
+ }
+_collections_abc_toplevel_consts_52_consts_14_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 63,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xdc\x0f\x19\x98\x25\xa4\x13\xd4\x0f\x25\xdc\x13\x1d\x98\x65\xa4\x58\xd4\x13\x2e\xdc\x17\x25\xd0\x10\x25\xd8\x14\x18\xd7\x14\x27\xd1\x14\x27\xa8\x05\xd3\x14\x2e\x88\x45\xd8\x10\x14\x90\x75\x91\x0c\xa0\x15\xa8\x14\xa1\x1c\xd1\x0f\x2e\xd0\x08\x2e",
+};
+static
+ struct _PyCode_DEF(134)
+_collections_abc_toplevel_consts_52_consts_14 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 67,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_1_consts._object.ob_base.ob_base,
+ .co_names = & _collections_abc_toplevel_consts_52_consts_12_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 6 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 656,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 2,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 452,
+ .co_localsplusnames = & importlib__bootstrap_external_toplevel_consts_58_consts_3_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_14_consts_2_localspluskinds.ob_base.ob_base,
+ .co_filename = & _collections_abc_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__xor__),
+ .co_qualname = & _collections_abc_toplevel_consts_52_consts_14_qualname._ascii.ob_base,
+ .co_linetable = & _collections_abc_toplevel_consts_52_consts_14_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x74\x02\x00\x00\x00\x00\x00\x00\x00\x00\xab\x02\x00\x00\x00\x00\x00\x00\x73\x27\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x74\x04\x00\x00\x00\x00\x00\x00\x00\x00\xab\x02\x00\x00\x00\x00\x00\x00\x73\x06\x74\x06\x00\x00\x00\x00\x00\x00\x00\x00\x53\x00\x7c\x00\x6a\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x01\x7c\x00\x7c\x01\x7a\x0a\x00\x00\x7c\x01\x7c\x00\x7a\x0a\x00\x00\x7a\x07\x00\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[556];
+ }
+_collections_abc_toplevel_consts_52_consts_15_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 555,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x43\x6f\x6d\x70\x75\x74\x65\x20\x74\x68\x65\x20\x68\x61\x73\x68\x20\x76\x61\x6c\x75\x65\x20\x6f\x66\x20\x61\x20\x73\x65\x74\x2e\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x4e\x6f\x74\x65\x20\x74\x68\x61\x74\x20\x77\x65\x20\x64\x6f\x6e\x27\x74\x20\x64\x65\x66\x69\x6e\x65\x20\x5f\x5f\x68\x61\x73\x68\x5f\x5f\x3a\x20\x6e\x6f\x74\x20\x61\x6c\x6c\x20\x73\x65\x74\x73\x20\x61\x72\x65\x20\x68\x61\x73\x68\x61\x62\x6c\x65\x2e\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x42\x75\x74\x20\x69\x66\x20\x79\x6f\x75\x20\x64\x65\x66\x69\x6e\x65\x20\x61\x20\x68\x61\x73\x68\x61\x62\x6c\x65\x20\x73\x65\x74\x20\x74\x79\x70\x65\x2c\x20\x69\x74\x73\x20\x5f\x5f\x68\x61\x73\x68\x5f\x5f\x20\x73\x68\x6f\x75\x6c\x64\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x63\x61\x6c\x6c\x20\x74\x68\x69\x73\x20\x66\x75\x6e\x63\x74\x69\x6f\x6e\x2e\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x54\x68\x69\x73\x20\x6d\x75\x73\x74\x20\x62\x65\x20\x63\x6f\x6d\x70\x61\x74\x69\x62\x6c\x65\x20\x5f\x5f\x65\x71\x5f\x5f\x2e\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x41\x6c\x6c\x20\x73\x65\x74\x73\x20\x6f\x75\x67\x68\x74\x20\x74\x6f\x20\x63\x6f\x6d\x70\x61\x72\x65\x20\x65\x71\x75\x61\x6c\x20\x69\x66\x20\x74\x68\x65\x79\x20\x63\x6f\x6e\x74\x61\x69\x6e\x20\x74\x68\x65\x20\x73\x61\x6d\x65\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x65\x6c\x65\x6d\x65\x6e\x74\x73\x2c\x20\x72\x65\x67\x61\x72\x64\x6c\x65\x73\x73\x20\x6f\x66\x20\x68\x6f\x77\x20\x74\x68\x65\x79\x20\x61\x72\x65\x20\x69\x6d\x70\x6c\x65\x6d\x65\x6e\x74\x65\x64\x2c\x20\x61\x6e\x64\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x67\x61\x72\x64\x6c\x65\x73\x73\x20\x6f\x66\x20\x74\x68\x65\x20\x6f\x72\x64\x65\x72\x20\x6f\x66\x20\x74\x68\x65\x20\x65\x6c\x65\x6d\x65\x6e\x74\x73\x3b\x20\x73\x6f\x20\x74\x68\x65\x72\x65\x27\x73\x20\x6e\x6f\x74\x20\x6d\x75\x63\x68\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x66\x72\x65\x65\x64\x6f\x6d\x20\x66\x6f\x72\x20\x5f\x5f\x65\x71\x5f\x5f\x20\x6f\x72\x20\x5f\x5f\x68\x61\x73\x68\x5f\x5f\x2e\x20\x20\x57\x65\x20\x6d\x61\x74\x63\x68\x20\x74\x68\x65\x20\x61\x6c\x67\x6f\x72\x69\x74\x68\x6d\x20\x75\x73\x65\x64\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x62\x79\x20\x74\x68\x65\x20\x62\x75\x69\x6c\x74\x2d\x69\x6e\x20\x66\x72\x6f\x7a\x65\x6e\x73\x65\x74\x20\x74\x79\x70\x65\x2e\x0a\x20\x20\x20\x20\x20\x20\x20\x20",
+};
+#if PYLONG_BITS_IN_DIGIT == 15
+static
+ struct {
+ PyObject ob_base;
+ uintptr_t lv_tag;
+ digit ob_digit[3];
+ }
+const_int_1927868237 = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyLong_Type,
+ },
+ .lv_tag = TAG_FROM_SIGN_AND_SIZE(1, 3),
+ .ob_digit = { 28493, 26065, 1 },
+};
+#elif PYLONG_BITS_IN_DIGIT == 30
+static
+ struct {
+ PyObject ob_base;
+ uintptr_t lv_tag;
+ digit ob_digit[2];
+ }
+const_int_1927868237 = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyLong_Type,
+ },
+ .lv_tag = TAG_FROM_SIGN_AND_SIZE(1, 2),
+ .ob_digit = { 854126413, 1 },
+};
+#else
+#error "PYLONG_BITS_IN_DIGIT should be 15 or 30"
+#endif
+#if PYLONG_BITS_IN_DIGIT == 15
+static
+ struct {
+ PyObject ob_base;
+ uintptr_t lv_tag;
+ digit ob_digit[2];
+ }
+const_int_89869747 = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyLong_Type,
+ },
+ .lv_tag = TAG_FROM_SIGN_AND_SIZE(1, 2),
+ .ob_digit = { 19891, 2742 },
+};
+#elif PYLONG_BITS_IN_DIGIT == 30
+static
+ struct {
+ PyObject ob_base;
+ uintptr_t lv_tag;
+ digit ob_digit[1];
+ }
+const_int_89869747 = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyLong_Type,
+ },
+ .lv_tag = TAG_FROM_SIGN_AND_SIZE(1, 1),
+ .ob_digit = { 89869747 },
+};
+#else
+#error "PYLONG_BITS_IN_DIGIT should be 15 or 30"
+#endif
+#if PYLONG_BITS_IN_DIGIT == 15
+static
+ struct {
+ PyObject ob_base;
+ uintptr_t lv_tag;
+ digit ob_digit[3];
+ }
+const_int_3644798167 = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyLong_Type,
+ },
+ .lv_tag = TAG_FROM_SIGN_AND_SIZE(1, 3),
+ .ob_digit = { 13527, 12926, 3 },
+};
+#elif PYLONG_BITS_IN_DIGIT == 30
+static
+ struct {
+ PyObject ob_base;
+ uintptr_t lv_tag;
+ digit ob_digit[2];
+ }
+const_int_3644798167 = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyLong_Type,
+ },
+ .lv_tag = TAG_FROM_SIGN_AND_SIZE(1, 2),
+ .ob_digit = { 423572695, 3 },
+};
+#else
+#error "PYLONG_BITS_IN_DIGIT should be 15 or 30"
+#endif
+#if PYLONG_BITS_IN_DIGIT == 15
+static
+ struct {
+ PyObject ob_base;
+ uintptr_t lv_tag;
+ digit ob_digit[2];
+ }
+const_int_69069 = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyLong_Type,
+ },
+ .lv_tag = TAG_FROM_SIGN_AND_SIZE(1, 2),
+ .ob_digit = { 3533, 2 },
+};
+#elif PYLONG_BITS_IN_DIGIT == 30
+static
+ struct {
+ PyObject ob_base;
+ uintptr_t lv_tag;
+ digit ob_digit[1];
+ }
+const_int_69069 = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyLong_Type,
+ },
+ .lv_tag = TAG_FROM_SIGN_AND_SIZE(1, 1),
+ .ob_digit = { 69069 },
+};
+#else
+#error "PYLONG_BITS_IN_DIGIT should be 15 or 30"
+#endif
+#if PYLONG_BITS_IN_DIGIT == 15
+static
+ struct {
+ PyObject ob_base;
+ uintptr_t lv_tag;
+ digit ob_digit[2];
+ }
+const_int_907133923 = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyLong_Type,
+ },
+ .lv_tag = TAG_FROM_SIGN_AND_SIZE(1, 2),
+ .ob_digit = { 17379, 27683 },
+};
+#elif PYLONG_BITS_IN_DIGIT == 30
+static
+ struct {
+ PyObject ob_base;
+ uintptr_t lv_tag;
+ digit ob_digit[1];
+ }
+const_int_907133923 = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyLong_Type,
+ },
+ .lv_tag = TAG_FROM_SIGN_AND_SIZE(1, 1),
+ .ob_digit = { 907133923 },
+};
+#else
+#error "PYLONG_BITS_IN_DIGIT should be 15 or 30"
+#endif
+#if PYLONG_BITS_IN_DIGIT == 15
+static
+ struct {
+ PyObject ob_base;
+ uintptr_t lv_tag;
+ digit ob_digit[2];
+ }
+const_int_590923713 = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyLong_Type,
+ },
+ .lv_tag = TAG_FROM_SIGN_AND_SIZE(1, 2),
+ .ob_digit = { 18369, 18033 },
+};
+#elif PYLONG_BITS_IN_DIGIT == 30
+static
+ struct {
+ PyObject ob_base;
+ uintptr_t lv_tag;
+ digit ob_digit[1];
+ }
+const_int_590923713 = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyLong_Type,
+ },
+ .lv_tag = TAG_FROM_SIGN_AND_SIZE(1, 1),
+ .ob_digit = { 590923713 },
+};
+#else
+#error "PYLONG_BITS_IN_DIGIT should be 15 or 30"
+#endif
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[13];
+ }_object;
+ }
+_collections_abc_toplevel_consts_52_consts_15_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 13,
+ },
+ .ob_item = {
+ & _collections_abc_toplevel_consts_52_consts_15_consts_0._ascii.ob_base,
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 2],
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 1],
+ & const_int_1927868237.ob_base,
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 16],
+ & const_int_89869747.ob_base,
+ & const_int_3644798167.ob_base,
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 11],
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 25],
+ & const_int_69069.ob_base,
+ & const_int_907133923.ob_base,
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + -1],
+ & const_int_590923713.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[8];
+ }
+const_str_maxsize = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 7,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "maxsize",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[4];
+ }_object;
+ }
+_collections_abc_toplevel_consts_52_consts_15_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_item = {
+ & const_str_sys._ascii.ob_base,
+ & const_str_maxsize._ascii.ob_base,
+ &_Py_ID(len),
+ & const_str_hash._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[6];
+ }
+const_str__hash = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 5,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_hash",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[10];
+ }
+_collections_abc_toplevel_consts_52_consts_15_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 9,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Set._hash",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[205];
+ }
+_collections_abc_toplevel_consts_52_consts_15_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 204,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf4\x1e\x00\x0f\x12\x8f\x6b\x89\x6b\x88\x03\xd8\x0f\x10\x90\x33\x89\x77\x98\x11\x89\x7b\x88\x04\xdc\x0c\x0f\x90\x04\x8b\x49\x88\x01\xd8\x0c\x16\x98\x21\x98\x61\x99\x25\xd1\x0c\x20\x88\x01\xd8\x08\x09\x88\x54\x89\x09\x88\x01\xd8\x11\x15\xf2\x00\x03\x09\x16\x88\x41\xdc\x11\x15\x90\x61\x93\x17\x88\x42\xd8\x0c\x0d\x90\x22\x98\x02\x98\x62\x99\x08\x91\x2f\xa0\x48\xd1\x12\x2c\xb0\x1a\xd1\x11\x3b\xd1\x0c\x3b\x88\x41\xd8\x0c\x0d\x90\x14\x89\x49\x89\x41\xf0\x07\x03\x09\x16\xf0\x08\x00\x09\x0a\x88\x61\x90\x32\x89\x67\x98\x21\x98\x72\x99\x27\xd1\x0d\x22\xd1\x08\x22\x88\x01\xd8\x0c\x0d\x90\x05\x89\x49\x98\x09\xd1\x0c\x21\x88\x01\xd8\x08\x09\x88\x54\x89\x09\x88\x01\xd8\x0b\x0c\x88\x73\x8a\x37\xd8\x0c\x0d\x90\x14\x98\x01\x91\x18\x89\x4d\x88\x41\xd8\x0b\x0c\x90\x02\x8a\x37\xd8\x10\x19\x88\x41\xd8\x0f\x10\x88\x08",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[4];
+ }
+const_str_MAX = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 3,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "MAX",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[5];
+ }
+const_str_MASK = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 4,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "MASK",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[3];
+ }
+const_str_hx = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 2,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "hx",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[7];
+ }_object;
+ }
+_collections_abc_toplevel_consts_52_consts_15_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 7,
+ },
+ .ob_item = {
+ &_Py_ID(self),
+ & const_str_MAX._ascii.ob_base,
+ & const_str_MASK._ascii.ob_base,
+ &_Py_ID(n),
+ (PyObject *)&_Py_SINGLETON(strings).ascii[104],
+ &_Py_ID(x),
+ & const_str_hx._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(276)
+_collections_abc_toplevel_consts_52_consts_15 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 138,
+ },
+ .co_consts = & _collections_abc_toplevel_consts_52_consts_15_consts._object.ob_base.ob_base,
+ .co_names = & _collections_abc_toplevel_consts_52_consts_15_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 12 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 5,
+ .co_firstlineno = 665,
+ .co_nlocalsplus = 7,
+ .co_nlocals = 7,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 453,
+ .co_localsplusnames = & _collections_abc_toplevel_consts_52_consts_15_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_46_consts_9_localspluskinds.ob_base.ob_base,
+ .co_filename = & _collections_abc_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = & const_str__hash._ascii.ob_base,
+ .co_qualname = & _collections_abc_toplevel_consts_52_consts_15_qualname._ascii.ob_base,
+ .co_linetable = & _collections_abc_toplevel_consts_52_consts_15_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7d\x01\x64\x01\x7c\x01\x7a\x05\x00\x00\x64\x02\x7a\x00\x00\x00\x7d\x02\x74\x05\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x03\x64\x03\x7c\x03\x64\x02\x7a\x00\x00\x00\x7a\x05\x00\x00\x7d\x04\x7c\x04\x7c\x02\x7a\x0e\x00\x00\x7d\x04\x7c\x00\x44\x00\x5d\x23\x00\x00\x7d\x05\x74\x07\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x05\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x06\x7c\x04\x7c\x06\x7c\x06\x64\x04\x7a\x03\x00\x00\x7a\x0c\x00\x00\x64\x05\x7a\x0c\x00\x00\x64\x06\x7a\x05\x00\x00\x7a\x19\x00\x00\x7d\x04\x7c\x04\x7c\x02\x7a\x0e\x00\x00\x7d\x04\x8c\x25\x04\x00\x7c\x04\x7c\x04\x64\x07\x7a\x09\x00\x00\x7c\x04\x64\x08\x7a\x09\x00\x00\x7a\x0c\x00\x00\x7a\x19\x00\x00\x7d\x04\x7c\x04\x64\x09\x7a\x05\x00\x00\x64\x0a\x7a\x00\x00\x00\x7d\x04\x7c\x04\x7c\x02\x7a\x0e\x00\x00\x7d\x04\x7c\x04\x7c\x01\x6b\x44\x00\x00\x72\x08\x7c\x04\x7c\x02\x64\x02\x7a\x00\x00\x00\x7a\x17\x00\x00\x7d\x04\x7c\x04\x64\x0b\x6b\x28\x00\x00\x72\x02\x64\x0c\x7d\x04\x7c\x04\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[17];
+ }_object;
+ }
+_collections_abc_toplevel_consts_52_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 17,
+ },
+ .ob_item = {
+ & const_str_Set._ascii.ob_base,
+ & _collections_abc_toplevel_consts_52_consts_1._ascii.ob_base,
+ (PyObject *)& _Py_SINGLETON(tuple_empty),
+ & _collections_abc_toplevel_consts_52_consts_3.ob_base.ob_base,
+ & _collections_abc_toplevel_consts_52_consts_4.ob_base.ob_base,
+ & _collections_abc_toplevel_consts_52_consts_5.ob_base.ob_base,
+ & _collections_abc_toplevel_consts_52_consts_6.ob_base.ob_base,
+ & _collections_abc_toplevel_consts_52_consts_7.ob_base.ob_base,
+ & _collections_abc_toplevel_consts_52_consts_8.ob_base.ob_base,
+ & _collections_abc_toplevel_consts_52_consts_9.ob_base.ob_base,
+ & _collections_abc_toplevel_consts_52_consts_10.ob_base.ob_base,
+ & _collections_abc_toplevel_consts_52_consts_11.ob_base.ob_base,
+ & _collections_abc_toplevel_consts_52_consts_12.ob_base.ob_base,
+ & _collections_abc_toplevel_consts_52_consts_13.ob_base.ob_base,
+ & _collections_abc_toplevel_consts_52_consts_14.ob_base.ob_base,
+ & _collections_abc_toplevel_consts_52_consts_15.ob_base.ob_base,
+ Py_None,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[22];
+ }_object;
+ }
+_collections_abc_toplevel_consts_52_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 22,
+ },
+ .ob_item = {
+ &_Py_ID(__name__),
+ &_Py_ID(__module__),
+ &_Py_ID(__qualname__),
+ &_Py_ID(__doc__),
+ &_Py_ID(__slots__),
+ &_Py_ID(__le__),
+ &_Py_ID(__lt__),
+ &_Py_ID(__gt__),
+ &_Py_ID(__ge__),
+ &_Py_ID(__eq__),
+ & const_str_classmethod._ascii.ob_base,
+ & const_str__from_iterable._ascii.ob_base,
+ &_Py_ID(__and__),
+ &_Py_ID(__rand__),
+ & const_str_isdisjoint._ascii.ob_base,
+ &_Py_ID(__or__),
+ &_Py_ID(__ror__),
+ &_Py_ID(__sub__),
+ &_Py_ID(__rsub__),
+ &_Py_ID(__xor__),
+ &_Py_ID(__rxor__),
+ & const_str__hash._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[117];
+ }
+_collections_abc_toplevel_consts_52_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 116,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x84\x00\xf1\x02\x08\x05\x08\xf0\x14\x00\x11\x13\x80\x49\xf2\x04\x08\x05\x14\xf2\x14\x03\x05\x3d\xf2\x0a\x03\x05\x3d\xf2\x0a\x08\x05\x14\xf2\x14\x03\x05\x3e\xf0\x0a\x00\x06\x11\xf1\x02\x06\x05\x17\xf3\x03\x00\x06\x11\xf0\x02\x06\x05\x17\xf2\x10\x03\x05\x4e\x01\xf0\x0a\x00\x10\x17\x80\x48\xf2\x04\x05\x05\x14\xf2\x0e\x04\x05\x2a\xf0\x0c\x00\x0f\x15\x80\x47\xf2\x04\x06\x05\x3a\xf2\x10\x06\x05\x39\xf2\x10\x05\x05\x2f\xf0\x0e\x00\x10\x17\x80\x48\xf3\x04\x1f\x05\x11",
+};
+static
+ struct _PyCode_DEF(120)
+_collections_abc_toplevel_consts_52 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 60,
+ },
+ .co_consts = & _collections_abc_toplevel_consts_52_consts._object.ob_base.ob_base,
+ .co_names = & _collections_abc_toplevel_consts_52_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 0,
+ .co_argcount = 0,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 2 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 2,
+ .co_firstlineno = 561,
+ .co_nlocalsplus = 0,
+ .co_nlocals = 0,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 454,
+ .co_localsplusnames = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_filename = & _collections_abc_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = & const_str_Set._ascii.ob_base,
+ .co_qualname = & const_str_Set._ascii.ob_base,
+ .co_linetable = & _collections_abc_toplevel_consts_52_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x65\x00\x5a\x01\x64\x00\x5a\x02\x64\x01\x5a\x03\x64\x02\x5a\x04\x64\x03\x84\x00\x5a\x05\x64\x04\x84\x00\x5a\x06\x64\x05\x84\x00\x5a\x07\x64\x06\x84\x00\x5a\x08\x64\x07\x84\x00\x5a\x09\x65\x0a\x64\x08\x84\x00\xab\x00\x00\x00\x00\x00\x00\x00\x5a\x0b\x64\x09\x84\x00\x5a\x0c\x65\x0c\x5a\x0d\x64\x0a\x84\x00\x5a\x0e\x64\x0b\x84\x00\x5a\x0f\x65\x0f\x5a\x10\x64\x0c\x84\x00\x5a\x11\x64\x0d\x84\x00\x5a\x12\x64\x0e\x84\x00\x5a\x13\x65\x13\x5a\x14\x64\x0f\x84\x00\x5a\x15\x79\x10",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[392];
+ }
+_collections_abc_toplevel_consts_54_consts_1 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 391,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x41\x20\x6d\x75\x74\x61\x62\x6c\x65\x20\x73\x65\x74\x20\x69\x73\x20\x61\x20\x66\x69\x6e\x69\x74\x65\x2c\x20\x69\x74\x65\x72\x61\x62\x6c\x65\x20\x63\x6f\x6e\x74\x61\x69\x6e\x65\x72\x2e\x0a\x0a\x20\x20\x20\x20\x54\x68\x69\x73\x20\x63\x6c\x61\x73\x73\x20\x70\x72\x6f\x76\x69\x64\x65\x73\x20\x63\x6f\x6e\x63\x72\x65\x74\x65\x20\x67\x65\x6e\x65\x72\x69\x63\x20\x69\x6d\x70\x6c\x65\x6d\x65\x6e\x74\x61\x74\x69\x6f\x6e\x73\x20\x6f\x66\x20\x61\x6c\x6c\x0a\x20\x20\x20\x20\x6d\x65\x74\x68\x6f\x64\x73\x20\x65\x78\x63\x65\x70\x74\x20\x66\x6f\x72\x20\x5f\x5f\x63\x6f\x6e\x74\x61\x69\x6e\x73\x5f\x5f\x2c\x20\x5f\x5f\x69\x74\x65\x72\x5f\x5f\x2c\x20\x5f\x5f\x6c\x65\x6e\x5f\x5f\x2c\x0a\x20\x20\x20\x20\x61\x64\x64\x28\x29\x2c\x20\x61\x6e\x64\x20\x64\x69\x73\x63\x61\x72\x64\x28\x29\x2e\x0a\x0a\x20\x20\x20\x20\x54\x6f\x20\x6f\x76\x65\x72\x72\x69\x64\x65\x20\x74\x68\x65\x20\x63\x6f\x6d\x70\x61\x72\x69\x73\x6f\x6e\x73\x20\x28\x70\x72\x65\x73\x75\x6d\x61\x62\x6c\x79\x20\x66\x6f\x72\x20\x73\x70\x65\x65\x64\x2c\x20\x61\x73\x20\x74\x68\x65\x0a\x20\x20\x20\x20\x73\x65\x6d\x61\x6e\x74\x69\x63\x73\x20\x61\x72\x65\x20\x66\x69\x78\x65\x64\x29\x2c\x20\x61\x6c\x6c\x20\x79\x6f\x75\x20\x68\x61\x76\x65\x20\x74\x6f\x20\x64\x6f\x20\x69\x73\x20\x72\x65\x64\x65\x66\x69\x6e\x65\x20\x5f\x5f\x6c\x65\x5f\x5f\x20\x61\x6e\x64\x0a\x20\x20\x20\x20\x74\x68\x65\x6e\x20\x74\x68\x65\x20\x6f\x74\x68\x65\x72\x20\x6f\x70\x65\x72\x61\x74\x69\x6f\x6e\x73\x20\x77\x69\x6c\x6c\x20\x61\x75\x74\x6f\x6d\x61\x74\x69\x63\x61\x6c\x6c\x79\x20\x66\x6f\x6c\x6c\x6f\x77\x20\x73\x75\x69\x74\x2e\x0a\x20\x20\x20\x20",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[16];
+ }
+_collections_abc_toplevel_consts_54_consts_3_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 15,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Add an element.",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+_collections_abc_toplevel_consts_54_consts_3_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & _collections_abc_toplevel_consts_54_consts_3_consts_0._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[15];
+ }
+_collections_abc_toplevel_consts_54_consts_3_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 14,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "MutableSet.add",
+};
+static
+ struct _PyCode_DEF(14)
+_collections_abc_toplevel_consts_54_consts_3 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 7,
+ },
+ .co_consts = & _collections_abc_toplevel_consts_54_consts_3_consts._object.ob_base.ob_base,
+ .co_names = & codecs_toplevel_consts_14_consts_2_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 3 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 1,
+ .co_firstlineno = 716,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 2,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 455,
+ .co_localsplusnames = & importlib__bootstrap_toplevel_consts_30_consts_11_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_14_consts_2_localspluskinds.ob_base.ob_base,
+ .co_filename = & _collections_abc_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(add),
+ .co_qualname = & _collections_abc_toplevel_consts_54_consts_3_qualname._ascii.ob_base,
+ .co_linetable = & codecs_toplevel_consts_18_consts_3_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x82\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[57];
+ }
+_collections_abc_toplevel_consts_54_consts_4_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 56,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Remove an element. Do not raise an exception if absent.",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+_collections_abc_toplevel_consts_54_consts_4_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & _collections_abc_toplevel_consts_54_consts_4_consts_0._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[19];
+ }
+_collections_abc_toplevel_consts_54_consts_4_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 18,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "MutableSet.discard",
+};
+static
+ struct _PyCode_DEF(14)
+_collections_abc_toplevel_consts_54_consts_4 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 7,
+ },
+ .co_consts = & _collections_abc_toplevel_consts_54_consts_4_consts._object.ob_base.ob_base,
+ .co_names = & codecs_toplevel_consts_14_consts_2_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 3 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 1,
+ .co_firstlineno = 721,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 2,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 456,
+ .co_localsplusnames = & importlib__bootstrap_toplevel_consts_30_consts_11_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_14_consts_2_localspluskinds.ob_base.ob_base,
+ .co_filename = & _collections_abc_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(discard),
+ .co_qualname = & _collections_abc_toplevel_consts_54_consts_4_qualname._ascii.ob_base,
+ .co_linetable = & codecs_toplevel_consts_18_consts_3_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x82\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[54];
+ }
+_collections_abc_toplevel_consts_54_consts_5_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 53,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Remove an element. If not a member, raise a KeyError.",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+_collections_abc_toplevel_consts_54_consts_5_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & _collections_abc_toplevel_consts_54_consts_5_consts_0._ascii.ob_base,
+ Py_None,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+_collections_abc_toplevel_consts_54_consts_5_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & const_str_KeyError._ascii.ob_base,
+ &_Py_ID(discard),
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[18];
+ }
+_collections_abc_toplevel_consts_54_consts_5_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 17,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "MutableSet.remove",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[33];
+ }
+_collections_abc_toplevel_consts_54_consts_5_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 32,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xe0\x0b\x10\x98\x04\xd1\x0b\x1c\xdc\x12\x1a\x98\x35\x93\x2f\xd0\x0c\x21\xd8\x08\x0c\x8f\x0c\x89\x0c\x90\x55\xd5\x08\x1b",
+};
+static
+ struct _PyCode_DEF(68)
+_collections_abc_toplevel_consts_54_consts_5 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 34,
+ },
+ .co_consts = & _collections_abc_toplevel_consts_54_consts_5_consts._object.ob_base.ob_base,
+ .co_names = & _collections_abc_toplevel_consts_54_consts_5_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 5 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 3,
+ .co_firstlineno = 726,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 2,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 457,
+ .co_localsplusnames = & importlib__bootstrap_toplevel_consts_30_consts_11_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_14_consts_2_localspluskinds.ob_base.ob_base,
+ .co_filename = & _collections_abc_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = & const_str_remove._ascii.ob_base,
+ .co_qualname = & _collections_abc_toplevel_consts_54_consts_5_qualname._ascii.ob_base,
+ .co_linetable = & _collections_abc_toplevel_consts_54_consts_5_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x01\x7c\x00\x76\x01\x72\x0b\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\xab\x01\x00\x00\x00\x00\x00\x00\x82\x01\x7c\x00\x6a\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x79\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[51];
+ }
+_collections_abc_toplevel_consts_54_consts_6_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 50,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Return the popped value. Raise KeyError if empty.",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+_collections_abc_toplevel_consts_54_consts_6_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & _collections_abc_toplevel_consts_54_consts_6_consts_0._ascii.ob_base,
+ Py_None,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[5];
+ }_object;
+ }
+_collections_abc_toplevel_consts_54_consts_6_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 5,
+ },
+ .ob_item = {
+ &_Py_ID(iter),
+ &_Py_ID(next),
+ & const_str_StopIteration._ascii.ob_base,
+ & const_str_KeyError._ascii.ob_base,
+ &_Py_ID(discard),
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[15];
+ }
+_collections_abc_toplevel_consts_54_consts_6_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 14,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "MutableSet.pop",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[70];
+ }
+_collections_abc_toplevel_consts_54_consts_6_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 69,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xe4\x0d\x11\x90\x24\x8b\x5a\x88\x02\xf0\x02\x03\x09\x25\xdc\x14\x18\x98\x12\x93\x48\x88\x45\xf0\x06\x00\x09\x0d\x8f\x0c\x89\x0c\x90\x55\xd4\x08\x1b\xd8\x0f\x14\x88\x0c\xf8\xf4\x07\x00\x10\x1d\xf2\x00\x01\x09\x25\xdc\x12\x1a\xa0\x04\xd0\x0c\x24\xf0\x03\x01\x09\x25\xfa",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[9];
+ }
+_collections_abc_toplevel_consts_54_consts_6_exceptiontable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 8,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x8d\x0b\x2b\x00\xab\x11\x3c\x03",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+_collections_abc_toplevel_consts_54_consts_6_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ &_Py_ID(self),
+ & const_str_it._ascii.ob_base,
+ &_Py_ID(value),
+ },
+ },
+};
+static
+ struct _PyCode_DEF(126)
+_collections_abc_toplevel_consts_54_consts_6 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 63,
+ },
+ .co_consts = & _collections_abc_toplevel_consts_54_consts_6_consts._object.ob_base.ob_base,
+ .co_names = & _collections_abc_toplevel_consts_54_consts_6_names._object.ob_base.ob_base,
+ .co_exceptiontable = & _collections_abc_toplevel_consts_54_consts_6_exceptiontable.ob_base.ob_base,
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 7 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 732,
+ .co_nlocalsplus = 3,
+ .co_nlocals = 3,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 458,
+ .co_localsplusnames = & _collections_abc_toplevel_consts_54_consts_6_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_3_localspluskinds.ob_base.ob_base,
+ .co_filename = & _collections_abc_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = & const_str_pop._ascii.ob_base,
+ .co_qualname = & _collections_abc_toplevel_consts_54_consts_6_qualname._ascii.ob_base,
+ .co_linetable = & _collections_abc_toplevel_consts_54_consts_6_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x01\x09\x00\x74\x03\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x02\x7c\x00\x6a\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x02\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x7c\x02\x53\x00\x23\x00\x74\x04\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x72\x08\x01\x00\x74\x06\x00\x00\x00\x00\x00\x00\x00\x00\x64\x01\x82\x02\x77\x00\x78\x03\x59\x00\x77\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[55];
+ }
+_collections_abc_toplevel_consts_54_consts_7_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 54,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "This is slow (creates N new iterators!) but effective.",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+_collections_abc_toplevel_consts_54_consts_7_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & _collections_abc_toplevel_consts_54_consts_7_consts_0._ascii.ob_base,
+ Py_None,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+_collections_abc_toplevel_consts_54_consts_7_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & const_str_pop._ascii.ob_base,
+ & const_str_KeyError._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[17];
+ }
+_collections_abc_toplevel_consts_54_consts_7_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 16,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "MutableSet.clear",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[43];
+ }
+_collections_abc_toplevel_consts_54_consts_7_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 42,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf0\x04\x04\x09\x11\xd8\x12\x16\xd8\x10\x14\x97\x08\x91\x08\x94\x0a\xf0\x03\x00\x13\x17\xf8\xe4\x0f\x17\xf2\x00\x01\x09\x11\xd9\x0c\x10\xf0\x03\x01\x09\x11\xfa",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[13];
+ }
+_collections_abc_toplevel_consts_54_consts_7_exceptiontable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 12,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x82\x12\x14\x00\x94\x09\x20\x03\x9f\x01\x20\x03",
+};
+static
+ struct _PyCode_DEF(70)
+_collections_abc_toplevel_consts_54_consts_7 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 35,
+ },
+ .co_consts = & _collections_abc_toplevel_consts_54_consts_7_consts._object.ob_base.ob_base,
+ .co_names = & _collections_abc_toplevel_consts_54_consts_7_names._object.ob_base.ob_base,
+ .co_exceptiontable = & _collections_abc_toplevel_consts_54_consts_7_exceptiontable.ob_base.ob_base,
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 5 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 742,
+ .co_nlocalsplus = 1,
+ .co_nlocals = 1,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 459,
+ .co_localsplusnames = & importlib__bootstrap_toplevel_consts_7_consts_2_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_characters[32]),
+ .co_filename = & _collections_abc_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(clear),
+ .co_qualname = & _collections_abc_toplevel_consts_54_consts_7_qualname._ascii.ob_base,
+ .co_linetable = & _collections_abc_toplevel_consts_54_consts_7_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x09\x00\x09\x00\x7c\x00\x6a\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x01\x00\x8c\x11\x23\x00\x74\x02\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x72\x03\x01\x00\x59\x00\x79\x01\x77\x00\x78\x03\x59\x00\x77\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+_collections_abc_toplevel_consts_54_consts_8_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ &_Py_ID(add),
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[19];
+ }
+_collections_abc_toplevel_consts_54_consts_8_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 18,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "MutableSet.__ior__",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[34];
+ }
+_collections_abc_toplevel_consts_54_consts_8_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 33,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xd8\x15\x17\xf2\x00\x01\x09\x1c\x88\x45\xd8\x0c\x10\x8f\x48\x89\x48\x90\x55\x8d\x4f\xf0\x03\x01\x09\x1c\xe0\x0f\x13\x88\x0b",
+};
+static
+ struct _PyCode_DEF(54)
+_collections_abc_toplevel_consts_54_consts_8 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 27,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_1_consts._object.ob_base.ob_base,
+ .co_names = & _collections_abc_toplevel_consts_54_consts_8_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 7 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 750,
+ .co_nlocalsplus = 3,
+ .co_nlocals = 3,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 460,
+ .co_localsplusnames = & _collections_abc_toplevel_consts_54_consts_6_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_3_localspluskinds.ob_base.ob_base,
+ .co_filename = & _collections_abc_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__ior__),
+ .co_qualname = & _collections_abc_toplevel_consts_54_consts_8_qualname._ascii.ob_base,
+ .co_linetable = & _collections_abc_toplevel_consts_54_consts_8_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x01\x44\x00\x5d\x13\x00\x00\x7d\x02\x7c\x00\x6a\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x02\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x8c\x15\x04\x00\x7c\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+_collections_abc_toplevel_consts_54_consts_9_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ &_Py_ID(discard),
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[20];
+ }
+_collections_abc_toplevel_consts_54_consts_9_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 19,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "MutableSet.__iand__",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[39];
+ }
+_collections_abc_toplevel_consts_54_consts_9_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 38,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xd8\x16\x1a\x98\x52\x91\x69\xf2\x00\x01\x09\x20\x88\x45\xd8\x0c\x10\x8f\x4c\x89\x4c\x98\x15\xd5\x0c\x1f\xf0\x03\x01\x09\x20\xe0\x0f\x13\x88\x0b",
+};
+static
+ struct _PyCode_DEF(60)
+_collections_abc_toplevel_consts_54_consts_9 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 30,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_1_consts._object.ob_base.ob_base,
+ .co_names = & _collections_abc_toplevel_consts_54_consts_9_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 7 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 755,
+ .co_nlocalsplus = 3,
+ .co_nlocals = 3,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 461,
+ .co_localsplusnames = & _collections_abc_toplevel_consts_54_consts_6_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_3_localspluskinds.ob_base.ob_base,
+ .co_filename = & _collections_abc_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__iand__),
+ .co_qualname = & _collections_abc_toplevel_consts_54_consts_9_qualname._ascii.ob_base,
+ .co_linetable = & _collections_abc_toplevel_consts_54_consts_9_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x00\x7c\x01\x7a\x0a\x00\x00\x44\x00\x5d\x13\x00\x00\x7d\x02\x7c\x00\x6a\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x02\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x8c\x15\x04\x00\x7c\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[6];
+ }_object;
+ }
+_collections_abc_toplevel_consts_54_consts_10_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 6,
+ },
+ .ob_item = {
+ &_Py_ID(clear),
+ &_Py_ID(isinstance),
+ & const_str_Set._ascii.ob_base,
+ & const_str__from_iterable._ascii.ob_base,
+ &_Py_ID(discard),
+ &_Py_ID(add),
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[20];
+ }
+_collections_abc_toplevel_consts_54_consts_10_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 19,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "MutableSet.__ixor__",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[106];
+ }
+_collections_abc_toplevel_consts_54_consts_10_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 105,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xd8\x0b\x0d\x90\x14\x89\x3a\xd8\x0c\x10\x8f\x4a\x89\x4a\x8c\x4c\xf0\x12\x00\x10\x14\x88\x0b\xf4\x0f\x00\x14\x1e\x98\x62\xa4\x23\xd4\x13\x26\xd8\x15\x19\xd7\x15\x28\xd1\x15\x28\xa8\x12\xd3\x15\x2c\x90\x02\xd8\x19\x1b\xf2\x00\x04\x0d\x24\x90\x05\xd8\x13\x18\x98\x44\x91\x3d\xd8\x14\x18\x97\x4c\x91\x4c\xa0\x15\xd5\x14\x27\xe0\x14\x18\x97\x48\x91\x48\x98\x55\x95\x4f\xf0\x09\x04\x0d\x24\xf0\x0a\x00\x10\x14\x88\x0b",
+};
+static
+ struct _PyCode_DEF(208)
+_collections_abc_toplevel_consts_54_consts_10 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 104,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_1_consts._object.ob_base.ob_base,
+ .co_names = & _collections_abc_toplevel_consts_54_consts_10_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 7 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 760,
+ .co_nlocalsplus = 3,
+ .co_nlocals = 3,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 462,
+ .co_localsplusnames = & _collections_abc_toplevel_consts_54_consts_6_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_3_localspluskinds.ob_base.ob_base,
+ .co_filename = & _collections_abc_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__ixor__),
+ .co_qualname = & _collections_abc_toplevel_consts_54_consts_10_qualname._ascii.ob_base,
+ .co_linetable = & _collections_abc_toplevel_consts_54_consts_10_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x01\x7c\x00\x75\x00\x72\x12\x7c\x00\x6a\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x01\x00\x7c\x00\x53\x00\x74\x03\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x74\x04\x00\x00\x00\x00\x00\x00\x00\x00\xab\x02\x00\x00\x00\x00\x00\x00\x73\x11\x7c\x00\x6a\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x01\x7c\x01\x44\x00\x5d\x29\x00\x00\x7d\x02\x7c\x02\x7c\x00\x76\x00\x72\x12\x7c\x00\x6a\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x02\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x8c\x19\x7c\x00\x6a\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x02\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x8c\x2b\x04\x00\x7c\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+_collections_abc_toplevel_consts_54_consts_11_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ &_Py_ID(clear),
+ &_Py_ID(discard),
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[20];
+ }
+_collections_abc_toplevel_consts_54_consts_11_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 19,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "MutableSet.__isub__",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[60];
+ }
+_collections_abc_toplevel_consts_54_consts_11_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 59,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xd8\x0b\x0d\x90\x14\x89\x3a\xd8\x0c\x10\x8f\x4a\x89\x4a\x8c\x4c\xf0\x08\x00\x10\x14\x88\x0b\xf0\x05\x00\x1a\x1c\xf2\x00\x01\x0d\x24\x90\x05\xd8\x10\x14\x97\x0c\x91\x0c\x98\x55\xd5\x10\x23\xf0\x03\x01\x0d\x24\xe0\x0f\x13\x88\x0b",
+};
+static
+ struct _PyCode_DEF(98)
+_collections_abc_toplevel_consts_54_consts_11 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 49,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_1_consts._object.ob_base.ob_base,
+ .co_names = & _collections_abc_toplevel_consts_54_consts_11_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 7 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 773,
+ .co_nlocalsplus = 3,
+ .co_nlocals = 3,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 463,
+ .co_localsplusnames = & _collections_abc_toplevel_consts_54_consts_6_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_3_localspluskinds.ob_base.ob_base,
+ .co_filename = & _collections_abc_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__isub__),
+ .co_qualname = & _collections_abc_toplevel_consts_54_consts_11_qualname._ascii.ob_base,
+ .co_linetable = & _collections_abc_toplevel_consts_54_consts_11_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x01\x7c\x00\x75\x00\x72\x12\x7c\x00\x6a\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x01\x00\x7c\x00\x53\x00\x7c\x01\x44\x00\x5d\x13\x00\x00\x7d\x02\x7c\x00\x6a\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x02\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x8c\x15\x04\x00\x7c\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[13];
+ }_object;
+ }
+_collections_abc_toplevel_consts_54_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 13,
+ },
+ .ob_item = {
+ & const_str_MutableSet._ascii.ob_base,
+ & _collections_abc_toplevel_consts_54_consts_1._ascii.ob_base,
+ (PyObject *)& _Py_SINGLETON(tuple_empty),
+ & _collections_abc_toplevel_consts_54_consts_3.ob_base.ob_base,
+ & _collections_abc_toplevel_consts_54_consts_4.ob_base.ob_base,
+ & _collections_abc_toplevel_consts_54_consts_5.ob_base.ob_base,
+ & _collections_abc_toplevel_consts_54_consts_6.ob_base.ob_base,
+ & _collections_abc_toplevel_consts_54_consts_7.ob_base.ob_base,
+ & _collections_abc_toplevel_consts_54_consts_8.ob_base.ob_base,
+ & _collections_abc_toplevel_consts_54_consts_9.ob_base.ob_base,
+ & _collections_abc_toplevel_consts_54_consts_10.ob_base.ob_base,
+ & _collections_abc_toplevel_consts_54_consts_11.ob_base.ob_base,
+ Py_None,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[15];
+ }_object;
+ }
+_collections_abc_toplevel_consts_54_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 15,
+ },
+ .ob_item = {
+ &_Py_ID(__name__),
+ &_Py_ID(__module__),
+ &_Py_ID(__qualname__),
+ &_Py_ID(__doc__),
+ &_Py_ID(__slots__),
+ & const_str_abstractmethod._ascii.ob_base,
+ &_Py_ID(add),
+ &_Py_ID(discard),
+ & const_str_remove._ascii.ob_base,
+ & const_str_pop._ascii.ob_base,
+ &_Py_ID(clear),
+ &_Py_ID(__ior__),
+ &_Py_ID(__iand__),
+ &_Py_ID(__ixor__),
+ &_Py_ID(__isub__),
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[88];
+ }
+_collections_abc_toplevel_consts_54_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 87,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x84\x00\xf1\x02\x09\x05\x08\xf0\x16\x00\x11\x13\x80\x49\xe0\x05\x13\xf1\x02\x02\x05\x22\xf3\x03\x00\x06\x14\xf0\x02\x02\x05\x22\xf0\x08\x00\x06\x14\xf1\x02\x02\x05\x22\xf3\x03\x00\x06\x14\xf0\x02\x02\x05\x22\xf2\x08\x04\x05\x1c\xf2\x0c\x08\x05\x15\xf2\x14\x06\x05\x11\xf2\x10\x03\x05\x14\xf2\x0a\x03\x05\x14\xf2\x0a\x0b\x05\x14\xf3\x1a\x06\x05\x14",
+};
+static
+ struct _PyCode_DEF(94)
+_collections_abc_toplevel_consts_54 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 47,
+ },
+ .co_consts = & _collections_abc_toplevel_consts_54_consts._object.ob_base.ob_base,
+ .co_names = & _collections_abc_toplevel_consts_54_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 0,
+ .co_argcount = 0,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 2 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 2,
+ .co_firstlineno = 702,
+ .co_nlocalsplus = 0,
+ .co_nlocals = 0,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 464,
+ .co_localsplusnames = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_filename = & _collections_abc_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = & const_str_MutableSet._ascii.ob_base,
+ .co_qualname = & const_str_MutableSet._ascii.ob_base,
+ .co_linetable = & _collections_abc_toplevel_consts_54_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x65\x00\x5a\x01\x64\x00\x5a\x02\x64\x01\x5a\x03\x64\x02\x5a\x04\x65\x05\x64\x03\x84\x00\xab\x00\x00\x00\x00\x00\x00\x00\x5a\x06\x65\x05\x64\x04\x84\x00\xab\x00\x00\x00\x00\x00\x00\x00\x5a\x07\x64\x05\x84\x00\x5a\x08\x64\x06\x84\x00\x5a\x09\x64\x07\x84\x00\x5a\x0a\x64\x08\x84\x00\x5a\x0b\x64\x09\x84\x00\x5a\x0c\x64\x0a\x84\x00\x5a\x0d\x64\x0b\x84\x00\x5a\x0e\x79\x0c",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[199];
+ }
+_collections_abc_toplevel_consts_56_consts_1 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 198,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x41\x20\x4d\x61\x70\x70\x69\x6e\x67\x20\x69\x73\x20\x61\x20\x67\x65\x6e\x65\x72\x69\x63\x20\x63\x6f\x6e\x74\x61\x69\x6e\x65\x72\x20\x66\x6f\x72\x20\x61\x73\x73\x6f\x63\x69\x61\x74\x69\x6e\x67\x20\x6b\x65\x79\x2f\x76\x61\x6c\x75\x65\x0a\x20\x20\x20\x20\x70\x61\x69\x72\x73\x2e\x0a\x0a\x20\x20\x20\x20\x54\x68\x69\x73\x20\x63\x6c\x61\x73\x73\x20\x70\x72\x6f\x76\x69\x64\x65\x73\x20\x63\x6f\x6e\x63\x72\x65\x74\x65\x20\x67\x65\x6e\x65\x72\x69\x63\x20\x69\x6d\x70\x6c\x65\x6d\x65\x6e\x74\x61\x74\x69\x6f\x6e\x73\x20\x6f\x66\x20\x61\x6c\x6c\x0a\x20\x20\x20\x20\x6d\x65\x74\x68\x6f\x64\x73\x20\x65\x78\x63\x65\x70\x74\x20\x66\x6f\x72\x20\x5f\x5f\x67\x65\x74\x69\x74\x65\x6d\x5f\x5f\x2c\x20\x5f\x5f\x69\x74\x65\x72\x5f\x5f\x2c\x20\x61\x6e\x64\x20\x5f\x5f\x6c\x65\x6e\x5f\x5f\x2e\x0a\x20\x20\x20\x20",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+_collections_abc_toplevel_consts_56_consts_4_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & const_str_KeyError._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[20];
+ }
+_collections_abc_toplevel_consts_56_consts_4_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 19,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Mapping.__getitem__",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[8];
+ }
+_collections_abc_toplevel_consts_56_consts_4_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 7,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xe4\x0e\x16\x88\x0e",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+_collections_abc_toplevel_consts_56_consts_4_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ &_Py_ID(self),
+ &_Py_ID(key),
+ },
+ },
+};
+static
+ struct _PyCode_DEF(14)
+_collections_abc_toplevel_consts_56_consts_4 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 7,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_1_consts._object.ob_base.ob_base,
+ .co_names = & _collections_abc_toplevel_consts_56_consts_4_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 3 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 1,
+ .co_firstlineno = 800,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 2,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 465,
+ .co_localsplusnames = & _collections_abc_toplevel_consts_56_consts_4_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_14_consts_2_localspluskinds.ob_base.ob_base,
+ .co_filename = & _collections_abc_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__getitem__),
+ .co_qualname = & _collections_abc_toplevel_consts_56_consts_4_qualname._ascii.ob_base,
+ .co_linetable = & _collections_abc_toplevel_consts_56_consts_4_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x82\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[61];
+ }
+_collections_abc_toplevel_consts_56_consts_6_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 60,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "D.get(k[,d]) -> D[k] if k in D, else d. d defaults to None.",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+_collections_abc_toplevel_consts_56_consts_6_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & _collections_abc_toplevel_consts_56_consts_6_consts_0._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[12];
+ }
+_collections_abc_toplevel_consts_56_consts_6_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 11,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Mapping.get",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[38];
+ }
+_collections_abc_toplevel_consts_56_consts_6_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 37,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf0\x04\x03\x09\x1b\xd8\x13\x17\x98\x03\x91\x39\xd0\x0c\x1c\xf8\xdc\x0f\x17\xf2\x00\x01\x09\x1b\xd8\x13\x1a\x8a\x4e\xf0\x03\x01\x09\x1b\xfa",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[13];
+ }
+_collections_abc_toplevel_consts_56_consts_6_exceptiontable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 12,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x82\x04\x07\x00\x87\x0b\x15\x03\x94\x01\x15\x03",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+_collections_abc_toplevel_consts_56_consts_6_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ &_Py_ID(self),
+ &_Py_ID(key),
+ &_Py_ID(default),
+ },
+ },
+};
+static
+ struct _PyCode_DEF(48)
+_collections_abc_toplevel_consts_56_consts_6 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 24,
+ },
+ .co_consts = & _collections_abc_toplevel_consts_56_consts_6_consts._object.ob_base.ob_base,
+ .co_names = & _collections_abc_toplevel_consts_56_consts_4_names._object.ob_base.ob_base,
+ .co_exceptiontable = & _collections_abc_toplevel_consts_56_consts_6_exceptiontable.ob_base.ob_base,
+ .co_flags = 3,
+ .co_argcount = 3,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 7 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 804,
+ .co_nlocalsplus = 3,
+ .co_nlocals = 3,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 466,
+ .co_localsplusnames = & _collections_abc_toplevel_consts_56_consts_6_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_3_localspluskinds.ob_base.ob_base,
+ .co_filename = & _collections_abc_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(get),
+ .co_qualname = & _collections_abc_toplevel_consts_56_consts_6_qualname._ascii.ob_base,
+ .co_linetable = & _collections_abc_toplevel_consts_56_consts_6_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x09\x00\x7c\x00\x7c\x01\x19\x00\x00\x00\x53\x00\x23\x00\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x72\x05\x01\x00\x7c\x02\x63\x02\x59\x00\x53\x00\x77\x00\x78\x03\x59\x00\x77\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+_collections_abc_toplevel_consts_56_consts_7_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ Py_None,
+ Py_True,
+ Py_False,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[21];
+ }
+_collections_abc_toplevel_consts_56_consts_7_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 20,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Mapping.__contains__",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[40];
+ }
+_collections_abc_toplevel_consts_56_consts_7_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 39,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf0\x02\x05\x09\x18\xd8\x0c\x10\x90\x13\x8a\x49\xf0\x08\x00\x14\x18\xf8\xf4\x07\x00\x10\x18\xf2\x00\x01\x09\x19\xd9\x13\x18\xf0\x03\x01\x09\x19\xfa",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[13];
+ }
+_collections_abc_toplevel_consts_56_consts_7_exceptiontable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 12,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x82\x05\x08\x00\x88\x09\x14\x03\x93\x01\x14\x03",
+};
+static
+ struct _PyCode_DEF(46)
+_collections_abc_toplevel_consts_56_consts_7 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 23,
+ },
+ .co_consts = & _collections_abc_toplevel_consts_56_consts_7_consts._object.ob_base.ob_base,
+ .co_names = & _collections_abc_toplevel_consts_56_consts_4_names._object.ob_base.ob_base,
+ .co_exceptiontable = & _collections_abc_toplevel_consts_56_consts_7_exceptiontable.ob_base.ob_base,
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 6 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 811,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 2,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 467,
+ .co_localsplusnames = & _collections_abc_toplevel_consts_56_consts_4_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_14_consts_2_localspluskinds.ob_base.ob_base,
+ .co_filename = & _collections_abc_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__contains__),
+ .co_qualname = & _collections_abc_toplevel_consts_56_consts_7_qualname._ascii.ob_base,
+ .co_linetable = & _collections_abc_toplevel_consts_56_consts_7_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x09\x00\x7c\x00\x7c\x01\x19\x00\x00\x00\x01\x00\x79\x01\x23\x00\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x72\x03\x01\x00\x59\x00\x79\x02\x77\x00\x78\x03\x59\x00\x77\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[59];
+ }
+_collections_abc_toplevel_consts_56_consts_8_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 58,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "D.keys() -> a set-like object providing a view on D's keys",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+_collections_abc_toplevel_consts_56_consts_8_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & _collections_abc_toplevel_consts_56_consts_8_consts_0._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+_collections_abc_toplevel_consts_56_consts_8_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & const_str_KeysView._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[13];
+ }
+_collections_abc_toplevel_consts_56_consts_8_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 12,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Mapping.keys",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[13];
+ }
+_collections_abc_toplevel_consts_56_consts_8_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 12,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xe4\x0f\x17\x98\x04\x8b\x7e\xd0\x08\x1d",
+};
+static
+ struct _PyCode_DEF(24)
+_collections_abc_toplevel_consts_56_consts_8 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 12,
+ },
+ .co_consts = & _collections_abc_toplevel_consts_56_consts_8_consts._object.ob_base.ob_base,
+ .co_names = & _collections_abc_toplevel_consts_56_consts_8_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 4 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 3,
+ .co_firstlineno = 819,
+ .co_nlocalsplus = 1,
+ .co_nlocals = 1,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 468,
+ .co_localsplusnames = & importlib__bootstrap_toplevel_consts_7_consts_2_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_characters[32]),
+ .co_filename = & _collections_abc_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(keys),
+ .co_qualname = & _collections_abc_toplevel_consts_56_consts_8_qualname._ascii.ob_base,
+ .co_linetable = & _collections_abc_toplevel_consts_56_consts_8_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[61];
+ }
+_collections_abc_toplevel_consts_56_consts_9_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 60,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "D.items() -> a set-like object providing a view on D's items",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+_collections_abc_toplevel_consts_56_consts_9_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & _collections_abc_toplevel_consts_56_consts_9_consts_0._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+_collections_abc_toplevel_consts_56_consts_9_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & const_str_ItemsView._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[14];
+ }
+_collections_abc_toplevel_consts_56_consts_9_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 13,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Mapping.items",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[13];
+ }
+_collections_abc_toplevel_consts_56_consts_9_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 12,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xe4\x0f\x18\x98\x14\x8b\x7f\xd0\x08\x1e",
+};
+static
+ struct _PyCode_DEF(24)
+_collections_abc_toplevel_consts_56_consts_9 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 12,
+ },
+ .co_consts = & _collections_abc_toplevel_consts_56_consts_9_consts._object.ob_base.ob_base,
+ .co_names = & _collections_abc_toplevel_consts_56_consts_9_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 4 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 3,
+ .co_firstlineno = 823,
+ .co_nlocalsplus = 1,
+ .co_nlocals = 1,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 469,
+ .co_localsplusnames = & importlib__bootstrap_toplevel_consts_7_consts_2_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_characters[32]),
+ .co_filename = & _collections_abc_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(items),
+ .co_qualname = & _collections_abc_toplevel_consts_56_consts_9_qualname._ascii.ob_base,
+ .co_linetable = & _collections_abc_toplevel_consts_56_consts_9_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[55];
+ }
+_collections_abc_toplevel_consts_56_consts_10_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 54,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "D.values() -> an object providing a view on D's values",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+_collections_abc_toplevel_consts_56_consts_10_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & _collections_abc_toplevel_consts_56_consts_10_consts_0._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+_collections_abc_toplevel_consts_56_consts_10_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & const_str_ValuesView._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[15];
+ }
+_collections_abc_toplevel_consts_56_consts_10_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 14,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Mapping.values",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[14];
+ }
+_collections_abc_toplevel_consts_56_consts_10_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 13,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xe4\x0f\x19\x98\x24\xd3\x0f\x1f\xd0\x08\x1f",
+};
+static
+ struct _PyCode_DEF(24)
+_collections_abc_toplevel_consts_56_consts_10 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 12,
+ },
+ .co_consts = & _collections_abc_toplevel_consts_56_consts_10_consts._object.ob_base.ob_base,
+ .co_names = & _collections_abc_toplevel_consts_56_consts_10_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 4 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 3,
+ .co_firstlineno = 827,
+ .co_nlocalsplus = 1,
+ .co_nlocals = 1,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 470,
+ .co_localsplusnames = & importlib__bootstrap_toplevel_consts_7_consts_2_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_characters[32]),
+ .co_filename = & _collections_abc_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(values),
+ .co_qualname = & _collections_abc_toplevel_consts_56_consts_10_qualname._ascii.ob_base,
+ .co_linetable = & _collections_abc_toplevel_consts_56_consts_10_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[5];
+ }_object;
+ }
+_collections_abc_toplevel_consts_56_consts_11_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 5,
+ },
+ .ob_item = {
+ &_Py_ID(isinstance),
+ & const_str_Mapping._ascii.ob_base,
+ & const_str_NotImplemented._ascii.ob_base,
+ &_Py_ID(dict),
+ &_Py_ID(items),
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[15];
+ }
+_collections_abc_toplevel_consts_56_consts_11_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 14,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Mapping.__eq__",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[52];
+ }
+_collections_abc_toplevel_consts_56_consts_11_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 51,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xdc\x0f\x19\x98\x25\xa4\x17\xd4\x0f\x29\xdc\x13\x21\xd0\x0c\x21\xdc\x0f\x13\x90\x44\x97\x4a\x91\x4a\x93\x4c\xd3\x0f\x21\xa4\x54\xa8\x25\xaf\x2b\xa9\x2b\xab\x2d\xd3\x25\x38\xd1\x0f\x38\xd0\x08\x38",
+};
+static
+ struct _PyCode_DEF(148)
+_collections_abc_toplevel_consts_56_consts_11 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 74,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_1_consts._object.ob_base.ob_base,
+ .co_names = & _collections_abc_toplevel_consts_56_consts_11_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 7 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 5,
+ .co_firstlineno = 831,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 2,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 471,
+ .co_localsplusnames = & importlib__bootstrap_external_toplevel_consts_58_consts_3_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_14_consts_2_localspluskinds.ob_base.ob_base,
+ .co_filename = & _collections_abc_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__eq__),
+ .co_qualname = & _collections_abc_toplevel_consts_56_consts_11_qualname._ascii.ob_base,
+ .co_linetable = & _collections_abc_toplevel_consts_56_consts_11_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x74\x02\x00\x00\x00\x00\x00\x00\x00\x00\xab\x02\x00\x00\x00\x00\x00\x00\x73\x06\x74\x04\x00\x00\x00\x00\x00\x00\x00\x00\x53\x00\x74\x07\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x6a\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x74\x07\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x6a\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x6b\x28\x00\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[13];
+ }_object;
+ }
+_collections_abc_toplevel_consts_56_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 13,
+ },
+ .ob_item = {
+ & const_str_Mapping._ascii.ob_base,
+ & _collections_abc_toplevel_consts_56_consts_1._ascii.ob_base,
+ (PyObject *)& _Py_SINGLETON(tuple_empty),
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 64],
+ & _collections_abc_toplevel_consts_56_consts_4.ob_base.ob_base,
+ Py_None,
+ & _collections_abc_toplevel_consts_56_consts_6.ob_base.ob_base,
+ & _collections_abc_toplevel_consts_56_consts_7.ob_base.ob_base,
+ & _collections_abc_toplevel_consts_56_consts_8.ob_base.ob_base,
+ & _collections_abc_toplevel_consts_56_consts_9.ob_base.ob_base,
+ & _collections_abc_toplevel_consts_56_consts_10.ob_base.ob_base,
+ & _collections_abc_toplevel_consts_56_consts_11.ob_base.ob_base,
+ & importlib__bootstrap_toplevel_consts_1_consts._object.ob_base.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[15];
+ }_object;
+ }
+_collections_abc_toplevel_consts_56_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 15,
+ },
+ .ob_item = {
+ &_Py_ID(__name__),
+ &_Py_ID(__module__),
+ &_Py_ID(__qualname__),
+ &_Py_ID(__doc__),
+ &_Py_ID(__slots__),
+ &_Py_ID(__abc_tpflags__),
+ & const_str_abstractmethod._ascii.ob_base,
+ &_Py_ID(__getitem__),
+ &_Py_ID(get),
+ &_Py_ID(__contains__),
+ &_Py_ID(keys),
+ &_Py_ID(items),
+ &_Py_ID(values),
+ &_Py_ID(__eq__),
+ &_Py_ID(__reversed__),
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[77];
+ }
+_collections_abc_toplevel_consts_56_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 76,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x84\x00\xf1\x02\x05\x05\x08\xf0\x0e\x00\x11\x13\x80\x49\xf0\x06\x00\x17\x1d\x80\x4f\xe0\x05\x13\xf1\x02\x01\x05\x17\xf3\x03\x00\x06\x14\xf0\x02\x01\x05\x17\xf3\x06\x05\x05\x1b\xf2\x0e\x06\x05\x18\xf2\x10\x02\x05\x1e\xf2\x08\x02\x05\x1f\xf2\x08\x02\x05\x20\xf2\x08\x03\x05\x39\xf0\x0a\x00\x14\x18\x81\x4c",
+};
+static
+ struct _PyCode_DEF(82)
+_collections_abc_toplevel_consts_56 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 41,
+ },
+ .co_consts = & _collections_abc_toplevel_consts_56_consts._object.ob_base.ob_base,
+ .co_names = & _collections_abc_toplevel_consts_56_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 0,
+ .co_argcount = 0,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 2 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 2,
+ .co_firstlineno = 787,
+ .co_nlocalsplus = 0,
+ .co_nlocals = 0,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 472,
+ .co_localsplusnames = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_filename = & _collections_abc_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = & const_str_Mapping._ascii.ob_base,
+ .co_qualname = & const_str_Mapping._ascii.ob_base,
+ .co_linetable = & _collections_abc_toplevel_consts_56_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x65\x00\x5a\x01\x64\x00\x5a\x02\x64\x01\x5a\x03\x64\x02\x5a\x04\x64\x03\x5a\x05\x65\x06\x64\x04\x84\x00\xab\x00\x00\x00\x00\x00\x00\x00\x5a\x07\x64\x0c\x64\x06\x84\x01\x5a\x08\x64\x07\x84\x00\x5a\x09\x64\x08\x84\x00\x5a\x0a\x64\x09\x84\x00\x5a\x0b\x64\x0a\x84\x00\x5a\x0c\x64\x0b\x84\x00\x5a\x0d\x64\x05\x5a\x0e\x79\x05",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[9];
+ }
+const_str__mapping = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 8,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_mapping",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+_collections_abc_toplevel_consts_58_consts_1 = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & const_str__mapping._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[21];
+ }
+_collections_abc_toplevel_consts_58_consts_2_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 20,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "MappingView.__init__",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[10];
+ }
+_collections_abc_toplevel_consts_58_consts_2_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 9,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xd8\x18\x1f\x88\x04\x8d\x0d",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+_collections_abc_toplevel_consts_58_consts_2_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ &_Py_ID(self),
+ &_Py_ID(mapping),
+ },
+ },
+};
+static
+ struct _PyCode_DEF(18)
+_collections_abc_toplevel_consts_58_consts_2 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 9,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_1_consts._object.ob_base.ob_base,
+ .co_names = & _collections_abc_toplevel_consts_58_consts_1._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 4 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 2,
+ .co_firstlineno = 845,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 2,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 473,
+ .co_localsplusnames = & _collections_abc_toplevel_consts_58_consts_2_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_14_consts_2_localspluskinds.ob_base.ob_base,
+ .co_filename = & _collections_abc_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__init__),
+ .co_qualname = & _collections_abc_toplevel_consts_58_consts_2_qualname._ascii.ob_base,
+ .co_linetable = & _collections_abc_toplevel_consts_58_consts_2_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x01\x7c\x00\x5f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x79\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+_collections_abc_toplevel_consts_58_consts_3_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ &_Py_ID(len),
+ & const_str__mapping._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[20];
+ }
+_collections_abc_toplevel_consts_58_consts_3_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 19,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "MappingView.__len__",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[18];
+ }
+_collections_abc_toplevel_consts_58_consts_3_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 17,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xdc\x0f\x12\x90\x34\x97\x3d\x91\x3d\xd3\x0f\x21\xd0\x08\x21",
+};
+static
+ struct _PyCode_DEF(44)
+_collections_abc_toplevel_consts_58_consts_3 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 22,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_1_consts._object.ob_base.ob_base,
+ .co_names = & _collections_abc_toplevel_consts_58_consts_3_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 4 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 3,
+ .co_firstlineno = 848,
+ .co_nlocalsplus = 1,
+ .co_nlocals = 1,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 474,
+ .co_localsplusnames = & importlib__bootstrap_toplevel_consts_7_consts_2_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_characters[32]),
+ .co_filename = & _collections_abc_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__len__),
+ .co_qualname = & _collections_abc_toplevel_consts_58_consts_3_qualname._ascii.ob_base,
+ .co_linetable = & _collections_abc_toplevel_consts_58_consts_3_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[39];
+ }
+_collections_abc_toplevel_consts_58_consts_4_consts_1 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 38,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "{0.__class__.__name__}({0._mapping!r})",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+_collections_abc_toplevel_consts_58_consts_4_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ Py_None,
+ & _collections_abc_toplevel_consts_58_consts_4_consts_1._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+_collections_abc_toplevel_consts_58_consts_4_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ &_Py_ID(format),
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[21];
+ }
+_collections_abc_toplevel_consts_58_consts_4_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 20,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "MappingView.__repr__",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[20];
+ }
+_collections_abc_toplevel_consts_58_consts_4_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 19,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xd8\x0f\x37\xd7\x0f\x3e\xd1\x0f\x3e\xb8\x74\xd3\x0f\x44\xd0\x08\x44",
+};
+static
+ struct _PyCode_DEF(36)
+_collections_abc_toplevel_consts_58_consts_4 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 18,
+ },
+ .co_consts = & _collections_abc_toplevel_consts_58_consts_4_consts._object.ob_base.ob_base,
+ .co_names = & _collections_abc_toplevel_consts_58_consts_4_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 4 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 3,
+ .co_firstlineno = 851,
+ .co_nlocalsplus = 1,
+ .co_nlocals = 1,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 475,
+ .co_localsplusnames = & importlib__bootstrap_toplevel_consts_7_consts_2_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_characters[32]),
+ .co_filename = & _collections_abc_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__repr__),
+ .co_qualname = & _collections_abc_toplevel_consts_58_consts_4_qualname._ascii.ob_base,
+ .co_linetable = & _collections_abc_toplevel_consts_58_consts_4_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x64\x01\x6a\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[6];
+ }_object;
+ }
+_collections_abc_toplevel_consts_58_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 6,
+ },
+ .ob_item = {
+ & const_str_MappingView._ascii.ob_base,
+ & _collections_abc_toplevel_consts_58_consts_1._object.ob_base.ob_base,
+ & _collections_abc_toplevel_consts_58_consts_2.ob_base.ob_base,
+ & _collections_abc_toplevel_consts_58_consts_3.ob_base.ob_base,
+ & _collections_abc_toplevel_consts_58_consts_4.ob_base.ob_base,
+ Py_None,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[10];
+ }_object;
+ }
+_collections_abc_toplevel_consts_58_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 10,
+ },
+ .ob_item = {
+ &_Py_ID(__name__),
+ &_Py_ID(__module__),
+ &_Py_ID(__qualname__),
+ &_Py_ID(__slots__),
+ &_Py_ID(__init__),
+ &_Py_ID(__len__),
+ &_Py_ID(__repr__),
+ & const_str_classmethod._ascii.ob_base,
+ & const_str_GenericAlias._ascii.ob_base,
+ &_Py_ID(__class_getitem__),
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[37];
+ }
+_collections_abc_toplevel_consts_58_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 36,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x84\x00\xe0\x10\x1b\x80\x49\xf2\x04\x01\x05\x20\xf2\x06\x01\x05\x22\xf2\x06\x01\x05\x45\x01\xf1\x06\x00\x19\x24\xa0\x4c\xd3\x18\x31\xd1\x04\x15",
+};
+static
+ struct _PyCode_DEF(50)
+_collections_abc_toplevel_consts_58 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 25,
+ },
+ .co_consts = & _collections_abc_toplevel_consts_58_consts._object.ob_base.ob_base,
+ .co_names = & _collections_abc_toplevel_consts_58_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 0,
+ .co_argcount = 0,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 3 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 3,
+ .co_firstlineno = 841,
+ .co_nlocalsplus = 0,
+ .co_nlocals = 0,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 476,
+ .co_localsplusnames = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_filename = & _collections_abc_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = & const_str_MappingView._ascii.ob_base,
+ .co_qualname = & const_str_MappingView._ascii.ob_base,
+ .co_linetable = & _collections_abc_toplevel_consts_58_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x65\x00\x5a\x01\x64\x00\x5a\x02\x64\x01\x5a\x03\x64\x02\x84\x00\x5a\x04\x64\x03\x84\x00\x5a\x05\x64\x04\x84\x00\x5a\x06\x02\x00\x65\x07\x65\x08\xab\x01\x00\x00\x00\x00\x00\x00\x5a\x09\x79\x05",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+_collections_abc_toplevel_consts_60_consts_2_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & const_str_set._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[24];
+ }
+_collections_abc_toplevel_consts_60_consts_2_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 23,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "KeysView._from_iterable",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[12];
+ }
+_collections_abc_toplevel_consts_60_consts_2_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 11,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xe4\x0f\x12\x90\x32\x8b\x77\x88\x0e",
+};
+static
+ struct _PyCode_DEF(24)
+_collections_abc_toplevel_consts_60_consts_2 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 12,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_1_consts._object.ob_base.ob_base,
+ .co_names = & _collections_abc_toplevel_consts_60_consts_2_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 5 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 3,
+ .co_firstlineno = 861,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 2,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 477,
+ .co_localsplusnames = & _collections_abc_toplevel_consts_52_consts_8_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_14_consts_2_localspluskinds.ob_base.ob_base,
+ .co_filename = & _collections_abc_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = & const_str__from_iterable._ascii.ob_base,
+ .co_qualname = & _collections_abc_toplevel_consts_60_consts_2_qualname._ascii.ob_base,
+ .co_linetable = & _collections_abc_toplevel_consts_60_consts_2_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\xab\x01\x00\x00\x00\x00\x00\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[22];
+ }
+_collections_abc_toplevel_consts_60_consts_3_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 21,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "KeysView.__contains__",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[18];
+ }
+_collections_abc_toplevel_consts_60_consts_3_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 17,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xd8\x0f\x12\x90\x64\x97\x6d\x91\x6d\xd0\x0f\x23\xd0\x08\x23",
+};
+static
+ struct _PyCode_DEF(30)
+_collections_abc_toplevel_consts_60_consts_3 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 15,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_1_consts._object.ob_base.ob_base,
+ .co_names = & _collections_abc_toplevel_consts_58_consts_1._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 4 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 2,
+ .co_firstlineno = 865,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 2,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 478,
+ .co_localsplusnames = & _collections_abc_toplevel_consts_56_consts_4_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_14_consts_2_localspluskinds.ob_base.ob_base,
+ .co_filename = & _collections_abc_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__contains__),
+ .co_qualname = & _collections_abc_toplevel_consts_60_consts_3_qualname._ascii.ob_base,
+ .co_linetable = & _collections_abc_toplevel_consts_60_consts_3_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x01\x7c\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x76\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[18];
+ }
+_collections_abc_toplevel_consts_60_consts_4_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 17,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "KeysView.__iter__",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[20];
+ }
+_collections_abc_toplevel_consts_60_consts_4_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 19,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\xe8\x00\xf8\x80\x00\xd8\x13\x17\x97\x3d\x91\x3d\xd7\x08\x20\xd2\x08\x20\xfa",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[13];
+ }
+_collections_abc_toplevel_consts_60_consts_4_exceptiontable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 12,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x82\x10\x1a\x01\x92\x01\x18\x04\x93\x06\x1a\x01",
+};
+static
+ struct _PyCode_DEF(56)
+_collections_abc_toplevel_consts_60_consts_4 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 28,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_1_consts._object.ob_base.ob_base,
+ .co_names = & _collections_abc_toplevel_consts_58_consts_1._object.ob_base.ob_base,
+ .co_exceptiontable = & _collections_abc_toplevel_consts_60_consts_4_exceptiontable.ob_base.ob_base,
+ .co_flags = 35,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 4 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 3,
+ .co_firstlineno = 868,
+ .co_nlocalsplus = 1,
+ .co_nlocals = 1,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 479,
+ .co_localsplusnames = & importlib__bootstrap_toplevel_consts_7_consts_2_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_characters[32]),
+ .co_filename = & _collections_abc_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__iter__),
+ .co_qualname = & _collections_abc_toplevel_consts_60_consts_4_qualname._ascii.ob_base,
+ .co_linetable = & _collections_abc_toplevel_consts_60_consts_4_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x4b\x00\x01\x00\x97\x00\x7c\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x45\x00\x64\x00\x7b\x03\x00\x00\x96\x02\x97\x02\x86\x05\x05\x00\x01\x00\x79\x00\x37\x00\x8c\x05\xad\x03\x77\x01",
+ ._co_firsttraceable = 2,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[6];
+ }_object;
+ }
+_collections_abc_toplevel_consts_60_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 6,
+ },
+ .ob_item = {
+ & const_str_KeysView._ascii.ob_base,
+ (PyObject *)& _Py_SINGLETON(tuple_empty),
+ & _collections_abc_toplevel_consts_60_consts_2.ob_base.ob_base,
+ & _collections_abc_toplevel_consts_60_consts_3.ob_base.ob_base,
+ & _collections_abc_toplevel_consts_60_consts_4.ob_base.ob_base,
+ Py_None,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[8];
+ }_object;
+ }
+_collections_abc_toplevel_consts_60_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 8,
+ },
+ .ob_item = {
+ &_Py_ID(__name__),
+ &_Py_ID(__module__),
+ &_Py_ID(__qualname__),
+ &_Py_ID(__slots__),
+ & const_str_classmethod._ascii.ob_base,
+ & const_str__from_iterable._ascii.ob_base,
+ &_Py_ID(__contains__),
+ &_Py_ID(__iter__),
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[36];
+ }
+_collections_abc_toplevel_consts_60_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 35,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x84\x00\xe0\x10\x12\x80\x49\xe0\x05\x10\xf1\x02\x01\x05\x17\xf3\x03\x00\x06\x11\xf0\x02\x01\x05\x17\xf2\x06\x01\x05\x24\xf3\x06\x01\x05\x21",
+};
+static
+ struct _PyCode_DEF(44)
+_collections_abc_toplevel_consts_60 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 22,
+ },
+ .co_consts = & _collections_abc_toplevel_consts_60_consts._object.ob_base.ob_base,
+ .co_names = & _collections_abc_toplevel_consts_60_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 0,
+ .co_argcount = 0,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 2 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 2,
+ .co_firstlineno = 857,
+ .co_nlocalsplus = 0,
+ .co_nlocals = 0,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 480,
+ .co_localsplusnames = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_filename = & _collections_abc_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = & const_str_KeysView._ascii.ob_base,
+ .co_qualname = & const_str_KeysView._ascii.ob_base,
+ .co_linetable = & _collections_abc_toplevel_consts_60_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x65\x00\x5a\x01\x64\x00\x5a\x02\x64\x01\x5a\x03\x65\x04\x64\x02\x84\x00\xab\x00\x00\x00\x00\x00\x00\x00\x5a\x05\x64\x03\x84\x00\x5a\x06\x64\x04\x84\x00\x5a\x07\x79\x05",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[25];
+ }
+_collections_abc_toplevel_consts_62_consts_2_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 24,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "ItemsView._from_iterable",
+};
+static
+ struct _PyCode_DEF(24)
+_collections_abc_toplevel_consts_62_consts_2 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 12,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_1_consts._object.ob_base.ob_base,
+ .co_names = & _collections_abc_toplevel_consts_60_consts_2_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 5 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 3,
+ .co_firstlineno = 879,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 2,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 481,
+ .co_localsplusnames = & _collections_abc_toplevel_consts_52_consts_8_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_14_consts_2_localspluskinds.ob_base.ob_base,
+ .co_filename = & _collections_abc_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = & const_str__from_iterable._ascii.ob_base,
+ .co_qualname = & _collections_abc_toplevel_consts_62_consts_2_qualname._ascii.ob_base,
+ .co_linetable = & _collections_abc_toplevel_consts_60_consts_2_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\xab\x01\x00\x00\x00\x00\x00\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+_collections_abc_toplevel_consts_62_consts_3_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & const_str__mapping._ascii.ob_base,
+ & const_str_KeyError._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[23];
+ }
+_collections_abc_toplevel_consts_62_consts_3_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 22,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "ItemsView.__contains__",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[72];
+ }
+_collections_abc_toplevel_consts_62_consts_3_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 71,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xd8\x15\x19\x89\x0a\x88\x03\x88\x55\xf0\x02\x05\x09\x2c\xd8\x10\x14\x97\x0d\x91\x0d\x98\x63\xd1\x10\x22\x88\x41\xf0\x08\x00\x14\x15\x98\x05\x90\x3a\xd2\x13\x2b\xa0\x11\xa0\x65\xa1\x1a\xd0\x0c\x2b\xf8\xf4\x07\x00\x10\x18\xf2\x00\x01\x09\x19\xd9\x13\x18\xf0\x03\x01\x09\x19\xfa",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[13];
+ }
+_collections_abc_toplevel_consts_62_consts_3_exceptiontable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 12,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x87\x0f\x21\x00\xa1\x09\x2d\x03\xac\x01\x2d\x03",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[5];
+ }_object;
+ }
+_collections_abc_toplevel_consts_62_consts_3_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 5,
+ },
+ .ob_item = {
+ &_Py_ID(self),
+ &_Py_ID(item),
+ &_Py_ID(key),
+ &_Py_ID(value),
+ (PyObject *)&_Py_SINGLETON(strings).ascii[118],
+ },
+ },
+};
+static
+ struct _PyCode_DEF(96)
+_collections_abc_toplevel_consts_62_consts_3 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 48,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_30_consts_4_consts._object.ob_base.ob_base,
+ .co_names = & _collections_abc_toplevel_consts_62_consts_3_names._object.ob_base.ob_base,
+ .co_exceptiontable = & _collections_abc_toplevel_consts_62_consts_3_exceptiontable.ob_base.ob_base,
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 9 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 883,
+ .co_nlocalsplus = 5,
+ .co_nlocals = 5,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 482,
+ .co_localsplusnames = & _collections_abc_toplevel_consts_62_consts_3_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_7_consts_5_localspluskinds.ob_base.ob_base,
+ .co_filename = & _collections_abc_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__contains__),
+ .co_qualname = & _collections_abc_toplevel_consts_62_consts_3_qualname._ascii.ob_base,
+ .co_linetable = & _collections_abc_toplevel_consts_62_consts_3_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x01\x5c\x02\x00\x00\x7d\x02\x7d\x03\x09\x00\x7c\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x02\x19\x00\x00\x00\x7d\x04\x7c\x04\x7c\x03\x75\x00\x78\x01\x73\x05\x01\x00\x7c\x04\x7c\x03\x6b\x28\x00\x00\x53\x00\x23\x00\x74\x02\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x72\x03\x01\x00\x59\x00\x79\x01\x77\x00\x78\x03\x59\x00\x77\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[19];
+ }
+_collections_abc_toplevel_consts_62_consts_4_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 18,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "ItemsView.__iter__",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[46];
+ }
+_collections_abc_toplevel_consts_62_consts_4_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 45,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\xe8\x00\xf8\x80\x00\xd8\x13\x17\x97\x3d\x91\x3d\xf2\x00\x01\x09\x2c\x88\x43\xd8\x13\x16\x98\x04\x9f\x0d\x99\x0d\xa0\x63\xd1\x18\x2a\xd0\x12\x2b\xd3\x0c\x2b\xf1\x03\x01\x09\x2c\xf9",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[5];
+ }
+_collections_abc_toplevel_consts_62_consts_4_exceptiontable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x82\x26\x28\x01",
+};
+static
+ struct _PyCode_DEF(84)
+_collections_abc_toplevel_consts_62_consts_4 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 42,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_1_consts._object.ob_base.ob_base,
+ .co_names = & _collections_abc_toplevel_consts_58_consts_1._object.ob_base.ob_base,
+ .co_exceptiontable = & _collections_abc_toplevel_consts_62_consts_4_exceptiontable.ob_base.ob_base,
+ .co_flags = 35,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 6 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 892,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 2,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 483,
+ .co_localsplusnames = & _collections_abc_toplevel_consts_56_consts_4_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_14_consts_2_localspluskinds.ob_base.ob_base,
+ .co_filename = & _collections_abc_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__iter__),
+ .co_qualname = & _collections_abc_toplevel_consts_62_consts_4_qualname._ascii.ob_base,
+ .co_linetable = & _collections_abc_toplevel_consts_62_consts_4_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x4b\x00\x01\x00\x97\x00\x7c\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x00\x5d\x15\x00\x00\x7d\x01\x7c\x01\x7c\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x19\x00\x00\x00\x66\x02\x96\x01\x97\x01\x01\x00\x8c\x17\x04\x00\x79\x00\xad\x03\x77\x01",
+ ._co_firsttraceable = 2,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[6];
+ }_object;
+ }
+_collections_abc_toplevel_consts_62_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 6,
+ },
+ .ob_item = {
+ & const_str_ItemsView._ascii.ob_base,
+ (PyObject *)& _Py_SINGLETON(tuple_empty),
+ & _collections_abc_toplevel_consts_62_consts_2.ob_base.ob_base,
+ & _collections_abc_toplevel_consts_62_consts_3.ob_base.ob_base,
+ & _collections_abc_toplevel_consts_62_consts_4.ob_base.ob_base,
+ Py_None,
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[36];
+ }
+_collections_abc_toplevel_consts_62_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 35,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x84\x00\xe0\x10\x12\x80\x49\xe0\x05\x10\xf1\x02\x01\x05\x17\xf3\x03\x00\x06\x11\xf0\x02\x01\x05\x17\xf2\x06\x07\x05\x2c\xf3\x12\x02\x05\x2c",
+};
+static
+ struct _PyCode_DEF(44)
+_collections_abc_toplevel_consts_62 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 22,
+ },
+ .co_consts = & _collections_abc_toplevel_consts_62_consts._object.ob_base.ob_base,
+ .co_names = & _collections_abc_toplevel_consts_60_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 0,
+ .co_argcount = 0,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 2 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 2,
+ .co_firstlineno = 875,
+ .co_nlocalsplus = 0,
+ .co_nlocals = 0,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 484,
+ .co_localsplusnames = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_filename = & _collections_abc_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = & const_str_ItemsView._ascii.ob_base,
+ .co_qualname = & const_str_ItemsView._ascii.ob_base,
+ .co_linetable = & _collections_abc_toplevel_consts_62_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x65\x00\x5a\x01\x64\x00\x5a\x02\x64\x01\x5a\x03\x65\x04\x64\x02\x84\x00\xab\x00\x00\x00\x00\x00\x00\x00\x5a\x05\x64\x03\x84\x00\x5a\x06\x64\x04\x84\x00\x5a\x07\x79\x05",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[24];
+ }
+_collections_abc_toplevel_consts_64_consts_2_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 23,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "ValuesView.__contains__",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[57];
+ }
+_collections_abc_toplevel_consts_64_consts_2_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 56,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xd8\x13\x17\x97\x3d\x91\x3d\xf2\x00\x03\x09\x1c\x88\x43\xd8\x10\x14\x97\x0d\x91\x0d\x98\x63\xd1\x10\x22\x88\x41\xd8\x0f\x10\x90\x45\x89\x7a\x98\x51\xa0\x25\x9b\x5a\xd9\x17\x1b\xf0\x07\x03\x09\x1c\xf0\x08\x00\x10\x15",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[4];
+ }_object;
+ }
+_collections_abc_toplevel_consts_64_consts_2_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_item = {
+ &_Py_ID(self),
+ &_Py_ID(value),
+ &_Py_ID(key),
+ (PyObject *)&_Py_SINGLETON(strings).ascii[118],
+ },
+ },
+};
+static
+ struct _PyCode_DEF(90)
+_collections_abc_toplevel_consts_64_consts_2 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 45,
+ },
+ .co_consts = & _collections_abc_toplevel_consts_56_consts_7_consts._object.ob_base.ob_base,
+ .co_names = & _collections_abc_toplevel_consts_58_consts_1._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 7 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 3,
+ .co_firstlineno = 904,
+ .co_nlocalsplus = 4,
+ .co_nlocals = 4,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 485,
+ .co_localsplusnames = & _collections_abc_toplevel_consts_64_consts_2_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_7_consts_3_localspluskinds.ob_base.ob_base,
+ .co_filename = & _collections_abc_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__contains__),
+ .co_qualname = & _collections_abc_toplevel_consts_64_consts_2_qualname._ascii.ob_base,
+ .co_linetable = & _collections_abc_toplevel_consts_64_consts_2_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x00\x5d\x1c\x00\x00\x7d\x02\x7c\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x02\x19\x00\x00\x00\x7d\x03\x7c\x03\x7c\x01\x75\x00\x73\x06\x7c\x03\x7c\x01\x6b\x28\x00\x00\x73\x01\x8c\x1c\x01\x00\x79\x01\x04\x00\x79\x02",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[20];
+ }
+_collections_abc_toplevel_consts_64_consts_3_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 19,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "ValuesView.__iter__",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[41];
+ }
+_collections_abc_toplevel_consts_64_consts_3_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 40,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\xe8\x00\xf8\x80\x00\xd8\x13\x17\x97\x3d\x91\x3d\xf2\x00\x01\x09\x25\x88\x43\xd8\x12\x16\x97\x2d\x91\x2d\xa0\x03\xd1\x12\x24\xd3\x0c\x24\xf1\x03\x01\x09\x25\xf9",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[5];
+ }
+_collections_abc_toplevel_consts_64_consts_3_exceptiontable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x82\x24\x26\x01",
+};
+static
+ struct _PyCode_DEF(80)
+_collections_abc_toplevel_consts_64_consts_3 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 40,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_1_consts._object.ob_base.ob_base,
+ .co_names = & _collections_abc_toplevel_consts_58_consts_1._object.ob_base.ob_base,
+ .co_exceptiontable = & _collections_abc_toplevel_consts_64_consts_3_exceptiontable.ob_base.ob_base,
+ .co_flags = 35,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 5 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 3,
+ .co_firstlineno = 911,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 2,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 486,
+ .co_localsplusnames = & _collections_abc_toplevel_consts_56_consts_4_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_14_consts_2_localspluskinds.ob_base.ob_base,
+ .co_filename = & _collections_abc_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__iter__),
+ .co_qualname = & _collections_abc_toplevel_consts_64_consts_3_qualname._ascii.ob_base,
+ .co_linetable = & _collections_abc_toplevel_consts_64_consts_3_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x4b\x00\x01\x00\x97\x00\x7c\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x00\x5d\x13\x00\x00\x7d\x01\x7c\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x19\x00\x00\x00\x96\x01\x97\x01\x01\x00\x8c\x15\x04\x00\x79\x00\xad\x03\x77\x01",
+ ._co_firsttraceable = 2,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[5];
+ }_object;
+ }
+_collections_abc_toplevel_consts_64_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 5,
+ },
+ .ob_item = {
+ & const_str_ValuesView._ascii.ob_base,
+ (PyObject *)& _Py_SINGLETON(tuple_empty),
+ & _collections_abc_toplevel_consts_64_consts_2.ob_base.ob_base,
+ & _collections_abc_toplevel_consts_64_consts_3.ob_base.ob_base,
+ Py_None,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[6];
+ }_object;
+ }
+_collections_abc_toplevel_consts_64_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 6,
+ },
+ .ob_item = {
+ &_Py_ID(__name__),
+ &_Py_ID(__module__),
+ &_Py_ID(__qualname__),
+ &_Py_ID(__slots__),
+ &_Py_ID(__contains__),
+ &_Py_ID(__iter__),
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[18];
+ }
+_collections_abc_toplevel_consts_64_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 17,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x84\x00\xe0\x10\x12\x80\x49\xf2\x04\x05\x05\x15\xf3\x0e\x02\x05\x25",
+};
+static
+ struct _PyCode_DEF(28)
+_collections_abc_toplevel_consts_64 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 14,
+ },
+ .co_consts = & _collections_abc_toplevel_consts_64_consts._object.ob_base.ob_base,
+ .co_names = & _collections_abc_toplevel_consts_64_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 0,
+ .co_argcount = 0,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 1 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 1,
+ .co_firstlineno = 900,
+ .co_nlocalsplus = 0,
+ .co_nlocals = 0,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 487,
+ .co_localsplusnames = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_filename = & _collections_abc_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = & const_str_ValuesView._ascii.ob_base,
+ .co_qualname = & const_str_ValuesView._ascii.ob_base,
+ .co_linetable = & _collections_abc_toplevel_consts_64_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x65\x00\x5a\x01\x64\x00\x5a\x02\x64\x01\x5a\x03\x64\x02\x84\x00\x5a\x04\x64\x03\x84\x00\x5a\x05\x79\x04",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[236];
+ }
+_collections_abc_toplevel_consts_66_consts_1 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 235,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x41\x20\x4d\x75\x74\x61\x62\x6c\x65\x4d\x61\x70\x70\x69\x6e\x67\x20\x69\x73\x20\x61\x20\x67\x65\x6e\x65\x72\x69\x63\x20\x63\x6f\x6e\x74\x61\x69\x6e\x65\x72\x20\x66\x6f\x72\x20\x61\x73\x73\x6f\x63\x69\x61\x74\x69\x6e\x67\x0a\x20\x20\x20\x20\x6b\x65\x79\x2f\x76\x61\x6c\x75\x65\x20\x70\x61\x69\x72\x73\x2e\x0a\x0a\x20\x20\x20\x20\x54\x68\x69\x73\x20\x63\x6c\x61\x73\x73\x20\x70\x72\x6f\x76\x69\x64\x65\x73\x20\x63\x6f\x6e\x63\x72\x65\x74\x65\x20\x67\x65\x6e\x65\x72\x69\x63\x20\x69\x6d\x70\x6c\x65\x6d\x65\x6e\x74\x61\x74\x69\x6f\x6e\x73\x20\x6f\x66\x20\x61\x6c\x6c\x0a\x20\x20\x20\x20\x6d\x65\x74\x68\x6f\x64\x73\x20\x65\x78\x63\x65\x70\x74\x20\x66\x6f\x72\x20\x5f\x5f\x67\x65\x74\x69\x74\x65\x6d\x5f\x5f\x2c\x20\x5f\x5f\x73\x65\x74\x69\x74\x65\x6d\x5f\x5f\x2c\x20\x5f\x5f\x64\x65\x6c\x69\x74\x65\x6d\x5f\x5f\x2c\x0a\x20\x20\x20\x20\x5f\x5f\x69\x74\x65\x72\x5f\x5f\x2c\x20\x61\x6e\x64\x20\x5f\x5f\x6c\x65\x6e\x5f\x5f\x2e\x0a\x20\x20\x20\x20",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[27];
+ }
+_collections_abc_toplevel_consts_66_consts_3_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 26,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "MutableMapping.__setitem__",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+_collections_abc_toplevel_consts_66_consts_3_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ &_Py_ID(self),
+ &_Py_ID(key),
+ &_Py_ID(value),
+ },
+ },
+};
+static
+ struct _PyCode_DEF(14)
+_collections_abc_toplevel_consts_66_consts_3 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 7,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_1_consts._object.ob_base.ob_base,
+ .co_names = & _collections_abc_toplevel_consts_56_consts_4_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 3,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 4 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 1,
+ .co_firstlineno = 930,
+ .co_nlocalsplus = 3,
+ .co_nlocals = 3,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 488,
+ .co_localsplusnames = & _collections_abc_toplevel_consts_66_consts_3_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_3_localspluskinds.ob_base.ob_base,
+ .co_filename = & _collections_abc_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__setitem__),
+ .co_qualname = & _collections_abc_toplevel_consts_66_consts_3_qualname._ascii.ob_base,
+ .co_linetable = & _collections_abc_toplevel_consts_56_consts_4_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x82\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[27];
+ }
+_collections_abc_toplevel_consts_66_consts_4_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 26,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "MutableMapping.__delitem__",
+};
+static
+ struct _PyCode_DEF(14)
+_collections_abc_toplevel_consts_66_consts_4 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 7,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_1_consts._object.ob_base.ob_base,
+ .co_names = & _collections_abc_toplevel_consts_56_consts_4_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 3 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 1,
+ .co_firstlineno = 934,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 2,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 489,
+ .co_localsplusnames = & _collections_abc_toplevel_consts_56_consts_4_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_14_consts_2_localspluskinds.ob_base.ob_base,
+ .co_filename = & _collections_abc_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__delitem__),
+ .co_qualname = & _collections_abc_toplevel_consts_66_consts_4_qualname._ascii.ob_base,
+ .co_linetable = & _collections_abc_toplevel_consts_56_consts_4_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x82\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[170];
+ }
+_collections_abc_toplevel_consts_66_consts_5_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 169,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x44\x2e\x70\x6f\x70\x28\x6b\x5b\x2c\x64\x5d\x29\x20\x2d\x3e\x20\x76\x2c\x20\x72\x65\x6d\x6f\x76\x65\x20\x73\x70\x65\x63\x69\x66\x69\x65\x64\x20\x6b\x65\x79\x20\x61\x6e\x64\x20\x72\x65\x74\x75\x72\x6e\x20\x74\x68\x65\x20\x63\x6f\x72\x72\x65\x73\x70\x6f\x6e\x64\x69\x6e\x67\x20\x76\x61\x6c\x75\x65\x2e\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x49\x66\x20\x6b\x65\x79\x20\x69\x73\x20\x6e\x6f\x74\x20\x66\x6f\x75\x6e\x64\x2c\x20\x64\x20\x69\x73\x20\x72\x65\x74\x75\x72\x6e\x65\x64\x20\x69\x66\x20\x67\x69\x76\x65\x6e\x2c\x20\x6f\x74\x68\x65\x72\x77\x69\x73\x65\x20\x4b\x65\x79\x45\x72\x72\x6f\x72\x20\x69\x73\x20\x72\x61\x69\x73\x65\x64\x2e\x0a\x20\x20\x20\x20\x20\x20\x20\x20",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+_collections_abc_toplevel_consts_66_consts_5_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & _collections_abc_toplevel_consts_66_consts_5_consts_0._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[24];
+ }
+const_str__MutableMapping__marker = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 23,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_MutableMapping__marker",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+_collections_abc_toplevel_consts_66_consts_5_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & const_str_KeyError._ascii.ob_base,
+ & const_str__MutableMapping__marker._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[19];
+ }
+_collections_abc_toplevel_consts_66_consts_5_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 18,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "MutableMapping.pop",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[68];
+ }
+_collections_abc_toplevel_consts_66_consts_5_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 67,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf0\x08\x08\x09\x19\xd8\x14\x18\x98\x13\x91\x49\x88\x45\xf0\x0c\x00\x11\x15\x90\x53\x90\x09\xd8\x13\x18\x88\x4c\xf8\xf4\x0d\x00\x10\x18\xf2\x00\x03\x09\x1b\xd8\x0f\x16\x98\x24\x9f\x2d\x99\x2d\xd1\x0f\x27\xd8\x10\x15\xd8\x13\x1a\x8a\x4e\xf0\x07\x03\x09\x1b\xfa",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[13];
+ }
+_collections_abc_toplevel_consts_66_consts_5_exceptiontable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 12,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x82\x05\x0c\x00\x8c\x1a\x29\x03\xa8\x01\x29\x03",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[4];
+ }_object;
+ }
+_collections_abc_toplevel_consts_66_consts_5_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_item = {
+ &_Py_ID(self),
+ &_Py_ID(key),
+ &_Py_ID(default),
+ &_Py_ID(value),
+ },
+ },
+};
+static
+ struct _PyCode_DEF(88)
+_collections_abc_toplevel_consts_66_consts_5 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 44,
+ },
+ .co_consts = & _collections_abc_toplevel_consts_66_consts_5_consts._object.ob_base.ob_base,
+ .co_names = & _collections_abc_toplevel_consts_66_consts_5_names._object.ob_base.ob_base,
+ .co_exceptiontable = & _collections_abc_toplevel_consts_66_consts_5_exceptiontable.ob_base.ob_base,
+ .co_flags = 3,
+ .co_argcount = 3,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 8 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 940,
+ .co_nlocalsplus = 4,
+ .co_nlocals = 4,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 490,
+ .co_localsplusnames = & _collections_abc_toplevel_consts_66_consts_5_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_7_consts_3_localspluskinds.ob_base.ob_base,
+ .co_filename = & _collections_abc_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = & const_str_pop._ascii.ob_base,
+ .co_qualname = & _collections_abc_toplevel_consts_66_consts_5_qualname._ascii.ob_base,
+ .co_linetable = & _collections_abc_toplevel_consts_66_consts_5_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x09\x00\x7c\x00\x7c\x01\x19\x00\x00\x00\x7d\x03\x7c\x00\x7c\x01\x3d\x00\x7c\x03\x53\x00\x23\x00\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x72\x14\x01\x00\x7c\x02\x7c\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x75\x00\x72\x01\x82\x00\x7c\x02\x63\x02\x59\x00\x53\x00\x77\x00\x78\x03\x59\x00\x77\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[132];
+ }
+_collections_abc_toplevel_consts_66_consts_6_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 131,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x44\x2e\x70\x6f\x70\x69\x74\x65\x6d\x28\x29\x20\x2d\x3e\x20\x28\x6b\x2c\x20\x76\x29\x2c\x20\x72\x65\x6d\x6f\x76\x65\x20\x61\x6e\x64\x20\x72\x65\x74\x75\x72\x6e\x20\x73\x6f\x6d\x65\x20\x28\x6b\x65\x79\x2c\x20\x76\x61\x6c\x75\x65\x29\x20\x70\x61\x69\x72\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x61\x73\x20\x61\x20\x32\x2d\x74\x75\x70\x6c\x65\x3b\x20\x62\x75\x74\x20\x72\x61\x69\x73\x65\x20\x4b\x65\x79\x45\x72\x72\x6f\x72\x20\x69\x66\x20\x44\x20\x69\x73\x20\x65\x6d\x70\x74\x79\x2e\x0a\x20\x20\x20\x20\x20\x20\x20\x20",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+_collections_abc_toplevel_consts_66_consts_6_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & _collections_abc_toplevel_consts_66_consts_6_consts_0._ascii.ob_base,
+ Py_None,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[4];
+ }_object;
+ }
+_collections_abc_toplevel_consts_66_consts_6_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_item = {
+ &_Py_ID(next),
+ &_Py_ID(iter),
+ & const_str_StopIteration._ascii.ob_base,
+ & const_str_KeyError._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[8];
+ }
+const_str_popitem = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 7,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "popitem",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[23];
+ }
+_collections_abc_toplevel_consts_66_consts_6_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 22,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "MutableMapping.popitem",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[75];
+ }
+_collections_abc_toplevel_consts_66_consts_6_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 74,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf0\x08\x03\x09\x25\xdc\x12\x16\x94\x74\x98\x44\x93\x7a\xd3\x12\x22\x88\x43\xf0\x06\x00\x11\x15\x90\x53\x91\x09\x88\x05\xd8\x0c\x10\x90\x13\x88\x49\xd8\x0f\x12\x90\x45\x88\x7a\xd0\x08\x19\xf8\xf4\x09\x00\x10\x1d\xf2\x00\x01\x09\x25\xdc\x12\x1a\xa0\x04\xd0\x0c\x24\xf0\x03\x01\x09\x25\xfa",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[9];
+ }
+_collections_abc_toplevel_consts_66_consts_6_exceptiontable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 8,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x82\x14\x22\x00\xa2\x11\x33\x03",
+};
+static
+ struct _PyCode_DEF(108)
+_collections_abc_toplevel_consts_66_consts_6 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 54,
+ },
+ .co_consts = & _collections_abc_toplevel_consts_66_consts_6_consts._object.ob_base.ob_base,
+ .co_names = & _collections_abc_toplevel_consts_66_consts_6_names._object.ob_base.ob_base,
+ .co_exceptiontable = & _collections_abc_toplevel_consts_66_consts_6_exceptiontable.ob_base.ob_base,
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 8 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 5,
+ .co_firstlineno = 954,
+ .co_nlocalsplus = 3,
+ .co_nlocals = 3,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 491,
+ .co_localsplusnames = & _collections_abc_toplevel_consts_66_consts_3_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_3_localspluskinds.ob_base.ob_base,
+ .co_filename = & _collections_abc_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = & const_str_popitem._ascii.ob_base,
+ .co_qualname = & _collections_abc_toplevel_consts_66_consts_6_qualname._ascii.ob_base,
+ .co_linetable = & _collections_abc_toplevel_consts_66_consts_6_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x09\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x74\x03\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x01\x7c\x00\x7c\x01\x19\x00\x00\x00\x7d\x02\x7c\x00\x7c\x01\x3d\x00\x7c\x01\x7c\x02\x66\x02\x53\x00\x23\x00\x74\x04\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x72\x08\x01\x00\x74\x06\x00\x00\x00\x00\x00\x00\x00\x00\x64\x01\x82\x02\x77\x00\x78\x03\x59\x00\x77\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[45];
+ }
+_collections_abc_toplevel_consts_66_consts_7_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 44,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "D.clear() -> None. Remove all items from D.",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+_collections_abc_toplevel_consts_66_consts_7_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & _collections_abc_toplevel_consts_66_consts_7_consts_0._ascii.ob_base,
+ Py_None,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+_collections_abc_toplevel_consts_66_consts_7_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & const_str_popitem._ascii.ob_base,
+ & const_str_KeyError._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[21];
+ }
+_collections_abc_toplevel_consts_66_consts_7_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 20,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "MutableMapping.clear",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[43];
+ }
+_collections_abc_toplevel_consts_66_consts_7_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 42,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf0\x04\x04\x09\x11\xd8\x12\x16\xd8\x10\x14\x97\x0c\x91\x0c\x94\x0e\xf0\x03\x00\x13\x17\xf8\xe4\x0f\x17\xf2\x00\x01\x09\x11\xd9\x0c\x10\xf0\x03\x01\x09\x11\xfa",
+};
+static
+ struct _PyCode_DEF(70)
+_collections_abc_toplevel_consts_66_consts_7 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 35,
+ },
+ .co_consts = & _collections_abc_toplevel_consts_66_consts_7_consts._object.ob_base.ob_base,
+ .co_names = & _collections_abc_toplevel_consts_66_consts_7_names._object.ob_base.ob_base,
+ .co_exceptiontable = & _collections_abc_toplevel_consts_54_consts_7_exceptiontable.ob_base.ob_base,
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 5 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 966,
+ .co_nlocalsplus = 1,
+ .co_nlocals = 1,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 492,
+ .co_localsplusnames = & importlib__bootstrap_toplevel_consts_7_consts_2_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_characters[32]),
+ .co_filename = & _collections_abc_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(clear),
+ .co_qualname = & _collections_abc_toplevel_consts_66_consts_7_qualname._ascii.ob_base,
+ .co_linetable = & _collections_abc_toplevel_consts_66_consts_7_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x09\x00\x09\x00\x7c\x00\x6a\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x01\x00\x8c\x11\x23\x00\x74\x02\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x72\x03\x01\x00\x59\x00\x79\x01\x77\x00\x78\x03\x59\x00\x77\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[332];
+ }
+_collections_abc_toplevel_consts_66_consts_8_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 331,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x20\x44\x2e\x75\x70\x64\x61\x74\x65\x28\x5b\x45\x2c\x20\x5d\x2a\x2a\x46\x29\x20\x2d\x3e\x20\x4e\x6f\x6e\x65\x2e\x20\x20\x55\x70\x64\x61\x74\x65\x20\x44\x20\x66\x72\x6f\x6d\x20\x6d\x61\x70\x70\x69\x6e\x67\x2f\x69\x74\x65\x72\x61\x62\x6c\x65\x20\x45\x20\x61\x6e\x64\x20\x46\x2e\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x49\x66\x20\x45\x20\x70\x72\x65\x73\x65\x6e\x74\x20\x61\x6e\x64\x20\x68\x61\x73\x20\x61\x20\x2e\x6b\x65\x79\x73\x28\x29\x20\x6d\x65\x74\x68\x6f\x64\x2c\x20\x64\x6f\x65\x73\x3a\x20\x20\x20\x20\x20\x66\x6f\x72\x20\x6b\x20\x69\x6e\x20\x45\x3a\x20\x44\x5b\x6b\x5d\x20\x3d\x20\x45\x5b\x6b\x5d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x49\x66\x20\x45\x20\x70\x72\x65\x73\x65\x6e\x74\x20\x61\x6e\x64\x20\x6c\x61\x63\x6b\x73\x20\x2e\x6b\x65\x79\x73\x28\x29\x20\x6d\x65\x74\x68\x6f\x64\x2c\x20\x64\x6f\x65\x73\x3a\x20\x20\x20\x20\x20\x66\x6f\x72\x20\x28\x6b\x2c\x20\x76\x29\x20\x69\x6e\x20\x45\x3a\x20\x44\x5b\x6b\x5d\x20\x3d\x20\x76\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x49\x6e\x20\x65\x69\x74\x68\x65\x72\x20\x63\x61\x73\x65\x2c\x20\x74\x68\x69\x73\x20\x69\x73\x20\x66\x6f\x6c\x6c\x6f\x77\x65\x64\x20\x62\x79\x3a\x20\x66\x6f\x72\x20\x6b\x2c\x20\x76\x20\x69\x6e\x20\x46\x2e\x69\x74\x65\x6d\x73\x28\x29\x3a\x20\x44\x5b\x6b\x5d\x20\x3d\x20\x76\x0a\x20\x20\x20\x20\x20\x20\x20\x20",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+_collections_abc_toplevel_consts_66_consts_8_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ & _collections_abc_toplevel_consts_66_consts_8_consts_0._ascii.ob_base,
+ &_Py_ID(keys),
+ Py_None,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[5];
+ }_object;
+ }
+_collections_abc_toplevel_consts_66_consts_8_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 5,
+ },
+ .ob_item = {
+ &_Py_ID(isinstance),
+ & const_str_Mapping._ascii.ob_base,
+ & const_str_hasattr._ascii.ob_base,
+ &_Py_ID(keys),
+ &_Py_ID(items),
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[22];
+ }
+_collections_abc_toplevel_consts_66_consts_8_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 21,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "MutableMapping.update",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[151];
+ }
+_collections_abc_toplevel_consts_66_consts_8_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 150,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf4\x0c\x00\x0c\x16\x90\x65\x9c\x57\xd4\x0b\x25\xd8\x17\x1c\xf2\x00\x01\x0d\x27\x90\x03\xd8\x1c\x21\xa0\x23\x99\x4a\x90\x04\x90\x53\x92\x09\xf1\x03\x01\x0d\x27\xe4\x0d\x14\x90\x55\x98\x46\xd4\x0d\x23\xd8\x17\x1c\x97\x7a\x91\x7a\x93\x7c\xf2\x00\x01\x0d\x27\x90\x03\xd8\x1c\x21\xa0\x23\x99\x4a\x90\x04\x90\x53\x92\x09\xf1\x03\x01\x0d\x27\xf0\x06\x00\x1f\x24\xf2\x00\x01\x0d\x22\x91\x0a\x90\x03\x90\x55\xd8\x1c\x21\x90\x04\x90\x53\x92\x09\xf0\x03\x01\x0d\x22\xe0\x1a\x1e\x9f\x2a\x99\x2a\x9b\x2c\xf2\x00\x01\x09\x1e\x89\x4a\x88\x43\x90\x15\xd8\x18\x1d\x88\x44\x90\x13\x8a\x49\xf1\x03\x01\x09\x1e",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[5];
+ }_object;
+ }
+_collections_abc_toplevel_consts_66_consts_8_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 5,
+ },
+ .ob_item = {
+ &_Py_ID(self),
+ & const_str_other._ascii.ob_base,
+ & const_str_kwds._ascii.ob_base,
+ &_Py_ID(key),
+ &_Py_ID(value),
+ },
+ },
+};
+static
+ struct _PyCode_DEF(240)
+_collections_abc_toplevel_consts_66_consts_8 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 120,
+ },
+ .co_consts = & _collections_abc_toplevel_consts_66_consts_8_consts._object.ob_base.ob_base,
+ .co_names = & _collections_abc_toplevel_consts_66_consts_8_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 11,
+ .co_argcount = 2,
+ .co_posonlyargcount = 2,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 9 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 974,
+ .co_nlocalsplus = 5,
+ .co_nlocals = 5,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 493,
+ .co_localsplusnames = & _collections_abc_toplevel_consts_66_consts_8_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_7_consts_5_localspluskinds.ob_base.ob_base,
+ .co_filename = & _collections_abc_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = & const_str_update._ascii.ob_base,
+ .co_qualname = & _collections_abc_toplevel_consts_66_consts_8_qualname._ascii.ob_base,
+ .co_linetable = & _collections_abc_toplevel_consts_66_consts_8_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x74\x02\x00\x00\x00\x00\x00\x00\x00\x00\xab\x02\x00\x00\x00\x00\x00\x00\x72\x10\x7c\x01\x44\x00\x5d\x0a\x00\x00\x7d\x03\x7c\x01\x7c\x03\x19\x00\x00\x00\x7c\x00\x7c\x03\x3c\x00\x00\x00\x8c\x0c\x04\x00\x6e\x39\x74\x05\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x64\x01\xab\x02\x00\x00\x00\x00\x00\x00\x72\x1e\x7c\x01\x6a\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x44\x00\x5d\x0a\x00\x00\x7d\x03\x7c\x01\x7c\x03\x19\x00\x00\x00\x7c\x00\x7c\x03\x3c\x00\x00\x00\x8c\x0c\x04\x00\x6e\x0f\x7c\x01\x44\x00\x5d\x0a\x00\x00\x5c\x02\x00\x00\x7d\x03\x7d\x04\x7c\x04\x7c\x00\x7c\x03\x3c\x00\x00\x00\x8c\x0c\x04\x00\x7c\x02\x6a\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x44\x00\x5d\x0a\x00\x00\x5c\x02\x00\x00\x7d\x03\x7d\x04\x7c\x04\x7c\x00\x7c\x03\x3c\x00\x00\x00\x8c\x0c\x04\x00\x79\x02",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[65];
+ }
+_collections_abc_toplevel_consts_66_consts_10_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 64,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "D.setdefault(k[,d]) -> D.get(k,d), also set D[k]=d if k not in D",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+_collections_abc_toplevel_consts_66_consts_10_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & _collections_abc_toplevel_consts_66_consts_10_consts_0._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[26];
+ }
+_collections_abc_toplevel_consts_66_consts_10_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 25,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "MutableMapping.setdefault",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[47];
+ }
+_collections_abc_toplevel_consts_66_consts_10_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 46,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf0\x04\x03\x09\x20\xd8\x13\x17\x98\x03\x91\x39\xd0\x0c\x1c\xf8\xdc\x0f\x17\xf2\x00\x01\x09\x20\xd8\x18\x1f\x88\x44\x90\x13\x8a\x49\xd8\x0f\x16\x88\x0e\xf0\x05\x01\x09\x20\xfa",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[13];
+ }
+_collections_abc_toplevel_consts_66_consts_10_exceptiontable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 12,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x82\x04\x07\x00\x87\x0e\x19\x03\x98\x01\x19\x03",
+};
+static
+ struct _PyCode_DEF(56)
+_collections_abc_toplevel_consts_66_consts_10 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 28,
+ },
+ .co_consts = & _collections_abc_toplevel_consts_66_consts_10_consts._object.ob_base.ob_base,
+ .co_names = & _collections_abc_toplevel_consts_56_consts_4_names._object.ob_base.ob_base,
+ .co_exceptiontable = & _collections_abc_toplevel_consts_66_consts_10_exceptiontable.ob_base.ob_base,
+ .co_flags = 3,
+ .co_argcount = 3,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 7 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 992,
+ .co_nlocalsplus = 3,
+ .co_nlocals = 3,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 494,
+ .co_localsplusnames = & _collections_abc_toplevel_consts_56_consts_6_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_3_localspluskinds.ob_base.ob_base,
+ .co_filename = & _collections_abc_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = & const_str_setdefault._ascii.ob_base,
+ .co_qualname = & _collections_abc_toplevel_consts_66_consts_10_qualname._ascii.ob_base,
+ .co_linetable = & _collections_abc_toplevel_consts_66_consts_10_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x09\x00\x7c\x00\x7c\x01\x19\x00\x00\x00\x53\x00\x23\x00\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x72\x09\x01\x00\x7c\x02\x7c\x00\x7c\x01\x3c\x00\x00\x00\x59\x00\x7c\x02\x53\x00\x77\x00\x78\x03\x59\x00\x77\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+_collections_abc_toplevel_consts_66_consts_11 = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ (PyObject *)& _Py_SINGLETON(tuple_empty),
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[13];
+ }_object;
+ }
+_collections_abc_toplevel_consts_66_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 13,
+ },
+ .ob_item = {
+ & const_str_MutableMapping._ascii.ob_base,
+ & _collections_abc_toplevel_consts_66_consts_1._ascii.ob_base,
+ (PyObject *)& _Py_SINGLETON(tuple_empty),
+ & _collections_abc_toplevel_consts_66_consts_3.ob_base.ob_base,
+ & _collections_abc_toplevel_consts_66_consts_4.ob_base.ob_base,
+ & _collections_abc_toplevel_consts_66_consts_5.ob_base.ob_base,
+ & _collections_abc_toplevel_consts_66_consts_6.ob_base.ob_base,
+ & _collections_abc_toplevel_consts_66_consts_7.ob_base.ob_base,
+ & _collections_abc_toplevel_consts_66_consts_8.ob_base.ob_base,
+ Py_None,
+ & _collections_abc_toplevel_consts_66_consts_10.ob_base.ob_base,
+ & _collections_abc_toplevel_consts_66_consts_11._object.ob_base.ob_base,
+ & importlib__bootstrap_toplevel_consts_1_consts._object.ob_base.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[15];
+ }_object;
+ }
+_collections_abc_toplevel_consts_66_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 15,
+ },
+ .ob_item = {
+ &_Py_ID(__name__),
+ &_Py_ID(__module__),
+ &_Py_ID(__qualname__),
+ &_Py_ID(__doc__),
+ &_Py_ID(__slots__),
+ & const_str_abstractmethod._ascii.ob_base,
+ &_Py_ID(__setitem__),
+ &_Py_ID(__delitem__),
+ &_Py_ID(object),
+ & const_str__MutableMapping__marker._ascii.ob_base,
+ & const_str_pop._ascii.ob_base,
+ & const_str_popitem._ascii.ob_base,
+ &_Py_ID(clear),
+ & const_str_update._ascii.ob_base,
+ & const_str_setdefault._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[90];
+ }
+_collections_abc_toplevel_consts_66_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 89,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x84\x00\xf1\x02\x06\x05\x08\xf0\x10\x00\x11\x13\x80\x49\xe0\x05\x13\xf1\x02\x01\x05\x17\xf3\x03\x00\x06\x14\xf0\x02\x01\x05\x17\xf0\x06\x00\x06\x14\xf1\x02\x01\x05\x17\xf3\x03\x00\x06\x14\xf0\x02\x01\x05\x17\xf1\x06\x00\x10\x16\x8b\x78\x80\x48\xe0\x1f\x27\xf3\x00\x0c\x05\x19\xf2\x1c\x0a\x05\x1a\xf2\x18\x06\x05\x11\xf3\x10\x10\x05\x1e\xf4\x24\x06\x05\x17",
+};
+static
+ struct _PyCode_DEF(104)
+_collections_abc_toplevel_consts_66 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 52,
+ },
+ .co_consts = & _collections_abc_toplevel_consts_66_consts._object.ob_base.ob_base,
+ .co_names = & _collections_abc_toplevel_consts_66_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 0,
+ .co_argcount = 0,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 2 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 2,
+ .co_firstlineno = 919,
+ .co_nlocalsplus = 0,
+ .co_nlocals = 0,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 495,
+ .co_localsplusnames = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_filename = & _collections_abc_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = & const_str_MutableMapping._ascii.ob_base,
+ .co_qualname = & const_str_MutableMapping._ascii.ob_base,
+ .co_linetable = & _collections_abc_toplevel_consts_66_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x65\x00\x5a\x01\x64\x00\x5a\x02\x64\x01\x5a\x03\x64\x02\x5a\x04\x65\x05\x64\x03\x84\x00\xab\x00\x00\x00\x00\x00\x00\x00\x5a\x06\x65\x05\x64\x04\x84\x00\xab\x00\x00\x00\x00\x00\x00\x00\x5a\x07\x02\x00\x65\x08\xab\x00\x00\x00\x00\x00\x00\x00\x5a\x09\x65\x09\x66\x01\x64\x05\x84\x01\x5a\x0a\x64\x06\x84\x00\x5a\x0b\x64\x07\x84\x00\x5a\x0c\x64\x0b\x64\x08\x84\x01\x5a\x0d\x64\x0c\x64\x0a\x84\x01\x5a\x0e\x79\x09",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[139];
+ }
+_collections_abc_toplevel_consts_68_consts_1 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 138,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x41\x6c\x6c\x20\x74\x68\x65\x20\x6f\x70\x65\x72\x61\x74\x69\x6f\x6e\x73\x20\x6f\x6e\x20\x61\x20\x72\x65\x61\x64\x2d\x6f\x6e\x6c\x79\x20\x73\x65\x71\x75\x65\x6e\x63\x65\x2e\x0a\x0a\x20\x20\x20\x20\x43\x6f\x6e\x63\x72\x65\x74\x65\x20\x73\x75\x62\x63\x6c\x61\x73\x73\x65\x73\x20\x6d\x75\x73\x74\x20\x6f\x76\x65\x72\x72\x69\x64\x65\x20\x5f\x5f\x6e\x65\x77\x5f\x5f\x20\x6f\x72\x20\x5f\x5f\x69\x6e\x69\x74\x5f\x5f\x2c\x0a\x20\x20\x20\x20\x5f\x5f\x67\x65\x74\x69\x74\x65\x6d\x5f\x5f\x2c\x20\x61\x6e\x64\x20\x5f\x5f\x6c\x65\x6e\x5f\x5f\x2e\x0a\x20\x20\x20\x20",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+_collections_abc_toplevel_consts_68_consts_4_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & const_str_IndexError._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[21];
+ }
+_collections_abc_toplevel_consts_68_consts_4_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 20,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Sequence.__getitem__",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[9];
+ }
+_collections_abc_toplevel_consts_68_consts_4_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 8,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xe4\x0e\x18\xd0\x08\x18",
+};
+static
+ struct _PyCode_DEF(14)
+_collections_abc_toplevel_consts_68_consts_4 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 7,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_1_consts._object.ob_base.ob_base,
+ .co_names = & _collections_abc_toplevel_consts_68_consts_4_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 3 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 1,
+ .co_firstlineno = 1018,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 2,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 496,
+ .co_localsplusnames = & importlib__bootstrap_external_toplevel_consts_66_consts_8_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_14_consts_2_localspluskinds.ob_base.ob_base,
+ .co_filename = & _collections_abc_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__getitem__),
+ .co_qualname = & _collections_abc_toplevel_consts_68_consts_4_qualname._ascii.ob_base,
+ .co_linetable = & _collections_abc_toplevel_consts_68_consts_4_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x82\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+_collections_abc_toplevel_consts_68_consts_5_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ Py_None,
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 0],
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 1],
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[18];
+ }
+_collections_abc_toplevel_consts_68_consts_5_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 17,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Sequence.__iter__",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[67];
+ }
+_collections_abc_toplevel_consts_68_consts_5_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 66,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\xe8\x00\xf8\x80\x00\xd8\x0c\x0d\x88\x01\xf0\x02\x06\x09\x13\xd8\x12\x16\xd8\x14\x18\x98\x11\x91\x47\x90\x01\xd8\x16\x17\x92\x07\xd8\x10\x11\x90\x51\x91\x06\x90\x01\xf0\x07\x00\x13\x17\xf8\xf4\x08\x00\x10\x1a\xf2\x00\x01\x09\x13\xd9\x0c\x12\xf0\x03\x01\x09\x13\xfc",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[25];
+ }
+_collections_abc_toplevel_consts_68_consts_5_exceptiontable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 24,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x82\x03\x25\x01\x86\x10\x16\x00\x96\x09\x22\x03\x9f\x02\x25\x01\xa1\x01\x22\x03\xa2\x03\x25\x01",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+_collections_abc_toplevel_consts_68_consts_5_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ &_Py_ID(self),
+ (PyObject *)&_Py_SINGLETON(strings).ascii[105],
+ (PyObject *)&_Py_SINGLETON(strings).ascii[118],
+ },
+ },
+};
+static
+ struct _PyCode_DEF(78)
+_collections_abc_toplevel_consts_68_consts_5 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 39,
+ },
+ .co_consts = & _collections_abc_toplevel_consts_68_consts_5_consts._object.ob_base.ob_base,
+ .co_names = & _collections_abc_toplevel_consts_68_consts_4_names._object.ob_base.ob_base,
+ .co_exceptiontable = & _collections_abc_toplevel_consts_68_consts_5_exceptiontable.ob_base.ob_base,
+ .co_flags = 35,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 7 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 1022,
+ .co_nlocalsplus = 3,
+ .co_nlocals = 3,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 497,
+ .co_localsplusnames = & _collections_abc_toplevel_consts_68_consts_5_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_3_localspluskinds.ob_base.ob_base,
+ .co_filename = & _collections_abc_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__iter__),
+ .co_qualname = & _collections_abc_toplevel_consts_68_consts_5_qualname._ascii.ob_base,
+ .co_linetable = & _collections_abc_toplevel_consts_68_consts_5_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x4b\x00\x01\x00\x97\x00\x64\x01\x7d\x01\x09\x00\x09\x00\x7c\x00\x7c\x01\x19\x00\x00\x00\x7d\x02\x7c\x02\x96\x02\x97\x01\x01\x00\x7c\x01\x64\x02\x7a\x0d\x00\x00\x7d\x01\x8c\x0f\x23\x00\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x72\x03\x01\x00\x59\x00\x79\x00\x77\x00\x78\x03\x59\x00\x77\x01\xad\x03\x77\x01",
+ ._co_firsttraceable = 2,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[22];
+ }
+_collections_abc_toplevel_consts_68_consts_6_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 21,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Sequence.__contains__",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[39];
+ }
+_collections_abc_toplevel_consts_68_consts_6_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 38,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xd8\x11\x15\xf2\x00\x02\x09\x1c\x88\x41\xd8\x0f\x10\x90\x45\x89\x7a\x98\x51\xa0\x25\x9b\x5a\xd9\x17\x1b\xf0\x05\x02\x09\x1c\xf0\x06\x00\x10\x15",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+_collections_abc_toplevel_consts_68_consts_6_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ &_Py_ID(self),
+ &_Py_ID(value),
+ (PyObject *)&_Py_SINGLETON(strings).ascii[118],
+ },
+ },
+};
+static
+ struct _PyCode_DEF(40)
+_collections_abc_toplevel_consts_68_consts_6 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 20,
+ },
+ .co_consts = & _collections_abc_toplevel_consts_56_consts_7_consts._object.ob_base.ob_base,
+ .co_names = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 6 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 3,
+ .co_firstlineno = 1032,
+ .co_nlocalsplus = 3,
+ .co_nlocals = 3,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 498,
+ .co_localsplusnames = & _collections_abc_toplevel_consts_68_consts_6_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_3_localspluskinds.ob_base.ob_base,
+ .co_filename = & _collections_abc_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__contains__),
+ .co_qualname = & _collections_abc_toplevel_consts_68_consts_6_qualname._ascii.ob_base,
+ .co_linetable = & _collections_abc_toplevel_consts_68_consts_6_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x00\x44\x00\x5d\x0d\x00\x00\x7d\x02\x7c\x02\x7c\x01\x75\x00\x73\x06\x7c\x02\x7c\x01\x6b\x28\x00\x00\x73\x01\x8c\x0d\x01\x00\x79\x01\x04\x00\x79\x02",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[6];
+ }
+const_str_range = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 5,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "range",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+_collections_abc_toplevel_consts_68_consts_7_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ &_Py_ID(reversed),
+ & const_str_range._ascii.ob_base,
+ &_Py_ID(len),
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[22];
+ }
+_collections_abc_toplevel_consts_68_consts_7_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 21,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Sequence.__reversed__",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[45];
+ }
+_collections_abc_toplevel_consts_68_consts_7_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 44,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\xe8\x00\xf8\x80\x00\xdc\x11\x19\x9c\x25\xa4\x03\xa0\x44\xa3\x09\xd3\x1a\x2a\xd3\x11\x2b\xf2\x00\x01\x09\x1a\x88\x41\xd8\x12\x16\x90\x71\x91\x27\x8b\x4d\xf1\x03\x01\x09\x1a\xf9",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[5];
+ }
+_collections_abc_toplevel_consts_68_consts_7_exceptiontable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x82\x2b\x2d\x01",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+_collections_abc_toplevel_consts_68_consts_7_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ &_Py_ID(self),
+ (PyObject *)&_Py_SINGLETON(strings).ascii[105],
+ },
+ },
+};
+static
+ struct _PyCode_DEF(94)
+_collections_abc_toplevel_consts_68_consts_7 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 47,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_1_consts._object.ob_base.ob_base,
+ .co_names = & _collections_abc_toplevel_consts_68_consts_7_names._object.ob_base.ob_base,
+ .co_exceptiontable = & _collections_abc_toplevel_consts_68_consts_7_exceptiontable.ob_base.ob_base,
+ .co_flags = 35,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 9 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 7,
+ .co_firstlineno = 1038,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 2,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 499,
+ .co_localsplusnames = & _collections_abc_toplevel_consts_68_consts_7_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_14_consts_2_localspluskinds.ob_base.ob_base,
+ .co_filename = & _collections_abc_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__reversed__),
+ .co_qualname = & _collections_abc_toplevel_consts_68_consts_7_qualname._ascii.ob_base,
+ .co_linetable = & _collections_abc_toplevel_consts_68_consts_7_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x4b\x00\x01\x00\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x74\x03\x00\x00\x00\x00\x00\x00\x00\x00\x74\x05\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x44\x00\x5d\x09\x00\x00\x7d\x01\x7c\x00\x7c\x01\x19\x00\x00\x00\x96\x01\x97\x01\x01\x00\x8c\x0b\x04\x00\x79\x00\xad\x03\x77\x01",
+ ._co_firsttraceable = 2,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[231];
+ }
+_collections_abc_toplevel_consts_68_consts_9_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 230,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x53\x2e\x69\x6e\x64\x65\x78\x28\x76\x61\x6c\x75\x65\x2c\x20\x5b\x73\x74\x61\x72\x74\x2c\x20\x5b\x73\x74\x6f\x70\x5d\x5d\x29\x20\x2d\x3e\x20\x69\x6e\x74\x65\x67\x65\x72\x20\x2d\x2d\x20\x72\x65\x74\x75\x72\x6e\x20\x66\x69\x72\x73\x74\x20\x69\x6e\x64\x65\x78\x20\x6f\x66\x20\x76\x61\x6c\x75\x65\x2e\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x52\x61\x69\x73\x65\x73\x20\x56\x61\x6c\x75\x65\x45\x72\x72\x6f\x72\x20\x69\x66\x20\x74\x68\x65\x20\x76\x61\x6c\x75\x65\x20\x69\x73\x20\x6e\x6f\x74\x20\x70\x72\x65\x73\x65\x6e\x74\x2e\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x53\x75\x70\x70\x6f\x72\x74\x69\x6e\x67\x20\x73\x74\x61\x72\x74\x20\x61\x6e\x64\x20\x73\x74\x6f\x70\x20\x61\x72\x67\x75\x6d\x65\x6e\x74\x73\x20\x69\x73\x20\x6f\x70\x74\x69\x6f\x6e\x61\x6c\x2c\x20\x62\x75\x74\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x63\x6f\x6d\x6d\x65\x6e\x64\x65\x64\x2e\x0a\x20\x20\x20\x20\x20\x20\x20\x20",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+_collections_abc_toplevel_consts_68_consts_9_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ & _collections_abc_toplevel_consts_68_consts_9_consts_0._ascii.ob_base,
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 0],
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 1],
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[4];
+ }_object;
+ }
+_collections_abc_toplevel_consts_68_consts_9_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_item = {
+ & const_str_max._ascii.ob_base,
+ &_Py_ID(len),
+ & const_str_IndexError._ascii.ob_base,
+ & const_str_ValueError._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[15];
+ }
+_collections_abc_toplevel_consts_68_consts_9_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 14,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Sequence.index",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[172];
+ }
+_collections_abc_toplevel_consts_68_consts_9_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 171,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf0\x0e\x00\x0c\x11\xd0\x0b\x1c\xa0\x15\xa8\x11\xa2\x19\xdc\x14\x17\x9c\x03\x98\x44\x9b\x09\xa0\x45\xd1\x18\x29\xa8\x31\xd3\x14\x2d\x88\x45\xd8\x0b\x0f\xd0\x0b\x1b\xa0\x04\xa0\x71\xa2\x08\xd8\x0c\x10\x94\x43\x98\x04\x93\x49\xd1\x0c\x1d\x88\x44\xe0\x0c\x11\x88\x01\xd8\x0e\x12\x88\x6c\x98\x61\xa0\x24\x9a\x68\xf0\x02\x03\x0d\x16\xd8\x14\x18\x98\x11\x91\x47\x90\x01\xf0\x06\x00\x10\x11\x90\x45\x89\x7a\x98\x51\xa0\x25\x9a\x5a\xd8\x17\x18\x90\x08\xd8\x0c\x0d\x90\x11\x89\x46\x88\x41\xf0\x0f\x00\x0f\x13\x89\x6c\x98\x61\xa0\x24\x9b\x68\xf4\x10\x00\x0f\x19\xd0\x08\x18\xf8\xf4\x0b\x00\x14\x1e\xf2\x00\x01\x0d\x16\xd8\x10\x15\xf4\x08\x00\x0f\x19\xd0\x08\x18\xf0\x0b\x01\x0d\x16\xfa",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[18];
+ }
+_collections_abc_toplevel_consts_68_consts_9_exceptiontable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 17,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\xbf\x05\x41\x23\x00\xc1\x23\x09\x41\x34\x03\xc1\x33\x01\x41\x34\x03",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[5];
+ }
+const_str_stop = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 4,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "stop",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[6];
+ }_object;
+ }
+_collections_abc_toplevel_consts_68_consts_9_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 6,
+ },
+ .ob_item = {
+ &_Py_ID(self),
+ &_Py_ID(value),
+ &_Py_ID(start),
+ & const_str_stop._ascii.ob_base,
+ (PyObject *)&_Py_SINGLETON(strings).ascii[105],
+ (PyObject *)&_Py_SINGLETON(strings).ascii[118],
+ },
+ },
+};
+static
+ struct _PyCode_DEF(238)
+_collections_abc_toplevel_consts_68_consts_9 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 119,
+ },
+ .co_consts = & _collections_abc_toplevel_consts_68_consts_9_consts._object.ob_base.ob_base,
+ .co_names = & _collections_abc_toplevel_consts_68_consts_9_names._object.ob_base.ob_base,
+ .co_exceptiontable = & _collections_abc_toplevel_consts_68_consts_9_exceptiontable.ob_base.ob_base,
+ .co_flags = 3,
+ .co_argcount = 4,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 11 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 5,
+ .co_firstlineno = 1042,
+ .co_nlocalsplus = 6,
+ .co_nlocals = 6,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 500,
+ .co_localsplusnames = & _collections_abc_toplevel_consts_68_consts_9_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_30_consts_4_localspluskinds.ob_base.ob_base,
+ .co_filename = & _collections_abc_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = & const_str_index._ascii.ob_base,
+ .co_qualname = & _collections_abc_toplevel_consts_68_consts_9_qualname._ascii.ob_base,
+ .co_linetable = & _collections_abc_toplevel_consts_68_consts_9_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x02\x81\x1d\x7c\x02\x64\x01\x6b\x02\x00\x00\x72\x18\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x74\x03\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7c\x02\x7a\x00\x00\x00\x64\x01\xab\x02\x00\x00\x00\x00\x00\x00\x7d\x02\x7c\x03\x81\x13\x7c\x03\x64\x01\x6b\x02\x00\x00\x72\x0e\x7c\x03\x74\x03\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7a\x0d\x00\x00\x7d\x03\x7c\x02\x7d\x04\x7c\x03\x81\x05\x7c\x04\x7c\x03\x6b\x02\x00\x00\x72\x1f\x09\x00\x7c\x00\x7c\x04\x19\x00\x00\x00\x7d\x05\x7c\x05\x7c\x01\x75\x00\x73\x05\x7c\x05\x7c\x01\x6b\x28\x00\x00\x72\x02\x7c\x04\x53\x00\x7c\x04\x64\x02\x7a\x0d\x00\x00\x7d\x04\x7c\x03\x80\x01\x8c\x19\x7c\x04\x7c\x03\x6b\x02\x00\x00\x72\x01\x8c\x1f\x74\x06\x00\x00\x00\x00\x00\x00\x00\x00\x82\x01\x23\x00\x74\x04\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x72\x08\x01\x00\x59\x00\x74\x06\x00\x00\x00\x00\x00\x00\x00\x00\x82\x01\x77\x00\x78\x03\x59\x00\x77\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[67];
+ }
+_collections_abc_toplevel_consts_68_consts_10_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 66,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "S.count(value) -> integer -- return number of occurrences of value",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[34];
+ }
+_collections_abc_toplevel_consts_68_consts_10_consts_1_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 33,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Sequence.count.<locals>.<genexpr>",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[30];
+ }
+_collections_abc_toplevel_consts_68_consts_10_consts_1_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 29,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\xf8\xe8\x00\xf8\x80\x00\xd2\x12\x3f\x98\x11\xa0\x61\xa8\x35\xa1\x6a\xb0\x41\xb8\x15\xb3\x4a\x94\x31\xd1\x12\x3f\xf9",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[9];
+ }
+_collections_abc_toplevel_consts_68_consts_10_consts_1_exceptiontable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 8,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x83\x0e\x19\x01\x92\x07\x19\x01",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+_collections_abc_toplevel_consts_68_consts_10_consts_1_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ & importlib__bootstrap_external_toplevel_consts_6_localsplusnames_0._ascii.ob_base,
+ (PyObject *)&_Py_SINGLETON(strings).ascii[118],
+ &_Py_ID(value),
+ },
+ },
+};
+static
+ struct _PyCode_DEF(54)
+_collections_abc_toplevel_consts_68_consts_10_consts_1 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 27,
+ },
+ .co_consts = & importlib__bootstrap_external_toplevel_consts_6_consts._object.ob_base.ob_base,
+ .co_names = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_exceptiontable = & _collections_abc_toplevel_consts_68_consts_10_consts_1_exceptiontable.ob_base.ob_base,
+ .co_flags = 51,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 6 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 3,
+ .co_firstlineno = 1067,
+ .co_nlocalsplus = 3,
+ .co_nlocals = 2,
+ .co_ncellvars = 0,
+ .co_nfreevars = 1,
+ .co_version = 501,
+ .co_localsplusnames = & _collections_abc_toplevel_consts_68_consts_10_consts_1_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_7_consts_1_consts_1_consts_4_localspluskinds.ob_base.ob_base,
+ .co_filename = & _collections_abc_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_STR(anon_genexpr),
+ .co_qualname = & _collections_abc_toplevel_consts_68_consts_10_consts_1_qualname._ascii.ob_base,
+ .co_linetable = & _collections_abc_toplevel_consts_68_consts_10_consts_1_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x95\x01\x4b\x00\x01\x00\x97\x00\x7c\x00\x5d\x10\x00\x00\x7d\x01\x7c\x01\x89\x02\x75\x00\x73\x06\x7c\x01\x89\x02\x6b\x28\x00\x00\x73\x01\x8c\x0d\x64\x00\x96\x01\x97\x01\x01\x00\x8c\x12\x04\x00\x79\x01\xad\x03\x77\x01",
+ ._co_firsttraceable = 3,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+_collections_abc_toplevel_consts_68_consts_10_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & _collections_abc_toplevel_consts_68_consts_10_consts_0._ascii.ob_base,
+ & _collections_abc_toplevel_consts_68_consts_10_consts_1.ob_base.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[4];
+ }
+const_str_sum = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 3,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "sum",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+_collections_abc_toplevel_consts_68_consts_10_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & const_str_sum._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[15];
+ }
+_collections_abc_toplevel_consts_68_consts_10_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 14,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Sequence.count",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[21];
+ }
+_collections_abc_toplevel_consts_68_consts_10_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 20,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\xf8\x80\x00\xe4\x0f\x12\xd3\x12\x3f\x98\x64\xd4\x12\x3f\xd3\x0f\x3f\xd0\x08\x3f",
+};
+static
+ struct _PyCode_DEF(44)
+_collections_abc_toplevel_consts_68_consts_10 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 22,
+ },
+ .co_consts = & _collections_abc_toplevel_consts_68_consts_10_consts._object.ob_base.ob_base,
+ .co_names = & _collections_abc_toplevel_consts_68_consts_10_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 6 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 1065,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 2,
+ .co_ncellvars = 1,
+ .co_nfreevars = 0,
+ .co_version = 502,
+ .co_localsplusnames = & importlib__bootstrap_toplevel_consts_30_consts_11_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & _collections_abc_toplevel_consts_52_consts_12_localspluskinds.ob_base.ob_base,
+ .co_filename = & _collections_abc_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(count),
+ .co_qualname = & _collections_abc_toplevel_consts_68_consts_10_qualname._ascii.ob_base,
+ .co_linetable = & _collections_abc_toplevel_consts_68_consts_10_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x87\x01\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x88\x01\x66\x01\x64\x01\x84\x08\x7c\x00\x44\x00\xab\x00\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x53\x00",
+ ._co_firsttraceable = 1,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+_collections_abc_toplevel_consts_68_consts_11 = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 0],
+ Py_None,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[12];
+ }_object;
+ }
+_collections_abc_toplevel_consts_68_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 12,
+ },
+ .ob_item = {
+ & const_str_Sequence._ascii.ob_base,
+ & _collections_abc_toplevel_consts_68_consts_1._ascii.ob_base,
+ (PyObject *)& _Py_SINGLETON(tuple_empty),
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 32],
+ & _collections_abc_toplevel_consts_68_consts_4.ob_base.ob_base,
+ & _collections_abc_toplevel_consts_68_consts_5.ob_base.ob_base,
+ & _collections_abc_toplevel_consts_68_consts_6.ob_base.ob_base,
+ & _collections_abc_toplevel_consts_68_consts_7.ob_base.ob_base,
+ Py_None,
+ & _collections_abc_toplevel_consts_68_consts_9.ob_base.ob_base,
+ & _collections_abc_toplevel_consts_68_consts_10.ob_base.ob_base,
+ & _collections_abc_toplevel_consts_68_consts_11._object.ob_base.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[13];
+ }_object;
+ }
+_collections_abc_toplevel_consts_68_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 13,
+ },
+ .ob_item = {
+ &_Py_ID(__name__),
+ &_Py_ID(__module__),
+ &_Py_ID(__qualname__),
+ &_Py_ID(__doc__),
+ &_Py_ID(__slots__),
+ &_Py_ID(__abc_tpflags__),
+ & const_str_abstractmethod._ascii.ob_base,
+ &_Py_ID(__getitem__),
+ &_Py_ID(__iter__),
+ &_Py_ID(__contains__),
+ &_Py_ID(__reversed__),
+ & const_str_index._ascii.ob_base,
+ &_Py_ID(count),
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[66];
+ }
+_collections_abc_toplevel_consts_68_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 65,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x84\x00\xf1\x02\x04\x05\x08\xf0\x0c\x00\x11\x13\x80\x49\xf0\x06\x00\x17\x1d\x80\x4f\xe0\x05\x13\xf1\x02\x01\x05\x19\xf3\x03\x00\x06\x14\xf0\x02\x01\x05\x19\xf2\x06\x08\x05\x13\xf2\x14\x04\x05\x15\xf2\x0c\x02\x05\x1a\xf3\x08\x15\x05\x19\xf3\x2e\x02\x05\x40\x01",
+};
+static
+ struct _PyCode_DEF(72)
+_collections_abc_toplevel_consts_68 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 36,
+ },
+ .co_consts = & _collections_abc_toplevel_consts_68_consts._object.ob_base.ob_base,
+ .co_names = & _collections_abc_toplevel_consts_68_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 0,
+ .co_argcount = 0,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 2 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 2,
+ .co_firstlineno = 1006,
+ .co_nlocalsplus = 0,
+ .co_nlocals = 0,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 503,
+ .co_localsplusnames = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_filename = & _collections_abc_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = & const_str_Sequence._ascii.ob_base,
+ .co_qualname = & const_str_Sequence._ascii.ob_base,
+ .co_linetable = & _collections_abc_toplevel_consts_68_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x65\x00\x5a\x01\x64\x00\x5a\x02\x64\x01\x5a\x03\x64\x02\x5a\x04\x64\x03\x5a\x05\x65\x06\x64\x04\x84\x00\xab\x00\x00\x00\x00\x00\x00\x00\x5a\x07\x64\x05\x84\x00\x5a\x08\x64\x06\x84\x00\x5a\x09\x64\x07\x84\x00\x5a\x0a\x64\x0b\x64\x09\x84\x01\x5a\x0b\x64\x0a\x84\x00\x5a\x0c\x79\x08",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[25];
+ }
+const_str__DeprecateByteStringMeta = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 24,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_DeprecateByteStringMeta",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[27];
+ }
+_collections_abc_toplevel_consts_70_consts_1_consts_3 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 26,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "collections.abc.ByteString",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+_collections_abc_toplevel_consts_70_consts_1_consts_4 = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 3],
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 14],
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+_collections_abc_toplevel_consts_70_consts_1_consts_5 = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & const_str_remove._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[6];
+ }_object;
+ }
+_collections_abc_toplevel_consts_70_consts_1_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 6,
+ },
+ .ob_item = {
+ Py_None,
+ & const_str_ByteString._ascii.ob_base,
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 0],
+ & _collections_abc_toplevel_consts_70_consts_1_consts_3._ascii.ob_base,
+ & _collections_abc_toplevel_consts_70_consts_1_consts_4._object.ob_base.ob_base,
+ & _collections_abc_toplevel_consts_70_consts_1_consts_5._object.ob_base.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[12];
+ }
+const_str__deprecated = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 11,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_deprecated",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[4];
+ }_object;
+ }
+_collections_abc_toplevel_consts_70_consts_1_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_item = {
+ &_Py_ID(warnings),
+ & const_str__deprecated._ascii.ob_base,
+ & const_str_super._ascii.ob_base,
+ &_Py_ID(__new__),
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[33];
+ }
+_collections_abc_toplevel_consts_70_consts_1_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 32,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_DeprecateByteStringMeta.__new__",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[68];
+ }
+_collections_abc_toplevel_consts_70_consts_1_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 67,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\xf8\x80\x00\xd8\x0b\x0f\x90\x3c\xd2\x0b\x1f\xdb\x0c\x1b\xe0\x0c\x14\xd7\x0c\x20\xd1\x0c\x20\xd8\x10\x2c\xd8\x17\x1e\xf0\x05\x00\x0d\x21\xf4\x00\x03\x0d\x0e\xf4\x08\x00\x10\x15\x89\x77\x89\x7f\x98\x73\xa0\x44\xa8\x25\xb0\x19\xd1\x0f\x45\xb8\x66\xd1\x0f\x45\xd0\x08\x45",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[7];
+ }_object;
+ }
+_collections_abc_toplevel_consts_70_consts_1_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 7,
+ },
+ .ob_item = {
+ & const_str_cls._ascii.ob_base,
+ &_Py_ID(name),
+ & const_str_bases._ascii.ob_base,
+ & const_str_namespace._ascii.ob_base,
+ & const_str_kwargs._ascii.ob_base,
+ &_Py_ID(warnings),
+ &_Py_ID(__class__),
+ },
+ },
+};
+static
+ struct _PyCode_DEF(98)
+_collections_abc_toplevel_consts_70_consts_1 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 49,
+ },
+ .co_consts = & _collections_abc_toplevel_consts_70_consts_1_consts._object.ob_base.ob_base,
+ .co_names = & _collections_abc_toplevel_consts_70_consts_1_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 11,
+ .co_argcount = 4,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 13 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 6,
+ .co_firstlineno = 1075,
+ .co_nlocalsplus = 7,
+ .co_nlocals = 6,
+ .co_ncellvars = 0,
+ .co_nfreevars = 1,
+ .co_version = 504,
+ .co_localsplusnames = & _collections_abc_toplevel_consts_70_consts_1_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & abc_toplevel_consts_10_consts_2_localspluskinds.ob_base.ob_base,
+ .co_filename = & _collections_abc_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__new__),
+ .co_qualname = & _collections_abc_toplevel_consts_70_consts_1_qualname._ascii.ob_base,
+ .co_linetable = & _collections_abc_toplevel_consts_70_consts_1_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x95\x01\x97\x00\x7c\x01\x64\x01\x6b\x37\x00\x00\x72\x17\x64\x02\x64\x00\x6c\x00\x7d\x05\x7c\x05\x6a\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x03\x64\x04\xac\x05\xab\x02\x00\x00\x00\x00\x00\x00\x01\x00\x74\x05\x00\x00\x00\x00\x00\x00\x00\x00\x89\x06\x7c\x00\x8d\x0c\x00\x00\x7c\x00\x7c\x01\x7c\x02\x7c\x03\x66\x04\x69\x00\x7c\x04\xa4\x01\x8e\x01\x53\x00",
+ ._co_firsttraceable = 1,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[5];
+ }_object;
+ }
+_collections_abc_toplevel_consts_70_consts_2_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 5,
+ },
+ .ob_item = {
+ Py_None,
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 0],
+ & _collections_abc_toplevel_consts_70_consts_1_consts_3._ascii.ob_base,
+ & _collections_abc_toplevel_consts_70_consts_1_consts_4._object.ob_base.ob_base,
+ & _collections_abc_toplevel_consts_70_consts_1_consts_5._object.ob_base.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[4];
+ }_object;
+ }
+_collections_abc_toplevel_consts_70_consts_2_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_item = {
+ &_Py_ID(warnings),
+ & const_str__deprecated._ascii.ob_base,
+ & const_str_super._ascii.ob_base,
+ &_Py_ID(__instancecheck__),
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[43];
+ }
+_collections_abc_toplevel_consts_70_consts_2_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 42,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_DeprecateByteStringMeta.__instancecheck__",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[50];
+ }
+_collections_abc_toplevel_consts_70_consts_2_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 49,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\xf8\x80\x00\xdb\x08\x17\xe0\x08\x10\xd7\x08\x1c\xd1\x08\x1c\xd8\x0c\x28\xd8\x13\x1a\xf0\x05\x00\x09\x1d\xf4\x00\x03\x09\x0a\xf4\x08\x00\x10\x15\x89\x77\xd1\x0f\x28\xa8\x18\xd3\x0f\x32\xd0\x08\x32",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[4];
+ }_object;
+ }
+_collections_abc_toplevel_consts_70_consts_2_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_item = {
+ & const_str_cls._ascii.ob_base,
+ & const_str_instance._ascii.ob_base,
+ &_Py_ID(warnings),
+ &_Py_ID(__class__),
+ },
+ },
+};
+static
+ struct _PyCode_DEF(80)
+_collections_abc_toplevel_consts_70_consts_2 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 40,
+ },
+ .co_consts = & _collections_abc_toplevel_consts_70_consts_2_consts._object.ob_base.ob_base,
+ .co_names = & _collections_abc_toplevel_consts_70_consts_2_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 8 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 1085,
+ .co_nlocalsplus = 4,
+ .co_nlocals = 3,
+ .co_ncellvars = 0,
+ .co_nfreevars = 1,
+ .co_version = 505,
+ .co_localsplusnames = & _collections_abc_toplevel_consts_70_consts_2_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_7_consts_1_consts_1_consts_3_localspluskinds.ob_base.ob_base,
+ .co_filename = & _collections_abc_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__instancecheck__),
+ .co_qualname = & _collections_abc_toplevel_consts_70_consts_2_qualname._ascii.ob_base,
+ .co_linetable = & _collections_abc_toplevel_consts_70_consts_2_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x95\x01\x97\x00\x64\x01\x64\x00\x6c\x00\x7d\x02\x7c\x02\x6a\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x02\x64\x03\xac\x04\xab\x02\x00\x00\x00\x00\x00\x00\x01\x00\x74\x04\x00\x00\x00\x00\x00\x00\x00\x00\x89\x03\x7c\x00\x8d\x0d\x00\x00\x7c\x01\xab\x01\x00\x00\x00\x00\x00\x00\x53\x00",
+ ._co_firsttraceable = 1,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+_collections_abc_toplevel_consts_70_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ & const_str__DeprecateByteStringMeta._ascii.ob_base,
+ & _collections_abc_toplevel_consts_70_consts_1.ob_base.ob_base,
+ & _collections_abc_toplevel_consts_70_consts_2.ob_base.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[6];
+ }_object;
+ }
+_collections_abc_toplevel_consts_70_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 6,
+ },
+ .ob_item = {
+ &_Py_ID(__name__),
+ &_Py_ID(__module__),
+ &_Py_ID(__qualname__),
+ &_Py_ID(__new__),
+ &_Py_ID(__instancecheck__),
+ &_Py_ID(__classcell__),
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[20];
+ }
+_collections_abc_toplevel_consts_70_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 19,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\xf8\x84\x00\xf4\x02\x08\x05\x46\x01\xf7\x14\x07\x05\x33\xf0\x00\x07\x05\x33",
+};
+static
+ struct _PyCode_DEF(40)
+_collections_abc_toplevel_consts_70 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 20,
+ },
+ .co_consts = & _collections_abc_toplevel_consts_70_consts._object.ob_base.ob_base,
+ .co_names = & _collections_abc_toplevel_consts_70_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 0,
+ .co_argcount = 0,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 3 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 2,
+ .co_firstlineno = 1074,
+ .co_nlocalsplus = 1,
+ .co_nlocals = 0,
+ .co_ncellvars = 1,
+ .co_nfreevars = 0,
+ .co_version = 506,
+ .co_localsplusnames = & importlib__bootstrap_external_toplevel_consts_58_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_characters[64]),
+ .co_filename = & _collections_abc_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = & const_str__DeprecateByteStringMeta._ascii.ob_base,
+ .co_qualname = & const_str__DeprecateByteStringMeta._ascii.ob_base,
+ .co_linetable = & _collections_abc_toplevel_consts_70_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x87\x00\x97\x00\x65\x00\x5a\x01\x64\x00\x5a\x02\x88\x00\x66\x01\x64\x01\x84\x08\x5a\x03\x88\x00\x66\x01\x64\x02\x84\x08\x5a\x04\x88\x00\x78\x01\x5a\x05\x53\x00",
+ ._co_firsttraceable = 1,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[78];
+ }
+_collections_abc_toplevel_consts_72_consts_1 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 77,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x54\x68\x69\x73\x20\x75\x6e\x69\x66\x69\x65\x73\x20\x62\x79\x74\x65\x73\x20\x61\x6e\x64\x20\x62\x79\x74\x65\x61\x72\x72\x61\x79\x2e\x0a\x0a\x20\x20\x20\x20\x58\x58\x58\x20\x53\x68\x6f\x75\x6c\x64\x20\x61\x64\x64\x20\x61\x6c\x6c\x20\x74\x68\x65\x69\x72\x20\x6d\x65\x74\x68\x6f\x64\x73\x2e\x0a\x20\x20\x20\x20",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[4];
+ }_object;
+ }
+_collections_abc_toplevel_consts_72_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_item = {
+ & const_str_ByteString._ascii.ob_base,
+ & _collections_abc_toplevel_consts_72_consts_1._ascii.ob_base,
+ (PyObject *)& _Py_SINGLETON(tuple_empty),
+ Py_None,
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[15];
+ }
+_collections_abc_toplevel_consts_72_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 14,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x84\x00\xf1\x02\x03\x05\x08\xf0\x0a\x00\x11\x13\x81\x49",
+};
+static
+ struct _PyCode_DEF(20)
+_collections_abc_toplevel_consts_72 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 10,
+ },
+ .co_consts = & _collections_abc_toplevel_consts_72_consts._object.ob_base.ob_base,
+ .co_names = & abc_toplevel_consts_15_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 0,
+ .co_argcount = 0,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 1 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 1,
+ .co_firstlineno = 1094,
+ .co_nlocalsplus = 0,
+ .co_nlocals = 0,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 507,
+ .co_localsplusnames = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_filename = & _collections_abc_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = & const_str_ByteString._ascii.ob_base,
+ .co_qualname = & const_str_ByteString._ascii.ob_base,
+ .co_linetable = & _collections_abc_toplevel_consts_72_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x65\x00\x5a\x01\x64\x00\x5a\x02\x64\x01\x5a\x03\x64\x02\x5a\x04\x79\x03",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[175];
+ }
+_collections_abc_toplevel_consts_74_consts_1 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 174,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x41\x6c\x6c\x20\x74\x68\x65\x20\x6f\x70\x65\x72\x61\x74\x69\x6f\x6e\x73\x20\x6f\x6e\x20\x61\x20\x72\x65\x61\x64\x2d\x77\x72\x69\x74\x65\x20\x73\x65\x71\x75\x65\x6e\x63\x65\x2e\x0a\x0a\x20\x20\x20\x20\x43\x6f\x6e\x63\x72\x65\x74\x65\x20\x73\x75\x62\x63\x6c\x61\x73\x73\x65\x73\x20\x6d\x75\x73\x74\x20\x70\x72\x6f\x76\x69\x64\x65\x20\x5f\x5f\x6e\x65\x77\x5f\x5f\x20\x6f\x72\x20\x5f\x5f\x69\x6e\x69\x74\x5f\x5f\x2c\x0a\x20\x20\x20\x20\x5f\x5f\x67\x65\x74\x69\x74\x65\x6d\x5f\x5f\x2c\x20\x5f\x5f\x73\x65\x74\x69\x74\x65\x6d\x5f\x5f\x2c\x20\x5f\x5f\x64\x65\x6c\x69\x74\x65\x6d\x5f\x5f\x2c\x20\x5f\x5f\x6c\x65\x6e\x5f\x5f\x2c\x20\x61\x6e\x64\x20\x69\x6e\x73\x65\x72\x74\x28\x29\x2e\x0a\x20\x20\x20\x20",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[28];
+ }
+_collections_abc_toplevel_consts_74_consts_3_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 27,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "MutableSequence.__setitem__",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+_collections_abc_toplevel_consts_74_consts_3_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ &_Py_ID(self),
+ & const_str_index._ascii.ob_base,
+ &_Py_ID(value),
+ },
+ },
+};
+static
+ struct _PyCode_DEF(14)
+_collections_abc_toplevel_consts_74_consts_3 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 7,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_1_consts._object.ob_base.ob_base,
+ .co_names = & _collections_abc_toplevel_consts_68_consts_4_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 3,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 4 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 1,
+ .co_firstlineno = 1115,
+ .co_nlocalsplus = 3,
+ .co_nlocals = 3,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 508,
+ .co_localsplusnames = & _collections_abc_toplevel_consts_74_consts_3_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_3_localspluskinds.ob_base.ob_base,
+ .co_filename = & _collections_abc_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__setitem__),
+ .co_qualname = & _collections_abc_toplevel_consts_74_consts_3_qualname._ascii.ob_base,
+ .co_linetable = & _collections_abc_toplevel_consts_68_consts_4_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x82\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[28];
+ }
+_collections_abc_toplevel_consts_74_consts_4_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 27,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "MutableSequence.__delitem__",
+};
+static
+ struct _PyCode_DEF(14)
+_collections_abc_toplevel_consts_74_consts_4 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 7,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_1_consts._object.ob_base.ob_base,
+ .co_names = & _collections_abc_toplevel_consts_68_consts_4_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 3 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 1,
+ .co_firstlineno = 1119,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 2,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 509,
+ .co_localsplusnames = & importlib__bootstrap_external_toplevel_consts_66_consts_8_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_14_consts_2_localspluskinds.ob_base.ob_base,
+ .co_filename = & _collections_abc_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__delitem__),
+ .co_qualname = & _collections_abc_toplevel_consts_74_consts_4_qualname._ascii.ob_base,
+ .co_linetable = & _collections_abc_toplevel_consts_68_consts_4_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x82\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[52];
+ }
+_collections_abc_toplevel_consts_74_consts_5_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 51,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "S.insert(index, value) -- insert value before index",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+_collections_abc_toplevel_consts_74_consts_5_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & _collections_abc_toplevel_consts_74_consts_5_consts_0._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[23];
+ }
+_collections_abc_toplevel_consts_74_consts_5_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 22,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "MutableSequence.insert",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[11];
+ }
+_collections_abc_toplevel_consts_74_consts_5_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 10,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf4\x06\x00\x0f\x19\xd0\x08\x18",
+};
+static
+ struct _PyCode_DEF(14)
+_collections_abc_toplevel_consts_74_consts_5 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 7,
+ },
+ .co_consts = & _collections_abc_toplevel_consts_74_consts_5_consts._object.ob_base.ob_base,
+ .co_names = & _collections_abc_toplevel_consts_68_consts_4_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 3,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 4 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 1,
+ .co_firstlineno = 1123,
+ .co_nlocalsplus = 3,
+ .co_nlocals = 3,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 510,
+ .co_localsplusnames = & _collections_abc_toplevel_consts_74_consts_3_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_3_localspluskinds.ob_base.ob_base,
+ .co_filename = & _collections_abc_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = & const_str_insert._ascii.ob_base,
+ .co_qualname = & _collections_abc_toplevel_consts_74_consts_5_qualname._ascii.ob_base,
+ .co_linetable = & _collections_abc_toplevel_consts_74_consts_5_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x82\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[59];
+ }
+_collections_abc_toplevel_consts_74_consts_6_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 58,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "S.append(value) -- append value to the end of the sequence",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+_collections_abc_toplevel_consts_74_consts_6_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & _collections_abc_toplevel_consts_74_consts_6_consts_0._ascii.ob_base,
+ Py_None,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+_collections_abc_toplevel_consts_74_consts_6_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & const_str_insert._ascii.ob_base,
+ &_Py_ID(len),
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[23];
+ }
+_collections_abc_toplevel_consts_74_consts_6_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 22,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "MutableSequence.append",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[21];
+ }
+_collections_abc_toplevel_consts_74_consts_6_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 20,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xe0\x08\x0c\x8f\x0b\x89\x0b\x94\x43\x98\x04\x93\x49\x98\x75\xd5\x08\x25",
+};
+static
+ struct _PyCode_DEF(58)
+_collections_abc_toplevel_consts_74_consts_6 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 29,
+ },
+ .co_consts = & _collections_abc_toplevel_consts_74_consts_6_consts._object.ob_base.ob_base,
+ .co_names = & _collections_abc_toplevel_consts_74_consts_6_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 7 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 5,
+ .co_firstlineno = 1128,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 2,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 511,
+ .co_localsplusnames = & importlib__bootstrap_toplevel_consts_30_consts_11_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_14_consts_2_localspluskinds.ob_base.ob_base,
+ .co_filename = & _collections_abc_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(append),
+ .co_qualname = & _collections_abc_toplevel_consts_74_consts_6_qualname._ascii.ob_base,
+ .co_linetable = & _collections_abc_toplevel_consts_74_consts_6_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x00\x6a\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x74\x03\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7c\x01\xab\x02\x00\x00\x00\x00\x00\x00\x01\x00\x79\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[45];
+ }
+_collections_abc_toplevel_consts_74_consts_7_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 44,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "S.clear() -> None -- remove all items from S",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+_collections_abc_toplevel_consts_74_consts_7_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & _collections_abc_toplevel_consts_74_consts_7_consts_0._ascii.ob_base,
+ Py_None,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+_collections_abc_toplevel_consts_74_consts_7_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & const_str_pop._ascii.ob_base,
+ & const_str_IndexError._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[22];
+ }
+_collections_abc_toplevel_consts_74_consts_7_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 21,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "MutableSequence.clear",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[43];
+ }
+_collections_abc_toplevel_consts_74_consts_7_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 42,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf0\x04\x04\x09\x11\xd8\x12\x16\xd8\x10\x14\x97\x08\x91\x08\x94\x0a\xf0\x03\x00\x13\x17\xf8\xe4\x0f\x19\xf2\x00\x01\x09\x11\xd9\x0c\x10\xf0\x03\x01\x09\x11\xfa",
+};
+static
+ struct _PyCode_DEF(70)
+_collections_abc_toplevel_consts_74_consts_7 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 35,
+ },
+ .co_consts = & _collections_abc_toplevel_consts_74_consts_7_consts._object.ob_base.ob_base,
+ .co_names = & _collections_abc_toplevel_consts_74_consts_7_names._object.ob_base.ob_base,
+ .co_exceptiontable = & _collections_abc_toplevel_consts_54_consts_7_exceptiontable.ob_base.ob_base,
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 5 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 1132,
+ .co_nlocalsplus = 1,
+ .co_nlocals = 1,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 512,
+ .co_localsplusnames = & importlib__bootstrap_toplevel_consts_7_consts_2_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_characters[32]),
+ .co_filename = & _collections_abc_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(clear),
+ .co_qualname = & _collections_abc_toplevel_consts_74_consts_7_qualname._ascii.ob_base,
+ .co_linetable = & _collections_abc_toplevel_consts_74_consts_7_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x09\x00\x09\x00\x7c\x00\x6a\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x01\x00\x8c\x11\x23\x00\x74\x02\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x72\x03\x01\x00\x59\x00\x79\x01\x77\x00\x78\x03\x59\x00\x77\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[34];
+ }
+_collections_abc_toplevel_consts_74_consts_8_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 33,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "S.reverse() -- reverse *IN PLACE*",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[4];
+ }_object;
+ }
+_collections_abc_toplevel_consts_74_consts_8_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_item = {
+ & _collections_abc_toplevel_consts_74_consts_8_consts_0._ascii.ob_base,
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 2],
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 1],
+ Py_None,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+_collections_abc_toplevel_consts_74_consts_8_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ &_Py_ID(len),
+ & const_str_range._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[24];
+ }
+_collections_abc_toplevel_consts_74_consts_8_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 23,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "MutableSequence.reverse",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[79];
+ }
+_collections_abc_toplevel_consts_74_consts_8_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 78,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xe4\x0c\x0f\x90\x04\x8b\x49\x88\x01\xdc\x11\x16\x90\x71\x98\x21\x91\x74\x93\x1b\xf2\x00\x01\x09\x38\x88\x41\xd8\x23\x27\xa8\x01\xa8\x21\xa9\x03\xa8\x41\xa9\x05\xa1\x3b\xb0\x04\xb0\x51\xb1\x07\xd0\x0c\x20\x88\x44\x90\x11\x89\x47\x90\x54\x98\x21\x98\x41\x99\x23\x98\x61\x99\x25\x92\x5b\xf1\x03\x01\x09\x38",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+_collections_abc_toplevel_consts_74_consts_8_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ &_Py_ID(self),
+ &_Py_ID(n),
+ (PyObject *)&_Py_SINGLETON(strings).ascii[105],
+ },
+ },
+};
+static
+ struct _PyCode_DEF(122)
+_collections_abc_toplevel_consts_74_consts_8 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 61,
+ },
+ .co_consts = & _collections_abc_toplevel_consts_74_consts_8_consts._object.ob_base.ob_base,
+ .co_names = & _collections_abc_toplevel_consts_74_consts_8_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 8 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 5,
+ .co_firstlineno = 1140,
+ .co_nlocalsplus = 3,
+ .co_nlocals = 3,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 513,
+ .co_localsplusnames = & _collections_abc_toplevel_consts_74_consts_8_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_3_localspluskinds.ob_base.ob_base,
+ .co_filename = & _collections_abc_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(reverse),
+ .co_qualname = & _collections_abc_toplevel_consts_74_consts_8_qualname._ascii.ob_base,
+ .co_linetable = & _collections_abc_toplevel_consts_74_consts_8_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x01\x74\x03\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x64\x01\x7a\x02\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x44\x00\x5d\x1f\x00\x00\x7d\x02\x7c\x00\x7c\x01\x7c\x02\x7a\x0a\x00\x00\x64\x02\x7a\x0a\x00\x00\x19\x00\x00\x00\x7c\x00\x7c\x02\x19\x00\x00\x00\x63\x02\x7c\x00\x7c\x02\x3c\x00\x00\x00\x7c\x00\x7c\x01\x7c\x02\x7a\x0a\x00\x00\x64\x02\x7a\x0a\x00\x00\x3c\x00\x00\x00\x8c\x21\x04\x00\x79\x03",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[78];
+ }
+_collections_abc_toplevel_consts_74_consts_9_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 77,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "S.extend(iterable) -- extend sequence by appending elements from the iterable",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+_collections_abc_toplevel_consts_74_consts_9_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & _collections_abc_toplevel_consts_74_consts_9_consts_0._ascii.ob_base,
+ Py_None,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+_collections_abc_toplevel_consts_74_consts_9_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & const_str_list._ascii.ob_base,
+ &_Py_ID(append),
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[23];
+ }
+_collections_abc_toplevel_consts_74_consts_9_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 22,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "MutableSequence.extend",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[45];
+ }
+_collections_abc_toplevel_consts_74_consts_9_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 44,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xe0\x0b\x11\x90\x54\x89\x3e\xdc\x15\x19\x98\x26\x93\x5c\x88\x46\xd8\x11\x17\xf2\x00\x01\x09\x1b\x88\x41\xd8\x0c\x10\x8f\x4b\x89\x4b\x98\x01\x8d\x4e\xf1\x03\x01\x09\x1b",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+_collections_abc_toplevel_consts_74_consts_9_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ &_Py_ID(self),
+ &_Py_ID(values),
+ (PyObject *)&_Py_SINGLETON(strings).ascii[118],
+ },
+ },
+};
+static
+ struct _PyCode_DEF(82)
+_collections_abc_toplevel_consts_74_consts_9 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 41,
+ },
+ .co_consts = & _collections_abc_toplevel_consts_74_consts_9_consts._object.ob_base.ob_base,
+ .co_names = & _collections_abc_toplevel_consts_74_consts_9_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 7 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 1146,
+ .co_nlocalsplus = 3,
+ .co_nlocals = 3,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 514,
+ .co_localsplusnames = & _collections_abc_toplevel_consts_74_consts_9_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_3_localspluskinds.ob_base.ob_base,
+ .co_filename = & _collections_abc_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(extend),
+ .co_qualname = & _collections_abc_toplevel_consts_74_consts_9_qualname._ascii.ob_base,
+ .co_linetable = & _collections_abc_toplevel_consts_74_consts_9_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x01\x7c\x00\x75\x00\x72\x0b\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x01\x7c\x01\x44\x00\x5d\x13\x00\x00\x7d\x02\x7c\x00\x6a\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x02\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x8c\x15\x04\x00\x79\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[154];
+ }
+_collections_abc_toplevel_consts_74_consts_10_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 153,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x53\x2e\x70\x6f\x70\x28\x5b\x69\x6e\x64\x65\x78\x5d\x29\x20\x2d\x3e\x20\x69\x74\x65\x6d\x20\x2d\x2d\x20\x72\x65\x6d\x6f\x76\x65\x20\x61\x6e\x64\x20\x72\x65\x74\x75\x72\x6e\x20\x69\x74\x65\x6d\x20\x61\x74\x20\x69\x6e\x64\x65\x78\x20\x28\x64\x65\x66\x61\x75\x6c\x74\x20\x6c\x61\x73\x74\x29\x2e\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x52\x61\x69\x73\x65\x20\x49\x6e\x64\x65\x78\x45\x72\x72\x6f\x72\x20\x69\x66\x20\x6c\x69\x73\x74\x20\x69\x73\x20\x65\x6d\x70\x74\x79\x20\x6f\x72\x20\x69\x6e\x64\x65\x78\x20\x69\x73\x20\x6f\x75\x74\x20\x6f\x66\x20\x72\x61\x6e\x67\x65\x2e\x0a\x20\x20\x20\x20\x20\x20\x20\x20",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+_collections_abc_toplevel_consts_74_consts_10_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & _collections_abc_toplevel_consts_74_consts_10_consts_0._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[20];
+ }
+_collections_abc_toplevel_consts_74_consts_10_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 19,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "MutableSequence.pop",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[26];
+ }
+_collections_abc_toplevel_consts_74_consts_10_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 25,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf0\x08\x00\x0d\x11\x90\x15\x89\x4b\x88\x01\xd8\x0c\x10\x90\x15\x88\x4b\xd8\x0f\x10\x88\x08",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+_collections_abc_toplevel_consts_74_consts_10_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ &_Py_ID(self),
+ & const_str_index._ascii.ob_base,
+ (PyObject *)&_Py_SINGLETON(strings).ascii[118],
+ },
+ },
+};
+static
+ struct _PyCode_DEF(22)
+_collections_abc_toplevel_consts_74_consts_10 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 11,
+ },
+ .co_consts = & _collections_abc_toplevel_consts_74_consts_10_consts._object.ob_base.ob_base,
+ .co_names = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 5 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 2,
+ .co_firstlineno = 1153,
+ .co_nlocalsplus = 3,
+ .co_nlocals = 3,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 515,
+ .co_localsplusnames = & _collections_abc_toplevel_consts_74_consts_10_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_3_localspluskinds.ob_base.ob_base,
+ .co_filename = & _collections_abc_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = & const_str_pop._ascii.ob_base,
+ .co_qualname = & _collections_abc_toplevel_consts_74_consts_10_qualname._ascii.ob_base,
+ .co_linetable = & _collections_abc_toplevel_consts_74_consts_10_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x00\x7c\x01\x19\x00\x00\x00\x7d\x02\x7c\x00\x7c\x01\x3d\x00\x7c\x02\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[119];
+ }
+_collections_abc_toplevel_consts_74_consts_11_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 118,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x53\x2e\x72\x65\x6d\x6f\x76\x65\x28\x76\x61\x6c\x75\x65\x29\x20\x2d\x2d\x20\x72\x65\x6d\x6f\x76\x65\x20\x66\x69\x72\x73\x74\x20\x6f\x63\x63\x75\x72\x72\x65\x6e\x63\x65\x20\x6f\x66\x20\x76\x61\x6c\x75\x65\x2e\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x52\x61\x69\x73\x65\x20\x56\x61\x6c\x75\x65\x45\x72\x72\x6f\x72\x20\x69\x66\x20\x74\x68\x65\x20\x76\x61\x6c\x75\x65\x20\x69\x73\x20\x6e\x6f\x74\x20\x70\x72\x65\x73\x65\x6e\x74\x2e\x0a\x20\x20\x20\x20\x20\x20\x20\x20",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+_collections_abc_toplevel_consts_74_consts_11_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & _collections_abc_toplevel_consts_74_consts_11_consts_0._ascii.ob_base,
+ Py_None,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+_collections_abc_toplevel_consts_74_consts_11_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & const_str_index._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[23];
+ }
+_collections_abc_toplevel_consts_74_consts_11_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 22,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "MutableSequence.remove",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[22];
+ }
+_collections_abc_toplevel_consts_74_consts_11_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 21,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf0\x08\x00\x0d\x11\x90\x14\x97\x1a\x91\x1a\x98\x45\xd3\x11\x22\xd1\x0c\x23",
+};
+static
+ struct _PyCode_DEF(40)
+_collections_abc_toplevel_consts_74_consts_11 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 20,
+ },
+ .co_consts = & _collections_abc_toplevel_consts_74_consts_11_consts._object.ob_base.ob_base,
+ .co_names = & _collections_abc_toplevel_consts_74_consts_11_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 6 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 1161,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 2,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 516,
+ .co_localsplusnames = & importlib__bootstrap_toplevel_consts_30_consts_11_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_14_consts_2_localspluskinds.ob_base.ob_base,
+ .co_filename = & _collections_abc_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = & const_str_remove._ascii.ob_base,
+ .co_qualname = & _collections_abc_toplevel_consts_74_consts_11_qualname._ascii.ob_base,
+ .co_linetable = & _collections_abc_toplevel_consts_74_consts_11_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x00\x7c\x00\x6a\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\xab\x01\x00\x00\x00\x00\x00\x00\x3d\x00\x79\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+_collections_abc_toplevel_consts_74_consts_12_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ &_Py_ID(extend),
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[25];
+ }
+_collections_abc_toplevel_consts_74_consts_12_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 24,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "MutableSequence.__iadd__",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[20];
+ }
+_collections_abc_toplevel_consts_74_consts_12_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 19,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xd8\x08\x0c\x8f\x0b\x89\x0b\x90\x46\xd4\x08\x1b\xd8\x0f\x13\x88\x0b",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+_collections_abc_toplevel_consts_74_consts_12_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ &_Py_ID(self),
+ &_Py_ID(values),
+ },
+ },
+};
+static
+ struct _PyCode_DEF(40)
+_collections_abc_toplevel_consts_74_consts_12 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 20,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_1_consts._object.ob_base.ob_base,
+ .co_names = & _collections_abc_toplevel_consts_74_consts_12_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 5 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 3,
+ .co_firstlineno = 1167,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 2,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 517,
+ .co_localsplusnames = & _collections_abc_toplevel_consts_74_consts_12_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_14_consts_2_localspluskinds.ob_base.ob_base,
+ .co_filename = & _collections_abc_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__iadd__),
+ .co_qualname = & _collections_abc_toplevel_consts_74_consts_12_qualname._ascii.ob_base,
+ .co_linetable = & _collections_abc_toplevel_consts_74_consts_12_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x00\x6a\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x7c\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[15];
+ }_object;
+ }
+_collections_abc_toplevel_consts_74_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 15,
+ },
+ .ob_item = {
+ & const_str_MutableSequence._ascii.ob_base,
+ & _collections_abc_toplevel_consts_74_consts_1._ascii.ob_base,
+ (PyObject *)& _Py_SINGLETON(tuple_empty),
+ & _collections_abc_toplevel_consts_74_consts_3.ob_base.ob_base,
+ & _collections_abc_toplevel_consts_74_consts_4.ob_base.ob_base,
+ & _collections_abc_toplevel_consts_74_consts_5.ob_base.ob_base,
+ & _collections_abc_toplevel_consts_74_consts_6.ob_base.ob_base,
+ & _collections_abc_toplevel_consts_74_consts_7.ob_base.ob_base,
+ & _collections_abc_toplevel_consts_74_consts_8.ob_base.ob_base,
+ & _collections_abc_toplevel_consts_74_consts_9.ob_base.ob_base,
+ & _collections_abc_toplevel_consts_74_consts_10.ob_base.ob_base,
+ & _collections_abc_toplevel_consts_74_consts_11.ob_base.ob_base,
+ & _collections_abc_toplevel_consts_74_consts_12.ob_base.ob_base,
+ Py_None,
+ & codecs_toplevel_consts_28_consts_19._object.ob_base.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[16];
+ }_object;
+ }
+_collections_abc_toplevel_consts_74_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 16,
+ },
+ .ob_item = {
+ &_Py_ID(__name__),
+ &_Py_ID(__module__),
+ &_Py_ID(__qualname__),
+ &_Py_ID(__doc__),
+ &_Py_ID(__slots__),
+ & const_str_abstractmethod._ascii.ob_base,
+ &_Py_ID(__setitem__),
+ &_Py_ID(__delitem__),
+ & const_str_insert._ascii.ob_base,
+ &_Py_ID(append),
+ &_Py_ID(clear),
+ &_Py_ID(reverse),
+ &_Py_ID(extend),
+ & const_str_pop._ascii.ob_base,
+ & const_str_remove._ascii.ob_base,
+ &_Py_ID(__iadd__),
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[108];
+ }
+_collections_abc_toplevel_consts_74_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 107,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x84\x00\xf1\x02\x04\x05\x08\xf0\x0c\x00\x11\x13\x80\x49\xe0\x05\x13\xf1\x02\x01\x05\x19\xf3\x03\x00\x06\x14\xf0\x02\x01\x05\x19\xf0\x06\x00\x06\x14\xf1\x02\x01\x05\x19\xf3\x03\x00\x06\x14\xf0\x02\x01\x05\x19\xf0\x06\x00\x06\x14\xf1\x02\x02\x05\x19\xf3\x03\x00\x06\x14\xf0\x02\x02\x05\x19\xf2\x08\x02\x05\x26\xf2\x08\x06\x05\x11\xf2\x10\x04\x05\x38\xf2\x0c\x05\x05\x1b\xf3\x0e\x06\x05\x11\xf2\x10\x04\x05\x24\xf3\x0c\x02\x05\x14",
+};
+static
+ struct _PyCode_DEF(112)
+_collections_abc_toplevel_consts_74 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 56,
+ },
+ .co_consts = & _collections_abc_toplevel_consts_74_consts._object.ob_base.ob_base,
+ .co_names = & _collections_abc_toplevel_consts_74_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 0,
+ .co_argcount = 0,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 2 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 2,
+ .co_firstlineno = 1106,
+ .co_nlocalsplus = 0,
+ .co_nlocals = 0,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 518,
+ .co_localsplusnames = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_filename = & _collections_abc_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = & const_str_MutableSequence._ascii.ob_base,
+ .co_qualname = & const_str_MutableSequence._ascii.ob_base,
+ .co_linetable = & _collections_abc_toplevel_consts_74_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x65\x00\x5a\x01\x64\x00\x5a\x02\x64\x01\x5a\x03\x64\x02\x5a\x04\x65\x05\x64\x03\x84\x00\xab\x00\x00\x00\x00\x00\x00\x00\x5a\x06\x65\x05\x64\x04\x84\x00\xab\x00\x00\x00\x00\x00\x00\x00\x5a\x07\x65\x05\x64\x05\x84\x00\xab\x00\x00\x00\x00\x00\x00\x00\x5a\x08\x64\x06\x84\x00\x5a\x09\x64\x07\x84\x00\x5a\x0a\x64\x08\x84\x00\x5a\x0b\x64\x09\x84\x00\x5a\x0c\x64\x0e\x64\x0a\x84\x01\x5a\x0d\x64\x0b\x84\x00\x5a\x0e\x64\x0c\x84\x00\x5a\x0f\x79\x0d",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[76];
+ }_object;
+ }
+_collections_abc_toplevel_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 76,
+ },
+ .ob_item = {
+ & _collections_abc_toplevel_consts_0._ascii.ob_base,
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 0],
+ & _collections_abc_toplevel_consts_2._object.ob_base.ob_base,
+ Py_None,
+ Py_Ellipsis,
+ & _collections_abc_toplevel_consts_5.ob_base.ob_base,
+ & _collections_abc_toplevel_consts_6._object.ob_base.ob_base,
+ & _collections_abc_toplevel_consts_7._ascii.ob_base,
+ (PyObject *)&_Py_SINGLETON(bytes_empty),
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 1],
+ & const_int_1000.ob_base,
+ &_Py_STR(empty),
+ (PyObject *)& _Py_SINGLETON(tuple_empty),
+ & _collections_abc_toplevel_consts_13.ob_base.ob_base,
+ & _collections_abc_toplevel_consts_14.ob_base.ob_base,
+ & _collections_abc_toplevel_consts_15.ob_base.ob_base,
+ & _collections_abc_toplevel_consts_16.ob_base.ob_base,
+ & _collections_abc_toplevel_consts_17.ob_base.ob_base,
+ & const_str_Hashable._ascii.ob_base,
+ & abc_toplevel_consts_17._object.ob_base.ob_base,
+ & _collections_abc_toplevel_consts_20.ob_base.ob_base,
+ & const_str_Awaitable._ascii.ob_base,
+ & _collections_abc_toplevel_consts_22.ob_base.ob_base,
+ & const_str_Coroutine._ascii.ob_base,
+ & _collections_abc_toplevel_consts_24.ob_base.ob_base,
+ & const_str_AsyncIterable._ascii.ob_base,
+ & _collections_abc_toplevel_consts_26.ob_base.ob_base,
+ & const_str_AsyncIterator._ascii.ob_base,
+ & _collections_abc_toplevel_consts_28.ob_base.ob_base,
+ & const_str_AsyncGenerator._ascii.ob_base,
+ & _collections_abc_toplevel_consts_30.ob_base.ob_base,
+ & const_str_Iterable._ascii.ob_base,
+ & _collections_abc_toplevel_consts_32.ob_base.ob_base,
+ & const_str_Iterator._ascii.ob_base,
+ & _collections_abc_toplevel_consts_34.ob_base.ob_base,
+ & const_str_Reversible._ascii.ob_base,
+ & _collections_abc_toplevel_consts_36.ob_base.ob_base,
+ & const_str_Generator._ascii.ob_base,
+ & _collections_abc_toplevel_consts_38.ob_base.ob_base,
+ & const_str_Sized._ascii.ob_base,
+ & _collections_abc_toplevel_consts_40.ob_base.ob_base,
+ & const_str_Container._ascii.ob_base,
+ & _collections_abc_toplevel_consts_42.ob_base.ob_base,
+ & const_str_Collection._ascii.ob_base,
+ & _collections_abc_toplevel_consts_44.ob_base.ob_base,
+ & const_str_Buffer._ascii.ob_base,
+ & _collections_abc_toplevel_consts_46.ob_base.ob_base,
+ & const_str__CallableGenericAlias._ascii.ob_base,
+ & _collections_abc_toplevel_consts_48.ob_base.ob_base,
+ & _collections_abc_toplevel_consts_49.ob_base.ob_base,
+ & _collections_abc_toplevel_consts_50.ob_base.ob_base,
+ & const_str_Callable._ascii.ob_base,
+ & _collections_abc_toplevel_consts_52.ob_base.ob_base,
+ & const_str_Set._ascii.ob_base,
+ & _collections_abc_toplevel_consts_54.ob_base.ob_base,
+ & const_str_MutableSet._ascii.ob_base,
+ & _collections_abc_toplevel_consts_56.ob_base.ob_base,
+ & const_str_Mapping._ascii.ob_base,
+ & _collections_abc_toplevel_consts_58.ob_base.ob_base,
+ & const_str_MappingView._ascii.ob_base,
+ & _collections_abc_toplevel_consts_60.ob_base.ob_base,
+ & const_str_KeysView._ascii.ob_base,
+ & _collections_abc_toplevel_consts_62.ob_base.ob_base,
+ & const_str_ItemsView._ascii.ob_base,
+ & _collections_abc_toplevel_consts_64.ob_base.ob_base,
+ & const_str_ValuesView._ascii.ob_base,
+ & _collections_abc_toplevel_consts_66.ob_base.ob_base,
+ & const_str_MutableMapping._ascii.ob_base,
+ & _collections_abc_toplevel_consts_68.ob_base.ob_base,
+ & const_str_Sequence._ascii.ob_base,
+ & _collections_abc_toplevel_consts_70.ob_base.ob_base,
+ & const_str__DeprecateByteStringMeta._ascii.ob_base,
+ & _collections_abc_toplevel_consts_72.ob_base.ob_base,
+ & const_str_ByteString._ascii.ob_base,
+ & _collections_abc_toplevel_consts_74.ob_base.ob_base,
+ & const_str_MutableSequence._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[13];
+ }
+const_str_EllipsisType = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 12,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "EllipsisType",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[15];
+ }
+const_str_bytes_iterator = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 14,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "bytes_iterator",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[19];
+ }
+const_str_bytearray_iterator = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 18,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "bytearray_iterator",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[17];
+ }
+const_str_dict_keyiterator = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 16,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "dict_keyiterator",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[19];
+ }
+const_str_dict_valueiterator = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 18,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "dict_valueiterator",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[18];
+ }
+const_str_dict_itemiterator = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 17,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "dict_itemiterator",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[14];
+ }
+const_str_list_iterator = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 13,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "list_iterator",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[21];
+ }
+const_str_list_reverseiterator = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 20,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "list_reverseiterator",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[15];
+ }
+const_str_range_iterator = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 14,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "range_iterator",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[19];
+ }
+const_str_longrange_iterator = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 18,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "longrange_iterator",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[13];
+ }
+const_str_set_iterator = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 12,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "set_iterator",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[13];
+ }
+const_str_str_iterator = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 12,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "str_iterator",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[15];
+ }
+const_str_tuple_iterator = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 14,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "tuple_iterator",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[4];
+ }
+const_str_zip = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 3,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "zip",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[13];
+ }
+const_str_zip_iterator = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 12,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "zip_iterator",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[10];
+ }
+const_str_dict_keys = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 9,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "dict_keys",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[12];
+ }
+const_str_dict_values = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 11,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "dict_values",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[11];
+ }
+const_str_dict_items = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 10,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "dict_items",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[13];
+ }
+const_str_mappingproxy = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 12,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "mappingproxy",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[10];
+ }
+const_str_generator = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 9,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "generator",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[10];
+ }
+const_str_coroutine = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 9,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "coroutine",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[16];
+ }
+const_str_async_generator = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 15,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "async_generator",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[85];
+ }_object;
+ }
+_collections_abc_toplevel_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 85,
+ },
+ .ob_item = {
+ &_Py_ID(__doc__),
+ & const_str_abc._ascii.ob_base,
+ & const_str_ABCMeta._ascii.ob_base,
+ & const_str_abstractmethod._ascii.ob_base,
+ & const_str_sys._ascii.ob_base,
+ &_Py_ID(type),
+ & const_str_list._ascii.ob_base,
+ & const_str_int._ascii.ob_base,
+ & const_str_GenericAlias._ascii.ob_base,
+ & const_str_EllipsisType._ascii.ob_base,
+ & const_str__f._ascii.ob_base,
+ & const_str_FunctionType._ascii.ob_base,
+ &_Py_ID(__all__),
+ &_Py_ID(__name__),
+ &_Py_ID(iter),
+ & const_str_bytes_iterator._ascii.ob_base,
+ & const_str_bytearray._ascii.ob_base,
+ & const_str_bytearray_iterator._ascii.ob_base,
+ &_Py_ID(keys),
+ & const_str_dict_keyiterator._ascii.ob_base,
+ &_Py_ID(values),
+ & const_str_dict_valueiterator._ascii.ob_base,
+ &_Py_ID(items),
+ & const_str_dict_itemiterator._ascii.ob_base,
+ & const_str_list_iterator._ascii.ob_base,
+ &_Py_ID(reversed),
+ & const_str_list_reverseiterator._ascii.ob_base,
+ & const_str_range._ascii.ob_base,
+ & const_str_range_iterator._ascii.ob_base,
+ & const_str_longrange_iterator._ascii.ob_base,
+ & const_str_set._ascii.ob_base,
+ & const_str_set_iterator._ascii.ob_base,
+ & const_str_str_iterator._ascii.ob_base,
+ & const_str_tuple_iterator._ascii.ob_base,
+ & const_str_zip._ascii.ob_base,
+ & const_str_zip_iterator._ascii.ob_base,
+ & const_str_dict_keys._ascii.ob_base,
+ & const_str_dict_values._ascii.ob_base,
+ & const_str_dict_items._ascii.ob_base,
+ &_Py_ID(__dict__),
+ & const_str_mappingproxy._ascii.ob_base,
+ & const_str_generator._ascii.ob_base,
+ & const_str__coro._ascii.ob_base,
+ & const_str_coroutine._ascii.ob_base,
+ &_Py_ID(close),
+ & const_str__ag._ascii.ob_base,
+ & const_str_async_generator._ascii.ob_base,
+ & const_str__check_methods._ascii.ob_base,
+ & const_str_Hashable._ascii.ob_base,
+ & const_str_Awaitable._ascii.ob_base,
+ & const_str_Coroutine._ascii.ob_base,
+ & const_str_register._ascii.ob_base,
+ & const_str_AsyncIterable._ascii.ob_base,
+ & const_str_AsyncIterator._ascii.ob_base,
+ & const_str_AsyncGenerator._ascii.ob_base,
+ & const_str_Iterable._ascii.ob_base,
+ & const_str_Iterator._ascii.ob_base,
+ & const_str_Reversible._ascii.ob_base,
+ & const_str_Generator._ascii.ob_base,
+ & const_str_Sized._ascii.ob_base,
+ & const_str_Container._ascii.ob_base,
+ & const_str_Collection._ascii.ob_base,
+ & const_str_Buffer._ascii.ob_base,
+ & const_str__CallableGenericAlias._ascii.ob_base,
+ & const_str__is_param_expr._ascii.ob_base,
+ & const_str__type_repr._ascii.ob_base,
+ & const_str_Callable._ascii.ob_base,
+ & const_str_Set._ascii.ob_base,
+ & const_str_frozenset._ascii.ob_base,
+ & const_str_MutableSet._ascii.ob_base,
+ & const_str_Mapping._ascii.ob_base,
+ & const_str_MappingView._ascii.ob_base,
+ & const_str_KeysView._ascii.ob_base,
+ & const_str_ItemsView._ascii.ob_base,
+ & const_str_ValuesView._ascii.ob_base,
+ & const_str_MutableMapping._ascii.ob_base,
+ &_Py_ID(dict),
+ & const_str_Sequence._ascii.ob_base,
+ & const_str_tuple._ascii.ob_base,
+ & const_str_str._ascii.ob_base,
+ & const_str_memoryview._ascii.ob_base,
+ & const_str__DeprecateByteStringMeta._ascii.ob_base,
+ & const_str_ByteString._ascii.ob_base,
+ &_Py_ID(bytes),
+ & const_str_MutableSequence._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[1282];
+ }
+_collections_abc_toplevel_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 1281,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\xf0\x03\x01\x01\x01\xf1\x08\x03\x01\x04\xf7\x3e\x00\x01\x28\xdb\x00\x0a\xe1\x0f\x13\x90\x44\x98\x13\x91\x49\x8b\x7f\x80\x0c\xd9\x0f\x13\x90\x43\x8b\x79\x80\x0c\xda\x00\x0e\xd9\x0f\x13\x90\x42\x8b\x78\x80\x0c\xd8\x04\x06\xf2\x04\x09\x0b\x0d\x80\x07\xf0\x1e\x00\x0c\x1d\x80\x08\xf1\x12\x00\x12\x16\x91\x64\x98\x33\x93\x69\x93\x1f\x80\x0e\xd9\x15\x19\x99\x24\x99\x79\x9b\x7b\xd3\x1a\x2b\xd3\x15\x2c\xd0\x00\x12\xe1\x13\x17\x99\x04\x98\x52\x9f\x57\x99\x57\x9b\x59\x9b\x0f\xd3\x13\x28\xd0\x00\x10\xd9\x15\x19\x99\x24\x98\x72\x9f\x79\x99\x79\x9b\x7b\xd3\x1a\x2b\xd3\x15\x2c\xd0\x00\x12\xd9\x14\x18\x99\x14\x98\x62\x9f\x68\x99\x68\x9b\x6a\xd3\x19\x29\xd3\x14\x2a\xd0\x00\x11\xd9\x10\x14\x91\x54\x98\x22\x93\x58\x93\x0e\x80\x0d\xd9\x17\x1b\x99\x44\xa1\x18\xa8\x22\xa3\x1c\xd3\x1c\x2e\xd3\x17\x2f\xd0\x00\x14\xd9\x11\x15\x91\x64\x99\x35\xa0\x11\x9b\x38\x93\x6e\xd3\x11\x25\x80\x0e\xd9\x15\x19\x99\x24\x99\x75\xa0\x51\xa8\x24\xa1\x59\xd3\x1f\x2f\xd3\x1a\x30\xd3\x15\x31\xd0\x00\x12\xd9\x0f\x13\x91\x44\x99\x13\x9b\x15\x93\x4b\xd3\x0f\x20\x80\x0c\xd9\x0f\x13\x91\x44\x98\x12\x93\x48\x8b\x7e\x80\x0c\xd9\x11\x15\x91\x64\x98\x32\x93\x68\x93\x1e\x80\x0e\xd9\x0f\x13\x91\x44\x99\x13\x9b\x15\x93\x4b\xd3\x0f\x20\x80\x0c\xe1\x0c\x10\x90\x12\x97\x17\x91\x17\x93\x19\x8b\x4f\x80\x09\xd9\x0e\x12\x90\x32\x97\x39\x91\x39\x93\x3b\xd3\x0e\x1f\x80\x0b\xd9\x0d\x11\x90\x22\x97\x28\x91\x28\x93\x2a\xd3\x0d\x1d\x80\x0a\xe1\x0f\x13\x90\x44\x97\x4d\x91\x4d\xd3\x0f\x22\x80\x0c\xd9\x0c\x10\x92\x2f\xd3\x11\x24\xd3\x0c\x25\x80\x09\xe2\x00\x17\xd9\x08\x0d\x8b\x07\x80\x05\xd9\x0c\x10\x90\x15\x8b\x4b\x80\x09\xd8\x00\x05\x87\x0b\x81\x0b\x84\x0d\xd8\x04\x09\xe2\x00\x16\xd9\x06\x09\x83\x65\x80\x03\xd9\x12\x16\x90\x73\x93\x29\x80\x0f\xd8\x04\x07\xf2\x0a\x0a\x01\x10\xf4\x18\x0c\x01\x1e\x98\x17\xf5\x00\x0c\x01\x1e\xf4\x1e\x0e\x01\x32\x98\x27\xf5\x00\x0e\x01\x32\xf4\x22\x26\x01\x1e\x90\x09\xf4\x00\x26\x01\x1e\xf0\x52\x01\x00\x01\x0a\xd7\x00\x12\xd1\x00\x12\x90\x39\xd4\x00\x1d\xf4\x06\x0e\x01\x32\x98\x67\xf5\x00\x0e\x01\x32\xf4\x22\x10\x01\x1e\x90\x4d\xf4\x00\x10\x01\x1e\xf4\x26\x2d\x01\x1e\x90\x5d\xf4\x00\x2d\x01\x1e\xf0\x60\x01\x00\x01\x0f\xd7\x00\x17\xd1\x00\x17\x98\x0f\xd4\x00\x28\xf4\x06\x0f\x01\x32\x98\x17\xf5\x00\x0f\x01\x32\xf4\x24\x10\x01\x1e\x88\x78\xf4\x00\x10\x01\x1e\xf0\x26\x00\x01\x09\xd7\x00\x11\xd1\x00\x11\x90\x2e\xd4\x00\x21\xd8\x00\x08\xd7\x00\x11\xd1\x00\x11\xd0\x12\x24\xd4\x00\x25\xe0\x00\x08\xd7\x00\x11\xd1\x00\x11\xd0\x12\x22\xd4\x00\x23\xd8\x00\x08\xd7\x00\x11\xd1\x00\x11\xd0\x12\x24\xd4\x00\x25\xd8\x00\x08\xd7\x00\x11\xd1\x00\x11\xd0\x12\x23\xd4\x00\x24\xd8\x00\x08\xd7\x00\x11\xd1\x00\x11\x90\x2d\xd4\x00\x20\xd8\x00\x08\xd7\x00\x11\xd1\x00\x11\xd0\x12\x26\xd4\x00\x27\xd8\x00\x08\xd7\x00\x11\xd1\x00\x11\x90\x2e\xd4\x00\x21\xd8\x00\x08\xd7\x00\x11\xd1\x00\x11\xd0\x12\x24\xd4\x00\x25\xd8\x00\x08\xd7\x00\x11\xd1\x00\x11\x90\x2c\xd4\x00\x1f\xd8\x00\x08\xd7\x00\x11\xd1\x00\x11\x90\x2c\xd4\x00\x1f\xd8\x00\x08\xd7\x00\x11\xd1\x00\x11\x90\x2e\xd4\x00\x21\xd8\x00\x08\xd7\x00\x11\xd1\x00\x11\x90\x2c\xd4\x00\x1f\xf4\x06\x0d\x01\x1e\x90\x18\xf4\x00\x0d\x01\x1e\xf4\x20\x2d\x01\x1e\x90\x08\xf4\x00\x2d\x01\x1e\xf0\x60\x01\x00\x01\x0a\xd7\x00\x12\xd1\x00\x12\x90\x39\xd4\x00\x1d\xf4\x06\x0c\x01\x1e\x90\x67\xf5\x00\x0c\x01\x1e\xf4\x1e\x0e\x01\x32\x98\x27\xf5\x00\x0e\x01\x32\xf4\x22\x08\x01\x1e\x90\x15\x98\x08\xa0\x29\xf4\x00\x08\x01\x1e\xf4\x16\x0c\x01\x1e\x90\x77\xf5\x00\x0c\x01\x1e\xf4\x1e\x34\x01\x40\x01\x98\x4c\xf4\x00\x34\x01\x40\x01\xf2\x6c\x01\x0a\x01\x56\x01\xf2\x18\x0f\x01\x15\xf4\x24\x0e\x01\x3b\x98\x17\xf5\x00\x0e\x01\x3b\xf4\x28\x47\x02\x01\x11\x88\x2a\xf4\x00\x47\x02\x01\x11\xf0\x54\x04\x00\x01\x04\x87\x0c\x81\x0c\x88\x59\xd4\x00\x17\xf4\x06\x4d\x01\x01\x14\x90\x13\xf4\x00\x4d\x01\x01\x14\xf0\x60\x02\x00\x01\x0b\xd7\x00\x13\xd1\x00\x13\x90\x43\xd4\x00\x18\xf4\x0a\x31\x01\x18\x88\x6a\xf4\x00\x31\x01\x18\xf0\x66\x01\x00\x01\x08\xd7\x00\x10\xd1\x00\x10\x90\x1c\xd4\x00\x1e\xf4\x06\x0d\x01\x32\x90\x25\xf4\x00\x0d\x01\x32\xf4\x20\x0c\x01\x21\x88\x7b\x98\x43\xf4\x00\x0c\x01\x21\xf0\x1e\x00\x01\x09\xd7\x00\x11\xd1\x00\x11\x90\x29\xd4\x00\x1c\xf4\x06\x13\x01\x2c\x90\x0b\x98\x53\xf4\x00\x13\x01\x2c\xf0\x2c\x00\x01\x0a\xd7\x00\x12\xd1\x00\x12\x90\x3a\xd4\x00\x1e\xf4\x06\x0d\x01\x25\x90\x1b\x98\x6a\xf4\x00\x0d\x01\x25\xf0\x20\x00\x01\x0b\xd7\x00\x13\xd1\x00\x13\x90\x4b\xd4\x00\x20\xf4\x06\x4f\x01\x01\x17\x90\x57\xf4\x00\x4f\x01\x01\x17\xf0\x64\x02\x00\x01\x0f\xd7\x00\x17\xd1\x00\x17\x98\x04\xd4\x00\x1d\xf4\x0a\x3d\x01\x40\x01\x88\x7a\x98\x3a\xf4\x00\x3d\x01\x40\x01\xf0\x7e\x01\x00\x01\x09\xd7\x00\x11\xd1\x00\x11\x90\x25\xd4\x00\x18\xd8\x00\x08\xd7\x00\x11\xd1\x00\x11\x90\x23\xd4\x00\x16\xd8\x00\x08\xd7\x00\x11\xd1\x00\x11\x90\x25\xd4\x00\x18\xd8\x00\x08\xd7\x00\x11\xd1\x00\x11\x90\x2a\xd4\x00\x1d\xf4\x04\x12\x01\x33\x98\x77\xf4\x00\x12\x01\x33\xf4\x28\x06\x01\x13\x90\x18\xd0\x25\x3d\xf5\x00\x06\x01\x13\xf0\x10\x00\x01\x0b\xd7\x00\x13\xd1\x00\x13\x90\x45\xd4\x00\x1a\xd8\x00\x0a\xd7\x00\x13\xd1\x00\x13\x90\x49\xd4\x00\x1e\xf4\x06\x3f\x01\x14\x90\x68\xf4\x00\x3f\x01\x14\xf0\x44\x02\x00\x01\x10\xd7\x00\x18\xd1\x00\x18\x98\x14\xd4\x00\x1e\xd8\x00\x0f\xd7\x00\x18\xd1\x00\x18\x98\x19\xd5\x00\x23",
+};
+static
+ struct _PyCode_DEF(2650)
+_collections_abc_toplevel = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 1325,
+ },
+ .co_consts = & _collections_abc_toplevel_consts._object.ob_base.ob_base,
+ .co_names = & _collections_abc_toplevel_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 0,
+ .co_argcount = 0,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 8 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 8,
+ .co_firstlineno = 1,
+ .co_nlocalsplus = 0,
+ .co_nlocals = 0,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 519,
+ .co_localsplusnames = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_filename = & _collections_abc_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_STR(anon_module),
+ .co_qualname = &_Py_STR(anon_module),
+ .co_linetable = & _collections_abc_toplevel_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x64\x00\x5a\x00\x64\x01\x64\x02\x6c\x01\x6d\x02\x5a\x02\x6d\x03\x5a\x03\x01\x00\x64\x01\x64\x03\x6c\x04\x5a\x04\x02\x00\x65\x05\x65\x06\x65\x07\x19\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x5a\x08\x02\x00\x65\x05\x64\x04\xab\x01\x00\x00\x00\x00\x00\x00\x5a\x09\x64\x05\x84\x00\x5a\x0a\x02\x00\x65\x05\x65\x0a\xab\x01\x00\x00\x00\x00\x00\x00\x5a\x0b\x5b\x0a\x67\x00\x64\x06\xa2\x01\x5a\x0c\x64\x07\x5a\x0d\x02\x00\x65\x05\x02\x00\x65\x0e\x64\x08\xab\x01\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x5a\x0f\x02\x00\x65\x05\x02\x00\x65\x0e\x02\x00\x65\x10\xab\x00\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x5a\x11\x02\x00\x65\x05\x02\x00\x65\x0e\x69\x00\x6a\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x5a\x13\x02\x00\x65\x05\x02\x00\x65\x0e\x69\x00\x6a\x29\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x5a\x15\x02\x00\x65\x05\x02\x00\x65\x0e\x69\x00\x6a\x2d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x5a\x17\x02\x00\x65\x05\x02\x00\x65\x0e\x67\x00\xab\x01\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x5a\x18\x02\x00\x65\x05\x02\x00\x65\x0e\x02\x00\x65\x19\x67\x00\xab\x01\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x5a\x1a\x02\x00\x65\x05\x02\x00\x65\x0e\x02\x00\x65\x1b\x64\x01\xab\x01\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x5a\x1c\x02\x00\x65\x05\x02\x00\x65\x0e\x02\x00\x65\x1b\x64\x09\x64\x0a\x7a\x03\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x5a\x1d\x02\x00\x65\x05\x02\x00\x65\x0e\x02\x00\x65\x1e\xab\x00\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x5a\x1f\x02\x00\x65\x05\x02\x00\x65\x0e\x64\x0b\xab\x01\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x5a\x20\x02\x00\x65\x05\x02\x00\x65\x0e\x64\x0c\xab\x01\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x5a\x21\x02\x00\x65\x05\x02\x00\x65\x0e\x02\x00\x65\x22\xab\x00\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x5a\x23\x02\x00\x65\x05\x69\x00\x6a\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x5a\x24\x02\x00\x65\x05\x69\x00\x6a\x29\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x5a\x25\x02\x00\x65\x05\x69\x00\x6a\x2d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x5a\x26\x02\x00\x65\x05\x65\x05\x6a\x4e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x5a\x28\x02\x00\x65\x05\x02\x00\x64\x0d\x84\x00\xab\x00\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x5a\x29\x64\x0e\x84\x00\x5a\x2a\x02\x00\x65\x2a\xab\x00\x00\x00\x00\x00\x00\x00\x5a\x2a\x02\x00\x65\x05\x65\x2a\xab\x01\x00\x00\x00\x00\x00\x00\x5a\x2b\x65\x2a\x6a\x59\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x01\x00\x5b\x2a\x64\x0f\x84\x00\x5a\x2d\x02\x00\x65\x2d\xab\x00\x00\x00\x00\x00\x00\x00\x5a\x2d\x02\x00\x65\x05\x65\x2d\xab\x01\x00\x00\x00\x00\x00\x00\x5a\x2e\x5b\x2d\x64\x10\x84\x00\x5a\x2f\x02\x00\x47\x00\x64\x11\x84\x00\x64\x12\x65\x02\xac\x13\xab\x03\x00\x00\x00\x00\x00\x00\x5a\x30\x02\x00\x47\x00\x64\x14\x84\x00\x64\x15\x65\x02\xac\x13\xab\x03\x00\x00\x00\x00\x00\x00\x5a\x31\x02\x00\x47\x00\x64\x16\x84\x00\x64\x17\x65\x31\xab\x03\x00\x00\x00\x00\x00\x00\x5a\x32\x65\x32\x6a\x67\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\x2b\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x02\x00\x47\x00\x64\x18\x84\x00\x64\x19\x65\x02\xac\x13\xab\x03\x00\x00\x00\x00\x00\x00\x5a\x34\x02\x00\x47\x00\x64\x1a\x84\x00\x64\x1b\x65\x34\xab\x03\x00\x00\x00\x00\x00\x00\x5a\x35\x02\x00\x47\x00\x64\x1c\x84\x00\x64\x1d\x65\x35\xab\x03\x00\x00\x00\x00\x00\x00\x5a\x36\x65\x36\x6a\x67\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\x2e\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x02\x00\x47\x00\x64\x1e\x84\x00\x64\x1f\x65\x02\xac\x13\xab\x03\x00\x00\x00\x00\x00\x00\x5a\x37\x02\x00\x47\x00\x64\x20\x84\x00\x64\x21\x65\x37\xab\x03\x00\x00\x00\x00\x00\x00\x5a\x38\x65\x38\x6a\x67\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\x0f\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x65\x38\x6a\x67\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\x11\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x65\x38\x6a\x67\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\x13\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x65\x38\x6a\x67\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\x15\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x65\x38\x6a\x67\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\x17\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x65\x38\x6a\x67\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\x18\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x65\x38\x6a\x67\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\x1a\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x65\x38\x6a\x67\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\x1c\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x65\x38\x6a\x67\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\x1d\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x65\x38\x6a\x67\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\x1f\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x65\x38\x6a\x67\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\x20\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x65\x38\x6a\x67\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\x21\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x65\x38\x6a\x67\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\x23\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x02\x00\x47\x00\x64\x22\x84\x00\x64\x23\x65\x37\xab\x03\x00\x00\x00\x00\x00\x00\x5a\x39\x02\x00\x47\x00\x64\x24\x84\x00\x64\x25\x65\x38\xab\x03\x00\x00\x00\x00\x00\x00\x5a\x3a\x65\x3a\x6a\x67\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\x29\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x02\x00\x47\x00\x64\x26\x84\x00\x64\x27\x65\x02\xac\x13\xab\x03\x00\x00\x00\x00\x00\x00\x5a\x3b\x02\x00\x47\x00\x64\x28\x84\x00\x64\x29\x65\x02\xac\x13\xab\x03\x00\x00\x00\x00\x00\x00\x5a\x3c\x02\x00\x47\x00\x64\x2a\x84\x00\x64\x2b\x65\x3b\x65\x37\x65\x3c\xab\x05\x00\x00\x00\x00\x00\x00\x5a\x3d\x02\x00\x47\x00\x64\x2c\x84\x00\x64\x2d\x65\x02\xac\x13\xab\x03\x00\x00\x00\x00\x00\x00\x5a\x3e\x02\x00\x47\x00\x64\x2e\x84\x00\x64\x2f\x65\x08\xab\x03\x00\x00\x00\x00\x00\x00\x5a\x3f\x64\x30\x84\x00\x5a\x40\x64\x31\x84\x00\x5a\x41\x02\x00\x47\x00\x64\x32\x84\x00\x64\x33\x65\x02\xac\x13\xab\x03\x00\x00\x00\x00\x00\x00\x5a\x42\x02\x00\x47\x00\x64\x34\x84\x00\x64\x35\x65\x3d\xab\x03\x00\x00\x00\x00\x00\x00\x5a\x43\x65\x43\x6a\x67\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\x44\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x02\x00\x47\x00\x64\x36\x84\x00\x64\x37\x65\x43\xab\x03\x00\x00\x00\x00\x00\x00\x5a\x45\x65\x45\x6a\x67\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\x1e\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x02\x00\x47\x00\x64\x38\x84\x00\x64\x39\x65\x3d\xab\x03\x00\x00\x00\x00\x00\x00\x5a\x46\x65\x46\x6a\x67\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\x28\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x02\x00\x47\x00\x64\x3a\x84\x00\x64\x3b\x65\x3b\xab\x03\x00\x00\x00\x00\x00\x00\x5a\x47\x02\x00\x47\x00\x64\x3c\x84\x00\x64\x3d\x65\x47\x65\x43\xab\x04\x00\x00\x00\x00\x00\x00\x5a\x48\x65\x48\x6a\x67\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\x24\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x02\x00\x47\x00\x64\x3e\x84\x00\x64\x3f\x65\x47\x65\x43\xab\x04\x00\x00\x00\x00\x00\x00\x5a\x49\x65\x49\x6a\x67\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\x26\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x02\x00\x47\x00\x64\x40\x84\x00\x64\x41\x65\x47\x65\x3d\xab\x04\x00\x00\x00\x00\x00\x00\x5a\x4a\x65\x4a\x6a\x67\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\x25\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x02\x00\x47\x00\x64\x42\x84\x00\x64\x43\x65\x46\xab\x03\x00\x00\x00\x00\x00\x00\x5a\x4b\x65\x4b\x6a\x67\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\x4c\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x02\x00\x47\x00\x64\x44\x84\x00\x64\x45\x65\x39\x65\x3d\xab\x04\x00\x00\x00\x00\x00\x00\x5a\x4d\x65\x4d\x6a\x67\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\x4e\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x65\x4d\x6a\x67\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\x4f\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x65\x4d\x6a\x67\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\x1b\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x65\x4d\x6a\x67\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\x50\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x02\x00\x47\x00\x64\x46\x84\x00\x64\x47\x65\x02\xab\x03\x00\x00\x00\x00\x00\x00\x5a\x51\x02\x00\x47\x00\x64\x48\x84\x00\x64\x49\x65\x4d\x65\x51\xac\x13\xab\x04\x00\x00\x00\x00\x00\x00\x5a\x52\x65\x52\x6a\x67\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\x53\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x65\x52\x6a\x67\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\x10\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x02\x00\x47\x00\x64\x4a\x84\x00\x64\x4b\x65\x4d\xab\x03\x00\x00\x00\x00\x00\x00\x5a\x54\x65\x54\x6a\x67\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\x06\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x65\x54\x6a\x67\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\x10\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x79\x03",
+ ._co_firsttraceable = 0,
+};
+
+PyObject *
+_Py_get__collections_abc_toplevel(void)
+{
+ return Py_NewRef((PyObject *) &_collections_abc_toplevel);
+}
+
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[62];
+ }
+_sitebuiltins_toplevel_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 61,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x0a\x54\x68\x65\x20\x6f\x62\x6a\x65\x63\x74\x73\x20\x75\x73\x65\x64\x20\x62\x79\x20\x74\x68\x65\x20\x73\x69\x74\x65\x20\x6d\x6f\x64\x75\x6c\x65\x20\x74\x6f\x20\x61\x64\x64\x20\x63\x75\x73\x74\x6f\x6d\x20\x62\x75\x69\x6c\x74\x69\x6e\x73\x2e\x0a",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[8];
+ }
+const_str_Quitter = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 7,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Quitter",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[4];
+ }
+const_str_eof = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 3,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "eof",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+_sitebuiltins_toplevel_consts_3_consts_1_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ &_Py_ID(name),
+ & const_str_eof._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[23];
+ }
+_sitebuiltins_toplevel_consts_3_consts_1_filename = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 22,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "<frozen _sitebuiltins>",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[17];
+ }
+_sitebuiltins_toplevel_consts_3_consts_1_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 16,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Quitter.__init__",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[17];
+ }
+_sitebuiltins_toplevel_consts_3_consts_1_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 16,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xd8\x14\x18\x88\x04\x8c\x09\xd8\x13\x16\x88\x04\x8d\x08",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+_sitebuiltins_toplevel_consts_3_consts_1_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ &_Py_ID(self),
+ &_Py_ID(name),
+ & const_str_eof._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(32)
+_sitebuiltins_toplevel_consts_3_consts_1 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 16,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_1_consts._object.ob_base.ob_base,
+ .co_names = & _sitebuiltins_toplevel_consts_3_consts_1_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 3,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 5 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 2,
+ .co_firstlineno = 14,
+ .co_nlocalsplus = 3,
+ .co_nlocals = 3,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 520,
+ .co_localsplusnames = & _sitebuiltins_toplevel_consts_3_consts_1_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_3_localspluskinds.ob_base.ob_base,
+ .co_filename = & _sitebuiltins_toplevel_consts_3_consts_1_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__init__),
+ .co_qualname = & _sitebuiltins_toplevel_consts_3_consts_1_qualname._ascii.ob_base,
+ .co_linetable = & _sitebuiltins_toplevel_consts_3_consts_1_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x01\x7c\x00\x5f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x02\x7c\x00\x5f\x01\x00\x00\x00\x00\x00\x00\x00\x00\x79\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[5];
+ }
+_sitebuiltins_toplevel_consts_3_consts_2_consts_1 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 4,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Use ",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[7];
+ }
+_sitebuiltins_toplevel_consts_3_consts_2_consts_2 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 6,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "() or ",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[9];
+ }
+_sitebuiltins_toplevel_consts_3_consts_2_consts_3 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 8,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = " to exit",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[4];
+ }_object;
+ }
+_sitebuiltins_toplevel_consts_3_consts_2_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_item = {
+ Py_None,
+ & _sitebuiltins_toplevel_consts_3_consts_2_consts_1._ascii.ob_base,
+ & _sitebuiltins_toplevel_consts_3_consts_2_consts_2._ascii.ob_base,
+ & _sitebuiltins_toplevel_consts_3_consts_2_consts_3._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[17];
+ }
+_sitebuiltins_toplevel_consts_3_consts_2_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 16,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Quitter.__repr__",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[22];
+ }
+_sitebuiltins_toplevel_consts_3_consts_2_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 21,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x81\x00\xd8\x2b\x2f\xaf\x39\xab\x39\xb0\x64\xb7\x68\xb3\x68\xd0\x0f\x3f\xd0\x08\x3f",
+};
+static
+ struct _PyCode_DEF(60)
+_sitebuiltins_toplevel_consts_3_consts_2 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 30,
+ },
+ .co_consts = & _sitebuiltins_toplevel_consts_3_consts_2_consts._object.ob_base.ob_base,
+ .co_names = & _sitebuiltins_toplevel_consts_3_consts_1_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 6 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 5,
+ .co_firstlineno = 17,
+ .co_nlocalsplus = 1,
+ .co_nlocals = 1,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 521,
+ .co_localsplusnames = & importlib__bootstrap_toplevel_consts_7_consts_2_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_characters[32]),
+ .co_filename = & _sitebuiltins_toplevel_consts_3_consts_1_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__repr__),
+ .co_qualname = & _sitebuiltins_toplevel_consts_3_consts_2_qualname._ascii.ob_base,
+ .co_linetable = & _sitebuiltins_toplevel_consts_3_consts_2_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x64\x01\x7c\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9b\x01\x64\x02\x7c\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9b\x01\x64\x03\x9d\x05\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[11];
+ }
+const_str_SystemExit = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 10,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "SystemExit",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[4];
+ }_object;
+ }
+_sitebuiltins_toplevel_consts_3_consts_4_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_item = {
+ & const_str_sys._ascii.ob_base,
+ &_Py_ID(stdin),
+ &_Py_ID(close),
+ & const_str_SystemExit._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[17];
+ }
+_sitebuiltins_toplevel_consts_3_consts_4_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 16,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Quitter.__call__",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[56];
+ }
+_sitebuiltins_toplevel_consts_3_consts_4_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 55,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf0\x06\x03\x09\x11\xdc\x0c\x0f\x8f\x49\x89\x49\x8f\x4f\x89\x4f\xd4\x0c\x1d\xf4\x06\x00\x0f\x19\x98\x14\xd3\x0e\x1e\xd0\x08\x1e\xf8\xf0\x05\x01\x09\x11\xd8\x0c\x10\xdc\x0e\x18\x98\x14\xd3\x0e\x1e\xd0\x08\x1e\xfa",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[9];
+ }
+_sitebuiltins_toplevel_consts_3_consts_4_exceptiontable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 8,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x82\x1e\x2b\x00\xab\x02\x39\x03",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+_sitebuiltins_toplevel_consts_3_consts_4_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ &_Py_ID(self),
+ &_Py_ID(code),
+ },
+ },
+};
+static
+ struct _PyCode_DEF(120)
+_sitebuiltins_toplevel_consts_3_consts_4 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 60,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_1_consts._object.ob_base.ob_base,
+ .co_names = & _sitebuiltins_toplevel_consts_3_consts_4_names._object.ob_base.ob_base,
+ .co_exceptiontable = & _sitebuiltins_toplevel_consts_3_consts_4_exceptiontable.ob_base.ob_base,
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 6 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 19,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 2,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 522,
+ .co_localsplusnames = & _sitebuiltins_toplevel_consts_3_consts_4_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_14_consts_2_localspluskinds.ob_base.ob_base,
+ .co_filename = & _sitebuiltins_toplevel_consts_3_consts_1_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__call__),
+ .co_qualname = & _sitebuiltins_toplevel_consts_3_consts_4_qualname._ascii.ob_base,
+ .co_linetable = & _sitebuiltins_toplevel_consts_3_consts_4_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x09\x00\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x01\x00\x74\x07\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\xab\x01\x00\x00\x00\x00\x00\x00\x82\x01\x23\x00\x01\x00\x59\x00\x74\x07\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\xab\x01\x00\x00\x00\x00\x00\x00\x82\x01\x78\x03\x59\x00\x77\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[6];
+ }_object;
+ }
+_sitebuiltins_toplevel_consts_3_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 6,
+ },
+ .ob_item = {
+ & const_str_Quitter._ascii.ob_base,
+ & _sitebuiltins_toplevel_consts_3_consts_1.ob_base.ob_base,
+ & _sitebuiltins_toplevel_consts_3_consts_2.ob_base.ob_base,
+ Py_None,
+ & _sitebuiltins_toplevel_consts_3_consts_4.ob_base.ob_base,
+ & importlib__bootstrap_toplevel_consts_1_consts._object.ob_base.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[6];
+ }_object;
+ }
+_sitebuiltins_toplevel_consts_3_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 6,
+ },
+ .ob_item = {
+ &_Py_ID(__name__),
+ &_Py_ID(__module__),
+ &_Py_ID(__qualname__),
+ &_Py_ID(__init__),
+ &_Py_ID(__repr__),
+ &_Py_ID(__call__),
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[19];
+ }
+_sitebuiltins_toplevel_consts_3_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 18,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x84\x00\xf2\x02\x02\x05\x17\xf2\x06\x01\x05\x40\x01\xf4\x04\x07\x05\x1f",
+};
+static
+ struct _PyCode_DEF(32)
+_sitebuiltins_toplevel_consts_3 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 16,
+ },
+ .co_consts = & _sitebuiltins_toplevel_consts_3_consts._object.ob_base.ob_base,
+ .co_names = & _sitebuiltins_toplevel_consts_3_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 0,
+ .co_argcount = 0,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 2 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 2,
+ .co_firstlineno = 13,
+ .co_nlocalsplus = 0,
+ .co_nlocals = 0,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 523,
+ .co_localsplusnames = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_filename = & _sitebuiltins_toplevel_consts_3_consts_1_filename._ascii.ob_base,
+ .co_name = & const_str_Quitter._ascii.ob_base,
+ .co_qualname = & const_str_Quitter._ascii.ob_base,
+ .co_linetable = & _sitebuiltins_toplevel_consts_3_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x65\x00\x5a\x01\x64\x00\x5a\x02\x64\x01\x84\x00\x5a\x03\x64\x02\x84\x00\x5a\x04\x64\x05\x64\x04\x84\x01\x5a\x05\x79\x03",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[9];
+ }
+const_str__Printer = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 8,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_Printer",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[111];
+ }
+_sitebuiltins_toplevel_consts_5_consts_1 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 110,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x69\x6e\x74\x65\x72\x61\x63\x74\x69\x76\x65\x20\x70\x72\x6f\x6d\x70\x74\x20\x6f\x62\x6a\x65\x63\x74\x73\x20\x66\x6f\x72\x20\x70\x72\x69\x6e\x74\x69\x6e\x67\x20\x74\x68\x65\x20\x6c\x69\x63\x65\x6e\x73\x65\x20\x74\x65\x78\x74\x2c\x20\x61\x20\x6c\x69\x73\x74\x20\x6f\x66\x0a\x20\x20\x20\x20\x63\x6f\x6e\x74\x72\x69\x62\x75\x74\x6f\x72\x73\x20\x61\x6e\x64\x20\x74\x68\x65\x20\x63\x6f\x70\x79\x72\x69\x67\x68\x74\x20\x6e\x6f\x74\x69\x63\x65\x2e",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[3];
+ }
+const_str_os = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 2,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "os",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[15];
+ }
+const_str__Printer__name = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 14,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_Printer__name",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[15];
+ }
+const_str__Printer__data = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 14,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_Printer__data",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[16];
+ }
+const_str__Printer__lines = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 15,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_Printer__lines",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[20];
+ }
+const_str__Printer__filenames = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 19,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_Printer__filenames",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[7];
+ }_object;
+ }
+_sitebuiltins_toplevel_consts_5_consts_3_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 7,
+ },
+ .ob_item = {
+ & const_str_os._ascii.ob_base,
+ & const_str__Printer__name._ascii.ob_base,
+ & const_str__Printer__data._ascii.ob_base,
+ & const_str__Printer__lines._ascii.ob_base,
+ &_Py_ID(path),
+ &_Py_ID(join),
+ & const_str__Printer__filenames._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[18];
+ }
+_sitebuiltins_toplevel_consts_5_consts_3_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 17,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_Printer.__init__",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[93];
+ }
+_sitebuiltins_toplevel_consts_5_consts_3_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 92,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xdb\x08\x11\xd8\x16\x1a\x88\x04\x8c\x0b\xd8\x16\x1a\x88\x04\x8c\x0b\xd8\x17\x1b\x88\x04\x8c\x0c\xe0\x27\x2b\xf7\x03\x02\x1c\x33\xd8\x20\x23\xd8\x2c\x31\xf2\x05\x02\x1c\x33\xe0\x20\x28\xf0\x05\x00\x1d\x1f\x9f\x47\x99\x47\x9f\x4c\x99\x4c\xa8\x13\xa8\x68\xd5\x1c\x37\xf0\x00\x02\x1c\x33\xd0\x1c\x37\xf3\x00\x02\x1c\x33\x88\x04\xd5\x08\x18\xf9\xf3\x00\x02\x1c\x33",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[6];
+ }
+_sitebuiltins_toplevel_consts_5_consts_3_exceptiontable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 5,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x9f\x2a\x41\x13\x06",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[5];
+ }
+const_str_dirs = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 4,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "dirs",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[4];
+ }
+const_str_dir = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 3,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "dir",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[8];
+ }_object;
+ }
+_sitebuiltins_toplevel_consts_5_consts_3_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 8,
+ },
+ .ob_item = {
+ &_Py_ID(self),
+ &_Py_ID(name),
+ &_Py_ID(data),
+ & const_str_files._ascii.ob_base,
+ & const_str_dirs._ascii.ob_base,
+ & const_str_os._ascii.ob_base,
+ & const_str_dir._ascii.ob_base,
+ &_Py_ID(filename),
+ },
+ },
+};
+static
+ struct _PyCode_DEF(178)
+_sitebuiltins_toplevel_consts_5_consts_3 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 89,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_16_consts_2_consts._object.ob_base.ob_base,
+ .co_names = & _sitebuiltins_toplevel_consts_5_consts_3_names._object.ob_base.ob_base,
+ .co_exceptiontable = & _sitebuiltins_toplevel_consts_5_consts_3_exceptiontable.ob_base.ob_base,
+ .co_flags = 3,
+ .co_argcount = 5,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 17 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 9,
+ .co_firstlineno = 35,
+ .co_nlocalsplus = 8,
+ .co_nlocals = 8,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 524,
+ .co_localsplusnames = & _sitebuiltins_toplevel_consts_5_consts_3_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_13_localspluskinds.ob_base.ob_base,
+ .co_filename = & _sitebuiltins_toplevel_consts_3_consts_1_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__init__),
+ .co_qualname = & _sitebuiltins_toplevel_consts_5_consts_3_qualname._ascii.ob_base,
+ .co_linetable = & _sitebuiltins_toplevel_consts_5_consts_3_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x64\x01\x64\x00\x6c\x00\x7d\x05\x7c\x01\x7c\x00\x5f\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x02\x7c\x00\x5f\x02\x00\x00\x00\x00\x00\x00\x00\x00\x64\x00\x7c\x00\x5f\x03\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x04\x44\x00\x8f\x06\x8f\x07\x63\x03\x67\x00\x63\x02\x5d\x25\x00\x00\x7d\x06\x7c\x03\x44\x00\x5d\x1e\x00\x00\x7d\x07\x7c\x05\x6a\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x06\x7c\x07\xab\x02\x00\x00\x00\x00\x00\x00\x91\x03\x8c\x20\x04\x00\x8c\x27\x04\x00\x63\x03\x7d\x07\x7d\x06\x7c\x00\x5f\x06\x00\x00\x00\x00\x00\x00\x00\x00\x79\x00\x63\x02\x01\x00\x63\x03\x7d\x07\x7d\x06\x77\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[4];
+ }_object;
+ }
+_sitebuiltins_toplevel_consts_5_consts_4_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_item = {
+ Py_None,
+ &_Py_STR(utf_8),
+ & codecs_toplevel_consts_35_localsplusnames._object.ob_base.ob_base,
+ (PyObject *)&_Py_SINGLETON(strings).ascii[10],
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[6];
+ }
+const_str_split = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 5,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "split",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[18];
+ }
+const_str__Printer__linecnt = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 17,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_Printer__linecnt",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[9];
+ }_object;
+ }
+_sitebuiltins_toplevel_consts_5_consts_4_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 9,
+ },
+ .ob_item = {
+ & const_str__Printer__lines._ascii.ob_base,
+ & const_str__Printer__filenames._ascii.ob_base,
+ &_Py_ID(open),
+ &_Py_ID(read),
+ & const_str_OSError._ascii.ob_base,
+ & const_str__Printer__data._ascii.ob_base,
+ & const_str_split._ascii.ob_base,
+ &_Py_ID(len),
+ & const_str__Printer__linecnt._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[8];
+ }
+const_str___setup = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 7,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "__setup",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[17];
+ }
+_sitebuiltins_toplevel_consts_5_consts_4_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 16,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_Printer.__setup",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[156];
+ }
+_sitebuiltins_toplevel_consts_5_consts_4_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 155,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xd8\x0b\x0f\x8f\x3c\x8a\x3c\xd8\x0c\x12\xd8\x0f\x13\x88\x04\xd8\x18\x1c\xd7\x18\x28\xd1\x18\x28\xf2\x00\x06\x09\x15\x88\x48\xf0\x02\x05\x0d\x15\xdc\x15\x19\x98\x28\xa8\x57\xd4\x15\x35\xf0\x00\x01\x11\x25\xb8\x12\xd8\x1b\x1d\x9f\x37\x99\x37\x9b\x39\x90\x44\xf7\x03\x01\x11\x25\xe1\x10\x15\xf0\x09\x06\x09\x15\xf1\x0e\x00\x10\x14\xd8\x13\x17\x97\x3b\x91\x3b\x88\x44\xd8\x17\x1b\x97\x7a\x91\x7a\xa0\x24\xd3\x17\x27\x88\x04\x8c\x0c\xdc\x19\x1c\x98\x54\x9f\x5c\x99\x5c\xd3\x19\x2a\x88\x04\x8d\x0e\xf7\x11\x01\x11\x25\xf0\x00\x01\x11\x25\xfb\xf4\x06\x00\x14\x1b\xf2\x00\x01\x0d\x15\xd9\x10\x14\xf0\x03\x01\x0d\x15\xfa",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[40];
+ }
+_sitebuiltins_toplevel_consts_5_consts_4_exceptiontable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 39,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\xa0\x0d\x42\x14\x02\xad\x11\x42\x08\x05\xbe\x08\x42\x14\x02\xc2\x08\x05\x42\x11\x09\xc2\x0d\x07\x42\x14\x02\xc2\x14\x09\x42\x20\x05\xc2\x1f\x01\x42\x20\x05",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[4];
+ }_object;
+ }
+_sitebuiltins_toplevel_consts_5_consts_4_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_item = {
+ &_Py_ID(self),
+ &_Py_ID(data),
+ &_Py_ID(filename),
+ & const_str_fp._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(326)
+_sitebuiltins_toplevel_consts_5_consts_4 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 163,
+ },
+ .co_consts = & _sitebuiltins_toplevel_consts_5_consts_4_consts._object.ob_base.ob_base,
+ .co_names = & _sitebuiltins_toplevel_consts_5_consts_4_names._object.ob_base.ob_base,
+ .co_exceptiontable = & _sitebuiltins_toplevel_consts_5_consts_4_exceptiontable.ob_base.ob_base,
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 11 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 7,
+ .co_firstlineno = 44,
+ .co_nlocalsplus = 4,
+ .co_nlocals = 4,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 525,
+ .co_localsplusnames = & _sitebuiltins_toplevel_consts_5_consts_4_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_7_consts_3_localspluskinds.ob_base.ob_base,
+ .co_filename = & _sitebuiltins_toplevel_consts_3_consts_1_filename._ascii.ob_base,
+ .co_name = & const_str___setup._ascii.ob_base,
+ .co_qualname = & _sitebuiltins_toplevel_consts_5_consts_4_qualname._ascii.ob_base,
+ .co_linetable = & _sitebuiltins_toplevel_consts_5_consts_4_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x72\x01\x79\x00\x64\x00\x7d\x01\x7c\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x00\x5d\x2a\x00\x00\x7d\x02\x09\x00\x74\x05\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x02\x64\x01\xac\x02\xab\x02\x00\x00\x00\x00\x00\x00\x35\x00\x7d\x03\x7c\x03\x6a\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x7d\x01\x64\x00\x64\x00\x64\x00\xab\x02\x00\x00\x00\x00\x00\x00\x01\x00\x01\x00\x6e\x01\x04\x00\x7c\x01\x73\x0c\x7c\x00\x6a\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7d\x01\x7c\x01\x6a\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x03\xab\x01\x00\x00\x00\x00\x00\x00\x7c\x00\x5f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x74\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7c\x00\x5f\x08\x00\x00\x00\x00\x00\x00\x00\x00\x79\x00\x23\x00\x31\x00\x73\x01\x77\x02\x01\x00\x59\x00\x01\x00\x01\x00\x8c\x4b\x78\x03\x59\x00\x77\x01\x23\x00\x74\x08\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x72\x03\x01\x00\x59\x00\x8c\x83\x77\x00\x78\x03\x59\x00\x77\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[34];
+ }
+_sitebuiltins_toplevel_consts_5_consts_5_consts_2 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 33,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Type %s() to see the full %s text",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[4];
+ }_object;
+ }
+_sitebuiltins_toplevel_consts_5_consts_5_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_item = {
+ Py_None,
+ (PyObject *)&_Py_SINGLETON(strings).ascii[10],
+ & _sitebuiltins_toplevel_consts_5_consts_5_consts_2._ascii.ob_base,
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 2],
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[16];
+ }
+const_str__Printer__setup = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 15,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_Printer__setup",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[9];
+ }
+const_str_MAXLINES = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 8,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "MAXLINES",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[6];
+ }_object;
+ }
+_sitebuiltins_toplevel_consts_5_consts_5_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 6,
+ },
+ .ob_item = {
+ & const_str__Printer__setup._ascii.ob_base,
+ &_Py_ID(len),
+ & const_str__Printer__lines._ascii.ob_base,
+ & const_str_MAXLINES._ascii.ob_base,
+ &_Py_ID(join),
+ & const_str__Printer__name._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[18];
+ }
+_sitebuiltins_toplevel_consts_5_consts_5_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 17,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_Printer.__repr__",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[74];
+ }
+_sitebuiltins_toplevel_consts_5_consts_5_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 73,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xd8\x08\x0c\x8f\x0c\x89\x0c\x8c\x0e\xdc\x0b\x0e\x88\x74\x8f\x7c\x89\x7c\xd3\x0b\x1c\xa0\x04\xa7\x0d\xa1\x0d\xd2\x0b\x2d\xd8\x13\x17\x97\x39\x91\x39\x98\x54\x9f\x5c\x99\x5c\xd3\x13\x2a\xd0\x0c\x2a\xe0\x13\x36\xb8\x34\xbf\x3b\xb9\x3b\xb8\x2e\xc8\x11\xd1\x3a\x4a\xd1\x13\x4b\xd0\x0c\x4b",
+};
+static
+ struct _PyCode_DEF(194)
+_sitebuiltins_toplevel_consts_5_consts_5 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 97,
+ },
+ .co_consts = & _sitebuiltins_toplevel_consts_5_consts_5_consts._object.ob_base.ob_base,
+ .co_names = & _sitebuiltins_toplevel_consts_5_consts_5_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 4 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 3,
+ .co_firstlineno = 60,
+ .co_nlocalsplus = 1,
+ .co_nlocals = 1,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 526,
+ .co_localsplusnames = & importlib__bootstrap_toplevel_consts_7_consts_2_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_characters[32]),
+ .co_filename = & _sitebuiltins_toplevel_consts_3_consts_1_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__repr__),
+ .co_qualname = & _sitebuiltins_toplevel_consts_5_consts_5_qualname._ascii.ob_base,
+ .co_linetable = & _sitebuiltins_toplevel_consts_5_consts_5_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x00\x6a\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x01\x00\x74\x03\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x6a\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7c\x00\x6a\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6b\x1a\x00\x00\x72\x1b\x64\x01\x6a\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x6a\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x53\x00\x64\x02\x7c\x00\x6a\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x66\x01\x64\x03\x7a\x05\x00\x00\x7a\x06\x00\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[49];
+ }
+_sitebuiltins_toplevel_consts_5_consts_6_consts_1 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 48,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Hit Return for more, or q (and Return) to quit: ",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+_sitebuiltins_toplevel_consts_5_consts_6_consts_3 = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ &_Py_STR(empty),
+ (PyObject *)&_Py_SINGLETON(strings).ascii[113],
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[5];
+ }_object;
+ }
+_sitebuiltins_toplevel_consts_5_consts_6_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 5,
+ },
+ .ob_item = {
+ Py_None,
+ & _sitebuiltins_toplevel_consts_5_consts_6_consts_1._ascii.ob_base,
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 0],
+ & _sitebuiltins_toplevel_consts_5_consts_6_consts_3._object.ob_base.ob_base,
+ (PyObject *)&_Py_SINGLETON(strings).ascii[113],
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[7];
+ }_object;
+ }
+_sitebuiltins_toplevel_consts_5_consts_6_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 7,
+ },
+ .ob_item = {
+ & const_str__Printer__setup._ascii.ob_base,
+ & const_str_range._ascii.ob_base,
+ & const_str_MAXLINES._ascii.ob_base,
+ & const_str_print._ascii.ob_base,
+ & const_str__Printer__lines._ascii.ob_base,
+ &_Py_ID(input),
+ & const_str_IndexError._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[18];
+ }
+_sitebuiltins_toplevel_consts_5_consts_6_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 17,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_Printer.__call__",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[169];
+ }
+_sitebuiltins_toplevel_consts_5_consts_6_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 168,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xd8\x08\x0c\x8f\x0c\x89\x0c\x8c\x0e\xd8\x11\x43\x88\x06\xd8\x11\x12\x88\x06\xd8\x0e\x0f\xf0\x02\x0d\x0d\x1a\xdc\x19\x1e\x98\x76\xa0\x76\xb0\x04\xb7\x0d\xb1\x0d\xd1\x27\x3d\xd3\x19\x3e\xf2\x00\x01\x11\x2b\x90\x41\xdc\x14\x19\x98\x24\x9f\x2c\x99\x2c\xa0\x71\x99\x2f\xd5\x14\x2a\xf1\x03\x01\x11\x2b\xf0\x0a\x00\x11\x17\x98\x24\x9f\x2d\x99\x2d\xd1\x10\x27\x90\x06\xd8\x16\x1a\x90\x03\xd8\x16\x19\x90\x6b\xdc\x1a\x1f\xa0\x06\x9b\x2d\x90\x43\xd8\x17\x1a\xa0\x29\xd1\x17\x2b\xd8\x1e\x22\x98\x03\xf0\x07\x00\x17\x1a\x91\x6b\xf0\x08\x00\x14\x17\x98\x23\x92\x3a\xd8\x14\x19\xf0\x1d\x00\x0f\x10\xf8\xf4\x08\x00\x14\x1e\xf2\x00\x01\x0d\x16\xd9\x10\x15\xf0\x03\x01\x0d\x16\xfa",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[18];
+ }
+_sitebuiltins_toplevel_consts_5_consts_6_exceptiontable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 17,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x97\x36\x41\x3c\x00\xc1\x3c\x09\x42\x08\x03\xc2\x07\x01\x42\x08\x03",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[7];
+ }
+const_str_prompt = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 6,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "prompt",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[5];
+ }_object;
+ }
+_sitebuiltins_toplevel_consts_5_consts_6_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 5,
+ },
+ .ob_item = {
+ &_Py_ID(self),
+ & const_str_prompt._ascii.ob_base,
+ &_Py_ID(lineno),
+ (PyObject *)&_Py_SINGLETON(strings).ascii[105],
+ &_Py_ID(key),
+ },
+ },
+};
+static
+ struct _PyCode_DEF(278)
+_sitebuiltins_toplevel_consts_5_consts_6 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 139,
+ },
+ .co_consts = & _sitebuiltins_toplevel_consts_5_consts_6_consts._object.ob_base.ob_base,
+ .co_names = & _sitebuiltins_toplevel_consts_5_consts_6_names._object.ob_base.ob_base,
+ .co_exceptiontable = & _sitebuiltins_toplevel_consts_5_consts_6_exceptiontable.ob_base.ob_base,
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 10 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 5,
+ .co_firstlineno = 67,
+ .co_nlocalsplus = 5,
+ .co_nlocals = 5,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 527,
+ .co_localsplusnames = & _sitebuiltins_toplevel_consts_5_consts_6_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_7_consts_5_localspluskinds.ob_base.ob_base,
+ .co_filename = & _sitebuiltins_toplevel_consts_3_consts_1_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__call__),
+ .co_qualname = & _sitebuiltins_toplevel_consts_5_consts_6_qualname._ascii.ob_base,
+ .co_linetable = & _sitebuiltins_toplevel_consts_5_consts_6_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x00\x6a\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x01\x00\x64\x01\x7d\x01\x64\x02\x7d\x02\x09\x00\x09\x00\x74\x03\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x02\x7c\x02\x7c\x00\x6a\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7a\x00\x00\x00\xab\x02\x00\x00\x00\x00\x00\x00\x44\x00\x5d\x1a\x00\x00\x7d\x03\x74\x07\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x6a\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x03\x19\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x8c\x1c\x04\x00\x09\x00\x7c\x02\x7c\x00\x6a\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7a\x0d\x00\x00\x7d\x02\x64\x00\x7d\x04\x7c\x04\x80\x14\x74\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x04\x7c\x04\x64\x03\x76\x01\x72\x02\x64\x00\x7d\x04\x7c\x04\x80\x01\x8c\x14\x7c\x04\x64\x04\x6b\x28\x00\x00\x72\x01\x79\x00\x8c\x66\x23\x00\x74\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x72\x03\x01\x00\x59\x00\x79\x00\x77\x00\x78\x03\x59\x00\x77\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+_sitebuiltins_toplevel_consts_5_consts_8 = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ (PyObject *)& _Py_SINGLETON(tuple_empty),
+ (PyObject *)& _Py_SINGLETON(tuple_empty),
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[9];
+ }_object;
+ }
+_sitebuiltins_toplevel_consts_5_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 9,
+ },
+ .ob_item = {
+ & const_str__Printer._ascii.ob_base,
+ & _sitebuiltins_toplevel_consts_5_consts_1._ascii.ob_base,
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 23],
+ & _sitebuiltins_toplevel_consts_5_consts_3.ob_base.ob_base,
+ & _sitebuiltins_toplevel_consts_5_consts_4.ob_base.ob_base,
+ & _sitebuiltins_toplevel_consts_5_consts_5.ob_base.ob_base,
+ & _sitebuiltins_toplevel_consts_5_consts_6.ob_base.ob_base,
+ Py_None,
+ & _sitebuiltins_toplevel_consts_5_consts_8._object.ob_base.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[9];
+ }_object;
+ }
+_sitebuiltins_toplevel_consts_5_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 9,
+ },
+ .ob_item = {
+ &_Py_ID(__name__),
+ &_Py_ID(__module__),
+ &_Py_ID(__qualname__),
+ &_Py_ID(__doc__),
+ & const_str_MAXLINES._ascii.ob_base,
+ &_Py_ID(__init__),
+ & const_str__Printer__setup._ascii.ob_base,
+ &_Py_ID(__repr__),
+ &_Py_ID(__call__),
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[36];
+ }
+_sitebuiltins_toplevel_consts_5_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 35,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x84\x00\xf1\x02\x01\x05\x2e\xf0\x06\x00\x10\x12\x80\x48\xf3\x04\x07\x05\x33\xf2\x12\x0e\x05\x2b\xf2\x20\x05\x05\x4c\x01\xf3\x0e\x12\x05\x1a",
+};
+static
+ struct _PyCode_DEF(46)
+_sitebuiltins_toplevel_consts_5 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 23,
+ },
+ .co_consts = & _sitebuiltins_toplevel_consts_5_consts._object.ob_base.ob_base,
+ .co_names = & _sitebuiltins_toplevel_consts_5_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 0,
+ .co_argcount = 0,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 2 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 2,
+ .co_firstlineno = 29,
+ .co_nlocalsplus = 0,
+ .co_nlocals = 0,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 528,
+ .co_localsplusnames = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_filename = & _sitebuiltins_toplevel_consts_3_consts_1_filename._ascii.ob_base,
+ .co_name = & const_str__Printer._ascii.ob_base,
+ .co_qualname = & const_str__Printer._ascii.ob_base,
+ .co_linetable = & _sitebuiltins_toplevel_consts_5_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x65\x00\x5a\x01\x64\x00\x5a\x02\x64\x01\x5a\x03\x64\x02\x5a\x04\x64\x08\x64\x03\x84\x01\x5a\x05\x64\x04\x84\x00\x5a\x06\x64\x05\x84\x00\x5a\x07\x64\x06\x84\x00\x5a\x08\x79\x07",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[8];
+ }
+const_str__Helper = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 7,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_Helper",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[308];
+ }
+_sitebuiltins_toplevel_consts_7_consts_1 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 307,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x44\x65\x66\x69\x6e\x65\x20\x74\x68\x65\x20\x62\x75\x69\x6c\x74\x69\x6e\x20\x27\x68\x65\x6c\x70\x27\x2e\x0a\x0a\x20\x20\x20\x20\x54\x68\x69\x73\x20\x69\x73\x20\x61\x20\x77\x72\x61\x70\x70\x65\x72\x20\x61\x72\x6f\x75\x6e\x64\x20\x70\x79\x64\x6f\x63\x2e\x68\x65\x6c\x70\x20\x74\x68\x61\x74\x20\x70\x72\x6f\x76\x69\x64\x65\x73\x20\x61\x20\x68\x65\x6c\x70\x66\x75\x6c\x20\x6d\x65\x73\x73\x61\x67\x65\x0a\x20\x20\x20\x20\x77\x68\x65\x6e\x20\x27\x68\x65\x6c\x70\x27\x20\x69\x73\x20\x74\x79\x70\x65\x64\x20\x61\x74\x20\x74\x68\x65\x20\x50\x79\x74\x68\x6f\x6e\x20\x69\x6e\x74\x65\x72\x61\x63\x74\x69\x76\x65\x20\x70\x72\x6f\x6d\x70\x74\x2e\x0a\x0a\x20\x20\x20\x20\x43\x61\x6c\x6c\x69\x6e\x67\x20\x68\x65\x6c\x70\x28\x29\x20\x61\x74\x20\x74\x68\x65\x20\x50\x79\x74\x68\x6f\x6e\x20\x70\x72\x6f\x6d\x70\x74\x20\x73\x74\x61\x72\x74\x73\x20\x61\x6e\x20\x69\x6e\x74\x65\x72\x61\x63\x74\x69\x76\x65\x20\x68\x65\x6c\x70\x20\x73\x65\x73\x73\x69\x6f\x6e\x2e\x0a\x20\x20\x20\x20\x43\x61\x6c\x6c\x69\x6e\x67\x20\x68\x65\x6c\x70\x28\x74\x68\x69\x6e\x67\x29\x20\x70\x72\x69\x6e\x74\x73\x20\x68\x65\x6c\x70\x20\x66\x6f\x72\x20\x74\x68\x65\x20\x70\x79\x74\x68\x6f\x6e\x20\x6f\x62\x6a\x65\x63\x74\x20\x27\x74\x68\x69\x6e\x67\x27\x2e\x0a\x20\x20\x20\x20",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[73];
+ }
+_sitebuiltins_toplevel_consts_7_consts_2_consts_1 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 72,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Type help() for interactive help, or help(object) for help about object.",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+_sitebuiltins_toplevel_consts_7_consts_2_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ Py_None,
+ & _sitebuiltins_toplevel_consts_7_consts_2_consts_1._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[17];
+ }
+_sitebuiltins_toplevel_consts_7_consts_2_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 16,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_Helper.__repr__",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[8];
+ }
+_sitebuiltins_toplevel_consts_7_consts_2_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 7,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf0\x02\x01\x10\x38",
+};
+static
+ struct _PyCode_DEF(4)
+_sitebuiltins_toplevel_consts_7_consts_2 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 2,
+ },
+ .co_consts = & _sitebuiltins_toplevel_consts_7_consts_2_consts._object.ob_base.ob_base,
+ .co_names = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 1 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 0,
+ .co_firstlineno = 98,
+ .co_nlocalsplus = 1,
+ .co_nlocals = 1,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 529,
+ .co_localsplusnames = & importlib__bootstrap_toplevel_consts_7_consts_2_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_characters[32]),
+ .co_filename = & _sitebuiltins_toplevel_consts_3_consts_1_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__repr__),
+ .co_qualname = & _sitebuiltins_toplevel_consts_7_consts_2_qualname._ascii.ob_base,
+ .co_linetable = & _sitebuiltins_toplevel_consts_7_consts_2_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x79\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[6];
+ }
+const_str_pydoc = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 5,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "pydoc",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[5];
+ }
+const_str_help = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 4,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "help",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+_sitebuiltins_toplevel_consts_7_consts_3_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & const_str_pydoc._ascii.ob_base,
+ & const_str_help._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[17];
+ }
+_sitebuiltins_toplevel_consts_7_consts_3_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 16,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_Helper.__call__",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[28];
+ }
+_sitebuiltins_toplevel_consts_7_consts_3_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 27,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xdb\x08\x14\xd8\x0f\x19\x88\x75\x8f\x7a\x89\x7a\x98\x34\xd0\x0f\x28\xa0\x34\xd1\x0f\x28\xd0\x08\x28",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[4];
+ }_object;
+ }
+_sitebuiltins_toplevel_consts_7_consts_3_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_item = {
+ &_Py_ID(self),
+ &_Py_ID(args),
+ & const_str_kwds._ascii.ob_base,
+ & const_str_pydoc._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(46)
+_sitebuiltins_toplevel_consts_7_consts_3 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 23,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_16_consts_2_consts._object.ob_base.ob_base,
+ .co_names = & _sitebuiltins_toplevel_consts_7_consts_3_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 15,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 9 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 5,
+ .co_firstlineno = 101,
+ .co_nlocalsplus = 4,
+ .co_nlocals = 4,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 530,
+ .co_localsplusnames = & _sitebuiltins_toplevel_consts_7_consts_3_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_7_consts_3_localspluskinds.ob_base.ob_base,
+ .co_filename = & _sitebuiltins_toplevel_consts_3_consts_1_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__call__),
+ .co_qualname = & _sitebuiltins_toplevel_consts_7_consts_3_qualname._ascii.ob_base,
+ .co_linetable = & _sitebuiltins_toplevel_consts_7_consts_3_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x64\x01\x64\x00\x6c\x00\x7d\x03\x02\x00\x7c\x03\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x69\x00\x7c\x02\xa4\x01\x8e\x01\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[5];
+ }_object;
+ }
+_sitebuiltins_toplevel_consts_7_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 5,
+ },
+ .ob_item = {
+ & const_str__Helper._ascii.ob_base,
+ & _sitebuiltins_toplevel_consts_7_consts_1._ascii.ob_base,
+ & _sitebuiltins_toplevel_consts_7_consts_2.ob_base.ob_base,
+ & _sitebuiltins_toplevel_consts_7_consts_3.ob_base.ob_base,
+ Py_None,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[6];
+ }_object;
+ }
+_sitebuiltins_toplevel_consts_7_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 6,
+ },
+ .ob_item = {
+ &_Py_ID(__name__),
+ &_Py_ID(__module__),
+ &_Py_ID(__qualname__),
+ &_Py_ID(__doc__),
+ &_Py_ID(__repr__),
+ &_Py_ID(__call__),
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[18];
+ }
+_sitebuiltins_toplevel_consts_7_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 17,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x84\x00\xf1\x02\x07\x05\x08\xf2\x12\x02\x05\x38\xf3\x06\x02\x05\x29",
+};
+static
+ struct _PyCode_DEF(28)
+_sitebuiltins_toplevel_consts_7 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 14,
+ },
+ .co_consts = & _sitebuiltins_toplevel_consts_7_consts._object.ob_base.ob_base,
+ .co_names = & _sitebuiltins_toplevel_consts_7_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 0,
+ .co_argcount = 0,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 1 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 1,
+ .co_firstlineno = 88,
+ .co_nlocalsplus = 0,
+ .co_nlocals = 0,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 531,
+ .co_localsplusnames = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_filename = & _sitebuiltins_toplevel_consts_3_consts_1_filename._ascii.ob_base,
+ .co_name = & const_str__Helper._ascii.ob_base,
+ .co_qualname = & const_str__Helper._ascii.ob_base,
+ .co_linetable = & _sitebuiltins_toplevel_consts_7_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x65\x00\x5a\x01\x64\x00\x5a\x02\x64\x01\x5a\x03\x64\x02\x84\x00\x5a\x04\x64\x03\x84\x00\x5a\x05\x79\x04",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[9];
+ }_object;
+ }
+_sitebuiltins_toplevel_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 9,
+ },
+ .ob_item = {
+ & _sitebuiltins_toplevel_consts_0._ascii.ob_base,
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 0],
+ Py_None,
+ & _sitebuiltins_toplevel_consts_3.ob_base.ob_base,
+ & const_str_Quitter._ascii.ob_base,
+ & _sitebuiltins_toplevel_consts_5.ob_base.ob_base,
+ & const_str__Printer._ascii.ob_base,
+ & _sitebuiltins_toplevel_consts_7.ob_base.ob_base,
+ & const_str__Helper._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[6];
+ }_object;
+ }
+_sitebuiltins_toplevel_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 6,
+ },
+ .ob_item = {
+ &_Py_ID(__doc__),
+ & const_str_sys._ascii.ob_base,
+ &_Py_ID(object),
+ & const_str_Quitter._ascii.ob_base,
+ & const_str__Printer._ascii.ob_base,
+ & const_str__Helper._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[53];
+ }
+_sitebuiltins_toplevel_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 52,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\xf0\x03\x01\x01\x01\xf1\x02\x02\x01\x04\xf3\x14\x00\x01\x0b\xf4\x04\x0d\x01\x1f\x88\x66\xf4\x00\x0d\x01\x1f\xf4\x20\x38\x01\x1a\x88\x76\xf4\x00\x38\x01\x1a\xf4\x76\x01\x0f\x01\x29\x88\x66\xf5\x00\x0f\x01\x29",
+};
+static
+ struct _PyCode_DEF(82)
+_sitebuiltins_toplevel = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 41,
+ },
+ .co_consts = & _sitebuiltins_toplevel_consts._object.ob_base.ob_base,
+ .co_names = & _sitebuiltins_toplevel_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 0,
+ .co_argcount = 0,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 5 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 5,
+ .co_firstlineno = 1,
+ .co_nlocalsplus = 0,
+ .co_nlocals = 0,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 532,
+ .co_localsplusnames = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_filename = & _sitebuiltins_toplevel_consts_3_consts_1_filename._ascii.ob_base,
+ .co_name = &_Py_STR(anon_module),
+ .co_qualname = &_Py_STR(anon_module),
+ .co_linetable = & _sitebuiltins_toplevel_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x64\x00\x5a\x00\x64\x01\x64\x02\x6c\x01\x5a\x01\x02\x00\x47\x00\x64\x03\x84\x00\x64\x04\x65\x02\xab\x03\x00\x00\x00\x00\x00\x00\x5a\x03\x02\x00\x47\x00\x64\x05\x84\x00\x64\x06\x65\x02\xab\x03\x00\x00\x00\x00\x00\x00\x5a\x04\x02\x00\x47\x00\x64\x07\x84\x00\x64\x08\x65\x02\xab\x03\x00\x00\x00\x00\x00\x00\x5a\x05\x79\x02",
+ ._co_firsttraceable = 0,
+};
+
+PyObject *
+_Py_get__sitebuiltins_toplevel(void)
+{
+ return Py_NewRef((PyObject *) &_sitebuiltins_toplevel);
+}
+
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[153];
+ }
+genericpath_toplevel_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 152,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x0a\x50\x61\x74\x68\x20\x6f\x70\x65\x72\x61\x74\x69\x6f\x6e\x73\x20\x63\x6f\x6d\x6d\x6f\x6e\x20\x74\x6f\x20\x6d\x6f\x72\x65\x20\x74\x68\x61\x6e\x20\x6f\x6e\x65\x20\x4f\x53\x0a\x44\x6f\x20\x6e\x6f\x74\x20\x75\x73\x65\x20\x64\x69\x72\x65\x63\x74\x6c\x79\x2e\x20\x20\x54\x68\x65\x20\x4f\x53\x20\x73\x70\x65\x63\x69\x66\x69\x63\x20\x6d\x6f\x64\x75\x6c\x65\x73\x20\x69\x6d\x70\x6f\x72\x74\x20\x74\x68\x65\x20\x61\x70\x70\x72\x6f\x70\x72\x69\x61\x74\x65\x0a\x66\x75\x6e\x63\x74\x69\x6f\x6e\x73\x20\x66\x72\x6f\x6d\x20\x74\x68\x69\x73\x20\x6d\x6f\x64\x75\x6c\x65\x20\x74\x68\x65\x6d\x73\x65\x6c\x76\x65\x73\x2e\x0a",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[13];
+ }
+const_str_commonprefix = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 12,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "commonprefix",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[7];
+ }
+const_str_exists = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 6,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "exists",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[9];
+ }
+const_str_getatime = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 8,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "getatime",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[9];
+ }
+const_str_getctime = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 8,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "getctime",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[9];
+ }
+const_str_getmtime = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 8,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "getmtime",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[8];
+ }
+const_str_getsize = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 7,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "getsize",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[6];
+ }
+const_str_isdir = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 5,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "isdir",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[7];
+ }
+const_str_isfile = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 6,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "isfile",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[7];
+ }
+const_str_islink = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 6,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "islink",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[9];
+ }
+const_str_samefile = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 8,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "samefile",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[13];
+ }
+const_str_sameopenfile = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 12,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "sameopenfile",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[9];
+ }
+const_str_samestat = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 8,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "samestat",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[12];
+ }_object;
+ }
+genericpath_toplevel_consts_3 = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 12,
+ },
+ .ob_item = {
+ & const_str_commonprefix._ascii.ob_base,
+ & const_str_exists._ascii.ob_base,
+ & const_str_getatime._ascii.ob_base,
+ & const_str_getctime._ascii.ob_base,
+ & const_str_getmtime._ascii.ob_base,
+ & const_str_getsize._ascii.ob_base,
+ & const_str_isdir._ascii.ob_base,
+ & const_str_isfile._ascii.ob_base,
+ & const_str_islink._ascii.ob_base,
+ & const_str_samefile._ascii.ob_base,
+ & const_str_sameopenfile._ascii.ob_base,
+ & const_str_samestat._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[69];
+ }
+genericpath_toplevel_consts_4_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 68,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Test whether a path exists. Returns False for broken symbolic links",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+genericpath_toplevel_consts_4_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ & genericpath_toplevel_consts_4_consts_0._ascii.ob_base,
+ Py_False,
+ Py_True,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[4];
+ }_object;
+ }
+genericpath_toplevel_consts_4_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_item = {
+ & const_str_os._ascii.ob_base,
+ & const_str_stat._ascii.ob_base,
+ & const_str_OSError._ascii.ob_base,
+ & const_str_ValueError._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[21];
+ }
+genericpath_toplevel_consts_4_filename = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 20,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "<frozen genericpath>",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[49];
+ }
+genericpath_toplevel_consts_4_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 48,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf0\x04\x03\x05\x15\xdc\x08\x0a\x8f\x07\x89\x07\x90\x04\x8c\x0d\xf0\x06\x00\x0c\x10\xf8\xf4\x05\x00\x0d\x14\x94\x5a\xd0\x0b\x20\xf2\x00\x01\x05\x15\xd9\x0f\x14\xf0\x03\x01\x05\x15\xfa",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[13];
+ }
+genericpath_toplevel_consts_4_exceptiontable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 12,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x82\x15\x18\x00\x98\x0f\x2a\x03\xa9\x01\x2a\x03",
+};
+static
+ struct _PyCode_DEF(90)
+genericpath_toplevel_consts_4 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 45,
+ },
+ .co_consts = & genericpath_toplevel_consts_4_consts._object.ob_base.ob_base,
+ .co_names = & genericpath_toplevel_consts_4_names._object.ob_base.ob_base,
+ .co_exceptiontable = & genericpath_toplevel_consts_4_exceptiontable.ob_base.ob_base,
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 5 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 16,
+ .co_nlocalsplus = 1,
+ .co_nlocals = 1,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 533,
+ .co_localsplusnames = & importlib__bootstrap_external_toplevel_consts_18_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_characters[32]),
+ .co_filename = & genericpath_toplevel_consts_4_filename._ascii.ob_base,
+ .co_name = & const_str_exists._ascii.ob_base,
+ .co_qualname = & const_str_exists._ascii.ob_base,
+ .co_linetable = & genericpath_toplevel_consts_4_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x09\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x79\x02\x23\x00\x74\x04\x00\x00\x00\x00\x00\x00\x00\x00\x74\x06\x00\x00\x00\x00\x00\x00\x00\x00\x66\x02\x24\x00\x72\x03\x01\x00\x59\x00\x79\x01\x77\x00\x78\x03\x59\x00\x77\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[38];
+ }
+genericpath_toplevel_consts_5_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 37,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Test whether a path is a regular file",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+genericpath_toplevel_consts_5_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & genericpath_toplevel_consts_5_consts_0._ascii.ob_base,
+ Py_False,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[8];
+ }
+const_str_S_ISREG = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 7,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "S_ISREG",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[6];
+ }_object;
+ }
+genericpath_toplevel_consts_5_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 6,
+ },
+ .ob_item = {
+ & const_str_os._ascii.ob_base,
+ & const_str_stat._ascii.ob_base,
+ & const_str_OSError._ascii.ob_base,
+ & const_str_ValueError._ascii.ob_base,
+ & const_str_S_ISREG._ascii.ob_base,
+ & const_str_st_mode._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[67];
+ }
+genericpath_toplevel_consts_5_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 66,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf0\x04\x03\x05\x15\xdc\x0d\x0f\x8f\x57\x89\x57\x90\x54\x8b\x5d\x88\x02\xf4\x06\x00\x0c\x10\x8f\x3c\x89\x3c\x98\x02\x9f\x0a\x99\x0a\xd3\x0b\x23\xd0\x04\x23\xf8\xf4\x05\x00\x0d\x14\x94\x5a\xd0\x0b\x20\xf2\x00\x01\x05\x15\xd9\x0f\x14\xf0\x03\x01\x05\x15\xfa",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[16];
+ }
+genericpath_toplevel_consts_5_exceptiontable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 15,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x82\x15\x36\x00\xb6\x0f\x41\x08\x03\xc1\x07\x01\x41\x08\x03",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+genericpath_toplevel_consts_5_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ &_Py_ID(path),
+ & const_str_st._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(150)
+genericpath_toplevel_consts_5 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 75,
+ },
+ .co_consts = & genericpath_toplevel_consts_5_consts._object.ob_base.ob_base,
+ .co_names = & genericpath_toplevel_consts_5_names._object.ob_base.ob_base,
+ .co_exceptiontable = & genericpath_toplevel_consts_5_exceptiontable.ob_base.ob_base,
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 6 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 27,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 2,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 534,
+ .co_localsplusnames = & genericpath_toplevel_consts_5_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_14_consts_2_localspluskinds.ob_base.ob_base,
+ .co_filename = & genericpath_toplevel_consts_4_filename._ascii.ob_base,
+ .co_name = & const_str_isfile._ascii.ob_base,
+ .co_qualname = & const_str_isfile._ascii.ob_base,
+ .co_linetable = & genericpath_toplevel_consts_5_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x09\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x01\x74\x03\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x6a\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x53\x00\x23\x00\x74\x04\x00\x00\x00\x00\x00\x00\x00\x00\x74\x06\x00\x00\x00\x00\x00\x00\x00\x00\x66\x02\x24\x00\x72\x03\x01\x00\x59\x00\x79\x01\x77\x00\x78\x03\x59\x00\x77\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[61];
+ }
+genericpath_toplevel_consts_6_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 60,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Return true if the pathname refers to an existing directory.",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+genericpath_toplevel_consts_6_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & genericpath_toplevel_consts_6_consts_0._ascii.ob_base,
+ Py_False,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[8];
+ }
+const_str_S_ISDIR = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 7,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "S_ISDIR",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[6];
+ }_object;
+ }
+genericpath_toplevel_consts_6_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 6,
+ },
+ .ob_item = {
+ & const_str_os._ascii.ob_base,
+ & const_str_stat._ascii.ob_base,
+ & const_str_OSError._ascii.ob_base,
+ & const_str_ValueError._ascii.ob_base,
+ & const_str_S_ISDIR._ascii.ob_base,
+ & const_str_st_mode._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[67];
+ }
+genericpath_toplevel_consts_6_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 66,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf0\x04\x03\x05\x15\xdc\x0d\x0f\x8f\x57\x89\x57\x90\x51\x8b\x5a\x88\x02\xf4\x06\x00\x0c\x10\x8f\x3c\x89\x3c\x98\x02\x9f\x0a\x99\x0a\xd3\x0b\x23\xd0\x04\x23\xf8\xf4\x05\x00\x0d\x14\x94\x5a\xd0\x0b\x20\xf2\x00\x01\x05\x15\xd9\x0f\x14\xf0\x03\x01\x05\x15\xfa",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+genericpath_toplevel_consts_6_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ &_Py_ID(s),
+ & const_str_st._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(150)
+genericpath_toplevel_consts_6 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 75,
+ },
+ .co_consts = & genericpath_toplevel_consts_6_consts._object.ob_base.ob_base,
+ .co_names = & genericpath_toplevel_consts_6_names._object.ob_base.ob_base,
+ .co_exceptiontable = & genericpath_toplevel_consts_5_exceptiontable.ob_base.ob_base,
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 6 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 39,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 2,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 535,
+ .co_localsplusnames = & genericpath_toplevel_consts_6_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_14_consts_2_localspluskinds.ob_base.ob_base,
+ .co_filename = & genericpath_toplevel_consts_4_filename._ascii.ob_base,
+ .co_name = & const_str_isdir._ascii.ob_base,
+ .co_qualname = & const_str_isdir._ascii.ob_base,
+ .co_linetable = & genericpath_toplevel_consts_6_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x09\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x01\x74\x03\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x6a\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x53\x00\x23\x00\x74\x04\x00\x00\x00\x00\x00\x00\x00\x00\x74\x06\x00\x00\x00\x00\x00\x00\x00\x00\x66\x02\x24\x00\x72\x03\x01\x00\x59\x00\x79\x01\x77\x00\x78\x03\x59\x00\x77\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[39];
+ }
+genericpath_toplevel_consts_7_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 38,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Test whether a path is a symbolic link",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+genericpath_toplevel_consts_7_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & genericpath_toplevel_consts_7_consts_0._ascii.ob_base,
+ Py_False,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[6];
+ }
+const_str_lstat = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 5,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "lstat",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[8];
+ }
+const_str_S_ISLNK = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 7,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "S_ISLNK",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[8];
+ }_object;
+ }
+genericpath_toplevel_consts_7_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 8,
+ },
+ .ob_item = {
+ & const_str_os._ascii.ob_base,
+ & const_str_lstat._ascii.ob_base,
+ & const_str_OSError._ascii.ob_base,
+ & const_str_ValueError._ascii.ob_base,
+ & const_str_AttributeError._ascii.ob_base,
+ & const_str_stat._ascii.ob_base,
+ & const_str_S_ISLNK._ascii.ob_base,
+ & const_str_st_mode._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[69];
+ }
+genericpath_toplevel_consts_7_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 68,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf0\x04\x03\x05\x15\xdc\x0d\x0f\x8f\x58\x89\x58\x90\x64\x8b\x5e\x88\x02\xf4\x06\x00\x0c\x10\x8f\x3c\x89\x3c\x98\x02\x9f\x0a\x99\x0a\xd3\x0b\x23\xd0\x04\x23\xf8\xf4\x05\x00\x0d\x14\x94\x5a\xa4\x1e\xd0\x0b\x30\xf2\x00\x01\x05\x15\xd9\x0f\x14\xf0\x03\x01\x05\x15\xfa",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[16];
+ }
+genericpath_toplevel_consts_7_exceptiontable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 15,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x82\x15\x36\x00\xb6\x14\x41\x0d\x03\xc1\x0c\x01\x41\x0d\x03",
+};
+static
+ struct _PyCode_DEF(160)
+genericpath_toplevel_consts_7 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 80,
+ },
+ .co_consts = & genericpath_toplevel_consts_7_consts._object.ob_base.ob_base,
+ .co_names = & genericpath_toplevel_consts_7_names._object.ob_base.ob_base,
+ .co_exceptiontable = & genericpath_toplevel_consts_7_exceptiontable.ob_base.ob_base,
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 7 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 5,
+ .co_firstlineno = 51,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 2,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 536,
+ .co_localsplusnames = & genericpath_toplevel_consts_5_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_14_consts_2_localspluskinds.ob_base.ob_base,
+ .co_filename = & genericpath_toplevel_consts_4_filename._ascii.ob_base,
+ .co_name = & const_str_islink._ascii.ob_base,
+ .co_qualname = & const_str_islink._ascii.ob_base,
+ .co_linetable = & genericpath_toplevel_consts_7_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x09\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x01\x74\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x6a\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x53\x00\x23\x00\x74\x04\x00\x00\x00\x00\x00\x00\x00\x00\x74\x06\x00\x00\x00\x00\x00\x00\x00\x00\x74\x08\x00\x00\x00\x00\x00\x00\x00\x00\x66\x03\x24\x00\x72\x03\x01\x00\x59\x00\x79\x01\x77\x00\x78\x03\x59\x00\x77\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[50];
+ }
+genericpath_toplevel_consts_8_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 49,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Return the size of a file, reported by os.stat().",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+genericpath_toplevel_consts_8_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & genericpath_toplevel_consts_8_consts_0._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+genericpath_toplevel_consts_8_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ & const_str_os._ascii.ob_base,
+ & const_str_stat._ascii.ob_base,
+ & const_str_st_size._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[24];
+ }
+genericpath_toplevel_consts_8_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 23,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xe4\x0b\x0d\x8f\x37\x89\x37\x90\x38\xd3\x0b\x1c\xd7\x0b\x24\xd1\x0b\x24\xd0\x04\x24",
+};
+static
+ struct _PyCode_DEF(64)
+genericpath_toplevel_consts_8 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 32,
+ },
+ .co_consts = & genericpath_toplevel_consts_8_consts._object.ob_base.ob_base,
+ .co_names = & genericpath_toplevel_consts_8_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 4 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 3,
+ .co_firstlineno = 60,
+ .co_nlocalsplus = 1,
+ .co_nlocals = 1,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 537,
+ .co_localsplusnames = & importlib__bootstrap_external_toplevel_consts_39_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_characters[32]),
+ .co_filename = & genericpath_toplevel_consts_4_filename._ascii.ob_base,
+ .co_name = & const_str_getsize._ascii.ob_base,
+ .co_qualname = & const_str_getsize._ascii.ob_base,
+ .co_linetable = & genericpath_toplevel_consts_8_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x6a\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[68];
+ }
+genericpath_toplevel_consts_9_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 67,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Return the last modification time of a file, reported by os.stat().",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+genericpath_toplevel_consts_9_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & genericpath_toplevel_consts_9_consts_0._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+genericpath_toplevel_consts_9_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ & const_str_os._ascii.ob_base,
+ & const_str_stat._ascii.ob_base,
+ & const_str_st_mtime._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[24];
+ }
+genericpath_toplevel_consts_9_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 23,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xe4\x0b\x0d\x8f\x37\x89\x37\x90\x38\xd3\x0b\x1c\xd7\x0b\x25\xd1\x0b\x25\xd0\x04\x25",
+};
+static
+ struct _PyCode_DEF(64)
+genericpath_toplevel_consts_9 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 32,
+ },
+ .co_consts = & genericpath_toplevel_consts_9_consts._object.ob_base.ob_base,
+ .co_names = & genericpath_toplevel_consts_9_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 4 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 3,
+ .co_firstlineno = 65,
+ .co_nlocalsplus = 1,
+ .co_nlocals = 1,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 538,
+ .co_localsplusnames = & importlib__bootstrap_external_toplevel_consts_39_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_characters[32]),
+ .co_filename = & genericpath_toplevel_consts_4_filename._ascii.ob_base,
+ .co_name = & const_str_getmtime._ascii.ob_base,
+ .co_qualname = & const_str_getmtime._ascii.ob_base,
+ .co_linetable = & genericpath_toplevel_consts_9_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x6a\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[62];
+ }
+genericpath_toplevel_consts_10_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 61,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Return the last access time of a file, reported by os.stat().",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+genericpath_toplevel_consts_10_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & genericpath_toplevel_consts_10_consts_0._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[9];
+ }
+const_str_st_atime = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 8,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "st_atime",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+genericpath_toplevel_consts_10_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ & const_str_os._ascii.ob_base,
+ & const_str_stat._ascii.ob_base,
+ & const_str_st_atime._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(64)
+genericpath_toplevel_consts_10 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 32,
+ },
+ .co_consts = & genericpath_toplevel_consts_10_consts._object.ob_base.ob_base,
+ .co_names = & genericpath_toplevel_consts_10_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 4 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 3,
+ .co_firstlineno = 70,
+ .co_nlocalsplus = 1,
+ .co_nlocals = 1,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 539,
+ .co_localsplusnames = & importlib__bootstrap_external_toplevel_consts_39_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_characters[32]),
+ .co_filename = & genericpath_toplevel_consts_4_filename._ascii.ob_base,
+ .co_name = & const_str_getatime._ascii.ob_base,
+ .co_qualname = & const_str_getatime._ascii.ob_base,
+ .co_linetable = & genericpath_toplevel_consts_9_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x6a\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[66];
+ }
+genericpath_toplevel_consts_11_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 65,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Return the metadata change time of a file, reported by os.stat().",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+genericpath_toplevel_consts_11_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & genericpath_toplevel_consts_11_consts_0._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[9];
+ }
+const_str_st_ctime = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 8,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "st_ctime",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+genericpath_toplevel_consts_11_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ & const_str_os._ascii.ob_base,
+ & const_str_stat._ascii.ob_base,
+ & const_str_st_ctime._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(64)
+genericpath_toplevel_consts_11 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 32,
+ },
+ .co_consts = & genericpath_toplevel_consts_11_consts._object.ob_base.ob_base,
+ .co_names = & genericpath_toplevel_consts_11_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 4 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 3,
+ .co_firstlineno = 75,
+ .co_nlocalsplus = 1,
+ .co_nlocals = 1,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 540,
+ .co_localsplusnames = & importlib__bootstrap_external_toplevel_consts_39_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_characters[32]),
+ .co_filename = & genericpath_toplevel_consts_4_filename._ascii.ob_base,
+ .co_name = & const_str_getctime._ascii.ob_base,
+ .co_qualname = & const_str_getctime._ascii.ob_base,
+ .co_linetable = & genericpath_toplevel_consts_9_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x6a\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[72];
+ }
+genericpath_toplevel_consts_12_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 71,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Given a list of pathnames, returns the longest common leading component",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[4];
+ }_object;
+ }
+genericpath_toplevel_consts_12_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_item = {
+ & genericpath_toplevel_consts_12_consts_0._ascii.ob_base,
+ &_Py_STR(empty),
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 0],
+ Py_None,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[4];
+ }
+const_str_min = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 3,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "min",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[10];
+ }
+const_str_enumerate = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 9,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "enumerate",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[9];
+ }_object;
+ }
+genericpath_toplevel_consts_12_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 9,
+ },
+ .ob_item = {
+ &_Py_ID(isinstance),
+ & const_str_list._ascii.ob_base,
+ & const_str_tuple._ascii.ob_base,
+ & const_str_map._ascii.ob_base,
+ & const_str_os._ascii.ob_base,
+ & const_str_fspath._ascii.ob_base,
+ & const_str_min._ascii.ob_base,
+ & const_str_max._ascii.ob_base,
+ & const_str_enumerate._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[119];
+ }
+genericpath_toplevel_consts_12_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 118,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xe1\x0b\x0c\x90\x52\xf4\x0a\x00\x0c\x16\x90\x61\x98\x01\x91\x64\x9c\x54\xa4\x35\x98\x4d\xd4\x0b\x2a\xdc\x0c\x11\x94\x23\x94\x62\x97\x69\x91\x69\xa0\x11\xd3\x12\x23\xd3\x0c\x24\x88\x01\xdc\x09\x0c\x88\x51\x8b\x16\x80\x42\xdc\x09\x0c\x88\x51\x8b\x16\x80\x42\xdc\x10\x19\x98\x22\x93\x0d\xf2\x00\x02\x05\x1a\x89\x04\x88\x01\x88\x31\xd8\x0b\x0c\x90\x02\x90\x31\x91\x05\x8b\x3a\xd8\x13\x15\x90\x62\x90\x71\x90\x36\x8a\x4d\xf0\x05\x02\x05\x1a\xf0\x06\x00\x0c\x0e\x80\x49",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[3];
+ }
+const_str_s1 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 2,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "s1",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[3];
+ }
+const_str_s2 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 2,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "s2",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[5];
+ }_object;
+ }
+genericpath_toplevel_consts_12_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 5,
+ },
+ .ob_item = {
+ (PyObject *)&_Py_SINGLETON(strings).ascii[109],
+ & const_str_s1._ascii.ob_base,
+ & const_str_s2._ascii.ob_base,
+ (PyObject *)&_Py_SINGLETON(strings).ascii[105],
+ &_Py_ID(c),
+ },
+ },
+};
+static
+ struct _PyCode_DEF(244)
+genericpath_toplevel_consts_12 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 122,
+ },
+ .co_consts = & genericpath_toplevel_consts_12_consts._object.ob_base.ob_base,
+ .co_names = & genericpath_toplevel_consts_12_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 11 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 6,
+ .co_firstlineno = 81,
+ .co_nlocalsplus = 5,
+ .co_nlocals = 5,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 541,
+ .co_localsplusnames = & genericpath_toplevel_consts_12_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_7_consts_5_localspluskinds.ob_base.ob_base,
+ .co_filename = & genericpath_toplevel_consts_4_filename._ascii.ob_base,
+ .co_name = & const_str_commonprefix._ascii.ob_base,
+ .co_qualname = & const_str_commonprefix._ascii.ob_base,
+ .co_linetable = & genericpath_toplevel_consts_12_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x00\x73\x01\x79\x01\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x64\x02\x19\x00\x00\x00\x74\x02\x00\x00\x00\x00\x00\x00\x00\x00\x74\x04\x00\x00\x00\x00\x00\x00\x00\x00\x66\x02\xab\x02\x00\x00\x00\x00\x00\x00\x73\x23\x74\x05\x00\x00\x00\x00\x00\x00\x00\x00\x74\x07\x00\x00\x00\x00\x00\x00\x00\x00\x74\x08\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x02\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x00\x74\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x01\x74\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x02\x74\x11\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\xab\x01\x00\x00\x00\x00\x00\x00\x44\x00\x5d\x14\x00\x00\x5c\x02\x00\x00\x7d\x03\x7d\x04\x7c\x04\x7c\x02\x7c\x03\x19\x00\x00\x00\x6b\x37\x00\x00\x73\x01\x8c\x0f\x7c\x01\x64\x03\x7c\x03\x1a\x00\x63\x02\x01\x00\x53\x00\x04\x00\x7c\x01\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[54];
+ }
+genericpath_toplevel_consts_13_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 53,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Test whether two stat buffers reference the same file",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+genericpath_toplevel_consts_13_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & genericpath_toplevel_consts_13_consts_0._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[7];
+ }
+const_str_st_ino = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 6,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "st_ino",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[7];
+ }
+const_str_st_dev = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 6,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "st_dev",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+genericpath_toplevel_consts_13_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & const_str_st_ino._ascii.ob_base,
+ & const_str_st_dev._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[45];
+ }
+genericpath_toplevel_consts_13_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 44,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xe0\x0c\x0e\x8f\x49\x89\x49\x98\x12\x9f\x19\x99\x19\xd1\x0c\x22\xf2\x00\x01\x0d\x23\xd8\x0c\x0e\x8f\x49\x89\x49\x98\x12\x9f\x19\x99\x19\xd1\x0c\x22\xf0\x03\x01\x05\x24",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+genericpath_toplevel_consts_13_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & const_str_s1._ascii.ob_base,
+ & const_str_s2._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(106)
+genericpath_toplevel_consts_13 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 53,
+ },
+ .co_consts = & genericpath_toplevel_consts_13_consts._object.ob_base.ob_base,
+ .co_names = & genericpath_toplevel_consts_13_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 4 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 2,
+ .co_firstlineno = 99,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 2,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 542,
+ .co_localsplusnames = & genericpath_toplevel_consts_13_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_14_consts_2_localspluskinds.ob_base.ob_base,
+ .co_filename = & genericpath_toplevel_consts_4_filename._ascii.ob_base,
+ .co_name = & const_str_samestat._ascii.ob_base,
+ .co_qualname = & const_str_samestat._ascii.ob_base,
+ .co_linetable = & genericpath_toplevel_consts_13_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6b\x28\x00\x00\x78\x01\x72\x19\x01\x00\x7c\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6b\x28\x00\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[214];
+ }
+genericpath_toplevel_consts_14_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 213,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x54\x65\x73\x74\x20\x77\x68\x65\x74\x68\x65\x72\x20\x74\x77\x6f\x20\x70\x61\x74\x68\x6e\x61\x6d\x65\x73\x20\x72\x65\x66\x65\x72\x65\x6e\x63\x65\x20\x74\x68\x65\x20\x73\x61\x6d\x65\x20\x61\x63\x74\x75\x61\x6c\x20\x66\x69\x6c\x65\x20\x6f\x72\x20\x64\x69\x72\x65\x63\x74\x6f\x72\x79\x0a\x0a\x20\x20\x20\x20\x54\x68\x69\x73\x20\x69\x73\x20\x64\x65\x74\x65\x72\x6d\x69\x6e\x65\x64\x20\x62\x79\x20\x74\x68\x65\x20\x64\x65\x76\x69\x63\x65\x20\x6e\x75\x6d\x62\x65\x72\x20\x61\x6e\x64\x20\x69\x2d\x6e\x6f\x64\x65\x20\x6e\x75\x6d\x62\x65\x72\x20\x61\x6e\x64\x0a\x20\x20\x20\x20\x72\x61\x69\x73\x65\x73\x20\x61\x6e\x20\x65\x78\x63\x65\x70\x74\x69\x6f\x6e\x20\x69\x66\x20\x61\x6e\x20\x6f\x73\x2e\x73\x74\x61\x74\x28\x29\x20\x63\x61\x6c\x6c\x20\x6f\x6e\x20\x65\x69\x74\x68\x65\x72\x20\x70\x61\x74\x68\x6e\x61\x6d\x65\x20\x66\x61\x69\x6c\x73\x2e\x0a\x20\x20\x20\x20",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+genericpath_toplevel_consts_14_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & genericpath_toplevel_consts_14_consts_0._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+genericpath_toplevel_consts_14_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ & const_str_os._ascii.ob_base,
+ & const_str_stat._ascii.ob_base,
+ & const_str_samestat._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[44];
+ }
+genericpath_toplevel_consts_14_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 43,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf4\x0c\x00\x0a\x0c\x8f\x17\x89\x17\x90\x12\x8b\x1b\x80\x42\xdc\x09\x0b\x8f\x17\x89\x17\x90\x12\x8b\x1b\x80\x42\xdc\x0b\x13\x90\x42\x98\x02\xd3\x0b\x1b\xd0\x04\x1b",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[3];
+ }
+const_str_f1 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 2,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "f1",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[3];
+ }
+const_str_f2 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 2,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "f2",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[4];
+ }_object;
+ }
+genericpath_toplevel_consts_14_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_item = {
+ & const_str_f1._ascii.ob_base,
+ & const_str_f2._ascii.ob_base,
+ & const_str_s1._ascii.ob_base,
+ & const_str_s2._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(110)
+genericpath_toplevel_consts_14 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 55,
+ },
+ .co_consts = & genericpath_toplevel_consts_14_consts._object.ob_base.ob_base,
+ .co_names = & genericpath_toplevel_consts_14_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 8 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 106,
+ .co_nlocalsplus = 4,
+ .co_nlocals = 4,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 543,
+ .co_localsplusnames = & genericpath_toplevel_consts_14_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_7_consts_3_localspluskinds.ob_base.ob_base,
+ .co_filename = & genericpath_toplevel_consts_4_filename._ascii.ob_base,
+ .co_name = & const_str_samefile._ascii.ob_base,
+ .co_qualname = & const_str_samefile._ascii.ob_base,
+ .co_linetable = & genericpath_toplevel_consts_14_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x02\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x03\x74\x05\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x02\x7c\x03\xab\x02\x00\x00\x00\x00\x00\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[59];
+ }
+genericpath_toplevel_consts_15_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 58,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Test whether two open file objects reference the same file",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+genericpath_toplevel_consts_15_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & genericpath_toplevel_consts_15_consts_0._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[6];
+ }
+const_str_fstat = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 5,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "fstat",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+genericpath_toplevel_consts_15_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ & const_str_os._ascii.ob_base,
+ & const_str_fstat._ascii.ob_base,
+ & const_str_samestat._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[42];
+ }
+genericpath_toplevel_consts_15_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 41,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xe4\x09\x0b\x8f\x18\x89\x18\x90\x23\x8b\x1d\x80\x42\xdc\x09\x0b\x8f\x18\x89\x18\x90\x23\x8b\x1d\x80\x42\xdc\x0b\x13\x90\x42\x98\x02\xd3\x0b\x1b\xd0\x04\x1b",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[4];
+ }
+const_str_fp1 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 3,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "fp1",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[4];
+ }
+const_str_fp2 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 3,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "fp2",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[4];
+ }_object;
+ }
+genericpath_toplevel_consts_15_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_item = {
+ & const_str_fp1._ascii.ob_base,
+ & const_str_fp2._ascii.ob_base,
+ & const_str_s1._ascii.ob_base,
+ & const_str_s2._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(110)
+genericpath_toplevel_consts_15 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 55,
+ },
+ .co_consts = & genericpath_toplevel_consts_15_consts._object.ob_base.ob_base,
+ .co_names = & genericpath_toplevel_consts_15_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 8 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 119,
+ .co_nlocalsplus = 4,
+ .co_nlocals = 4,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 544,
+ .co_localsplusnames = & genericpath_toplevel_consts_15_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_7_consts_3_localspluskinds.ob_base.ob_base,
+ .co_filename = & genericpath_toplevel_consts_4_filename._ascii.ob_base,
+ .co_name = & const_str_sameopenfile._ascii.ob_base,
+ .co_qualname = & const_str_sameopenfile._ascii.ob_base,
+ .co_linetable = & genericpath_toplevel_consts_15_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x02\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x03\x74\x05\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x02\x7c\x03\xab\x02\x00\x00\x00\x00\x00\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[165];
+ }
+genericpath_toplevel_consts_16_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 164,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x53\x70\x6c\x69\x74\x20\x74\x68\x65\x20\x65\x78\x74\x65\x6e\x73\x69\x6f\x6e\x20\x66\x72\x6f\x6d\x20\x61\x20\x70\x61\x74\x68\x6e\x61\x6d\x65\x2e\x0a\x0a\x20\x20\x20\x20\x45\x78\x74\x65\x6e\x73\x69\x6f\x6e\x20\x69\x73\x20\x65\x76\x65\x72\x79\x74\x68\x69\x6e\x67\x20\x66\x72\x6f\x6d\x20\x74\x68\x65\x20\x6c\x61\x73\x74\x20\x64\x6f\x74\x20\x74\x6f\x20\x74\x68\x65\x20\x65\x6e\x64\x2c\x20\x69\x67\x6e\x6f\x72\x69\x6e\x67\x0a\x20\x20\x20\x20\x6c\x65\x61\x64\x69\x6e\x67\x20\x64\x6f\x74\x73\x2e\x20\x20\x52\x65\x74\x75\x72\x6e\x73\x20\x22\x28\x72\x6f\x6f\x74\x2c\x20\x65\x78\x74\x29\x22\x3b\x20\x65\x78\x74\x20\x6d\x61\x79\x20\x62\x65\x20\x65\x6d\x70\x74\x79\x2e",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[4];
+ }_object;
+ }
+genericpath_toplevel_consts_16_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_item = {
+ & genericpath_toplevel_consts_16_consts_0._ascii.ob_base,
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 1],
+ Py_None,
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 0],
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+genericpath_toplevel_consts_16_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & const_str_rfind._ascii.ob_base,
+ & const_str_max._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[10];
+ }
+const_str__splitext = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 9,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_splitext",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[163];
+ }
+genericpath_toplevel_consts_16_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 162,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf0\x0e\x00\x10\x11\x8f\x77\x89\x77\x90\x73\x8b\x7c\x80\x48\xd9\x07\x0d\xd8\x16\x17\x97\x67\x91\x67\x98\x66\x93\x6f\x88\x0b\xdc\x13\x16\x90\x78\xa0\x1b\xd3\x13\x2d\x88\x08\xe0\x0f\x10\x8f\x77\x89\x77\x90\x76\x8b\x7f\x80\x48\xd8\x07\x0f\x90\x28\xd2\x07\x1a\xe0\x18\x20\xa0\x31\x99\x0c\x88\x0d\xd8\x0e\x1b\x98\x68\xd2\x0e\x26\xd8\x0f\x10\x90\x1d\x98\x7d\xa8\x51\x99\x7f\xd0\x0f\x2f\xb0\x36\xd2\x0f\x39\xd8\x17\x18\x98\x19\x98\x28\x90\x7c\xa0\x51\xa0\x78\xa0\x79\xa0\x5c\xd0\x17\x31\xd0\x10\x31\xd8\x0c\x19\x98\x51\xd1\x0c\x1e\x88\x4d\xf0\x07\x00\x0f\x1c\x98\x68\xd3\x0e\x26\xf0\x0a\x00\x0c\x0d\x88\x61\x90\x02\x90\x11\x88\x65\x88\x38\x80\x4f",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[7];
+ }
+const_str_altsep = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 6,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "altsep",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[7];
+ }
+const_str_extsep = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 6,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "extsep",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[9];
+ }
+const_str_sepIndex = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 8,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "sepIndex",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[12];
+ }
+const_str_altsepIndex = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 11,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "altsepIndex",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[9];
+ }
+const_str_dotIndex = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 8,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "dotIndex",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[14];
+ }
+const_str_filenameIndex = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 13,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "filenameIndex",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[8];
+ }_object;
+ }
+genericpath_toplevel_consts_16_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 8,
+ },
+ .ob_item = {
+ &_Py_ID(p),
+ &_Py_ID(sep),
+ & const_str_altsep._ascii.ob_base,
+ & const_str_extsep._ascii.ob_base,
+ & const_str_sepIndex._ascii.ob_base,
+ & const_str_altsepIndex._ascii.ob_base,
+ & const_str_dotIndex._ascii.ob_base,
+ & const_str_filenameIndex._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(240)
+genericpath_toplevel_consts_16 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 120,
+ },
+ .co_consts = & genericpath_toplevel_consts_16_consts._object.ob_base.ob_base,
+ .co_names = & genericpath_toplevel_consts_16_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 4,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 12 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 133,
+ .co_nlocalsplus = 8,
+ .co_nlocals = 8,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 545,
+ .co_localsplusnames = & genericpath_toplevel_consts_16_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_13_localspluskinds.ob_base.ob_base,
+ .co_filename = & genericpath_toplevel_consts_4_filename._ascii.ob_base,
+ .co_name = & const_str__splitext._ascii.ob_base,
+ .co_qualname = & const_str__splitext._ascii.ob_base,
+ .co_linetable = & genericpath_toplevel_consts_16_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x00\x6a\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x04\x7c\x02\x72\x1d\x7c\x00\x6a\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x02\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x05\x74\x03\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x04\x7c\x05\xab\x02\x00\x00\x00\x00\x00\x00\x7d\x04\x7c\x00\x6a\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x03\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x06\x7c\x06\x7c\x04\x6b\x44\x00\x00\x72\x2a\x7c\x04\x64\x01\x7a\x00\x00\x00\x7d\x07\x7c\x07\x7c\x06\x6b\x02\x00\x00\x72\x20\x7c\x00\x7c\x07\x7c\x07\x64\x01\x7a\x00\x00\x00\x1a\x00\x7c\x03\x6b\x37\x00\x00\x72\x0a\x7c\x00\x64\x02\x7c\x06\x1a\x00\x7c\x00\x7c\x06\x64\x02\x1a\x00\x66\x02\x53\x00\x7c\x07\x64\x01\x7a\x0d\x00\x00\x7d\x07\x7c\x07\x7c\x06\x6b\x02\x00\x00\x72\x01\x8c\x20\x7c\x00\x7c\x00\x64\x02\x64\x03\x1a\x00\x66\x02\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[60];
+ }
+genericpath_toplevel_consts_17_consts_3 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 59,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "() argument must be str, bytes, or os.PathLike object, not ",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[47];
+ }
+genericpath_toplevel_consts_17_consts_4 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 46,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Can't mix strings and bytes in path components",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[5];
+ }_object;
+ }
+genericpath_toplevel_consts_17_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 5,
+ },
+ .ob_item = {
+ Py_None,
+ Py_False,
+ Py_True,
+ & genericpath_toplevel_consts_17_consts_3._ascii.ob_base,
+ & genericpath_toplevel_consts_17_consts_4._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[6];
+ }_object;
+ }
+genericpath_toplevel_consts_17_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 6,
+ },
+ .ob_item = {
+ &_Py_ID(isinstance),
+ & const_str_str._ascii.ob_base,
+ &_Py_ID(bytes),
+ & const_str_TypeError._ascii.ob_base,
+ &_Py_ID(__class__),
+ &_Py_ID(__name__),
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[17];
+ }
+const_str__check_arg_types = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 16,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_check_arg_types",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[137];
+ }
+genericpath_toplevel_consts_17_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 136,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xd8\x18\x1d\xd0\x04\x1d\x80\x46\x88\x58\xd8\x0d\x11\xf2\x00\x07\x05\x5b\x01\x88\x01\xdc\x0b\x15\x90\x61\x9c\x13\xd4\x0b\x1d\xd8\x15\x19\x89\x46\xdc\x0d\x17\x98\x01\x9c\x35\xd4\x0d\x21\xd8\x17\x1b\x89\x48\xe4\x12\x1b\x98\x78\x98\x6a\xf0\x00\x01\x29\x37\xd8\x37\x38\xb7\x7b\xb1\x7b\xd7\x37\x4b\xd1\x37\x4b\xd0\x36\x4e\xf0\x03\x01\x1d\x50\x01\xf3\x00\x01\x13\x51\x01\xd8\x56\x5a\xf0\x03\x01\x0d\x5b\x01\xf0\x0d\x07\x05\x5b\x01\xf1\x10\x00\x08\x0e\x91\x28\xdc\x0e\x17\xd0\x18\x48\xd3\x0e\x49\xc8\x74\xd0\x08\x53\xf0\x03\x00\x13\x1b\x80\x76",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[9];
+ }
+const_str_funcname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 8,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "funcname",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[7];
+ }
+const_str_hasstr = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 6,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "hasstr",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[9];
+ }
+const_str_hasbytes = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 8,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "hasbytes",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[5];
+ }_object;
+ }
+genericpath_toplevel_consts_17_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 5,
+ },
+ .ob_item = {
+ & const_str_funcname._ascii.ob_base,
+ &_Py_ID(args),
+ & const_str_hasstr._ascii.ob_base,
+ & const_str_hasbytes._ascii.ob_base,
+ &_Py_ID(s),
+ },
+ },
+};
+static
+ struct _PyCode_DEF(208)
+genericpath_toplevel_consts_17 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 104,
+ },
+ .co_consts = & genericpath_toplevel_consts_17_consts._object.ob_base.ob_base,
+ .co_names = & genericpath_toplevel_consts_17_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 7,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 11 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 6,
+ .co_firstlineno = 156,
+ .co_nlocalsplus = 5,
+ .co_nlocals = 5,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 546,
+ .co_localsplusnames = & genericpath_toplevel_consts_17_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_7_consts_5_localspluskinds.ob_base.ob_base,
+ .co_filename = & genericpath_toplevel_consts_4_filename._ascii.ob_base,
+ .co_name = & const_str__check_arg_types._ascii.ob_base,
+ .co_qualname = & const_str__check_arg_types._ascii.ob_base,
+ .co_linetable = & genericpath_toplevel_consts_17_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x64\x01\x78\x01\x7d\x02\x7d\x03\x7c\x01\x44\x00\x5d\x4c\x00\x00\x7d\x04\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x04\x74\x02\x00\x00\x00\x00\x00\x00\x00\x00\xab\x02\x00\x00\x00\x00\x00\x00\x72\x03\x64\x02\x7d\x02\x8c\x16\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x04\x74\x04\x00\x00\x00\x00\x00\x00\x00\x00\xab\x02\x00\x00\x00\x00\x00\x00\x72\x03\x64\x02\x7d\x03\x8c\x29\x74\x07\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x9b\x00\x64\x03\x7c\x04\x6a\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9b\x02\x9d\x03\xab\x01\x00\x00\x00\x00\x00\x00\x64\x00\x82\x02\x04\x00\x7c\x02\x72\x0f\x7c\x03\x72\x0c\x74\x07\x00\x00\x00\x00\x00\x00\x00\x00\x64\x04\xab\x01\x00\x00\x00\x00\x00\x00\x64\x00\x82\x02\x79\x00\x79\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[18];
+ }_object;
+ }
+genericpath_toplevel_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 18,
+ },
+ .ob_item = {
+ & genericpath_toplevel_consts_0._ascii.ob_base,
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 0],
+ Py_None,
+ & genericpath_toplevel_consts_3._object.ob_base.ob_base,
+ & genericpath_toplevel_consts_4.ob_base.ob_base,
+ & genericpath_toplevel_consts_5.ob_base.ob_base,
+ & genericpath_toplevel_consts_6.ob_base.ob_base,
+ & genericpath_toplevel_consts_7.ob_base.ob_base,
+ & genericpath_toplevel_consts_8.ob_base.ob_base,
+ & genericpath_toplevel_consts_9.ob_base.ob_base,
+ & genericpath_toplevel_consts_10.ob_base.ob_base,
+ & genericpath_toplevel_consts_11.ob_base.ob_base,
+ & genericpath_toplevel_consts_12.ob_base.ob_base,
+ & genericpath_toplevel_consts_13.ob_base.ob_base,
+ & genericpath_toplevel_consts_14.ob_base.ob_base,
+ & genericpath_toplevel_consts_15.ob_base.ob_base,
+ & genericpath_toplevel_consts_16.ob_base.ob_base,
+ & genericpath_toplevel_consts_17.ob_base.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[18];
+ }_object;
+ }
+genericpath_toplevel_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 18,
+ },
+ .ob_item = {
+ &_Py_ID(__doc__),
+ & const_str_os._ascii.ob_base,
+ & const_str_stat._ascii.ob_base,
+ &_Py_ID(__all__),
+ & const_str_exists._ascii.ob_base,
+ & const_str_isfile._ascii.ob_base,
+ & const_str_isdir._ascii.ob_base,
+ & const_str_islink._ascii.ob_base,
+ & const_str_getsize._ascii.ob_base,
+ & const_str_getmtime._ascii.ob_base,
+ & const_str_getatime._ascii.ob_base,
+ & const_str_getctime._ascii.ob_base,
+ & const_str_commonprefix._ascii.ob_base,
+ & const_str_samestat._ascii.ob_base,
+ & const_str_samefile._ascii.ob_base,
+ & const_str_sameopenfile._ascii.ob_base,
+ & const_str__splitext._ascii.ob_base,
+ & const_str__check_arg_types._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[97];
+ }
+genericpath_toplevel_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 96,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\xf0\x03\x01\x01\x01\xf1\x02\x04\x01\x04\xf3\x0a\x00\x01\x0a\xdb\x00\x0b\xf2\x04\x02\x0b\x17\x80\x07\xf2\x0e\x06\x01\x10\xf2\x16\x06\x01\x24\xf2\x18\x06\x01\x24\xf2\x18\x06\x01\x24\xf2\x12\x02\x01\x25\xf2\x0a\x02\x01\x26\xf2\x0a\x02\x01\x26\xf2\x0a\x02\x01\x26\xf2\x0c\x0e\x01\x0e\xf2\x24\x03\x01\x24\xf2\x0e\x08\x01\x1c\xf2\x1a\x04\x01\x1c\xf2\x1c\x15\x01\x14\xf3\x2e\x0b\x01\x54\x01",
+};
+static
+ struct _PyCode_DEF(116)
+genericpath_toplevel = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 58,
+ },
+ .co_consts = & genericpath_toplevel_consts._object.ob_base.ob_base,
+ .co_names = & genericpath_toplevel_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 0,
+ .co_argcount = 0,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 2 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 2,
+ .co_firstlineno = 1,
+ .co_nlocalsplus = 0,
+ .co_nlocals = 0,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 547,
+ .co_localsplusnames = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_filename = & genericpath_toplevel_consts_4_filename._ascii.ob_base,
+ .co_name = &_Py_STR(anon_module),
+ .co_qualname = &_Py_STR(anon_module),
+ .co_linetable = & genericpath_toplevel_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x64\x00\x5a\x00\x64\x01\x64\x02\x6c\x01\x5a\x01\x64\x01\x64\x02\x6c\x02\x5a\x02\x67\x00\x64\x03\xa2\x01\x5a\x03\x64\x04\x84\x00\x5a\x04\x64\x05\x84\x00\x5a\x05\x64\x06\x84\x00\x5a\x06\x64\x07\x84\x00\x5a\x07\x64\x08\x84\x00\x5a\x08\x64\x09\x84\x00\x5a\x09\x64\x0a\x84\x00\x5a\x0a\x64\x0b\x84\x00\x5a\x0b\x64\x0c\x84\x00\x5a\x0c\x64\x0d\x84\x00\x5a\x0d\x64\x0e\x84\x00\x5a\x0e\x64\x0f\x84\x00\x5a\x0f\x64\x10\x84\x00\x5a\x10\x64\x11\x84\x00\x5a\x11\x79\x02",
+ ._co_firsttraceable = 0,
+};
+
+PyObject *
+_Py_get_genericpath_toplevel(void)
+{
+ return Py_NewRef((PyObject *) &genericpath_toplevel);
+}
+
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[145];
+ }
+ntpath_toplevel_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 144,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x43\x6f\x6d\x6d\x6f\x6e\x20\x70\x61\x74\x68\x6e\x61\x6d\x65\x20\x6d\x61\x6e\x69\x70\x75\x6c\x61\x74\x69\x6f\x6e\x73\x2c\x20\x57\x69\x6e\x64\x6f\x77\x73\x4e\x54\x2f\x39\x35\x20\x76\x65\x72\x73\x69\x6f\x6e\x2e\x0a\x0a\x49\x6e\x73\x74\x65\x61\x64\x20\x6f\x66\x20\x69\x6d\x70\x6f\x72\x74\x69\x6e\x67\x20\x74\x68\x69\x73\x20\x6d\x6f\x64\x75\x6c\x65\x20\x64\x69\x72\x65\x63\x74\x6c\x79\x2c\x20\x69\x6d\x70\x6f\x72\x74\x20\x6f\x73\x20\x61\x6e\x64\x20\x72\x65\x66\x65\x72\x20\x74\x6f\x20\x74\x68\x69\x73\x0a\x6d\x6f\x64\x75\x6c\x65\x20\x61\x73\x20\x6f\x73\x2e\x70\x61\x74\x68\x2e\x0a",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[3];
+ }
+ntpath_toplevel_consts_2 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 2,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "..",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[9];
+ }
+ntpath_toplevel_consts_6 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 8,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = ".;C:\\bin",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[4];
+ }
+const_str_nul = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 3,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "nul",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[9];
+ }
+const_str_normcase = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 8,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "normcase",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[6];
+ }
+const_str_isabs = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 5,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "isabs",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[11];
+ }
+const_str_splitdrive = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 10,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "splitdrive",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[10];
+ }
+const_str_splitroot = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 9,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "splitroot",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[9];
+ }
+const_str_splitext = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 8,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "splitext",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[8];
+ }
+const_str_lexists = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 7,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "lexists",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[8];
+ }
+const_str_ismount = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 7,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "ismount",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[11];
+ }
+const_str_expanduser = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 10,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "expanduser",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[11];
+ }
+const_str_expandvars = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 10,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "expandvars",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[9];
+ }
+const_str_normpath = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 8,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "normpath",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[8];
+ }
+const_str_abspath = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 7,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "abspath",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[7];
+ }
+const_str_curdir = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 6,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "curdir",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[7];
+ }
+const_str_pardir = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 6,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "pardir",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[8];
+ }
+const_str_pathsep = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 7,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "pathsep",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[8];
+ }
+const_str_defpath = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 7,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "defpath",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[8];
+ }
+const_str_devnull = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 7,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "devnull",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[9];
+ }
+const_str_realpath = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 8,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "realpath",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[27];
+ }
+const_str_supports_unicode_filenames = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 26,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "supports_unicode_filenames",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[8];
+ }
+const_str_relpath = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 7,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "relpath",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[11];
+ }
+const_str_commonpath = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 10,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "commonpath",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[11];
+ }
+const_str_isjunction = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 10,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "isjunction",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[40];
+ }_object;
+ }
+ntpath_toplevel_consts_11 = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 40,
+ },
+ .ob_item = {
+ & const_str_normcase._ascii.ob_base,
+ & const_str_isabs._ascii.ob_base,
+ &_Py_ID(join),
+ & const_str_splitdrive._ascii.ob_base,
+ & const_str_splitroot._ascii.ob_base,
+ & const_str_split._ascii.ob_base,
+ & const_str_splitext._ascii.ob_base,
+ & const_str_basename._ascii.ob_base,
+ & const_str_dirname._ascii.ob_base,
+ & const_str_commonprefix._ascii.ob_base,
+ & const_str_getsize._ascii.ob_base,
+ & const_str_getmtime._ascii.ob_base,
+ & const_str_getatime._ascii.ob_base,
+ & const_str_getctime._ascii.ob_base,
+ & const_str_islink._ascii.ob_base,
+ & const_str_exists._ascii.ob_base,
+ & const_str_lexists._ascii.ob_base,
+ & const_str_isdir._ascii.ob_base,
+ & const_str_isfile._ascii.ob_base,
+ & const_str_ismount._ascii.ob_base,
+ & const_str_expanduser._ascii.ob_base,
+ & const_str_expandvars._ascii.ob_base,
+ & const_str_normpath._ascii.ob_base,
+ & const_str_abspath._ascii.ob_base,
+ & const_str_curdir._ascii.ob_base,
+ & const_str_pardir._ascii.ob_base,
+ &_Py_ID(sep),
+ & const_str_pathsep._ascii.ob_base,
+ & const_str_defpath._ascii.ob_base,
+ & const_str_altsep._ascii.ob_base,
+ & const_str_extsep._ascii.ob_base,
+ & const_str_devnull._ascii.ob_base,
+ & const_str_realpath._ascii.ob_base,
+ & const_str_supports_unicode_filenames._ascii.ob_base,
+ & const_str_relpath._ascii.ob_base,
+ & const_str_samefile._ascii.ob_base,
+ & const_str_sameopenfile._ascii.ob_base,
+ & const_str_samestat._ascii.ob_base,
+ & const_str_commonpath._ascii.ob_base,
+ & const_str_isjunction._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[3];
+ }
+ntpath_toplevel_consts_12_consts_1 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\\/",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[3];
+ }
+ntpath_toplevel_consts_12_consts_2 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 2,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\\/",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+ntpath_toplevel_consts_12_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ Py_None,
+ & ntpath_toplevel_consts_12_consts_1.ob_base.ob_base,
+ & ntpath_toplevel_consts_12_consts_2._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+ntpath_toplevel_consts_12_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ &_Py_ID(isinstance),
+ &_Py_ID(bytes),
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[16];
+ }
+ntpath_toplevel_consts_12_filename = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 15,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "<frozen ntpath>",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[14];
+ }
+const_str__get_bothseps = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 13,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_get_bothseps",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[19];
+ }
+ntpath_toplevel_consts_12_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 18,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xdc\x07\x11\x90\x24\x9c\x05\xd4\x07\x1e\xd8\x0f\x15\xe0\x0f\x14",
+};
+static
+ struct _PyCode_DEF(38)
+ntpath_toplevel_consts_12 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 19,
+ },
+ .co_consts = & ntpath_toplevel_consts_12_consts._object.ob_base.ob_base,
+ .co_names = & ntpath_toplevel_consts_12_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 5 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 35,
+ .co_nlocalsplus = 1,
+ .co_nlocals = 1,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 548,
+ .co_localsplusnames = & importlib__bootstrap_external_toplevel_consts_18_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_characters[32]),
+ .co_filename = & ntpath_toplevel_consts_12_filename._ascii.ob_base,
+ .co_name = & const_str__get_bothseps._ascii.ob_base,
+ .co_qualname = & const_str__get_bothseps._ascii.ob_base,
+ .co_linetable = & ntpath_toplevel_consts_12_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x74\x02\x00\x00\x00\x00\x00\x00\x00\x00\xab\x02\x00\x00\x00\x00\x00\x00\x72\x01\x79\x01\x79\x02",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[14];
+ }
+const_str_LCMapStringEx = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 13,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "LCMapStringEx",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[22];
+ }
+const_str_LOCALE_NAME_INVARIANT = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 21,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "LOCALE_NAME_INVARIANT",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[16];
+ }
+const_str_LCMAP_LOWERCASE = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 15,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "LCMAP_LOWERCASE",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+ntpath_toplevel_consts_13 = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ & const_str_LCMapStringEx._ascii.ob_base,
+ & const_str_LOCALE_NAME_INVARIANT._ascii.ob_base,
+ & const_str_LCMAP_LOWERCASE._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[111];
+ }
+ntpath_toplevel_consts_14_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 110,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x4e\x6f\x72\x6d\x61\x6c\x69\x7a\x65\x20\x63\x61\x73\x65\x20\x6f\x66\x20\x70\x61\x74\x68\x6e\x61\x6d\x65\x2e\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x4d\x61\x6b\x65\x73\x20\x61\x6c\x6c\x20\x63\x68\x61\x72\x61\x63\x74\x65\x72\x73\x20\x6c\x6f\x77\x65\x72\x63\x61\x73\x65\x20\x61\x6e\x64\x20\x61\x6c\x6c\x20\x73\x6c\x61\x73\x68\x65\x73\x20\x69\x6e\x74\x6f\x20\x62\x61\x63\x6b\x73\x6c\x61\x73\x68\x65\x73\x2e\x0a\x20\x20\x20\x20\x20\x20\x20\x20",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[16];
+ }
+const_str_surrogateescape = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 15,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "surrogateescape",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[4];
+ }_object;
+ }
+ntpath_toplevel_consts_14_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_item = {
+ & ntpath_toplevel_consts_14_consts_0._ascii.ob_base,
+ & const_str_surrogateescape._ascii.ob_base,
+ (PyObject *)&_Py_SINGLETON(strings).ascii[47],
+ (PyObject *)&_Py_SINGLETON(strings).ascii[92],
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[22];
+ }
+const_str_getfilesystemencoding = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 21,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "getfilesystemencoding",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[15];
+ }
+const_str__LCMapStringEx = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 14,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_LCMapStringEx",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[23];
+ }
+const_str__LOCALE_NAME_INVARIANT = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 22,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_LOCALE_NAME_INVARIANT",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[17];
+ }
+const_str__LCMAP_LOWERCASE = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 16,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_LCMAP_LOWERCASE",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[12];
+ }_object;
+ }
+ntpath_toplevel_consts_14_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 12,
+ },
+ .ob_item = {
+ & const_str_os._ascii.ob_base,
+ & const_str_fspath._ascii.ob_base,
+ &_Py_ID(isinstance),
+ &_Py_ID(bytes),
+ & const_str_sys._ascii.ob_base,
+ & const_str_getfilesystemencoding._ascii.ob_base,
+ &_Py_ID(decode),
+ &_Py_ID(replace),
+ & const_str__LCMapStringEx._ascii.ob_base,
+ & const_str__LOCALE_NAME_INVARIANT._ascii.ob_base,
+ & const_str__LCMAP_LOWERCASE._ascii.ob_base,
+ &_Py_ID(encode),
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[149];
+ }
+ntpath_toplevel_consts_14_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 148,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf4\x0a\x00\x0d\x0f\x8f\x49\x89\x49\x90\x61\x8b\x4c\x88\x01\xd9\x0f\x10\xd8\x13\x14\x88\x48\xdc\x0b\x15\x90\x61\x9c\x15\xd4\x0b\x1f\xdc\x17\x1a\xd7\x17\x30\xd1\x17\x30\xd3\x17\x32\x88\x48\xd8\x10\x11\x97\x08\x91\x08\x98\x18\xd0\x23\x34\xd3\x10\x35\xd7\x10\x3d\xd1\x10\x3d\xb8\x63\xc0\x34\xd3\x10\x48\x88\x41\xdc\x10\x1e\xd4\x1f\x35\xdc\x1f\x2f\xb0\x11\xf3\x03\x01\x11\x34\x88\x41\xe0\x13\x14\x97\x38\x91\x38\x98\x48\xd0\x26\x37\xd3\x13\x38\xd0\x0c\x38\xe4\x13\x21\xd4\x22\x38\xdc\x22\x32\xd8\x22\x23\xa7\x29\xa1\x29\xa8\x43\xb0\x14\xd3\x22\x36\xf3\x05\x02\x14\x38\xf0\x00\x02\x0d\x38",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+ntpath_toplevel_consts_14_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ &_Py_ID(s),
+ &_Py_ID(encoding),
+ },
+ },
+};
+static
+ struct _PyCode_DEF(344)
+ntpath_toplevel_consts_14 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 172,
+ },
+ .co_consts = & ntpath_toplevel_consts_14_consts._object.ob_base.ob_base,
+ .co_names = & ntpath_toplevel_consts_14_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 10 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 8,
+ .co_firstlineno = 51,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 2,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 549,
+ .co_localsplusnames = & ntpath_toplevel_consts_14_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_14_consts_2_localspluskinds.ob_base.ob_base,
+ .co_filename = & ntpath_toplevel_consts_12_filename._ascii.ob_base,
+ .co_name = & const_str_normcase._ascii.ob_base,
+ .co_qualname = & const_str_normcase._ascii.ob_base,
+ .co_linetable = & ntpath_toplevel_consts_14_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x00\x7c\x00\x73\x02\x7c\x00\x53\x00\x74\x05\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x74\x06\x00\x00\x00\x00\x00\x00\x00\x00\xab\x02\x00\x00\x00\x00\x00\x00\x72\x5d\x74\x09\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x7d\x01\x7c\x00\x6a\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x64\x01\xab\x02\x00\x00\x00\x00\x00\x00\x6a\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x02\x64\x03\xab\x02\x00\x00\x00\x00\x00\x00\x7d\x00\x74\x11\x00\x00\x00\x00\x00\x00\x00\x00\x74\x12\x00\x00\x00\x00\x00\x00\x00\x00\x74\x14\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x03\x00\x00\x00\x00\x00\x00\x7d\x00\x7c\x00\x6a\x17\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x64\x01\xab\x02\x00\x00\x00\x00\x00\x00\x53\x00\x74\x11\x00\x00\x00\x00\x00\x00\x00\x00\x74\x12\x00\x00\x00\x00\x00\x00\x00\x00\x74\x14\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x6a\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x02\x64\x03\xab\x02\x00\x00\x00\x00\x00\x00\xab\x03\x00\x00\x00\x00\x00\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+ntpath_toplevel_consts_15_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ & ntpath_toplevel_consts_14_consts_0._ascii.ob_base,
+ (PyObject *)&_Py_SINGLETON(strings).ascii[47],
+ (PyObject *)&_Py_SINGLETON(strings).ascii[92],
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[9];
+ }
+const_str_fsencode = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 8,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "fsencode",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[9];
+ }
+const_str_fsdecode = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 8,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "fsdecode",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[8];
+ }_object;
+ }
+ntpath_toplevel_consts_15_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 8,
+ },
+ .ob_item = {
+ & const_str_os._ascii.ob_base,
+ & const_str_fspath._ascii.ob_base,
+ &_Py_ID(isinstance),
+ &_Py_ID(bytes),
+ & const_str_fsencode._ascii.ob_base,
+ & const_str_fsdecode._ascii.ob_base,
+ &_Py_ID(replace),
+ & const_str_lower._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[99];
+ }
+ntpath_toplevel_consts_15_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 98,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf4\x0a\x00\x0d\x0f\x8f\x49\x89\x49\x90\x61\x8b\x4c\x88\x01\xdc\x0b\x15\x90\x61\x9c\x15\xd4\x0b\x1f\xdc\x13\x15\x97\x3b\x91\x3b\x9c\x72\x9f\x7b\x99\x7b\xa8\x31\x9b\x7e\xd7\x1f\x35\xd1\x1f\x35\xb0\x63\xb8\x34\xd3\x1f\x40\xd7\x1f\x46\xd1\x1f\x46\xd3\x1f\x48\xd3\x13\x49\xd0\x0c\x49\xd8\x0f\x10\x8f\x79\x89\x79\x98\x13\x98\x64\xd3\x0f\x23\xd7\x0f\x29\xd1\x0f\x29\xd3\x0f\x2b\xd0\x08\x2b",
+};
+static
+ struct _PyCode_DEF(280)
+ntpath_toplevel_consts_15 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 140,
+ },
+ .co_consts = & ntpath_toplevel_consts_15_consts._object.ob_base.ob_base,
+ .co_names = & ntpath_toplevel_consts_15_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 7 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 6,
+ .co_firstlineno = 70,
+ .co_nlocalsplus = 1,
+ .co_nlocals = 1,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 550,
+ .co_localsplusnames = & importlib__bootstrap_external_toplevel_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_characters[32]),
+ .co_filename = & ntpath_toplevel_consts_12_filename._ascii.ob_base,
+ .co_name = & const_str_normcase._ascii.ob_base,
+ .co_qualname = & const_str_normcase._ascii.ob_base,
+ .co_linetable = & ntpath_toplevel_consts_15_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x00\x74\x05\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x74\x06\x00\x00\x00\x00\x00\x00\x00\x00\xab\x02\x00\x00\x00\x00\x00\x00\x72\x46\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x6a\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x01\x64\x02\xab\x02\x00\x00\x00\x00\x00\x00\x6a\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x53\x00\x7c\x00\x6a\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x01\x64\x02\xab\x02\x00\x00\x00\x00\x00\x00\x6a\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[32];
+ }
+ntpath_toplevel_consts_16_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 31,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Test whether a path is absolute",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[3];
+ }
+ntpath_toplevel_consts_16_consts_3 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_shash = -1,
+ .ob_sval = ":\\",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[3];
+ }
+ntpath_toplevel_consts_16_consts_6 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 2,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = ":\\",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[12];
+ }_object;
+ }
+ntpath_toplevel_consts_16_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 12,
+ },
+ .ob_item = {
+ & ntpath_toplevel_consts_16_consts_0._ascii.ob_base,
+ (PyObject *)&_Py_SINGLETON(bytes_characters[92]),
+ (PyObject *)&_Py_SINGLETON(bytes_characters[47]),
+ & ntpath_toplevel_consts_16_consts_3.ob_base.ob_base,
+ (PyObject *)&_Py_SINGLETON(strings).ascii[92],
+ (PyObject *)&_Py_SINGLETON(strings).ascii[47],
+ & ntpath_toplevel_consts_16_consts_6._ascii.ob_base,
+ Py_None,
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 3],
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 1],
+ Py_True,
+ Py_False,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[6];
+ }_object;
+ }
+ntpath_toplevel_consts_16_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 6,
+ },
+ .ob_item = {
+ & const_str_os._ascii.ob_base,
+ & const_str_fspath._ascii.ob_base,
+ &_Py_ID(isinstance),
+ &_Py_ID(bytes),
+ &_Py_ID(replace),
+ & const_str_startswith._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[111];
+ }
+ntpath_toplevel_consts_16_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 110,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xe4\x08\x0a\x8f\x09\x89\x09\x90\x21\x8b\x0c\x80\x41\xdc\x07\x11\x90\x21\x94\x55\xd4\x07\x1b\xd8\x0e\x13\x88\x03\xd8\x11\x15\x88\x06\xd8\x14\x1a\x89\x09\xe0\x0e\x12\x88\x03\xd8\x11\x14\x88\x06\xd8\x14\x19\x88\x09\xd8\x08\x09\x88\x22\x88\x31\x88\x05\x8f\x0d\x89\x0d\x90\x66\x98\x63\xd3\x08\x22\x80\x41\xf0\x06\x00\x08\x09\x87\x7c\x81\x7c\x90\x43\xd4\x07\x18\x98\x41\x9f\x4c\x99\x4c\xa8\x19\xb0\x41\xd4\x1c\x36\xd8\x0f\x13\xd8\x0b\x10",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[10];
+ }
+const_str_colon_sep = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 9,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "colon_sep",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[4];
+ }_object;
+ }
+ntpath_toplevel_consts_16_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_item = {
+ &_Py_ID(s),
+ &_Py_ID(sep),
+ & const_str_altsep._ascii.ob_base,
+ & const_str_colon_sep._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(218)
+ntpath_toplevel_consts_16 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 109,
+ },
+ .co_consts = & ntpath_toplevel_consts_16_consts._object.ob_base.ob_base,
+ .co_names = & ntpath_toplevel_consts_16_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 8 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 87,
+ .co_nlocalsplus = 4,
+ .co_nlocals = 4,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 551,
+ .co_localsplusnames = & ntpath_toplevel_consts_16_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_7_consts_3_localspluskinds.ob_base.ob_base,
+ .co_filename = & ntpath_toplevel_consts_12_filename._ascii.ob_base,
+ .co_name = & const_str_isabs._ascii.ob_base,
+ .co_qualname = & const_str_isabs._ascii.ob_base,
+ .co_linetable = & ntpath_toplevel_consts_16_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x00\x74\x05\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x74\x06\x00\x00\x00\x00\x00\x00\x00\x00\xab\x02\x00\x00\x00\x00\x00\x00\x72\x07\x64\x01\x7d\x01\x64\x02\x7d\x02\x64\x03\x7d\x03\x6e\x06\x64\x04\x7d\x01\x64\x05\x7d\x02\x64\x06\x7d\x03\x7c\x00\x64\x07\x64\x08\x1a\x00\x6a\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x02\x7c\x01\xab\x02\x00\x00\x00\x00\x00\x00\x7d\x00\x7c\x00\x6a\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\xab\x01\x00\x00\x00\x00\x00\x00\x73\x12\x7c\x00\x6a\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x03\x64\x09\xab\x02\x00\x00\x00\x00\x00\x00\x72\x01\x79\x0a\x79\x0b",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[10];
+ }_object;
+ }
+ntpath_toplevel_consts_17_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 10,
+ },
+ .ob_item = {
+ Py_None,
+ (PyObject *)&_Py_SINGLETON(bytes_characters[92]),
+ & ntpath_toplevel_consts_12_consts_1.ob_base.ob_base,
+ (PyObject *)&_Py_SINGLETON(bytes_characters[58]),
+ (PyObject *)&_Py_SINGLETON(strings).ascii[92],
+ & ntpath_toplevel_consts_12_consts_2._ascii.ob_base,
+ (PyObject *)&_Py_SINGLETON(strings).ascii[58],
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 0],
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + -1],
+ &_Py_ID(join),
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[13];
+ }
+const_str_BytesWarning = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 12,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "BytesWarning",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[12];
+ }
+const_str_genericpath = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 11,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "genericpath",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[12];
+ }_object;
+ }
+ntpath_toplevel_consts_17_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 12,
+ },
+ .ob_item = {
+ & const_str_os._ascii.ob_base,
+ & const_str_fspath._ascii.ob_base,
+ &_Py_ID(isinstance),
+ &_Py_ID(bytes),
+ & const_str_splitroot._ascii.ob_base,
+ & const_str_map._ascii.ob_base,
+ & const_str_lower._ascii.ob_base,
+ & const_str_TypeError._ascii.ob_base,
+ & const_str_AttributeError._ascii.ob_base,
+ & const_str_BytesWarning._ascii.ob_base,
+ & const_str_genericpath._ascii.ob_base,
+ & const_str__check_arg_types._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[357];
+ }
+ntpath_toplevel_consts_17_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 356,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xdc\x0b\x0d\x8f\x39\x89\x39\x90\x54\x8b\x3f\x80\x44\xdc\x07\x11\x90\x24\x9c\x05\xd4\x07\x1e\xd8\x0e\x13\x88\x03\xd8\x0f\x15\x88\x04\xd8\x10\x14\x89\x05\xe0\x0e\x12\x88\x03\xd8\x0f\x14\x88\x04\xd8\x10\x13\x88\x05\xf0\x02\x21\x05\x0e\xd9\x0f\x14\xd8\x0c\x10\x90\x12\x90\x21\x88\x48\x90\x73\x8a\x4e\xdc\x31\x3a\xb8\x34\xb3\x1f\xd1\x08\x2e\x88\x0c\x90\x6b\xa0\x3b\xdc\x11\x14\x94\x52\x97\x59\x91\x59\xa0\x05\xd3\x11\x26\xf2\x00\x15\x09\x2f\x88\x41\xdc\x26\x2f\xb0\x01\xa3\x6c\xd1\x0c\x23\x88\x47\x90\x56\x98\x56\xd9\x0f\x15\xe1\x13\x1a\xa1\x2c\xd8\x23\x2a\x90\x4c\xd8\x1e\x24\x90\x0b\xd8\x1e\x24\x90\x0b\xd8\x10\x18\xd9\x11\x18\x98\x57\xa8\x0c\xd2\x1d\x34\xd8\x13\x1a\x97\x3d\x91\x3d\x93\x3f\xa0\x6c\xd7\x26\x38\xd1\x26\x38\xd3\x26\x3a\xd2\x13\x3a\xe0\x23\x2a\x90\x4c\xd8\x22\x28\x90\x4b\xd8\x22\x28\x90\x4b\xd8\x14\x1c\xe0\x1f\x26\x90\x0c\xe1\x0f\x1a\x98\x7b\xa8\x32\x99\x7f\xb0\x64\xd1\x1f\x3a\xd8\x1e\x29\xa8\x43\xd1\x1e\x2f\x90\x0b\xd8\x1a\x25\xa8\x06\xd1\x1a\x2e\x89\x4b\xf0\x2b\x15\x09\x2f\xf1\x2e\x00\x0d\x18\xa1\x0b\xd9\x0c\x18\x98\x5c\xa8\x22\xa8\x23\xd0\x1d\x2e\xb0\x65\xb8\x64\xb1\x6c\xd1\x1d\x42\xd8\x13\x1f\xa0\x23\xd1\x13\x25\xa8\x0b\xd1\x13\x33\xd0\x0c\x33\xd8\x0f\x1b\x98\x6b\xd1\x0f\x29\xa8\x4b\xd1\x0f\x37\xd0\x08\x37\xf8\xdc\x0c\x15\x94\x7e\xa4\x7c\xd0\x0b\x34\xf2\x00\x02\x05\x0e\xdc\x08\x13\xd7\x08\x24\xd1\x08\x24\xa0\x56\xa8\x54\xd0\x08\x3a\xb0\x45\xd3\x08\x3a\xd8\x08\x0d\xf0\x05\x02\x05\x0e\xfa",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[19];
+ }
+ntpath_toplevel_consts_17_exceptiontable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 18,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\xb4\x42\x2f\x43\x2c\x00\xc3\x24\x07\x43\x2c\x00\xc3\x2c\x2d\x44\x19\x03",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[6];
+ }
+const_str_paths = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 5,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "paths",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[5];
+ }
+const_str_seps = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 4,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "seps",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[6];
+ }
+const_str_colon = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 5,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "colon",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[13];
+ }
+const_str_result_drive = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 12,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "result_drive",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[12];
+ }
+const_str_result_root = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 11,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "result_root",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[12];
+ }
+const_str_result_path = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 11,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "result_path",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[8];
+ }
+const_str_p_drive = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 7,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "p_drive",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[7];
+ }
+const_str_p_root = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 6,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "p_root",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[7];
+ }
+const_str_p_path = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 6,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "p_path",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[12];
+ }_object;
+ }
+ntpath_toplevel_consts_17_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 12,
+ },
+ .ob_item = {
+ &_Py_ID(path),
+ & const_str_paths._ascii.ob_base,
+ &_Py_ID(sep),
+ & const_str_seps._ascii.ob_base,
+ & const_str_colon._ascii.ob_base,
+ & const_str_result_drive._ascii.ob_base,
+ & const_str_result_root._ascii.ob_base,
+ & const_str_result_path._ascii.ob_base,
+ &_Py_ID(p),
+ & const_str_p_drive._ascii.ob_base,
+ & const_str_p_root._ascii.ob_base,
+ & const_str_p_path._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(568)
+ntpath_toplevel_consts_17 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 284,
+ },
+ .co_consts = & ntpath_toplevel_consts_17_consts._object.ob_base.ob_base,
+ .co_names = & ntpath_toplevel_consts_17_names._object.ob_base.ob_base,
+ .co_exceptiontable = & ntpath_toplevel_consts_17_exceptiontable.ob_base.ob_base,
+ .co_flags = 7,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 17 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 5,
+ .co_firstlineno = 107,
+ .co_nlocalsplus = 12,
+ .co_nlocals = 12,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 552,
+ .co_localsplusnames = & ntpath_toplevel_consts_17_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_external_toplevel_consts_36_localspluskinds.ob_base.ob_base,
+ .co_filename = & ntpath_toplevel_consts_12_filename._ascii.ob_base,
+ .co_name = &_Py_ID(join),
+ .co_qualname = &_Py_ID(join),
+ .co_linetable = & ntpath_toplevel_consts_17_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x00\x74\x05\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x74\x06\x00\x00\x00\x00\x00\x00\x00\x00\xab\x02\x00\x00\x00\x00\x00\x00\x72\x07\x64\x01\x7d\x02\x64\x02\x7d\x03\x64\x03\x7d\x04\x6e\x06\x64\x04\x7d\x02\x64\x05\x7d\x03\x64\x06\x7d\x04\x09\x00\x7c\x01\x73\x08\x7c\x00\x64\x00\x64\x07\x1a\x00\x7c\x02\x7a\x00\x00\x00\x01\x00\x74\x09\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x5c\x03\x00\x00\x7d\x05\x7d\x06\x7d\x07\x74\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\xab\x02\x00\x00\x00\x00\x00\x00\x44\x00\x5d\x62\x00\x00\x7d\x08\x74\x09\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x08\xab\x01\x00\x00\x00\x00\x00\x00\x5c\x03\x00\x00\x7d\x09\x7d\x0a\x7d\x0b\x7c\x0a\x72\x0b\x7c\x09\x73\x02\x7c\x05\x73\x02\x7c\x09\x7d\x05\x7c\x0a\x7d\x06\x7c\x0b\x7d\x07\x8c\x1f\x7c\x09\x72\x2f\x7c\x09\x7c\x05\x6b\x37\x00\x00\x72\x2a\x7c\x09\x6a\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x7c\x05\x6a\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x6b\x37\x00\x00\x72\x07\x7c\x09\x7d\x05\x7c\x0a\x7d\x06\x7c\x0b\x7d\x07\x8c\x4e\x7c\x09\x7d\x05\x7c\x07\x72\x0c\x7c\x07\x64\x08\x19\x00\x00\x00\x7c\x03\x76\x01\x72\x05\x7c\x07\x7c\x02\x7a\x00\x00\x00\x7d\x07\x7c\x07\x7c\x0b\x7a\x00\x00\x00\x7d\x07\x8c\x64\x04\x00\x7c\x07\x72\x16\x7c\x06\x73\x14\x7c\x05\x72\x12\x7c\x05\x64\x08\x64\x00\x1a\x00\x7c\x04\x7c\x03\x7a\x00\x00\x00\x76\x01\x72\x08\x7c\x05\x7c\x02\x7a\x00\x00\x00\x7c\x07\x7a\x00\x00\x00\x53\x00\x7c\x05\x7c\x06\x7a\x00\x00\x00\x7c\x07\x7a\x00\x00\x00\x53\x00\x23\x00\x74\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x74\x10\x00\x00\x00\x00\x00\x00\x00\x00\x74\x12\x00\x00\x00\x00\x00\x00\x00\x00\x66\x03\x24\x00\x72\x19\x01\x00\x74\x15\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x16\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x09\x7c\x00\x67\x02\x7c\x01\xa2\x01\xad\x06\x8e\x00\x01\x00\x82\x00\x77\x00\x78\x03\x59\x00\x77\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[731];
+ }
+ntpath_toplevel_consts_18_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 730,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x53\x70\x6c\x69\x74\x20\x61\x20\x70\x61\x74\x68\x6e\x61\x6d\x65\x20\x69\x6e\x74\x6f\x20\x64\x72\x69\x76\x65\x2f\x55\x4e\x43\x20\x73\x68\x61\x72\x65\x70\x6f\x69\x6e\x74\x20\x61\x6e\x64\x20\x72\x65\x6c\x61\x74\x69\x76\x65\x20\x70\x61\x74\x68\x20\x73\x70\x65\x63\x69\x66\x69\x65\x72\x73\x2e\x0a\x20\x20\x20\x20\x52\x65\x74\x75\x72\x6e\x73\x20\x61\x20\x32\x2d\x74\x75\x70\x6c\x65\x20\x28\x64\x72\x69\x76\x65\x5f\x6f\x72\x5f\x75\x6e\x63\x2c\x20\x70\x61\x74\x68\x29\x3b\x20\x65\x69\x74\x68\x65\x72\x20\x70\x61\x72\x74\x20\x6d\x61\x79\x20\x62\x65\x20\x65\x6d\x70\x74\x79\x2e\x0a\x0a\x20\x20\x20\x20\x49\x66\x20\x79\x6f\x75\x20\x61\x73\x73\x69\x67\x6e\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x73\x75\x6c\x74\x20\x3d\x20\x73\x70\x6c\x69\x74\x64\x72\x69\x76\x65\x28\x70\x29\x0a\x20\x20\x20\x20\x49\x74\x20\x69\x73\x20\x61\x6c\x77\x61\x79\x73\x20\x74\x72\x75\x65\x20\x74\x68\x61\x74\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x73\x75\x6c\x74\x5b\x30\x5d\x20\x2b\x20\x72\x65\x73\x75\x6c\x74\x5b\x31\x5d\x20\x3d\x3d\x20\x70\x0a\x0a\x20\x20\x20\x20\x49\x66\x20\x74\x68\x65\x20\x70\x61\x74\x68\x20\x63\x6f\x6e\x74\x61\x69\x6e\x65\x64\x20\x61\x20\x64\x72\x69\x76\x65\x20\x6c\x65\x74\x74\x65\x72\x2c\x20\x64\x72\x69\x76\x65\x5f\x6f\x72\x5f\x75\x6e\x63\x20\x77\x69\x6c\x6c\x20\x63\x6f\x6e\x74\x61\x69\x6e\x20\x65\x76\x65\x72\x79\x74\x68\x69\x6e\x67\x0a\x20\x20\x20\x20\x75\x70\x20\x74\x6f\x20\x61\x6e\x64\x20\x69\x6e\x63\x6c\x75\x64\x69\x6e\x67\x20\x74\x68\x65\x20\x63\x6f\x6c\x6f\x6e\x2e\x20\x20\x65\x2e\x67\x2e\x20\x73\x70\x6c\x69\x74\x64\x72\x69\x76\x65\x28\x22\x63\x3a\x2f\x64\x69\x72\x22\x29\x20\x72\x65\x74\x75\x72\x6e\x73\x20\x28\x22\x63\x3a\x22\x2c\x20\x22\x2f\x64\x69\x72\x22\x29\x0a\x0a\x20\x20\x20\x20\x49\x66\x20\x74\x68\x65\x20\x70\x61\x74\x68\x20\x63\x6f\x6e\x74\x61\x69\x6e\x65\x64\x20\x61\x20\x55\x4e\x43\x20\x70\x61\x74\x68\x2c\x20\x74\x68\x65\x20\x64\x72\x69\x76\x65\x5f\x6f\x72\x5f\x75\x6e\x63\x20\x77\x69\x6c\x6c\x20\x63\x6f\x6e\x74\x61\x69\x6e\x20\x74\x68\x65\x20\x68\x6f\x73\x74\x20\x6e\x61\x6d\x65\x0a\x20\x20\x20\x20\x61\x6e\x64\x20\x73\x68\x61\x72\x65\x20\x75\x70\x20\x74\x6f\x20\x62\x75\x74\x20\x6e\x6f\x74\x20\x69\x6e\x63\x6c\x75\x64\x69\x6e\x67\x20\x74\x68\x65\x20\x66\x6f\x75\x72\x74\x68\x20\x64\x69\x72\x65\x63\x74\x6f\x72\x79\x20\x73\x65\x70\x61\x72\x61\x74\x6f\x72\x20\x63\x68\x61\x72\x61\x63\x74\x65\x72\x2e\x0a\x20\x20\x20\x20\x65\x2e\x67\x2e\x20\x73\x70\x6c\x69\x74\x64\x72\x69\x76\x65\x28\x22\x2f\x2f\x68\x6f\x73\x74\x2f\x63\x6f\x6d\x70\x75\x74\x65\x72\x2f\x64\x69\x72\x22\x29\x20\x72\x65\x74\x75\x72\x6e\x73\x20\x28\x22\x2f\x2f\x68\x6f\x73\x74\x2f\x63\x6f\x6d\x70\x75\x74\x65\x72\x22\x2c\x20\x22\x2f\x64\x69\x72\x22\x29\x0a\x0a\x20\x20\x20\x20\x50\x61\x74\x68\x73\x20\x63\x61\x6e\x6e\x6f\x74\x20\x63\x6f\x6e\x74\x61\x69\x6e\x20\x62\x6f\x74\x68\x20\x61\x20\x64\x72\x69\x76\x65\x20\x6c\x65\x74\x74\x65\x72\x20\x61\x6e\x64\x20\x61\x20\x55\x4e\x43\x20\x70\x61\x74\x68\x2e\x0a\x0a\x20\x20\x20\x20",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+ntpath_toplevel_consts_18_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & ntpath_toplevel_consts_18_consts_0._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+ntpath_toplevel_consts_18_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & const_str_splitroot._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[36];
+ }
+ntpath_toplevel_consts_18_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 35,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf4\x26\x00\x19\x22\xa0\x21\x9b\x0c\xd1\x04\x15\x80\x45\x88\x34\x90\x14\xd8\x0b\x10\x90\x24\x98\x14\x91\x2b\xd0\x0b\x1d\xd0\x04\x1d",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[6];
+ }
+const_str_drive = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 5,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "drive",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[4];
+ }_object;
+ }
+ntpath_toplevel_consts_18_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_item = {
+ &_Py_ID(p),
+ & const_str_drive._ascii.ob_base,
+ & const_str_root._ascii.ob_base,
+ & const_str_tail._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(46)
+ntpath_toplevel_consts_18 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 23,
+ },
+ .co_consts = & ntpath_toplevel_consts_18_consts._object.ob_base.ob_base,
+ .co_names = & ntpath_toplevel_consts_18_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 7 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 3,
+ .co_firstlineno = 156,
+ .co_nlocalsplus = 4,
+ .co_nlocals = 4,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 553,
+ .co_localsplusnames = & ntpath_toplevel_consts_18_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_7_consts_3_localspluskinds.ob_base.ob_base,
+ .co_filename = & ntpath_toplevel_consts_12_filename._ascii.ob_base,
+ .co_name = & const_str_splitdrive._ascii.ob_base,
+ .co_qualname = & const_str_splitdrive._ascii.ob_base,
+ .co_linetable = & ntpath_toplevel_consts_18_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x5c\x03\x00\x00\x7d\x01\x7d\x02\x7d\x03\x7c\x01\x7c\x02\x7c\x03\x7a\x00\x00\x00\x66\x02\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[511];
+ }
+ntpath_toplevel_consts_19_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 510,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x53\x70\x6c\x69\x74\x20\x61\x20\x70\x61\x74\x68\x6e\x61\x6d\x65\x20\x69\x6e\x74\x6f\x20\x64\x72\x69\x76\x65\x2c\x20\x72\x6f\x6f\x74\x20\x61\x6e\x64\x20\x74\x61\x69\x6c\x2e\x20\x54\x68\x65\x20\x64\x72\x69\x76\x65\x20\x69\x73\x20\x64\x65\x66\x69\x6e\x65\x64\x0a\x20\x20\x20\x20\x65\x78\x61\x63\x74\x6c\x79\x20\x61\x73\x20\x69\x6e\x20\x73\x70\x6c\x69\x74\x64\x72\x69\x76\x65\x28\x29\x2e\x20\x4f\x6e\x20\x57\x69\x6e\x64\x6f\x77\x73\x2c\x20\x74\x68\x65\x20\x72\x6f\x6f\x74\x20\x6d\x61\x79\x20\x62\x65\x20\x61\x20\x73\x69\x6e\x67\x6c\x65\x20\x70\x61\x74\x68\x0a\x20\x20\x20\x20\x73\x65\x70\x61\x72\x61\x74\x6f\x72\x20\x6f\x72\x20\x61\x6e\x20\x65\x6d\x70\x74\x79\x20\x73\x74\x72\x69\x6e\x67\x2e\x20\x54\x68\x65\x20\x74\x61\x69\x6c\x20\x63\x6f\x6e\x74\x61\x69\x6e\x73\x20\x61\x6e\x79\x74\x68\x69\x6e\x67\x20\x61\x66\x74\x65\x72\x20\x74\x68\x65\x20\x72\x6f\x6f\x74\x2e\x0a\x20\x20\x20\x20\x46\x6f\x72\x20\x65\x78\x61\x6d\x70\x6c\x65\x3a\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x73\x70\x6c\x69\x74\x72\x6f\x6f\x74\x28\x27\x2f\x2f\x73\x65\x72\x76\x65\x72\x2f\x73\x68\x61\x72\x65\x2f\x27\x29\x20\x3d\x3d\x20\x28\x27\x2f\x2f\x73\x65\x72\x76\x65\x72\x2f\x73\x68\x61\x72\x65\x27\x2c\x20\x27\x2f\x27\x2c\x20\x27\x27\x29\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x73\x70\x6c\x69\x74\x72\x6f\x6f\x74\x28\x27\x43\x3a\x2f\x55\x73\x65\x72\x73\x2f\x42\x61\x72\x6e\x65\x79\x27\x29\x20\x3d\x3d\x20\x28\x27\x43\x3a\x27\x2c\x20\x27\x2f\x27\x2c\x20\x27\x55\x73\x65\x72\x73\x2f\x42\x61\x72\x6e\x65\x79\x27\x29\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x73\x70\x6c\x69\x74\x72\x6f\x6f\x74\x28\x27\x43\x3a\x2f\x2f\x2f\x73\x70\x61\x6d\x2f\x2f\x2f\x68\x61\x6d\x27\x29\x20\x3d\x3d\x20\x28\x27\x43\x3a\x27\x2c\x20\x27\x2f\x27\x2c\x20\x27\x2f\x2f\x73\x70\x61\x6d\x2f\x2f\x2f\x68\x61\x6d\x27\x29\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x73\x70\x6c\x69\x74\x72\x6f\x6f\x74\x28\x27\x57\x69\x6e\x64\x6f\x77\x73\x2f\x6e\x6f\x74\x65\x70\x61\x64\x27\x29\x20\x3d\x3d\x20\x28\x27\x27\x2c\x20\x27\x27\x2c\x20\x27\x57\x69\x6e\x64\x6f\x77\x73\x2f\x6e\x6f\x74\x65\x70\x61\x64\x27\x29\x0a\x20\x20\x20\x20",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[9];
+ }
+ntpath_toplevel_consts_19_consts_4 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 8,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\\\\?\\UNC\\",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[9];
+ }
+ntpath_toplevel_consts_19_consts_9 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 8,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\\\\?\\UNC\\",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[17];
+ }_object;
+ }
+ntpath_toplevel_consts_19_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 17,
+ },
+ .ob_item = {
+ & ntpath_toplevel_consts_19_consts_0._ascii.ob_base,
+ (PyObject *)&_Py_SINGLETON(bytes_characters[92]),
+ (PyObject *)&_Py_SINGLETON(bytes_characters[47]),
+ (PyObject *)&_Py_SINGLETON(bytes_characters[58]),
+ & ntpath_toplevel_consts_19_consts_4.ob_base.ob_base,
+ (PyObject *)&_Py_SINGLETON(bytes_empty),
+ (PyObject *)&_Py_SINGLETON(strings).ascii[92],
+ (PyObject *)&_Py_SINGLETON(strings).ascii[47],
+ (PyObject *)&_Py_SINGLETON(strings).ascii[58],
+ & ntpath_toplevel_consts_19_consts_9._ascii.ob_base,
+ &_Py_STR(empty),
+ Py_None,
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 1],
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 2],
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 8],
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + -1],
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 3],
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[6];
+ }
+const_str_upper = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 5,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "upper",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[5];
+ }
+const_str_find = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 4,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "find",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[7];
+ }_object;
+ }
+ntpath_toplevel_consts_19_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 7,
+ },
+ .ob_item = {
+ & const_str_os._ascii.ob_base,
+ & const_str_fspath._ascii.ob_base,
+ &_Py_ID(isinstance),
+ &_Py_ID(bytes),
+ &_Py_ID(replace),
+ & const_str_upper._ascii.ob_base,
+ & const_str_find._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[392];
+ }
+ntpath_toplevel_consts_19_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 391,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf4\x16\x00\x09\x0b\x8f\x09\x89\x09\x90\x21\x8b\x0c\x80\x41\xdc\x07\x11\x90\x21\x94\x55\xd4\x07\x1b\xd8\x0e\x13\x88\x03\xd8\x11\x15\x88\x06\xd8\x10\x14\x88\x05\xd8\x15\x24\x88\x0a\xd8\x10\x13\x89\x05\xe0\x0e\x12\x88\x03\xd8\x11\x14\x88\x06\xd8\x10\x13\x88\x05\xd8\x15\x23\x88\x0a\xd8\x10\x12\x88\x05\xd8\x0c\x0d\x8f\x49\x89\x49\x90\x66\x98\x63\xd3\x0c\x22\x80\x45\xd8\x07\x0c\x88\x52\x88\x61\x80\x79\x90\x43\xd2\x07\x17\xd8\x0b\x10\x90\x11\x90\x31\x88\x3a\x98\x13\xd2\x0b\x1c\xf0\x06\x00\x1a\x1f\x98\x72\xa0\x01\x98\x19\x9f\x1f\x99\x1f\xd3\x19\x2a\xa8\x6a\xd2\x19\x38\x91\x41\xb8\x61\x88\x45\xd8\x14\x19\x97\x4a\x91\x4a\x98\x73\xa0\x45\xd3\x14\x2a\x88\x45\xd8\x0f\x14\x98\x02\x8a\x7b\xd8\x17\x18\x98\x25\xa0\x15\x90\x7f\xd0\x10\x26\xd8\x15\x1a\x97\x5a\x91\x5a\xa0\x03\xa0\x55\xa8\x51\xa1\x59\xd3\x15\x2f\x88\x46\xd8\x0f\x15\x98\x12\x8a\x7c\xd8\x17\x18\x98\x25\xa0\x15\x90\x7f\xd0\x10\x26\xd8\x13\x14\x90\x57\x90\x66\x90\x3a\x98\x71\xa0\x16\xa8\x06\xb0\x11\xa9\x0a\xd0\x1f\x33\xb0\x51\xb0\x76\xc0\x01\xb1\x7a\xb0\x7b\xb0\x5e\xd0\x13\x43\xd0\x0c\x43\xf0\x06\x00\x14\x19\x98\x21\x98\x42\x98\x51\x98\x25\xa0\x11\xa0\x31\xa0\x32\xa0\x15\xd0\x13\x26\xd0\x0c\x26\xd8\x09\x0e\x88\x71\x90\x11\x88\x1a\x90\x75\xd2\x09\x1c\xd8\x0b\x10\x90\x11\x90\x31\x88\x3a\x98\x13\xd2\x0b\x1c\xe0\x13\x14\x90\x52\x90\x61\x90\x35\x98\x21\x98\x41\x98\x61\x98\x26\xa0\x21\xa0\x41\xa0\x42\xa0\x25\xd0\x13\x27\xd0\x0c\x27\xf0\x06\x00\x14\x15\x90\x52\x90\x61\x90\x35\x98\x25\xa0\x11\xa0\x31\xa0\x32\xa0\x15\xd0\x13\x26\xd0\x0c\x26\xf0\x06\x00\x10\x15\x90\x65\x98\x51\x88\x7f\xd0\x08\x1e",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[11];
+ }
+const_str_unc_prefix = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 10,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "unc_prefix",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[6];
+ }
+const_str_empty = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 5,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "empty",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[6];
+ }
+const_str_normp = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 5,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "normp",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[7];
+ }
+const_str_index2 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 6,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "index2",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[10];
+ }_object;
+ }
+ntpath_toplevel_consts_19_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 10,
+ },
+ .ob_item = {
+ &_Py_ID(p),
+ &_Py_ID(sep),
+ & const_str_altsep._ascii.ob_base,
+ & const_str_colon._ascii.ob_base,
+ & const_str_unc_prefix._ascii.ob_base,
+ & const_str_empty._ascii.ob_base,
+ & const_str_normp._ascii.ob_base,
+ &_Py_ID(start),
+ & const_str_index._ascii.ob_base,
+ & const_str_index2._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(510)
+ntpath_toplevel_consts_19 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 255,
+ },
+ .co_consts = & ntpath_toplevel_consts_19_consts._object.ob_base.ob_base,
+ .co_names = & ntpath_toplevel_consts_19_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 15 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 5,
+ .co_firstlineno = 179,
+ .co_nlocalsplus = 10,
+ .co_nlocals = 10,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 554,
+ .co_localsplusnames = & ntpath_toplevel_consts_19_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_46_consts_3_localspluskinds.ob_base.ob_base,
+ .co_filename = & ntpath_toplevel_consts_12_filename._ascii.ob_base,
+ .co_name = & const_str_splitroot._ascii.ob_base,
+ .co_qualname = & const_str_splitroot._ascii.ob_base,
+ .co_linetable = & ntpath_toplevel_consts_19_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x00\x74\x05\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x74\x06\x00\x00\x00\x00\x00\x00\x00\x00\xab\x02\x00\x00\x00\x00\x00\x00\x72\x0b\x64\x01\x7d\x01\x64\x02\x7d\x02\x64\x03\x7d\x03\x64\x04\x7d\x04\x64\x05\x7d\x05\x6e\x0a\x64\x06\x7d\x01\x64\x07\x7d\x02\x64\x08\x7d\x03\x64\x09\x7d\x04\x64\x0a\x7d\x05\x7c\x00\x6a\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x02\x7c\x01\xab\x02\x00\x00\x00\x00\x00\x00\x7d\x06\x7c\x06\x64\x0b\x64\x0c\x1a\x00\x7c\x01\x6b\x28\x00\x00\x72\x7c\x7c\x06\x64\x0c\x64\x0d\x1a\x00\x7c\x01\x6b\x28\x00\x00\x72\x69\x7c\x06\x64\x0b\x64\x0e\x1a\x00\x6a\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x7c\x04\x6b\x28\x00\x00\x72\x02\x64\x0e\x6e\x01\x64\x0d\x7d\x07\x7c\x06\x6a\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x7c\x07\xab\x02\x00\x00\x00\x00\x00\x00\x7d\x08\x7c\x08\x64\x0f\x6b\x28\x00\x00\x72\x05\x7c\x00\x7c\x05\x7c\x05\x66\x03\x53\x00\x7c\x06\x6a\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x7c\x08\x64\x0c\x7a\x00\x00\x00\xab\x02\x00\x00\x00\x00\x00\x00\x7d\x09\x7c\x09\x64\x0f\x6b\x28\x00\x00\x72\x05\x7c\x00\x7c\x05\x7c\x05\x66\x03\x53\x00\x7c\x00\x64\x0b\x7c\x09\x1a\x00\x7c\x00\x7c\x09\x7c\x09\x64\x0c\x7a\x00\x00\x00\x1a\x00\x7c\x00\x7c\x09\x64\x0c\x7a\x00\x00\x00\x64\x0b\x1a\x00\x66\x03\x53\x00\x7c\x05\x7c\x00\x64\x0b\x64\x0c\x1a\x00\x7c\x00\x64\x0c\x64\x0b\x1a\x00\x66\x03\x53\x00\x7c\x06\x64\x0c\x64\x0d\x1a\x00\x7c\x03\x6b\x28\x00\x00\x72\x21\x7c\x06\x64\x0d\x64\x10\x1a\x00\x7c\x01\x6b\x28\x00\x00\x72\x0e\x7c\x00\x64\x0b\x64\x0d\x1a\x00\x7c\x00\x64\x0d\x64\x10\x1a\x00\x7c\x00\x64\x10\x64\x0b\x1a\x00\x66\x03\x53\x00\x7c\x00\x64\x0b\x64\x0d\x1a\x00\x7c\x05\x7c\x00\x64\x0d\x64\x0b\x1a\x00\x66\x03\x53\x00\x7c\x05\x7c\x05\x7c\x00\x66\x03\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[127];
+ }
+ntpath_toplevel_consts_20_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 126,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x53\x70\x6c\x69\x74\x20\x61\x20\x70\x61\x74\x68\x6e\x61\x6d\x65\x2e\x0a\x0a\x20\x20\x20\x20\x52\x65\x74\x75\x72\x6e\x20\x74\x75\x70\x6c\x65\x20\x28\x68\x65\x61\x64\x2c\x20\x74\x61\x69\x6c\x29\x20\x77\x68\x65\x72\x65\x20\x74\x61\x69\x6c\x20\x69\x73\x20\x65\x76\x65\x72\x79\x74\x68\x69\x6e\x67\x20\x61\x66\x74\x65\x72\x20\x74\x68\x65\x20\x66\x69\x6e\x61\x6c\x20\x73\x6c\x61\x73\x68\x2e\x0a\x20\x20\x20\x20\x45\x69\x74\x68\x65\x72\x20\x70\x61\x72\x74\x20\x6d\x61\x79\x20\x62\x65\x20\x65\x6d\x70\x74\x79\x2e",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+ntpath_toplevel_consts_20_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ & ntpath_toplevel_consts_20_consts_0._ascii.ob_base,
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 1],
+ Py_None,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[6];
+ }_object;
+ }
+ntpath_toplevel_consts_20_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 6,
+ },
+ .ob_item = {
+ & const_str_os._ascii.ob_base,
+ & const_str_fspath._ascii.ob_base,
+ & const_str__get_bothseps._ascii.ob_base,
+ & const_str_splitroot._ascii.ob_base,
+ &_Py_ID(len),
+ & const_str_rstrip._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[149];
+ }
+ntpath_toplevel_consts_20_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 148,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf4\x0a\x00\x09\x0b\x8f\x09\x89\x09\x90\x21\x8b\x0c\x80\x41\xdc\x0b\x18\x98\x11\xd3\x0b\x1b\x80\x44\xdc\x0e\x17\x98\x01\x8b\x6c\x81\x47\x80\x41\x80\x71\x88\x21\xe4\x08\x0b\x88\x41\x8b\x06\x80\x41\xd9\x0a\x0b\x90\x01\x90\x21\x90\x41\x91\x23\x91\x06\x98\x64\xd1\x10\x22\xd8\x08\x09\x88\x51\x89\x06\x88\x01\xf1\x03\x00\x0b\x0c\x90\x01\x90\x21\x90\x41\x91\x23\x91\x06\x98\x64\xd2\x10\x22\xe0\x11\x12\x90\x32\x90\x41\x90\x15\x98\x01\x98\x21\x98\x22\x98\x05\x88\x24\x80\x44\xd8\x0b\x0c\x88\x71\x89\x35\x90\x34\x97\x3b\x91\x3b\x98\x74\xd3\x13\x24\xd1\x0b\x24\xa0\x64\xd0\x0b\x2a\xd0\x04\x2a",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[7];
+ }_object;
+ }
+ntpath_toplevel_consts_20_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 7,
+ },
+ .ob_item = {
+ &_Py_ID(p),
+ & const_str_seps._ascii.ob_base,
+ &_Py_ID(d),
+ &_Py_ID(r),
+ (PyObject *)&_Py_SINGLETON(strings).ascii[105],
+ & const_str_head._ascii.ob_base,
+ & const_str_tail._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(248)
+ntpath_toplevel_consts_20 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 124,
+ },
+ .co_consts = & ntpath_toplevel_consts_20_consts._object.ob_base.ob_base,
+ .co_names = & ntpath_toplevel_consts_20_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 11 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 236,
+ .co_nlocalsplus = 7,
+ .co_nlocals = 7,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 555,
+ .co_localsplusnames = & ntpath_toplevel_consts_20_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_46_consts_9_localspluskinds.ob_base.ob_base,
+ .co_filename = & ntpath_toplevel_consts_12_filename._ascii.ob_base,
+ .co_name = & const_str_split._ascii.ob_base,
+ .co_qualname = & const_str_split._ascii.ob_base,
+ .co_linetable = & ntpath_toplevel_consts_20_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x00\x74\x05\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x01\x74\x07\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x5c\x03\x00\x00\x7d\x02\x7d\x03\x7d\x00\x74\x09\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x04\x7c\x04\x72\x1c\x7c\x00\x7c\x04\x64\x01\x7a\x0a\x00\x00\x19\x00\x00\x00\x7c\x01\x76\x01\x72\x12\x7c\x04\x64\x01\x7a\x17\x00\x00\x7d\x04\x7c\x04\x72\x0b\x7c\x00\x7c\x04\x64\x01\x7a\x0a\x00\x00\x19\x00\x00\x00\x7c\x01\x76\x01\x72\x01\x8c\x12\x7c\x00\x64\x02\x7c\x04\x1a\x00\x7c\x00\x7c\x04\x64\x02\x1a\x00\x7d\x06\x7d\x05\x7c\x02\x7c\x03\x7a\x00\x00\x00\x7c\x05\x6a\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\xab\x01\x00\x00\x00\x00\x00\x00\x7a\x00\x00\x00\x7c\x06\x66\x02\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[7];
+ }_object;
+ }
+ntpath_toplevel_consts_21_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 7,
+ },
+ .ob_item = {
+ Py_None,
+ (PyObject *)&_Py_SINGLETON(bytes_characters[92]),
+ (PyObject *)&_Py_SINGLETON(bytes_characters[47]),
+ (PyObject *)&_Py_SINGLETON(bytes_characters[46]),
+ (PyObject *)&_Py_SINGLETON(strings).ascii[92],
+ (PyObject *)&_Py_SINGLETON(strings).ascii[47],
+ &_Py_STR(dot),
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[6];
+ }_object;
+ }
+ntpath_toplevel_consts_21_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 6,
+ },
+ .ob_item = {
+ & const_str_os._ascii.ob_base,
+ & const_str_fspath._ascii.ob_base,
+ &_Py_ID(isinstance),
+ &_Py_ID(bytes),
+ & const_str_genericpath._ascii.ob_base,
+ & const_str__splitext._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[72];
+ }
+ntpath_toplevel_consts_21_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 71,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xdc\x08\x0a\x8f\x09\x89\x09\x90\x21\x8b\x0c\x80\x41\xdc\x07\x11\x90\x21\x94\x55\xd4\x07\x1b\xdc\x0f\x1a\xd7\x0f\x24\xd1\x0f\x24\xa0\x51\xa8\x05\xa8\x74\xb0\x54\xd3\x0f\x3a\xd0\x08\x3a\xe4\x0f\x1a\xd7\x0f\x24\xd1\x0f\x24\xa0\x51\xa8\x04\xa8\x63\xb0\x33\xd3\x0f\x37\xd0\x08\x37",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+ntpath_toplevel_consts_21_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ &_Py_ID(p),
+ },
+ },
+};
+static
+ struct _PyCode_DEF(172)
+ntpath_toplevel_consts_21 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 86,
+ },
+ .co_consts = & ntpath_toplevel_consts_21_consts._object.ob_base.ob_base,
+ .co_names = & ntpath_toplevel_consts_21_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 7 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 6,
+ .co_firstlineno = 257,
+ .co_nlocalsplus = 1,
+ .co_nlocals = 1,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 556,
+ .co_localsplusnames = & ntpath_toplevel_consts_21_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_characters[32]),
+ .co_filename = & ntpath_toplevel_consts_12_filename._ascii.ob_base,
+ .co_name = & const_str_splitext._ascii.ob_base,
+ .co_qualname = & const_str_splitext._ascii.ob_base,
+ .co_linetable = & ntpath_toplevel_consts_21_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x00\x74\x05\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x74\x06\x00\x00\x00\x00\x00\x00\x00\x00\xab\x02\x00\x00\x00\x00\x00\x00\x72\x18\x74\x09\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x64\x01\x64\x02\x64\x03\xab\x04\x00\x00\x00\x00\x00\x00\x53\x00\x74\x09\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x64\x04\x64\x05\x64\x06\xab\x04\x00\x00\x00\x00\x00\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[42];
+ }
+ntpath_toplevel_consts_22_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 41,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Returns the final component of a pathname",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+ntpath_toplevel_consts_22_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & ntpath_toplevel_consts_22_consts_0._ascii.ob_base,
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 1],
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+ntpath_toplevel_consts_22_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & const_str_split._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[17];
+ }
+ntpath_toplevel_consts_22_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 16,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xe4\x0b\x10\x90\x11\x8b\x38\x90\x41\x89\x3b\xd0\x04\x16",
+};
+static
+ struct _PyCode_DEF(30)
+ntpath_toplevel_consts_22 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 15,
+ },
+ .co_consts = & ntpath_toplevel_consts_22_consts._object.ob_base.ob_base,
+ .co_names = & ntpath_toplevel_consts_22_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 4 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 3,
+ .co_firstlineno = 268,
+ .co_nlocalsplus = 1,
+ .co_nlocals = 1,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 557,
+ .co_localsplusnames = & ntpath_toplevel_consts_21_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_characters[32]),
+ .co_filename = & ntpath_toplevel_consts_12_filename._ascii.ob_base,
+ .co_name = & const_str_basename._ascii.ob_base,
+ .co_qualname = & const_str_basename._ascii.ob_base,
+ .co_linetable = & ntpath_toplevel_consts_22_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x64\x01\x19\x00\x00\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[46];
+ }
+ntpath_toplevel_consts_23_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 45,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Returns the directory component of a pathname",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+ntpath_toplevel_consts_23_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & ntpath_toplevel_consts_23_consts_0._ascii.ob_base,
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 0],
+ },
+ },
+};
+static
+ struct _PyCode_DEF(30)
+ntpath_toplevel_consts_23 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 15,
+ },
+ .co_consts = & ntpath_toplevel_consts_23_consts._object.ob_base.ob_base,
+ .co_names = & ntpath_toplevel_consts_22_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 4 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 3,
+ .co_firstlineno = 275,
+ .co_nlocalsplus = 1,
+ .co_nlocals = 1,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 558,
+ .co_localsplusnames = & ntpath_toplevel_consts_21_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_characters[32]),
+ .co_filename = & ntpath_toplevel_consts_12_filename._ascii.ob_base,
+ .co_name = & const_str_dirname._ascii.ob_base,
+ .co_qualname = & const_str_dirname._ascii.ob_base,
+ .co_linetable = & ntpath_toplevel_consts_22_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x64\x01\x19\x00\x00\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[15];
+ }
+const_str_st_reparse_tag = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 14,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "st_reparse_tag",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[34];
+ }
+ntpath_toplevel_consts_25_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 33,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Test whether a path is a junction",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+ntpath_toplevel_consts_25_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & ntpath_toplevel_consts_25_consts_0._ascii.ob_base,
+ Py_False,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[27];
+ }
+const_str_IO_REPARSE_TAG_MOUNT_POINT = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 26,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "IO_REPARSE_TAG_MOUNT_POINT",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[9];
+ }_object;
+ }
+ntpath_toplevel_consts_25_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 9,
+ },
+ .ob_item = {
+ & const_str_os._ascii.ob_base,
+ & const_str_lstat._ascii.ob_base,
+ & const_str_OSError._ascii.ob_base,
+ & const_str_ValueError._ascii.ob_base,
+ & const_str_AttributeError._ascii.ob_base,
+ & const_str_bool._ascii.ob_base,
+ & const_str_st_reparse_tag._ascii.ob_base,
+ & const_str_stat._ascii.ob_base,
+ & const_str_IO_REPARSE_TAG_MOUNT_POINT._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[78];
+ }
+ntpath_toplevel_consts_25_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 77,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf0\x04\x03\x09\x19\xdc\x11\x13\x97\x18\x91\x18\x98\x24\x93\x1e\x88\x42\xf4\x06\x00\x10\x14\x90\x42\xd7\x14\x25\xd1\x14\x25\xac\x14\xd7\x29\x48\xd1\x29\x48\xd1\x14\x48\xd3\x0f\x49\xd0\x08\x49\xf8\xf4\x05\x00\x11\x18\x9c\x1a\xa4\x5e\xd0\x0f\x34\xf2\x00\x01\x09\x19\xd9\x13\x18\xf0\x03\x01\x09\x19\xfa",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[16];
+ }
+ntpath_toplevel_consts_25_exceptiontable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 15,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x82\x15\x3d\x00\xbd\x14\x41\x14\x03\xc1\x13\x01\x41\x14\x03",
+};
+static
+ struct _PyCode_DEF(174)
+ntpath_toplevel_consts_25 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 87,
+ },
+ .co_consts = & ntpath_toplevel_consts_25_consts._object.ob_base.ob_base,
+ .co_names = & ntpath_toplevel_consts_25_names._object.ob_base.ob_base,
+ .co_exceptiontable = & ntpath_toplevel_consts_25_exceptiontable.ob_base.ob_base,
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 7 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 5,
+ .co_firstlineno = 283,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 2,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 559,
+ .co_localsplusnames = & genericpath_toplevel_consts_5_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_14_consts_2_localspluskinds.ob_base.ob_base,
+ .co_filename = & ntpath_toplevel_consts_12_filename._ascii.ob_base,
+ .co_name = & const_str_isjunction._ascii.ob_base,
+ .co_qualname = & const_str_isjunction._ascii.ob_base,
+ .co_linetable = & ntpath_toplevel_consts_25_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x09\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x01\x74\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x6a\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x74\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6b\x28\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x53\x00\x23\x00\x74\x04\x00\x00\x00\x00\x00\x00\x00\x00\x74\x06\x00\x00\x00\x00\x00\x00\x00\x00\x74\x08\x00\x00\x00\x00\x00\x00\x00\x00\x66\x03\x24\x00\x72\x03\x01\x00\x59\x00\x79\x01\x77\x00\x78\x03\x59\x00\x77\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+ntpath_toplevel_consts_26_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & const_str_os._ascii.ob_base,
+ & const_str_fspath._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[17];
+ }
+ntpath_toplevel_consts_26_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 16,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xe4\x08\x0a\x8f\x09\x89\x09\x90\x24\x8c\x0f\xd8\x0f\x14",
+};
+static
+ struct _PyCode_DEF(46)
+ntpath_toplevel_consts_26 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 23,
+ },
+ .co_consts = & ntpath_toplevel_consts_25_consts._object.ob_base.ob_base,
+ .co_names = & ntpath_toplevel_consts_26_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 4 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 3,
+ .co_firstlineno = 291,
+ .co_nlocalsplus = 1,
+ .co_nlocals = 1,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 560,
+ .co_localsplusnames = & importlib__bootstrap_external_toplevel_consts_18_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_characters[32]),
+ .co_filename = & ntpath_toplevel_consts_12_filename._ascii.ob_base,
+ .co_name = & const_str_isjunction._ascii.ob_base,
+ .co_qualname = & const_str_isjunction._ascii.ob_base,
+ .co_linetable = & ntpath_toplevel_consts_26_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x79\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[68];
+ }
+ntpath_toplevel_consts_27_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 67,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Test whether a path exists. Returns True for broken symbolic links",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+ntpath_toplevel_consts_27_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ & ntpath_toplevel_consts_27_consts_0._ascii.ob_base,
+ Py_False,
+ Py_True,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[4];
+ }_object;
+ }
+ntpath_toplevel_consts_27_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_item = {
+ & const_str_os._ascii.ob_base,
+ & const_str_lstat._ascii.ob_base,
+ & const_str_OSError._ascii.ob_base,
+ & const_str_ValueError._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[51];
+ }
+ntpath_toplevel_consts_27_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 50,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf0\x04\x03\x05\x15\xdc\x0d\x0f\x8f\x58\x89\x58\x90\x64\x8b\x5e\x88\x02\xf0\x06\x00\x0c\x10\xf8\xf4\x05\x00\x0d\x14\x94\x5a\xd0\x0b\x20\xf2\x00\x01\x05\x15\xd9\x0f\x14\xf0\x03\x01\x05\x15\xfa",
+};
+static
+ struct _PyCode_DEF(90)
+ntpath_toplevel_consts_27 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 45,
+ },
+ .co_consts = & ntpath_toplevel_consts_27_consts._object.ob_base.ob_base,
+ .co_names = & ntpath_toplevel_consts_27_names._object.ob_base.ob_base,
+ .co_exceptiontable = & genericpath_toplevel_consts_4_exceptiontable.ob_base.ob_base,
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 6 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 299,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 2,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 561,
+ .co_localsplusnames = & genericpath_toplevel_consts_5_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_14_consts_2_localspluskinds.ob_base.ob_base,
+ .co_filename = & ntpath_toplevel_consts_12_filename._ascii.ob_base,
+ .co_name = & const_str_lexists._ascii.ob_base,
+ .co_qualname = & const_str_lexists._ascii.ob_base,
+ .co_linetable = & ntpath_toplevel_consts_27_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x09\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x01\x79\x02\x23\x00\x74\x04\x00\x00\x00\x00\x00\x00\x00\x00\x74\x06\x00\x00\x00\x00\x00\x00\x00\x00\x66\x02\x24\x00\x72\x03\x01\x00\x59\x00\x79\x01\x77\x00\x78\x03\x59\x00\x77\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[19];
+ }
+const_str__getvolumepathname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 18,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_getvolumepathname",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+ntpath_toplevel_consts_28 = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & const_str__getvolumepathname._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[98];
+ }
+ntpath_toplevel_consts_29_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 97,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x54\x65\x73\x74\x20\x77\x68\x65\x74\x68\x65\x72\x20\x61\x20\x70\x61\x74\x68\x20\x69\x73\x20\x61\x20\x6d\x6f\x75\x6e\x74\x20\x70\x6f\x69\x6e\x74\x20\x28\x61\x20\x64\x72\x69\x76\x65\x20\x72\x6f\x6f\x74\x2c\x20\x74\x68\x65\x20\x72\x6f\x6f\x74\x20\x6f\x66\x20\x61\x0a\x20\x20\x20\x20\x73\x68\x61\x72\x65\x2c\x20\x6f\x72\x20\x61\x20\x6d\x6f\x75\x6e\x74\x65\x64\x20\x76\x6f\x6c\x75\x6d\x65\x29",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[4];
+ }_object;
+ }
+ntpath_toplevel_consts_29_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_item = {
+ & ntpath_toplevel_consts_29_consts_0._ascii.ob_base,
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 0],
+ Py_True,
+ Py_False,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[8];
+ }_object;
+ }
+ntpath_toplevel_consts_29_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 8,
+ },
+ .ob_item = {
+ & const_str_os._ascii.ob_base,
+ & const_str_fspath._ascii.ob_base,
+ & const_str__get_bothseps._ascii.ob_base,
+ & const_str_abspath._ascii.ob_base,
+ & const_str_splitroot._ascii.ob_base,
+ & const_str__getvolumepathname._ascii.ob_base,
+ & const_str_rstrip._ascii.ob_base,
+ & const_str_casefold._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[146];
+ }
+ntpath_toplevel_consts_29_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 145,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf4\x06\x00\x0c\x0e\x8f\x39\x89\x39\x90\x54\x8b\x3f\x80\x44\xdc\x0b\x18\x98\x14\xd3\x0b\x1e\x80\x44\xdc\x0b\x12\x90\x34\x8b\x3d\x80\x44\xdc\x18\x21\xa0\x24\x9b\x0f\xd1\x04\x15\x80\x45\x88\x34\x90\x14\xd9\x07\x0c\x90\x15\x90\x71\x91\x18\x98\x54\xd1\x11\x21\xd8\x13\x17\x88\x78\x88\x0f\xd9\x07\x0b\x91\x44\xd8\x0f\x13\xe5\x07\x19\xd8\x0c\x10\x8f\x4b\x89\x4b\x98\x04\xd3\x0c\x1d\x88\x01\xdc\x0b\x1d\x98\x64\xd3\x0b\x23\xd7\x0b\x2a\xd1\x0b\x2a\xa8\x34\xd3\x0b\x30\x88\x01\xd8\x0f\x10\x8f\x7a\x89\x7a\x8b\x7c\x98\x71\x9f\x7a\x99\x7a\x9b\x7c\xd1\x0f\x2b\xd0\x08\x2b\xe0\x0f\x14",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[7];
+ }_object;
+ }
+ntpath_toplevel_consts_29_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 7,
+ },
+ .ob_item = {
+ &_Py_ID(path),
+ & const_str_seps._ascii.ob_base,
+ & const_str_drive._ascii.ob_base,
+ & const_str_root._ascii.ob_base,
+ & const_str_rest._ascii.ob_base,
+ &_Py_ID(x),
+ (PyObject *)&_Py_SINGLETON(strings).ascii[121],
+ },
+ },
+};
+static
+ struct _PyCode_DEF(318)
+ntpath_toplevel_consts_29 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 159,
+ },
+ .co_consts = & ntpath_toplevel_consts_29_consts._object.ob_base.ob_base,
+ .co_names = & ntpath_toplevel_consts_29_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 10 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 3,
+ .co_firstlineno = 321,
+ .co_nlocalsplus = 7,
+ .co_nlocals = 7,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 562,
+ .co_localsplusnames = & ntpath_toplevel_consts_29_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_46_consts_9_localspluskinds.ob_base.ob_base,
+ .co_filename = & ntpath_toplevel_consts_12_filename._ascii.ob_base,
+ .co_name = & const_str_ismount._ascii.ob_base,
+ .co_qualname = & const_str_ismount._ascii.ob_base,
+ .co_linetable = & ntpath_toplevel_consts_29_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x00\x74\x05\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x01\x74\x07\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x00\x74\x09\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x5c\x03\x00\x00\x7d\x02\x7d\x03\x7d\x04\x7c\x02\x72\x0a\x7c\x02\x64\x01\x19\x00\x00\x00\x7c\x01\x76\x00\x72\x03\x7c\x04\x0c\x00\x53\x00\x7c\x03\x72\x03\x7c\x04\x73\x01\x79\x02\x74\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x72\x4c\x7c\x00\x6a\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x05\x74\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x6a\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x06\x7c\x05\x6a\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x7c\x06\x6a\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x6b\x28\x00\x00\x53\x00\x79\x03",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[77];
+ }
+ntpath_toplevel_consts_30_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 76,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x45\x78\x70\x61\x6e\x64\x20\x7e\x20\x61\x6e\x64\x20\x7e\x75\x73\x65\x72\x20\x63\x6f\x6e\x73\x74\x72\x75\x63\x74\x73\x2e\x0a\x0a\x20\x20\x20\x20\x49\x66\x20\x75\x73\x65\x72\x20\x6f\x72\x20\x24\x48\x4f\x4d\x45\x20\x69\x73\x20\x75\x6e\x6b\x6e\x6f\x77\x6e\x2c\x20\x64\x6f\x20\x6e\x6f\x74\x68\x69\x6e\x67\x2e",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[12];
+ }
+const_str_USERPROFILE = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 11,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "USERPROFILE",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[9];
+ }
+const_str_HOMEPATH = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 8,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "HOMEPATH",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[10];
+ }
+const_str_HOMEDRIVE = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 9,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "HOMEDRIVE",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[9];
+ }
+const_str_USERNAME = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 8,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "USERNAME",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[10];
+ }_object;
+ }
+ntpath_toplevel_consts_30_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 10,
+ },
+ .ob_item = {
+ & ntpath_toplevel_consts_30_consts_0._ascii.ob_base,
+ (PyObject *)&_Py_SINGLETON(bytes_characters[126]),
+ (PyObject *)&_Py_SINGLETON(strings).ascii[126],
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 1],
+ & const_str_USERPROFILE._ascii.ob_base,
+ & const_str_HOMEPATH._ascii.ob_base,
+ & const_str_HOMEDRIVE._ascii.ob_base,
+ &_Py_STR(empty),
+ & const_str_USERNAME._ascii.ob_base,
+ Py_None,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[15];
+ }_object;
+ }
+ntpath_toplevel_consts_30_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 15,
+ },
+ .ob_item = {
+ & const_str_os._ascii.ob_base,
+ & const_str_fspath._ascii.ob_base,
+ &_Py_ID(isinstance),
+ &_Py_ID(bytes),
+ & const_str_startswith._ascii.ob_base,
+ &_Py_ID(len),
+ & const_str__get_bothseps._ascii.ob_base,
+ & const_str_environ._ascii.ob_base,
+ & const_str_KeyError._ascii.ob_base,
+ &_Py_ID(join),
+ & const_str_fsdecode._ascii.ob_base,
+ &_Py_ID(get),
+ & const_str_basename._ascii.ob_base,
+ & const_str_dirname._ascii.ob_base,
+ & const_str_fsencode._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[380];
+ }
+ntpath_toplevel_consts_30_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 379,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf4\x08\x00\x0c\x0e\x8f\x39\x89\x39\x90\x54\x8b\x3f\x80\x44\xdc\x07\x11\x90\x24\x9c\x05\xd4\x07\x1e\xd8\x10\x14\x89\x05\xe0\x10\x13\x88\x05\xd8\x0b\x0f\x8f\x3f\x89\x3f\x98\x35\xd4\x0b\x21\xd8\x0f\x13\x88\x0b\xd8\x0b\x0c\x8c\x63\x90\x24\x8b\x69\x80\x71\x80\x41\xd8\x0a\x0b\x88\x61\x8a\x25\x90\x44\x98\x11\x91\x47\xa4\x3d\xb0\x14\xd3\x23\x36\xd1\x14\x36\xd8\x08\x09\x88\x51\x89\x06\x88\x01\xf0\x03\x00\x0b\x0c\x88\x61\x8a\x25\x90\x44\x98\x11\x91\x47\xa4\x3d\xb0\x14\xd3\x23\x36\xd2\x14\x36\xf0\x06\x00\x08\x15\x9c\x02\x9f\x0a\x99\x0a\xd1\x07\x22\xdc\x13\x15\x97\x3a\x91\x3a\x98\x6d\xd1\x13\x2c\x89\x08\xd8\x0d\x17\x9c\x32\x9f\x3a\x99\x3a\xd1\x0d\x25\xd8\x0f\x13\x88\x0b\xf0\x04\x03\x09\x17\xdc\x14\x16\x97\x4a\x91\x4a\x98\x7b\xd1\x14\x2b\x88\x45\xf4\x06\x00\x14\x18\x98\x05\x9c\x72\x9f\x7a\x99\x7a\xa8\x2a\xd1\x1f\x35\xd3\x13\x36\x88\x08\xe0\x07\x08\x88\x41\x82\x76\xd8\x16\x1a\x98\x31\x98\x51\x90\x69\x88\x0b\xdc\x0b\x15\x90\x6b\xa4\x35\xd4\x0b\x29\xdc\x1a\x1c\x9f\x2b\x99\x2b\xa0\x6b\xd3\x1a\x32\x88\x4b\xdc\x17\x19\x97\x7a\x91\x7a\x97\x7e\x91\x7e\xa0\x6a\xd3\x17\x31\x88\x0c\xe0\x0b\x16\x98\x2c\xd2\x0b\x26\xf0\x0c\x00\x10\x1c\x9c\x78\xa8\x08\xd3\x1f\x31\xd2\x0f\x31\xd8\x17\x1b\x90\x0b\xdc\x17\x1b\x9c\x47\xa0\x48\xd3\x1c\x2d\xa8\x7b\xd3\x17\x3b\x88\x48\xe4\x07\x11\x90\x24\x9c\x05\xd4\x07\x1e\xdc\x13\x15\x97\x3b\x91\x3b\x98\x78\xd3\x13\x28\x88\x08\xe0\x0b\x13\x90\x64\x98\x31\x98\x32\x90\x68\xd1\x0b\x1e\xd0\x04\x1e\xf8\xf4\x2f\x00\x10\x18\xf2\x00\x01\x09\x17\xd8\x14\x16\x8a\x45\xf0\x03\x01\x09\x17\xfa",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[19];
+ }
+ntpath_toplevel_consts_30_exceptiontable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 18,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\xc2\x36\x13\x46\x0b\x00\xc6\x0b\x0b\x46\x19\x03\xc6\x18\x01\x46\x19\x03",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[6];
+ }
+const_str_tilde = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 5,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "tilde",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[9];
+ }
+const_str_userhome = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 8,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "userhome",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[12];
+ }
+const_str_target_user = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 11,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "target_user",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[13];
+ }
+const_str_current_user = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 12,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "current_user",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[8];
+ }_object;
+ }
+ntpath_toplevel_consts_30_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 8,
+ },
+ .ob_item = {
+ &_Py_ID(path),
+ & const_str_tilde._ascii.ob_base,
+ (PyObject *)&_Py_SINGLETON(strings).ascii[105],
+ &_Py_ID(n),
+ & const_str_userhome._ascii.ob_base,
+ & const_str_drive._ascii.ob_base,
+ & const_str_target_user._ascii.ob_base,
+ & const_str_current_user._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(824)
+ntpath_toplevel_consts_30 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 412,
+ },
+ .co_consts = & ntpath_toplevel_consts_30_consts._object.ob_base.ob_base,
+ .co_names = & ntpath_toplevel_consts_30_names._object.ob_base.ob_base,
+ .co_exceptiontable = & ntpath_toplevel_consts_30_exceptiontable.ob_base.ob_base,
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 13 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 5,
+ .co_firstlineno = 350,
+ .co_nlocalsplus = 8,
+ .co_nlocals = 8,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 563,
+ .co_localsplusnames = & ntpath_toplevel_consts_30_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_13_localspluskinds.ob_base.ob_base,
+ .co_filename = & ntpath_toplevel_consts_12_filename._ascii.ob_base,
+ .co_name = & const_str_expanduser._ascii.ob_base,
+ .co_qualname = & const_str_expanduser._ascii.ob_base,
+ .co_linetable = & ntpath_toplevel_consts_30_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x00\x74\x05\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x74\x06\x00\x00\x00\x00\x00\x00\x00\x00\xab\x02\x00\x00\x00\x00\x00\x00\x72\x03\x64\x01\x7d\x01\x6e\x02\x64\x02\x7d\x01\x7c\x00\x6a\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\xab\x01\x00\x00\x00\x00\x00\x00\x73\x02\x7c\x00\x53\x00\x64\x03\x74\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x03\x7d\x02\x7c\x02\x7c\x03\x6b\x02\x00\x00\x72\x2b\x7c\x00\x7c\x02\x19\x00\x00\x00\x74\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x76\x01\x72\x1b\x7c\x02\x64\x03\x7a\x0d\x00\x00\x7d\x02\x7c\x02\x7c\x03\x6b\x02\x00\x00\x72\x11\x7c\x00\x7c\x02\x19\x00\x00\x00\x74\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x76\x01\x72\x01\x8c\x1b\x64\x04\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x76\x00\x72\x14\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x04\x19\x00\x00\x00\x7d\x04\x6e\x45\x64\x05\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x76\x01\x72\x02\x7c\x00\x53\x00\x09\x00\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x06\x19\x00\x00\x00\x7d\x05\x74\x13\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x05\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x05\x19\x00\x00\x00\xab\x02\x00\x00\x00\x00\x00\x00\x7d\x04\x7c\x02\x64\x03\x6b\x37\x00\x00\x72\x73\x7c\x00\x64\x03\x7c\x02\x1a\x00\x7d\x06\x74\x05\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x06\x74\x06\x00\x00\x00\x00\x00\x00\x00\x00\xab\x02\x00\x00\x00\x00\x00\x00\x72\x15\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x14\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x06\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x06\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x17\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x08\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x07\x7c\x06\x7c\x07\x6b\x37\x00\x00\x72\x25\x7c\x07\x74\x19\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x04\xab\x01\x00\x00\x00\x00\x00\x00\x6b\x37\x00\x00\x72\x02\x7c\x00\x53\x00\x74\x13\x00\x00\x00\x00\x00\x00\x00\x00\x74\x1b\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x04\xab\x01\x00\x00\x00\x00\x00\x00\x7c\x06\xab\x02\x00\x00\x00\x00\x00\x00\x7d\x04\x74\x05\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x74\x06\x00\x00\x00\x00\x00\x00\x00\x00\xab\x02\x00\x00\x00\x00\x00\x00\x72\x15\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x1c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x04\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x04\x7c\x04\x7c\x00\x7c\x02\x64\x09\x1a\x00\x7a\x00\x00\x00\x53\x00\x23\x00\x74\x10\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x72\x05\x01\x00\x64\x07\x7d\x05\x59\x00\x8c\xcf\x77\x00\x78\x03\x59\x00\x77\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[103];
+ }
+ntpath_toplevel_consts_31_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 102,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x45\x78\x70\x61\x6e\x64\x20\x73\x68\x65\x6c\x6c\x20\x76\x61\x72\x69\x61\x62\x6c\x65\x73\x20\x6f\x66\x20\x74\x68\x65\x20\x66\x6f\x72\x6d\x73\x20\x24\x76\x61\x72\x2c\x20\x24\x7b\x76\x61\x72\x7d\x20\x61\x6e\x64\x20\x25\x76\x61\x72\x25\x2e\x0a\x0a\x20\x20\x20\x20\x55\x6e\x6b\x6e\x6f\x77\x6e\x20\x76\x61\x72\x69\x61\x62\x6c\x65\x73\x20\x61\x72\x65\x20\x6c\x65\x66\x74\x20\x75\x6e\x63\x68\x61\x6e\x67\x65\x64\x2e",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[3];
+ }
+ntpath_toplevel_consts_31_consts_5 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 2,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_-",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[9];
+ }
+const_str_environb = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 8,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "environb",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[18];
+ }_object;
+ }
+ntpath_toplevel_consts_31_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 18,
+ },
+ .ob_item = {
+ & ntpath_toplevel_consts_31_consts_0._ascii.ob_base,
+ (PyObject *)&_Py_SINGLETON(bytes_characters[36]),
+ (PyObject *)&_Py_SINGLETON(bytes_characters[37]),
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 0],
+ Py_None,
+ & ntpath_toplevel_consts_31_consts_5._ascii.ob_base,
+ & const_str_ascii._ascii.ob_base,
+ (PyObject *)&_Py_SINGLETON(bytes_characters[39]),
+ (PyObject *)&_Py_SINGLETON(bytes_characters[123]),
+ (PyObject *)&_Py_SINGLETON(bytes_characters[125]),
+ & const_str_environb._ascii.ob_base,
+ (PyObject *)&_Py_SINGLETON(strings).ascii[36],
+ &_Py_STR(percent),
+ (PyObject *)&_Py_SINGLETON(strings).ascii[39],
+ &_Py_STR(open_br),
+ &_Py_STR(close_br),
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 1],
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 2],
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[14];
+ }
+const_str_ascii_letters = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 13,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "ascii_letters",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[7];
+ }
+const_str_digits = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 6,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "digits",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[15];
+ }_object;
+ }
+ntpath_toplevel_consts_31_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 15,
+ },
+ .ob_item = {
+ & const_str_os._ascii.ob_base,
+ & const_str_fspath._ascii.ob_base,
+ &_Py_ID(isinstance),
+ &_Py_ID(bytes),
+ &_Py_ID(string),
+ & const_str_ascii_letters._ascii.ob_base,
+ & const_str_digits._ascii.ob_base,
+ &_Py_ID(getattr),
+ & const_str_environ._ascii.ob_base,
+ &_Py_ID(len),
+ & const_str_index._ascii.ob_base,
+ & const_str_ValueError._ascii.ob_base,
+ & const_str_fsencode._ascii.ob_base,
+ & const_str_fsdecode._ascii.ob_base,
+ & const_str_KeyError._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[1097];
+ }
+ntpath_toplevel_consts_31_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 1096,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf4\x08\x00\x0c\x0e\x8f\x39\x89\x39\x90\x54\x8b\x3f\x80\x44\xdc\x07\x11\x90\x24\x9c\x05\xd4\x07\x1e\xd8\x0b\x0f\x90\x74\xd1\x0b\x1b\xa0\x04\xa8\x44\xd1\x20\x30\xd8\x13\x17\x88\x4b\xdb\x08\x15\xdc\x13\x18\x98\x16\xd7\x19\x2d\xd1\x19\x2d\xb0\x06\xb7\x0d\xb1\x0d\xd1\x19\x3d\xc0\x04\xd1\x19\x44\xc0\x67\xd3\x13\x4e\x88\x08\xd8\x10\x15\x88\x05\xd8\x12\x16\x88\x07\xd8\x10\x14\x88\x05\xd8\x11\x15\x88\x06\xd8\x11\x15\x88\x06\xdc\x12\x19\x9c\x22\x98\x6a\xa8\x24\xd3\x12\x2f\x89\x07\xe0\x0b\x0e\x90\x64\x89\x3f\x98\x73\xa8\x24\x99\x7f\xd8\x13\x17\x88\x4b\xdb\x08\x15\xd8\x13\x19\xd7\x13\x27\xd1\x13\x27\xa8\x26\xaf\x2d\xa9\x2d\xd1\x13\x37\xb8\x24\xd1\x13\x3e\x88\x08\xd8\x10\x14\x88\x05\xd8\x12\x15\x88\x07\xd8\x10\x13\x88\x05\xd8\x11\x14\x88\x06\xd8\x11\x14\x88\x06\xdc\x12\x14\x97\x2a\x91\x2a\x88\x07\xd8\x0a\x0e\x88\x72\x90\x01\x88\x28\x80\x43\xd8\x0c\x0d\x80\x45\xdc\x0e\x11\x90\x24\x8b\x69\x80\x47\xd8\x0a\x0f\x90\x27\x8b\x2f\xd8\x0c\x10\x90\x15\x90\x75\x98\x51\x91\x77\xd0\x0c\x1f\x88\x01\xd8\x0b\x0c\x90\x05\x8a\x3a\xd8\x13\x17\x98\x05\xa0\x01\x99\x09\x98\x0a\xd0\x13\x23\x88\x44\xdc\x16\x19\x98\x24\x93\x69\x88\x47\xf0\x02\x05\x0d\x24\xd8\x18\x1c\x9f\x0a\x99\x0a\xa0\x31\x9b\x0d\x90\x05\xd8\x10\x13\x90\x71\x98\x34\xa0\x0a\xa0\x15\xa8\x11\xa1\x19\xd0\x1b\x2b\xd1\x17\x2b\xd1\x10\x2b\x92\x03\xf0\x08\x00\x0e\x0f\x90\x27\x8a\x5c\xd8\x0f\x13\x90\x45\x98\x41\x91\x49\x98\x65\xa0\x61\x99\x69\xd0\x0f\x28\xa8\x47\xd2\x0f\x33\xd8\x10\x13\x90\x71\x91\x08\x90\x03\xd8\x10\x15\x98\x11\x91\x0a\x92\x05\xe0\x17\x1b\x98\x45\xa0\x21\x99\x47\x98\x48\x90\x7e\x90\x04\xdc\x1a\x1d\x98\x64\x9b\x29\x90\x07\xf0\x02\x0e\x11\x21\xd8\x1c\x20\x9f\x4a\x99\x4a\xa0\x77\xd3\x1c\x2f\x90\x45\xf0\x0a\x00\x1b\x1f\x98\x76\xa0\x05\x98\x2c\x90\x43\xf0\x02\x06\x15\x38\xd8\x1b\x22\x98\x3f\xdc\x24\x26\xa7\x4b\xa1\x4b\xb4\x02\xb7\x0a\xb1\x0a\xbc\x32\xbf\x3b\xb9\x3b\xc0\x73\xd3\x3b\x4b\xd1\x30\x4c\xd3\x24\x4d\x99\x45\xe0\x24\x2b\xa8\x43\xa1\x4c\x98\x45\xf0\x06\x00\x15\x18\x98\x35\x91\x4c\x92\x43\xd8\x0d\x0e\x90\x26\x8b\x5b\xd8\x0f\x13\x90\x45\x98\x41\x91\x49\x98\x65\xa0\x61\x99\x69\xd0\x0f\x28\xa8\x46\xd2\x0f\x32\xd8\x10\x13\x90\x71\x91\x08\x90\x03\xd8\x10\x15\x98\x11\x91\x0a\x92\x05\xd8\x11\x15\x90\x65\x98\x61\x91\x69\xa0\x05\xa8\x01\xa1\x09\xd0\x11\x2a\xa8\x65\xd2\x11\x33\xd8\x17\x1b\x98\x45\xa0\x21\x99\x47\x98\x48\x90\x7e\x90\x04\xdc\x1a\x1d\x98\x64\x9b\x29\x90\x07\xf0\x02\x0e\x11\x21\xd8\x1c\x20\x9f\x4a\x99\x4a\xa0\x76\xd3\x1c\x2e\x90\x45\xf0\x0a\x00\x1b\x1f\x98\x76\xa0\x05\x98\x2c\x90\x43\xf0\x02\x06\x15\x3e\xd8\x1b\x22\x98\x3f\xdc\x24\x26\xa7\x4b\xa1\x4b\xb4\x02\xb7\x0a\xb1\x0a\xbc\x32\xbf\x3b\xb9\x3b\xc0\x73\xd3\x3b\x4b\xd1\x30\x4c\xd3\x24\x4d\x99\x45\xe0\x24\x2b\xa8\x43\xa1\x4c\x98\x45\xf0\x06\x00\x15\x18\x98\x35\x91\x4c\x91\x43\xe0\x16\x1a\x98\x32\x98\x41\x90\x68\x90\x03\xd8\x10\x15\x98\x11\x91\x0a\x90\x05\xd8\x14\x18\x98\x15\x98\x75\xa0\x71\x99\x79\xd0\x14\x29\x90\x01\xd9\x16\x17\x98\x41\xa0\x18\x99\x4d\xd8\x14\x17\x98\x31\x91\x48\x90\x43\xd8\x14\x19\x98\x51\x91\x4a\x90\x45\xd8\x18\x1c\x98\x55\xa0\x35\xa8\x31\xa1\x39\xd0\x18\x2d\x90\x41\xf1\x07\x00\x17\x18\x98\x41\xa0\x18\x9a\x4d\xf0\x08\x06\x11\x29\xd8\x17\x1e\x90\x7f\xdc\x20\x22\xa7\x0b\xa1\x0b\xac\x42\xaf\x4a\xa9\x4a\xb4\x72\xb7\x7b\xb1\x7b\xc0\x33\xd3\x37\x47\xd1\x2c\x48\xd3\x20\x49\x99\x05\xe0\x20\x27\xa8\x03\xa1\x0c\x98\x05\xf0\x06\x00\x11\x14\x90\x75\x91\x0c\x90\x03\xd9\x13\x14\xd8\x14\x19\x98\x51\x91\x4a\x91\x45\xe0\x0c\x0f\x90\x31\x89\x48\x88\x43\xd8\x08\x0d\x90\x11\x89\x0a\x88\x05\xf0\x57\x02\x00\x0b\x10\x90\x27\x8c\x2f\xf0\x58\x02\x00\x0c\x0f\x80\x4a\xf8\xf4\x49\x02\x00\x14\x1e\xf2\x00\x02\x0d\x24\xd8\x10\x13\x90\x71\x98\x34\x91\x78\x91\x0f\x90\x03\xd8\x18\x1f\xa0\x21\x99\x0b\x92\x05\xf0\x05\x02\x0d\x24\xfb\xf4\x2c\x00\x1c\x24\xf2\x00\x01\x15\x38\xd8\x20\x27\xa8\x23\xa1\x0d\xb0\x07\xd1\x20\x37\x9b\x05\xf0\x03\x01\x15\x38\xfb\xf4\x15\x00\x18\x22\xf2\x00\x02\x11\x28\xd8\x14\x17\x98\x37\xa0\x54\x99\x3e\xd1\x14\x29\x90\x43\xd8\x1c\x23\xa0\x61\x99\x4b\x92\x45\xf0\x05\x02\x11\x28\xfb\xf4\x40\x01\x00\x1c\x24\xf2\x00\x01\x15\x3e\xd8\x20\x26\xa8\x15\xa1\x0e\xb0\x13\xd1\x20\x34\xb0\x76\xd1\x20\x3d\x9a\x05\xf0\x03\x01\x15\x3e\xfb\xf4\x15\x00\x18\x22\xf2\x00\x02\x11\x28\xd8\x14\x17\x98\x36\xa0\x45\x99\x3e\xa8\x44\xd1\x1b\x30\xd1\x14\x30\x90\x43\xd8\x1c\x23\xa0\x61\x99\x4b\x92\x45\xf0\x05\x02\x11\x28\xfb\xf4\x34\x00\x18\x20\xf2\x00\x01\x11\x29\xd8\x1c\x22\xa0\x53\x99\x4c\x92\x45\xf0\x03\x01\x11\x29\xfa",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[112];
+ }
+ntpath_toplevel_consts_31_exceptiontable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 111,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\xc3\x33\x1f\x4b\x19\x00\xc5\x07\x11\x4c\x0d\x00\xc5\x1e\x41\x01\x4b\x35\x00\xc7\x28\x11\x4d\x03\x00\xc7\x3f\x41\x01\x4c\x29\x00\xc9\x38\x41\x01\x4d\x22\x00\xcb\x19\x16\x4b\x32\x03\xcb\x31\x01\x4b\x32\x03\xcb\x35\x11\x4c\x0a\x03\xcc\x09\x01\x4c\x0a\x03\xcc\x0d\x16\x4c\x26\x03\xcc\x25\x01\x4c\x26\x03\xcc\x29\x14\x4d\x00\x03\xcc\x3f\x01\x4d\x00\x03\xcd\x03\x19\x4d\x1f\x03\xcd\x1e\x01\x4d\x1f\x03\xcd\x22\x0e\x4d\x33\x03\xcd\x32\x01\x4d\x33\x03",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[9];
+ }
+const_str_varchars = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 8,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "varchars",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[6];
+ }
+const_str_quote = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 5,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "quote",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[8];
+ }
+const_str_percent = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 7,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "percent",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[6];
+ }
+const_str_brace = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 5,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "brace",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[7];
+ }
+const_str_rbrace = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 6,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "rbrace",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[7];
+ }
+const_str_dollar = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 6,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "dollar",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[4];
+ }
+const_str_res = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 3,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "res",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[8];
+ }
+const_str_pathlen = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 7,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "pathlen",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[4];
+ }
+const_str_var = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 3,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "var",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[15];
+ }_object;
+ }
+ntpath_toplevel_consts_31_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 15,
+ },
+ .ob_item = {
+ &_Py_ID(path),
+ &_Py_ID(string),
+ & const_str_varchars._ascii.ob_base,
+ & const_str_quote._ascii.ob_base,
+ & const_str_percent._ascii.ob_base,
+ & const_str_brace._ascii.ob_base,
+ & const_str_rbrace._ascii.ob_base,
+ & const_str_dollar._ascii.ob_base,
+ & const_str_environ._ascii.ob_base,
+ & const_str_res._ascii.ob_base,
+ & const_str_index._ascii.ob_base,
+ & const_str_pathlen._ascii.ob_base,
+ &_Py_ID(c),
+ & const_str_var._ascii.ob_base,
+ &_Py_ID(value),
+ },
+ },
+};
+static
+ struct _PyCode_DEF(1772)
+ntpath_toplevel_consts_31 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 886,
+ },
+ .co_consts = & ntpath_toplevel_consts_31_consts._object.ob_base.ob_base,
+ .co_names = & ntpath_toplevel_consts_31_names._object.ob_base.ob_base,
+ .co_exceptiontable = & ntpath_toplevel_consts_31_exceptiontable.ob_base.ob_base,
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 21 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 6,
+ .co_firstlineno = 411,
+ .co_nlocalsplus = 15,
+ .co_nlocals = 15,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 564,
+ .co_localsplusnames = & ntpath_toplevel_consts_31_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_external_toplevel_consts_56_consts_9_localspluskinds.ob_base.ob_base,
+ .co_filename = & ntpath_toplevel_consts_12_filename._ascii.ob_base,
+ .co_name = & const_str_expandvars._ascii.ob_base,
+ .co_qualname = & const_str_expandvars._ascii.ob_base,
+ .co_linetable = & ntpath_toplevel_consts_31_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x00\x74\x05\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x74\x06\x00\x00\x00\x00\x00\x00\x00\x00\xab\x02\x00\x00\x00\x00\x00\x00\x72\x50\x64\x01\x7c\x00\x76\x01\x72\x06\x64\x02\x7c\x00\x76\x01\x72\x02\x7c\x00\x53\x00\x64\x03\x64\x04\x6c\x04\x7d\x01\x74\x07\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x6a\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x6a\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7a\x00\x00\x00\x64\x05\x7a\x00\x00\x00\x64\x06\xab\x02\x00\x00\x00\x00\x00\x00\x7d\x02\x64\x07\x7d\x03\x64\x02\x7d\x04\x64\x08\x7d\x05\x64\x09\x7d\x06\x64\x01\x7d\x07\x74\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x0a\x64\x04\xab\x03\x00\x00\x00\x00\x00\x00\x7d\x08\x6e\x44\x64\x0b\x7c\x00\x76\x01\x72\x06\x64\x0c\x7c\x00\x76\x01\x72\x02\x7c\x00\x53\x00\x64\x03\x64\x04\x6c\x04\x7d\x01\x7c\x01\x6a\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x6a\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7a\x00\x00\x00\x64\x05\x7a\x00\x00\x00\x7d\x02\x64\x0d\x7d\x03\x64\x0c\x7d\x04\x64\x0e\x7d\x05\x64\x0f\x7d\x06\x64\x0b\x7d\x07\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7d\x08\x7c\x00\x64\x04\x64\x03\x1a\x00\x7d\x09\x64\x03\x7d\x0a\x74\x13\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x0b\x7c\x0a\x7c\x0b\x6b\x02\x00\x00\x90\x02\x72\x05\x7c\x00\x7c\x0a\x7c\x0a\x64\x10\x7a\x00\x00\x00\x1a\x00\x7d\x0c\x7c\x0c\x7c\x03\x6b\x28\x00\x00\x72\x35\x7c\x00\x7c\x0a\x64\x10\x7a\x00\x00\x00\x64\x04\x1a\x00\x7d\x00\x74\x13\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x0b\x09\x00\x7c\x00\x6a\x15\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x0c\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x0a\x7c\x09\x7c\x0c\x7c\x00\x64\x04\x7c\x0a\x64\x10\x7a\x00\x00\x00\x1a\x00\x7a\x00\x00\x00\x7a\x0d\x00\x00\x7d\x09\x90\x01\x6e\xb7\x7c\x0c\x7c\x04\x6b\x28\x00\x00\x72\x8d\x7c\x00\x7c\x0a\x64\x10\x7a\x00\x00\x00\x7c\x0a\x64\x11\x7a\x00\x00\x00\x1a\x00\x7c\x04\x6b\x28\x00\x00\x72\x0c\x7c\x09\x7c\x0c\x7a\x0d\x00\x00\x7d\x09\x7c\x0a\x64\x10\x7a\x0d\x00\x00\x7d\x0a\x90\x01\x6e\x98\x7c\x00\x7c\x0a\x64\x10\x7a\x00\x00\x00\x64\x04\x1a\x00\x7d\x00\x74\x13\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x0b\x09\x00\x7c\x00\x6a\x15\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x04\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x0a\x7c\x00\x64\x04\x7c\x0a\x1a\x00\x7d\x0d\x09\x00\x7c\x08\x80\x3a\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x1a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x0d\xab\x01\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x0e\x6e\x05\x7c\x08\x7c\x0d\x19\x00\x00\x00\x7d\x0e\x7c\x09\x7c\x0e\x7a\x0d\x00\x00\x7d\x09\x90\x01\x6e\x25\x7c\x0c\x7c\x07\x6b\x28\x00\x00\x90\x01\x72\x1a\x7c\x00\x7c\x0a\x64\x10\x7a\x00\x00\x00\x7c\x0a\x64\x11\x7a\x00\x00\x00\x1a\x00\x7c\x07\x6b\x28\x00\x00\x72\x0c\x7c\x09\x7c\x0c\x7a\x0d\x00\x00\x7d\x09\x7c\x0a\x64\x10\x7a\x0d\x00\x00\x7d\x0a\x90\x01\x6e\x05\x7c\x00\x7c\x0a\x64\x10\x7a\x00\x00\x00\x7c\x0a\x64\x11\x7a\x00\x00\x00\x1a\x00\x7c\x05\x6b\x28\x00\x00\x72\x72\x7c\x00\x7c\x0a\x64\x11\x7a\x00\x00\x00\x64\x04\x1a\x00\x7d\x00\x74\x13\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x0b\x09\x00\x7c\x00\x6a\x15\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x06\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x0a\x7c\x00\x64\x04\x7c\x0a\x1a\x00\x7d\x0d\x09\x00\x7c\x08\x80\x3a\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x1a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x0d\xab\x01\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x0e\x6e\x05\x7c\x08\x7c\x0d\x19\x00\x00\x00\x7d\x0e\x7c\x09\x7c\x0e\x7a\x0d\x00\x00\x7d\x09\x6e\x85\x7c\x00\x64\x04\x64\x03\x1a\x00\x7d\x0d\x7c\x0a\x64\x10\x7a\x0d\x00\x00\x7d\x0a\x7c\x00\x7c\x0a\x7c\x0a\x64\x10\x7a\x00\x00\x00\x1a\x00\x7d\x0c\x7c\x0c\x72\x1d\x7c\x0c\x7c\x02\x76\x00\x72\x19\x7c\x0d\x7c\x0c\x7a\x0d\x00\x00\x7d\x0d\x7c\x0a\x64\x10\x7a\x0d\x00\x00\x7d\x0a\x7c\x00\x7c\x0a\x7c\x0a\x64\x10\x7a\x00\x00\x00\x1a\x00\x7d\x0c\x7c\x0c\x72\x05\x7c\x0c\x7c\x02\x76\x00\x72\x01\x8c\x19\x09\x00\x7c\x08\x80\x3a\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x1a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x0d\xab\x01\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x0e\x6e\x05\x7c\x08\x7c\x0d\x19\x00\x00\x00\x7d\x0e\x7c\x09\x7c\x0e\x7a\x0d\x00\x00\x7d\x09\x7c\x0c\x72\x0b\x7c\x0a\x64\x10\x7a\x17\x00\x00\x7d\x0a\x6e\x05\x7c\x09\x7c\x0c\x7a\x0d\x00\x00\x7d\x09\x7c\x0a\x64\x10\x7a\x0d\x00\x00\x7d\x0a\x7c\x0a\x7c\x0b\x6b\x02\x00\x00\x72\x02\x90\x02\x8c\x05\x7c\x09\x53\x00\x23\x00\x74\x16\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x72\x10\x01\x00\x7c\x09\x7c\x0c\x7c\x00\x7a\x00\x00\x00\x7a\x0d\x00\x00\x7d\x09\x7c\x0b\x64\x10\x7a\x0a\x00\x00\x7d\x0a\x59\x00\x8c\x26\x77\x00\x78\x03\x59\x00\x77\x01\x23\x00\x74\x1c\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x72\x0c\x01\x00\x7c\x04\x7c\x0d\x7a\x00\x00\x00\x7c\x04\x7a\x00\x00\x00\x7d\x0e\x59\x00\x90\x01\x8c\x6a\x77\x00\x78\x03\x59\x00\x77\x01\x23\x00\x74\x16\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x72\x10\x01\x00\x7c\x09\x7c\x04\x7c\x00\x7a\x00\x00\x00\x7a\x0d\x00\x00\x7d\x09\x7c\x0b\x64\x10\x7a\x0a\x00\x00\x7d\x0a\x59\x00\x8c\x5a\x77\x00\x78\x03\x59\x00\x77\x01\x23\x00\x74\x1c\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x72\x0e\x01\x00\x7c\x07\x7c\x05\x7a\x00\x00\x00\x7c\x0d\x7a\x00\x00\x00\x7c\x06\x7a\x00\x00\x00\x7d\x0e\x59\x00\x8c\xff\x77\x00\x78\x03\x59\x00\x77\x01\x23\x00\x74\x16\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x72\x13\x01\x00\x7c\x09\x7c\x07\x7c\x05\x7a\x00\x00\x00\x7c\x00\x7a\x00\x00\x00\x7a\x0d\x00\x00\x7d\x09\x7c\x0b\x64\x10\x7a\x0a\x00\x00\x7d\x0a\x59\x00\x8c\x93\x77\x00\x78\x03\x59\x00\x77\x01\x23\x00\x74\x1c\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x72\x08\x01\x00\x7c\x07\x7c\x0d\x7a\x00\x00\x00\x7d\x0e\x59\x00\x8c\xb9\x77\x00\x78\x03\x59\x00\x77\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[15];
+ }
+const_str__path_normpath = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 14,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_path_normpath",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+ntpath_toplevel_consts_32 = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & const_str__path_normpath._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[49];
+ }
+ntpath_toplevel_consts_33_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 48,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Normalize path, eliminating double slashes, etc.",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+ntpath_toplevel_consts_33_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ & ntpath_toplevel_consts_33_consts_0._ascii.ob_base,
+ (PyObject *)&_Py_SINGLETON(bytes_characters[46]),
+ &_Py_STR(dot),
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[7];
+ }_object;
+ }
+ntpath_toplevel_consts_33_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 7,
+ },
+ .ob_item = {
+ & const_str_os._ascii.ob_base,
+ & const_str_fspath._ascii.ob_base,
+ &_Py_ID(isinstance),
+ &_Py_ID(bytes),
+ & const_str_fsencode._ascii.ob_base,
+ & const_str__path_normpath._ascii.ob_base,
+ & const_str_fsdecode._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[76];
+ }
+ntpath_toplevel_consts_33_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 75,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xe4\x0f\x11\x8f\x79\x89\x79\x98\x14\x8b\x7f\x88\x04\xdc\x0b\x15\x90\x64\x9c\x45\xd4\x0b\x22\xdc\x13\x15\x97\x3b\x91\x3b\x9c\x7e\xac\x62\xaf\x6b\xa9\x6b\xb8\x24\xd3\x2e\x3f\xd3\x1f\x40\xd3\x13\x41\xd2\x13\x49\xc0\x54\xd0\x0c\x49\xdc\x0f\x1d\x98\x64\xd3\x0f\x23\xd2\x0f\x2a\xa0\x73\xd0\x08\x2a",
+};
+static
+ struct _PyCode_DEF(212)
+ntpath_toplevel_consts_33 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 106,
+ },
+ .co_consts = & ntpath_toplevel_consts_33_consts._object.ob_base.ob_base,
+ .co_names = & ntpath_toplevel_consts_33_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 8 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 7,
+ .co_firstlineno = 564,
+ .co_nlocalsplus = 1,
+ .co_nlocals = 1,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 565,
+ .co_localsplusnames = & importlib__bootstrap_external_toplevel_consts_18_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_characters[32]),
+ .co_filename = & ntpath_toplevel_consts_12_filename._ascii.ob_base,
+ .co_name = & const_str_normpath._ascii.ob_base,
+ .co_qualname = & const_str_normpath._ascii.ob_base,
+ .co_linetable = & ntpath_toplevel_consts_33_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x00\x74\x05\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x74\x06\x00\x00\x00\x00\x00\x00\x00\x00\xab\x02\x00\x00\x00\x00\x00\x00\x72\x35\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x74\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x78\x01\x73\x02\x01\x00\x64\x01\x53\x00\x74\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x78\x01\x73\x02\x01\x00\x64\x02\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[3];
+ }
+ntpath_toplevel_consts_34_consts_4 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_shash = -1,
+ .ob_sval = "..",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[11];
+ }_object;
+ }
+ntpath_toplevel_consts_34_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 11,
+ },
+ .ob_item = {
+ & ntpath_toplevel_consts_33_consts_0._ascii.ob_base,
+ (PyObject *)&_Py_SINGLETON(bytes_characters[92]),
+ (PyObject *)&_Py_SINGLETON(bytes_characters[47]),
+ (PyObject *)&_Py_SINGLETON(bytes_characters[46]),
+ & ntpath_toplevel_consts_34_consts_4.ob_base.ob_base,
+ (PyObject *)&_Py_SINGLETON(strings).ascii[92],
+ (PyObject *)&_Py_SINGLETON(strings).ascii[47],
+ &_Py_STR(dot),
+ & ntpath_toplevel_consts_2._ascii.ob_base,
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 0],
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 1],
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[10];
+ }_object;
+ }
+ntpath_toplevel_consts_34_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 10,
+ },
+ .ob_item = {
+ & const_str_os._ascii.ob_base,
+ & const_str_fspath._ascii.ob_base,
+ &_Py_ID(isinstance),
+ &_Py_ID(bytes),
+ &_Py_ID(replace),
+ & const_str_splitroot._ascii.ob_base,
+ & const_str_split._ascii.ob_base,
+ &_Py_ID(len),
+ &_Py_ID(append),
+ &_Py_ID(join),
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[308];
+ }
+ntpath_toplevel_consts_34_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 307,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xe4\x0f\x11\x8f\x79\x89\x79\x98\x14\x8b\x7f\x88\x04\xdc\x0b\x15\x90\x64\x9c\x45\xd4\x0b\x22\xd8\x12\x17\x88\x43\xd8\x15\x19\x88\x46\xd8\x15\x19\x88\x46\xd8\x15\x1a\x89\x46\xe0\x12\x16\x88\x43\xd8\x15\x18\x88\x46\xd8\x15\x18\x88\x46\xd8\x15\x19\x88\x46\xd8\x0f\x13\x8f\x7c\x89\x7c\x98\x46\xa0\x43\xd3\x0f\x28\x88\x04\xdc\x1c\x25\xa0\x64\x9b\x4f\xd1\x08\x19\x88\x05\x88\x74\x90\x54\xd8\x11\x16\x98\x14\x91\x1c\x88\x06\xd8\x10\x14\x97\x0a\x91\x0a\x98\x33\x93\x0f\x88\x05\xd8\x0c\x0d\x88\x01\xd8\x0e\x0f\x94\x23\x90\x65\x93\x2a\x8a\x6e\xd8\x13\x18\x98\x11\x92\x38\x98\x75\xa0\x51\x99\x78\xa8\x36\xd2\x1f\x31\xd8\x14\x19\x98\x21\x91\x48\xd8\x11\x16\x90\x71\x91\x18\x98\x56\xd2\x11\x23\xd8\x13\x14\x90\x71\x92\x35\x98\x55\xa0\x31\xa0\x51\xa1\x33\x99\x5a\xa8\x36\xd2\x1d\x31\xd8\x18\x1d\x98\x61\xa0\x01\x99\x63\xa0\x21\xa0\x41\xa1\x23\x98\x67\x98\x0e\xd8\x14\x15\x98\x11\x91\x46\x91\x41\xd8\x15\x16\x98\x21\x92\x56\xa1\x04\xd8\x18\x1d\x98\x61\x99\x08\xe0\x14\x15\x98\x11\x91\x46\x91\x41\xe0\x10\x11\x90\x51\x91\x06\x90\x01\xf0\x19\x00\x0f\x10\x94\x23\x90\x65\x93\x2a\x8b\x6e\xf1\x1c\x00\x10\x16\x99\x65\xd8\x0c\x11\x8f\x4c\x89\x4c\x98\x16\xd4\x0c\x20\xd8\x0f\x15\x98\x03\x9f\x08\x99\x08\xa0\x15\x9b\x0f\xd1\x0f\x27\xd0\x08\x27",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[6];
+ }
+const_str_comps = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 5,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "comps",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[10];
+ }_object;
+ }
+ntpath_toplevel_consts_34_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 10,
+ },
+ .ob_item = {
+ &_Py_ID(path),
+ &_Py_ID(sep),
+ & const_str_altsep._ascii.ob_base,
+ & const_str_curdir._ascii.ob_base,
+ & const_str_pardir._ascii.ob_base,
+ & const_str_drive._ascii.ob_base,
+ & const_str_root._ascii.ob_base,
+ & const_str_prefix._ascii.ob_base,
+ & const_str_comps._ascii.ob_base,
+ (PyObject *)&_Py_SINGLETON(strings).ascii[105],
+ },
+ },
+};
+static
+ struct _PyCode_DEF(524)
+ntpath_toplevel_consts_34 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 262,
+ },
+ .co_consts = & ntpath_toplevel_consts_34_consts._object.ob_base.ob_base,
+ .co_names = & ntpath_toplevel_consts_34_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 14 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 527,
+ .co_nlocalsplus = 10,
+ .co_nlocals = 10,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 566,
+ .co_localsplusnames = & ntpath_toplevel_consts_34_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_46_consts_3_localspluskinds.ob_base.ob_base,
+ .co_filename = & ntpath_toplevel_consts_12_filename._ascii.ob_base,
+ .co_name = & const_str_normpath._ascii.ob_base,
+ .co_qualname = & const_str_normpath._ascii.ob_base,
+ .co_linetable = & ntpath_toplevel_consts_34_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x00\x74\x05\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x74\x06\x00\x00\x00\x00\x00\x00\x00\x00\xab\x02\x00\x00\x00\x00\x00\x00\x72\x09\x64\x01\x7d\x01\x64\x02\x7d\x02\x64\x03\x7d\x03\x64\x04\x7d\x04\x6e\x08\x64\x05\x7d\x01\x64\x06\x7d\x02\x64\x07\x7d\x03\x64\x08\x7d\x04\x7c\x00\x6a\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x02\x7c\x01\xab\x02\x00\x00\x00\x00\x00\x00\x7d\x00\x74\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x5c\x03\x00\x00\x7d\x05\x7d\x06\x7d\x00\x7c\x05\x7c\x06\x7a\x00\x00\x00\x7d\x07\x7c\x00\x6a\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x08\x64\x09\x7d\x09\x7c\x09\x74\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x08\xab\x01\x00\x00\x00\x00\x00\x00\x6b\x02\x00\x00\x72\x5f\x7c\x08\x7c\x09\x19\x00\x00\x00\x72\x08\x7c\x08\x7c\x09\x19\x00\x00\x00\x7c\x03\x6b\x28\x00\x00\x72\x04\x7c\x08\x7c\x09\x3d\x00\x6e\x3f\x7c\x08\x7c\x09\x19\x00\x00\x00\x7c\x04\x6b\x28\x00\x00\x72\x32\x7c\x09\x64\x09\x6b\x44\x00\x00\x72\x1c\x7c\x08\x7c\x09\x64\x0a\x7a\x0a\x00\x00\x19\x00\x00\x00\x7c\x04\x6b\x37\x00\x00\x72\x11\x7c\x08\x7c\x09\x64\x0a\x7a\x0a\x00\x00\x7c\x09\x64\x0a\x7a\x00\x00\x00\x85\x02\x3d\x00\x7c\x09\x64\x0a\x7a\x17\x00\x00\x7d\x09\x6e\x16\x7c\x09\x64\x09\x6b\x28\x00\x00\x72\x06\x7c\x06\x72\x04\x7c\x08\x7c\x09\x3d\x00\x6e\x0b\x7c\x09\x64\x0a\x7a\x0d\x00\x00\x7d\x09\x6e\x05\x7c\x09\x64\x0a\x7a\x0d\x00\x00\x7d\x09\x7c\x09\x74\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x08\xab\x01\x00\x00\x00\x00\x00\x00\x6b\x02\x00\x00\x72\x01\x8c\x5f\x7c\x07\x73\x13\x7c\x08\x73\x11\x7c\x08\x6a\x11\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x03\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x7c\x07\x7c\x01\x6a\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x08\xab\x01\x00\x00\x00\x00\x00\x00\x7a\x00\x00\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[165];
+ }
+ntpath_toplevel_consts_35_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 164,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x52\x65\x74\x75\x72\x6e\x20\x74\x68\x65\x20\x61\x62\x73\x6f\x6c\x75\x74\x65\x20\x76\x65\x72\x73\x69\x6f\x6e\x20\x6f\x66\x20\x61\x20\x70\x61\x74\x68\x20\x61\x73\x20\x61\x20\x66\x61\x6c\x6c\x62\x61\x63\x6b\x20\x66\x75\x6e\x63\x74\x69\x6f\x6e\x20\x69\x6e\x20\x63\x61\x73\x65\x0a\x20\x20\x20\x20\x60\x6e\x74\x2e\x5f\x67\x65\x74\x66\x75\x6c\x6c\x70\x61\x74\x68\x6e\x61\x6d\x65\x60\x20\x69\x73\x20\x6e\x6f\x74\x20\x61\x76\x61\x69\x6c\x61\x62\x6c\x65\x20\x6f\x72\x20\x72\x61\x69\x73\x65\x73\x20\x4f\x53\x45\x72\x72\x6f\x72\x2e\x20\x53\x65\x65\x20\x62\x70\x6f\x2d\x33\x31\x30\x34\x37\x20\x66\x6f\x72\x0a\x20\x20\x20\x20\x6d\x6f\x72\x65\x2e\x0a\x0a\x20\x20\x20\x20",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+ntpath_toplevel_consts_35_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & ntpath_toplevel_consts_35_consts_0._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[8];
+ }
+const_str_getcwdb = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 7,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "getcwdb",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[9];
+ }_object;
+ }
+ntpath_toplevel_consts_35_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 9,
+ },
+ .ob_item = {
+ & const_str_os._ascii.ob_base,
+ & const_str_fspath._ascii.ob_base,
+ & const_str_isabs._ascii.ob_base,
+ &_Py_ID(isinstance),
+ &_Py_ID(bytes),
+ & const_str_getcwdb._ascii.ob_base,
+ & const_str_getcwd._ascii.ob_base,
+ &_Py_ID(join),
+ & const_str_normpath._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[18];
+ }
+const_str__abspath_fallback = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 17,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_abspath_fallback",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[78];
+ }
+ntpath_toplevel_consts_35_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 77,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf4\x0e\x00\x0c\x0e\x8f\x39\x89\x39\x90\x54\x8b\x3f\x80\x44\xdc\x0b\x10\x90\x14\x8c\x3b\xdc\x0b\x15\x90\x64\x9c\x45\xd4\x0b\x22\xdc\x12\x14\x97\x2a\x91\x2a\x93\x2c\x89\x43\xe4\x12\x14\x97\x29\x91\x29\x93\x2b\x88\x43\xdc\x0f\x13\x90\x43\x98\x14\x8b\x7f\x88\x04\xdc\x0b\x13\x90\x44\x8b\x3e\xd0\x04\x19",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+ntpath_toplevel_consts_35_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ &_Py_ID(path),
+ &_Py_ID(cwd),
+ },
+ },
+};
+static
+ struct _PyCode_DEF(226)
+ntpath_toplevel_consts_35 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 113,
+ },
+ .co_consts = & ntpath_toplevel_consts_35_consts._object.ob_base.ob_base,
+ .co_names = & ntpath_toplevel_consts_35_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 6 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 572,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 2,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 567,
+ .co_localsplusnames = & ntpath_toplevel_consts_35_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_14_consts_2_localspluskinds.ob_base.ob_base,
+ .co_filename = & ntpath_toplevel_consts_12_filename._ascii.ob_base,
+ .co_name = & const_str__abspath_fallback._ascii.ob_base,
+ .co_qualname = & const_str__abspath_fallback._ascii.ob_base,
+ .co_linetable = & ntpath_toplevel_consts_35_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x00\x74\x05\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x73\x45\x74\x07\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x74\x08\x00\x00\x00\x00\x00\x00\x00\x00\xab\x02\x00\x00\x00\x00\x00\x00\x72\x15\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x7d\x01\x6e\x14\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x7d\x01\x74\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x7c\x00\xab\x02\x00\x00\x00\x00\x00\x00\x7d\x00\x74\x11\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[17];
+ }
+const_str__getfullpathname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 16,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_getfullpathname",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+ntpath_toplevel_consts_36 = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & const_str__getfullpathname._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[39];
+ }
+ntpath_toplevel_consts_37_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 38,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Return the absolute version of a path.",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+ntpath_toplevel_consts_37_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & ntpath_toplevel_consts_37_consts_0._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[5];
+ }_object;
+ }
+ntpath_toplevel_consts_37_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 5,
+ },
+ .ob_item = {
+ & const_str__getfullpathname._ascii.ob_base,
+ & const_str_normpath._ascii.ob_base,
+ & const_str_OSError._ascii.ob_base,
+ & const_str_ValueError._ascii.ob_base,
+ & const_str__abspath_fallback._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[54];
+ }
+ntpath_toplevel_consts_37_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 53,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf0\x04\x03\x09\x2b\xdc\x13\x23\xa4\x48\xa8\x54\xa3\x4e\xd3\x13\x33\xd0\x0c\x33\xf8\xdc\x10\x17\x9c\x1a\xd0\x0f\x24\xf2\x00\x01\x09\x2b\xdc\x13\x24\xa0\x54\xd3\x13\x2a\xd2\x0c\x2a\xf0\x03\x01\x09\x2b\xfa",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[13];
+ }
+ntpath_toplevel_consts_37_exceptiontable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 12,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x82\x13\x16\x00\x96\x1a\x33\x03\xb2\x01\x33\x03",
+};
+static
+ struct _PyCode_DEF(108)
+ntpath_toplevel_consts_37 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 54,
+ },
+ .co_consts = & ntpath_toplevel_consts_37_consts._object.ob_base.ob_base,
+ .co_names = & ntpath_toplevel_consts_37_names._object.ob_base.ob_base,
+ .co_exceptiontable = & ntpath_toplevel_consts_37_exceptiontable.ob_base.ob_base,
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 6 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 5,
+ .co_firstlineno = 596,
+ .co_nlocalsplus = 1,
+ .co_nlocals = 1,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 568,
+ .co_localsplusnames = & importlib__bootstrap_external_toplevel_consts_18_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_characters[32]),
+ .co_filename = & ntpath_toplevel_consts_12_filename._ascii.ob_base,
+ .co_name = & const_str_abspath._ascii.ob_base,
+ .co_qualname = & const_str_abspath._ascii.ob_base,
+ .co_linetable = & ntpath_toplevel_consts_37_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x09\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x74\x03\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x53\x00\x23\x00\x74\x04\x00\x00\x00\x00\x00\x00\x00\x00\x74\x06\x00\x00\x00\x00\x00\x00\x00\x00\x66\x02\x24\x00\x72\x0e\x01\x00\x74\x09\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x63\x02\x59\x00\x53\x00\x77\x00\x78\x03\x59\x00\x77\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[18];
+ }
+const_str__getfinalpathname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 17,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_getfinalpathname",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[9];
+ }
+const_str_readlink = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 8,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "readlink",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+ntpath_toplevel_consts_38 = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & const_str__getfinalpathname._ascii.ob_base,
+ & const_str_readlink._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyObject ob_base;
+ uintptr_t lv_tag;
+ digit ob_digit[1];
+ }
+const_int_4390 = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyLong_Type,
+ },
+ .lv_tag = TAG_FROM_SIGN_AND_SIZE(1, 1),
+ .ob_digit = { 4390 },
+};
+static
+ struct {
+ PyObject ob_base;
+ uintptr_t lv_tag;
+ digit ob_digit[1];
+ }
+const_int_4392 = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyLong_Type,
+ },
+ .lv_tag = TAG_FROM_SIGN_AND_SIZE(1, 1),
+ .ob_digit = { 4392 },
+};
+static
+ struct {
+ PyObject ob_base;
+ uintptr_t lv_tag;
+ digit ob_digit[1];
+ }
+const_int_4393 = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyLong_Type,
+ },
+ .lv_tag = TAG_FROM_SIGN_AND_SIZE(1, 1),
+ .ob_digit = { 4393 },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[12];
+ }_object;
+ }
+ntpath_toplevel_consts_39_consts_1 = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 12,
+ },
+ .ob_item = {
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 1],
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 2],
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 3],
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 5],
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 21],
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 32],
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 50],
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 67],
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 87],
+ & const_int_4390.ob_base,
+ & const_int_4392.ob_base,
+ & const_int_4393.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+ntpath_toplevel_consts_39_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ Py_None,
+ & ntpath_toplevel_consts_39_consts_1._object.ob_base.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[13];
+ }
+const_str__nt_readlink = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 12,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_nt_readlink",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[9];
+ }
+const_str_winerror = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 8,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "winerror",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[12];
+ }_object;
+ }
+ntpath_toplevel_consts_39_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 12,
+ },
+ .ob_item = {
+ & const_str_set._ascii.ob_base,
+ & const_str_normcase._ascii.ob_base,
+ &_Py_ID(add),
+ & const_str__nt_readlink._ascii.ob_base,
+ & const_str_isabs._ascii.ob_base,
+ & const_str_islink._ascii.ob_base,
+ & const_str_normpath._ascii.ob_base,
+ &_Py_ID(join),
+ & const_str_dirname._ascii.ob_base,
+ & const_str_OSError._ascii.ob_base,
+ & const_str_winerror._ascii.ob_base,
+ & const_str_ValueError._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[15];
+ }
+const_str__readlink_deep = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 14,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_readlink_deep",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[208];
+ }
+ntpath_toplevel_consts_39_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 207,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf0\x1e\x00\x1c\x4c\x01\xd0\x08\x18\xe4\x0f\x12\x8b\x75\x88\x04\xdc\x0e\x16\x90\x74\x8b\x6e\xa0\x44\xd1\x0e\x28\xd8\x0c\x10\x8f\x48\x89\x48\x94\x58\x98\x64\x93\x5e\xd4\x0c\x24\xf0\x02\x13\x0d\x16\xd8\x1b\x1f\x90\x08\xdc\x17\x23\xa0\x44\xd3\x17\x29\x90\x04\xf4\x06\x00\x18\x1d\x98\x54\x94\x7b\xf4\x08\x00\x1c\x22\xa0\x28\xd4\x1b\x2b\xd8\x1f\x27\x98\x04\xd8\x18\x1d\xf0\x12\x00\x10\x14\x88\x0b\xf4\x11\x00\x1c\x24\xa4\x44\xac\x17\xb0\x18\xd3\x29\x3a\xb8\x44\xd3\x24\x41\xd3\x1b\x42\x90\x44\xf4\x1d\x00\x0f\x17\x90\x74\x8b\x6e\xa0\x44\xd2\x0e\x28\xf0\x2c\x00\x10\x14\x88\x0b\xf8\xf4\x0f\x00\x14\x1b\xf2\x00\x03\x0d\x16\xd8\x13\x15\x97\x3b\x91\x3b\xd0\x22\x32\xd1\x13\x32\xdb\x14\x19\xf0\x0a\x00\x10\x14\x88\x0b\xf0\x09\x00\x11\x16\xfb\xdc\x13\x1d\xf2\x00\x02\x0d\x16\xe0\x10\x15\xd8\x0f\x13\x88\x0b\xf0\x07\x02\x0d\x16\xfa",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[42];
+ }
+ntpath_toplevel_consts_39_exceptiontable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 41,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\xb5\x25\x42\x0b\x00\xc1\x1d\x1e\x42\x0b\x00\xc2\x0b\x09\x42\x39\x03\xc2\x14\x0e\x42\x29\x03\xc2\x28\x01\x42\x29\x03\xc2\x29\x0c\x42\x39\x03\xc2\x38\x01\x42\x39\x03",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[17];
+ }
+const_str_allowed_winerror = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 16,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "allowed_winerror",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[5];
+ }
+const_str_seen = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 4,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "seen",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[9];
+ }
+const_str_old_path = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 8,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "old_path",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[3];
+ }
+const_str_ex = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 2,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "ex",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[5];
+ }_object;
+ }
+ntpath_toplevel_consts_39_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 5,
+ },
+ .ob_item = {
+ &_Py_ID(path),
+ & const_str_allowed_winerror._ascii.ob_base,
+ & const_str_seen._ascii.ob_base,
+ & const_str_old_path._ascii.ob_base,
+ & const_str_ex._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(376)
+ntpath_toplevel_consts_39 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 188,
+ },
+ .co_consts = & ntpath_toplevel_consts_39_consts._object.ob_base.ob_base,
+ .co_names = & ntpath_toplevel_consts_39_names._object.ob_base.ob_base,
+ .co_exceptiontable = & ntpath_toplevel_consts_39_exceptiontable.ob_base.ob_base,
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 12 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 7,
+ .co_firstlineno = 609,
+ .co_nlocalsplus = 5,
+ .co_nlocals = 5,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 569,
+ .co_localsplusnames = & ntpath_toplevel_consts_39_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_7_consts_5_localspluskinds.ob_base.ob_base,
+ .co_filename = & ntpath_toplevel_consts_12_filename._ascii.ob_base,
+ .co_name = & const_str__readlink_deep._ascii.ob_base,
+ .co_qualname = & const_str__readlink_deep._ascii.ob_base,
+ .co_linetable = & ntpath_toplevel_consts_39_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x64\x01\x7d\x01\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x7d\x02\x74\x03\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7c\x02\x76\x01\x72\x6f\x7c\x02\x6a\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x74\x03\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x09\x00\x7c\x00\x7d\x03\x74\x07\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x00\x74\x09\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x73\x2e\x74\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x03\xab\x01\x00\x00\x00\x00\x00\x00\x73\x05\x7c\x03\x7d\x00\x09\x00\x7c\x00\x53\x00\x74\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x74\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x74\x11\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x03\xab\x01\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x02\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x00\x74\x03\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7c\x02\x76\x01\x72\x01\x8c\x6f\x7c\x00\x53\x00\x23\x00\x74\x12\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x72\x1a\x7d\x04\x7c\x04\x6a\x14\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x76\x00\x72\x06\x59\x00\x64\x00\x7d\x04\x7e\x04\x7c\x00\x53\x00\x82\x00\x64\x00\x7d\x04\x7e\x04\x77\x01\x74\x16\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x72\x04\x01\x00\x59\x00\x7c\x00\x53\x00\x77\x00\x78\x03\x59\x00\x77\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyObject ob_base;
+ uintptr_t lv_tag;
+ digit ob_digit[1];
+ }
+const_int_1920 = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyLong_Type,
+ },
+ .lv_tag = TAG_FROM_SIGN_AND_SIZE(1, 1),
+ .ob_digit = { 1920 },
+};
+static
+ struct {
+ PyObject ob_base;
+ uintptr_t lv_tag;
+ digit ob_digit[1];
+ }
+const_int_1921 = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyLong_Type,
+ },
+ .lv_tag = TAG_FROM_SIGN_AND_SIZE(1, 1),
+ .ob_digit = { 1921 },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[15];
+ }_object;
+ }
+ntpath_toplevel_consts_40_consts_1 = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 15,
+ },
+ .ob_item = {
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 1],
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 2],
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 3],
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 5],
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 21],
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 32],
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 50],
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 53],
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 65],
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 67],
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 87],
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 123],
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 161],
+ & const_int_1920.ob_base,
+ & const_int_1921.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+ntpath_toplevel_consts_40_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ Py_None,
+ & ntpath_toplevel_consts_40_consts_1._object.ob_base.ob_base,
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 0],
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[6];
+ }_object;
+ }
+ntpath_toplevel_consts_40_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 6,
+ },
+ .ob_item = {
+ & const_str__getfinalpathname._ascii.ob_base,
+ &_Py_ID(join),
+ & const_str_OSError._ascii.ob_base,
+ & const_str_winerror._ascii.ob_base,
+ & const_str__readlink_deep._ascii.ob_base,
+ & const_str_split._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[28];
+ }
+const_str__getfinalpathname_nonstrict = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 27,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_getfinalpathname_nonstrict",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[223];
+ }
+ntpath_toplevel_consts_40_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 222,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf0\x24\x00\x1c\x58\x01\xd0\x08\x18\xf0\x08\x00\x10\x14\x90\x42\x90\x51\x88\x78\x88\x04\xd9\x0e\x12\xf0\x02\x16\x0d\x3a\xdc\x17\x28\xa8\x14\xd3\x17\x2e\x90\x04\xd9\x2b\x2f\x94\x74\x98\x44\xa0\x24\xd3\x17\x27\xd0\x10\x39\xb0\x54\xd0\x10\x39\xf0\x2a\x00\x10\x14\x88\x0b\xf8\xf4\x29\x00\x14\x1b\xf2\x00\x13\x0d\x3a\xd8\x13\x15\x97\x3b\x91\x3b\xd0\x26\x36\xd1\x13\x36\xd8\x14\x19\xf0\x02\x09\x11\x19\xf4\x08\x00\x20\x2e\xa8\x64\xd3\x1f\x33\x90\x48\xd8\x17\x1f\xa0\x34\xd2\x17\x27\xd9\x37\x3b\x9c\x74\xa0\x48\xa8\x64\xd4\x1f\x33\xc0\x18\xd5\x18\x49\xf0\x03\x00\x18\x28\xf8\xe4\x17\x1e\xf2\x00\x02\x11\x19\xe1\x14\x18\xf0\x05\x02\x11\x19\xfa\xf4\x06\x00\x1e\x23\xa0\x34\x9b\x5b\x91\x0a\x90\x04\x90\x64\xf1\x08\x00\x14\x18\xa1\x04\xd8\x1b\x1f\xa0\x24\x99\x3b\xd5\x14\x26\xd9\x2b\x2f\x94\x74\x98\x44\xa0\x24\xd4\x17\x27\xb0\x54\x95\x04\xfb\xf0\x27\x13\x0d\x3a\xfa\xf2\x09\x00\x0f\x13\xf8",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[79];
+ }
+ntpath_toplevel_consts_40_exceptiontable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 78,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x8b\x18\x28\x00\xa4\x01\x28\x00\xa8\x09\x42\x2c\x03\xb1\x0f\x42\x27\x03\xc1\x01\x1f\x41\x27\x02\xc1\x20\x01\x42\x2c\x03\xc1\x26\x01\x42\x27\x03\xc1\x27\x09\x41\x33\x05\xc1\x30\x02\x42\x27\x03\xc1\x32\x01\x41\x33\x05\xc1\x33\x19\x42\x27\x03\xc2\x0c\x01\x42\x2c\x03\xc2\x12\x10\x42\x27\x03\xc2\x27\x05\x42\x2c\x03",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[9];
+ }
+const_str_new_path = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 8,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "new_path",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[6];
+ }_object;
+ }
+ntpath_toplevel_consts_40_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 6,
+ },
+ .ob_item = {
+ &_Py_ID(path),
+ & const_str_allowed_winerror._ascii.ob_base,
+ & const_str_tail._ascii.ob_base,
+ & const_str_ex._ascii.ob_base,
+ & const_str_new_path._ascii.ob_base,
+ &_Py_ID(name),
+ },
+ },
+};
+static
+ struct _PyCode_DEF(358)
+ntpath_toplevel_consts_40 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 179,
+ },
+ .co_consts = & ntpath_toplevel_consts_40_consts._object.ob_base.ob_base,
+ .co_names = & ntpath_toplevel_consts_40_names._object.ob_base.ob_base,
+ .co_exceptiontable = & ntpath_toplevel_consts_40_exceptiontable.ob_base.ob_base,
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 11 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 5,
+ .co_firstlineno = 651,
+ .co_nlocalsplus = 6,
+ .co_nlocals = 6,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 570,
+ .co_localsplusnames = & ntpath_toplevel_consts_40_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_30_consts_4_localspluskinds.ob_base.ob_base,
+ .co_filename = & ntpath_toplevel_consts_12_filename._ascii.ob_base,
+ .co_name = & const_str__getfinalpathname_nonstrict._ascii.ob_base,
+ .co_qualname = & const_str__getfinalpathname_nonstrict._ascii.ob_base,
+ .co_linetable = & ntpath_toplevel_consts_40_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x64\x01\x7d\x01\x7c\x00\x64\x00\x64\x02\x1a\x00\x7d\x02\x7c\x00\x72\x1c\x09\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x00\x7c\x02\x72\x0c\x74\x03\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x7c\x02\xab\x02\x00\x00\x00\x00\x00\x00\x53\x00\x7c\x00\x53\x00\x7c\x02\x53\x00\x23\x00\x74\x04\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x72\x7b\x7d\x03\x7c\x03\x6a\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x76\x01\x72\x01\x82\x00\x09\x00\x74\x09\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x04\x7c\x04\x7c\x00\x6b\x37\x00\x00\x72\x15\x7c\x02\x72\x0c\x74\x03\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x04\x7c\x02\xab\x02\x00\x00\x00\x00\x00\x00\x6e\x01\x7c\x04\x63\x02\x59\x00\x64\x00\x7d\x03\x7e\x03\x53\x00\x6e\x0f\x23\x00\x74\x04\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x72\x03\x01\x00\x59\x00\x6e\x04\x77\x00\x78\x03\x59\x00\x77\x01\x74\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x5c\x02\x00\x00\x7d\x00\x7d\x05\x7c\x00\x72\x0c\x7c\x05\x73\x0a\x7c\x00\x7c\x02\x7a\x00\x00\x00\x63\x02\x59\x00\x64\x00\x7d\x03\x7e\x03\x53\x00\x7c\x02\x72\x0c\x74\x03\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x05\x7c\x02\xab\x02\x00\x00\x00\x00\x00\x00\x6e\x01\x7c\x05\x7d\x02\x59\x00\x64\x00\x7d\x03\x7e\x03\x6e\x08\x64\x00\x7d\x03\x7e\x03\x77\x01\x77\x00\x78\x03\x59\x00\x77\x01\x7c\x00\x72\x01\x8c\xa8\x8c\x8d",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[5];
+ }
+ntpath_toplevel_consts_43_consts_1 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\\\\?\\",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[3];
+ }
+ntpath_toplevel_consts_43_consts_3 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\\\\",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[8];
+ }
+ntpath_toplevel_consts_43_consts_4 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 7,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\\\\.\\NUL",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[5];
+ }
+ntpath_toplevel_consts_43_consts_5 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 4,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\\\\?\\",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[8];
+ }
+ntpath_toplevel_consts_43_consts_8 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 7,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\\\\.\\NUL",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[10];
+ }_object;
+ }
+ntpath_toplevel_consts_43_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 10,
+ },
+ .ob_item = {
+ Py_None,
+ & ntpath_toplevel_consts_43_consts_1.ob_base.ob_base,
+ & ntpath_toplevel_consts_19_consts_4.ob_base.ob_base,
+ & ntpath_toplevel_consts_43_consts_3.ob_base.ob_base,
+ & ntpath_toplevel_consts_43_consts_4.ob_base.ob_base,
+ & ntpath_toplevel_consts_43_consts_5._ascii.ob_base,
+ & ntpath_toplevel_consts_19_consts_9._ascii.ob_base,
+ & importlib__bootstrap_external_toplevel_consts_22_consts_6._ascii.ob_base,
+ & ntpath_toplevel_consts_43_consts_8._ascii.ob_base,
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 0],
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[19];
+ }_object;
+ }
+ntpath_toplevel_consts_43_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 19,
+ },
+ .ob_item = {
+ & const_str_normpath._ascii.ob_base,
+ &_Py_ID(isinstance),
+ &_Py_ID(bytes),
+ & const_str_os._ascii.ob_base,
+ & const_str_getcwdb._ascii.ob_base,
+ & const_str_normcase._ascii.ob_base,
+ & const_str_fsencode._ascii.ob_base,
+ & const_str_devnull._ascii.ob_base,
+ & const_str_getcwd._ascii.ob_base,
+ & const_str_startswith._ascii.ob_base,
+ & const_str_isabs._ascii.ob_base,
+ &_Py_ID(join),
+ & const_str__getfinalpathname._ascii.ob_base,
+ & const_str_ValueError._ascii.ob_base,
+ & const_str_OSError._ascii.ob_base,
+ & const_str_str._ascii.ob_base,
+ & const_str_winerror._ascii.ob_base,
+ & const_str__getfinalpathname_nonstrict._ascii.ob_base,
+ &_Py_ID(len),
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[431];
+ }
+ntpath_toplevel_consts_43_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 430,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xdc\x0f\x17\x98\x04\x8b\x7e\x88\x04\xdc\x0b\x15\x90\x64\x9c\x45\xd4\x0b\x22\xd8\x15\x1f\x88\x46\xd8\x19\x28\x88\x4a\xd8\x1d\x24\x88\x4e\xdc\x12\x14\x97\x2a\x91\x2a\x93\x2c\x88\x43\xe4\x0f\x17\x98\x04\x8b\x7e\xa4\x18\xac\x22\xaf\x2b\xa9\x2b\xb4\x67\xd3\x2a\x3e\xd3\x21\x3f\xd2\x0f\x3f\xd8\x17\x24\xe0\x15\x1e\x88\x46\xd8\x19\x27\x88\x4a\xd8\x1d\x23\x88\x4e\xdc\x12\x14\x97\x29\x91\x29\x93\x2b\x88\x43\xe4\x0f\x17\x98\x04\x8b\x7e\xa4\x18\xac\x27\xd3\x21\x32\xd2\x0f\x32\xd8\x17\x23\xd8\x15\x19\x97\x5f\x91\x5f\xa0\x56\xd3\x15\x2c\x88\x0a\xd9\x0f\x19\xa4\x25\xa8\x04\xa4\x2b\xdc\x13\x17\x98\x03\x98\x54\x93\x3f\x88\x44\xf0\x02\x0f\x09\x35\xdc\x13\x24\xa0\x54\xd3\x13\x2a\x88\x44\xd8\x1f\x20\xd0\x0c\x1c\xf1\x22\x00\x10\x1a\x98\x64\x9f\x6f\x99\x6f\xa8\x66\xd4\x1e\x35\xf0\x06\x00\x10\x14\x8f\x7f\x89\x7f\x98\x7a\xd4\x0f\x2a\xd8\x18\x26\xa8\x14\xac\x63\xb0\x2a\xab\x6f\xd0\x2e\x3e\xd0\x29\x3f\xd1\x18\x3f\x91\x05\xe0\x18\x1c\x9c\x53\xa0\x16\x9b\x5b\x98\x5c\xd0\x18\x2a\x90\x05\xf0\x04\x0b\x0d\x21\xdc\x13\x24\xa0\x55\xd3\x13\x2b\xa8\x74\xd2\x13\x33\xd8\x1b\x20\x90\x44\xf0\x14\x00\x10\x14\x88\x0b\x88\x74\x88\x0b\xf8\xf4\x49\x01\x00\x10\x1a\xf2\x00\x07\x09\x22\xf1\x0a\x00\x10\x16\xdc\x16\x1d\x9c\x63\xa0\x22\x9b\x67\xd3\x16\x26\xa8\x44\xd0\x10\x30\xdc\x13\x1b\x98\x44\x93\x3e\x8d\x44\xfb\xdc\x0f\x16\xf2\x00\x04\x09\x35\xd9\x0f\x15\xd8\x10\x15\xd8\x1f\x21\x9f\x7b\x99\x7b\xd0\x0c\x1c\xdc\x13\x2e\xa8\x74\xd3\x13\x34\x8d\x44\xfb\xf0\x09\x04\x09\x35\xfb\xf4\x26\x00\x14\x1e\xf2\x00\x03\x0d\x15\xf3\x06\x00\x11\x15\xf0\x0c\x00\x10\x14\x88\x0b\xfb\xf4\x0b\x00\x14\x1b\xf2\x00\x04\x0d\x21\xf0\x06\x00\x14\x16\x97\x3b\x91\x3b\xd0\x22\x32\xd2\x13\x32\xd8\x1b\x20\x90\x44\xfb\xd8\x0f\x13\x88\x0b\xfb\xf0\x0b\x04\x0d\x21\xfa",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[67];
+ }
+ntpath_toplevel_consts_43_exceptiontable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 66,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\xc3\x06\x0d\x44\x2c\x00\xc4\x18\x10\x46\x0f\x00\xc4\x2c\x09\x46\x0c\x03\xc4\x35\x22\x45\x1c\x03\xc5\x1c\x0c\x46\x0c\x03\xc5\x28\x1a\x46\x07\x03\xc6\x07\x05\x46\x0c\x03\xc6\x0f\x09\x47\x06\x03\xc6\x1e\x0c\x47\x06\x03\xc6\x2a\x11\x47\x01\x03\xc7\x01\x05\x47\x06\x03",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[15];
+ }
+const_str_new_unc_prefix = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 14,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "new_unc_prefix",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[11];
+ }
+const_str_had_prefix = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 10,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "had_prefix",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[17];
+ }
+const_str_initial_winerror = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 16,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "initial_winerror",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[6];
+ }
+const_str_spath = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 5,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "spath",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[10];
+ }_object;
+ }
+ntpath_toplevel_consts_43_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 10,
+ },
+ .ob_item = {
+ &_Py_ID(path),
+ &_Py_ID(strict),
+ & const_str_prefix._ascii.ob_base,
+ & const_str_unc_prefix._ascii.ob_base,
+ & const_str_new_unc_prefix._ascii.ob_base,
+ &_Py_ID(cwd),
+ & const_str_had_prefix._ascii.ob_base,
+ & const_str_initial_winerror._ascii.ob_base,
+ & const_str_ex._ascii.ob_base,
+ & const_str_spath._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(914)
+ntpath_toplevel_consts_43 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 457,
+ },
+ .co_consts = & ntpath_toplevel_consts_43_consts._object.ob_base.ob_base,
+ .co_names = & ntpath_toplevel_consts_43_names._object.ob_base.ob_base,
+ .co_exceptiontable = & ntpath_toplevel_consts_43_exceptiontable.ob_base.ob_base,
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 1,
+ .co_framesize = 16 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 6,
+ .co_firstlineno = 700,
+ .co_nlocalsplus = 10,
+ .co_nlocals = 10,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 571,
+ .co_localsplusnames = & ntpath_toplevel_consts_43_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_46_consts_3_localspluskinds.ob_base.ob_base,
+ .co_filename = & ntpath_toplevel_consts_12_filename._ascii.ob_base,
+ .co_name = & const_str_realpath._ascii.ob_base,
+ .co_qualname = & const_str_realpath._ascii.ob_base,
+ .co_linetable = & ntpath_toplevel_consts_43_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x00\x74\x03\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x74\x04\x00\x00\x00\x00\x00\x00\x00\x00\xab\x02\x00\x00\x00\x00\x00\x00\x72\x49\x64\x01\x7d\x02\x64\x02\x7d\x03\x64\x03\x7d\x04\x74\x07\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x7d\x05\x74\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x74\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x74\x07\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x74\x0e\x00\x00\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x6b\x28\x00\x00\x72\x37\x79\x04\x64\x05\x7d\x02\x64\x06\x7d\x03\x64\x07\x7d\x04\x74\x07\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x7d\x05\x74\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x74\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x74\x0e\x00\x00\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x6b\x28\x00\x00\x72\x01\x79\x08\x7c\x00\x6a\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x02\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x06\x7c\x06\x73\x17\x74\x15\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x73\x0c\x74\x17\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x05\x7c\x00\xab\x02\x00\x00\x00\x00\x00\x00\x7d\x00\x09\x00\x74\x19\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x00\x64\x09\x7d\x07\x7c\x06\x73\x55\x7c\x00\x6a\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x02\xab\x01\x00\x00\x00\x00\x00\x00\x72\x44\x7c\x00\x6a\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x03\xab\x01\x00\x00\x00\x00\x00\x00\x72\x12\x7c\x04\x7c\x00\x74\x25\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x03\xab\x01\x00\x00\x00\x00\x00\x00\x64\x00\x1a\x00\x7a\x00\x00\x00\x7d\x09\x6e\x0e\x7c\x00\x74\x25\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x02\xab\x01\x00\x00\x00\x00\x00\x00\x64\x00\x1a\x00\x7d\x09\x09\x00\x74\x19\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x09\xab\x01\x00\x00\x00\x00\x00\x00\x7c\x00\x6b\x28\x00\x00\x72\x02\x7c\x09\x7d\x00\x7c\x00\x53\x00\x7c\x00\x53\x00\x23\x00\x74\x1a\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x72\x2c\x7d\x08\x7c\x01\x72\x15\x74\x1d\x00\x00\x00\x00\x00\x00\x00\x00\x74\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x08\xab\x01\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x64\x00\x82\x02\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x00\x59\x00\x64\x00\x7d\x08\x7e\x08\x8c\x89\x64\x00\x7d\x08\x7e\x08\x77\x01\x74\x1c\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x72\x24\x7d\x08\x7c\x01\x72\x01\x82\x00\x7c\x08\x6a\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7d\x07\x74\x23\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x00\x59\x00\x64\x00\x7d\x08\x7e\x08\x8c\xb4\x64\x00\x7d\x08\x7e\x08\x77\x01\x77\x00\x78\x03\x59\x00\x77\x01\x23\x00\x74\x1a\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x72\x0b\x7d\x08\x59\x00\x64\x00\x7d\x08\x7e\x08\x7c\x00\x53\x00\x64\x00\x7d\x08\x7e\x08\x77\x01\x74\x1c\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x72\x1c\x7d\x08\x7c\x08\x6a\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7f\x07\x6b\x28\x00\x00\x72\x02\x7c\x09\x7d\x00\x59\x00\x64\x00\x7d\x08\x7e\x08\x7c\x00\x53\x00\x64\x00\x7d\x08\x7e\x08\x77\x01\x77\x00\x78\x03\x59\x00\x77\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[36];
+ }
+ntpath_toplevel_consts_45_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 35,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Return a relative version of a path",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[18];
+ }
+ntpath_toplevel_consts_45_consts_8 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 17,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "no path specified",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[18];
+ }
+ntpath_toplevel_consts_45_consts_9 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 17,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "path is on mount ",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[18];
+ }
+ntpath_toplevel_consts_45_consts_10 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 17,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = ", start on mount ",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[14];
+ }_object;
+ }
+ntpath_toplevel_consts_45_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 14,
+ },
+ .ob_item = {
+ & ntpath_toplevel_consts_45_consts_0._ascii.ob_base,
+ (PyObject *)&_Py_SINGLETON(bytes_characters[92]),
+ (PyObject *)&_Py_SINGLETON(bytes_characters[46]),
+ & ntpath_toplevel_consts_34_consts_4.ob_base.ob_base,
+ (PyObject *)&_Py_SINGLETON(strings).ascii[92],
+ &_Py_STR(dot),
+ & ntpath_toplevel_consts_2._ascii.ob_base,
+ Py_None,
+ & ntpath_toplevel_consts_45_consts_8._ascii.ob_base,
+ & ntpath_toplevel_consts_45_consts_9._ascii.ob_base,
+ & ntpath_toplevel_consts_45_consts_10._ascii.ob_base,
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 0],
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 1],
+ & const_str_relpath._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[19];
+ }_object;
+ }
+ntpath_toplevel_consts_45_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 19,
+ },
+ .ob_item = {
+ & const_str_os._ascii.ob_base,
+ & const_str_fspath._ascii.ob_base,
+ &_Py_ID(isinstance),
+ &_Py_ID(bytes),
+ & const_str_ValueError._ascii.ob_base,
+ & const_str_abspath._ascii.ob_base,
+ & const_str_normpath._ascii.ob_base,
+ & const_str_splitroot._ascii.ob_base,
+ & const_str_normcase._ascii.ob_base,
+ & const_str_split._ascii.ob_base,
+ & const_str_zip._ascii.ob_base,
+ &_Py_ID(len),
+ &_Py_ID(join),
+ & const_str_TypeError._ascii.ob_base,
+ & const_str_AttributeError._ascii.ob_base,
+ & const_str_BytesWarning._ascii.ob_base,
+ & const_str_DeprecationWarning._ascii.ob_base,
+ & const_str_genericpath._ascii.ob_base,
+ & const_str__check_arg_types._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[436];
+ }
+ntpath_toplevel_consts_45_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 435,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xe4\x0b\x0d\x8f\x39\x89\x39\x90\x54\x8b\x3f\x80\x44\xdc\x07\x11\x90\x24\x9c\x05\xd4\x07\x1e\xd8\x0e\x13\x88\x03\xd8\x11\x15\x88\x06\xd8\x11\x16\x89\x06\xe0\x0e\x12\x88\x03\xd8\x11\x14\x88\x06\xd8\x11\x15\x88\x06\xe0\x07\x0c\x80\x7d\xd8\x10\x16\x88\x05\xe1\x0b\x0f\xdc\x0e\x18\xd0\x19\x2c\xd3\x0e\x2d\xd0\x08\x2d\xe4\x0c\x0e\x8f\x49\x89\x49\x90\x65\xd3\x0c\x1c\x80\x45\xf0\x02\x18\x05\x0e\xdc\x14\x1b\x9c\x48\xa0\x55\x9b\x4f\xd3\x14\x2c\x88\x09\xdc\x13\x1a\x9c\x38\xa0\x44\x9b\x3e\xd3\x13\x2a\x88\x08\xdc\x25\x2e\xa8\x79\xd3\x25\x39\xd1\x08\x22\x88\x0b\x90\x51\x98\x0a\xdc\x23\x2c\xa8\x58\xd3\x23\x36\xd1\x08\x20\x88\x0a\x90\x41\x90\x79\xdc\x0b\x13\x90\x4b\xd3\x0b\x20\xa4\x48\xa8\x5a\xd3\x24\x38\xd2\x0b\x38\xdd\x12\x1c\xda\x10\x1a\x99\x4b\xf0\x03\x01\x1e\x29\xf3\x00\x01\x13\x2a\xf0\x00\x01\x0d\x2a\xf0\x06\x00\x22\x2c\xd7\x21\x31\xd1\x21\x31\xb0\x23\xd3\x21\x36\xd6\x15\x3c\x98\x41\xba\x21\x92\x61\xd0\x15\x3c\x88\x0a\xd0\x15\x3c\xd8\x20\x29\xa7\x0f\xa1\x0f\xb0\x03\xd3\x20\x34\xd6\x14\x3a\x98\x31\xba\x01\x92\x51\xd0\x14\x3a\x88\x09\xd0\x14\x3a\xe0\x0c\x0d\x88\x01\xdc\x16\x19\x98\x2a\xa0\x69\xd3\x16\x30\xf2\x00\x03\x09\x13\x89\x46\x88\x42\x90\x02\xdc\x0f\x17\x98\x02\x8b\x7c\x9c\x78\xa8\x02\x9b\x7c\xd2\x0f\x2b\xd9\x10\x15\xd8\x0c\x0d\x90\x11\x89\x46\x89\x41\xf0\x07\x03\x09\x13\xf0\x0a\x00\x15\x1b\x90\x38\x9c\x73\xa0\x3a\x9b\x7f\xa8\x71\xd1\x1f\x30\xd1\x13\x31\xb0\x49\xb8\x61\xb8\x62\xb0\x4d\xd1\x13\x41\x88\x08\xd9\x0f\x17\xd8\x13\x19\x88\x4d\xdc\x0f\x13\x90\x58\x88\x7f\xd0\x08\x1e\xf9\xf2\x19\x00\x16\x3d\xf9\xda\x14\x3a\xf8\xf4\x18\x00\x0d\x16\x94\x7a\xa4\x3e\xb4\x3c\xd4\x41\x53\xd0\x0b\x54\xf2\x00\x02\x05\x0e\xdc\x08\x13\xd7\x08\x24\xd1\x08\x24\xa0\x59\xb0\x04\xb0\x65\xd4\x08\x3c\xd8\x08\x0d\xf0\x05\x02\x05\x0e\xfa",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[63];
+ }
+ntpath_toplevel_consts_45_exceptiontable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 62,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\xc1\x1a\x42\x01\x45\x2c\x00\xc3\x1b\x07\x45\x22\x04\xc3\x23\x04\x45\x22\x04\xc3\x27\x15\x45\x2c\x00\xc3\x3c\x07\x45\x27\x04\xc4\x04\x04\x45\x27\x04\xc4\x08\x41\x11\x45\x2c\x00\xc5\x1a\x07\x45\x2c\x00\xc5\x22\x0a\x45\x2c\x00\xc5\x2c\x37\x46\x23\x03",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[10];
+ }
+const_str_start_abs = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 9,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "start_abs",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[9];
+ }
+const_str_path_abs = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 8,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "path_abs",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[12];
+ }
+const_str_start_drive = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 11,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "start_drive",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[11];
+ }
+const_str_start_rest = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 10,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "start_rest",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[11];
+ }
+const_str_path_drive = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 10,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "path_drive",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[10];
+ }
+const_str_path_rest = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 9,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "path_rest",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[11];
+ }
+const_str_start_list = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 10,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "start_list",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[10];
+ }
+const_str_path_list = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 9,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "path_list",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[3];
+ }
+const_str_e1 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 2,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "e1",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[3];
+ }
+const_str_e2 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 2,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "e2",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[9];
+ }
+const_str_rel_list = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 8,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "rel_list",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[19];
+ }_object;
+ }
+ntpath_toplevel_consts_45_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 19,
+ },
+ .ob_item = {
+ &_Py_ID(path),
+ &_Py_ID(start),
+ &_Py_ID(sep),
+ & const_str_curdir._ascii.ob_base,
+ & const_str_pardir._ascii.ob_base,
+ & const_str_start_abs._ascii.ob_base,
+ & const_str_path_abs._ascii.ob_base,
+ & const_str_start_drive._ascii.ob_base,
+ &_Py_ID(_),
+ & const_str_start_rest._ascii.ob_base,
+ & const_str_path_drive._ascii.ob_base,
+ & const_str_path_rest._ascii.ob_base,
+ &_Py_ID(x),
+ & const_str_start_list._ascii.ob_base,
+ & const_str_path_list._ascii.ob_base,
+ (PyObject *)&_Py_SINGLETON(strings).ascii[105],
+ & const_str_e1._ascii.ob_base,
+ & const_str_e2._ascii.ob_base,
+ & const_str_rel_list._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[20];
+ }
+ntpath_toplevel_consts_45_localspluskinds = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 19,
+ },
+ .ob_shash = -1,
+ .ob_sval = " ",
+};
+static
+ struct _PyCode_DEF(844)
+ntpath_toplevel_consts_45 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 422,
+ },
+ .co_consts = & ntpath_toplevel_consts_45_consts._object.ob_base.ob_base,
+ .co_names = & ntpath_toplevel_consts_45_names._object.ob_base.ob_base,
+ .co_exceptiontable = & ntpath_toplevel_consts_45_exceptiontable.ob_base.ob_base,
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 26 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 7,
+ .co_firstlineno = 766,
+ .co_nlocalsplus = 19,
+ .co_nlocals = 19,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 572,
+ .co_localsplusnames = & ntpath_toplevel_consts_45_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & ntpath_toplevel_consts_45_localspluskinds.ob_base.ob_base,
+ .co_filename = & ntpath_toplevel_consts_12_filename._ascii.ob_base,
+ .co_name = & const_str_relpath._ascii.ob_base,
+ .co_qualname = & const_str_relpath._ascii.ob_base,
+ .co_linetable = & ntpath_toplevel_consts_45_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x00\x74\x05\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x74\x06\x00\x00\x00\x00\x00\x00\x00\x00\xab\x02\x00\x00\x00\x00\x00\x00\x72\x07\x64\x01\x7d\x02\x64\x02\x7d\x03\x64\x03\x7d\x04\x6e\x06\x64\x04\x7d\x02\x64\x05\x7d\x03\x64\x06\x7d\x04\x7c\x01\x80\x02\x7c\x03\x7d\x01\x7c\x00\x73\x0b\x74\x09\x00\x00\x00\x00\x00\x00\x00\x00\x64\x08\xab\x01\x00\x00\x00\x00\x00\x00\x82\x01\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x01\x09\x00\x74\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x74\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\xab\x01\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x05\x74\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x74\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x06\x74\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x05\xab\x01\x00\x00\x00\x00\x00\x00\x5c\x03\x00\x00\x7d\x07\x7d\x08\x7d\x09\x74\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x06\xab\x01\x00\x00\x00\x00\x00\x00\x5c\x03\x00\x00\x7d\x0a\x7d\x08\x7d\x0b\x74\x11\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x07\xab\x01\x00\x00\x00\x00\x00\x00\x74\x11\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x0a\xab\x01\x00\x00\x00\x00\x00\x00\x6b\x37\x00\x00\x72\x11\x74\x09\x00\x00\x00\x00\x00\x00\x00\x00\x64\x09\x7c\x0a\x9b\x02\x64\x0a\x7c\x07\x9b\x02\x9d\x04\xab\x01\x00\x00\x00\x00\x00\x00\x82\x01\x7c\x09\x6a\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x02\xab\x01\x00\x00\x00\x00\x00\x00\x44\x00\x8f\x0c\x63\x02\x67\x00\x63\x02\x5d\x07\x00\x00\x7d\x0c\x7c\x0c\x73\x01\x8c\x06\x7c\x0c\x91\x02\x8c\x09\x04\x00\x7d\x0d\x7d\x0c\x7c\x0b\x6a\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x02\xab\x01\x00\x00\x00\x00\x00\x00\x44\x00\x8f\x0c\x63\x02\x67\x00\x63\x02\x5d\x07\x00\x00\x7d\x0c\x7c\x0c\x73\x01\x8c\x06\x7c\x0c\x91\x02\x8c\x09\x04\x00\x7d\x0e\x7d\x0c\x64\x0b\x7d\x0f\x74\x15\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x0d\x7c\x0e\xab\x02\x00\x00\x00\x00\x00\x00\x44\x00\x5d\x23\x00\x00\x5c\x02\x00\x00\x7d\x10\x7d\x11\x74\x11\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x10\xab\x01\x00\x00\x00\x00\x00\x00\x74\x11\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x11\xab\x01\x00\x00\x00\x00\x00\x00\x6b\x37\x00\x00\x72\x02\x01\x00\x6e\x07\x7c\x0f\x64\x0c\x7a\x0d\x00\x00\x7d\x0f\x8c\x25\x04\x00\x7c\x04\x67\x01\x74\x17\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x0d\xab\x01\x00\x00\x00\x00\x00\x00\x7c\x0f\x7a\x0a\x00\x00\x7a\x05\x00\x00\x7c\x0e\x7c\x0f\x64\x07\x1a\x00\x7a\x00\x00\x00\x7d\x12\x7c\x12\x73\x02\x7c\x03\x53\x00\x74\x19\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x12\x8e\x00\x53\x00\x63\x02\x01\x00\x63\x02\x7d\x0c\x77\x00\x63\x02\x01\x00\x63\x02\x7d\x0c\x77\x00\x23\x00\x74\x1a\x00\x00\x00\x00\x00\x00\x00\x00\x74\x08\x00\x00\x00\x00\x00\x00\x00\x00\x74\x1c\x00\x00\x00\x00\x00\x00\x00\x00\x74\x1e\x00\x00\x00\x00\x00\x00\x00\x00\x74\x20\x00\x00\x00\x00\x00\x00\x00\x00\x66\x05\x24\x00\x72\x19\x01\x00\x74\x23\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x24\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x0d\x7c\x00\x7c\x01\xab\x03\x00\x00\x00\x00\x00\x00\x01\x00\x82\x00\x77\x00\x78\x03\x59\x00\x77\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[69];
+ }
+ntpath_toplevel_consts_46_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 68,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Given a sequence of path names, returns the longest common sub-path.",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[38];
+ }
+ntpath_toplevel_consts_46_consts_1 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 37,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "commonpath() arg is an empty sequence",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[38];
+ }
+ntpath_toplevel_consts_46_consts_10 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 37,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Can't mix absolute and relative paths",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[32];
+ }
+ntpath_toplevel_consts_46_consts_11 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 31,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Paths don't have the same drive",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[14];
+ }_object;
+ }
+ntpath_toplevel_consts_46_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 14,
+ },
+ .ob_item = {
+ & ntpath_toplevel_consts_46_consts_0._ascii.ob_base,
+ & ntpath_toplevel_consts_46_consts_1._ascii.ob_base,
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 0],
+ (PyObject *)&_Py_SINGLETON(bytes_characters[92]),
+ (PyObject *)&_Py_SINGLETON(bytes_characters[47]),
+ (PyObject *)&_Py_SINGLETON(bytes_characters[46]),
+ (PyObject *)&_Py_SINGLETON(strings).ascii[92],
+ (PyObject *)&_Py_SINGLETON(strings).ascii[47],
+ &_Py_STR(dot),
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 1],
+ & ntpath_toplevel_consts_46_consts_10._ascii.ob_base,
+ & ntpath_toplevel_consts_46_consts_11._ascii.ob_base,
+ Py_None,
+ & const_str_commonpath._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[20];
+ }_object;
+ }
+ntpath_toplevel_consts_46_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 20,
+ },
+ .ob_item = {
+ & const_str_ValueError._ascii.ob_base,
+ & const_str_tuple._ascii.ob_base,
+ & const_str_map._ascii.ob_base,
+ & const_str_os._ascii.ob_base,
+ & const_str_fspath._ascii.ob_base,
+ &_Py_ID(isinstance),
+ &_Py_ID(bytes),
+ & const_str_splitroot._ascii.ob_base,
+ &_Py_ID(replace),
+ & const_str_lower._ascii.ob_base,
+ & const_str_split._ascii.ob_base,
+ &_Py_ID(len),
+ & const_str_min._ascii.ob_base,
+ & const_str_max._ascii.ob_base,
+ & const_str_enumerate._ascii.ob_base,
+ &_Py_ID(join),
+ & const_str_TypeError._ascii.ob_base,
+ & const_str_AttributeError._ascii.ob_base,
+ & const_str_genericpath._ascii.ob_base,
+ & const_str__check_arg_types._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[556];
+ }
+ntpath_toplevel_consts_46_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 555,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf1\x06\x00\x0c\x11\xdc\x0e\x18\xd0\x19\x40\xd3\x0e\x41\xd0\x08\x41\xe4\x0c\x11\x94\x23\x94\x62\x97\x69\x91\x69\xa0\x15\xd3\x12\x27\xd3\x0c\x28\x80\x45\xdc\x07\x11\x90\x25\x98\x01\x91\x28\x9c\x45\xd4\x07\x22\xd8\x0e\x13\x88\x03\xd8\x11\x15\x88\x06\xd8\x11\x15\x89\x06\xe0\x0e\x12\x88\x03\xd8\x11\x14\x88\x06\xd8\x11\x14\x88\x06\xf0\x04\x1e\x05\x0e\xd8\x4a\x4f\xd6\x16\x50\xc0\x51\x94\x79\xa0\x11\xa7\x19\xa1\x19\xa8\x36\xb0\x33\xd3\x21\x37\xd7\x21\x3d\xd1\x21\x3d\xd3\x21\x3f\xd5\x17\x40\xd0\x16\x50\x88\x0b\xd0\x16\x50\xd8\x33\x3e\xd7\x16\x3f\xd0\x16\x3f\xa9\x07\xa8\x01\xa8\x31\xa8\x61\x90\x71\x97\x77\x91\x77\x98\x73\x95\x7c\xd0\x16\x3f\x88\x0b\xd2\x16\x3f\xe4\x0b\x0e\xa0\x1b\xd7\x0f\x2d\xd0\x0f\x2d\x91\x67\x90\x61\x98\x11\x98\x41\x92\x01\xd4\x0f\x2d\xd3\x0b\x2e\xb0\x21\xd2\x0b\x33\xdc\x12\x1c\xd0\x1d\x44\xd3\x12\x45\xd0\x0c\x45\xf4\x0a\x00\x0c\x0f\xa0\x1b\xd7\x0f\x2d\xd0\x0f\x2d\x91\x67\x90\x61\x98\x11\x98\x41\x92\x01\xd4\x0f\x2d\xd3\x0b\x2e\xb0\x21\xd2\x0b\x33\xdc\x12\x1c\xd0\x1d\x3e\xd3\x12\x3f\xd0\x0c\x3f\xe4\x1c\x25\xa0\x65\xa8\x41\xa1\x68\xd7\x26\x36\xd1\x26\x36\xb0\x76\xb8\x73\xd3\x26\x43\xd3\x1c\x44\xd1\x08\x19\x88\x05\x88\x74\x90\x54\xd8\x11\x15\x97\x1a\x91\x1a\x98\x43\x93\x1f\x88\x06\xd8\x1d\x23\xd6\x11\x39\x98\x01\xa2\x71\xa8\x51\xb0\x26\xab\x5b\x92\x21\xd0\x11\x39\x88\x06\xd0\x11\x39\xe0\x44\x4f\xd7\x16\x50\xb8\x71\xa0\x31\xd6\x17\x3a\x98\x61\xaa\x01\xa8\x61\xb0\x36\xab\x6b\x9a\x01\xd4\x17\x3a\xd0\x16\x50\x88\x0b\xd1\x16\x50\xdc\x0d\x10\x90\x1b\xd3\x0d\x1d\x88\x02\xdc\x0d\x10\x90\x1b\xd3\x0d\x1d\x88\x02\xdc\x14\x1d\x98\x62\x93\x4d\xf2\x00\x05\x09\x26\x89\x44\x88\x41\x88\x71\xd8\x0f\x10\x90\x42\x90\x71\x91\x45\x8b\x7a\xd8\x19\x1f\xa0\x02\xa0\x11\x98\x1a\x90\x06\xd9\x10\x15\xf0\x07\x05\x09\x26\xf0\x0a\x00\x16\x1c\x98\x48\x9c\x53\xa0\x12\x9b\x57\xd0\x15\x25\x88\x46\xe0\x0f\x14\x90\x74\x89\x7c\x98\x63\x9f\x68\x99\x68\xa0\x76\xd3\x1e\x2e\xd1\x0f\x2e\xd0\x08\x2e\xf9\xf2\x35\x00\x17\x51\x01\xf9\xdc\x16\x3f\xf9\xe4\x0f\x2d\xf9\xf4\x0c\x00\x10\x2e\xf9\xf2\x0a\x00\x12\x3a\xf9\xe2\x17\x3a\xf9\xd3\x16\x50\xf8\xf4\x16\x00\x0d\x16\x94\x7e\xd0\x0b\x26\xf2\x00\x02\x05\x0e\xdc\x08\x13\xd7\x08\x24\xd1\x08\x24\xa0\x5c\xd0\x08\x3a\xb0\x45\xd3\x08\x3a\xd8\x08\x0d\xf0\x05\x02\x05\x0e\xfa",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[146];
+ }
+ntpath_toplevel_consts_46_exceptiontable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 145,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\xc1\x12\x04\x48\x06\x00\xc1\x16\x30\x47\x1c\x04\xc2\x06\x08\x48\x06\x00\xc2\x0e\x1c\x47\x21\x08\xc2\x2a\x0f\x48\x06\x00\xc2\x39\x0d\x47\x28\x0c\xc3\x06\x22\x48\x06\x00\xc3\x28\x0d\x47\x2f\x0c\xc3\x35\x41\x0e\x48\x06\x00\xc5\x03\x07\x47\x36\x04\xc5\x0b\x05\x47\x36\x04\xc5\x11\x04\x47\x36\x04\xc5\x15\x07\x48\x06\x00\xc5\x1c\x09\x48\x00\x06\xc5\x25\x07\x47\x3b\x0c\xc5\x2d\x05\x47\x3b\x0c\xc5\x33\x04\x47\x3b\x0c\xc5\x37\x05\x48\x00\x06\xc5\x3c\x32\x48\x06\x00\xc6\x2f\x2c\x48\x06\x00\xc7\x1c\x1f\x48\x06\x00\xc7\x3b\x05\x48\x00\x06\xc8\x00\x06\x48\x06\x00\xc8\x06\x27\x48\x2d\x03",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[12];
+ }
+const_str_drivesplits = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 11,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "drivesplits",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[12];
+ }
+const_str_split_paths = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 11,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "split_paths",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[7];
+ }
+const_str_common = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 6,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "common",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[18];
+ }_object;
+ }
+ntpath_toplevel_consts_46_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 18,
+ },
+ .ob_item = {
+ & const_str_paths._ascii.ob_base,
+ &_Py_ID(sep),
+ & const_str_altsep._ascii.ob_base,
+ & const_str_curdir._ascii.ob_base,
+ &_Py_ID(p),
+ & const_str_drivesplits._ascii.ob_base,
+ &_Py_ID(d),
+ &_Py_ID(r),
+ & const_str_split_paths._ascii.ob_base,
+ & const_str_drive._ascii.ob_base,
+ & const_str_root._ascii.ob_base,
+ &_Py_ID(path),
+ & const_str_common._ascii.ob_base,
+ &_Py_ID(c),
+ &_Py_ID(s),
+ & const_str_s1._ascii.ob_base,
+ & const_str_s2._ascii.ob_base,
+ (PyObject *)&_Py_SINGLETON(strings).ascii[105],
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[19];
+ }
+ntpath_toplevel_consts_46_localspluskinds = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 18,
+ },
+ .ob_shash = -1,
+ .ob_sval = " ",
+};
+static
+ struct _PyCode_DEF(1120)
+ntpath_toplevel_consts_46 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 560,
+ },
+ .co_consts = & ntpath_toplevel_consts_46_consts._object.ob_base.ob_base,
+ .co_names = & ntpath_toplevel_consts_46_names._object.ob_base.ob_base,
+ .co_exceptiontable = & ntpath_toplevel_consts_46_exceptiontable.ob_base.ob_base,
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 28 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 10,
+ .co_firstlineno = 822,
+ .co_nlocalsplus = 18,
+ .co_nlocals = 18,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 573,
+ .co_localsplusnames = & ntpath_toplevel_consts_46_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & ntpath_toplevel_consts_46_localspluskinds.ob_base.ob_base,
+ .co_filename = & ntpath_toplevel_consts_12_filename._ascii.ob_base,
+ .co_name = & const_str_commonpath._ascii.ob_base,
+ .co_qualname = & const_str_commonpath._ascii.ob_base,
+ .co_linetable = & ntpath_toplevel_consts_46_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x00\x73\x0b\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x64\x01\xab\x01\x00\x00\x00\x00\x00\x00\x82\x01\x74\x03\x00\x00\x00\x00\x00\x00\x00\x00\x74\x05\x00\x00\x00\x00\x00\x00\x00\x00\x74\x06\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x02\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x00\x74\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x64\x02\x19\x00\x00\x00\x74\x0c\x00\x00\x00\x00\x00\x00\x00\x00\xab\x02\x00\x00\x00\x00\x00\x00\x72\x07\x64\x03\x7d\x01\x64\x04\x7d\x02\x64\x05\x7d\x03\x6e\x06\x64\x06\x7d\x01\x64\x07\x7d\x02\x64\x08\x7d\x03\x09\x00\x7c\x00\x44\x00\x8f\x04\x63\x02\x67\x00\x63\x02\x5d\x2b\x00\x00\x7d\x04\x74\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x04\x6a\x11\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x02\x7c\x01\xab\x02\x00\x00\x00\x00\x00\x00\x6a\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x91\x02\x8c\x2d\x04\x00\x7d\x05\x7d\x04\x7c\x05\x44\x00\x8f\x06\x8f\x07\x8f\x04\x63\x04\x67\x00\x63\x02\x5d\x17\x00\x00\x5c\x03\x00\x00\x7d\x06\x7d\x07\x7d\x04\x7c\x04\x6a\x15\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\xab\x01\x00\x00\x00\x00\x00\x00\x91\x02\x8c\x19\x04\x00\x7d\x08\x7d\x07\x7d\x06\x7d\x04\x74\x17\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x05\x44\x00\x8f\x06\x8f\x07\x8f\x04\x63\x04\x68\x00\x63\x02\x5d\x08\x00\x00\x5c\x03\x00\x00\x7d\x06\x7d\x07\x7d\x04\x7c\x07\x92\x02\x8c\x0a\x04\x00\x63\x04\x7d\x04\x7d\x07\x7d\x06\xab\x01\x00\x00\x00\x00\x00\x00\x64\x09\x6b\x37\x00\x00\x72\x0b\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x64\x0a\xab\x01\x00\x00\x00\x00\x00\x00\x82\x01\x74\x17\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x05\x44\x00\x8f\x06\x8f\x07\x8f\x04\x63\x04\x68\x00\x63\x02\x5d\x08\x00\x00\x5c\x03\x00\x00\x7d\x06\x7d\x07\x7d\x04\x7c\x06\x92\x02\x8c\x0a\x04\x00\x63\x04\x7d\x04\x7d\x07\x7d\x06\xab\x01\x00\x00\x00\x00\x00\x00\x64\x09\x6b\x37\x00\x00\x72\x0b\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x64\x0b\xab\x01\x00\x00\x00\x00\x00\x00\x82\x01\x74\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x64\x02\x19\x00\x00\x00\x6a\x11\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x02\x7c\x01\xab\x02\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x5c\x03\x00\x00\x7d\x09\x7d\x0a\x7d\x0b\x7c\x0b\x6a\x15\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x0c\x7c\x0c\x44\x00\x8f\x0d\x63\x02\x67\x00\x63\x02\x5d\x0d\x00\x00\x7d\x0d\x7c\x0d\x73\x01\x8c\x06\x7c\x0d\x7c\x03\x6b\x37\x00\x00\x73\x01\x8c\x0c\x7c\x0d\x91\x02\x8c\x0f\x04\x00\x7d\x0c\x7d\x0d\x7c\x08\x44\x00\x8f\x0e\x8f\x0d\x63\x03\x67\x00\x63\x02\x5d\x1b\x00\x00\x7d\x0e\x7c\x0e\x44\x00\x8f\x0d\x63\x02\x67\x00\x63\x02\x5d\x0d\x00\x00\x7d\x0d\x7c\x0d\x73\x01\x8c\x06\x7c\x0d\x7c\x03\x6b\x37\x00\x00\x73\x01\x8c\x0c\x7c\x0d\x91\x02\x8c\x0f\x04\x00\x63\x02\x7d\x0d\x91\x02\x8c\x1d\x04\x00\x7d\x08\x7d\x0e\x7d\x0d\x74\x19\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x08\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x0f\x74\x1b\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x08\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x10\x74\x1d\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x0f\xab\x01\x00\x00\x00\x00\x00\x00\x44\x00\x5d\x14\x00\x00\x5c\x02\x00\x00\x7d\x11\x7d\x0d\x7c\x0d\x7c\x10\x7c\x11\x19\x00\x00\x00\x6b\x37\x00\x00\x73\x01\x8c\x0f\x7c\x0c\x64\x0c\x7c\x11\x1a\x00\x7d\x0c\x01\x00\x6e\x0f\x04\x00\x7c\x0c\x64\x0c\x74\x17\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x0f\xab\x01\x00\x00\x00\x00\x00\x00\x1a\x00\x7d\x0c\x7c\x09\x7c\x0a\x7a\x00\x00\x00\x7c\x01\x6a\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x0c\xab\x01\x00\x00\x00\x00\x00\x00\x7a\x00\x00\x00\x53\x00\x63\x02\x01\x00\x63\x02\x7d\x04\x77\x00\x63\x02\x01\x00\x63\x04\x7d\x04\x7d\x07\x7d\x06\x77\x00\x63\x02\x01\x00\x63\x04\x7d\x04\x7d\x07\x7d\x06\x77\x00\x63\x02\x01\x00\x63\x04\x7d\x04\x7d\x07\x7d\x06\x77\x00\x63\x02\x01\x00\x63\x02\x7d\x0d\x77\x00\x63\x02\x01\x00\x63\x02\x7d\x0d\x77\x00\x63\x02\x01\x00\x63\x03\x7d\x0d\x7d\x0e\x77\x00\x23\x00\x74\x20\x00\x00\x00\x00\x00\x00\x00\x00\x74\x22\x00\x00\x00\x00\x00\x00\x00\x00\x66\x02\x24\x00\x72\x18\x01\x00\x74\x25\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x0d\x67\x01\x7c\x00\xa2\x01\xad\x06\x8e\x00\x01\x00\x82\x00\x77\x00\x78\x03\x59\x00\x77\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+ntpath_toplevel_consts_47 = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & const_str__path_isdir._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+ntpath_toplevel_consts_48 = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & const_str__path_isfile._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[13];
+ }
+const_str__path_islink = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 12,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_path_islink",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+ntpath_toplevel_consts_49 = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & const_str__path_islink._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[13];
+ }
+const_str__path_exists = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 12,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_path_exists",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+ntpath_toplevel_consts_50 = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & const_str__path_exists._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[17];
+ }
+const_str__path_isdevdrive = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 16,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_path_isdevdrive",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+ntpath_toplevel_consts_51 = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & const_str__path_isdevdrive._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[65];
+ }
+ntpath_toplevel_consts_52_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 64,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Determines whether the specified path is on a Windows Dev Drive.",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+ntpath_toplevel_consts_52_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & ntpath_toplevel_consts_52_consts_0._ascii.ob_base,
+ Py_False,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+ntpath_toplevel_consts_52_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ & const_str__path_isdevdrive._ascii.ob_base,
+ & const_str_abspath._ascii.ob_base,
+ & const_str_OSError._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[11];
+ }
+const_str_isdevdrive = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 10,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "isdevdrive",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[41];
+ }
+ntpath_toplevel_consts_52_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 40,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf0\x04\x03\x09\x19\xdc\x13\x23\xa4\x47\xa8\x44\xa3\x4d\xd3\x13\x32\xd0\x0c\x32\xf8\xdc\x0f\x16\xf2\x00\x01\x09\x19\xd9\x13\x18\xf0\x03\x01\x09\x19\xfa",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[13];
+ }
+ntpath_toplevel_consts_52_exceptiontable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 12,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x82\x13\x16\x00\x96\x09\x22\x03\xa1\x01\x22\x03",
+};
+static
+ struct _PyCode_DEF(74)
+ntpath_toplevel_consts_52 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 37,
+ },
+ .co_consts = & ntpath_toplevel_consts_52_consts._object.ob_base.ob_base,
+ .co_names = & ntpath_toplevel_consts_52_names._object.ob_base.ob_base,
+ .co_exceptiontable = & ntpath_toplevel_consts_52_exceptiontable.ob_base.ob_base,
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 6 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 5,
+ .co_firstlineno = 892,
+ .co_nlocalsplus = 1,
+ .co_nlocals = 1,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 574,
+ .co_localsplusnames = & importlib__bootstrap_external_toplevel_consts_18_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_characters[32]),
+ .co_filename = & ntpath_toplevel_consts_12_filename._ascii.ob_base,
+ .co_name = & const_str_isdevdrive._ascii.ob_base,
+ .co_qualname = & const_str_isdevdrive._ascii.ob_base,
+ .co_linetable = & ntpath_toplevel_consts_52_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x09\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x74\x03\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x53\x00\x23\x00\x74\x04\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x72\x03\x01\x00\x59\x00\x79\x01\x77\x00\x78\x03\x59\x00\x77\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[8];
+ }
+ntpath_toplevel_consts_53_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 7,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf0\x06\x00\x10\x15",
+};
+static
+ struct _PyCode_DEF(4)
+ntpath_toplevel_consts_53 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 2,
+ },
+ .co_consts = & ntpath_toplevel_consts_52_consts._object.ob_base.ob_base,
+ .co_names = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 1 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 0,
+ .co_firstlineno = 887,
+ .co_nlocalsplus = 1,
+ .co_nlocals = 1,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 575,
+ .co_localsplusnames = & importlib__bootstrap_external_toplevel_consts_18_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_characters[32]),
+ .co_filename = & ntpath_toplevel_consts_12_filename._ascii.ob_base,
+ .co_name = & const_str_isdevdrive._ascii.ob_base,
+ .co_qualname = & const_str_isdevdrive._ascii.ob_base,
+ .co_linetable = & ntpath_toplevel_consts_53_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x79\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[55];
+ }_object;
+ }
+ntpath_toplevel_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 55,
+ },
+ .ob_item = {
+ & ntpath_toplevel_consts_0._ascii.ob_base,
+ &_Py_STR(dot),
+ & ntpath_toplevel_consts_2._ascii.ob_base,
+ (PyObject *)&_Py_SINGLETON(strings).ascii[92],
+ (PyObject *)&_Py_SINGLETON(strings).ascii[59],
+ (PyObject *)&_Py_SINGLETON(strings).ascii[47],
+ & ntpath_toplevel_consts_6._ascii.ob_base,
+ & const_str_nul._ascii.ob_base,
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 0],
+ Py_None,
+ & codecs_toplevel_consts_3._object.ob_base.ob_base,
+ & ntpath_toplevel_consts_11._object.ob_base.ob_base,
+ & ntpath_toplevel_consts_12.ob_base.ob_base,
+ & ntpath_toplevel_consts_13._object.ob_base.ob_base,
+ & ntpath_toplevel_consts_14.ob_base.ob_base,
+ & ntpath_toplevel_consts_15.ob_base.ob_base,
+ & ntpath_toplevel_consts_16.ob_base.ob_base,
+ & ntpath_toplevel_consts_17.ob_base.ob_base,
+ & ntpath_toplevel_consts_18.ob_base.ob_base,
+ & ntpath_toplevel_consts_19.ob_base.ob_base,
+ & ntpath_toplevel_consts_20.ob_base.ob_base,
+ & ntpath_toplevel_consts_21.ob_base.ob_base,
+ & ntpath_toplevel_consts_22.ob_base.ob_base,
+ & ntpath_toplevel_consts_23.ob_base.ob_base,
+ & const_str_st_reparse_tag._ascii.ob_base,
+ & ntpath_toplevel_consts_25.ob_base.ob_base,
+ & ntpath_toplevel_consts_26.ob_base.ob_base,
+ & ntpath_toplevel_consts_27.ob_base.ob_base,
+ & ntpath_toplevel_consts_28._object.ob_base.ob_base,
+ & ntpath_toplevel_consts_29.ob_base.ob_base,
+ & ntpath_toplevel_consts_30.ob_base.ob_base,
+ & ntpath_toplevel_consts_31.ob_base.ob_base,
+ & ntpath_toplevel_consts_32._object.ob_base.ob_base,
+ & ntpath_toplevel_consts_33.ob_base.ob_base,
+ & ntpath_toplevel_consts_34.ob_base.ob_base,
+ & ntpath_toplevel_consts_35.ob_base.ob_base,
+ & ntpath_toplevel_consts_36._object.ob_base.ob_base,
+ & ntpath_toplevel_consts_37.ob_base.ob_base,
+ & ntpath_toplevel_consts_38._object.ob_base.ob_base,
+ & ntpath_toplevel_consts_39.ob_base.ob_base,
+ & ntpath_toplevel_consts_40.ob_base.ob_base,
+ Py_False,
+ & codecs_toplevel_consts_14_consts_5._object.ob_base.ob_base,
+ & ntpath_toplevel_consts_43.ob_base.ob_base,
+ Py_True,
+ & ntpath_toplevel_consts_45.ob_base.ob_base,
+ & ntpath_toplevel_consts_46.ob_base.ob_base,
+ & ntpath_toplevel_consts_47._object.ob_base.ob_base,
+ & ntpath_toplevel_consts_48._object.ob_base.ob_base,
+ & ntpath_toplevel_consts_49._object.ob_base.ob_base,
+ & ntpath_toplevel_consts_50._object.ob_base.ob_base,
+ & ntpath_toplevel_consts_51._object.ob_base.ob_base,
+ & ntpath_toplevel_consts_52.ob_base.ob_base,
+ & ntpath_toplevel_consts_53.ob_base.ob_base,
+ & importlib__bootstrap_toplevel_consts_1_consts._object.ob_base.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[8];
+ }
+const_str__winapi = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 7,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_winapi",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[12];
+ }
+const_str_stat_result = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 11,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "stat_result",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[66];
+ }_object;
+ }
+ntpath_toplevel_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 66,
+ },
+ .ob_item = {
+ &_Py_ID(__doc__),
+ & const_str_curdir._ascii.ob_base,
+ & const_str_pardir._ascii.ob_base,
+ & const_str_extsep._ascii.ob_base,
+ &_Py_ID(sep),
+ & const_str_pathsep._ascii.ob_base,
+ & const_str_altsep._ascii.ob_base,
+ & const_str_defpath._ascii.ob_base,
+ & const_str_devnull._ascii.ob_base,
+ & const_str_os._ascii.ob_base,
+ & const_str_sys._ascii.ob_base,
+ & const_str_stat._ascii.ob_base,
+ & const_str_genericpath._ascii.ob_base,
+ &_Py_ID(__all__),
+ & const_str__get_bothseps._ascii.ob_base,
+ & const_str__winapi._ascii.ob_base,
+ & const_str_LCMapStringEx._ascii.ob_base,
+ & const_str__LCMapStringEx._ascii.ob_base,
+ & const_str_LOCALE_NAME_INVARIANT._ascii.ob_base,
+ & const_str__LOCALE_NAME_INVARIANT._ascii.ob_base,
+ & const_str_LCMAP_LOWERCASE._ascii.ob_base,
+ & const_str__LCMAP_LOWERCASE._ascii.ob_base,
+ & const_str_normcase._ascii.ob_base,
+ & const_str_ImportError._ascii.ob_base,
+ & const_str_isabs._ascii.ob_base,
+ &_Py_ID(join),
+ & const_str_splitdrive._ascii.ob_base,
+ & const_str_splitroot._ascii.ob_base,
+ & const_str_split._ascii.ob_base,
+ & const_str_splitext._ascii.ob_base,
+ & const_str__splitext._ascii.ob_base,
+ & const_str_basename._ascii.ob_base,
+ & const_str_dirname._ascii.ob_base,
+ & const_str_hasattr._ascii.ob_base,
+ & const_str_stat_result._ascii.ob_base,
+ & const_str_isjunction._ascii.ob_base,
+ & const_str_lexists._ascii.ob_base,
+ &_Py_ID(nt),
+ & const_str__getvolumepathname._ascii.ob_base,
+ & const_str_ismount._ascii.ob_base,
+ & const_str_expanduser._ascii.ob_base,
+ & const_str_expandvars._ascii.ob_base,
+ & const_str__path_normpath._ascii.ob_base,
+ & const_str_normpath._ascii.ob_base,
+ & const_str__abspath_fallback._ascii.ob_base,
+ & const_str__getfullpathname._ascii.ob_base,
+ & const_str_abspath._ascii.ob_base,
+ & const_str__getfinalpathname._ascii.ob_base,
+ & const_str_readlink._ascii.ob_base,
+ & const_str__nt_readlink._ascii.ob_base,
+ & const_str__readlink_deep._ascii.ob_base,
+ & const_str__getfinalpathname_nonstrict._ascii.ob_base,
+ & const_str_realpath._ascii.ob_base,
+ & const_str_supports_unicode_filenames._ascii.ob_base,
+ & const_str_relpath._ascii.ob_base,
+ & const_str_commonpath._ascii.ob_base,
+ & const_str__path_isdir._ascii.ob_base,
+ & const_str_isdir._ascii.ob_base,
+ & const_str__path_isfile._ascii.ob_base,
+ & const_str_isfile._ascii.ob_base,
+ & const_str__path_islink._ascii.ob_base,
+ & const_str_islink._ascii.ob_base,
+ & const_str__path_exists._ascii.ob_base,
+ & const_str_exists._ascii.ob_base,
+ & const_str__path_isdevdrive._ascii.ob_base,
+ & const_str_isdevdrive._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[493];
+ }
+ntpath_toplevel_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 492,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\xf0\x03\x01\x01\x01\xf1\x04\x04\x01\x04\xf0\x12\x00\x0a\x0d\x80\x06\xd8\x09\x0d\x80\x06\xd8\x09\x0c\x80\x06\xd8\x06\x0a\x80\x03\xd8\x0a\x0d\x80\x07\xd8\x09\x0c\x80\x06\xd8\x0a\x15\x80\x07\xd8\x0a\x0f\x80\x07\xe3\x00\x09\xdb\x00\x0a\xdb\x00\x0b\xdb\x00\x12\xdc\x00\x19\xf2\x06\x06\x0b\x4f\x01\x80\x07\xf2\x10\x04\x01\x15\xf0\x14\x21\x01\x2c\xf7\x02\x03\x05\x2d\xf1\x00\x03\x05\x2d\xf2\x0a\x11\x05\x38\xf2\x48\x01\x10\x01\x11\xf2\x28\x2b\x01\x0e\xf2\x62\x01\x14\x01\x1e\xf2\x2e\x31\x01\x1f\xf2\x72\x01\x0d\x01\x2b\xf2\x2a\x05\x01\x38\xf0\x0c\x00\x14\x1f\xd7\x13\x28\xd1\x13\x28\xd7\x13\x30\xd1\x13\x30\x80\x08\xd4\x00\x10\xf2\x0a\x02\x01\x17\xf2\x0e\x02\x01\x17\xf1\x0e\x00\x04\x0b\x88\x32\x8f\x3e\x89\x3e\xd0\x1b\x2b\xd4\x03\x2c\xf3\x02\x06\x05\x4a\x01\xf2\x10\x03\x05\x15\xf2\x10\x06\x01\x10\xf0\x24\x03\x01\x1e\xdd\x04\x25\xf2\x06\x11\x01\x15\xf2\x3a\x2d\x01\x1f\xf2\x7a\x01\x6a\x01\x01\x0f\xf0\x60\x03\x2e\x01\x2b\xdd\x04\x21\xf2\x50\x01\x05\x05\x2b\xf2\x10\x0e\x01\x1a\xf0\x22\x0c\x01\x2b\xdd\x04\x23\xf2\x0c\x05\x05\x2b\xf0\x0e\x5d\x02\x01\x14\xdf\x04\x3e\xf2\x0a\x28\x05\x14\xf2\x54\x01\x2f\x05\x14\xf0\x62\x01\x00\x22\x27\xf4\x00\x3c\x05\x14\xf0\x40\x02\x00\x1e\x22\xd0\x00\x1a\xf3\x04\x2b\x01\x0e\xf2\x70\x01\x2e\x01\x0e\xf0\x62\x01\x0a\x01\x09\xf5\x08\x00\x05\x28\xdd\x04\x29\xdd\x04\x29\xdd\x04\x29\xf0\x0c\x0d\x01\x19\xdd\x04\x23\xf3\x0e\x05\x05\x19\xf8\xf0\x6f\x19\x00\x08\x13\xf2\x00\x09\x01\x2c\xf4\x02\x08\x05\x2c\xf0\x03\x09\x01\x2c\xfb\xf0\x74\x07\x00\x08\x13\xf2\x00\x01\x01\x1e\xd8\x19\x1d\xd2\x04\x16\xf0\x03\x01\x01\x1e\xfb\xf0\x5e\x06\x00\x08\x13\xf2\x00\x23\x01\x28\xf4\x02\x22\x05\x28\xf0\x03\x23\x01\x28\xfb\xf0\x44\x02\x00\x08\x13\xf2\x00\x01\x01\x20\xd8\x0e\x1f\x82\x47\xf0\x03\x01\x01\x20\xfb\xf0\x1a\x00\x08\x13\xf2\x00\x02\x01\x17\xe0\x0f\x16\x82\x48\xf0\x05\x02\x01\x17\xfb\xf0\x64\x08\x00\x08\x13\xf2\x00\x02\x01\x09\xe1\x04\x08\xf0\x05\x02\x01\x09\xfb\xf0\x0e\x00\x08\x13\xf2\x00\x04\x01\x15\xf4\x02\x03\x05\x15\xf0\x03\x04\x01\x15\xfa",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[126];
+ }
+ntpath_toplevel_exceptiontable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 125,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\xb0\x0d\x43\x36\x00\xc2\x0e\x06\x44\x04\x00\xc2\x1e\x06\x44\x11\x00\xc2\x2b\x06\x44\x1f\x00\xc2\x35\x08\x44\x2c\x00\xc3\x13\x18\x44\x39\x00\xc3\x2c\x06\x45\x04\x00\xc3\x36\x08\x44\x01\x03\xc4\x00\x01\x44\x01\x03\xc4\x04\x07\x44\x0e\x03\xc4\x0d\x01\x44\x0e\x03\xc4\x11\x08\x44\x1c\x03\xc4\x1b\x01\x44\x1c\x03\xc4\x1f\x07\x44\x29\x03\xc4\x28\x01\x44\x29\x03\xc4\x2c\x07\x44\x36\x03\xc4\x35\x01\x44\x36\x03\xc4\x39\x05\x45\x01\x03\xc5\x00\x01\x45\x01\x03\xc5\x04\x08\x45\x0f\x03\xc5\x0e\x01\x45\x0f\x03",
+};
+static
+ struct _PyCode_DEF(676)
+ntpath_toplevel = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 338,
+ },
+ .co_consts = & ntpath_toplevel_consts._object.ob_base.ob_base,
+ .co_names = & ntpath_toplevel_names._object.ob_base.ob_base,
+ .co_exceptiontable = & ntpath_toplevel_exceptiontable.ob_base.ob_base,
+ .co_flags = 0,
+ .co_argcount = 0,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 4 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 1,
+ .co_nlocalsplus = 0,
+ .co_nlocals = 0,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 576,
+ .co_localsplusnames = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_filename = & ntpath_toplevel_consts_12_filename._ascii.ob_base,
+ .co_name = &_Py_STR(anon_module),
+ .co_qualname = &_Py_STR(anon_module),
+ .co_linetable = & ntpath_toplevel_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x64\x00\x5a\x00\x64\x01\x5a\x01\x64\x02\x5a\x02\x64\x01\x5a\x03\x64\x03\x5a\x04\x64\x04\x5a\x05\x64\x05\x5a\x06\x64\x06\x5a\x07\x64\x07\x5a\x08\x64\x08\x64\x09\x6c\x09\x5a\x09\x64\x08\x64\x09\x6c\x0a\x5a\x0a\x64\x08\x64\x09\x6c\x0b\x5a\x0b\x64\x08\x64\x09\x6c\x0c\x5a\x0c\x64\x08\x64\x0a\x6c\x0c\xad\x02\x01\x00\x67\x00\x64\x0b\xa2\x01\x5a\x0d\x64\x0c\x84\x00\x5a\x0e\x09\x00\x64\x08\x64\x0d\x6c\x0f\x6d\x10\x5a\x11\x6d\x12\x5a\x13\x6d\x14\x5a\x15\x01\x00\x64\x0e\x84\x00\x5a\x16\x64\x10\x84\x00\x5a\x18\x64\x11\x84\x00\x5a\x19\x64\x12\x84\x00\x5a\x1a\x64\x13\x84\x00\x5a\x1b\x64\x14\x84\x00\x5a\x1c\x64\x15\x84\x00\x5a\x1d\x65\x0c\x6a\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\x1d\x5f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x16\x84\x00\x5a\x1f\x64\x17\x84\x00\x5a\x20\x02\x00\x65\x21\x65\x09\x6a\x44\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x18\xab\x02\x00\x00\x00\x00\x00\x00\x72\x04\x64\x19\x84\x00\x5a\x23\x6e\x03\x64\x1a\x84\x00\x5a\x23\x64\x1b\x84\x00\x5a\x24\x09\x00\x64\x08\x64\x1c\x6c\x25\x6d\x26\x5a\x26\x01\x00\x64\x1d\x84\x00\x5a\x27\x64\x1e\x84\x00\x5a\x28\x64\x1f\x84\x00\x5a\x29\x09\x00\x64\x08\x64\x20\x6c\x25\x6d\x2a\x5a\x2a\x01\x00\x64\x21\x84\x00\x5a\x2b\x64\x23\x84\x00\x5a\x2c\x09\x00\x64\x08\x64\x24\x6c\x25\x6d\x2d\x5a\x2d\x01\x00\x64\x25\x84\x00\x5a\x2e\x09\x00\x64\x08\x64\x26\x6c\x25\x6d\x2f\x5a\x2f\x6d\x30\x5a\x31\x01\x00\x64\x27\x84\x00\x5a\x32\x64\x28\x84\x00\x5a\x33\x64\x29\x64\x2a\x9c\x01\x64\x2b\x84\x02\x5a\x34\x64\x2c\x5a\x35\x64\x36\x64\x2d\x84\x01\x5a\x36\x64\x2e\x84\x00\x5a\x37\x09\x00\x64\x08\x64\x2f\x6c\x25\x6d\x38\x5a\x39\x01\x00\x64\x08\x64\x30\x6c\x25\x6d\x3a\x5a\x3b\x01\x00\x64\x08\x64\x31\x6c\x25\x6d\x3c\x5a\x3d\x01\x00\x64\x08\x64\x32\x6c\x25\x6d\x3e\x5a\x3f\x01\x00\x09\x00\x64\x08\x64\x33\x6c\x25\x6d\x40\x5a\x40\x01\x00\x64\x34\x84\x00\x5a\x41\x79\x09\x23\x00\x65\x17\x24\x00\x72\x06\x01\x00\x64\x0f\x84\x00\x5a\x16\x59\x00\x8c\xc3\x77\x00\x78\x03\x59\x00\x77\x01\x23\x00\x65\x17\x24\x00\x72\x05\x01\x00\x64\x09\x5a\x26\x59\x00\x8c\x79\x77\x00\x78\x03\x59\x00\x77\x01\x23\x00\x65\x17\x24\x00\x72\x06\x01\x00\x64\x22\x84\x00\x5a\x2b\x59\x00\x8c\x74\x77\x00\x78\x03\x59\x00\x77\x01\x23\x00\x65\x17\x24\x00\x72\x05\x01\x00\x65\x2c\x5a\x2e\x59\x00\x8c\x74\x77\x00\x78\x03\x59\x00\x77\x01\x23\x00\x65\x17\x24\x00\x72\x05\x01\x00\x65\x2e\x5a\x34\x59\x00\x8c\x6c\x77\x00\x78\x03\x59\x00\x77\x01\x23\x00\x65\x17\x24\x00\x72\x03\x01\x00\x59\x00\x8c\x55\x77\x00\x78\x03\x59\x00\x77\x01\x23\x00\x65\x17\x24\x00\x72\x06\x01\x00\x64\x35\x84\x00\x5a\x41\x59\x00\x79\x09\x77\x00\x78\x03\x59\x00\x77\x01",
+ ._co_firsttraceable = 0,
+};
+
+PyObject *
+_Py_get_ntpath_toplevel(void)
+{
+ return Py_NewRef((PyObject *) &ntpath_toplevel);
+}
+
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[474];
+ }
+posixpath_toplevel_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 473,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x43\x6f\x6d\x6d\x6f\x6e\x20\x6f\x70\x65\x72\x61\x74\x69\x6f\x6e\x73\x20\x6f\x6e\x20\x50\x6f\x73\x69\x78\x20\x70\x61\x74\x68\x6e\x61\x6d\x65\x73\x2e\x0a\x0a\x49\x6e\x73\x74\x65\x61\x64\x20\x6f\x66\x20\x69\x6d\x70\x6f\x72\x74\x69\x6e\x67\x20\x74\x68\x69\x73\x20\x6d\x6f\x64\x75\x6c\x65\x20\x64\x69\x72\x65\x63\x74\x6c\x79\x2c\x20\x69\x6d\x70\x6f\x72\x74\x20\x6f\x73\x20\x61\x6e\x64\x20\x72\x65\x66\x65\x72\x20\x74\x6f\x0a\x74\x68\x69\x73\x20\x6d\x6f\x64\x75\x6c\x65\x20\x61\x73\x20\x6f\x73\x2e\x70\x61\x74\x68\x2e\x20\x20\x54\x68\x65\x20\x22\x6f\x73\x2e\x70\x61\x74\x68\x22\x20\x6e\x61\x6d\x65\x20\x69\x73\x20\x61\x6e\x20\x61\x6c\x69\x61\x73\x20\x66\x6f\x72\x20\x74\x68\x69\x73\x0a\x6d\x6f\x64\x75\x6c\x65\x20\x6f\x6e\x20\x50\x6f\x73\x69\x78\x20\x73\x79\x73\x74\x65\x6d\x73\x3b\x20\x6f\x6e\x20\x6f\x74\x68\x65\x72\x20\x73\x79\x73\x74\x65\x6d\x73\x20\x28\x65\x2e\x67\x2e\x20\x57\x69\x6e\x64\x6f\x77\x73\x29\x2c\x0a\x6f\x73\x2e\x70\x61\x74\x68\x20\x70\x72\x6f\x76\x69\x64\x65\x73\x20\x74\x68\x65\x20\x73\x61\x6d\x65\x20\x6f\x70\x65\x72\x61\x74\x69\x6f\x6e\x73\x20\x69\x6e\x20\x61\x20\x6d\x61\x6e\x6e\x65\x72\x20\x73\x70\x65\x63\x69\x66\x69\x63\x20\x74\x6f\x20\x74\x68\x61\x74\x0a\x70\x6c\x61\x74\x66\x6f\x72\x6d\x2c\x20\x61\x6e\x64\x20\x69\x73\x20\x61\x6e\x20\x61\x6c\x69\x61\x73\x20\x74\x6f\x20\x61\x6e\x6f\x74\x68\x65\x72\x20\x6d\x6f\x64\x75\x6c\x65\x20\x28\x65\x2e\x67\x2e\x20\x6e\x74\x70\x61\x74\x68\x29\x2e\x0a\x0a\x53\x6f\x6d\x65\x20\x6f\x66\x20\x74\x68\x69\x73\x20\x63\x61\x6e\x20\x61\x63\x74\x75\x61\x6c\x6c\x79\x20\x62\x65\x20\x75\x73\x65\x66\x75\x6c\x20\x6f\x6e\x20\x6e\x6f\x6e\x2d\x50\x6f\x73\x69\x78\x20\x73\x79\x73\x74\x65\x6d\x73\x20\x74\x6f\x6f\x2c\x20\x65\x2e\x67\x2e\x0a\x66\x6f\x72\x20\x6d\x61\x6e\x69\x70\x75\x6c\x61\x74\x69\x6f\x6e\x20\x6f\x66\x20\x74\x68\x65\x20\x70\x61\x74\x68\x6e\x61\x6d\x65\x20\x63\x6f\x6d\x70\x6f\x6e\x65\x6e\x74\x20\x6f\x66\x20\x55\x52\x4c\x73\x2e\x0a",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[14];
+ }
+posixpath_toplevel_consts_5 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 13,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "/bin:/usr/bin",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[10];
+ }
+posixpath_toplevel_consts_7 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 9,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "/dev/null",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[40];
+ }_object;
+ }
+posixpath_toplevel_consts_10 = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 40,
+ },
+ .ob_item = {
+ & const_str_normcase._ascii.ob_base,
+ & const_str_isabs._ascii.ob_base,
+ &_Py_ID(join),
+ & const_str_splitdrive._ascii.ob_base,
+ & const_str_splitroot._ascii.ob_base,
+ & const_str_split._ascii.ob_base,
+ & const_str_splitext._ascii.ob_base,
+ & const_str_basename._ascii.ob_base,
+ & const_str_dirname._ascii.ob_base,
+ & const_str_commonprefix._ascii.ob_base,
+ & const_str_getsize._ascii.ob_base,
+ & const_str_getmtime._ascii.ob_base,
+ & const_str_getatime._ascii.ob_base,
+ & const_str_getctime._ascii.ob_base,
+ & const_str_islink._ascii.ob_base,
+ & const_str_exists._ascii.ob_base,
+ & const_str_lexists._ascii.ob_base,
+ & const_str_isdir._ascii.ob_base,
+ & const_str_isfile._ascii.ob_base,
+ & const_str_ismount._ascii.ob_base,
+ & const_str_expanduser._ascii.ob_base,
+ & const_str_expandvars._ascii.ob_base,
+ & const_str_normpath._ascii.ob_base,
+ & const_str_abspath._ascii.ob_base,
+ & const_str_samefile._ascii.ob_base,
+ & const_str_sameopenfile._ascii.ob_base,
+ & const_str_samestat._ascii.ob_base,
+ & const_str_curdir._ascii.ob_base,
+ & const_str_pardir._ascii.ob_base,
+ &_Py_ID(sep),
+ & const_str_pathsep._ascii.ob_base,
+ & const_str_defpath._ascii.ob_base,
+ & const_str_altsep._ascii.ob_base,
+ & const_str_extsep._ascii.ob_base,
+ & const_str_devnull._ascii.ob_base,
+ & const_str_realpath._ascii.ob_base,
+ & const_str_supports_unicode_filenames._ascii.ob_base,
+ & const_str_relpath._ascii.ob_base,
+ & const_str_commonpath._ascii.ob_base,
+ & const_str_isjunction._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+posixpath_toplevel_consts_11_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ Py_None,
+ (PyObject *)&_Py_SINGLETON(bytes_characters[47]),
+ (PyObject *)&_Py_SINGLETON(strings).ascii[47],
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[19];
+ }
+posixpath_toplevel_consts_11_filename = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 18,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "<frozen posixpath>",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[9];
+ }
+const_str__get_sep = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 8,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_get_sep",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[19];
+ }
+posixpath_toplevel_consts_11_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 18,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xdc\x07\x11\x90\x24\x9c\x05\xd4\x07\x1e\xd8\x0f\x13\xe0\x0f\x12",
+};
+static
+ struct _PyCode_DEF(38)
+posixpath_toplevel_consts_11 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 19,
+ },
+ .co_consts = & posixpath_toplevel_consts_11_consts._object.ob_base.ob_base,
+ .co_names = & ntpath_toplevel_consts_12_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 5 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 41,
+ .co_nlocalsplus = 1,
+ .co_nlocals = 1,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 577,
+ .co_localsplusnames = & importlib__bootstrap_external_toplevel_consts_18_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_characters[32]),
+ .co_filename = & posixpath_toplevel_consts_11_filename._ascii.ob_base,
+ .co_name = & const_str__get_sep._ascii.ob_base,
+ .co_qualname = & const_str__get_sep._ascii.ob_base,
+ .co_linetable = & posixpath_toplevel_consts_11_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x74\x02\x00\x00\x00\x00\x00\x00\x00\x00\xab\x02\x00\x00\x00\x00\x00\x00\x72\x01\x79\x01\x79\x02",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[55];
+ }
+posixpath_toplevel_consts_12_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 54,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Normalize case of pathname. Has no effect under Posix",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+posixpath_toplevel_consts_12_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & posixpath_toplevel_consts_12_consts_0._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[17];
+ }
+posixpath_toplevel_consts_12_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 16,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xe4\x0b\x0d\x8f\x39\x89\x39\x90\x51\x8b\x3c\xd0\x04\x17",
+};
+static
+ struct _PyCode_DEF(44)
+posixpath_toplevel_consts_12 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 22,
+ },
+ .co_consts = & posixpath_toplevel_consts_12_consts._object.ob_base.ob_base,
+ .co_names = & ntpath_toplevel_consts_26_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 4 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 3,
+ .co_firstlineno = 52,
+ .co_nlocalsplus = 1,
+ .co_nlocals = 1,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 578,
+ .co_localsplusnames = & importlib__bootstrap_external_toplevel_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_characters[32]),
+ .co_filename = & posixpath_toplevel_consts_11_filename._ascii.ob_base,
+ .co_name = & const_str_normcase._ascii.ob_base,
+ .co_qualname = & const_str_normcase._ascii.ob_base,
+ .co_linetable = & posixpath_toplevel_consts_12_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+posixpath_toplevel_consts_13_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & ntpath_toplevel_consts_16_consts_0._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[4];
+ }_object;
+ }
+posixpath_toplevel_consts_13_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_item = {
+ & const_str_os._ascii.ob_base,
+ & const_str_fspath._ascii.ob_base,
+ & const_str__get_sep._ascii.ob_base,
+ & const_str_startswith._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[40];
+ }
+posixpath_toplevel_consts_13_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 39,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xe4\x08\x0a\x8f\x09\x89\x09\x90\x21\x8b\x0c\x80\x41\xdc\x0a\x12\x90\x31\x8b\x2b\x80\x43\xd8\x0b\x0c\x8f\x3c\x89\x3c\x98\x03\xd3\x0b\x1c\xd0\x04\x1c",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+posixpath_toplevel_consts_13_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ &_Py_ID(s),
+ &_Py_ID(sep),
+ },
+ },
+};
+static
+ struct _PyCode_DEF(100)
+posixpath_toplevel_consts_13 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 50,
+ },
+ .co_consts = & posixpath_toplevel_consts_13_consts._object.ob_base.ob_base,
+ .co_names = & posixpath_toplevel_consts_13_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 5 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 3,
+ .co_firstlineno = 60,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 2,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 579,
+ .co_localsplusnames = & posixpath_toplevel_consts_13_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_14_consts_2_localspluskinds.ob_base.ob_base,
+ .co_filename = & posixpath_toplevel_consts_11_filename._ascii.ob_base,
+ .co_name = & const_str_isabs._ascii.ob_base,
+ .co_qualname = & const_str_isabs._ascii.ob_base,
+ .co_linetable = & posixpath_toplevel_consts_13_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x00\x74\x05\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x01\x7c\x00\x6a\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\xab\x01\x00\x00\x00\x00\x00\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[231];
+ }
+posixpath_toplevel_consts_14_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 230,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x4a\x6f\x69\x6e\x20\x74\x77\x6f\x20\x6f\x72\x20\x6d\x6f\x72\x65\x20\x70\x61\x74\x68\x6e\x61\x6d\x65\x20\x63\x6f\x6d\x70\x6f\x6e\x65\x6e\x74\x73\x2c\x20\x69\x6e\x73\x65\x72\x74\x69\x6e\x67\x20\x27\x2f\x27\x20\x61\x73\x20\x6e\x65\x65\x64\x65\x64\x2e\x0a\x20\x20\x20\x20\x49\x66\x20\x61\x6e\x79\x20\x63\x6f\x6d\x70\x6f\x6e\x65\x6e\x74\x20\x69\x73\x20\x61\x6e\x20\x61\x62\x73\x6f\x6c\x75\x74\x65\x20\x70\x61\x74\x68\x2c\x20\x61\x6c\x6c\x20\x70\x72\x65\x76\x69\x6f\x75\x73\x20\x70\x61\x74\x68\x20\x63\x6f\x6d\x70\x6f\x6e\x65\x6e\x74\x73\x0a\x20\x20\x20\x20\x77\x69\x6c\x6c\x20\x62\x65\x20\x64\x69\x73\x63\x61\x72\x64\x65\x64\x2e\x20\x20\x41\x6e\x20\x65\x6d\x70\x74\x79\x20\x6c\x61\x73\x74\x20\x70\x61\x72\x74\x20\x77\x69\x6c\x6c\x20\x72\x65\x73\x75\x6c\x74\x20\x69\x6e\x20\x61\x20\x70\x61\x74\x68\x20\x74\x68\x61\x74\x0a\x20\x20\x20\x20\x65\x6e\x64\x73\x20\x77\x69\x74\x68\x20\x61\x20\x73\x65\x70\x61\x72\x61\x74\x6f\x72\x2e",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[4];
+ }_object;
+ }
+posixpath_toplevel_consts_14_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_item = {
+ & posixpath_toplevel_consts_14_consts_0._ascii.ob_base,
+ Py_None,
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 0],
+ &_Py_ID(join),
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[11];
+ }_object;
+ }
+posixpath_toplevel_consts_14_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 11,
+ },
+ .ob_item = {
+ & const_str_os._ascii.ob_base,
+ & const_str_fspath._ascii.ob_base,
+ & const_str__get_sep._ascii.ob_base,
+ & const_str_map._ascii.ob_base,
+ & const_str_startswith._ascii.ob_base,
+ & const_str_endswith._ascii.ob_base,
+ & const_str_TypeError._ascii.ob_base,
+ & const_str_AttributeError._ascii.ob_base,
+ & const_str_BytesWarning._ascii.ob_base,
+ & const_str_genericpath._ascii.ob_base,
+ & const_str__check_arg_types._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[187];
+ }
+posixpath_toplevel_consts_14_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 186,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf4\x0a\x00\x09\x0b\x8f\x09\x89\x09\x90\x21\x8b\x0c\x80\x41\xdc\x0a\x12\x90\x31\x8b\x2b\x80\x43\xd8\x0b\x0c\x80\x44\xf0\x02\x0c\x05\x0e\xd9\x0f\x10\xd8\x0c\x10\x90\x12\x90\x21\x88\x48\x90\x73\x8a\x4e\xdc\x11\x14\x94\x52\x97\x59\x91\x59\xa0\x01\xd3\x11\x22\xf2\x00\x06\x09\x20\x88\x41\xd8\x0f\x10\x8f\x7c\x89\x7c\x98\x43\xd4\x0f\x20\xd8\x17\x18\x91\x04\xd9\x15\x19\x98\x54\x9f\x5d\x99\x5d\xa8\x33\xd4\x1d\x2f\xd8\x10\x14\x98\x01\x91\x09\x91\x04\xe0\x10\x14\x98\x03\x98\x61\x99\x07\x91\x0f\x91\x04\xf1\x0d\x06\x09\x20\xf0\x14\x00\x0c\x10\x80\x4b\xf8\xf4\x07\x00\x0d\x16\x94\x7e\xa4\x7c\xd0\x0b\x34\xf2\x00\x02\x05\x0e\xdc\x08\x13\xd7\x08\x24\xd1\x08\x24\xa0\x56\xa8\x51\xd0\x08\x33\xb0\x11\xd3\x08\x33\xd8\x08\x0d\xf0\x05\x02\x05\x0e\xfa",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[13];
+ }
+posixpath_toplevel_consts_14_exceptiontable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 12,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\xa4\x41\x1e\x42\x05\x00\xc2\x05\x2d\x42\x32\x03",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[5];
+ }_object;
+ }
+posixpath_toplevel_consts_14_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 5,
+ },
+ .ob_item = {
+ &_Py_ID(a),
+ &_Py_ID(p),
+ &_Py_ID(sep),
+ &_Py_ID(path),
+ &_Py_ID(b),
+ },
+ },
+};
+static
+ struct _PyCode_DEF(362)
+posixpath_toplevel_consts_14 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 181,
+ },
+ .co_consts = & posixpath_toplevel_consts_14_consts._object.ob_base.ob_base,
+ .co_names = & posixpath_toplevel_consts_14_names._object.ob_base.ob_base,
+ .co_exceptiontable = & posixpath_toplevel_consts_14_exceptiontable.ob_base.ob_base,
+ .co_flags = 7,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 10 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 5,
+ .co_firstlineno = 71,
+ .co_nlocalsplus = 5,
+ .co_nlocals = 5,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 580,
+ .co_localsplusnames = & posixpath_toplevel_consts_14_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_7_consts_5_localspluskinds.ob_base.ob_base,
+ .co_filename = & posixpath_toplevel_consts_11_filename._ascii.ob_base,
+ .co_name = &_Py_ID(join),
+ .co_qualname = &_Py_ID(join),
+ .co_linetable = & posixpath_toplevel_consts_14_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x00\x74\x05\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x02\x7c\x00\x7d\x03\x09\x00\x7c\x01\x73\x08\x7c\x03\x64\x01\x64\x02\x1a\x00\x7c\x02\x7a\x00\x00\x00\x01\x00\x74\x07\x00\x00\x00\x00\x00\x00\x00\x00\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\xab\x02\x00\x00\x00\x00\x00\x00\x44\x00\x5d\x37\x00\x00\x7d\x04\x7c\x04\x6a\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x02\xab\x01\x00\x00\x00\x00\x00\x00\x72\x03\x7c\x04\x7d\x03\x8c\x17\x7c\x03\x72\x11\x7c\x03\x6a\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x02\xab\x01\x00\x00\x00\x00\x00\x00\x72\x06\x7c\x03\x7c\x04\x7a\x0d\x00\x00\x7d\x03\x8c\x30\x7c\x03\x7c\x02\x7c\x04\x7a\x00\x00\x00\x7a\x0d\x00\x00\x7d\x03\x8c\x39\x04\x00\x09\x00\x7c\x03\x53\x00\x23\x00\x74\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x74\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x74\x10\x00\x00\x00\x00\x00\x00\x00\x00\x66\x03\x24\x00\x72\x19\x01\x00\x74\x13\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x14\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x03\x7c\x00\x67\x02\x7c\x01\xa2\x01\xad\x06\x8e\x00\x01\x00\x82\x00\x77\x00\x78\x03\x59\x00\x77\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[129];
+ }
+posixpath_toplevel_consts_15_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 128,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x53\x70\x6c\x69\x74\x20\x61\x20\x70\x61\x74\x68\x6e\x61\x6d\x65\x2e\x20\x20\x52\x65\x74\x75\x72\x6e\x73\x20\x74\x75\x70\x6c\x65\x20\x22\x28\x68\x65\x61\x64\x2c\x20\x74\x61\x69\x6c\x29\x22\x20\x77\x68\x65\x72\x65\x20\x22\x74\x61\x69\x6c\x22\x20\x69\x73\x0a\x20\x20\x20\x20\x65\x76\x65\x72\x79\x74\x68\x69\x6e\x67\x20\x61\x66\x74\x65\x72\x20\x74\x68\x65\x20\x66\x69\x6e\x61\x6c\x20\x73\x6c\x61\x73\x68\x2e\x20\x20\x45\x69\x74\x68\x65\x72\x20\x70\x61\x72\x74\x20\x6d\x61\x79\x20\x62\x65\x20\x65\x6d\x70\x74\x79\x2e",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+posixpath_toplevel_consts_15_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ & posixpath_toplevel_consts_15_consts_0._ascii.ob_base,
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 1],
+ Py_None,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[6];
+ }_object;
+ }
+posixpath_toplevel_consts_15_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 6,
+ },
+ .ob_item = {
+ & const_str_os._ascii.ob_base,
+ & const_str_fspath._ascii.ob_base,
+ & const_str__get_sep._ascii.ob_base,
+ & const_str_rfind._ascii.ob_base,
+ &_Py_ID(len),
+ & const_str_rstrip._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[108];
+ }
+posixpath_toplevel_consts_15_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 107,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf4\x06\x00\x09\x0b\x8f\x09\x89\x09\x90\x21\x8b\x0c\x80\x41\xdc\x0a\x12\x90\x31\x8b\x2b\x80\x43\xd8\x08\x09\x8f\x07\x89\x07\x90\x03\x8b\x0c\x90\x71\xd1\x08\x18\x80\x41\xd8\x11\x12\x90\x32\x90\x41\x90\x15\x98\x01\x98\x21\x98\x22\x98\x05\x88\x24\x80\x44\xd9\x07\x0b\x90\x04\x98\x03\x9c\x43\xa0\x04\x9b\x49\x99\x0d\xd2\x10\x25\xd8\x0f\x13\x8f\x7b\x89\x7b\x98\x33\xd3\x0f\x1f\x88\x04\xd8\x0b\x0f\x90\x14\x88\x3a\xd0\x04\x15",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[5];
+ }_object;
+ }
+posixpath_toplevel_consts_15_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 5,
+ },
+ .ob_item = {
+ &_Py_ID(p),
+ &_Py_ID(sep),
+ (PyObject *)&_Py_SINGLETON(strings).ascii[105],
+ & const_str_head._ascii.ob_base,
+ & const_str_tail._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(206)
+posixpath_toplevel_consts_15 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 103,
+ },
+ .co_consts = & posixpath_toplevel_consts_15_consts._object.ob_base.ob_base,
+ .co_names = & posixpath_toplevel_consts_15_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 10 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 5,
+ .co_firstlineno = 100,
+ .co_nlocalsplus = 5,
+ .co_nlocals = 5,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 581,
+ .co_localsplusnames = & posixpath_toplevel_consts_15_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_7_consts_5_localspluskinds.ob_base.ob_base,
+ .co_filename = & posixpath_toplevel_consts_11_filename._ascii.ob_base,
+ .co_name = & const_str_split._ascii.ob_base,
+ .co_qualname = & const_str_split._ascii.ob_base,
+ .co_linetable = & posixpath_toplevel_consts_15_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x00\x74\x05\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x01\x7c\x00\x6a\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\xab\x01\x00\x00\x00\x00\x00\x00\x64\x01\x7a\x00\x00\x00\x7d\x02\x7c\x00\x64\x02\x7c\x02\x1a\x00\x7c\x00\x7c\x02\x64\x02\x1a\x00\x7d\x04\x7d\x03\x7c\x03\x72\x22\x7c\x03\x7c\x01\x74\x09\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x03\xab\x01\x00\x00\x00\x00\x00\x00\x7a\x05\x00\x00\x6b\x37\x00\x00\x72\x11\x7c\x03\x6a\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x03\x7c\x03\x7c\x04\x66\x02\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[5];
+ }_object;
+ }
+posixpath_toplevel_consts_16_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 5,
+ },
+ .ob_item = {
+ Py_None,
+ (PyObject *)&_Py_SINGLETON(bytes_characters[47]),
+ (PyObject *)&_Py_SINGLETON(bytes_characters[46]),
+ (PyObject *)&_Py_SINGLETON(strings).ascii[47],
+ &_Py_STR(dot),
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[69];
+ }
+posixpath_toplevel_consts_16_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 68,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xdc\x08\x0a\x8f\x09\x89\x09\x90\x21\x8b\x0c\x80\x41\xdc\x07\x11\x90\x21\x94\x55\xd4\x07\x1b\xd8\x0e\x12\x88\x03\xd8\x11\x15\x89\x06\xe0\x0e\x11\x88\x03\xd8\x11\x14\x88\x06\xdc\x0b\x16\xd7\x0b\x20\xd1\x0b\x20\xa0\x11\xa0\x43\xa8\x14\xa8\x76\xd3\x0b\x36\xd0\x04\x36",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+posixpath_toplevel_consts_16_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ &_Py_ID(p),
+ &_Py_ID(sep),
+ & const_str_extsep._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(142)
+posixpath_toplevel_consts_16 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 71,
+ },
+ .co_consts = & posixpath_toplevel_consts_16_consts._object.ob_base.ob_base,
+ .co_names = & ntpath_toplevel_consts_21_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 9 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 6,
+ .co_firstlineno = 117,
+ .co_nlocalsplus = 3,
+ .co_nlocals = 3,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 582,
+ .co_localsplusnames = & posixpath_toplevel_consts_16_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_3_localspluskinds.ob_base.ob_base,
+ .co_filename = & posixpath_toplevel_consts_11_filename._ascii.ob_base,
+ .co_name = & const_str_splitext._ascii.ob_base,
+ .co_qualname = & const_str_splitext._ascii.ob_base,
+ .co_linetable = & posixpath_toplevel_consts_16_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x00\x74\x05\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x74\x06\x00\x00\x00\x00\x00\x00\x00\x00\xab\x02\x00\x00\x00\x00\x00\x00\x72\x05\x64\x01\x7d\x01\x64\x02\x7d\x02\x6e\x04\x64\x03\x7d\x01\x64\x04\x7d\x02\x74\x09\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x7c\x01\x64\x00\x7c\x02\xab\x04\x00\x00\x00\x00\x00\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[75];
+ }
+posixpath_toplevel_consts_17_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 74,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x53\x70\x6c\x69\x74\x20\x61\x20\x70\x61\x74\x68\x6e\x61\x6d\x65\x20\x69\x6e\x74\x6f\x20\x64\x72\x69\x76\x65\x20\x61\x6e\x64\x20\x70\x61\x74\x68\x2e\x20\x4f\x6e\x20\x50\x6f\x73\x69\x78\x2c\x20\x64\x72\x69\x76\x65\x20\x69\x73\x20\x61\x6c\x77\x61\x79\x73\x0a\x20\x20\x20\x20\x65\x6d\x70\x74\x79\x2e",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+posixpath_toplevel_consts_17_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ & posixpath_toplevel_consts_17_consts_0._ascii.ob_base,
+ Py_None,
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 0],
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[33];
+ }
+posixpath_toplevel_consts_17_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 32,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf4\x06\x00\x09\x0b\x8f\x09\x89\x09\x90\x21\x8b\x0c\x80\x41\xd8\x0b\x0c\x88\x52\x88\x61\x88\x35\x90\x21\x88\x38\x80\x4f",
+};
+static
+ struct _PyCode_DEF(58)
+posixpath_toplevel_consts_17 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 29,
+ },
+ .co_consts = & posixpath_toplevel_consts_17_consts._object.ob_base.ob_base,
+ .co_names = & ntpath_toplevel_consts_26_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 4 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 3,
+ .co_firstlineno = 131,
+ .co_nlocalsplus = 1,
+ .co_nlocals = 1,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 583,
+ .co_localsplusnames = & ntpath_toplevel_consts_21_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_characters[32]),
+ .co_filename = & posixpath_toplevel_consts_11_filename._ascii.ob_base,
+ .co_name = & const_str_splitdrive._ascii.ob_base,
+ .co_qualname = & const_str_splitdrive._ascii.ob_base,
+ .co_linetable = & posixpath_toplevel_consts_17_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x00\x7c\x00\x64\x01\x64\x02\x1a\x00\x7c\x00\x66\x02\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[422];
+ }
+posixpath_toplevel_consts_18_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 421,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x53\x70\x6c\x69\x74\x20\x61\x20\x70\x61\x74\x68\x6e\x61\x6d\x65\x20\x69\x6e\x74\x6f\x20\x64\x72\x69\x76\x65\x2c\x20\x72\x6f\x6f\x74\x20\x61\x6e\x64\x20\x74\x61\x69\x6c\x2e\x20\x4f\x6e\x20\x50\x6f\x73\x69\x78\x2c\x20\x64\x72\x69\x76\x65\x20\x69\x73\x20\x61\x6c\x77\x61\x79\x73\x0a\x20\x20\x20\x20\x65\x6d\x70\x74\x79\x3b\x20\x74\x68\x65\x20\x72\x6f\x6f\x74\x20\x6d\x61\x79\x20\x62\x65\x20\x65\x6d\x70\x74\x79\x2c\x20\x61\x20\x73\x69\x6e\x67\x6c\x65\x20\x73\x6c\x61\x73\x68\x2c\x20\x6f\x72\x20\x74\x77\x6f\x20\x73\x6c\x61\x73\x68\x65\x73\x2e\x20\x54\x68\x65\x20\x74\x61\x69\x6c\x0a\x20\x20\x20\x20\x63\x6f\x6e\x74\x61\x69\x6e\x73\x20\x61\x6e\x79\x74\x68\x69\x6e\x67\x20\x61\x66\x74\x65\x72\x20\x74\x68\x65\x20\x72\x6f\x6f\x74\x2e\x20\x46\x6f\x72\x20\x65\x78\x61\x6d\x70\x6c\x65\x3a\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x73\x70\x6c\x69\x74\x72\x6f\x6f\x74\x28\x27\x66\x6f\x6f\x2f\x62\x61\x72\x27\x29\x20\x3d\x3d\x20\x28\x27\x27\x2c\x20\x27\x27\x2c\x20\x27\x66\x6f\x6f\x2f\x62\x61\x72\x27\x29\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x73\x70\x6c\x69\x74\x72\x6f\x6f\x74\x28\x27\x2f\x66\x6f\x6f\x2f\x62\x61\x72\x27\x29\x20\x3d\x3d\x20\x28\x27\x27\x2c\x20\x27\x2f\x27\x2c\x20\x27\x66\x6f\x6f\x2f\x62\x61\x72\x27\x29\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x73\x70\x6c\x69\x74\x72\x6f\x6f\x74\x28\x27\x2f\x2f\x66\x6f\x6f\x2f\x62\x61\x72\x27\x29\x20\x3d\x3d\x20\x28\x27\x27\x2c\x20\x27\x2f\x2f\x27\x2c\x20\x27\x66\x6f\x6f\x2f\x62\x61\x72\x27\x29\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x73\x70\x6c\x69\x74\x72\x6f\x6f\x74\x28\x27\x2f\x2f\x2f\x66\x6f\x6f\x2f\x62\x61\x72\x27\x29\x20\x3d\x3d\x20\x28\x27\x27\x2c\x20\x27\x2f\x27\x2c\x20\x27\x2f\x2f\x66\x6f\x6f\x2f\x62\x61\x72\x27\x29\x0a\x20\x20\x20\x20",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[9];
+ }_object;
+ }
+posixpath_toplevel_consts_18_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 9,
+ },
+ .ob_item = {
+ & posixpath_toplevel_consts_18_consts_0._ascii.ob_base,
+ (PyObject *)&_Py_SINGLETON(bytes_characters[47]),
+ (PyObject *)&_Py_SINGLETON(bytes_empty),
+ (PyObject *)&_Py_SINGLETON(strings).ascii[47],
+ &_Py_STR(empty),
+ Py_None,
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 1],
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 2],
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 3],
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[4];
+ }_object;
+ }
+posixpath_toplevel_consts_18_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_item = {
+ & const_str_os._ascii.ob_base,
+ & const_str_fspath._ascii.ob_base,
+ &_Py_ID(isinstance),
+ &_Py_ID(bytes),
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[144];
+ }
+posixpath_toplevel_consts_18_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 143,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf4\x14\x00\x09\x0b\x8f\x09\x89\x09\x90\x21\x8b\x0c\x80\x41\xdc\x07\x11\x90\x21\x94\x55\xd4\x07\x1b\xd8\x0e\x12\x88\x03\xd8\x10\x13\x89\x05\xe0\x0e\x11\x88\x03\xd8\x10\x12\x88\x05\xd8\x07\x08\x88\x12\x88\x21\x80\x75\x90\x03\x82\x7c\xe0\x0f\x14\x90\x65\x98\x51\x88\x7f\xd0\x08\x1e\xd8\x09\x0a\x88\x31\x88\x51\x88\x16\x90\x33\x8a\x1d\x98\x21\x98\x41\x98\x61\x98\x26\xa0\x43\x9a\x2d\xe0\x0f\x14\x90\x63\x98\x31\x98\x51\x98\x52\x98\x35\xd0\x0f\x20\xd0\x08\x20\xf0\x08\x00\x10\x15\x90\x61\x98\x02\x98\x11\x90\x65\x98\x51\x98\x71\x98\x72\x98\x55\xd0\x0f\x22\xd0\x08\x22",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+posixpath_toplevel_consts_18_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ &_Py_ID(p),
+ &_Py_ID(sep),
+ & const_str_empty._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(190)
+posixpath_toplevel_consts_18 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 95,
+ },
+ .co_consts = & posixpath_toplevel_consts_18_consts._object.ob_base.ob_base,
+ .co_names = & posixpath_toplevel_consts_18_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 8 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 5,
+ .co_firstlineno = 138,
+ .co_nlocalsplus = 3,
+ .co_nlocals = 3,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 584,
+ .co_localsplusnames = & posixpath_toplevel_consts_18_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_3_localspluskinds.ob_base.ob_base,
+ .co_filename = & posixpath_toplevel_consts_11_filename._ascii.ob_base,
+ .co_name = & const_str_splitroot._ascii.ob_base,
+ .co_qualname = & const_str_splitroot._ascii.ob_base,
+ .co_linetable = & posixpath_toplevel_consts_18_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x00\x74\x05\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x74\x06\x00\x00\x00\x00\x00\x00\x00\x00\xab\x02\x00\x00\x00\x00\x00\x00\x72\x05\x64\x01\x7d\x01\x64\x02\x7d\x02\x6e\x04\x64\x03\x7d\x01\x64\x04\x7d\x02\x7c\x00\x64\x05\x64\x06\x1a\x00\x7c\x01\x6b\x37\x00\x00\x72\x05\x7c\x02\x7c\x02\x7c\x00\x66\x03\x53\x00\x7c\x00\x64\x06\x64\x07\x1a\x00\x7c\x01\x6b\x37\x00\x00\x73\x08\x7c\x00\x64\x07\x64\x08\x1a\x00\x7c\x01\x6b\x28\x00\x00\x72\x08\x7c\x02\x7c\x01\x7c\x00\x64\x06\x64\x05\x1a\x00\x66\x03\x53\x00\x7c\x02\x7c\x00\x64\x05\x64\x07\x1a\x00\x7c\x00\x64\x07\x64\x05\x1a\x00\x66\x03\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+posixpath_toplevel_consts_19_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ & ntpath_toplevel_consts_22_consts_0._ascii.ob_base,
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 1],
+ Py_None,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[4];
+ }_object;
+ }
+posixpath_toplevel_consts_19_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_item = {
+ & const_str_os._ascii.ob_base,
+ & const_str_fspath._ascii.ob_base,
+ & const_str__get_sep._ascii.ob_base,
+ & const_str_rfind._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[54];
+ }
+posixpath_toplevel_consts_19_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 53,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xe4\x08\x0a\x8f\x09\x89\x09\x90\x21\x8b\x0c\x80\x41\xdc\x0a\x12\x90\x31\x8b\x2b\x80\x43\xd8\x08\x09\x8f\x07\x89\x07\x90\x03\x8b\x0c\x90\x71\xd1\x08\x18\x80\x41\xd8\x0b\x0c\x88\x51\x88\x52\x88\x35\x80\x4c",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+posixpath_toplevel_consts_19_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ &_Py_ID(p),
+ &_Py_ID(sep),
+ (PyObject *)&_Py_SINGLETON(strings).ascii[105],
+ },
+ },
+};
+static
+ struct _PyCode_DEF(116)
+posixpath_toplevel_consts_19 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 58,
+ },
+ .co_consts = & posixpath_toplevel_consts_19_consts._object.ob_base.ob_base,
+ .co_names = & posixpath_toplevel_consts_19_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 6 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 3,
+ .co_firstlineno = 169,
+ .co_nlocalsplus = 3,
+ .co_nlocals = 3,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 585,
+ .co_localsplusnames = & posixpath_toplevel_consts_19_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_3_localspluskinds.ob_base.ob_base,
+ .co_filename = & posixpath_toplevel_consts_11_filename._ascii.ob_base,
+ .co_name = & const_str_basename._ascii.ob_base,
+ .co_qualname = & const_str_basename._ascii.ob_base,
+ .co_linetable = & posixpath_toplevel_consts_19_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x00\x74\x05\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x01\x7c\x00\x6a\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\xab\x01\x00\x00\x00\x00\x00\x00\x64\x01\x7a\x00\x00\x00\x7d\x02\x7c\x00\x7c\x02\x64\x02\x1a\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+posixpath_toplevel_consts_20_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ & ntpath_toplevel_consts_23_consts_0._ascii.ob_base,
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 1],
+ Py_None,
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[91];
+ }
+posixpath_toplevel_consts_20_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 90,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xe4\x08\x0a\x8f\x09\x89\x09\x90\x21\x8b\x0c\x80\x41\xdc\x0a\x12\x90\x31\x8b\x2b\x80\x43\xd8\x08\x09\x8f\x07\x89\x07\x90\x03\x8b\x0c\x90\x71\xd1\x08\x18\x80\x41\xd8\x0b\x0c\x88\x52\x88\x61\x88\x35\x80\x44\xd9\x07\x0b\x90\x04\x98\x03\x9c\x43\xa0\x04\x9b\x49\x99\x0d\xd2\x10\x25\xd8\x0f\x13\x8f\x7b\x89\x7b\x98\x33\xd3\x0f\x1f\x88\x04\xd8\x0b\x0f\x80\x4b",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[4];
+ }_object;
+ }
+posixpath_toplevel_consts_20_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_item = {
+ &_Py_ID(p),
+ &_Py_ID(sep),
+ (PyObject *)&_Py_SINGLETON(strings).ascii[105],
+ & const_str_head._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(192)
+posixpath_toplevel_consts_20 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 96,
+ },
+ .co_consts = & posixpath_toplevel_consts_20_consts._object.ob_base.ob_base,
+ .co_names = & posixpath_toplevel_consts_15_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 9 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 5,
+ .co_firstlineno = 179,
+ .co_nlocalsplus = 4,
+ .co_nlocals = 4,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 586,
+ .co_localsplusnames = & posixpath_toplevel_consts_20_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_7_consts_3_localspluskinds.ob_base.ob_base,
+ .co_filename = & posixpath_toplevel_consts_11_filename._ascii.ob_base,
+ .co_name = & const_str_dirname._ascii.ob_base,
+ .co_qualname = & const_str_dirname._ascii.ob_base,
+ .co_linetable = & posixpath_toplevel_consts_20_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x00\x74\x05\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x01\x7c\x00\x6a\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\xab\x01\x00\x00\x00\x00\x00\x00\x64\x01\x7a\x00\x00\x00\x7d\x02\x7c\x00\x64\x02\x7c\x02\x1a\x00\x7d\x03\x7c\x03\x72\x22\x7c\x03\x7c\x01\x74\x09\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x03\xab\x01\x00\x00\x00\x00\x00\x00\x7a\x05\x00\x00\x6b\x37\x00\x00\x72\x11\x7c\x03\x6a\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x03\x7c\x03\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[82];
+ }
+posixpath_toplevel_consts_21_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 81,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x54\x65\x73\x74\x20\x77\x68\x65\x74\x68\x65\x72\x20\x61\x20\x70\x61\x74\x68\x20\x69\x73\x20\x61\x20\x6a\x75\x6e\x63\x74\x69\x6f\x6e\x0a\x20\x20\x20\x20\x4a\x75\x6e\x63\x74\x69\x6f\x6e\x73\x20\x61\x72\x65\x20\x6e\x6f\x74\x20\x61\x20\x70\x61\x72\x74\x20\x6f\x66\x20\x70\x6f\x73\x69\x78\x20\x73\x65\x6d\x61\x6e\x74\x69\x63\x73",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+posixpath_toplevel_consts_21_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & posixpath_toplevel_consts_21_consts_0._ascii.ob_base,
+ Py_False,
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[19];
+ }
+posixpath_toplevel_consts_21_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 18,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf4\x06\x00\x05\x07\x87\x49\x81\x49\x88\x64\x84\x4f\xd8\x0b\x10",
+};
+static
+ struct _PyCode_DEF(46)
+posixpath_toplevel_consts_21 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 23,
+ },
+ .co_consts = & posixpath_toplevel_consts_21_consts._object.ob_base.ob_base,
+ .co_names = & ntpath_toplevel_consts_26_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 4 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 3,
+ .co_firstlineno = 192,
+ .co_nlocalsplus = 1,
+ .co_nlocals = 1,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 587,
+ .co_localsplusnames = & importlib__bootstrap_external_toplevel_consts_18_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_characters[32]),
+ .co_filename = & posixpath_toplevel_consts_11_filename._ascii.ob_base,
+ .co_name = & const_str_isjunction._ascii.ob_base,
+ .co_qualname = & const_str_isjunction._ascii.ob_base,
+ .co_linetable = & posixpath_toplevel_consts_21_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x79\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[49];
+ }
+posixpath_toplevel_consts_22_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 48,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf0\x04\x03\x05\x15\xdc\x08\x0a\x8f\x08\x89\x08\x90\x14\x8c\x0e\xf0\x06\x00\x0c\x10\xf8\xf4\x05\x00\x0d\x14\x94\x5a\xd0\x0b\x20\xf2\x00\x01\x05\x15\xd9\x0f\x14\xf0\x03\x01\x05\x15\xfa",
+};
+static
+ struct _PyCode_DEF(90)
+posixpath_toplevel_consts_22 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 45,
+ },
+ .co_consts = & ntpath_toplevel_consts_27_consts._object.ob_base.ob_base,
+ .co_names = & ntpath_toplevel_consts_27_names._object.ob_base.ob_base,
+ .co_exceptiontable = & genericpath_toplevel_consts_4_exceptiontable.ob_base.ob_base,
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 5 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 201,
+ .co_nlocalsplus = 1,
+ .co_nlocals = 1,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 588,
+ .co_localsplusnames = & importlib__bootstrap_external_toplevel_consts_18_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_characters[32]),
+ .co_filename = & posixpath_toplevel_consts_11_filename._ascii.ob_base,
+ .co_name = & const_str_lexists._ascii.ob_base,
+ .co_qualname = & const_str_lexists._ascii.ob_base,
+ .co_linetable = & posixpath_toplevel_consts_22_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x09\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x79\x02\x23\x00\x74\x04\x00\x00\x00\x00\x00\x00\x00\x00\x74\x06\x00\x00\x00\x00\x00\x00\x00\x00\x66\x02\x24\x00\x72\x03\x01\x00\x59\x00\x79\x01\x77\x00\x78\x03\x59\x00\x77\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[37];
+ }
+posixpath_toplevel_consts_23_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 36,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Test whether a path is a mount point",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[5];
+ }_object;
+ }
+posixpath_toplevel_consts_23_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 5,
+ },
+ .ob_item = {
+ & posixpath_toplevel_consts_23_consts_0._ascii.ob_base,
+ Py_False,
+ & ntpath_toplevel_consts_34_consts_4.ob_base.ob_base,
+ & ntpath_toplevel_consts_2._ascii.ob_base,
+ Py_True,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[14];
+ }_object;
+ }
+posixpath_toplevel_consts_23_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 14,
+ },
+ .ob_item = {
+ & const_str_os._ascii.ob_base,
+ & const_str_lstat._ascii.ob_base,
+ & const_str_stat._ascii.ob_base,
+ & const_str_S_ISLNK._ascii.ob_base,
+ & const_str_st_mode._ascii.ob_base,
+ & const_str_OSError._ascii.ob_base,
+ & const_str_ValueError._ascii.ob_base,
+ & const_str_fspath._ascii.ob_base,
+ &_Py_ID(isinstance),
+ &_Py_ID(bytes),
+ &_Py_ID(join),
+ & const_str_realpath._ascii.ob_base,
+ & const_str_st_dev._ascii.ob_base,
+ & const_str_st_ino._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[228];
+ }
+posixpath_toplevel_consts_23_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 227,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf0\x04\x08\x05\x19\xdc\x0d\x0f\x8f\x58\x89\x58\x90\x64\x8b\x5e\x88\x02\xf4\x0c\x00\x0c\x10\x8f\x3c\x89\x3c\x98\x02\x9f\x0a\x99\x0a\xd4\x0b\x23\xd8\x13\x18\xe4\x0b\x0d\x8f\x39\x89\x39\x90\x54\x8b\x3f\x80\x44\xdc\x07\x11\x90\x24\x9c\x05\xd4\x07\x1e\xdc\x11\x15\x90\x64\x98\x45\xd3\x11\x22\x89\x06\xe4\x11\x15\x90\x64\x98\x44\xd3\x11\x21\x88\x06\xdc\x0d\x15\x90\x66\xd3\x0d\x1d\x80\x46\xf0\x02\x03\x05\x15\xdc\x0d\x0f\x8f\x58\x89\x58\x90\x66\xd3\x0d\x1d\x88\x02\xf0\x08\x00\x0c\x0e\x8f\x39\x89\x39\x80\x44\xd8\x0b\x0d\x8f\x39\x89\x39\x80\x44\xd8\x07\x0b\x88\x74\x82\x7c\xd8\x0f\x13\xd8\x0b\x0d\x8f\x39\x89\x39\x80\x44\xd8\x0b\x0d\x8f\x39\x89\x39\x80\x44\xd8\x07\x0b\x88\x74\x82\x7c\xd8\x0f\x13\xd8\x0b\x10\xf8\xf4\x37\x00\x0d\x14\x94\x5a\xd0\x0b\x20\xf2\x00\x02\x05\x15\xe1\x0f\x14\xf0\x05\x02\x05\x15\xfb\xf4\x20\x00\x0d\x14\x94\x5a\xd0\x0b\x20\xf2\x00\x01\x05\x15\xd9\x0f\x14\xf0\x03\x01\x05\x15\xfa",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[36];
+ }
+posixpath_toplevel_consts_23_exceptiontable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 35,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x82\x15\x43\x13\x00\xc2\x01\x15\x43\x28\x00\xc3\x13\x0f\x43\x25\x03\xc3\x24\x01\x43\x25\x03\xc3\x28\x0f\x43\x3a\x03\xc3\x39\x01\x43\x3a\x03",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[5];
+ }
+const_str_dev1 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 4,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "dev1",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[5];
+ }
+const_str_dev2 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 4,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "dev2",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[5];
+ }
+const_str_ino1 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 4,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "ino1",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[5];
+ }
+const_str_ino2 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 4,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "ino2",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[8];
+ }_object;
+ }
+posixpath_toplevel_consts_23_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 8,
+ },
+ .ob_item = {
+ &_Py_ID(path),
+ & const_str_s1._ascii.ob_base,
+ &_Py_ID(parent),
+ & const_str_s2._ascii.ob_base,
+ & const_str_dev1._ascii.ob_base,
+ & const_str_dev2._ascii.ob_base,
+ & const_str_ino1._ascii.ob_base,
+ & const_str_ino2._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(506)
+posixpath_toplevel_consts_23 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 253,
+ },
+ .co_consts = & posixpath_toplevel_consts_23_consts._object.ob_base.ob_base,
+ .co_names = & posixpath_toplevel_consts_23_names._object.ob_base.ob_base,
+ .co_exceptiontable = & posixpath_toplevel_consts_23_exceptiontable.ob_base.ob_base,
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 12 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 213,
+ .co_nlocalsplus = 8,
+ .co_nlocals = 8,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 589,
+ .co_localsplusnames = & posixpath_toplevel_consts_23_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_13_localspluskinds.ob_base.ob_base,
+ .co_filename = & posixpath_toplevel_consts_11_filename._ascii.ob_base,
+ .co_name = & const_str_ismount._ascii.ob_base,
+ .co_qualname = & const_str_ismount._ascii.ob_base,
+ .co_linetable = & posixpath_toplevel_consts_23_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x09\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x01\x74\x05\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x6a\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x72\x01\x79\x01\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x00\x74\x11\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x74\x12\x00\x00\x00\x00\x00\x00\x00\x00\xab\x02\x00\x00\x00\x00\x00\x00\x72\x0d\x74\x15\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x64\x02\xab\x02\x00\x00\x00\x00\x00\x00\x7d\x02\x6e\x0c\x74\x15\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x64\x03\xab\x02\x00\x00\x00\x00\x00\x00\x7d\x02\x74\x17\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x02\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x02\x09\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x02\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x03\x7c\x01\x6a\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7d\x04\x7c\x03\x6a\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7d\x05\x7c\x04\x7c\x05\x6b\x37\x00\x00\x72\x01\x79\x04\x7c\x01\x6a\x1a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7d\x06\x7c\x03\x6a\x1a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7d\x07\x7c\x06\x7c\x07\x6b\x28\x00\x00\x72\x01\x79\x04\x79\x01\x23\x00\x74\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x74\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x66\x02\x24\x00\x72\x03\x01\x00\x59\x00\x79\x01\x77\x00\x78\x03\x59\x00\x77\x01\x23\x00\x74\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x74\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x66\x02\x24\x00\x72\x03\x01\x00\x59\x00\x79\x01\x77\x00\x78\x03\x59\x00\x77\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[80];
+ }
+posixpath_toplevel_consts_24_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 79,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x45\x78\x70\x61\x6e\x64\x20\x7e\x20\x61\x6e\x64\x20\x7e\x75\x73\x65\x72\x20\x63\x6f\x6e\x73\x74\x72\x75\x63\x74\x69\x6f\x6e\x73\x2e\x20\x20\x49\x66\x20\x75\x73\x65\x72\x20\x6f\x72\x20\x24\x48\x4f\x4d\x45\x20\x69\x73\x20\x75\x6e\x6b\x6e\x6f\x77\x6e\x2c\x0a\x20\x20\x20\x20\x64\x6f\x20\x6e\x6f\x74\x68\x69\x6e\x67\x2e",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[5];
+ }
+const_str_HOME = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 4,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "HOME",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[6];
+ }
+const_str_ASCII = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 5,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "ASCII",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[8];
+ }
+const_str_vxworks = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 7,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "vxworks",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[11];
+ }_object;
+ }
+posixpath_toplevel_consts_24_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 11,
+ },
+ .ob_item = {
+ & posixpath_toplevel_consts_24_consts_0._ascii.ob_base,
+ (PyObject *)&_Py_SINGLETON(bytes_characters[126]),
+ (PyObject *)&_Py_SINGLETON(strings).ascii[126],
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 1],
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 0],
+ & const_str_HOME._ascii.ob_base,
+ Py_None,
+ & const_str_ASCII._ascii.ob_base,
+ & const_str_vxworks._ascii.ob_base,
+ (PyObject *)&_Py_SINGLETON(bytes_characters[47]),
+ (PyObject *)&_Py_SINGLETON(strings).ascii[47],
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[4];
+ }
+const_str_pwd = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 3,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "pwd",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[9];
+ }
+const_str_getpwuid = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 8,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "getpwuid",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[7];
+ }
+const_str_getuid = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 6,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "getuid",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[7];
+ }
+const_str_pw_dir = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 6,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "pw_dir",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[9];
+ }
+const_str_getpwnam = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 8,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "getpwnam",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[21];
+ }_object;
+ }
+posixpath_toplevel_consts_24_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 21,
+ },
+ .ob_item = {
+ & const_str_os._ascii.ob_base,
+ & const_str_fspath._ascii.ob_base,
+ &_Py_ID(isinstance),
+ &_Py_ID(bytes),
+ & const_str_startswith._ascii.ob_base,
+ & const_str__get_sep._ascii.ob_base,
+ & const_str_find._ascii.ob_base,
+ &_Py_ID(len),
+ & const_str_environ._ascii.ob_base,
+ & const_str_pwd._ascii.ob_base,
+ & const_str_ImportError._ascii.ob_base,
+ & const_str_getpwuid._ascii.ob_base,
+ & const_str_getuid._ascii.ob_base,
+ & const_str_pw_dir._ascii.ob_base,
+ & const_str_KeyError._ascii.ob_base,
+ & const_str_str._ascii.ob_base,
+ & const_str_getpwnam._ascii.ob_base,
+ & const_str_sys._ascii.ob_base,
+ & const_str_platform._ascii.ob_base,
+ & const_str_fsencode._ascii.ob_base,
+ & const_str_rstrip._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[425];
+ }
+posixpath_toplevel_consts_24_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 424,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf4\x06\x00\x0c\x0e\x8f\x39\x89\x39\x90\x54\x8b\x3f\x80\x44\xdc\x07\x11\x90\x24\x9c\x05\xd4\x07\x1e\xd8\x10\x14\x89\x05\xe0\x10\x13\x88\x05\xd8\x0b\x0f\x8f\x3f\x89\x3f\x98\x35\xd4\x0b\x21\xd8\x0f\x13\x88\x0b\xdc\x0a\x12\x90\x34\x8b\x2e\x80\x43\xd8\x08\x0c\x8f\x09\x89\x09\x90\x23\x90\x71\xd3\x08\x19\x80\x41\xd8\x07\x08\x88\x31\x82\x75\xdc\x0c\x0f\x90\x04\x8b\x49\x88\x01\xd8\x07\x08\x88\x41\x82\x76\xd8\x0b\x11\x9c\x12\x9f\x1a\x99\x1a\xd1\x0b\x23\xf0\x02\x04\x0d\x1c\xdb\x10\x1a\xf0\x08\x05\x0d\x1c\xd8\x1b\x1e\x9f\x3c\x99\x3c\xac\x02\xaf\x09\xa9\x09\xab\x0b\xd3\x1b\x34\xd7\x1b\x3b\xd1\x1b\x3b\x91\x08\xf4\x0c\x00\x18\x1a\x97\x7a\x91\x7a\xa0\x26\xd1\x17\x29\x89\x48\xf0\x04\x04\x09\x18\xdb\x0c\x16\xf0\x08\x00\x10\x14\x90\x41\x90\x61\x88\x79\x88\x04\xdc\x0b\x15\x90\x64\x9c\x45\xd4\x0b\x22\xdc\x13\x16\x90\x74\x98\x57\xd3\x13\x25\x88\x44\xf0\x02\x05\x09\x18\xd8\x14\x17\x97\x4c\x91\x4c\xa0\x14\xd3\x14\x26\x88\x45\xf0\x0a\x00\x14\x19\x97\x3c\x91\x3c\x88\x08\xe0\x07\x0f\xd0\x07\x17\x9c\x43\x9f\x4c\x99\x4c\xa8\x49\xd2\x1c\x35\xd8\x0f\x13\x88\x0b\xdc\x07\x11\x90\x24\x9c\x05\xd4\x07\x1e\xdc\x13\x15\x97\x3b\x91\x3b\x98\x78\xd3\x13\x28\x88\x08\xd8\x0f\x13\x89\x04\xe0\x0f\x12\x88\x04\xd8\x0f\x17\x8f\x7f\x89\x7f\x98\x74\xd3\x0f\x24\x80\x48\xd8\x0c\x14\x90\x74\x98\x41\x98\x42\x90\x78\xd1\x0c\x1f\xd2\x0b\x28\xa0\x44\xd0\x04\x28\xf8\xf4\x49\x01\x00\x14\x1f\xf2\x00\x02\x0d\x1c\xe0\x17\x1b\x92\x0b\xf0\x05\x02\x0d\x1c\xfb\xf4\x0a\x00\x14\x1c\xf2\x00\x03\x0d\x1c\xf0\x06\x00\x18\x1c\x92\x0b\xf0\x07\x03\x0d\x1c\xfb\xf4\x12\x00\x10\x1b\xf2\x00\x02\x09\x18\xe0\x13\x17\x8a\x4b\xf0\x05\x02\x09\x18\xfb\xf4\x10\x00\x10\x18\xf2\x00\x03\x09\x18\xf0\x06\x00\x14\x18\x8a\x4b\xf0\x07\x03\x09\x18\xfa",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[73];
+ }
+posixpath_toplevel_consts_24_exceptiontable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 72,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\xc2\x03\x04\x45\x2c\x00\xc2\x08\x2d\x45\x3d\x00\xc3\x0b\x04\x46\x0e\x00\xc3\x31\x11\x46\x1f\x00\xc5\x2c\x0b\x45\x3a\x03\xc5\x39\x01\x45\x3a\x03\xc5\x3d\x0b\x46\x0b\x03\xc6\x0a\x01\x46\x0b\x03\xc6\x0e\x0b\x46\x1c\x03\xc6\x1b\x01\x46\x1c\x03\xc6\x1f\x0b\x46\x2d\x03\xc6\x2c\x01\x46\x2d\x03",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[6];
+ }
+const_str_pwent = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 5,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "pwent",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[9];
+ }_object;
+ }
+posixpath_toplevel_consts_24_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 9,
+ },
+ .ob_item = {
+ &_Py_ID(path),
+ & const_str_tilde._ascii.ob_base,
+ &_Py_ID(sep),
+ (PyObject *)&_Py_SINGLETON(strings).ascii[105],
+ & const_str_pwd._ascii.ob_base,
+ & const_str_userhome._ascii.ob_base,
+ &_Py_ID(name),
+ & const_str_pwent._ascii.ob_base,
+ & const_str_root._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(864)
+posixpath_toplevel_consts_24 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 432,
+ },
+ .co_consts = & posixpath_toplevel_consts_24_consts._object.ob_base.ob_base,
+ .co_names = & posixpath_toplevel_consts_24_names._object.ob_base.ob_base,
+ .co_exceptiontable = & posixpath_toplevel_consts_24_exceptiontable.ob_base.ob_base,
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 13 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 256,
+ .co_nlocalsplus = 9,
+ .co_nlocals = 9,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 590,
+ .co_localsplusnames = & posixpath_toplevel_consts_24_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_61_localspluskinds.ob_base.ob_base,
+ .co_filename = & posixpath_toplevel_consts_11_filename._ascii.ob_base,
+ .co_name = & const_str_expanduser._ascii.ob_base,
+ .co_qualname = & const_str_expanduser._ascii.ob_base,
+ .co_linetable = & posixpath_toplevel_consts_24_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x00\x74\x05\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x74\x06\x00\x00\x00\x00\x00\x00\x00\x00\xab\x02\x00\x00\x00\x00\x00\x00\x72\x03\x64\x01\x7d\x01\x6e\x02\x64\x02\x7d\x01\x7c\x00\x6a\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\xab\x01\x00\x00\x00\x00\x00\x00\x73\x02\x7c\x00\x53\x00\x74\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x02\x7c\x00\x6a\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x02\x64\x03\xab\x02\x00\x00\x00\x00\x00\x00\x7d\x03\x7c\x03\x64\x04\x6b\x02\x00\x00\x72\x0b\x74\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x03\x7c\x03\x64\x03\x6b\x28\x00\x00\x72\x5a\x64\x05\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x76\x01\x72\x34\x09\x00\x64\x04\x64\x06\x6c\x09\x7d\x04\x09\x00\x7c\x04\x6a\x17\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x6a\x1a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7d\x05\x6e\x58\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x05\x19\x00\x00\x00\x7d\x05\x6e\x44\x09\x00\x64\x04\x64\x06\x6c\x09\x7d\x04\x7c\x00\x64\x03\x7c\x03\x1a\x00\x7d\x06\x74\x05\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x06\x74\x06\x00\x00\x00\x00\x00\x00\x00\x00\xab\x02\x00\x00\x00\x00\x00\x00\x72\x0c\x74\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x06\x64\x07\xab\x02\x00\x00\x00\x00\x00\x00\x7d\x06\x09\x00\x7c\x04\x6a\x21\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x06\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x07\x7c\x07\x6a\x1a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7d\x05\x7c\x05\x80\x15\x74\x22\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x24\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x08\x6b\x28\x00\x00\x72\x02\x7c\x00\x53\x00\x74\x05\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x74\x06\x00\x00\x00\x00\x00\x00\x00\x00\xab\x02\x00\x00\x00\x00\x00\x00\x72\x18\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x05\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x05\x64\x09\x7d\x08\x6e\x02\x64\x0a\x7d\x08\x7c\x05\x6a\x29\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x08\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x05\x7c\x05\x7c\x00\x7c\x03\x64\x06\x1a\x00\x7a\x00\x00\x00\x78\x01\x73\x02\x01\x00\x7c\x08\x53\x00\x23\x00\x74\x14\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x72\x05\x01\x00\x7c\x00\x63\x02\x59\x00\x53\x00\x77\x00\x78\x03\x59\x00\x77\x01\x23\x00\x74\x1c\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x72\x05\x01\x00\x7c\x00\x63\x02\x59\x00\x53\x00\x77\x00\x78\x03\x59\x00\x77\x01\x23\x00\x74\x14\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x72\x05\x01\x00\x7c\x00\x63\x02\x59\x00\x53\x00\x77\x00\x78\x03\x59\x00\x77\x01\x23\x00\x74\x1c\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x72\x05\x01\x00\x7c\x00\x63\x02\x59\x00\x53\x00\x77\x00\x78\x03\x59\x00\x77\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[91];
+ }
+posixpath_toplevel_consts_25_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 90,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x45\x78\x70\x61\x6e\x64\x20\x73\x68\x65\x6c\x6c\x20\x76\x61\x72\x69\x61\x62\x6c\x65\x73\x20\x6f\x66\x20\x66\x6f\x72\x6d\x20\x24\x76\x61\x72\x20\x61\x6e\x64\x20\x24\x7b\x76\x61\x72\x7d\x2e\x20\x20\x55\x6e\x6b\x6e\x6f\x77\x6e\x20\x76\x61\x72\x69\x61\x62\x6c\x65\x73\x0a\x20\x20\x20\x20\x61\x72\x65\x20\x6c\x65\x66\x74\x20\x75\x6e\x63\x68\x61\x6e\x67\x65\x64\x2e",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[18];
+ }
+posixpath_toplevel_consts_25_consts_4 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 17,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\\$(\\w+|\\{[^}]*\\})",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[18];
+ }
+posixpath_toplevel_consts_25_consts_9 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 17,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\\$(\\w+|\\{[^}]*\\})",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[14];
+ }_object;
+ }
+posixpath_toplevel_consts_25_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 14,
+ },
+ .ob_item = {
+ & posixpath_toplevel_consts_25_consts_0._ascii.ob_base,
+ (PyObject *)&_Py_SINGLETON(bytes_characters[36]),
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 0],
+ Py_None,
+ & posixpath_toplevel_consts_25_consts_4.ob_base.ob_base,
+ (PyObject *)&_Py_SINGLETON(bytes_characters[123]),
+ (PyObject *)&_Py_SINGLETON(bytes_characters[125]),
+ & const_str_environb._ascii.ob_base,
+ (PyObject *)&_Py_SINGLETON(strings).ascii[36],
+ & posixpath_toplevel_consts_25_consts_9._ascii.ob_base,
+ &_Py_STR(open_br),
+ &_Py_STR(close_br),
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 1],
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + -1],
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[10];
+ }
+const_str__varprogb = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 9,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_varprogb",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[3];
+ }
+const_str_re = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 2,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "re",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[9];
+ }
+const_str__varprog = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 8,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_varprog",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[5];
+ }
+const_str_span = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 4,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "span",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[6];
+ }
+const_str_group = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 5,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "group",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[20];
+ }_object;
+ }
+posixpath_toplevel_consts_25_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 20,
+ },
+ .ob_item = {
+ & const_str_os._ascii.ob_base,
+ & const_str_fspath._ascii.ob_base,
+ &_Py_ID(isinstance),
+ &_Py_ID(bytes),
+ & const_str__varprogb._ascii.ob_base,
+ & const_str_re._ascii.ob_base,
+ & const_str_compile._ascii.ob_base,
+ & const_str_ASCII._ascii.ob_base,
+ & const_str_search._ascii.ob_base,
+ &_Py_ID(getattr),
+ & const_str__varprog._ascii.ob_base,
+ & const_str_environ._ascii.ob_base,
+ & const_str_span._ascii.ob_base,
+ & const_str_group._ascii.ob_base,
+ & const_str_startswith._ascii.ob_base,
+ & const_str_endswith._ascii.ob_base,
+ & const_str_fsencode._ascii.ob_base,
+ & const_str_fsdecode._ascii.ob_base,
+ &_Py_ID(len),
+ & const_str_KeyError._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[393];
+ }
+posixpath_toplevel_consts_25_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 392,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf4\x06\x00\x0c\x0e\x8f\x39\x89\x39\x90\x54\x8b\x3f\x80\x44\xe4\x07\x11\x90\x24\x9c\x05\xd4\x07\x1e\xd8\x0b\x0f\x90\x74\xd1\x0b\x1b\xd8\x13\x17\x88\x4b\xdd\x0f\x18\xdb\x0c\x15\xd8\x18\x1a\x9f\x0a\x99\x0a\xd0\x23\x38\xb8\x22\xbf\x28\xb9\x28\xd3\x18\x43\x88\x49\xdc\x11\x1a\xd7\x11\x21\xd1\x11\x21\x88\x06\xd8\x10\x14\x88\x05\xd8\x0e\x12\x88\x03\xdc\x12\x19\x9c\x22\x98\x6a\xa8\x24\xd3\x12\x2f\x89\x07\xe0\x0b\x0e\x90\x64\x89\x3f\xd8\x13\x17\x88\x4b\xdd\x0f\x17\xdb\x0c\x15\xd8\x17\x19\x97\x7a\x91\x7a\xd0\x22\x36\xb8\x02\xbf\x08\xb9\x08\xd3\x17\x41\x88\x48\xdc\x11\x19\x97\x1f\x91\x1f\x88\x06\xd8\x10\x13\x88\x05\xd8\x0e\x11\x88\x03\xdc\x12\x14\x97\x2a\x91\x2a\x88\x07\xd8\x08\x09\x80\x41\xd8\x0a\x0e\xd9\x0c\x12\x90\x34\x98\x11\x8b\x4f\x88\x01\xd9\x0f\x10\xd8\x0c\x11\xf0\x22\x00\x0c\x10\x80\x4b\xf0\x21\x00\x10\x11\x8f\x76\x89\x76\x90\x61\x8b\x79\x89\x04\x88\x01\x88\x31\xd8\x0f\x10\x8f\x77\x89\x77\x90\x71\x8b\x7a\x88\x04\xd8\x0b\x0f\x8f\x3f\x89\x3f\x98\x35\xd4\x0b\x21\xa0\x64\xa7\x6d\xa1\x6d\xb0\x43\xd4\x26\x38\xd8\x13\x17\x98\x01\x98\x22\x90\x3a\x88\x44\xf0\x02\x0b\x09\x19\xd8\x0f\x16\x88\x7f\xdc\x18\x1a\x9f\x0b\x99\x0b\xa4\x42\xa7\x4a\xa1\x4a\xac\x72\xaf\x7b\xa9\x7b\xb8\x34\xd3\x2f\x40\xd1\x24\x41\xd3\x18\x42\x91\x05\xe0\x18\x1f\xa0\x04\x99\x0d\x90\x05\xf0\x08\x00\x14\x18\x98\x01\x98\x02\x90\x38\x88\x44\xd8\x13\x17\x98\x02\x98\x11\x90\x38\x98\x65\xd1\x13\x23\x88\x44\xdc\x10\x13\x90\x44\x93\x09\x88\x41\xd8\x0c\x10\x90\x44\x89\x4c\x88\x44\xf0\x27\x00\x0b\x0f\xf8\xf4\x1a\x00\x10\x18\xf2\x00\x01\x09\x12\xd8\x10\x11\x8a\x41\xf0\x03\x01\x09\x12\xfa",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[20];
+ }
+posixpath_toplevel_consts_25_exceptiontable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 19,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\xc4\x26\x41\x01\x46\x05\x00\xc6\x05\x0b\x46\x13\x03\xc6\x12\x01\x46\x13\x03",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[12];
+ }_object;
+ }
+posixpath_toplevel_consts_25_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 12,
+ },
+ .ob_item = {
+ &_Py_ID(path),
+ & const_str_re._ascii.ob_base,
+ & const_str_search._ascii.ob_base,
+ &_Py_ID(start),
+ &_Py_ID(end),
+ & const_str_environ._ascii.ob_base,
+ (PyObject *)&_Py_SINGLETON(strings).ascii[105],
+ (PyObject *)&_Py_SINGLETON(strings).ascii[109],
+ (PyObject *)&_Py_SINGLETON(strings).ascii[106],
+ &_Py_ID(name),
+ &_Py_ID(value),
+ & const_str_tail._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(812)
+posixpath_toplevel_consts_25 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 406,
+ },
+ .co_consts = & posixpath_toplevel_consts_25_consts._object.ob_base.ob_base,
+ .co_names = & posixpath_toplevel_consts_25_names._object.ob_base.ob_base,
+ .co_exceptiontable = & posixpath_toplevel_consts_25_exceptiontable.ob_base.ob_base,
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 18 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 6,
+ .co_firstlineno = 320,
+ .co_nlocalsplus = 12,
+ .co_nlocals = 12,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 591,
+ .co_localsplusnames = & posixpath_toplevel_consts_25_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_external_toplevel_consts_36_localspluskinds.ob_base.ob_base,
+ .co_filename = & posixpath_toplevel_consts_11_filename._ascii.ob_base,
+ .co_name = & const_str_expandvars._ascii.ob_base,
+ .co_qualname = & const_str_expandvars._ascii.ob_base,
+ .co_linetable = & posixpath_toplevel_consts_25_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x00\x74\x05\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x74\x06\x00\x00\x00\x00\x00\x00\x00\x00\xab\x02\x00\x00\x00\x00\x00\x00\x72\x52\x64\x01\x7c\x00\x76\x01\x72\x02\x7c\x00\x53\x00\x74\x08\x00\x00\x00\x00\x00\x00\x00\x00\x73\x20\x64\x02\x64\x03\x6c\x05\x7d\x01\x7c\x01\x6a\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x04\x7c\x01\x6a\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x02\x00\x00\x00\x00\x00\x00\x61\x04\x74\x08\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7d\x02\x64\x05\x7d\x03\x64\x06\x7d\x04\x74\x13\x00\x00\x00\x00\x00\x00\x00\x00\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x07\x64\x03\xab\x03\x00\x00\x00\x00\x00\x00\x7d\x05\x6e\x50\x64\x08\x7c\x00\x76\x01\x72\x02\x7c\x00\x53\x00\x74\x14\x00\x00\x00\x00\x00\x00\x00\x00\x73\x20\x64\x02\x64\x03\x6c\x05\x7d\x01\x7c\x01\x6a\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x09\x7c\x01\x6a\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x02\x00\x00\x00\x00\x00\x00\x61\x0a\x74\x14\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7d\x02\x64\x0a\x7d\x03\x64\x0b\x7d\x04\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x16\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7d\x05\x64\x02\x7d\x06\x09\x00\x02\x00\x7c\x02\x7c\x00\x7c\x06\xab\x02\x00\x00\x00\x00\x00\x00\x7d\x07\x7c\x07\x73\x03\x09\x00\x7c\x00\x53\x00\x7c\x07\x6a\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x02\xab\x01\x00\x00\x00\x00\x00\x00\x5c\x02\x00\x00\x7d\x06\x7d\x08\x7c\x07\x6a\x1b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x0c\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x09\x7c\x09\x6a\x1d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x03\xab\x01\x00\x00\x00\x00\x00\x00\x72\x16\x7c\x09\x6a\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x04\xab\x01\x00\x00\x00\x00\x00\x00\x72\x05\x7c\x09\x64\x0c\x64\x0d\x1a\x00\x7d\x09\x09\x00\x7c\x05\x80\x3a\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x16\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x09\xab\x01\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x0a\x6e\x05\x7c\x05\x7c\x09\x19\x00\x00\x00\x7d\x0a\x7c\x00\x7c\x08\x64\x03\x1a\x00\x7d\x0b\x7c\x00\x64\x03\x7c\x06\x1a\x00\x7c\x0a\x7a\x00\x00\x00\x7d\x00\x74\x25\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x06\x7c\x00\x7c\x0b\x7a\x0d\x00\x00\x7d\x00\x8c\xba\x23\x00\x74\x26\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x72\x05\x01\x00\x7c\x08\x7d\x06\x59\x00\x8c\x0e\x77\x00\x78\x03\x59\x00\x77\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct _PyCode_DEF(212)
+posixpath_toplevel_consts_27 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 106,
+ },
+ .co_consts = & ntpath_toplevel_consts_33_consts._object.ob_base.ob_base,
+ .co_names = & ntpath_toplevel_consts_33_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 8 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 7,
+ .co_firstlineno = 408,
+ .co_nlocalsplus = 1,
+ .co_nlocals = 1,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 592,
+ .co_localsplusnames = & importlib__bootstrap_external_toplevel_consts_18_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_characters[32]),
+ .co_filename = & posixpath_toplevel_consts_11_filename._ascii.ob_base,
+ .co_name = & const_str_normpath._ascii.ob_base,
+ .co_qualname = & const_str_normpath._ascii.ob_base,
+ .co_linetable = & ntpath_toplevel_consts_33_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x00\x74\x05\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x74\x06\x00\x00\x00\x00\x00\x00\x00\x00\xab\x02\x00\x00\x00\x00\x00\x00\x72\x35\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x74\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x78\x01\x73\x02\x01\x00\x64\x01\x53\x00\x74\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x78\x01\x73\x02\x01\x00\x64\x02\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[10];
+ }_object;
+ }
+posixpath_toplevel_consts_28_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 10,
+ },
+ .ob_item = {
+ & ntpath_toplevel_consts_33_consts_0._ascii.ob_base,
+ (PyObject *)&_Py_SINGLETON(bytes_characters[47]),
+ (PyObject *)&_Py_SINGLETON(bytes_empty),
+ (PyObject *)&_Py_SINGLETON(bytes_characters[46]),
+ & ntpath_toplevel_consts_34_consts_4.ob_base.ob_base,
+ (PyObject *)&_Py_SINGLETON(strings).ascii[47],
+ &_Py_STR(empty),
+ &_Py_STR(dot),
+ & ntpath_toplevel_consts_2._ascii.ob_base,
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + -1],
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[9];
+ }_object;
+ }
+posixpath_toplevel_consts_28_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 9,
+ },
+ .ob_item = {
+ & const_str_os._ascii.ob_base,
+ & const_str_fspath._ascii.ob_base,
+ &_Py_ID(isinstance),
+ &_Py_ID(bytes),
+ & const_str_splitroot._ascii.ob_base,
+ & const_str_split._ascii.ob_base,
+ &_Py_ID(append),
+ & const_str_pop._ascii.ob_base,
+ &_Py_ID(join),
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[228];
+ }
+posixpath_toplevel_consts_28_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 227,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xe4\x0f\x11\x8f\x79\x89\x79\x98\x14\x8b\x7f\x88\x04\xdc\x0b\x15\x90\x64\x9c\x45\xd4\x0b\x22\xd8\x12\x16\x88\x43\xd8\x14\x17\x88\x45\xd8\x12\x16\x88\x43\xd8\x15\x1a\x89\x46\xe0\x12\x15\x88\x43\xd8\x14\x16\x88\x45\xd8\x12\x15\x88\x43\xd8\x15\x19\x88\x46\xd8\x0b\x0f\x90\x35\x8a\x3d\xd8\x13\x16\x88\x4a\xdc\x23\x2c\xa8\x54\xa3\x3f\xd1\x08\x20\x88\x01\x88\x3f\x98\x44\xd8\x10\x14\x97\x0a\x91\x0a\x98\x33\x93\x0f\x88\x05\xd8\x14\x16\x88\x09\xd8\x14\x19\xf2\x00\x07\x09\x20\x88\x44\xd8\x0f\x13\x98\x05\x98\x73\x90\x7c\xd1\x0f\x23\xd8\x10\x18\xd8\x10\x14\x98\x06\x92\x0e\xa1\x7f\xb9\x79\xd9\x12\x1b\xa0\x09\xa8\x22\xa1\x0d\xb0\x16\xd2\x20\x37\xd8\x10\x19\xd7\x10\x20\xd1\x10\x20\xa0\x14\xd5\x10\x26\xda\x11\x1a\xd8\x10\x19\x97\x0d\x91\x0d\x95\x0f\xf0\x0f\x07\x09\x20\xf0\x10\x00\x11\x1a\x88\x05\xd8\x0f\x1e\xa0\x13\xa7\x18\xa1\x18\xa8\x25\xa3\x1f\xd1\x0f\x30\x88\x04\xd8\x0f\x13\x8a\x7b\x90\x73\xd0\x08\x1a",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[7];
+ }
+const_str_dotdot = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 6,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "dotdot",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[16];
+ }
+const_str_initial_slashes = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 15,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "initial_slashes",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[10];
+ }
+const_str_new_comps = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 9,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "new_comps",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[5];
+ }
+const_str_comp = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 4,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "comp",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[10];
+ }_object;
+ }
+posixpath_toplevel_consts_28_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 10,
+ },
+ .ob_item = {
+ &_Py_ID(path),
+ &_Py_ID(sep),
+ & const_str_empty._ascii.ob_base,
+ & const_str_dot._ascii.ob_base,
+ & const_str_dotdot._ascii.ob_base,
+ &_Py_ID(_),
+ & const_str_initial_slashes._ascii.ob_base,
+ & const_str_comps._ascii.ob_base,
+ & const_str_new_comps._ascii.ob_base,
+ & const_str_comp._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(388)
+posixpath_toplevel_consts_28 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 194,
+ },
+ .co_consts = & posixpath_toplevel_consts_28_consts._object.ob_base.ob_base,
+ .co_names = & posixpath_toplevel_consts_28_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 14 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 377,
+ .co_nlocalsplus = 10,
+ .co_nlocals = 10,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 593,
+ .co_localsplusnames = & posixpath_toplevel_consts_28_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_46_consts_3_localspluskinds.ob_base.ob_base,
+ .co_filename = & posixpath_toplevel_consts_11_filename._ascii.ob_base,
+ .co_name = & const_str_normpath._ascii.ob_base,
+ .co_qualname = & const_str_normpath._ascii.ob_base,
+ .co_linetable = & posixpath_toplevel_consts_28_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x00\x74\x05\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x74\x06\x00\x00\x00\x00\x00\x00\x00\x00\xab\x02\x00\x00\x00\x00\x00\x00\x72\x09\x64\x01\x7d\x01\x64\x02\x7d\x02\x64\x03\x7d\x03\x64\x04\x7d\x04\x6e\x08\x64\x05\x7d\x01\x64\x06\x7d\x02\x64\x07\x7d\x03\x64\x08\x7d\x04\x7c\x00\x7c\x02\x6b\x28\x00\x00\x72\x02\x7c\x03\x53\x00\x74\x09\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x5c\x03\x00\x00\x7d\x05\x7d\x06\x7d\x00\x7c\x00\x6a\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x07\x67\x00\x7d\x08\x7c\x07\x44\x00\x5d\x41\x00\x00\x7d\x09\x7c\x09\x7c\x02\x7c\x03\x66\x02\x76\x00\x72\x01\x8c\x0a\x7c\x09\x7c\x04\x6b\x37\x00\x00\x73\x0e\x7c\x06\x73\x02\x7c\x08\x72\x0a\x7c\x08\x72\x1a\x7c\x08\x64\x09\x19\x00\x00\x00\x7c\x04\x6b\x28\x00\x00\x72\x12\x7c\x08\x6a\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x09\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x8c\x2f\x7c\x08\x73\x01\x8c\x32\x7c\x08\x6a\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x01\x00\x8c\x43\x04\x00\x7c\x08\x7d\x07\x7c\x06\x7c\x01\x6a\x11\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x07\xab\x01\x00\x00\x00\x00\x00\x00\x7a\x00\x00\x00\x7d\x00\x7c\x00\x78\x01\x73\x02\x01\x00\x7c\x03\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[25];
+ }
+posixpath_toplevel_consts_29_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 24,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Return an absolute path.",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+posixpath_toplevel_consts_29_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & posixpath_toplevel_consts_29_consts_0._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[76];
+ }
+posixpath_toplevel_consts_29_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 75,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xe4\x0b\x0d\x8f\x39\x89\x39\x90\x54\x8b\x3f\x80\x44\xdc\x0b\x10\x90\x14\x8c\x3b\xdc\x0b\x15\x90\x64\x9c\x45\xd4\x0b\x22\xdc\x12\x14\x97\x2a\x91\x2a\x93\x2c\x89\x43\xe4\x12\x14\x97\x29\x91\x29\x93\x2b\x88\x43\xdc\x0f\x13\x90\x43\x98\x14\x8b\x7f\x88\x04\xdc\x0b\x13\x90\x44\x8b\x3e\xd0\x04\x19",
+};
+static
+ struct _PyCode_DEF(226)
+posixpath_toplevel_consts_29 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 113,
+ },
+ .co_consts = & posixpath_toplevel_consts_29_consts._object.ob_base.ob_base,
+ .co_names = & ntpath_toplevel_consts_35_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 6 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 416,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 2,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 594,
+ .co_localsplusnames = & ntpath_toplevel_consts_35_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_14_consts_2_localspluskinds.ob_base.ob_base,
+ .co_filename = & posixpath_toplevel_consts_11_filename._ascii.ob_base,
+ .co_name = & const_str_abspath._ascii.ob_base,
+ .co_qualname = & const_str_abspath._ascii.ob_base,
+ .co_linetable = & posixpath_toplevel_consts_29_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x00\x74\x05\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x73\x45\x74\x07\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x74\x08\x00\x00\x00\x00\x00\x00\x00\x00\xab\x02\x00\x00\x00\x00\x00\x00\x72\x15\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x7d\x01\x6e\x14\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x7d\x01\x74\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x7c\x00\xab\x02\x00\x00\x00\x00\x00\x00\x7d\x00\x74\x11\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[109];
+ }
+posixpath_toplevel_consts_32_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 108,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x52\x65\x74\x75\x72\x6e\x20\x74\x68\x65\x20\x63\x61\x6e\x6f\x6e\x69\x63\x61\x6c\x20\x70\x61\x74\x68\x20\x6f\x66\x20\x74\x68\x65\x20\x73\x70\x65\x63\x69\x66\x69\x65\x64\x20\x66\x69\x6c\x65\x6e\x61\x6d\x65\x2c\x20\x65\x6c\x69\x6d\x69\x6e\x61\x74\x69\x6e\x67\x20\x61\x6e\x79\x0a\x73\x79\x6d\x62\x6f\x6c\x69\x63\x20\x6c\x69\x6e\x6b\x73\x20\x65\x6e\x63\x6f\x75\x6e\x74\x65\x72\x65\x64\x20\x69\x6e\x20\x74\x68\x65\x20\x70\x61\x74\x68\x2e",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+posixpath_toplevel_consts_32_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ & posixpath_toplevel_consts_32_consts_0._ascii.ob_base,
+ Py_None,
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 0],
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[14];
+ }
+const_str__joinrealpath = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 13,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_joinrealpath",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[4];
+ }_object;
+ }
+posixpath_toplevel_consts_32_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_item = {
+ & const_str_os._ascii.ob_base,
+ & const_str_fspath._ascii.ob_base,
+ & const_str__joinrealpath._ascii.ob_base,
+ & const_str_abspath._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[55];
+ }
+posixpath_toplevel_consts_32_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 54,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf4\x06\x00\x10\x12\x8f\x79\x89\x79\x98\x18\xd3\x0f\x22\x80\x48\xdc\x0f\x1c\x98\x58\xa0\x62\xa0\x71\x98\x5c\xa8\x38\xb0\x56\xb8\x52\xd3\x0f\x40\x81\x48\x80\x44\x88\x22\xdc\x0b\x12\x90\x34\x8b\x3d\xd0\x04\x18",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[3];
+ }
+const_str_ok = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 2,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "ok",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[4];
+ }_object;
+ }
+posixpath_toplevel_consts_32_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_item = {
+ &_Py_ID(filename),
+ &_Py_ID(strict),
+ &_Py_ID(path),
+ & const_str_ok._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(106)
+posixpath_toplevel_consts_32 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 53,
+ },
+ .co_consts = & posixpath_toplevel_consts_32_consts._object.ob_base.ob_base,
+ .co_names = & posixpath_toplevel_consts_32_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 1,
+ .co_framesize = 10 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 6,
+ .co_firstlineno = 431,
+ .co_nlocalsplus = 4,
+ .co_nlocals = 4,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 595,
+ .co_localsplusnames = & posixpath_toplevel_consts_32_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_7_consts_3_localspluskinds.ob_base.ob_base,
+ .co_filename = & posixpath_toplevel_consts_11_filename._ascii.ob_base,
+ .co_name = & const_str_realpath._ascii.ob_base,
+ .co_qualname = & const_str_realpath._ascii.ob_base,
+ .co_linetable = & posixpath_toplevel_consts_32_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x00\x74\x05\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x64\x01\x64\x02\x1a\x00\x7c\x00\x7c\x01\x69\x00\xab\x04\x00\x00\x00\x00\x00\x00\x5c\x02\x00\x00\x7d\x02\x7d\x03\x74\x07\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x02\xab\x01\x00\x00\x00\x00\x00\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[10];
+ }_object;
+ }
+posixpath_toplevel_consts_33_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 10,
+ },
+ .ob_item = {
+ Py_None,
+ (PyObject *)&_Py_SINGLETON(bytes_characters[47]),
+ (PyObject *)&_Py_SINGLETON(bytes_characters[46]),
+ & ntpath_toplevel_consts_34_consts_4.ob_base.ob_base,
+ (PyObject *)&_Py_SINGLETON(strings).ascii[47],
+ &_Py_STR(dot),
+ & ntpath_toplevel_consts_2._ascii.ob_base,
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 1],
+ Py_False,
+ Py_True,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[14];
+ }_object;
+ }
+posixpath_toplevel_consts_33_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 14,
+ },
+ .ob_item = {
+ &_Py_ID(isinstance),
+ &_Py_ID(bytes),
+ & const_str_isabs._ascii.ob_base,
+ & const_str_partition._ascii.ob_base,
+ & const_str_split._ascii.ob_base,
+ &_Py_ID(join),
+ & const_str_os._ascii.ob_base,
+ & const_str_lstat._ascii.ob_base,
+ & const_str_stat._ascii.ob_base,
+ & const_str_S_ISLNK._ascii.ob_base,
+ & const_str_st_mode._ascii.ob_base,
+ & const_str_OSError._ascii.ob_base,
+ & const_str__joinrealpath._ascii.ob_base,
+ & const_str_readlink._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[390];
+ }
+posixpath_toplevel_consts_33_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 389,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xdc\x07\x11\x90\x24\x9c\x05\xd4\x07\x1e\xd8\x0e\x12\x88\x03\xd8\x11\x15\x88\x06\xd8\x11\x16\x89\x06\xe0\x0e\x11\x88\x03\xd8\x11\x14\x88\x06\xd8\x11\x15\x88\x06\xe4\x07\x0c\x88\x54\x84\x7b\xd8\x0f\x13\x90\x41\x90\x42\x88\x78\x88\x04\xd8\x0f\x12\x88\x04\xe2\x0a\x0e\xd8\x18\x1c\x9f\x0e\x99\x0e\xa0\x73\xd3\x18\x2b\x89\x0d\x88\x04\x88\x61\x90\x14\xd9\x0f\x13\x90\x74\x98\x76\x92\x7e\xe0\x0c\x14\xd8\x0b\x0f\x90\x36\x8a\x3e\xe1\x0f\x13\xdc\x1d\x22\xa0\x34\x9b\x5b\x91\x0a\x90\x04\x90\x64\xd8\x13\x17\x98\x36\x92\x3e\xdc\x1b\x1f\xa0\x04\xa0\x66\xa8\x66\xd3\x1b\x35\x91\x44\xe0\x17\x1d\x90\x04\xd8\x0c\x14\xdc\x12\x16\x90\x74\x98\x54\xd3\x12\x22\x88\x07\xf0\x02\x07\x09\x2f\xdc\x11\x13\x97\x18\x91\x18\x98\x27\xd3\x11\x22\x88\x42\xf4\x0c\x00\x17\x1b\x97\x6c\x91\x6c\xa0\x32\xa7\x3a\xa1\x3a\xd3\x16\x2e\x88\x47\xd9\x0f\x16\xd8\x13\x1a\x88\x44\xd8\x0c\x14\xe0\x0b\x12\x90\x64\x89\x3f\xe0\x13\x17\x98\x07\x91\x3d\x88\x44\xd8\x0f\x13\xd0\x0f\x1f\xe0\x10\x18\xe1\x0f\x15\xe4\x10\x12\x97\x07\x91\x07\x98\x07\xd5\x10\x20\xf4\x06\x00\x18\x1c\x98\x47\xa0\x54\xd3\x17\x2a\xa8\x45\xd0\x17\x31\xd0\x10\x31\xd8\x18\x1c\x88\x04\x88\x57\x89\x0d\xdc\x13\x20\xa0\x14\xa4\x72\xa7\x7b\xa1\x7b\xb0\x37\xd3\x27\x3b\xb8\x56\xc0\x54\xd3\x13\x4a\x89\x08\x88\x04\x88\x62\xd9\x0f\x11\xdc\x13\x17\x98\x04\x98\x64\xd3\x13\x23\xa0\x55\xd0\x13\x2a\xd0\x0c\x2a\xd8\x18\x1c\x88\x04\x88\x57\x89\x0d\xf3\x59\x01\x00\x0b\x0f\xf0\x5c\x01\x00\x0c\x10\x90\x14\x88\x3a\xd0\x04\x15\xf8\xf4\x3b\x00\x10\x17\xf2\x00\x03\x09\x1c\xd9\x0f\x15\xd8\x10\x15\xd8\x16\x1b\x8a\x47\xf0\x07\x03\x09\x1c\xfa",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[19];
+ }
+posixpath_toplevel_consts_33_exceptiontable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 18,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\xc2\x08\x15\x44\x39\x00\xc4\x39\x0e\x45\x0a\x03\xc5\x09\x01\x45\x0a\x03",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[8];
+ }
+const_str_newpath = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 7,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "newpath",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[8];
+ }
+const_str_is_link = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 7,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "is_link",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[13];
+ }_object;
+ }
+posixpath_toplevel_consts_33_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 13,
+ },
+ .ob_item = {
+ &_Py_ID(path),
+ & const_str_rest._ascii.ob_base,
+ &_Py_ID(strict),
+ & const_str_seen._ascii.ob_base,
+ &_Py_ID(sep),
+ & const_str_curdir._ascii.ob_base,
+ & const_str_pardir._ascii.ob_base,
+ &_Py_ID(name),
+ &_Py_ID(_),
+ & const_str_newpath._ascii.ob_base,
+ & const_str_st._ascii.ob_base,
+ & const_str_is_link._ascii.ob_base,
+ & const_str_ok._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[14];
+ }
+posixpath_toplevel_consts_33_localspluskinds = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 13,
+ },
+ .ob_shash = -1,
+ .ob_sval = " ",
+};
+static
+ struct _PyCode_DEF(666)
+posixpath_toplevel_consts_33 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 333,
+ },
+ .co_consts = & posixpath_toplevel_consts_33_consts._object.ob_base.ob_base,
+ .co_names = & posixpath_toplevel_consts_33_names._object.ob_base.ob_base,
+ .co_exceptiontable = & posixpath_toplevel_consts_33_exceptiontable.ob_base.ob_base,
+ .co_flags = 3,
+ .co_argcount = 4,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 19 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 6,
+ .co_firstlineno = 440,
+ .co_nlocalsplus = 13,
+ .co_nlocals = 13,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 596,
+ .co_localsplusnames = & posixpath_toplevel_consts_33_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & posixpath_toplevel_consts_33_localspluskinds.ob_base.ob_base,
+ .co_filename = & posixpath_toplevel_consts_11_filename._ascii.ob_base,
+ .co_name = & const_str__joinrealpath._ascii.ob_base,
+ .co_qualname = & const_str__joinrealpath._ascii.ob_base,
+ .co_linetable = & posixpath_toplevel_consts_33_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x74\x02\x00\x00\x00\x00\x00\x00\x00\x00\xab\x02\x00\x00\x00\x00\x00\x00\x72\x07\x64\x01\x7d\x04\x64\x02\x7d\x05\x64\x03\x7d\x06\x6e\x06\x64\x04\x7d\x04\x64\x05\x7d\x05\x64\x06\x7d\x06\x74\x05\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\xab\x01\x00\x00\x00\x00\x00\x00\x72\x07\x7c\x01\x64\x07\x64\x00\x1a\x00\x7d\x01\x7c\x04\x7d\x00\x7c\x01\x90\x01\x72\x02\x7c\x01\x6a\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x04\xab\x01\x00\x00\x00\x00\x00\x00\x5c\x03\x00\x00\x7d\x07\x7d\x08\x7d\x01\x7c\x07\x72\x05\x7c\x07\x7c\x05\x6b\x28\x00\x00\x72\x01\x8c\x20\x7c\x07\x7c\x06\x6b\x28\x00\x00\x72\x26\x7c\x00\x72\x21\x74\x09\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x5c\x02\x00\x00\x7d\x00\x7d\x07\x7c\x07\x7c\x06\x6b\x28\x00\x00\x72\x10\x74\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x7c\x06\x7c\x06\xab\x03\x00\x00\x00\x00\x00\x00\x7d\x00\x6e\x02\x7c\x06\x7d\x00\x8c\x4b\x74\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x7c\x07\xab\x02\x00\x00\x00\x00\x00\x00\x7d\x09\x09\x00\x74\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x09\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x0a\x74\x11\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x0a\x6a\x14\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x0b\x7c\x0b\x73\x03\x7c\x09\x7d\x00\x8c\x91\x7c\x09\x7c\x03\x76\x00\x72\x2e\x7c\x03\x7c\x09\x19\x00\x00\x00\x7d\x00\x7c\x00\x81\x01\x8c\x9d\x7c\x02\x72\x16\x74\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x09\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x6e\x0e\x74\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x09\x7c\x01\xab\x02\x00\x00\x00\x00\x00\x00\x64\x08\x66\x02\x53\x00\x64\x00\x7c\x03\x7c\x09\x3c\x00\x00\x00\x74\x19\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x74\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x1a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x09\xab\x01\x00\x00\x00\x00\x00\x00\x7c\x02\x7c\x03\xab\x04\x00\x00\x00\x00\x00\x00\x5c\x02\x00\x00\x7d\x00\x7d\x0c\x7c\x0c\x73\x0e\x74\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x7c\x01\xab\x02\x00\x00\x00\x00\x00\x00\x64\x08\x66\x02\x53\x00\x7c\x00\x7c\x03\x7c\x09\x3c\x00\x00\x00\x7c\x01\x72\x02\x90\x01\x8c\x02\x7c\x00\x64\x09\x66\x02\x53\x00\x23\x00\x74\x16\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x72\x08\x01\x00\x7c\x02\x72\x01\x82\x00\x64\x08\x7d\x0b\x59\x00\x8c\x8d\x77\x00\x78\x03\x59\x00\x77\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[10];
+ }_object;
+ }
+posixpath_toplevel_consts_35_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 10,
+ },
+ .ob_item = {
+ & ntpath_toplevel_consts_45_consts_0._ascii.ob_base,
+ & ntpath_toplevel_consts_45_consts_8._ascii.ob_base,
+ (PyObject *)&_Py_SINGLETON(bytes_characters[46]),
+ (PyObject *)&_Py_SINGLETON(bytes_characters[47]),
+ & ntpath_toplevel_consts_34_consts_4.ob_base.ob_base,
+ &_Py_STR(dot),
+ (PyObject *)&_Py_SINGLETON(strings).ascii[47],
+ & ntpath_toplevel_consts_2._ascii.ob_base,
+ Py_None,
+ & const_str_relpath._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[16];
+ }_object;
+ }
+posixpath_toplevel_consts_35_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 16,
+ },
+ .ob_item = {
+ & const_str_ValueError._ascii.ob_base,
+ & const_str_os._ascii.ob_base,
+ & const_str_fspath._ascii.ob_base,
+ &_Py_ID(isinstance),
+ &_Py_ID(bytes),
+ & const_str_abspath._ascii.ob_base,
+ & const_str_split._ascii.ob_base,
+ &_Py_ID(len),
+ & const_str_commonprefix._ascii.ob_base,
+ &_Py_ID(join),
+ & const_str_TypeError._ascii.ob_base,
+ & const_str_AttributeError._ascii.ob_base,
+ & const_str_BytesWarning._ascii.ob_base,
+ & const_str_DeprecationWarning._ascii.ob_base,
+ & const_str_genericpath._ascii.ob_base,
+ & const_str__check_arg_types._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[301];
+ }
+posixpath_toplevel_consts_35_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 300,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf1\x06\x00\x0c\x10\xdc\x0e\x18\xd0\x19\x2c\xd3\x0e\x2d\xd0\x08\x2d\xe4\x0b\x0d\x8f\x39\x89\x39\x90\x54\x8b\x3f\x80\x44\xdc\x07\x11\x90\x24\x9c\x05\xd4\x07\x1e\xd8\x11\x15\x88\x06\xd8\x0e\x12\x88\x03\xd8\x11\x16\x89\x06\xe0\x11\x14\x88\x06\xd8\x0e\x11\x88\x03\xd8\x11\x15\x88\x06\xe0\x07\x0c\x80\x7d\xd8\x10\x16\x89\x05\xe4\x10\x12\x97\x09\x91\x09\x98\x25\xd3\x10\x20\x88\x05\xf0\x04\x0c\x05\x0e\xdc\x21\x28\xa8\x15\xa3\x1e\xd7\x21\x35\xd1\x21\x35\xb0\x63\xd3\x21\x3a\xd6\x15\x40\x98\x41\xba\x61\x92\x61\xd0\x15\x40\x88\x0a\xd0\x15\x40\xdc\x20\x27\xa8\x04\xa3\x0d\xd7\x20\x33\xd1\x20\x33\xb0\x43\xd3\x20\x38\xd6\x14\x3e\x98\x31\xba\x41\x92\x51\xd0\x14\x3e\x88\x09\xd0\x14\x3e\xe4\x0c\x0f\x94\x0c\x98\x6a\xa8\x29\xd0\x1d\x34\xd3\x10\x35\xd3\x0c\x36\x88\x01\xe0\x14\x1a\x90\x38\x9c\x73\xa0\x3a\x9b\x7f\xa8\x71\xd1\x1f\x30\xd1\x13\x31\xb0\x49\xb8\x61\xb8\x62\xb0\x4d\xd1\x13\x41\x88\x08\xd9\x0f\x17\xd8\x13\x19\x88\x4d\xdc\x0f\x13\x90\x58\x88\x7f\xd0\x08\x1e\xf9\xf2\x11\x00\x16\x41\x01\xf9\xda\x14\x3e\xf8\xf4\x10\x00\x0d\x16\x94\x7e\xa4\x7c\xd4\x35\x47\xd0\x0b\x48\xf2\x00\x02\x05\x0e\xdc\x08\x13\xd7\x08\x24\xd1\x08\x24\xa0\x59\xb0\x04\xb0\x65\xd4\x08\x3c\xd8\x08\x0d\xf0\x05\x02\x05\x0e\xfa",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[61];
+ }
+posixpath_toplevel_consts_35_exceptiontable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 60,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\xc1\x1b\x1c\x43\x33\x00\xc1\x37\x07\x43\x29\x04\xc1\x3f\x04\x43\x29\x04\xc2\x03\x1e\x43\x33\x00\xc2\x21\x07\x43\x2e\x04\xc2\x29\x04\x43\x2e\x04\xc2\x2d\x33\x43\x33\x00\xc3\x21\x07\x43\x33\x00\xc3\x29\x0a\x43\x33\x00\xc3\x33\x32\x44\x25\x03",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[10];
+ }_object;
+ }
+posixpath_toplevel_consts_35_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 10,
+ },
+ .ob_item = {
+ &_Py_ID(path),
+ &_Py_ID(start),
+ & const_str_curdir._ascii.ob_base,
+ &_Py_ID(sep),
+ & const_str_pardir._ascii.ob_base,
+ &_Py_ID(x),
+ & const_str_start_list._ascii.ob_base,
+ & const_str_path_list._ascii.ob_base,
+ (PyObject *)&_Py_SINGLETON(strings).ascii[105],
+ & const_str_rel_list._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(592)
+posixpath_toplevel_consts_35 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 296,
+ },
+ .co_consts = & posixpath_toplevel_consts_35_consts._object.ob_base.ob_base,
+ .co_names = & posixpath_toplevel_consts_35_names._object.ob_base.ob_base,
+ .co_exceptiontable = & posixpath_toplevel_consts_35_exceptiontable.ob_base.ob_base,
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 16 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 6,
+ .co_firstlineno = 505,
+ .co_nlocalsplus = 10,
+ .co_nlocals = 10,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 597,
+ .co_localsplusnames = & posixpath_toplevel_consts_35_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_46_consts_3_localspluskinds.ob_base.ob_base,
+ .co_filename = & posixpath_toplevel_consts_11_filename._ascii.ob_base,
+ .co_name = & const_str_relpath._ascii.ob_base,
+ .co_qualname = & const_str_relpath._ascii.ob_base,
+ .co_linetable = & posixpath_toplevel_consts_35_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x00\x73\x0b\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x64\x01\xab\x01\x00\x00\x00\x00\x00\x00\x82\x01\x74\x03\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x00\x74\x07\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x74\x08\x00\x00\x00\x00\x00\x00\x00\x00\xab\x02\x00\x00\x00\x00\x00\x00\x72\x07\x64\x02\x7d\x02\x64\x03\x7d\x03\x64\x04\x7d\x04\x6e\x06\x64\x05\x7d\x02\x64\x06\x7d\x03\x64\x07\x7d\x04\x7c\x01\x80\x03\x7c\x02\x7d\x01\x6e\x15\x74\x03\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x01\x09\x00\x74\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\xab\x01\x00\x00\x00\x00\x00\x00\x6a\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x03\xab\x01\x00\x00\x00\x00\x00\x00\x44\x00\x8f\x05\x63\x02\x67\x00\x63\x02\x5d\x07\x00\x00\x7d\x05\x7c\x05\x73\x01\x8c\x06\x7c\x05\x91\x02\x8c\x09\x04\x00\x7d\x06\x7d\x05\x74\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x6a\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x03\xab\x01\x00\x00\x00\x00\x00\x00\x44\x00\x8f\x05\x63\x02\x67\x00\x63\x02\x5d\x07\x00\x00\x7d\x05\x7c\x05\x73\x01\x8c\x06\x7c\x05\x91\x02\x8c\x09\x04\x00\x7d\x07\x7d\x05\x74\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x74\x11\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x06\x7c\x07\x67\x02\xab\x01\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x08\x7c\x04\x67\x01\x74\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x06\xab\x01\x00\x00\x00\x00\x00\x00\x7c\x08\x7a\x0a\x00\x00\x7a\x05\x00\x00\x7c\x07\x7c\x08\x64\x08\x1a\x00\x7a\x00\x00\x00\x7d\x09\x7c\x09\x73\x02\x7c\x02\x53\x00\x74\x13\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x09\x8e\x00\x53\x00\x63\x02\x01\x00\x63\x02\x7d\x05\x77\x00\x63\x02\x01\x00\x63\x02\x7d\x05\x77\x00\x23\x00\x74\x14\x00\x00\x00\x00\x00\x00\x00\x00\x74\x16\x00\x00\x00\x00\x00\x00\x00\x00\x74\x18\x00\x00\x00\x00\x00\x00\x00\x00\x74\x1a\x00\x00\x00\x00\x00\x00\x00\x00\x66\x04\x24\x00\x72\x19\x01\x00\x74\x1d\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x1e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x09\x7c\x00\x7c\x01\xab\x03\x00\x00\x00\x00\x00\x00\x01\x00\x82\x00\x77\x00\x78\x03\x59\x00\x77\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[30];
+ }
+posixpath_toplevel_consts_36_consts_7_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 29,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "commonpath.<locals>.<genexpr>",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[28];
+ }
+posixpath_toplevel_consts_36_consts_7_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 27,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\xf8\xe8\x00\xf8\x80\x00\xd2\x18\x35\xa8\x21\x98\x11\x98\x32\x98\x41\x98\x15\xa0\x23\x9d\x1c\xd1\x18\x35\xf9",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+posixpath_toplevel_consts_36_consts_7_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ & importlib__bootstrap_external_toplevel_consts_6_localsplusnames_0._ascii.ob_base,
+ &_Py_ID(p),
+ &_Py_ID(sep),
+ },
+ },
+};
+static
+ struct _PyCode_DEF(46)
+posixpath_toplevel_consts_36_consts_7 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 23,
+ },
+ .co_consts = & zipimport_toplevel_consts_25_consts._object.ob_base.ob_base,
+ .co_names = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_exceptiontable = & importlib__bootstrap_external_toplevel_consts_64_consts_7_consts_2_exceptiontable.ob_base.ob_base,
+ .co_flags = 51,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 7 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 564,
+ .co_nlocalsplus = 3,
+ .co_nlocals = 2,
+ .co_ncellvars = 0,
+ .co_nfreevars = 1,
+ .co_version = 598,
+ .co_localsplusnames = & posixpath_toplevel_consts_36_consts_7_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_7_consts_1_consts_1_consts_4_localspluskinds.ob_base.ob_base,
+ .co_filename = & posixpath_toplevel_consts_11_filename._ascii.ob_base,
+ .co_name = &_Py_STR(anon_genexpr),
+ .co_qualname = & posixpath_toplevel_consts_36_consts_7_qualname._ascii.ob_base,
+ .co_linetable = & posixpath_toplevel_consts_36_consts_7_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x95\x01\x4b\x00\x01\x00\x97\x00\x7c\x00\x5d\x0c\x00\x00\x7d\x01\x7c\x01\x64\x00\x64\x01\x1a\x00\x89\x02\x6b\x28\x00\x00\x96\x01\x97\x01\x01\x00\x8c\x0e\x04\x00\x79\x00\xad\x03\x77\x01",
+ ._co_firsttraceable = 3,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[11];
+ }_object;
+ }
+posixpath_toplevel_consts_36_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 11,
+ },
+ .ob_item = {
+ & ntpath_toplevel_consts_46_consts_0._ascii.ob_base,
+ & ntpath_toplevel_consts_46_consts_1._ascii.ob_base,
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 0],
+ (PyObject *)&_Py_SINGLETON(bytes_characters[47]),
+ (PyObject *)&_Py_SINGLETON(bytes_characters[46]),
+ (PyObject *)&_Py_SINGLETON(strings).ascii[47],
+ &_Py_STR(dot),
+ & posixpath_toplevel_consts_36_consts_7.ob_base.ob_base,
+ & ntpath_toplevel_consts_46_consts_10._ascii.ob_base,
+ Py_None,
+ & const_str_commonpath._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[17];
+ }_object;
+ }
+posixpath_toplevel_consts_36_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 17,
+ },
+ .ob_item = {
+ & const_str_ValueError._ascii.ob_base,
+ & const_str_tuple._ascii.ob_base,
+ & const_str_map._ascii.ob_base,
+ & const_str_os._ascii.ob_base,
+ & const_str_fspath._ascii.ob_base,
+ &_Py_ID(isinstance),
+ &_Py_ID(bytes),
+ & const_str_split._ascii.ob_base,
+ & const_str_set._ascii.ob_base,
+ & const_str_min._ascii.ob_base,
+ & const_str_max._ascii.ob_base,
+ & const_str_enumerate._ascii.ob_base,
+ &_Py_ID(join),
+ & const_str_TypeError._ascii.ob_base,
+ & const_str_AttributeError._ascii.ob_base,
+ & const_str_genericpath._ascii.ob_base,
+ & const_str__check_arg_types._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[373];
+ }
+posixpath_toplevel_consts_36_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 372,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\xf8\x80\x00\xf1\x06\x00\x0c\x11\xdc\x0e\x18\xd0\x19\x40\xd3\x0e\x41\xd0\x08\x41\xe4\x0c\x11\x94\x23\x94\x62\x97\x69\x91\x69\xa0\x15\xd3\x12\x27\xd3\x0c\x28\x80\x45\xdc\x07\x11\x90\x25\x98\x01\x91\x28\x9c\x45\xd4\x07\x22\xd8\x0e\x12\x88\x03\xd8\x11\x15\x89\x06\xe0\x0e\x11\x88\x03\xd8\x11\x14\x88\x06\xf0\x04\x15\x05\x0e\xd8\x33\x38\xd6\x16\x39\xa8\x34\x90\x74\x97\x7a\x91\x7a\xa0\x23\x95\x7f\xd0\x16\x39\x88\x0b\xd0\x16\x39\xf0\x04\x03\x09\x50\x01\xdc\x15\x18\xd3\x18\x35\xa8\x75\xd4\x18\x35\xd3\x15\x35\x89\x46\x88\x45\xf0\x08\x00\x45\x01\x50\x01\xd7\x16\x50\xb8\x71\xa0\x31\xd6\x17\x3a\x98\x61\xaa\x01\xa8\x61\xb0\x36\xab\x6b\x9a\x01\xd4\x17\x3a\xd0\x16\x50\x88\x0b\xd1\x16\x50\xdc\x0d\x10\x90\x1b\xd3\x0d\x1d\x88\x02\xdc\x0d\x10\x90\x1b\xd3\x0d\x1d\x88\x02\xd8\x11\x13\x88\x06\xdc\x14\x1d\x98\x62\x93\x4d\xf2\x00\x03\x09\x16\x89\x44\x88\x41\x88\x71\xd8\x0f\x10\x90\x42\x90\x71\x91\x45\x8b\x7a\xd8\x19\x1b\x98\x42\x98\x51\x98\x16\x90\x06\xd9\x10\x15\xf0\x07\x03\x09\x16\xf1\x0a\x00\x19\x1e\x91\x13\xa0\x33\xa0\x72\xa8\x01\xa0\x37\x88\x06\xd8\x0f\x15\x98\x03\x9f\x08\x99\x08\xa0\x16\xd3\x18\x28\xd1\x0f\x28\xd0\x08\x28\xf9\xf2\x23\x00\x17\x3a\xf8\xf4\x08\x00\x10\x1a\xf2\x00\x01\x09\x50\x01\xdc\x12\x1c\xd0\x1d\x44\xd3\x12\x45\xc8\x34\xd0\x0c\x4f\xf0\x03\x01\x09\x50\x01\xfc\xf2\x06\x00\x18\x3b\xf9\xd3\x16\x50\xf8\xf4\x16\x00\x0d\x16\x94\x7e\xd0\x0b\x26\xf2\x00\x02\x05\x0e\xdc\x08\x13\xd7\x08\x24\xd1\x08\x24\xa0\x5c\xd0\x08\x3a\xb0\x45\xd3\x08\x3a\xd8\x08\x0d\xf0\x05\x02\x05\x0e\xfa",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[109];
+ }
+posixpath_toplevel_consts_36_exceptiontable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 108,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\xc1\x0f\x04\x44\x2c\x00\xc1\x13\x18\x44\x03\x04\xc1\x2b\x02\x44\x2c\x00\xc1\x2e\x16\x44\x08\x00\xc2\x04\x05\x44\x2c\x00\xc2\x09\x09\x44\x26\x06\xc2\x12\x07\x44\x21\x0c\xc2\x1a\x05\x44\x21\x0c\xc2\x20\x04\x44\x21\x0c\xc2\x24\x05\x44\x26\x06\xc2\x29\x34\x44\x2c\x00\xc3\x1e\x24\x44\x2c\x00\xc4\x03\x05\x44\x2c\x00\xc4\x08\x16\x44\x1e\x03\xc4\x1e\x03\x44\x2c\x00\xc4\x21\x05\x44\x26\x06\xc4\x26\x06\x44\x2c\x00\xc4\x2c\x27\x45\x13\x03",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[13];
+ }_object;
+ }
+posixpath_toplevel_consts_36_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 13,
+ },
+ .ob_item = {
+ & const_str_paths._ascii.ob_base,
+ & const_str_curdir._ascii.ob_base,
+ &_Py_ID(path),
+ & const_str_split_paths._ascii.ob_base,
+ & const_str_isabs._ascii.ob_base,
+ &_Py_ID(s),
+ &_Py_ID(c),
+ & const_str_s1._ascii.ob_base,
+ & const_str_s2._ascii.ob_base,
+ & const_str_common._ascii.ob_base,
+ (PyObject *)&_Py_SINGLETON(strings).ascii[105],
+ & const_str_prefix._ascii.ob_base,
+ &_Py_ID(sep),
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[14];
+ }
+posixpath_toplevel_consts_36_localspluskinds = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 13,
+ },
+ .ob_shash = -1,
+ .ob_sval = " @",
+};
+static
+ struct _PyCode_DEF(684)
+posixpath_toplevel_consts_36 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 342,
+ },
+ .co_consts = & posixpath_toplevel_consts_36_consts._object.ob_base.ob_base,
+ .co_names = & posixpath_toplevel_consts_36_names._object.ob_base.ob_base,
+ .co_exceptiontable = & posixpath_toplevel_consts_36_exceptiontable.ob_base.ob_base,
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 22 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 9,
+ .co_firstlineno = 546,
+ .co_nlocalsplus = 13,
+ .co_nlocals = 12,
+ .co_ncellvars = 1,
+ .co_nfreevars = 0,
+ .co_version = 599,
+ .co_localsplusnames = & posixpath_toplevel_consts_36_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & posixpath_toplevel_consts_36_localspluskinds.ob_base.ob_base,
+ .co_filename = & posixpath_toplevel_consts_11_filename._ascii.ob_base,
+ .co_name = & const_str_commonpath._ascii.ob_base,
+ .co_qualname = & const_str_commonpath._ascii.ob_base,
+ .co_linetable = & posixpath_toplevel_consts_36_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x87\x0c\x97\x00\x7c\x00\x73\x0b\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x64\x01\xab\x01\x00\x00\x00\x00\x00\x00\x82\x01\x74\x03\x00\x00\x00\x00\x00\x00\x00\x00\x74\x05\x00\x00\x00\x00\x00\x00\x00\x00\x74\x06\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x02\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x00\x74\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x64\x02\x19\x00\x00\x00\x74\x0c\x00\x00\x00\x00\x00\x00\x00\x00\xab\x02\x00\x00\x00\x00\x00\x00\x72\x05\x64\x03\x8a\x0c\x64\x04\x7d\x01\x6e\x04\x64\x05\x8a\x0c\x64\x06\x7d\x01\x09\x00\x7c\x00\x44\x00\x8f\x02\x63\x02\x67\x00\x63\x02\x5d\x13\x00\x00\x7d\x02\x7c\x02\x6a\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x89\x0c\xab\x01\x00\x00\x00\x00\x00\x00\x91\x02\x8c\x15\x04\x00\x7d\x03\x7d\x02\x09\x00\x74\x11\x00\x00\x00\x00\x00\x00\x00\x00\x88\x0c\x66\x01\x64\x07\x84\x08\x7c\x00\x44\x00\xab\x00\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x5c\x01\x00\x00\x7d\x04\x7c\x03\x44\x00\x8f\x05\x8f\x06\x63\x03\x67\x00\x63\x02\x5d\x1b\x00\x00\x7d\x05\x7c\x05\x44\x00\x8f\x06\x63\x02\x67\x00\x63\x02\x5d\x0d\x00\x00\x7d\x06\x7c\x06\x73\x01\x8c\x06\x7c\x06\x7c\x01\x6b\x37\x00\x00\x73\x01\x8c\x0c\x7c\x06\x91\x02\x8c\x0f\x04\x00\x63\x02\x7d\x06\x91\x02\x8c\x1d\x04\x00\x7d\x03\x7d\x05\x7d\x06\x74\x13\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x03\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x07\x74\x15\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x03\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x08\x7c\x07\x7d\x09\x74\x17\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x07\xab\x01\x00\x00\x00\x00\x00\x00\x44\x00\x5d\x14\x00\x00\x5c\x02\x00\x00\x7d\x0a\x7d\x06\x7c\x06\x7c\x08\x7c\x0a\x19\x00\x00\x00\x6b\x37\x00\x00\x73\x01\x8c\x0f\x7c\x07\x64\x09\x7c\x0a\x1a\x00\x7d\x09\x01\x00\x6e\x01\x04\x00\x7c\x04\x72\x02\x89\x0c\x6e\x04\x89\x0c\x64\x09\x64\x02\x1a\x00\x7d\x0b\x7c\x0b\x89\x0c\x6a\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x09\xab\x01\x00\x00\x00\x00\x00\x00\x7a\x00\x00\x00\x53\x00\x63\x02\x01\x00\x63\x02\x7d\x02\x77\x00\x23\x00\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x72\x0d\x01\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x64\x08\xab\x01\x00\x00\x00\x00\x00\x00\x64\x09\x82\x02\x77\x00\x78\x03\x59\x00\x77\x01\x63\x02\x01\x00\x63\x02\x7d\x06\x77\x00\x63\x02\x01\x00\x63\x03\x7d\x06\x7d\x05\x77\x00\x23\x00\x74\x1a\x00\x00\x00\x00\x00\x00\x00\x00\x74\x1c\x00\x00\x00\x00\x00\x00\x00\x00\x66\x02\x24\x00\x72\x18\x01\x00\x74\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x0a\x67\x01\x7c\x00\xa2\x01\xad\x06\x8e\x00\x01\x00\x82\x00\x77\x00\x78\x03\x59\x00\x77\x01",
+ ._co_firsttraceable = 1,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[38];
+ }_object;
+ }
+posixpath_toplevel_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 38,
+ },
+ .ob_item = {
+ & posixpath_toplevel_consts_0._ascii.ob_base,
+ &_Py_STR(dot),
+ & ntpath_toplevel_consts_2._ascii.ob_base,
+ (PyObject *)&_Py_SINGLETON(strings).ascii[47],
+ (PyObject *)&_Py_SINGLETON(strings).ascii[58],
+ & posixpath_toplevel_consts_5._ascii.ob_base,
+ Py_None,
+ & posixpath_toplevel_consts_7._ascii.ob_base,
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 0],
+ & codecs_toplevel_consts_3._object.ob_base.ob_base,
+ & posixpath_toplevel_consts_10._object.ob_base.ob_base,
+ & posixpath_toplevel_consts_11.ob_base.ob_base,
+ & posixpath_toplevel_consts_12.ob_base.ob_base,
+ & posixpath_toplevel_consts_13.ob_base.ob_base,
+ & posixpath_toplevel_consts_14.ob_base.ob_base,
+ & posixpath_toplevel_consts_15.ob_base.ob_base,
+ & posixpath_toplevel_consts_16.ob_base.ob_base,
+ & posixpath_toplevel_consts_17.ob_base.ob_base,
+ & posixpath_toplevel_consts_18.ob_base.ob_base,
+ & posixpath_toplevel_consts_19.ob_base.ob_base,
+ & posixpath_toplevel_consts_20.ob_base.ob_base,
+ & posixpath_toplevel_consts_21.ob_base.ob_base,
+ & posixpath_toplevel_consts_22.ob_base.ob_base,
+ & posixpath_toplevel_consts_23.ob_base.ob_base,
+ & posixpath_toplevel_consts_24.ob_base.ob_base,
+ & posixpath_toplevel_consts_25.ob_base.ob_base,
+ & ntpath_toplevel_consts_32._object.ob_base.ob_base,
+ & posixpath_toplevel_consts_27.ob_base.ob_base,
+ & posixpath_toplevel_consts_28.ob_base.ob_base,
+ & posixpath_toplevel_consts_29.ob_base.ob_base,
+ Py_False,
+ & codecs_toplevel_consts_14_consts_5._object.ob_base.ob_base,
+ & posixpath_toplevel_consts_32.ob_base.ob_base,
+ & posixpath_toplevel_consts_33.ob_base.ob_base,
+ & const_str_darwin._ascii.ob_base,
+ & posixpath_toplevel_consts_35.ob_base.ob_base,
+ & posixpath_toplevel_consts_36.ob_base.ob_base,
+ & importlib__bootstrap_toplevel_consts_1_consts._object.ob_base.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[43];
+ }_object;
+ }
+posixpath_toplevel_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 43,
+ },
+ .ob_item = {
+ &_Py_ID(__doc__),
+ & const_str_curdir._ascii.ob_base,
+ & const_str_pardir._ascii.ob_base,
+ & const_str_extsep._ascii.ob_base,
+ &_Py_ID(sep),
+ & const_str_pathsep._ascii.ob_base,
+ & const_str_defpath._ascii.ob_base,
+ & const_str_altsep._ascii.ob_base,
+ & const_str_devnull._ascii.ob_base,
+ & const_str_os._ascii.ob_base,
+ & const_str_sys._ascii.ob_base,
+ & const_str_stat._ascii.ob_base,
+ & const_str_genericpath._ascii.ob_base,
+ &_Py_ID(__all__),
+ & const_str__get_sep._ascii.ob_base,
+ & const_str_normcase._ascii.ob_base,
+ & const_str_isabs._ascii.ob_base,
+ &_Py_ID(join),
+ & const_str_split._ascii.ob_base,
+ & const_str_splitext._ascii.ob_base,
+ & const_str__splitext._ascii.ob_base,
+ & const_str_splitdrive._ascii.ob_base,
+ & const_str_splitroot._ascii.ob_base,
+ & const_str_basename._ascii.ob_base,
+ & const_str_dirname._ascii.ob_base,
+ & const_str_isjunction._ascii.ob_base,
+ & const_str_lexists._ascii.ob_base,
+ & const_str_ismount._ascii.ob_base,
+ & const_str_expanduser._ascii.ob_base,
+ & const_str__varprog._ascii.ob_base,
+ & const_str__varprogb._ascii.ob_base,
+ & const_str_expandvars._ascii.ob_base,
+ &_Py_ID(posix),
+ & const_str__path_normpath._ascii.ob_base,
+ & const_str_normpath._ascii.ob_base,
+ & const_str_ImportError._ascii.ob_base,
+ & const_str_abspath._ascii.ob_base,
+ & const_str_realpath._ascii.ob_base,
+ & const_str__joinrealpath._ascii.ob_base,
+ & const_str_platform._ascii.ob_base,
+ & const_str_supports_unicode_filenames._ascii.ob_base,
+ & const_str_relpath._ascii.ob_base,
+ & const_str_commonpath._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[273];
+ }
+posixpath_toplevel_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 272,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\xf0\x03\x01\x01\x01\xf1\x02\x0a\x01\x04\xf0\x1e\x00\x0a\x0d\x80\x06\xd8\x09\x0d\x80\x06\xd8\x09\x0c\x80\x06\xd8\x06\x09\x80\x03\xd8\x0a\x0d\x80\x07\xd8\x0a\x19\x80\x07\xd8\x09\x0d\x80\x06\xd8\x0a\x15\x80\x07\xe3\x00\x09\xdb\x00\x0a\xdb\x00\x0b\xdb\x00\x12\xdc\x00\x19\xf2\x04\x07\x0b\x27\x80\x07\xf2\x14\x04\x01\x13\xf2\x16\x02\x01\x18\xf2\x10\x04\x01\x1d\xf2\x16\x15\x01\x10\xf2\x3a\x09\x01\x16\xf2\x22\x08\x01\x37\xf0\x12\x00\x14\x1f\xd7\x13\x28\xd1\x13\x28\xd7\x13\x30\xd1\x13\x30\x80\x08\xd4\x00\x10\xf2\x0a\x04\x01\x14\xf2\x0e\x1a\x01\x23\xf2\x3e\x05\x01\x11\xf2\x14\x08\x01\x10\xf2\x1a\x04\x01\x11\xf2\x12\x06\x01\x10\xf2\x18\x1f\x01\x11\xf2\x56\x01\x36\x01\x29\xf0\x7a\x01\x00\x0c\x10\x80\x08\xd8\x0c\x10\x80\x09\xf2\x04\x2e\x01\x10\xf0\x6a\x01\x28\x01\x2b\xdd\x04\x24\xf2\x44\x01\x05\x05\x2b\xf2\x10\x09\x01\x1a\xf0\x1e\x00\x22\x27\xf4\x00\x05\x01\x19\xf2\x12\x3c\x01\x16\xf0\x7e\x01\x00\x1f\x22\x9f\x6c\x99\x6c\xa8\x68\xd1\x1e\x36\xd0\x00\x1a\xf3\x04\x21\x01\x0e\xf3\x52\x01\x23\x01\x0e\xf8\xf0\x55\x05\x00\x08\x13\xf2\x00\x1d\x01\x1b\xf4\x02\x1c\x05\x1b\xf0\x03\x1d\x01\x1b\xfa",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[19];
+ }
+posixpath_toplevel_exceptiontable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 18,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\xc1\x39\x06\x42\x25\x00\xc2\x25\x08\x42\x30\x03\xc2\x2f\x01\x42\x30\x03",
+};
+static
+ struct _PyCode_DEF(358)
+posixpath_toplevel = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 179,
+ },
+ .co_consts = & posixpath_toplevel_consts._object.ob_base.ob_base,
+ .co_names = & posixpath_toplevel_names._object.ob_base.ob_base,
+ .co_exceptiontable = & posixpath_toplevel_exceptiontable.ob_base.ob_base,
+ .co_flags = 0,
+ .co_argcount = 0,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 4 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 1,
+ .co_nlocalsplus = 0,
+ .co_nlocals = 0,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 600,
+ .co_localsplusnames = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_filename = & posixpath_toplevel_consts_11_filename._ascii.ob_base,
+ .co_name = &_Py_STR(anon_module),
+ .co_qualname = &_Py_STR(anon_module),
+ .co_linetable = & posixpath_toplevel_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x64\x00\x5a\x00\x64\x01\x5a\x01\x64\x02\x5a\x02\x64\x01\x5a\x03\x64\x03\x5a\x04\x64\x04\x5a\x05\x64\x05\x5a\x06\x64\x06\x5a\x07\x64\x07\x5a\x08\x64\x08\x64\x06\x6c\x09\x5a\x09\x64\x08\x64\x06\x6c\x0a\x5a\x0a\x64\x08\x64\x06\x6c\x0b\x5a\x0b\x64\x08\x64\x06\x6c\x0c\x5a\x0c\x64\x08\x64\x09\x6c\x0c\xad\x02\x01\x00\x67\x00\x64\x0a\xa2\x01\x5a\x0d\x64\x0b\x84\x00\x5a\x0e\x64\x0c\x84\x00\x5a\x0f\x64\x0d\x84\x00\x5a\x10\x64\x0e\x84\x00\x5a\x11\x64\x0f\x84\x00\x5a\x12\x64\x10\x84\x00\x5a\x13\x65\x0c\x6a\x28\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\x13\x5f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x11\x84\x00\x5a\x15\x64\x12\x84\x00\x5a\x16\x64\x13\x84\x00\x5a\x17\x64\x14\x84\x00\x5a\x18\x64\x15\x84\x00\x5a\x19\x64\x16\x84\x00\x5a\x1a\x64\x17\x84\x00\x5a\x1b\x64\x18\x84\x00\x5a\x1c\x64\x06\x61\x1d\x64\x06\x61\x1e\x64\x19\x84\x00\x5a\x1f\x09\x00\x64\x08\x64\x1a\x6c\x20\x6d\x21\x5a\x21\x01\x00\x64\x1b\x84\x00\x5a\x22\x64\x1d\x84\x00\x5a\x24\x64\x1e\x64\x1f\x9c\x01\x64\x20\x84\x02\x5a\x25\x64\x21\x84\x00\x5a\x26\x65\x0a\x6a\x4e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x22\x6b\x28\x00\x00\x5a\x28\x64\x25\x64\x23\x84\x01\x5a\x29\x64\x24\x84\x00\x5a\x2a\x79\x06\x23\x00\x65\x23\x24\x00\x72\x06\x01\x00\x64\x1c\x84\x00\x5a\x22\x59\x00\x8c\x2d\x77\x00\x78\x03\x59\x00\x77\x01",
+ ._co_firsttraceable = 0,
+};
+
+PyObject *
+_Py_get_posixpath_toplevel(void)
+{
+ return Py_NewRef((PyObject *) &posixpath_toplevel);
+}
+
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[1103];
+ }
+os_toplevel_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 1102,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x4f\x53\x20\x72\x6f\x75\x74\x69\x6e\x65\x73\x20\x66\x6f\x72\x20\x4e\x54\x20\x6f\x72\x20\x50\x6f\x73\x69\x78\x20\x64\x65\x70\x65\x6e\x64\x69\x6e\x67\x20\x6f\x6e\x20\x77\x68\x61\x74\x20\x73\x79\x73\x74\x65\x6d\x20\x77\x65\x27\x72\x65\x20\x6f\x6e\x2e\x0a\x0a\x54\x68\x69\x73\x20\x65\x78\x70\x6f\x72\x74\x73\x3a\x0a\x20\x20\x2d\x20\x61\x6c\x6c\x20\x66\x75\x6e\x63\x74\x69\x6f\x6e\x73\x20\x66\x72\x6f\x6d\x20\x70\x6f\x73\x69\x78\x20\x6f\x72\x20\x6e\x74\x2c\x20\x65\x2e\x67\x2e\x20\x75\x6e\x6c\x69\x6e\x6b\x2c\x20\x73\x74\x61\x74\x2c\x20\x65\x74\x63\x2e\x0a\x20\x20\x2d\x20\x6f\x73\x2e\x70\x61\x74\x68\x20\x69\x73\x20\x65\x69\x74\x68\x65\x72\x20\x70\x6f\x73\x69\x78\x70\x61\x74\x68\x20\x6f\x72\x20\x6e\x74\x70\x61\x74\x68\x0a\x20\x20\x2d\x20\x6f\x73\x2e\x6e\x61\x6d\x65\x20\x69\x73\x20\x65\x69\x74\x68\x65\x72\x20\x27\x70\x6f\x73\x69\x78\x27\x20\x6f\x72\x20\x27\x6e\x74\x27\x0a\x20\x20\x2d\x20\x6f\x73\x2e\x63\x75\x72\x64\x69\x72\x20\x69\x73\x20\x61\x20\x73\x74\x72\x69\x6e\x67\x20\x72\x65\x70\x72\x65\x73\x65\x6e\x74\x69\x6e\x67\x20\x74\x68\x65\x20\x63\x75\x72\x72\x65\x6e\x74\x20\x64\x69\x72\x65\x63\x74\x6f\x72\x79\x20\x28\x61\x6c\x77\x61\x79\x73\x20\x27\x2e\x27\x29\x0a\x20\x20\x2d\x20\x6f\x73\x2e\x70\x61\x72\x64\x69\x72\x20\x69\x73\x20\x61\x20\x73\x74\x72\x69\x6e\x67\x20\x72\x65\x70\x72\x65\x73\x65\x6e\x74\x69\x6e\x67\x20\x74\x68\x65\x20\x70\x61\x72\x65\x6e\x74\x20\x64\x69\x72\x65\x63\x74\x6f\x72\x79\x20\x28\x61\x6c\x77\x61\x79\x73\x20\x27\x2e\x2e\x27\x29\x0a\x20\x20\x2d\x20\x6f\x73\x2e\x73\x65\x70\x20\x69\x73\x20\x74\x68\x65\x20\x28\x6f\x72\x20\x61\x20\x6d\x6f\x73\x74\x20\x63\x6f\x6d\x6d\x6f\x6e\x29\x20\x70\x61\x74\x68\x6e\x61\x6d\x65\x20\x73\x65\x70\x61\x72\x61\x74\x6f\x72\x20\x28\x27\x2f\x27\x20\x6f\x72\x20\x27\x5c\x5c\x27\x29\x0a\x20\x20\x2d\x20\x6f\x73\x2e\x65\x78\x74\x73\x65\x70\x20\x69\x73\x20\x74\x68\x65\x20\x65\x78\x74\x65\x6e\x73\x69\x6f\x6e\x20\x73\x65\x70\x61\x72\x61\x74\x6f\x72\x20\x28\x61\x6c\x77\x61\x79\x73\x20\x27\x2e\x27\x29\x0a\x20\x20\x2d\x20\x6f\x73\x2e\x61\x6c\x74\x73\x65\x70\x20\x69\x73\x20\x74\x68\x65\x20\x61\x6c\x74\x65\x72\x6e\x61\x74\x65\x20\x70\x61\x74\x68\x6e\x61\x6d\x65\x20\x73\x65\x70\x61\x72\x61\x74\x6f\x72\x20\x28\x4e\x6f\x6e\x65\x20\x6f\x72\x20\x27\x2f\x27\x29\x0a\x20\x20\x2d\x20\x6f\x73\x2e\x70\x61\x74\x68\x73\x65\x70\x20\x69\x73\x20\x74\x68\x65\x20\x63\x6f\x6d\x70\x6f\x6e\x65\x6e\x74\x20\x73\x65\x70\x61\x72\x61\x74\x6f\x72\x20\x75\x73\x65\x64\x20\x69\x6e\x20\x24\x50\x41\x54\x48\x20\x65\x74\x63\x0a\x20\x20\x2d\x20\x6f\x73\x2e\x6c\x69\x6e\x65\x73\x65\x70\x20\x69\x73\x20\x74\x68\x65\x20\x6c\x69\x6e\x65\x20\x73\x65\x70\x61\x72\x61\x74\x6f\x72\x20\x69\x6e\x20\x74\x65\x78\x74\x20\x66\x69\x6c\x65\x73\x20\x28\x27\x5c\x72\x27\x20\x6f\x72\x20\x27\x5c\x6e\x27\x20\x6f\x72\x20\x27\x5c\x72\x5c\x6e\x27\x29\x0a\x20\x20\x2d\x20\x6f\x73\x2e\x64\x65\x66\x70\x61\x74\x68\x20\x69\x73\x20\x74\x68\x65\x20\x64\x65\x66\x61\x75\x6c\x74\x20\x73\x65\x61\x72\x63\x68\x20\x70\x61\x74\x68\x20\x66\x6f\x72\x20\x65\x78\x65\x63\x75\x74\x61\x62\x6c\x65\x73\x0a\x20\x20\x2d\x20\x6f\x73\x2e\x64\x65\x76\x6e\x75\x6c\x6c\x20\x69\x73\x20\x74\x68\x65\x20\x66\x69\x6c\x65\x20\x70\x61\x74\x68\x20\x6f\x66\x20\x74\x68\x65\x20\x6e\x75\x6c\x6c\x20\x64\x65\x76\x69\x63\x65\x20\x28\x27\x2f\x64\x65\x76\x2f\x6e\x75\x6c\x6c\x27\x2c\x20\x65\x74\x63\x2e\x29\x0a\x0a\x50\x72\x6f\x67\x72\x61\x6d\x73\x20\x74\x68\x61\x74\x20\x69\x6d\x70\x6f\x72\x74\x20\x61\x6e\x64\x20\x75\x73\x65\x20\x27\x6f\x73\x27\x20\x73\x74\x61\x6e\x64\x20\x61\x20\x62\x65\x74\x74\x65\x72\x20\x63\x68\x61\x6e\x63\x65\x20\x6f\x66\x20\x62\x65\x69\x6e\x67\x0a\x70\x6f\x72\x74\x61\x62\x6c\x65\x20\x62\x65\x74\x77\x65\x65\x6e\x20\x64\x69\x66\x66\x65\x72\x65\x6e\x74\x20\x70\x6c\x61\x74\x66\x6f\x72\x6d\x73\x2e\x20\x20\x4f\x66\x20\x63\x6f\x75\x72\x73\x65\x2c\x20\x74\x68\x65\x79\x20\x6d\x75\x73\x74\x20\x74\x68\x65\x6e\x0a\x6f\x6e\x6c\x79\x20\x75\x73\x65\x20\x66\x75\x6e\x63\x74\x69\x6f\x6e\x73\x20\x74\x68\x61\x74\x20\x61\x72\x65\x20\x64\x65\x66\x69\x6e\x65\x64\x20\x62\x79\x20\x61\x6c\x6c\x20\x70\x6c\x61\x74\x66\x6f\x72\x6d\x73\x20\x28\x65\x2e\x67\x2e\x2c\x20\x75\x6e\x6c\x69\x6e\x6b\x0a\x61\x6e\x64\x20\x6f\x70\x65\x6e\x64\x69\x72\x29\x2c\x20\x61\x6e\x64\x20\x6c\x65\x61\x76\x65\x20\x61\x6c\x6c\x20\x70\x61\x74\x68\x6e\x61\x6d\x65\x20\x6d\x61\x6e\x69\x70\x75\x6c\x61\x74\x69\x6f\x6e\x20\x74\x6f\x20\x6f\x73\x2e\x70\x61\x74\x68\x0a\x28\x65\x2e\x67\x2e\x2c\x20\x73\x70\x6c\x69\x74\x20\x61\x6e\x64\x20\x6a\x6f\x69\x6e\x29\x2e\x0a",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+os_toplevel_consts_3 = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & const_str__check_methods._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[8];
+ }
+const_str_linesep = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 7,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "linesep",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[14];
+ }
+const_str_get_exec_path = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 13,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "get_exec_path",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[7];
+ }
+const_str_fdopen = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 6,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "fdopen",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[18];
+ }_object;
+ }
+os_toplevel_consts_4 = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 18,
+ },
+ .ob_item = {
+ & const_str_altsep._ascii.ob_base,
+ & const_str_curdir._ascii.ob_base,
+ & const_str_pardir._ascii.ob_base,
+ &_Py_ID(sep),
+ & const_str_pathsep._ascii.ob_base,
+ & const_str_linesep._ascii.ob_base,
+ & const_str_defpath._ascii.ob_base,
+ &_Py_ID(name),
+ &_Py_ID(path),
+ & const_str_devnull._ascii.ob_base,
+ & const_str_SEEK_SET._ascii.ob_base,
+ & const_str_SEEK_CUR._ascii.ob_base,
+ & const_str_SEEK_END._ascii.ob_base,
+ & const_str_fsencode._ascii.ob_base,
+ & const_str_fsdecode._ascii.ob_base,
+ & const_str_get_exec_path._ascii.ob_base,
+ & const_str_fdopen._ascii.ob_base,
+ & const_str_extsep._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+os_toplevel_consts_5_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ &_Py_ID(globals),
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[12];
+ }
+os_toplevel_consts_5_filename = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 11,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "<frozen os>",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[8];
+ }
+const_str__exists = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 7,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_exists",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[16];
+ }
+os_toplevel_consts_5_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 15,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xd8\x0b\x0f\x94\x37\x93\x39\xd0\x0b\x1c\xd0\x04\x1c",
+};
+static
+ struct _PyCode_DEF(26)
+os_toplevel_consts_5 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 13,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_1_consts._object.ob_base.ob_base,
+ .co_names = & os_toplevel_consts_5_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 4 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 3,
+ .co_firstlineno = 41,
+ .co_nlocalsplus = 1,
+ .co_nlocals = 1,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 601,
+ .co_localsplusnames = & importlib__bootstrap_toplevel_consts_4_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_characters[32]),
+ .co_filename = & os_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = & const_str__exists._ascii.ob_base,
+ .co_qualname = & const_str__exists._ascii.ob_base,
+ .co_linetable = & os_toplevel_consts_5_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x76\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+os_toplevel_consts_6_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ Py_None,
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 0],
+ &_Py_ID(_),
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[4];
+ }_object;
+ }
+os_toplevel_consts_6_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_item = {
+ & const_str_list._ascii.ob_base,
+ &_Py_ID(__all__),
+ & const_str_AttributeError._ascii.ob_base,
+ & const_str_dir._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[18];
+ }
+const_str__get_exports_list = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 17,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_get_exports_list",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[72];
+ }
+os_toplevel_consts_6_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 71,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf0\x02\x03\x05\x37\xdc\x0f\x13\x90\x46\x97\x4e\x91\x4e\xd3\x0f\x23\xd0\x08\x23\xf8\xdc\x0b\x19\xf2\x00\x01\x05\x37\xdc\x1b\x1e\x98\x76\x9b\x3b\xd6\x0f\x36\x90\x61\xa8\x21\xa8\x41\xa9\x24\xb0\x23\xab\x2b\x92\x01\xd1\x0f\x36\xf9\xd4\x0f\x36\xd2\x08\x36\xf0\x03\x01\x05\x37\xfa",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[31];
+ }
+os_toplevel_consts_6_exceptiontable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 30,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x82\x14\x17\x00\x97\x16\x41\x0b\x03\xad\x0d\x41\x00\x06\xbb\x04\x41\x00\x06\xbf\x09\x41\x0b\x03\xc1\x0a\x01\x41\x0b\x03",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+os_toplevel_consts_6_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ &_Py_ID(module),
+ &_Py_ID(n),
+ },
+ },
+};
+static
+ struct _PyCode_DEF(156)
+os_toplevel_consts_6 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 78,
+ },
+ .co_consts = & os_toplevel_consts_6_consts._object.ob_base.ob_base,
+ .co_names = & os_toplevel_consts_6_names._object.ob_base.ob_base,
+ .co_exceptiontable = & os_toplevel_consts_6_exceptiontable.ob_base.ob_base,
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 8 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 6,
+ .co_firstlineno = 44,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 2,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 602,
+ .co_localsplusnames = & os_toplevel_consts_6_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_14_consts_2_localspluskinds.ob_base.ob_base,
+ .co_filename = & os_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = & const_str__get_exports_list._ascii.ob_base,
+ .co_qualname = & const_str__get_exports_list._ascii.ob_base,
+ .co_linetable = & os_toplevel_consts_6_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x09\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x53\x00\x23\x00\x74\x04\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x72\x2b\x01\x00\x74\x07\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x44\x00\x8f\x01\x63\x02\x67\x00\x63\x02\x5d\x0d\x00\x00\x7d\x01\x7c\x01\x64\x01\x19\x00\x00\x00\x64\x02\x6b\x37\x00\x00\x73\x01\x8c\x0c\x7c\x01\x91\x02\x8c\x0f\x04\x00\x6e\x05\x63\x02\x01\x00\x63\x02\x7d\x01\x77\x00\x63\x02\x7d\x01\x63\x02\x59\x00\x53\x00\x77\x00\x78\x03\x59\x00\x77\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[6];
+ }
+const_str__exit = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 5,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_exit",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+os_toplevel_consts_10 = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & const_str__exit._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[16];
+ }
+const_str__have_functions = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 15,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_have_functions",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+os_toplevel_consts_12 = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & const_str__have_functions._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[3];
+ }
+os_toplevel_consts_14 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 2,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x0d\x0a",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[28];
+ }
+os_toplevel_consts_15 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 27,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "no os specific module found",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[8];
+ }
+os_toplevel_consts_16 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 7,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "os.path",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[8];
+ }_object;
+ }
+os_toplevel_consts_17 = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 8,
+ },
+ .ob_item = {
+ & const_str_curdir._ascii.ob_base,
+ & const_str_pardir._ascii.ob_base,
+ &_Py_ID(sep),
+ & const_str_pathsep._ascii.ob_base,
+ & const_str_defpath._ascii.ob_base,
+ & const_str_extsep._ascii.ob_base,
+ & const_str_altsep._ascii.ob_base,
+ & const_str_devnull._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[9];
+ }
+const_str__globals = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 8,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_globals",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[5];
+ }
+const_str__set = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 4,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_set",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[4];
+ }_object;
+ }
+os_toplevel_consts_19_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_item = {
+ & const_str__globals._ascii.ob_base,
+ & const_str__have_functions._ascii.ob_base,
+ & const_str__set._ascii.ob_base,
+ &_Py_ID(add),
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[5];
+ }
+const_str__add = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 4,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_add",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[40];
+ }
+os_toplevel_consts_19_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 39,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xd8\x0c\x0e\x94\x28\x89\x4e\xa0\x13\xac\x0f\xd1\x21\x37\xdc\x0c\x10\x8f\x48\x89\x48\x94\x58\x98\x62\x91\x5c\xd5\x0c\x22\xf0\x03\x00\x22\x38\x88\x4e",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+os_toplevel_consts_19_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & const_str_str._ascii.ob_base,
+ & const_str_fn._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(96)
+os_toplevel_consts_19 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 48,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_1_consts._object.ob_base.ob_base,
+ .co_names = & os_toplevel_consts_19_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 6 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 104,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 2,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 603,
+ .co_localsplusnames = & os_toplevel_consts_19_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_14_consts_2_localspluskinds.ob_base.ob_base,
+ .co_filename = & os_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = & const_str__add._ascii.ob_base,
+ .co_qualname = & const_str__add._ascii.ob_base,
+ .co_linetable = & os_toplevel_consts_19_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x01\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x76\x00\x72\x26\x7c\x00\x74\x02\x00\x00\x00\x00\x00\x00\x00\x00\x76\x00\x72\x1d\x74\x04\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x19\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x79\x00\x79\x00\x79\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[15];
+ }
+const_str_HAVE_FACCESSAT = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 14,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "HAVE_FACCESSAT",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[14];
+ }
+const_str_HAVE_FCHMODAT = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 13,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "HAVE_FCHMODAT",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[6];
+ }
+const_str_chmod = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 5,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "chmod",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[14];
+ }
+const_str_HAVE_FCHOWNAT = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 13,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "HAVE_FCHOWNAT",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[6];
+ }
+const_str_chown = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 5,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "chown",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[13];
+ }
+const_str_HAVE_FSTATAT = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 12,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "HAVE_FSTATAT",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[15];
+ }
+const_str_HAVE_FUTIMESAT = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 14,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "HAVE_FUTIMESAT",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[6];
+ }
+const_str_utime = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 5,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "utime",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[12];
+ }
+const_str_HAVE_LINKAT = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 11,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "HAVE_LINKAT",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[5];
+ }
+const_str_link = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 4,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "link",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[13];
+ }
+const_str_HAVE_MKDIRAT = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 12,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "HAVE_MKDIRAT",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[14];
+ }
+const_str_HAVE_MKFIFOAT = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 13,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "HAVE_MKFIFOAT",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[7];
+ }
+const_str_mkfifo = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 6,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "mkfifo",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[13];
+ }
+const_str_HAVE_MKNODAT = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 12,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "HAVE_MKNODAT",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[6];
+ }
+const_str_mknod = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 5,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "mknod",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[12];
+ }
+const_str_HAVE_OPENAT = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 11,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "HAVE_OPENAT",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[16];
+ }
+const_str_HAVE_READLINKAT = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 15,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "HAVE_READLINKAT",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[14];
+ }
+const_str_HAVE_RENAMEAT = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 13,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "HAVE_RENAMEAT",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[7];
+ }
+const_str_rename = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 6,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "rename",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[15];
+ }
+const_str_HAVE_SYMLINKAT = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 14,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "HAVE_SYMLINKAT",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[8];
+ }
+const_str_symlink = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 7,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "symlink",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[14];
+ }
+const_str_HAVE_UNLINKAT = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 13,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "HAVE_UNLINKAT",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[6];
+ }
+const_str_rmdir = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 5,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "rmdir",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[15];
+ }
+const_str_HAVE_UTIMENSAT = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 14,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "HAVE_UTIMENSAT",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[12];
+ }
+const_str_HAVE_FCHDIR = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 11,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "HAVE_FCHDIR",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[6];
+ }
+const_str_chdir = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 5,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "chdir",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[12];
+ }
+const_str_HAVE_FCHMOD = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 11,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "HAVE_FCHMOD",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[12];
+ }
+const_str_HAVE_FCHOWN = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 11,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "HAVE_FCHOWN",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[15];
+ }
+const_str_HAVE_FDOPENDIR = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 14,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "HAVE_FDOPENDIR",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[8];
+ }
+const_str_scandir = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 7,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "scandir",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[13];
+ }
+const_str_HAVE_FEXECVE = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 12,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "HAVE_FEXECVE",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[7];
+ }
+const_str_execve = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 6,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "execve",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[15];
+ }
+const_str_HAVE_FTRUNCATE = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 14,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "HAVE_FTRUNCATE",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[14];
+ }
+const_str_HAVE_FUTIMENS = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 13,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "HAVE_FUTIMENS",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[13];
+ }
+const_str_HAVE_FUTIMES = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 12,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "HAVE_FUTIMES",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[15];
+ }
+const_str_HAVE_FPATHCONF = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 14,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "HAVE_FPATHCONF",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[9];
+ }
+const_str_pathconf = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 8,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "pathconf",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[8];
+ }
+const_str_statvfs = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 7,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "statvfs",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[9];
+ }
+const_str_fstatvfs = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 8,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "fstatvfs",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[14];
+ }
+const_str_HAVE_FSTATVFS = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 13,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "HAVE_FSTATVFS",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[14];
+ }
+const_str_HAVE_LCHFLAGS = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 13,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "HAVE_LCHFLAGS",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[8];
+ }
+const_str_chflags = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 7,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "chflags",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[12];
+ }
+const_str_HAVE_LCHMOD = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 11,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "HAVE_LCHMOD",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[7];
+ }
+const_str_lchown = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 6,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "lchown",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[12];
+ }
+const_str_HAVE_LCHOWN = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 11,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "HAVE_LCHOWN",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[13];
+ }
+const_str_HAVE_LUTIMES = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 12,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "HAVE_LUTIMES",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[11];
+ }
+const_str_HAVE_LSTAT = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 10,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "HAVE_LSTAT",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[11];
+ }
+const_str_MS_WINDOWS = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 10,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "MS_WINDOWS",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[396];
+ }
+os_toplevel_consts_79_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 395,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x6d\x61\x6b\x65\x64\x69\x72\x73\x28\x6e\x61\x6d\x65\x20\x5b\x2c\x20\x6d\x6f\x64\x65\x3d\x30\x6f\x37\x37\x37\x5d\x5b\x2c\x20\x65\x78\x69\x73\x74\x5f\x6f\x6b\x3d\x46\x61\x6c\x73\x65\x5d\x29\x0a\x0a\x20\x20\x20\x20\x53\x75\x70\x65\x72\x2d\x6d\x6b\x64\x69\x72\x3b\x20\x63\x72\x65\x61\x74\x65\x20\x61\x20\x6c\x65\x61\x66\x20\x64\x69\x72\x65\x63\x74\x6f\x72\x79\x20\x61\x6e\x64\x20\x61\x6c\x6c\x20\x69\x6e\x74\x65\x72\x6d\x65\x64\x69\x61\x74\x65\x20\x6f\x6e\x65\x73\x2e\x20\x20\x57\x6f\x72\x6b\x73\x20\x6c\x69\x6b\x65\x0a\x20\x20\x20\x20\x6d\x6b\x64\x69\x72\x2c\x20\x65\x78\x63\x65\x70\x74\x20\x74\x68\x61\x74\x20\x61\x6e\x79\x20\x69\x6e\x74\x65\x72\x6d\x65\x64\x69\x61\x74\x65\x20\x70\x61\x74\x68\x20\x73\x65\x67\x6d\x65\x6e\x74\x20\x28\x6e\x6f\x74\x20\x6a\x75\x73\x74\x20\x74\x68\x65\x20\x72\x69\x67\x68\x74\x6d\x6f\x73\x74\x29\x0a\x20\x20\x20\x20\x77\x69\x6c\x6c\x20\x62\x65\x20\x63\x72\x65\x61\x74\x65\x64\x20\x69\x66\x20\x69\x74\x20\x64\x6f\x65\x73\x20\x6e\x6f\x74\x20\x65\x78\x69\x73\x74\x2e\x20\x49\x66\x20\x74\x68\x65\x20\x74\x61\x72\x67\x65\x74\x20\x64\x69\x72\x65\x63\x74\x6f\x72\x79\x20\x61\x6c\x72\x65\x61\x64\x79\x0a\x20\x20\x20\x20\x65\x78\x69\x73\x74\x73\x2c\x20\x72\x61\x69\x73\x65\x20\x61\x6e\x20\x4f\x53\x45\x72\x72\x6f\x72\x20\x69\x66\x20\x65\x78\x69\x73\x74\x5f\x6f\x6b\x20\x69\x73\x20\x46\x61\x6c\x73\x65\x2e\x20\x4f\x74\x68\x65\x72\x77\x69\x73\x65\x20\x6e\x6f\x20\x65\x78\x63\x65\x70\x74\x69\x6f\x6e\x20\x69\x73\x0a\x20\x20\x20\x20\x72\x61\x69\x73\x65\x64\x2e\x20\x20\x54\x68\x69\x73\x20\x69\x73\x20\x72\x65\x63\x75\x72\x73\x69\x76\x65\x2e\x0a\x0a\x20\x20\x20\x20",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[9];
+ }
+const_str_exist_ok = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 8,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "exist_ok",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+os_toplevel_consts_79_consts_1 = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & const_str_exist_ok._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[4];
+ }_object;
+ }
+os_toplevel_consts_79_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_item = {
+ & os_toplevel_consts_79_consts_0._ascii.ob_base,
+ & os_toplevel_consts_79_consts_1._object.ob_base.ob_base,
+ & const_str_ASCII._ascii.ob_base,
+ Py_None,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[9];
+ }
+const_str_makedirs = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 8,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "makedirs",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[11];
+ }_object;
+ }
+os_toplevel_consts_79_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 11,
+ },
+ .ob_item = {
+ &_Py_ID(path),
+ & const_str_split._ascii.ob_base,
+ & const_str_exists._ascii.ob_base,
+ & const_str_makedirs._ascii.ob_base,
+ & const_str_FileExistsError._ascii.ob_base,
+ & const_str_curdir._ascii.ob_base,
+ &_Py_ID(isinstance),
+ &_Py_ID(bytes),
+ & const_str_mkdir._ascii.ob_base,
+ & const_str_OSError._ascii.ob_base,
+ & const_str_isdir._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[189];
+ }
+os_toplevel_consts_79_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 188,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf4\x14\x00\x12\x16\x97\x1a\x91\x1a\x98\x44\xd3\x11\x21\x81\x4a\x80\x44\x88\x24\xd9\x0b\x0f\xdc\x15\x19\x97\x5a\x91\x5a\xa0\x04\xd3\x15\x25\x89\x0a\x88\x04\x88\x64\xd9\x07\x0b\x91\x04\x9c\x54\x9f\x5b\x99\x5b\xa8\x14\xd4\x1d\x2e\xf0\x02\x04\x09\x11\xdc\x0c\x14\x90\x54\xa0\x48\xd5\x0c\x2d\xf4\x08\x00\x10\x16\x88\x04\xdc\x0b\x15\x90\x64\x9c\x45\xd4\x0b\x22\xdc\x13\x18\x9c\x16\xa0\x17\xd3\x13\x29\x88\x44\xd8\x0b\x0f\x90\x34\x8a\x3c\xd8\x0c\x12\xf0\x02\x06\x05\x12\xdc\x08\x0d\x88\x64\x90\x44\xd5\x08\x19\xf8\xf4\x13\x00\x10\x1f\xf2\x00\x02\x09\x11\xe1\x0c\x10\xf0\x05\x02\x09\x11\xfb\xf4\x14\x00\x0c\x13\xf2\x00\x04\x05\x12\xf1\x06\x00\x10\x18\x9c\x74\x9f\x7a\x99\x7a\xa8\x24\xd4\x1f\x2f\xd8\x0c\x11\xf1\x03\x00\x20\x30\xf0\x07\x04\x05\x12\xfa",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[37];
+ }
+os_toplevel_consts_79_exceptiontable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 36,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\xc1\x0d\x0d\x42\x14\x00\xc2\x07\x0c\x42\x23\x00\xc2\x14\x09\x42\x20\x03\xc2\x1f\x01\x42\x20\x03\xc2\x23\x21\x43\x07\x03\xc3\x06\x01\x43\x07\x03",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[5];
+ }
+const_str_cdir = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 4,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "cdir",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[6];
+ }_object;
+ }
+os_toplevel_consts_79_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 6,
+ },
+ .ob_item = {
+ &_Py_ID(name),
+ &_Py_ID(mode),
+ & const_str_exist_ok._ascii.ob_base,
+ & const_str_head._ascii.ob_base,
+ & const_str_tail._ascii.ob_base,
+ & const_str_cdir._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(404)
+os_toplevel_consts_79 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 202,
+ },
+ .co_consts = & os_toplevel_consts_79_consts._object.ob_base.ob_base,
+ .co_names = & os_toplevel_consts_79_names._object.ob_base.ob_base,
+ .co_exceptiontable = & os_toplevel_consts_79_exceptiontable.ob_base.ob_base,
+ .co_flags = 3,
+ .co_argcount = 3,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 10 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 200,
+ .co_nlocalsplus = 6,
+ .co_nlocals = 6,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 604,
+ .co_localsplusnames = & os_toplevel_consts_79_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_30_consts_4_localspluskinds.ob_base.ob_base,
+ .co_filename = & os_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = & const_str_makedirs._ascii.ob_base,
+ .co_qualname = & const_str_makedirs._ascii.ob_base,
+ .co_linetable = & os_toplevel_consts_79_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x5c\x02\x00\x00\x7d\x03\x7d\x04\x7c\x04\x73\x18\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x03\xab\x01\x00\x00\x00\x00\x00\x00\x5c\x02\x00\x00\x7d\x03\x7d\x04\x7c\x03\x72\x51\x7c\x04\x72\x4f\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x03\xab\x01\x00\x00\x00\x00\x00\x00\x73\x3a\x09\x00\x74\x07\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x03\x7c\x02\xac\x01\xab\x02\x00\x00\x00\x00\x00\x00\x01\x00\x74\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x7d\x05\x74\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x04\x74\x0e\x00\x00\x00\x00\x00\x00\x00\x00\xab\x02\x00\x00\x00\x00\x00\x00\x72\x10\x74\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x74\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x64\x02\xab\x02\x00\x00\x00\x00\x00\x00\x7d\x05\x7c\x04\x7c\x05\x6b\x28\x00\x00\x72\x01\x79\x03\x09\x00\x74\x11\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x7c\x01\xab\x02\x00\x00\x00\x00\x00\x00\x01\x00\x79\x03\x23\x00\x74\x08\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x72\x03\x01\x00\x59\x00\x8c\x45\x77\x00\x78\x03\x59\x00\x77\x01\x23\x00\x74\x12\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x72\x1b\x01\x00\x7c\x02\x72\x15\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x14\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x73\x01\x82\x00\x59\x00\x79\x03\x77\x00\x78\x03\x59\x00\x77\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[429];
+ }
+os_toplevel_consts_80_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 428,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x72\x65\x6d\x6f\x76\x65\x64\x69\x72\x73\x28\x6e\x61\x6d\x65\x29\x0a\x0a\x20\x20\x20\x20\x53\x75\x70\x65\x72\x2d\x72\x6d\x64\x69\x72\x3b\x20\x72\x65\x6d\x6f\x76\x65\x20\x61\x20\x6c\x65\x61\x66\x20\x64\x69\x72\x65\x63\x74\x6f\x72\x79\x20\x61\x6e\x64\x20\x61\x6c\x6c\x20\x65\x6d\x70\x74\x79\x20\x69\x6e\x74\x65\x72\x6d\x65\x64\x69\x61\x74\x65\x0a\x20\x20\x20\x20\x6f\x6e\x65\x73\x2e\x20\x20\x57\x6f\x72\x6b\x73\x20\x6c\x69\x6b\x65\x20\x72\x6d\x64\x69\x72\x20\x65\x78\x63\x65\x70\x74\x20\x74\x68\x61\x74\x2c\x20\x69\x66\x20\x74\x68\x65\x20\x6c\x65\x61\x66\x20\x64\x69\x72\x65\x63\x74\x6f\x72\x79\x20\x69\x73\x0a\x20\x20\x20\x20\x73\x75\x63\x63\x65\x73\x73\x66\x75\x6c\x6c\x79\x20\x72\x65\x6d\x6f\x76\x65\x64\x2c\x20\x64\x69\x72\x65\x63\x74\x6f\x72\x69\x65\x73\x20\x63\x6f\x72\x72\x65\x73\x70\x6f\x6e\x64\x69\x6e\x67\x20\x74\x6f\x20\x72\x69\x67\x68\x74\x6d\x6f\x73\x74\x20\x70\x61\x74\x68\x0a\x20\x20\x20\x20\x73\x65\x67\x6d\x65\x6e\x74\x73\x20\x77\x69\x6c\x6c\x20\x62\x65\x20\x70\x72\x75\x6e\x65\x64\x20\x61\x77\x61\x79\x20\x75\x6e\x74\x69\x6c\x20\x65\x69\x74\x68\x65\x72\x20\x74\x68\x65\x20\x77\x68\x6f\x6c\x65\x20\x70\x61\x74\x68\x20\x69\x73\x0a\x20\x20\x20\x20\x63\x6f\x6e\x73\x75\x6d\x65\x64\x20\x6f\x72\x20\x61\x6e\x20\x65\x72\x72\x6f\x72\x20\x6f\x63\x63\x75\x72\x73\x2e\x20\x20\x45\x72\x72\x6f\x72\x73\x20\x64\x75\x72\x69\x6e\x67\x20\x74\x68\x69\x73\x20\x6c\x61\x74\x74\x65\x72\x20\x70\x68\x61\x73\x65\x20\x61\x72\x65\x0a\x20\x20\x20\x20\x69\x67\x6e\x6f\x72\x65\x64\x20\x2d\x2d\x20\x74\x68\x65\x79\x20\x67\x65\x6e\x65\x72\x61\x6c\x6c\x79\x20\x6d\x65\x61\x6e\x20\x74\x68\x61\x74\x20\x61\x20\x64\x69\x72\x65\x63\x74\x6f\x72\x79\x20\x77\x61\x73\x20\x6e\x6f\x74\x20\x65\x6d\x70\x74\x79\x2e\x0a\x0a\x20\x20\x20\x20",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+os_toplevel_consts_80_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & os_toplevel_consts_80_consts_0._ascii.ob_base,
+ Py_None,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[4];
+ }_object;
+ }
+os_toplevel_consts_80_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_item = {
+ & const_str_rmdir._ascii.ob_base,
+ &_Py_ID(path),
+ & const_str_split._ascii.ob_base,
+ & const_str_OSError._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[11];
+ }
+const_str_removedirs = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 10,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "removedirs",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[121];
+ }
+os_toplevel_consts_80_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 120,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf4\x16\x00\x05\x0a\x88\x24\x84\x4b\xdc\x11\x15\x97\x1a\x91\x1a\x98\x44\xd3\x11\x21\x81\x4a\x80\x44\x88\x24\xd9\x0b\x0f\xdc\x15\x19\x97\x5a\x91\x5a\xa0\x04\xd3\x15\x25\x89\x0a\x88\x04\x88\x64\xd9\x0a\x0e\x91\x34\xf0\x02\x03\x09\x12\xdc\x0c\x11\x90\x24\x8c\x4b\xf4\x06\x00\x16\x1a\x97\x5a\x91\x5a\xa0\x04\xd3\x15\x25\x89\x0a\x88\x04\x88\x64\xf1\x0b\x00\x0b\x0f\x93\x34\x88\x24\x90\x34\x88\x24\xf8\xf4\x06\x00\x10\x17\xf2\x00\x01\x09\x12\xd9\x0c\x11\xf0\x03\x01\x09\x12\xfa",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[19];
+ }
+os_toplevel_consts_80_exceptiontable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 18,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\xc1\x03\x0b\x41\x2f\x00\xc1\x2f\x09\x41\x3b\x03\xc1\x3a\x01\x41\x3b\x03",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+os_toplevel_consts_80_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ &_Py_ID(name),
+ & const_str_head._ascii.ob_base,
+ & const_str_tail._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(252)
+os_toplevel_consts_80 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 126,
+ },
+ .co_consts = & os_toplevel_consts_80_consts._object.ob_base.ob_base,
+ .co_names = & os_toplevel_consts_80_names._object.ob_base.ob_base,
+ .co_exceptiontable = & os_toplevel_consts_80_exceptiontable.ob_base.ob_base,
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 7 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 232,
+ .co_nlocalsplus = 3,
+ .co_nlocals = 3,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 605,
+ .co_localsplusnames = & os_toplevel_consts_80_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_3_localspluskinds.ob_base.ob_base,
+ .co_filename = & os_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = & const_str_removedirs._ascii.ob_base,
+ .co_qualname = & const_str_removedirs._ascii.ob_base,
+ .co_linetable = & os_toplevel_consts_80_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x74\x03\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x5c\x02\x00\x00\x7d\x01\x7d\x02\x7c\x02\x73\x18\x74\x03\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\xab\x01\x00\x00\x00\x00\x00\x00\x5c\x02\x00\x00\x7d\x01\x7d\x02\x7c\x01\x72\x2e\x7c\x02\x72\x2b\x09\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x74\x03\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\xab\x01\x00\x00\x00\x00\x00\x00\x5c\x02\x00\x00\x7d\x01\x7d\x02\x7c\x01\x72\x04\x7c\x02\x72\x01\x8c\x29\x79\x01\x79\x01\x79\x01\x79\x01\x23\x00\x74\x06\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x72\x03\x01\x00\x59\x00\x79\x01\x77\x00\x78\x03\x59\x00\x77\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[573];
+ }
+os_toplevel_consts_81_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 572,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x72\x65\x6e\x61\x6d\x65\x73\x28\x6f\x6c\x64\x2c\x20\x6e\x65\x77\x29\x0a\x0a\x20\x20\x20\x20\x53\x75\x70\x65\x72\x2d\x72\x65\x6e\x61\x6d\x65\x3b\x20\x63\x72\x65\x61\x74\x65\x20\x64\x69\x72\x65\x63\x74\x6f\x72\x69\x65\x73\x20\x61\x73\x20\x6e\x65\x63\x65\x73\x73\x61\x72\x79\x20\x61\x6e\x64\x20\x64\x65\x6c\x65\x74\x65\x20\x61\x6e\x79\x20\x6c\x65\x66\x74\x0a\x20\x20\x20\x20\x65\x6d\x70\x74\x79\x2e\x20\x20\x57\x6f\x72\x6b\x73\x20\x6c\x69\x6b\x65\x20\x72\x65\x6e\x61\x6d\x65\x2c\x20\x65\x78\x63\x65\x70\x74\x20\x63\x72\x65\x61\x74\x69\x6f\x6e\x20\x6f\x66\x20\x61\x6e\x79\x20\x69\x6e\x74\x65\x72\x6d\x65\x64\x69\x61\x74\x65\x0a\x20\x20\x20\x20\x64\x69\x72\x65\x63\x74\x6f\x72\x69\x65\x73\x20\x6e\x65\x65\x64\x65\x64\x20\x74\x6f\x20\x6d\x61\x6b\x65\x20\x74\x68\x65\x20\x6e\x65\x77\x20\x70\x61\x74\x68\x6e\x61\x6d\x65\x20\x67\x6f\x6f\x64\x20\x69\x73\x20\x61\x74\x74\x65\x6d\x70\x74\x65\x64\x0a\x20\x20\x20\x20\x66\x69\x72\x73\x74\x2e\x20\x20\x41\x66\x74\x65\x72\x20\x74\x68\x65\x20\x72\x65\x6e\x61\x6d\x65\x2c\x20\x64\x69\x72\x65\x63\x74\x6f\x72\x69\x65\x73\x20\x63\x6f\x72\x72\x65\x73\x70\x6f\x6e\x64\x69\x6e\x67\x20\x74\x6f\x20\x72\x69\x67\x68\x74\x6d\x6f\x73\x74\x0a\x20\x20\x20\x20\x70\x61\x74\x68\x20\x73\x65\x67\x6d\x65\x6e\x74\x73\x20\x6f\x66\x20\x74\x68\x65\x20\x6f\x6c\x64\x20\x6e\x61\x6d\x65\x20\x77\x69\x6c\x6c\x20\x62\x65\x20\x70\x72\x75\x6e\x65\x64\x20\x75\x6e\x74\x69\x6c\x20\x65\x69\x74\x68\x65\x72\x20\x74\x68\x65\x0a\x20\x20\x20\x20\x77\x68\x6f\x6c\x65\x20\x70\x61\x74\x68\x20\x69\x73\x20\x63\x6f\x6e\x73\x75\x6d\x65\x64\x20\x6f\x72\x20\x61\x20\x6e\x6f\x6e\x65\x6d\x70\x74\x79\x20\x64\x69\x72\x65\x63\x74\x6f\x72\x79\x20\x69\x73\x20\x66\x6f\x75\x6e\x64\x2e\x0a\x0a\x20\x20\x20\x20\x4e\x6f\x74\x65\x3a\x20\x74\x68\x69\x73\x20\x66\x75\x6e\x63\x74\x69\x6f\x6e\x20\x63\x61\x6e\x20\x66\x61\x69\x6c\x20\x77\x69\x74\x68\x20\x74\x68\x65\x20\x6e\x65\x77\x20\x64\x69\x72\x65\x63\x74\x6f\x72\x79\x20\x73\x74\x72\x75\x63\x74\x75\x72\x65\x20\x6d\x61\x64\x65\x0a\x20\x20\x20\x20\x69\x66\x20\x79\x6f\x75\x20\x6c\x61\x63\x6b\x20\x70\x65\x72\x6d\x69\x73\x73\x69\x6f\x6e\x73\x20\x6e\x65\x65\x64\x65\x64\x20\x74\x6f\x20\x75\x6e\x6c\x69\x6e\x6b\x20\x74\x68\x65\x20\x6c\x65\x61\x66\x20\x64\x69\x72\x65\x63\x74\x6f\x72\x79\x20\x6f\x72\x0a\x20\x20\x20\x20\x66\x69\x6c\x65\x2e\x0a\x0a\x20\x20\x20\x20",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+os_toplevel_consts_81_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & os_toplevel_consts_81_consts_0._ascii.ob_base,
+ Py_None,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[7];
+ }_object;
+ }
+os_toplevel_consts_81_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 7,
+ },
+ .ob_item = {
+ &_Py_ID(path),
+ & const_str_split._ascii.ob_base,
+ & const_str_exists._ascii.ob_base,
+ & const_str_makedirs._ascii.ob_base,
+ & const_str_rename._ascii.ob_base,
+ & const_str_removedirs._ascii.ob_base,
+ & const_str_OSError._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[8];
+ }
+const_str_renames = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 7,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "renames",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[117];
+ }
+os_toplevel_consts_81_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 116,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf4\x1e\x00\x12\x16\x97\x1a\x91\x1a\x98\x43\x93\x1f\x81\x4a\x80\x44\x88\x24\xd9\x07\x0b\x91\x04\x9c\x54\x9f\x5b\x99\x5b\xa8\x14\xd4\x1d\x2e\xdc\x08\x10\x90\x14\x8c\x0e\xdc\x04\x0a\x88\x33\x90\x03\xd4\x04\x14\xdc\x11\x15\x97\x1a\x91\x1a\x98\x43\x93\x1f\x81\x4a\x80\x44\x88\x24\xd9\x07\x0b\x91\x04\xf0\x02\x03\x09\x11\xdc\x0c\x16\x90\x74\xd5\x0c\x1c\xf0\x05\x00\x11\x15\x80\x74\xf8\xf4\x06\x00\x10\x17\xf2\x00\x01\x09\x11\xd9\x0c\x10\xf0\x03\x01\x09\x11\xfa",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[19];
+ }
+os_toplevel_consts_81_exceptiontable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 18,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\xc1\x26\x0b\x41\x34\x00\xc1\x34\x09\x42\x00\x03\xc1\x3f\x01\x42\x00\x03",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[4];
+ }_object;
+ }
+os_toplevel_consts_81_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_item = {
+ & const_str_old._ascii.ob_base,
+ & const_str_new._ascii.ob_base,
+ & const_str_head._ascii.ob_base,
+ & const_str_tail._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(262)
+os_toplevel_consts_81 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 131,
+ },
+ .co_consts = & os_toplevel_consts_81_consts._object.ob_base.ob_base,
+ .co_names = & os_toplevel_consts_81_names._object.ob_base.ob_base,
+ .co_exceptiontable = & os_toplevel_consts_81_exceptiontable.ob_base.ob_base,
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 8 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 254,
+ .co_nlocalsplus = 4,
+ .co_nlocals = 4,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 606,
+ .co_localsplusnames = & os_toplevel_consts_81_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_7_consts_3_localspluskinds.ob_base.ob_base,
+ .co_filename = & os_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = & const_str_renames._ascii.ob_base,
+ .co_qualname = & const_str_renames._ascii.ob_base,
+ .co_linetable = & os_toplevel_consts_81_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\xab\x01\x00\x00\x00\x00\x00\x00\x5c\x02\x00\x00\x7d\x02\x7d\x03\x7c\x02\x72\x22\x7c\x03\x72\x20\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x02\xab\x01\x00\x00\x00\x00\x00\x00\x73\x0b\x74\x07\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x02\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x74\x09\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x7c\x01\xab\x02\x00\x00\x00\x00\x00\x00\x01\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x5c\x02\x00\x00\x7d\x02\x7d\x03\x7c\x02\x72\x10\x7c\x03\x72\x0d\x09\x00\x74\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x02\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x79\x01\x79\x01\x79\x01\x23\x00\x74\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x72\x03\x01\x00\x59\x00\x79\x01\x77\x00\x78\x03\x59\x00\x77\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+os_toplevel_consts_82 = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ & const_str_makedirs._ascii.ob_base,
+ & const_str_removedirs._ascii.ob_base,
+ & const_str_renames._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[2855];
+ }
+os_toplevel_consts_83_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 2854,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x44\x69\x72\x65\x63\x74\x6f\x72\x79\x20\x74\x72\x65\x65\x20\x67\x65\x6e\x65\x72\x61\x74\x6f\x72\x2e\x0a\x0a\x20\x20\x20\x20\x46\x6f\x72\x20\x65\x61\x63\x68\x20\x64\x69\x72\x65\x63\x74\x6f\x72\x79\x20\x69\x6e\x20\x74\x68\x65\x20\x64\x69\x72\x65\x63\x74\x6f\x72\x79\x20\x74\x72\x65\x65\x20\x72\x6f\x6f\x74\x65\x64\x20\x61\x74\x20\x74\x6f\x70\x20\x28\x69\x6e\x63\x6c\x75\x64\x69\x6e\x67\x20\x74\x6f\x70\x0a\x20\x20\x20\x20\x69\x74\x73\x65\x6c\x66\x2c\x20\x62\x75\x74\x20\x65\x78\x63\x6c\x75\x64\x69\x6e\x67\x20\x27\x2e\x27\x20\x61\x6e\x64\x20\x27\x2e\x2e\x27\x29\x2c\x20\x79\x69\x65\x6c\x64\x73\x20\x61\x20\x33\x2d\x74\x75\x70\x6c\x65\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x64\x69\x72\x70\x61\x74\x68\x2c\x20\x64\x69\x72\x6e\x61\x6d\x65\x73\x2c\x20\x66\x69\x6c\x65\x6e\x61\x6d\x65\x73\x0a\x0a\x20\x20\x20\x20\x64\x69\x72\x70\x61\x74\x68\x20\x69\x73\x20\x61\x20\x73\x74\x72\x69\x6e\x67\x2c\x20\x74\x68\x65\x20\x70\x61\x74\x68\x20\x74\x6f\x20\x74\x68\x65\x20\x64\x69\x72\x65\x63\x74\x6f\x72\x79\x2e\x20\x20\x64\x69\x72\x6e\x61\x6d\x65\x73\x20\x69\x73\x20\x61\x20\x6c\x69\x73\x74\x20\x6f\x66\x0a\x20\x20\x20\x20\x74\x68\x65\x20\x6e\x61\x6d\x65\x73\x20\x6f\x66\x20\x74\x68\x65\x20\x73\x75\x62\x64\x69\x72\x65\x63\x74\x6f\x72\x69\x65\x73\x20\x69\x6e\x20\x64\x69\x72\x70\x61\x74\x68\x20\x28\x69\x6e\x63\x6c\x75\x64\x69\x6e\x67\x20\x73\x79\x6d\x6c\x69\x6e\x6b\x73\x20\x74\x6f\x20\x64\x69\x72\x65\x63\x74\x6f\x72\x69\x65\x73\x2c\x0a\x20\x20\x20\x20\x61\x6e\x64\x20\x65\x78\x63\x6c\x75\x64\x69\x6e\x67\x20\x27\x2e\x27\x20\x61\x6e\x64\x20\x27\x2e\x2e\x27\x29\x2e\x0a\x20\x20\x20\x20\x66\x69\x6c\x65\x6e\x61\x6d\x65\x73\x20\x69\x73\x20\x61\x20\x6c\x69\x73\x74\x20\x6f\x66\x20\x74\x68\x65\x20\x6e\x61\x6d\x65\x73\x20\x6f\x66\x20\x74\x68\x65\x20\x6e\x6f\x6e\x2d\x64\x69\x72\x65\x63\x74\x6f\x72\x79\x20\x66\x69\x6c\x65\x73\x20\x69\x6e\x20\x64\x69\x72\x70\x61\x74\x68\x2e\x0a\x20\x20\x20\x20\x4e\x6f\x74\x65\x20\x74\x68\x61\x74\x20\x74\x68\x65\x20\x6e\x61\x6d\x65\x73\x20\x69\x6e\x20\x74\x68\x65\x20\x6c\x69\x73\x74\x73\x20\x61\x72\x65\x20\x6a\x75\x73\x74\x20\x6e\x61\x6d\x65\x73\x2c\x20\x77\x69\x74\x68\x20\x6e\x6f\x20\x70\x61\x74\x68\x20\x63\x6f\x6d\x70\x6f\x6e\x65\x6e\x74\x73\x2e\x0a\x20\x20\x20\x20\x54\x6f\x20\x67\x65\x74\x20\x61\x20\x66\x75\x6c\x6c\x20\x70\x61\x74\x68\x20\x28\x77\x68\x69\x63\x68\x20\x62\x65\x67\x69\x6e\x73\x20\x77\x69\x74\x68\x20\x74\x6f\x70\x29\x20\x74\x6f\x20\x61\x20\x66\x69\x6c\x65\x20\x6f\x72\x20\x64\x69\x72\x65\x63\x74\x6f\x72\x79\x20\x69\x6e\x0a\x20\x20\x20\x20\x64\x69\x72\x70\x61\x74\x68\x2c\x20\x64\x6f\x20\x6f\x73\x2e\x70\x61\x74\x68\x2e\x6a\x6f\x69\x6e\x28\x64\x69\x72\x70\x61\x74\x68\x2c\x20\x6e\x61\x6d\x65\x29\x2e\x0a\x0a\x20\x20\x20\x20\x49\x66\x20\x6f\x70\x74\x69\x6f\x6e\x61\x6c\x20\x61\x72\x67\x20\x27\x74\x6f\x70\x64\x6f\x77\x6e\x27\x20\x69\x73\x20\x74\x72\x75\x65\x20\x6f\x72\x20\x6e\x6f\x74\x20\x73\x70\x65\x63\x69\x66\x69\x65\x64\x2c\x20\x74\x68\x65\x20\x74\x72\x69\x70\x6c\x65\x20\x66\x6f\x72\x20\x61\x0a\x20\x20\x20\x20\x64\x69\x72\x65\x63\x74\x6f\x72\x79\x20\x69\x73\x20\x67\x65\x6e\x65\x72\x61\x74\x65\x64\x20\x62\x65\x66\x6f\x72\x65\x20\x74\x68\x65\x20\x74\x72\x69\x70\x6c\x65\x73\x20\x66\x6f\x72\x20\x61\x6e\x79\x20\x6f\x66\x20\x69\x74\x73\x20\x73\x75\x62\x64\x69\x72\x65\x63\x74\x6f\x72\x69\x65\x73\x0a\x20\x20\x20\x20\x28\x64\x69\x72\x65\x63\x74\x6f\x72\x69\x65\x73\x20\x61\x72\x65\x20\x67\x65\x6e\x65\x72\x61\x74\x65\x64\x20\x74\x6f\x70\x20\x64\x6f\x77\x6e\x29\x2e\x20\x20\x49\x66\x20\x74\x6f\x70\x64\x6f\x77\x6e\x20\x69\x73\x20\x66\x61\x6c\x73\x65\x2c\x20\x74\x68\x65\x20\x74\x72\x69\x70\x6c\x65\x0a\x20\x20\x20\x20\x66\x6f\x72\x20\x61\x20\x64\x69\x72\x65\x63\x74\x6f\x72\x79\x20\x69\x73\x20\x67\x65\x6e\x65\x72\x61\x74\x65\x64\x20\x61\x66\x74\x65\x72\x20\x74\x68\x65\x20\x74\x72\x69\x70\x6c\x65\x73\x20\x66\x6f\x72\x20\x61\x6c\x6c\x20\x6f\x66\x20\x69\x74\x73\x0a\x20\x20\x20\x20\x73\x75\x62\x64\x69\x72\x65\x63\x74\x6f\x72\x69\x65\x73\x20\x28\x64\x69\x72\x65\x63\x74\x6f\x72\x69\x65\x73\x20\x61\x72\x65\x20\x67\x65\x6e\x65\x72\x61\x74\x65\x64\x20\x62\x6f\x74\x74\x6f\x6d\x20\x75\x70\x29\x2e\x0a\x0a\x20\x20\x20\x20\x57\x68\x65\x6e\x20\x74\x6f\x70\x64\x6f\x77\x6e\x20\x69\x73\x20\x74\x72\x75\x65\x2c\x20\x74\x68\x65\x20\x63\x61\x6c\x6c\x65\x72\x20\x63\x61\x6e\x20\x6d\x6f\x64\x69\x66\x79\x20\x74\x68\x65\x20\x64\x69\x72\x6e\x61\x6d\x65\x73\x20\x6c\x69\x73\x74\x20\x69\x6e\x2d\x70\x6c\x61\x63\x65\x0a\x20\x20\x20\x20\x28\x65\x2e\x67\x2e\x2c\x20\x76\x69\x61\x20\x64\x65\x6c\x20\x6f\x72\x20\x73\x6c\x69\x63\x65\x20\x61\x73\x73\x69\x67\x6e\x6d\x65\x6e\x74\x29\x2c\x20\x61\x6e\x64\x20\x77\x61\x6c\x6b\x20\x77\x69\x6c\x6c\x20\x6f\x6e\x6c\x79\x20\x72\x65\x63\x75\x72\x73\x65\x20\x69\x6e\x74\x6f\x20\x74\x68\x65\x0a\x20\x20\x20\x20\x73\x75\x62\x64\x69\x72\x65\x63\x74\x6f\x72\x69\x65\x73\x20\x77\x68\x6f\x73\x65\x20\x6e\x61\x6d\x65\x73\x20\x72\x65\x6d\x61\x69\x6e\x20\x69\x6e\x20\x64\x69\x72\x6e\x61\x6d\x65\x73\x3b\x20\x74\x68\x69\x73\x20\x63\x61\x6e\x20\x62\x65\x20\x75\x73\x65\x64\x20\x74\x6f\x20\x70\x72\x75\x6e\x65\x20\x74\x68\x65\x0a\x20\x20\x20\x20\x73\x65\x61\x72\x63\x68\x2c\x20\x6f\x72\x20\x74\x6f\x20\x69\x6d\x70\x6f\x73\x65\x20\x61\x20\x73\x70\x65\x63\x69\x66\x69\x63\x20\x6f\x72\x64\x65\x72\x20\x6f\x66\x20\x76\x69\x73\x69\x74\x69\x6e\x67\x2e\x20\x20\x4d\x6f\x64\x69\x66\x79\x69\x6e\x67\x20\x64\x69\x72\x6e\x61\x6d\x65\x73\x20\x77\x68\x65\x6e\x0a\x20\x20\x20\x20\x74\x6f\x70\x64\x6f\x77\x6e\x20\x69\x73\x20\x66\x61\x6c\x73\x65\x20\x68\x61\x73\x20\x6e\x6f\x20\x65\x66\x66\x65\x63\x74\x20\x6f\x6e\x20\x74\x68\x65\x20\x62\x65\x68\x61\x76\x69\x6f\x72\x20\x6f\x66\x20\x6f\x73\x2e\x77\x61\x6c\x6b\x28\x29\x2c\x20\x73\x69\x6e\x63\x65\x20\x74\x68\x65\x0a\x20\x20\x20\x20\x64\x69\x72\x65\x63\x74\x6f\x72\x69\x65\x73\x20\x69\x6e\x20\x64\x69\x72\x6e\x61\x6d\x65\x73\x20\x68\x61\x76\x65\x20\x61\x6c\x72\x65\x61\x64\x79\x20\x62\x65\x65\x6e\x20\x67\x65\x6e\x65\x72\x61\x74\x65\x64\x20\x62\x79\x20\x74\x68\x65\x20\x74\x69\x6d\x65\x20\x64\x69\x72\x6e\x61\x6d\x65\x73\x0a\x20\x20\x20\x20\x69\x74\x73\x65\x6c\x66\x20\x69\x73\x20\x67\x65\x6e\x65\x72\x61\x74\x65\x64\x2e\x20\x4e\x6f\x20\x6d\x61\x74\x74\x65\x72\x20\x74\x68\x65\x20\x76\x61\x6c\x75\x65\x20\x6f\x66\x20\x74\x6f\x70\x64\x6f\x77\x6e\x2c\x20\x74\x68\x65\x20\x6c\x69\x73\x74\x20\x6f\x66\x0a\x20\x20\x20\x20\x73\x75\x62\x64\x69\x72\x65\x63\x74\x6f\x72\x69\x65\x73\x20\x69\x73\x20\x72\x65\x74\x72\x69\x65\x76\x65\x64\x20\x62\x65\x66\x6f\x72\x65\x20\x74\x68\x65\x20\x74\x75\x70\x6c\x65\x73\x20\x66\x6f\x72\x20\x74\x68\x65\x20\x64\x69\x72\x65\x63\x74\x6f\x72\x79\x20\x61\x6e\x64\x20\x69\x74\x73\x0a\x20\x20\x20\x20\x73\x75\x62\x64\x69\x72\x65\x63\x74\x6f\x72\x69\x65\x73\x20\x61\x72\x65\x20\x67\x65\x6e\x65\x72\x61\x74\x65\x64\x2e\x0a\x0a\x20\x20\x20\x20\x42\x79\x20\x64\x65\x66\x61\x75\x6c\x74\x20\x65\x72\x72\x6f\x72\x73\x20\x66\x72\x6f\x6d\x20\x74\x68\x65\x20\x6f\x73\x2e\x73\x63\x61\x6e\x64\x69\x72\x28\x29\x20\x63\x61\x6c\x6c\x20\x61\x72\x65\x20\x69\x67\x6e\x6f\x72\x65\x64\x2e\x20\x20\x49\x66\x0a\x20\x20\x20\x20\x6f\x70\x74\x69\x6f\x6e\x61\x6c\x20\x61\x72\x67\x20\x27\x6f\x6e\x65\x72\x72\x6f\x72\x27\x20\x69\x73\x20\x73\x70\x65\x63\x69\x66\x69\x65\x64\x2c\x20\x69\x74\x20\x73\x68\x6f\x75\x6c\x64\x20\x62\x65\x20\x61\x20\x66\x75\x6e\x63\x74\x69\x6f\x6e\x3b\x20\x69\x74\x0a\x20\x20\x20\x20\x77\x69\x6c\x6c\x20\x62\x65\x20\x63\x61\x6c\x6c\x65\x64\x20\x77\x69\x74\x68\x20\x6f\x6e\x65\x20\x61\x72\x67\x75\x6d\x65\x6e\x74\x2c\x20\x61\x6e\x20\x4f\x53\x45\x72\x72\x6f\x72\x20\x69\x6e\x73\x74\x61\x6e\x63\x65\x2e\x20\x20\x49\x74\x20\x63\x61\x6e\x0a\x20\x20\x20\x20\x72\x65\x70\x6f\x72\x74\x20\x74\x68\x65\x20\x65\x72\x72\x6f\x72\x20\x74\x6f\x20\x63\x6f\x6e\x74\x69\x6e\x75\x65\x20\x77\x69\x74\x68\x20\x74\x68\x65\x20\x77\x61\x6c\x6b\x2c\x20\x6f\x72\x20\x72\x61\x69\x73\x65\x20\x74\x68\x65\x20\x65\x78\x63\x65\x70\x74\x69\x6f\x6e\x0a\x20\x20\x20\x20\x74\x6f\x20\x61\x62\x6f\x72\x74\x20\x74\x68\x65\x20\x77\x61\x6c\x6b\x2e\x20\x20\x4e\x6f\x74\x65\x20\x74\x68\x61\x74\x20\x74\x68\x65\x20\x66\x69\x6c\x65\x6e\x61\x6d\x65\x20\x69\x73\x20\x61\x76\x61\x69\x6c\x61\x62\x6c\x65\x20\x61\x73\x20\x74\x68\x65\x0a\x20\x20\x20\x20\x66\x69\x6c\x65\x6e\x61\x6d\x65\x20\x61\x74\x74\x72\x69\x62\x75\x74\x65\x20\x6f\x66\x20\x74\x68\x65\x20\x65\x78\x63\x65\x70\x74\x69\x6f\x6e\x20\x6f\x62\x6a\x65\x63\x74\x2e\x0a\x0a\x20\x20\x20\x20\x42\x79\x20\x64\x65\x66\x61\x75\x6c\x74\x2c\x20\x6f\x73\x2e\x77\x61\x6c\x6b\x20\x64\x6f\x65\x73\x20\x6e\x6f\x74\x20\x66\x6f\x6c\x6c\x6f\x77\x20\x73\x79\x6d\x62\x6f\x6c\x69\x63\x20\x6c\x69\x6e\x6b\x73\x20\x74\x6f\x20\x73\x75\x62\x64\x69\x72\x65\x63\x74\x6f\x72\x69\x65\x73\x20\x6f\x6e\x0a\x20\x20\x20\x20\x73\x79\x73\x74\x65\x6d\x73\x20\x74\x68\x61\x74\x20\x73\x75\x70\x70\x6f\x72\x74\x20\x74\x68\x65\x6d\x2e\x20\x20\x49\x6e\x20\x6f\x72\x64\x65\x72\x20\x74\x6f\x20\x67\x65\x74\x20\x74\x68\x69\x73\x20\x66\x75\x6e\x63\x74\x69\x6f\x6e\x61\x6c\x69\x74\x79\x2c\x20\x73\x65\x74\x20\x74\x68\x65\x0a\x20\x20\x20\x20\x6f\x70\x74\x69\x6f\x6e\x61\x6c\x20\x61\x72\x67\x75\x6d\x65\x6e\x74\x20\x27\x66\x6f\x6c\x6c\x6f\x77\x6c\x69\x6e\x6b\x73\x27\x20\x74\x6f\x20\x74\x72\x75\x65\x2e\x0a\x0a\x20\x20\x20\x20\x43\x61\x75\x74\x69\x6f\x6e\x3a\x20\x20\x69\x66\x20\x79\x6f\x75\x20\x70\x61\x73\x73\x20\x61\x20\x72\x65\x6c\x61\x74\x69\x76\x65\x20\x70\x61\x74\x68\x6e\x61\x6d\x65\x20\x66\x6f\x72\x20\x74\x6f\x70\x2c\x20\x64\x6f\x6e\x27\x74\x20\x63\x68\x61\x6e\x67\x65\x20\x74\x68\x65\x0a\x20\x20\x20\x20\x63\x75\x72\x72\x65\x6e\x74\x20\x77\x6f\x72\x6b\x69\x6e\x67\x20\x64\x69\x72\x65\x63\x74\x6f\x72\x79\x20\x62\x65\x74\x77\x65\x65\x6e\x20\x72\x65\x73\x75\x6d\x70\x74\x69\x6f\x6e\x73\x20\x6f\x66\x20\x77\x61\x6c\x6b\x2e\x20\x20\x77\x61\x6c\x6b\x20\x6e\x65\x76\x65\x72\x0a\x20\x20\x20\x20\x63\x68\x61\x6e\x67\x65\x73\x20\x74\x68\x65\x20\x63\x75\x72\x72\x65\x6e\x74\x20\x64\x69\x72\x65\x63\x74\x6f\x72\x79\x2c\x20\x61\x6e\x64\x20\x61\x73\x73\x75\x6d\x65\x73\x20\x74\x68\x61\x74\x20\x74\x68\x65\x20\x63\x6c\x69\x65\x6e\x74\x20\x64\x6f\x65\x73\x6e\x27\x74\x0a\x20\x20\x20\x20\x65\x69\x74\x68\x65\x72\x2e\x0a\x0a\x20\x20\x20\x20\x45\x78\x61\x6d\x70\x6c\x65\x3a\x0a\x0a\x20\x20\x20\x20\x69\x6d\x70\x6f\x72\x74\x20\x6f\x73\x0a\x20\x20\x20\x20\x66\x72\x6f\x6d\x20\x6f\x73\x2e\x70\x61\x74\x68\x20\x69\x6d\x70\x6f\x72\x74\x20\x6a\x6f\x69\x6e\x2c\x20\x67\x65\x74\x73\x69\x7a\x65\x0a\x20\x20\x20\x20\x66\x6f\x72\x20\x72\x6f\x6f\x74\x2c\x20\x64\x69\x72\x73\x2c\x20\x66\x69\x6c\x65\x73\x20\x69\x6e\x20\x6f\x73\x2e\x77\x61\x6c\x6b\x28\x27\x70\x79\x74\x68\x6f\x6e\x2f\x4c\x69\x62\x2f\x65\x6d\x61\x69\x6c\x27\x29\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x70\x72\x69\x6e\x74\x28\x72\x6f\x6f\x74\x2c\x20\x22\x63\x6f\x6e\x73\x75\x6d\x65\x73\x20\x22\x29\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x70\x72\x69\x6e\x74\x28\x73\x75\x6d\x28\x67\x65\x74\x73\x69\x7a\x65\x28\x6a\x6f\x69\x6e\x28\x72\x6f\x6f\x74\x2c\x20\x6e\x61\x6d\x65\x29\x29\x20\x66\x6f\x72\x20\x6e\x61\x6d\x65\x20\x69\x6e\x20\x66\x69\x6c\x65\x73\x29\x2c\x20\x65\x6e\x64\x3d\x22\x20\x22\x29\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x70\x72\x69\x6e\x74\x28\x22\x62\x79\x74\x65\x73\x20\x69\x6e\x22\x2c\x20\x6c\x65\x6e\x28\x66\x69\x6c\x65\x73\x29\x2c\x20\x22\x6e\x6f\x6e\x2d\x64\x69\x72\x65\x63\x74\x6f\x72\x79\x20\x66\x69\x6c\x65\x73\x22\x29\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x69\x66\x20\x27\x43\x56\x53\x27\x20\x69\x6e\x20\x64\x69\x72\x73\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x64\x69\x72\x73\x2e\x72\x65\x6d\x6f\x76\x65\x28\x27\x43\x56\x53\x27\x29\x20\x20\x23\x20\x64\x6f\x6e\x27\x74\x20\x76\x69\x73\x69\x74\x20\x43\x56\x53\x20\x64\x69\x72\x65\x63\x74\x6f\x72\x69\x65\x73\x0a\x0a\x20\x20\x20\x20",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[8];
+ }
+os_toplevel_consts_83_consts_1 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 7,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "os.walk",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[5];
+ }_object;
+ }
+os_toplevel_consts_83_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 5,
+ },
+ .ob_item = {
+ & os_toplevel_consts_83_consts_0._ascii.ob_base,
+ & os_toplevel_consts_83_consts_1._ascii.ob_base,
+ Py_None,
+ Py_False,
+ Py_True,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[6];
+ }
+const_str_audit = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 5,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "audit",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[7];
+ }
+const_str_is_dir = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 6,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "is_dir",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[11];
+ }
+const_str_is_symlink = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 10,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "is_symlink",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[18];
+ }_object;
+ }
+os_toplevel_consts_83_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 18,
+ },
+ .ob_item = {
+ & const_str_sys._ascii.ob_base,
+ & const_str_audit._ascii.ob_base,
+ & const_str_fspath._ascii.ob_base,
+ &_Py_ID(path),
+ & const_str_islink._ascii.ob_base,
+ &_Py_ID(join),
+ & const_str_pop._ascii.ob_base,
+ &_Py_ID(isinstance),
+ & const_str_tuple._ascii.ob_base,
+ & const_str_scandir._ascii.ob_base,
+ & const_str_OSError._ascii.ob_base,
+ &_Py_ID(next),
+ & const_str_StopIteration._ascii.ob_base,
+ & const_str_is_dir._ascii.ob_base,
+ &_Py_ID(append),
+ &_Py_ID(name),
+ & const_str_is_symlink._ascii.ob_base,
+ &_Py_ID(reversed),
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[5];
+ }
+const_str_walk = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 4,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "walk",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[577];
+ }
+os_toplevel_consts_83_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 576,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\xe8\x00\xf8\x80\x00\xf4\x78\x01\x00\x05\x08\x87\x49\x81\x49\x88\x69\x98\x13\x98\x67\xa0\x77\xb0\x0b\xd4\x04\x3c\xe4\x0d\x13\x90\x43\x8b\x5b\x88\x4d\x80\x45\xdc\x13\x17\x97\x3b\x91\x3b\xa4\x04\xa7\x09\xa1\x09\x88\x44\x80\x46\xd9\x0a\x0f\xd8\x0e\x13\x8f\x69\x89\x69\x8b\x6b\x88\x03\xdc\x0b\x15\x90\x63\x9c\x35\xd4\x0b\x21\xd8\x12\x15\x8a\x49\xd8\x0c\x14\xe0\x0f\x11\x88\x04\xd8\x12\x14\x88\x07\xd8\x14\x16\x88\x09\xf0\x0e\x05\x09\x15\xdc\x19\x20\xa0\x13\x9b\x1c\x88\x4a\xf0\x0c\x00\x10\x15\x88\x04\xd8\x0d\x17\xf1\x00\x29\x09\x35\xd8\x12\x16\xf0\x02\x09\x11\x1a\xf0\x02\x03\x15\x1e\xdc\x20\x24\xa0\x5a\xd3\x20\x30\x99\x05\xf0\x12\x05\x11\x23\xd8\x1d\x22\x9f\x5c\x99\x5c\x9b\x5e\x90\x46\xf1\x0c\x00\x14\x1a\xd8\x14\x18\x97\x4b\x91\x4b\xa0\x05\xa7\x0a\xa1\x0a\xd5\x14\x2b\xe0\x14\x1b\x97\x4e\x91\x4e\xa0\x35\xa7\x3a\xa1\x3a\xd4\x14\x2e\xe1\x17\x1e\xa1\x36\xf1\x06\x00\x18\x23\xd8\x24\x28\x99\x09\xf0\x04\x06\x19\x2f\xd8\x29\x2e\xd7\x29\x39\xd1\x29\x39\xd3\x29\x3b\x98\x4a\xf0\x0c\x00\x29\x33\xa0\x4e\x98\x09\xe1\x17\x20\xd8\x18\x21\xd7\x18\x28\xd1\x18\x28\xa8\x15\xaf\x1a\xa9\x1a\xd4\x18\x34\xf0\x51\x01\x00\x13\x17\xf8\xf0\x31\x00\x0b\x10\xf8\xf4\x22\x00\x10\x17\xf2\x00\x03\x09\x15\xd8\x0f\x16\xd0\x0f\x22\xd9\x10\x17\x98\x05\x94\x0e\xdc\x0c\x14\xfb\xf0\x07\x03\x09\x15\xfb\xf4\x16\x00\x1c\x29\xf2\x00\x01\x15\x1e\xd9\x18\x1d\xf0\x03\x01\x15\x1e\xfb\xe4\x17\x1e\xf2\x00\x04\x11\x1a\xd8\x17\x1e\xd0\x17\x2a\xd9\x18\x1f\xa0\x05\x9c\x0e\xd8\x1b\x1f\x90\x44\xdc\x14\x19\xfb\xf0\x09\x04\x11\x1a\xfb\xf4\x10\x00\x18\x1f\xf2\x00\x03\x11\x23\xf0\x06\x00\x1e\x23\x92\x46\xf0\x07\x03\x11\x23\xfb\xf4\x24\x00\x20\x27\xf2\x00\x04\x19\x2f\xf0\x08\x00\x2a\x2f\x9a\x4a\xf0\x09\x04\x19\x2f\xfa\xf7\x43\x01\x29\x09\x35\xf7\x00\x29\x09\x35\xf1\x00\x29\x09\x35\xfa\xf1\x54\x01\x00\x0c\x10\xd9\x0c\x14\xe1\x0b\x12\xe0\x12\x15\x90\x74\x98\x57\xd0\x12\x24\xd2\x0c\x24\xe4\x1b\x23\xa0\x44\x9b\x3e\xf2\x00\x07\x0d\x2b\x90\x07\xd9\x1b\x1f\xa0\x03\xa0\x57\xd3\x1b\x2d\x90\x08\xf1\x0a\x00\x14\x1f\xa1\x66\xa8\x58\xd5\x26\x36\xd8\x14\x19\x97\x4c\x91\x4c\xa0\x18\xd5\x14\x2a\xf1\x0f\x07\x0d\x2b\xf0\x14\x00\x0d\x12\x8f\x4c\x89\x4c\x98\x23\x98\x74\xa0\x57\xd0\x19\x2d\xd4\x0c\x2e\xe4\x1c\x24\xa0\x59\xd3\x1c\x2f\xf2\x00\x01\x0d\x27\x90\x08\xd8\x10\x15\x97\x0c\x91\x0c\x98\x58\xd5\x10\x26\xf0\x03\x01\x0d\x27\xf3\x69\x02\x00\x0b\x10\xfb",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[231];
+ }
+os_toplevel_consts_83_exceptiontable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 230,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x82\x41\x33\x48\x22\x01\xc1\x36\x0b\x44\x1c\x00\xc2\x01\x04\x48\x22\x01\xc2\x05\x02\x46\x18\x03\xc2\x09\x0b\x44\x3c\x02\xc2\x14\x01\x46\x18\x03\xc2\x16\x10\x45\x2d\x02\xc2\x26\x41\x02\x46\x18\x03\xc3\x29\x10\x45\x3e\x02\xc3\x39\x21\x46\x18\x03\xc4\x1a\x02\x48\x22\x01\xc4\x1c\x09\x44\x39\x03\xc4\x25\x0a\x44\x34\x03\xc4\x2f\x05\x48\x22\x01\xc4\x34\x05\x44\x39\x03\xc4\x39\x03\x48\x22\x01\xc4\x3c\x09\x45\x08\x05\xc5\x05\x01\x45\x0b\x02\xc5\x06\x01\x46\x18\x03\xc5\x07\x01\x45\x08\x05\xc5\x08\x03\x45\x0b\x02\xc5\x0b\x09\x45\x2a\x05\xc5\x14\x0c\x45\x25\x05\xc5\x20\x05\x46\x18\x03\xc5\x25\x05\x45\x2a\x05\xc5\x2a\x03\x46\x18\x03\xc5\x2d\x0b\x45\x3b\x05\xc5\x38\x02\x46\x18\x03\xc5\x3a\x01\x45\x3b\x05\xc5\x3b\x03\x46\x18\x03\xc5\x3e\x0b\x46\x0c\x05\xc6\x09\x02\x46\x18\x03\xc6\x0b\x01\x46\x0c\x05\xc6\x0c\x03\x46\x18\x03\xc6\x0f\x09\x48\x22\x01\xc6\x18\x05\x46\x21\x07\xc6\x1d\x35\x48\x22\x01\xc7\x13\x41\x0b\x48\x22\x01",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[8];
+ }
+const_str_topdown = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 7,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "topdown",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[8];
+ }
+const_str_onerror = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 7,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "onerror",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[12];
+ }
+const_str_followlinks = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 11,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "followlinks",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[6];
+ }
+const_str_stack = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 5,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "stack",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[8];
+ }
+const_str_nondirs = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 7,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "nondirs",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[10];
+ }
+const_str_walk_dirs = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 9,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "walk_dirs",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[11];
+ }
+const_str_scandir_it = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 10,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "scandir_it",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[6];
+ }
+const_str_error = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 5,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "error",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[5];
+ }
+const_str_cont = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 4,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "cont",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[10];
+ }
+const_str_walk_into = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 9,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "walk_into",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[19];
+ }_object;
+ }
+os_toplevel_consts_83_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 19,
+ },
+ .ob_item = {
+ &_Py_ID(top),
+ & const_str_topdown._ascii.ob_base,
+ & const_str_onerror._ascii.ob_base,
+ & const_str_followlinks._ascii.ob_base,
+ & const_str_stack._ascii.ob_base,
+ & const_str_islink._ascii.ob_base,
+ &_Py_ID(join),
+ & const_str_dirs._ascii.ob_base,
+ & const_str_nondirs._ascii.ob_base,
+ & const_str_walk_dirs._ascii.ob_base,
+ & const_str_scandir_it._ascii.ob_base,
+ & const_str_error._ascii.ob_base,
+ & const_str_cont._ascii.ob_base,
+ & const_str_entry._ascii.ob_base,
+ & const_str_is_dir._ascii.ob_base,
+ & const_str_walk_into._ascii.ob_base,
+ & const_str_is_symlink._ascii.ob_base,
+ & const_str_dirname._ascii.ob_base,
+ & const_str_new_path._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(1096)
+os_toplevel_consts_83 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 548,
+ },
+ .co_consts = & os_toplevel_consts_83_consts._object.ob_base.ob_base,
+ .co_names = & os_toplevel_consts_83_names._object.ob_base.ob_base,
+ .co_exceptiontable = & os_toplevel_consts_83_exceptiontable.ob_base.ob_base,
+ .co_flags = 35,
+ .co_argcount = 4,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 26 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 7,
+ .co_firstlineno = 282,
+ .co_nlocalsplus = 19,
+ .co_nlocals = 19,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 607,
+ .co_localsplusnames = & os_toplevel_consts_83_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & ntpath_toplevel_consts_45_localspluskinds.ob_base.ob_base,
+ .co_filename = & os_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = & const_str_walk._ascii.ob_base,
+ .co_qualname = & const_str_walk._ascii.ob_base,
+ .co_linetable = & os_toplevel_consts_83_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x4b\x00\x01\x00\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x01\x7c\x00\x7c\x01\x7c\x02\x7c\x03\xab\x05\x00\x00\x00\x00\x00\x00\x01\x00\x74\x05\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x67\x01\x7d\x04\x74\x06\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x74\x06\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7d\x06\x7d\x05\x7c\x04\x72\xd1\x7c\x04\x6a\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x7d\x00\x74\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x74\x10\x00\x00\x00\x00\x00\x00\x00\x00\xab\x02\x00\x00\x00\x00\x00\x00\x72\x05\x7c\x00\x96\x01\x97\x01\x01\x00\x8c\x27\x67\x00\x7d\x07\x67\x00\x7d\x08\x67\x00\x7d\x09\x09\x00\x74\x13\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x0a\x64\x03\x7d\x0c\x7c\x0a\x35\x00\x01\x00\x09\x00\x09\x00\x09\x00\x74\x17\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x0a\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x0d\x09\x00\x09\x00\x7c\x0d\x6a\x1b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x7d\x0e\x7c\x0e\x72\x1c\x7c\x07\x6a\x1d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x0d\x6a\x1e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x6e\x1b\x7c\x08\x6a\x1d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x0d\x6a\x1e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x7c\x01\x73\x38\x7c\x0e\x72\x36\x7c\x03\x72\x03\x64\x04\x7d\x0f\x6e\x14\x09\x00\x7c\x0d\x6a\x21\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x7d\x10\x7c\x10\x0c\x00\x7d\x0f\x7c\x0f\x72\x1b\x7c\x09\x6a\x1d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x0d\x6a\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x8c\x93\x79\x02\x79\x02\x23\x00\x74\x14\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x72\x14\x7d\x0b\x7c\x02\x81\x08\x02\x00\x7c\x02\x7c\x0b\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x59\x00\x64\x02\x7d\x0b\x7e\x0b\x8c\xec\x64\x02\x7d\x0b\x7e\x0b\x77\x01\x77\x00\x78\x03\x59\x00\x77\x01\x23\x00\x74\x18\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x72\x03\x01\x00\x59\x00\x6e\x48\x77\x00\x78\x03\x59\x00\x77\x01\x23\x00\x74\x14\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x72\x16\x7d\x0b\x7c\x02\x81\x08\x02\x00\x7c\x02\x7c\x0b\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x64\x04\x7d\x0c\x59\x00\x64\x02\x7d\x0b\x7e\x0b\x6e\x2a\x64\x02\x7d\x0b\x7e\x0b\x77\x01\x77\x00\x78\x03\x59\x00\x77\x01\x23\x00\x74\x14\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x72\x05\x01\x00\x64\x03\x7d\x0e\x59\x00\x8c\xd4\x77\x00\x78\x03\x59\x00\x77\x01\x23\x00\x74\x14\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x72\x05\x01\x00\x64\x03\x7d\x10\x59\x00\x8c\x92\x77\x00\x78\x03\x59\x00\x77\x01\x64\x02\x64\x02\x64\x02\xab\x02\x00\x00\x00\x00\x00\x00\x01\x00\x6e\x0c\x23\x00\x31\x00\x73\x01\x77\x02\x01\x00\x59\x00\x01\x00\x01\x00\x6e\x03\x78\x03\x59\x00\x77\x01\x7c\x0c\x72\x02\x90\x01\x8c\x60\x7c\x01\x72\x3d\x7c\x00\x7c\x07\x7c\x08\x66\x03\x96\x01\x97\x01\x01\x00\x74\x23\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x07\xab\x01\x00\x00\x00\x00\x00\x00\x44\x00\x5d\x27\x00\x00\x7d\x11\x02\x00\x7c\x06\x7c\x00\x7c\x11\xab\x02\x00\x00\x00\x00\x00\x00\x7d\x12\x7c\x03\x73\x09\x02\x00\x7c\x05\x7c\x12\xab\x01\x00\x00\x00\x00\x00\x00\x72\x01\x8c\x17\x7c\x04\x6a\x1d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x12\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x8c\x29\x04\x00\x6e\x35\x7c\x04\x6a\x1d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x7c\x07\x7c\x08\x66\x03\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x74\x23\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x09\xab\x01\x00\x00\x00\x00\x00\x00\x44\x00\x5d\x13\x00\x00\x7d\x12\x7c\x04\x6a\x1d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x12\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x8c\x15\x04\x00\x7c\x04\x72\x02\x90\x01\x8c\xd6\x90\x01\x8c\x08\xad\x03\x77\x01",
+ ._co_firsttraceable = 2,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+os_toplevel_consts_85 = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ &_Py_ID(follow_symlinks),
+ &_Py_ID(dir_fd),
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[1283];
+ }
+os_toplevel_consts_86_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 1282,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x44\x69\x72\x65\x63\x74\x6f\x72\x79\x20\x74\x72\x65\x65\x20\x67\x65\x6e\x65\x72\x61\x74\x6f\x72\x2e\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x54\x68\x69\x73\x20\x62\x65\x68\x61\x76\x65\x73\x20\x65\x78\x61\x63\x74\x6c\x79\x20\x6c\x69\x6b\x65\x20\x77\x61\x6c\x6b\x28\x29\x2c\x20\x65\x78\x63\x65\x70\x74\x20\x74\x68\x61\x74\x20\x69\x74\x20\x79\x69\x65\x6c\x64\x73\x20\x61\x20\x34\x2d\x74\x75\x70\x6c\x65\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x64\x69\x72\x70\x61\x74\x68\x2c\x20\x64\x69\x72\x6e\x61\x6d\x65\x73\x2c\x20\x66\x69\x6c\x65\x6e\x61\x6d\x65\x73\x2c\x20\x64\x69\x72\x66\x64\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x60\x64\x69\x72\x70\x61\x74\x68\x60\x2c\x20\x60\x64\x69\x72\x6e\x61\x6d\x65\x73\x60\x20\x61\x6e\x64\x20\x60\x66\x69\x6c\x65\x6e\x61\x6d\x65\x73\x60\x20\x61\x72\x65\x20\x69\x64\x65\x6e\x74\x69\x63\x61\x6c\x20\x74\x6f\x20\x77\x61\x6c\x6b\x28\x29\x20\x6f\x75\x74\x70\x75\x74\x2c\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x61\x6e\x64\x20\x60\x64\x69\x72\x66\x64\x60\x20\x69\x73\x20\x61\x20\x66\x69\x6c\x65\x20\x64\x65\x73\x63\x72\x69\x70\x74\x6f\x72\x20\x72\x65\x66\x65\x72\x72\x69\x6e\x67\x20\x74\x6f\x20\x74\x68\x65\x20\x64\x69\x72\x65\x63\x74\x6f\x72\x79\x20\x60\x64\x69\x72\x70\x61\x74\x68\x60\x2e\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x54\x68\x65\x20\x61\x64\x76\x61\x6e\x74\x61\x67\x65\x20\x6f\x66\x20\x66\x77\x61\x6c\x6b\x28\x29\x20\x6f\x76\x65\x72\x20\x77\x61\x6c\x6b\x28\x29\x20\x69\x73\x20\x74\x68\x61\x74\x20\x69\x74\x27\x73\x20\x73\x61\x66\x65\x20\x61\x67\x61\x69\x6e\x73\x74\x20\x73\x79\x6d\x6c\x69\x6e\x6b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x72\x61\x63\x65\x73\x20\x28\x77\x68\x65\x6e\x20\x66\x6f\x6c\x6c\x6f\x77\x5f\x73\x79\x6d\x6c\x69\x6e\x6b\x73\x20\x69\x73\x20\x46\x61\x6c\x73\x65\x29\x2e\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x49\x66\x20\x64\x69\x72\x5f\x66\x64\x20\x69\x73\x20\x6e\x6f\x74\x20\x4e\x6f\x6e\x65\x2c\x20\x69\x74\x20\x73\x68\x6f\x75\x6c\x64\x20\x62\x65\x20\x61\x20\x66\x69\x6c\x65\x20\x64\x65\x73\x63\x72\x69\x70\x74\x6f\x72\x20\x6f\x70\x65\x6e\x20\x74\x6f\x20\x61\x20\x64\x69\x72\x65\x63\x74\x6f\x72\x79\x2c\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x61\x6e\x64\x20\x74\x6f\x70\x20\x73\x68\x6f\x75\x6c\x64\x20\x62\x65\x20\x72\x65\x6c\x61\x74\x69\x76\x65\x3b\x20\x74\x6f\x70\x20\x77\x69\x6c\x6c\x20\x74\x68\x65\x6e\x20\x62\x65\x20\x72\x65\x6c\x61\x74\x69\x76\x65\x20\x74\x6f\x20\x74\x68\x61\x74\x20\x64\x69\x72\x65\x63\x74\x6f\x72\x79\x2e\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x28\x64\x69\x72\x5f\x66\x64\x20\x69\x73\x20\x61\x6c\x77\x61\x79\x73\x20\x73\x75\x70\x70\x6f\x72\x74\x65\x64\x20\x66\x6f\x72\x20\x66\x77\x61\x6c\x6b\x2e\x29\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x43\x61\x75\x74\x69\x6f\x6e\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x53\x69\x6e\x63\x65\x20\x66\x77\x61\x6c\x6b\x28\x29\x20\x79\x69\x65\x6c\x64\x73\x20\x66\x69\x6c\x65\x20\x64\x65\x73\x63\x72\x69\x70\x74\x6f\x72\x73\x2c\x20\x74\x68\x6f\x73\x65\x20\x61\x72\x65\x20\x6f\x6e\x6c\x79\x20\x76\x61\x6c\x69\x64\x20\x75\x6e\x74\x69\x6c\x20\x74\x68\x65\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x6e\x65\x78\x74\x20\x69\x74\x65\x72\x61\x74\x69\x6f\x6e\x20\x73\x74\x65\x70\x2c\x20\x73\x6f\x20\x79\x6f\x75\x20\x73\x68\x6f\x75\x6c\x64\x20\x64\x75\x70\x28\x29\x20\x74\x68\x65\x6d\x20\x69\x66\x20\x79\x6f\x75\x20\x77\x61\x6e\x74\x20\x74\x6f\x20\x6b\x65\x65\x70\x20\x74\x68\x65\x6d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x66\x6f\x72\x20\x61\x20\x6c\x6f\x6e\x67\x65\x72\x20\x70\x65\x72\x69\x6f\x64\x2e\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x45\x78\x61\x6d\x70\x6c\x65\x3a\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x69\x6d\x70\x6f\x72\x74\x20\x6f\x73\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x66\x6f\x72\x20\x72\x6f\x6f\x74\x2c\x20\x64\x69\x72\x73\x2c\x20\x66\x69\x6c\x65\x73\x2c\x20\x72\x6f\x6f\x74\x66\x64\x20\x69\x6e\x20\x6f\x73\x2e\x66\x77\x61\x6c\x6b\x28\x27\x70\x79\x74\x68\x6f\x6e\x2f\x4c\x69\x62\x2f\x65\x6d\x61\x69\x6c\x27\x29\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x70\x72\x69\x6e\x74\x28\x72\x6f\x6f\x74\x2c\x20\x22\x63\x6f\x6e\x73\x75\x6d\x65\x73\x22\x2c\x20\x65\x6e\x64\x3d\x22\x22\x29\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x70\x72\x69\x6e\x74\x28\x73\x75\x6d\x28\x6f\x73\x2e\x73\x74\x61\x74\x28\x6e\x61\x6d\x65\x2c\x20\x64\x69\x72\x5f\x66\x64\x3d\x72\x6f\x6f\x74\x66\x64\x29\x2e\x73\x74\x5f\x73\x69\x7a\x65\x20\x66\x6f\x72\x20\x6e\x61\x6d\x65\x20\x69\x6e\x20\x66\x69\x6c\x65\x73\x29\x2c\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x65\x6e\x64\x3d\x22\x22\x29\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x70\x72\x69\x6e\x74\x28\x22\x62\x79\x74\x65\x73\x20\x69\x6e\x22\x2c\x20\x6c\x65\x6e\x28\x66\x69\x6c\x65\x73\x29\x2c\x20\x22\x6e\x6f\x6e\x2d\x64\x69\x72\x65\x63\x74\x6f\x72\x79\x20\x66\x69\x6c\x65\x73\x22\x29\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x69\x66\x20\x27\x43\x56\x53\x27\x20\x69\x6e\x20\x64\x69\x72\x73\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x64\x69\x72\x73\x2e\x72\x65\x6d\x6f\x76\x65\x28\x27\x43\x56\x53\x27\x29\x20\x20\x23\x20\x64\x6f\x6e\x27\x74\x20\x76\x69\x73\x69\x74\x20\x43\x56\x53\x20\x64\x69\x72\x65\x63\x74\x6f\x72\x69\x65\x73\x0a\x20\x20\x20\x20\x20\x20\x20\x20",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[9];
+ }
+os_toplevel_consts_86_consts_1 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 8,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "os.fwalk",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+os_toplevel_consts_86_consts_4 = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ &_Py_ID(dir_fd),
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[6];
+ }_object;
+ }
+os_toplevel_consts_86_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 6,
+ },
+ .ob_item = {
+ & os_toplevel_consts_86_consts_0._ascii.ob_base,
+ & os_toplevel_consts_86_consts_1._ascii.ob_base,
+ Py_False,
+ & os_toplevel_consts_85._object.ob_base.ob_base,
+ & os_toplevel_consts_86_consts_4._object.ob_base.ob_base,
+ Py_None,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[9];
+ }
+const_str_O_RDONLY = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 8,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "O_RDONLY",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[7];
+ }
+const_str__fwalk = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 6,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_fwalk",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[15];
+ }_object;
+ }
+os_toplevel_consts_86_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 15,
+ },
+ .ob_item = {
+ & const_str_sys._ascii.ob_base,
+ & const_str_audit._ascii.ob_base,
+ & const_str_fspath._ascii.ob_base,
+ & const_str_stat._ascii.ob_base,
+ &_Py_ID(open),
+ & const_str_O_RDONLY._ascii.ob_base,
+ & const_str_st._ascii.ob_base,
+ & const_str_S_ISDIR._ascii.ob_base,
+ & const_str_st_mode._ascii.ob_base,
+ &_Py_ID(path),
+ & const_str_samestat._ascii.ob_base,
+ & const_str__fwalk._ascii.ob_base,
+ &_Py_ID(isinstance),
+ &_Py_ID(bytes),
+ &_Py_ID(close),
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[6];
+ }
+const_str_fwalk = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 5,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "fwalk",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[181];
+ }
+os_toplevel_consts_86_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 180,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\xe8\x00\xf8\x80\x00\xf4\x42\x01\x00\x09\x0c\x8f\x09\x89\x09\x90\x2a\x98\x63\xa0\x37\xa8\x47\xb0\x5f\xc0\x66\xd4\x08\x4d\xdc\x0e\x14\x90\x53\x8b\x6b\x88\x03\xf1\x06\x00\x10\x1f\xdc\x16\x1a\x98\x33\xb0\x05\xb8\x66\xd4\x16\x45\x88\x47\xdc\x10\x14\x90\x53\x9c\x28\xa8\x36\xd4\x10\x32\x88\x05\xf0\x02\x06\x09\x19\xd9\x10\x1f\xa4\x42\xa7\x4a\xa1\x4a\xa8\x77\xaf\x7f\xa9\x7f\xd4\x24\x3f\xdc\x24\x28\xa7\x4d\xa1\x4d\xb0\x27\xbc\x34\xc0\x05\xbb\x3b\xd4\x24\x47\xdc\x1b\x21\xa0\x25\xa8\x13\xac\x6a\xb8\x13\xbc\x65\xd3\x2e\x44\xd8\x22\x29\xa8\x37\xb0\x4f\xf3\x03\x01\x1c\x45\x01\xf7\x00\x01\x11\x45\x01\xf0\x00\x01\x11\x45\x01\xf4\x06\x00\x0d\x12\x90\x25\x8d\x4c\xf0\x07\x01\x11\x45\x01\xf9\xf4\x06\x00\x0d\x12\x90\x25\x8d\x4c\xfc",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[50];
+ }
+os_toplevel_consts_86_exceptiontable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 49,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x82\x41\x08\x43\x0f\x01\xc1\x0b\x41\x21\x42\x3f\x00\xc2\x2c\x01\x42\x3d\x04\xc2\x2d\x04\x42\x3f\x00\xc2\x31\x0c\x43\x0f\x01\xc2\x3d\x01\x42\x3f\x00\xc2\x3f\x0d\x43\x0c\x03\xc3\x0c\x03\x43\x0f\x01",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[8];
+ }
+const_str_orig_st = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 7,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "orig_st",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[6];
+ }
+const_str_topfd = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 5,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "topfd",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[7];
+ }_object;
+ }
+os_toplevel_consts_86_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 7,
+ },
+ .ob_item = {
+ &_Py_ID(top),
+ & const_str_topdown._ascii.ob_base,
+ & const_str_onerror._ascii.ob_base,
+ &_Py_ID(follow_symlinks),
+ &_Py_ID(dir_fd),
+ & const_str_orig_st._ascii.ob_base,
+ & const_str_topfd._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(418)
+os_toplevel_consts_86 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 209,
+ },
+ .co_consts = & os_toplevel_consts_86_consts._object.ob_base.ob_base,
+ .co_names = & os_toplevel_consts_86_names._object.ob_base.ob_base,
+ .co_exceptiontable = & os_toplevel_consts_86_exceptiontable.ob_base.ob_base,
+ .co_flags = 35,
+ .co_argcount = 3,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 2,
+ .co_framesize = 15 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 8,
+ .co_firstlineno = 437,
+ .co_nlocalsplus = 7,
+ .co_nlocals = 7,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 608,
+ .co_localsplusnames = & os_toplevel_consts_86_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_46_consts_9_localspluskinds.ob_base.ob_base,
+ .co_filename = & os_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = & const_str_fwalk._ascii.ob_base,
+ .co_qualname = & const_str_fwalk._ascii.ob_base,
+ .co_linetable = & os_toplevel_consts_86_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x4b\x00\x01\x00\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x01\x7c\x00\x7c\x01\x7c\x02\x7c\x03\x7c\x04\xab\x06\x00\x00\x00\x00\x00\x00\x01\x00\x74\x05\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x00\x7c\x03\x73\x0e\x74\x07\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x64\x02\x7c\x04\xac\x03\xab\x03\x00\x00\x00\x00\x00\x00\x7d\x05\x74\x09\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x74\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x04\xac\x04\xab\x03\x00\x00\x00\x00\x00\x00\x7d\x06\x09\x00\x7c\x03\x73\x3e\x74\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7f\x05\x6a\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x72\x45\x74\x13\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x14\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x05\x74\x07\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x06\xab\x01\x00\x00\x00\x00\x00\x00\xab\x02\x00\x00\x00\x00\x00\x00\x72\x26\x74\x17\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x06\x7c\x00\x74\x19\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x74\x1a\x00\x00\x00\x00\x00\x00\x00\x00\xab\x02\x00\x00\x00\x00\x00\x00\x7c\x01\x7c\x02\x7c\x03\xab\x06\x00\x00\x00\x00\x00\x00\x45\x00\x64\x05\x7b\x03\x00\x00\x96\x03\x97\x02\x86\x05\x05\x00\x01\x00\x74\x1d\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x06\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x79\x05\x37\x00\x8c\x10\x23\x00\x74\x1d\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x06\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x77\x00\x78\x03\x59\x00\x77\x01\xad\x03\x77\x01",
+ ._co_firsttraceable = 2,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+os_toplevel_consts_87_consts_2 = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ &_Py_ID(dir_fd),
+ &_Py_ID(follow_symlinks),
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+os_toplevel_consts_87_consts_3 = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ &_Py_ID(follow_symlinks),
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[5];
+ }_object;
+ }
+os_toplevel_consts_87_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 5,
+ },
+ .ob_item = {
+ Py_None,
+ Py_False,
+ & os_toplevel_consts_87_consts_2._object.ob_base.ob_base,
+ & os_toplevel_consts_87_consts_3._object.ob_base.ob_base,
+ & os_toplevel_consts_86_consts_4._object.ob_base.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[16];
+ }_object;
+ }
+os_toplevel_consts_87_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 16,
+ },
+ .ob_item = {
+ & const_str_scandir._ascii.ob_base,
+ &_Py_ID(name),
+ & const_str_fsencode._ascii.ob_base,
+ & const_str_is_dir._ascii.ob_base,
+ &_Py_ID(append),
+ & const_str_OSError._ascii.ob_base,
+ & const_str_is_symlink._ascii.ob_base,
+ & const_str_zip._ascii.ob_base,
+ & const_str_stat._ascii.ob_base,
+ &_Py_ID(open),
+ & const_str_O_RDONLY._ascii.ob_base,
+ &_Py_ID(path),
+ & const_str_samestat._ascii.ob_base,
+ &_Py_ID(join),
+ & const_str__fwalk._ascii.ob_base,
+ &_Py_ID(close),
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[476];
+ }
+os_toplevel_consts_87_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 475,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\xe8\x00\xf8\x80\x00\xf4\x0a\x00\x16\x1d\x98\x55\x93\x5e\x88\x0a\xd8\x0f\x11\x88\x04\xd8\x12\x14\x88\x07\xd9\x1a\x21\xa1\x5f\x91\x24\xb8\x22\x88\x07\xd8\x15\x1f\xf2\x00\x11\x09\x19\x88\x45\xd8\x13\x18\x97\x3a\x91\x3a\x88\x44\xd9\x0f\x16\xdc\x17\x1f\xa0\x04\x93\x7e\x90\x04\xf0\x02\x0d\x0d\x19\xd8\x13\x18\x97\x3c\x91\x3c\x94\x3e\xd8\x14\x18\x97\x4b\x91\x4b\xa0\x04\xd4\x14\x25\xd8\x17\x1e\xd0\x17\x2a\xd8\x18\x1f\x9f\x0e\x99\x0e\xa0\x75\xd5\x18\x2d\xe0\x14\x1b\x97\x4e\x91\x4e\xa0\x34\xd4\x14\x28\xf8\xf0\x15\x11\x09\x19\xf1\x26\x00\x0c\x13\xd8\x12\x19\x98\x34\xa0\x17\xa8\x25\xd0\x12\x2f\xd2\x0c\x2f\xe0\x1c\x23\x98\x4f\x91\x44\xb4\x13\xb0\x54\xb8\x37\xd3\x31\x43\xf2\x00\x14\x09\x1d\x88\x44\xf0\x02\x0c\x0d\x19\xd9\x17\x26\xd9\x17\x1e\xdc\x22\x26\xa0\x74\xb0\x45\xc8\x35\xd4\x22\x51\x99\x07\xe0\x1f\x26\xd0\x1f\x32\xd1\x18\x32\xd8\x26\x2a\x99\x0b\x98\x04\x98\x65\xd8\x22\x27\xa7\x2a\xa1\x2a\xb8\x55\xa0\x2a\xd3\x22\x43\x98\x07\xdc\x18\x1c\x98\x54\xa4\x38\xb0\x45\xd4\x18\x3a\x90\x05\xf0\x0a\x06\x0d\x1d\xd9\x13\x22\xa4\x64\xa7\x6d\xa1\x6d\xb0\x47\xbc\x54\xc0\x25\xbb\x5b\xd4\x26\x49\xdc\x1e\x22\x9f\x69\x99\x69\xa8\x07\xb0\x14\xd3\x1e\x36\x90\x47\xdc\x1f\x25\xa0\x65\xa8\x57\xb0\x67\xd8\x26\x2d\xa8\x77\xb8\x0f\xf3\x03\x01\x20\x49\x01\xf7\x00\x01\x15\x49\x01\xf0\x00\x01\x15\x49\x01\xf4\x06\x00\x11\x16\x90\x65\x95\x0c\xf0\x29\x14\x09\x1d\xf1\x2c\x00\x10\x17\xd8\x12\x19\x98\x34\xa0\x17\xa8\x25\xd0\x12\x2f\xd3\x0c\x2f\xf0\x03\x00\x10\x17\xf8\xf4\x43\x01\x00\x14\x1b\xf2\x00\x06\x0d\x19\xf0\x02\x05\x11\x19\xe0\x17\x1c\xd7\x17\x27\xd1\x17\x27\xd4\x17\x29\xd8\x18\x1f\x9f\x0e\x99\x0e\xa0\x74\xd4\x18\x2c\xf9\xdc\x17\x1e\xf2\x00\x01\x11\x19\xd9\x14\x18\xf0\x03\x01\x11\x19\xfd\xf0\x0b\x06\x0d\x19\xfb\xf4\x2a\x00\x14\x1b\xf2\x00\x03\x0d\x19\xd8\x13\x1a\xd0\x13\x26\xd9\x14\x1b\x98\x43\x94\x4c\xdd\x10\x18\xfb\xf0\x07\x03\x0d\x19\xfa\xf0\x0e\x01\x15\x49\x01\xf9\xf4\x06\x00\x11\x16\x90\x65\x95\x0c\xfc",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[158];
+ }
+os_toplevel_consts_87_exceptiontable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 157,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x82\x36\x46\x3d\x01\xb9\x41\x06\x45\x08\x02\xc1\x3f\x1f\x46\x3d\x01\xc2\x1f\x41\x00\x46\x0a\x02\xc3\x20\x41\x0a\x46\x2d\x02\xc4\x2a\x01\x46\x2b\x06\xc4\x2b\x04\x46\x2d\x02\xc4\x2f\x19\x46\x3d\x01\xc5\x08\x09\x46\x07\x05\xc5\x12\x21\x45\x34\x04\xc5\x33\x01\x46\x07\x05\xc5\x34\x09\x46\x00\x07\xc5\x3d\x02\x46\x07\x05\xc5\x3f\x01\x46\x00\x07\xc6\x00\x03\x46\x07\x05\xc6\x03\x03\x46\x3d\x01\xc6\x06\x01\x46\x07\x05\xc6\x07\x03\x46\x3d\x01\xc6\x0a\x09\x46\x28\x05\xc6\x13\x0a\x46\x23\x05\xc6\x1d\x06\x46\x3d\x01\xc6\x23\x05\x46\x28\x05\xc6\x28\x03\x46\x3d\x01\xc6\x2b\x01\x46\x2d\x02\xc6\x2d\x0d\x46\x3a\x05\xc6\x3a\x03\x46\x3d\x01",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[8];
+ }
+const_str_toppath = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 7,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "toppath",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[8];
+ }
+const_str_isbytes = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 7,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "isbytes",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[8];
+ }
+const_str_entries = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 7,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "entries",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[6];
+ }
+const_str_dirfd = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 5,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "dirfd",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[4];
+ }
+const_str_err = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 3,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "err",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[16];
+ }_object;
+ }
+os_toplevel_consts_87_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 16,
+ },
+ .ob_item = {
+ & const_str_topfd._ascii.ob_base,
+ & const_str_toppath._ascii.ob_base,
+ & const_str_isbytes._ascii.ob_base,
+ & const_str_topdown._ascii.ob_base,
+ & const_str_onerror._ascii.ob_base,
+ &_Py_ID(follow_symlinks),
+ & const_str_scandir_it._ascii.ob_base,
+ & const_str_dirs._ascii.ob_base,
+ & const_str_nondirs._ascii.ob_base,
+ & const_str_entries._ascii.ob_base,
+ & const_str_entry._ascii.ob_base,
+ &_Py_ID(name),
+ & const_str_orig_st._ascii.ob_base,
+ & const_str_dirfd._ascii.ob_base,
+ & const_str_err._ascii.ob_base,
+ & const_str_dirpath._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[17];
+ }
+os_toplevel_consts_87_localspluskinds = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 16,
+ },
+ .ob_shash = -1,
+ .ob_sval = " ",
+};
+static
+ struct _PyCode_DEF(894)
+os_toplevel_consts_87 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 447,
+ },
+ .co_consts = & os_toplevel_consts_87_consts._object.ob_base.ob_base,
+ .co_names = & os_toplevel_consts_87_names._object.ob_base.ob_base,
+ .co_exceptiontable = & os_toplevel_consts_87_exceptiontable.ob_base.ob_base,
+ .co_flags = 35,
+ .co_argcount = 6,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 25 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 9,
+ .co_firstlineno = 485,
+ .co_nlocalsplus = 16,
+ .co_nlocals = 16,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 609,
+ .co_localsplusnames = & os_toplevel_consts_87_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & os_toplevel_consts_87_localspluskinds.ob_base.ob_base,
+ .co_filename = & os_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = & const_str__fwalk._ascii.ob_base,
+ .co_qualname = & const_str__fwalk._ascii.ob_base,
+ .co_linetable = & os_toplevel_consts_87_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x4b\x00\x01\x00\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x06\x67\x00\x7d\x07\x67\x00\x7d\x08\x7c\x03\x73\x02\x7c\x05\x72\x02\x64\x00\x6e\x01\x67\x00\x7d\x09\x7c\x06\x44\x00\x5d\x62\x00\x00\x7d\x0a\x7c\x0a\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7d\x0b\x7c\x02\x72\x0b\x74\x05\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x0b\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x0b\x09\x00\x7c\x0a\x6a\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x72\x25\x7c\x07\x6a\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x0b\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x7c\x09\x81\x23\x7c\x09\x6a\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x0a\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x6e\x11\x7c\x08\x6a\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x0b\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x8c\x64\x04\x00\x7c\x03\x72\x08\x7c\x01\x7c\x07\x7c\x08\x7c\x00\x66\x04\x96\x01\x97\x01\x01\x00\x7c\x09\x80\x02\x7c\x07\x6e\x0b\x74\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x07\x7c\x09\xab\x02\x00\x00\x00\x00\x00\x00\x44\x00\x5d\x9e\x00\x00\x7d\x0b\x09\x00\x7c\x05\x73\x2c\x7c\x03\x72\x0f\x74\x11\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x0b\x7c\x00\x64\x01\xac\x02\xab\x03\x00\x00\x00\x00\x00\x00\x7d\x0c\x6e\x1b\x7c\x09\x80\x02\x4a\x00\x82\x01\x7c\x0b\x5c\x02\x00\x00\x7d\x0b\x7d\x0a\x7c\x0a\x6a\x11\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x01\xac\x03\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x0c\x74\x13\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x0b\x74\x14\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xac\x04\xab\x03\x00\x00\x00\x00\x00\x00\x7d\x0d\x09\x00\x7c\x05\x73\x1f\x74\x17\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7f\x0c\x74\x11\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x0d\xab\x01\x00\x00\x00\x00\x00\x00\xab\x02\x00\x00\x00\x00\x00\x00\x72\x2e\x74\x17\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x1a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x7c\x0b\xab\x02\x00\x00\x00\x00\x00\x00\x7d\x0f\x74\x1d\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x0d\x7c\x0f\x7c\x02\x7c\x03\x7c\x04\x7c\x05\xab\x06\x00\x00\x00\x00\x00\x00\x45\x00\x64\x00\x7b\x03\x00\x00\x96\x03\x97\x02\x86\x05\x05\x00\x01\x00\x74\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x0d\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x8c\xa0\x04\x00\x7c\x03\x73\x09\x7c\x01\x7c\x07\x7c\x08\x7c\x00\x66\x04\x96\x01\x97\x01\x01\x00\x79\x00\x79\x00\x23\x00\x74\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x72\x36\x01\x00\x09\x00\x7c\x0a\x6a\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x72\x11\x7c\x08\x6a\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x0b\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x6e\x0f\x23\x00\x74\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x72\x03\x01\x00\x59\x00\x6e\x04\x77\x00\x78\x03\x59\x00\x77\x01\x59\x00\x90\x01\x8c\x6a\x77\x00\x78\x03\x59\x00\x77\x01\x23\x00\x74\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x72\x15\x7d\x0e\x7c\x04\x81\x08\x02\x00\x7c\x04\x7c\x0e\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x59\x00\x64\x00\x7d\x0e\x7e\x0e\x90\x01\x8c\x08\x64\x00\x7d\x0e\x7e\x0e\x77\x01\x77\x00\x78\x03\x59\x00\x77\x01\x37\x00\x8c\x80\x23\x00\x74\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x0d\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x77\x00\x78\x03\x59\x00\x77\x01\xad\x03\x77\x01",
+ ._co_firsttraceable = 2,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[113];
+ }
+os_toplevel_consts_89_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 112,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x65\x78\x65\x63\x6c\x28\x66\x69\x6c\x65\x2c\x20\x2a\x61\x72\x67\x73\x29\x0a\x0a\x20\x20\x20\x20\x45\x78\x65\x63\x75\x74\x65\x20\x74\x68\x65\x20\x65\x78\x65\x63\x75\x74\x61\x62\x6c\x65\x20\x66\x69\x6c\x65\x20\x77\x69\x74\x68\x20\x61\x72\x67\x75\x6d\x65\x6e\x74\x20\x6c\x69\x73\x74\x20\x61\x72\x67\x73\x2c\x20\x72\x65\x70\x6c\x61\x63\x69\x6e\x67\x20\x74\x68\x65\x0a\x20\x20\x20\x20\x63\x75\x72\x72\x65\x6e\x74\x20\x70\x72\x6f\x63\x65\x73\x73\x2e\x20",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+os_toplevel_consts_89_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & os_toplevel_consts_89_consts_0._ascii.ob_base,
+ Py_None,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[6];
+ }
+const_str_execv = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 5,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "execv",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+os_toplevel_consts_89_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & const_str_execv._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[6];
+ }
+const_str_execl = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 5,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "execl",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[15];
+ }
+os_toplevel_consts_89_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 14,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf4\x0a\x00\x05\x0a\x88\x24\x90\x04\xd5\x04\x15",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+os_toplevel_consts_89_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ &_Py_ID(file),
+ &_Py_ID(args),
+ },
+ },
+};
+static
+ struct _PyCode_DEF(28)
+os_toplevel_consts_89 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 14,
+ },
+ .co_consts = & os_toplevel_consts_89_consts._object.ob_base.ob_base,
+ .co_names = & os_toplevel_consts_89_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 7,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 6 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 543,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 2,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 610,
+ .co_localsplusnames = & os_toplevel_consts_89_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_14_consts_2_localspluskinds.ob_base.ob_base,
+ .co_filename = & os_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = & const_str_execl._ascii.ob_base,
+ .co_qualname = & const_str_execl._ascii.ob_base,
+ .co_linetable = & os_toplevel_consts_89_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x7c\x01\xab\x02\x00\x00\x00\x00\x00\x00\x01\x00\x79\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[139];
+ }
+os_toplevel_consts_90_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 138,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x65\x78\x65\x63\x6c\x65\x28\x66\x69\x6c\x65\x2c\x20\x2a\x61\x72\x67\x73\x2c\x20\x65\x6e\x76\x29\x0a\x0a\x20\x20\x20\x20\x45\x78\x65\x63\x75\x74\x65\x20\x74\x68\x65\x20\x65\x78\x65\x63\x75\x74\x61\x62\x6c\x65\x20\x66\x69\x6c\x65\x20\x77\x69\x74\x68\x20\x61\x72\x67\x75\x6d\x65\x6e\x74\x20\x6c\x69\x73\x74\x20\x61\x72\x67\x73\x20\x61\x6e\x64\x0a\x20\x20\x20\x20\x65\x6e\x76\x69\x72\x6f\x6e\x6d\x65\x6e\x74\x20\x65\x6e\x76\x2c\x20\x72\x65\x70\x6c\x61\x63\x69\x6e\x67\x20\x74\x68\x65\x20\x63\x75\x72\x72\x65\x6e\x74\x20\x70\x72\x6f\x63\x65\x73\x73\x2e\x20",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+os_toplevel_consts_90_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ & os_toplevel_consts_90_consts_0._ascii.ob_base,
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + -1],
+ Py_None,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+os_toplevel_consts_90_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & const_str_execve._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[7];
+ }
+const_str_execle = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 6,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "execle",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[32];
+ }
+os_toplevel_consts_90_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 31,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf0\x0a\x00\x0b\x0f\x88\x72\x89\x28\x80\x43\xdc\x04\x0a\x88\x34\x90\x14\x90\x63\x90\x72\x90\x19\x98\x43\xd5\x04\x20",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+os_toplevel_consts_90_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ &_Py_ID(file),
+ &_Py_ID(args),
+ &_Py_ID(env),
+ },
+ },
+};
+static
+ struct _PyCode_DEF(46)
+os_toplevel_consts_90 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 23,
+ },
+ .co_consts = & os_toplevel_consts_90_consts._object.ob_base.ob_base,
+ .co_names = & os_toplevel_consts_90_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 7,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 9 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 6,
+ .co_firstlineno = 550,
+ .co_nlocalsplus = 3,
+ .co_nlocals = 3,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 611,
+ .co_localsplusnames = & os_toplevel_consts_90_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_3_localspluskinds.ob_base.ob_base,
+ .co_filename = & os_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = & const_str_execle._ascii.ob_base,
+ .co_qualname = & const_str_execle._ascii.ob_base,
+ .co_linetable = & os_toplevel_consts_90_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x01\x64\x01\x19\x00\x00\x00\x7d\x02\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x7c\x01\x64\x02\x64\x01\x1a\x00\x7c\x02\xab\x03\x00\x00\x00\x00\x00\x00\x01\x00\x79\x02",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[150];
+ }
+os_toplevel_consts_91_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 149,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x65\x78\x65\x63\x6c\x70\x28\x66\x69\x6c\x65\x2c\x20\x2a\x61\x72\x67\x73\x29\x0a\x0a\x20\x20\x20\x20\x45\x78\x65\x63\x75\x74\x65\x20\x74\x68\x65\x20\x65\x78\x65\x63\x75\x74\x61\x62\x6c\x65\x20\x66\x69\x6c\x65\x20\x28\x77\x68\x69\x63\x68\x20\x69\x73\x20\x73\x65\x61\x72\x63\x68\x65\x64\x20\x66\x6f\x72\x20\x61\x6c\x6f\x6e\x67\x20\x24\x50\x41\x54\x48\x29\x0a\x20\x20\x20\x20\x77\x69\x74\x68\x20\x61\x72\x67\x75\x6d\x65\x6e\x74\x20\x6c\x69\x73\x74\x20\x61\x72\x67\x73\x2c\x20\x72\x65\x70\x6c\x61\x63\x69\x6e\x67\x20\x74\x68\x65\x20\x63\x75\x72\x72\x65\x6e\x74\x20\x70\x72\x6f\x63\x65\x73\x73\x2e\x20",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+os_toplevel_consts_91_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & os_toplevel_consts_91_consts_0._ascii.ob_base,
+ Py_None,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[7];
+ }
+const_str_execvp = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 6,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "execvp",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+os_toplevel_consts_91_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & const_str_execvp._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[7];
+ }
+const_str_execlp = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 6,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "execlp",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[15];
+ }
+os_toplevel_consts_91_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 14,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf4\x0a\x00\x05\x0b\x88\x34\x90\x14\xd5\x04\x16",
+};
+static
+ struct _PyCode_DEF(28)
+os_toplevel_consts_91 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 14,
+ },
+ .co_consts = & os_toplevel_consts_91_consts._object.ob_base.ob_base,
+ .co_names = & os_toplevel_consts_91_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 7,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 6 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 558,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 2,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 612,
+ .co_localsplusnames = & os_toplevel_consts_89_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_14_consts_2_localspluskinds.ob_base.ob_base,
+ .co_filename = & os_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = & const_str_execlp._ascii.ob_base,
+ .co_qualname = & const_str_execlp._ascii.ob_base,
+ .co_linetable = & os_toplevel_consts_91_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x7c\x01\xab\x02\x00\x00\x00\x00\x00\x00\x01\x00\x79\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[180];
+ }
+os_toplevel_consts_92_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 179,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x65\x78\x65\x63\x6c\x70\x65\x28\x66\x69\x6c\x65\x2c\x20\x2a\x61\x72\x67\x73\x2c\x20\x65\x6e\x76\x29\x0a\x0a\x20\x20\x20\x20\x45\x78\x65\x63\x75\x74\x65\x20\x74\x68\x65\x20\x65\x78\x65\x63\x75\x74\x61\x62\x6c\x65\x20\x66\x69\x6c\x65\x20\x28\x77\x68\x69\x63\x68\x20\x69\x73\x20\x73\x65\x61\x72\x63\x68\x65\x64\x20\x66\x6f\x72\x20\x61\x6c\x6f\x6e\x67\x20\x24\x50\x41\x54\x48\x29\x0a\x20\x20\x20\x20\x77\x69\x74\x68\x20\x61\x72\x67\x75\x6d\x65\x6e\x74\x20\x6c\x69\x73\x74\x20\x61\x72\x67\x73\x20\x61\x6e\x64\x20\x65\x6e\x76\x69\x72\x6f\x6e\x6d\x65\x6e\x74\x20\x65\x6e\x76\x2c\x20\x72\x65\x70\x6c\x61\x63\x69\x6e\x67\x20\x74\x68\x65\x20\x63\x75\x72\x72\x65\x6e\x74\x0a\x20\x20\x20\x20\x70\x72\x6f\x63\x65\x73\x73\x2e\x20",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+os_toplevel_consts_92_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ & os_toplevel_consts_92_consts_0._ascii.ob_base,
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + -1],
+ Py_None,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[8];
+ }
+const_str_execvpe = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 7,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "execvpe",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+os_toplevel_consts_92_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & const_str_execvpe._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[8];
+ }
+const_str_execlpe = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 7,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "execlpe",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[32];
+ }
+os_toplevel_consts_92_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 31,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf0\x0c\x00\x0b\x0f\x88\x72\x89\x28\x80\x43\xdc\x04\x0b\x88\x44\x90\x24\x90\x73\x98\x02\x90\x29\x98\x53\xd5\x04\x21",
+};
+static
+ struct _PyCode_DEF(46)
+os_toplevel_consts_92 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 23,
+ },
+ .co_consts = & os_toplevel_consts_92_consts._object.ob_base.ob_base,
+ .co_names = & os_toplevel_consts_92_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 7,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 9 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 6,
+ .co_firstlineno = 565,
+ .co_nlocalsplus = 3,
+ .co_nlocals = 3,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 613,
+ .co_localsplusnames = & os_toplevel_consts_90_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_3_localspluskinds.ob_base.ob_base,
+ .co_filename = & os_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = & const_str_execlpe._ascii.ob_base,
+ .co_qualname = & const_str_execlpe._ascii.ob_base,
+ .co_linetable = & os_toplevel_consts_92_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x01\x64\x01\x19\x00\x00\x00\x7d\x02\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x7c\x01\x64\x02\x64\x01\x1a\x00\x7c\x02\xab\x03\x00\x00\x00\x00\x00\x00\x01\x00\x79\x02",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[193];
+ }
+os_toplevel_consts_93_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 192,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x65\x78\x65\x63\x76\x70\x28\x66\x69\x6c\x65\x2c\x20\x61\x72\x67\x73\x29\x0a\x0a\x20\x20\x20\x20\x45\x78\x65\x63\x75\x74\x65\x20\x74\x68\x65\x20\x65\x78\x65\x63\x75\x74\x61\x62\x6c\x65\x20\x66\x69\x6c\x65\x20\x28\x77\x68\x69\x63\x68\x20\x69\x73\x20\x73\x65\x61\x72\x63\x68\x65\x64\x20\x66\x6f\x72\x20\x61\x6c\x6f\x6e\x67\x20\x24\x50\x41\x54\x48\x29\x0a\x20\x20\x20\x20\x77\x69\x74\x68\x20\x61\x72\x67\x75\x6d\x65\x6e\x74\x20\x6c\x69\x73\x74\x20\x61\x72\x67\x73\x2c\x20\x72\x65\x70\x6c\x61\x63\x69\x6e\x67\x20\x74\x68\x65\x20\x63\x75\x72\x72\x65\x6e\x74\x20\x70\x72\x6f\x63\x65\x73\x73\x2e\x0a\x20\x20\x20\x20\x61\x72\x67\x73\x20\x6d\x61\x79\x20\x62\x65\x20\x61\x20\x6c\x69\x73\x74\x20\x6f\x72\x20\x74\x75\x70\x6c\x65\x20\x6f\x66\x20\x73\x74\x72\x69\x6e\x67\x73\x2e\x20",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+os_toplevel_consts_93_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & os_toplevel_consts_93_consts_0._ascii.ob_base,
+ Py_None,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[9];
+ }
+const_str__execvpe = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 8,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_execvpe",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+os_toplevel_consts_93_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & const_str__execvpe._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[15];
+ }
+os_toplevel_consts_93_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 14,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf4\x0c\x00\x05\x0d\x88\x54\x90\x34\xd5\x04\x18",
+};
+static
+ struct _PyCode_DEF(28)
+os_toplevel_consts_93 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 14,
+ },
+ .co_consts = & os_toplevel_consts_93_consts._object.ob_base.ob_base,
+ .co_names = & os_toplevel_consts_93_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 6 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 574,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 2,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 614,
+ .co_localsplusnames = & os_toplevel_consts_89_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_14_consts_2_localspluskinds.ob_base.ob_base,
+ .co_filename = & os_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = & const_str_execvp._ascii.ob_base,
+ .co_qualname = & const_str_execvp._ascii.ob_base,
+ .co_linetable = & os_toplevel_consts_93_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x7c\x01\xab\x02\x00\x00\x00\x00\x00\x00\x01\x00\x79\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[223];
+ }
+os_toplevel_consts_94_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 222,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x65\x78\x65\x63\x76\x70\x65\x28\x66\x69\x6c\x65\x2c\x20\x61\x72\x67\x73\x2c\x20\x65\x6e\x76\x29\x0a\x0a\x20\x20\x20\x20\x45\x78\x65\x63\x75\x74\x65\x20\x74\x68\x65\x20\x65\x78\x65\x63\x75\x74\x61\x62\x6c\x65\x20\x66\x69\x6c\x65\x20\x28\x77\x68\x69\x63\x68\x20\x69\x73\x20\x73\x65\x61\x72\x63\x68\x65\x64\x20\x66\x6f\x72\x20\x61\x6c\x6f\x6e\x67\x20\x24\x50\x41\x54\x48\x29\x0a\x20\x20\x20\x20\x77\x69\x74\x68\x20\x61\x72\x67\x75\x6d\x65\x6e\x74\x20\x6c\x69\x73\x74\x20\x61\x72\x67\x73\x20\x61\x6e\x64\x20\x65\x6e\x76\x69\x72\x6f\x6e\x6d\x65\x6e\x74\x20\x65\x6e\x76\x2c\x20\x72\x65\x70\x6c\x61\x63\x69\x6e\x67\x20\x74\x68\x65\x0a\x20\x20\x20\x20\x63\x75\x72\x72\x65\x6e\x74\x20\x70\x72\x6f\x63\x65\x73\x73\x2e\x0a\x20\x20\x20\x20\x61\x72\x67\x73\x20\x6d\x61\x79\x20\x62\x65\x20\x61\x20\x6c\x69\x73\x74\x20\x6f\x72\x20\x74\x75\x70\x6c\x65\x20\x6f\x66\x20\x73\x74\x72\x69\x6e\x67\x73\x2e\x20",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+os_toplevel_consts_94_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & os_toplevel_consts_94_consts_0._ascii.ob_base,
+ Py_None,
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[17];
+ }
+os_toplevel_consts_94_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 16,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf4\x0e\x00\x05\x0d\x88\x54\x90\x34\x98\x13\xd5\x04\x1d",
+};
+static
+ struct _PyCode_DEF(30)
+os_toplevel_consts_94 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 15,
+ },
+ .co_consts = & os_toplevel_consts_94_consts._object.ob_base.ob_base,
+ .co_names = & os_toplevel_consts_93_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 3,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 8 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 5,
+ .co_firstlineno = 582,
+ .co_nlocalsplus = 3,
+ .co_nlocals = 3,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 615,
+ .co_localsplusnames = & os_toplevel_consts_90_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_3_localspluskinds.ob_base.ob_base,
+ .co_filename = & os_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = & const_str_execvpe._ascii.ob_base,
+ .co_qualname = & const_str_execvpe._ascii.ob_base,
+ .co_linetable = & os_toplevel_consts_94_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x7c\x01\x7c\x02\xab\x03\x00\x00\x00\x00\x00\x00\x01\x00\x79\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[6];
+ }_object;
+ }
+os_toplevel_consts_95 = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 6,
+ },
+ .ob_item = {
+ & const_str_execl._ascii.ob_base,
+ & const_str_execle._ascii.ob_base,
+ & const_str_execlp._ascii.ob_base,
+ & const_str_execlpe._ascii.ob_base,
+ & const_str_execvp._ascii.ob_base,
+ & const_str_execvpe._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+os_toplevel_consts_96_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ Py_None,
+ &_Py_ID(nt),
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[13];
+ }_object;
+ }
+os_toplevel_consts_96_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 13,
+ },
+ .ob_item = {
+ & const_str_execve._ascii.ob_base,
+ & const_str_execv._ascii.ob_base,
+ & const_str_environ._ascii.ob_base,
+ &_Py_ID(path),
+ & const_str_dirname._ascii.ob_base,
+ & const_str_get_exec_path._ascii.ob_base,
+ &_Py_ID(name),
+ & const_str_fsencode._ascii.ob_base,
+ & const_str_map._ascii.ob_base,
+ &_Py_ID(join),
+ & const_str_FileNotFoundError._ascii.ob_base,
+ & const_str_NotADirectoryError._ascii.ob_base,
+ & const_str_OSError._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[232];
+ }
+os_toplevel_consts_96_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 231,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xd8\x07\x0a\x80\x7f\xdc\x14\x1a\x88\x09\xd8\x13\x17\x98\x13\x90\x2b\x89\x07\xe4\x14\x19\x88\x09\xd8\x13\x17\x90\x27\x88\x07\xdc\x0e\x15\x88\x03\xe4\x07\x0b\x87\x7c\x81\x7c\x90\x44\xd4\x07\x19\xd9\x08\x11\x90\x24\xd0\x08\x21\x98\x17\xd3\x08\x21\xd8\x08\x0e\xd8\x10\x14\x80\x49\xdc\x10\x1d\x98\x63\xd3\x10\x22\x80\x49\xdc\x07\x0b\x88\x74\x82\x7c\xdc\x0f\x17\x98\x04\x8b\x7e\x88\x04\xdc\x14\x17\x9c\x08\xa0\x29\xd3\x14\x2c\x88\x09\xd8\x0f\x18\xf2\x00\x09\x05\x1e\x88\x03\xdc\x13\x17\x97\x39\x91\x39\x98\x53\xa0\x24\xd3\x13\x27\x88\x08\xf0\x02\x07\x09\x1e\xd9\x0c\x15\x90\x68\xd0\x0c\x29\xa0\x17\xd4\x0c\x29\xf0\x07\x09\x05\x1e\xf0\x14\x00\x08\x11\xd0\x07\x1c\xd8\x0e\x17\x88\x0f\xd8\x0a\x12\x80\x4e\xf8\xf4\x11\x00\x11\x22\xd4\x23\x35\xd0\x0f\x36\xf2\x00\x01\x09\x19\xd8\x17\x18\x8d\x48\xfb\xdc\x0f\x16\xf2\x00\x03\x09\x1e\xd8\x17\x18\x88\x48\xd8\x0f\x18\xd0\x0f\x20\xd8\x1c\x1d\x90\x09\xff\xf8\xf0\x07\x03\x09\x1e\xfa",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[37];
+ }
+os_toplevel_consts_96_exceptiontable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 36,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\xc2\x09\x09\x42\x1a\x02\xc2\x1a\x0f\x43\x0c\x05\xc2\x29\x02\x42\x30\x05\xc2\x30\x0c\x43\x0c\x05\xc2\x3c\x06\x43\x07\x05\xc3\x07\x05\x43\x0c\x05",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[10];
+ }
+const_str_exec_func = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 9,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "exec_func",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[8];
+ }
+const_str_argrest = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 7,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "argrest",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[10];
+ }
+const_str_saved_exc = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 9,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "saved_exc",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[11];
+ }_object;
+ }
+os_toplevel_consts_96_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 11,
+ },
+ .ob_item = {
+ &_Py_ID(file),
+ &_Py_ID(args),
+ &_Py_ID(env),
+ & const_str_exec_func._ascii.ob_base,
+ & const_str_argrest._ascii.ob_base,
+ & const_str_saved_exc._ascii.ob_base,
+ & const_str_path_list._ascii.ob_base,
+ & const_str_dir._ascii.ob_base,
+ & const_str_fullname._ascii.ob_base,
+ &_Py_ID(e),
+ &_Py_ID(last_exc),
+ },
+ },
+};
+static
+ struct _PyCode_DEF(414)
+os_toplevel_consts_96 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 207,
+ },
+ .co_consts = & os_toplevel_consts_96_consts._object.ob_base.ob_base,
+ .co_names = & os_toplevel_consts_96_names._object.ob_base.ob_base,
+ .co_exceptiontable = & os_toplevel_consts_96_exceptiontable.ob_base.ob_base,
+ .co_flags = 3,
+ .co_argcount = 3,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 16 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 5,
+ .co_firstlineno = 593,
+ .co_nlocalsplus = 11,
+ .co_nlocals = 11,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 616,
+ .co_localsplusnames = & os_toplevel_consts_96_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_46_consts_6_localspluskinds.ob_base.ob_base,
+ .co_filename = & os_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = & const_str__execvpe._ascii.ob_base,
+ .co_qualname = & const_str__execvpe._ascii.ob_base,
+ .co_linetable = & os_toplevel_consts_96_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x02\x81\x0b\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7d\x03\x7c\x01\x7c\x02\x66\x02\x7d\x04\x6e\x0f\x74\x02\x00\x00\x00\x00\x00\x00\x00\x00\x7d\x03\x7c\x01\x66\x01\x7d\x04\x74\x04\x00\x00\x00\x00\x00\x00\x00\x00\x7d\x02\x74\x07\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x72\x0a\x02\x00\x7c\x03\x7c\x00\x67\x01\x7c\x04\xa2\x01\xad\x06\x8e\x00\x01\x00\x79\x00\x64\x00\x7d\x05\x74\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x02\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x06\x74\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x64\x01\x6b\x37\x00\x00\x72\x1b\x74\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x00\x74\x11\x00\x00\x00\x00\x00\x00\x00\x00\x74\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x06\xab\x02\x00\x00\x00\x00\x00\x00\x7d\x06\x7c\x06\x44\x00\x5d\x22\x00\x00\x7d\x07\x74\x07\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x07\x7c\x00\xab\x02\x00\x00\x00\x00\x00\x00\x7d\x08\x09\x00\x02\x00\x7c\x03\x7c\x08\x67\x01\x7c\x04\xa2\x01\xad\x06\x8e\x00\x01\x00\x8c\x24\x04\x00\x7c\x05\x81\x02\x7c\x05\x82\x01\x7f\x0a\x82\x01\x23\x00\x74\x14\x00\x00\x00\x00\x00\x00\x00\x00\x74\x16\x00\x00\x00\x00\x00\x00\x00\x00\x66\x02\x24\x00\x72\x0c\x7d\x09\x7c\x09\x7d\x0a\x59\x00\x64\x00\x7d\x09\x7e\x09\x8c\x41\x64\x00\x7d\x09\x7e\x09\x77\x01\x74\x18\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x72\x10\x7d\x09\x7c\x09\x7d\x0a\x7c\x05\x80\x02\x7c\x09\x7d\x05\x59\x00\x64\x00\x7d\x09\x7e\x09\x8c\x58\x64\x00\x7d\x09\x7e\x09\x77\x01\x77\x00\x78\x03\x59\x00\x77\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[244];
+ }
+os_toplevel_consts_97_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 243,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x52\x65\x74\x75\x72\x6e\x73\x20\x74\x68\x65\x20\x73\x65\x71\x75\x65\x6e\x63\x65\x20\x6f\x66\x20\x64\x69\x72\x65\x63\x74\x6f\x72\x69\x65\x73\x20\x74\x68\x61\x74\x20\x77\x69\x6c\x6c\x20\x62\x65\x20\x73\x65\x61\x72\x63\x68\x65\x64\x20\x66\x6f\x72\x20\x74\x68\x65\x0a\x20\x20\x20\x20\x6e\x61\x6d\x65\x64\x20\x65\x78\x65\x63\x75\x74\x61\x62\x6c\x65\x20\x28\x73\x69\x6d\x69\x6c\x61\x72\x20\x74\x6f\x20\x61\x20\x73\x68\x65\x6c\x6c\x29\x20\x77\x68\x65\x6e\x20\x6c\x61\x75\x6e\x63\x68\x69\x6e\x67\x20\x61\x20\x70\x72\x6f\x63\x65\x73\x73\x2e\x0a\x0a\x20\x20\x20\x20\x2a\x65\x6e\x76\x2a\x20\x6d\x75\x73\x74\x20\x62\x65\x20\x61\x6e\x20\x65\x6e\x76\x69\x72\x6f\x6e\x6d\x65\x6e\x74\x20\x76\x61\x72\x69\x61\x62\x6c\x65\x20\x64\x69\x63\x74\x20\x6f\x72\x20\x4e\x6f\x6e\x65\x2e\x20\x20\x49\x66\x20\x2a\x65\x6e\x76\x2a\x20\x69\x73\x20\x4e\x6f\x6e\x65\x2c\x0a\x20\x20\x20\x20\x6f\x73\x2e\x65\x6e\x76\x69\x72\x6f\x6e\x20\x77\x69\x6c\x6c\x20\x62\x65\x20\x75\x73\x65\x64\x2e\x0a\x20\x20\x20\x20",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[5];
+ }
+const_str_PATH = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 4,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "PATH",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[5];
+ }
+os_toplevel_consts_97_consts_5 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_shash = -1,
+ .ob_sval = "PATH",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[43];
+ }
+os_toplevel_consts_97_consts_6 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 42,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "env cannot contain 'PATH' and b'PATH' keys",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[7];
+ }_object;
+ }
+os_toplevel_consts_97_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 7,
+ },
+ .ob_item = {
+ & os_toplevel_consts_97_consts_0._ascii.ob_base,
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 0],
+ Py_None,
+ &_Py_ID(ignore),
+ & const_str_PATH._ascii.ob_base,
+ & os_toplevel_consts_97_consts_5.ob_base.ob_base,
+ & os_toplevel_consts_97_consts_6._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[15];
+ }
+const_str_catch_warnings = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 14,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "catch_warnings",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[13];
+ }
+const_str_simplefilter = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 12,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "simplefilter",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[23];
+ }
+const_str_supports_bytes_environ = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 22,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "supports_bytes_environ",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[16];
+ }_object;
+ }
+os_toplevel_consts_97_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 16,
+ },
+ .ob_item = {
+ &_Py_ID(warnings),
+ & const_str_environ._ascii.ob_base,
+ & const_str_catch_warnings._ascii.ob_base,
+ & const_str_simplefilter._ascii.ob_base,
+ & const_str_BytesWarning._ascii.ob_base,
+ &_Py_ID(get),
+ & const_str_TypeError._ascii.ob_base,
+ & const_str_supports_bytes_environ._ascii.ob_base,
+ & const_str_ValueError._ascii.ob_base,
+ & const_str_KeyError._ascii.ob_base,
+ &_Py_ID(isinstance),
+ &_Py_ID(bytes),
+ & const_str_fsdecode._ascii.ob_base,
+ & const_str_defpath._ascii.ob_base,
+ & const_str_split._ascii.ob_base,
+ & const_str_pathsep._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[236];
+ }
+os_toplevel_consts_97_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 235,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf3\x14\x00\x05\x14\xe0\x07\x0a\x80\x7b\xdc\x0e\x15\x88\x03\xf0\x08\x00\x0a\x12\xd7\x09\x20\xd1\x09\x20\xd3\x09\x22\xf1\x00\x14\x05\x30\xd8\x08\x10\xd7\x08\x1d\xd1\x08\x1d\x98\x68\xac\x0c\xd4\x08\x35\xf0\x04\x03\x09\x1d\xd8\x18\x1b\x9f\x07\x99\x07\xa0\x06\x9b\x0f\x88\x49\xf5\x08\x00\x0c\x22\xf0\x02\x08\x0d\x27\xd8\x1d\x20\xa0\x17\x99\x5c\x90\x0a\xf0\x08\x00\x14\x1d\xd0\x13\x28\xdc\x1a\x24\xd8\x18\x44\xf3\x03\x01\x1b\x46\x01\xf0\x00\x01\x15\x46\x01\xe0\x1c\x26\x90\x09\xe0\x0f\x18\xd0\x0f\x24\xac\x1a\xb0\x49\xbc\x75\xd4\x29\x45\xdc\x1c\x24\xa0\x59\xd3\x1c\x2f\x90\x09\xf7\x29\x14\x05\x30\xf0\x2c\x00\x08\x11\xd0\x07\x18\xdc\x14\x1b\x88\x09\xd8\x0b\x14\x8f\x3f\x89\x3f\x9c\x37\xd3\x0b\x23\xd0\x04\x23\xf8\xf4\x27\x00\x10\x19\xf2\x00\x01\x09\x1d\xd8\x18\x1c\x8a\x49\xf0\x03\x01\x09\x1d\xfb\xf4\x0c\x00\x15\x1d\x9c\x69\xd0\x13\x28\xf2\x00\x01\x0d\x15\xd9\x10\x14\xf0\x03\x01\x0d\x15\xfa\xf7\x17\x14\x05\x30\xf0\x00\x14\x05\x30\xfa",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[83];
+ }
+os_toplevel_consts_97_exceptiontable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 82,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x9d\x17\x43\x09\x03\xb5\x11\x42\x23\x02\xc1\x06\x06\x43\x09\x03\xc1\x0d\x05\x42\x34\x02\xc1\x12\x2c\x43\x09\x03\xc2\x23\x0b\x42\x31\x05\xc2\x2e\x02\x43\x09\x03\xc2\x30\x01\x42\x31\x05\xc2\x31\x03\x43\x09\x03\xc2\x34\x0f\x43\x06\x05\xc3\x03\x02\x43\x09\x03\xc3\x05\x01\x43\x06\x05\xc3\x06\x03\x43\x09\x03\xc3\x09\x05\x43\x12\x07",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[11];
+ }
+const_str_path_listb = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 10,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "path_listb",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[4];
+ }_object;
+ }
+os_toplevel_consts_97_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_item = {
+ &_Py_ID(env),
+ &_Py_ID(warnings),
+ & const_str_path_list._ascii.ob_base,
+ & const_str_path_listb._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(426)
+os_toplevel_consts_97 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 213,
+ },
+ .co_consts = & os_toplevel_consts_97_consts._object.ob_base.ob_base,
+ .co_names = & os_toplevel_consts_97_names._object.ob_base.ob_base,
+ .co_exceptiontable = & os_toplevel_consts_97_exceptiontable.ob_base.ob_base,
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 10 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 6,
+ .co_firstlineno = 625,
+ .co_nlocalsplus = 4,
+ .co_nlocals = 4,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 617,
+ .co_localsplusnames = & os_toplevel_consts_97_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_7_consts_3_localspluskinds.ob_base.ob_base,
+ .co_filename = & os_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = & const_str_get_exec_path._ascii.ob_base,
+ .co_qualname = & const_str_get_exec_path._ascii.ob_base,
+ .co_linetable = & os_toplevel_consts_97_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x64\x01\x64\x02\x6c\x00\x7d\x01\x7c\x00\x80\x06\x74\x02\x00\x00\x00\x00\x00\x00\x00\x00\x7d\x00\x7c\x01\x6a\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x35\x00\x01\x00\x7c\x01\x6a\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x03\x74\x08\x00\x00\x00\x00\x00\x00\x00\x00\xab\x02\x00\x00\x00\x00\x00\x00\x01\x00\x09\x00\x7c\x00\x6a\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x04\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x02\x74\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x72\x32\x09\x00\x7c\x00\x64\x05\x19\x00\x00\x00\x7d\x03\x7c\x02\x81\x0b\x74\x11\x00\x00\x00\x00\x00\x00\x00\x00\x64\x06\xab\x01\x00\x00\x00\x00\x00\x00\x82\x01\x7c\x03\x7d\x02\x7c\x02\x81\x1b\x74\x15\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x02\x74\x16\x00\x00\x00\x00\x00\x00\x00\x00\xab\x02\x00\x00\x00\x00\x00\x00\x72\x0b\x74\x19\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x02\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x02\x64\x02\x64\x02\x64\x02\xab\x02\x00\x00\x00\x00\x00\x00\x01\x00\x7f\x02\x80\x06\x74\x1a\x00\x00\x00\x00\x00\x00\x00\x00\x7d\x02\x7c\x02\x6a\x1d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x74\x1e\x00\x00\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x53\x00\x23\x00\x74\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x72\x05\x01\x00\x64\x02\x7d\x02\x59\x00\x8c\x6a\x77\x00\x78\x03\x59\x00\x77\x01\x23\x00\x74\x12\x00\x00\x00\x00\x00\x00\x00\x00\x74\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x66\x02\x24\x00\x72\x03\x01\x00\x59\x00\x8c\x64\x77\x00\x78\x03\x59\x00\x77\x01\x23\x00\x31\x00\x73\x01\x77\x02\x01\x00\x59\x00\x01\x00\x01\x00\x8c\x4c\x78\x03\x59\x00\x77\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+os_toplevel_consts_98 = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & const_str_MutableMapping._ascii.ob_base,
+ & const_str_Mapping._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[9];
+ }
+const_str__Environ = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 8,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_Environ",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[10];
+ }
+const_str_encodekey = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 9,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "encodekey",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[10];
+ }
+const_str_decodekey = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 9,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "decodekey",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[12];
+ }
+const_str_encodevalue = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 11,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "encodevalue",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[12];
+ }
+const_str_decodevalue = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 11,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "decodevalue",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[6];
+ }
+const_str__data = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 5,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_data",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[5];
+ }_object;
+ }
+os_toplevel_consts_99_consts_1_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 5,
+ },
+ .ob_item = {
+ & const_str_encodekey._ascii.ob_base,
+ & const_str_decodekey._ascii.ob_base,
+ & const_str_encodevalue._ascii.ob_base,
+ & const_str_decodevalue._ascii.ob_base,
+ & const_str__data._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[18];
+ }
+os_toplevel_consts_99_consts_1_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 17,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_Environ.__init__",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[40];
+ }
+os_toplevel_consts_99_consts_1_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 39,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xd8\x19\x22\x88\x04\x8c\x0e\xd8\x19\x22\x88\x04\x8c\x0e\xd8\x1b\x26\x88\x04\xd4\x08\x18\xd8\x1b\x26\x88\x04\xd4\x08\x18\xd8\x15\x19\x88\x04\x8d\x0a",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[6];
+ }_object;
+ }
+os_toplevel_consts_99_consts_1_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 6,
+ },
+ .ob_item = {
+ &_Py_ID(self),
+ &_Py_ID(data),
+ & const_str_encodekey._ascii.ob_base,
+ & const_str_decodekey._ascii.ob_base,
+ & const_str_encodevalue._ascii.ob_base,
+ & const_str_decodevalue._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(74)
+os_toplevel_consts_99_consts_1 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 37,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_1_consts._object.ob_base.ob_base,
+ .co_names = & os_toplevel_consts_99_consts_1_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 6,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 8 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 2,
+ .co_firstlineno = 673,
+ .co_nlocalsplus = 6,
+ .co_nlocals = 6,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 618,
+ .co_localsplusnames = & os_toplevel_consts_99_consts_1_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_30_consts_4_localspluskinds.ob_base.ob_base,
+ .co_filename = & os_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__init__),
+ .co_qualname = & os_toplevel_consts_99_consts_1_qualname._ascii.ob_base,
+ .co_linetable = & os_toplevel_consts_99_consts_1_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x02\x7c\x00\x5f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x03\x7c\x00\x5f\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x04\x7c\x00\x5f\x02\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x05\x7c\x00\x5f\x03\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x7c\x00\x5f\x04\x00\x00\x00\x00\x00\x00\x00\x00\x79\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[4];
+ }_object;
+ }
+os_toplevel_consts_99_consts_2_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_item = {
+ & const_str__data._ascii.ob_base,
+ & const_str_encodekey._ascii.ob_base,
+ & const_str_KeyError._ascii.ob_base,
+ & const_str_decodevalue._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[21];
+ }
+os_toplevel_consts_99_consts_2_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 20,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_Environ.__getitem__",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[79];
+ }
+os_toplevel_consts_99_consts_2_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 78,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf0\x02\x04\x09\x2a\xd8\x14\x18\x97\x4a\x91\x4a\x98\x74\x9f\x7e\x99\x7e\xa8\x63\xd3\x1f\x32\xd1\x14\x33\x88\x45\xf0\x08\x00\x10\x14\xd7\x0f\x1f\xd1\x0f\x1f\xa0\x05\xd3\x0f\x26\xd0\x08\x26\xf8\xf4\x07\x00\x10\x18\xf2\x00\x02\x09\x2a\xe4\x12\x1a\x98\x33\x93\x2d\xa0\x54\xd0\x0c\x29\xf0\x05\x02\x09\x2a\xfa",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[10];
+ }
+os_toplevel_consts_99_consts_2_exceptiontable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 9,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x82\x1e\x31\x00\xb1\x16\x41\x07\x03",
+};
+static
+ struct _PyCode_DEF(148)
+os_toplevel_consts_99_consts_2 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 74,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_1_consts._object.ob_base.ob_base,
+ .co_names = & os_toplevel_consts_99_consts_2_names._object.ob_base.ob_base,
+ .co_exceptiontable = & os_toplevel_consts_99_consts_2_exceptiontable.ob_base.ob_base,
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 7 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 680,
+ .co_nlocalsplus = 3,
+ .co_nlocals = 3,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 619,
+ .co_localsplusnames = & _collections_abc_toplevel_consts_66_consts_3_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_3_localspluskinds.ob_base.ob_base,
+ .co_filename = & os_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__getitem__),
+ .co_qualname = & os_toplevel_consts_99_consts_2_qualname._ascii.ob_base,
+ .co_linetable = & os_toplevel_consts_99_consts_2_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x09\x00\x7c\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x6a\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\xab\x01\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x7d\x02\x7c\x00\x6a\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x02\xab\x01\x00\x00\x00\x00\x00\x00\x53\x00\x23\x00\x74\x04\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x72\x0d\x01\x00\x74\x05\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\xab\x01\x00\x00\x00\x00\x00\x00\x64\x00\x82\x02\x77\x00\x78\x03\x59\x00\x77\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[7];
+ }
+const_str_putenv = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 6,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "putenv",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[4];
+ }_object;
+ }
+os_toplevel_consts_99_consts_3_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_item = {
+ & const_str_encodekey._ascii.ob_base,
+ & const_str_encodevalue._ascii.ob_base,
+ & const_str_putenv._ascii.ob_base,
+ & const_str__data._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[21];
+ }
+os_toplevel_consts_99_consts_3_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 20,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_Environ.__setitem__",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[56];
+ }
+os_toplevel_consts_99_consts_3_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 55,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xd8\x0e\x12\x8f\x6e\x89\x6e\x98\x53\xd3\x0e\x21\x88\x03\xd8\x10\x14\xd7\x10\x20\xd1\x10\x20\xa0\x15\xd3\x10\x27\x88\x05\xdc\x08\x0e\x88\x73\x90\x45\xd4\x08\x1a\xd8\x1a\x1f\x88\x04\x8f\x0a\x89\x0a\x90\x33\x8a\x0f",
+};
+static
+ struct _PyCode_DEF(126)
+os_toplevel_consts_99_consts_3 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 63,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_1_consts._object.ob_base.ob_base,
+ .co_names = & os_toplevel_consts_99_consts_3_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 3,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 7 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 688,
+ .co_nlocalsplus = 3,
+ .co_nlocals = 3,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 620,
+ .co_localsplusnames = & _collections_abc_toplevel_consts_66_consts_3_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_3_localspluskinds.ob_base.ob_base,
+ .co_filename = & os_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__setitem__),
+ .co_qualname = & os_toplevel_consts_99_consts_3_qualname._ascii.ob_base,
+ .co_linetable = & os_toplevel_consts_99_consts_3_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x00\x6a\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x01\x7c\x00\x6a\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x02\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x02\x74\x05\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x7c\x02\xab\x02\x00\x00\x00\x00\x00\x00\x01\x00\x7c\x02\x7c\x00\x6a\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x3c\x00\x00\x00\x79\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[9];
+ }
+const_str_unsetenv = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 8,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "unsetenv",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[4];
+ }_object;
+ }
+os_toplevel_consts_99_consts_4_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_item = {
+ & const_str_encodekey._ascii.ob_base,
+ & const_str_unsetenv._ascii.ob_base,
+ & const_str__data._ascii.ob_base,
+ & const_str_KeyError._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[21];
+ }
+os_toplevel_consts_99_consts_4_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 20,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_Environ.__delitem__",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[69];
+ }
+os_toplevel_consts_99_consts_4_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 68,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xd8\x15\x19\x97\x5e\x91\x5e\xa0\x43\xd3\x15\x28\x88\x0a\xdc\x08\x10\x90\x1a\xd4\x08\x1c\xf0\x02\x04\x09\x2a\xd8\x10\x14\x97\x0a\x91\x0a\x98\x3a\xd1\x10\x26\xf8\xdc\x0f\x17\xf2\x00\x02\x09\x2a\xe4\x12\x1a\x98\x33\x93\x2d\xa0\x54\xd0\x0c\x29\xf0\x05\x02\x09\x2a\xfa",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[10];
+ }
+os_toplevel_consts_99_consts_4_exceptiontable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 9,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x9e\x0d\x2c\x00\xac\x16\x41\x02\x03",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[11];
+ }
+const_str_encodedkey = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 10,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "encodedkey",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+os_toplevel_consts_99_consts_4_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ &_Py_ID(self),
+ &_Py_ID(key),
+ & const_str_encodedkey._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(138)
+os_toplevel_consts_99_consts_4 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 69,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_1_consts._object.ob_base.ob_base,
+ .co_names = & os_toplevel_consts_99_consts_4_names._object.ob_base.ob_base,
+ .co_exceptiontable = & os_toplevel_consts_99_consts_4_exceptiontable.ob_base.ob_base,
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 7 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 694,
+ .co_nlocalsplus = 3,
+ .co_nlocals = 3,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 621,
+ .co_localsplusnames = & os_toplevel_consts_99_consts_4_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_3_localspluskinds.ob_base.ob_base,
+ .co_filename = & os_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__delitem__),
+ .co_qualname = & os_toplevel_consts_99_consts_4_qualname._ascii.ob_base,
+ .co_linetable = & os_toplevel_consts_99_consts_4_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x00\x6a\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x02\x74\x03\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x02\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x09\x00\x7c\x00\x6a\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x02\x3d\x00\x79\x00\x23\x00\x74\x06\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x72\x0d\x01\x00\x74\x07\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\xab\x01\x00\x00\x00\x00\x00\x00\x64\x00\x82\x02\x77\x00\x78\x03\x59\x00\x77\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+os_toplevel_consts_99_consts_5_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ & const_str_list._ascii.ob_base,
+ & const_str__data._ascii.ob_base,
+ & const_str_decodekey._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[18];
+ }
+os_toplevel_consts_99_consts_5_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 17,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_Environ.__iter__",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[51];
+ }
+os_toplevel_consts_99_consts_5_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 50,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\xe8\x00\xf8\x80\x00\xe4\x0f\x13\x90\x44\x97\x4a\x91\x4a\xd3\x0f\x1f\x88\x04\xd8\x13\x17\xf2\x00\x01\x09\x26\x88\x43\xd8\x12\x16\x97\x2e\x91\x2e\xa0\x13\xd3\x12\x25\xd3\x0c\x25\xf1\x03\x01\x09\x26\xf9",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[5];
+ }
+os_toplevel_consts_99_consts_5_exceptiontable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x82\x31\x33\x01",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+os_toplevel_consts_99_consts_5_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ &_Py_ID(self),
+ &_Py_ID(keys),
+ &_Py_ID(key),
+ },
+ },
+};
+static
+ struct _PyCode_DEF(106)
+os_toplevel_consts_99_consts_5 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 53,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_1_consts._object.ob_base.ob_base,
+ .co_names = & os_toplevel_consts_99_consts_5_names._object.ob_base.ob_base,
+ .co_exceptiontable = & os_toplevel_consts_99_consts_5_exceptiontable.ob_base.ob_base,
+ .co_flags = 35,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 7 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 703,
+ .co_nlocalsplus = 3,
+ .co_nlocals = 3,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 622,
+ .co_localsplusnames = & os_toplevel_consts_99_consts_5_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_3_localspluskinds.ob_base.ob_base,
+ .co_filename = & os_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__iter__),
+ .co_qualname = & os_toplevel_consts_99_consts_5_qualname._ascii.ob_base,
+ .co_linetable = & os_toplevel_consts_99_consts_5_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x4b\x00\x01\x00\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x01\x7c\x01\x44\x00\x5d\x15\x00\x00\x7d\x02\x7c\x00\x6a\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x02\xab\x01\x00\x00\x00\x00\x00\x00\x96\x01\x97\x01\x01\x00\x8c\x17\x04\x00\x79\x00\xad\x03\x77\x01",
+ ._co_firsttraceable = 2,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+os_toplevel_consts_99_consts_6_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ &_Py_ID(len),
+ & const_str__data._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[17];
+ }
+os_toplevel_consts_99_consts_6_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 16,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_Environ.__len__",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[17];
+ }
+os_toplevel_consts_99_consts_6_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 16,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xdc\x0f\x12\x90\x34\x97\x3a\x91\x3a\x8b\x7f\xd0\x08\x1e",
+};
+static
+ struct _PyCode_DEF(44)
+os_toplevel_consts_99_consts_6 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 22,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_1_consts._object.ob_base.ob_base,
+ .co_names = & os_toplevel_consts_99_consts_6_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 4 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 3,
+ .co_firstlineno = 709,
+ .co_nlocalsplus = 1,
+ .co_nlocals = 1,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 623,
+ .co_localsplusnames = & importlib__bootstrap_toplevel_consts_7_consts_2_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_characters[32]),
+ .co_filename = & os_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__len__),
+ .co_qualname = & os_toplevel_consts_99_consts_6_qualname._ascii.ob_base,
+ .co_linetable = & os_toplevel_consts_99_consts_6_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+os_toplevel_consts_99_consts_7_consts_2_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & importlib__bootstrap_external_toplevel_consts_42_consts_4._ascii.ob_base,
+ Py_None,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+os_toplevel_consts_99_consts_7_consts_2_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & const_str_decodekey._ascii.ob_base,
+ & const_str_decodevalue._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[37];
+ }
+os_toplevel_consts_99_consts_7_consts_2_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 36,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_Environ.__repr__.<locals>.<genexpr>",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[63];
+ }
+os_toplevel_consts_99_consts_7_consts_2_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 62,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\xf8\xe8\x00\xf8\x80\x00\xf2\x00\x03\x24\x0a\xe1\x10\x1a\x90\x03\x90\x55\xf0\x03\x00\x10\x14\x8f\x7e\x89\x7e\x98\x63\xd3\x0f\x22\xd0\x0e\x25\xa0\x52\xa8\x04\xd7\x28\x38\xd1\x28\x38\xb8\x15\xd3\x28\x3f\xd0\x27\x42\xd4\x0c\x43\xf1\x03\x03\x24\x0a\xf9",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[5];
+ }
+os_toplevel_consts_99_consts_7_consts_2_exceptiontable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x83\x32\x35\x01",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[4];
+ }_object;
+ }
+os_toplevel_consts_99_consts_7_consts_2_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_item = {
+ & importlib__bootstrap_external_toplevel_consts_6_localsplusnames_0._ascii.ob_base,
+ &_Py_ID(key),
+ &_Py_ID(value),
+ &_Py_ID(self),
+ },
+ },
+};
+static
+ struct _PyCode_DEF(110)
+os_toplevel_consts_99_consts_7_consts_2 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 55,
+ },
+ .co_consts = & os_toplevel_consts_99_consts_7_consts_2_consts._object.ob_base.ob_base,
+ .co_names = & os_toplevel_consts_99_consts_7_consts_2_names._object.ob_base.ob_base,
+ .co_exceptiontable = & os_toplevel_consts_99_consts_7_consts_2_exceptiontable.ob_base.ob_base,
+ .co_flags = 51,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 10 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 6,
+ .co_firstlineno = 713,
+ .co_nlocalsplus = 4,
+ .co_nlocals = 3,
+ .co_ncellvars = 0,
+ .co_nfreevars = 1,
+ .co_version = 624,
+ .co_localsplusnames = & os_toplevel_consts_99_consts_7_consts_2_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_7_consts_1_consts_1_consts_3_localspluskinds.ob_base.ob_base,
+ .co_filename = & os_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_STR(anon_genexpr),
+ .co_qualname = & os_toplevel_consts_99_consts_7_consts_2_qualname._ascii.ob_base,
+ .co_linetable = & os_toplevel_consts_99_consts_7_consts_2_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x95\x01\x4b\x00\x01\x00\x97\x00\x7c\x00\x5d\x2c\x00\x00\x5c\x02\x00\x00\x7d\x01\x7d\x02\x89\x03\x6a\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\xab\x01\x00\x00\x00\x00\x00\x00\x9b\x02\x64\x00\x89\x03\x6a\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x02\xab\x01\x00\x00\x00\x00\x00\x00\x9b\x02\x9d\x03\x96\x01\x97\x01\x01\x00\x8c\x2e\x04\x00\x79\x01\xad\x03\x77\x01",
+ ._co_firsttraceable = 3,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[10];
+ }
+os_toplevel_consts_99_consts_7_consts_3 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 9,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "environ({",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[3];
+ }
+os_toplevel_consts_99_consts_7_consts_4 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 2,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "})",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[5];
+ }_object;
+ }
+os_toplevel_consts_99_consts_7_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 5,
+ },
+ .ob_item = {
+ Py_None,
+ & importlib__bootstrap_toplevel_consts_30_consts_5_consts_6._ascii.ob_base,
+ & os_toplevel_consts_99_consts_7_consts_2.ob_base.ob_base,
+ & os_toplevel_consts_99_consts_7_consts_3._ascii.ob_base,
+ & os_toplevel_consts_99_consts_7_consts_4._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+os_toplevel_consts_99_consts_7_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ &_Py_ID(join),
+ & const_str__data._ascii.ob_base,
+ &_Py_ID(items),
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[18];
+ }
+os_toplevel_consts_99_consts_7_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 17,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_Environ.__repr__",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[62];
+ }
+os_toplevel_consts_99_consts_7_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 61,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\xf8\x80\x00\xd8\x1a\x1e\x9f\x29\x99\x29\xf3\x00\x03\x24\x0a\xe0\x1e\x22\x9f\x6a\x99\x6a\xd7\x1e\x2e\xd1\x1e\x2e\xd3\x1e\x30\xf4\x05\x03\x24\x0a\xf3\x00\x03\x1b\x0a\x88\x0f\xf0\x08\x00\x12\x1c\x98\x4f\xd0\x1b\x2c\xa8\x43\xd0\x0f\x30\xd0\x08\x30",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[16];
+ }
+const_str_formatted_items = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 15,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "formatted_items",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+os_toplevel_consts_99_consts_7_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ &_Py_ID(self),
+ & const_str_formatted_items._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(116)
+os_toplevel_consts_99_consts_7 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 58,
+ },
+ .co_consts = & os_toplevel_consts_99_consts_7_consts._object.ob_base.ob_base,
+ .co_names = & os_toplevel_consts_99_consts_7_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 7 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 5,
+ .co_firstlineno = 712,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 2,
+ .co_ncellvars = 1,
+ .co_nfreevars = 0,
+ .co_version = 625,
+ .co_localsplusnames = & os_toplevel_consts_99_consts_7_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_26_localspluskinds.ob_base.ob_base,
+ .co_filename = & os_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__repr__),
+ .co_qualname = & os_toplevel_consts_99_consts_7_qualname._ascii.ob_base,
+ .co_linetable = & os_toplevel_consts_99_consts_7_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x87\x00\x97\x00\x64\x01\x6a\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x88\x00\x66\x01\x64\x02\x84\x08\x89\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x44\x00\xab\x00\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x01\x64\x03\x7c\x01\x9b\x00\x64\x04\x9d\x03\x53\x00",
+ ._co_firsttraceable = 1,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+os_toplevel_consts_99_consts_8_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ &_Py_ID(dict),
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[14];
+ }
+os_toplevel_consts_99_consts_8_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 13,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_Environ.copy",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[13];
+ }
+os_toplevel_consts_99_consts_8_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 12,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xdc\x0f\x13\x90\x44\x8b\x7a\xd0\x08\x19",
+};
+static
+ struct _PyCode_DEF(24)
+os_toplevel_consts_99_consts_8 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 12,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_1_consts._object.ob_base.ob_base,
+ .co_names = & os_toplevel_consts_99_consts_8_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 4 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 3,
+ .co_firstlineno = 719,
+ .co_nlocalsplus = 1,
+ .co_nlocals = 1,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 626,
+ .co_localsplusnames = & importlib__bootstrap_toplevel_consts_7_consts_2_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_characters[32]),
+ .co_filename = & os_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(copy),
+ .co_qualname = & os_toplevel_consts_99_consts_8_qualname._ascii.ob_base,
+ .co_linetable = & os_toplevel_consts_99_consts_8_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[20];
+ }
+os_toplevel_consts_99_consts_9_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 19,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_Environ.setdefault",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[29];
+ }
+os_toplevel_consts_99_consts_9_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 28,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xd8\x0b\x0e\x90\x64\x89\x3f\xd8\x18\x1d\x88\x44\x90\x13\x89\x49\xd8\x0f\x13\x90\x43\x89\x79\xd0\x08\x18",
+};
+static
+ struct _PyCode_DEF(30)
+os_toplevel_consts_99_consts_9 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 15,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_1_consts._object.ob_base.ob_base,
+ .co_names = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 3,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 6 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 3,
+ .co_firstlineno = 722,
+ .co_nlocalsplus = 3,
+ .co_nlocals = 3,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 627,
+ .co_localsplusnames = & _collections_abc_toplevel_consts_66_consts_3_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_3_localspluskinds.ob_base.ob_base,
+ .co_filename = & os_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = & const_str_setdefault._ascii.ob_base,
+ .co_qualname = & os_toplevel_consts_99_consts_9_qualname._ascii.ob_base,
+ .co_linetable = & os_toplevel_consts_99_consts_9_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x01\x7c\x00\x76\x01\x72\x05\x7c\x02\x7c\x00\x7c\x01\x3c\x00\x00\x00\x7c\x00\x7c\x01\x19\x00\x00\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+os_toplevel_consts_99_consts_10_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & const_str_update._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[17];
+ }
+os_toplevel_consts_99_consts_10_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 16,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_Environ.__ior__",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[20];
+ }
+os_toplevel_consts_99_consts_10_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 19,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xd8\x08\x0c\x8f\x0b\x89\x0b\x90\x45\xd4\x08\x1a\xd8\x0f\x13\x88\x0b",
+};
+static
+ struct _PyCode_DEF(40)
+os_toplevel_consts_99_consts_10 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 20,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_1_consts._object.ob_base.ob_base,
+ .co_names = & os_toplevel_consts_99_consts_10_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 5 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 3,
+ .co_firstlineno = 727,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 2,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 628,
+ .co_localsplusnames = & importlib__bootstrap_external_toplevel_consts_58_consts_3_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_14_consts_2_localspluskinds.ob_base.ob_base,
+ .co_filename = & os_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__ior__),
+ .co_qualname = & os_toplevel_consts_99_consts_10_qualname._ascii.ob_base,
+ .co_linetable = & os_toplevel_consts_99_consts_10_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x00\x6a\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x7c\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[5];
+ }_object;
+ }
+os_toplevel_consts_99_consts_11_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 5,
+ },
+ .ob_item = {
+ &_Py_ID(isinstance),
+ & const_str_Mapping._ascii.ob_base,
+ & const_str_NotImplemented._ascii.ob_base,
+ &_Py_ID(dict),
+ & const_str_update._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[16];
+ }
+os_toplevel_consts_99_consts_11_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 15,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_Environ.__or__",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[45];
+ }
+os_toplevel_consts_99_consts_11_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 44,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xdc\x0f\x19\x98\x25\xa4\x17\xd4\x0f\x29\xdc\x13\x21\xd0\x0c\x21\xdc\x0e\x12\x90\x34\x8b\x6a\x88\x03\xd8\x08\x0b\x8f\x0a\x89\x0a\x90\x35\xd4\x08\x19\xd8\x0f\x12\x88\x0a",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+os_toplevel_consts_99_consts_11_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ &_Py_ID(self),
+ & const_str_other._ascii.ob_base,
+ & const_str_new._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(106)
+os_toplevel_consts_99_consts_11 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 53,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_1_consts._object.ob_base.ob_base,
+ .co_names = & os_toplevel_consts_99_consts_11_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 7 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 731,
+ .co_nlocalsplus = 3,
+ .co_nlocals = 3,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 629,
+ .co_localsplusnames = & os_toplevel_consts_99_consts_11_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_3_localspluskinds.ob_base.ob_base,
+ .co_filename = & os_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__or__),
+ .co_qualname = & os_toplevel_consts_99_consts_11_qualname._ascii.ob_base,
+ .co_linetable = & os_toplevel_consts_99_consts_11_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x74\x02\x00\x00\x00\x00\x00\x00\x00\x00\xab\x02\x00\x00\x00\x00\x00\x00\x73\x06\x74\x04\x00\x00\x00\x00\x00\x00\x00\x00\x53\x00\x74\x07\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x02\x7c\x02\x6a\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x7c\x02\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[17];
+ }
+os_toplevel_consts_99_consts_12_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 16,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_Environ.__ror__",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[45];
+ }
+os_toplevel_consts_99_consts_12_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 44,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xdc\x0f\x19\x98\x25\xa4\x17\xd4\x0f\x29\xdc\x13\x21\xd0\x0c\x21\xdc\x0e\x12\x90\x35\x8b\x6b\x88\x03\xd8\x08\x0b\x8f\x0a\x89\x0a\x90\x34\xd4\x08\x18\xd8\x0f\x12\x88\x0a",
+};
+static
+ struct _PyCode_DEF(106)
+os_toplevel_consts_99_consts_12 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 53,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_1_consts._object.ob_base.ob_base,
+ .co_names = & os_toplevel_consts_99_consts_11_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 7 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 738,
+ .co_nlocalsplus = 3,
+ .co_nlocals = 3,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 630,
+ .co_localsplusnames = & os_toplevel_consts_99_consts_11_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_3_localspluskinds.ob_base.ob_base,
+ .co_filename = & os_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__ror__),
+ .co_qualname = & os_toplevel_consts_99_consts_12_qualname._ascii.ob_base,
+ .co_linetable = & os_toplevel_consts_99_consts_12_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x74\x02\x00\x00\x00\x00\x00\x00\x00\x00\xab\x02\x00\x00\x00\x00\x00\x00\x73\x06\x74\x04\x00\x00\x00\x00\x00\x00\x00\x00\x53\x00\x74\x07\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x02\x7c\x02\x6a\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x7c\x02\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[14];
+ }_object;
+ }
+os_toplevel_consts_99_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 14,
+ },
+ .ob_item = {
+ & const_str__Environ._ascii.ob_base,
+ & os_toplevel_consts_99_consts_1.ob_base.ob_base,
+ & os_toplevel_consts_99_consts_2.ob_base.ob_base,
+ & os_toplevel_consts_99_consts_3.ob_base.ob_base,
+ & os_toplevel_consts_99_consts_4.ob_base.ob_base,
+ & os_toplevel_consts_99_consts_5.ob_base.ob_base,
+ & os_toplevel_consts_99_consts_6.ob_base.ob_base,
+ & os_toplevel_consts_99_consts_7.ob_base.ob_base,
+ & os_toplevel_consts_99_consts_8.ob_base.ob_base,
+ & os_toplevel_consts_99_consts_9.ob_base.ob_base,
+ & os_toplevel_consts_99_consts_10.ob_base.ob_base,
+ & os_toplevel_consts_99_consts_11.ob_base.ob_base,
+ & os_toplevel_consts_99_consts_12.ob_base.ob_base,
+ Py_None,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[15];
+ }_object;
+ }
+os_toplevel_consts_99_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 15,
+ },
+ .ob_item = {
+ &_Py_ID(__name__),
+ &_Py_ID(__module__),
+ &_Py_ID(__qualname__),
+ &_Py_ID(__init__),
+ &_Py_ID(__getitem__),
+ &_Py_ID(__setitem__),
+ &_Py_ID(__delitem__),
+ &_Py_ID(__iter__),
+ &_Py_ID(__len__),
+ &_Py_ID(__repr__),
+ &_Py_ID(copy),
+ & const_str_setdefault._ascii.ob_base,
+ &_Py_ID(__ior__),
+ &_Py_ID(__or__),
+ &_Py_ID(__ror__),
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[63];
+ }
+os_toplevel_consts_99_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 62,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x84\x00\xf2\x02\x05\x05\x1a\xf2\x0e\x06\x05\x27\xf2\x10\x04\x05\x20\xf2\x0c\x07\x05\x2a\xf2\x12\x04\x05\x26\xf2\x0c\x01\x05\x1f\xf2\x06\x05\x05\x31\xf2\x0e\x01\x05\x1a\xf2\x06\x03\x05\x19\xf2\x0a\x02\x05\x14\xf2\x08\x05\x05\x13\xf3\x0e\x05\x05\x13",
+};
+static
+ struct _PyCode_DEF(84)
+os_toplevel_consts_99 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 42,
+ },
+ .co_consts = & os_toplevel_consts_99_consts._object.ob_base.ob_base,
+ .co_names = & os_toplevel_consts_99_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 0,
+ .co_argcount = 0,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 1 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 1,
+ .co_firstlineno = 672,
+ .co_nlocalsplus = 0,
+ .co_nlocals = 0,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 631,
+ .co_localsplusnames = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_filename = & os_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = & const_str__Environ._ascii.ob_base,
+ .co_qualname = & const_str__Environ._ascii.ob_base,
+ .co_linetable = & os_toplevel_consts_99_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x65\x00\x5a\x01\x64\x00\x5a\x02\x64\x01\x84\x00\x5a\x03\x64\x02\x84\x00\x5a\x04\x64\x03\x84\x00\x5a\x05\x64\x04\x84\x00\x5a\x06\x64\x05\x84\x00\x5a\x07\x64\x06\x84\x00\x5a\x08\x64\x07\x84\x00\x5a\x09\x64\x08\x84\x00\x5a\x0a\x64\x09\x84\x00\x5a\x0b\x64\x0a\x84\x00\x5a\x0c\x64\x0b\x84\x00\x5a\x0d\x64\x0c\x84\x00\x5a\x0e\x79\x0d",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[21];
+ }
+os_toplevel_consts_101_consts_2_consts_1 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 20,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "str expected, not %s",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+os_toplevel_consts_101_consts_2_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ Py_None,
+ & os_toplevel_consts_101_consts_2_consts_1._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[5];
+ }_object;
+ }
+os_toplevel_consts_101_consts_2_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 5,
+ },
+ .ob_item = {
+ &_Py_ID(isinstance),
+ & const_str_str._ascii.ob_base,
+ & const_str_TypeError._ascii.ob_base,
+ &_Py_ID(type),
+ &_Py_ID(__name__),
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[10];
+ }
+const_str_check_str = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 9,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "check_str",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[34];
+ }
+os_toplevel_consts_101_consts_2_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 33,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_createenviron.<locals>.check_str",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[45];
+ }
+os_toplevel_consts_101_consts_2_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 44,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xdc\x13\x1d\x98\x65\xa4\x53\xd4\x13\x29\xdc\x16\x1f\xd0\x20\x36\xbc\x14\xb8\x65\xbb\x1b\xd7\x39\x4d\xd1\x39\x4d\xd1\x20\x4d\xd3\x16\x4e\xd0\x10\x4e\xd8\x13\x18\x88\x4c",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+os_toplevel_consts_101_consts_2_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ &_Py_ID(value),
+ },
+ },
+};
+static
+ struct _PyCode_DEF(104)
+os_toplevel_consts_101_consts_2 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 52,
+ },
+ .co_consts = & os_toplevel_consts_101_consts_2_consts._object.ob_base.ob_base,
+ .co_names = & os_toplevel_consts_101_consts_2_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 19,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 7 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 6,
+ .co_firstlineno = 748,
+ .co_nlocalsplus = 1,
+ .co_nlocals = 1,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 632,
+ .co_localsplusnames = & os_toplevel_consts_101_consts_2_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_characters[32]),
+ .co_filename = & os_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = & const_str_check_str._ascii.ob_base,
+ .co_qualname = & os_toplevel_consts_101_consts_2_qualname._ascii.ob_base,
+ .co_linetable = & os_toplevel_consts_101_consts_2_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x74\x02\x00\x00\x00\x00\x00\x00\x00\x00\xab\x02\x00\x00\x00\x00\x00\x00\x73\x21\x74\x05\x00\x00\x00\x00\x00\x00\x00\x00\x64\x01\x74\x07\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x6a\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7a\x06\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x82\x01\x7c\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+os_toplevel_consts_101_consts_3_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & const_str_upper._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[34];
+ }
+os_toplevel_consts_101_consts_3_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 33,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_createenviron.<locals>.encodekey",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[23];
+ }
+os_toplevel_consts_101_consts_3_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 22,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\xf8\x80\x00\xd9\x13\x19\x98\x23\x93\x3b\xd7\x13\x24\xd1\x13\x24\xd3\x13\x26\xd0\x0c\x26",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+os_toplevel_consts_101_consts_3_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ &_Py_ID(key),
+ &_Py_ID(encode),
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[3];
+ }
+os_toplevel_consts_101_consts_3_localspluskinds = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x20\x80",
+};
+static
+ struct _PyCode_DEF(48)
+os_toplevel_consts_101_consts_3 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 24,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_1_consts._object.ob_base.ob_base,
+ .co_names = & os_toplevel_consts_101_consts_3_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 19,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 5 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 3,
+ .co_firstlineno = 754,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 1,
+ .co_ncellvars = 0,
+ .co_nfreevars = 1,
+ .co_version = 633,
+ .co_localsplusnames = & os_toplevel_consts_101_consts_3_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & os_toplevel_consts_101_consts_3_localspluskinds.ob_base.ob_base,
+ .co_filename = & os_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = & const_str_encodekey._ascii.ob_base,
+ .co_qualname = & os_toplevel_consts_101_consts_3_qualname._ascii.ob_base,
+ .co_linetable = & os_toplevel_consts_101_consts_3_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x95\x01\x97\x00\x02\x00\x89\x01\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x6a\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x53\x00",
+ ._co_firsttraceable = 1,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+os_toplevel_consts_101_consts_4_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ Py_None,
+ & os_toplevel_consts_101_consts_2_consts_1._ascii.ob_base,
+ & const_str_surrogateescape._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[6];
+ }_object;
+ }
+os_toplevel_consts_101_consts_4_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 6,
+ },
+ .ob_item = {
+ &_Py_ID(isinstance),
+ & const_str_str._ascii.ob_base,
+ & const_str_TypeError._ascii.ob_base,
+ &_Py_ID(type),
+ &_Py_ID(__name__),
+ &_Py_ID(encode),
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[31];
+ }
+os_toplevel_consts_101_consts_4_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 30,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_createenviron.<locals>.encode",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[59];
+ }
+os_toplevel_consts_101_consts_4_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 58,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\xf8\x80\x00\xdc\x13\x1d\x98\x65\xa4\x53\xd4\x13\x29\xdc\x16\x1f\xd0\x20\x36\xbc\x14\xb8\x65\xbb\x1b\xd7\x39\x4d\xd1\x39\x4d\xd1\x20\x4d\xd3\x16\x4e\xd0\x10\x4e\xd8\x13\x18\x97\x3c\x91\x3c\xa0\x08\xd0\x2a\x3b\xd3\x13\x3c\xd0\x0c\x3c",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+os_toplevel_consts_101_consts_4_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ &_Py_ID(value),
+ &_Py_ID(encoding),
+ },
+ },
+};
+static
+ struct _PyCode_DEF(138)
+os_toplevel_consts_101_consts_4 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 69,
+ },
+ .co_consts = & os_toplevel_consts_101_consts_4_consts._object.ob_base.ob_base,
+ .co_names = & os_toplevel_consts_101_consts_4_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 19,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 8 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 6,
+ .co_firstlineno = 762,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 1,
+ .co_ncellvars = 0,
+ .co_nfreevars = 1,
+ .co_version = 634,
+ .co_localsplusnames = & os_toplevel_consts_101_consts_4_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & os_toplevel_consts_101_consts_3_localspluskinds.ob_base.ob_base,
+ .co_filename = & os_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(encode),
+ .co_qualname = & os_toplevel_consts_101_consts_4_qualname._ascii.ob_base,
+ .co_linetable = & os_toplevel_consts_101_consts_4_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x95\x01\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x74\x02\x00\x00\x00\x00\x00\x00\x00\x00\xab\x02\x00\x00\x00\x00\x00\x00\x73\x21\x74\x05\x00\x00\x00\x00\x00\x00\x00\x00\x64\x01\x74\x07\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x6a\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7a\x06\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x82\x01\x7c\x00\x6a\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x89\x01\x64\x02\xab\x02\x00\x00\x00\x00\x00\x00\x53\x00",
+ ._co_firsttraceable = 1,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+os_toplevel_consts_101_consts_5_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ Py_None,
+ & const_str_surrogateescape._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+os_toplevel_consts_101_consts_5_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ &_Py_ID(decode),
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[31];
+ }
+os_toplevel_consts_101_consts_5_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 30,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_createenviron.<locals>.decode",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[22];
+ }
+os_toplevel_consts_101_consts_5_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 21,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\xf8\x80\x00\xd8\x13\x18\x97\x3c\x91\x3c\xa0\x08\xd0\x2a\x3b\xd3\x13\x3c\xd0\x0c\x3c",
+};
+static
+ struct _PyCode_DEF(40)
+os_toplevel_consts_101_consts_5 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 20,
+ },
+ .co_consts = & os_toplevel_consts_101_consts_5_consts._object.ob_base.ob_base,
+ .co_names = & os_toplevel_consts_101_consts_5_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 19,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 6 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 766,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 1,
+ .co_ncellvars = 0,
+ .co_nfreevars = 1,
+ .co_version = 635,
+ .co_localsplusnames = & os_toplevel_consts_101_consts_4_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & os_toplevel_consts_101_consts_3_localspluskinds.ob_base.ob_base,
+ .co_filename = & os_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(decode),
+ .co_qualname = & os_toplevel_consts_101_consts_5_qualname._ascii.ob_base,
+ .co_linetable = & os_toplevel_consts_101_consts_5_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x95\x01\x97\x00\x7c\x00\x6a\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x89\x01\x64\x01\xab\x02\x00\x00\x00\x00\x00\x00\x53\x00",
+ ._co_firsttraceable = 1,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[6];
+ }_object;
+ }
+os_toplevel_consts_101_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 6,
+ },
+ .ob_item = {
+ Py_None,
+ &_Py_ID(nt),
+ & os_toplevel_consts_101_consts_2.ob_base.ob_base,
+ & os_toplevel_consts_101_consts_3.ob_base.ob_base,
+ & os_toplevel_consts_101_consts_4.ob_base.ob_base,
+ & os_toplevel_consts_101_consts_5.ob_base.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[7];
+ }_object;
+ }
+os_toplevel_consts_101_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 7,
+ },
+ .ob_item = {
+ &_Py_ID(name),
+ & const_str_str._ascii.ob_base,
+ & const_str_environ._ascii.ob_base,
+ &_Py_ID(items),
+ & const_str_sys._ascii.ob_base,
+ & const_str_getfilesystemencoding._ascii.ob_base,
+ & const_str__Environ._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[15];
+ }
+const_str__createenviron = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 14,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_createenviron",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[138];
+ }
+os_toplevel_consts_101_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 137,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\xf9\x80\x00\xdc\x07\x0b\x88\x74\x82\x7c\xf2\x04\x03\x09\x19\xf0\x08\x00\x12\x1b\x88\x06\xdc\x11\x14\x88\x06\xf4\x02\x01\x09\x27\xe0\x0f\x11\x88\x04\xdc\x1a\x21\x9f\x2d\x99\x2d\x9b\x2f\xf2\x00\x01\x09\x29\x89\x4a\x88\x43\x90\x15\xd8\x23\x28\x88\x44\x91\x19\x98\x33\x93\x1e\xd2\x0c\x20\xf1\x03\x01\x09\x29\xf4\x08\x00\x14\x17\xd7\x13\x2c\xd1\x13\x2c\xd3\x13\x2e\x88\x08\xf4\x02\x03\x09\x3d\xf4\x08\x01\x09\x3d\xe0\x14\x1a\x88\x09\xdc\x0f\x16\x88\x04\xdc\x0b\x13\x90\x44\xd8\x08\x11\x90\x36\xd8\x08\x0e\x90\x06\xf3\x05\x02\x0c\x18\xf0\x00\x02\x05\x18",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[8];
+ }_object;
+ }
+os_toplevel_consts_101_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 8,
+ },
+ .ob_item = {
+ & const_str_check_str._ascii.ob_base,
+ &_Py_ID(decode),
+ & const_str_encodekey._ascii.ob_base,
+ &_Py_ID(data),
+ &_Py_ID(key),
+ &_Py_ID(value),
+ &_Py_ID(encode),
+ &_Py_ID(encoding),
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[9];
+ }
+os_toplevel_consts_101_localspluskinds = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 8,
+ },
+ .ob_shash = -1,
+ .ob_sval = " @@",
+};
+static
+ struct _PyCode_DEF(246)
+os_toplevel_consts_101 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 123,
+ },
+ .co_consts = & os_toplevel_consts_101_consts._object.ob_base.ob_base,
+ .co_names = & os_toplevel_consts_101_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 0,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 15 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 7,
+ .co_firstlineno = 745,
+ .co_nlocalsplus = 8,
+ .co_nlocals = 6,
+ .co_ncellvars = 2,
+ .co_nfreevars = 0,
+ .co_version = 636,
+ .co_localsplusnames = & os_toplevel_consts_101_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & os_toplevel_consts_101_localspluskinds.ob_base.ob_base,
+ .co_filename = & os_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = & const_str__createenviron._ascii.ob_base,
+ .co_qualname = & const_str__createenviron._ascii.ob_base,
+ .co_linetable = & os_toplevel_consts_101_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x87\x06\x87\x07\x97\x00\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x01\x6b\x28\x00\x00\x72\x3a\x64\x02\x84\x00\x7d\x00\x7c\x00\x8a\x06\x74\x02\x00\x00\x00\x00\x00\x00\x00\x00\x7d\x01\x88\x06\x66\x01\x64\x03\x84\x08\x7d\x02\x69\x00\x7d\x03\x74\x04\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x44\x00\x5d\x10\x00\x00\x5c\x02\x00\x00\x7d\x04\x7d\x05\x7c\x05\x7c\x03\x02\x00\x7c\x02\x7c\x04\xab\x01\x00\x00\x00\x00\x00\x00\x3c\x00\x00\x00\x8c\x12\x04\x00\x6e\x26\x74\x09\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x8a\x07\x88\x07\x66\x01\x64\x04\x84\x08\x8a\x06\x88\x07\x66\x01\x64\x05\x84\x08\x7d\x01\x89\x06\x7d\x02\x74\x04\x00\x00\x00\x00\x00\x00\x00\x00\x7d\x03\x74\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x03\x7c\x02\x7c\x01\x89\x06\x7c\x01\xab\x05\x00\x00\x00\x00\x00\x00\x53\x00",
+ ._co_firsttraceable = 2,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[170];
+ }
+os_toplevel_consts_102_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 169,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x47\x65\x74\x20\x61\x6e\x20\x65\x6e\x76\x69\x72\x6f\x6e\x6d\x65\x6e\x74\x20\x76\x61\x72\x69\x61\x62\x6c\x65\x2c\x20\x72\x65\x74\x75\x72\x6e\x20\x4e\x6f\x6e\x65\x20\x69\x66\x20\x69\x74\x20\x64\x6f\x65\x73\x6e\x27\x74\x20\x65\x78\x69\x73\x74\x2e\x0a\x20\x20\x20\x20\x54\x68\x65\x20\x6f\x70\x74\x69\x6f\x6e\x61\x6c\x20\x73\x65\x63\x6f\x6e\x64\x20\x61\x72\x67\x75\x6d\x65\x6e\x74\x20\x63\x61\x6e\x20\x73\x70\x65\x63\x69\x66\x79\x20\x61\x6e\x20\x61\x6c\x74\x65\x72\x6e\x61\x74\x65\x20\x64\x65\x66\x61\x75\x6c\x74\x2e\x0a\x20\x20\x20\x20\x6b\x65\x79\x2c\x20\x64\x65\x66\x61\x75\x6c\x74\x20\x61\x6e\x64\x20\x74\x68\x65\x20\x72\x65\x73\x75\x6c\x74\x20\x61\x72\x65\x20\x73\x74\x72\x2e",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+os_toplevel_consts_102_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & os_toplevel_consts_102_consts_0._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+os_toplevel_consts_102_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & const_str_environ._ascii.ob_base,
+ &_Py_ID(get),
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[7];
+ }
+const_str_getenv = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 6,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "getenv",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[22];
+ }
+os_toplevel_consts_102_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 21,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf4\x08\x00\x0c\x13\x8f\x3b\x89\x3b\x90\x73\x98\x47\xd3\x0b\x24\xd0\x04\x24",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+os_toplevel_consts_102_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ &_Py_ID(key),
+ &_Py_ID(default),
+ },
+ },
+};
+static
+ struct _PyCode_DEF(46)
+os_toplevel_consts_102 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 23,
+ },
+ .co_consts = & os_toplevel_consts_102_consts._object.ob_base.ob_base,
+ .co_names = & os_toplevel_consts_102_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 6 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 779,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 2,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 637,
+ .co_localsplusnames = & os_toplevel_consts_102_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_14_consts_2_localspluskinds.ob_base.ob_base,
+ .co_filename = & os_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = & const_str_getenv._ascii.ob_base,
+ .co_qualname = & const_str_getenv._ascii.ob_base,
+ .co_linetable = & os_toplevel_consts_102_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x7c\x01\xab\x02\x00\x00\x00\x00\x00\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+os_toplevel_consts_103 = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & const_str_getenv._ascii.ob_base,
+ & const_str_supports_bytes_environ._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[23];
+ }
+os_toplevel_consts_104_consts_1 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 22,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "bytes expected, not %s",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+os_toplevel_consts_104_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ Py_None,
+ & os_toplevel_consts_104_consts_1._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[5];
+ }_object;
+ }
+os_toplevel_consts_104_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 5,
+ },
+ .ob_item = {
+ &_Py_ID(isinstance),
+ &_Py_ID(bytes),
+ & const_str_TypeError._ascii.ob_base,
+ &_Py_ID(type),
+ &_Py_ID(__name__),
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[13];
+ }
+const_str__check_bytes = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 12,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_check_bytes",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[45];
+ }
+os_toplevel_consts_104_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 44,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xdc\x0f\x19\x98\x25\xa4\x15\xd4\x0f\x27\xdc\x12\x1b\xd0\x1c\x34\xb4\x74\xb8\x45\xb3\x7b\xd7\x37\x4b\xd1\x37\x4b\xd1\x1c\x4b\xd3\x12\x4c\xd0\x0c\x4c\xd8\x0f\x14\x88\x0c",
+};
+static
+ struct _PyCode_DEF(104)
+os_toplevel_consts_104 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 52,
+ },
+ .co_consts = & os_toplevel_consts_104_consts._object.ob_base.ob_base,
+ .co_names = & os_toplevel_consts_104_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 7 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 6,
+ .co_firstlineno = 789,
+ .co_nlocalsplus = 1,
+ .co_nlocals = 1,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 638,
+ .co_localsplusnames = & os_toplevel_consts_101_consts_2_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_characters[32]),
+ .co_filename = & os_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = & const_str__check_bytes._ascii.ob_base,
+ .co_qualname = & const_str__check_bytes._ascii.ob_base,
+ .co_linetable = & os_toplevel_consts_104_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x74\x02\x00\x00\x00\x00\x00\x00\x00\x00\xab\x02\x00\x00\x00\x00\x00\x00\x73\x21\x74\x05\x00\x00\x00\x00\x00\x00\x00\x00\x64\x01\x74\x07\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x6a\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7a\x06\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x82\x01\x7c\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[180];
+ }
+os_toplevel_consts_105_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 179,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x47\x65\x74\x20\x61\x6e\x20\x65\x6e\x76\x69\x72\x6f\x6e\x6d\x65\x6e\x74\x20\x76\x61\x72\x69\x61\x62\x6c\x65\x2c\x20\x72\x65\x74\x75\x72\x6e\x20\x4e\x6f\x6e\x65\x20\x69\x66\x20\x69\x74\x20\x64\x6f\x65\x73\x6e\x27\x74\x20\x65\x78\x69\x73\x74\x2e\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x54\x68\x65\x20\x6f\x70\x74\x69\x6f\x6e\x61\x6c\x20\x73\x65\x63\x6f\x6e\x64\x20\x61\x72\x67\x75\x6d\x65\x6e\x74\x20\x63\x61\x6e\x20\x73\x70\x65\x63\x69\x66\x79\x20\x61\x6e\x20\x61\x6c\x74\x65\x72\x6e\x61\x74\x65\x20\x64\x65\x66\x61\x75\x6c\x74\x2e\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x6b\x65\x79\x2c\x20\x64\x65\x66\x61\x75\x6c\x74\x20\x61\x6e\x64\x20\x74\x68\x65\x20\x72\x65\x73\x75\x6c\x74\x20\x61\x72\x65\x20\x62\x79\x74\x65\x73\x2e",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+os_toplevel_consts_105_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & os_toplevel_consts_105_consts_0._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+os_toplevel_consts_105_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & const_str_environb._ascii.ob_base,
+ &_Py_ID(get),
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[8];
+ }
+const_str_getenvb = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 7,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "getenvb",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[22];
+ }
+os_toplevel_consts_105_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 21,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf4\x08\x00\x10\x18\x8f\x7c\x89\x7c\x98\x43\xa0\x17\xd3\x0f\x29\xd0\x08\x29",
+};
+static
+ struct _PyCode_DEF(46)
+os_toplevel_consts_105 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 23,
+ },
+ .co_consts = & os_toplevel_consts_105_consts._object.ob_base.ob_base,
+ .co_names = & os_toplevel_consts_105_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 6 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 800,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 2,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 639,
+ .co_localsplusnames = & os_toplevel_consts_102_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_14_consts_2_localspluskinds.ob_base.ob_base,
+ .co_filename = & os_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = & const_str_getenvb._ascii.ob_base,
+ .co_qualname = & const_str_getenvb._ascii.ob_base,
+ .co_linetable = & os_toplevel_consts_105_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x7c\x01\xab\x02\x00\x00\x00\x00\x00\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+os_toplevel_consts_106 = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & const_str_environb._ascii.ob_base,
+ & const_str_getenvb._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[280];
+ }
+os_toplevel_consts_107_consts_1_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 279,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x45\x6e\x63\x6f\x64\x65\x20\x66\x69\x6c\x65\x6e\x61\x6d\x65\x20\x28\x61\x6e\x20\x6f\x73\x2e\x50\x61\x74\x68\x4c\x69\x6b\x65\x2c\x20\x62\x79\x74\x65\x73\x2c\x20\x6f\x72\x20\x73\x74\x72\x29\x20\x74\x6f\x20\x74\x68\x65\x20\x66\x69\x6c\x65\x73\x79\x73\x74\x65\x6d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x20\x77\x69\x74\x68\x20\x27\x73\x75\x72\x72\x6f\x67\x61\x74\x65\x65\x73\x63\x61\x70\x65\x27\x20\x65\x72\x72\x6f\x72\x20\x68\x61\x6e\x64\x6c\x65\x72\x2c\x20\x72\x65\x74\x75\x72\x6e\x20\x62\x79\x74\x65\x73\x20\x75\x6e\x63\x68\x61\x6e\x67\x65\x64\x2e\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x4f\x6e\x20\x57\x69\x6e\x64\x6f\x77\x73\x2c\x20\x75\x73\x65\x20\x27\x73\x74\x72\x69\x63\x74\x27\x20\x65\x72\x72\x6f\x72\x20\x68\x61\x6e\x64\x6c\x65\x72\x20\x69\x66\x20\x74\x68\x65\x20\x66\x69\x6c\x65\x20\x73\x79\x73\x74\x65\x6d\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x20\x69\x73\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x27\x6d\x62\x63\x73\x27\x20\x28\x77\x68\x69\x63\x68\x20\x69\x73\x20\x74\x68\x65\x20\x64\x65\x66\x61\x75\x6c\x74\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x29\x2e\x0a\x20\x20\x20\x20\x20\x20\x20\x20",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+os_toplevel_consts_107_consts_1_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & os_toplevel_consts_107_consts_1_consts_0._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[4];
+ }_object;
+ }
+os_toplevel_consts_107_consts_1_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_item = {
+ & const_str_fspath._ascii.ob_base,
+ &_Py_ID(isinstance),
+ & const_str_str._ascii.ob_base,
+ &_Py_ID(encode),
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[27];
+ }
+os_toplevel_consts_107_consts_1_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 26,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_fscodec.<locals>.fsencode",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[48];
+ }
+os_toplevel_consts_107_consts_1_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 47,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\xf8\x80\x00\xf4\x0c\x00\x14\x1a\x98\x28\xd3\x13\x23\x88\x08\xdc\x0b\x15\x90\x68\xa4\x03\xd4\x0b\x24\xd8\x13\x1b\x97\x3f\x91\x3f\xa0\x38\xa8\x56\xd3\x13\x34\xd0\x0c\x34\xe0\x13\x1b\x88\x4f",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+os_toplevel_consts_107_consts_1_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ &_Py_ID(filename),
+ &_Py_ID(encoding),
+ &_Py_ID(errors),
+ },
+ },
+};
+static
+ struct _PyCode_DEF(98)
+os_toplevel_consts_107_consts_1 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 49,
+ },
+ .co_consts = & os_toplevel_consts_107_consts_1_consts._object.ob_base.ob_base,
+ .co_names = & os_toplevel_consts_107_consts_1_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 19,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 7 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 812,
+ .co_nlocalsplus = 3,
+ .co_nlocals = 1,
+ .co_ncellvars = 0,
+ .co_nfreevars = 2,
+ .co_version = 640,
+ .co_localsplusnames = & os_toplevel_consts_107_consts_1_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_external_toplevel_consts_72_consts_8_consts_1_localspluskinds.ob_base.ob_base,
+ .co_filename = & os_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = & const_str_fsencode._ascii.ob_base,
+ .co_qualname = & os_toplevel_consts_107_consts_1_qualname._ascii.ob_base,
+ .co_linetable = & os_toplevel_consts_107_consts_1_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x95\x02\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x00\x74\x03\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x74\x04\x00\x00\x00\x00\x00\x00\x00\x00\xab\x02\x00\x00\x00\x00\x00\x00\x72\x12\x7c\x00\x6a\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x89\x01\x89\x02\xab\x02\x00\x00\x00\x00\x00\x00\x53\x00\x7c\x00\x53\x00",
+ ._co_firsttraceable = 1,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[280];
+ }
+os_toplevel_consts_107_consts_2_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 279,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x44\x65\x63\x6f\x64\x65\x20\x66\x69\x6c\x65\x6e\x61\x6d\x65\x20\x28\x61\x6e\x20\x6f\x73\x2e\x50\x61\x74\x68\x4c\x69\x6b\x65\x2c\x20\x62\x79\x74\x65\x73\x2c\x20\x6f\x72\x20\x73\x74\x72\x29\x20\x66\x72\x6f\x6d\x20\x74\x68\x65\x20\x66\x69\x6c\x65\x73\x79\x73\x74\x65\x6d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x20\x77\x69\x74\x68\x20\x27\x73\x75\x72\x72\x6f\x67\x61\x74\x65\x65\x73\x63\x61\x70\x65\x27\x20\x65\x72\x72\x6f\x72\x20\x68\x61\x6e\x64\x6c\x65\x72\x2c\x20\x72\x65\x74\x75\x72\x6e\x20\x73\x74\x72\x20\x75\x6e\x63\x68\x61\x6e\x67\x65\x64\x2e\x20\x4f\x6e\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x57\x69\x6e\x64\x6f\x77\x73\x2c\x20\x75\x73\x65\x20\x27\x73\x74\x72\x69\x63\x74\x27\x20\x65\x72\x72\x6f\x72\x20\x68\x61\x6e\x64\x6c\x65\x72\x20\x69\x66\x20\x74\x68\x65\x20\x66\x69\x6c\x65\x20\x73\x79\x73\x74\x65\x6d\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x20\x69\x73\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x27\x6d\x62\x63\x73\x27\x20\x28\x77\x68\x69\x63\x68\x20\x69\x73\x20\x74\x68\x65\x20\x64\x65\x66\x61\x75\x6c\x74\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x29\x2e\x0a\x20\x20\x20\x20\x20\x20\x20\x20",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+os_toplevel_consts_107_consts_2_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & os_toplevel_consts_107_consts_2_consts_0._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[4];
+ }_object;
+ }
+os_toplevel_consts_107_consts_2_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_item = {
+ & const_str_fspath._ascii.ob_base,
+ &_Py_ID(isinstance),
+ &_Py_ID(bytes),
+ &_Py_ID(decode),
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[27];
+ }
+os_toplevel_consts_107_consts_2_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 26,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_fscodec.<locals>.fsdecode",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[48];
+ }
+os_toplevel_consts_107_consts_2_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 47,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\xf8\x80\x00\xf4\x0c\x00\x14\x1a\x98\x28\xd3\x13\x23\x88\x08\xdc\x0b\x15\x90\x68\xa4\x05\xd4\x0b\x26\xd8\x13\x1b\x97\x3f\x91\x3f\xa0\x38\xa8\x56\xd3\x13\x34\xd0\x0c\x34\xe0\x13\x1b\x88\x4f",
+};
+static
+ struct _PyCode_DEF(98)
+os_toplevel_consts_107_consts_2 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 49,
+ },
+ .co_consts = & os_toplevel_consts_107_consts_2_consts._object.ob_base.ob_base,
+ .co_names = & os_toplevel_consts_107_consts_2_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 19,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 7 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 824,
+ .co_nlocalsplus = 3,
+ .co_nlocals = 1,
+ .co_ncellvars = 0,
+ .co_nfreevars = 2,
+ .co_version = 641,
+ .co_localsplusnames = & os_toplevel_consts_107_consts_1_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_external_toplevel_consts_72_consts_8_consts_1_localspluskinds.ob_base.ob_base,
+ .co_filename = & os_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = & const_str_fsdecode._ascii.ob_base,
+ .co_qualname = & os_toplevel_consts_107_consts_2_qualname._ascii.ob_base,
+ .co_linetable = & os_toplevel_consts_107_consts_2_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x95\x02\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x00\x74\x03\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x74\x04\x00\x00\x00\x00\x00\x00\x00\x00\xab\x02\x00\x00\x00\x00\x00\x00\x72\x12\x7c\x00\x6a\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x89\x01\x89\x02\xab\x02\x00\x00\x00\x00\x00\x00\x53\x00\x7c\x00\x53\x00",
+ ._co_firsttraceable = 1,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+os_toplevel_consts_107_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ Py_None,
+ & os_toplevel_consts_107_consts_1.ob_base.ob_base,
+ & os_toplevel_consts_107_consts_2.ob_base.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[26];
+ }
+const_str_getfilesystemencodeerrors = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 25,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "getfilesystemencodeerrors",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+os_toplevel_consts_107_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ & const_str_sys._ascii.ob_base,
+ & const_str_getfilesystemencoding._ascii.ob_base,
+ & const_str_getfilesystemencodeerrors._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[9];
+ }
+const_str__fscodec = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 8,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_fscodec",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[55];
+ }
+os_toplevel_consts_107_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 54,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\xf9\x80\x00\xdc\x0f\x12\xd7\x0f\x28\xd1\x0f\x28\xd3\x0f\x2a\x80\x48\xdc\x0d\x10\xd7\x0d\x2a\xd1\x0d\x2a\xd3\x0d\x2c\x80\x46\xf5\x04\x0a\x05\x1c\xf5\x18\x0a\x05\x1c\xf0\x18\x00\x0c\x14\x90\x58\xd0\x0b\x1d\xd0\x04\x1d",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[4];
+ }_object;
+ }
+os_toplevel_consts_107_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_item = {
+ & const_str_fsencode._ascii.ob_base,
+ & const_str_fsdecode._ascii.ob_base,
+ &_Py_ID(encoding),
+ &_Py_ID(errors),
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[5];
+ }
+os_toplevel_consts_107_localspluskinds = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_shash = -1,
+ .ob_sval = " @@",
+};
+static
+ struct _PyCode_DEF(118)
+os_toplevel_consts_107 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 59,
+ },
+ .co_consts = & os_toplevel_consts_107_consts._object.ob_base.ob_base,
+ .co_names = & os_toplevel_consts_107_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 0,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 6 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 2,
+ .co_firstlineno = 808,
+ .co_nlocalsplus = 4,
+ .co_nlocals = 2,
+ .co_ncellvars = 2,
+ .co_nfreevars = 0,
+ .co_version = 642,
+ .co_localsplusnames = & os_toplevel_consts_107_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & os_toplevel_consts_107_localspluskinds.ob_base.ob_base,
+ .co_filename = & os_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = & const_str__fscodec._ascii.ob_base,
+ .co_qualname = & const_str__fscodec._ascii.ob_base,
+ .co_linetable = & os_toplevel_consts_107_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x87\x02\x87\x03\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x8a\x02\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x8a\x03\x88\x02\x88\x03\x66\x02\x64\x01\x84\x08\x7d\x00\x88\x02\x88\x03\x66\x02\x64\x02\x84\x08\x7d\x01\x7c\x00\x7c\x01\x66\x02\x53\x00",
+ ._co_firsttraceable = 2,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[5];
+ }
+const_str_fork = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 4,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "fork",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[7];
+ }
+const_str_spawnv = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 6,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "spawnv",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[7];
+ }
+const_str_P_WAIT = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 6,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "P_WAIT",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[9];
+ }
+const_str_P_NOWAIT = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 8,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "P_NOWAIT",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[10];
+ }
+const_str_P_NOWAITO = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 9,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "P_NOWAITO",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+os_toplevel_consts_111 = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ & const_str_P_WAIT._ascii.ob_base,
+ & const_str_P_NOWAIT._ascii.ob_base,
+ & const_str_P_NOWAITO._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[31];
+ }
+os_toplevel_consts_112_consts_1 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 30,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "argv must be a tuple or a list",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[35];
+ }
+os_toplevel_consts_112_consts_3 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 34,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "argv first element cannot be empty",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[5];
+ }_object;
+ }
+os_toplevel_consts_112_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 5,
+ },
+ .ob_item = {
+ Py_None,
+ & os_toplevel_consts_112_consts_1._ascii.ob_base,
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 0],
+ & os_toplevel_consts_112_consts_3._ascii.ob_base,
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 127],
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[8];
+ }
+const_str_waitpid = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 7,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "waitpid",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[11];
+ }
+const_str_WIFSTOPPED = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 10,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "WIFSTOPPED",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[23];
+ }
+const_str_waitstatus_to_exitcode = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 22,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "waitstatus_to_exitcode",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[11];
+ }_object;
+ }
+os_toplevel_consts_112_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 11,
+ },
+ .ob_item = {
+ &_Py_ID(isinstance),
+ & const_str_tuple._ascii.ob_base,
+ & const_str_list._ascii.ob_base,
+ & const_str_TypeError._ascii.ob_base,
+ & const_str_ValueError._ascii.ob_base,
+ & const_str_fork._ascii.ob_base,
+ & const_str__exit._ascii.ob_base,
+ & const_str_P_NOWAIT._ascii.ob_base,
+ & const_str_waitpid._ascii.ob_base,
+ & const_str_WIFSTOPPED._ascii.ob_base,
+ & const_str_waitstatus_to_exitcode._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[10];
+ }
+const_str__spawnvef = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 9,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_spawnvef",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[165];
+ }
+os_toplevel_consts_112_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 164,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xe4\x0f\x19\x98\x24\xa4\x15\xac\x04\xa0\x0d\xd4\x0f\x2e\xdc\x12\x1b\xd0\x1c\x3c\xd3\x12\x3d\xd0\x0c\x3d\xd9\x0f\x13\x98\x34\xa0\x01\x9a\x37\xdc\x12\x1c\xd0\x1d\x41\xd3\x12\x42\xd0\x0c\x42\xdc\x0e\x12\x8b\x66\x88\x03\xd9\x0f\x12\xf0\x04\x06\x0d\x1b\xd8\x13\x16\x90\x3b\xd9\x14\x18\x98\x14\x98\x74\xd5\x14\x24\xe1\x14\x18\x98\x14\x98\x74\xa0\x53\xd5\x14\x29\xf0\x05\x00\x15\x25\xf0\x0e\x00\x10\x14\x94\x78\xd2\x0f\x1f\xd8\x17\x1a\x90\x0a\xd8\x12\x13\xdc\x1c\x23\xa0\x43\xa8\x11\x9b\x4f\x91\x09\x90\x04\x90\x63\xdc\x13\x1d\x98\x63\x94\x3f\xd8\x14\x1c\xe4\x17\x2d\xa8\x63\xd3\x17\x32\xd0\x10\x32\xf8\xf0\x17\x01\x0d\x1b\xdc\x10\x15\x90\x63\x96\x0a\xfa",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[13];
+ }
+os_toplevel_consts_112_exceptiontable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 12,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\xc1\x01\x16\x42\x0b\x00\xc2\x0b\x0d\x42\x1a\x03",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[5];
+ }
+const_str_wpid = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 4,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "wpid",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[4];
+ }
+const_str_sts = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 3,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "sts",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[8];
+ }_object;
+ }
+os_toplevel_consts_112_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 8,
+ },
+ .ob_item = {
+ &_Py_ID(mode),
+ &_Py_ID(file),
+ &_Py_ID(args),
+ &_Py_ID(env),
+ &_Py_ID(func),
+ &_Py_ID(pid),
+ & const_str_wpid._ascii.ob_base,
+ & const_str_sts._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(314)
+os_toplevel_consts_112 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 157,
+ },
+ .co_consts = & os_toplevel_consts_112_consts._object.ob_base.ob_base,
+ .co_names = & os_toplevel_consts_112_names._object.ob_base.ob_base,
+ .co_exceptiontable = & os_toplevel_consts_112_exceptiontable.ob_base.ob_base,
+ .co_flags = 3,
+ .co_argcount = 5,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 13 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 5,
+ .co_firstlineno = 853,
+ .co_nlocalsplus = 8,
+ .co_nlocals = 8,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 643,
+ .co_localsplusnames = & os_toplevel_consts_112_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_13_localspluskinds.ob_base.ob_base,
+ .co_filename = & os_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = & const_str__spawnvef._ascii.ob_base,
+ .co_qualname = & const_str__spawnvef._ascii.ob_base,
+ .co_linetable = & os_toplevel_consts_112_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x02\x74\x02\x00\x00\x00\x00\x00\x00\x00\x00\x74\x04\x00\x00\x00\x00\x00\x00\x00\x00\x66\x02\xab\x02\x00\x00\x00\x00\x00\x00\x73\x0b\x74\x07\x00\x00\x00\x00\x00\x00\x00\x00\x64\x01\xab\x01\x00\x00\x00\x00\x00\x00\x82\x01\x7c\x02\x72\x05\x7c\x02\x64\x02\x19\x00\x00\x00\x73\x0b\x74\x09\x00\x00\x00\x00\x00\x00\x00\x00\x64\x03\xab\x01\x00\x00\x00\x00\x00\x00\x82\x01\x74\x0b\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x7d\x05\x7c\x05\x73\x19\x09\x00\x7c\x03\x80\x0a\x02\x00\x7c\x04\x7c\x01\x7c\x02\xab\x02\x00\x00\x00\x00\x00\x00\x01\x00\x6e\x0b\x02\x00\x7c\x04\x7c\x01\x7c\x02\x7c\x03\xab\x03\x00\x00\x00\x00\x00\x00\x01\x00\x79\x00\x79\x00\x7c\x00\x74\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x6b\x28\x00\x00\x72\x02\x7c\x05\x53\x00\x09\x00\x74\x11\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x05\x64\x02\xab\x02\x00\x00\x00\x00\x00\x00\x5c\x02\x00\x00\x7d\x06\x7d\x07\x74\x13\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x07\xab\x01\x00\x00\x00\x00\x00\x00\x72\x01\x8c\x1c\x74\x15\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x07\xab\x01\x00\x00\x00\x00\x00\x00\x53\x00\x23\x00\x01\x00\x74\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x64\x04\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x59\x00\x79\x00\x78\x03\x59\x00\x77\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[278];
+ }
+os_toplevel_consts_113_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 277,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x73\x70\x61\x77\x6e\x76\x28\x6d\x6f\x64\x65\x2c\x20\x66\x69\x6c\x65\x2c\x20\x61\x72\x67\x73\x29\x20\x2d\x3e\x20\x69\x6e\x74\x65\x67\x65\x72\x0a\x0a\x45\x78\x65\x63\x75\x74\x65\x20\x66\x69\x6c\x65\x20\x77\x69\x74\x68\x20\x61\x72\x67\x75\x6d\x65\x6e\x74\x73\x20\x66\x72\x6f\x6d\x20\x61\x72\x67\x73\x20\x69\x6e\x20\x61\x20\x73\x75\x62\x70\x72\x6f\x63\x65\x73\x73\x2e\x0a\x49\x66\x20\x6d\x6f\x64\x65\x20\x3d\x3d\x20\x50\x5f\x4e\x4f\x57\x41\x49\x54\x20\x72\x65\x74\x75\x72\x6e\x20\x74\x68\x65\x20\x70\x69\x64\x20\x6f\x66\x20\x74\x68\x65\x20\x70\x72\x6f\x63\x65\x73\x73\x2e\x0a\x49\x66\x20\x6d\x6f\x64\x65\x20\x3d\x3d\x20\x50\x5f\x57\x41\x49\x54\x20\x72\x65\x74\x75\x72\x6e\x20\x74\x68\x65\x20\x70\x72\x6f\x63\x65\x73\x73\x27\x73\x20\x65\x78\x69\x74\x20\x63\x6f\x64\x65\x20\x69\x66\x20\x69\x74\x20\x65\x78\x69\x74\x73\x20\x6e\x6f\x72\x6d\x61\x6c\x6c\x79\x3b\x0a\x6f\x74\x68\x65\x72\x77\x69\x73\x65\x20\x72\x65\x74\x75\x72\x6e\x20\x2d\x53\x49\x47\x2c\x20\x77\x68\x65\x72\x65\x20\x53\x49\x47\x20\x69\x73\x20\x74\x68\x65\x20\x73\x69\x67\x6e\x61\x6c\x20\x74\x68\x61\x74\x20\x6b\x69\x6c\x6c\x65\x64\x20\x69\x74\x2e\x20",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+os_toplevel_consts_113_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & os_toplevel_consts_113_consts_0._ascii.ob_base,
+ Py_None,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+os_toplevel_consts_113_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & const_str__spawnvef._ascii.ob_base,
+ & const_str_execv._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[24];
+ }
+os_toplevel_consts_113_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 23,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf4\x0e\x00\x10\x19\x98\x14\x98\x74\xa0\x54\xa8\x34\xb4\x15\xd3\x0f\x37\xd0\x08\x37",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+os_toplevel_consts_113_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ &_Py_ID(mode),
+ &_Py_ID(file),
+ &_Py_ID(args),
+ },
+ },
+};
+static
+ struct _PyCode_DEF(40)
+os_toplevel_consts_113 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 20,
+ },
+ .co_consts = & os_toplevel_consts_113_consts._object.ob_base.ob_base,
+ .co_names = & os_toplevel_consts_113_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 3,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 10 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 7,
+ .co_firstlineno = 880,
+ .co_nlocalsplus = 3,
+ .co_nlocals = 3,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 644,
+ .co_localsplusnames = & os_toplevel_consts_113_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_3_localspluskinds.ob_base.ob_base,
+ .co_filename = & os_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = & const_str_spawnv._ascii.ob_base,
+ .co_qualname = & const_str_spawnv._ascii.ob_base,
+ .co_linetable = & os_toplevel_consts_113_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x7c\x01\x7c\x02\x64\x01\x74\x02\x00\x00\x00\x00\x00\x00\x00\x00\xab\x05\x00\x00\x00\x00\x00\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[315];
+ }
+os_toplevel_consts_114_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 314,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x73\x70\x61\x77\x6e\x76\x65\x28\x6d\x6f\x64\x65\x2c\x20\x66\x69\x6c\x65\x2c\x20\x61\x72\x67\x73\x2c\x20\x65\x6e\x76\x29\x20\x2d\x3e\x20\x69\x6e\x74\x65\x67\x65\x72\x0a\x0a\x45\x78\x65\x63\x75\x74\x65\x20\x66\x69\x6c\x65\x20\x77\x69\x74\x68\x20\x61\x72\x67\x75\x6d\x65\x6e\x74\x73\x20\x66\x72\x6f\x6d\x20\x61\x72\x67\x73\x20\x69\x6e\x20\x61\x20\x73\x75\x62\x70\x72\x6f\x63\x65\x73\x73\x20\x77\x69\x74\x68\x20\x74\x68\x65\x0a\x73\x70\x65\x63\x69\x66\x69\x65\x64\x20\x65\x6e\x76\x69\x72\x6f\x6e\x6d\x65\x6e\x74\x2e\x0a\x49\x66\x20\x6d\x6f\x64\x65\x20\x3d\x3d\x20\x50\x5f\x4e\x4f\x57\x41\x49\x54\x20\x72\x65\x74\x75\x72\x6e\x20\x74\x68\x65\x20\x70\x69\x64\x20\x6f\x66\x20\x74\x68\x65\x20\x70\x72\x6f\x63\x65\x73\x73\x2e\x0a\x49\x66\x20\x6d\x6f\x64\x65\x20\x3d\x3d\x20\x50\x5f\x57\x41\x49\x54\x20\x72\x65\x74\x75\x72\x6e\x20\x74\x68\x65\x20\x70\x72\x6f\x63\x65\x73\x73\x27\x73\x20\x65\x78\x69\x74\x20\x63\x6f\x64\x65\x20\x69\x66\x20\x69\x74\x20\x65\x78\x69\x74\x73\x20\x6e\x6f\x72\x6d\x61\x6c\x6c\x79\x3b\x0a\x6f\x74\x68\x65\x72\x77\x69\x73\x65\x20\x72\x65\x74\x75\x72\x6e\x20\x2d\x53\x49\x47\x2c\x20\x77\x68\x65\x72\x65\x20\x53\x49\x47\x20\x69\x73\x20\x74\x68\x65\x20\x73\x69\x67\x6e\x61\x6c\x20\x74\x68\x61\x74\x20\x6b\x69\x6c\x6c\x65\x64\x20\x69\x74\x2e\x20",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+os_toplevel_consts_114_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & os_toplevel_consts_114_consts_0._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+os_toplevel_consts_114_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & const_str__spawnvef._ascii.ob_base,
+ & const_str_execve._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[8];
+ }
+const_str_spawnve = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 7,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "spawnve",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[24];
+ }
+os_toplevel_consts_114_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 23,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf4\x10\x00\x10\x19\x98\x14\x98\x74\xa0\x54\xa8\x33\xb4\x06\xd3\x0f\x37\xd0\x08\x37",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[4];
+ }_object;
+ }
+os_toplevel_consts_114_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_item = {
+ &_Py_ID(mode),
+ &_Py_ID(file),
+ &_Py_ID(args),
+ &_Py_ID(env),
+ },
+ },
+};
+static
+ struct _PyCode_DEF(40)
+os_toplevel_consts_114 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 20,
+ },
+ .co_consts = & os_toplevel_consts_114_consts._object.ob_base.ob_base,
+ .co_names = & os_toplevel_consts_114_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 4,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 11 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 7,
+ .co_firstlineno = 889,
+ .co_nlocalsplus = 4,
+ .co_nlocals = 4,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 645,
+ .co_localsplusnames = & os_toplevel_consts_114_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_7_consts_3_localspluskinds.ob_base.ob_base,
+ .co_filename = & os_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = & const_str_spawnve._ascii.ob_base,
+ .co_qualname = & const_str_spawnve._ascii.ob_base,
+ .co_linetable = & os_toplevel_consts_114_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x7c\x01\x7c\x02\x7c\x03\x74\x02\x00\x00\x00\x00\x00\x00\x00\x00\xab\x05\x00\x00\x00\x00\x00\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[313];
+ }
+os_toplevel_consts_115_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 312,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x73\x70\x61\x77\x6e\x76\x70\x28\x6d\x6f\x64\x65\x2c\x20\x66\x69\x6c\x65\x2c\x20\x61\x72\x67\x73\x29\x20\x2d\x3e\x20\x69\x6e\x74\x65\x67\x65\x72\x0a\x0a\x45\x78\x65\x63\x75\x74\x65\x20\x66\x69\x6c\x65\x20\x28\x77\x68\x69\x63\x68\x20\x69\x73\x20\x6c\x6f\x6f\x6b\x65\x64\x20\x66\x6f\x72\x20\x61\x6c\x6f\x6e\x67\x20\x24\x50\x41\x54\x48\x29\x20\x77\x69\x74\x68\x20\x61\x72\x67\x75\x6d\x65\x6e\x74\x73\x20\x66\x72\x6f\x6d\x0a\x61\x72\x67\x73\x20\x69\x6e\x20\x61\x20\x73\x75\x62\x70\x72\x6f\x63\x65\x73\x73\x2e\x0a\x49\x66\x20\x6d\x6f\x64\x65\x20\x3d\x3d\x20\x50\x5f\x4e\x4f\x57\x41\x49\x54\x20\x72\x65\x74\x75\x72\x6e\x20\x74\x68\x65\x20\x70\x69\x64\x20\x6f\x66\x20\x74\x68\x65\x20\x70\x72\x6f\x63\x65\x73\x73\x2e\x0a\x49\x66\x20\x6d\x6f\x64\x65\x20\x3d\x3d\x20\x50\x5f\x57\x41\x49\x54\x20\x72\x65\x74\x75\x72\x6e\x20\x74\x68\x65\x20\x70\x72\x6f\x63\x65\x73\x73\x27\x73\x20\x65\x78\x69\x74\x20\x63\x6f\x64\x65\x20\x69\x66\x20\x69\x74\x20\x65\x78\x69\x74\x73\x20\x6e\x6f\x72\x6d\x61\x6c\x6c\x79\x3b\x0a\x6f\x74\x68\x65\x72\x77\x69\x73\x65\x20\x72\x65\x74\x75\x72\x6e\x20\x2d\x53\x49\x47\x2c\x20\x77\x68\x65\x72\x65\x20\x53\x49\x47\x20\x69\x73\x20\x74\x68\x65\x20\x73\x69\x67\x6e\x61\x6c\x20\x74\x68\x61\x74\x20\x6b\x69\x6c\x6c\x65\x64\x20\x69\x74\x2e\x20",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+os_toplevel_consts_115_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & os_toplevel_consts_115_consts_0._ascii.ob_base,
+ Py_None,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+os_toplevel_consts_115_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & const_str__spawnvef._ascii.ob_base,
+ & const_str_execvp._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[8];
+ }
+const_str_spawnvp = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 7,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "spawnvp",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[24];
+ }
+os_toplevel_consts_115_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 23,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf4\x10\x00\x10\x19\x98\x14\x98\x74\xa0\x54\xa8\x34\xb4\x16\xd3\x0f\x38\xd0\x08\x38",
+};
+static
+ struct _PyCode_DEF(40)
+os_toplevel_consts_115 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 20,
+ },
+ .co_consts = & os_toplevel_consts_115_consts._object.ob_base.ob_base,
+ .co_names = & os_toplevel_consts_115_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 3,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 10 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 7,
+ .co_firstlineno = 901,
+ .co_nlocalsplus = 3,
+ .co_nlocals = 3,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 646,
+ .co_localsplusnames = & os_toplevel_consts_113_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_3_localspluskinds.ob_base.ob_base,
+ .co_filename = & os_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = & const_str_spawnvp._ascii.ob_base,
+ .co_qualname = & const_str_spawnvp._ascii.ob_base,
+ .co_linetable = & os_toplevel_consts_115_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x7c\x01\x7c\x02\x64\x01\x74\x02\x00\x00\x00\x00\x00\x00\x00\x00\xab\x05\x00\x00\x00\x00\x00\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[349];
+ }
+os_toplevel_consts_116_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 348,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x73\x70\x61\x77\x6e\x76\x70\x65\x28\x6d\x6f\x64\x65\x2c\x20\x66\x69\x6c\x65\x2c\x20\x61\x72\x67\x73\x2c\x20\x65\x6e\x76\x29\x20\x2d\x3e\x20\x69\x6e\x74\x65\x67\x65\x72\x0a\x0a\x45\x78\x65\x63\x75\x74\x65\x20\x66\x69\x6c\x65\x20\x28\x77\x68\x69\x63\x68\x20\x69\x73\x20\x6c\x6f\x6f\x6b\x65\x64\x20\x66\x6f\x72\x20\x61\x6c\x6f\x6e\x67\x20\x24\x50\x41\x54\x48\x29\x20\x77\x69\x74\x68\x20\x61\x72\x67\x75\x6d\x65\x6e\x74\x73\x20\x66\x72\x6f\x6d\x0a\x61\x72\x67\x73\x20\x69\x6e\x20\x61\x20\x73\x75\x62\x70\x72\x6f\x63\x65\x73\x73\x20\x77\x69\x74\x68\x20\x74\x68\x65\x20\x73\x75\x70\x70\x6c\x69\x65\x64\x20\x65\x6e\x76\x69\x72\x6f\x6e\x6d\x65\x6e\x74\x2e\x0a\x49\x66\x20\x6d\x6f\x64\x65\x20\x3d\x3d\x20\x50\x5f\x4e\x4f\x57\x41\x49\x54\x20\x72\x65\x74\x75\x72\x6e\x20\x74\x68\x65\x20\x70\x69\x64\x20\x6f\x66\x20\x74\x68\x65\x20\x70\x72\x6f\x63\x65\x73\x73\x2e\x0a\x49\x66\x20\x6d\x6f\x64\x65\x20\x3d\x3d\x20\x50\x5f\x57\x41\x49\x54\x20\x72\x65\x74\x75\x72\x6e\x20\x74\x68\x65\x20\x70\x72\x6f\x63\x65\x73\x73\x27\x73\x20\x65\x78\x69\x74\x20\x63\x6f\x64\x65\x20\x69\x66\x20\x69\x74\x20\x65\x78\x69\x74\x73\x20\x6e\x6f\x72\x6d\x61\x6c\x6c\x79\x3b\x0a\x6f\x74\x68\x65\x72\x77\x69\x73\x65\x20\x72\x65\x74\x75\x72\x6e\x20\x2d\x53\x49\x47\x2c\x20\x77\x68\x65\x72\x65\x20\x53\x49\x47\x20\x69\x73\x20\x74\x68\x65\x20\x73\x69\x67\x6e\x61\x6c\x20\x74\x68\x61\x74\x20\x6b\x69\x6c\x6c\x65\x64\x20\x69\x74\x2e\x20",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+os_toplevel_consts_116_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & os_toplevel_consts_116_consts_0._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+os_toplevel_consts_116_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & const_str__spawnvef._ascii.ob_base,
+ & const_str_execvpe._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[9];
+ }
+const_str_spawnvpe = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 8,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "spawnvpe",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[24];
+ }
+os_toplevel_consts_116_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 23,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf4\x10\x00\x10\x19\x98\x14\x98\x74\xa0\x54\xa8\x33\xb4\x07\xd3\x0f\x38\xd0\x08\x38",
+};
+static
+ struct _PyCode_DEF(40)
+os_toplevel_consts_116 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 20,
+ },
+ .co_consts = & os_toplevel_consts_116_consts._object.ob_base.ob_base,
+ .co_names = & os_toplevel_consts_116_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 4,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 11 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 7,
+ .co_firstlineno = 911,
+ .co_nlocalsplus = 4,
+ .co_nlocals = 4,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 647,
+ .co_localsplusnames = & os_toplevel_consts_114_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_7_consts_3_localspluskinds.ob_base.ob_base,
+ .co_filename = & os_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = & const_str_spawnvpe._ascii.ob_base,
+ .co_qualname = & const_str_spawnvpe._ascii.ob_base,
+ .co_linetable = & os_toplevel_consts_116_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x7c\x01\x7c\x02\x7c\x03\x74\x02\x00\x00\x00\x00\x00\x00\x00\x00\xab\x05\x00\x00\x00\x00\x00\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[4];
+ }_object;
+ }
+os_toplevel_consts_117 = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_item = {
+ & const_str_spawnv._ascii.ob_base,
+ & const_str_spawnve._ascii.ob_base,
+ & const_str_spawnvp._ascii.ob_base,
+ & const_str_spawnvpe._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[279];
+ }
+os_toplevel_consts_118_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 278,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x73\x70\x61\x77\x6e\x6c\x28\x6d\x6f\x64\x65\x2c\x20\x66\x69\x6c\x65\x2c\x20\x2a\x61\x72\x67\x73\x29\x20\x2d\x3e\x20\x69\x6e\x74\x65\x67\x65\x72\x0a\x0a\x45\x78\x65\x63\x75\x74\x65\x20\x66\x69\x6c\x65\x20\x77\x69\x74\x68\x20\x61\x72\x67\x75\x6d\x65\x6e\x74\x73\x20\x66\x72\x6f\x6d\x20\x61\x72\x67\x73\x20\x69\x6e\x20\x61\x20\x73\x75\x62\x70\x72\x6f\x63\x65\x73\x73\x2e\x0a\x49\x66\x20\x6d\x6f\x64\x65\x20\x3d\x3d\x20\x50\x5f\x4e\x4f\x57\x41\x49\x54\x20\x72\x65\x74\x75\x72\x6e\x20\x74\x68\x65\x20\x70\x69\x64\x20\x6f\x66\x20\x74\x68\x65\x20\x70\x72\x6f\x63\x65\x73\x73\x2e\x0a\x49\x66\x20\x6d\x6f\x64\x65\x20\x3d\x3d\x20\x50\x5f\x57\x41\x49\x54\x20\x72\x65\x74\x75\x72\x6e\x20\x74\x68\x65\x20\x70\x72\x6f\x63\x65\x73\x73\x27\x73\x20\x65\x78\x69\x74\x20\x63\x6f\x64\x65\x20\x69\x66\x20\x69\x74\x20\x65\x78\x69\x74\x73\x20\x6e\x6f\x72\x6d\x61\x6c\x6c\x79\x3b\x0a\x6f\x74\x68\x65\x72\x77\x69\x73\x65\x20\x72\x65\x74\x75\x72\x6e\x20\x2d\x53\x49\x47\x2c\x20\x77\x68\x65\x72\x65\x20\x53\x49\x47\x20\x69\x73\x20\x74\x68\x65\x20\x73\x69\x67\x6e\x61\x6c\x20\x74\x68\x61\x74\x20\x6b\x69\x6c\x6c\x65\x64\x20\x69\x74\x2e\x20",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+os_toplevel_consts_118_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & os_toplevel_consts_118_consts_0._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+os_toplevel_consts_118_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & const_str_spawnv._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[7];
+ }
+const_str_spawnl = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 6,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "spawnl",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[20];
+ }
+os_toplevel_consts_118_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 19,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf4\x0e\x00\x10\x16\x90\x64\x98\x44\xa0\x24\xd3\x0f\x27\xd0\x08\x27",
+};
+static
+ struct _PyCode_DEF(28)
+os_toplevel_consts_118 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 14,
+ },
+ .co_consts = & os_toplevel_consts_118_consts._object.ob_base.ob_base,
+ .co_names = & os_toplevel_consts_118_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 7,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 8 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 5,
+ .co_firstlineno = 929,
+ .co_nlocalsplus = 3,
+ .co_nlocals = 3,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 648,
+ .co_localsplusnames = & os_toplevel_consts_113_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_3_localspluskinds.ob_base.ob_base,
+ .co_filename = & os_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = & const_str_spawnl._ascii.ob_base,
+ .co_qualname = & const_str_spawnl._ascii.ob_base,
+ .co_linetable = & os_toplevel_consts_118_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x7c\x01\x7c\x02\xab\x03\x00\x00\x00\x00\x00\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[315];
+ }
+os_toplevel_consts_119_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 314,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x73\x70\x61\x77\x6e\x6c\x65\x28\x6d\x6f\x64\x65\x2c\x20\x66\x69\x6c\x65\x2c\x20\x2a\x61\x72\x67\x73\x2c\x20\x65\x6e\x76\x29\x20\x2d\x3e\x20\x69\x6e\x74\x65\x67\x65\x72\x0a\x0a\x45\x78\x65\x63\x75\x74\x65\x20\x66\x69\x6c\x65\x20\x77\x69\x74\x68\x20\x61\x72\x67\x75\x6d\x65\x6e\x74\x73\x20\x66\x72\x6f\x6d\x20\x61\x72\x67\x73\x20\x69\x6e\x20\x61\x20\x73\x75\x62\x70\x72\x6f\x63\x65\x73\x73\x20\x77\x69\x74\x68\x20\x74\x68\x65\x0a\x73\x75\x70\x70\x6c\x69\x65\x64\x20\x65\x6e\x76\x69\x72\x6f\x6e\x6d\x65\x6e\x74\x2e\x0a\x49\x66\x20\x6d\x6f\x64\x65\x20\x3d\x3d\x20\x50\x5f\x4e\x4f\x57\x41\x49\x54\x20\x72\x65\x74\x75\x72\x6e\x20\x74\x68\x65\x20\x70\x69\x64\x20\x6f\x66\x20\x74\x68\x65\x20\x70\x72\x6f\x63\x65\x73\x73\x2e\x0a\x49\x66\x20\x6d\x6f\x64\x65\x20\x3d\x3d\x20\x50\x5f\x57\x41\x49\x54\x20\x72\x65\x74\x75\x72\x6e\x20\x74\x68\x65\x20\x70\x72\x6f\x63\x65\x73\x73\x27\x73\x20\x65\x78\x69\x74\x20\x63\x6f\x64\x65\x20\x69\x66\x20\x69\x74\x20\x65\x78\x69\x74\x73\x20\x6e\x6f\x72\x6d\x61\x6c\x6c\x79\x3b\x0a\x6f\x74\x68\x65\x72\x77\x69\x73\x65\x20\x72\x65\x74\x75\x72\x6e\x20\x2d\x53\x49\x47\x2c\x20\x77\x68\x65\x72\x65\x20\x53\x49\x47\x20\x69\x73\x20\x74\x68\x65\x20\x73\x69\x67\x6e\x61\x6c\x20\x74\x68\x61\x74\x20\x6b\x69\x6c\x6c\x65\x64\x20\x69\x74\x2e\x20",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+os_toplevel_consts_119_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ & os_toplevel_consts_119_consts_0._ascii.ob_base,
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + -1],
+ Py_None,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+os_toplevel_consts_119_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & const_str_spawnve._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[8];
+ }
+const_str_spawnle = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 7,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "spawnle",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[37];
+ }
+os_toplevel_consts_119_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 36,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf0\x10\x00\x0f\x13\x90\x32\x89\x68\x88\x03\xdc\x0f\x16\x90\x74\x98\x54\xa0\x34\xa8\x03\xa8\x12\xa0\x39\xa8\x63\xd3\x0f\x32\xd0\x08\x32",
+};
+static
+ struct _PyCode_DEF(46)
+os_toplevel_consts_119 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 23,
+ },
+ .co_consts = & os_toplevel_consts_119_consts._object.ob_base.ob_base,
+ .co_names = & os_toplevel_consts_119_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 7,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 11 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 7,
+ .co_firstlineno = 938,
+ .co_nlocalsplus = 4,
+ .co_nlocals = 4,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 649,
+ .co_localsplusnames = & os_toplevel_consts_114_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_7_consts_3_localspluskinds.ob_base.ob_base,
+ .co_filename = & os_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = & const_str_spawnle._ascii.ob_base,
+ .co_qualname = & const_str_spawnle._ascii.ob_base,
+ .co_linetable = & os_toplevel_consts_119_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x02\x64\x01\x19\x00\x00\x00\x7d\x03\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x7c\x01\x7c\x02\x64\x02\x64\x01\x1a\x00\x7c\x03\xab\x04\x00\x00\x00\x00\x00\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[344];
+ }
+os_toplevel_consts_123_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 343,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x73\x70\x61\x77\x6e\x6c\x70\x28\x6d\x6f\x64\x65\x2c\x20\x66\x69\x6c\x65\x2c\x20\x2a\x61\x72\x67\x73\x29\x20\x2d\x3e\x20\x69\x6e\x74\x65\x67\x65\x72\x0a\x0a\x45\x78\x65\x63\x75\x74\x65\x20\x66\x69\x6c\x65\x20\x28\x77\x68\x69\x63\x68\x20\x69\x73\x20\x6c\x6f\x6f\x6b\x65\x64\x20\x66\x6f\x72\x20\x61\x6c\x6f\x6e\x67\x20\x24\x50\x41\x54\x48\x29\x20\x77\x69\x74\x68\x20\x61\x72\x67\x75\x6d\x65\x6e\x74\x73\x20\x66\x72\x6f\x6d\x0a\x61\x72\x67\x73\x20\x69\x6e\x20\x61\x20\x73\x75\x62\x70\x72\x6f\x63\x65\x73\x73\x20\x77\x69\x74\x68\x20\x74\x68\x65\x20\x73\x75\x70\x70\x6c\x69\x65\x64\x20\x65\x6e\x76\x69\x72\x6f\x6e\x6d\x65\x6e\x74\x2e\x0a\x49\x66\x20\x6d\x6f\x64\x65\x20\x3d\x3d\x20\x50\x5f\x4e\x4f\x57\x41\x49\x54\x20\x72\x65\x74\x75\x72\x6e\x20\x74\x68\x65\x20\x70\x69\x64\x20\x6f\x66\x20\x74\x68\x65\x20\x70\x72\x6f\x63\x65\x73\x73\x2e\x0a\x49\x66\x20\x6d\x6f\x64\x65\x20\x3d\x3d\x20\x50\x5f\x57\x41\x49\x54\x20\x72\x65\x74\x75\x72\x6e\x20\x74\x68\x65\x20\x70\x72\x6f\x63\x65\x73\x73\x27\x73\x20\x65\x78\x69\x74\x20\x63\x6f\x64\x65\x20\x69\x66\x20\x69\x74\x20\x65\x78\x69\x74\x73\x20\x6e\x6f\x72\x6d\x61\x6c\x6c\x79\x3b\x0a\x6f\x74\x68\x65\x72\x77\x69\x73\x65\x20\x72\x65\x74\x75\x72\x6e\x20\x2d\x53\x49\x47\x2c\x20\x77\x68\x65\x72\x65\x20\x53\x49\x47\x20\x69\x73\x20\x74\x68\x65\x20\x73\x69\x67\x6e\x61\x6c\x20\x74\x68\x61\x74\x20\x6b\x69\x6c\x6c\x65\x64\x20\x69\x74\x2e\x20",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+os_toplevel_consts_123_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & os_toplevel_consts_123_consts_0._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+os_toplevel_consts_123_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & const_str_spawnvp._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[8];
+ }
+const_str_spawnlp = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 7,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "spawnlp",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[20];
+ }
+os_toplevel_consts_123_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 19,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf4\x10\x00\x10\x17\x90\x74\x98\x54\xa0\x34\xd3\x0f\x28\xd0\x08\x28",
+};
+static
+ struct _PyCode_DEF(28)
+os_toplevel_consts_123 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 14,
+ },
+ .co_consts = & os_toplevel_consts_123_consts._object.ob_base.ob_base,
+ .co_names = & os_toplevel_consts_123_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 7,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 8 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 5,
+ .co_firstlineno = 956,
+ .co_nlocalsplus = 3,
+ .co_nlocals = 3,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 650,
+ .co_localsplusnames = & os_toplevel_consts_113_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_3_localspluskinds.ob_base.ob_base,
+ .co_filename = & os_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = & const_str_spawnlp._ascii.ob_base,
+ .co_qualname = & const_str_spawnlp._ascii.ob_base,
+ .co_linetable = & os_toplevel_consts_123_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x7c\x01\x7c\x02\xab\x03\x00\x00\x00\x00\x00\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[350];
+ }
+os_toplevel_consts_124_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 349,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x73\x70\x61\x77\x6e\x6c\x70\x65\x28\x6d\x6f\x64\x65\x2c\x20\x66\x69\x6c\x65\x2c\x20\x2a\x61\x72\x67\x73\x2c\x20\x65\x6e\x76\x29\x20\x2d\x3e\x20\x69\x6e\x74\x65\x67\x65\x72\x0a\x0a\x45\x78\x65\x63\x75\x74\x65\x20\x66\x69\x6c\x65\x20\x28\x77\x68\x69\x63\x68\x20\x69\x73\x20\x6c\x6f\x6f\x6b\x65\x64\x20\x66\x6f\x72\x20\x61\x6c\x6f\x6e\x67\x20\x24\x50\x41\x54\x48\x29\x20\x77\x69\x74\x68\x20\x61\x72\x67\x75\x6d\x65\x6e\x74\x73\x20\x66\x72\x6f\x6d\x0a\x61\x72\x67\x73\x20\x69\x6e\x20\x61\x20\x73\x75\x62\x70\x72\x6f\x63\x65\x73\x73\x20\x77\x69\x74\x68\x20\x74\x68\x65\x20\x73\x75\x70\x70\x6c\x69\x65\x64\x20\x65\x6e\x76\x69\x72\x6f\x6e\x6d\x65\x6e\x74\x2e\x0a\x49\x66\x20\x6d\x6f\x64\x65\x20\x3d\x3d\x20\x50\x5f\x4e\x4f\x57\x41\x49\x54\x20\x72\x65\x74\x75\x72\x6e\x20\x74\x68\x65\x20\x70\x69\x64\x20\x6f\x66\x20\x74\x68\x65\x20\x70\x72\x6f\x63\x65\x73\x73\x2e\x0a\x49\x66\x20\x6d\x6f\x64\x65\x20\x3d\x3d\x20\x50\x5f\x57\x41\x49\x54\x20\x72\x65\x74\x75\x72\x6e\x20\x74\x68\x65\x20\x70\x72\x6f\x63\x65\x73\x73\x27\x73\x20\x65\x78\x69\x74\x20\x63\x6f\x64\x65\x20\x69\x66\x20\x69\x74\x20\x65\x78\x69\x74\x73\x20\x6e\x6f\x72\x6d\x61\x6c\x6c\x79\x3b\x0a\x6f\x74\x68\x65\x72\x77\x69\x73\x65\x20\x72\x65\x74\x75\x72\x6e\x20\x2d\x53\x49\x47\x2c\x20\x77\x68\x65\x72\x65\x20\x53\x49\x47\x20\x69\x73\x20\x74\x68\x65\x20\x73\x69\x67\x6e\x61\x6c\x20\x74\x68\x61\x74\x20\x6b\x69\x6c\x6c\x65\x64\x20\x69\x74\x2e\x20",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+os_toplevel_consts_124_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ & os_toplevel_consts_124_consts_0._ascii.ob_base,
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + -1],
+ Py_None,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+os_toplevel_consts_124_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & const_str_spawnvpe._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[9];
+ }
+const_str_spawnlpe = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 8,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "spawnlpe",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[37];
+ }
+os_toplevel_consts_124_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 36,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf0\x10\x00\x0f\x13\x90\x32\x89\x68\x88\x03\xdc\x0f\x17\x98\x04\x98\x64\xa0\x44\xa8\x13\xa8\x22\xa0\x49\xa8\x73\xd3\x0f\x33\xd0\x08\x33",
+};
+static
+ struct _PyCode_DEF(46)
+os_toplevel_consts_124 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 23,
+ },
+ .co_consts = & os_toplevel_consts_124_consts._object.ob_base.ob_base,
+ .co_names = & os_toplevel_consts_124_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 7,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 11 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 7,
+ .co_firstlineno = 966,
+ .co_nlocalsplus = 4,
+ .co_nlocals = 4,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 651,
+ .co_localsplusnames = & os_toplevel_consts_114_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_7_consts_3_localspluskinds.ob_base.ob_base,
+ .co_filename = & os_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = & const_str_spawnlpe._ascii.ob_base,
+ .co_qualname = & const_str_spawnlpe._ascii.ob_base,
+ .co_linetable = & os_toplevel_consts_124_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x02\x64\x01\x19\x00\x00\x00\x7d\x03\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x7c\x01\x7c\x02\x64\x02\x64\x01\x1a\x00\x7c\x03\xab\x04\x00\x00\x00\x00\x00\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[39];
+ }
+os_toplevel_consts_128_consts_1 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 38,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "invalid cmd type (%s, expected string)",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+os_toplevel_consts_128_consts_2 = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ &_Py_ID(r),
+ (PyObject *)&_Py_SINGLETON(strings).ascii[119],
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[16];
+ }
+os_toplevel_consts_128_consts_3 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 15,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "invalid mode %r",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[44];
+ }
+os_toplevel_consts_128_consts_5 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 43,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "popen() does not support unbuffered streams",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[6];
+ }
+const_str_shell = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 5,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "shell",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[4];
+ }_object;
+ }
+os_toplevel_consts_128_consts_8 = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_item = {
+ & const_str_shell._ascii.ob_base,
+ &_Py_ID(text),
+ &_Py_ID(stdout),
+ &_Py_ID(bufsize),
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[4];
+ }_object;
+ }
+os_toplevel_consts_128_consts_9 = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_item = {
+ & const_str_shell._ascii.ob_base,
+ &_Py_ID(text),
+ &_Py_ID(stdin),
+ &_Py_ID(bufsize),
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[10];
+ }_object;
+ }
+os_toplevel_consts_128_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 10,
+ },
+ .ob_item = {
+ Py_None,
+ & os_toplevel_consts_128_consts_1._ascii.ob_base,
+ & os_toplevel_consts_128_consts_2._object.ob_base.ob_base,
+ & os_toplevel_consts_128_consts_3._ascii.ob_base,
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 0],
+ & os_toplevel_consts_128_consts_5._ascii.ob_base,
+ &_Py_ID(r),
+ Py_True,
+ & os_toplevel_consts_128_consts_8._object.ob_base.ob_base,
+ & os_toplevel_consts_128_consts_9._object.ob_base.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[11];
+ }
+const_str_subprocess = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 10,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "subprocess",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[6];
+ }
+const_str_Popen = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 5,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Popen",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[5];
+ }
+const_str_PIPE = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 4,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "PIPE",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[12];
+ }
+const_str__wrap_close = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 11,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_wrap_close",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[11];
+ }_object;
+ }
+os_toplevel_consts_128_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 11,
+ },
+ .ob_item = {
+ &_Py_ID(isinstance),
+ & const_str_str._ascii.ob_base,
+ & const_str_TypeError._ascii.ob_base,
+ &_Py_ID(type),
+ & const_str_ValueError._ascii.ob_base,
+ & const_str_subprocess._ascii.ob_base,
+ & const_str_Popen._ascii.ob_base,
+ & const_str_PIPE._ascii.ob_base,
+ & const_str__wrap_close._ascii.ob_base,
+ &_Py_ID(stdout),
+ &_Py_ID(stdin),
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[6];
+ }
+const_str_popen = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 5,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "popen",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[207];
+ }
+os_toplevel_consts_128_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 206,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xdc\x0f\x19\x98\x23\x9c\x73\xd4\x0f\x23\xdc\x12\x1b\xd0\x1c\x44\xc4\x74\xc8\x43\xc3\x79\xd1\x1c\x50\xd3\x12\x51\xd0\x0c\x51\xd8\x0b\x0f\x90\x7a\xd1\x0b\x21\xdc\x12\x1c\xd0\x1d\x2e\xb0\x14\xd1\x1d\x35\xd3\x12\x36\xd0\x0c\x36\xd8\x0b\x14\x98\x01\x8a\x3e\x98\x59\xd0\x1d\x2e\xdc\x12\x1c\xd0\x1d\x4a\xd3\x12\x4b\xd0\x0c\x4b\xdb\x08\x19\xd8\x0b\x0f\x90\x33\x8a\x3b\xd8\x13\x1d\xd7\x13\x23\xd1\x13\x23\xa0\x43\xd8\x2a\x2e\xb0\x54\xd8\x2b\x35\xaf\x3f\xa9\x3f\xd8\x2c\x35\xf0\x07\x00\x14\x24\xf3\x00\x03\x14\x37\x88\x44\xf4\x08\x00\x14\x1f\x98\x74\x9f\x7b\x99\x7b\xa8\x44\xd3\x13\x31\xd0\x0c\x31\xe0\x13\x1d\xd7\x13\x23\xd1\x13\x23\xa0\x43\xd8\x2a\x2e\xb0\x54\xd8\x2a\x34\xaf\x2f\xa9\x2f\xd8\x2c\x35\xf0\x07\x00\x14\x24\xf3\x00\x03\x14\x37\x88\x44\xf4\x08\x00\x14\x1f\x98\x74\x9f\x7a\x99\x7a\xa8\x34\xd3\x13\x30\xd0\x0c\x30",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[4];
+ }
+const_str_cmd = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 3,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "cmd",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[5];
+ }
+const_str_proc = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 4,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "proc",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[5];
+ }_object;
+ }
+os_toplevel_consts_128_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 5,
+ },
+ .ob_item = {
+ & const_str_cmd._ascii.ob_base,
+ &_Py_ID(mode),
+ &_Py_ID(buffering),
+ & const_str_subprocess._ascii.ob_base,
+ & const_str_proc._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(386)
+os_toplevel_consts_128 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 193,
+ },
+ .co_consts = & os_toplevel_consts_128_consts._object.ob_base.ob_base,
+ .co_names = & os_toplevel_consts_128_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 3,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 12 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 7,
+ .co_firstlineno = 984,
+ .co_nlocalsplus = 5,
+ .co_nlocals = 5,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 652,
+ .co_localsplusnames = & os_toplevel_consts_128_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_7_consts_5_localspluskinds.ob_base.ob_base,
+ .co_filename = & os_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = & const_str_popen._ascii.ob_base,
+ .co_qualname = & const_str_popen._ascii.ob_base,
+ .co_linetable = & os_toplevel_consts_128_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x74\x02\x00\x00\x00\x00\x00\x00\x00\x00\xab\x02\x00\x00\x00\x00\x00\x00\x73\x17\x74\x05\x00\x00\x00\x00\x00\x00\x00\x00\x64\x01\x74\x07\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7a\x06\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x82\x01\x7c\x01\x64\x02\x76\x01\x72\x0e\x74\x09\x00\x00\x00\x00\x00\x00\x00\x00\x64\x03\x7c\x01\x7a\x06\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x82\x01\x7c\x02\x64\x04\x6b\x28\x00\x00\x73\x02\x7c\x02\x80\x0b\x74\x09\x00\x00\x00\x00\x00\x00\x00\x00\x64\x05\xab\x01\x00\x00\x00\x00\x00\x00\x82\x01\x64\x04\x64\x00\x6c\x05\x7d\x03\x7c\x01\x64\x06\x6b\x28\x00\x00\x72\x36\x7c\x03\x6a\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x64\x07\x64\x07\x7c\x03\x6a\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x02\xac\x08\xab\x05\x00\x00\x00\x00\x00\x00\x7d\x04\x74\x11\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x04\x6a\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x04\xab\x02\x00\x00\x00\x00\x00\x00\x53\x00\x7c\x03\x6a\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x64\x07\x64\x07\x7c\x03\x6a\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x02\xac\x09\xab\x05\x00\x00\x00\x00\x00\x00\x7d\x04\x74\x11\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x04\x6a\x14\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x04\xab\x02\x00\x00\x00\x00\x00\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[8];
+ }
+const_str__stream = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 7,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_stream",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[6];
+ }
+const_str__proc = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 5,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_proc",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+os_toplevel_consts_129_consts_1_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & const_str__stream._ascii.ob_base,
+ & const_str__proc._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[21];
+ }
+os_toplevel_consts_129_consts_1_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 20,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_wrap_close.__init__",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[17];
+ }
+os_toplevel_consts_129_consts_1_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 16,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xd8\x1b\x21\x88\x44\x8c\x4c\xd8\x19\x1d\x88\x44\x8d\x4a",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+os_toplevel_consts_129_consts_1_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ &_Py_ID(self),
+ & const_str_stream._ascii.ob_base,
+ & const_str_proc._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(32)
+os_toplevel_consts_129_consts_1 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 16,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_1_consts._object.ob_base.ob_base,
+ .co_names = & os_toplevel_consts_129_consts_1_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 3,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 5 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 2,
+ .co_firstlineno = 1007,
+ .co_nlocalsplus = 3,
+ .co_nlocals = 3,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 653,
+ .co_localsplusnames = & os_toplevel_consts_129_consts_1_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_3_localspluskinds.ob_base.ob_base,
+ .co_filename = & os_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__init__),
+ .co_qualname = & os_toplevel_consts_129_consts_1_qualname._ascii.ob_base,
+ .co_linetable = & os_toplevel_consts_129_consts_1_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x01\x7c\x00\x5f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x02\x7c\x00\x5f\x01\x00\x00\x00\x00\x00\x00\x00\x00\x79\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[4];
+ }_object;
+ }
+os_toplevel_consts_129_consts_2_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_item = {
+ Py_None,
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 0],
+ &_Py_ID(nt),
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 8],
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[5];
+ }
+const_str_wait = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 4,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "wait",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[5];
+ }_object;
+ }
+os_toplevel_consts_129_consts_2_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 5,
+ },
+ .ob_item = {
+ & const_str__stream._ascii.ob_base,
+ &_Py_ID(close),
+ & const_str__proc._ascii.ob_base,
+ & const_str_wait._ascii.ob_base,
+ &_Py_ID(name),
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[18];
+ }
+os_toplevel_consts_129_consts_2_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 17,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_wrap_close.close",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[68];
+ }
+os_toplevel_consts_129_consts_2_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 67,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xd8\x0c\x10\x8f\x4c\x89\x4c\xd7\x0c\x1e\xd1\x0c\x1e\xd4\x0c\x20\xd8\x19\x1d\x9f\x1a\x99\x1a\x9f\x1f\x99\x1f\xd3\x19\x2a\x88\x4a\xd8\x0f\x19\x98\x51\x8a\x7f\xd8\x17\x1b\xdc\x0f\x13\x90\x74\x8a\x7c\xd8\x17\x21\xd0\x10\x21\xe0\x17\x21\xa0\x51\x91\x7f\xd0\x10\x26",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[11];
+ }
+const_str_returncode = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 10,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "returncode",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+os_toplevel_consts_129_consts_2_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ &_Py_ID(self),
+ & const_str_returncode._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(150)
+os_toplevel_consts_129_consts_2 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 75,
+ },
+ .co_consts = & os_toplevel_consts_129_consts_2_consts._object.ob_base.ob_base,
+ .co_names = & os_toplevel_consts_129_consts_2_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 4 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 2,
+ .co_firstlineno = 1010,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 2,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 654,
+ .co_localsplusnames = & os_toplevel_consts_129_consts_2_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_14_consts_2_localspluskinds.ob_base.ob_base,
+ .co_filename = & os_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(close),
+ .co_qualname = & os_toplevel_consts_129_consts_2_qualname._ascii.ob_base,
+ .co_linetable = & os_toplevel_consts_129_consts_2_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x01\x00\x7c\x00\x6a\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x7d\x01\x7c\x01\x64\x01\x6b\x28\x00\x00\x72\x01\x79\x00\x74\x08\x00\x00\x00\x00\x00\x00\x00\x00\x64\x02\x6b\x28\x00\x00\x72\x02\x7c\x01\x53\x00\x7c\x01\x64\x03\x7a\x03\x00\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[22];
+ }
+os_toplevel_consts_129_consts_3_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 21,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_wrap_close.__enter__",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[8];
+ }
+os_toplevel_consts_129_consts_3_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 7,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xd8\x13\x17\x88\x4b",
+};
+static
+ struct _PyCode_DEF(6)
+os_toplevel_consts_129_consts_3 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 3,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_1_consts._object.ob_base.ob_base,
+ .co_names = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 2 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 1,
+ .co_firstlineno = 1019,
+ .co_nlocalsplus = 1,
+ .co_nlocals = 1,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 655,
+ .co_localsplusnames = & importlib__bootstrap_toplevel_consts_7_consts_2_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_characters[32]),
+ .co_filename = & os_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__enter__),
+ .co_qualname = & os_toplevel_consts_129_consts_3_qualname._ascii.ob_base,
+ .co_linetable = & os_toplevel_consts_129_consts_3_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+os_toplevel_consts_129_consts_4_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ &_Py_ID(close),
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[21];
+ }
+os_toplevel_consts_129_consts_4_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 20,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_wrap_close.__exit__",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[12];
+ }
+os_toplevel_consts_129_consts_4_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 11,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xd8\x0c\x10\x8f\x4a\x89\x4a\x8d\x4c",
+};
+static
+ struct _PyCode_DEF(36)
+os_toplevel_consts_129_consts_4 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 18,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_1_consts._object.ob_base.ob_base,
+ .co_names = & os_toplevel_consts_129_consts_4_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 7,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 4 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 2,
+ .co_firstlineno = 1021,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 2,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 656,
+ .co_localsplusnames = & importlib__bootstrap_toplevel_consts_30_consts_5_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_14_consts_2_localspluskinds.ob_base.ob_base,
+ .co_filename = & os_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__exit__),
+ .co_qualname = & os_toplevel_consts_129_consts_4_qualname._ascii.ob_base,
+ .co_linetable = & os_toplevel_consts_129_consts_4_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x00\x6a\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x01\x00\x79\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+os_toplevel_consts_129_consts_5_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ &_Py_ID(getattr),
+ & const_str__stream._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[24];
+ }
+os_toplevel_consts_129_consts_5_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 23,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_wrap_close.__getattr__",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[20];
+ }
+os_toplevel_consts_129_consts_5_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 19,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xdc\x13\x1a\x98\x34\x9f\x3c\x99\x3c\xa8\x14\xd3\x13\x2e\xd0\x0c\x2e",
+};
+static
+ struct _PyCode_DEF(46)
+os_toplevel_consts_129_consts_5 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 23,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_1_consts._object.ob_base.ob_base,
+ .co_names = & os_toplevel_consts_129_consts_5_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 6 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 1023,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 2,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 657,
+ .co_localsplusnames = & importlib__bootstrap_toplevel_consts_14_consts_2_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_14_consts_2_localspluskinds.ob_base.ob_base,
+ .co_filename = & os_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__getattr__),
+ .co_qualname = & os_toplevel_consts_129_consts_5_qualname._ascii.ob_base,
+ .co_linetable = & os_toplevel_consts_129_consts_5_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\xab\x02\x00\x00\x00\x00\x00\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+os_toplevel_consts_129_consts_6_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ &_Py_ID(iter),
+ & const_str__stream._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[21];
+ }
+os_toplevel_consts_129_consts_6_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 20,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_wrap_close.__iter__",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[18];
+ }
+os_toplevel_consts_129_consts_6_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 17,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xdc\x13\x17\x98\x04\x9f\x0c\x99\x0c\xd3\x13\x25\xd0\x0c\x25",
+};
+static
+ struct _PyCode_DEF(44)
+os_toplevel_consts_129_consts_6 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 22,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_1_consts._object.ob_base.ob_base,
+ .co_names = & os_toplevel_consts_129_consts_6_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 4 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 3,
+ .co_firstlineno = 1025,
+ .co_nlocalsplus = 1,
+ .co_nlocals = 1,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 658,
+ .co_localsplusnames = & importlib__bootstrap_toplevel_consts_7_consts_2_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_characters[32]),
+ .co_filename = & os_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__iter__),
+ .co_qualname = & os_toplevel_consts_129_consts_6_qualname._ascii.ob_base,
+ .co_linetable = & os_toplevel_consts_129_consts_6_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[8];
+ }_object;
+ }
+os_toplevel_consts_129_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 8,
+ },
+ .ob_item = {
+ & const_str__wrap_close._ascii.ob_base,
+ & os_toplevel_consts_129_consts_1.ob_base.ob_base,
+ & os_toplevel_consts_129_consts_2.ob_base.ob_base,
+ & os_toplevel_consts_129_consts_3.ob_base.ob_base,
+ & os_toplevel_consts_129_consts_4.ob_base.ob_base,
+ & os_toplevel_consts_129_consts_5.ob_base.ob_base,
+ & os_toplevel_consts_129_consts_6.ob_base.ob_base,
+ Py_None,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[9];
+ }_object;
+ }
+os_toplevel_consts_129_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 9,
+ },
+ .ob_item = {
+ &_Py_ID(__name__),
+ &_Py_ID(__module__),
+ &_Py_ID(__qualname__),
+ &_Py_ID(__init__),
+ &_Py_ID(close),
+ &_Py_ID(__enter__),
+ &_Py_ID(__exit__),
+ &_Py_ID(__getattr__),
+ &_Py_ID(__iter__),
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[33];
+ }
+os_toplevel_consts_129_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 32,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x84\x00\xf2\x02\x02\x09\x1e\xf2\x06\x08\x09\x27\xf2\x12\x01\x09\x18\xf2\x04\x01\x09\x19\xf2\x04\x01\x09\x2f\xf3\x04\x01\x09\x26",
+};
+static
+ struct _PyCode_DEF(48)
+os_toplevel_consts_129 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 24,
+ },
+ .co_consts = & os_toplevel_consts_129_consts._object.ob_base.ob_base,
+ .co_names = & os_toplevel_consts_129_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 0,
+ .co_argcount = 0,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 1 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 1,
+ .co_firstlineno = 1006,
+ .co_nlocalsplus = 0,
+ .co_nlocals = 0,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 659,
+ .co_localsplusnames = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_filename = & os_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = & const_str__wrap_close._ascii.ob_base,
+ .co_qualname = & const_str__wrap_close._ascii.ob_base,
+ .co_linetable = & os_toplevel_consts_129_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x65\x00\x5a\x01\x64\x00\x5a\x02\x64\x01\x84\x00\x5a\x03\x64\x02\x84\x00\x5a\x04\x64\x03\x84\x00\x5a\x05\x64\x04\x84\x00\x5a\x06\x64\x05\x84\x00\x5a\x07\x64\x06\x84\x00\x5a\x08\x79\x07",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[39];
+ }
+os_toplevel_consts_132_consts_1 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 38,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "invalid fd type (%s, expected integer)",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[4];
+ }_object;
+ }
+os_toplevel_consts_132_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_item = {
+ Py_None,
+ & os_toplevel_consts_132_consts_1._ascii.ob_base,
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 0],
+ &_Py_ID(b),
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[7];
+ }_object;
+ }
+os_toplevel_consts_132_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 7,
+ },
+ .ob_item = {
+ &_Py_ID(isinstance),
+ & const_str_int._ascii.ob_base,
+ & const_str_TypeError._ascii.ob_base,
+ &_Py_ID(type),
+ & const_str_io._ascii.ob_base,
+ & const_str_text_encoding._ascii.ob_base,
+ &_Py_ID(open),
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[93];
+ }
+os_toplevel_consts_132_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 92,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xdc\x0b\x15\x90\x62\x9c\x23\xd4\x0b\x1e\xdc\x0e\x17\xd0\x18\x40\xc4\x34\xc8\x02\xc3\x38\xd1\x18\x4b\xd3\x0e\x4c\xd0\x08\x4c\xdb\x04\x0d\xd8\x07\x0a\x90\x24\x81\x7f\xd8\x13\x15\xd7\x13\x23\xd1\x13\x23\xa0\x48\xd3\x13\x2d\x88\x08\xd8\x0b\x12\x88\x32\x8f\x37\x89\x37\x90\x32\x90\x74\x98\x59\xa8\x08\xd0\x0b\x42\xb0\x34\xd2\x0b\x42\xb8\x36\xd1\x0b\x42\xd0\x04\x42",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[7];
+ }_object;
+ }
+os_toplevel_consts_132_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 7,
+ },
+ .ob_item = {
+ &_Py_ID(fd),
+ &_Py_ID(mode),
+ &_Py_ID(buffering),
+ &_Py_ID(encoding),
+ &_Py_ID(args),
+ & const_str_kwargs._ascii.ob_base,
+ & const_str_io._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(180)
+os_toplevel_consts_132 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 90,
+ },
+ .co_consts = & os_toplevel_consts_132_consts._object.ob_base.ob_base,
+ .co_names = & os_toplevel_consts_132_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 15,
+ .co_argcount = 4,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 13 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 6,
+ .co_firstlineno = 1031,
+ .co_nlocalsplus = 7,
+ .co_nlocals = 7,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 660,
+ .co_localsplusnames = & os_toplevel_consts_132_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_46_consts_9_localspluskinds.ob_base.ob_base,
+ .co_filename = & os_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = & const_str_fdopen._ascii.ob_base,
+ .co_qualname = & const_str_fdopen._ascii.ob_base,
+ .co_linetable = & os_toplevel_consts_132_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x74\x02\x00\x00\x00\x00\x00\x00\x00\x00\xab\x02\x00\x00\x00\x00\x00\x00\x73\x17\x74\x05\x00\x00\x00\x00\x00\x00\x00\x00\x64\x01\x74\x07\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7a\x06\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x82\x01\x64\x02\x64\x00\x6c\x04\x7d\x06\x64\x03\x7c\x01\x76\x01\x72\x11\x7c\x06\x6a\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x03\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x03\x02\x00\x7c\x06\x6a\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x7c\x01\x7c\x02\x7c\x03\x67\x04\x7c\x04\xa2\x01\xad\x06\x69\x00\x7c\x05\xa4\x01\x8e\x01\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[354];
+ }
+os_toplevel_consts_133_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 353,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x52\x65\x74\x75\x72\x6e\x20\x74\x68\x65\x20\x70\x61\x74\x68\x20\x72\x65\x70\x72\x65\x73\x65\x6e\x74\x61\x74\x69\x6f\x6e\x20\x6f\x66\x20\x61\x20\x70\x61\x74\x68\x2d\x6c\x69\x6b\x65\x20\x6f\x62\x6a\x65\x63\x74\x2e\x0a\x0a\x20\x20\x20\x20\x49\x66\x20\x73\x74\x72\x20\x6f\x72\x20\x62\x79\x74\x65\x73\x20\x69\x73\x20\x70\x61\x73\x73\x65\x64\x20\x69\x6e\x2c\x20\x69\x74\x20\x69\x73\x20\x72\x65\x74\x75\x72\x6e\x65\x64\x20\x75\x6e\x63\x68\x61\x6e\x67\x65\x64\x2e\x20\x4f\x74\x68\x65\x72\x77\x69\x73\x65\x20\x74\x68\x65\x0a\x20\x20\x20\x20\x6f\x73\x2e\x50\x61\x74\x68\x4c\x69\x6b\x65\x20\x69\x6e\x74\x65\x72\x66\x61\x63\x65\x20\x69\x73\x20\x75\x73\x65\x64\x20\x74\x6f\x20\x67\x65\x74\x20\x74\x68\x65\x20\x70\x61\x74\x68\x20\x72\x65\x70\x72\x65\x73\x65\x6e\x74\x61\x74\x69\x6f\x6e\x2e\x20\x49\x66\x20\x74\x68\x65\x0a\x20\x20\x20\x20\x70\x61\x74\x68\x20\x72\x65\x70\x72\x65\x73\x65\x6e\x74\x61\x74\x69\x6f\x6e\x20\x69\x73\x20\x6e\x6f\x74\x20\x73\x74\x72\x20\x6f\x72\x20\x62\x79\x74\x65\x73\x2c\x20\x54\x79\x70\x65\x45\x72\x72\x6f\x72\x20\x69\x73\x20\x72\x61\x69\x73\x65\x64\x2e\x20\x49\x66\x20\x74\x68\x65\x0a\x20\x20\x20\x20\x70\x72\x6f\x76\x69\x64\x65\x64\x20\x70\x61\x74\x68\x20\x69\x73\x20\x6e\x6f\x74\x20\x73\x74\x72\x2c\x20\x62\x79\x74\x65\x73\x2c\x20\x6f\x72\x20\x6f\x73\x2e\x50\x61\x74\x68\x4c\x69\x6b\x65\x2c\x20\x54\x79\x70\x65\x45\x72\x72\x6f\x72\x20\x69\x73\x20\x72\x61\x69\x73\x65\x64\x2e\x0a\x20\x20\x20\x20",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[48];
+ }
+os_toplevel_consts_133_consts_2 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 47,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "expected str, bytes or os.PathLike object, not ",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[56];
+ }
+os_toplevel_consts_133_consts_3 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 55,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "expected {}.__fspath__() to return str or bytes, not {}",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[4];
+ }_object;
+ }
+os_toplevel_consts_133_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_item = {
+ & os_toplevel_consts_133_consts_0._ascii.ob_base,
+ &_Py_ID(__fspath__),
+ & os_toplevel_consts_133_consts_2._ascii.ob_base,
+ & os_toplevel_consts_133_consts_3._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[10];
+ }_object;
+ }
+os_toplevel_consts_133_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 10,
+ },
+ .ob_item = {
+ &_Py_ID(isinstance),
+ & const_str_str._ascii.ob_base,
+ &_Py_ID(bytes),
+ &_Py_ID(type),
+ &_Py_ID(__fspath__),
+ & const_str_AttributeError._ascii.ob_base,
+ & const_str_hasattr._ascii.ob_base,
+ & const_str_TypeError._ascii.ob_base,
+ &_Py_ID(__name__),
+ &_Py_ID(format),
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[8];
+ }
+const_str__fspath = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 7,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_fspath",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[192];
+ }
+os_toplevel_consts_133_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 191,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf4\x10\x00\x08\x12\x90\x24\x9c\x13\x9c\x65\x98\x0c\xd4\x07\x25\xd8\x0f\x13\x88\x0b\xf4\x08\x00\x11\x15\x90\x54\x93\x0a\x80\x49\xf0\x02\x07\x05\x39\xd8\x14\x1d\xd7\x14\x28\xd1\x14\x28\xa8\x14\xd3\x14\x2e\x88\x09\xf4\x0e\x00\x08\x12\x90\x29\x9c\x63\xa4\x35\x98\x5c\xd4\x07\x2a\xd8\x0f\x18\xd0\x08\x18\xe4\x0e\x17\xf0\x00\x01\x19\x21\xdf\x21\x27\xa1\x16\xa8\x09\xd7\x28\x3a\xd1\x28\x3a\xdc\x28\x2c\xa8\x59\xab\x0f\xd7\x28\x40\xd1\x28\x40\xf3\x03\x01\x22\x42\x01\xf3\x03\x02\x0f\x43\x01\xf0\x00\x02\x09\x43\x01\xf8\xf4\x13\x00\x0c\x1a\xf2\x00\x05\x05\x39\xdc\x0b\x12\x90\x39\x98\x6c\xd4\x0b\x2b\xd8\x0c\x11\xe4\x12\x1b\xf0\x00\x01\x1d\x23\xd8\x25\x2e\xd7\x25\x37\xd1\x25\x37\xf1\x03\x01\x1d\x38\xf3\x00\x01\x13\x39\xf0\x00\x01\x0d\x39\xf0\x09\x05\x05\x39\xfa",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[12];
+ }
+os_toplevel_consts_133_exceptiontable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 11,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\xa5\x11\x42\x06\x00\xc2\x06\x2f\x42\x35\x03",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[10];
+ }
+const_str_path_type = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 9,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "path_type",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[10];
+ }
+const_str_path_repr = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 9,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "path_repr",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+os_toplevel_consts_133_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ &_Py_ID(path),
+ & const_str_path_type._ascii.ob_base,
+ & const_str_path_repr._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(368)
+os_toplevel_consts_133 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 184,
+ },
+ .co_consts = & os_toplevel_consts_133_consts._object.ob_base.ob_base,
+ .co_names = & os_toplevel_consts_133_names._object.ob_base.ob_base,
+ .co_exceptiontable = & os_toplevel_consts_133_exceptiontable.ob_base.ob_base,
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 11 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 8,
+ .co_firstlineno = 1042,
+ .co_nlocalsplus = 3,
+ .co_nlocals = 3,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 661,
+ .co_localsplusnames = & os_toplevel_consts_133_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_3_localspluskinds.ob_base.ob_base,
+ .co_filename = & os_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = & const_str__fspath._ascii.ob_base,
+ .co_qualname = & const_str__fspath._ascii.ob_base,
+ .co_linetable = & os_toplevel_consts_133_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x74\x02\x00\x00\x00\x00\x00\x00\x00\x00\x74\x04\x00\x00\x00\x00\x00\x00\x00\x00\x66\x02\xab\x02\x00\x00\x00\x00\x00\x00\x72\x02\x7c\x00\x53\x00\x74\x07\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x01\x09\x00\x7c\x01\x6a\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x02\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x02\x74\x02\x00\x00\x00\x00\x00\x00\x00\x00\x74\x04\x00\x00\x00\x00\x00\x00\x00\x00\x66\x02\xab\x02\x00\x00\x00\x00\x00\x00\x72\x02\x7c\x02\x53\x00\x74\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x64\x03\x6a\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x6a\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x74\x07\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x02\xab\x01\x00\x00\x00\x00\x00\x00\x6a\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x02\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x82\x01\x23\x00\x74\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x72\x26\x01\x00\x74\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x64\x01\xab\x02\x00\x00\x00\x00\x00\x00\x72\x01\x82\x00\x74\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x64\x02\x7c\x01\x6a\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7a\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x82\x01\x77\x00\x78\x03\x59\x00\x77\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[9];
+ }
+const_str_PathLike = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 8,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "PathLike",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[68];
+ }
+os_toplevel_consts_135_consts_1 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 67,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Abstract base class for implementing the file system path protocol.",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[58];
+ }
+os_toplevel_consts_135_consts_2_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 57,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Return the file system path representation of the object.",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+os_toplevel_consts_135_consts_2_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & os_toplevel_consts_135_consts_2_consts_0._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[20];
+ }
+os_toplevel_consts_135_consts_2_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 19,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "PathLike.__fspath__",
+};
+static
+ struct _PyCode_DEF(14)
+os_toplevel_consts_135_consts_2 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 7,
+ },
+ .co_consts = & os_toplevel_consts_135_consts_2_consts._object.ob_base.ob_base,
+ .co_names = & codecs_toplevel_consts_14_consts_2_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 2 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 1,
+ .co_firstlineno = 1082,
+ .co_nlocalsplus = 1,
+ .co_nlocals = 1,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 662,
+ .co_localsplusnames = & importlib__bootstrap_toplevel_consts_7_consts_2_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_characters[32]),
+ .co_filename = & os_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__fspath__),
+ .co_qualname = & os_toplevel_consts_135_consts_2_qualname._ascii.ob_base,
+ .co_linetable = & codecs_toplevel_consts_18_consts_3_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x82\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+os_toplevel_consts_135_consts_3_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ Py_None,
+ &_Py_ID(__fspath__),
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+os_toplevel_consts_135_consts_3_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ & const_str_PathLike._ascii.ob_base,
+ & const_str__check_methods._ascii.ob_base,
+ & const_str_NotImplemented._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[26];
+ }
+os_toplevel_consts_135_consts_3_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 25,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "PathLike.__subclasshook__",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[29];
+ }
+os_toplevel_consts_135_consts_3_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 28,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xe0\x0b\x0e\x94\x28\x89\x3f\xdc\x13\x21\xa0\x28\xa8\x4c\xd3\x13\x39\xd0\x0c\x39\xdc\x0f\x1d\xd0\x08\x1d",
+};
+static
+ struct _PyCode_DEF(54)
+os_toplevel_consts_135_consts_3 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 27,
+ },
+ .co_consts = & os_toplevel_consts_135_consts_3_consts._object.ob_base.ob_base,
+ .co_names = & os_toplevel_consts_135_consts_3_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 6 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 1087,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 2,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 663,
+ .co_localsplusnames = & abc_toplevel_consts_10_consts_3_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_14_consts_2_localspluskinds.ob_base.ob_base,
+ .co_filename = & os_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__subclasshook__),
+ .co_qualname = & os_toplevel_consts_135_consts_3_qualname._ascii.ob_base,
+ .co_linetable = & os_toplevel_consts_135_consts_3_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x00\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x75\x00\x72\x0c\x74\x03\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x64\x01\xab\x02\x00\x00\x00\x00\x00\x00\x53\x00\x74\x04\x00\x00\x00\x00\x00\x00\x00\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[5];
+ }_object;
+ }
+os_toplevel_consts_135_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 5,
+ },
+ .ob_item = {
+ & const_str_PathLike._ascii.ob_base,
+ & os_toplevel_consts_135_consts_1._ascii.ob_base,
+ & os_toplevel_consts_135_consts_2.ob_base.ob_base,
+ & os_toplevel_consts_135_consts_3.ob_base.ob_base,
+ Py_None,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[11];
+ }_object;
+ }
+os_toplevel_consts_135_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 11,
+ },
+ .ob_item = {
+ &_Py_ID(__name__),
+ &_Py_ID(__module__),
+ &_Py_ID(__qualname__),
+ &_Py_ID(__doc__),
+ & const_str_abc._ascii.ob_base,
+ & const_str_abstractmethod._ascii.ob_base,
+ &_Py_ID(__fspath__),
+ & const_str_classmethod._ascii.ob_base,
+ &_Py_ID(__subclasshook__),
+ & const_str_GenericAlias._ascii.ob_base,
+ &_Py_ID(__class_getitem__),
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[63];
+ }
+os_toplevel_consts_135_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 62,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x84\x00\xe1\x04\x4d\xe0\x05\x08\xd7\x05\x17\xd1\x05\x17\xf1\x02\x02\x05\x22\xf3\x03\x00\x06\x18\xf0\x02\x02\x05\x22\xf0\x08\x00\x06\x11\xf1\x02\x03\x05\x1e\xf3\x03\x00\x06\x11\xf0\x02\x03\x05\x1e\xf1\x0a\x00\x19\x24\xa0\x4c\xd3\x18\x31\xd1\x04\x15",
+};
+static
+ struct _PyCode_DEF(84)
+os_toplevel_consts_135 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 42,
+ },
+ .co_consts = & os_toplevel_consts_135_consts._object.ob_base.ob_base,
+ .co_names = & os_toplevel_consts_135_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 0,
+ .co_argcount = 0,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 3 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 3,
+ .co_firstlineno = 1078,
+ .co_nlocalsplus = 0,
+ .co_nlocals = 0,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 664,
+ .co_localsplusnames = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_filename = & os_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = & const_str_PathLike._ascii.ob_base,
+ .co_qualname = & const_str_PathLike._ascii.ob_base,
+ .co_linetable = & os_toplevel_consts_135_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x65\x00\x5a\x01\x64\x00\x5a\x02\x64\x01\x5a\x03\x65\x04\x6a\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x02\x84\x00\xab\x00\x00\x00\x00\x00\x00\x00\x5a\x06\x65\x07\x64\x03\x84\x00\xab\x00\x00\x00\x00\x00\x00\x00\x5a\x08\x02\x00\x65\x07\x65\x09\xab\x01\x00\x00\x00\x00\x00\x00\x5a\x0a\x79\x04",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[19];
+ }
+const_str__AddedDllDirectory = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 18,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_AddedDllDirectory",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[8];
+ }
+const_str__cookie = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 7,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_cookie",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[22];
+ }
+const_str__remove_dll_directory = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 21,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_remove_dll_directory",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+os_toplevel_consts_137_consts_1_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ &_Py_ID(path),
+ & const_str__cookie._ascii.ob_base,
+ & const_str__remove_dll_directory._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[28];
+ }
+os_toplevel_consts_137_consts_1_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 27,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_AddedDllDirectory.__init__",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[25];
+ }
+os_toplevel_consts_137_consts_1_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 24,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xd8\x18\x1c\x88\x44\x8c\x49\xd8\x1b\x21\x88\x44\x8c\x4c\xd8\x29\x3d\x88\x44\xd5\x0c\x26",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[21];
+ }
+const_str_remove_dll_directory = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 20,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "remove_dll_directory",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[4];
+ }_object;
+ }
+os_toplevel_consts_137_consts_1_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_item = {
+ &_Py_ID(self),
+ &_Py_ID(path),
+ &_Py_ID(cookie),
+ & const_str_remove_dll_directory._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(46)
+os_toplevel_consts_137_consts_1 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 23,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_1_consts._object.ob_base.ob_base,
+ .co_names = & os_toplevel_consts_137_consts_1_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 4,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 6 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 2,
+ .co_firstlineno = 1098,
+ .co_nlocalsplus = 4,
+ .co_nlocals = 4,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 665,
+ .co_localsplusnames = & os_toplevel_consts_137_consts_1_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_7_consts_3_localspluskinds.ob_base.ob_base,
+ .co_filename = & os_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__init__),
+ .co_qualname = & os_toplevel_consts_137_consts_1_qualname._ascii.ob_base,
+ .co_linetable = & os_toplevel_consts_137_consts_1_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x01\x7c\x00\x5f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x02\x7c\x00\x5f\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x03\x7c\x00\x5f\x02\x00\x00\x00\x00\x00\x00\x00\x00\x79\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+os_toplevel_consts_137_consts_2_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ & const_str__remove_dll_directory._ascii.ob_base,
+ & const_str__cookie._ascii.ob_base,
+ &_Py_ID(path),
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[25];
+ }
+os_toplevel_consts_137_consts_2_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 24,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_AddedDllDirectory.close",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[28];
+ }
+os_toplevel_consts_137_consts_2_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 27,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xd8\x0c\x10\xd7\x0c\x26\xd1\x0c\x26\xa0\x74\xa7\x7c\xa1\x7c\xd4\x0c\x34\xd8\x18\x1c\x88\x44\x8d\x49",
+};
+static
+ struct _PyCode_DEF(72)
+os_toplevel_consts_137_consts_2 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 36,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_1_consts._object.ob_base.ob_base,
+ .co_names = & os_toplevel_consts_137_consts_2_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 4 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 3,
+ .co_firstlineno = 1102,
+ .co_nlocalsplus = 1,
+ .co_nlocals = 1,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 666,
+ .co_localsplusnames = & importlib__bootstrap_toplevel_consts_7_consts_2_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_characters[32]),
+ .co_filename = & os_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(close),
+ .co_qualname = & os_toplevel_consts_137_consts_2_qualname._ascii.ob_base,
+ .co_linetable = & os_toplevel_consts_137_consts_2_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x00\x6a\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x64\x00\x7c\x00\x5f\x02\x00\x00\x00\x00\x00\x00\x00\x00\x79\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[29];
+ }
+os_toplevel_consts_137_consts_3_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 28,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_AddedDllDirectory.__enter__",
+};
+static
+ struct _PyCode_DEF(6)
+os_toplevel_consts_137_consts_3 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 3,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_1_consts._object.ob_base.ob_base,
+ .co_names = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 2 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 1,
+ .co_firstlineno = 1105,
+ .co_nlocalsplus = 1,
+ .co_nlocals = 1,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 667,
+ .co_localsplusnames = & importlib__bootstrap_toplevel_consts_7_consts_2_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_characters[32]),
+ .co_filename = & os_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__enter__),
+ .co_qualname = & os_toplevel_consts_137_consts_3_qualname._ascii.ob_base,
+ .co_linetable = & os_toplevel_consts_129_consts_3_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[28];
+ }
+os_toplevel_consts_137_consts_4_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 27,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_AddedDllDirectory.__exit__",
+};
+static
+ struct _PyCode_DEF(36)
+os_toplevel_consts_137_consts_4 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 18,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_1_consts._object.ob_base.ob_base,
+ .co_names = & os_toplevel_consts_129_consts_4_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 7,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 4 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 2,
+ .co_firstlineno = 1107,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 2,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 668,
+ .co_localsplusnames = & importlib__bootstrap_toplevel_consts_30_consts_5_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_14_consts_2_localspluskinds.ob_base.ob_base,
+ .co_filename = & os_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__exit__),
+ .co_qualname = & os_toplevel_consts_137_consts_4_qualname._ascii.ob_base,
+ .co_linetable = & os_toplevel_consts_129_consts_4_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x00\x6a\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x01\x00\x79\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[26];
+ }
+os_toplevel_consts_137_consts_5_consts_1 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 25,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "<AddedDllDirectory({!r})>",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[22];
+ }
+os_toplevel_consts_137_consts_5_consts_2 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 21,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "<AddedDllDirectory()>",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+os_toplevel_consts_137_consts_5_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ Py_None,
+ & os_toplevel_consts_137_consts_5_consts_1._ascii.ob_base,
+ & os_toplevel_consts_137_consts_5_consts_2._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+os_toplevel_consts_137_consts_5_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ &_Py_ID(path),
+ &_Py_ID(format),
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[28];
+ }
+os_toplevel_consts_137_consts_5_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 27,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_AddedDllDirectory.__repr__",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[34];
+ }
+os_toplevel_consts_137_consts_5_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 33,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xd8\x0f\x13\x8f\x79\x8a\x79\xd8\x17\x32\xd7\x17\x39\xd1\x17\x39\xb8\x24\xbf\x29\xb9\x29\xd3\x17\x44\xd0\x10\x44\xd8\x13\x2a",
+};
+static
+ struct _PyCode_DEF(82)
+os_toplevel_consts_137_consts_5 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 41,
+ },
+ .co_consts = & os_toplevel_consts_137_consts_5_consts._object.ob_base.ob_base,
+ .co_names = & os_toplevel_consts_137_consts_5_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 4 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 3,
+ .co_firstlineno = 1109,
+ .co_nlocalsplus = 1,
+ .co_nlocals = 1,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 669,
+ .co_localsplusnames = & importlib__bootstrap_toplevel_consts_7_consts_2_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_characters[32]),
+ .co_filename = & os_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__repr__),
+ .co_qualname = & os_toplevel_consts_137_consts_5_qualname._ascii.ob_base,
+ .co_linetable = & os_toplevel_consts_137_consts_5_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x72\x1b\x64\x01\x6a\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x53\x00\x79\x02",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[7];
+ }_object;
+ }
+os_toplevel_consts_137_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 7,
+ },
+ .ob_item = {
+ & const_str__AddedDllDirectory._ascii.ob_base,
+ & os_toplevel_consts_137_consts_1.ob_base.ob_base,
+ & os_toplevel_consts_137_consts_2.ob_base.ob_base,
+ & os_toplevel_consts_137_consts_3.ob_base.ob_base,
+ & os_toplevel_consts_137_consts_4.ob_base.ob_base,
+ & os_toplevel_consts_137_consts_5.ob_base.ob_base,
+ Py_None,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[8];
+ }_object;
+ }
+os_toplevel_consts_137_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 8,
+ },
+ .ob_item = {
+ &_Py_ID(__name__),
+ &_Py_ID(__module__),
+ &_Py_ID(__qualname__),
+ &_Py_ID(__init__),
+ &_Py_ID(close),
+ &_Py_ID(__enter__),
+ &_Py_ID(__exit__),
+ &_Py_ID(__repr__),
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[28];
+ }
+os_toplevel_consts_137_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 27,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x84\x00\xf2\x02\x03\x09\x3e\xf2\x08\x02\x09\x1d\xf2\x06\x01\x09\x18\xf2\x04\x01\x09\x19\xf3\x04\x03\x09\x2b",
+};
+static
+ struct _PyCode_DEF(42)
+os_toplevel_consts_137 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 21,
+ },
+ .co_consts = & os_toplevel_consts_137_consts._object.ob_base.ob_base,
+ .co_names = & os_toplevel_consts_137_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 0,
+ .co_argcount = 0,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 1 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 1,
+ .co_firstlineno = 1097,
+ .co_nlocalsplus = 0,
+ .co_nlocals = 0,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 670,
+ .co_localsplusnames = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_filename = & os_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = & const_str__AddedDllDirectory._ascii.ob_base,
+ .co_qualname = & const_str__AddedDllDirectory._ascii.ob_base,
+ .co_linetable = & os_toplevel_consts_137_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x65\x00\x5a\x01\x64\x00\x5a\x02\x64\x01\x84\x00\x5a\x03\x64\x02\x84\x00\x5a\x04\x64\x03\x84\x00\x5a\x05\x64\x04\x84\x00\x5a\x06\x64\x05\x84\x00\x5a\x07\x79\x06",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[336];
+ }
+os_toplevel_consts_139_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 335,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x41\x64\x64\x20\x61\x20\x70\x61\x74\x68\x20\x74\x6f\x20\x74\x68\x65\x20\x44\x4c\x4c\x20\x73\x65\x61\x72\x63\x68\x20\x70\x61\x74\x68\x2e\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x54\x68\x69\x73\x20\x73\x65\x61\x72\x63\x68\x20\x70\x61\x74\x68\x20\x69\x73\x20\x75\x73\x65\x64\x20\x77\x68\x65\x6e\x20\x72\x65\x73\x6f\x6c\x76\x69\x6e\x67\x20\x64\x65\x70\x65\x6e\x64\x65\x6e\x63\x69\x65\x73\x20\x66\x6f\x72\x20\x69\x6d\x70\x6f\x72\x74\x65\x64\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x65\x78\x74\x65\x6e\x73\x69\x6f\x6e\x20\x6d\x6f\x64\x75\x6c\x65\x73\x20\x28\x74\x68\x65\x20\x6d\x6f\x64\x75\x6c\x65\x20\x69\x74\x73\x65\x6c\x66\x20\x69\x73\x20\x72\x65\x73\x6f\x6c\x76\x65\x64\x20\x74\x68\x72\x6f\x75\x67\x68\x20\x73\x79\x73\x2e\x70\x61\x74\x68\x29\x2c\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x61\x6e\x64\x20\x61\x6c\x73\x6f\x20\x62\x79\x20\x63\x74\x79\x70\x65\x73\x2e\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x52\x65\x6d\x6f\x76\x65\x20\x74\x68\x65\x20\x64\x69\x72\x65\x63\x74\x6f\x72\x79\x20\x62\x79\x20\x63\x61\x6c\x6c\x69\x6e\x67\x20\x63\x6c\x6f\x73\x65\x28\x29\x20\x6f\x6e\x20\x74\x68\x65\x20\x72\x65\x74\x75\x72\x6e\x65\x64\x20\x6f\x62\x6a\x65\x63\x74\x20\x6f\x72\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x75\x73\x69\x6e\x67\x20\x69\x74\x20\x69\x6e\x20\x61\x20\x77\x69\x74\x68\x20\x73\x74\x61\x74\x65\x6d\x65\x6e\x74\x2e\x0a\x20\x20\x20\x20\x20\x20\x20\x20",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+os_toplevel_consts_139_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ & os_toplevel_consts_139_consts_0._ascii.ob_base,
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 0],
+ Py_None,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[19];
+ }
+const_str__add_dll_directory = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 18,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_add_dll_directory",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[4];
+ }_object;
+ }
+os_toplevel_consts_139_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_item = {
+ &_Py_ID(nt),
+ & const_str__add_dll_directory._ascii.ob_base,
+ & const_str__AddedDllDirectory._ascii.ob_base,
+ & const_str__remove_dll_directory._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[18];
+ }
+const_str_add_dll_directory = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 17,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "add_dll_directory",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[54];
+ }
+os_toplevel_consts_139_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 53,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf3\x14\x00\x09\x12\xd8\x11\x26\x90\x12\xd7\x11\x26\xd1\x11\x26\xa0\x74\xd3\x11\x2c\x88\x06\xdc\x0f\x21\xd8\x0c\x10\xd8\x0c\x12\xd8\x0c\x0e\xd7\x0c\x24\xd1\x0c\x24\xf3\x07\x04\x10\x0a\xf0\x00\x04\x09\x0a",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+os_toplevel_consts_139_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ &_Py_ID(path),
+ &_Py_ID(nt),
+ &_Py_ID(cookie),
+ },
+ },
+};
+static
+ struct _PyCode_DEF(92)
+os_toplevel_consts_139 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 46,
+ },
+ .co_consts = & os_toplevel_consts_139_consts._object.ob_base.ob_base,
+ .co_names = & os_toplevel_consts_139_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 8 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 5,
+ .co_firstlineno = 1114,
+ .co_nlocalsplus = 3,
+ .co_nlocals = 3,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 671,
+ .co_localsplusnames = & os_toplevel_consts_139_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_3_localspluskinds.ob_base.ob_base,
+ .co_filename = & os_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = & const_str_add_dll_directory._ascii.ob_base,
+ .co_qualname = & const_str_add_dll_directory._ascii.ob_base,
+ .co_linetable = & os_toplevel_consts_139_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x64\x01\x64\x02\x6c\x00\x7d\x01\x02\x00\x7c\x01\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x02\x74\x05\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x7c\x02\x7c\x01\x6a\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x03\x00\x00\x00\x00\x00\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyObject ob_base;
+ uintptr_t lv_tag;
+ digit ob_digit[1];
+ }
+const_int_511 = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyLong_Type,
+ },
+ .lv_tag = TAG_FROM_SIGN_AND_SIZE(1, 1),
+ .ob_digit = { 511 },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+os_toplevel_consts_140 = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & const_int_511.ob_base,
+ Py_False,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+os_toplevel_consts_141 = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ Py_True,
+ Py_None,
+ Py_False,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+os_toplevel_consts_142 = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ &_Py_STR(dot),
+ Py_True,
+ Py_None,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+os_toplevel_consts_144 = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ &_Py_ID(r),
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + -1],
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+os_toplevel_consts_145 = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ &_Py_ID(r),
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + -1],
+ Py_None,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[146];
+ }_object;
+ }
+os_toplevel_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 146,
+ },
+ .ob_item = {
+ & os_toplevel_consts_0._ascii.ob_base,
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 0],
+ Py_None,
+ & os_toplevel_consts_3._object.ob_base.ob_base,
+ & os_toplevel_consts_4._object.ob_base.ob_base,
+ & os_toplevel_consts_5.ob_base.ob_base,
+ & os_toplevel_consts_6.ob_base.ob_base,
+ &_Py_ID(posix),
+ (PyObject *)&_Py_SINGLETON(strings).ascii[10],
+ & codecs_toplevel_consts_3._object.ob_base.ob_base,
+ & os_toplevel_consts_10._object.ob_base.ob_base,
+ & const_str__exit._ascii.ob_base,
+ & os_toplevel_consts_12._object.ob_base.ob_base,
+ &_Py_ID(nt),
+ & os_toplevel_consts_14._ascii.ob_base,
+ & os_toplevel_consts_15._ascii.ob_base,
+ & os_toplevel_consts_16._ascii.ob_base,
+ & os_toplevel_consts_17._object.ob_base.ob_base,
+ & const_str__have_functions._ascii.ob_base,
+ & os_toplevel_consts_19.ob_base.ob_base,
+ & const_str_HAVE_FACCESSAT._ascii.ob_base,
+ &_Py_ID(access),
+ & const_str_HAVE_FCHMODAT._ascii.ob_base,
+ & const_str_chmod._ascii.ob_base,
+ & const_str_HAVE_FCHOWNAT._ascii.ob_base,
+ & const_str_chown._ascii.ob_base,
+ & const_str_HAVE_FSTATAT._ascii.ob_base,
+ & const_str_stat._ascii.ob_base,
+ & const_str_HAVE_FUTIMESAT._ascii.ob_base,
+ & const_str_utime._ascii.ob_base,
+ & const_str_HAVE_LINKAT._ascii.ob_base,
+ & const_str_link._ascii.ob_base,
+ & const_str_HAVE_MKDIRAT._ascii.ob_base,
+ & const_str_mkdir._ascii.ob_base,
+ & const_str_HAVE_MKFIFOAT._ascii.ob_base,
+ & const_str_mkfifo._ascii.ob_base,
+ & const_str_HAVE_MKNODAT._ascii.ob_base,
+ & const_str_mknod._ascii.ob_base,
+ & const_str_HAVE_OPENAT._ascii.ob_base,
+ &_Py_ID(open),
+ & const_str_HAVE_READLINKAT._ascii.ob_base,
+ & const_str_readlink._ascii.ob_base,
+ & const_str_HAVE_RENAMEAT._ascii.ob_base,
+ & const_str_rename._ascii.ob_base,
+ & const_str_HAVE_SYMLINKAT._ascii.ob_base,
+ & const_str_symlink._ascii.ob_base,
+ & const_str_HAVE_UNLINKAT._ascii.ob_base,
+ &_Py_ID(unlink),
+ & const_str_rmdir._ascii.ob_base,
+ & const_str_HAVE_UTIMENSAT._ascii.ob_base,
+ & const_str_HAVE_FCHDIR._ascii.ob_base,
+ & const_str_chdir._ascii.ob_base,
+ & const_str_HAVE_FCHMOD._ascii.ob_base,
+ & const_str_HAVE_FCHOWN._ascii.ob_base,
+ & const_str_HAVE_FDOPENDIR._ascii.ob_base,
+ & const_str_listdir._ascii.ob_base,
+ & const_str_scandir._ascii.ob_base,
+ & const_str_HAVE_FEXECVE._ascii.ob_base,
+ & const_str_execve._ascii.ob_base,
+ & const_str_HAVE_FTRUNCATE._ascii.ob_base,
+ &_Py_ID(truncate),
+ & const_str_HAVE_FUTIMENS._ascii.ob_base,
+ & const_str_HAVE_FUTIMES._ascii.ob_base,
+ & const_str_HAVE_FPATHCONF._ascii.ob_base,
+ & const_str_pathconf._ascii.ob_base,
+ & const_str_statvfs._ascii.ob_base,
+ & const_str_fstatvfs._ascii.ob_base,
+ & const_str_HAVE_FSTATVFS._ascii.ob_base,
+ & const_str_HAVE_LCHFLAGS._ascii.ob_base,
+ & const_str_chflags._ascii.ob_base,
+ & const_str_HAVE_LCHMOD._ascii.ob_base,
+ & const_str_lchown._ascii.ob_base,
+ & const_str_HAVE_LCHOWN._ascii.ob_base,
+ & const_str_HAVE_LUTIMES._ascii.ob_base,
+ & const_str_HAVE_LSTAT._ascii.ob_base,
+ & const_str_MS_WINDOWS._ascii.ob_base,
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 1],
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 2],
+ Py_False,
+ & os_toplevel_consts_79.ob_base.ob_base,
+ & os_toplevel_consts_80.ob_base.ob_base,
+ & os_toplevel_consts_81.ob_base.ob_base,
+ & os_toplevel_consts_82._object.ob_base.ob_base,
+ & os_toplevel_consts_83.ob_base.ob_base,
+ & const_str_walk._ascii.ob_base,
+ & os_toplevel_consts_85._object.ob_base.ob_base,
+ & os_toplevel_consts_86.ob_base.ob_base,
+ & os_toplevel_consts_87.ob_base.ob_base,
+ & const_str_fwalk._ascii.ob_base,
+ & os_toplevel_consts_89.ob_base.ob_base,
+ & os_toplevel_consts_90.ob_base.ob_base,
+ & os_toplevel_consts_91.ob_base.ob_base,
+ & os_toplevel_consts_92.ob_base.ob_base,
+ & os_toplevel_consts_93.ob_base.ob_base,
+ & os_toplevel_consts_94.ob_base.ob_base,
+ & os_toplevel_consts_95._object.ob_base.ob_base,
+ & os_toplevel_consts_96.ob_base.ob_base,
+ & os_toplevel_consts_97.ob_base.ob_base,
+ & os_toplevel_consts_98._object.ob_base.ob_base,
+ & os_toplevel_consts_99.ob_base.ob_base,
+ & const_str__Environ._ascii.ob_base,
+ & os_toplevel_consts_101.ob_base.ob_base,
+ & os_toplevel_consts_102.ob_base.ob_base,
+ & os_toplevel_consts_103._object.ob_base.ob_base,
+ & os_toplevel_consts_104.ob_base.ob_base,
+ & os_toplevel_consts_105.ob_base.ob_base,
+ & os_toplevel_consts_106._object.ob_base.ob_base,
+ & os_toplevel_consts_107.ob_base.ob_base,
+ & const_str_fork._ascii.ob_base,
+ & const_str_spawnv._ascii.ob_base,
+ & const_str_execv._ascii.ob_base,
+ & os_toplevel_consts_111._object.ob_base.ob_base,
+ & os_toplevel_consts_112.ob_base.ob_base,
+ & os_toplevel_consts_113.ob_base.ob_base,
+ & os_toplevel_consts_114.ob_base.ob_base,
+ & os_toplevel_consts_115.ob_base.ob_base,
+ & os_toplevel_consts_116.ob_base.ob_base,
+ & os_toplevel_consts_117._object.ob_base.ob_base,
+ & os_toplevel_consts_118.ob_base.ob_base,
+ & os_toplevel_consts_119.ob_base.ob_base,
+ & const_str_spawnl._ascii.ob_base,
+ & const_str_spawnle._ascii.ob_base,
+ & const_str_spawnvp._ascii.ob_base,
+ & os_toplevel_consts_123.ob_base.ob_base,
+ & os_toplevel_consts_124.ob_base.ob_base,
+ & const_str_spawnlp._ascii.ob_base,
+ & const_str_spawnlpe._ascii.ob_base,
+ & const_str_vxworks._ascii.ob_base,
+ & os_toplevel_consts_128.ob_base.ob_base,
+ & os_toplevel_consts_129.ob_base.ob_base,
+ & const_str__wrap_close._ascii.ob_base,
+ & const_str_popen._ascii.ob_base,
+ & os_toplevel_consts_132.ob_base.ob_base,
+ & os_toplevel_consts_133.ob_base.ob_base,
+ & const_str_fspath._ascii.ob_base,
+ & os_toplevel_consts_135.ob_base.ob_base,
+ & const_str_PathLike._ascii.ob_base,
+ & os_toplevel_consts_137.ob_base.ob_base,
+ & const_str__AddedDllDirectory._ascii.ob_base,
+ & os_toplevel_consts_139.ob_base.ob_base,
+ & os_toplevel_consts_140._object.ob_base.ob_base,
+ & os_toplevel_consts_141._object.ob_base.ob_base,
+ & os_toplevel_consts_142._object.ob_base.ob_base,
+ & importlib__bootstrap_toplevel_consts_1_consts._object.ob_base.ob_base,
+ & os_toplevel_consts_144._object.ob_base.ob_base,
+ & os_toplevel_consts_145._object.ob_base.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[17];
+ }
+const_str__collections_abc = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 16,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_collections_abc",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[7];
+ }
+const_str__names = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 6,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_names",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[10];
+ }
+const_str_posixpath = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 9,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "posixpath",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[7];
+ }
+const_str_ntpath = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 6,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "ntpath",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[16];
+ }
+const_str_supports_dir_fd = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 15,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "supports_dir_fd",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[23];
+ }
+const_str_supports_effective_ids = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 22,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "supports_effective_ids",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[12];
+ }
+const_str_supports_fd = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 11,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "supports_fd",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[25];
+ }
+const_str_supports_follow_symlinks = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 24,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "supports_follow_symlinks",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[105];
+ }_object;
+ }
+os_toplevel_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 105,
+ },
+ .ob_item = {
+ &_Py_ID(__doc__),
+ & const_str_abc._ascii.ob_base,
+ & const_str_sys._ascii.ob_base,
+ & const_str_stat._ascii.ob_base,
+ & const_str_st._ascii.ob_base,
+ & const_str__collections_abc._ascii.ob_base,
+ & const_str__check_methods._ascii.ob_base,
+ &_Py_ID(type),
+ & const_str_list._ascii.ob_base,
+ & const_str_int._ascii.ob_base,
+ & const_str_GenericAlias._ascii.ob_base,
+ & const_str_builtin_module_names._ascii.ob_base,
+ & const_str__names._ascii.ob_base,
+ &_Py_ID(__all__),
+ & const_str__exists._ascii.ob_base,
+ & const_str__get_exports_list._ascii.ob_base,
+ &_Py_ID(name),
+ & const_str_linesep._ascii.ob_base,
+ &_Py_ID(posix),
+ & const_str__exit._ascii.ob_base,
+ &_Py_ID(append),
+ & const_str_ImportError._ascii.ob_base,
+ & const_str_posixpath._ascii.ob_base,
+ &_Py_ID(path),
+ & const_str__have_functions._ascii.ob_base,
+ &_Py_ID(extend),
+ &_Py_ID(nt),
+ & const_str_ntpath._ascii.ob_base,
+ &_Py_ID(modules),
+ & os_toplevel_consts_16._ascii.ob_base,
+ & const_str_curdir._ascii.ob_base,
+ & const_str_pardir._ascii.ob_base,
+ &_Py_ID(sep),
+ & const_str_pathsep._ascii.ob_base,
+ & const_str_defpath._ascii.ob_base,
+ & const_str_extsep._ascii.ob_base,
+ & const_str_altsep._ascii.ob_base,
+ & const_str_devnull._ascii.ob_base,
+ &_Py_ID(globals),
+ & const_str__globals._ascii.ob_base,
+ & const_str__add._ascii.ob_base,
+ & const_str_set._ascii.ob_base,
+ & const_str__set._ascii.ob_base,
+ & const_str_supports_dir_fd._ascii.ob_base,
+ & const_str_supports_effective_ids._ascii.ob_base,
+ &_Py_ID(add),
+ & const_str_supports_fd._ascii.ob_base,
+ & const_str_supports_follow_symlinks._ascii.ob_base,
+ & const_str_SEEK_SET._ascii.ob_base,
+ & const_str_SEEK_CUR._ascii.ob_base,
+ & const_str_SEEK_END._ascii.ob_base,
+ & const_str_makedirs._ascii.ob_base,
+ & const_str_removedirs._ascii.ob_base,
+ & const_str_renames._ascii.ob_base,
+ & const_str_walk._ascii.ob_base,
+ &_Py_ID(open),
+ & const_str_scandir._ascii.ob_base,
+ & const_str_fwalk._ascii.ob_base,
+ & const_str__fwalk._ascii.ob_base,
+ & const_str_execl._ascii.ob_base,
+ & const_str_execle._ascii.ob_base,
+ & const_str_execlp._ascii.ob_base,
+ & const_str_execlpe._ascii.ob_base,
+ & const_str_execvp._ascii.ob_base,
+ & const_str_execvpe._ascii.ob_base,
+ & const_str__execvpe._ascii.ob_base,
+ & const_str_get_exec_path._ascii.ob_base,
+ & const_str_MutableMapping._ascii.ob_base,
+ & const_str_Mapping._ascii.ob_base,
+ & const_str__Environ._ascii.ob_base,
+ & const_str__createenviron._ascii.ob_base,
+ & const_str_environ._ascii.ob_base,
+ & const_str_getenv._ascii.ob_base,
+ & const_str_supports_bytes_environ._ascii.ob_base,
+ & const_str__check_bytes._ascii.ob_base,
+ & const_str__data._ascii.ob_base,
+ &_Py_ID(bytes),
+ & const_str_environb._ascii.ob_base,
+ & const_str_getenvb._ascii.ob_base,
+ & const_str__fscodec._ascii.ob_base,
+ & const_str_fsencode._ascii.ob_base,
+ & const_str_fsdecode._ascii.ob_base,
+ & const_str_P_WAIT._ascii.ob_base,
+ & const_str_P_NOWAIT._ascii.ob_base,
+ & const_str_P_NOWAITO._ascii.ob_base,
+ & const_str__spawnvef._ascii.ob_base,
+ & const_str_spawnv._ascii.ob_base,
+ & const_str_spawnve._ascii.ob_base,
+ & const_str_spawnvp._ascii.ob_base,
+ & const_str_spawnvpe._ascii.ob_base,
+ & const_str_spawnl._ascii.ob_base,
+ & const_str_spawnle._ascii.ob_base,
+ & const_str_spawnlp._ascii.ob_base,
+ & const_str_spawnlpe._ascii.ob_base,
+ & const_str_platform._ascii.ob_base,
+ & const_str_popen._ascii.ob_base,
+ & const_str__wrap_close._ascii.ob_base,
+ & const_str_fdopen._ascii.ob_base,
+ & const_str__fspath._ascii.ob_base,
+ & const_str_fspath._ascii.ob_base,
+ &_Py_ID(__name__),
+ & const_str_ABC._ascii.ob_base,
+ & const_str_PathLike._ascii.ob_base,
+ & const_str__AddedDllDirectory._ascii.ob_base,
+ & const_str_add_dll_directory._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[1513];
+ }
+os_toplevel_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 1512,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\xf0\x03\x01\x01\x01\xf1\x02\x15\x01\x04\xf3\x30\x00\x01\x0b\xdb\x00\x0a\xdb\x00\x11\xe5\x00\x2b\xe1\x0f\x13\x90\x44\x98\x13\x91\x49\x8b\x7f\x80\x0c\xe0\x09\x0c\xd7\x09\x21\xd1\x09\x21\x80\x06\xf2\x06\x03\x0b\x15\x80\x07\xf2\x0a\x01\x01\x1d\xf2\x06\x04\x01\x37\xf0\x10\x00\x04\x0b\x88\x66\xd1\x03\x14\xd8\x0b\x12\x80\x44\xd8\x0e\x12\x80\x47\xdc\x04\x17\xf0\x02\x04\x05\x0d\xdd\x08\x1f\xd8\x08\x0f\x8f\x0e\x89\x0e\x90\x77\xd4\x08\x1f\xf3\x06\x00\x05\x1d\xf0\x04\x03\x05\x0d\xdd\x08\x29\xf3\x08\x00\x05\x11\xd8\x04\x0b\x87\x4e\x81\x4e\xd1\x13\x24\xa0\x55\xd3\x13\x2b\xd4\x04\x2c\xd9\x08\x0d\xe0\x05\x09\x88\x56\x81\x5e\xd8\x0b\x0f\x80\x44\xd8\x0e\x14\x80\x47\xdc\x04\x14\xf0\x02\x04\x05\x0d\xdd\x08\x1c\xd8\x08\x0f\x8f\x0e\x89\x0e\x90\x77\xd4\x08\x1f\xf3\x06\x00\x05\x1a\xe3\x04\x0d\xd8\x04\x0b\x87\x4e\x81\x4e\xd1\x13\x24\xa0\x52\xd3\x13\x28\xd4\x04\x29\xd8\x08\x0a\xf0\x04\x03\x05\x0d\xde\x08\x26\xf1\x0a\x00\x0b\x16\xd0\x16\x33\xd3\x0a\x34\xd0\x04\x34\xe0\x19\x1d\x80\x03\x87\x0b\x81\x0b\x88\x49\xd1\x00\x16\xf7\x02\x01\x01\x0d\xf7\x00\x01\x01\x0d\xf3\x00\x01\x01\x0d\xf0\x06\x00\x05\x0b\xf1\x06\x00\x04\x0b\xd0\x0b\x1c\xd5\x03\x1d\xd9\x0f\x16\x8b\x79\x80\x48\xf2\x02\x02\x05\x23\xf1\x08\x00\x0c\x0f\x8b\x35\x80\x44\xd9\x04\x08\xd0\x09\x19\x98\x48\xd4\x04\x25\xd9\x04\x08\x88\x1f\x98\x47\xd4\x04\x24\xd9\x04\x08\x88\x1f\x98\x47\xd4\x04\x24\xd9\x04\x08\x88\x1e\x98\x46\xd4\x04\x23\xd9\x04\x08\xd0\x09\x19\x98\x47\xd4\x04\x24\xd9\x04\x08\x88\x1d\x98\x46\xd4\x04\x23\xd9\x04\x08\x88\x1e\x98\x47\xd4\x04\x24\xd9\x04\x08\x88\x1f\x98\x48\xd4\x04\x25\xd9\x04\x08\x88\x1e\x98\x47\xd4\x04\x24\xd9\x04\x08\x88\x1d\x98\x46\xd4\x04\x23\xd9\x04\x08\xd0\x09\x1a\x98\x4a\xd4\x04\x27\xd9\x04\x08\x88\x1f\x98\x48\xd4\x04\x25\xd9\x04\x08\xd0\x09\x19\x98\x49\xd4\x04\x26\xd9\x04\x08\x88\x1f\x98\x48\xd4\x04\x25\xd9\x04\x08\x88\x1f\x98\x47\xd4\x04\x24\xd9\x04\x08\xd0\x09\x19\x98\x47\xd4\x04\x24\xd8\x16\x1a\x80\x4f\xe1\x0b\x0e\x8b\x35\x80\x44\xd9\x04\x08\xd0\x09\x19\x98\x48\xd4\x04\x25\xd8\x1d\x21\xd0\x04\x1a\xe1\x0b\x0e\x8b\x35\x80\x44\xd9\x04\x08\x88\x1d\x98\x47\xd4\x04\x24\xd9\x04\x08\x88\x1d\x98\x47\xd4\x04\x24\xd9\x04\x08\x88\x1d\x98\x47\xd4\x04\x24\xd9\x04\x08\xd0\x09\x19\x98\x49\xd4\x04\x26\xd9\x04\x08\xd0\x09\x19\x98\x49\xd4\x04\x26\xd9\x04\x08\x88\x1e\x98\x48\xd4\x04\x25\xd8\x04\x08\x87\x48\x81\x48\x88\x54\x84\x4e\xd9\x04\x08\xd0\x09\x19\x98\x4a\xd4\x04\x27\xd9\x04\x08\x88\x1f\x98\x47\xd4\x04\x24\xd9\x04\x08\x88\x1e\x98\x47\xd4\x04\x24\xd9\x04\x08\xd0\x09\x19\x98\x4a\xd4\x04\x27\xd9\x07\x0e\x88\x79\xd4\x07\x19\x99\x67\xa0\x6a\xd4\x1e\x31\xd9\x08\x0c\x88\x5f\x98\x69\xd4\x08\x28\xd8\x12\x16\x80\x4b\xe1\x0b\x0e\x8b\x35\x80\x44\xd9\x04\x08\xd0\x09\x19\x98\x48\xd4\x04\x25\xf1\x2c\x00\x05\x09\x88\x1f\x98\x47\xd4\x04\x24\xd9\x04\x08\x88\x1e\x98\x46\xd4\x04\x23\xd9\x04\x08\x88\x1f\x98\x49\xd4\x04\x26\xd9\x04\x08\x88\x1d\x98\x47\xd4\x04\x24\xd9\x07\x0e\x88\x78\xd4\x07\x18\xd9\x08\x0c\x88\x5d\x98\x47\xd4\x08\x24\xd9\x04\x08\x88\x1d\x98\x46\xd4\x04\x23\xd9\x04\x08\x88\x1e\x98\x47\xd4\x04\x24\xd9\x04\x08\x88\x1c\x98\x46\xd4\x04\x23\xd9\x04\x08\x88\x1e\x98\x46\xd4\x04\x23\xd9\x04\x08\xd0\x09\x19\x98\x47\xd4\x04\x24\xd9\x04\x08\x88\x1c\x98\x46\xd4\x04\x23\xd8\x1f\x23\xd0\x04\x1c\xe0\x08\x0c\xd8\x08\x17\xd8\x08\x10\xd8\x08\x0c\xf0\x0c\x00\x0c\x0d\x80\x08\xd8\x0b\x0c\x80\x08\xd8\x0b\x0c\x80\x08\xf3\x0a\x1e\x01\x12\xf2\x40\x01\x14\x01\x26\xf2\x2c\x18\x01\x11\xf0\x34\x00\x01\x08\x87\x0e\x81\x0e\xd2\x0f\x34\xd4\x00\x35\xf3\x04\x55\x02\x01\x27\xf0\x6e\x04\x00\x01\x08\x87\x0e\x81\x0e\x88\x76\xd4\x00\x16\xe0\x04\x08\x88\x24\x80\x3c\x90\x3f\xd2\x03\x22\xa8\x07\xb0\x14\xa0\x7f\xb8\x2b\xd2\x27\x45\xf0\x04\x2e\x05\x19\xc0\x65\xd0\x54\x58\xf4\x00\x2e\x05\x19\xf2\x60\x01\x36\x05\x30\xf0\x70\x01\x00\x05\x0c\x87\x4e\x81\x4e\x90\x37\xd4\x04\x1b\xf2\x04\x05\x01\x16\xf2\x0e\x06\x01\x21\xf2\x10\x05\x01\x17\xf2\x0e\x07\x01\x22\xf2\x12\x06\x01\x19\xf2\x10\x07\x01\x1e\xf0\x12\x00\x01\x08\x87\x0e\x81\x0e\xd2\x0f\x47\xd4\x00\x48\xf3\x04\x1d\x01\x13\xf3\x40\x01\x29\x01\x24\xf7\x5a\x01\x00\x01\x35\xf4\x04\x47\x01\x01\x13\x88\x7e\xf4\x00\x47\x01\x01\x13\xf2\x52\x02\x1b\x01\x18\xf1\x3c\x00\x0b\x19\xd3\x0a\x1a\x80\x07\xd8\x04\x12\xf3\x06\x04\x01\x25\xf0\x0c\x00\x1b\x1f\xa0\x24\x99\x2c\xd0\x00\x16\xd8\x00\x07\x87\x0e\x81\x0e\xd0\x0f\x33\xd4\x00\x34\xe1\x03\x19\xf2\x02\x03\x05\x15\xf1\x0c\x00\x10\x18\x98\x07\x9f\x0d\x99\x0d\xd8\x08\x14\x90\x65\xd8\x08\x14\x90\x65\xf3\x05\x02\x10\x1d\x80\x48\xf0\x06\x00\x09\x15\xf3\x04\x04\x05\x2a\xf0\x0c\x00\x05\x0c\x87\x4e\x81\x4e\xd0\x13\x2a\xd4\x04\x2b\xf2\x04\x1c\x01\x1e\xf1\x3c\x00\x16\x1e\x93\x5a\xd1\x00\x12\x80\x08\x88\x28\xd8\x04\x0c\xf1\x06\x00\x04\x0b\x88\x36\x84\x3f\x99\x37\xa0\x38\xd4\x1b\x2c\xb1\x17\xb8\x17\xd4\x31\x41\xe0\x0d\x0e\x80\x46\xd8\x1b\x1c\xd0\x04\x1c\x80\x48\x88\x79\xe0\x04\x0b\x87\x4e\x81\x4e\xd2\x13\x36\xd4\x04\x37\xf2\x0c\x19\x05\x33\xf2\x36\x07\x05\x38\xf2\x12\x08\x05\x38\xf2\x18\x08\x05\x39\xf2\x14\x08\x05\x39\xf0\x16\x00\x05\x0c\x87\x4e\x81\x4e\xd2\x13\x3f\xd4\x04\x40\xf1\x06\x00\x04\x0b\x88\x38\xd4\x03\x14\xf2\x08\x07\x05\x28\xf2\x12\x09\x05\x33\xf0\x18\x00\x05\x0c\x87\x4e\x81\x4e\x90\x48\x98\x69\xd0\x13\x28\xd4\x04\x29\xf1\x06\x00\x04\x0b\x88\x39\xd4\x03\x15\xf2\x06\x08\x05\x29\xf2\x14\x09\x05\x34\xf0\x18\x00\x05\x0c\x87\x4e\x81\x4e\x90\x49\x98\x7a\xd0\x13\x2a\xd4\x04\x2b\xf0\x08\x00\x04\x07\x87\x3c\x81\x3c\x90\x39\xd2\x03\x1c\xf3\x04\x13\x05\x31\xf7\x2c\x14\x05\x26\xf1\x00\x14\x05\x26\xf0\x2c\x00\x05\x0c\x87\x4e\x81\x4e\x90\x37\xd4\x04\x1b\xf3\x06\x06\x01\x43\x01\xf2\x16\x1b\x01\x43\x01\xf1\x3e\x00\x08\x0f\x88\x78\xd4\x07\x18\xd8\x0d\x14\x80\x46\xd8\x16\x1e\x80\x46\x84\x4f\xf4\x06\x0f\x01\x32\x88\x73\x8f\x77\x89\x77\xf4\x00\x0f\x01\x32\xf0\x24\x00\x04\x08\x88\x34\x82\x3c\xf7\x02\x0f\x05\x2b\xf1\x00\x0f\x05\x2b\xf3\x22\x10\x05\x0a\xf0\x25\x00\x04\x10\xf8\xf0\x5b\x20\x00\x0c\x17\xf2\x00\x01\x05\x0d\xda\x08\x0c\xf0\x03\x01\x05\x0d\xfb\xf0\x0c\x00\x0c\x17\xf2\x00\x01\x05\x0d\xda\x08\x0c\xf0\x03\x01\x05\x0d\xfb\xf0\x1c\x00\x0c\x17\xf2\x00\x01\x05\x0d\xda\x08\x0c\xf0\x03\x01\x05\x0d\xfb\xf0\x14\x00\x0c\x17\xf2\x00\x01\x05\x0d\xda\x08\x0c\xf0\x03\x01\x05\x0d\xfa",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[73];
+ }
+os_toplevel_exceptiontable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 72,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\xc1\x04\x17\x53\x12\x00\xc1\x20\x06\x53\x1e\x00\xc2\x11\x17\x53\x2a\x00\xc3\x09\x06\x53\x36\x00\xd3\x12\x05\x53\x1b\x03\xd3\x1a\x01\x53\x1b\x03\xd3\x1e\x05\x53\x27\x03\xd3\x26\x01\x53\x27\x03\xd3\x2a\x05\x53\x33\x03\xd3\x32\x01\x53\x33\x03\xd3\x36\x05\x53\x3f\x03\xd3\x3e\x01\x53\x3f\x03",
+};
+static
+ struct _PyCode_DEF(2564)
+os_toplevel = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 1282,
+ },
+ .co_consts = & os_toplevel_consts._object.ob_base.ob_base,
+ .co_names = & os_toplevel_names._object.ob_base.ob_base,
+ .co_exceptiontable = & os_toplevel_exceptiontable.ob_base.ob_base,
+ .co_flags = 0,
+ .co_argcount = 0,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 7 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 7,
+ .co_firstlineno = 1,
+ .co_nlocalsplus = 0,
+ .co_nlocals = 0,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 672,
+ .co_localsplusnames = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_filename = & os_toplevel_consts_5_filename._ascii.ob_base,
+ .co_name = &_Py_STR(anon_module),
+ .co_qualname = &_Py_STR(anon_module),
+ .co_linetable = & os_toplevel_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x64\x00\x5a\x00\x64\x01\x64\x02\x6c\x01\x5a\x01\x64\x01\x64\x02\x6c\x02\x5a\x02\x64\x01\x64\x02\x6c\x03\x5a\x04\x64\x01\x64\x03\x6c\x05\x6d\x06\x5a\x06\x01\x00\x02\x00\x65\x07\x65\x08\x65\x09\x19\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x5a\x0a\x65\x02\x6a\x16\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5a\x0c\x67\x00\x64\x04\xa2\x01\x5a\x0d\x64\x05\x84\x00\x5a\x0e\x64\x06\x84\x00\x5a\x0f\x64\x07\x65\x0c\x76\x00\x72\x49\x64\x07\x5a\x10\x64\x08\x5a\x11\x64\x01\x64\x09\x6c\x12\xad\x02\x01\x00\x09\x00\x64\x01\x64\x0a\x6c\x12\x6d\x13\x5a\x13\x01\x00\x65\x0d\x6a\x29\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x0b\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x64\x01\x64\x02\x6c\x16\x5a\x17\x09\x00\x64\x01\x64\x0c\x6c\x12\x6d\x18\x5a\x18\x01\x00\x64\x01\x64\x02\x6c\x12\x5a\x12\x65\x0d\x6a\x33\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x65\x0f\x65\x12\xab\x01\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x5b\x12\x6e\x55\x64\x0d\x65\x0c\x76\x00\x72\x49\x64\x0d\x5a\x10\x64\x0e\x5a\x11\x64\x01\x64\x09\x6c\x1a\xad\x02\x01\x00\x09\x00\x64\x01\x64\x0a\x6c\x1a\x6d\x13\x5a\x13\x01\x00\x65\x0d\x6a\x29\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x0b\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x64\x01\x64\x02\x6c\x1b\x5a\x17\x64\x01\x64\x02\x6c\x1a\x5a\x1a\x65\x0d\x6a\x33\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x65\x0f\x65\x1a\xab\x01\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x5b\x1a\x09\x00\x64\x01\x64\x0c\x6c\x1a\x6d\x18\x5a\x18\x01\x00\x6e\x08\x02\x00\x65\x15\x64\x0f\xab\x01\x00\x00\x00\x00\x00\x00\x82\x01\x65\x17\x65\x02\x6a\x38\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x10\x3c\x00\x00\x00\x64\x01\x64\x11\x6c\x1d\x6d\x1e\x5a\x1e\x6d\x1f\x5a\x1f\x6d\x20\x5a\x20\x6d\x21\x5a\x21\x6d\x22\x5a\x22\x6d\x23\x5a\x23\x6d\x24\x5a\x24\x6d\x25\x5a\x25\x01\x00\x5b\x0c\x02\x00\x65\x0e\x64\x12\xab\x01\x00\x00\x00\x00\x00\x00\x90\x01\x72\xc3\x02\x00\x65\x26\xab\x00\x00\x00\x00\x00\x00\x00\x5a\x27\x64\x13\x84\x00\x5a\x28\x02\x00\x65\x29\xab\x00\x00\x00\x00\x00\x00\x00\x5a\x2a\x02\x00\x65\x28\x64\x14\x64\x15\xab\x02\x00\x00\x00\x00\x00\x00\x01\x00\x02\x00\x65\x28\x64\x16\x64\x17\xab\x02\x00\x00\x00\x00\x00\x00\x01\x00\x02\x00\x65\x28\x64\x18\x64\x19\xab\x02\x00\x00\x00\x00\x00\x00\x01\x00\x02\x00\x65\x28\x64\x1a\x64\x1b\xab\x02\x00\x00\x00\x00\x00\x00\x01\x00\x02\x00\x65\x28\x64\x1c\x64\x1d\xab\x02\x00\x00\x00\x00\x00\x00\x01\x00\x02\x00\x65\x28\x64\x1e\x64\x1f\xab\x02\x00\x00\x00\x00\x00\x00\x01\x00\x02\x00\x65\x28\x64\x20\x64\x21\xab\x02\x00\x00\x00\x00\x00\x00\x01\x00\x02\x00\x65\x28\x64\x22\x64\x23\xab\x02\x00\x00\x00\x00\x00\x00\x01\x00\x02\x00\x65\x28\x64\x24\x64\x25\xab\x02\x00\x00\x00\x00\x00\x00\x01\x00\x02\x00\x65\x28\x64\x26\x64\x27\xab\x02\x00\x00\x00\x00\x00\x00\x01\x00\x02\x00\x65\x28\x64\x28\x64\x29\xab\x02\x00\x00\x00\x00\x00\x00\x01\x00\x02\x00\x65\x28\x64\x2a\x64\x2b\xab\x02\x00\x00\x00\x00\x00\x00\x01\x00\x02\x00\x65\x28\x64\x2c\x64\x2d\xab\x02\x00\x00\x00\x00\x00\x00\x01\x00\x02\x00\x65\x28\x64\x2e\x64\x2f\xab\x02\x00\x00\x00\x00\x00\x00\x01\x00\x02\x00\x65\x28\x64\x2e\x64\x30\xab\x02\x00\x00\x00\x00\x00\x00\x01\x00\x02\x00\x65\x28\x64\x31\x64\x1d\xab\x02\x00\x00\x00\x00\x00\x00\x01\x00\x65\x2a\x5a\x2b\x02\x00\x65\x29\xab\x00\x00\x00\x00\x00\x00\x00\x5a\x2a\x02\x00\x65\x28\x64\x14\x64\x15\xab\x02\x00\x00\x00\x00\x00\x00\x01\x00\x65\x2a\x5a\x2c\x02\x00\x65\x29\xab\x00\x00\x00\x00\x00\x00\x00\x5a\x2a\x02\x00\x65\x28\x64\x32\x64\x33\xab\x02\x00\x00\x00\x00\x00\x00\x01\x00\x02\x00\x65\x28\x64\x34\x64\x17\xab\x02\x00\x00\x00\x00\x00\x00\x01\x00\x02\x00\x65\x28\x64\x35\x64\x19\xab\x02\x00\x00\x00\x00\x00\x00\x01\x00\x02\x00\x65\x28\x64\x36\x64\x37\xab\x02\x00\x00\x00\x00\x00\x00\x01\x00\x02\x00\x65\x28\x64\x36\x64\x38\xab\x02\x00\x00\x00\x00\x00\x00\x01\x00\x02\x00\x65\x28\x64\x39\x64\x3a\xab\x02\x00\x00\x00\x00\x00\x00\x01\x00\x65\x2a\x6a\x5b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\x03\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x02\x00\x65\x28\x64\x3b\x64\x3c\xab\x02\x00\x00\x00\x00\x00\x00\x01\x00\x02\x00\x65\x28\x64\x3d\x64\x1d\xab\x02\x00\x00\x00\x00\x00\x00\x01\x00\x02\x00\x65\x28\x64\x3e\x64\x1d\xab\x02\x00\x00\x00\x00\x00\x00\x01\x00\x02\x00\x65\x28\x64\x3f\x64\x40\xab\x02\x00\x00\x00\x00\x00\x00\x01\x00\x02\x00\x65\x0e\x64\x41\xab\x01\x00\x00\x00\x00\x00\x00\x72\x11\x02\x00\x65\x0e\x64\x42\xab\x01\x00\x00\x00\x00\x00\x00\x72\x09\x02\x00\x65\x28\x64\x43\x64\x41\xab\x02\x00\x00\x00\x00\x00\x00\x01\x00\x65\x2a\x5a\x2e\x02\x00\x65\x29\xab\x00\x00\x00\x00\x00\x00\x00\x5a\x2a\x02\x00\x65\x28\x64\x14\x64\x15\xab\x02\x00\x00\x00\x00\x00\x00\x01\x00\x02\x00\x65\x28\x64\x18\x64\x19\xab\x02\x00\x00\x00\x00\x00\x00\x01\x00\x02\x00\x65\x28\x64\x1a\x64\x1b\xab\x02\x00\x00\x00\x00\x00\x00\x01\x00\x02\x00\x65\x28\x64\x44\x64\x45\xab\x02\x00\x00\x00\x00\x00\x00\x01\x00\x02\x00\x65\x28\x64\x46\x64\x17\xab\x02\x00\x00\x00\x00\x00\x00\x01\x00\x02\x00\x65\x0e\x64\x47\xab\x01\x00\x00\x00\x00\x00\x00\x72\x09\x02\x00\x65\x28\x64\x48\x64\x19\xab\x02\x00\x00\x00\x00\x00\x00\x01\x00\x02\x00\x65\x28\x64\x1e\x64\x1f\xab\x02\x00\x00\x00\x00\x00\x00\x01\x00\x02\x00\x65\x28\x64\x49\x64\x1d\xab\x02\x00\x00\x00\x00\x00\x00\x01\x00\x02\x00\x65\x28\x64\x4a\x64\x1b\xab\x02\x00\x00\x00\x00\x00\x00\x01\x00\x02\x00\x65\x28\x64\x1a\x64\x1b\xab\x02\x00\x00\x00\x00\x00\x00\x01\x00\x02\x00\x65\x28\x64\x31\x64\x1d\xab\x02\x00\x00\x00\x00\x00\x00\x01\x00\x02\x00\x65\x28\x64\x4b\x64\x1b\xab\x02\x00\x00\x00\x00\x00\x00\x01\x00\x65\x2a\x5a\x2f\x5b\x2a\x5b\x18\x5b\x27\x5b\x28\x64\x01\x5a\x30\x64\x4c\x5a\x31\x64\x4d\x5a\x32\x64\x8c\x64\x4f\x84\x01\x5a\x33\x64\x50\x84\x00\x5a\x34\x64\x51\x84\x00\x5a\x35\x65\x0d\x6a\x33\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x67\x00\x64\x52\xa2\x01\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x64\x8d\x64\x53\x84\x01\x5a\x36\x65\x0d\x6a\x29\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x54\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x65\x37\x65\x03\x68\x02\x65\x2b\x6b\x1a\x00\x00\x72\x23\x65\x38\x65\x03\x68\x02\x65\x2e\x6b\x1a\x00\x00\x72\x1c\x64\x8e\x64\x4e\x64\x02\x64\x55\x9c\x02\x64\x56\x84\x03\x5a\x39\x64\x57\x84\x00\x5a\x3a\x65\x0d\x6a\x29\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x58\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x64\x59\x84\x00\x5a\x3b\x64\x5a\x84\x00\x5a\x3c\x64\x5b\x84\x00\x5a\x3d\x64\x5c\x84\x00\x5a\x3e\x64\x5d\x84\x00\x5a\x3f\x64\x5e\x84\x00\x5a\x40\x65\x0d\x6a\x33\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x67\x00\x64\x5f\xa2\x01\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x64\x8f\x64\x60\x84\x01\x5a\x41\x64\x8f\x64\x61\x84\x01\x5a\x42\x64\x01\x64\x62\x6c\x05\x6d\x43\x5a\x43\x6d\x44\x5a\x44\x01\x00\x02\x00\x47\x00\x64\x63\x84\x00\x64\x64\x65\x43\xab\x03\x00\x00\x00\x00\x00\x00\x5a\x45\x64\x65\x84\x00\x5a\x46\x02\x00\x65\x46\xab\x00\x00\x00\x00\x00\x00\x00\x5a\x47\x5b\x46\x64\x8f\x64\x66\x84\x01\x5a\x48\x65\x10\x64\x0d\x6b\x37\x00\x00\x5a\x49\x65\x0d\x6a\x33\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x67\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x65\x49\x72\x2f\x64\x68\x84\x00\x5a\x4a\x02\x00\x65\x45\x65\x47\x6a\x96\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\x4a\x65\x4c\x65\x4a\x65\x4c\xab\x05\x00\x00\x00\x00\x00\x00\x5a\x4d\x5b\x4a\x64\x8f\x64\x69\x84\x01\x5a\x4e\x65\x0d\x6a\x33\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x6a\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x64\x6b\x84\x00\x5a\x4f\x02\x00\x65\x4f\xab\x00\x00\x00\x00\x00\x00\x00\x5c\x02\x00\x00\x5a\x50\x5a\x51\x5b\x4f\x02\x00\x65\x0e\x64\x6c\xab\x01\x00\x00\x00\x00\x00\x00\x72\x4b\x02\x00\x65\x0e\x64\x6d\xab\x01\x00\x00\x00\x00\x00\x00\x73\x43\x02\x00\x65\x0e\x64\x6e\xab\x01\x00\x00\x00\x00\x00\x00\x72\x3b\x64\x01\x5a\x52\x64\x4c\x78\x01\x5a\x53\x5a\x54\x65\x0d\x6a\x33\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x67\x00\x64\x6f\xa2\x01\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x64\x70\x84\x00\x5a\x55\x64\x71\x84\x00\x5a\x56\x64\x72\x84\x00\x5a\x57\x64\x73\x84\x00\x5a\x58\x64\x74\x84\x00\x5a\x59\x65\x0d\x6a\x33\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x67\x00\x64\x75\xa2\x01\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x02\x00\x65\x0e\x64\x6d\xab\x01\x00\x00\x00\x00\x00\x00\x72\x19\x64\x76\x84\x00\x5a\x5a\x64\x77\x84\x00\x5a\x5b\x65\x0d\x6a\x33\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x78\x64\x79\x67\x02\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x02\x00\x65\x0e\x64\x7a\xab\x01\x00\x00\x00\x00\x00\x00\x72\x19\x64\x7b\x84\x00\x5a\x5c\x64\x7c\x84\x00\x5a\x5d\x65\x0d\x6a\x33\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x7d\x64\x7e\x67\x02\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x65\x02\x6a\xbc\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x7f\x6b\x37\x00\x00\x72\x1f\x64\x90\x64\x80\x84\x01\x5a\x5f\x02\x00\x47\x00\x64\x81\x84\x00\x64\x82\xab\x02\x00\x00\x00\x00\x00\x00\x5a\x60\x65\x0d\x6a\x29\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x83\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x64\x91\x64\x84\x84\x01\x5a\x61\x64\x85\x84\x00\x5a\x62\x02\x00\x65\x0e\x64\x86\xab\x01\x00\x00\x00\x00\x00\x00\x73\x09\x65\x62\x5a\x63\x64\x86\x65\x63\x5f\x64\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x47\x00\x64\x87\x84\x00\x64\x88\x65\x01\x6a\xca\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x03\x00\x00\x00\x00\x00\x00\x5a\x66\x65\x10\x64\x0d\x6b\x28\x00\x00\x72\x0e\x02\x00\x47\x00\x64\x89\x84\x00\x64\x8a\xab\x02\x00\x00\x00\x00\x00\x00\x5a\x67\x64\x8b\x84\x00\x5a\x68\x79\x02\x79\x02\x23\x00\x65\x15\x24\x00\x72\x04\x01\x00\x59\x00\x90\x04\x8c\x7f\x77\x00\x78\x03\x59\x00\x77\x01\x23\x00\x65\x15\x24\x00\x72\x04\x01\x00\x59\x00\x90\x04\x8c\x80\x77\x00\x78\x03\x59\x00\x77\x01\x23\x00\x65\x15\x24\x00\x72\x04\x01\x00\x59\x00\x90\x04\x8c\x4a\x77\x00\x78\x03\x59\x00\x77\x01\x23\x00\x65\x15\x24\x00\x72\x04\x01\x00\x59\x00\x90\x04\x8c\x26\x77\x00\x78\x03\x59\x00\x77\x01",
+ ._co_firsttraceable = 0,
+};
+
+PyObject *
+_Py_get_os_toplevel(void)
+{
+ return Py_NewRef((PyObject *) &os_toplevel);
+}
+
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[2999];
+ }
+site_toplevel_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 2998,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x41\x70\x70\x65\x6e\x64\x20\x6d\x6f\x64\x75\x6c\x65\x20\x73\x65\x61\x72\x63\x68\x20\x70\x61\x74\x68\x73\x20\x66\x6f\x72\x20\x74\x68\x69\x72\x64\x2d\x70\x61\x72\x74\x79\x20\x70\x61\x63\x6b\x61\x67\x65\x73\x20\x74\x6f\x20\x73\x79\x73\x2e\x70\x61\x74\x68\x2e\x0a\x0a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x0a\x2a\x20\x54\x68\x69\x73\x20\x6d\x6f\x64\x75\x6c\x65\x20\x69\x73\x20\x61\x75\x74\x6f\x6d\x61\x74\x69\x63\x61\x6c\x6c\x79\x20\x69\x6d\x70\x6f\x72\x74\x65\x64\x20\x64\x75\x72\x69\x6e\x67\x20\x69\x6e\x69\x74\x69\x61\x6c\x69\x7a\x61\x74\x69\x6f\x6e\x2e\x20\x2a\x0a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x0a\x0a\x54\x68\x69\x73\x20\x77\x69\x6c\x6c\x20\x61\x70\x70\x65\x6e\x64\x20\x73\x69\x74\x65\x2d\x73\x70\x65\x63\x69\x66\x69\x63\x20\x70\x61\x74\x68\x73\x20\x74\x6f\x20\x74\x68\x65\x20\x6d\x6f\x64\x75\x6c\x65\x20\x73\x65\x61\x72\x63\x68\x20\x70\x61\x74\x68\x2e\x20\x20\x4f\x6e\x0a\x55\x6e\x69\x78\x20\x28\x69\x6e\x63\x6c\x75\x64\x69\x6e\x67\x20\x4d\x61\x63\x20\x4f\x53\x58\x29\x2c\x20\x69\x74\x20\x73\x74\x61\x72\x74\x73\x20\x77\x69\x74\x68\x20\x73\x79\x73\x2e\x70\x72\x65\x66\x69\x78\x20\x61\x6e\x64\x0a\x73\x79\x73\x2e\x65\x78\x65\x63\x5f\x70\x72\x65\x66\x69\x78\x20\x28\x69\x66\x20\x64\x69\x66\x66\x65\x72\x65\x6e\x74\x29\x20\x61\x6e\x64\x20\x61\x70\x70\x65\x6e\x64\x73\x0a\x6c\x69\x62\x2f\x70\x79\x74\x68\x6f\x6e\x3c\x76\x65\x72\x73\x69\x6f\x6e\x3e\x2f\x73\x69\x74\x65\x2d\x70\x61\x63\x6b\x61\x67\x65\x73\x2e\x0a\x4f\x6e\x20\x6f\x74\x68\x65\x72\x20\x70\x6c\x61\x74\x66\x6f\x72\x6d\x73\x20\x28\x73\x75\x63\x68\x20\x61\x73\x20\x57\x69\x6e\x64\x6f\x77\x73\x29\x2c\x20\x69\x74\x20\x74\x72\x69\x65\x73\x20\x65\x61\x63\x68\x20\x6f\x66\x20\x74\x68\x65\x0a\x70\x72\x65\x66\x69\x78\x65\x73\x20\x64\x69\x72\x65\x63\x74\x6c\x79\x2c\x20\x61\x73\x20\x77\x65\x6c\x6c\x20\x61\x73\x20\x77\x69\x74\x68\x20\x6c\x69\x62\x2f\x73\x69\x74\x65\x2d\x70\x61\x63\x6b\x61\x67\x65\x73\x20\x61\x70\x70\x65\x6e\x64\x65\x64\x2e\x20\x20\x54\x68\x65\x0a\x72\x65\x73\x75\x6c\x74\x69\x6e\x67\x20\x64\x69\x72\x65\x63\x74\x6f\x72\x69\x65\x73\x2c\x20\x69\x66\x20\x74\x68\x65\x79\x20\x65\x78\x69\x73\x74\x2c\x20\x61\x72\x65\x20\x61\x70\x70\x65\x6e\x64\x65\x64\x20\x74\x6f\x20\x73\x79\x73\x2e\x70\x61\x74\x68\x2c\x20\x61\x6e\x64\x0a\x61\x6c\x73\x6f\x20\x69\x6e\x73\x70\x65\x63\x74\x65\x64\x20\x66\x6f\x72\x20\x70\x61\x74\x68\x20\x63\x6f\x6e\x66\x69\x67\x75\x72\x61\x74\x69\x6f\x6e\x20\x66\x69\x6c\x65\x73\x2e\x0a\x0a\x49\x66\x20\x61\x20\x66\x69\x6c\x65\x20\x6e\x61\x6d\x65\x64\x20\x22\x70\x79\x76\x65\x6e\x76\x2e\x63\x66\x67\x22\x20\x65\x78\x69\x73\x74\x73\x20\x6f\x6e\x65\x20\x64\x69\x72\x65\x63\x74\x6f\x72\x79\x20\x61\x62\x6f\x76\x65\x20\x73\x79\x73\x2e\x65\x78\x65\x63\x75\x74\x61\x62\x6c\x65\x2c\x0a\x73\x79\x73\x2e\x70\x72\x65\x66\x69\x78\x20\x61\x6e\x64\x20\x73\x79\x73\x2e\x65\x78\x65\x63\x5f\x70\x72\x65\x66\x69\x78\x20\x61\x72\x65\x20\x73\x65\x74\x20\x74\x6f\x20\x74\x68\x61\x74\x20\x64\x69\x72\x65\x63\x74\x6f\x72\x79\x20\x61\x6e\x64\x0a\x69\x74\x20\x69\x73\x20\x61\x6c\x73\x6f\x20\x63\x68\x65\x63\x6b\x65\x64\x20\x66\x6f\x72\x20\x73\x69\x74\x65\x2d\x70\x61\x63\x6b\x61\x67\x65\x73\x20\x28\x73\x79\x73\x2e\x62\x61\x73\x65\x5f\x70\x72\x65\x66\x69\x78\x20\x61\x6e\x64\x0a\x73\x79\x73\x2e\x62\x61\x73\x65\x5f\x65\x78\x65\x63\x5f\x70\x72\x65\x66\x69\x78\x20\x77\x69\x6c\x6c\x20\x61\x6c\x77\x61\x79\x73\x20\x62\x65\x20\x74\x68\x65\x20\x22\x72\x65\x61\x6c\x22\x20\x70\x72\x65\x66\x69\x78\x65\x73\x20\x6f\x66\x20\x74\x68\x65\x20\x50\x79\x74\x68\x6f\x6e\x0a\x69\x6e\x73\x74\x61\x6c\x6c\x61\x74\x69\x6f\x6e\x29\x2e\x20\x49\x66\x20\x22\x70\x79\x76\x65\x6e\x76\x2e\x63\x66\x67\x22\x20\x28\x61\x20\x62\x6f\x6f\x74\x73\x74\x72\x61\x70\x20\x63\x6f\x6e\x66\x69\x67\x75\x72\x61\x74\x69\x6f\x6e\x20\x66\x69\x6c\x65\x29\x20\x63\x6f\x6e\x74\x61\x69\x6e\x73\x0a\x74\x68\x65\x20\x6b\x65\x79\x20\x22\x69\x6e\x63\x6c\x75\x64\x65\x2d\x73\x79\x73\x74\x65\x6d\x2d\x73\x69\x74\x65\x2d\x70\x61\x63\x6b\x61\x67\x65\x73\x22\x20\x73\x65\x74\x20\x74\x6f\x20\x61\x6e\x79\x74\x68\x69\x6e\x67\x20\x6f\x74\x68\x65\x72\x20\x74\x68\x61\x6e\x20\x22\x66\x61\x6c\x73\x65\x22\x0a\x28\x63\x61\x73\x65\x2d\x69\x6e\x73\x65\x6e\x73\x69\x74\x69\x76\x65\x29\x2c\x20\x74\x68\x65\x20\x73\x79\x73\x74\x65\x6d\x2d\x6c\x65\x76\x65\x6c\x20\x70\x72\x65\x66\x69\x78\x65\x73\x20\x77\x69\x6c\x6c\x20\x73\x74\x69\x6c\x6c\x20\x61\x6c\x73\x6f\x20\x62\x65\x0a\x73\x65\x61\x72\x63\x68\x65\x64\x20\x66\x6f\x72\x20\x73\x69\x74\x65\x2d\x70\x61\x63\x6b\x61\x67\x65\x73\x3b\x20\x6f\x74\x68\x65\x72\x77\x69\x73\x65\x20\x74\x68\x65\x79\x20\x77\x6f\x6e\x27\x74\x2e\x0a\x0a\x41\x6c\x6c\x20\x6f\x66\x20\x74\x68\x65\x20\x72\x65\x73\x75\x6c\x74\x69\x6e\x67\x20\x73\x69\x74\x65\x2d\x73\x70\x65\x63\x69\x66\x69\x63\x20\x64\x69\x72\x65\x63\x74\x6f\x72\x69\x65\x73\x2c\x20\x69\x66\x20\x74\x68\x65\x79\x20\x65\x78\x69\x73\x74\x2c\x20\x61\x72\x65\x0a\x61\x70\x70\x65\x6e\x64\x65\x64\x20\x74\x6f\x20\x73\x79\x73\x2e\x70\x61\x74\x68\x2c\x20\x61\x6e\x64\x20\x61\x6c\x73\x6f\x20\x69\x6e\x73\x70\x65\x63\x74\x65\x64\x20\x66\x6f\x72\x20\x70\x61\x74\x68\x20\x63\x6f\x6e\x66\x69\x67\x75\x72\x61\x74\x69\x6f\x6e\x0a\x66\x69\x6c\x65\x73\x2e\x0a\x0a\x41\x20\x70\x61\x74\x68\x20\x63\x6f\x6e\x66\x69\x67\x75\x72\x61\x74\x69\x6f\x6e\x20\x66\x69\x6c\x65\x20\x69\x73\x20\x61\x20\x66\x69\x6c\x65\x20\x77\x68\x6f\x73\x65\x20\x6e\x61\x6d\x65\x20\x68\x61\x73\x20\x74\x68\x65\x20\x66\x6f\x72\x6d\x0a\x3c\x70\x61\x63\x6b\x61\x67\x65\x3e\x2e\x70\x74\x68\x3b\x20\x69\x74\x73\x20\x63\x6f\x6e\x74\x65\x6e\x74\x73\x20\x61\x72\x65\x20\x61\x64\x64\x69\x74\x69\x6f\x6e\x61\x6c\x20\x64\x69\x72\x65\x63\x74\x6f\x72\x69\x65\x73\x20\x28\x6f\x6e\x65\x20\x70\x65\x72\x20\x6c\x69\x6e\x65\x29\x0a\x74\x6f\x20\x62\x65\x20\x61\x64\x64\x65\x64\x20\x74\x6f\x20\x73\x79\x73\x2e\x70\x61\x74\x68\x2e\x20\x20\x4e\x6f\x6e\x2d\x65\x78\x69\x73\x74\x69\x6e\x67\x20\x64\x69\x72\x65\x63\x74\x6f\x72\x69\x65\x73\x20\x28\x6f\x72\x0a\x6e\x6f\x6e\x2d\x64\x69\x72\x65\x63\x74\x6f\x72\x69\x65\x73\x29\x20\x61\x72\x65\x20\x6e\x65\x76\x65\x72\x20\x61\x64\x64\x65\x64\x20\x74\x6f\x20\x73\x79\x73\x2e\x70\x61\x74\x68\x3b\x20\x6e\x6f\x20\x64\x69\x72\x65\x63\x74\x6f\x72\x79\x20\x69\x73\x20\x61\x64\x64\x65\x64\x20\x74\x6f\x0a\x73\x79\x73\x2e\x70\x61\x74\x68\x20\x6d\x6f\x72\x65\x20\x74\x68\x61\x6e\x20\x6f\x6e\x63\x65\x2e\x20\x20\x42\x6c\x61\x6e\x6b\x20\x6c\x69\x6e\x65\x73\x20\x61\x6e\x64\x20\x6c\x69\x6e\x65\x73\x20\x62\x65\x67\x69\x6e\x6e\x69\x6e\x67\x20\x77\x69\x74\x68\x0a\x27\x23\x27\x20\x61\x72\x65\x20\x73\x6b\x69\x70\x70\x65\x64\x2e\x20\x4c\x69\x6e\x65\x73\x20\x73\x74\x61\x72\x74\x69\x6e\x67\x20\x77\x69\x74\x68\x20\x27\x69\x6d\x70\x6f\x72\x74\x27\x20\x61\x72\x65\x20\x65\x78\x65\x63\x75\x74\x65\x64\x2e\x0a\x0a\x46\x6f\x72\x20\x65\x78\x61\x6d\x70\x6c\x65\x2c\x20\x73\x75\x70\x70\x6f\x73\x65\x20\x73\x79\x73\x2e\x70\x72\x65\x66\x69\x78\x20\x61\x6e\x64\x20\x73\x79\x73\x2e\x65\x78\x65\x63\x5f\x70\x72\x65\x66\x69\x78\x20\x61\x72\x65\x20\x73\x65\x74\x20\x74\x6f\x0a\x2f\x75\x73\x72\x2f\x6c\x6f\x63\x61\x6c\x20\x61\x6e\x64\x20\x74\x68\x65\x72\x65\x20\x69\x73\x20\x61\x20\x64\x69\x72\x65\x63\x74\x6f\x72\x79\x20\x2f\x75\x73\x72\x2f\x6c\x6f\x63\x61\x6c\x2f\x6c\x69\x62\x2f\x70\x79\x74\x68\x6f\x6e\x32\x2e\x35\x2f\x73\x69\x74\x65\x2d\x70\x61\x63\x6b\x61\x67\x65\x73\x0a\x77\x69\x74\x68\x20\x74\x68\x72\x65\x65\x20\x73\x75\x62\x64\x69\x72\x65\x63\x74\x6f\x72\x69\x65\x73\x2c\x20\x66\x6f\x6f\x2c\x20\x62\x61\x72\x20\x61\x6e\x64\x20\x73\x70\x61\x6d\x2c\x20\x61\x6e\x64\x20\x74\x77\x6f\x20\x70\x61\x74\x68\x0a\x63\x6f\x6e\x66\x69\x67\x75\x72\x61\x74\x69\x6f\x6e\x20\x66\x69\x6c\x65\x73\x2c\x20\x66\x6f\x6f\x2e\x70\x74\x68\x20\x61\x6e\x64\x20\x62\x61\x72\x2e\x70\x74\x68\x2e\x20\x20\x41\x73\x73\x75\x6d\x65\x20\x66\x6f\x6f\x2e\x70\x74\x68\x20\x63\x6f\x6e\x74\x61\x69\x6e\x73\x20\x74\x68\x65\x0a\x66\x6f\x6c\x6c\x6f\x77\x69\x6e\x67\x3a\x0a\x0a\x20\x20\x23\x20\x66\x6f\x6f\x20\x70\x61\x63\x6b\x61\x67\x65\x20\x63\x6f\x6e\x66\x69\x67\x75\x72\x61\x74\x69\x6f\x6e\x0a\x20\x20\x66\x6f\x6f\x0a\x20\x20\x62\x61\x72\x0a\x20\x20\x62\x6c\x65\x74\x63\x68\x0a\x0a\x61\x6e\x64\x20\x62\x61\x72\x2e\x70\x74\x68\x20\x63\x6f\x6e\x74\x61\x69\x6e\x73\x3a\x0a\x0a\x20\x20\x23\x20\x62\x61\x72\x20\x70\x61\x63\x6b\x61\x67\x65\x20\x63\x6f\x6e\x66\x69\x67\x75\x72\x61\x74\x69\x6f\x6e\x0a\x20\x20\x62\x61\x72\x0a\x0a\x54\x68\x65\x6e\x20\x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\x69\x6e\x67\x20\x64\x69\x72\x65\x63\x74\x6f\x72\x69\x65\x73\x20\x61\x72\x65\x20\x61\x64\x64\x65\x64\x20\x74\x6f\x20\x73\x79\x73\x2e\x70\x61\x74\x68\x2c\x20\x69\x6e\x20\x74\x68\x69\x73\x20\x6f\x72\x64\x65\x72\x3a\x0a\x0a\x20\x20\x2f\x75\x73\x72\x2f\x6c\x6f\x63\x61\x6c\x2f\x6c\x69\x62\x2f\x70\x79\x74\x68\x6f\x6e\x32\x2e\x35\x2f\x73\x69\x74\x65\x2d\x70\x61\x63\x6b\x61\x67\x65\x73\x2f\x62\x61\x72\x0a\x20\x20\x2f\x75\x73\x72\x2f\x6c\x6f\x63\x61\x6c\x2f\x6c\x69\x62\x2f\x70\x79\x74\x68\x6f\x6e\x32\x2e\x35\x2f\x73\x69\x74\x65\x2d\x70\x61\x63\x6b\x61\x67\x65\x73\x2f\x66\x6f\x6f\x0a\x0a\x4e\x6f\x74\x65\x20\x74\x68\x61\x74\x20\x62\x6c\x65\x74\x63\x68\x20\x69\x73\x20\x6f\x6d\x69\x74\x74\x65\x64\x20\x62\x65\x63\x61\x75\x73\x65\x20\x69\x74\x20\x64\x6f\x65\x73\x6e\x27\x74\x20\x65\x78\x69\x73\x74\x3b\x20\x62\x61\x72\x20\x70\x72\x65\x63\x65\x64\x65\x73\x20\x66\x6f\x6f\x0a\x62\x65\x63\x61\x75\x73\x65\x20\x62\x61\x72\x2e\x70\x74\x68\x20\x63\x6f\x6d\x65\x73\x20\x61\x6c\x70\x68\x61\x62\x65\x74\x69\x63\x61\x6c\x6c\x79\x20\x62\x65\x66\x6f\x72\x65\x20\x66\x6f\x6f\x2e\x70\x74\x68\x3b\x20\x61\x6e\x64\x20\x73\x70\x61\x6d\x20\x69\x73\x0a\x6f\x6d\x69\x74\x74\x65\x64\x20\x62\x65\x63\x61\x75\x73\x65\x20\x69\x74\x20\x69\x73\x20\x6e\x6f\x74\x20\x6d\x65\x6e\x74\x69\x6f\x6e\x65\x64\x20\x69\x6e\x20\x65\x69\x74\x68\x65\x72\x20\x70\x61\x74\x68\x20\x63\x6f\x6e\x66\x69\x67\x75\x72\x61\x74\x69\x6f\x6e\x20\x66\x69\x6c\x65\x2e\x0a\x0a\x54\x68\x65\x20\x72\x65\x61\x64\x6c\x69\x6e\x65\x20\x6d\x6f\x64\x75\x6c\x65\x20\x69\x73\x20\x61\x6c\x73\x6f\x20\x61\x75\x74\x6f\x6d\x61\x74\x69\x63\x61\x6c\x6c\x79\x20\x63\x6f\x6e\x66\x69\x67\x75\x72\x65\x64\x20\x74\x6f\x20\x65\x6e\x61\x62\x6c\x65\x0a\x63\x6f\x6d\x70\x6c\x65\x74\x69\x6f\x6e\x20\x66\x6f\x72\x20\x73\x79\x73\x74\x65\x6d\x73\x20\x74\x68\x61\x74\x20\x73\x75\x70\x70\x6f\x72\x74\x20\x69\x74\x2e\x20\x20\x54\x68\x69\x73\x20\x63\x61\x6e\x20\x62\x65\x20\x6f\x76\x65\x72\x72\x69\x64\x64\x65\x6e\x20\x69\x6e\x0a\x73\x69\x74\x65\x63\x75\x73\x74\x6f\x6d\x69\x7a\x65\x2c\x20\x75\x73\x65\x72\x63\x75\x73\x74\x6f\x6d\x69\x7a\x65\x20\x6f\x72\x20\x50\x59\x54\x48\x4f\x4e\x53\x54\x41\x52\x54\x55\x50\x2e\x20\x20\x53\x74\x61\x72\x74\x69\x6e\x67\x20\x50\x79\x74\x68\x6f\x6e\x20\x69\x6e\x0a\x69\x73\x6f\x6c\x61\x74\x65\x64\x20\x6d\x6f\x64\x65\x20\x28\x2d\x49\x29\x20\x64\x69\x73\x61\x62\x6c\x65\x73\x20\x61\x75\x74\x6f\x6d\x61\x74\x69\x63\x20\x72\x65\x61\x64\x6c\x69\x6e\x65\x20\x63\x6f\x6e\x66\x69\x67\x75\x72\x61\x74\x69\x6f\x6e\x2e\x0a\x0a\x41\x66\x74\x65\x72\x20\x74\x68\x65\x73\x65\x20\x6f\x70\x65\x72\x61\x74\x69\x6f\x6e\x73\x2c\x20\x61\x6e\x20\x61\x74\x74\x65\x6d\x70\x74\x20\x69\x73\x20\x6d\x61\x64\x65\x20\x74\x6f\x20\x69\x6d\x70\x6f\x72\x74\x20\x61\x20\x6d\x6f\x64\x75\x6c\x65\x0a\x6e\x61\x6d\x65\x64\x20\x73\x69\x74\x65\x63\x75\x73\x74\x6f\x6d\x69\x7a\x65\x2c\x20\x77\x68\x69\x63\x68\x20\x63\x61\x6e\x20\x70\x65\x72\x66\x6f\x72\x6d\x20\x61\x72\x62\x69\x74\x72\x61\x72\x79\x20\x61\x64\x64\x69\x74\x69\x6f\x6e\x61\x6c\x0a\x73\x69\x74\x65\x2d\x73\x70\x65\x63\x69\x66\x69\x63\x20\x63\x75\x73\x74\x6f\x6d\x69\x7a\x61\x74\x69\x6f\x6e\x73\x2e\x20\x20\x49\x66\x20\x74\x68\x69\x73\x20\x69\x6d\x70\x6f\x72\x74\x20\x66\x61\x69\x6c\x73\x20\x77\x69\x74\x68\x20\x61\x6e\x0a\x49\x6d\x70\x6f\x72\x74\x45\x72\x72\x6f\x72\x20\x65\x78\x63\x65\x70\x74\x69\x6f\x6e\x2c\x20\x69\x74\x20\x69\x73\x20\x73\x69\x6c\x65\x6e\x74\x6c\x79\x20\x69\x67\x6e\x6f\x72\x65\x64\x2e\x0a",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+site_toplevel_consts_3_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ Py_None,
+ & importlib__bootstrap_toplevel_consts_25_consts_3._object.ob_base.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[5];
+ }_object;
+ }
+site_toplevel_consts_3_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 5,
+ },
+ .ob_item = {
+ & const_str_sys._ascii.ob_base,
+ &_Py_ID(flags),
+ & const_str_verbose._ascii.ob_base,
+ & const_str_print._ascii.ob_base,
+ &_Py_ID(stderr),
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[14];
+ }
+site_toplevel_consts_3_filename = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 13,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "<frozen site>",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[7];
+ }
+const_str__trace = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 6,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_trace",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[35];
+ }
+site_toplevel_consts_3_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 34,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xdc\x07\x0a\x87\x79\x81\x79\xd7\x07\x18\xd2\x07\x18\xdc\x08\x0d\x88\x67\x9c\x43\x9f\x4a\x99\x4a\xd6\x08\x27\xf0\x03\x00\x08\x19",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+site_toplevel_consts_3_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ &_Py_ID(message),
+ },
+ },
+};
+static
+ struct _PyCode_DEF(112)
+site_toplevel_consts_3 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 56,
+ },
+ .co_consts = & site_toplevel_consts_3_consts._object.ob_base.ob_base,
+ .co_names = & site_toplevel_consts_3_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 5 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 92,
+ .co_nlocalsplus = 1,
+ .co_nlocals = 1,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 673,
+ .co_localsplusnames = & site_toplevel_consts_3_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_characters[32]),
+ .co_filename = & site_toplevel_consts_3_filename._ascii.ob_base,
+ .co_name = & const_str__trace._ascii.ob_base,
+ .co_qualname = & const_str__trace._ascii.ob_base,
+ .co_linetable = & site_toplevel_consts_3_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x72\x1c\x74\x07\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xac\x01\xab\x02\x00\x00\x00\x00\x00\x00\x01\x00\x79\x00\x79\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[6];
+ }_object;
+ }
+site_toplevel_consts_4_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 6,
+ },
+ .ob_item = {
+ & const_str_os._ascii.ob_base,
+ &_Py_ID(path),
+ &_Py_ID(join),
+ & const_str_abspath._ascii.ob_base,
+ & const_str_OSError._ascii.ob_base,
+ & const_str_normcase._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[9];
+ }
+const_str_makepath = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 8,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "makepath",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[92];
+ }
+site_toplevel_consts_4_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 91,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xdc\x0a\x0c\x8f\x27\x89\x27\x8f\x2c\x89\x2c\x98\x05\xd0\x0a\x1e\x80\x43\xf0\x02\x03\x05\x0d\xdc\x0e\x10\x8f\x67\x89\x67\x8f\x6f\x89\x6f\x98\x63\xd3\x0e\x22\x88\x03\xf0\x06\x00\x0c\x0f\x94\x02\x97\x07\x91\x07\xd7\x10\x20\xd1\x10\x20\xa0\x13\xd3\x10\x25\xd0\x0b\x25\xd0\x04\x25\xf8\xf4\x05\x00\x0c\x13\xf2\x00\x01\x05\x0d\xd9\x08\x0c\xf0\x03\x01\x05\x0d\xfa",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[18];
+ }
+site_toplevel_consts_4_exceptiontable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 17,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x9e\x1f\x41\x1e\x00\xc1\x1e\x09\x41\x2a\x03\xc1\x29\x01\x41\x2a\x03",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+site_toplevel_consts_4_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & const_str_paths._ascii.ob_base,
+ & const_str_dir._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(218)
+site_toplevel_consts_4 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 109,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_1_consts._object.ob_base.ob_base,
+ .co_names = & site_toplevel_consts_4_names._object.ob_base.ob_base,
+ .co_exceptiontable = & site_toplevel_consts_4_exceptiontable.ob_base.ob_base,
+ .co_flags = 7,
+ .co_argcount = 0,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 6 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 97,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 2,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 674,
+ .co_localsplusnames = & site_toplevel_consts_4_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_14_consts_2_localspluskinds.ob_base.ob_base,
+ .co_filename = & site_toplevel_consts_3_filename._ascii.ob_base,
+ .co_name = & const_str_makepath._ascii.ob_base,
+ .co_qualname = & const_str_makepath._ascii.ob_base,
+ .co_linetable = & site_toplevel_consts_4_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x8e\x00\x7d\x01\x09\x00\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x01\x7c\x01\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\xab\x01\x00\x00\x00\x00\x00\x00\x66\x02\x53\x00\x23\x00\x74\x08\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x72\x03\x01\x00\x59\x00\x8c\x2c\x77\x00\x78\x03\x59\x00\x77\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[70];
+ }
+site_toplevel_consts_5_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 69,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Set all module __file__ and __cached__ attributes to an absolute path",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+site_toplevel_consts_5_consts_2 = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & const_str__frozen_importlib._ascii.ob_base,
+ & const_str__frozen_importlib_external._ascii.ob_base,
+ },
+ },
+};
+// TODO: The above tuple should be a frozenset
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+site_toplevel_consts_5_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ & site_toplevel_consts_5_consts_0._ascii.ob_base,
+ Py_None,
+ & site_toplevel_consts_5_consts_2._object.ob_base.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[16];
+ }_object;
+ }
+site_toplevel_consts_5_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 16,
+ },
+ .ob_item = {
+ & const_str_set._ascii.ob_base,
+ & const_str_sys._ascii.ob_base,
+ &_Py_ID(modules),
+ &_Py_ID(values),
+ &_Py_ID(__loader__),
+ &_Py_ID(__module__),
+ & const_str_AttributeError._ascii.ob_base,
+ &_Py_ID(__spec__),
+ & const_str_loader._ascii.ob_base,
+ & const_str_os._ascii.ob_base,
+ &_Py_ID(path),
+ & const_str_abspath._ascii.ob_base,
+ &_Py_ID(__file__),
+ & const_str_OSError._ascii.ob_base,
+ & const_str_TypeError._ascii.ob_base,
+ & const_str___cached__._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[10];
+ }
+const_str_abs_paths = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 9,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "abs_paths",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[246];
+ }
+site_toplevel_consts_5_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 245,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xe4\x0d\x10\x94\x13\x97\x1b\x91\x1b\xd7\x11\x23\xd1\x11\x23\xd3\x11\x25\xd3\x0d\x26\xf2\x00\x12\x05\x11\x88\x01\xd8\x18\x1c\x88\x0d\xf0\x02\x06\x09\x15\xd8\x1c\x1d\x9f\x4c\x99\x4c\xd7\x1c\x33\xd1\x1c\x33\x88\x4d\xf0\x0c\x00\x0c\x19\xd0\x20\x53\xd1\x0b\x53\xd8\x0c\x14\xf0\x02\x03\x09\x11\xdc\x19\x1b\x9f\x17\x99\x17\x9f\x1f\x99\x1f\xa8\x11\xaf\x1a\xa9\x1a\xd3\x19\x34\x88\x41\x8c\x4a\xf0\x06\x03\x09\x11\xdc\x1b\x1d\x9f\x37\x99\x37\x9f\x3f\x99\x3f\xa8\x31\xaf\x3c\xa9\x3c\xd3\x1b\x38\x88\x41\x8d\x4c\xf1\x21\x12\x05\x11\xf8\xf4\x08\x00\x10\x1e\xf2\x00\x04\x09\x15\xf0\x02\x03\x0d\x15\xd8\x20\x21\xa7\x0a\xa1\x0a\xd7\x20\x31\xd1\x20\x31\xd7\x20\x3c\xd1\x20\x3c\x91\x0d\xf8\xdc\x13\x21\xf2\x00\x01\x0d\x15\xd9\x10\x14\xf0\x03\x01\x0d\x15\xfc\xf0\x07\x04\x09\x15\xfb\xf4\x12\x00\x11\x1f\xa4\x07\xac\x19\xd0\x0f\x33\xf2\x00\x01\x09\x11\xd9\x0c\x10\xf0\x03\x01\x09\x11\xfb\xf4\x08\x00\x11\x1f\xa4\x07\xac\x19\xd0\x0f\x33\xf2\x00\x01\x09\x11\xd9\x0c\x10\xf0\x03\x01\x09\x11\xfa",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[90];
+ }
+site_toplevel_consts_5_exceptiontable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 89,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\xae\x16\x42\x2a\x02\xc1\x0a\x2e\x43\x2a\x02\xc1\x39\x2e\x44\x04\x02\xc2\x2a\x09\x43\x27\x05\xc2\x34\x20\x43\x15\x04\xc3\x14\x01\x43\x27\x05\xc3\x15\x09\x43\x21\x07\xc3\x1e\x02\x43\x27\x05\xc3\x20\x01\x43\x21\x07\xc3\x21\x03\x43\x27\x05\xc3\x26\x01\x43\x27\x05\xc3\x2a\x14\x44\x01\x05\xc4\x00\x01\x44\x01\x05\xc4\x04\x14\x44\x1b\x05\xc4\x1a\x01\x44\x1b\x05",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[14];
+ }
+const_str_loader_module = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 13,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "loader_module",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+site_toplevel_consts_5_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ (PyObject *)&_Py_SINGLETON(strings).ascii[109],
+ & const_str_loader_module._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(572)
+site_toplevel_consts_5 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 286,
+ },
+ .co_consts = & site_toplevel_consts_5_consts._object.ob_base.ob_base,
+ .co_names = & site_toplevel_consts_5_names._object.ob_base.ob_base,
+ .co_exceptiontable = & site_toplevel_consts_5_exceptiontable.ob_base.ob_base,
+ .co_flags = 3,
+ .co_argcount = 0,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 8 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 6,
+ .co_firstlineno = 106,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 2,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 675,
+ .co_localsplusnames = & site_toplevel_consts_5_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_14_consts_2_localspluskinds.ob_base.ob_base,
+ .co_filename = & site_toplevel_consts_3_filename._ascii.ob_base,
+ .co_name = & const_str_abs_paths._ascii.ob_base,
+ .co_qualname = & const_str_abs_paths._ascii.ob_base,
+ .co_linetable = & site_toplevel_consts_5_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x74\x02\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x44\x00\x5d\x7e\x00\x00\x7d\x00\x64\x01\x7d\x01\x09\x00\x7c\x00\x6a\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7d\x01\x7c\x01\x64\x02\x76\x01\x72\x01\x8c\x21\x09\x00\x74\x12\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x14\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x17\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x6a\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7c\x00\x5f\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x09\x00\x74\x12\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x14\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x17\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x6a\x1e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7c\x00\x5f\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x8c\x80\x04\x00\x79\x01\x23\x00\x74\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x72\x34\x01\x00\x09\x00\x7c\x00\x6a\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7d\x01\x6e\x0f\x23\x00\x74\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x72\x03\x01\x00\x59\x00\x6e\x04\x77\x00\x78\x03\x59\x00\x77\x01\x59\x00\x8c\xa2\x77\x00\x78\x03\x59\x00\x77\x01\x23\x00\x74\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x74\x1a\x00\x00\x00\x00\x00\x00\x00\x00\x74\x1c\x00\x00\x00\x00\x00\x00\x00\x00\x66\x03\x24\x00\x72\x03\x01\x00\x59\x00\x8c\x88\x77\x00\x78\x03\x59\x00\x77\x01\x23\x00\x74\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x74\x1a\x00\x00\x00\x00\x00\x00\x00\x00\x74\x1c\x00\x00\x00\x00\x00\x00\x00\x00\x66\x03\x24\x00\x72\x03\x01\x00\x59\x00\x8c\xf2\x77\x00\x78\x03\x59\x00\x77\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[76];
+ }
+site_toplevel_consts_6_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 75,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x20\x52\x65\x6d\x6f\x76\x65\x20\x64\x75\x70\x6c\x69\x63\x61\x74\x65\x20\x65\x6e\x74\x72\x69\x65\x73\x20\x66\x72\x6f\x6d\x20\x73\x79\x73\x2e\x70\x61\x74\x68\x20\x61\x6c\x6f\x6e\x67\x20\x77\x69\x74\x68\x20\x6d\x61\x6b\x69\x6e\x67\x20\x74\x68\x65\x6d\x0a\x20\x20\x20\x20\x61\x62\x73\x6f\x6c\x75\x74\x65",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+site_toplevel_consts_6_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & site_toplevel_consts_6_consts_0._ascii.ob_base,
+ Py_None,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[6];
+ }_object;
+ }
+site_toplevel_consts_6_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 6,
+ },
+ .ob_item = {
+ & const_str_set._ascii.ob_base,
+ & const_str_sys._ascii.ob_base,
+ &_Py_ID(path),
+ & const_str_makepath._ascii.ob_base,
+ &_Py_ID(append),
+ &_Py_ID(add),
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[15];
+ }
+const_str_removeduppaths = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 14,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "removeduppaths",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[103];
+ }
+site_toplevel_consts_6_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 102,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf0\x0a\x00\x09\x0b\x80\x41\xdc\x12\x15\x93\x25\x80\x4b\xdc\x0f\x12\x8f\x78\x89\x78\xf2\x00\x07\x05\x25\x88\x03\xf4\x08\x00\x18\x20\xa0\x03\x93\x7d\x89\x0c\x88\x03\x88\x57\xd8\x0b\x12\x98\x2b\xd2\x0b\x25\xd8\x0c\x0d\x8f\x48\x89\x48\x90\x53\x8c\x4d\xd8\x0c\x17\x8f\x4f\x89\x4f\x98\x47\xd5\x0c\x24\xf0\x0f\x07\x05\x25\xf0\x10\x00\x13\x14\x84\x43\x87\x48\x81\x48\x89\x51\x80\x4b\xd8\x0b\x16\xd0\x04\x16",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[12];
+ }
+const_str_known_paths = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 11,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "known_paths",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[8];
+ }
+const_str_dircase = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 7,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "dircase",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[4];
+ }_object;
+ }
+site_toplevel_consts_6_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_item = {
+ (PyObject *)&_Py_SINGLETON(strings).ascii[76],
+ & const_str_known_paths._ascii.ob_base,
+ & const_str_dir._ascii.ob_base,
+ & const_str_dircase._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(216)
+site_toplevel_consts_6 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 108,
+ },
+ .co_consts = & site_toplevel_consts_6_consts._object.ob_base.ob_base,
+ .co_names = & site_toplevel_consts_6_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 0,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 8 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 129,
+ .co_nlocalsplus = 4,
+ .co_nlocals = 4,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 676,
+ .co_localsplusnames = & site_toplevel_consts_6_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_7_consts_3_localspluskinds.ob_base.ob_base,
+ .co_filename = & site_toplevel_consts_3_filename._ascii.ob_base,
+ .co_name = & const_str_removeduppaths._ascii.ob_base,
+ .co_qualname = & const_str_removeduppaths._ascii.ob_base,
+ .co_linetable = & site_toplevel_consts_6_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x67\x00\x7d\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x7d\x01\x74\x02\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x00\x5d\x37\x00\x00\x7d\x02\x74\x07\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x02\xab\x01\x00\x00\x00\x00\x00\x00\x5c\x02\x00\x00\x7d\x02\x7d\x03\x7c\x03\x7c\x01\x76\x01\x73\x01\x8c\x16\x7c\x00\x6a\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x02\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x7c\x01\x6a\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x03\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x8c\x39\x04\x00\x7c\x00\x74\x02\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x01\x64\x01\x1b\x00\x7c\x01\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[70];
+ }
+site_toplevel_consts_7_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 69,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Return a set containing all existing file system items from sys.path.",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+site_toplevel_consts_7_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & site_toplevel_consts_7_consts_0._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[8];
+ }_object;
+ }
+site_toplevel_consts_7_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 8,
+ },
+ .ob_item = {
+ & const_str_set._ascii.ob_base,
+ & const_str_sys._ascii.ob_base,
+ &_Py_ID(path),
+ & const_str_os._ascii.ob_base,
+ & const_str_exists._ascii.ob_base,
+ & const_str_makepath._ascii.ob_base,
+ &_Py_ID(add),
+ & const_str_TypeError._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[15];
+ }
+const_str__init_pathinfo = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 14,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_init_pathinfo",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[102];
+ }
+site_toplevel_consts_7_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 101,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xe4\x08\x0b\x8b\x05\x80\x41\xdc\x10\x13\x97\x08\x91\x08\xf2\x00\x06\x05\x15\x88\x04\xf0\x02\x05\x09\x15\xdc\x0f\x11\x8f\x77\x89\x77\x8f\x7e\x89\x7e\x98\x64\xd4\x0f\x23\xdc\x1e\x26\xa0\x74\x9b\x6e\x91\x0b\x90\x01\x90\x38\xd8\x10\x11\x97\x05\x91\x05\x90\x68\x94\x0f\xf8\xf0\x09\x06\x05\x15\xf0\x0e\x00\x0c\x0d\x80\x48\xf8\xf4\x05\x00\x10\x19\xf2\x00\x01\x09\x15\xd9\x0c\x14\xf0\x03\x01\x09\x15\xfa",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[18];
+ }
+site_toplevel_consts_7_exceptiontable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 17,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x9f\x3e\x41\x21\x02\xc1\x21\x09\x41\x2d\x05\xc1\x2c\x01\x41\x2d\x05",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[9];
+ }
+const_str_itemcase = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 8,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "itemcase",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[4];
+ }_object;
+ }
+site_toplevel_consts_7_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_item = {
+ &_Py_ID(d),
+ &_Py_ID(item),
+ &_Py_ID(_),
+ & const_str_itemcase._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(224)
+site_toplevel_consts_7 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 112,
+ },
+ .co_consts = & site_toplevel_consts_7_consts._object.ob_base.ob_base,
+ .co_names = & site_toplevel_consts_7_names._object.ob_base.ob_base,
+ .co_exceptiontable = & site_toplevel_consts_7_exceptiontable.ob_base.ob_base,
+ .co_flags = 3,
+ .co_argcount = 0,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 9 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 5,
+ .co_firstlineno = 148,
+ .co_nlocalsplus = 4,
+ .co_nlocals = 4,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 677,
+ .co_localsplusnames = & site_toplevel_consts_7_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_7_consts_3_localspluskinds.ob_base.ob_base,
+ .co_filename = & site_toplevel_consts_3_filename._ascii.ob_base,
+ .co_name = & const_str__init_pathinfo._ascii.ob_base,
+ .co_qualname = & const_str__init_pathinfo._ascii.ob_base,
+ .co_linetable = & site_toplevel_consts_7_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x7d\x00\x74\x02\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x00\x5d\x41\x00\x00\x7d\x01\x09\x00\x74\x06\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\xab\x01\x00\x00\x00\x00\x00\x00\x72\x1f\x74\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\xab\x01\x00\x00\x00\x00\x00\x00\x5c\x02\x00\x00\x7d\x02\x7d\x03\x7c\x00\x6a\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x03\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x8c\x43\x04\x00\x7c\x00\x53\x00\x23\x00\x74\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x72\x03\x01\x00\x59\x00\x8c\x51\x77\x00\x78\x03\x59\x00\x77\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[215];
+ }
+site_toplevel_consts_8_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 214,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x50\x72\x6f\x63\x65\x73\x73\x20\x61\x20\x2e\x70\x74\x68\x20\x66\x69\x6c\x65\x20\x77\x69\x74\x68\x69\x6e\x20\x74\x68\x65\x20\x73\x69\x74\x65\x2d\x70\x61\x63\x6b\x61\x67\x65\x73\x20\x64\x69\x72\x65\x63\x74\x6f\x72\x79\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x46\x6f\x72\x20\x65\x61\x63\x68\x20\x6c\x69\x6e\x65\x20\x69\x6e\x20\x74\x68\x65\x20\x66\x69\x6c\x65\x2c\x20\x65\x69\x74\x68\x65\x72\x20\x63\x6f\x6d\x62\x69\x6e\x65\x20\x69\x74\x20\x77\x69\x74\x68\x20\x73\x69\x74\x65\x64\x69\x72\x20\x74\x6f\x20\x61\x20\x70\x61\x74\x68\x0a\x20\x20\x20\x20\x20\x20\x20\x61\x6e\x64\x20\x61\x64\x64\x20\x74\x68\x61\x74\x20\x74\x6f\x20\x6b\x6e\x6f\x77\x6e\x5f\x70\x61\x74\x68\x73\x2c\x20\x6f\x72\x20\x65\x78\x65\x63\x75\x74\x65\x20\x69\x74\x20\x69\x66\x20\x69\x74\x20\x73\x74\x61\x72\x74\x73\x20\x77\x69\x74\x68\x20\x27\x69\x6d\x70\x6f\x72\x74\x20\x27\x2e\x0a\x20\x20\x20\x20",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[9];
+ }
+const_str_st_flags = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 8,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "st_flags",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[19];
+ }
+const_str_st_file_attributes = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 18,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "st_file_attributes",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[28];
+ }
+site_toplevel_consts_8_consts_7 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 27,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Skipping hidden .pth file: ",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[23];
+ }
+site_toplevel_consts_8_consts_8 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 22,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Processing .pth file: ",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[8];
+ }
+site_toplevel_consts_8_consts_13_1 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 7,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x69\x6d\x70\x6f\x72\x74\x09",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+site_toplevel_consts_8_consts_13 = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & importlib__bootstrap_toplevel_consts_25_consts_1_1._ascii.ob_base,
+ & site_toplevel_consts_8_consts_13_1._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[35];
+ }
+site_toplevel_consts_8_consts_14 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 34,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x45\x72\x72\x6f\x72\x20\x70\x72\x6f\x63\x65\x73\x73\x69\x6e\x67\x20\x6c\x69\x6e\x65\x20\x7b\x3a\x64\x7d\x20\x6f\x66\x20\x7b\x7d\x3a\x0a",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[3];
+ }
+site_toplevel_consts_8_consts_17 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 2,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = " ",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[27];
+ }
+site_toplevel_consts_8_consts_18 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 26,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x0a\x52\x65\x6d\x61\x69\x6e\x64\x65\x72\x20\x6f\x66\x20\x66\x69\x6c\x65\x20\x69\x67\x6e\x6f\x72\x65\x64",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[19];
+ }_object;
+ }
+site_toplevel_consts_8_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 19,
+ },
+ .ob_item = {
+ & site_toplevel_consts_8_consts_0._ascii.ob_base,
+ Py_None,
+ Py_True,
+ Py_False,
+ & const_str_st_flags._ascii.ob_base,
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 0],
+ & const_str_st_file_attributes._ascii.ob_base,
+ & site_toplevel_consts_8_consts_7._ascii.ob_base,
+ & site_toplevel_consts_8_consts_8._ascii.ob_base,
+ &_Py_ID(locale),
+ & codecs_toplevel_consts_35_localsplusnames._object.ob_base.ob_base,
+ (PyObject *)&_Py_SINGLETON(strings).ascii[35],
+ &_Py_STR(empty),
+ & site_toplevel_consts_8_consts_13._object.ob_base.ob_base,
+ & site_toplevel_consts_8_consts_14._ascii.ob_base,
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 1],
+ & importlib__bootstrap_toplevel_consts_25_consts_3._object.ob_base.ob_base,
+ & site_toplevel_consts_8_consts_17._ascii.ob_base,
+ & site_toplevel_consts_8_consts_18._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[10];
+ }
+const_str_UF_HIDDEN = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 9,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "UF_HIDDEN",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[22];
+ }
+const_str_FILE_ATTRIBUTE_HIDDEN = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 21,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "FILE_ATTRIBUTE_HIDDEN",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[6];
+ }
+const_str_strip = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 5,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "strip",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[17];
+ }
+const_str_format_exception = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 16,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "format_exception",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[31];
+ }_object;
+ }
+site_toplevel_consts_8_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 31,
+ },
+ .ob_item = {
+ & const_str__init_pathinfo._ascii.ob_base,
+ & const_str_os._ascii.ob_base,
+ &_Py_ID(path),
+ &_Py_ID(join),
+ & const_str_lstat._ascii.ob_base,
+ & const_str_OSError._ascii.ob_base,
+ &_Py_ID(getattr),
+ & const_str_stat._ascii.ob_base,
+ & const_str_UF_HIDDEN._ascii.ob_base,
+ & const_str_FILE_ATTRIBUTE_HIDDEN._ascii.ob_base,
+ & const_str__trace._ascii.ob_base,
+ & const_str_io._ascii.ob_base,
+ &_Py_ID(TextIOWrapper),
+ & const_str_open_code._ascii.ob_base,
+ & const_str_enumerate._ascii.ob_base,
+ & const_str_startswith._ascii.ob_base,
+ & const_str_strip._ascii.ob_base,
+ & const_str_exec._ascii.ob_base,
+ & const_str_rstrip._ascii.ob_base,
+ & const_str_makepath._ascii.ob_base,
+ & const_str_exists._ascii.ob_base,
+ & const_str_sys._ascii.ob_base,
+ &_Py_ID(append),
+ &_Py_ID(add),
+ & const_str_Exception._ascii.ob_base,
+ & const_str_print._ascii.ob_base,
+ &_Py_ID(format),
+ &_Py_ID(stderr),
+ &_Py_ID(traceback),
+ & const_str_format_exception._ascii.ob_base,
+ & const_str_splitlines._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[11];
+ }
+const_str_addpackage = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 10,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "addpackage",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[571];
+ }
+site_toplevel_consts_8_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 570,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf0\x0a\x00\x08\x13\xd0\x07\x1a\xdc\x16\x24\xd3\x16\x26\x88\x0b\xd8\x10\x14\x89\x05\xe0\x10\x15\x88\x05\xdc\x0f\x11\x8f\x77\x89\x77\x8f\x7c\x89\x7c\x98\x47\xa0\x54\xd3\x0f\x2a\x80\x48\xf0\x02\x03\x05\x0f\xdc\x0d\x0f\x8f\x58\x89\x58\x90\x68\xd3\x0d\x1f\x88\x02\xf4\x06\x00\x0a\x11\x90\x12\x90\x5a\xa0\x11\xd3\x09\x23\xa4\x64\xa7\x6e\xa1\x6e\xd2\x09\x34\xdc\x09\x10\x90\x12\xd0\x15\x29\xa8\x31\xd3\x09\x2d\xb4\x04\xd7\x30\x4a\xd1\x30\x4a\xd2\x09\x4a\xdc\x08\x0e\xd0\x11\x2c\xa8\x58\xa8\x4c\xd0\x0f\x39\xd4\x08\x3a\xd8\x08\x0e\xdc\x04\x0a\xd0\x0d\x23\xa0\x48\xa0\x3c\xd0\x0b\x30\xd4\x04\x31\xf0\x02\x05\x05\x0f\xf4\x06\x00\x0d\x0f\xd7\x0c\x1c\xd1\x0c\x1c\x9c\x52\x9f\x5c\x99\x5c\xa8\x28\xd3\x1d\x33\xb8\x68\xd4\x0c\x47\x88\x01\xf0\x06\x00\x0a\x0b\xf1\x00\x17\x05\x16\xdc\x17\x20\xa0\x11\x93\x7c\xf2\x00\x16\x09\x16\x89\x47\x88\x41\x88\x74\xd8\x0f\x13\x8f\x7f\x89\x7f\x98\x73\xd4\x0f\x23\xd8\x10\x18\xd8\x0f\x13\x8f\x7a\x89\x7a\x8b\x7c\x98\x72\xd2\x0f\x21\xd8\x10\x18\xf0\x02\x11\x0d\x16\xd8\x13\x17\x97\x3f\x91\x3f\xd0\x23\x3a\xd4\x13\x3b\xdc\x14\x18\x98\x14\x94\x4a\xd8\x14\x1c\xd8\x17\x1b\x97\x7b\x91\x7b\x93\x7d\x90\x04\xdc\x1f\x27\xa8\x07\xb0\x14\xd3\x1f\x36\x91\x0c\x90\x03\x90\x57\xd8\x17\x1e\xa0\x2b\xd1\x17\x2d\xb4\x22\xb7\x27\xb1\x27\xb7\x2e\xb1\x2e\xc0\x13\xd4\x32\x45\xdc\x14\x17\x97\x48\x91\x48\x97\x4f\x91\x4f\xa0\x43\xd4\x14\x28\xd8\x14\x1f\x97\x4f\x91\x4f\xa0\x47\xd4\x14\x2c\xf8\xf0\x1b\x16\x09\x16\xf7\x03\x17\x05\x16\xf1\x30\x00\x08\x0d\xd8\x16\x1a\x88\x0b\xd8\x0b\x16\xd0\x04\x16\xf8\xf4\x4f\x01\x00\x0c\x13\xf2\x00\x01\x05\x0f\xd9\x08\x0e\xf0\x03\x01\x05\x0f\xfb\xf4\x16\x00\x0c\x13\xf2\x00\x01\x05\x0f\xd9\x08\x0e\xf0\x03\x01\x05\x0f\xfb\xf4\x22\x00\x14\x1d\xf2\x00\x08\x0d\x16\xdc\x10\x15\xd0\x16\x3b\xd7\x16\x42\xd1\x16\x42\xc0\x31\xc0\x51\xc1\x33\xc8\x08\xd3\x16\x51\xdc\x1b\x1e\x9f\x3a\x99\x3a\xf5\x03\x01\x11\x27\xe3\x10\x20\xd8\x1e\x27\xd7\x1e\x38\xd1\x1e\x38\xb8\x13\xd3\x1e\x3d\xf2\x00\x02\x11\x3a\x90\x46\xd8\x20\x26\xd7\x20\x31\xd1\x20\x31\xd3\x20\x33\xf2\x00\x01\x15\x3a\x98\x04\xdc\x18\x1d\x98\x64\xa0\x34\x99\x69\xac\x63\xaf\x6a\xa9\x6a\xd6\x18\x39\xf1\x03\x01\x15\x3a\xf0\x03\x02\x11\x3a\xf4\x06\x00\x11\x16\xd0\x16\x33\xbc\x23\xbf\x2a\xb9\x2a\xd5\x10\x45\xdd\x10\x15\xfb\xf0\x11\x08\x0d\x16\xfa\xf7\x1f\x17\x05\x16\xf0\x00\x17\x05\x16\xfa",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[104];
+ }
+site_toplevel_consts_8_exceptiontable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 103,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\xb3\x15\x46\x26\x00\xc2\x22\x2a\x46\x35\x00\xc3\x0e\x38\x49\x31\x03\xc4\x07\x1c\x47\x04\x04\xc4\x23\x01\x49\x31\x03\xc4\x24\x41\x32\x47\x04\x04\xc6\x16\x02\x49\x31\x03\xc6\x26\x09\x46\x32\x03\xc6\x31\x01\x46\x32\x03\xc6\x35\x09\x47\x01\x03\xc7\x00\x01\x47\x01\x03\xc7\x04\x09\x49\x2e\x07\xc7\x0d\x42\x16\x49\x29\x07\xc9\x23\x06\x49\x31\x03\xc9\x29\x05\x49\x2e\x07\xc9\x2e\x03\x49\x31\x03\xc9\x31\x05\x49\x3a\x07",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[8];
+ }
+const_str_sitedir = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 7,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "sitedir",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[7];
+ }
+const_str_record = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 6,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "record",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[14];
+ }_object;
+ }
+site_toplevel_consts_8_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 14,
+ },
+ .ob_item = {
+ & const_str_sitedir._ascii.ob_base,
+ &_Py_ID(name),
+ & const_str_known_paths._ascii.ob_base,
+ &_Py_ID(reset),
+ & const_str_fullname._ascii.ob_base,
+ & const_str_st._ascii.ob_base,
+ (PyObject *)&_Py_SINGLETON(strings).ascii[102],
+ &_Py_ID(n),
+ &_Py_ID(line),
+ & const_str_dir._ascii.ob_base,
+ & const_str_dircase._ascii.ob_base,
+ & const_str_exc._ascii.ob_base,
+ &_Py_ID(traceback),
+ & const_str_record._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(1274)
+site_toplevel_consts_8 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 637,
+ },
+ .co_consts = & site_toplevel_consts_8_consts._object.ob_base.ob_base,
+ .co_names = & site_toplevel_consts_8_names._object.ob_base.ob_base,
+ .co_exceptiontable = & site_toplevel_consts_8_exceptiontable.ob_base.ob_base,
+ .co_flags = 3,
+ .co_argcount = 3,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 23 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 9,
+ .co_firstlineno = 161,
+ .co_nlocalsplus = 14,
+ .co_nlocals = 14,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 678,
+ .co_localsplusnames = & site_toplevel_consts_8_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_external_toplevel_consts_72_consts_6_localspluskinds.ob_base.ob_base,
+ .co_filename = & site_toplevel_consts_3_filename._ascii.ob_base,
+ .co_name = & const_str_addpackage._ascii.ob_base,
+ .co_qualname = & const_str_addpackage._ascii.ob_base,
+ .co_linetable = & site_toplevel_consts_8_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x02\x80\x0d\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x7d\x02\x64\x02\x7d\x03\x6e\x02\x64\x03\x7d\x03\x74\x02\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x7c\x01\xab\x02\x00\x00\x00\x00\x00\x00\x7d\x04\x09\x00\x74\x03\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x04\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x05\x74\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x05\x64\x04\x64\x05\xab\x03\x00\x00\x00\x00\x00\x00\x74\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7a\x01\x00\x00\x73\x1e\x74\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x05\x64\x06\x64\x05\xab\x03\x00\x00\x00\x00\x00\x00\x74\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7a\x01\x00\x00\x72\x0f\x74\x15\x00\x00\x00\x00\x00\x00\x00\x00\x64\x07\x7c\x04\x9b\x02\x9d\x02\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x79\x01\x74\x15\x00\x00\x00\x00\x00\x00\x00\x00\x64\x08\x7c\x04\x9b\x02\x9d\x02\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x09\x00\x74\x17\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x74\x17\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x1a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x04\xab\x01\x00\x00\x00\x00\x00\x00\x64\x09\xac\x0a\xab\x02\x00\x00\x00\x00\x00\x00\x7d\x06\x7c\x06\x35\x00\x01\x00\x74\x1d\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x06\xab\x01\x00\x00\x00\x00\x00\x00\x44\x00\x5d\xbb\x00\x00\x5c\x02\x00\x00\x7d\x07\x7d\x08\x7c\x08\x6a\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x0b\xab\x01\x00\x00\x00\x00\x00\x00\x72\x01\x8c\x18\x7c\x08\x6a\x21\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x64\x0c\x6b\x28\x00\x00\x72\x01\x8c\x2c\x09\x00\x7c\x08\x6a\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x0d\xab\x01\x00\x00\x00\x00\x00\x00\x72\x0c\x74\x23\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x08\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x8c\x4a\x7c\x08\x6a\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x7d\x08\x74\x27\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x7c\x08\xab\x02\x00\x00\x00\x00\x00\x00\x5c\x02\x00\x00\x7d\x09\x7d\x0a\x7c\x0a\x7c\x02\x76\x01\x72\x4f\x74\x02\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x29\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x09\xab\x01\x00\x00\x00\x00\x00\x00\x72\x30\x74\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x2d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x09\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x7c\x02\x6a\x2f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x0a\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x8c\xbd\x04\x00\x64\x01\x64\x01\x64\x01\xab\x02\x00\x00\x00\x00\x00\x00\x01\x00\x7c\x03\x72\x02\x64\x01\x7d\x02\x7c\x02\x53\x00\x23\x00\x74\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x72\x03\x01\x00\x59\x00\x79\x01\x77\x00\x78\x03\x59\x00\x77\x01\x23\x00\x74\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x72\x03\x01\x00\x59\x00\x79\x01\x77\x00\x78\x03\x59\x00\x77\x01\x23\x00\x74\x30\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x72\xa1\x7d\x0b\x74\x33\x00\x00\x00\x00\x00\x00\x00\x00\x64\x0e\x6a\x35\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x07\x64\x0f\x7a\x00\x00\x00\x7c\x04\xab\x02\x00\x00\x00\x00\x00\x00\x74\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x36\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xac\x10\xab\x02\x00\x00\x00\x00\x00\x00\x01\x00\x64\x05\x64\x01\x6c\x1c\x7d\x0c\x7c\x0c\x6a\x3b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x0b\xab\x01\x00\x00\x00\x00\x00\x00\x44\x00\x5d\x35\x00\x00\x7d\x0d\x7c\x0d\x6a\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x44\x00\x5d\x20\x00\x00\x7d\x08\x74\x33\x00\x00\x00\x00\x00\x00\x00\x00\x64\x11\x7c\x08\x7a\x00\x00\x00\x74\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x36\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xac\x10\xab\x02\x00\x00\x00\x00\x00\x00\x01\x00\x8c\x22\x04\x00\x8c\x37\x04\x00\x74\x33\x00\x00\x00\x00\x00\x00\x00\x00\x64\x12\x74\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x36\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xac\x10\xab\x02\x00\x00\x00\x00\x00\x00\x01\x00\x59\x00\x64\x01\x7d\x0b\x7e\x0b\x01\x00\x8c\xd1\x64\x01\x7d\x0b\x7e\x0b\x77\x01\x77\x00\x78\x03\x59\x00\x77\x01\x23\x00\x31\x00\x73\x01\x77\x02\x01\x00\x59\x00\x01\x00\x01\x00\x8c\xda\x78\x03\x59\x00\x77\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[85];
+ }
+site_toplevel_consts_9_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 84,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x41\x64\x64\x20\x27\x73\x69\x74\x65\x64\x69\x72\x27\x20\x61\x72\x67\x75\x6d\x65\x6e\x74\x20\x74\x6f\x20\x73\x79\x73\x2e\x70\x61\x74\x68\x20\x69\x66\x20\x6d\x69\x73\x73\x69\x6e\x67\x20\x61\x6e\x64\x20\x68\x61\x6e\x64\x6c\x65\x20\x2e\x70\x74\x68\x20\x66\x69\x6c\x65\x73\x20\x69\x6e\x0a\x20\x20\x20\x20\x27\x73\x69\x74\x65\x64\x69\x72\x27",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[19];
+ }
+site_toplevel_consts_9_consts_1 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 18,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Adding directory: ",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[5];
+ }
+site_toplevel_consts_9_consts_5 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 4,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = ".pth",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[7];
+ }_object;
+ }
+site_toplevel_consts_9_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 7,
+ },
+ .ob_item = {
+ & site_toplevel_consts_9_consts_0._ascii.ob_base,
+ & site_toplevel_consts_9_consts_1._ascii.ob_base,
+ Py_None,
+ Py_True,
+ Py_False,
+ & site_toplevel_consts_9_consts_5._ascii.ob_base,
+ &_Py_STR(dot),
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[14];
+ }_object;
+ }
+site_toplevel_consts_9_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 14,
+ },
+ .ob_item = {
+ & const_str__trace._ascii.ob_base,
+ & const_str__init_pathinfo._ascii.ob_base,
+ & const_str_makepath._ascii.ob_base,
+ & const_str_sys._ascii.ob_base,
+ &_Py_ID(path),
+ &_Py_ID(append),
+ &_Py_ID(add),
+ & const_str_os._ascii.ob_base,
+ & const_str_listdir._ascii.ob_base,
+ & const_str_OSError._ascii.ob_base,
+ & const_str_endswith._ascii.ob_base,
+ & const_str_startswith._ascii.ob_base,
+ & const_str_sorted._ascii.ob_base,
+ & const_str_addpackage._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[11];
+ }
+const_str_addsitedir = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 10,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "addsitedir",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[241];
+ }
+site_toplevel_consts_9_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 240,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf4\x06\x00\x05\x0b\xd0\x0d\x1f\xa0\x07\x98\x7b\xd0\x0b\x2b\xd4\x04\x2c\xd8\x07\x12\xd0\x07\x1a\xdc\x16\x24\xd3\x16\x26\x88\x0b\xd8\x10\x14\x89\x05\xe0\x10\x15\x88\x05\xdc\x1b\x23\xa0\x47\xd3\x1b\x2c\xd1\x04\x18\x80\x47\x88\x5b\xd8\x0b\x16\x98\x2b\xd1\x0b\x25\xdc\x08\x0b\x8f\x08\x89\x08\x8f\x0f\x89\x0f\x98\x07\xd4\x08\x20\xd8\x08\x13\x8f\x0f\x89\x0f\x98\x0b\xd4\x08\x24\xf0\x02\x03\x05\x0f\xdc\x10\x12\x97\x0a\x91\x0a\x98\x37\xd3\x10\x23\x88\x05\xf0\x06\x00\x1f\x24\xf6\x00\x01\x0d\x44\x01\x90\x64\xd8\x10\x14\x97\x0d\x91\x0d\x98\x66\xd4\x10\x25\xa8\x64\xaf\x6f\xa9\x6f\xb8\x63\xd4\x2e\x42\xf2\x03\x00\x0e\x12\xf0\x00\x01\x0d\x44\x01\x80\x45\xf0\x00\x01\x0d\x44\x01\xe4\x10\x16\x90\x75\x93\x0d\xf2\x00\x01\x05\x2f\x88\x04\xdc\x08\x12\x90\x37\x98\x44\xa0\x2b\xd5\x08\x2e\xf0\x03\x01\x05\x2f\xe1\x07\x0c\xd8\x16\x1a\x88\x0b\xd8\x0b\x16\xd0\x04\x16\xf8\xf4\x11\x00\x0c\x13\xf2\x00\x01\x05\x0f\xd9\x08\x0e\xf0\x03\x01\x05\x0f\xfc\xf2\x04\x01\x0d\x44\x01",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[25];
+ }
+site_toplevel_consts_9_exceptiontable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 24,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\xc1\x23\x15\x43\x0c\x00\xc1\x3c\x2b\x43\x1b\x04\xc3\x0c\x09\x43\x18\x03\xc3\x17\x01\x43\x18\x03",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[12];
+ }
+const_str_sitedircase = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 11,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "sitedircase",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[6];
+ }_object;
+ }
+site_toplevel_consts_9_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 6,
+ },
+ .ob_item = {
+ & const_str_sitedir._ascii.ob_base,
+ & const_str_known_paths._ascii.ob_base,
+ &_Py_ID(reset),
+ & const_str_sitedircase._ascii.ob_base,
+ & const_str_names._ascii.ob_base,
+ &_Py_ID(name),
+ },
+ },
+};
+static
+ struct _PyCode_DEF(448)
+site_toplevel_consts_9 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 224,
+ },
+ .co_consts = & site_toplevel_consts_9_consts._object.ob_base.ob_base,
+ .co_names = & site_toplevel_consts_9_names._object.ob_base.ob_base,
+ .co_exceptiontable = & site_toplevel_consts_9_exceptiontable.ob_base.ob_base,
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 12 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 6,
+ .co_firstlineno = 216,
+ .co_nlocalsplus = 6,
+ .co_nlocals = 6,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 679,
+ .co_localsplusnames = & site_toplevel_consts_9_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_30_consts_4_localspluskinds.ob_base.ob_base,
+ .co_filename = & site_toplevel_consts_3_filename._ascii.ob_base,
+ .co_name = & const_str_addsitedir._ascii.ob_base,
+ .co_qualname = & const_str_addsitedir._ascii.ob_base,
+ .co_linetable = & site_toplevel_consts_9_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x64\x01\x7c\x00\x9b\x02\x9d\x02\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x7c\x01\x80\x0d\x74\x03\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x7d\x01\x64\x03\x7d\x02\x6e\x02\x64\x04\x7d\x02\x74\x05\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x5c\x02\x00\x00\x7d\x00\x7d\x03\x7c\x03\x7c\x01\x76\x01\x72\x30\x74\x06\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x7c\x01\x6a\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x03\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x09\x00\x74\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x04\x7c\x04\x44\x00\x8f\x05\x63\x02\x67\x00\x63\x02\x5d\x26\x00\x00\x7d\x05\x7c\x05\x6a\x15\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x05\xab\x01\x00\x00\x00\x00\x00\x00\x72\x13\x7c\x05\x6a\x17\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x06\xab\x01\x00\x00\x00\x00\x00\x00\x73\x02\x7c\x05\x91\x02\x8c\x28\x04\x00\x7d\x04\x7d\x05\x74\x19\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x04\xab\x01\x00\x00\x00\x00\x00\x00\x44\x00\x5d\x0f\x00\x00\x7d\x05\x74\x1b\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x7c\x05\x7c\x01\xab\x03\x00\x00\x00\x00\x00\x00\x01\x00\x8c\x11\x04\x00\x7c\x02\x72\x02\x64\x02\x7d\x01\x7c\x01\x53\x00\x23\x00\x74\x12\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x72\x03\x01\x00\x59\x00\x79\x02\x77\x00\x78\x03\x59\x00\x77\x01\x63\x02\x01\x00\x63\x02\x7d\x05\x77\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[301];
+ }
+site_toplevel_consts_10_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 300,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x43\x68\x65\x63\x6b\x20\x69\x66\x20\x75\x73\x65\x72\x20\x73\x69\x74\x65\x20\x64\x69\x72\x65\x63\x74\x6f\x72\x79\x20\x69\x73\x20\x73\x61\x66\x65\x20\x66\x6f\x72\x20\x69\x6e\x63\x6c\x75\x73\x69\x6f\x6e\x0a\x0a\x20\x20\x20\x20\x54\x68\x65\x20\x66\x75\x6e\x63\x74\x69\x6f\x6e\x20\x74\x65\x73\x74\x73\x20\x66\x6f\x72\x20\x74\x68\x65\x20\x63\x6f\x6d\x6d\x61\x6e\x64\x20\x6c\x69\x6e\x65\x20\x66\x6c\x61\x67\x20\x28\x69\x6e\x63\x6c\x75\x64\x69\x6e\x67\x20\x65\x6e\x76\x69\x72\x6f\x6e\x6d\x65\x6e\x74\x20\x76\x61\x72\x29\x2c\x0a\x20\x20\x20\x20\x70\x72\x6f\x63\x65\x73\x73\x20\x75\x69\x64\x2f\x67\x69\x64\x20\x65\x71\x75\x61\x6c\x20\x74\x6f\x20\x65\x66\x66\x65\x63\x74\x69\x76\x65\x20\x75\x69\x64\x2f\x67\x69\x64\x2e\x0a\x0a\x20\x20\x20\x20\x4e\x6f\x6e\x65\x3a\x20\x44\x69\x73\x61\x62\x6c\x65\x64\x20\x66\x6f\x72\x20\x73\x65\x63\x75\x72\x69\x74\x79\x20\x72\x65\x61\x73\x6f\x6e\x73\x0a\x20\x20\x20\x20\x46\x61\x6c\x73\x65\x3a\x20\x44\x69\x73\x61\x62\x6c\x65\x64\x20\x62\x79\x20\x75\x73\x65\x72\x20\x28\x63\x6f\x6d\x6d\x61\x6e\x64\x20\x6c\x69\x6e\x65\x20\x6f\x70\x74\x69\x6f\x6e\x29\x0a\x20\x20\x20\x20\x54\x72\x75\x65\x3a\x20\x53\x61\x66\x65\x20\x61\x6e\x64\x20\x65\x6e\x61\x62\x6c\x65\x64\x0a\x20\x20\x20\x20",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[8];
+ }
+const_str_geteuid = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 7,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "geteuid",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[7];
+ }
+const_str_getgid = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 6,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "getgid",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[8];
+ }
+const_str_getegid = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 7,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "getegid",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[8];
+ }_object;
+ }
+site_toplevel_consts_10_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 8,
+ },
+ .ob_item = {
+ & site_toplevel_consts_10_consts_0._ascii.ob_base,
+ Py_False,
+ & const_str_getuid._ascii.ob_base,
+ & const_str_geteuid._ascii.ob_base,
+ Py_None,
+ & const_str_getgid._ascii.ob_base,
+ & const_str_getegid._ascii.ob_base,
+ Py_True,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[13];
+ }
+const_str_no_user_site = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 12,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "no_user_site",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[9];
+ }_object;
+ }
+site_toplevel_consts_10_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 9,
+ },
+ .ob_item = {
+ & const_str_sys._ascii.ob_base,
+ &_Py_ID(flags),
+ & const_str_no_user_site._ascii.ob_base,
+ & const_str_hasattr._ascii.ob_base,
+ & const_str_os._ascii.ob_base,
+ & const_str_geteuid._ascii.ob_base,
+ & const_str_getuid._ascii.ob_base,
+ & const_str_getegid._ascii.ob_base,
+ & const_str_getgid._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[21];
+ }
+const_str_check_enableusersite = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 20,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "check_enableusersite",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[108];
+ }
+site_toplevel_consts_10_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 107,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf4\x14\x00\x08\x0b\x87\x79\x81\x79\xd7\x07\x1d\xd2\x07\x1d\xd8\x0f\x14\xe4\x07\x0e\x8c\x72\x90\x38\xd4\x07\x1c\xa4\x17\xac\x12\xa8\x59\xd4\x21\x37\xe4\x0b\x0d\x8f\x3a\x89\x3a\x8b\x3c\x9c\x32\x9f\x39\x99\x39\x9b\x3b\xd2\x0b\x26\xd8\x13\x17\xdc\x07\x0e\x8c\x72\x90\x38\xd4\x07\x1c\xa4\x17\xac\x12\xa8\x59\xd4\x21\x37\xe4\x0b\x0d\x8f\x3a\x89\x3a\x8b\x3c\x9c\x32\x9f\x39\x99\x39\x9b\x3b\xd2\x0b\x26\xd8\x13\x17\xe0\x0b\x0f",
+};
+static
+ struct _PyCode_DEF(354)
+site_toplevel_consts_10 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 177,
+ },
+ .co_consts = & site_toplevel_consts_10_consts._object.ob_base.ob_base,
+ .co_names = & site_toplevel_consts_10_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 0,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 4 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 242,
+ .co_nlocalsplus = 0,
+ .co_nlocals = 0,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 680,
+ .co_localsplusnames = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_filename = & site_toplevel_consts_3_filename._ascii.ob_base,
+ .co_name = & const_str_check_enableusersite._ascii.ob_base,
+ .co_qualname = & const_str_check_enableusersite._ascii.ob_base,
+ .co_linetable = & site_toplevel_consts_10_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x72\x01\x79\x01\x74\x07\x00\x00\x00\x00\x00\x00\x00\x00\x74\x08\x00\x00\x00\x00\x00\x00\x00\x00\x64\x02\xab\x02\x00\x00\x00\x00\x00\x00\x72\x3a\x74\x07\x00\x00\x00\x00\x00\x00\x00\x00\x74\x08\x00\x00\x00\x00\x00\x00\x00\x00\x64\x03\xab\x02\x00\x00\x00\x00\x00\x00\x72\x2a\x74\x09\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x74\x09\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x6b\x37\x00\x00\x72\x01\x79\x04\x74\x07\x00\x00\x00\x00\x00\x00\x00\x00\x74\x08\x00\x00\x00\x00\x00\x00\x00\x00\x64\x05\xab\x02\x00\x00\x00\x00\x00\x00\x72\x3a\x74\x07\x00\x00\x00\x00\x00\x00\x00\x00\x74\x08\x00\x00\x00\x00\x00\x00\x00\x00\x64\x06\xab\x02\x00\x00\x00\x00\x00\x00\x72\x2a\x74\x09\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x74\x09\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x6b\x37\x00\x00\x72\x01\x79\x04\x79\x07",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[15];
+ }
+const_str_PYTHONUSERBASE = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 14,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "PYTHONUSERBASE",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[11];
+ }
+const_str_emscripten = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 10,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "emscripten",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[5];
+ }
+const_str_wasi = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 4,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "wasi",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+site_toplevel_consts_11_consts_2 = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ & const_str_emscripten._ascii.ob_base,
+ & const_str_vxworks._ascii.ob_base,
+ & const_str_wasi._ascii.ob_base,
+ },
+ },
+};
+// TODO: The above tuple should be a frozenset
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[4];
+ }_object;
+ }
+site_toplevel_consts_11_consts_3_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_item = {
+ & const_str_os._ascii.ob_base,
+ &_Py_ID(path),
+ & const_str_expanduser._ascii.ob_base,
+ &_Py_ID(join),
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[9];
+ }
+const_str_joinuser = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 8,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "joinuser",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[31];
+ }
+site_toplevel_consts_11_consts_3_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 30,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_getuserbase.<locals>.joinuser",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[37];
+ }
+site_toplevel_consts_11_consts_3_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 36,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xdc\x0f\x11\x8f\x77\x89\x77\xd7\x0f\x21\xd1\x0f\x21\xa4\x22\xa7\x27\xa1\x27\xa7\x2c\xa1\x2c\xb0\x04\xd0\x22\x35\xd3\x0f\x36\xd0\x08\x36",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+site_toplevel_consts_11_consts_3_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ &_Py_ID(args),
+ },
+ },
+};
+static
+ struct _PyCode_DEF(116)
+site_toplevel_consts_11_consts_3 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 58,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_1_consts._object.ob_base.ob_base,
+ .co_names = & site_toplevel_consts_11_consts_3_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 23,
+ .co_argcount = 0,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 6 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 5,
+ .co_firstlineno = 283,
+ .co_nlocalsplus = 1,
+ .co_nlocals = 1,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 681,
+ .co_localsplusnames = & site_toplevel_consts_11_consts_3_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_characters[32]),
+ .co_filename = & site_toplevel_consts_3_filename._ascii.ob_base,
+ .co_name = & const_str_joinuser._ascii.ob_base,
+ .co_qualname = & site_toplevel_consts_11_consts_3_qualname._ascii.ob_base,
+ .co_linetable = & site_toplevel_consts_11_consts_3_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x8e\x00\xab\x01\x00\x00\x00\x00\x00\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[8];
+ }
+const_str_APPDATA = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 7,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "APPDATA",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[7];
+ }
+const_str_Python = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 6,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Python",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[8];
+ }
+const_str_Library = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 7,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Library",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[7];
+ }
+site_toplevel_consts_11_consts_12 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 6,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = ".local",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[13];
+ }_object;
+ }
+site_toplevel_consts_11_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 13,
+ },
+ .ob_item = {
+ Py_None,
+ & const_str_PYTHONUSERBASE._ascii.ob_base,
+ & site_toplevel_consts_11_consts_2._object.ob_base.ob_base,
+ & site_toplevel_consts_11_consts_3.ob_base.ob_base,
+ &_Py_ID(nt),
+ & const_str_APPDATA._ascii.ob_base,
+ (PyObject *)&_Py_SINGLETON(strings).ascii[126],
+ & const_str_Python._ascii.ob_base,
+ & const_str_darwin._ascii.ob_base,
+ & const_str_Library._ascii.ob_base,
+ & importlib__bootstrap_external_toplevel_consts_52_consts_6_consts_1._ascii.ob_base,
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 2],
+ & site_toplevel_consts_11_consts_12._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[11];
+ }
+const_str__framework = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 10,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_framework",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[8];
+ }_object;
+ }
+site_toplevel_consts_11_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 8,
+ },
+ .ob_item = {
+ & const_str_os._ascii.ob_base,
+ & const_str_environ._ascii.ob_base,
+ &_Py_ID(get),
+ & const_str_sys._ascii.ob_base,
+ & const_str_platform._ascii.ob_base,
+ &_Py_ID(name),
+ & const_str__framework._ascii.ob_base,
+ & const_str_version_info._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[13];
+ }
+const_str__getuserbase = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 12,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_getuserbase",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[181];
+ }
+site_toplevel_consts_11_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 180,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xdc\x0f\x11\x8f\x7a\x89\x7a\x8f\x7e\x89\x7e\xd0\x1e\x2e\xb0\x04\xd3\x0f\x35\x80\x48\xd9\x07\x0f\xd8\x0f\x17\x88\x0f\xf4\x06\x00\x08\x0b\x87\x7c\x81\x7c\xd0\x17\x38\xd1\x07\x38\xd8\x0f\x13\xf2\x04\x01\x05\x37\xf4\x06\x00\x08\x0a\x87\x77\x81\x77\x90\x24\x82\x7f\xdc\x0f\x11\x8f\x7a\x89\x7a\x8f\x7e\x89\x7e\x98\x69\xd3\x0f\x28\xd2\x0f\x2f\xa8\x43\x88\x04\xd9\x0f\x17\x98\x04\x98\x68\xd3\x0f\x27\xd0\x08\x27\xe4\x07\x0a\x87\x7c\x81\x7c\x90\x78\xd2\x07\x1f\xa4\x43\xa7\x4e\xa2\x4e\xd9\x0f\x17\x98\x03\x98\x59\xac\x03\xaf\x0e\xa9\x0e\xd8\x18\x1f\xa4\x23\xd7\x22\x32\xd1\x22\x32\xb0\x32\xb0\x41\xd0\x22\x36\xd1\x18\x36\xf3\x03\x01\x10\x38\xf0\x00\x01\x09\x38\xf1\x06\x00\x0c\x14\x90\x43\x98\x18\xd3\x0b\x22\xd0\x04\x22",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[9];
+ }
+const_str_env_base = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 8,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "env_base",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+site_toplevel_consts_11_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ & const_str_env_base._ascii.ob_base,
+ & const_str_joinuser._ascii.ob_base,
+ &_Py_ID(base),
+ },
+ },
+};
+static
+ struct _PyCode_DEF(422)
+site_toplevel_consts_11 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 211,
+ },
+ .co_consts = & site_toplevel_consts_11_consts._object.ob_base.ob_base,
+ .co_names = & site_toplevel_consts_11_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 0,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 12 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 9,
+ .co_firstlineno = 274,
+ .co_nlocalsplus = 3,
+ .co_nlocals = 3,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 682,
+ .co_localsplusnames = & site_toplevel_consts_11_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_3_localspluskinds.ob_base.ob_base,
+ .co_filename = & site_toplevel_consts_3_filename._ascii.ob_base,
+ .co_name = & const_str__getuserbase._ascii.ob_base,
+ .co_qualname = & const_str__getuserbase._ascii.ob_base,
+ .co_linetable = & site_toplevel_consts_11_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x01\x64\x00\xab\x02\x00\x00\x00\x00\x00\x00\x7d\x00\x7c\x00\x72\x02\x7c\x00\x53\x00\x74\x06\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x02\x76\x00\x72\x01\x79\x00\x64\x03\x84\x00\x7d\x01\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x04\x6b\x28\x00\x00\x72\x2c\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x05\xab\x01\x00\x00\x00\x00\x00\x00\x78\x01\x73\x02\x01\x00\x64\x06\x7d\x02\x02\x00\x7c\x01\x7c\x02\x64\x07\xab\x02\x00\x00\x00\x00\x00\x00\x53\x00\x74\x06\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x08\x6b\x28\x00\x00\x72\x3d\x74\x06\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x72\x2d\x02\x00\x7c\x01\x64\x06\x64\x09\x74\x06\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x0a\x74\x06\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x00\x64\x0b\x1a\x00\x7a\x06\x00\x00\xab\x04\x00\x00\x00\x00\x00\x00\x53\x00\x02\x00\x7c\x01\x64\x06\x64\x0c\xab\x02\x00\x00\x00\x00\x00\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[8];
+ }
+site_toplevel_consts_12_consts_4 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 7,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\\Python",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[15];
+ }
+site_toplevel_consts_12_consts_5 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 14,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\\site-packages",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[26];
+ }
+site_toplevel_consts_12_consts_7 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 25,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "/lib/python/site-packages",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[12];
+ }
+site_toplevel_consts_12_consts_8 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 11,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "/lib/python",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[15];
+ }
+site_toplevel_consts_12_consts_11 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 14,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "/site-packages",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[12];
+ }_object;
+ }
+site_toplevel_consts_12_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 12,
+ },
+ .ob_item = {
+ Py_None,
+ &_Py_ID(nt),
+ &_Py_STR(dot),
+ &_Py_STR(empty),
+ & site_toplevel_consts_12_consts_4._ascii.ob_base,
+ & site_toplevel_consts_12_consts_5._ascii.ob_base,
+ & const_str_darwin._ascii.ob_base,
+ & site_toplevel_consts_12_consts_7._ascii.ob_base,
+ & site_toplevel_consts_12_consts_8._ascii.ob_base,
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 0],
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 1],
+ & site_toplevel_consts_12_consts_11._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[7];
+ }
+const_str_winver = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 6,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "winver",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[8];
+ }_object;
+ }
+site_toplevel_consts_12_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 8,
+ },
+ .ob_item = {
+ & const_str_sys._ascii.ob_base,
+ & const_str_version_info._ascii.ob_base,
+ & const_str_os._ascii.ob_base,
+ &_Py_ID(name),
+ & const_str_winver._ascii.ob_base,
+ &_Py_ID(replace),
+ & const_str_platform._ascii.ob_base,
+ & const_str__framework._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[10];
+ }
+const_str__get_path = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 9,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_get_path",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[131];
+ }
+site_toplevel_consts_12_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 130,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xdc\x0e\x11\xd7\x0e\x1e\xd1\x0e\x1e\x80\x47\xe4\x07\x09\x87\x77\x81\x77\x90\x24\x82\x7f\xdc\x14\x17\x97\x4a\x91\x4a\xd7\x14\x26\xd1\x14\x26\xa0\x73\xa8\x42\xd3\x14\x2f\x88\x09\xd8\x12\x1a\x90\x1a\x98\x38\xa0\x49\xa0\x3b\xa8\x6f\xd0\x0f\x3e\xd0\x08\x3e\xe4\x07\x0a\x87\x7c\x81\x7c\x90\x78\xd2\x07\x1f\xa4\x43\xa7\x4e\xa2\x4e\xd8\x12\x1a\x90\x1a\xd0\x1b\x34\xd0\x0f\x35\xd0\x08\x35\xe0\x0e\x16\x88\x5a\x90\x7b\xa0\x37\xa8\x31\xa1\x3a\xa0\x2c\xa8\x61\xb0\x07\xb8\x01\xb1\x0a\xa8\x7c\xb8\x3e\xd0\x0b\x4a\xd0\x04\x4a",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[9];
+ }
+const_str_userbase = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 8,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "userbase",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[10];
+ }
+const_str_ver_nodot = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 9,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "ver_nodot",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+site_toplevel_consts_12_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ & const_str_userbase._ascii.ob_base,
+ &_Py_ID(version),
+ & const_str_ver_nodot._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(266)
+site_toplevel_consts_12 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 133,
+ },
+ .co_consts = & site_toplevel_consts_12_consts._object.ob_base.ob_base,
+ .co_names = & site_toplevel_consts_12_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 9 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 6,
+ .co_firstlineno = 298,
+ .co_nlocalsplus = 3,
+ .co_nlocals = 3,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 683,
+ .co_localsplusnames = & site_toplevel_consts_12_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_3_localspluskinds.ob_base.ob_base,
+ .co_filename = & site_toplevel_consts_3_filename._ascii.ob_base,
+ .co_name = & const_str__get_path._ascii.ob_base,
+ .co_qualname = & const_str__get_path._ascii.ob_base,
+ .co_linetable = & site_toplevel_consts_12_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7d\x01\x74\x04\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x01\x6b\x28\x00\x00\x72\x28\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x02\x64\x03\xab\x02\x00\x00\x00\x00\x00\x00\x7d\x02\x7c\x00\x9b\x00\x64\x04\x7c\x02\x9b\x00\x64\x05\x9d\x04\x53\x00\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x06\x6b\x28\x00\x00\x72\x15\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x72\x05\x7c\x00\x9b\x00\x64\x07\x9d\x02\x53\x00\x7c\x00\x9b\x00\x64\x08\x7c\x01\x64\x09\x19\x00\x00\x00\x9b\x00\x64\x02\x7c\x01\x64\x0a\x19\x00\x00\x00\x9b\x00\x64\x0b\x9d\x06\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[204];
+ }
+site_toplevel_consts_13_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 203,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x52\x65\x74\x75\x72\x6e\x73\x20\x74\x68\x65\x20\x60\x75\x73\x65\x72\x20\x62\x61\x73\x65\x60\x20\x64\x69\x72\x65\x63\x74\x6f\x72\x79\x20\x70\x61\x74\x68\x2e\x0a\x0a\x20\x20\x20\x20\x54\x68\x65\x20\x60\x75\x73\x65\x72\x20\x62\x61\x73\x65\x60\x20\x64\x69\x72\x65\x63\x74\x6f\x72\x79\x20\x63\x61\x6e\x20\x62\x65\x20\x75\x73\x65\x64\x20\x74\x6f\x20\x73\x74\x6f\x72\x65\x20\x64\x61\x74\x61\x2e\x20\x49\x66\x20\x74\x68\x65\x20\x67\x6c\x6f\x62\x61\x6c\x0a\x20\x20\x20\x20\x76\x61\x72\x69\x61\x62\x6c\x65\x20\x60\x60\x55\x53\x45\x52\x5f\x42\x41\x53\x45\x60\x60\x20\x69\x73\x20\x6e\x6f\x74\x20\x69\x6e\x69\x74\x69\x61\x6c\x69\x7a\x65\x64\x20\x79\x65\x74\x2c\x20\x74\x68\x69\x73\x20\x66\x75\x6e\x63\x74\x69\x6f\x6e\x20\x77\x69\x6c\x6c\x20\x61\x6c\x73\x6f\x20\x73\x65\x74\x0a\x20\x20\x20\x20\x69\x74\x2e\x0a\x20\x20\x20\x20",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+site_toplevel_consts_13_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & site_toplevel_consts_13_consts_0._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[10];
+ }
+const_str_USER_BASE = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 9,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "USER_BASE",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+site_toplevel_consts_13_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & const_str_USER_BASE._ascii.ob_base,
+ & const_str__getuserbase._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[12];
+ }
+const_str_getuserbase = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 11,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "getuserbase",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[24];
+ }
+site_toplevel_consts_13_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 23,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf4\x10\x00\x08\x11\xd0\x07\x18\xdc\x14\x20\x93\x4e\x88\x09\xdc\x0b\x14\xd0\x04\x14",
+};
+static
+ struct _PyCode_DEF(46)
+site_toplevel_consts_13 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 23,
+ },
+ .co_consts = & site_toplevel_consts_13_consts._object.ob_base.ob_base,
+ .co_names = & site_toplevel_consts_13_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 0,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 2 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 2,
+ .co_firstlineno = 311,
+ .co_nlocalsplus = 0,
+ .co_nlocals = 0,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 684,
+ .co_localsplusnames = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_filename = & site_toplevel_consts_3_filename._ascii.ob_base,
+ .co_name = & const_str_getuserbase._ascii.ob_base,
+ .co_qualname = & const_str_getuserbase._ascii.ob_base,
+ .co_linetable = & site_toplevel_consts_13_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x0a\x74\x03\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x61\x00\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[163];
+ }
+site_toplevel_consts_14_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 162,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x52\x65\x74\x75\x72\x6e\x73\x20\x74\x68\x65\x20\x75\x73\x65\x72\x2d\x73\x70\x65\x63\x69\x66\x69\x63\x20\x73\x69\x74\x65\x2d\x70\x61\x63\x6b\x61\x67\x65\x73\x20\x64\x69\x72\x65\x63\x74\x6f\x72\x79\x20\x70\x61\x74\x68\x2e\x0a\x0a\x20\x20\x20\x20\x49\x66\x20\x74\x68\x65\x20\x67\x6c\x6f\x62\x61\x6c\x20\x76\x61\x72\x69\x61\x62\x6c\x65\x20\x60\x60\x55\x53\x45\x52\x5f\x53\x49\x54\x45\x60\x60\x20\x69\x73\x20\x6e\x6f\x74\x20\x69\x6e\x69\x74\x69\x61\x6c\x69\x7a\x65\x64\x20\x79\x65\x74\x2c\x20\x74\x68\x69\x73\x0a\x20\x20\x20\x20\x66\x75\x6e\x63\x74\x69\x6f\x6e\x20\x77\x69\x6c\x6c\x20\x61\x6c\x73\x6f\x20\x73\x65\x74\x20\x69\x74\x2e\x0a\x20\x20\x20\x20",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+site_toplevel_consts_14_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & site_toplevel_consts_14_consts_0._ascii.ob_base,
+ Py_False,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[10];
+ }
+const_str_USER_SITE = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 9,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "USER_SITE",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[17];
+ }
+const_str_ENABLE_USER_SITE = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 16,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "ENABLE_USER_SITE",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[4];
+ }_object;
+ }
+site_toplevel_consts_14_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_item = {
+ & const_str_getuserbase._ascii.ob_base,
+ & const_str_USER_SITE._ascii.ob_base,
+ & const_str_ENABLE_USER_SITE._ascii.ob_base,
+ & const_str__get_path._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[20];
+ }
+const_str_getusersitepackages = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 19,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "getusersitepackages",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[56];
+ }
+site_toplevel_consts_14_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 55,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf4\x0e\x00\x10\x1b\x8b\x7d\x80\x48\xe4\x07\x10\xd0\x07\x18\xd8\x0b\x13\xd0\x0b\x1b\xd8\x1f\x24\xd0\x0c\x1c\xf4\x08\x00\x0c\x15\xd0\x04\x14\xf4\x05\x00\x19\x22\xa0\x28\xd3\x18\x2b\x88\x49\xe4\x0b\x14\xd0\x04\x14",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+site_toplevel_consts_14_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & const_str_userbase._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(88)
+site_toplevel_consts_14 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 44,
+ },
+ .co_consts = & site_toplevel_consts_14_consts._object.ob_base.ob_base,
+ .co_names = & site_toplevel_consts_14_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 0,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 4 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 3,
+ .co_firstlineno = 324,
+ .co_nlocalsplus = 1,
+ .co_nlocals = 1,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 685,
+ .co_localsplusnames = & site_toplevel_consts_14_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_characters[32]),
+ .co_filename = & site_toplevel_consts_3_filename._ascii.ob_base,
+ .co_name = & const_str_getusersitepackages._ascii.ob_base,
+ .co_qualname = & const_str_getusersitepackages._ascii.ob_base,
+ .co_linetable = & site_toplevel_consts_14_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x7d\x00\x74\x02\x00\x00\x00\x00\x00\x00\x00\x00\x80\x15\x7c\x00\x80\x08\x64\x01\x61\x02\x74\x02\x00\x00\x00\x00\x00\x00\x00\x00\x53\x00\x74\x07\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x61\x01\x74\x02\x00\x00\x00\x00\x00\x00\x00\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[135];
+ }
+site_toplevel_consts_15_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 134,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x41\x64\x64\x20\x61\x20\x70\x65\x72\x20\x75\x73\x65\x72\x20\x73\x69\x74\x65\x2d\x70\x61\x63\x6b\x61\x67\x65\x20\x74\x6f\x20\x73\x79\x73\x2e\x70\x61\x74\x68\x0a\x0a\x20\x20\x20\x20\x45\x61\x63\x68\x20\x75\x73\x65\x72\x20\x68\x61\x73\x20\x69\x74\x73\x20\x6f\x77\x6e\x20\x70\x79\x74\x68\x6f\x6e\x20\x64\x69\x72\x65\x63\x74\x6f\x72\x79\x20\x77\x69\x74\x68\x20\x73\x69\x74\x65\x2d\x70\x61\x63\x6b\x61\x67\x65\x73\x20\x69\x6e\x20\x74\x68\x65\x0a\x20\x20\x20\x20\x68\x6f\x6d\x65\x20\x64\x69\x72\x65\x63\x74\x6f\x72\x79\x2e\x0a\x20\x20\x20\x20",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[30];
+ }
+site_toplevel_consts_15_consts_1 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 29,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Processing user site-packages",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+site_toplevel_consts_15_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & site_toplevel_consts_15_consts_0._ascii.ob_base,
+ & site_toplevel_consts_15_consts_1._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[7];
+ }_object;
+ }
+site_toplevel_consts_15_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 7,
+ },
+ .ob_item = {
+ & const_str__trace._ascii.ob_base,
+ & const_str_getusersitepackages._ascii.ob_base,
+ & const_str_ENABLE_USER_SITE._ascii.ob_base,
+ & const_str_os._ascii.ob_base,
+ &_Py_ID(path),
+ & const_str_isdir._ascii.ob_base,
+ & const_str_addsitedir._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[20];
+ }
+const_str_addusersitepackages = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 19,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "addusersitepackages",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[56];
+ }
+site_toplevel_consts_15_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 55,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf4\x10\x00\x05\x0b\xd0\x0b\x2a\xd4\x04\x2b\xdc\x10\x23\xd3\x10\x25\x80\x49\xe5\x07\x17\x9c\x42\x9f\x47\x99\x47\x9f\x4d\x99\x4d\xa8\x29\xd4\x1c\x34\xdc\x08\x12\x90\x39\x98\x6b\xd4\x08\x2a\xd8\x0b\x16\xd0\x04\x16",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[10];
+ }
+const_str_user_site = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 9,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "user_site",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+site_toplevel_consts_15_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & const_str_known_paths._ascii.ob_base,
+ & const_str_user_site._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(146)
+site_toplevel_consts_15 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 73,
+ },
+ .co_consts = & site_toplevel_consts_15_consts._object.ob_base.ob_base,
+ .co_names = & site_toplevel_consts_15_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 6 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 341,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 2,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 686,
+ .co_localsplusnames = & site_toplevel_consts_15_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_14_consts_2_localspluskinds.ob_base.ob_base,
+ .co_filename = & site_toplevel_consts_3_filename._ascii.ob_base,
+ .co_name = & const_str_addusersitepackages._ascii.ob_base,
+ .co_qualname = & const_str_addusersitepackages._ascii.ob_base,
+ .co_linetable = & site_toplevel_consts_15_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x64\x01\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x74\x03\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x7d\x01\x74\x04\x00\x00\x00\x00\x00\x00\x00\x00\x72\x2b\x74\x06\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\xab\x01\x00\x00\x00\x00\x00\x00\x72\x0c\x74\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x7c\x00\xab\x02\x00\x00\x00\x00\x00\x00\x01\x00\x7c\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[287];
+ }
+site_toplevel_consts_16_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 286,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x52\x65\x74\x75\x72\x6e\x73\x20\x61\x20\x6c\x69\x73\x74\x20\x63\x6f\x6e\x74\x61\x69\x6e\x69\x6e\x67\x20\x61\x6c\x6c\x20\x67\x6c\x6f\x62\x61\x6c\x20\x73\x69\x74\x65\x2d\x70\x61\x63\x6b\x61\x67\x65\x73\x20\x64\x69\x72\x65\x63\x74\x6f\x72\x69\x65\x73\x2e\x0a\x0a\x20\x20\x20\x20\x46\x6f\x72\x20\x65\x61\x63\x68\x20\x64\x69\x72\x65\x63\x74\x6f\x72\x79\x20\x70\x72\x65\x73\x65\x6e\x74\x20\x69\x6e\x20\x60\x60\x70\x72\x65\x66\x69\x78\x65\x73\x60\x60\x20\x28\x6f\x72\x20\x74\x68\x65\x20\x67\x6c\x6f\x62\x61\x6c\x20\x60\x60\x50\x52\x45\x46\x49\x58\x45\x53\x60\x60\x29\x2c\x0a\x20\x20\x20\x20\x74\x68\x69\x73\x20\x66\x75\x6e\x63\x74\x69\x6f\x6e\x20\x77\x69\x6c\x6c\x20\x66\x69\x6e\x64\x20\x69\x74\x73\x20\x60\x73\x69\x74\x65\x2d\x70\x61\x63\x6b\x61\x67\x65\x73\x60\x20\x73\x75\x62\x64\x69\x72\x65\x63\x74\x6f\x72\x79\x20\x64\x65\x70\x65\x6e\x64\x69\x6e\x67\x20\x6f\x6e\x20\x74\x68\x65\x0a\x20\x20\x20\x20\x73\x79\x73\x74\x65\x6d\x20\x65\x6e\x76\x69\x72\x6f\x6e\x6d\x65\x6e\x74\x2c\x20\x61\x6e\x64\x20\x77\x69\x6c\x6c\x20\x72\x65\x74\x75\x72\x6e\x20\x61\x20\x6c\x69\x73\x74\x20\x6f\x66\x20\x66\x75\x6c\x6c\x20\x70\x61\x74\x68\x73\x2e\x0a\x20\x20\x20\x20",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[4];
+ }
+const_str_lib = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 3,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "lib",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[12];
+ }
+site_toplevel_consts_16_consts_4 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 11,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "python%d.%d",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[14];
+ }
+site_toplevel_consts_16_consts_6 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 13,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "site-packages",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[4];
+ }
+const_str_Lib = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 3,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Lib",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[8];
+ }_object;
+ }
+site_toplevel_consts_16_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 8,
+ },
+ .ob_item = {
+ & site_toplevel_consts_16_consts_0._ascii.ob_base,
+ Py_None,
+ (PyObject *)&_Py_SINGLETON(strings).ascii[47],
+ & const_str_lib._ascii.ob_base,
+ & site_toplevel_consts_16_consts_4._ascii.ob_base,
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 2],
+ & site_toplevel_consts_16_consts_6._ascii.ob_base,
+ & const_str_Lib._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[9];
+ }
+const_str_PREFIXES = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 8,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "PREFIXES",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[11];
+ }
+const_str_platlibdir = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 10,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "platlibdir",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[11];
+ }_object;
+ }
+site_toplevel_consts_16_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 11,
+ },
+ .ob_item = {
+ & const_str_set._ascii.ob_base,
+ & const_str_PREFIXES._ascii.ob_base,
+ &_Py_ID(add),
+ & const_str_os._ascii.ob_base,
+ &_Py_ID(sep),
+ & const_str_sys._ascii.ob_base,
+ & const_str_platlibdir._ascii.ob_base,
+ &_Py_ID(append),
+ &_Py_ID(path),
+ &_Py_ID(join),
+ & const_str_version_info._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[16];
+ }
+const_str_getsitepackages = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 15,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "getsitepackages",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[248];
+ }
+site_toplevel_consts_16_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 247,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf0\x0e\x00\x14\x16\x80\x4c\xdc\x0b\x0e\x8b\x35\x80\x44\xe0\x07\x0f\xd0\x07\x17\xdc\x13\x1b\x88\x08\xe0\x12\x1a\xf2\x00\x11\x05\x4e\x01\x88\x06\xd9\x0f\x15\x98\x16\xa0\x34\x99\x1e\xd8\x0c\x14\xd8\x08\x0c\x8f\x08\x89\x08\x90\x16\xd4\x08\x18\xe4\x0b\x0d\x8f\x36\x89\x36\x90\x53\x8a\x3d\xdc\x17\x1a\x97\x7e\x91\x7e\xd0\x16\x26\x88\x47\xdc\x0f\x12\x8f\x7e\x89\x7e\xa0\x15\xd2\x0f\x26\xd8\x10\x17\x97\x0e\x91\x0e\x98\x75\xd4\x10\x25\xe0\x1a\x21\xf2\x00\x04\x0d\x2a\x90\x06\xdc\x17\x19\x97\x77\x91\x77\x97\x7c\x91\x7c\xa0\x46\xa8\x46\xd8\x24\x31\xb4\x43\xd7\x34\x44\xd1\x34\x44\xc0\x52\xc0\x61\xd0\x34\x48\xd1\x24\x48\xd8\x24\x33\xf3\x05\x02\x18\x35\x90\x04\xf0\x06\x00\x11\x1d\xd7\x10\x23\xd1\x10\x23\xa0\x44\xd5\x10\x29\xf1\x09\x04\x0d\x2a\xf0\x0c\x00\x0d\x19\xd7\x0c\x1f\xd1\x0c\x1f\xa0\x06\xd4\x0c\x27\xd8\x0c\x18\xd7\x0c\x1f\xd1\x0c\x1f\xa4\x02\xa7\x07\xa1\x07\xa7\x0c\xa1\x0c\xa8\x56\xb0\x55\xb8\x4f\xd3\x20\x4c\xd5\x0c\x4d\xf0\x23\x11\x05\x4e\x01\xf0\x24\x00\x0c\x18\xd0\x04\x17",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[9];
+ }
+const_str_prefixes = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 8,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "prefixes",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[13];
+ }
+const_str_sitepackages = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 12,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "sitepackages",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[8];
+ }
+const_str_libdirs = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 7,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "libdirs",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[7];
+ }
+const_str_libdir = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 6,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "libdir",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[7];
+ }_object;
+ }
+site_toplevel_consts_16_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 7,
+ },
+ .ob_item = {
+ & const_str_prefixes._ascii.ob_base,
+ & const_str_sitepackages._ascii.ob_base,
+ & const_str_seen._ascii.ob_base,
+ & const_str_prefix._ascii.ob_base,
+ & const_str_libdirs._ascii.ob_base,
+ & const_str_libdir._ascii.ob_base,
+ &_Py_ID(path),
+ },
+ },
+};
+static
+ struct _PyCode_DEF(540)
+site_toplevel_consts_16 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 270,
+ },
+ .co_consts = & site_toplevel_consts_16_consts._object.ob_base.ob_base,
+ .co_names = & site_toplevel_consts_16_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 17 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 10,
+ .co_firstlineno = 356,
+ .co_nlocalsplus = 7,
+ .co_nlocals = 7,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 687,
+ .co_localsplusnames = & site_toplevel_consts_16_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_46_consts_9_localspluskinds.ob_base.ob_base,
+ .co_filename = & site_toplevel_consts_3_filename._ascii.ob_base,
+ .co_name = & const_str_getsitepackages._ascii.ob_base,
+ .co_qualname = & const_str_getsitepackages._ascii.ob_base,
+ .co_linetable = & site_toplevel_consts_16_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x67\x00\x7d\x01\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x7d\x02\x7c\x00\x80\x06\x74\x02\x00\x00\x00\x00\x00\x00\x00\x00\x7d\x00\x7c\x00\x44\x00\x5d\xf2\x00\x00\x7d\x03\x7c\x03\x72\x04\x7c\x03\x7c\x02\x76\x00\x72\x01\x8c\x0a\x7c\x02\x6a\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x03\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x74\x06\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x02\x6b\x28\x00\x00\x72\x84\x74\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x67\x01\x7d\x04\x74\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x03\x6b\x37\x00\x00\x72\x11\x7c\x04\x6a\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x03\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x7c\x04\x44\x00\x5d\x49\x00\x00\x7d\x05\x74\x06\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x03\x7c\x05\x64\x04\x74\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x14\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x01\x64\x05\x1a\x00\x7a\x06\x00\x00\x64\x06\xab\x04\x00\x00\x00\x00\x00\x00\x7d\x06\x7c\x01\x6a\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x06\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x8c\x4b\x04\x00\x8c\xb2\x7c\x01\x6a\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x03\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x7c\x01\x6a\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x74\x06\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x03\x64\x07\x64\x06\xab\x03\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x8c\xf4\x04\x00\x7c\x01\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[30];
+ }
+site_toplevel_consts_17_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 29,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Add site-packages to sys.path",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[32];
+ }
+site_toplevel_consts_17_consts_1 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 31,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Processing global site-packages",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+site_toplevel_consts_17_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & site_toplevel_consts_17_consts_0._ascii.ob_base,
+ & site_toplevel_consts_17_consts_1._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[6];
+ }_object;
+ }
+site_toplevel_consts_17_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 6,
+ },
+ .ob_item = {
+ & const_str__trace._ascii.ob_base,
+ & const_str_getsitepackages._ascii.ob_base,
+ & const_str_os._ascii.ob_base,
+ &_Py_ID(path),
+ & const_str_isdir._ascii.ob_base,
+ & const_str_addsitedir._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[16];
+ }
+const_str_addsitepackages = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 15,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "addsitepackages",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[66];
+ }
+site_toplevel_consts_17_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 65,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xe4\x04\x0a\xd0\x0b\x2c\xd4\x04\x2d\xdc\x13\x22\xa0\x38\xd3\x13\x2c\xf2\x00\x02\x05\x2d\x88\x07\xdc\x0b\x0d\x8f\x37\x89\x37\x8f\x3d\x89\x3d\x98\x17\xd5\x0b\x21\xdc\x0c\x16\x90\x77\xa0\x0b\xd5\x0c\x2c\xf0\x05\x02\x05\x2d\xf0\x08\x00\x0c\x17\xd0\x04\x16",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+site_toplevel_consts_17_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ & const_str_known_paths._ascii.ob_base,
+ & const_str_prefixes._ascii.ob_base,
+ & const_str_sitedir._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(148)
+site_toplevel_consts_17 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 74,
+ },
+ .co_consts = & site_toplevel_consts_17_consts._object.ob_base.ob_base,
+ .co_names = & site_toplevel_consts_17_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 8 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 5,
+ .co_firstlineno = 389,
+ .co_nlocalsplus = 3,
+ .co_nlocals = 3,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 688,
+ .co_localsplusnames = & site_toplevel_consts_17_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_3_localspluskinds.ob_base.ob_base,
+ .co_filename = & site_toplevel_consts_3_filename._ascii.ob_base,
+ .co_name = & const_str_addsitepackages._ascii.ob_base,
+ .co_qualname = & const_str_addsitepackages._ascii.ob_base,
+ .co_linetable = & site_toplevel_consts_17_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x64\x01\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x74\x03\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\xab\x01\x00\x00\x00\x00\x00\x00\x44\x00\x5d\x2e\x00\x00\x7d\x02\x74\x04\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x02\xab\x01\x00\x00\x00\x00\x00\x00\x73\x01\x8c\x23\x74\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x02\x7c\x00\xab\x02\x00\x00\x00\x00\x00\x00\x01\x00\x8c\x30\x04\x00\x7c\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[174];
+ }
+site_toplevel_consts_18_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 173,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x44\x65\x66\x69\x6e\x65\x20\x6e\x65\x77\x20\x62\x75\x69\x6c\x74\x69\x6e\x73\x20\x27\x71\x75\x69\x74\x27\x20\x61\x6e\x64\x20\x27\x65\x78\x69\x74\x27\x2e\x0a\x0a\x20\x20\x20\x20\x54\x68\x65\x73\x65\x20\x61\x72\x65\x20\x6f\x62\x6a\x65\x63\x74\x73\x20\x77\x68\x69\x63\x68\x20\x6d\x61\x6b\x65\x20\x74\x68\x65\x20\x69\x6e\x74\x65\x72\x70\x72\x65\x74\x65\x72\x20\x65\x78\x69\x74\x20\x77\x68\x65\x6e\x20\x63\x61\x6c\x6c\x65\x64\x2e\x0a\x20\x20\x20\x20\x54\x68\x65\x20\x72\x65\x70\x72\x20\x6f\x66\x20\x65\x61\x63\x68\x20\x6f\x62\x6a\x65\x63\x74\x20\x63\x6f\x6e\x74\x61\x69\x6e\x73\x20\x61\x20\x68\x69\x6e\x74\x20\x61\x74\x20\x68\x6f\x77\x20\x69\x74\x20\x77\x6f\x72\x6b\x73\x2e\x0a\x0a\x20\x20\x20\x20",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[19];
+ }
+site_toplevel_consts_18_consts_2 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 18,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Ctrl-Z plus Return",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[18];
+ }
+site_toplevel_consts_18_consts_3 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 17,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Ctrl-D (i.e. EOF)",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[5];
+ }
+const_str_quit = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 4,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "quit",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[5];
+ }
+const_str_exit = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 4,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "exit",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[7];
+ }_object;
+ }
+site_toplevel_consts_18_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 7,
+ },
+ .ob_item = {
+ & site_toplevel_consts_18_consts_0._ascii.ob_base,
+ (PyObject *)&_Py_SINGLETON(strings).ascii[92],
+ & site_toplevel_consts_18_consts_2._ascii.ob_base,
+ & site_toplevel_consts_18_consts_3._ascii.ob_base,
+ & const_str_quit._ascii.ob_base,
+ & const_str_exit._ascii.ob_base,
+ Py_None,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[14];
+ }
+const_str__sitebuiltins = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 13,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_sitebuiltins",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[7];
+ }_object;
+ }
+site_toplevel_consts_18_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 7,
+ },
+ .ob_item = {
+ & const_str_os._ascii.ob_base,
+ &_Py_ID(sep),
+ & const_str__sitebuiltins._ascii.ob_base,
+ & const_str_Quitter._ascii.ob_base,
+ &_Py_ID(builtins),
+ & const_str_quit._ascii.ob_base,
+ & const_str_exit._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[8];
+ }
+const_str_setquit = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 7,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "setquit",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[66];
+ }
+site_toplevel_consts_18_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 65,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf4\x0e\x00\x08\x0a\x87\x76\x81\x76\x90\x14\x82\x7e\xd8\x0e\x22\x89\x03\xe0\x0e\x21\x88\x03\xe4\x14\x21\xd7\x14\x29\xd1\x14\x29\xa8\x26\xb0\x23\xd3\x14\x36\x84\x48\x84\x4d\xdc\x14\x21\xd7\x14\x29\xd1\x14\x29\xa8\x26\xb0\x23\xd3\x14\x36\x84\x48\x85\x4d",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+site_toplevel_consts_18_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & const_str_eof._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(176)
+site_toplevel_consts_18 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 88,
+ },
+ .co_consts = & site_toplevel_consts_18_consts._object.ob_base.ob_base,
+ .co_names = & site_toplevel_consts_18_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 0,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 5 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 398,
+ .co_nlocalsplus = 1,
+ .co_nlocals = 1,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 689,
+ .co_localsplusnames = & site_toplevel_consts_18_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_characters[32]),
+ .co_filename = & site_toplevel_consts_3_filename._ascii.ob_base,
+ .co_name = & const_str_setquit._ascii.ob_base,
+ .co_qualname = & const_str_setquit._ascii.ob_base,
+ .co_linetable = & site_toplevel_consts_18_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x01\x6b\x28\x00\x00\x72\x03\x64\x02\x7d\x00\x6e\x02\x64\x03\x7d\x00\x74\x05\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x04\x7c\x00\xab\x02\x00\x00\x00\x00\x00\x00\x74\x08\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x05\x00\x00\x00\x00\x00\x00\x00\x00\x74\x05\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x05\x7c\x00\xab\x02\x00\x00\x00\x00\x00\x00\x74\x08\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x06\x00\x00\x00\x00\x00\x00\x00\x00\x79\x06",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[42];
+ }
+site_toplevel_consts_19_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 41,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Set 'copyright' and 'credits' in builtins",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[10];
+ }
+const_str_copyright = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 9,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "copyright",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[8];
+ }
+const_str_credits = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 7,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "credits",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[159];
+ }
+site_toplevel_consts_19_consts_3 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 158,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x20\x20\x20\x20\x54\x68\x61\x6e\x6b\x73\x20\x74\x6f\x20\x43\x57\x49\x2c\x20\x43\x4e\x52\x49\x2c\x20\x42\x65\x4f\x70\x65\x6e\x2e\x63\x6f\x6d\x2c\x20\x5a\x6f\x70\x65\x20\x43\x6f\x72\x70\x6f\x72\x61\x74\x69\x6f\x6e\x20\x61\x6e\x64\x20\x61\x20\x63\x61\x73\x74\x20\x6f\x66\x20\x74\x68\x6f\x75\x73\x61\x6e\x64\x73\x0a\x20\x20\x20\x20\x66\x6f\x72\x20\x73\x75\x70\x70\x6f\x72\x74\x69\x6e\x67\x20\x50\x79\x74\x68\x6f\x6e\x20\x64\x65\x76\x65\x6c\x6f\x70\x6d\x65\x6e\x74\x2e\x20\x20\x53\x65\x65\x20\x77\x77\x77\x2e\x70\x79\x74\x68\x6f\x6e\x2e\x6f\x72\x67\x20\x66\x6f\x72\x20\x6d\x6f\x72\x65\x20\x69\x6e\x66\x6f\x72\x6d\x61\x74\x69\x6f\x6e\x2e",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[12];
+ }
+site_toplevel_consts_19_consts_7 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 11,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "LICENSE.txt",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[8];
+ }
+const_str_LICENSE = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 7,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "LICENSE",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[8];
+ }
+const_str_license = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 7,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "license",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[40];
+ }
+site_toplevel_consts_19_consts_10 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 39,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "See https://www.python.org/psf/license/",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[11];
+ }_object;
+ }
+site_toplevel_consts_19_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 11,
+ },
+ .ob_item = {
+ & site_toplevel_consts_19_consts_0._ascii.ob_base,
+ & const_str_copyright._ascii.ob_base,
+ & const_str_credits._ascii.ob_base,
+ & site_toplevel_consts_19_consts_3._ascii.ob_base,
+ & const_str__stdlib_dir._ascii.ob_base,
+ Py_None,
+ &_Py_ID(__file__),
+ & site_toplevel_consts_19_consts_7._ascii.ob_base,
+ & const_str_LICENSE._ascii.ob_base,
+ & const_str_license._ascii.ob_base,
+ & site_toplevel_consts_19_consts_10._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[17];
+ }_object;
+ }
+site_toplevel_consts_19_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 17,
+ },
+ .ob_item = {
+ & const_str__sitebuiltins._ascii.ob_base,
+ & const_str__Printer._ascii.ob_base,
+ & const_str_sys._ascii.ob_base,
+ & const_str_copyright._ascii.ob_base,
+ &_Py_ID(builtins),
+ & const_str_credits._ascii.ob_base,
+ &_Py_ID(getattr),
+ & const_str_hasattr._ascii.ob_base,
+ & const_str_os._ascii.ob_base,
+ &_Py_ID(path),
+ & const_str_dirname._ascii.ob_base,
+ &_Py_ID(__file__),
+ &_Py_ID(extend),
+ &_Py_ID(join),
+ & const_str_pardir._ascii.ob_base,
+ & const_str_curdir._ascii.ob_base,
+ & const_str_license._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[13];
+ }
+const_str_setcopyright = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 12,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "setcopyright",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[209];
+ }
+site_toplevel_consts_19_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 208,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xe4\x19\x26\xd7\x19\x2f\xd1\x19\x2f\xb0\x0b\xbc\x53\xbf\x5d\xb9\x5d\xd3\x19\x4b\x84\x48\xd4\x04\x16\xdc\x17\x24\xd7\x17\x2d\xd1\x17\x2d\xa8\x69\xf0\x00\x02\x3a\x54\x01\xf3\x00\x02\x18\x55\x01\x84\x48\xd4\x04\x14\xf0\x06\x00\x13\x15\x90\x62\x88\x34\x80\x45\xf4\x06\x00\x0c\x13\x94\x33\x98\x0d\xa0\x74\xd3\x0b\x2c\x80\x44\xd9\x0b\x0f\x94\x47\x9c\x42\xa0\x0a\xd4\x14\x2b\xdc\x0f\x11\x8f\x77\x89\x77\x8f\x7f\x89\x7f\x9c\x72\x9f\x7b\x99\x7b\xd3\x0f\x2b\x88\x04\xd9\x07\x0b\xd8\x08\x0d\x8f\x0c\x89\x0c\x90\x6d\xa0\x59\xd0\x15\x2f\xd4\x08\x30\xd8\x08\x0c\x8f\x0b\x89\x0b\x94\x52\x97\x57\x91\x57\x97\x5c\x91\x5c\xa0\x24\xac\x02\xaf\x09\xa9\x09\xd3\x15\x32\xb0\x44\xbc\x22\xbf\x29\xb9\x29\xd0\x14\x44\xd4\x08\x45\xdc\x17\x24\xd7\x17\x2d\xd1\x17\x2d\xd8\x08\x11\xd8\x08\x31\xd8\x08\x0d\x88\x74\xf3\x07\x03\x18\x15\x84\x48\xd5\x04\x14",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[5];
+ }
+const_str_here = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 4,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "here",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+site_toplevel_consts_19_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ & const_str_files._ascii.ob_base,
+ & const_str_dirs._ascii.ob_base,
+ & const_str_here._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(588)
+site_toplevel_consts_19 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 294,
+ },
+ .co_consts = & site_toplevel_consts_19_consts._object.ob_base.ob_base,
+ .co_names = & site_toplevel_consts_19_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 0,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 9 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 6,
+ .co_firstlineno = 414,
+ .co_nlocalsplus = 3,
+ .co_nlocals = 3,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 690,
+ .co_localsplusnames = & site_toplevel_consts_19_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_3_localspluskinds.ob_base.ob_base,
+ .co_filename = & site_toplevel_consts_3_filename._ascii.ob_base,
+ .co_name = & const_str_setcopyright._ascii.ob_base,
+ .co_qualname = & const_str_setcopyright._ascii.ob_base,
+ .co_linetable = & site_toplevel_consts_19_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x01\x74\x04\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x02\x00\x00\x00\x00\x00\x00\x74\x08\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x03\x00\x00\x00\x00\x00\x00\x00\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x02\x64\x03\xab\x02\x00\x00\x00\x00\x00\x00\x74\x08\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x05\x00\x00\x00\x00\x00\x00\x00\x00\x67\x00\x67\x00\x7d\x01\x7d\x00\x74\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x74\x04\x00\x00\x00\x00\x00\x00\x00\x00\x64\x04\x64\x05\xab\x03\x00\x00\x00\x00\x00\x00\x7d\x02\x7c\x02\x73\x3d\x74\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x74\x10\x00\x00\x00\x00\x00\x00\x00\x00\x64\x06\xab\x02\x00\x00\x00\x00\x00\x00\x72\x2d\x74\x10\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x15\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x74\x10\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x16\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x02\x7c\x02\x72\x61\x7c\x00\x6a\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x07\x64\x08\x67\x02\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x7c\x01\x6a\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x74\x10\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x1b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x02\x74\x10\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x1c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x02\x00\x00\x00\x00\x00\x00\x7c\x02\x74\x10\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x1e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x67\x03\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x09\x64\x0a\x7c\x00\x7c\x01\xab\x04\x00\x00\x00\x00\x00\x00\x74\x08\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x10\x00\x00\x00\x00\x00\x00\x00\x00\x79\x05",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[4];
+ }_object;
+ }
+site_toplevel_consts_20_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_item = {
+ & const_str__sitebuiltins._ascii.ob_base,
+ & const_str__Helper._ascii.ob_base,
+ &_Py_ID(builtins),
+ & const_str_help._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[10];
+ }
+const_str_sethelper = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 9,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "sethelper",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[19];
+ }
+site_toplevel_consts_20_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 18,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xdc\x14\x21\xd7\x14\x29\xd1\x14\x29\xd3\x14\x2b\x84\x48\x85\x4d",
+};
+static
+ struct _PyCode_DEF(62)
+site_toplevel_consts_20 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 31,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_1_consts._object.ob_base.ob_base,
+ .co_names = & site_toplevel_consts_20_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 0,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 2 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 2,
+ .co_firstlineno = 435,
+ .co_nlocalsplus = 0,
+ .co_nlocals = 0,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 691,
+ .co_localsplusnames = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_filename = & site_toplevel_consts_3_filename._ascii.ob_base,
+ .co_name = & const_str_sethelper._ascii.ob_base,
+ .co_qualname = & const_str_sethelper._ascii.ob_base,
+ .co_linetable = & site_toplevel_consts_20_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x74\x04\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x03\x00\x00\x00\x00\x00\x00\x00\x00\x79\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[363];
+ }
+site_toplevel_consts_21_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 362,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x45\x6e\x61\x62\x6c\x65\x20\x64\x65\x66\x61\x75\x6c\x74\x20\x72\x65\x61\x64\x6c\x69\x6e\x65\x20\x63\x6f\x6e\x66\x69\x67\x75\x72\x61\x74\x69\x6f\x6e\x20\x6f\x6e\x20\x69\x6e\x74\x65\x72\x61\x63\x74\x69\x76\x65\x20\x70\x72\x6f\x6d\x70\x74\x73\x2c\x20\x62\x79\x0a\x20\x20\x20\x20\x72\x65\x67\x69\x73\x74\x65\x72\x69\x6e\x67\x20\x61\x20\x73\x79\x73\x2e\x5f\x5f\x69\x6e\x74\x65\x72\x61\x63\x74\x69\x76\x65\x68\x6f\x6f\x6b\x5f\x5f\x2e\x0a\x0a\x20\x20\x20\x20\x49\x66\x20\x74\x68\x65\x20\x72\x65\x61\x64\x6c\x69\x6e\x65\x20\x6d\x6f\x64\x75\x6c\x65\x20\x63\x61\x6e\x20\x62\x65\x20\x69\x6d\x70\x6f\x72\x74\x65\x64\x2c\x20\x74\x68\x65\x20\x68\x6f\x6f\x6b\x20\x77\x69\x6c\x6c\x20\x73\x65\x74\x20\x74\x68\x65\x20\x54\x61\x62\x20\x6b\x65\x79\x0a\x20\x20\x20\x20\x61\x73\x20\x63\x6f\x6d\x70\x6c\x65\x74\x69\x6f\x6e\x20\x6b\x65\x79\x20\x61\x6e\x64\x20\x72\x65\x67\x69\x73\x74\x65\x72\x20\x7e\x2f\x2e\x70\x79\x74\x68\x6f\x6e\x5f\x68\x69\x73\x74\x6f\x72\x79\x20\x61\x73\x20\x68\x69\x73\x74\x6f\x72\x79\x20\x66\x69\x6c\x65\x2e\x0a\x20\x20\x20\x20\x54\x68\x69\x73\x20\x63\x61\x6e\x20\x62\x65\x20\x6f\x76\x65\x72\x72\x69\x64\x64\x65\x6e\x20\x69\x6e\x20\x74\x68\x65\x20\x73\x69\x74\x65\x63\x75\x73\x74\x6f\x6d\x69\x7a\x65\x20\x6f\x72\x20\x75\x73\x65\x72\x63\x75\x73\x74\x6f\x6d\x69\x7a\x65\x20\x6d\x6f\x64\x75\x6c\x65\x2c\x0a\x20\x20\x20\x20\x6f\x72\x20\x69\x6e\x20\x61\x20\x50\x59\x54\x48\x4f\x4e\x53\x54\x41\x52\x54\x55\x50\x20\x66\x69\x6c\x65\x2e\x0a\x20\x20\x20\x20",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[8];
+ }
+const_str_libedit = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 7,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "libedit",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[20];
+ }
+site_toplevel_consts_21_consts_1_consts_5 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 19,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "bind ^I rl_complete",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[14];
+ }
+site_toplevel_consts_21_consts_1_consts_6 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 13,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "tab: complete",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[16];
+ }
+site_toplevel_consts_21_consts_1_consts_8 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 15,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = ".python_history",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[19];
+ }
+const_str_write_history_file = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 18,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "write_history_file",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+site_toplevel_consts_21_consts_1_consts_9_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & const_str_write_history_file._ascii.ob_base,
+ & const_str_OSError._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[14];
+ }
+const_str_write_history = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 13,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "write_history",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[68];
+ }
+site_toplevel_consts_21_consts_1_consts_9_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 67,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "enablerlcompleter.<locals>.register_readline.<locals>.write_history",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[43];
+ }
+site_toplevel_consts_21_consts_1_consts_9_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 42,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\xf8\x80\x00\xf0\x02\x05\x11\x19\xd8\x14\x1c\xd7\x14\x2f\xd1\x14\x2f\xb0\x07\xd5\x14\x38\xf8\xdc\x17\x1e\xf2\x00\x03\x11\x19\xf1\x06\x00\x15\x19\xf0\x07\x03\x11\x19\xfa",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[13];
+ }
+site_toplevel_consts_21_consts_1_consts_9_exceptiontable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 12,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x83\x11\x15\x00\x95\x09\x21\x03\xa0\x01\x21\x03",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[8];
+ }
+const_str_history = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 7,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "history",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+site_toplevel_consts_21_consts_1_consts_9_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & const_str_history._ascii.ob_base,
+ &_Py_ID(readline),
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[3];
+ }
+site_toplevel_consts_21_consts_1_consts_9_localspluskinds = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x80",
+};
+static
+ struct _PyCode_DEF(72)
+site_toplevel_consts_21_consts_1_consts_9 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 36,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_1_consts._object.ob_base.ob_base,
+ .co_names = & site_toplevel_consts_21_consts_1_consts_9_names._object.ob_base.ob_base,
+ .co_exceptiontable = & site_toplevel_consts_21_consts_1_consts_9_exceptiontable.ob_base.ob_base,
+ .co_flags = 19,
+ .co_argcount = 0,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 6 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 485,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 0,
+ .co_ncellvars = 0,
+ .co_nfreevars = 2,
+ .co_version = 692,
+ .co_localsplusnames = & site_toplevel_consts_21_consts_1_consts_9_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & site_toplevel_consts_21_consts_1_consts_9_localspluskinds.ob_base.ob_base,
+ .co_filename = & site_toplevel_consts_3_filename._ascii.ob_base,
+ .co_name = & const_str_write_history._ascii.ob_base,
+ .co_qualname = & site_toplevel_consts_21_consts_1_consts_9_qualname._ascii.ob_base,
+ .co_linetable = & site_toplevel_consts_21_consts_1_consts_9_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x95\x02\x97\x00\x09\x00\x89\x01\x6a\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x89\x00\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x79\x00\x23\x00\x74\x02\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x72\x03\x01\x00\x59\x00\x79\x00\x77\x00\x78\x03\x59\x00\x77\x01",
+ ._co_firsttraceable = 1,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[10];
+ }_object;
+ }
+site_toplevel_consts_21_consts_1_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 10,
+ },
+ .ob_item = {
+ Py_None,
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 0],
+ &_Py_ID(__doc__),
+ &_Py_STR(empty),
+ & const_str_libedit._ascii.ob_base,
+ & site_toplevel_consts_21_consts_1_consts_5._ascii.ob_base,
+ & site_toplevel_consts_21_consts_1_consts_6._ascii.ob_base,
+ (PyObject *)&_Py_SINGLETON(strings).ascii[126],
+ & site_toplevel_consts_21_consts_1_consts_8._ascii.ob_base,
+ & site_toplevel_consts_21_consts_1_consts_9.ob_base.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[7];
+ }
+const_str_atexit = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 6,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "atexit",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[12];
+ }
+const_str_rlcompleter = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 11,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "rlcompleter",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[15];
+ }
+const_str_parse_and_bind = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 14,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "parse_and_bind",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[15];
+ }
+const_str_read_init_file = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 14,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "read_init_file",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[27];
+ }
+const_str_get_current_history_length = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 26,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "get_current_history_length",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[18];
+ }
+const_str_read_history_file = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 17,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "read_history_file",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[15];
+ }_object;
+ }
+site_toplevel_consts_21_consts_1_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 15,
+ },
+ .ob_item = {
+ & const_str_atexit._ascii.ob_base,
+ &_Py_ID(readline),
+ & const_str_rlcompleter._ascii.ob_base,
+ & const_str_ImportError._ascii.ob_base,
+ &_Py_ID(getattr),
+ & const_str_parse_and_bind._ascii.ob_base,
+ & const_str_read_init_file._ascii.ob_base,
+ & const_str_OSError._ascii.ob_base,
+ & const_str_get_current_history_length._ascii.ob_base,
+ & const_str_os._ascii.ob_base,
+ &_Py_ID(path),
+ &_Py_ID(join),
+ & const_str_expanduser._ascii.ob_base,
+ & const_str_read_history_file._ascii.ob_base,
+ & const_str_register._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[18];
+ }
+const_str_register_readline = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 17,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "register_readline",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[45];
+ }
+site_toplevel_consts_21_consts_1_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 44,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "enablerlcompleter.<locals>.register_readline",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[255];
+ }
+site_toplevel_consts_21_consts_1_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 254,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\xf9\x80\x00\xdb\x08\x15\xf0\x02\x04\x09\x13\xdb\x0c\x1b\xdb\x0c\x1e\xf4\x0c\x00\x18\x1f\x98\x78\xa8\x19\xb0\x42\xd3\x17\x37\x88\x0c\xd8\x0b\x17\xd0\x0b\x23\xa8\x09\xb0\x5c\xd1\x28\x41\xd8\x0c\x14\xd7\x0c\x23\xd1\x0c\x23\xd0\x24\x39\xd5\x0c\x3a\xe0\x0c\x14\xd7\x0c\x23\xd1\x0c\x23\xa0\x4f\xd4\x0c\x34\xf0\x04\x07\x09\x11\xd8\x0c\x14\xd7\x0c\x23\xd1\x0c\x23\xd4\x0c\x25\xf0\x10\x00\x0c\x14\xd7\x0b\x2e\xd1\x0b\x2e\xd3\x0b\x30\xb0\x41\xd2\x0b\x35\xf4\x0c\x00\x17\x19\x97\x67\x91\x67\x97\x6c\x91\x6c\xa4\x32\xa7\x37\xa1\x37\xd7\x23\x35\xd1\x23\x35\xb0\x63\xd3\x23\x3a\xd8\x23\x34\xf3\x03\x01\x17\x36\x88\x47\xf0\x04\x03\x0d\x15\xd8\x10\x18\xd7\x10\x2a\xd1\x10\x2a\xa8\x37\xd4\x10\x33\xf5\x08\x06\x0d\x19\xf0\x10\x00\x0d\x13\x8f\x4f\x89\x4f\x98\x4d\xd5\x0c\x2a\xf0\x2b\x00\x0c\x36\xf8\xf4\x29\x00\x10\x1b\xf2\x00\x01\x09\x13\xd9\x0c\x12\xf0\x03\x01\x09\x13\xfb\xf4\x1a\x00\x10\x17\xf2\x00\x05\x09\x11\xf1\x0a\x00\x0d\x11\xf0\x0b\x05\x09\x11\xfb\xf4\x22\x00\x14\x1b\xf2\x00\x01\x0d\x15\xd9\x10\x14\xf0\x03\x01\x0d\x15\xfa",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[54];
+ }
+site_toplevel_consts_21_consts_1_exceptiontable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 53,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x88\x08\x43\x12\x00\xc1\x07\x10\x43\x21\x00\xc2\x28\x11\x43\x30\x00\xc3\x12\x09\x43\x1e\x03\xc3\x1d\x01\x43\x1e\x03\xc3\x21\x09\x43\x2d\x03\xc3\x2c\x01\x43\x2d\x03\xc3\x30\x09\x43\x3c\x03\xc3\x3b\x01\x43\x3c\x03",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[13];
+ }
+const_str_readline_doc = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 12,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "readline_doc",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[6];
+ }_object;
+ }
+site_toplevel_consts_21_consts_1_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 6,
+ },
+ .ob_item = {
+ & const_str_atexit._ascii.ob_base,
+ & const_str_rlcompleter._ascii.ob_base,
+ & const_str_readline_doc._ascii.ob_base,
+ & const_str_write_history._ascii.ob_base,
+ & const_str_history._ascii.ob_base,
+ &_Py_ID(readline),
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[7];
+ }
+site_toplevel_consts_21_consts_1_localspluskinds = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 6,
+ },
+ .ob_shash = -1,
+ .ob_sval = " @@",
+};
+static
+ struct _PyCode_DEF(510)
+site_toplevel_consts_21_consts_1 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 255,
+ },
+ .co_consts = & site_toplevel_consts_21_consts_1_consts._object.ob_base.ob_base,
+ .co_names = & site_toplevel_consts_21_consts_1_names._object.ob_base.ob_base,
+ .co_exceptiontable = & site_toplevel_consts_21_consts_1_exceptiontable.ob_base.ob_base,
+ .co_flags = 19,
+ .co_argcount = 0,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 11 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 5,
+ .co_firstlineno = 447,
+ .co_nlocalsplus = 6,
+ .co_nlocals = 4,
+ .co_ncellvars = 2,
+ .co_nfreevars = 0,
+ .co_version = 693,
+ .co_localsplusnames = & site_toplevel_consts_21_consts_1_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & site_toplevel_consts_21_consts_1_localspluskinds.ob_base.ob_base,
+ .co_filename = & site_toplevel_consts_3_filename._ascii.ob_base,
+ .co_name = & const_str_register_readline._ascii.ob_base,
+ .co_qualname = & site_toplevel_consts_21_consts_1_qualname._ascii.ob_base,
+ .co_linetable = & site_toplevel_consts_21_consts_1_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x87\x04\x87\x05\x97\x00\x64\x01\x64\x00\x6c\x00\x7d\x00\x09\x00\x64\x01\x64\x00\x6c\x01\x8a\x05\x64\x01\x64\x00\x6c\x02\x7d\x01\x74\x09\x00\x00\x00\x00\x00\x00\x00\x00\x89\x05\x64\x02\x64\x03\xab\x03\x00\x00\x00\x00\x00\x00\x7d\x02\x7c\x02\x81\x16\x64\x04\x7c\x02\x76\x00\x72\x12\x89\x05\x6a\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x05\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x6e\x11\x89\x05\x6a\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x06\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x09\x00\x89\x05\x6a\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x01\x00\x89\x05\x6a\x11\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x64\x01\x6b\x28\x00\x00\x72\x67\x74\x12\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x14\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x17\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x74\x12\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x14\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x07\xab\x01\x00\x00\x00\x00\x00\x00\x64\x08\xab\x02\x00\x00\x00\x00\x00\x00\x8a\x04\x09\x00\x89\x05\x6a\x1b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x89\x04\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x88\x04\x88\x05\x66\x02\x64\x09\x84\x08\x7d\x03\x7c\x00\x6a\x1d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x03\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x79\x00\x79\x00\x23\x00\x74\x06\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x72\x03\x01\x00\x59\x00\x79\x00\x77\x00\x78\x03\x59\x00\x77\x01\x23\x00\x74\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x72\x03\x01\x00\x59\x00\x8c\x95\x77\x00\x78\x03\x59\x00\x77\x01\x23\x00\x74\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x72\x03\x01\x00\x59\x00\x8c\x42\x77\x00\x78\x03\x59\x00\x77\x01",
+ ._co_firsttraceable = 2,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+site_toplevel_consts_21_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ & site_toplevel_consts_21_consts_0._ascii.ob_base,
+ & site_toplevel_consts_21_consts_1.ob_base.ob_base,
+ Py_None,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[20];
+ }
+const_str___interactivehook__ = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 19,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "__interactivehook__",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+site_toplevel_consts_21_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & const_str_sys._ascii.ob_base,
+ & const_str___interactivehook__._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[18];
+ }
+const_str_enablerlcompleter = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 17,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "enablerlcompleter",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[19];
+ }
+site_toplevel_consts_21_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 18,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf2\x12\x2e\x05\x2b\xf0\x60\x01\x00\x1f\x30\x84\x43\xd5\x04\x1b",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+site_toplevel_consts_21_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & const_str_register_readline._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(32)
+site_toplevel_consts_21 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 16,
+ },
+ .co_consts = & site_toplevel_consts_21_consts._object.ob_base.ob_base,
+ .co_names = & site_toplevel_consts_21_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 0,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 3 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 2,
+ .co_firstlineno = 438,
+ .co_nlocalsplus = 1,
+ .co_nlocals = 1,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 694,
+ .co_localsplusnames = & site_toplevel_consts_21_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_characters[32]),
+ .co_filename = & site_toplevel_consts_3_filename._ascii.ob_base,
+ .co_name = & const_str_enablerlcompleter._ascii.ob_base,
+ .co_qualname = & const_str_enablerlcompleter._ascii.ob_base,
+ .co_linetable = & site_toplevel_consts_21_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x64\x01\x84\x00\x7d\x00\x7c\x00\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x01\x00\x00\x00\x00\x00\x00\x00\x00\x79\x02",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[20];
+ }
+const_str___PYVENV_LAUNCHER__ = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 19,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "__PYVENV_LAUNCHER__",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[11];
+ }
+site_toplevel_consts_22_consts_3 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 10,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "pyvenv.cfg",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+site_toplevel_consts_22_consts_4_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ & const_str_os._ascii.ob_base,
+ &_Py_ID(path),
+ & const_str_isfile._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[24];
+ }
+site_toplevel_consts_22_consts_4_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 23,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "venv.<locals>.<genexpr>",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[43];
+ }
+site_toplevel_consts_22_consts_4_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 42,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\xe8\x00\xf8\x80\x00\xf2\x00\x06\x09\x0a\xd8\x19\x21\xf4\x08\x00\x10\x12\x8f\x77\x89\x77\x8f\x7e\x89\x7e\x98\x68\xd4\x0f\x27\xf4\x09\x00\x0d\x15\xf1\x03\x06\x09\x0a\xf9",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[9];
+ }
+const_str_conffile = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 8,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "conffile",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+site_toplevel_consts_22_consts_4_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & importlib__bootstrap_external_toplevel_consts_6_localsplusnames_0._ascii.ob_base,
+ & const_str_conffile._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(94)
+site_toplevel_consts_22_consts_4 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 47,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_1_consts._object.ob_base.ob_base,
+ .co_names = & site_toplevel_consts_22_consts_4_names._object.ob_base.ob_base,
+ .co_exceptiontable = & _collections_abc_toplevel_consts_68_consts_7_exceptiontable.ob_base.ob_base,
+ .co_flags = 51,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 6 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 510,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 2,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 695,
+ .co_localsplusnames = & site_toplevel_consts_22_consts_4_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_14_consts_2_localspluskinds.ob_base.ob_base,
+ .co_filename = & site_toplevel_consts_3_filename._ascii.ob_base,
+ .co_name = &_Py_STR(anon_genexpr),
+ .co_qualname = & site_toplevel_consts_22_consts_4_qualname._ascii.ob_base,
+ .co_linetable = & site_toplevel_consts_22_consts_4_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x4b\x00\x01\x00\x97\x00\x7c\x00\x5d\x25\x00\x00\x7d\x01\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\xab\x01\x00\x00\x00\x00\x00\x00\x72\x04\x7c\x01\x96\x01\x97\x01\x01\x00\x8c\x27\x04\x00\x79\x00\xad\x03\x77\x01",
+ ._co_firsttraceable = 2,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[29];
+ }
+site_toplevel_consts_22_consts_9 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 28,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "include-system-site-packages",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[5];
+ }
+const_str_home = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 4,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "home",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[13];
+ }_object;
+ }
+site_toplevel_consts_22_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 13,
+ },
+ .ob_item = {
+ Py_None,
+ & const_str_darwin._ascii.ob_base,
+ & const_str___PYVENV_LAUNCHER__._ascii.ob_base,
+ & site_toplevel_consts_22_consts_3._ascii.ob_base,
+ & site_toplevel_consts_22_consts_4.ob_base.ob_base,
+ &_Py_ID(true),
+ &_Py_STR(utf_8),
+ & codecs_toplevel_consts_35_localsplusnames._object.ob_base.ob_base,
+ (PyObject *)&_Py_SINGLETON(strings).ascii[61],
+ & site_toplevel_consts_22_consts_9._ascii.ob_base,
+ & const_str_home._ascii.ob_base,
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 0],
+ Py_False,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[17];
+ }
+const_str__base_executable = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 16,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_base_executable",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[11];
+ }
+const_str_executable = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 10,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "executable",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[6];
+ }
+const_str__home = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 5,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_home",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[12];
+ }
+const_str_exec_prefix = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 11,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "exec_prefix",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[22];
+ }_object;
+ }
+site_toplevel_consts_22_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 22,
+ },
+ .ob_item = {
+ & const_str_os._ascii.ob_base,
+ & const_str_environ._ascii.ob_base,
+ & const_str_sys._ascii.ob_base,
+ & const_str_platform._ascii.ob_base,
+ & const_str__base_executable._ascii.ob_base,
+ & const_str_executable._ascii.ob_base,
+ &_Py_ID(path),
+ & const_str_dirname._ascii.ob_base,
+ & const_str_abspath._ascii.ob_base,
+ & const_str__home._ascii.ob_base,
+ &_Py_ID(next),
+ &_Py_ID(join),
+ &_Py_ID(open),
+ & const_str_partition._ascii.ob_base,
+ & const_str_strip._ascii.ob_base,
+ & const_str_lower._ascii.ob_base,
+ & const_str_prefix._ascii.ob_base,
+ & const_str_exec_prefix._ascii.ob_base,
+ & const_str_addsitepackages._ascii.ob_base,
+ & const_str_PREFIXES._ascii.ob_base,
+ & const_str_insert._ascii.ob_base,
+ & const_str_ENABLE_USER_SITE._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[5];
+ }
+const_str_venv = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 4,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "venv",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[445];
+ }
+site_toplevel_consts_22_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 444,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf4\x06\x00\x0b\x0d\x8f\x2a\x89\x2a\x80\x43\xdc\x07\x0a\x87\x7c\x81\x7c\x90\x78\xd2\x07\x1f\xd0\x24\x39\xb8\x53\xd1\x24\x40\xdc\x2c\x2e\xaf\x4a\xa9\x4a\xd0\x37\x4c\xd1\x2c\x4d\xd0\x08\x4d\x88\x0a\x94\x53\xd5\x15\x29\xe4\x15\x18\x97\x5e\x91\x5e\x88\x0a\xdc\x0e\x10\x8f\x67\x89\x67\x8f\x6f\x89\x6f\x9c\x62\x9f\x67\x99\x67\x9f\x6f\x99\x6f\xa8\x6a\xd3\x1e\x39\xd3\x0e\x3a\x80\x47\xdc\x12\x14\x97\x27\x91\x27\x97\x2f\x91\x2f\xa0\x27\xd3\x12\x2a\x80\x4b\xd8\x10\x14\x84\x43\x84\x49\xd8\x14\x20\x80\x4d\xdc\x15\x19\xf1\x02\x06\x09\x0a\xe4\x10\x12\x97\x07\x91\x07\x97\x0c\x91\x0c\x98\x57\xa0\x6d\xd3\x10\x34\xdc\x10\x12\x97\x07\x91\x07\x97\x0c\x91\x0c\x98\x5b\xa8\x2d\xd3\x10\x38\xf0\x05\x03\x26\x0e\xf4\x03\x06\x09\x0a\xf0\x0e\x00\x09\x0d\xf3\x11\x09\x16\x06\x80\x4e\xf2\x16\x00\x08\x16\xd8\x17\x25\x88\x0c\xd8\x16\x1c\x88\x0b\xf4\x06\x00\x0e\x12\x90\x2c\xa8\x17\xd4\x0d\x31\xf0\x00\x09\x09\x2a\xb0\x51\xd8\x18\x19\xf2\x00\x08\x0d\x2a\x90\x04\xd8\x13\x16\x98\x24\x92\x3b\xd8\x24\x28\xa7\x4e\xa1\x4e\xb0\x33\xd3\x24\x37\x91\x4d\x90\x43\x98\x11\x98\x45\xd8\x1a\x1d\x9f\x29\x99\x29\x9b\x2b\xd7\x1a\x2b\xd1\x1a\x2b\xd3\x1a\x2d\x90\x43\xd8\x1c\x21\x9f\x4b\x99\x4b\x9b\x4d\x90\x45\xd8\x17\x1a\xd0\x1e\x3c\xd2\x17\x3c\xd8\x26\x2b\xa7\x6b\xa1\x6b\xa3\x6d\x99\x0b\xd8\x19\x1c\xa0\x06\x9b\x1d\xd8\x24\x29\x9c\x03\x9d\x09\xf1\x11\x08\x0d\x2a\xf7\x03\x09\x09\x2a\xf0\x16\x00\x28\x33\xd0\x08\x32\x8c\x03\x8c\x0a\x94\x53\x94\x5f\xf4\x06\x00\x09\x18\x98\x0b\xa4\x63\xa7\x6a\xa1\x6a\xa0\x5c\xd4\x08\x32\xf0\x08\x00\x0c\x17\x98\x26\xd2\x0b\x20\xdc\x0c\x14\x8f\x4f\x89\x4f\x98\x41\x9c\x73\x9f\x7a\x99\x7a\xd4\x0c\x2a\xf0\x0a\x00\x0c\x17\xd0\x04\x16\xf4\x07\x00\x19\x1c\x9f\x0a\x99\x0a\x90\x7c\x88\x48\xd8\x1f\x24\xd0\x0c\x1c\xe0\x0b\x16\xd0\x04\x16\xf7\x31\x09\x09\x2a\xf0\x00\x09\x09\x2a\xfa",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[26];
+ }
+site_toplevel_consts_22_exceptiontable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 25,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\xc4\x24\x0a\x48\x15\x03\xc4\x2f\x41\x1e\x48\x15\x03\xc6\x0e\x0d\x48\x15\x03\xc8\x15\x05\x48\x1e\x07",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[8];
+ }
+const_str_exe_dir = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 7,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "exe_dir",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[12];
+ }
+const_str_site_prefix = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 11,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "site_prefix",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[14];
+ }
+const_str_conf_basename = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 13,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "conf_basename",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[15];
+ }
+const_str_candidate_conf = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 14,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "candidate_conf",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[13];
+ }
+const_str_virtual_conf = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 12,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "virtual_conf",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[12];
+ }
+const_str_system_site = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 11,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "system_site",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[14];
+ }_object;
+ }
+site_toplevel_consts_22_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 14,
+ },
+ .ob_item = {
+ & const_str_known_paths._ascii.ob_base,
+ &_Py_ID(env),
+ & const_str_executable._ascii.ob_base,
+ & const_str_exe_dir._ascii.ob_base,
+ & const_str_site_prefix._ascii.ob_base,
+ & const_str_conf_basename._ascii.ob_base,
+ & const_str_candidate_conf._ascii.ob_base,
+ & const_str_virtual_conf._ascii.ob_base,
+ & const_str_system_site._ascii.ob_base,
+ (PyObject *)&_Py_SINGLETON(strings).ascii[102],
+ &_Py_ID(line),
+ &_Py_ID(key),
+ &_Py_ID(_),
+ &_Py_ID(value),
+ },
+ },
+};
+static
+ struct _PyCode_DEF(1090)
+site_toplevel_consts_22 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 545,
+ },
+ .co_consts = & site_toplevel_consts_22_consts._object.ob_base.ob_base,
+ .co_names = & site_toplevel_consts_22_names._object.ob_base.ob_base,
+ .co_exceptiontable = & site_toplevel_consts_22_exceptiontable.ob_base.ob_base,
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 22 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 8,
+ .co_firstlineno = 497,
+ .co_nlocalsplus = 14,
+ .co_nlocals = 14,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 696,
+ .co_localsplusnames = & site_toplevel_consts_22_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_external_toplevel_consts_72_consts_6_localspluskinds.ob_base.ob_base,
+ .co_filename = & site_toplevel_consts_3_filename._ascii.ob_base,
+ .co_name = & const_str_venv._ascii.ob_base,
+ .co_qualname = & const_str_venv._ascii.ob_base,
+ .co_linetable = & site_toplevel_consts_22_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7d\x01\x74\x04\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x01\x6b\x28\x00\x00\x72\x23\x64\x02\x7c\x01\x76\x00\x72\x1f\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x02\x19\x00\x00\x00\x78\x01\x7d\x02\x74\x04\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x04\x00\x00\x00\x00\x00\x00\x00\x00\x6e\x10\x74\x04\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7d\x02\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x11\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x02\xab\x01\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x03\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x03\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x04\x64\x00\x74\x04\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x09\x00\x00\x00\x00\x00\x00\x00\x00\x64\x03\x7d\x05\x74\x15\x00\x00\x00\x00\x00\x00\x00\x00\x64\x04\x84\x00\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x17\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x03\x7c\x05\xab\x02\x00\x00\x00\x00\x00\x00\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x17\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x04\x7c\x05\xab\x02\x00\x00\x00\x00\x00\x00\x66\x02\x44\x00\xab\x00\x00\x00\x00\x00\x00\x00\x64\x00\xab\x02\x00\x00\x00\x00\x00\x00\x7d\x06\x7c\x06\x90\x01\x72\x00\x7c\x06\x7d\x07\x64\x05\x7d\x08\x74\x19\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x07\x64\x06\xac\x07\xab\x02\x00\x00\x00\x00\x00\x00\x35\x00\x7d\x09\x7c\x09\x44\x00\x5d\x71\x00\x00\x7d\x0a\x64\x08\x7c\x0a\x76\x00\x73\x01\x8c\x08\x7c\x0a\x6a\x1b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x08\xab\x01\x00\x00\x00\x00\x00\x00\x5c\x03\x00\x00\x7d\x0b\x7d\x0c\x7d\x0d\x7c\x0b\x6a\x1d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x6a\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x7d\x0b\x7c\x0d\x6a\x1d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x7d\x0d\x7c\x0b\x64\x09\x6b\x28\x00\x00\x72\x11\x7c\x0d\x6a\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x7d\x08\x8c\x61\x7c\x0b\x64\x0a\x6b\x28\x00\x00\x73\x01\x8c\x67\x7c\x0d\x74\x04\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x09\x00\x00\x00\x00\x00\x00\x00\x00\x8c\x73\x04\x00\x09\x00\x64\x00\x64\x00\x64\x00\xab\x02\x00\x00\x00\x00\x00\x00\x01\x00\x7c\x04\x78\x01\x74\x04\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x10\x00\x00\x00\x00\x00\x00\x00\x00\x74\x04\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x11\x00\x00\x00\x00\x00\x00\x00\x00\x74\x25\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x74\x04\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x67\x01\xab\x02\x00\x00\x00\x00\x00\x00\x01\x00\x7c\x08\x64\x05\x6b\x28\x00\x00\x72\x26\x74\x26\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x29\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x0b\x74\x04\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x02\x00\x00\x00\x00\x00\x00\x01\x00\x7c\x00\x53\x00\x74\x04\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x67\x01\x61\x13\x64\x0c\x61\x15\x7c\x00\x53\x00\x23\x00\x31\x00\x73\x01\x77\x02\x01\x00\x59\x00\x01\x00\x01\x00\x8c\x7a\x78\x03\x59\x00\x77\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[45];
+ }
+site_toplevel_consts_23_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 44,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Run custom site specific code, if available.",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[14];
+ }
+const_str_sitecustomize = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 13,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "sitecustomize",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[58];
+ }
+site_toplevel_consts_23_consts_4 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 57,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x45\x72\x72\x6f\x72\x20\x69\x6e\x20\x73\x69\x74\x65\x63\x75\x73\x74\x6f\x6d\x69\x7a\x65\x3b\x20\x73\x65\x74\x20\x50\x59\x54\x48\x4f\x4e\x56\x45\x52\x42\x4f\x53\x45\x20\x66\x6f\x72\x20\x74\x72\x61\x63\x65\x62\x61\x63\x6b\x3a\x0a",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[7];
+ }_object;
+ }
+site_toplevel_consts_23_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 7,
+ },
+ .ob_item = {
+ & site_toplevel_consts_23_consts_0._ascii.ob_base,
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 0],
+ Py_None,
+ & const_str_sitecustomize._ascii.ob_base,
+ & site_toplevel_consts_23_consts_4._ascii.ob_base,
+ & importlib__bootstrap_external_toplevel_consts_42_consts_4._ascii.ob_base,
+ (PyObject *)&_Py_SINGLETON(strings).ascii[10],
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[9];
+ }
+const_str_exc_info = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 8,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "exc_info",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[13];
+ }_object;
+ }
+site_toplevel_consts_23_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 13,
+ },
+ .ob_item = {
+ & const_str_sitecustomize._ascii.ob_base,
+ & const_str_ImportError._ascii.ob_base,
+ &_Py_ID(name),
+ & const_str_Exception._ascii.ob_base,
+ & const_str_sys._ascii.ob_base,
+ &_Py_ID(flags),
+ & const_str_verbose._ascii.ob_base,
+ &_Py_ID(excepthook),
+ & const_str_exc_info._ascii.ob_base,
+ &_Py_ID(stderr),
+ &_Py_ID(write),
+ &_Py_ID(__class__),
+ &_Py_ID(__name__),
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[18];
+ }
+const_str_execsitecustomize = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 17,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "execsitecustomize",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[153];
+ }
+site_toplevel_consts_23_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 152,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf0\x04\x0f\x05\x2f\xf0\x02\x06\x09\x16\xdc\x0c\x20\xf8\xdc\x0f\x1a\xf2\x00\x04\x09\x16\xd8\x0f\x12\x8f\x78\x89\x78\x98\x3f\xd2\x0f\x2a\xd8\x10\x14\xe0\x10\x15\xf4\x05\x00\x11\x15\xfb\xf0\x05\x04\x09\x16\xfb\xf4\x0a\x00\x0c\x15\xf2\x00\x07\x05\x2f\xdc\x0b\x0e\x8f\x39\x89\x39\xd7\x0b\x1c\xd2\x0b\x1c\xdc\x0c\x0f\x8f\x4e\x89\x4e\x9c\x43\x9f\x4c\x99\x4c\x9b\x4e\xd2\x0c\x2b\xe4\x0c\x0f\x8f\x4a\x89\x4a\xd7\x0c\x1c\xd2\x0c\x1c\xf0\x06\x00\x12\x15\x97\x1d\x91\x1d\xd7\x11\x27\xd3\x11\x27\xaa\x13\xf0\x05\x02\x11\x2e\xf7\x03\x03\x0d\x2f\xf1\x00\x03\x0d\x2f\xf4\x05\x00\x0d\x2c\xfb\xf0\x05\x07\x05\x2f\xfa",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[42];
+ }
+site_toplevel_consts_23_exceptiontable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 41,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x83\x04\x08\x00\x88\x09\x2c\x03\x91\x11\x27\x03\xa2\x04\x2f\x00\xa7\x05\x2c\x03\xac\x03\x2f\x00\xaf\x09\x43\x00\x03\xb8\x41\x39\x42\x3b\x03\xc2\x3b\x05\x43\x00\x03",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+site_toplevel_consts_23_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ & const_str_sitecustomize._ascii.ob_base,
+ & const_str_exc._ascii.ob_base,
+ & const_str_err._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(390)
+site_toplevel_consts_23 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 195,
+ },
+ .co_consts = & site_toplevel_consts_23_consts._object.ob_base.ob_base,
+ .co_names = & site_toplevel_consts_23_names._object.ob_base.ob_base,
+ .co_exceptiontable = & site_toplevel_consts_23_exceptiontable.ob_base.ob_base,
+ .co_flags = 3,
+ .co_argcount = 0,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 11 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 8,
+ .co_firstlineno = 552,
+ .co_nlocalsplus = 3,
+ .co_nlocals = 3,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 697,
+ .co_localsplusnames = & site_toplevel_consts_23_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_3_localspluskinds.ob_base.ob_base,
+ .co_filename = & site_toplevel_consts_3_filename._ascii.ob_base,
+ .co_name = & const_str_execsitecustomize._ascii.ob_base,
+ .co_qualname = & const_str_execsitecustomize._ascii.ob_base,
+ .co_linetable = & site_toplevel_consts_23_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x09\x00\x09\x00\x64\x01\x64\x02\x6c\x00\x7d\x00\x79\x02\x23\x00\x74\x02\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x72\x1b\x7d\x01\x7c\x01\x6a\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x03\x6b\x28\x00\x00\x72\x01\x6e\x01\x82\x00\x59\x00\x64\x02\x7d\x01\x7e\x01\x79\x02\x64\x02\x7d\x01\x7e\x01\x77\x01\x77\x00\x78\x03\x59\x00\x77\x01\x23\x00\x74\x06\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x72\x88\x7d\x02\x74\x08\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x72\x25\x74\x09\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x74\x09\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x8e\x00\x01\x00\x6e\x3f\x74\x08\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x15\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x04\x7c\x02\x6a\x16\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9b\x01\x64\x05\x7c\x02\x9b\x01\x64\x06\x9d\x05\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x59\x00\x64\x02\x7d\x02\x7e\x02\x79\x02\x59\x00\x64\x02\x7d\x02\x7e\x02\x79\x02\x64\x02\x7d\x02\x7e\x02\x77\x01\x77\x00\x78\x03\x59\x00\x77\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[45];
+ }
+site_toplevel_consts_24_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 44,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Run custom user specific code, if available.",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[14];
+ }
+const_str_usercustomize = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 13,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "usercustomize",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[58];
+ }
+site_toplevel_consts_24_consts_4 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 57,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x45\x72\x72\x6f\x72\x20\x69\x6e\x20\x75\x73\x65\x72\x63\x75\x73\x74\x6f\x6d\x69\x7a\x65\x3b\x20\x73\x65\x74\x20\x50\x59\x54\x48\x4f\x4e\x56\x45\x52\x42\x4f\x53\x45\x20\x66\x6f\x72\x20\x74\x72\x61\x63\x65\x62\x61\x63\x6b\x3a\x0a",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[7];
+ }_object;
+ }
+site_toplevel_consts_24_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 7,
+ },
+ .ob_item = {
+ & site_toplevel_consts_24_consts_0._ascii.ob_base,
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 0],
+ Py_None,
+ & const_str_usercustomize._ascii.ob_base,
+ & site_toplevel_consts_24_consts_4._ascii.ob_base,
+ & importlib__bootstrap_external_toplevel_consts_42_consts_4._ascii.ob_base,
+ (PyObject *)&_Py_SINGLETON(strings).ascii[10],
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[13];
+ }_object;
+ }
+site_toplevel_consts_24_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 13,
+ },
+ .ob_item = {
+ & const_str_usercustomize._ascii.ob_base,
+ & const_str_ImportError._ascii.ob_base,
+ &_Py_ID(name),
+ & const_str_Exception._ascii.ob_base,
+ & const_str_sys._ascii.ob_base,
+ &_Py_ID(flags),
+ & const_str_verbose._ascii.ob_base,
+ &_Py_ID(excepthook),
+ & const_str_exc_info._ascii.ob_base,
+ &_Py_ID(stderr),
+ &_Py_ID(write),
+ &_Py_ID(__class__),
+ &_Py_ID(__name__),
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[18];
+ }
+const_str_execusercustomize = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 17,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "execusercustomize",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+site_toplevel_consts_24_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ & const_str_usercustomize._ascii.ob_base,
+ & const_str_exc._ascii.ob_base,
+ & const_str_err._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(390)
+site_toplevel_consts_24 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 195,
+ },
+ .co_consts = & site_toplevel_consts_24_consts._object.ob_base.ob_base,
+ .co_names = & site_toplevel_consts_24_names._object.ob_base.ob_base,
+ .co_exceptiontable = & site_toplevel_consts_23_exceptiontable.ob_base.ob_base,
+ .co_flags = 3,
+ .co_argcount = 0,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 11 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 8,
+ .co_firstlineno = 572,
+ .co_nlocalsplus = 3,
+ .co_nlocals = 3,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 698,
+ .co_localsplusnames = & site_toplevel_consts_24_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_3_localspluskinds.ob_base.ob_base,
+ .co_filename = & site_toplevel_consts_3_filename._ascii.ob_base,
+ .co_name = & const_str_execusercustomize._ascii.ob_base,
+ .co_qualname = & const_str_execusercustomize._ascii.ob_base,
+ .co_linetable = & site_toplevel_consts_23_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x09\x00\x09\x00\x64\x01\x64\x02\x6c\x00\x7d\x00\x79\x02\x23\x00\x74\x02\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x72\x1b\x7d\x01\x7c\x01\x6a\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x03\x6b\x28\x00\x00\x72\x01\x6e\x01\x82\x00\x59\x00\x64\x02\x7d\x01\x7e\x01\x79\x02\x64\x02\x7d\x01\x7e\x01\x77\x01\x77\x00\x78\x03\x59\x00\x77\x01\x23\x00\x74\x06\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x72\x88\x7d\x02\x74\x08\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x72\x25\x74\x09\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x74\x09\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x8e\x00\x01\x00\x6e\x3f\x74\x08\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x15\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x04\x7c\x02\x6a\x16\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9b\x01\x64\x05\x7c\x02\x9b\x01\x64\x06\x9d\x05\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x59\x00\x64\x02\x7d\x02\x7e\x02\x79\x02\x59\x00\x64\x02\x7d\x02\x7e\x02\x79\x02\x64\x02\x7d\x02\x7e\x02\x77\x01\x77\x00\x78\x03\x59\x00\x77\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[208];
+ }
+site_toplevel_consts_25_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 207,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x41\x64\x64\x20\x73\x74\x61\x6e\x64\x61\x72\x64\x20\x73\x69\x74\x65\x2d\x73\x70\x65\x63\x69\x66\x69\x63\x20\x64\x69\x72\x65\x63\x74\x6f\x72\x69\x65\x73\x20\x74\x6f\x20\x74\x68\x65\x20\x6d\x6f\x64\x75\x6c\x65\x20\x73\x65\x61\x72\x63\x68\x20\x70\x61\x74\x68\x2e\x0a\x0a\x20\x20\x20\x20\x54\x68\x69\x73\x20\x66\x75\x6e\x63\x74\x69\x6f\x6e\x20\x69\x73\x20\x63\x61\x6c\x6c\x65\x64\x20\x61\x75\x74\x6f\x6d\x61\x74\x69\x63\x61\x6c\x6c\x79\x20\x77\x68\x65\x6e\x20\x74\x68\x69\x73\x20\x6d\x6f\x64\x75\x6c\x65\x20\x69\x73\x20\x69\x6d\x70\x6f\x72\x74\x65\x64\x2c\x0a\x20\x20\x20\x20\x75\x6e\x6c\x65\x73\x73\x20\x74\x68\x65\x20\x70\x79\x74\x68\x6f\x6e\x20\x69\x6e\x74\x65\x72\x70\x72\x65\x74\x65\x72\x20\x77\x61\x73\x20\x73\x74\x61\x72\x74\x65\x64\x20\x77\x69\x74\x68\x20\x74\x68\x65\x20\x2d\x53\x20\x66\x6c\x61\x67\x2e\x0a\x20\x20\x20\x20",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+site_toplevel_consts_25_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & site_toplevel_consts_25_consts_0._ascii.ob_base,
+ Py_None,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[9];
+ }
+const_str_isolated = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 8,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "isolated",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[17];
+ }_object;
+ }
+site_toplevel_consts_25_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 17,
+ },
+ .ob_item = {
+ & const_str_sys._ascii.ob_base,
+ &_Py_ID(path),
+ & const_str_removeduppaths._ascii.ob_base,
+ & const_str_abs_paths._ascii.ob_base,
+ & const_str_venv._ascii.ob_base,
+ & const_str_ENABLE_USER_SITE._ascii.ob_base,
+ & const_str_check_enableusersite._ascii.ob_base,
+ & const_str_addusersitepackages._ascii.ob_base,
+ & const_str_addsitepackages._ascii.ob_base,
+ & const_str_setquit._ascii.ob_base,
+ & const_str_setcopyright._ascii.ob_base,
+ & const_str_sethelper._ascii.ob_base,
+ &_Py_ID(flags),
+ & const_str_isolated._ascii.ob_base,
+ & const_str_enablerlcompleter._ascii.ob_base,
+ & const_str_execsitecustomize._ascii.ob_base,
+ & const_str_execusercustomize._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[5];
+ }
+const_str_main = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 4,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "main",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[144];
+ }
+site_toplevel_consts_25_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 143,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf4\x10\x00\x11\x14\x97\x08\x91\x08\x99\x11\x90\x0b\x80\x49\xdc\x12\x20\xd3\x12\x22\x80\x4b\xd8\x07\x10\x94\x43\x97\x48\x91\x48\xd2\x07\x1c\xf4\x06\x00\x09\x12\x8c\x0b\xe4\x12\x16\x90\x7b\xd3\x12\x23\x80\x4b\xdc\x07\x17\xd0\x07\x1f\xdc\x1b\x2f\xd3\x1b\x31\xd0\x08\x18\xdc\x12\x25\xa0\x6b\xd3\x12\x32\x80\x4b\xdc\x12\x21\xa0\x2b\xd3\x12\x2e\x80\x4b\xdc\x04\x0b\x84\x49\xdc\x04\x10\x84\x4e\xdc\x04\x0d\x84\x4b\xdc\x0b\x0e\x8f\x39\x89\x39\xd7\x0b\x1d\xd2\x0b\x1d\xdc\x08\x19\xd4\x08\x1b\xdc\x04\x15\xd4\x04\x17\xdd\x07\x17\xdc\x08\x19\xd5\x08\x1b\xf0\x03\x00\x08\x18",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[10];
+ }
+const_str_orig_path = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 9,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "orig_path",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+site_toplevel_consts_25_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & const_str_orig_path._ascii.ob_base,
+ & const_str_known_paths._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(404)
+site_toplevel_consts_25 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 202,
+ },
+ .co_consts = & site_toplevel_consts_25_consts._object.ob_base.ob_base,
+ .co_names = & site_toplevel_consts_25_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 0,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 5 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 3,
+ .co_firstlineno = 592,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 2,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 699,
+ .co_localsplusnames = & site_toplevel_consts_25_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_14_consts_2_localspluskinds.ob_base.ob_base,
+ .co_filename = & site_toplevel_consts_3_filename._ascii.ob_base,
+ .co_name = & const_str_main._ascii.ob_base,
+ .co_qualname = & const_str_main._ascii.ob_base,
+ .co_linetable = & site_toplevel_consts_25_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x01\x64\x01\x1a\x00\x7d\x00\x74\x05\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x7d\x01\x7c\x00\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6b\x37\x00\x00\x72\x0a\x74\x07\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x01\x00\x74\x09\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x01\x74\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x80\x0a\x74\x0d\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x61\x05\x74\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x01\x74\x11\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x01\x74\x13\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x01\x00\x74\x15\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x01\x00\x74\x17\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x01\x00\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x1a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x73\x0a\x74\x1d\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x01\x00\x74\x1f\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x01\x00\x74\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x72\x0b\x74\x21\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x01\x00\x79\x01\x79\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[435];
+ }
+site_toplevel_consts_26_consts_1 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 434,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x20\x20\x20\x20\x25\x73\x20\x5b\x2d\x2d\x75\x73\x65\x72\x2d\x62\x61\x73\x65\x5d\x20\x5b\x2d\x2d\x75\x73\x65\x72\x2d\x73\x69\x74\x65\x5d\x0a\x0a\x20\x20\x20\x20\x57\x69\x74\x68\x6f\x75\x74\x20\x61\x72\x67\x75\x6d\x65\x6e\x74\x73\x20\x70\x72\x69\x6e\x74\x20\x73\x6f\x6d\x65\x20\x75\x73\x65\x66\x75\x6c\x20\x69\x6e\x66\x6f\x72\x6d\x61\x74\x69\x6f\x6e\x0a\x20\x20\x20\x20\x57\x69\x74\x68\x20\x61\x72\x67\x75\x6d\x65\x6e\x74\x73\x20\x70\x72\x69\x6e\x74\x20\x74\x68\x65\x20\x76\x61\x6c\x75\x65\x20\x6f\x66\x20\x55\x53\x45\x52\x5f\x42\x41\x53\x45\x20\x61\x6e\x64\x2f\x6f\x72\x20\x55\x53\x45\x52\x5f\x53\x49\x54\x45\x20\x73\x65\x70\x61\x72\x61\x74\x65\x64\x0a\x20\x20\x20\x20\x62\x79\x20\x27\x25\x73\x27\x2e\x0a\x0a\x20\x20\x20\x20\x45\x78\x69\x74\x20\x63\x6f\x64\x65\x73\x20\x77\x69\x74\x68\x20\x2d\x2d\x75\x73\x65\x72\x2d\x62\x61\x73\x65\x20\x6f\x72\x20\x2d\x2d\x75\x73\x65\x72\x2d\x73\x69\x74\x65\x3a\x0a\x20\x20\x20\x20\x20\x20\x30\x20\x2d\x20\x75\x73\x65\x72\x20\x73\x69\x74\x65\x20\x64\x69\x72\x65\x63\x74\x6f\x72\x79\x20\x69\x73\x20\x65\x6e\x61\x62\x6c\x65\x64\x0a\x20\x20\x20\x20\x20\x20\x31\x20\x2d\x20\x75\x73\x65\x72\x20\x73\x69\x74\x65\x20\x64\x69\x72\x65\x63\x74\x6f\x72\x79\x20\x69\x73\x20\x64\x69\x73\x61\x62\x6c\x65\x64\x20\x62\x79\x20\x75\x73\x65\x72\x0a\x20\x20\x20\x20\x20\x20\x32\x20\x2d\x20\x75\x73\x65\x72\x20\x73\x69\x74\x65\x20\x64\x69\x72\x65\x63\x74\x6f\x72\x79\x20\x69\x73\x20\x64\x69\x73\x61\x62\x6c\x65\x64\x20\x62\x79\x20\x73\x75\x70\x65\x72\x20\x75\x73\x65\x72\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x6f\x72\x20\x66\x6f\x72\x20\x73\x65\x63\x75\x72\x69\x74\x79\x20\x72\x65\x61\x73\x6f\x6e\x73\x0a\x20\x20\x20\x20\x20\x3e\x32\x20\x2d\x20\x75\x6e\x6b\x6e\x6f\x77\x6e\x20\x65\x72\x72\x6f\x72\x0a\x20\x20\x20\x20",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[13];
+ }
+site_toplevel_consts_26_consts_3 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 12,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "sys.path = [",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[5];
+ }
+site_toplevel_consts_26_consts_4 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 4,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = " ",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[14];
+ }
+site_toplevel_consts_26_consts_7_consts_2 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 13,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "doesn't exist",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+site_toplevel_consts_26_consts_7_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ Py_None,
+ & const_str_exists._ascii.ob_base,
+ & site_toplevel_consts_26_consts_7_consts_2._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+site_toplevel_consts_26_consts_7_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ & const_str_os._ascii.ob_base,
+ &_Py_ID(path),
+ & const_str_isdir._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[24];
+ }
+site_toplevel_consts_26_consts_7_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 23,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_script.<locals>.exists",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[30];
+ }
+site_toplevel_consts_26_consts_7_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 29,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xd8\x0f\x13\xd0\x0f\x1f\xa4\x42\xa7\x47\xa1\x47\xa7\x4d\xa1\x4d\xb0\x24\xd4\x24\x37\xd8\x17\x1f\xe0\x17\x26",
+};
+static
+ struct _PyCode_DEF(72)
+site_toplevel_consts_26_consts_7 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 36,
+ },
+ .co_consts = & site_toplevel_consts_26_consts_7_consts._object.ob_base.ob_base,
+ .co_names = & site_toplevel_consts_26_consts_7_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 19,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 4 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 3,
+ .co_firstlineno = 649,
+ .co_nlocalsplus = 1,
+ .co_nlocals = 1,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 700,
+ .co_localsplusnames = & importlib__bootstrap_external_toplevel_consts_18_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_characters[32]),
+ .co_filename = & site_toplevel_consts_3_filename._ascii.ob_base,
+ .co_name = & const_str_exists._ascii.ob_base,
+ .co_qualname = & site_toplevel_consts_26_consts_7_qualname._ascii.ob_base,
+ .co_linetable = & site_toplevel_consts_26_consts_7_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x00\x81\x20\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x72\x01\x79\x01\x79\x02",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[12];
+ }
+site_toplevel_consts_26_consts_8 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 11,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "USER_BASE: ",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[12];
+ }
+site_toplevel_consts_26_consts_11 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 11,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "USER_SITE: ",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[19];
+ }
+site_toplevel_consts_26_consts_12 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 18,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "ENABLE_USER_SITE: ",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[12];
+ }
+site_toplevel_consts_26_consts_14 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 11,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "--user-base",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[12];
+ }
+site_toplevel_consts_26_consts_15 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 11,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "--user-site",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[20];
+ }_object;
+ }
+site_toplevel_consts_26_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 20,
+ },
+ .ob_item = {
+ Py_None,
+ & site_toplevel_consts_26_consts_1._ascii.ob_base,
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 1],
+ & site_toplevel_consts_26_consts_3._ascii.ob_base,
+ & site_toplevel_consts_26_consts_4._ascii.ob_base,
+ (PyObject *)&_Py_SINGLETON(strings).ascii[44],
+ (PyObject *)&_Py_SINGLETON(strings).ascii[93],
+ & site_toplevel_consts_26_consts_7.ob_base.ob_base,
+ & site_toplevel_consts_26_consts_8._ascii.ob_base,
+ & importlib__bootstrap_toplevel_consts_29_consts_8._ascii.ob_base,
+ (PyObject *)&_Py_SINGLETON(strings).ascii[41],
+ & site_toplevel_consts_26_consts_11._ascii.ob_base,
+ & site_toplevel_consts_26_consts_12._ascii.ob_base,
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 0],
+ & site_toplevel_consts_26_consts_14._ascii.ob_base,
+ & site_toplevel_consts_26_consts_15._ascii.ob_base,
+ Py_False,
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 2],
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 3],
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 10],
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[9];
+ }
+const_str_textwrap = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 8,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "textwrap",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[7];
+ }
+const_str_dedent = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 6,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "dedent",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[16];
+ }_object;
+ }
+site_toplevel_consts_26_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 16,
+ },
+ .ob_item = {
+ & const_str_sys._ascii.ob_base,
+ &_Py_ID(argv),
+ & const_str_getuserbase._ascii.ob_base,
+ & const_str_getusersitepackages._ascii.ob_base,
+ & const_str_print._ascii.ob_base,
+ &_Py_ID(path),
+ & const_str_ENABLE_USER_SITE._ascii.ob_base,
+ & const_str_exit._ascii.ob_base,
+ &_Py_ID(append),
+ & const_str_USER_BASE._ascii.ob_base,
+ & const_str_USER_SITE._ascii.ob_base,
+ & const_str_os._ascii.ob_base,
+ & const_str_pathsep._ascii.ob_base,
+ &_Py_ID(join),
+ & const_str_textwrap._ascii.ob_base,
+ & const_str_dedent._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[8];
+ }
+const_str__script = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 7,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_script",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[367];
+ }
+site_toplevel_consts_26_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 366,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf0\x02\x0d\x0c\x08\x80\x44\xf4\x1c\x00\x0c\x0f\x8f\x38\x89\x38\x90\x41\x90\x42\x88\x3c\x80\x44\xd9\x0b\x0f\xdc\x14\x1f\x93\x4d\x88\x09\xdc\x14\x27\xd3\x14\x29\x88\x09\xdc\x08\x0d\x88\x6e\xd4\x08\x1d\xdc\x13\x16\x97\x38\x91\x38\xf2\x00\x01\x09\x26\x88\x43\xdd\x0c\x11\x9a\x73\xd0\x12\x24\xd5\x0c\x25\xf0\x03\x01\x09\x26\xe4\x08\x0d\x88\x63\x8c\x0a\xf2\x02\x04\x09\x27\xf4\x0a\x00\x09\x0e\x90\x0b\x98\x49\x98\x3d\xa8\x02\xa9\x36\xb0\x29\xd3\x2b\x3c\xd0\x2a\x3d\xb8\x51\xd0\x0e\x3f\xd4\x08\x40\xdc\x08\x0d\x90\x0b\x98\x49\x98\x3d\xa8\x02\xa9\x36\xb0\x29\xd3\x2b\x3c\xd0\x2a\x3d\xb8\x51\xd0\x0e\x3f\xd4\x08\x40\xdc\x08\x0d\xd0\x10\x22\xd4\x23\x33\xd0\x22\x36\xd0\x0e\x37\xd4\x08\x38\xdc\x08\x0b\x8f\x08\x89\x08\x90\x11\x8c\x0b\xe0\x0d\x0f\x80\x46\xd8\x07\x14\x98\x04\xd1\x07\x1c\xd8\x08\x0e\x8f\x0d\x89\x0d\x94\x69\xd4\x08\x20\xd8\x07\x14\x98\x04\xd1\x07\x1c\xd8\x08\x0e\x8f\x0d\x89\x0d\x94\x69\xd4\x08\x20\xe1\x07\x0d\xdc\x08\x0d\x8c\x62\x8f\x6a\x89\x6a\x8f\x6f\x89\x6f\x98\x66\xd3\x0e\x25\xd4\x08\x26\xdd\x0b\x1b\xdc\x0c\x0f\x8f\x48\x89\x48\x90\x51\x8d\x4b\xdc\x0d\x1d\xa0\x15\xd1\x0d\x26\xdc\x0c\x0f\x8f\x48\x89\x48\x90\x51\x8d\x4b\xdc\x0d\x1d\xd0\x0d\x25\xdc\x0c\x0f\x8f\x48\x89\x48\x90\x51\x8d\x4b\xe4\x0c\x0f\x8f\x48\x89\x48\x90\x51\x8d\x4b\xe3\x08\x17\xdc\x08\x0d\x88\x68\x8f\x6f\x89\x6f\x98\x64\xa4\x63\xa7\x68\xa1\x68\xa8\x71\xa1\x6b\xb4\x32\xb7\x3a\xb1\x3a\xd0\x25\x3e\xd1\x1e\x3e\xd3\x0e\x3f\xd4\x08\x40\xdc\x08\x0b\x8f\x08\x89\x08\x90\x12\x8d\x0c",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[10];
+ }
+const_str_user_base = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 9,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "user_base",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[8];
+ }_object;
+ }
+site_toplevel_consts_26_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 8,
+ },
+ .ob_item = {
+ & const_str_help._ascii.ob_base,
+ &_Py_ID(args),
+ & const_str_user_base._ascii.ob_base,
+ & const_str_user_site._ascii.ob_base,
+ & const_str_dir._ascii.ob_base,
+ & const_str_exists._ascii.ob_base,
+ &_Py_ID(buffer),
+ & const_str_textwrap._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(964)
+site_toplevel_consts_26 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 482,
+ },
+ .co_consts = & site_toplevel_consts_26_consts._object.ob_base.ob_base,
+ .co_names = & site_toplevel_consts_26_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 0,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 16 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 8,
+ .co_firstlineno = 626,
+ .co_nlocalsplus = 8,
+ .co_nlocals = 8,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 701,
+ .co_localsplusnames = & site_toplevel_consts_26_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_13_localspluskinds.ob_base.ob_base,
+ .co_filename = & site_toplevel_consts_3_filename._ascii.ob_base,
+ .co_name = & const_str__script._ascii.ob_base,
+ .co_qualname = & const_str__script._ascii.ob_base,
+ .co_linetable = & site_toplevel_consts_26_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x64\x01\x7d\x00\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x02\x64\x00\x1a\x00\x7d\x01\x7c\x01\x73\xa8\x74\x05\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x7d\x02\x74\x07\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x7d\x03\x74\x09\x00\x00\x00\x00\x00\x00\x00\x00\x64\x03\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x00\x5d\x11\x00\x00\x7d\x04\x74\x09\x00\x00\x00\x00\x00\x00\x00\x00\x64\x04\x7c\x04\x9b\x02\x64\x05\x9d\x03\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x8c\x13\x04\x00\x74\x09\x00\x00\x00\x00\x00\x00\x00\x00\x64\x06\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x64\x07\x84\x00\x7d\x05\x74\x09\x00\x00\x00\x00\x00\x00\x00\x00\x64\x08\x7c\x02\x9b\x02\x64\x09\x02\x00\x7c\x05\x7c\x02\xab\x01\x00\x00\x00\x00\x00\x00\x9b\x00\x64\x0a\x9d\x05\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x74\x09\x00\x00\x00\x00\x00\x00\x00\x00\x64\x0b\x7c\x03\x9b\x02\x64\x09\x02\x00\x7c\x05\x7c\x03\xab\x01\x00\x00\x00\x00\x00\x00\x9b\x00\x64\x0a\x9d\x05\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x74\x09\x00\x00\x00\x00\x00\x00\x00\x00\x64\x0c\x74\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x9b\x02\x9d\x02\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x0d\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x67\x00\x7d\x06\x64\x0e\x7c\x01\x76\x00\x72\x15\x7c\x06\x6a\x11\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x74\x12\x00\x00\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x64\x0f\x7c\x01\x76\x00\x72\x15\x7c\x06\x6a\x11\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x74\x14\x00\x00\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x7c\x06\x72\x94\x74\x09\x00\x00\x00\x00\x00\x00\x00\x00\x74\x16\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x1b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x06\xab\x01\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x74\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x72\x16\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x0d\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x79\x00\x74\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x64\x10\x75\x00\x72\x16\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x02\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x79\x00\x74\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x80\x16\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x11\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x79\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x12\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x79\x00\x64\x0d\x64\x00\x6c\x0e\x7d\x07\x74\x09\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x07\x6a\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x0d\x19\x00\x00\x00\x74\x16\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x66\x02\x7a\x06\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x13\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x79\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[29];
+ }_object;
+ }
+site_toplevel_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 29,
+ },
+ .ob_item = {
+ & site_toplevel_consts_0._ascii.ob_base,
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 0],
+ Py_None,
+ & site_toplevel_consts_3.ob_base.ob_base,
+ & site_toplevel_consts_4.ob_base.ob_base,
+ & site_toplevel_consts_5.ob_base.ob_base,
+ & site_toplevel_consts_6.ob_base.ob_base,
+ & site_toplevel_consts_7.ob_base.ob_base,
+ & site_toplevel_consts_8.ob_base.ob_base,
+ & site_toplevel_consts_9.ob_base.ob_base,
+ & site_toplevel_consts_10.ob_base.ob_base,
+ & site_toplevel_consts_11.ob_base.ob_base,
+ & site_toplevel_consts_12.ob_base.ob_base,
+ & site_toplevel_consts_13.ob_base.ob_base,
+ & site_toplevel_consts_14.ob_base.ob_base,
+ & site_toplevel_consts_15.ob_base.ob_base,
+ & site_toplevel_consts_16.ob_base.ob_base,
+ & site_toplevel_consts_17.ob_base.ob_base,
+ & site_toplevel_consts_18.ob_base.ob_base,
+ & site_toplevel_consts_19.ob_base.ob_base,
+ & site_toplevel_consts_20.ob_base.ob_base,
+ & site_toplevel_consts_21.ob_base.ob_base,
+ & site_toplevel_consts_22.ob_base.ob_base,
+ & site_toplevel_consts_23.ob_base.ob_base,
+ & site_toplevel_consts_24.ob_base.ob_base,
+ & site_toplevel_consts_25.ob_base.ob_base,
+ & site_toplevel_consts_26.ob_base.ob_base,
+ &_Py_ID(__main__),
+ & importlib__bootstrap_toplevel_consts_1_consts._object.ob_base.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[8];
+ }
+const_str_no_site = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 7,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "no_site",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[40];
+ }_object;
+ }
+site_toplevel_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 40,
+ },
+ .ob_item = {
+ &_Py_ID(__doc__),
+ & const_str_sys._ascii.ob_base,
+ & const_str_os._ascii.ob_base,
+ &_Py_ID(builtins),
+ & const_str__sitebuiltins._ascii.ob_base,
+ & const_str_io._ascii.ob_base,
+ & const_str_stat._ascii.ob_base,
+ & const_str_prefix._ascii.ob_base,
+ & const_str_exec_prefix._ascii.ob_base,
+ & const_str_PREFIXES._ascii.ob_base,
+ & const_str_ENABLE_USER_SITE._ascii.ob_base,
+ & const_str_USER_SITE._ascii.ob_base,
+ & const_str_USER_BASE._ascii.ob_base,
+ & const_str__trace._ascii.ob_base,
+ & const_str_makepath._ascii.ob_base,
+ & const_str_abs_paths._ascii.ob_base,
+ & const_str_removeduppaths._ascii.ob_base,
+ & const_str__init_pathinfo._ascii.ob_base,
+ & const_str_addpackage._ascii.ob_base,
+ & const_str_addsitedir._ascii.ob_base,
+ & const_str_check_enableusersite._ascii.ob_base,
+ & const_str__getuserbase._ascii.ob_base,
+ & const_str__get_path._ascii.ob_base,
+ & const_str_getuserbase._ascii.ob_base,
+ & const_str_getusersitepackages._ascii.ob_base,
+ & const_str_addusersitepackages._ascii.ob_base,
+ & const_str_getsitepackages._ascii.ob_base,
+ & const_str_addsitepackages._ascii.ob_base,
+ & const_str_setquit._ascii.ob_base,
+ & const_str_setcopyright._ascii.ob_base,
+ & const_str_sethelper._ascii.ob_base,
+ & const_str_enablerlcompleter._ascii.ob_base,
+ & const_str_venv._ascii.ob_base,
+ & const_str_execsitecustomize._ascii.ob_base,
+ & const_str_execusercustomize._ascii.ob_base,
+ & const_str_main._ascii.ob_base,
+ &_Py_ID(flags),
+ & const_str_no_site._ascii.ob_base,
+ & const_str__script._ascii.ob_base,
+ &_Py_ID(__name__),
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[240];
+ }
+site_toplevel_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 239,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\xf0\x03\x01\x01\x01\xf1\x02\x45\x01\x01\x04\xf3\x4e\x02\x00\x01\x0b\xdb\x00\x09\xdb\x00\x0f\xdb\x00\x14\xdb\x00\x09\xdb\x00\x0b\xf0\x06\x00\x0d\x10\x8f\x4a\x89\x4a\x98\x03\x9f\x0f\x99\x0f\xd0\x0b\x28\x80\x08\xf0\x06\x00\x14\x18\xd0\x00\x10\xf0\x0a\x00\x0d\x11\x80\x09\xd8\x0c\x10\x80\x09\xf2\x06\x02\x01\x28\xf2\x0a\x06\x01\x26\xf2\x12\x14\x01\x11\xf2\x2e\x10\x01\x17\xf2\x26\x0a\x01\x0d\xf2\x1a\x34\x01\x17\xf3\x6e\x01\x17\x01\x17\xf2\x34\x16\x01\x10\xf2\x40\x01\x14\x01\x23\xf2\x30\x0a\x01\x4b\x01\xf2\x1a\x0a\x01\x15\xf2\x1a\x0f\x01\x15\xf2\x22\x0d\x01\x17\xf3\x1e\x1f\x01\x18\xf3\x42\x01\x07\x01\x17\xf2\x12\x0d\x01\x37\xf2\x20\x12\x01\x15\xf2\x2a\x01\x01\x2c\xf2\x06\x39\x01\x30\xf2\x76\x01\x34\x01\x17\xf2\x6e\x01\x11\x01\x2f\xf2\x28\x11\x01\x2f\xf2\x28\x1b\x01\x1c\xf0\x3e\x00\x08\x0b\x87\x79\x81\x79\xd7\x07\x18\xd2\x07\x18\xd9\x04\x08\x84\x46\xf2\x04\x34\x01\x15\xf0\x6c\x01\x00\x04\x0c\x88\x7a\xd2\x03\x19\xd9\x04\x0b\x85\x49\xf0\x03\x00\x04\x1a",
+};
+static
+ struct _PyCode_DEF(350)
+site_toplevel = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 175,
+ },
+ .co_consts = & site_toplevel_consts._object.ob_base.ob_base,
+ .co_names = & site_toplevel_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 0,
+ .co_argcount = 0,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 2 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 2,
+ .co_firstlineno = 1,
+ .co_nlocalsplus = 0,
+ .co_nlocals = 0,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 702,
+ .co_localsplusnames = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_filename = & site_toplevel_consts_3_filename._ascii.ob_base,
+ .co_name = &_Py_STR(anon_module),
+ .co_qualname = &_Py_STR(anon_module),
+ .co_linetable = & site_toplevel_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x64\x00\x5a\x00\x64\x01\x64\x02\x6c\x01\x5a\x01\x64\x01\x64\x02\x6c\x02\x5a\x02\x64\x01\x64\x02\x6c\x03\x5a\x03\x64\x01\x64\x02\x6c\x04\x5a\x04\x64\x01\x64\x02\x6c\x05\x5a\x05\x64\x01\x64\x02\x6c\x06\x5a\x06\x65\x01\x6a\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\x01\x6a\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x67\x02\x61\x09\x64\x02\x61\x0a\x64\x02\x61\x0b\x64\x02\x61\x0c\x64\x03\x84\x00\x5a\x0d\x64\x04\x84\x00\x5a\x0e\x64\x05\x84\x00\x5a\x0f\x64\x06\x84\x00\x5a\x10\x64\x07\x84\x00\x5a\x11\x64\x08\x84\x00\x5a\x12\x64\x1c\x64\x09\x84\x01\x5a\x13\x64\x0a\x84\x00\x5a\x14\x64\x0b\x84\x00\x5a\x15\x64\x0c\x84\x00\x5a\x16\x64\x0d\x84\x00\x5a\x17\x64\x0e\x84\x00\x5a\x18\x64\x0f\x84\x00\x5a\x19\x64\x1c\x64\x10\x84\x01\x5a\x1a\x64\x1c\x64\x11\x84\x01\x5a\x1b\x64\x12\x84\x00\x5a\x1c\x64\x13\x84\x00\x5a\x1d\x64\x14\x84\x00\x5a\x1e\x64\x15\x84\x00\x5a\x1f\x64\x16\x84\x00\x5a\x20\x64\x17\x84\x00\x5a\x21\x64\x18\x84\x00\x5a\x22\x64\x19\x84\x00\x5a\x23\x65\x01\x6a\x48\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x4a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x73\x07\x02\x00\x65\x23\xab\x00\x00\x00\x00\x00\x00\x00\x01\x00\x64\x1a\x84\x00\x5a\x26\x65\x27\x64\x1b\x6b\x28\x00\x00\x72\x08\x02\x00\x65\x26\xab\x00\x00\x00\x00\x00\x00\x00\x01\x00\x79\x02\x79\x02",
+ ._co_firsttraceable = 0,
+};
+
+PyObject *
+_Py_get_site_toplevel(void)
+{
+ return Py_NewRef((PyObject *) &site_toplevel);
+}
+
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[112];
+ }
+stat_toplevel_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 111,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x43\x6f\x6e\x73\x74\x61\x6e\x74\x73\x2f\x66\x75\x6e\x63\x74\x69\x6f\x6e\x73\x20\x66\x6f\x72\x20\x69\x6e\x74\x65\x72\x70\x72\x65\x74\x69\x6e\x67\x20\x72\x65\x73\x75\x6c\x74\x73\x20\x6f\x66\x20\x6f\x73\x2e\x73\x74\x61\x74\x28\x29\x20\x61\x6e\x64\x20\x6f\x73\x2e\x6c\x73\x74\x61\x74\x28\x29\x2e\x0a\x0a\x53\x75\x67\x67\x65\x73\x74\x65\x64\x20\x75\x73\x61\x67\x65\x3a\x20\x66\x72\x6f\x6d\x20\x73\x74\x61\x74\x20\x69\x6d\x70\x6f\x72\x74\x20\x2a\x0a",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[78];
+ }
+stat_toplevel_consts_11_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 77,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x52\x65\x74\x75\x72\x6e\x20\x74\x68\x65\x20\x70\x6f\x72\x74\x69\x6f\x6e\x20\x6f\x66\x20\x74\x68\x65\x20\x66\x69\x6c\x65\x27\x73\x20\x6d\x6f\x64\x65\x20\x74\x68\x61\x74\x20\x63\x61\x6e\x20\x62\x65\x20\x73\x65\x74\x20\x62\x79\x0a\x20\x20\x20\x20\x6f\x73\x2e\x63\x68\x6d\x6f\x64\x28\x29\x2e\x0a\x20\x20\x20\x20",
+};
+static
+ struct {
+ PyObject ob_base;
+ uintptr_t lv_tag;
+ digit ob_digit[1];
+ }
+const_int_4095 = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyLong_Type,
+ },
+ .lv_tag = TAG_FROM_SIGN_AND_SIZE(1, 1),
+ .ob_digit = { 4095 },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+stat_toplevel_consts_11_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & stat_toplevel_consts_11_consts_0._ascii.ob_base,
+ & const_int_4095.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[14];
+ }
+stat_toplevel_consts_11_filename = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 13,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "<frozen stat>",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[8];
+ }
+const_str_S_IMODE = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 7,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "S_IMODE",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[15];
+ }
+stat_toplevel_consts_11_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 14,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf0\x08\x00\x0c\x10\x90\x26\x89\x3d\xd0\x04\x18",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+stat_toplevel_consts_11_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ &_Py_ID(mode),
+ },
+ },
+};
+static
+ struct _PyCode_DEF(12)
+stat_toplevel_consts_11 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 6,
+ },
+ .co_consts = & stat_toplevel_consts_11_consts._object.ob_base.ob_base,
+ .co_names = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 3 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 2,
+ .co_firstlineno = 21,
+ .co_nlocalsplus = 1,
+ .co_nlocals = 1,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 703,
+ .co_localsplusnames = & stat_toplevel_consts_11_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_characters[32]),
+ .co_filename = & stat_toplevel_consts_11_filename._ascii.ob_base,
+ .co_name = & const_str_S_IMODE._ascii.ob_base,
+ .co_qualname = & const_str_S_IMODE._ascii.ob_base,
+ .co_linetable = & stat_toplevel_consts_11_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x00\x64\x01\x7a\x01\x00\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[77];
+ }
+stat_toplevel_consts_12_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 76,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x52\x65\x74\x75\x72\x6e\x20\x74\x68\x65\x20\x70\x6f\x72\x74\x69\x6f\x6e\x20\x6f\x66\x20\x74\x68\x65\x20\x66\x69\x6c\x65\x27\x73\x20\x6d\x6f\x64\x65\x20\x74\x68\x61\x74\x20\x64\x65\x73\x63\x72\x69\x62\x65\x73\x20\x74\x68\x65\x0a\x20\x20\x20\x20\x66\x69\x6c\x65\x20\x74\x79\x70\x65\x2e\x0a\x20\x20\x20\x20",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+stat_toplevel_consts_12_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & stat_toplevel_consts_12_consts_0._ascii.ob_base,
+ & const_int_61440.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[7];
+ }
+const_str_S_IFMT = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 6,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "S_IFMT",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[15];
+ }
+stat_toplevel_consts_12_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 14,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf0\x08\x00\x0c\x10\x90\x28\x89\x3f\xd0\x04\x1a",
+};
+static
+ struct _PyCode_DEF(12)
+stat_toplevel_consts_12 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 6,
+ },
+ .co_consts = & stat_toplevel_consts_12_consts._object.ob_base.ob_base,
+ .co_names = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 3 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 2,
+ .co_firstlineno = 27,
+ .co_nlocalsplus = 1,
+ .co_nlocals = 1,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 704,
+ .co_localsplusnames = & stat_toplevel_consts_11_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_characters[32]),
+ .co_filename = & stat_toplevel_consts_11_filename._ascii.ob_base,
+ .co_name = & const_str_S_IFMT._ascii.ob_base,
+ .co_qualname = & const_str_S_IFMT._ascii.ob_base,
+ .co_linetable = & stat_toplevel_consts_12_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x00\x64\x01\x7a\x01\x00\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyObject ob_base;
+ uintptr_t lv_tag;
+ digit ob_digit[1];
+ }
+const_int_8192 = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyLong_Type,
+ },
+ .lv_tag = TAG_FROM_SIGN_AND_SIZE(1, 1),
+ .ob_digit = { 8192 },
+};
+static
+ struct {
+ PyObject ob_base;
+ uintptr_t lv_tag;
+ digit ob_digit[1];
+ }
+const_int_24576 = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyLong_Type,
+ },
+ .lv_tag = TAG_FROM_SIGN_AND_SIZE(1, 1),
+ .ob_digit = { 24576 },
+};
+static
+ struct {
+ PyObject ob_base;
+ uintptr_t lv_tag;
+ digit ob_digit[1];
+ }
+const_int_4096 = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyLong_Type,
+ },
+ .lv_tag = TAG_FROM_SIGN_AND_SIZE(1, 1),
+ .ob_digit = { 4096 },
+};
+#if PYLONG_BITS_IN_DIGIT == 15
+static
+ struct {
+ PyObject ob_base;
+ uintptr_t lv_tag;
+ digit ob_digit[2];
+ }
+const_int_40960 = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyLong_Type,
+ },
+ .lv_tag = TAG_FROM_SIGN_AND_SIZE(1, 2),
+ .ob_digit = { 8192, 1 },
+};
+#elif PYLONG_BITS_IN_DIGIT == 30
+static
+ struct {
+ PyObject ob_base;
+ uintptr_t lv_tag;
+ digit ob_digit[1];
+ }
+const_int_40960 = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyLong_Type,
+ },
+ .lv_tag = TAG_FROM_SIGN_AND_SIZE(1, 1),
+ .ob_digit = { 40960 },
+};
+#else
+#error "PYLONG_BITS_IN_DIGIT should be 15 or 30"
+#endif
+#if PYLONG_BITS_IN_DIGIT == 15
+static
+ struct {
+ PyObject ob_base;
+ uintptr_t lv_tag;
+ digit ob_digit[2];
+ }
+const_int_49152 = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyLong_Type,
+ },
+ .lv_tag = TAG_FROM_SIGN_AND_SIZE(1, 2),
+ .ob_digit = { 16384, 1 },
+};
+#elif PYLONG_BITS_IN_DIGIT == 30
+static
+ struct {
+ PyObject ob_base;
+ uintptr_t lv_tag;
+ digit ob_digit[1];
+ }
+const_int_49152 = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyLong_Type,
+ },
+ .lv_tag = TAG_FROM_SIGN_AND_SIZE(1, 1),
+ .ob_digit = { 49152 },
+};
+#else
+#error "PYLONG_BITS_IN_DIGIT should be 15 or 30"
+#endif
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[41];
+ }
+stat_toplevel_consts_20_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 40,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Return True if mode is from a directory.",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+stat_toplevel_consts_20_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & stat_toplevel_consts_20_consts_0._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[8];
+ }
+const_str_S_IFDIR = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 7,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "S_IFDIR",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+stat_toplevel_consts_20_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & const_str_S_IFMT._ascii.ob_base,
+ & const_str_S_IFDIR._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[18];
+ }
+stat_toplevel_consts_20_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 17,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xe4\x0b\x11\x90\x24\x8b\x3c\x9c\x37\xd1\x0b\x22\xd0\x04\x22",
+};
+static
+ struct _PyCode_DEF(38)
+stat_toplevel_consts_20 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 19,
+ },
+ .co_consts = & stat_toplevel_consts_20_consts._object.ob_base.ob_base,
+ .co_names = & stat_toplevel_consts_20_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 4 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 3,
+ .co_firstlineno = 50,
+ .co_nlocalsplus = 1,
+ .co_nlocals = 1,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 705,
+ .co_localsplusnames = & stat_toplevel_consts_11_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_characters[32]),
+ .co_filename = & stat_toplevel_consts_11_filename._ascii.ob_base,
+ .co_name = & const_str_S_ISDIR._ascii.ob_base,
+ .co_qualname = & const_str_S_ISDIR._ascii.ob_base,
+ .co_linetable = & stat_toplevel_consts_20_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x74\x02\x00\x00\x00\x00\x00\x00\x00\x00\x6b\x28\x00\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[61];
+ }
+stat_toplevel_consts_21_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 60,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Return True if mode is from a character special device file.",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+stat_toplevel_consts_21_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & stat_toplevel_consts_21_consts_0._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[8];
+ }
+const_str_S_IFCHR = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 7,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "S_IFCHR",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+stat_toplevel_consts_21_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & const_str_S_IFMT._ascii.ob_base,
+ & const_str_S_IFCHR._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[8];
+ }
+const_str_S_ISCHR = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 7,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "S_ISCHR",
+};
+static
+ struct _PyCode_DEF(38)
+stat_toplevel_consts_21 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 19,
+ },
+ .co_consts = & stat_toplevel_consts_21_consts._object.ob_base.ob_base,
+ .co_names = & stat_toplevel_consts_21_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 4 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 3,
+ .co_firstlineno = 54,
+ .co_nlocalsplus = 1,
+ .co_nlocals = 1,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 706,
+ .co_localsplusnames = & stat_toplevel_consts_11_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_characters[32]),
+ .co_filename = & stat_toplevel_consts_11_filename._ascii.ob_base,
+ .co_name = & const_str_S_ISCHR._ascii.ob_base,
+ .co_qualname = & const_str_S_ISCHR._ascii.ob_base,
+ .co_linetable = & stat_toplevel_consts_20_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x74\x02\x00\x00\x00\x00\x00\x00\x00\x00\x6b\x28\x00\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[57];
+ }
+stat_toplevel_consts_22_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 56,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Return True if mode is from a block special device file.",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+stat_toplevel_consts_22_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & stat_toplevel_consts_22_consts_0._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[8];
+ }
+const_str_S_IFBLK = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 7,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "S_IFBLK",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+stat_toplevel_consts_22_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & const_str_S_IFMT._ascii.ob_base,
+ & const_str_S_IFBLK._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[8];
+ }
+const_str_S_ISBLK = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 7,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "S_ISBLK",
+};
+static
+ struct _PyCode_DEF(38)
+stat_toplevel_consts_22 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 19,
+ },
+ .co_consts = & stat_toplevel_consts_22_consts._object.ob_base.ob_base,
+ .co_names = & stat_toplevel_consts_22_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 4 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 3,
+ .co_firstlineno = 58,
+ .co_nlocalsplus = 1,
+ .co_nlocals = 1,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 707,
+ .co_localsplusnames = & stat_toplevel_consts_11_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_characters[32]),
+ .co_filename = & stat_toplevel_consts_11_filename._ascii.ob_base,
+ .co_name = & const_str_S_ISBLK._ascii.ob_base,
+ .co_qualname = & const_str_S_ISBLK._ascii.ob_base,
+ .co_linetable = & stat_toplevel_consts_20_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x74\x02\x00\x00\x00\x00\x00\x00\x00\x00\x6b\x28\x00\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[44];
+ }
+stat_toplevel_consts_23_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 43,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Return True if mode is from a regular file.",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+stat_toplevel_consts_23_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & stat_toplevel_consts_23_consts_0._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[8];
+ }
+const_str_S_IFREG = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 7,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "S_IFREG",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+stat_toplevel_consts_23_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & const_str_S_IFMT._ascii.ob_base,
+ & const_str_S_IFREG._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(38)
+stat_toplevel_consts_23 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 19,
+ },
+ .co_consts = & stat_toplevel_consts_23_consts._object.ob_base.ob_base,
+ .co_names = & stat_toplevel_consts_23_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 4 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 3,
+ .co_firstlineno = 62,
+ .co_nlocalsplus = 1,
+ .co_nlocals = 1,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 708,
+ .co_localsplusnames = & stat_toplevel_consts_11_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_characters[32]),
+ .co_filename = & stat_toplevel_consts_11_filename._ascii.ob_base,
+ .co_name = & const_str_S_ISREG._ascii.ob_base,
+ .co_qualname = & const_str_S_ISREG._ascii.ob_base,
+ .co_linetable = & stat_toplevel_consts_20_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x74\x02\x00\x00\x00\x00\x00\x00\x00\x00\x6b\x28\x00\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[49];
+ }
+stat_toplevel_consts_24_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 48,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Return True if mode is from a FIFO (named pipe).",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+stat_toplevel_consts_24_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & stat_toplevel_consts_24_consts_0._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[8];
+ }
+const_str_S_IFIFO = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 7,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "S_IFIFO",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+stat_toplevel_consts_24_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & const_str_S_IFMT._ascii.ob_base,
+ & const_str_S_IFIFO._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[9];
+ }
+const_str_S_ISFIFO = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 8,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "S_ISFIFO",
+};
+static
+ struct _PyCode_DEF(38)
+stat_toplevel_consts_24 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 19,
+ },
+ .co_consts = & stat_toplevel_consts_24_consts._object.ob_base.ob_base,
+ .co_names = & stat_toplevel_consts_24_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 4 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 3,
+ .co_firstlineno = 66,
+ .co_nlocalsplus = 1,
+ .co_nlocals = 1,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 709,
+ .co_localsplusnames = & stat_toplevel_consts_11_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_characters[32]),
+ .co_filename = & stat_toplevel_consts_11_filename._ascii.ob_base,
+ .co_name = & const_str_S_ISFIFO._ascii.ob_base,
+ .co_qualname = & const_str_S_ISFIFO._ascii.ob_base,
+ .co_linetable = & stat_toplevel_consts_20_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x74\x02\x00\x00\x00\x00\x00\x00\x00\x00\x6b\x28\x00\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[45];
+ }
+stat_toplevel_consts_25_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 44,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Return True if mode is from a symbolic link.",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+stat_toplevel_consts_25_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & stat_toplevel_consts_25_consts_0._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[8];
+ }
+const_str_S_IFLNK = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 7,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "S_IFLNK",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+stat_toplevel_consts_25_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & const_str_S_IFMT._ascii.ob_base,
+ & const_str_S_IFLNK._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(38)
+stat_toplevel_consts_25 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 19,
+ },
+ .co_consts = & stat_toplevel_consts_25_consts._object.ob_base.ob_base,
+ .co_names = & stat_toplevel_consts_25_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 4 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 3,
+ .co_firstlineno = 70,
+ .co_nlocalsplus = 1,
+ .co_nlocals = 1,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 710,
+ .co_localsplusnames = & stat_toplevel_consts_11_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_characters[32]),
+ .co_filename = & stat_toplevel_consts_11_filename._ascii.ob_base,
+ .co_name = & const_str_S_ISLNK._ascii.ob_base,
+ .co_qualname = & const_str_S_ISLNK._ascii.ob_base,
+ .co_linetable = & stat_toplevel_consts_20_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x74\x02\x00\x00\x00\x00\x00\x00\x00\x00\x6b\x28\x00\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[38];
+ }
+stat_toplevel_consts_26_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 37,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Return True if mode is from a socket.",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+stat_toplevel_consts_26_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & stat_toplevel_consts_26_consts_0._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[9];
+ }
+const_str_S_IFSOCK = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 8,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "S_IFSOCK",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+stat_toplevel_consts_26_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & const_str_S_IFMT._ascii.ob_base,
+ & const_str_S_IFSOCK._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[9];
+ }
+const_str_S_ISSOCK = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 8,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "S_ISSOCK",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[18];
+ }
+stat_toplevel_consts_26_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 17,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xe4\x0b\x11\x90\x24\x8b\x3c\x9c\x38\xd1\x0b\x23\xd0\x04\x23",
+};
+static
+ struct _PyCode_DEF(38)
+stat_toplevel_consts_26 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 19,
+ },
+ .co_consts = & stat_toplevel_consts_26_consts._object.ob_base.ob_base,
+ .co_names = & stat_toplevel_consts_26_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 4 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 3,
+ .co_firstlineno = 74,
+ .co_nlocalsplus = 1,
+ .co_nlocals = 1,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 711,
+ .co_localsplusnames = & stat_toplevel_consts_11_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_characters[32]),
+ .co_filename = & stat_toplevel_consts_11_filename._ascii.ob_base,
+ .co_name = & const_str_S_ISSOCK._ascii.ob_base,
+ .co_qualname = & const_str_S_ISSOCK._ascii.ob_base,
+ .co_linetable = & stat_toplevel_consts_26_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x74\x02\x00\x00\x00\x00\x00\x00\x00\x00\x6b\x28\x00\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[36];
+ }
+stat_toplevel_consts_27_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 35,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Return True if mode is from a door.",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+stat_toplevel_consts_27_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & stat_toplevel_consts_27_consts_0._ascii.ob_base,
+ Py_False,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[9];
+ }
+const_str_S_ISDOOR = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 8,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "S_ISDOOR",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[6];
+ }
+stat_toplevel_consts_27_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 5,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xe0\x0b\x10",
+};
+static
+ struct _PyCode_DEF(4)
+stat_toplevel_consts_27 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 2,
+ },
+ .co_consts = & stat_toplevel_consts_27_consts._object.ob_base.ob_base,
+ .co_names = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 1 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 0,
+ .co_firstlineno = 78,
+ .co_nlocalsplus = 1,
+ .co_nlocals = 1,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 712,
+ .co_localsplusnames = & stat_toplevel_consts_11_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_characters[32]),
+ .co_filename = & stat_toplevel_consts_11_filename._ascii.ob_base,
+ .co_name = & const_str_S_ISDOOR._ascii.ob_base,
+ .co_qualname = & const_str_S_ISDOOR._ascii.ob_base,
+ .co_linetable = & stat_toplevel_consts_27_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x79\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[43];
+ }
+stat_toplevel_consts_28_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 42,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Return True if mode is from an event port.",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+stat_toplevel_consts_28_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & stat_toplevel_consts_28_consts_0._ascii.ob_base,
+ Py_False,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[9];
+ }
+const_str_S_ISPORT = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 8,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "S_ISPORT",
+};
+static
+ struct _PyCode_DEF(4)
+stat_toplevel_consts_28 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 2,
+ },
+ .co_consts = & stat_toplevel_consts_28_consts._object.ob_base.ob_base,
+ .co_names = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 1 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 0,
+ .co_firstlineno = 82,
+ .co_nlocalsplus = 1,
+ .co_nlocals = 1,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 713,
+ .co_localsplusnames = & stat_toplevel_consts_11_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_characters[32]),
+ .co_filename = & stat_toplevel_consts_11_filename._ascii.ob_base,
+ .co_name = & const_str_S_ISPORT._ascii.ob_base,
+ .co_qualname = & const_str_S_ISPORT._ascii.ob_base,
+ .co_linetable = & stat_toplevel_consts_27_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x79\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[40];
+ }
+stat_toplevel_consts_29_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 39,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Return True if mode is from a whiteout.",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+stat_toplevel_consts_29_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & stat_toplevel_consts_29_consts_0._ascii.ob_base,
+ Py_False,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[8];
+ }
+const_str_S_ISWHT = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 7,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "S_ISWHT",
+};
+static
+ struct _PyCode_DEF(4)
+stat_toplevel_consts_29 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 2,
+ },
+ .co_consts = & stat_toplevel_consts_29_consts._object.ob_base.ob_base,
+ .co_names = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 1 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 0,
+ .co_firstlineno = 86,
+ .co_nlocalsplus = 1,
+ .co_nlocals = 1,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 714,
+ .co_localsplusnames = & stat_toplevel_consts_11_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_characters[32]),
+ .co_filename = & stat_toplevel_consts_11_filename._ascii.ob_base,
+ .co_name = & const_str_S_ISWHT._ascii.ob_base,
+ .co_qualname = & const_str_S_ISWHT._ascii.ob_base,
+ .co_linetable = & stat_toplevel_consts_27_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x79\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyObject ob_base;
+ uintptr_t lv_tag;
+ digit ob_digit[1];
+ }
+const_int_1024 = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyLong_Type,
+ },
+ .lv_tag = TAG_FROM_SIGN_AND_SIZE(1, 1),
+ .ob_digit = { 1024 },
+};
+static
+ struct {
+ PyObject ob_base;
+ uintptr_t lv_tag;
+ digit ob_digit[1];
+ }
+const_int_512 = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyLong_Type,
+ },
+ .lv_tag = TAG_FROM_SIGN_AND_SIZE(1, 1),
+ .ob_digit = { 512 },
+};
+static
+ struct {
+ PyObject ob_base;
+ uintptr_t lv_tag;
+ digit ob_digit[1];
+ }
+const_int_448 = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyLong_Type,
+ },
+ .lv_tag = TAG_FROM_SIGN_AND_SIZE(1, 1),
+ .ob_digit = { 448 },
+};
+#if PYLONG_BITS_IN_DIGIT == 15
+static
+ struct {
+ PyObject ob_base;
+ uintptr_t lv_tag;
+ digit ob_digit[2];
+ }
+const_int_65536 = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyLong_Type,
+ },
+ .lv_tag = TAG_FROM_SIGN_AND_SIZE(1, 2),
+ .ob_digit = { 0, 2 },
+};
+#elif PYLONG_BITS_IN_DIGIT == 30
+static
+ struct {
+ PyObject ob_base;
+ uintptr_t lv_tag;
+ digit ob_digit[1];
+ }
+const_int_65536 = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyLong_Type,
+ },
+ .lv_tag = TAG_FROM_SIGN_AND_SIZE(1, 1),
+ .ob_digit = { 65536 },
+};
+#else
+#error "PYLONG_BITS_IN_DIGIT should be 15 or 30"
+#endif
+#if PYLONG_BITS_IN_DIGIT == 15
+static
+ struct {
+ PyObject ob_base;
+ uintptr_t lv_tag;
+ digit ob_digit[2];
+ }
+const_int_131072 = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyLong_Type,
+ },
+ .lv_tag = TAG_FROM_SIGN_AND_SIZE(1, 2),
+ .ob_digit = { 0, 4 },
+};
+#elif PYLONG_BITS_IN_DIGIT == 30
+static
+ struct {
+ PyObject ob_base;
+ uintptr_t lv_tag;
+ digit ob_digit[1];
+ }
+const_int_131072 = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyLong_Type,
+ },
+ .lv_tag = TAG_FROM_SIGN_AND_SIZE(1, 1),
+ .ob_digit = { 131072 },
+};
+#else
+#error "PYLONG_BITS_IN_DIGIT should be 15 or 30"
+#endif
+#if PYLONG_BITS_IN_DIGIT == 15
+static
+ struct {
+ PyObject ob_base;
+ uintptr_t lv_tag;
+ digit ob_digit[2];
+ }
+const_int_262144 = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyLong_Type,
+ },
+ .lv_tag = TAG_FROM_SIGN_AND_SIZE(1, 2),
+ .ob_digit = { 0, 8 },
+};
+#elif PYLONG_BITS_IN_DIGIT == 30
+static
+ struct {
+ PyObject ob_base;
+ uintptr_t lv_tag;
+ digit ob_digit[1];
+ }
+const_int_262144 = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyLong_Type,
+ },
+ .lv_tag = TAG_FROM_SIGN_AND_SIZE(1, 1),
+ .ob_digit = { 262144 },
+};
+#else
+#error "PYLONG_BITS_IN_DIGIT should be 15 or 30"
+#endif
+#if PYLONG_BITS_IN_DIGIT == 15
+static
+ struct {
+ PyObject ob_base;
+ uintptr_t lv_tag;
+ digit ob_digit[2];
+ }
+const_int_1048576 = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyLong_Type,
+ },
+ .lv_tag = TAG_FROM_SIGN_AND_SIZE(1, 2),
+ .ob_digit = { 0, 32 },
+};
+#elif PYLONG_BITS_IN_DIGIT == 30
+static
+ struct {
+ PyObject ob_base;
+ uintptr_t lv_tag;
+ digit ob_digit[1];
+ }
+const_int_1048576 = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyLong_Type,
+ },
+ .lv_tag = TAG_FROM_SIGN_AND_SIZE(1, 1),
+ .ob_digit = { 1048576 },
+};
+#else
+#error "PYLONG_BITS_IN_DIGIT should be 15 or 30"
+#endif
+#if PYLONG_BITS_IN_DIGIT == 15
+static
+ struct {
+ PyObject ob_base;
+ uintptr_t lv_tag;
+ digit ob_digit[2];
+ }
+const_int_2097152 = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyLong_Type,
+ },
+ .lv_tag = TAG_FROM_SIGN_AND_SIZE(1, 2),
+ .ob_digit = { 0, 64 },
+};
+#elif PYLONG_BITS_IN_DIGIT == 30
+static
+ struct {
+ PyObject ob_base;
+ uintptr_t lv_tag;
+ digit ob_digit[1];
+ }
+const_int_2097152 = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyLong_Type,
+ },
+ .lv_tag = TAG_FROM_SIGN_AND_SIZE(1, 1),
+ .ob_digit = { 2097152 },
+};
+#else
+#error "PYLONG_BITS_IN_DIGIT should be 15 or 30"
+#endif
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[60];
+ }
+stat_toplevel_consts_58_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 59,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Convert a file's mode to a string of the form '-rwxrwxrwx'.",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+stat_toplevel_consts_58_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ & stat_toplevel_consts_58_consts_0._ascii.ob_base,
+ (PyObject *)&_Py_SINGLETON(strings).ascii[45],
+ &_Py_STR(empty),
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[16];
+ }
+const_str__filemode_table = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 15,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_filemode_table",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+stat_toplevel_consts_58_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ & const_str__filemode_table._ascii.ob_base,
+ &_Py_ID(append),
+ &_Py_ID(join),
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[9];
+ }
+const_str_filemode = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 8,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "filemode",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[99];
+ }
+stat_toplevel_consts_58_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 98,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xe0\x0b\x0d\x80\x44\xdc\x11\x20\xf2\x00\x06\x05\x1d\x88\x05\xd8\x19\x1e\xf2\x00\x05\x09\x1d\x89\x49\x88\x43\x90\x14\xd8\x0f\x13\x90\x63\x89\x7a\x98\x53\xd3\x0f\x20\xd8\x10\x14\x97\x0b\x91\x0b\x98\x44\xd4\x10\x21\xd9\x10\x15\xf0\x07\x05\x09\x1d\xf0\x0a\x00\x0d\x11\x8f\x4b\x89\x4b\x98\x03\xd5\x0c\x1c\xf0\x0d\x06\x05\x1d\xf0\x0e\x00\x0c\x0e\x8f\x37\x89\x37\x90\x34\x8b\x3d\xd0\x04\x18",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[5];
+ }
+const_str_perm = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 4,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "perm",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[6];
+ }
+const_str_table = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 5,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "table",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[4];
+ }
+const_str_bit = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 3,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "bit",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[5];
+ }
+const_str_char = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 4,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "char",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[5];
+ }_object;
+ }
+stat_toplevel_consts_58_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 5,
+ },
+ .ob_item = {
+ &_Py_ID(mode),
+ & const_str_perm._ascii.ob_base,
+ & const_str_table._ascii.ob_base,
+ & const_str_bit._ascii.ob_base,
+ & const_str_char._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(170)
+stat_toplevel_consts_58 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 85,
+ },
+ .co_consts = & stat_toplevel_consts_58_consts._object.ob_base.ob_base,
+ .co_names = & stat_toplevel_consts_58_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 10 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 5,
+ .co_firstlineno = 156,
+ .co_nlocalsplus = 5,
+ .co_nlocals = 5,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 715,
+ .co_localsplusnames = & stat_toplevel_consts_58_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_7_consts_5_localspluskinds.ob_base.ob_base,
+ .co_filename = & stat_toplevel_consts_11_filename._ascii.ob_base,
+ .co_name = & const_str_filemode._ascii.ob_base,
+ .co_qualname = & const_str_filemode._ascii.ob_base,
+ .co_linetable = & stat_toplevel_consts_58_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x67\x00\x7d\x01\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x00\x5d\x38\x00\x00\x7d\x02\x7c\x02\x44\x00\x5d\x20\x00\x00\x5c\x02\x00\x00\x7d\x03\x7d\x04\x7c\x00\x7c\x03\x7a\x01\x00\x00\x7c\x03\x6b\x28\x00\x00\x73\x01\x8c\x0f\x7c\x01\x6a\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x04\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x01\x00\x8c\x27\x04\x00\x7c\x01\x6a\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x01\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x8c\x3a\x04\x00\x64\x02\x6a\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\xab\x01\x00\x00\x00\x00\x00\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[61];
+ }_object;
+ }
+stat_toplevel_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 61,
+ },
+ .ob_item = {
+ & stat_toplevel_consts_0._ascii.ob_base,
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 0],
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 1],
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 2],
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 3],
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 4],
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 5],
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 6],
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 7],
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 8],
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 9],
+ & stat_toplevel_consts_11.ob_base.ob_base,
+ & stat_toplevel_consts_12.ob_base.ob_base,
+ & const_int_16384.ob_base,
+ & const_int_8192.ob_base,
+ & const_int_24576.ob_base,
+ & const_int_32768.ob_base,
+ & const_int_4096.ob_base,
+ & const_int_40960.ob_base,
+ & const_int_49152.ob_base,
+ & stat_toplevel_consts_20.ob_base.ob_base,
+ & stat_toplevel_consts_21.ob_base.ob_base,
+ & stat_toplevel_consts_22.ob_base.ob_base,
+ & stat_toplevel_consts_23.ob_base.ob_base,
+ & stat_toplevel_consts_24.ob_base.ob_base,
+ & stat_toplevel_consts_25.ob_base.ob_base,
+ & stat_toplevel_consts_26.ob_base.ob_base,
+ & stat_toplevel_consts_27.ob_base.ob_base,
+ & stat_toplevel_consts_28.ob_base.ob_base,
+ & stat_toplevel_consts_29.ob_base.ob_base,
+ & const_int_2048.ob_base,
+ & const_int_1024.ob_base,
+ & const_int_512.ob_base,
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 256],
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 128],
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 64],
+ & const_int_448.ob_base,
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 56],
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 32],
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 16],
+ & const_int_65536.ob_base,
+ & const_int_131072.ob_base,
+ & const_int_262144.ob_base,
+ & const_int_1048576.ob_base,
+ & const_int_2097152.ob_base,
+ (PyObject *)&_Py_SINGLETON(strings).ascii[108],
+ &_Py_ID(s),
+ (PyObject *)&_Py_SINGLETON(strings).ascii[45],
+ &_Py_ID(b),
+ &_Py_ID(d),
+ &_Py_ID(c),
+ &_Py_ID(p),
+ &_Py_ID(r),
+ (PyObject *)&_Py_SINGLETON(strings).ascii[119],
+ (PyObject *)&_Py_SINGLETON(strings).ascii[83],
+ &_Py_ID(x),
+ (PyObject *)&_Py_SINGLETON(strings).ascii[116],
+ (PyObject *)&_Py_SINGLETON(strings).ascii[84],
+ & stat_toplevel_consts_58.ob_base.ob_base,
+ & codecs_toplevel_consts_3._object.ob_base.ob_base,
+ Py_None,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[8];
+ }
+const_str_ST_MODE = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 7,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "ST_MODE",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[7];
+ }
+const_str_ST_INO = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 6,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "ST_INO",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[7];
+ }
+const_str_ST_DEV = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 6,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "ST_DEV",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[9];
+ }
+const_str_ST_NLINK = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 8,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "ST_NLINK",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[7];
+ }
+const_str_ST_UID = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 6,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "ST_UID",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[7];
+ }
+const_str_ST_GID = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 6,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "ST_GID",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[8];
+ }
+const_str_ST_SIZE = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 7,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "ST_SIZE",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[9];
+ }
+const_str_ST_ATIME = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 8,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "ST_ATIME",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[9];
+ }
+const_str_ST_MTIME = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 8,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "ST_MTIME",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[9];
+ }
+const_str_ST_CTIME = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 8,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "ST_CTIME",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[9];
+ }
+const_str_S_IFDOOR = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 8,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "S_IFDOOR",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[9];
+ }
+const_str_S_IFPORT = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 8,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "S_IFPORT",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[8];
+ }
+const_str_S_IFWHT = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 7,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "S_IFWHT",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[8];
+ }
+const_str_S_ISUID = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 7,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "S_ISUID",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[8];
+ }
+const_str_S_ISGID = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 7,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "S_ISGID",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[8];
+ }
+const_str_S_ENFMT = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 7,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "S_ENFMT",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[8];
+ }
+const_str_S_ISVTX = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 7,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "S_ISVTX",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[8];
+ }
+const_str_S_IREAD = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 7,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "S_IREAD",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[9];
+ }
+const_str_S_IWRITE = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 8,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "S_IWRITE",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[8];
+ }
+const_str_S_IEXEC = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 7,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "S_IEXEC",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[8];
+ }
+const_str_S_IRWXU = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 7,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "S_IRWXU",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[8];
+ }
+const_str_S_IRUSR = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 7,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "S_IRUSR",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[8];
+ }
+const_str_S_IWUSR = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 7,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "S_IWUSR",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[8];
+ }
+const_str_S_IXUSR = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 7,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "S_IXUSR",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[8];
+ }
+const_str_S_IRWXG = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 7,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "S_IRWXG",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[8];
+ }
+const_str_S_IRGRP = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 7,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "S_IRGRP",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[8];
+ }
+const_str_S_IWGRP = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 7,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "S_IWGRP",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[8];
+ }
+const_str_S_IXGRP = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 7,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "S_IXGRP",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[8];
+ }
+const_str_S_IRWXO = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 7,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "S_IRWXO",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[8];
+ }
+const_str_S_IROTH = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 7,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "S_IROTH",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[8];
+ }
+const_str_S_IWOTH = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 7,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "S_IWOTH",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[8];
+ }
+const_str_S_IXOTH = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 7,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "S_IXOTH",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[10];
+ }
+const_str_UF_NODUMP = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 9,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "UF_NODUMP",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[13];
+ }
+const_str_UF_IMMUTABLE = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 12,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "UF_IMMUTABLE",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[10];
+ }
+const_str_UF_APPEND = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 9,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "UF_APPEND",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[10];
+ }
+const_str_UF_OPAQUE = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 9,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "UF_OPAQUE",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[12];
+ }
+const_str_UF_NOUNLINK = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 11,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "UF_NOUNLINK",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[14];
+ }
+const_str_UF_COMPRESSED = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 13,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "UF_COMPRESSED",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[12];
+ }
+const_str_SF_ARCHIVED = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 11,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "SF_ARCHIVED",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[13];
+ }
+const_str_SF_IMMUTABLE = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 12,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "SF_IMMUTABLE",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[10];
+ }
+const_str_SF_APPEND = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 9,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "SF_APPEND",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[12];
+ }
+const_str_SF_NOUNLINK = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 11,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "SF_NOUNLINK",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[12];
+ }
+const_str_SF_SNAPSHOT = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 11,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "SF_SNAPSHOT",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[23];
+ }
+const_str_FILE_ATTRIBUTE_ARCHIVE = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 22,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "FILE_ATTRIBUTE_ARCHIVE",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[26];
+ }
+const_str_FILE_ATTRIBUTE_COMPRESSED = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 25,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "FILE_ATTRIBUTE_COMPRESSED",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[22];
+ }
+const_str_FILE_ATTRIBUTE_DEVICE = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 21,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "FILE_ATTRIBUTE_DEVICE",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[25];
+ }
+const_str_FILE_ATTRIBUTE_DIRECTORY = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 24,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "FILE_ATTRIBUTE_DIRECTORY",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[25];
+ }
+const_str_FILE_ATTRIBUTE_ENCRYPTED = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 24,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "FILE_ATTRIBUTE_ENCRYPTED",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[32];
+ }
+const_str_FILE_ATTRIBUTE_INTEGRITY_STREAM = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 31,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "FILE_ATTRIBUTE_INTEGRITY_STREAM",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[22];
+ }
+const_str_FILE_ATTRIBUTE_NORMAL = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 21,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "FILE_ATTRIBUTE_NORMAL",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[35];
+ }
+const_str_FILE_ATTRIBUTE_NOT_CONTENT_INDEXED = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 34,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "FILE_ATTRIBUTE_NOT_CONTENT_INDEXED",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[29];
+ }
+const_str_FILE_ATTRIBUTE_NO_SCRUB_DATA = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 28,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "FILE_ATTRIBUTE_NO_SCRUB_DATA",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[23];
+ }
+const_str_FILE_ATTRIBUTE_OFFLINE = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 22,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "FILE_ATTRIBUTE_OFFLINE",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[24];
+ }
+const_str_FILE_ATTRIBUTE_READONLY = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 23,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "FILE_ATTRIBUTE_READONLY",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[29];
+ }
+const_str_FILE_ATTRIBUTE_REPARSE_POINT = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 28,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "FILE_ATTRIBUTE_REPARSE_POINT",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[27];
+ }
+const_str_FILE_ATTRIBUTE_SPARSE_FILE = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 26,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "FILE_ATTRIBUTE_SPARSE_FILE",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[22];
+ }
+const_str_FILE_ATTRIBUTE_SYSTEM = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 21,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "FILE_ATTRIBUTE_SYSTEM",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[25];
+ }
+const_str_FILE_ATTRIBUTE_TEMPORARY = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 24,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "FILE_ATTRIBUTE_TEMPORARY",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[23];
+ }
+const_str_FILE_ATTRIBUTE_VIRTUAL = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 22,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "FILE_ATTRIBUTE_VIRTUAL",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[6];
+ }
+const_str__stat = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 5,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_stat",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[85];
+ }_object;
+ }
+stat_toplevel_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 85,
+ },
+ .ob_item = {
+ &_Py_ID(__doc__),
+ & const_str_ST_MODE._ascii.ob_base,
+ & const_str_ST_INO._ascii.ob_base,
+ & const_str_ST_DEV._ascii.ob_base,
+ & const_str_ST_NLINK._ascii.ob_base,
+ & const_str_ST_UID._ascii.ob_base,
+ & const_str_ST_GID._ascii.ob_base,
+ & const_str_ST_SIZE._ascii.ob_base,
+ & const_str_ST_ATIME._ascii.ob_base,
+ & const_str_ST_MTIME._ascii.ob_base,
+ & const_str_ST_CTIME._ascii.ob_base,
+ & const_str_S_IMODE._ascii.ob_base,
+ & const_str_S_IFMT._ascii.ob_base,
+ & const_str_S_IFDIR._ascii.ob_base,
+ & const_str_S_IFCHR._ascii.ob_base,
+ & const_str_S_IFBLK._ascii.ob_base,
+ & const_str_S_IFREG._ascii.ob_base,
+ & const_str_S_IFIFO._ascii.ob_base,
+ & const_str_S_IFLNK._ascii.ob_base,
+ & const_str_S_IFSOCK._ascii.ob_base,
+ & const_str_S_IFDOOR._ascii.ob_base,
+ & const_str_S_IFPORT._ascii.ob_base,
+ & const_str_S_IFWHT._ascii.ob_base,
+ & const_str_S_ISDIR._ascii.ob_base,
+ & const_str_S_ISCHR._ascii.ob_base,
+ & const_str_S_ISBLK._ascii.ob_base,
+ & const_str_S_ISREG._ascii.ob_base,
+ & const_str_S_ISFIFO._ascii.ob_base,
+ & const_str_S_ISLNK._ascii.ob_base,
+ & const_str_S_ISSOCK._ascii.ob_base,
+ & const_str_S_ISDOOR._ascii.ob_base,
+ & const_str_S_ISPORT._ascii.ob_base,
+ & const_str_S_ISWHT._ascii.ob_base,
+ & const_str_S_ISUID._ascii.ob_base,
+ & const_str_S_ISGID._ascii.ob_base,
+ & const_str_S_ENFMT._ascii.ob_base,
+ & const_str_S_ISVTX._ascii.ob_base,
+ & const_str_S_IREAD._ascii.ob_base,
+ & const_str_S_IWRITE._ascii.ob_base,
+ & const_str_S_IEXEC._ascii.ob_base,
+ & const_str_S_IRWXU._ascii.ob_base,
+ & const_str_S_IRUSR._ascii.ob_base,
+ & const_str_S_IWUSR._ascii.ob_base,
+ & const_str_S_IXUSR._ascii.ob_base,
+ & const_str_S_IRWXG._ascii.ob_base,
+ & const_str_S_IRGRP._ascii.ob_base,
+ & const_str_S_IWGRP._ascii.ob_base,
+ & const_str_S_IXGRP._ascii.ob_base,
+ & const_str_S_IRWXO._ascii.ob_base,
+ & const_str_S_IROTH._ascii.ob_base,
+ & const_str_S_IWOTH._ascii.ob_base,
+ & const_str_S_IXOTH._ascii.ob_base,
+ & const_str_UF_NODUMP._ascii.ob_base,
+ & const_str_UF_IMMUTABLE._ascii.ob_base,
+ & const_str_UF_APPEND._ascii.ob_base,
+ & const_str_UF_OPAQUE._ascii.ob_base,
+ & const_str_UF_NOUNLINK._ascii.ob_base,
+ & const_str_UF_COMPRESSED._ascii.ob_base,
+ & const_str_UF_HIDDEN._ascii.ob_base,
+ & const_str_SF_ARCHIVED._ascii.ob_base,
+ & const_str_SF_IMMUTABLE._ascii.ob_base,
+ & const_str_SF_APPEND._ascii.ob_base,
+ & const_str_SF_NOUNLINK._ascii.ob_base,
+ & const_str_SF_SNAPSHOT._ascii.ob_base,
+ & const_str__filemode_table._ascii.ob_base,
+ & const_str_filemode._ascii.ob_base,
+ & const_str_FILE_ATTRIBUTE_ARCHIVE._ascii.ob_base,
+ & const_str_FILE_ATTRIBUTE_COMPRESSED._ascii.ob_base,
+ & const_str_FILE_ATTRIBUTE_DEVICE._ascii.ob_base,
+ & const_str_FILE_ATTRIBUTE_DIRECTORY._ascii.ob_base,
+ & const_str_FILE_ATTRIBUTE_ENCRYPTED._ascii.ob_base,
+ & const_str_FILE_ATTRIBUTE_HIDDEN._ascii.ob_base,
+ & const_str_FILE_ATTRIBUTE_INTEGRITY_STREAM._ascii.ob_base,
+ & const_str_FILE_ATTRIBUTE_NORMAL._ascii.ob_base,
+ & const_str_FILE_ATTRIBUTE_NOT_CONTENT_INDEXED._ascii.ob_base,
+ & const_str_FILE_ATTRIBUTE_NO_SCRUB_DATA._ascii.ob_base,
+ & const_str_FILE_ATTRIBUTE_OFFLINE._ascii.ob_base,
+ & const_str_FILE_ATTRIBUTE_READONLY._ascii.ob_base,
+ & const_str_FILE_ATTRIBUTE_REPARSE_POINT._ascii.ob_base,
+ & const_str_FILE_ATTRIBUTE_SPARSE_FILE._ascii.ob_base,
+ & const_str_FILE_ATTRIBUTE_SYSTEM._ascii.ob_base,
+ & const_str_FILE_ATTRIBUTE_TEMPORARY._ascii.ob_base,
+ & const_str_FILE_ATTRIBUTE_VIRTUAL._ascii.ob_base,
+ & const_str__stat._ascii.ob_base,
+ & const_str_ImportError._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[710];
+ }
+stat_toplevel_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 709,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\xf0\x03\x01\x01\x01\xf1\x02\x03\x01\x04\xf0\x0e\x00\x0c\x0d\x80\x07\xd8\x0b\x0c\x80\x06\xd8\x0b\x0c\x80\x06\xd8\x0b\x0c\x80\x08\xd8\x0b\x0c\x80\x06\xd8\x0b\x0c\x80\x06\xd8\x0b\x0c\x80\x07\xd8\x0b\x0c\x80\x08\xd8\x0b\x0c\x80\x08\xd8\x0b\x0c\x80\x08\xf2\x08\x04\x01\x19\xf2\x0c\x04\x01\x1b\xf0\x12\x00\x0c\x14\x80\x07\xd8\x0b\x13\x80\x07\xd8\x0b\x13\x80\x07\xd8\x0b\x13\x80\x07\xd8\x0b\x13\x80\x07\xd8\x0b\x13\x80\x07\xd8\x0b\x13\x80\x08\xe0\x0b\x0c\x80\x08\xd8\x0b\x0c\x80\x08\xd8\x0a\x0b\x80\x07\xf2\x08\x02\x01\x23\xf2\x08\x02\x01\x23\xf2\x08\x02\x01\x23\xf2\x08\x02\x01\x23\xf2\x08\x02\x01\x23\xf2\x08\x02\x01\x23\xf2\x08\x02\x01\x24\xf2\x08\x02\x01\x11\xf2\x08\x02\x01\x11\xf2\x08\x02\x01\x11\xf0\x0c\x00\x0b\x11\x80\x07\xd8\x0a\x10\x80\x07\xd8\x0a\x11\x80\x07\xd8\x0a\x10\x80\x07\xd8\x0a\x10\x80\x07\xd8\x0b\x11\x80\x08\xd8\x0a\x10\x80\x07\xd8\x0a\x10\x80\x07\xd8\x0a\x10\x80\x07\xd8\x0a\x10\x80\x07\xd8\x0a\x10\x80\x07\xd8\x0a\x10\x80\x07\xd8\x0a\x10\x80\x07\xd8\x0a\x10\x80\x07\xd8\x0a\x10\x80\x07\xd8\x0a\x10\x80\x07\xd8\x0a\x10\x80\x07\xd8\x0a\x10\x80\x07\xd8\x0a\x10\x80\x07\xf0\x08\x00\x10\x1a\x80\x09\xd8\x0f\x19\x80\x0c\xd8\x0f\x19\x80\x09\xd8\x0f\x19\x80\x09\xd8\x0f\x19\x80\x0b\xd8\x10\x1a\x80\x0d\xd8\x0f\x19\x80\x09\xd8\x0f\x19\x80\x0b\xd8\x0f\x19\x80\x0c\xd8\x0f\x19\x80\x09\xd8\x0f\x19\x80\x0b\xd8\x0f\x19\x80\x0b\xf0\x08\x00\x07\x0e\x90\x73\xd0\x05\x1b\xd8\x06\x0e\x90\x73\xd0\x05\x1b\xd8\x06\x0d\x90\x73\xd0\x05\x1b\xd8\x06\x0d\x90\x73\xd0\x05\x1b\xd8\x06\x0d\x90\x73\xd0\x05\x1b\xd8\x06\x0d\x90\x73\xd0\x05\x1b\xd8\x06\x0d\x90\x73\xd0\x05\x1b\xf0\x0d\x06\x05\x1d\xf0\x10\x00\x07\x0e\x90\x73\xd0\x05\x1b\xd0\x04\x1d\xd8\x06\x0d\x90\x73\xd0\x05\x1b\xd0\x04\x1d\xd8\x06\x0d\x88\x67\x81\x6f\x90\x73\xd0\x05\x1b\xd8\x06\x0d\x90\x73\xd0\x05\x1b\xd8\x06\x0d\x90\x73\xd0\x05\x1b\xf0\x05\x02\x05\x1d\xf0\x08\x00\x07\x0e\x90\x73\xd0\x05\x1b\xd0\x04\x1d\xd8\x06\x0d\x90\x73\xd0\x05\x1b\xd0\x04\x1d\xd8\x06\x0d\x88\x67\x81\x6f\x90\x73\xd0\x05\x1b\xd8\x06\x0d\x90\x73\xd0\x05\x1b\xd8\x06\x0d\x90\x73\xd0\x05\x1b\xf0\x05\x02\x05\x1d\xf0\x08\x00\x07\x0e\x90\x73\xd0\x05\x1b\xd0\x04\x1d\xd8\x06\x0d\x90\x73\xd0\x05\x1b\xd0\x04\x1d\xd8\x06\x0d\x88\x67\x81\x6f\x90\x73\xd0\x05\x1b\xd8\x06\x0d\x90\x73\xd0\x05\x1b\xd8\x06\x0d\x90\x73\xd0\x05\x1b\xf0\x05\x02\x05\x1d\xf0\x2f\x1a\x13\x02\x80\x0f\xf2\x38\x0a\x01\x19\xf0\x20\x00\x1a\x1c\xd0\x00\x16\xd8\x1c\x20\xd0\x00\x19\xd8\x18\x1a\xd0\x00\x15\xd8\x1b\x1d\xd0\x00\x18\xd8\x1b\x20\xd0\x00\x18\xd8\x18\x19\xd0\x00\x15\xd8\x22\x27\xd0\x00\x1f\xd8\x18\x1b\xd0\x00\x15\xd8\x25\x29\xd0\x00\x22\xd8\x1f\x25\xd0\x00\x1c\xd8\x19\x1d\xd0\x00\x16\xd8\x1a\x1b\xd0\x00\x17\xd8\x1f\x23\xd0\x00\x1c\xd8\x1d\x20\xd0\x00\x1a\xd8\x18\x19\xd0\x00\x15\xd8\x1b\x1e\xd0\x00\x18\xd8\x19\x1e\xd0\x00\x16\xf0\x08\x03\x01\x09\xdd\x04\x17\xf8\xd8\x07\x12\xf2\x00\x01\x01\x09\xd9\x04\x08\xf0\x03\x01\x01\x09\xfa",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[19];
+ }
+stat_toplevel_exceptiontable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 18,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\xc4\x0a\x05\x44\x10\x00\xc4\x10\x05\x44\x18\x03\xc4\x17\x01\x44\x18\x03",
+};
+static
+ struct _PyCode_DEF(566)
+stat_toplevel = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 283,
+ },
+ .co_consts = & stat_toplevel_consts._object.ob_base.ob_base,
+ .co_names = & stat_toplevel_names._object.ob_base.ob_base,
+ .co_exceptiontable = & stat_toplevel_exceptiontable.ob_base.ob_base,
+ .co_flags = 0,
+ .co_argcount = 0,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 13 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 13,
+ .co_firstlineno = 1,
+ .co_nlocalsplus = 0,
+ .co_nlocals = 0,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 716,
+ .co_localsplusnames = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_filename = & stat_toplevel_consts_11_filename._ascii.ob_base,
+ .co_name = &_Py_STR(anon_module),
+ .co_qualname = &_Py_STR(anon_module),
+ .co_linetable = & stat_toplevel_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x64\x00\x5a\x00\x64\x01\x5a\x01\x64\x02\x5a\x02\x64\x03\x5a\x03\x64\x04\x5a\x04\x64\x05\x5a\x05\x64\x06\x5a\x06\x64\x07\x5a\x07\x64\x08\x5a\x08\x64\x09\x5a\x09\x64\x0a\x5a\x0a\x64\x0b\x84\x00\x5a\x0b\x64\x0c\x84\x00\x5a\x0c\x64\x0d\x5a\x0d\x64\x0e\x5a\x0e\x64\x0f\x5a\x0f\x64\x10\x5a\x10\x64\x11\x5a\x11\x64\x12\x5a\x12\x64\x13\x5a\x13\x64\x01\x5a\x14\x64\x01\x5a\x15\x64\x01\x5a\x16\x64\x14\x84\x00\x5a\x17\x64\x15\x84\x00\x5a\x18\x64\x16\x84\x00\x5a\x19\x64\x17\x84\x00\x5a\x1a\x64\x18\x84\x00\x5a\x1b\x64\x19\x84\x00\x5a\x1c\x64\x1a\x84\x00\x5a\x1d\x64\x1b\x84\x00\x5a\x1e\x64\x1c\x84\x00\x5a\x1f\x64\x1d\x84\x00\x5a\x20\x64\x1e\x5a\x21\x64\x1f\x5a\x22\x65\x22\x5a\x23\x64\x20\x5a\x24\x64\x21\x5a\x25\x64\x22\x5a\x26\x64\x23\x5a\x27\x64\x24\x5a\x28\x64\x21\x5a\x29\x64\x22\x5a\x2a\x64\x23\x5a\x2b\x64\x25\x5a\x2c\x64\x26\x5a\x2d\x64\x27\x5a\x2e\x64\x09\x5a\x2f\x64\x08\x5a\x30\x64\x05\x5a\x31\x64\x03\x5a\x32\x64\x02\x5a\x33\x64\x02\x5a\x34\x64\x03\x5a\x35\x64\x05\x5a\x36\x64\x09\x5a\x37\x64\x27\x5a\x38\x64\x26\x5a\x39\x64\x10\x5a\x3a\x64\x28\x5a\x3b\x64\x29\x5a\x3c\x64\x2a\x5a\x3d\x64\x2b\x5a\x3e\x64\x2c\x5a\x3f\x65\x12\x64\x2d\x66\x02\x65\x13\x64\x2e\x66\x02\x65\x10\x64\x2f\x66\x02\x65\x0f\x64\x30\x66\x02\x65\x0d\x64\x31\x66\x02\x65\x0e\x64\x32\x66\x02\x65\x11\x64\x33\x66\x02\x66\x07\x65\x29\x64\x34\x66\x02\x66\x01\x65\x2a\x64\x35\x66\x02\x66\x01\x65\x2b\x65\x21\x7a\x07\x00\x00\x64\x2e\x66\x02\x65\x21\x64\x36\x66\x02\x65\x2b\x64\x37\x66\x02\x66\x03\x65\x2d\x64\x34\x66\x02\x66\x01\x65\x2e\x64\x35\x66\x02\x66\x01\x65\x2f\x65\x22\x7a\x07\x00\x00\x64\x2e\x66\x02\x65\x22\x64\x36\x66\x02\x65\x2f\x64\x37\x66\x02\x66\x03\x65\x31\x64\x34\x66\x02\x66\x01\x65\x32\x64\x35\x66\x02\x66\x01\x65\x33\x65\x24\x7a\x07\x00\x00\x64\x38\x66\x02\x65\x24\x64\x39\x66\x02\x65\x33\x64\x37\x66\x02\x66\x03\x66\x0a\x5a\x40\x64\x3a\x84\x00\x5a\x41\x64\x26\x5a\x42\x64\x1e\x5a\x43\x64\x23\x5a\x44\x64\x27\x5a\x45\x64\x0d\x5a\x46\x64\x03\x5a\x47\x64\x10\x5a\x48\x64\x22\x5a\x49\x64\x0e\x5a\x4a\x64\x29\x5a\x4b\x64\x11\x5a\x4c\x64\x02\x5a\x4d\x64\x1f\x5a\x4e\x64\x20\x5a\x4f\x64\x05\x5a\x50\x64\x21\x5a\x51\x64\x28\x5a\x52\x09\x00\x64\x01\x64\x3b\x6c\x53\xad\x02\x01\x00\x79\x3c\x23\x00\x65\x54\x24\x00\x72\x03\x01\x00\x59\x00\x79\x3c\x77\x00\x78\x03\x59\x00\x77\x01",
+ ._co_firsttraceable = 0,
+};
+
+PyObject *
+_Py_get_stat_toplevel(void)
+{
+ return Py_NewRef((PyObject *) &stat_toplevel);
+}
+
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[46];
+ }
+importlib_util_toplevel_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 45,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Utility code for constructing importers, etc.",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[7];
+ }
+const_str_Loader = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 6,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Loader",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+importlib_util_toplevel_consts_2 = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & const_str_Loader._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+importlib_util_toplevel_consts_3 = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & const_str_module_from_spec._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+importlib_util_toplevel_consts_4 = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & const_str__resolve_name._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+importlib_util_toplevel_consts_5 = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & const_str_spec_from_loader._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+importlib_util_toplevel_consts_6 = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & const_str__find_spec._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+importlib_util_toplevel_consts_7 = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & const_str_MAGIC_NUMBER._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+importlib_util_toplevel_consts_8 = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & const_str__RAW_MAGIC_NUMBER._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+importlib_util_toplevel_consts_9 = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & const_str_cache_from_source._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+importlib_util_toplevel_consts_10 = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & const_str_decode_source._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+importlib_util_toplevel_consts_11 = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & const_str_source_from_cache._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[67];
+ }
+importlib_util_toplevel_consts_15_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 66,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Return the hash of *source_bytes* as used in hash-based pyc files.",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+importlib_util_toplevel_consts_15_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & importlib_util_toplevel_consts_15_consts_0._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+importlib_util_toplevel_consts_15_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ & const_str__imp._ascii.ob_base,
+ & const_str_source_hash._ascii.ob_base,
+ & const_str__RAW_MAGIC_NUMBER._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[24];
+ }
+importlib_util_toplevel_consts_15_filename = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 23,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "<frozen importlib.util>",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[23];
+ }
+importlib_util_toplevel_consts_15_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 22,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xe4\x0b\x0f\xd7\x0b\x1b\xd1\x0b\x1b\xd4\x1c\x2d\xa8\x7c\xd3\x0b\x3c\xd0\x04\x3c",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+importlib_util_toplevel_consts_15_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & const_str_source_bytes._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(54)
+importlib_util_toplevel_consts_15 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 27,
+ },
+ .co_consts = & importlib_util_toplevel_consts_15_consts._object.ob_base.ob_base,
+ .co_names = & importlib_util_toplevel_consts_15_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 5 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 19,
+ .co_nlocalsplus = 1,
+ .co_nlocals = 1,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 717,
+ .co_localsplusnames = & importlib_util_toplevel_consts_15_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_characters[32]),
+ .co_filename = & importlib_util_toplevel_consts_15_filename._ascii.ob_base,
+ .co_name = & const_str_source_hash._ascii.ob_base,
+ .co_qualname = & const_str_source_hash._ascii.ob_base,
+ .co_linetable = & importlib_util_toplevel_consts_15_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x74\x04\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x02\x00\x00\x00\x00\x00\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[26];
+ }
+importlib_util_toplevel_consts_16_consts_2 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 25,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "no package specified for ",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[38];
+ }
+importlib_util_toplevel_consts_16_consts_3 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 37,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = " (required for relative module names)",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[7];
+ }_object;
+ }
+importlib_util_toplevel_consts_16_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 7,
+ },
+ .ob_item = {
+ & importlib__bootstrap_toplevel_consts_50_consts_0._ascii.ob_base,
+ &_Py_STR(dot),
+ & importlib_util_toplevel_consts_16_consts_2._ascii.ob_base,
+ & importlib_util_toplevel_consts_16_consts_3._ascii.ob_base,
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 0],
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 1],
+ Py_None,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[4];
+ }_object;
+ }
+importlib_util_toplevel_consts_16_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_item = {
+ & const_str_startswith._ascii.ob_base,
+ & const_str_ImportError._ascii.ob_base,
+ & const_str_repr._ascii.ob_base,
+ & const_str__resolve_name._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[13];
+ }
+const_str_resolve_name = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 12,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "resolve_name",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[125];
+ }
+importlib_util_toplevel_consts_16_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 124,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xe0\x0b\x0f\x8f\x3f\x89\x3f\x98\x33\xd4\x0b\x1f\xd8\x0f\x13\x88\x0b\xd9\x0d\x14\xdc\x0e\x19\xd0\x1c\x35\xb4\x64\xb8\x34\xb3\x6a\xb0\x5c\xf0\x00\x01\x42\x01\x41\x01\xf0\x00\x01\x1b\x41\x01\xf3\x00\x01\x0f\x42\x01\xf0\x00\x01\x09\x42\x01\xe0\x0c\x0d\x80\x45\xd8\x15\x19\xf2\x00\x03\x05\x13\x88\x09\xd8\x0b\x14\x98\x03\xd2\x0b\x1b\xd9\x0c\x11\xd8\x08\x0d\x90\x11\x89\x0a\x89\x05\xf0\x07\x03\x05\x13\xf4\x08\x00\x0c\x19\x98\x14\x98\x65\x98\x66\x98\x1c\xa0\x77\xb0\x05\xd3\x0b\x36\xd0\x04\x36",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[10];
+ }
+const_str_character = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 9,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "character",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[4];
+ }_object;
+ }
+importlib_util_toplevel_consts_16_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_item = {
+ &_Py_ID(name),
+ & const_str_package._ascii.ob_base,
+ &_Py_ID(level),
+ & const_str_character._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(166)
+importlib_util_toplevel_consts_16 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 83,
+ },
+ .co_consts = & importlib_util_toplevel_consts_16_consts._object.ob_base.ob_base,
+ .co_names = & importlib_util_toplevel_consts_16_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 10 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 6,
+ .co_firstlineno = 24,
+ .co_nlocalsplus = 4,
+ .co_nlocals = 4,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 718,
+ .co_localsplusnames = & importlib_util_toplevel_consts_16_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_7_consts_3_localspluskinds.ob_base.ob_base,
+ .co_filename = & importlib_util_toplevel_consts_15_filename._ascii.ob_base,
+ .co_name = & const_str_resolve_name._ascii.ob_base,
+ .co_qualname = & const_str_resolve_name._ascii.ob_base,
+ .co_linetable = & importlib_util_toplevel_consts_16_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x00\x6a\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x01\xab\x01\x00\x00\x00\x00\x00\x00\x73\x02\x7c\x00\x53\x00\x7c\x01\x73\x18\x74\x03\x00\x00\x00\x00\x00\x00\x00\x00\x64\x02\x74\x05\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x9b\x00\x64\x03\x9d\x03\xab\x01\x00\x00\x00\x00\x00\x00\x82\x01\x64\x04\x7d\x02\x7c\x00\x44\x00\x5d\x0e\x00\x00\x7d\x03\x7c\x03\x64\x01\x6b\x37\x00\x00\x72\x02\x01\x00\x6e\x07\x7c\x02\x64\x05\x7a\x0d\x00\x00\x7d\x02\x8c\x10\x04\x00\x74\x07\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x7c\x02\x64\x06\x1a\x00\x7c\x01\x7c\x02\xab\x03\x00\x00\x00\x00\x00\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[648];
+ }
+importlib_util_toplevel_consts_17_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 647,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x52\x65\x74\x75\x72\x6e\x20\x74\x68\x65\x20\x73\x70\x65\x63\x20\x66\x6f\x72\x20\x74\x68\x65\x20\x73\x70\x65\x63\x69\x66\x69\x65\x64\x20\x6d\x6f\x64\x75\x6c\x65\x2e\x0a\x0a\x20\x20\x20\x20\x46\x69\x72\x73\x74\x2c\x20\x73\x79\x73\x2e\x6d\x6f\x64\x75\x6c\x65\x73\x20\x69\x73\x20\x63\x68\x65\x63\x6b\x65\x64\x20\x74\x6f\x20\x73\x65\x65\x20\x69\x66\x20\x74\x68\x65\x20\x6d\x6f\x64\x75\x6c\x65\x20\x77\x61\x73\x20\x61\x6c\x72\x65\x61\x64\x79\x20\x69\x6d\x70\x6f\x72\x74\x65\x64\x2e\x20\x49\x66\x0a\x20\x20\x20\x20\x73\x6f\x2c\x20\x74\x68\x65\x6e\x20\x73\x79\x73\x2e\x6d\x6f\x64\x75\x6c\x65\x73\x5b\x6e\x61\x6d\x65\x5d\x2e\x5f\x5f\x73\x70\x65\x63\x5f\x5f\x20\x69\x73\x20\x72\x65\x74\x75\x72\x6e\x65\x64\x2e\x20\x49\x66\x20\x74\x68\x61\x74\x20\x68\x61\x70\x70\x65\x6e\x73\x20\x74\x6f\x20\x62\x65\x0a\x20\x20\x20\x20\x73\x65\x74\x20\x74\x6f\x20\x4e\x6f\x6e\x65\x2c\x20\x74\x68\x65\x6e\x20\x56\x61\x6c\x75\x65\x45\x72\x72\x6f\x72\x20\x69\x73\x20\x72\x61\x69\x73\x65\x64\x2e\x20\x49\x66\x20\x74\x68\x65\x20\x6d\x6f\x64\x75\x6c\x65\x20\x69\x73\x20\x6e\x6f\x74\x20\x69\x6e\x0a\x20\x20\x20\x20\x73\x79\x73\x2e\x6d\x6f\x64\x75\x6c\x65\x73\x2c\x20\x74\x68\x65\x6e\x20\x73\x79\x73\x2e\x6d\x65\x74\x61\x5f\x70\x61\x74\x68\x20\x69\x73\x20\x73\x65\x61\x72\x63\x68\x65\x64\x20\x66\x6f\x72\x20\x61\x20\x73\x75\x69\x74\x61\x62\x6c\x65\x20\x73\x70\x65\x63\x20\x77\x69\x74\x68\x20\x74\x68\x65\x0a\x20\x20\x20\x20\x76\x61\x6c\x75\x65\x20\x6f\x66\x20\x27\x70\x61\x74\x68\x27\x20\x67\x69\x76\x65\x6e\x20\x74\x6f\x20\x74\x68\x65\x20\x66\x69\x6e\x64\x65\x72\x73\x2e\x20\x4e\x6f\x6e\x65\x20\x69\x73\x20\x72\x65\x74\x75\x72\x6e\x65\x64\x20\x69\x66\x20\x6e\x6f\x20\x73\x70\x65\x63\x20\x63\x6f\x75\x6c\x64\x0a\x20\x20\x20\x20\x62\x65\x20\x66\x6f\x75\x6e\x64\x2e\x0a\x0a\x20\x20\x20\x20\x44\x6f\x74\x74\x65\x64\x20\x6e\x61\x6d\x65\x73\x20\x64\x6f\x20\x6e\x6f\x74\x20\x68\x61\x76\x65\x20\x74\x68\x65\x69\x72\x20\x70\x61\x72\x65\x6e\x74\x20\x70\x61\x63\x6b\x61\x67\x65\x73\x20\x69\x6d\x70\x6c\x69\x63\x69\x74\x6c\x79\x20\x69\x6d\x70\x6f\x72\x74\x65\x64\x2e\x20\x59\x6f\x75\x20\x77\x69\x6c\x6c\x0a\x20\x20\x20\x20\x6d\x6f\x73\x74\x20\x6c\x69\x6b\x65\x6c\x79\x20\x6e\x65\x65\x64\x20\x74\x6f\x20\x65\x78\x70\x6c\x69\x63\x69\x74\x6c\x79\x20\x69\x6d\x70\x6f\x72\x74\x20\x61\x6c\x6c\x20\x70\x61\x72\x65\x6e\x74\x20\x70\x61\x63\x6b\x61\x67\x65\x73\x20\x69\x6e\x20\x74\x68\x65\x20\x70\x72\x6f\x70\x65\x72\x0a\x20\x20\x20\x20\x6f\x72\x64\x65\x72\x20\x66\x6f\x72\x20\x61\x20\x73\x75\x62\x6d\x6f\x64\x75\x6c\x65\x20\x74\x6f\x20\x67\x65\x74\x20\x74\x68\x65\x20\x63\x6f\x72\x72\x65\x63\x74\x20\x73\x70\x65\x63\x2e\x0a\x0a\x20\x20\x20\x20",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[18];
+ }
+importlib_util_toplevel_consts_17_consts_2 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 17,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = ".__spec__ is None",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[21];
+ }
+importlib_util_toplevel_consts_17_consts_3 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 20,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = ".__spec__ is not set",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[4];
+ }_object;
+ }
+importlib_util_toplevel_consts_17_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_item = {
+ & importlib_util_toplevel_consts_17_consts_0._ascii.ob_base,
+ Py_None,
+ & importlib_util_toplevel_consts_17_consts_2._ascii.ob_base,
+ & importlib_util_toplevel_consts_17_consts_3._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[6];
+ }_object;
+ }
+importlib_util_toplevel_consts_17_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 6,
+ },
+ .ob_item = {
+ & const_str_sys._ascii.ob_base,
+ &_Py_ID(modules),
+ & const_str__find_spec._ascii.ob_base,
+ &_Py_ID(__spec__),
+ & const_str_ValueError._ascii.ob_base,
+ & const_str_AttributeError._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[21];
+ }
+const_str__find_spec_from_path = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 20,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_find_spec_from_path",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[137];
+ }
+importlib_util_toplevel_consts_17_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 136,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf0\x1e\x00\x08\x0c\x94\x33\x97\x3b\x91\x3b\xd1\x07\x1e\xdc\x0f\x19\x98\x24\xa0\x04\xd3\x0f\x25\xd0\x08\x25\xe4\x11\x14\x97\x1b\x91\x1b\x98\x54\xd1\x11\x22\x88\x06\xd8\x0b\x11\x88\x3e\xd8\x13\x17\xf0\x02\x07\x09\x18\xd8\x13\x19\x97\x3f\x91\x3f\x88\x44\xf0\x08\x00\x10\x14\x88\x7c\xdc\x16\x20\xa0\x44\xa0\x36\xd0\x29\x3a\xd0\x21\x3b\xd3\x16\x3c\xd0\x10\x3c\xd8\x13\x17\x88\x4b\xf8\xf4\x0b\x00\x10\x1e\xf2\x00\x01\x09\x46\x01\xdc\x12\x1c\xa0\x04\x98\x76\xd0\x25\x39\xd0\x1d\x3a\xd3\x12\x3b\xc0\x14\xd0\x0c\x45\xf0\x03\x01\x09\x46\x01\xfa",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[12];
+ }
+importlib_util_toplevel_consts_17_exceptiontable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 11,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\xb6\x0c\x41\x14\x00\xc1\x14\x19\x41\x2d\x03",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[4];
+ }_object;
+ }
+importlib_util_toplevel_consts_17_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_item = {
+ &_Py_ID(name),
+ &_Py_ID(path),
+ &_Py_ID(module),
+ & const_str_spec._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(224)
+importlib_util_toplevel_consts_17 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 112,
+ },
+ .co_consts = & importlib_util_toplevel_consts_17_consts._object.ob_base.ob_base,
+ .co_names = & importlib_util_toplevel_consts_17_names._object.ob_base.ob_base,
+ .co_exceptiontable = & importlib_util_toplevel_consts_17_exceptiontable.ob_base.ob_base,
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 9 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 5,
+ .co_firstlineno = 39,
+ .co_nlocalsplus = 4,
+ .co_nlocals = 4,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 719,
+ .co_localsplusnames = & importlib_util_toplevel_consts_17_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_7_consts_3_localspluskinds.ob_base.ob_base,
+ .co_filename = & importlib_util_toplevel_consts_15_filename._ascii.ob_base,
+ .co_name = & const_str__find_spec_from_path._ascii.ob_base,
+ .co_qualname = & const_str__find_spec_from_path._ascii.ob_base,
+ .co_linetable = & importlib_util_toplevel_consts_17_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x00\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x76\x01\x72\x0c\x74\x05\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x7c\x01\xab\x02\x00\x00\x00\x00\x00\x00\x53\x00\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x19\x00\x00\x00\x7d\x02\x7c\x02\x80\x01\x79\x01\x09\x00\x7c\x02\x6a\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7d\x03\x7c\x03\x80\x0e\x74\x09\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x9b\x00\x64\x02\x9d\x02\xab\x01\x00\x00\x00\x00\x00\x00\x82\x01\x7c\x03\x53\x00\x23\x00\x74\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x72\x10\x01\x00\x74\x09\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x9b\x00\x64\x03\x9d\x02\xab\x01\x00\x00\x00\x00\x00\x00\x64\x01\x82\x02\x77\x00\x78\x03\x59\x00\x77\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[688];
+ }
+importlib_util_toplevel_consts_18_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 687,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x52\x65\x74\x75\x72\x6e\x20\x74\x68\x65\x20\x73\x70\x65\x63\x20\x66\x6f\x72\x20\x74\x68\x65\x20\x73\x70\x65\x63\x69\x66\x69\x65\x64\x20\x6d\x6f\x64\x75\x6c\x65\x2e\x0a\x0a\x20\x20\x20\x20\x46\x69\x72\x73\x74\x2c\x20\x73\x79\x73\x2e\x6d\x6f\x64\x75\x6c\x65\x73\x20\x69\x73\x20\x63\x68\x65\x63\x6b\x65\x64\x20\x74\x6f\x20\x73\x65\x65\x20\x69\x66\x20\x74\x68\x65\x20\x6d\x6f\x64\x75\x6c\x65\x20\x77\x61\x73\x20\x61\x6c\x72\x65\x61\x64\x79\x20\x69\x6d\x70\x6f\x72\x74\x65\x64\x2e\x20\x49\x66\x0a\x20\x20\x20\x20\x73\x6f\x2c\x20\x74\x68\x65\x6e\x20\x73\x79\x73\x2e\x6d\x6f\x64\x75\x6c\x65\x73\x5b\x6e\x61\x6d\x65\x5d\x2e\x5f\x5f\x73\x70\x65\x63\x5f\x5f\x20\x69\x73\x20\x72\x65\x74\x75\x72\x6e\x65\x64\x2e\x20\x49\x66\x20\x74\x68\x61\x74\x20\x68\x61\x70\x70\x65\x6e\x73\x20\x74\x6f\x20\x62\x65\x0a\x20\x20\x20\x20\x73\x65\x74\x20\x74\x6f\x20\x4e\x6f\x6e\x65\x2c\x20\x74\x68\x65\x6e\x20\x56\x61\x6c\x75\x65\x45\x72\x72\x6f\x72\x20\x69\x73\x20\x72\x61\x69\x73\x65\x64\x2e\x20\x49\x66\x20\x74\x68\x65\x20\x6d\x6f\x64\x75\x6c\x65\x20\x69\x73\x20\x6e\x6f\x74\x20\x69\x6e\x0a\x20\x20\x20\x20\x73\x79\x73\x2e\x6d\x6f\x64\x75\x6c\x65\x73\x2c\x20\x74\x68\x65\x6e\x20\x73\x79\x73\x2e\x6d\x65\x74\x61\x5f\x70\x61\x74\x68\x20\x69\x73\x20\x73\x65\x61\x72\x63\x68\x65\x64\x20\x66\x6f\x72\x20\x61\x20\x73\x75\x69\x74\x61\x62\x6c\x65\x20\x73\x70\x65\x63\x20\x77\x69\x74\x68\x20\x74\x68\x65\x0a\x20\x20\x20\x20\x76\x61\x6c\x75\x65\x20\x6f\x66\x20\x27\x70\x61\x74\x68\x27\x20\x67\x69\x76\x65\x6e\x20\x74\x6f\x20\x74\x68\x65\x20\x66\x69\x6e\x64\x65\x72\x73\x2e\x20\x4e\x6f\x6e\x65\x20\x69\x73\x20\x72\x65\x74\x75\x72\x6e\x65\x64\x20\x69\x66\x20\x6e\x6f\x20\x73\x70\x65\x63\x20\x63\x6f\x75\x6c\x64\x0a\x20\x20\x20\x20\x62\x65\x20\x66\x6f\x75\x6e\x64\x2e\x0a\x0a\x20\x20\x20\x20\x49\x66\x20\x74\x68\x65\x20\x6e\x61\x6d\x65\x20\x69\x73\x20\x66\x6f\x72\x20\x73\x75\x62\x6d\x6f\x64\x75\x6c\x65\x20\x28\x63\x6f\x6e\x74\x61\x69\x6e\x73\x20\x61\x20\x64\x6f\x74\x29\x2c\x20\x74\x68\x65\x20\x70\x61\x72\x65\x6e\x74\x20\x6d\x6f\x64\x75\x6c\x65\x20\x69\x73\x0a\x20\x20\x20\x20\x61\x75\x74\x6f\x6d\x61\x74\x69\x63\x61\x6c\x6c\x79\x20\x69\x6d\x70\x6f\x72\x74\x65\x64\x2e\x0a\x0a\x20\x20\x20\x20\x54\x68\x65\x20\x6e\x61\x6d\x65\x20\x61\x6e\x64\x20\x70\x61\x63\x6b\x61\x67\x65\x20\x61\x72\x67\x75\x6d\x65\x6e\x74\x73\x20\x77\x6f\x72\x6b\x20\x74\x68\x65\x20\x73\x61\x6d\x65\x20\x61\x73\x20\x69\x6d\x70\x6f\x72\x74\x6c\x69\x62\x2e\x69\x6d\x70\x6f\x72\x74\x5f\x6d\x6f\x64\x75\x6c\x65\x28\x29\x2e\x0a\x20\x20\x20\x20\x49\x6e\x20\x6f\x74\x68\x65\x72\x20\x77\x6f\x72\x64\x73\x2c\x20\x72\x65\x6c\x61\x74\x69\x76\x65\x20\x6d\x6f\x64\x75\x6c\x65\x20\x6e\x61\x6d\x65\x73\x20\x28\x77\x69\x74\x68\x20\x6c\x65\x61\x64\x69\x6e\x67\x20\x64\x6f\x74\x73\x29\x20\x77\x6f\x72\x6b\x2e\x0a\x0a\x20\x20\x20\x20",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+importlib_util_toplevel_consts_18_consts_4 = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ &_Py_ID(fromlist),
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[33];
+ }
+importlib_util_toplevel_consts_18_consts_5 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 32,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "__path__ attribute not found on ",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[23];
+ }
+importlib_util_toplevel_consts_18_consts_6 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 22,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = " while trying to find ",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[11];
+ }_object;
+ }
+importlib_util_toplevel_consts_18_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 11,
+ },
+ .ob_item = {
+ & importlib_util_toplevel_consts_18_consts_0._ascii.ob_base,
+ &_Py_STR(dot),
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 0],
+ &_Py_ID(__path__),
+ & importlib_util_toplevel_consts_18_consts_4._object.ob_base.ob_base,
+ & importlib_util_toplevel_consts_18_consts_5._ascii.ob_base,
+ & importlib_util_toplevel_consts_18_consts_6._ascii.ob_base,
+ & importlib__bootstrap_toplevel_consts_4_localsplusnames._object.ob_base.ob_base,
+ Py_None,
+ & importlib_util_toplevel_consts_17_consts_2._ascii.ob_base,
+ & importlib_util_toplevel_consts_17_consts_3._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[12];
+ }_object;
+ }
+importlib_util_toplevel_consts_18_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 12,
+ },
+ .ob_item = {
+ & const_str_startswith._ascii.ob_base,
+ & const_str_resolve_name._ascii.ob_base,
+ & const_str_sys._ascii.ob_base,
+ &_Py_ID(modules),
+ & const_str_rpartition._ascii.ob_base,
+ &_Py_ID(__import__),
+ &_Py_ID(__path__),
+ & const_str_AttributeError._ascii.ob_base,
+ & const_str_ModuleNotFoundError._ascii.ob_base,
+ & const_str__find_spec._ascii.ob_base,
+ &_Py_ID(__spec__),
+ & const_str_ValueError._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[285];
+ }
+importlib_util_toplevel_consts_18_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 284,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf0\x22\x00\x2f\x33\xaf\x6f\xa9\x6f\xb8\x63\xd4\x2e\x42\x8c\x7c\x98\x44\xa0\x27\xd4\x0f\x2a\xc8\x04\x80\x48\xd8\x07\x0f\x94\x73\x97\x7b\x91\x7b\xd1\x07\x22\xd8\x16\x1e\xd7\x16\x29\xd1\x16\x29\xa8\x23\xd3\x16\x2e\xa8\x71\xd1\x16\x31\x88\x0b\xd9\x0b\x16\xdc\x15\x1f\xa0\x0b\xb0\x7a\xb0\x6c\xd4\x15\x43\x88\x46\xf0\x02\x05\x0d\x50\x01\xd8\x1e\x24\x9f\x6f\x99\x6f\x91\x0b\xf0\x0c\x00\x1b\x1f\x88\x4b\xdc\x0f\x19\x98\x28\xa0\x4b\xd3\x0f\x30\xd0\x08\x30\xe4\x11\x14\x97\x1b\x91\x1b\x98\x58\xd1\x11\x26\x88\x06\xd8\x0b\x11\x88\x3e\xd8\x13\x17\xf0\x02\x07\x09\x18\xd8\x13\x19\x97\x3f\x91\x3f\x88\x44\xf0\x08\x00\x10\x14\x88\x7c\xdc\x16\x20\xa0\x44\xa0\x36\xd0\x29\x3a\xd0\x21\x3b\xd3\x16\x3c\xd0\x10\x3c\xd8\x13\x17\x88\x4b\xf8\xf4\x25\x00\x14\x22\xf2\x00\x03\x0d\x50\x01\xdc\x16\x29\xd8\x16\x36\xb0\x7b\xb0\x6f\xf0\x00\x01\x46\x01\x2c\xd8\x2c\x34\xa8\x3c\xf0\x03\x01\x15\x39\xd8\x3f\x47\xf4\x05\x02\x17\x49\x01\xe0\x4e\x4f\xf0\x05\x02\x11\x50\x01\xfb\xf0\x03\x03\x0d\x50\x01\xfb\xf4\x1a\x00\x10\x1e\xf2\x00\x01\x09\x46\x01\xdc\x12\x1c\xa0\x04\x98\x76\xd0\x25\x39\xd0\x1d\x3a\xd3\x12\x3b\xc0\x14\xd0\x0c\x45\xf0\x03\x01\x09\x46\x01\xfa",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[37];
+ }
+importlib_util_toplevel_consts_18_exceptiontable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 36,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\xc1\x17\x0c\x42\x27\x00\xc2\x09\x0c\x43\x0c\x00\xc2\x27\x09\x43\x09\x03\xc2\x30\x14\x43\x04\x03\xc3\x04\x05\x43\x09\x03\xc3\x0c\x19\x43\x25\x03",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[12];
+ }
+const_str_parent_name = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 11,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "parent_name",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[9];
+ }_object;
+ }
+importlib_util_toplevel_consts_18_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 9,
+ },
+ .ob_item = {
+ &_Py_ID(name),
+ & const_str_package._ascii.ob_base,
+ & const_str_fullname._ascii.ob_base,
+ & const_str_parent_name._ascii.ob_base,
+ &_Py_ID(parent),
+ & const_str_parent_path._ascii.ob_base,
+ &_Py_ID(e),
+ &_Py_ID(module),
+ & const_str_spec._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(464)
+importlib_util_toplevel_consts_18 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 232,
+ },
+ .co_consts = & importlib_util_toplevel_consts_18_consts._object.ob_base.ob_base,
+ .co_names = & importlib_util_toplevel_consts_18_names._object.ob_base.ob_base,
+ .co_exceptiontable = & importlib_util_toplevel_consts_18_exceptiontable.ob_base.ob_base,
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 16 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 7,
+ .co_firstlineno = 70,
+ .co_nlocalsplus = 9,
+ .co_nlocals = 9,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 720,
+ .co_localsplusnames = & importlib_util_toplevel_consts_18_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_61_localspluskinds.ob_base.ob_base,
+ .co_filename = & importlib_util_toplevel_consts_15_filename._ascii.ob_base,
+ .co_name = & const_str_find_spec._ascii.ob_base,
+ .co_qualname = & const_str_find_spec._ascii.ob_base,
+ .co_linetable = & importlib_util_toplevel_consts_18_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x00\x6a\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x01\xab\x01\x00\x00\x00\x00\x00\x00\x72\x0c\x74\x03\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x7c\x01\xab\x02\x00\x00\x00\x00\x00\x00\x6e\x01\x7c\x00\x7d\x02\x7c\x02\x74\x04\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x76\x01\x72\x40\x7c\x02\x6a\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x01\xab\x01\x00\x00\x00\x00\x00\x00\x64\x02\x19\x00\x00\x00\x7d\x03\x7c\x03\x72\x1c\x74\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x03\x64\x03\x67\x01\xac\x04\xab\x02\x00\x00\x00\x00\x00\x00\x7d\x04\x09\x00\x7c\x04\x6a\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7d\x05\x6e\x02\x64\x08\x7d\x05\x74\x13\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x02\x7c\x05\xab\x02\x00\x00\x00\x00\x00\x00\x53\x00\x74\x04\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x02\x19\x00\x00\x00\x7d\x07\x7c\x07\x80\x01\x79\x08\x09\x00\x7c\x07\x6a\x14\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7d\x08\x7c\x08\x80\x0e\x74\x17\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x9b\x00\x64\x09\x9d\x02\xab\x01\x00\x00\x00\x00\x00\x00\x82\x01\x7c\x08\x53\x00\x23\x00\x74\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x72\x19\x7d\x06\x74\x11\x00\x00\x00\x00\x00\x00\x00\x00\x64\x05\x7c\x03\x9b\x02\x64\x06\x7c\x02\x9b\x02\x9d\x04\x7c\x02\xac\x07\xab\x02\x00\x00\x00\x00\x00\x00\x7c\x06\x82\x02\x64\x08\x7d\x06\x7e\x06\x77\x01\x77\x00\x78\x03\x59\x00\x77\x01\x23\x00\x74\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x72\x10\x01\x00\x74\x17\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x9b\x00\x64\x0a\x9d\x02\xab\x01\x00\x00\x00\x00\x00\x00\x64\x08\x82\x02\x77\x00\x78\x03\x59\x00\x77\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[44];
+ }
+const_str__incompatible_extension_module_restrictions = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 43,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_incompatible_extension_module_restrictions",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[1384];
+ }
+importlib_util_toplevel_consts_19_consts_1 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 1383,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x41\x20\x63\x6f\x6e\x74\x65\x78\x74\x20\x6d\x61\x6e\x61\x67\x65\x72\x20\x74\x68\x61\x74\x20\x63\x61\x6e\x20\x74\x65\x6d\x70\x6f\x72\x61\x72\x69\x6c\x79\x20\x73\x6b\x69\x70\x20\x74\x68\x65\x20\x63\x6f\x6d\x70\x61\x74\x69\x62\x69\x6c\x69\x74\x79\x20\x63\x68\x65\x63\x6b\x2e\x0a\x0a\x20\x20\x20\x20\x4e\x4f\x54\x45\x3a\x20\x54\x68\x69\x73\x20\x66\x75\x6e\x63\x74\x69\x6f\x6e\x20\x69\x73\x20\x6d\x65\x61\x6e\x74\x20\x74\x6f\x20\x61\x63\x63\x6f\x6d\x6d\x6f\x64\x61\x74\x65\x20\x61\x6e\x20\x75\x6e\x75\x73\x75\x61\x6c\x20\x63\x61\x73\x65\x3b\x20\x6f\x6e\x65\x0a\x20\x20\x20\x20\x77\x68\x69\x63\x68\x20\x69\x73\x20\x6c\x69\x6b\x65\x6c\x79\x20\x74\x6f\x20\x65\x76\x65\x6e\x74\x75\x61\x6c\x6c\x79\x20\x67\x6f\x20\x61\x77\x61\x79\x2e\x20\x20\x54\x68\x65\x72\x65\x27\x73\x20\x69\x73\x20\x61\x20\x70\x72\x65\x74\x74\x79\x20\x67\x6f\x6f\x64\x0a\x20\x20\x20\x20\x63\x68\x61\x6e\x63\x65\x20\x74\x68\x69\x73\x20\x69\x73\x20\x6e\x6f\x74\x20\x77\x68\x61\x74\x20\x79\x6f\x75\x20\x77\x65\x72\x65\x20\x6c\x6f\x6f\x6b\x69\x6e\x67\x20\x66\x6f\x72\x2e\x0a\x0a\x20\x20\x20\x20\x57\x41\x52\x4e\x49\x4e\x47\x3a\x20\x55\x73\x69\x6e\x67\x20\x74\x68\x69\x73\x20\x66\x75\x6e\x63\x74\x69\x6f\x6e\x20\x74\x6f\x20\x64\x69\x73\x61\x62\x6c\x65\x20\x74\x68\x65\x20\x63\x68\x65\x63\x6b\x20\x63\x61\x6e\x20\x6c\x65\x61\x64\x20\x74\x6f\x0a\x20\x20\x20\x20\x75\x6e\x65\x78\x70\x65\x63\x74\x65\x64\x20\x62\x65\x68\x61\x76\x69\x6f\x72\x20\x61\x6e\x64\x20\x65\x76\x65\x6e\x20\x63\x72\x61\x73\x68\x65\x73\x2e\x20\x20\x49\x74\x20\x73\x68\x6f\x75\x6c\x64\x20\x6f\x6e\x6c\x79\x20\x62\x65\x20\x75\x73\x65\x64\x20\x64\x75\x72\x69\x6e\x67\x0a\x20\x20\x20\x20\x65\x78\x74\x65\x6e\x73\x69\x6f\x6e\x20\x6d\x6f\x64\x75\x6c\x65\x20\x64\x65\x76\x65\x6c\x6f\x70\x6d\x65\x6e\x74\x2e\x0a\x0a\x20\x20\x20\x20\x49\x66\x20\x22\x64\x69\x73\x61\x62\x6c\x65\x5f\x63\x68\x65\x63\x6b\x22\x20\x69\x73\x20\x54\x72\x75\x65\x20\x74\x68\x65\x6e\x20\x74\x68\x65\x20\x63\x6f\x6d\x70\x61\x74\x69\x62\x69\x6c\x69\x74\x79\x20\x63\x68\x65\x63\x6b\x20\x77\x69\x6c\x6c\x20\x6e\x6f\x74\x0a\x20\x20\x20\x20\x68\x61\x70\x70\x65\x6e\x20\x77\x68\x69\x6c\x65\x20\x74\x68\x65\x20\x63\x6f\x6e\x74\x65\x78\x74\x20\x6d\x61\x6e\x61\x67\x65\x72\x20\x69\x73\x20\x61\x63\x74\x69\x76\x65\x2e\x20\x20\x4f\x74\x68\x65\x72\x77\x69\x73\x65\x20\x74\x68\x65\x20\x63\x68\x65\x63\x6b\x0a\x20\x20\x20\x20\x2a\x77\x69\x6c\x6c\x2a\x20\x68\x61\x70\x70\x65\x6e\x2e\x0a\x0a\x20\x20\x20\x20\x4e\x6f\x72\x6d\x61\x6c\x6c\x79\x2c\x20\x65\x78\x74\x65\x6e\x73\x69\x6f\x6e\x73\x20\x74\x68\x61\x74\x20\x64\x6f\x20\x6e\x6f\x74\x20\x73\x75\x70\x70\x6f\x72\x74\x20\x6d\x75\x6c\x74\x69\x70\x6c\x65\x20\x69\x6e\x74\x65\x72\x70\x72\x65\x74\x65\x72\x73\x0a\x20\x20\x20\x20\x6d\x61\x79\x20\x6e\x6f\x74\x20\x62\x65\x20\x69\x6d\x70\x6f\x72\x74\x65\x64\x20\x69\x6e\x20\x61\x20\x73\x75\x62\x69\x6e\x74\x65\x72\x70\x72\x65\x74\x65\x72\x2e\x20\x20\x54\x68\x61\x74\x20\x69\x6d\x70\x6c\x69\x65\x73\x20\x6d\x6f\x64\x75\x6c\x65\x73\x0a\x20\x20\x20\x20\x74\x68\x61\x74\x20\x64\x6f\x20\x6e\x6f\x74\x20\x69\x6d\x70\x6c\x65\x6d\x65\x6e\x74\x20\x6d\x75\x6c\x74\x69\x2d\x70\x68\x61\x73\x65\x20\x69\x6e\x69\x74\x20\x6f\x72\x20\x74\x68\x61\x74\x20\x65\x78\x70\x6c\x69\x63\x69\x74\x6c\x79\x20\x6f\x66\x20\x6f\x75\x74\x2e\x0a\x0a\x20\x20\x20\x20\x4c\x69\x6b\x65\x77\x69\x73\x65\x20\x66\x6f\x72\x20\x6d\x6f\x64\x75\x6c\x65\x73\x20\x69\x6d\x70\x6f\x72\x74\x20\x69\x6e\x20\x61\x20\x73\x75\x62\x69\x6e\x74\x65\x72\x70\x65\x74\x65\x72\x20\x77\x69\x74\x68\x20\x69\x74\x73\x20\x6f\x77\x6e\x20\x47\x49\x4c\x0a\x20\x20\x20\x20\x77\x68\x65\x6e\x20\x74\x68\x65\x20\x65\x78\x74\x65\x6e\x73\x69\x6f\x6e\x20\x64\x6f\x65\x73\x20\x6e\x6f\x74\x20\x73\x75\x70\x70\x6f\x72\x74\x20\x61\x20\x70\x65\x72\x2d\x69\x6e\x74\x65\x72\x70\x72\x65\x74\x65\x72\x20\x47\x49\x4c\x2e\x20\x20\x54\x68\x69\x73\x0a\x20\x20\x20\x20\x69\x6d\x70\x6c\x69\x65\x73\x20\x74\x68\x65\x20\x6d\x6f\x64\x75\x6c\x65\x20\x64\x6f\x65\x73\x20\x6e\x6f\x74\x20\x68\x61\x76\x65\x20\x61\x20\x50\x79\x5f\x6d\x6f\x64\x5f\x6d\x75\x6c\x74\x69\x70\x6c\x65\x5f\x69\x6e\x74\x65\x72\x70\x72\x65\x74\x65\x72\x73\x20\x73\x6c\x6f\x74\x0a\x20\x20\x20\x20\x73\x65\x74\x20\x74\x6f\x20\x50\x79\x5f\x4d\x4f\x44\x5f\x50\x45\x52\x5f\x49\x4e\x54\x45\x52\x50\x52\x45\x54\x45\x52\x5f\x47\x49\x4c\x5f\x53\x55\x50\x50\x4f\x52\x54\x45\x44\x2e\x0a\x0a\x20\x20\x20\x20\x49\x6e\x20\x62\x6f\x74\x68\x20\x63\x61\x73\x65\x73\x2c\x20\x74\x68\x69\x73\x20\x63\x6f\x6e\x74\x65\x78\x74\x20\x6d\x61\x6e\x61\x67\x65\x72\x20\x6d\x61\x79\x20\x62\x65\x20\x75\x73\x65\x64\x20\x74\x6f\x20\x74\x65\x6d\x70\x6f\x72\x61\x72\x69\x6c\x79\x0a\x20\x20\x20\x20\x64\x69\x73\x61\x62\x6c\x65\x20\x74\x68\x65\x20\x63\x68\x65\x63\x6b\x20\x66\x6f\x72\x20\x63\x6f\x6d\x70\x61\x74\x69\x62\x6c\x65\x20\x65\x78\x74\x65\x6e\x73\x69\x6f\x6e\x20\x6d\x6f\x64\x75\x6c\x65\x73\x2e\x0a\x0a\x20\x20\x20\x20\x59\x6f\x75\x20\x63\x61\x6e\x20\x67\x65\x74\x20\x74\x68\x65\x20\x73\x61\x6d\x65\x20\x65\x66\x66\x65\x63\x74\x20\x61\x73\x20\x74\x68\x69\x73\x20\x66\x75\x6e\x63\x74\x69\x6f\x6e\x20\x62\x79\x20\x69\x6d\x70\x6c\x65\x6d\x65\x6e\x74\x69\x6e\x67\x20\x74\x68\x65\x0a\x20\x20\x20\x20\x62\x61\x73\x69\x63\x20\x69\x6e\x74\x65\x72\x66\x61\x63\x65\x20\x6f\x66\x20\x6d\x75\x6c\x74\x69\x2d\x70\x68\x61\x73\x65\x20\x69\x6e\x69\x74\x20\x28\x50\x45\x50\x20\x34\x38\x39\x29\x20\x61\x6e\x64\x20\x6c\x79\x69\x6e\x67\x20\x61\x62\x6f\x75\x74\x0a\x20\x20\x20\x20\x73\x75\x70\x70\x6f\x72\x74\x20\x66\x6f\x72\x20\x6d\x75\x6c\x69\x74\x70\x6c\x65\x20\x69\x6e\x74\x65\x72\x70\x72\x65\x74\x65\x72\x73\x20\x28\x6f\x72\x20\x70\x65\x72\x2d\x69\x6e\x74\x65\x72\x70\x72\x65\x74\x65\x72\x20\x47\x49\x4c\x29\x2e\x0a\x20\x20\x20\x20",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[14];
+ }
+const_str_disable_check = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 13,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "disable_check",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+importlib_util_toplevel_consts_19_consts_2_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & const_str_bool._ascii.ob_base,
+ & const_str_disable_check._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[53];
+ }
+importlib_util_toplevel_consts_19_consts_2_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 52,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_incompatible_extension_module_restrictions.__init__",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[16];
+ }
+importlib_util_toplevel_consts_19_consts_2_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 15,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xdc\x1d\x21\xa0\x2d\xd3\x1d\x30\x88\x04\xd5\x08\x1a",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+importlib_util_toplevel_consts_19_consts_2_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ &_Py_ID(self),
+ & const_str_disable_check._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(36)
+importlib_util_toplevel_consts_19_consts_2 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 18,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_1_consts._object.ob_base.ob_base,
+ .co_names = & importlib_util_toplevel_consts_19_consts_2_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 1,
+ .co_framesize = 5 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 3,
+ .co_firstlineno = 151,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 2,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 721,
+ .co_localsplusnames = & importlib_util_toplevel_consts_19_consts_2_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_14_consts_2_localspluskinds.ob_base.ob_base,
+ .co_filename = & importlib_util_toplevel_consts_15_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__init__),
+ .co_qualname = & importlib_util_toplevel_consts_19_consts_2_qualname._ascii.ob_base,
+ .co_linetable = & importlib_util_toplevel_consts_19_consts_2_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\xab\x01\x00\x00\x00\x00\x00\x00\x7c\x00\x5f\x01\x00\x00\x00\x00\x00\x00\x00\x00\x79\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[40];
+ }
+const_str__override_multi_interp_extensions_check = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 39,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_override_multi_interp_extensions_check",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[4];
+ }_object;
+ }
+importlib_util_toplevel_consts_19_consts_3_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_item = {
+ & const_str__imp._ascii.ob_base,
+ & const_str__override_multi_interp_extensions_check._ascii.ob_base,
+ & const_str_override._ascii.ob_base,
+ & const_str_old._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[54];
+ }
+importlib_util_toplevel_consts_19_consts_3_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 53,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_incompatible_extension_module_restrictions.__enter__",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[30];
+ }
+importlib_util_toplevel_consts_19_consts_3_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 29,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xdc\x13\x17\xd7\x13\x3f\xd1\x13\x3f\xc0\x04\xc7\x0d\xc1\x0d\xd3\x13\x4e\x88\x04\x8c\x08\xd8\x0f\x13\x88\x0b",
+};
+static
+ struct _PyCode_DEF(78)
+importlib_util_toplevel_consts_19_consts_3 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 39,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_1_consts._object.ob_base.ob_base,
+ .co_names = & importlib_util_toplevel_consts_19_consts_3_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 4 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 3,
+ .co_firstlineno = 154,
+ .co_nlocalsplus = 1,
+ .co_nlocals = 1,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 722,
+ .co_localsplusnames = & importlib__bootstrap_toplevel_consts_7_consts_2_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_characters[32]),
+ .co_filename = & importlib_util_toplevel_consts_15_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__enter__),
+ .co_qualname = & importlib_util_toplevel_consts_19_consts_3_qualname._ascii.ob_base,
+ .co_linetable = & importlib_util_toplevel_consts_19_consts_3_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x6a\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7c\x00\x5f\x03\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+importlib_util_toplevel_consts_19_consts_4_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ & const_str_old._ascii.ob_base,
+ & const_str__imp._ascii.ob_base,
+ & const_str__override_multi_interp_extensions_check._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[53];
+ }
+importlib_util_toplevel_consts_19_consts_4_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 52,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_incompatible_extension_module_restrictions.__exit__",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[31];
+ }
+importlib_util_toplevel_consts_19_consts_4_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 30,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xd8\x0e\x12\x8f\x68\x89\x68\x88\x03\xd8\x0c\x10\x88\x48\xdc\x08\x0c\xd7\x08\x34\xd1\x08\x34\xb0\x53\xd5\x08\x39",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+importlib_util_toplevel_consts_19_consts_4_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ &_Py_ID(self),
+ &_Py_ID(args),
+ & const_str_old._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(74)
+importlib_util_toplevel_consts_19_consts_4 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 37,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_1_consts._object.ob_base.ob_base,
+ .co_names = & importlib_util_toplevel_consts_19_consts_4_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 7,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 6 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 3,
+ .co_firstlineno = 158,
+ .co_nlocalsplus = 3,
+ .co_nlocals = 3,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 723,
+ .co_localsplusnames = & importlib_util_toplevel_consts_19_consts_4_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_3_localspluskinds.ob_base.ob_base,
+ .co_filename = & importlib_util_toplevel_consts_15_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__exit__),
+ .co_qualname = & importlib_util_toplevel_consts_19_consts_4_qualname._ascii.ob_base,
+ .co_linetable = & importlib_util_toplevel_consts_19_consts_4_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7d\x02\x7c\x00\x60\x00\x74\x03\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x02\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x79\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+importlib_util_toplevel_consts_19_consts_5_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ Py_None,
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + -1],
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 1],
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+importlib_util_toplevel_consts_19_consts_5_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & const_str_disable_check._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[53];
+ }
+importlib_util_toplevel_consts_19_consts_5_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 52,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_incompatible_extension_module_restrictions.override",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[22];
+ }
+importlib_util_toplevel_consts_19_consts_5_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 21,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xe0\x15\x19\xd7\x15\x27\xd2\x15\x27\x88\x72\xd0\x08\x2e\xa8\x51\xd0\x08\x2e",
+};
+static
+ struct _PyCode_DEF(34)
+importlib_util_toplevel_consts_19_consts_5 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 17,
+ },
+ .co_consts = & importlib_util_toplevel_consts_19_consts_5_consts._object.ob_base.ob_base,
+ .co_names = & importlib_util_toplevel_consts_19_consts_5_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 2 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 1,
+ .co_firstlineno = 163,
+ .co_nlocalsplus = 1,
+ .co_nlocals = 1,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 724,
+ .co_localsplusnames = & importlib__bootstrap_toplevel_consts_7_consts_2_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_characters[32]),
+ .co_filename = & importlib_util_toplevel_consts_15_filename._ascii.ob_base,
+ .co_name = & const_str_override._ascii.ob_base,
+ .co_qualname = & importlib_util_toplevel_consts_19_consts_5_qualname._ascii.ob_base,
+ .co_linetable = & importlib_util_toplevel_consts_19_consts_5_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x72\x02\x64\x01\x53\x00\x64\x02\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[7];
+ }_object;
+ }
+importlib_util_toplevel_consts_19_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 7,
+ },
+ .ob_item = {
+ & const_str__incompatible_extension_module_restrictions._ascii.ob_base,
+ & importlib_util_toplevel_consts_19_consts_1._ascii.ob_base,
+ & importlib_util_toplevel_consts_19_consts_2.ob_base.ob_base,
+ & importlib_util_toplevel_consts_19_consts_3.ob_base.ob_base,
+ & importlib_util_toplevel_consts_19_consts_4.ob_base.ob_base,
+ & importlib_util_toplevel_consts_19_consts_5.ob_base.ob_base,
+ Py_None,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[9];
+ }_object;
+ }
+importlib_util_toplevel_consts_19_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 9,
+ },
+ .ob_item = {
+ &_Py_ID(__name__),
+ &_Py_ID(__module__),
+ &_Py_ID(__qualname__),
+ &_Py_ID(__doc__),
+ &_Py_ID(__init__),
+ &_Py_ID(__enter__),
+ &_Py_ID(__exit__),
+ & const_str_property._ascii.ob_base,
+ & const_str_override._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[43];
+ }
+importlib_util_toplevel_consts_19_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 42,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x84\x00\xf1\x02\x1d\x05\x08\xf2\x3e\x01\x05\x31\xf2\x06\x02\x05\x14\xf2\x08\x03\x05\x3a\xf0\x0a\x00\x06\x0e\xf1\x02\x01\x05\x2f\xf3\x03\x00\x06\x0e\xf1\x02\x01\x05\x2f",
+};
+static
+ struct _PyCode_DEF(50)
+importlib_util_toplevel_consts_19 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 25,
+ },
+ .co_consts = & importlib_util_toplevel_consts_19_consts._object.ob_base.ob_base,
+ .co_names = & importlib_util_toplevel_consts_19_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 0,
+ .co_argcount = 0,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 2 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 2,
+ .co_firstlineno = 119,
+ .co_nlocalsplus = 0,
+ .co_nlocals = 0,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 725,
+ .co_localsplusnames = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_filename = & importlib_util_toplevel_consts_15_filename._ascii.ob_base,
+ .co_name = & const_str__incompatible_extension_module_restrictions._ascii.ob_base,
+ .co_qualname = & const_str__incompatible_extension_module_restrictions._ascii.ob_base,
+ .co_linetable = & importlib_util_toplevel_consts_19_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x65\x00\x5a\x01\x64\x00\x5a\x02\x64\x01\x5a\x03\x64\x02\x84\x00\x5a\x04\x64\x03\x84\x00\x5a\x05\x64\x04\x84\x00\x5a\x06\x65\x07\x64\x05\x84\x00\xab\x00\x00\x00\x00\x00\x00\x00\x5a\x08\x79\x06",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[12];
+ }
+const_str__LazyModule = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 11,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_LazyModule",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[76];
+ }
+importlib_util_toplevel_consts_21_consts_1 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 75,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "A subclass of the module type which triggers loading upon attribute access.",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[57];
+ }
+importlib_util_toplevel_consts_21_consts_2_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 56,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Trigger the load of the module and return the attribute.",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[19];
+ }
+importlib_util_toplevel_consts_21_consts_2_consts_2 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 18,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "module object for ",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[47];
+ }
+importlib_util_toplevel_consts_21_consts_2_consts_3 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 46,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = " substituted in sys.modules during a lazy load",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[4];
+ }_object;
+ }
+importlib_util_toplevel_consts_21_consts_2_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_item = {
+ & importlib_util_toplevel_consts_21_consts_2_consts_0._ascii.ob_base,
+ &_Py_ID(__dict__),
+ & importlib_util_toplevel_consts_21_consts_2_consts_2._ascii.ob_base,
+ & importlib_util_toplevel_consts_21_consts_2_consts_3._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[6];
+ }
+const_str_types = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 5,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "types",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[11];
+ }
+const_str_ModuleType = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 10,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "ModuleType",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[16];
+ }_object;
+ }
+importlib_util_toplevel_consts_21_consts_2_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 16,
+ },
+ .ob_item = {
+ & const_str_types._ascii.ob_base,
+ & const_str_ModuleType._ascii.ob_base,
+ &_Py_ID(__class__),
+ &_Py_ID(__spec__),
+ &_Py_ID(name),
+ & const_str_loader_state._ascii.ob_base,
+ &_Py_ID(__dict__),
+ &_Py_ID(items),
+ &_Py_ID(id),
+ & const_str_loader._ascii.ob_base,
+ & const_str_exec_module._ascii.ob_base,
+ & const_str_sys._ascii.ob_base,
+ &_Py_ID(modules),
+ & const_str_ValueError._ascii.ob_base,
+ & const_str_update._ascii.ob_base,
+ &_Py_ID(getattr),
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[29];
+ }
+importlib_util_toplevel_consts_21_consts_2_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 28,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_LazyModule.__getattribute__",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[284];
+ }
+importlib_util_toplevel_consts_21_consts_2_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 283,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf4\x0a\x00\x1a\x1f\xd7\x19\x29\xd1\x19\x29\x88\x04\x8c\x0e\xf0\x06\x00\x19\x1d\x9f\x0d\x99\x0d\xd7\x18\x2a\xd1\x18\x2a\x88\x0d\xf0\x06\x00\x16\x1a\x97\x5d\x91\x5d\xd7\x15\x2f\xd1\x15\x2f\xb0\x0a\xd1\x15\x3b\x88\x0a\xd8\x14\x18\x97\x4d\x91\x4d\x88\x09\xd8\x18\x1a\x88\x0d\xd8\x1a\x23\x9f\x2f\x99\x2f\xd3\x1a\x2b\xf2\x00\x06\x09\x2b\x89\x4a\x88\x43\x90\x15\xf0\x06\x00\x10\x13\x98\x2a\xd1\x0f\x24\xd8\x25\x2a\x90\x0d\x98\x63\xd2\x10\x22\xdc\x11\x13\x90\x49\x98\x63\x91\x4e\xd3\x11\x23\xa4\x72\xa8\x2a\xb0\x53\xa9\x2f\xd3\x27\x3a\xd3\x11\x3a\xd8\x25\x2a\x90\x0d\x98\x63\xd2\x10\x22\xf0\x0d\x06\x09\x2b\xf0\x0e\x00\x09\x0d\x8f\x0d\x89\x0d\xd7\x08\x1c\xd1\x08\x1c\xd7\x08\x28\xd1\x08\x28\xa8\x14\xd4\x08\x2e\xf0\x06\x00\x0c\x19\x9c\x43\x9f\x4b\x99\x4b\xd1\x0b\x27\xdc\x0f\x11\x90\x24\x8b\x78\x9c\x32\x9c\x63\x9f\x6b\x99\x6b\xa8\x2d\xd1\x1e\x38\xd3\x1b\x39\xd2\x0f\x39\xdc\x16\x20\xd0\x23\x35\xb0\x6d\xd0\x35\x46\xf0\x00\x02\x47\x01\x29\xf0\x00\x02\x22\x29\xf3\x00\x02\x17\x2a\xf0\x00\x02\x11\x2a\xf0\x0a\x00\x09\x0d\x8f\x0d\x89\x0d\xd7\x08\x1c\xd1\x08\x1c\x98\x5d\xd4\x08\x2b\xdc\x0f\x16\x90\x74\x98\x54\xd3\x0f\x22\xd0\x08\x22",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[5];
+ }
+const_str_attr = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 4,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "attr",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[14];
+ }
+const_str_original_name = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 13,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "original_name",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[11];
+ }
+const_str_attrs_then = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 10,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "attrs_then",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[10];
+ }
+const_str_attrs_now = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 9,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "attrs_now",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[14];
+ }
+const_str_attrs_updated = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 13,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "attrs_updated",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[8];
+ }_object;
+ }
+importlib_util_toplevel_consts_21_consts_2_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 8,
+ },
+ .ob_item = {
+ &_Py_ID(self),
+ & const_str_attr._ascii.ob_base,
+ & const_str_original_name._ascii.ob_base,
+ & const_str_attrs_then._ascii.ob_base,
+ & const_str_attrs_now._ascii.ob_base,
+ & const_str_attrs_updated._ascii.ob_base,
+ &_Py_ID(key),
+ &_Py_ID(value),
+ },
+ },
+};
+static
+ struct _PyCode_DEF(602)
+importlib_util_toplevel_consts_21_consts_2 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 301,
+ },
+ .co_consts = & importlib_util_toplevel_consts_21_consts_2_consts._object.ob_base.ob_base,
+ .co_names = & importlib_util_toplevel_consts_21_consts_2_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 14 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 6,
+ .co_firstlineno = 172,
+ .co_nlocalsplus = 8,
+ .co_nlocals = 8,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 726,
+ .co_localsplusnames = & importlib_util_toplevel_consts_21_consts_2_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_13_localspluskinds.ob_base.ob_base,
+ .co_filename = & importlib_util_toplevel_consts_15_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__getattribute__),
+ .co_qualname = & importlib_util_toplevel_consts_21_consts_2_qualname._ascii.ob_base,
+ .co_linetable = & importlib_util_toplevel_consts_21_consts_2_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x5f\x02\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x6a\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7d\x02\x7c\x00\x6a\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x01\x19\x00\x00\x00\x7d\x03\x7c\x00\x6a\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7d\x04\x69\x00\x7d\x05\x7c\x04\x6a\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x44\x00\x5d\x32\x00\x00\x5c\x02\x00\x00\x7d\x06\x7d\x07\x7c\x06\x7c\x03\x76\x01\x72\x06\x7c\x07\x7c\x05\x7c\x06\x3c\x00\x00\x00\x8c\x10\x74\x11\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x04\x7c\x06\x19\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x74\x11\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x03\x7c\x06\x19\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x6b\x37\x00\x00\x73\x01\x8c\x2e\x7c\x07\x7c\x05\x7c\x06\x3c\x00\x00\x00\x8c\x34\x04\x00\x7c\x00\x6a\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x15\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x7c\x02\x74\x16\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x76\x00\x72\x37\x74\x11\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x74\x11\x00\x00\x00\x00\x00\x00\x00\x00\x74\x16\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x02\x19\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x6b\x37\x00\x00\x72\x0f\x74\x1b\x00\x00\x00\x00\x00\x00\x00\x00\x64\x02\x7c\x02\x9b\x02\x64\x03\x9d\x03\xab\x01\x00\x00\x00\x00\x00\x00\x82\x01\x7c\x00\x6a\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x1d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x05\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x74\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x7c\x01\xab\x02\x00\x00\x00\x00\x00\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[48];
+ }
+importlib_util_toplevel_consts_21_consts_3_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 47,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Trigger the load and then perform the deletion.",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+importlib_util_toplevel_consts_21_consts_3_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & importlib_util_toplevel_consts_21_consts_3_consts_0._ascii.ob_base,
+ Py_None,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[8];
+ }
+const_str_delattr = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 7,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "delattr",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+importlib_util_toplevel_consts_21_consts_3_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ &_Py_ID(__getattribute__),
+ & const_str_delattr._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[24];
+ }
+importlib_util_toplevel_consts_21_consts_3_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 23,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_LazyModule.__delattr__",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[29];
+ }
+importlib_util_toplevel_consts_21_consts_3_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 28,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf0\x08\x00\x09\x0d\xd7\x08\x1d\xd1\x08\x1d\x98\x64\xd4\x08\x23\xdc\x08\x0f\x90\x04\x90\x64\xd5\x08\x1b",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+importlib_util_toplevel_consts_21_consts_3_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ &_Py_ID(self),
+ & const_str_attr._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(62)
+importlib_util_toplevel_consts_21_consts_3 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 31,
+ },
+ .co_consts = & importlib_util_toplevel_consts_21_consts_3_consts._object.ob_base.ob_base,
+ .co_names = & importlib_util_toplevel_consts_21_consts_3_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 6 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 206,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 2,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 727,
+ .co_localsplusnames = & importlib_util_toplevel_consts_21_consts_3_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_14_consts_2_localspluskinds.ob_base.ob_base,
+ .co_filename = & importlib_util_toplevel_consts_15_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__delattr__),
+ .co_qualname = & importlib_util_toplevel_consts_21_consts_3_qualname._ascii.ob_base,
+ .co_linetable = & importlib_util_toplevel_consts_21_consts_3_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x00\x6a\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x74\x03\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x7c\x01\xab\x02\x00\x00\x00\x00\x00\x00\x01\x00\x79\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[5];
+ }_object;
+ }
+importlib_util_toplevel_consts_21_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 5,
+ },
+ .ob_item = {
+ & const_str__LazyModule._ascii.ob_base,
+ & importlib_util_toplevel_consts_21_consts_1._ascii.ob_base,
+ & importlib_util_toplevel_consts_21_consts_2.ob_base.ob_base,
+ & importlib_util_toplevel_consts_21_consts_3.ob_base.ob_base,
+ Py_None,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[6];
+ }_object;
+ }
+importlib_util_toplevel_consts_21_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 6,
+ },
+ .ob_item = {
+ &_Py_ID(__name__),
+ &_Py_ID(__module__),
+ &_Py_ID(__qualname__),
+ &_Py_ID(__doc__),
+ &_Py_ID(__getattribute__),
+ &_Py_ID(__delattr__),
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[17];
+ }
+importlib_util_toplevel_consts_21_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 16,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x84\x00\xe1\x04\x55\xf2\x04\x20\x05\x23\xf3\x44\x01\x05\x05\x1c",
+};
+static
+ struct _PyCode_DEF(28)
+importlib_util_toplevel_consts_21 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 14,
+ },
+ .co_consts = & importlib_util_toplevel_consts_21_consts._object.ob_base.ob_base,
+ .co_names = & importlib_util_toplevel_consts_21_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 0,
+ .co_argcount = 0,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 1 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 1,
+ .co_firstlineno = 168,
+ .co_nlocalsplus = 0,
+ .co_nlocals = 0,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 728,
+ .co_localsplusnames = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_filename = & importlib_util_toplevel_consts_15_filename._ascii.ob_base,
+ .co_name = & const_str__LazyModule._ascii.ob_base,
+ .co_qualname = & const_str__LazyModule._ascii.ob_base,
+ .co_linetable = & importlib_util_toplevel_consts_21_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x65\x00\x5a\x01\x64\x00\x5a\x02\x64\x01\x5a\x03\x64\x02\x84\x00\x5a\x04\x64\x03\x84\x00\x5a\x05\x79\x04",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[11];
+ }
+const_str_LazyLoader = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 10,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "LazyLoader",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[76];
+ }
+importlib_util_toplevel_consts_23_consts_1 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 75,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "A loader that creates a module which defers loading until attribute access.",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[33];
+ }
+importlib_util_toplevel_consts_23_consts_2_consts_2 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 32,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "loader must define exec_module()",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+importlib_util_toplevel_consts_23_consts_2_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ Py_None,
+ & const_str_exec_module._ascii.ob_base,
+ & importlib_util_toplevel_consts_23_consts_2_consts_2._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+importlib_util_toplevel_consts_23_consts_2_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & const_str_hasattr._ascii.ob_base,
+ & const_str_TypeError._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[21];
+ }
+const_str___check_eager_loader = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 20,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "__check_eager_loader",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[32];
+ }
+importlib_util_toplevel_consts_23_consts_2_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 31,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "LazyLoader.__check_eager_loader",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[30];
+ }
+importlib_util_toplevel_consts_23_consts_2_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 29,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xe4\x0f\x16\x90\x76\x98\x7d\xd4\x0f\x2d\xdc\x12\x1b\xd0\x1c\x3e\xd3\x12\x3f\xd0\x0c\x3f\xf0\x03\x00\x10\x2e",
+};
+static
+ struct _PyCode_DEF(50)
+importlib_util_toplevel_consts_23_consts_2 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 25,
+ },
+ .co_consts = & importlib_util_toplevel_consts_23_consts_2_consts._object.ob_base.ob_base,
+ .co_names = & importlib_util_toplevel_consts_23_consts_2_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 5 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 218,
+ .co_nlocalsplus = 1,
+ .co_nlocals = 1,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 729,
+ .co_localsplusnames = & importlib__bootstrap_toplevel_consts_33_consts_4._object.ob_base.ob_base,
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_characters[32]),
+ .co_filename = & importlib_util_toplevel_consts_15_filename._ascii.ob_base,
+ .co_name = & const_str___check_eager_loader._ascii.ob_base,
+ .co_qualname = & importlib_util_toplevel_consts_23_consts_2_qualname._ascii.ob_base,
+ .co_linetable = & importlib_util_toplevel_consts_23_consts_2_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x64\x01\xab\x02\x00\x00\x00\x00\x00\x00\x73\x0b\x74\x03\x00\x00\x00\x00\x00\x00\x00\x00\x64\x02\xab\x01\x00\x00\x00\x00\x00\x00\x82\x01\x79\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[63];
+ }
+importlib_util_toplevel_consts_23_consts_3_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 62,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Construct a callable which returns the eager loader made lazy.",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[37];
+ }
+importlib_util_toplevel_consts_23_consts_3_consts_1_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 36,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "LazyLoader.factory.<locals>.<lambda>",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[23];
+ }
+importlib_util_toplevel_consts_23_consts_3_consts_1_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 22,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\xf8\x80\x00\xa1\x73\xa9\x36\xb0\x34\xd0\x2b\x42\xb8\x36\xd1\x2b\x42\xd3\x27\x43\x80\x00",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[4];
+ }_object;
+ }
+importlib_util_toplevel_consts_23_consts_3_consts_1_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_item = {
+ &_Py_ID(args),
+ & const_str_kwargs._ascii.ob_base,
+ & const_str_cls._ascii.ob_base,
+ & const_str_loader._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[5];
+ }
+importlib_util_toplevel_consts_23_consts_3_consts_1_localspluskinds = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x20\x20\x80\x80",
+};
+static
+ struct _PyCode_DEF(32)
+importlib_util_toplevel_consts_23_consts_3_consts_1 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 16,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_1_consts._object.ob_base.ob_base,
+ .co_names = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 31,
+ .co_argcount = 0,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 11 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 7,
+ .co_firstlineno = 227,
+ .co_nlocalsplus = 4,
+ .co_nlocals = 2,
+ .co_ncellvars = 0,
+ .co_nfreevars = 2,
+ .co_version = 730,
+ .co_localsplusnames = & importlib_util_toplevel_consts_23_consts_3_consts_1_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib_util_toplevel_consts_23_consts_3_consts_1_localspluskinds.ob_base.ob_base,
+ .co_filename = & importlib_util_toplevel_consts_15_filename._ascii.ob_base,
+ .co_name = &_Py_STR(anon_lambda),
+ .co_qualname = & importlib_util_toplevel_consts_23_consts_3_consts_1_qualname._ascii.ob_base,
+ .co_linetable = & importlib_util_toplevel_consts_23_consts_3_consts_1_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x95\x02\x97\x00\x02\x00\x89\x02\x02\x00\x89\x03\x7c\x00\x69\x00\x7c\x01\xa4\x01\x8e\x01\xab\x01\x00\x00\x00\x00\x00\x00\x53\x00",
+ ._co_firsttraceable = 1,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+importlib_util_toplevel_consts_23_consts_3_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & importlib_util_toplevel_consts_23_consts_3_consts_0._ascii.ob_base,
+ & importlib_util_toplevel_consts_23_consts_3_consts_1.ob_base.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[32];
+ }
+const_str__LazyLoader__check_eager_loader = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 31,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_LazyLoader__check_eager_loader",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+importlib_util_toplevel_consts_23_consts_3_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & const_str__LazyLoader__check_eager_loader._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[19];
+ }
+importlib_util_toplevel_consts_23_consts_3_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 18,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "LazyLoader.factory",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[26];
+ }
+importlib_util_toplevel_consts_23_consts_3_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 25,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\xf9\x80\x00\xf0\x06\x00\x09\x0c\xd7\x08\x20\xd1\x08\x20\xa0\x16\xd4\x08\x28\xdc\x0f\x43\xd0\x08\x43",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+importlib_util_toplevel_consts_23_consts_3_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & const_str_cls._ascii.ob_base,
+ & const_str_loader._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[3];
+ }
+importlib_util_toplevel_consts_23_consts_3_localspluskinds = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_shash = -1,
+ .ob_sval = "``",
+};
+static
+ struct _PyCode_DEF(52)
+importlib_util_toplevel_consts_23_consts_3 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 26,
+ },
+ .co_consts = & importlib_util_toplevel_consts_23_consts_3_consts._object.ob_base.ob_base,
+ .co_names = & importlib_util_toplevel_consts_23_consts_3_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 5 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 3,
+ .co_firstlineno = 223,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 2,
+ .co_ncellvars = 2,
+ .co_nfreevars = 0,
+ .co_version = 731,
+ .co_localsplusnames = & importlib_util_toplevel_consts_23_consts_3_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib_util_toplevel_consts_23_consts_3_localspluskinds.ob_base.ob_base,
+ .co_filename = & importlib_util_toplevel_consts_15_filename._ascii.ob_base,
+ .co_name = &_Py_ID(factory),
+ .co_qualname = & importlib_util_toplevel_consts_23_consts_3_qualname._ascii.ob_base,
+ .co_linetable = & importlib_util_toplevel_consts_23_consts_3_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x87\x00\x87\x01\x97\x00\x89\x00\x6a\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x89\x01\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x88\x00\x88\x01\x66\x02\x64\x01\x84\x08\x53\x00",
+ ._co_firsttraceable = 2,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+importlib_util_toplevel_consts_23_consts_4_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & const_str__LazyLoader__check_eager_loader._ascii.ob_base,
+ & const_str_loader._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[20];
+ }
+importlib_util_toplevel_consts_23_consts_4_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 19,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "LazyLoader.__init__",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[24];
+ }
+importlib_util_toplevel_consts_23_consts_4_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 23,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xd8\x08\x0c\xd7\x08\x21\xd1\x08\x21\xa0\x26\xd4\x08\x29\xd8\x16\x1c\x88\x04\x8d\x0b",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+importlib_util_toplevel_consts_23_consts_4_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ &_Py_ID(self),
+ & const_str_loader._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(52)
+importlib_util_toplevel_consts_23_consts_4 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 26,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_1_consts._object.ob_base.ob_base,
+ .co_names = & importlib_util_toplevel_consts_23_consts_4_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 5 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 3,
+ .co_firstlineno = 229,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 2,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 732,
+ .co_localsplusnames = & importlib_util_toplevel_consts_23_consts_4_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_14_consts_2_localspluskinds.ob_base.ob_base,
+ .co_filename = & importlib_util_toplevel_consts_15_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__init__),
+ .co_qualname = & importlib_util_toplevel_consts_23_consts_4_qualname._ascii.ob_base,
+ .co_linetable = & importlib_util_toplevel_consts_23_consts_4_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x00\x6a\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x7c\x01\x7c\x00\x5f\x01\x00\x00\x00\x00\x00\x00\x00\x00\x79\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+importlib_util_toplevel_consts_23_consts_5_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & const_str_loader._ascii.ob_base,
+ & const_str_create_module._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[25];
+ }
+importlib_util_toplevel_consts_23_consts_5_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 24,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "LazyLoader.create_module",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[24];
+ }
+importlib_util_toplevel_consts_23_consts_5_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 23,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xd8\x0f\x13\x8f\x7b\x89\x7b\xd7\x0f\x28\xd1\x0f\x28\xa8\x14\xd3\x0f\x2e\xd0\x08\x2e",
+};
+static
+ struct _PyCode_DEF(56)
+importlib_util_toplevel_consts_23_consts_5 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 28,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_1_consts._object.ob_base.ob_base,
+ .co_names = & importlib_util_toplevel_consts_23_consts_5_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 5 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 3,
+ .co_firstlineno = 233,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 2,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 733,
+ .co_localsplusnames = & importlib__bootstrap_external_toplevel_consts_54_consts_3_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_14_consts_2_localspluskinds.ob_base.ob_base,
+ .co_filename = & importlib_util_toplevel_consts_15_filename._ascii.ob_base,
+ .co_name = & const_str_create_module._ascii.ob_base,
+ .co_qualname = & importlib_util_toplevel_consts_23_consts_5_qualname._ascii.ob_base,
+ .co_linetable = & importlib_util_toplevel_consts_23_consts_5_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\xab\x01\x00\x00\x00\x00\x00\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[29];
+ }
+importlib_util_toplevel_consts_23_consts_6_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 28,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Make the module load lazily.",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[4];
+ }_object;
+ }
+importlib_util_toplevel_consts_23_consts_6_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_item = {
+ & importlib_util_toplevel_consts_23_consts_6_consts_0._ascii.ob_base,
+ &_Py_ID(__dict__),
+ &_Py_ID(__class__),
+ Py_None,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[8];
+ }_object;
+ }
+importlib_util_toplevel_consts_23_consts_6_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 8,
+ },
+ .ob_item = {
+ & const_str_loader._ascii.ob_base,
+ &_Py_ID(__spec__),
+ &_Py_ID(__loader__),
+ &_Py_ID(__dict__),
+ &_Py_ID(copy),
+ &_Py_ID(__class__),
+ & const_str_loader_state._ascii.ob_base,
+ & const_str__LazyModule._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[23];
+ }
+importlib_util_toplevel_consts_23_consts_6_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 22,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "LazyLoader.exec_module",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[97];
+ }
+importlib_util_toplevel_consts_23_consts_6_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 96,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xe0\x21\x25\xa7\x1b\xa1\x1b\x88\x06\x8f\x0f\x89\x0f\xd4\x08\x1e\xd8\x1c\x20\x9f\x4b\x99\x4b\x88\x06\xd4\x08\x19\xf0\x0a\x00\x18\x1a\x88\x0c\xd8\x23\x29\xa7\x3f\xa1\x3f\xd7\x23\x37\xd1\x23\x37\xd3\x23\x39\x88\x0c\x90\x5a\xd1\x08\x20\xd8\x24\x2a\xd7\x24\x34\xd1\x24\x34\x88\x0c\x90\x5b\xd1\x08\x21\xd8\x27\x33\x88\x06\x8f\x0f\x89\x0f\xd4\x08\x24\xdc\x1b\x26\x88\x06\xd5\x08\x18",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+importlib_util_toplevel_consts_23_consts_6_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ &_Py_ID(self),
+ &_Py_ID(module),
+ & const_str_loader_state._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(240)
+importlib_util_toplevel_consts_23_consts_6 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 120,
+ },
+ .co_consts = & importlib_util_toplevel_consts_23_consts_6_consts._object.ob_base.ob_base,
+ .co_names = & importlib_util_toplevel_consts_23_consts_6_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 6 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 3,
+ .co_firstlineno = 236,
+ .co_nlocalsplus = 3,
+ .co_nlocals = 3,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 734,
+ .co_localsplusnames = & importlib_util_toplevel_consts_23_consts_6_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_3_localspluskinds.ob_base.ob_base,
+ .co_filename = & importlib_util_toplevel_consts_15_filename._ascii.ob_base,
+ .co_name = & const_str_exec_module._ascii.ob_base,
+ .co_qualname = & importlib_util_toplevel_consts_23_consts_6_qualname._ascii.ob_base,
+ .co_linetable = & importlib_util_toplevel_consts_23_consts_6_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x5f\x02\x00\x00\x00\x00\x00\x00\x00\x00\x69\x00\x7d\x02\x7c\x01\x6a\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x7c\x02\x64\x01\x3c\x00\x00\x00\x7c\x01\x6a\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x02\x64\x02\x3c\x00\x00\x00\x7c\x02\x7c\x01\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x06\x00\x00\x00\x00\x00\x00\x00\x00\x74\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x5f\x05\x00\x00\x00\x00\x00\x00\x00\x00\x79\x03",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[8];
+ }_object;
+ }
+importlib_util_toplevel_consts_23_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 8,
+ },
+ .ob_item = {
+ & const_str_LazyLoader._ascii.ob_base,
+ & importlib_util_toplevel_consts_23_consts_1._ascii.ob_base,
+ & importlib_util_toplevel_consts_23_consts_2.ob_base.ob_base,
+ & importlib_util_toplevel_consts_23_consts_3.ob_base.ob_base,
+ & importlib_util_toplevel_consts_23_consts_4.ob_base.ob_base,
+ & importlib_util_toplevel_consts_23_consts_5.ob_base.ob_base,
+ & importlib_util_toplevel_consts_23_consts_6.ob_base.ob_base,
+ Py_None,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[11];
+ }_object;
+ }
+importlib_util_toplevel_consts_23_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 11,
+ },
+ .ob_item = {
+ &_Py_ID(__name__),
+ &_Py_ID(__module__),
+ &_Py_ID(__qualname__),
+ &_Py_ID(__doc__),
+ & const_str_staticmethod._ascii.ob_base,
+ & const_str__LazyLoader__check_eager_loader._ascii.ob_base,
+ & const_str_classmethod._ascii.ob_base,
+ &_Py_ID(factory),
+ &_Py_ID(__init__),
+ & const_str_create_module._ascii.ob_base,
+ & const_str_exec_module._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[63];
+ }
+importlib_util_toplevel_consts_23_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 62,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x84\x00\xe1\x04\x55\xe0\x05\x11\xf1\x02\x02\x05\x40\x01\xf3\x03\x00\x06\x12\xf0\x02\x02\x05\x40\x01\xf0\x08\x00\x06\x11\xf1\x02\x03\x05\x44\x01\xf3\x03\x00\x06\x11\xf0\x02\x03\x05\x44\x01\xf2\x0a\x02\x05\x1d\xf2\x08\x01\x05\x2f\xf3\x06\x0c\x05\x27",
+};
+static
+ struct _PyCode_DEF(66)
+importlib_util_toplevel_consts_23 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 33,
+ },
+ .co_consts = & importlib_util_toplevel_consts_23_consts._object.ob_base.ob_base,
+ .co_names = & importlib_util_toplevel_consts_23_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 0,
+ .co_argcount = 0,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 2 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 2,
+ .co_firstlineno = 214,
+ .co_nlocalsplus = 0,
+ .co_nlocals = 0,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 735,
+ .co_localsplusnames = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_filename = & importlib_util_toplevel_consts_15_filename._ascii.ob_base,
+ .co_name = & const_str_LazyLoader._ascii.ob_base,
+ .co_qualname = & const_str_LazyLoader._ascii.ob_base,
+ .co_linetable = & importlib_util_toplevel_consts_23_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x65\x00\x5a\x01\x64\x00\x5a\x02\x64\x01\x5a\x03\x65\x04\x64\x02\x84\x00\xab\x00\x00\x00\x00\x00\x00\x00\x5a\x05\x65\x06\x64\x03\x84\x00\xab\x00\x00\x00\x00\x00\x00\x00\x5a\x07\x64\x04\x84\x00\x5a\x08\x64\x05\x84\x00\x5a\x09\x64\x06\x84\x00\x5a\x0a\x79\x07",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[26];
+ }_object;
+ }
+importlib_util_toplevel_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 26,
+ },
+ .ob_item = {
+ & importlib_util_toplevel_consts_0._ascii.ob_base,
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 1],
+ & importlib_util_toplevel_consts_2._object.ob_base.ob_base,
+ & importlib_util_toplevel_consts_3._object.ob_base.ob_base,
+ & importlib_util_toplevel_consts_4._object.ob_base.ob_base,
+ & importlib_util_toplevel_consts_5._object.ob_base.ob_base,
+ & importlib_util_toplevel_consts_6._object.ob_base.ob_base,
+ & importlib_util_toplevel_consts_7._object.ob_base.ob_base,
+ & importlib_util_toplevel_consts_8._object.ob_base.ob_base,
+ & importlib_util_toplevel_consts_9._object.ob_base.ob_base,
+ & importlib_util_toplevel_consts_10._object.ob_base.ob_base,
+ & importlib_util_toplevel_consts_11._object.ob_base.ob_base,
+ & importlib__bootstrap_external_toplevel_consts_72_consts_4_names._object.ob_base.ob_base,
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 0],
+ Py_None,
+ & importlib_util_toplevel_consts_15.ob_base.ob_base,
+ & importlib_util_toplevel_consts_16.ob_base.ob_base,
+ & importlib_util_toplevel_consts_17.ob_base.ob_base,
+ & importlib_util_toplevel_consts_18.ob_base.ob_base,
+ & importlib_util_toplevel_consts_19.ob_base.ob_base,
+ & const_str__incompatible_extension_module_restrictions._ascii.ob_base,
+ & importlib_util_toplevel_consts_21.ob_base.ob_base,
+ & const_str__LazyModule._ascii.ob_base,
+ & importlib_util_toplevel_consts_23.ob_base.ob_base,
+ & const_str_LazyLoader._ascii.ob_base,
+ & importlib__bootstrap_toplevel_consts_1_consts._object.ob_base.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[26];
+ }_object;
+ }
+importlib_util_toplevel_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 26,
+ },
+ .ob_item = {
+ &_Py_ID(__doc__),
+ & const_str__abc._ascii.ob_base,
+ & const_str_Loader._ascii.ob_base,
+ &_Py_ID(_bootstrap),
+ & const_str_module_from_spec._ascii.ob_base,
+ & const_str__resolve_name._ascii.ob_base,
+ & const_str_spec_from_loader._ascii.ob_base,
+ & const_str__find_spec._ascii.ob_base,
+ & const_str__bootstrap_external._ascii.ob_base,
+ & const_str_MAGIC_NUMBER._ascii.ob_base,
+ & const_str__RAW_MAGIC_NUMBER._ascii.ob_base,
+ & const_str_cache_from_source._ascii.ob_base,
+ & const_str_decode_source._ascii.ob_base,
+ & const_str_source_from_cache._ascii.ob_base,
+ & const_str_spec_from_file_location._ascii.ob_base,
+ & const_str__imp._ascii.ob_base,
+ & const_str_sys._ascii.ob_base,
+ & const_str_types._ascii.ob_base,
+ & const_str_source_hash._ascii.ob_base,
+ & const_str_resolve_name._ascii.ob_base,
+ & const_str__find_spec_from_path._ascii.ob_base,
+ & const_str_find_spec._ascii.ob_base,
+ & const_str__incompatible_extension_module_restrictions._ascii.ob_base,
+ & const_str_ModuleType._ascii.ob_base,
+ & const_str__LazyModule._ascii.ob_base,
+ & const_str_LazyLoader._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[114];
+ }
+importlib_util_toplevel_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 113,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\xf0\x03\x01\x01\x01\xd9\x00\x33\xdd\x00\x18\xdd\x00\x28\xdd\x00\x25\xdd\x00\x28\xdd\x00\x22\xdd\x00\x2d\xdd\x00\x32\xdd\x00\x32\xdd\x00\x2e\xdd\x00\x32\xdd\x00\x38\xe3\x00\x0b\xdb\x00\x0a\xdb\x00\x0c\xf2\x06\x02\x01\x3d\xf2\x0a\x0c\x01\x37\xf3\x1e\x1c\x01\x18\xf3\x3e\x2a\x01\x18\xf7\x62\x01\x2e\x01\x2f\xf1\x00\x2e\x01\x2f\xf4\x62\x01\x2b\x01\x1c\x90\x25\xd7\x12\x22\xd1\x12\x22\xf4\x00\x2b\x01\x1c\xf4\x5c\x01\x22\x01\x27\x90\x16\xf5\x00\x22\x01\x27",
+};
+static
+ struct _PyCode_DEF(276)
+importlib_util_toplevel = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 138,
+ },
+ .co_consts = & importlib_util_toplevel_consts._object.ob_base.ob_base,
+ .co_names = & importlib_util_toplevel_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 0,
+ .co_argcount = 0,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 5 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 5,
+ .co_firstlineno = 1,
+ .co_nlocalsplus = 0,
+ .co_nlocals = 0,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 736,
+ .co_localsplusnames = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_filename = & importlib_util_toplevel_consts_15_filename._ascii.ob_base,
+ .co_name = &_Py_STR(anon_module),
+ .co_qualname = &_Py_STR(anon_module),
+ .co_linetable = & importlib_util_toplevel_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x64\x00\x5a\x00\x64\x01\x64\x02\x6c\x01\x6d\x02\x5a\x02\x01\x00\x64\x01\x64\x03\x6c\x03\x6d\x04\x5a\x04\x01\x00\x64\x01\x64\x04\x6c\x03\x6d\x05\x5a\x05\x01\x00\x64\x01\x64\x05\x6c\x03\x6d\x06\x5a\x06\x01\x00\x64\x01\x64\x06\x6c\x03\x6d\x07\x5a\x07\x01\x00\x64\x01\x64\x07\x6c\x08\x6d\x09\x5a\x09\x01\x00\x64\x01\x64\x08\x6c\x08\x6d\x0a\x5a\x0a\x01\x00\x64\x01\x64\x09\x6c\x08\x6d\x0b\x5a\x0b\x01\x00\x64\x01\x64\x0a\x6c\x08\x6d\x0c\x5a\x0c\x01\x00\x64\x01\x64\x0b\x6c\x08\x6d\x0d\x5a\x0d\x01\x00\x64\x01\x64\x0c\x6c\x08\x6d\x0e\x5a\x0e\x01\x00\x64\x0d\x64\x0e\x6c\x0f\x5a\x0f\x64\x0d\x64\x0e\x6c\x10\x5a\x10\x64\x0d\x64\x0e\x6c\x11\x5a\x11\x64\x0f\x84\x00\x5a\x12\x64\x10\x84\x00\x5a\x13\x64\x19\x64\x11\x84\x01\x5a\x14\x64\x19\x64\x12\x84\x01\x5a\x15\x02\x00\x47\x00\x64\x13\x84\x00\x64\x14\xab\x02\x00\x00\x00\x00\x00\x00\x5a\x16\x02\x00\x47\x00\x64\x15\x84\x00\x64\x16\x65\x11\x6a\x2e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x03\x00\x00\x00\x00\x00\x00\x5a\x18\x02\x00\x47\x00\x64\x17\x84\x00\x64\x18\x65\x02\xab\x03\x00\x00\x00\x00\x00\x00\x5a\x19\x79\x0e",
+ ._co_firsttraceable = 0,
+};
+
+PyObject *
+_Py_get_importlib_util_toplevel(void)
+{
+ return Py_NewRef((PyObject *) &importlib_util_toplevel);
+}
+
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[58];
+ }
+importlib_machinery_toplevel_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 57,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "The machinery of importlib: finders, loaders, hooks, etc.",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+importlib_machinery_toplevel_consts_2 = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & const_str_ModuleSpec._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+importlib_machinery_toplevel_consts_3 = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & const_str_BuiltinImporter._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+importlib_machinery_toplevel_consts_4 = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & const_str_FrozenImporter._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[5];
+ }_object;
+ }
+importlib_machinery_toplevel_consts_5 = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 5,
+ },
+ .ob_item = {
+ & const_str_SOURCE_SUFFIXES._ascii.ob_base,
+ & const_str_DEBUG_BYTECODE_SUFFIXES._ascii.ob_base,
+ & const_str_OPTIMIZED_BYTECODE_SUFFIXES._ascii.ob_base,
+ & const_str_BYTECODE_SUFFIXES._ascii.ob_base,
+ & const_str_EXTENSION_SUFFIXES._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+importlib_machinery_toplevel_consts_6 = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & const_str_WindowsRegistryFinder._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+importlib_machinery_toplevel_consts_7 = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & const_str_PathFinder._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+importlib_machinery_toplevel_consts_8 = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & const_str_FileFinder._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+importlib_machinery_toplevel_consts_9 = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & const_str_SourceFileLoader._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+importlib_machinery_toplevel_consts_10 = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & const_str_SourcelessFileLoader._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+importlib_machinery_toplevel_consts_11 = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & const_str_ExtensionFileLoader._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+importlib_machinery_toplevel_consts_12 = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & const_str_NamespaceLoader._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[66];
+ }
+importlib_machinery_toplevel_consts_13_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 65,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Returns a list of all recognized module suffixes for this process",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+importlib_machinery_toplevel_consts_13_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & importlib_machinery_toplevel_consts_13_consts_0._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+importlib_machinery_toplevel_consts_13_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ & const_str_SOURCE_SUFFIXES._ascii.ob_base,
+ & const_str_BYTECODE_SUFFIXES._ascii.ob_base,
+ & const_str_EXTENSION_SUFFIXES._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[29];
+ }
+importlib_machinery_toplevel_consts_13_filename = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 28,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "<frozen importlib.machinery>",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[13];
+ }
+const_str_all_suffixes = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 12,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "all_suffixes",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[21];
+ }
+importlib_machinery_toplevel_consts_13_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 20,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xe4\x0b\x1a\xd4\x1d\x2e\xd1\x0b\x2e\xd4\x31\x43\xd1\x0b\x43\xd0\x04\x43",
+};
+static
+ struct _PyCode_DEF(42)
+importlib_machinery_toplevel_consts_13 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 21,
+ },
+ .co_consts = & importlib_machinery_toplevel_consts_13_consts._object.ob_base.ob_base,
+ .co_names = & importlib_machinery_toplevel_consts_13_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 0,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 2 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 2,
+ .co_firstlineno = 18,
+ .co_nlocalsplus = 0,
+ .co_nlocals = 0,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 737,
+ .co_localsplusnames = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_filename = & importlib_machinery_toplevel_consts_13_filename._ascii.ob_base,
+ .co_name = & const_str_all_suffixes._ascii.ob_base,
+ .co_qualname = & const_str_all_suffixes._ascii.ob_base,
+ .co_linetable = & importlib_machinery_toplevel_consts_13_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x74\x02\x00\x00\x00\x00\x00\x00\x00\x00\x7a\x00\x00\x00\x74\x04\x00\x00\x00\x00\x00\x00\x00\x00\x7a\x00\x00\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[15];
+ }_object;
+ }
+importlib_machinery_toplevel_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 15,
+ },
+ .ob_item = {
+ & importlib_machinery_toplevel_consts_0._ascii.ob_base,
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 1],
+ & importlib_machinery_toplevel_consts_2._object.ob_base.ob_base,
+ & importlib_machinery_toplevel_consts_3._object.ob_base.ob_base,
+ & importlib_machinery_toplevel_consts_4._object.ob_base.ob_base,
+ & importlib_machinery_toplevel_consts_5._object.ob_base.ob_base,
+ & importlib_machinery_toplevel_consts_6._object.ob_base.ob_base,
+ & importlib_machinery_toplevel_consts_7._object.ob_base.ob_base,
+ & importlib_machinery_toplevel_consts_8._object.ob_base.ob_base,
+ & importlib_machinery_toplevel_consts_9._object.ob_base.ob_base,
+ & importlib_machinery_toplevel_consts_10._object.ob_base.ob_base,
+ & importlib_machinery_toplevel_consts_11._object.ob_base.ob_base,
+ & importlib_machinery_toplevel_consts_12._object.ob_base.ob_base,
+ & importlib_machinery_toplevel_consts_13.ob_base.ob_base,
+ Py_None,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[19];
+ }_object;
+ }
+importlib_machinery_toplevel_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 19,
+ },
+ .ob_item = {
+ &_Py_ID(__doc__),
+ &_Py_ID(_bootstrap),
+ & const_str_ModuleSpec._ascii.ob_base,
+ & const_str_BuiltinImporter._ascii.ob_base,
+ & const_str_FrozenImporter._ascii.ob_base,
+ & const_str__bootstrap_external._ascii.ob_base,
+ & const_str_SOURCE_SUFFIXES._ascii.ob_base,
+ & const_str_DEBUG_BYTECODE_SUFFIXES._ascii.ob_base,
+ & const_str_OPTIMIZED_BYTECODE_SUFFIXES._ascii.ob_base,
+ & const_str_BYTECODE_SUFFIXES._ascii.ob_base,
+ & const_str_EXTENSION_SUFFIXES._ascii.ob_base,
+ & const_str_WindowsRegistryFinder._ascii.ob_base,
+ & const_str_PathFinder._ascii.ob_base,
+ & const_str_FileFinder._ascii.ob_base,
+ & const_str_SourceFileLoader._ascii.ob_base,
+ & const_str_SourcelessFileLoader._ascii.ob_base,
+ & const_str_ExtensionFileLoader._ascii.ob_base,
+ & const_str_NamespaceLoader._ascii.ob_base,
+ & const_str_all_suffixes._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[57];
+ }
+importlib_machinery_toplevel_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 56,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\xf0\x03\x01\x01\x01\xd9\x00\x3f\xe5\x00\x22\xdd\x00\x27\xdd\x00\x26\xf7\x02\x02\x01\x29\xf5\x00\x02\x01\x29\xf5\x06\x00\x01\x37\xdd\x00\x2b\xdd\x00\x2b\xdd\x00\x31\xdd\x00\x35\xdd\x00\x34\xdd\x00\x30\xf3\x06\x02\x01\x44\x01",
+};
+static
+ struct _PyCode_DEF(162)
+importlib_machinery_toplevel = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 81,
+ },
+ .co_consts = & importlib_machinery_toplevel_consts._object.ob_base.ob_base,
+ .co_names = & importlib_machinery_toplevel_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 0,
+ .co_argcount = 0,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 2 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 2,
+ .co_firstlineno = 1,
+ .co_nlocalsplus = 0,
+ .co_nlocals = 0,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 738,
+ .co_localsplusnames = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_filename = & importlib_machinery_toplevel_consts_13_filename._ascii.ob_base,
+ .co_name = &_Py_STR(anon_module),
+ .co_qualname = &_Py_STR(anon_module),
+ .co_linetable = & importlib_machinery_toplevel_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x64\x00\x5a\x00\x64\x01\x64\x02\x6c\x01\x6d\x02\x5a\x02\x01\x00\x64\x01\x64\x03\x6c\x01\x6d\x03\x5a\x03\x01\x00\x64\x01\x64\x04\x6c\x01\x6d\x04\x5a\x04\x01\x00\x64\x01\x64\x05\x6c\x05\x6d\x06\x5a\x06\x6d\x07\x5a\x07\x6d\x08\x5a\x08\x6d\x09\x5a\x09\x6d\x0a\x5a\x0a\x01\x00\x64\x01\x64\x06\x6c\x05\x6d\x0b\x5a\x0b\x01\x00\x64\x01\x64\x07\x6c\x05\x6d\x0c\x5a\x0c\x01\x00\x64\x01\x64\x08\x6c\x05\x6d\x0d\x5a\x0d\x01\x00\x64\x01\x64\x09\x6c\x05\x6d\x0e\x5a\x0e\x01\x00\x64\x01\x64\x0a\x6c\x05\x6d\x0f\x5a\x0f\x01\x00\x64\x01\x64\x0b\x6c\x05\x6d\x10\x5a\x10\x01\x00\x64\x01\x64\x0c\x6c\x05\x6d\x11\x5a\x11\x01\x00\x64\x0d\x84\x00\x5a\x12\x79\x0e",
+ ._co_firsttraceable = 0,
+};
+
+PyObject *
+_Py_get_importlib_machinery_toplevel(void)
+{
+ return Py_NewRef((PyObject *) &importlib_machinery_toplevel);
+}
+
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[347];
+ }
+runpy_toplevel_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 346,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x72\x75\x6e\x70\x79\x2e\x70\x79\x20\x2d\x20\x6c\x6f\x63\x61\x74\x69\x6e\x67\x20\x61\x6e\x64\x20\x72\x75\x6e\x6e\x69\x6e\x67\x20\x50\x79\x74\x68\x6f\x6e\x20\x63\x6f\x64\x65\x20\x75\x73\x69\x6e\x67\x20\x74\x68\x65\x20\x6d\x6f\x64\x75\x6c\x65\x20\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x0a\x0a\x50\x72\x6f\x76\x69\x64\x65\x73\x20\x73\x75\x70\x70\x6f\x72\x74\x20\x66\x6f\x72\x20\x6c\x6f\x63\x61\x74\x69\x6e\x67\x20\x61\x6e\x64\x20\x72\x75\x6e\x6e\x69\x6e\x67\x20\x50\x79\x74\x68\x6f\x6e\x20\x73\x63\x72\x69\x70\x74\x73\x20\x75\x73\x69\x6e\x67\x20\x74\x68\x65\x20\x50\x79\x74\x68\x6f\x6e\x0a\x6d\x6f\x64\x75\x6c\x65\x20\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x20\x69\x6e\x73\x74\x65\x61\x64\x20\x6f\x66\x20\x74\x68\x65\x20\x6e\x61\x74\x69\x76\x65\x20\x66\x69\x6c\x65\x73\x79\x73\x74\x65\x6d\x2e\x0a\x0a\x54\x68\x69\x73\x20\x61\x6c\x6c\x6f\x77\x73\x20\x50\x79\x74\x68\x6f\x6e\x20\x63\x6f\x64\x65\x20\x74\x6f\x20\x70\x6c\x61\x79\x20\x6e\x69\x63\x65\x6c\x79\x20\x77\x69\x74\x68\x20\x6e\x6f\x6e\x2d\x66\x69\x6c\x65\x73\x79\x73\x74\x65\x6d\x20\x62\x61\x73\x65\x64\x20\x50\x45\x50\x20\x33\x30\x32\x0a\x69\x6d\x70\x6f\x72\x74\x65\x72\x73\x20\x77\x68\x65\x6e\x20\x6c\x6f\x63\x61\x74\x69\x6e\x67\x20\x73\x75\x70\x70\x6f\x72\x74\x20\x73\x63\x72\x69\x70\x74\x73\x20\x61\x73\x20\x77\x65\x6c\x6c\x20\x61\x73\x20\x77\x68\x65\x6e\x20\x69\x6d\x70\x6f\x72\x74\x69\x6e\x67\x20\x6d\x6f\x64\x75\x6c\x65\x73\x2e\x0a",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[11];
+ }
+const_str_run_module = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 10,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "run_module",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[9];
+ }
+const_str_run_path = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 8,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "run_path",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[12];
+ }
+const_str__TempModule = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 11,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_TempModule",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[68];
+ }
+runpy_toplevel_consts_5_consts_1 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 67,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Temporarily replace a module in sys.modules with an empty namespace",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[9];
+ }
+const_str_mod_name = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 8,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "mod_name",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[14];
+ }
+const_str__saved_module = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 13,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_saved_module",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[4];
+ }_object;
+ }
+runpy_toplevel_consts_5_consts_2_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_item = {
+ & const_str_mod_name._ascii.ob_base,
+ & const_str_ModuleType._ascii.ob_base,
+ &_Py_ID(module),
+ & const_str__saved_module._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[15];
+ }
+runpy_toplevel_consts_5_consts_2_filename = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 14,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "<frozen runpy>",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[21];
+ }
+runpy_toplevel_consts_5_consts_2_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 20,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_TempModule.__init__",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[30];
+ }
+runpy_toplevel_consts_5_consts_2_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 29,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xd8\x18\x20\x88\x04\x8c\x0d\xdc\x16\x20\xa0\x18\xd3\x16\x2a\x88\x04\x8c\x0b\xd8\x1d\x1f\x88\x04\xd5\x08\x1a",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+runpy_toplevel_consts_5_consts_2_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ &_Py_ID(self),
+ & const_str_mod_name._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(64)
+runpy_toplevel_consts_5_consts_2 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 32,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_1_consts._object.ob_base.ob_base,
+ .co_names = & runpy_toplevel_consts_5_consts_2_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 5 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 3,
+ .co_firstlineno = 28,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 2,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 739,
+ .co_localsplusnames = & runpy_toplevel_consts_5_consts_2_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_14_consts_2_localspluskinds.ob_base.ob_base,
+ .co_filename = & runpy_toplevel_consts_5_consts_2_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__init__),
+ .co_qualname = & runpy_toplevel_consts_5_consts_2_qualname._ascii.ob_base,
+ .co_linetable = & runpy_toplevel_consts_5_consts_2_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x01\x7c\x00\x5f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x74\x03\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\xab\x01\x00\x00\x00\x00\x00\x00\x7c\x00\x5f\x02\x00\x00\x00\x00\x00\x00\x00\x00\x67\x00\x7c\x00\x5f\x03\x00\x00\x00\x00\x00\x00\x00\x00\x79\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[7];
+ }_object;
+ }
+runpy_toplevel_consts_5_consts_3_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 7,
+ },
+ .ob_item = {
+ & const_str_mod_name._ascii.ob_base,
+ & const_str__saved_module._ascii.ob_base,
+ &_Py_ID(append),
+ & const_str_sys._ascii.ob_base,
+ &_Py_ID(modules),
+ & const_str_KeyError._ascii.ob_base,
+ &_Py_ID(module),
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[22];
+ }
+runpy_toplevel_consts_5_consts_3_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 21,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_TempModule.__enter__",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[91];
+ }
+runpy_toplevel_consts_5_consts_3_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 90,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xd8\x13\x17\x97\x3d\x91\x3d\x88\x08\xf0\x02\x03\x09\x11\xd8\x0c\x10\xd7\x0c\x1e\xd1\x0c\x1e\xd7\x0c\x25\xd1\x0c\x25\xa4\x63\xa7\x6b\xa1\x6b\xb0\x28\xd1\x26\x3b\xd4\x0c\x3c\xf0\x06\x00\x21\x25\xa7\x0b\xa1\x0b\x8c\x03\x8f\x0b\x89\x0b\x90\x48\xd1\x08\x1d\xd8\x0f\x13\x88\x0b\xf8\xf4\x07\x00\x10\x18\xf2\x00\x01\x09\x11\xd9\x0c\x10\xf0\x03\x01\x09\x11\xfa",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[18];
+ }
+runpy_toplevel_consts_5_consts_3_exceptiontable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 17,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x8e\x2c\x41\x19\x00\xc1\x19\x09\x41\x25\x03\xc1\x24\x01\x41\x25\x03",
+};
+static
+ struct _PyCode_DEF(208)
+runpy_toplevel_consts_5_consts_3 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 104,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_1_consts._object.ob_base.ob_base,
+ .co_names = & runpy_toplevel_consts_5_consts_3_names._object.ob_base.ob_base,
+ .co_exceptiontable = & runpy_toplevel_consts_5_consts_3_exceptiontable.ob_base.ob_base,
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 6 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 33,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 2,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 740,
+ .co_localsplusnames = & runpy_toplevel_consts_5_consts_2_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_14_consts_2_localspluskinds.ob_base.ob_base,
+ .co_filename = & runpy_toplevel_consts_5_consts_2_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__enter__),
+ .co_qualname = & runpy_toplevel_consts_5_consts_3_qualname._ascii.ob_base,
+ .co_linetable = & runpy_toplevel_consts_5_consts_3_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7d\x01\x09\x00\x7c\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x74\x06\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x19\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x7c\x00\x6a\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x74\x06\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x3c\x00\x00\x00\x7c\x00\x53\x00\x23\x00\x74\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x72\x03\x01\x00\x59\x00\x8c\x2a\x77\x00\x78\x03\x59\x00\x77\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[4];
+ }_object;
+ }
+runpy_toplevel_consts_5_consts_4_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_item = {
+ & const_str__saved_module._ascii.ob_base,
+ & const_str_sys._ascii.ob_base,
+ &_Py_ID(modules),
+ & const_str_mod_name._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[21];
+ }
+runpy_toplevel_consts_5_consts_4_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 20,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_TempModule.__exit__",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[77];
+ }
+runpy_toplevel_consts_5_consts_4_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 76,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xd8\x0b\x0f\xd7\x0b\x1d\xd2\x0b\x1d\xd8\x29\x2d\xd7\x29\x3b\xd1\x29\x3b\xb8\x41\xd1\x29\x3e\x8c\x43\x8f\x4b\x89\x4b\x98\x04\x9f\x0d\x99\x0d\xd1\x0c\x26\xf0\x06\x00\x1e\x20\x88\x04\xd5\x08\x1a\xf4\x03\x00\x11\x14\x97\x0b\x91\x0b\x98\x44\x9f\x4d\x99\x4d\xd0\x10\x2a\xd8\x1d\x1f\x88\x04\xd5\x08\x1a",
+};
+static
+ struct _PyCode_DEF(196)
+runpy_toplevel_consts_5_consts_4 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 98,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_16_consts_2_consts._object.ob_base.ob_base,
+ .co_names = & runpy_toplevel_consts_5_consts_4_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 7,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 5 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 3,
+ .co_firstlineno = 42,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 2,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 741,
+ .co_localsplusnames = & importlib__bootstrap_toplevel_consts_30_consts_5_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_14_consts_2_localspluskinds.ob_base.ob_base,
+ .co_filename = & runpy_toplevel_consts_5_consts_2_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__exit__),
+ .co_qualname = & runpy_toplevel_consts_5_consts_4_qualname._ascii.ob_base,
+ .co_linetable = & runpy_toplevel_consts_5_consts_4_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x72\x32\x7c\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x01\x19\x00\x00\x00\x74\x02\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x6a\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3c\x00\x00\x00\x67\x00\x7c\x00\x5f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x79\x00\x74\x02\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x6a\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x67\x00\x7c\x00\x5f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x79\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[6];
+ }_object;
+ }
+runpy_toplevel_consts_5_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 6,
+ },
+ .ob_item = {
+ & const_str__TempModule._ascii.ob_base,
+ & runpy_toplevel_consts_5_consts_1._ascii.ob_base,
+ & runpy_toplevel_consts_5_consts_2.ob_base.ob_base,
+ & runpy_toplevel_consts_5_consts_3.ob_base.ob_base,
+ & runpy_toplevel_consts_5_consts_4.ob_base.ob_base,
+ Py_None,
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[21];
+ }
+runpy_toplevel_consts_5_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 20,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x84\x00\xd9\x04\x4d\xf2\x02\x03\x05\x20\xf2\x0a\x07\x05\x14\xf3\x12\x05\x05\x20",
+};
+static
+ struct _PyCode_DEF(34)
+runpy_toplevel_consts_5 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 17,
+ },
+ .co_consts = & runpy_toplevel_consts_5_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_toplevel_consts_9_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 0,
+ .co_argcount = 0,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 1 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 1,
+ .co_firstlineno = 26,
+ .co_nlocalsplus = 0,
+ .co_nlocals = 0,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 742,
+ .co_localsplusnames = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_filename = & runpy_toplevel_consts_5_consts_2_filename._ascii.ob_base,
+ .co_name = & const_str__TempModule._ascii.ob_base,
+ .co_qualname = & const_str__TempModule._ascii.ob_base,
+ .co_linetable = & runpy_toplevel_consts_5_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x65\x00\x5a\x01\x64\x00\x5a\x02\x64\x01\x5a\x03\x64\x02\x84\x00\x5a\x04\x64\x03\x84\x00\x5a\x05\x64\x04\x84\x00\x5a\x06\x79\x05",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[15];
+ }
+const_str__ModifiedArgv0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 14,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_ModifiedArgv0",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[13];
+ }
+const_str__saved_value = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 12,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_saved_value",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[10];
+ }
+const_str__sentinel = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 9,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_sentinel",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[4];
+ }_object;
+ }
+runpy_toplevel_consts_7_consts_1_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_item = {
+ &_Py_ID(value),
+ &_Py_ID(object),
+ & const_str__saved_value._ascii.ob_base,
+ & const_str__sentinel._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[24];
+ }
+runpy_toplevel_consts_7_consts_1_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 23,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_ModifiedArgv0.__init__",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[27];
+ }
+runpy_toplevel_consts_7_consts_1_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 26,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xd8\x15\x1a\x88\x04\x8c\x0a\xdc\x2d\x33\xab\x58\xd0\x08\x35\x88\x04\xd4\x08\x19\x98\x44\x9d\x4e",
+};
+static
+ struct _PyCode_DEF(62)
+runpy_toplevel_consts_7_consts_1 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 31,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_1_consts._object.ob_base.ob_base,
+ .co_names = & runpy_toplevel_consts_7_consts_1_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 5 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 3,
+ .co_firstlineno = 50,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 2,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 743,
+ .co_localsplusnames = & importlib__bootstrap_toplevel_consts_30_consts_11_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_14_consts_2_localspluskinds.ob_base.ob_base,
+ .co_filename = & runpy_toplevel_consts_5_consts_2_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__init__),
+ .co_qualname = & runpy_toplevel_consts_7_consts_1_qualname._ascii.ob_base,
+ .co_linetable = & runpy_toplevel_consts_7_consts_1_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x01\x7c\x00\x5f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x74\x03\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x78\x01\x7c\x00\x5f\x02\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x5f\x03\x00\x00\x00\x00\x00\x00\x00\x00\x79\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[31];
+ }
+runpy_toplevel_consts_7_consts_2_consts_1 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 30,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Already preserving saved value",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+runpy_toplevel_consts_7_consts_2_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ Py_None,
+ & runpy_toplevel_consts_7_consts_2_consts_1._ascii.ob_base,
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 0],
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[6];
+ }_object;
+ }
+runpy_toplevel_consts_7_consts_2_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 6,
+ },
+ .ob_item = {
+ & const_str__saved_value._ascii.ob_base,
+ & const_str__sentinel._ascii.ob_base,
+ & const_str_RuntimeError._ascii.ob_base,
+ & const_str_sys._ascii.ob_base,
+ &_Py_ID(argv),
+ &_Py_ID(value),
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[25];
+ }
+runpy_toplevel_consts_7_consts_2_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 24,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_ModifiedArgv0.__enter__",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[66];
+ }
+runpy_toplevel_consts_7_consts_2_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 65,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xd8\x0b\x0f\xd7\x0b\x1c\xd1\x0b\x1c\xa0\x44\xa7\x4e\xa1\x4e\xd1\x0b\x32\xdc\x12\x1e\xd0\x1f\x3f\xd3\x12\x40\xd0\x0c\x40\xdc\x1c\x1f\x9f\x48\x99\x48\xa0\x51\x99\x4b\x88\x04\xd4\x08\x19\xd8\x16\x1a\x97\x6a\x91\x6a\x8c\x03\x8f\x08\x89\x08\x90\x11\x8a\x0b",
+};
+static
+ struct _PyCode_DEF(180)
+runpy_toplevel_consts_7_consts_2 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 90,
+ },
+ .co_consts = & runpy_toplevel_consts_7_consts_2_consts._object.ob_base.ob_base,
+ .co_names = & runpy_toplevel_consts_7_consts_2_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 4 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 3,
+ .co_firstlineno = 54,
+ .co_nlocalsplus = 1,
+ .co_nlocals = 1,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 744,
+ .co_localsplusnames = & importlib__bootstrap_toplevel_consts_7_consts_2_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_characters[32]),
+ .co_filename = & runpy_toplevel_consts_5_consts_2_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__enter__),
+ .co_qualname = & runpy_toplevel_consts_7_consts_2_qualname._ascii.ob_base,
+ .co_linetable = & runpy_toplevel_consts_7_consts_2_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x75\x01\x72\x0b\x74\x05\x00\x00\x00\x00\x00\x00\x00\x00\x64\x01\xab\x01\x00\x00\x00\x00\x00\x00\x82\x01\x74\x06\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x02\x19\x00\x00\x00\x7c\x00\x5f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x6a\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x74\x06\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x02\x3c\x00\x00\x00\x79\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[5];
+ }_object;
+ }
+runpy_toplevel_consts_7_consts_3_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 5,
+ },
+ .ob_item = {
+ & const_str__sentinel._ascii.ob_base,
+ &_Py_ID(value),
+ & const_str__saved_value._ascii.ob_base,
+ & const_str_sys._ascii.ob_base,
+ &_Py_ID(argv),
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[24];
+ }
+runpy_toplevel_consts_7_consts_3_qualname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 23,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_ModifiedArgv0.__exit__",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[33];
+ }
+runpy_toplevel_consts_7_consts_3_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 32,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xd8\x15\x19\x97\x5e\x91\x5e\x88\x04\x8c\x0a\xd8\x16\x1a\xd7\x16\x27\xd1\x16\x27\x8c\x03\x8f\x08\x89\x08\x90\x11\x8a\x0b",
+};
+static
+ struct _PyCode_DEF(96)
+runpy_toplevel_consts_7_consts_3 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 48,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_16_consts_2_consts._object.ob_base.ob_base,
+ .co_names = & runpy_toplevel_consts_7_consts_3_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 7,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 5 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 3,
+ .co_firstlineno = 60,
+ .co_nlocalsplus = 2,
+ .co_nlocals = 2,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 745,
+ .co_localsplusnames = & importlib__bootstrap_toplevel_consts_30_consts_5_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_14_consts_2_localspluskinds.ob_base.ob_base,
+ .co_filename = & runpy_toplevel_consts_5_consts_2_filename._ascii.ob_base,
+ .co_name = &_Py_ID(__exit__),
+ .co_qualname = & runpy_toplevel_consts_7_consts_3_qualname._ascii.ob_base,
+ .co_linetable = & runpy_toplevel_consts_7_consts_3_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x5f\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x6a\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x74\x06\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x01\x3c\x00\x00\x00\x79\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[5];
+ }_object;
+ }
+runpy_toplevel_consts_7_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 5,
+ },
+ .ob_item = {
+ & const_str__ModifiedArgv0._ascii.ob_base,
+ & runpy_toplevel_consts_7_consts_1.ob_base.ob_base,
+ & runpy_toplevel_consts_7_consts_2.ob_base.ob_base,
+ & runpy_toplevel_consts_7_consts_3.ob_base.ob_base,
+ Py_None,
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[18];
+ }
+runpy_toplevel_consts_7_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 17,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x84\x00\xf2\x02\x02\x05\x36\xf2\x08\x04\x05\x21\xf3\x0c\x02\x05\x28",
+};
+static
+ struct _PyCode_DEF(30)
+runpy_toplevel_consts_7 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 15,
+ },
+ .co_consts = & runpy_toplevel_consts_7_consts._object.ob_base.ob_base,
+ .co_names = & importlib__bootstrap_toplevel_consts_18_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 0,
+ .co_argcount = 0,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 1 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 1,
+ .co_firstlineno = 49,
+ .co_nlocalsplus = 0,
+ .co_nlocals = 0,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 746,
+ .co_localsplusnames = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_filename = & runpy_toplevel_consts_5_consts_2_filename._ascii.ob_base,
+ .co_name = & const_str__ModifiedArgv0._ascii.ob_base,
+ .co_qualname = & const_str__ModifiedArgv0._ascii.ob_base,
+ .co_linetable = & runpy_toplevel_consts_7_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x65\x00\x5a\x01\x64\x00\x5a\x02\x64\x01\x84\x00\x5a\x03\x64\x02\x84\x00\x5a\x04\x64\x03\x84\x00\x5a\x05\x79\x04",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[42];
+ }
+runpy_toplevel_consts_9_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 41,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Helper to run code in nominated namespace",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[7];
+ }_object;
+ }
+runpy_toplevel_consts_9_consts_2 = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 7,
+ },
+ .ob_item = {
+ &_Py_ID(__name__),
+ &_Py_ID(__file__),
+ & const_str___cached__._ascii.ob_base,
+ &_Py_ID(__doc__),
+ &_Py_ID(__loader__),
+ &_Py_ID(__package__),
+ &_Py_ID(__spec__),
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+runpy_toplevel_consts_9_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ & runpy_toplevel_consts_9_consts_0._ascii.ob_base,
+ Py_None,
+ & runpy_toplevel_consts_9_consts_2._object.ob_base.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[6];
+ }_object;
+ }
+runpy_toplevel_consts_9_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 6,
+ },
+ .ob_item = {
+ & const_str_update._ascii.ob_base,
+ & const_str_loader._ascii.ob_base,
+ &_Py_ID(origin),
+ & const_str_cached._ascii.ob_base,
+ &_Py_ID(parent),
+ & const_str_exec._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[10];
+ }
+const_str__run_code = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 9,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_run_code",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[145];
+ }
+runpy_toplevel_consts_9_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 144,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf0\x08\x00\x08\x14\xd0\x07\x1f\xd8\x08\x13\xd7\x08\x1a\xd1\x08\x1a\x98\x3c\xd4\x08\x28\xd8\x07\x0f\xd0\x07\x17\xd8\x11\x15\x88\x06\xd8\x10\x1b\x88\x05\xd8\x11\x15\x89\x06\xe0\x11\x19\x97\x1f\x91\x1f\x88\x06\xd8\x10\x18\x97\x0f\x91\x0f\x88\x05\xd8\x11\x19\x97\x1f\x91\x1f\x88\x06\xd8\x0b\x13\xd0\x0b\x1b\xd8\x17\x1f\x97\x7f\x91\x7f\x88\x48\xd8\x04\x0f\xd7\x04\x16\xd1\x04\x16\xa0\x28\xd8\x22\x27\xd8\x24\x2a\xd8\x21\x25\xd8\x24\x2a\xd8\x25\x2d\xd8\x22\x2a\xf0\x0d\x00\x05\x17\xf4\x00\x06\x05\x2c\xf4\x0e\x00\x05\x09\x88\x14\x88\x7b\xd4\x04\x1b\xd8\x0b\x16\xd0\x04\x16",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[12];
+ }
+const_str_run_globals = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 11,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "run_globals",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[13];
+ }
+const_str_init_globals = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 12,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "init_globals",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[9];
+ }
+const_str_mod_spec = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 8,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "mod_spec",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[9];
+ }
+const_str_pkg_name = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 8,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "pkg_name",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[12];
+ }
+const_str_script_name = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 11,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "script_name",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[6];
+ }
+const_str_fname = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 5,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "fname",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[10];
+ }_object;
+ }
+runpy_toplevel_consts_9_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 10,
+ },
+ .ob_item = {
+ &_Py_ID(code),
+ & const_str_run_globals._ascii.ob_base,
+ & const_str_init_globals._ascii.ob_base,
+ & const_str_mod_name._ascii.ob_base,
+ & const_str_mod_spec._ascii.ob_base,
+ & const_str_pkg_name._ascii.ob_base,
+ & const_str_script_name._ascii.ob_base,
+ & const_str_loader._ascii.ob_base,
+ & const_str_fname._ascii.ob_base,
+ & const_str_cached._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(234)
+runpy_toplevel_consts_9 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 117,
+ },
+ .co_consts = & runpy_toplevel_consts_9_consts._object.ob_base.ob_base,
+ .co_names = & runpy_toplevel_consts_9_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 7,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 19 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 9,
+ .co_firstlineno = 65,
+ .co_nlocalsplus = 10,
+ .co_nlocals = 10,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 747,
+ .co_localsplusnames = & runpy_toplevel_consts_9_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_46_consts_3_localspluskinds.ob_base.ob_base,
+ .co_filename = & runpy_toplevel_consts_5_consts_2_filename._ascii.ob_base,
+ .co_name = & const_str__run_code._ascii.ob_base,
+ .co_qualname = & const_str__run_code._ascii.ob_base,
+ .co_linetable = & runpy_toplevel_consts_9_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x02\x81\x11\x7c\x01\x6a\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x02\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x7c\x04\x80\x07\x64\x01\x7d\x07\x7c\x06\x7d\x08\x64\x01\x7d\x09\x6e\x32\x7c\x04\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7d\x07\x7c\x04\x6a\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7d\x08\x7c\x04\x6a\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7d\x09\x7c\x05\x80\x0c\x7c\x04\x6a\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7d\x05\x7c\x01\x6a\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x03\x7c\x08\x7c\x09\x64\x01\x7c\x07\x7c\x05\x7c\x04\xac\x02\xab\x07\x00\x00\x00\x00\x00\x00\x01\x00\x74\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x7c\x01\xab\x02\x00\x00\x00\x00\x00\x00\x01\x00\x7c\x01\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[54];
+ }
+runpy_toplevel_consts_10_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 53,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Helper to run code in new namespace with sys modified",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+runpy_toplevel_consts_10_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & runpy_toplevel_consts_10_consts_0._ascii.ob_base,
+ Py_None,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[7];
+ }_object;
+ }
+runpy_toplevel_consts_10_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 7,
+ },
+ .ob_item = {
+ &_Py_ID(origin),
+ & const_str__TempModule._ascii.ob_base,
+ & const_str__ModifiedArgv0._ascii.ob_base,
+ &_Py_ID(module),
+ &_Py_ID(__dict__),
+ & const_str__run_code._ascii.ob_base,
+ &_Py_ID(copy),
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[17];
+ }
+const_str__run_module_code = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 16,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_run_module_code",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[149];
+ }
+runpy_toplevel_consts_10_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 148,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf0\x08\x00\x1c\x24\xd0\x1b\x2b\x89\x4b\xb0\x18\xb7\x1f\xb1\x1f\x80\x45\xdc\x09\x14\x90\x58\xd3\x09\x1e\xf0\x00\x03\x05\x3d\xa0\x2b\xac\x7e\xb8\x65\xd3\x2f\x44\xf1\x00\x03\x05\x3d\xd8\x16\x21\xd7\x16\x28\xd1\x16\x28\xd7\x16\x31\xd1\x16\x31\x88\x0b\xdc\x08\x11\x90\x24\x98\x0b\xa0\x5c\xd8\x12\x1a\x98\x48\xa0\x68\xb0\x0b\xf4\x03\x01\x09\x3d\xf7\x05\x03\x05\x3d\xf7\x00\x03\x05\x3d\xf0\x0c\x00\x0c\x17\xd7\x0b\x1b\xd1\x0b\x1b\xd3\x0b\x1d\xd0\x04\x1d\xf7\x0d\x03\x05\x3d\xf0\x00\x03\x05\x3d\xfa\xf7\x00\x03\x05\x3d\xf0\x0c\x00\x0c\x17\xd7\x0b\x1b\xd1\x0b\x1b\xd3\x0b\x1d\xd0\x04\x1d\xfa",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[35];
+ }
+runpy_toplevel_consts_10_exceptiontable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 34,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x9c\x0c\x41\x3c\x03\xa8\x28\x41\x30\x05\xc1\x10\x08\x41\x3c\x03\xc1\x30\x05\x41\x39\x09\xc1\x35\x07\x41\x3c\x03\xc1\x3c\x05\x42\x14\x07",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[12];
+ }
+const_str_temp_module = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 11,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "temp_module",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[12];
+ }
+const_str_mod_globals = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 11,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "mod_globals",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[9];
+ }_object;
+ }
+runpy_toplevel_consts_10_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 9,
+ },
+ .ob_item = {
+ &_Py_ID(code),
+ & const_str_init_globals._ascii.ob_base,
+ & const_str_mod_name._ascii.ob_base,
+ & const_str_mod_spec._ascii.ob_base,
+ & const_str_pkg_name._ascii.ob_base,
+ & const_str_script_name._ascii.ob_base,
+ & const_str_fname._ascii.ob_base,
+ & const_str_temp_module._ascii.ob_base,
+ & const_str_mod_globals._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(302)
+runpy_toplevel_consts_10 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 151,
+ },
+ .co_consts = & runpy_toplevel_consts_10_consts._object.ob_base.ob_base,
+ .co_names = & runpy_toplevel_consts_10_names._object.ob_base.ob_base,
+ .co_exceptiontable = & runpy_toplevel_consts_10_exceptiontable.ob_base.ob_base,
+ .co_flags = 3,
+ .co_argcount = 6,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 20 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 11,
+ .co_firstlineno = 91,
+ .co_nlocalsplus = 9,
+ .co_nlocals = 9,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 748,
+ .co_localsplusnames = & runpy_toplevel_consts_10_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_61_localspluskinds.ob_base.ob_base,
+ .co_filename = & runpy_toplevel_consts_5_consts_2_filename._ascii.ob_base,
+ .co_name = & const_str__run_module_code._ascii.ob_base,
+ .co_qualname = & const_str__run_module_code._ascii.ob_base,
+ .co_linetable = & runpy_toplevel_consts_10_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x03\x80\x02\x7c\x05\x6e\x0b\x7c\x03\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7d\x06\x74\x03\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x02\xab\x01\x00\x00\x00\x00\x00\x00\x35\x00\x7d\x07\x74\x05\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x06\xab\x01\x00\x00\x00\x00\x00\x00\x35\x00\x01\x00\x7c\x07\x6a\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7d\x08\x74\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x7c\x08\x7c\x01\x7c\x02\x7c\x03\x7c\x04\x7c\x05\xab\x07\x00\x00\x00\x00\x00\x00\x01\x00\x64\x01\x64\x01\x64\x01\xab\x02\x00\x00\x00\x00\x00\x00\x01\x00\x64\x01\x64\x01\x64\x01\xab\x02\x00\x00\x00\x00\x00\x00\x01\x00\x7f\x08\x6a\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x53\x00\x23\x00\x31\x00\x73\x01\x77\x02\x01\x00\x59\x00\x01\x00\x01\x00\x8c\x21\x78\x03\x59\x00\x77\x01\x23\x00\x31\x00\x73\x01\x77\x02\x01\x00\x59\x00\x01\x00\x01\x00\x7f\x08\x6a\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x53\x00\x78\x03\x59\x00\x77\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[36];
+ }
+runpy_toplevel_consts_11_consts_2 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 35,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Relative module names not supported",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+runpy_toplevel_consts_11_consts_5 = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & const_str_warn._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[155];
+ }
+runpy_toplevel_consts_11_consts_6 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 154,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "{mod_name!r} found in sys.modules after import of package {pkg_name!r}, but prior to execution of {mod_name!r}; this may result in unpredictable behaviour",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+runpy_toplevel_consts_11_consts_7 = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & const_str_mod_name._ascii.ob_base,
+ & const_str_pkg_name._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[59];
+ }
+runpy_toplevel_consts_11_consts_8 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 58,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Error while finding module specification for {!r} ({}: {})",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[14];
+ }
+runpy_toplevel_consts_11_consts_10 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 13,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = ". Try using '",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[15];
+ }
+runpy_toplevel_consts_11_consts_12 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 14,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "' instead of '",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[22];
+ }
+runpy_toplevel_consts_11_consts_13 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 21,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "' as the module name.",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[19];
+ }
+runpy_toplevel_consts_11_consts_14 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 18,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "No module named %s",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[10];
+ }
+runpy_toplevel_consts_11_consts_16 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 9,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = ".__main__",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[38];
+ }
+runpy_toplevel_consts_11_consts_17 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 37,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Cannot use package as __main__ module",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[46];
+ }
+runpy_toplevel_consts_11_consts_19 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 45,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = " is a package and cannot be directly executed",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[49];
+ }
+runpy_toplevel_consts_11_consts_20 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 48,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "%r is a namespace package and cannot be executed",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[32];
+ }
+runpy_toplevel_consts_11_consts_21 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 31,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "No code object available for %s",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[22];
+ }_object;
+ }
+runpy_toplevel_consts_11_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 22,
+ },
+ .ob_item = {
+ Py_None,
+ &_Py_STR(dot),
+ & runpy_toplevel_consts_11_consts_2._ascii.ob_base,
+ &_Py_ID(__path__),
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 0],
+ & runpy_toplevel_consts_11_consts_5._object.ob_base.ob_base,
+ & runpy_toplevel_consts_11_consts_6._ascii.ob_base,
+ & runpy_toplevel_consts_11_consts_7._object.ob_base.ob_base,
+ & runpy_toplevel_consts_11_consts_8._ascii.ob_base,
+ & importlib__bootstrap_toplevel_consts_46_consts_5_consts_12._ascii.ob_base,
+ & runpy_toplevel_consts_11_consts_10._ascii.ob_base,
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + -3],
+ & runpy_toplevel_consts_11_consts_12._ascii.ob_base,
+ & runpy_toplevel_consts_11_consts_13._ascii.ob_base,
+ & runpy_toplevel_consts_11_consts_14._ascii.ob_base,
+ &_Py_ID(__main__),
+ & runpy_toplevel_consts_11_consts_16._ascii.ob_base,
+ & runpy_toplevel_consts_11_consts_17._ascii.ob_base,
+ & importlib__bootstrap_toplevel_consts_55_consts_3._ascii.ob_base,
+ & runpy_toplevel_consts_11_consts_19._ascii.ob_base,
+ & runpy_toplevel_consts_11_consts_20._ascii.ob_base,
+ & runpy_toplevel_consts_11_consts_21._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[15];
+ }
+const_str_RuntimeWarning = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 14,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "RuntimeWarning",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[5];
+ }
+const_str_util = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 4,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "util",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[20];
+ }
+const_str__get_module_details = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 19,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_get_module_details",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[26];
+ }_object;
+ }
+runpy_toplevel_consts_11_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 26,
+ },
+ .ob_item = {
+ & const_str_startswith._ascii.ob_base,
+ & const_str_rpartition._ascii.ob_base,
+ &_Py_ID(__import__),
+ & const_str_ImportError._ascii.ob_base,
+ &_Py_ID(name),
+ & const_str_sys._ascii.ob_base,
+ &_Py_ID(modules),
+ &_Py_ID(get),
+ & const_str_hasattr._ascii.ob_base,
+ &_Py_ID(warnings),
+ & const_str_warn._ascii.ob_base,
+ &_Py_ID(format),
+ & const_str_RuntimeWarning._ascii.ob_base,
+ &_Py_ID(importlib),
+ & const_str_util._ascii.ob_base,
+ & const_str_find_spec._ascii.ob_base,
+ & const_str_AttributeError._ascii.ob_base,
+ & const_str_TypeError._ascii.ob_base,
+ & const_str_ValueError._ascii.ob_base,
+ & const_str_endswith._ascii.ob_base,
+ &_Py_ID(type),
+ &_Py_ID(__name__),
+ & const_str_submodule_search_locations._ascii.ob_base,
+ & const_str__get_module_details._ascii.ob_base,
+ & const_str_loader._ascii.ob_base,
+ & const_str_get_code._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[656];
+ }
+runpy_toplevel_consts_11_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 655,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xd8\x07\x0f\xd7\x07\x1a\xd1\x07\x1a\x98\x33\xd4\x07\x1f\xd9\x0e\x13\xd0\x14\x39\xd3\x0e\x3a\xd0\x08\x3a\xd8\x15\x1d\xd7\x15\x28\xd1\x15\x28\xa8\x13\xd3\x15\x2d\x81\x4e\x80\x48\x88\x61\x90\x11\xd9\x07\x0f\xf0\x04\x08\x09\x16\xdc\x0c\x16\x90\x78\xd4\x0c\x20\xf4\x12\x00\x14\x17\x97\x3b\x91\x3b\x97\x3f\x91\x3f\xa0\x38\xd3\x13\x2c\x88\x08\xd8\x0b\x13\xd0\x0b\x1f\xac\x07\xb0\x08\xb8\x2a\xd4\x28\x45\xdd\x0c\x25\xf0\x02\x03\x13\x1c\xf7\x06\x00\x1d\x23\x99\x46\xa8\x48\xb8\x78\x98\x46\xd3\x1c\x48\xf0\x07\x00\x0d\x10\xf1\x08\x00\x0d\x11\x94\x1e\xa0\x03\xd3\x11\x24\xd4\x0c\x25\xf0\x04\x0a\x05\x49\x01\xdc\x0f\x18\x8f\x7e\x89\x7e\xd7\x0f\x27\xd1\x0f\x27\xa8\x08\xd3\x0f\x31\x88\x04\xf0\x14\x00\x08\x0c\x80\x7c\xd9\x0e\x13\xd0\x14\x28\xa8\x38\xd1\x14\x33\xd3\x0e\x34\xd0\x08\x34\xd8\x07\x0b\xd7\x07\x26\xd1\x07\x26\xd0\x07\x32\xd8\x0b\x13\x90\x7a\xd2\x0b\x21\xa0\x58\xd7\x25\x36\xd1\x25\x36\xb0\x7b\xd4\x25\x43\xd9\x12\x17\xd0\x18\x3f\xd3\x12\x40\xd0\x0c\x40\xf0\x02\x07\x09\x47\x01\xd8\x1c\x24\xa0\x7b\xd1\x1c\x32\x88\x4d\xdc\x13\x26\xa0\x7d\xb0\x65\xd3\x13\x3c\xd0\x0c\x3c\xf0\x0c\x00\x0e\x12\x8f\x5b\x89\x5b\x80\x46\xd8\x07\x0d\x80\x7e\xd9\x0e\x13\xd0\x14\x46\xd8\x43\x4b\xf1\x03\x01\x15\x4c\x01\xf3\x00\x01\x0f\x4d\x01\xf0\x00\x01\x09\x4d\x01\xf0\x04\x03\x05\x26\xd8\x0f\x15\x8f\x7f\x89\x7f\x98\x78\xd3\x0f\x28\x88\x04\xf0\x06\x00\x08\x0c\x80\x7c\xd9\x0e\x13\xd0\x14\x35\xb8\x08\xd1\x14\x40\xd3\x0e\x41\xd0\x08\x41\xd8\x0b\x13\x90\x54\x98\x34\xd0\x0b\x1f\xd0\x04\x1f\xf8\xf4\x67\x01\x00\x10\x1b\xf2\x00\x06\x09\x16\xf0\x08\x00\x10\x11\x8f\x76\x89\x76\x88\x7e\xa0\x21\xa7\x26\xa1\x26\xa8\x48\xd2\x22\x34\xd8\x18\x20\xd7\x18\x2b\xd1\x18\x2b\xa8\x41\xaf\x46\xa9\x46\xb0\x53\xa9\x4c\xd4\x18\x39\xd8\x10\x15\xff\xf9\xf0\x0d\x06\x09\x16\xfb\xf4\x26\x00\x0d\x18\x9c\x1e\xac\x19\xb4\x4a\xd0\x0b\x3f\xf2\x00\x08\x05\x49\x01\xf0\x08\x00\x0f\x4b\x01\x88\x03\xd8\x0b\x13\xd7\x0b\x1c\xd1\x0b\x1c\x98\x55\xd4\x0b\x23\xd8\x0c\x0f\x90\x6d\xa0\x48\xa8\x53\xa8\x62\xa0\x4d\xa0\x3f\xf0\x00\x01\x33\x18\xd8\x18\x20\x90\x7a\xd0\x21\x36\xf0\x03\x01\x15\x38\xf1\x00\x01\x0d\x39\x88\x43\xe1\x0e\x13\x90\x43\x97\x4a\x91\x4a\x98\x78\xac\x14\xa8\x62\xab\x18\xd7\x29\x3a\xd1\x29\x3a\xb8\x42\xd3\x14\x3f\xd3\x0e\x40\xc0\x62\xd0\x08\x48\xfb\xf0\x11\x08\x05\x49\x01\xfb\xf0\x22\x00\x10\x15\xf2\x00\x04\x09\x47\x01\xd8\x0f\x17\x9c\x73\x9f\x7b\x99\x7b\xd1\x0f\x2a\xd8\x10\x15\xd9\x12\x17\xda\x39\x3a\xba\x48\xf0\x03\x01\x19\x46\x01\xf3\x00\x01\x13\x47\x01\xf0\x00\x01\x0d\x47\x01\xfb\xf0\x07\x04\x09\x47\x01\xfb\xf4\x16\x00\x0c\x17\xf2\x00\x01\x05\x26\xd9\x0e\x13\x94\x46\x98\x31\x93\x49\xd3\x0e\x1e\xa0\x41\xd0\x08\x25\xfb\xf0\x03\x01\x05\x26\xfa",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[97];
+ }
+runpy_toplevel_consts_11_exceptiontable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 96,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\xb2\x0b\x44\x3a\x00\xc2\x15\x1f\x46\x0b\x00\xc3\x2c\x10\x47\x3b\x00\xc4\x17\x11\x48\x29\x00\xc4\x3a\x09\x46\x08\x03\xc5\x03\x3a\x46\x03\x03\xc6\x03\x05\x46\x08\x03\xc6\x0b\x19\x47\x38\x03\xc6\x24\x41\x0f\x47\x33\x03\xc7\x33\x05\x47\x38\x03\xc7\x3b\x05\x48\x26\x03\xc8\x00\x21\x48\x21\x03\xc8\x21\x05\x48\x26\x03\xc8\x29\x09\x49\x09\x03\xc8\x32\x12\x49\x04\x03\xc9\x04\x05\x49\x09\x03",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[9];
+ }
+const_str_existing = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 8,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "existing",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[14];
+ }
+const_str_pkg_main_name = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 13,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "pkg_main_name",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[13];
+ }_object;
+ }
+runpy_toplevel_consts_11_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 13,
+ },
+ .ob_item = {
+ & const_str_mod_name._ascii.ob_base,
+ & const_str_error._ascii.ob_base,
+ & const_str_pkg_name._ascii.ob_base,
+ &_Py_ID(_),
+ &_Py_ID(e),
+ & const_str_existing._ascii.ob_base,
+ & const_str_warn._ascii.ob_base,
+ &_Py_ID(msg),
+ & const_str_spec._ascii.ob_base,
+ & const_str_ex._ascii.ob_base,
+ & const_str_pkg_main_name._ascii.ob_base,
+ & const_str_loader._ascii.ob_base,
+ &_Py_ID(code),
+ },
+ },
+};
+static
+ struct _PyCode_DEF(1176)
+runpy_toplevel_consts_11 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 588,
+ },
+ .co_consts = & runpy_toplevel_consts_11_consts._object.ob_base.ob_base,
+ .co_names = & runpy_toplevel_consts_11_names._object.ob_base.ob_base,
+ .co_exceptiontable = & runpy_toplevel_consts_11_exceptiontable.ob_base.ob_base,
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 22 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 9,
+ .co_firstlineno = 105,
+ .co_nlocalsplus = 13,
+ .co_nlocals = 13,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 749,
+ .co_localsplusnames = & runpy_toplevel_consts_11_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & posixpath_toplevel_consts_33_localspluskinds.ob_base.ob_base,
+ .co_filename = & runpy_toplevel_consts_5_consts_2_filename._ascii.ob_base,
+ .co_name = & const_str__get_module_details._ascii.ob_base,
+ .co_qualname = & const_str__get_module_details._ascii.ob_base,
+ .co_linetable = & runpy_toplevel_consts_11_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x00\x6a\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x01\xab\x01\x00\x00\x00\x00\x00\x00\x72\x08\x02\x00\x7c\x01\x64\x02\xab\x01\x00\x00\x00\x00\x00\x00\x82\x01\x7c\x00\x6a\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x01\xab\x01\x00\x00\x00\x00\x00\x00\x5c\x03\x00\x00\x7d\x02\x7d\x03\x7d\x03\x7c\x02\x72\x63\x09\x00\x74\x05\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x02\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x74\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x05\x7c\x05\x81\x36\x74\x11\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x05\x64\x03\xab\x02\x00\x00\x00\x00\x00\x00\x73\x2a\x64\x04\x64\x05\x6c\x09\x6d\x0a\x7d\x06\x01\x00\x64\x06\x6a\x17\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x7c\x02\xac\x07\xab\x02\x00\x00\x00\x00\x00\x00\x7d\x07\x02\x00\x7c\x06\x74\x19\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x07\xab\x01\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x09\x00\x74\x1a\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x1c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x08\x7c\x08\x80\x0b\x02\x00\x7c\x01\x64\x0e\x7c\x00\x7a\x06\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x82\x01\x7c\x08\x6a\x2c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x81\x30\x7c\x00\x64\x0f\x6b\x28\x00\x00\x73\x11\x7c\x00\x6a\x27\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x10\xab\x01\x00\x00\x00\x00\x00\x00\x72\x08\x02\x00\x7c\x01\x64\x11\xab\x01\x00\x00\x00\x00\x00\x00\x82\x01\x09\x00\x7c\x00\x64\x10\x7a\x00\x00\x00\x7d\x0a\x74\x2f\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x0a\x7c\x01\xab\x02\x00\x00\x00\x00\x00\x00\x53\x00\x7c\x08\x6a\x30\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7d\x0b\x7c\x0b\x80\x0b\x02\x00\x7c\x01\x64\x14\x7c\x00\x7a\x06\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x82\x01\x09\x00\x7c\x0b\x6a\x33\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x0c\x7c\x0c\x80\x0b\x02\x00\x7c\x01\x64\x15\x7c\x00\x7a\x06\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x82\x01\x7c\x00\x7c\x08\x7c\x0c\x66\x03\x53\x00\x23\x00\x74\x06\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x72\x45\x7d\x04\x7c\x04\x6a\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x81\x2d\x7c\x04\x6a\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x02\x6b\x37\x00\x00\x72\x1f\x7c\x02\x6a\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x04\x6a\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x01\x7a\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x73\x01\x82\x00\x59\x00\x64\x00\x7d\x04\x7e\x04\x90\x01\x8c\x46\x64\x00\x7d\x04\x7e\x04\x77\x01\x77\x00\x78\x03\x59\x00\x77\x01\x23\x00\x74\x06\x00\x00\x00\x00\x00\x00\x00\x00\x74\x20\x00\x00\x00\x00\x00\x00\x00\x00\x74\x22\x00\x00\x00\x00\x00\x00\x00\x00\x74\x24\x00\x00\x00\x00\x00\x00\x00\x00\x66\x04\x24\x00\x72\x54\x7d\x09\x64\x08\x7d\x07\x7c\x00\x6a\x27\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x09\xab\x01\x00\x00\x00\x00\x00\x00\x72\x0f\x7c\x07\x64\x0a\x7c\x00\x64\x00\x64\x0b\x1a\x00\x9b\x00\x64\x0c\x7c\x00\x9b\x00\x64\x0d\x9d\x05\x7a\x0d\x00\x00\x7d\x07\x02\x00\x7c\x01\x7c\x07\x6a\x17\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x74\x29\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x09\xab\x01\x00\x00\x00\x00\x00\x00\x6a\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x09\xab\x03\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7c\x09\x82\x02\x64\x00\x7d\x09\x7e\x09\x77\x01\x77\x00\x78\x03\x59\x00\x77\x01\x23\x00\x7c\x01\x24\x00\x72\x26\x7d\x04\x7c\x00\x74\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x76\x01\x72\x01\x82\x00\x02\x00\x7c\x01\x7c\x04\x9b\x01\x64\x12\x7c\x00\x9b\x02\x64\x13\x9d\x04\xab\x01\x00\x00\x00\x00\x00\x00\x82\x01\x64\x00\x7d\x04\x7e\x04\x77\x01\x77\x00\x78\x03\x59\x00\x77\x01\x23\x00\x74\x06\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x72\x17\x7d\x04\x02\x00\x7c\x01\x74\x17\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x04\xab\x01\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7c\x04\x82\x02\x64\x00\x7d\x04\x7e\x04\x77\x01\x77\x00\x78\x03\x59\x00\x77\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[7];
+ }
+const_str__Error = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 6,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_Error",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[67];
+ }
+runpy_toplevel_consts_12_consts_1 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 66,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Error that _run_module_as_main() should report without a traceback",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+runpy_toplevel_consts_12_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ & const_str__Error._ascii.ob_base,
+ & runpy_toplevel_consts_12_consts_1._ascii.ob_base,
+ Py_None,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[4];
+ }_object;
+ }
+runpy_toplevel_consts_12_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_item = {
+ &_Py_ID(__name__),
+ &_Py_ID(__module__),
+ &_Py_ID(__qualname__),
+ &_Py_ID(__doc__),
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[6];
+ }
+runpy_toplevel_consts_12_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 5,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x84\x00\xda\x04\x4c",
+};
+static
+ struct _PyCode_DEF(16)
+runpy_toplevel_consts_12 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 8,
+ },
+ .co_consts = & runpy_toplevel_consts_12_consts._object.ob_base.ob_base,
+ .co_names = & runpy_toplevel_consts_12_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 0,
+ .co_argcount = 0,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 1 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 1,
+ .co_firstlineno = 166,
+ .co_nlocalsplus = 0,
+ .co_nlocals = 0,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 750,
+ .co_localsplusnames = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_filename = & runpy_toplevel_consts_5_consts_2_filename._ascii.ob_base,
+ .co_name = & const_str__Error._ascii.ob_base,
+ .co_qualname = & const_str__Error._ascii.ob_base,
+ .co_linetable = & runpy_toplevel_consts_12_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x65\x00\x5a\x01\x64\x00\x5a\x02\x64\x01\x5a\x03\x79\x02",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[454];
+ }
+runpy_toplevel_consts_14_consts_0 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 453,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "\x52\x75\x6e\x73\x20\x74\x68\x65\x20\x64\x65\x73\x69\x67\x6e\x61\x74\x65\x64\x20\x6d\x6f\x64\x75\x6c\x65\x20\x69\x6e\x20\x74\x68\x65\x20\x5f\x5f\x6d\x61\x69\x6e\x5f\x5f\x20\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x4e\x6f\x74\x65\x20\x74\x68\x61\x74\x20\x74\x68\x65\x20\x65\x78\x65\x63\x75\x74\x65\x64\x20\x6d\x6f\x64\x75\x6c\x65\x20\x77\x69\x6c\x6c\x20\x68\x61\x76\x65\x20\x66\x75\x6c\x6c\x20\x61\x63\x63\x65\x73\x73\x20\x74\x6f\x20\x74\x68\x65\x0a\x20\x20\x20\x20\x20\x20\x20\x5f\x5f\x6d\x61\x69\x6e\x5f\x5f\x20\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x20\x49\x66\x20\x74\x68\x69\x73\x20\x69\x73\x20\x6e\x6f\x74\x20\x64\x65\x73\x69\x72\x61\x62\x6c\x65\x2c\x20\x74\x68\x65\x20\x72\x75\x6e\x5f\x6d\x6f\x64\x75\x6c\x65\x28\x29\x0a\x20\x20\x20\x20\x20\x20\x20\x66\x75\x6e\x63\x74\x69\x6f\x6e\x20\x73\x68\x6f\x75\x6c\x64\x20\x62\x65\x20\x75\x73\x65\x64\x20\x74\x6f\x20\x72\x75\x6e\x20\x74\x68\x65\x20\x6d\x6f\x64\x75\x6c\x65\x20\x63\x6f\x64\x65\x20\x69\x6e\x20\x61\x20\x66\x72\x65\x73\x68\x20\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x41\x74\x20\x74\x68\x65\x20\x76\x65\x72\x79\x20\x6c\x65\x61\x73\x74\x2c\x20\x74\x68\x65\x73\x65\x20\x76\x61\x72\x69\x61\x62\x6c\x65\x73\x20\x69\x6e\x20\x5f\x5f\x6d\x61\x69\x6e\x5f\x5f\x20\x77\x69\x6c\x6c\x20\x62\x65\x20\x6f\x76\x65\x72\x77\x72\x69\x74\x74\x65\x6e\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x5f\x5f\x6e\x61\x6d\x65\x5f\x5f\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x5f\x5f\x66\x69\x6c\x65\x5f\x5f\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x5f\x5f\x63\x61\x63\x68\x65\x64\x5f\x5f\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x5f\x5f\x6c\x6f\x61\x64\x65\x72\x5f\x5f\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x5f\x5f\x70\x61\x63\x6b\x61\x67\x65\x5f\x5f\x0a\x20\x20\x20\x20",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[5];
+ }_object;
+ }
+runpy_toplevel_consts_14_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 5,
+ },
+ .ob_item = {
+ & runpy_toplevel_consts_14_consts_0._ascii.ob_base,
+ &_Py_ID(__main__),
+ & importlib__bootstrap_external_toplevel_consts_42_consts_4._ascii.ob_base,
+ Py_None,
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 0],
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[25];
+ }
+const_str__get_main_module_details = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 24,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_get_main_module_details",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[11];
+ }_object;
+ }
+runpy_toplevel_consts_14_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 11,
+ },
+ .ob_item = {
+ & const_str__get_module_details._ascii.ob_base,
+ & const_str__Error._ascii.ob_base,
+ & const_str__get_main_module_details._ascii.ob_base,
+ & const_str_sys._ascii.ob_base,
+ & const_str_executable._ascii.ob_base,
+ & const_str_exit._ascii.ob_base,
+ &_Py_ID(modules),
+ &_Py_ID(__dict__),
+ &_Py_ID(origin),
+ &_Py_ID(argv),
+ & const_str__run_code._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[20];
+ }
+const_str__run_module_as_main = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 19,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_run_module_as_main",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[165];
+ }
+runpy_toplevel_consts_14_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 164,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf0\x1c\x07\x05\x16\xd9\x0b\x15\x98\x18\xa0\x5a\xd2\x19\x2f\xdc\x27\x3a\xb8\x38\xc4\x56\xd3\x27\x4c\xd1\x0c\x24\x88\x48\x90\x68\xa1\x04\xe4\x27\x3f\xc4\x06\xd3\x27\x47\xd1\x0c\x24\x88\x48\x90\x68\xa0\x04\xf4\x08\x00\x14\x17\x97\x3b\x91\x3b\x98\x7a\xd1\x13\x2a\xd7\x13\x33\xd1\x13\x33\x80\x4c\xd9\x07\x11\xd8\x16\x1e\x97\x6f\x91\x6f\x8c\x03\x8f\x08\x89\x08\x90\x11\x89\x0b\xdc\x0b\x14\x90\x54\x98\x3c\xa8\x14\xd8\x15\x1f\xa0\x18\xf3\x03\x01\x0c\x2b\xf0\x00\x01\x05\x2b\xf8\xf4\x0d\x00\x0c\x12\xf2\x00\x02\x05\x16\xdc\x1a\x1d\x9f\x2e\x9b\x2e\xa9\x23\xd0\x0e\x2e\x88\x03\xdc\x08\x0b\x8f\x08\x89\x08\x90\x13\x8f\x0d\x89\x0d\xfb\xf0\x05\x02\x05\x16\xfa",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[24];
+ }
+runpy_toplevel_consts_14_exceptiontable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 23,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x82\x2f\x41\x3c\x00\xc1\x3c\x09\x42\x39\x03\xc2\x05\x2a\x42\x34\x03\xc2\x34\x05\x42\x39\x03",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[11];
+ }
+const_str_alter_argv = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 10,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "alter_argv",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[13];
+ }
+const_str_main_globals = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 12,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "main_globals",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[7];
+ }_object;
+ }
+runpy_toplevel_consts_14_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 7,
+ },
+ .ob_item = {
+ & const_str_mod_name._ascii.ob_base,
+ & const_str_alter_argv._ascii.ob_base,
+ & const_str_mod_spec._ascii.ob_base,
+ &_Py_ID(code),
+ & const_str_exc._ascii.ob_base,
+ &_Py_ID(msg),
+ & const_str_main_globals._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(376)
+runpy_toplevel_consts_14 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 188,
+ },
+ .co_consts = & runpy_toplevel_consts_14_consts._object.ob_base.ob_base,
+ .co_names = & runpy_toplevel_consts_14_names._object.ob_base.ob_base,
+ .co_exceptiontable = & runpy_toplevel_consts_14_exceptiontable.ob_base.ob_base,
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 14 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 7,
+ .co_firstlineno = 173,
+ .co_nlocalsplus = 7,
+ .co_nlocals = 7,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 751,
+ .co_localsplusnames = & runpy_toplevel_consts_14_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_46_consts_9_localspluskinds.ob_base.ob_base,
+ .co_filename = & runpy_toplevel_consts_5_consts_2_filename._ascii.ob_base,
+ .co_name = & const_str__run_module_as_main._ascii.ob_base,
+ .co_qualname = & const_str__run_module_as_main._ascii.ob_base,
+ .co_linetable = & runpy_toplevel_consts_14_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x09\x00\x7c\x01\x73\x05\x7c\x00\x64\x01\x6b\x37\x00\x00\x72\x15\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x74\x02\x00\x00\x00\x00\x00\x00\x00\x00\xab\x02\x00\x00\x00\x00\x00\x00\x5c\x03\x00\x00\x7d\x00\x7d\x02\x7d\x03\x6e\x13\x74\x05\x00\x00\x00\x00\x00\x00\x00\x00\x74\x02\x00\x00\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x5c\x03\x00\x00\x7d\x00\x7d\x02\x7d\x03\x74\x06\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x01\x19\x00\x00\x00\x6a\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7d\x06\x7c\x01\x72\x1d\x7f\x02\x6a\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x74\x06\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x04\x3c\x00\x00\x00\x74\x15\x00\x00\x00\x00\x00\x00\x00\x00\x7f\x03\x7c\x06\x64\x03\x64\x01\x7f\x02\xab\x05\x00\x00\x00\x00\x00\x00\x53\x00\x23\x00\x74\x02\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x72\x34\x7d\x04\x74\x06\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9b\x01\x64\x02\x7c\x04\x9b\x01\x9d\x03\x7d\x05\x74\x07\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x05\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x59\x00\x64\x03\x7d\x04\x7e\x04\x8c\x83\x64\x03\x7d\x04\x7e\x04\x77\x01\x77\x00\x78\x03\x59\x00\x77\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyCompactUnicodeObject _compact;
+ uint16_t _data[801];
+ }
+runpy_toplevel_consts_15_consts_0 = {
+ ._compact = {
+ ._base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 800,
+ .hash = -1,
+ .state = {
+ .kind = 2,
+ .compact = 1,
+ .ascii = 0,
+ .statically_allocated = 1,
+ },
+ },
+ .utf8 = "\x45\x78\x65\x63\x75\x74\x65\x20\x61\x20\x6d\x6f\x64\x75\x6c\x65\x27\x73\x20\x63\x6f\x64\x65\x20\x77\x69\x74\x68\x6f\x75\x74\x20\x69\x6d\x70\x6f\x72\x74\x69\x6e\x67\x20\x69\x74\x2e\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x6d\x6f\x64\x5f\x6e\x61\x6d\x65\x20\x2d\x2d\x20\x61\x6e\x20\x61\x62\x73\x6f\x6c\x75\x74\x65\x20\x6d\x6f\x64\x75\x6c\x65\x20\x6e\x61\x6d\x65\x20\x6f\x72\x20\x70\x61\x63\x6b\x61\x67\x65\x20\x6e\x61\x6d\x65\x2e\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x4f\x70\x74\x69\x6f\x6e\x61\x6c\x20\x61\x72\x67\x75\x6d\x65\x6e\x74\x73\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x69\x6e\x69\x74\x5f\x67\x6c\x6f\x62\x61\x6c\x73\x20\x2d\x2d\x20\x64\x69\x63\x74\x69\x6f\x6e\x61\x72\x79\x20\x75\x73\x65\x64\x20\x74\x6f\x20\x70\x72\x65\x2d\x70\x6f\x70\x75\x6c\x61\x74\x65\x20\x74\x68\x65\x20\x6d\x6f\x64\x75\x6c\x65\xe2\x80\x99\x73\x0a\x20\x20\x20\x20\x20\x20\x20\x67\x6c\x6f\x62\x61\x6c\x73\x20\x64\x69\x63\x74\x69\x6f\x6e\x61\x72\x79\x20\x62\x65\x66\x6f\x72\x65\x20\x74\x68\x65\x20\x63\x6f\x64\x65\x20\x69\x73\x20\x65\x78\x65\x63\x75\x74\x65\x64\x2e\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x72\x75\x6e\x5f\x6e\x61\x6d\x65\x20\x2d\x2d\x20\x69\x66\x20\x6e\x6f\x74\x20\x4e\x6f\x6e\x65\x2c\x20\x74\x68\x69\x73\x20\x77\x69\x6c\x6c\x20\x62\x65\x20\x75\x73\x65\x64\x20\x66\x6f\x72\x20\x73\x65\x74\x74\x69\x6e\x67\x20\x5f\x5f\x6e\x61\x6d\x65\x5f\x5f\x3b\x0a\x20\x20\x20\x20\x20\x20\x20\x6f\x74\x68\x65\x72\x77\x69\x73\x65\x2c\x20\x5f\x5f\x6e\x61\x6d\x65\x5f\x5f\x20\x77\x69\x6c\x6c\x20\x62\x65\x20\x73\x65\x74\x20\x74\x6f\x20\x6d\x6f\x64\x5f\x6e\x61\x6d\x65\x20\x2b\x20\x27\x5f\x5f\x6d\x61\x69\x6e\x5f\x5f\x27\x20\x69\x66\x20\x74\x68\x65\x0a\x20\x20\x20\x20\x20\x20\x20\x6e\x61\x6d\x65\x64\x20\x6d\x6f\x64\x75\x6c\x65\x20\x69\x73\x20\x61\x20\x70\x61\x63\x6b\x61\x67\x65\x20\x61\x6e\x64\x20\x74\x6f\x20\x6a\x75\x73\x74\x20\x6d\x6f\x64\x5f\x6e\x61\x6d\x65\x20\x6f\x74\x68\x65\x72\x77\x69\x73\x65\x2e\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x61\x6c\x74\x65\x72\x5f\x73\x79\x73\x20\x2d\x2d\x20\x69\x66\x20\x54\x72\x75\x65\x2c\x20\x73\x79\x73\x2e\x61\x72\x67\x76\x5b\x30\x5d\x20\x69\x73\x20\x75\x70\x64\x61\x74\x65\x64\x20\x77\x69\x74\x68\x20\x74\x68\x65\x20\x76\x61\x6c\x75\x65\x20\x6f\x66\x0a\x20\x20\x20\x20\x20\x20\x20\x5f\x5f\x66\x69\x6c\x65\x5f\x5f\x20\x61\x6e\x64\x20\x73\x79\x73\x2e\x6d\x6f\x64\x75\x6c\x65\x73\x5b\x5f\x5f\x6e\x61\x6d\x65\x5f\x5f\x5d\x20\x69\x73\x20\x75\x70\x64\x61\x74\x65\x64\x20\x77\x69\x74\x68\x20\x61\x20\x74\x65\x6d\x70\x6f\x72\x61\x72\x79\x0a\x20\x20\x20\x20\x20\x20\x20\x6d\x6f\x64\x75\x6c\x65\x20\x6f\x62\x6a\x65\x63\x74\x20\x66\x6f\x72\x20\x74\x68\x65\x20\x6d\x6f\x64\x75\x6c\x65\x20\x62\x65\x69\x6e\x67\x20\x65\x78\x65\x63\x75\x74\x65\x64\x2e\x20\x42\x6f\x74\x68\x20\x61\x72\x65\x0a\x20\x20\x20\x20\x20\x20\x20\x72\x65\x73\x74\x6f\x72\x65\x64\x20\x74\x6f\x20\x74\x68\x65\x69\x72\x20\x6f\x72\x69\x67\x69\x6e\x61\x6c\x20\x76\x61\x6c\x75\x65\x73\x20\x62\x65\x66\x6f\x72\x65\x20\x74\x68\x65\x20\x66\x75\x6e\x63\x74\x69\x6f\x6e\x20\x72\x65\x74\x75\x72\x6e\x73\x2e\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x52\x65\x74\x75\x72\x6e\x73\x20\x74\x68\x65\x20\x72\x65\x73\x75\x6c\x74\x69\x6e\x67\x20\x6d\x6f\x64\x75\x6c\x65\x20\x67\x6c\x6f\x62\x61\x6c\x73\x20\x64\x69\x63\x74\x69\x6f\x6e\x61\x72\x79\x2e\x0a\x20\x20\x20\x20",
+ .utf8_length = 802,
+ },
+ ._data = {
+ 69, 120, 101, 99, 117, 116, 101, 32, 97, 32, 109, 111, 100, 117, 108, 101,
+ 39, 115, 32, 99, 111, 100, 101, 32, 119, 105, 116, 104, 111, 117, 116, 32,
+ 105, 109, 112, 111, 114, 116, 105, 110, 103, 32, 105, 116, 46, 10, 10, 32,
+ 32, 32, 32, 32, 32, 32, 109, 111, 100, 95, 110, 97, 109, 101, 32, 45,
+ 45, 32, 97, 110, 32, 97, 98, 115, 111, 108, 117, 116, 101, 32, 109, 111,
+ 100, 117, 108, 101, 32, 110, 97, 109, 101, 32, 111, 114, 32, 112, 97, 99,
+ 107, 97, 103, 101, 32, 110, 97, 109, 101, 46, 10, 10, 32, 32, 32, 32,
+ 32, 32, 32, 79, 112, 116, 105, 111, 110, 97, 108, 32, 97, 114, 103, 117,
+ 109, 101, 110, 116, 115, 58, 10, 32, 32, 32, 32, 32, 32, 32, 105, 110,
+ 105, 116, 95, 103, 108, 111, 98, 97, 108, 115, 32, 45, 45, 32, 100, 105,
+ 99, 116, 105, 111, 110, 97, 114, 121, 32, 117, 115, 101, 100, 32, 116, 111,
+ 32, 112, 114, 101, 45, 112, 111, 112, 117, 108, 97, 116, 101, 32, 116, 104,
+ 101, 32, 109, 111, 100, 117, 108, 101, 8217, 115, 10, 32, 32, 32, 32, 32,
+ 32, 32, 103, 108, 111, 98, 97, 108, 115, 32, 100, 105, 99, 116, 105, 111,
+ 110, 97, 114, 121, 32, 98, 101, 102, 111, 114, 101, 32, 116, 104, 101, 32,
+ 99, 111, 100, 101, 32, 105, 115, 32, 101, 120, 101, 99, 117, 116, 101, 100,
+ 46, 10, 10, 32, 32, 32, 32, 32, 32, 32, 114, 117, 110, 95, 110, 97,
+ 109, 101, 32, 45, 45, 32, 105, 102, 32, 110, 111, 116, 32, 78, 111, 110,
+ 101, 44, 32, 116, 104, 105, 115, 32, 119, 105, 108, 108, 32, 98, 101, 32,
+ 117, 115, 101, 100, 32, 102, 111, 114, 32, 115, 101, 116, 116, 105, 110, 103,
+ 32, 95, 95, 110, 97, 109, 101, 95, 95, 59, 10, 32, 32, 32, 32, 32,
+ 32, 32, 111, 116, 104, 101, 114, 119, 105, 115, 101, 44, 32, 95, 95, 110,
+ 97, 109, 101, 95, 95, 32, 119, 105, 108, 108, 32, 98, 101, 32, 115, 101,
+ 116, 32, 116, 111, 32, 109, 111, 100, 95, 110, 97, 109, 101, 32, 43, 32,
+ 39, 95, 95, 109, 97, 105, 110, 95, 95, 39, 32, 105, 102, 32, 116, 104,
+ 101, 10, 32, 32, 32, 32, 32, 32, 32, 110, 97, 109, 101, 100, 32, 109,
+ 111, 100, 117, 108, 101, 32, 105, 115, 32, 97, 32, 112, 97, 99, 107, 97,
+ 103, 101, 32, 97, 110, 100, 32, 116, 111, 32, 106, 117, 115, 116, 32, 109,
+ 111, 100, 95, 110, 97, 109, 101, 32, 111, 116, 104, 101, 114, 119, 105, 115,
+ 101, 46, 10, 10, 32, 32, 32, 32, 32, 32, 32, 97, 108, 116, 101, 114,
+ 95, 115, 121, 115, 32, 45, 45, 32, 105, 102, 32, 84, 114, 117, 101, 44,
+ 32, 115, 121, 115, 46, 97, 114, 103, 118, 91, 48, 93, 32, 105, 115, 32,
+ 117, 112, 100, 97, 116, 101, 100, 32, 119, 105, 116, 104, 32, 116, 104, 101,
+ 32, 118, 97, 108, 117, 101, 32, 111, 102, 10, 32, 32, 32, 32, 32, 32,
+ 32, 95, 95, 102, 105, 108, 101, 95, 95, 32, 97, 110, 100, 32, 115, 121,
+ 115, 46, 109, 111, 100, 117, 108, 101, 115, 91, 95, 95, 110, 97, 109, 101,
+ 95, 95, 93, 32, 105, 115, 32, 117, 112, 100, 97, 116, 101, 100, 32, 119,
+ 105, 116, 104, 32, 97, 32, 116, 101, 109, 112, 111, 114, 97, 114, 121, 10,
+ 32, 32, 32, 32, 32, 32, 32, 109, 111, 100, 117, 108, 101, 32, 111, 98,
+ 106, 101, 99, 116, 32, 102, 111, 114, 32, 116, 104, 101, 32, 109, 111, 100,
+ 117, 108, 101, 32, 98, 101, 105, 110, 103, 32, 101, 120, 101, 99, 117, 116,
+ 101, 100, 46, 32, 66, 111, 116, 104, 32, 97, 114, 101, 10, 32, 32, 32,
+ 32, 32, 32, 32, 114, 101, 115, 116, 111, 114, 101, 100, 32, 116, 111, 32,
+ 116, 104, 101, 105, 114, 32, 111, 114, 105, 103, 105, 110, 97, 108, 32, 118,
+ 97, 108, 117, 101, 115, 32, 98, 101, 102, 111, 114, 101, 32, 116, 104, 101,
+ 32, 102, 117, 110, 99, 116, 105, 111, 110, 32, 114, 101, 116, 117, 114, 110,
+ 115, 46, 10, 10, 32, 32, 32, 32, 32, 32, 32, 82, 101, 116, 117, 114,
+ 110, 115, 32, 116, 104, 101, 32, 114, 101, 115, 117, 108, 116, 105, 110, 103,
+ 32, 109, 111, 100, 117, 108, 101, 32, 103, 108, 111, 98, 97, 108, 115, 32,
+ 100, 105, 99, 116, 105, 111, 110, 97, 114, 121, 46, 10, 32, 32, 32, 32,
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+runpy_toplevel_consts_15_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & runpy_toplevel_consts_15_consts_0._compact._base.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+runpy_toplevel_consts_15_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ & const_str__get_module_details._ascii.ob_base,
+ & const_str__run_module_code._ascii.ob_base,
+ & const_str__run_code._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[74];
+ }
+runpy_toplevel_consts_15_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 73,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf4\x2a\x00\x20\x33\xb0\x38\xd3\x1f\x3c\xd1\x04\x1c\x80\x48\x88\x68\x98\x04\xd8\x07\x0f\xd0\x07\x17\xd8\x13\x1b\x88\x08\xd9\x07\x10\xdc\x0f\x1f\xa0\x04\xa0\x6c\xb0\x48\xb8\x68\xd3\x0f\x47\xd0\x08\x47\xf4\x06\x00\x10\x19\x98\x14\x98\x72\xa0\x3c\xb0\x18\xb8\x38\xd3\x0f\x44\xd0\x08\x44",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[9];
+ }
+const_str_run_name = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 8,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "run_name",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[10];
+ }
+const_str_alter_sys = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 9,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "alter_sys",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[6];
+ }_object;
+ }
+runpy_toplevel_consts_15_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 6,
+ },
+ .ob_item = {
+ & const_str_mod_name._ascii.ob_base,
+ & const_str_init_globals._ascii.ob_base,
+ & const_str_run_name._ascii.ob_base,
+ & const_str_alter_sys._ascii.ob_base,
+ & const_str_mod_spec._ascii.ob_base,
+ &_Py_ID(code),
+ },
+ },
+};
+static
+ struct _PyCode_DEF(102)
+runpy_toplevel_consts_15 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 51,
+ },
+ .co_consts = & runpy_toplevel_consts_15_consts._object.ob_base.ob_base,
+ .co_names = & runpy_toplevel_consts_15_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 4,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 13 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 7,
+ .co_firstlineno = 201,
+ .co_nlocalsplus = 6,
+ .co_nlocals = 6,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 752,
+ .co_localsplusnames = & runpy_toplevel_consts_15_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_30_consts_4_localspluskinds.ob_base.ob_base,
+ .co_filename = & runpy_toplevel_consts_5_consts_2_filename._ascii.ob_base,
+ .co_name = & const_str_run_module._ascii.ob_base,
+ .co_qualname = & const_str_run_module._ascii.ob_base,
+ .co_linetable = & runpy_toplevel_consts_15_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x5c\x03\x00\x00\x7d\x00\x7d\x04\x7d\x05\x7c\x02\x80\x02\x7c\x00\x7d\x02\x7c\x03\x72\x0e\x74\x03\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x05\x7c\x01\x7c\x02\x7c\x04\xab\x04\x00\x00\x00\x00\x00\x00\x53\x00\x74\x05\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x05\x69\x00\x7c\x01\x7c\x02\x7c\x04\xab\x05\x00\x00\x00\x00\x00\x00\x53\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[12];
+ }
+runpy_toplevel_consts_16_consts_2 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 11,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "can't find ",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[12];
+ }
+runpy_toplevel_consts_16_consts_3 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 11,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = " module in ",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[5];
+ }_object;
+ }
+runpy_toplevel_consts_16_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 5,
+ },
+ .ob_item = {
+ Py_None,
+ &_Py_ID(__main__),
+ & runpy_toplevel_consts_16_consts_2._ascii.ob_base,
+ & runpy_toplevel_consts_16_consts_3._ascii.ob_base,
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 0],
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[6];
+ }_object;
+ }
+runpy_toplevel_consts_16_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 6,
+ },
+ .ob_item = {
+ & const_str_sys._ascii.ob_base,
+ &_Py_ID(modules),
+ & const_str__get_module_details._ascii.ob_base,
+ & const_str_ImportError._ascii.ob_base,
+ & const_str_str._ascii.ob_base,
+ &_Py_ID(path),
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[150];
+ }
+runpy_toplevel_consts_16_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 149,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf0\x0a\x00\x11\x1b\x80\x49\xdc\x11\x14\x97\x1b\x91\x1b\x98\x59\xd1\x11\x27\x80\x4a\xdc\x08\x0b\x8f\x0b\x89\x0b\x90\x49\xd0\x08\x1e\xf0\x02\x08\x05\x2c\xdc\x0f\x22\xa0\x39\xd3\x0f\x2d\xf0\x0e\x00\x22\x2c\x8c\x03\x8f\x0b\x89\x0b\x90\x49\xd2\x08\x1e\xf8\xf4\x0d\x00\x0c\x17\xf2\x00\x04\x05\x0e\xd8\x0b\x14\x9c\x03\x98\x43\x9b\x08\xd1\x0b\x20\xda\x12\x17\xda\x1f\x28\xac\x23\xaf\x28\xa9\x28\xb0\x31\xaa\x2b\xf0\x03\x01\x19\x37\xf3\x00\x01\x13\x38\xd8\x3d\x40\xf0\x03\x01\x0d\x41\x01\xe0\x08\x0d\xfb\xf0\x09\x04\x05\x0e\xfb\xf0\x0c\x00\x22\x2c\x8c\x03\x8f\x0b\x89\x0b\x90\x49\xd2\x08\x1e\xfa",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[36];
+ }
+runpy_toplevel_consts_16_exceptiontable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 35,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\xa8\x0a\x41\x06\x00\xc1\x06\x09\x42\x02\x03\xc1\x0f\x2e\x41\x3d\x03\xc1\x3d\x05\x42\x02\x03\xc2\x02\x03\x42\x05\x00\xc2\x05\x15\x42\x1a\x03",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[10];
+ }
+const_str_main_name = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 9,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "main_name",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[11];
+ }
+const_str_saved_main = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 10,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "saved_main",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[4];
+ }_object;
+ }
+runpy_toplevel_consts_16_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_item = {
+ & const_str_error._ascii.ob_base,
+ & const_str_main_name._ascii.ob_base,
+ & const_str_saved_main._ascii.ob_base,
+ & const_str_exc._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(314)
+runpy_toplevel_consts_16 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 157,
+ },
+ .co_consts = & runpy_toplevel_consts_16_consts._object.ob_base.ob_base,
+ .co_names = & runpy_toplevel_consts_16_names._object.ob_base.ob_base,
+ .co_exceptiontable = & runpy_toplevel_consts_16_exceptiontable.ob_base.ob_base,
+ .co_flags = 3,
+ .co_argcount = 1,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 12 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 8,
+ .co_firstlineno = 231,
+ .co_nlocalsplus = 4,
+ .co_nlocals = 4,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 753,
+ .co_localsplusnames = & runpy_toplevel_consts_16_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_7_consts_3_localspluskinds.ob_base.ob_base,
+ .co_filename = & runpy_toplevel_consts_5_consts_2_filename._ascii.ob_base,
+ .co_name = & const_str__get_main_module_details._ascii.ob_base,
+ .co_qualname = & const_str__get_main_module_details._ascii.ob_base,
+ .co_linetable = & runpy_toplevel_consts_16_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x64\x01\x7d\x01\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x19\x00\x00\x00\x7d\x02\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x3d\x00\x09\x00\x74\x05\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\xab\x01\x00\x00\x00\x00\x00\x00\x7c\x02\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x3c\x00\x00\x00\x53\x00\x23\x00\x74\x06\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x72\x33\x7d\x03\x7c\x01\x74\x09\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x03\xab\x01\x00\x00\x00\x00\x00\x00\x76\x00\x72\x20\x02\x00\x7c\x00\x64\x02\x7c\x01\x9b\x02\x64\x03\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x04\x19\x00\x00\x00\x9b\x02\x9d\x04\xab\x01\x00\x00\x00\x00\x00\x00\x7c\x03\x82\x02\x82\x00\x64\x00\x7d\x03\x7e\x03\x77\x01\x77\x00\x78\x03\x59\x00\x77\x01\x23\x00\x7c\x02\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x3c\x00\x00\x00\x77\x00\x78\x03\x59\x00\x77\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[10];
+ }
+const_str_read_code = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 9,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "read_code",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+runpy_toplevel_consts_17_consts_2 = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & const_str_read_code._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[4];
+ }_object;
+ }
+runpy_toplevel_consts_17_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_item = {
+ Py_None,
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 0],
+ & runpy_toplevel_consts_17_consts_2._object.ob_base.ob_base,
+ & const_str_exec._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[8];
+ }
+const_str_pkgutil = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 7,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "pkgutil",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[10];
+ }_object;
+ }
+runpy_toplevel_consts_17_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 10,
+ },
+ .ob_item = {
+ & const_str_pkgutil._ascii.ob_base,
+ & const_str_read_code._ascii.ob_base,
+ & const_str_os._ascii.ob_base,
+ &_Py_ID(path),
+ & const_str_abspath._ascii.ob_base,
+ & const_str_fsdecode._ascii.ob_base,
+ & const_str_io._ascii.ob_base,
+ & const_str_open_code._ascii.ob_base,
+ & const_str_compile._ascii.ob_base,
+ &_Py_ID(read),
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[20];
+ }
+const_str__get_code_from_file = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 19,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "_get_code_from_file",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[161];
+ }
+runpy_toplevel_consts_17_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 160,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xe5\x04\x21\xdc\x13\x15\x97\x37\x91\x37\x97\x3f\x91\x3f\xa4\x32\xa7\x3b\xa1\x3b\xa8\x75\xd3\x23\x35\xd3\x13\x36\x80\x4c\xdc\x09\x0b\x8f\x1c\x89\x1c\x90\x6c\xd3\x09\x23\xf0\x00\x01\x05\x1c\xa0\x71\xd9\x0f\x18\x98\x11\x8b\x7c\x88\x04\xf7\x03\x01\x05\x1c\xe0\x07\x0b\x80\x7c\xe4\x0d\x0f\x8f\x5c\x89\x5c\x98\x2c\xd3\x0d\x27\xf0\x00\x01\x09\x34\xa8\x31\xdc\x13\x1a\x98\x31\x9f\x36\x99\x36\x9b\x38\xa0\x55\xa8\x46\xd3\x13\x33\x88\x44\xf7\x03\x01\x09\x34\xe0\x0b\x0f\x90\x15\x88\x3b\xd0\x04\x16\x88\x34\x90\x15\x88\x3b\xd0\x04\x16\xf7\x0d\x01\x05\x1c\xf0\x00\x01\x05\x1c\xfa\xf7\x08\x01\x09\x34\xe0\x0b\x0f\x90\x15\x88\x3b\xd0\x04\x16\xfa",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[25];
+ }
+runpy_toplevel_consts_17_exceptiontable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 24,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\xc1\x0e\x09\x42\x22\x03\xc1\x36\x1c\x42\x2e\x03\xc2\x22\x05\x42\x2b\x07\xc2\x2e\x05\x42\x3a\x07",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[13];
+ }
+const_str_decoded_path = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 12,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "decoded_path",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[6];
+ }_object;
+ }
+runpy_toplevel_consts_17_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 6,
+ },
+ .ob_item = {
+ & const_str_run_name._ascii.ob_base,
+ & const_str_fname._ascii.ob_base,
+ & const_str_read_code._ascii.ob_base,
+ & const_str_decoded_path._ascii.ob_base,
+ (PyObject *)&_Py_SINGLETON(strings).ascii[102],
+ &_Py_ID(code),
+ },
+ },
+};
+static
+ struct _PyCode_DEF(378)
+runpy_toplevel_consts_17 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 189,
+ },
+ .co_consts = & runpy_toplevel_consts_17_consts._object.ob_base.ob_base,
+ .co_names = & runpy_toplevel_consts_17_names._object.ob_base.ob_base,
+ .co_exceptiontable = & runpy_toplevel_consts_17_exceptiontable.ob_base.ob_base,
+ .co_flags = 3,
+ .co_argcount = 2,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 12 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 6,
+ .co_firstlineno = 250,
+ .co_nlocalsplus = 6,
+ .co_nlocals = 6,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 754,
+ .co_localsplusnames = & runpy_toplevel_consts_17_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_toplevel_consts_30_consts_4_localspluskinds.ob_base.ob_base,
+ .co_filename = & runpy_toplevel_consts_5_consts_2_filename._ascii.ob_base,
+ .co_name = & const_str__get_code_from_file._ascii.ob_base,
+ .co_qualname = & const_str__get_code_from_file._ascii.ob_base,
+ .co_linetable = & runpy_toplevel_consts_17_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x64\x01\x64\x02\x6c\x00\x6d\x01\x7d\x02\x01\x00\x74\x04\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x74\x05\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x01\xab\x01\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x03\x74\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x03\xab\x01\x00\x00\x00\x00\x00\x00\x35\x00\x7d\x04\x02\x00\x7c\x02\x7c\x04\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x05\x64\x00\x64\x00\x64\x00\xab\x02\x00\x00\x00\x00\x00\x00\x01\x00\x7f\x05\x80\x3d\x74\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x03\xab\x01\x00\x00\x00\x00\x00\x00\x35\x00\x7d\x04\x74\x11\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x04\x6a\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x7c\x01\x64\x03\xab\x03\x00\x00\x00\x00\x00\x00\x7d\x05\x64\x00\x64\x00\x64\x00\xab\x02\x00\x00\x00\x00\x00\x00\x01\x00\x7c\x05\x7c\x01\x66\x02\x53\x00\x7c\x05\x7c\x01\x66\x02\x53\x00\x23\x00\x31\x00\x73\x01\x77\x02\x01\x00\x59\x00\x01\x00\x01\x00\x8c\x4c\x78\x03\x59\x00\x77\x01\x23\x00\x31\x00\x73\x01\x77\x02\x01\x00\x59\x00\x01\x00\x01\x00\x7c\x05\x7c\x01\x66\x02\x53\x00\x78\x03\x59\x00\x77\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyCompactUnicodeObject _compact;
+ uint16_t _data[531];
+ }
+runpy_toplevel_consts_18_consts_0 = {
+ ._compact = {
+ ._base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 530,
+ .hash = -1,
+ .state = {
+ .kind = 2,
+ .compact = 1,
+ .ascii = 0,
+ .statically_allocated = 1,
+ },
+ },
+ .utf8 = "\x45\x78\x65\x63\x75\x74\x65\x20\x63\x6f\x64\x65\x20\x6c\x6f\x63\x61\x74\x65\x64\x20\x61\x74\x20\x74\x68\x65\x20\x73\x70\x65\x63\x69\x66\x69\x65\x64\x20\x66\x69\x6c\x65\x73\x79\x73\x74\x65\x6d\x20\x6c\x6f\x63\x61\x74\x69\x6f\x6e\x2e\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x70\x61\x74\x68\x5f\x6e\x61\x6d\x65\x20\x2d\x2d\x20\x66\x69\x6c\x65\x73\x79\x73\x74\x65\x6d\x20\x6c\x6f\x63\x61\x74\x69\x6f\x6e\x20\x6f\x66\x20\x61\x20\x50\x79\x74\x68\x6f\x6e\x20\x73\x63\x72\x69\x70\x74\x2c\x20\x7a\x69\x70\x66\x69\x6c\x65\x2c\x0a\x20\x20\x20\x20\x20\x20\x20\x6f\x72\x20\x64\x69\x72\x65\x63\x74\x6f\x72\x79\x20\x63\x6f\x6e\x74\x61\x69\x6e\x69\x6e\x67\x20\x61\x20\x74\x6f\x70\x20\x6c\x65\x76\x65\x6c\x20\x5f\x5f\x6d\x61\x69\x6e\x5f\x5f\x2e\x70\x79\x20\x73\x63\x72\x69\x70\x74\x2e\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x4f\x70\x74\x69\x6f\x6e\x61\x6c\x20\x61\x72\x67\x75\x6d\x65\x6e\x74\x73\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x69\x6e\x69\x74\x5f\x67\x6c\x6f\x62\x61\x6c\x73\x20\x2d\x2d\x20\x64\x69\x63\x74\x69\x6f\x6e\x61\x72\x79\x20\x75\x73\x65\x64\x20\x74\x6f\x20\x70\x72\x65\x2d\x70\x6f\x70\x75\x6c\x61\x74\x65\x20\x74\x68\x65\x20\x6d\x6f\x64\x75\x6c\x65\xe2\x80\x99\x73\x0a\x20\x20\x20\x20\x20\x20\x20\x67\x6c\x6f\x62\x61\x6c\x73\x20\x64\x69\x63\x74\x69\x6f\x6e\x61\x72\x79\x20\x62\x65\x66\x6f\x72\x65\x20\x74\x68\x65\x20\x63\x6f\x64\x65\x20\x69\x73\x20\x65\x78\x65\x63\x75\x74\x65\x64\x2e\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x72\x75\x6e\x5f\x6e\x61\x6d\x65\x20\x2d\x2d\x20\x69\x66\x20\x6e\x6f\x74\x20\x4e\x6f\x6e\x65\x2c\x20\x74\x68\x69\x73\x20\x77\x69\x6c\x6c\x20\x62\x65\x20\x75\x73\x65\x64\x20\x74\x6f\x20\x73\x65\x74\x20\x5f\x5f\x6e\x61\x6d\x65\x5f\x5f\x3b\x0a\x20\x20\x20\x20\x20\x20\x20\x6f\x74\x68\x65\x72\x77\x69\x73\x65\x2c\x20\x27\x3c\x72\x75\x6e\x5f\x70\x61\x74\x68\x3e\x27\x20\x77\x69\x6c\x6c\x20\x62\x65\x20\x75\x73\x65\x64\x20\x66\x6f\x72\x20\x5f\x5f\x6e\x61\x6d\x65\x5f\x5f\x2e\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x52\x65\x74\x75\x72\x6e\x73\x20\x74\x68\x65\x20\x72\x65\x73\x75\x6c\x74\x69\x6e\x67\x20\x6d\x6f\x64\x75\x6c\x65\x20\x67\x6c\x6f\x62\x61\x6c\x73\x20\x64\x69\x63\x74\x69\x6f\x6e\x61\x72\x79\x2e\x0a\x20\x20\x20\x20",
+ .utf8_length = 532,
+ },
+ ._data = {
+ 69, 120, 101, 99, 117, 116, 101, 32, 99, 111, 100, 101, 32, 108, 111, 99,
+ 97, 116, 101, 100, 32, 97, 116, 32, 116, 104, 101, 32, 115, 112, 101, 99,
+ 105, 102, 105, 101, 100, 32, 102, 105, 108, 101, 115, 121, 115, 116, 101, 109,
+ 32, 108, 111, 99, 97, 116, 105, 111, 110, 46, 10, 10, 32, 32, 32, 32,
+ 32, 32, 32, 112, 97, 116, 104, 95, 110, 97, 109, 101, 32, 45, 45, 32,
+ 102, 105, 108, 101, 115, 121, 115, 116, 101, 109, 32, 108, 111, 99, 97, 116,
+ 105, 111, 110, 32, 111, 102, 32, 97, 32, 80, 121, 116, 104, 111, 110, 32,
+ 115, 99, 114, 105, 112, 116, 44, 32, 122, 105, 112, 102, 105, 108, 101, 44,
+ 10, 32, 32, 32, 32, 32, 32, 32, 111, 114, 32, 100, 105, 114, 101, 99,
+ 116, 111, 114, 121, 32, 99, 111, 110, 116, 97, 105, 110, 105, 110, 103, 32,
+ 97, 32, 116, 111, 112, 32, 108, 101, 118, 101, 108, 32, 95, 95, 109, 97,
+ 105, 110, 95, 95, 46, 112, 121, 32, 115, 99, 114, 105, 112, 116, 46, 10,
+ 10, 32, 32, 32, 32, 32, 32, 32, 79, 112, 116, 105, 111, 110, 97, 108,
+ 32, 97, 114, 103, 117, 109, 101, 110, 116, 115, 58, 10, 32, 32, 32, 32,
+ 32, 32, 32, 105, 110, 105, 116, 95, 103, 108, 111, 98, 97, 108, 115, 32,
+ 45, 45, 32, 100, 105, 99, 116, 105, 111, 110, 97, 114, 121, 32, 117, 115,
+ 101, 100, 32, 116, 111, 32, 112, 114, 101, 45, 112, 111, 112, 117, 108, 97,
+ 116, 101, 32, 116, 104, 101, 32, 109, 111, 100, 117, 108, 101, 8217, 115, 10,
+ 32, 32, 32, 32, 32, 32, 32, 103, 108, 111, 98, 97, 108, 115, 32, 100,
+ 105, 99, 116, 105, 111, 110, 97, 114, 121, 32, 98, 101, 102, 111, 114, 101,
+ 32, 116, 104, 101, 32, 99, 111, 100, 101, 32, 105, 115, 32, 101, 120, 101,
+ 99, 117, 116, 101, 100, 46, 10, 10, 32, 32, 32, 32, 32, 32, 32, 114,
+ 117, 110, 95, 110, 97, 109, 101, 32, 45, 45, 32, 105, 102, 32, 110, 111,
+ 116, 32, 78, 111, 110, 101, 44, 32, 116, 104, 105, 115, 32, 119, 105, 108,
+ 108, 32, 98, 101, 32, 117, 115, 101, 100, 32, 116, 111, 32, 115, 101, 116,
+ 32, 95, 95, 110, 97, 109, 101, 95, 95, 59, 10, 32, 32, 32, 32, 32,
+ 32, 32, 111, 116, 104, 101, 114, 119, 105, 115, 101, 44, 32, 39, 60, 114,
+ 117, 110, 95, 112, 97, 116, 104, 62, 39, 32, 119, 105, 108, 108, 32, 98,
+ 101, 32, 117, 115, 101, 100, 32, 102, 111, 114, 32, 95, 95, 110, 97, 109,
+ 101, 95, 95, 46, 10, 10, 32, 32, 32, 32, 32, 32, 32, 82, 101, 116,
+ 117, 114, 110, 115, 32, 116, 104, 101, 32, 114, 101, 115, 117, 108, 116, 105,
+ 110, 103, 32, 109, 111, 100, 117, 108, 101, 32, 103, 108, 111, 98, 97, 108,
+ 115, 32, 100, 105, 99, 116, 105, 111, 110, 97, 114, 121, 46, 10, 32, 32,
+ 32, 32,
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[11];
+ }
+runpy_toplevel_consts_18_consts_2 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 10,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "<run_path>",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[13];
+ }
+const_str_get_importer = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 12,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "get_importer",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+runpy_toplevel_consts_18_consts_5 = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & const_str_get_importer._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+runpy_toplevel_consts_18_consts_6 = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & const_str_pkg_name._ascii.ob_base,
+ & const_str_script_name._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[7];
+ }_object;
+ }
+runpy_toplevel_consts_18_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 7,
+ },
+ .ob_item = {
+ & runpy_toplevel_consts_18_consts_0._compact._base.ob_base,
+ Py_None,
+ & runpy_toplevel_consts_18_consts_2._ascii.ob_base,
+ &_Py_STR(dot),
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 0],
+ & runpy_toplevel_consts_18_consts_5._object.ob_base.ob_base,
+ & runpy_toplevel_consts_18_consts_6._object.ob_base.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[19];
+ }_object;
+ }
+runpy_toplevel_consts_18_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 19,
+ },
+ .ob_item = {
+ & const_str_rpartition._ascii.ob_base,
+ & const_str_pkgutil._ascii.ob_base,
+ & const_str_get_importer._ascii.ob_base,
+ &_Py_ID(isinstance),
+ &_Py_ID(type),
+ & const_str__get_code_from_file._ascii.ob_base,
+ & const_str__run_module_code._ascii.ob_base,
+ & const_str_sys._ascii.ob_base,
+ &_Py_ID(path),
+ & const_str_insert._ascii.ob_base,
+ & const_str__get_main_module_details._ascii.ob_base,
+ & const_str__TempModule._ascii.ob_base,
+ & const_str__ModifiedArgv0._ascii.ob_base,
+ &_Py_ID(module),
+ &_Py_ID(__dict__),
+ & const_str__run_code._ascii.ob_base,
+ &_Py_ID(copy),
+ & const_str_remove._ascii.ob_base,
+ & const_str_ValueError._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[394];
+ }
+runpy_toplevel_consts_18_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 393,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xf0\x1e\x00\x08\x10\xd0\x07\x17\xd8\x13\x1f\x88\x08\xd8\x0f\x17\xd7\x0f\x22\xd1\x0f\x22\xa0\x33\xd3\x0f\x27\xa8\x01\xd1\x0f\x2a\x80\x48\xdd\x04\x24\xd9\x0f\x1b\x98\x49\xd3\x0f\x26\x80\x48\xdc\x07\x11\x90\x28\x9c\x44\xa0\x14\x9b\x4a\xd4\x07\x27\xf4\x06\x00\x17\x2a\xa8\x28\xb0\x49\xd3\x16\x3e\x89\x0b\x88\x04\x88\x65\xdc\x0f\x1f\xa0\x04\xa0\x6c\xb0\x48\xd8\x29\x31\xb8\x75\xf4\x03\x01\x10\x46\x01\xf0\x00\x01\x09\x46\x01\xf4\x0a\x00\x09\x0c\x8f\x08\x89\x08\x8f\x0f\x89\x0f\x98\x01\x98\x39\xd4\x08\x25\xf0\x02\x11\x09\x15\xf4\x0e\x00\x28\x40\x01\xd3\x27\x41\xd1\x0c\x24\x88\x48\x90\x68\xa0\x04\xdc\x11\x1c\x98\x58\xd3\x11\x26\xf0\x00\x04\x0d\x49\x01\xa8\x2b\xdc\x11\x1f\xa0\x09\xd3\x11\x2a\xf1\x03\x04\x0d\x49\x01\xe0\x1e\x29\xd7\x1e\x30\xd1\x1e\x30\xd7\x1e\x39\xd1\x1e\x39\x90\x0b\xdc\x17\x20\xa0\x14\xa0\x7b\xb0\x4c\xd8\x24\x2c\xa8\x68\xb8\x08\xf3\x03\x01\x18\x42\x01\xdf\x42\x46\xc1\x24\xc3\x26\xf7\x09\x04\x0d\x49\x01\xf7\x00\x04\x0d\x49\x01\xf1\x00\x04\x0d\x49\x01\xf0\x0c\x03\x0d\x15\xdc\x10\x13\x97\x08\x91\x08\x97\x0f\x91\x0f\xa0\x09\xd5\x10\x2a\xf8\xdc\x13\x1d\xf2\x00\x01\x0d\x15\xd9\x10\x14\xf0\x03\x01\x0d\x15\xfa\xf7\x11\x04\x0d\x49\x01\xf0\x00\x04\x0d\x49\x01\xfa\xf7\x00\x04\x0d\x49\x01\xf7\x00\x04\x0d\x49\x01\xf1\x00\x04\x0d\x49\x01\xfa\xf0\x0c\x03\x0d\x15\xdc\x10\x13\x97\x08\x91\x08\x97\x0f\x91\x0f\xa0\x09\xd5\x10\x2a\xf8\xdc\x13\x1d\xf2\x00\x01\x0d\x15\xd9\x10\x14\xf0\x03\x01\x0d\x15\xfb\xf0\x05\x03\x0d\x15\xdc\x10\x13\x97\x08\x91\x08\x97\x0f\x91\x0f\xa0\x09\xd5\x10\x2a\xf8\xdc\x13\x1d\xf2\x00\x01\x0d\x15\xd9\x10\x14\xf0\x03\x01\x0d\x15\xfd",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[139];
+ }
+runpy_toplevel_consts_18_exceptiontable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 138,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\xc1\x3c\x19\x45\x28\x00\xc2\x15\x0c\x44\x2c\x03\xc2\x21\x34\x44\x17\x05\xc3\x15\x09\x44\x2c\x03\xc3\x1e\x09\x45\x28\x00\xc3\x28\x1f\x44\x08\x02\xc4\x08\x09\x44\x14\x05\xc4\x13\x01\x44\x14\x05\xc4\x17\x05\x44\x20\x09\xc4\x1c\x07\x44\x2c\x03\xc4\x23\x09\x45\x28\x00\xc4\x2c\x05\x44\x35\x07\xc4\x31\x07\x45\x28\x00\xc4\x39\x1f\x45\x19\x00\xc5\x19\x09\x45\x25\x03\xc5\x24\x01\x45\x25\x03\xc5\x28\x01\x46\x19\x03\xc5\x2a\x1f\x46\x0a\x04\xc6\x09\x01\x46\x19\x03\xc6\x0a\x09\x46\x16\x07\xc6\x13\x02\x46\x19\x03\xc6\x15\x01\x46\x16\x07\xc6\x16\x03\x46\x19\x03",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[10];
+ }
+const_str_path_name = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 9,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "path_name",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[9];
+ }
+const_str_importer = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 8,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "importer",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[12];
+ }_object;
+ }
+runpy_toplevel_consts_18_localsplusnames = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 12,
+ },
+ .ob_item = {
+ & const_str_path_name._ascii.ob_base,
+ & const_str_init_globals._ascii.ob_base,
+ & const_str_run_name._ascii.ob_base,
+ & const_str_pkg_name._ascii.ob_base,
+ & const_str_get_importer._ascii.ob_base,
+ & const_str_importer._ascii.ob_base,
+ &_Py_ID(code),
+ & const_str_fname._ascii.ob_base,
+ & const_str_mod_name._ascii.ob_base,
+ & const_str_mod_spec._ascii.ob_base,
+ & const_str_temp_module._ascii.ob_base,
+ & const_str_mod_globals._ascii.ob_base,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(824)
+runpy_toplevel_consts_18 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 412,
+ },
+ .co_consts = & runpy_toplevel_consts_18_consts._object.ob_base.ob_base,
+ .co_names = & runpy_toplevel_consts_18_names._object.ob_base.ob_base,
+ .co_exceptiontable = & runpy_toplevel_consts_18_exceptiontable.ob_base.ob_base,
+ .co_flags = 3,
+ .co_argcount = 3,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 22 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 10,
+ .co_firstlineno = 262,
+ .co_nlocalsplus = 12,
+ .co_nlocals = 12,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 755,
+ .co_localsplusnames = & runpy_toplevel_consts_18_localsplusnames._object.ob_base.ob_base,
+ .co_localspluskinds = & importlib__bootstrap_external_toplevel_consts_36_localspluskinds.ob_base.ob_base,
+ .co_filename = & runpy_toplevel_consts_5_consts_2_filename._ascii.ob_base,
+ .co_name = & const_str_run_path._ascii.ob_base,
+ .co_qualname = & const_str_run_path._ascii.ob_base,
+ .co_linetable = & runpy_toplevel_consts_18_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x7c\x02\x80\x02\x64\x02\x7d\x02\x7c\x02\x6a\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x03\xab\x01\x00\x00\x00\x00\x00\x00\x64\x04\x19\x00\x00\x00\x7d\x03\x64\x04\x64\x05\x6c\x01\x6d\x02\x7d\x04\x01\x00\x02\x00\x7c\x04\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x7d\x05\x74\x07\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x05\x74\x09\x00\x00\x00\x00\x00\x00\x00\x00\x64\x01\xab\x01\x00\x00\x00\x00\x00\x00\xab\x02\x00\x00\x00\x00\x00\x00\x72\x1f\x74\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x02\x7c\x00\xab\x02\x00\x00\x00\x00\x00\x00\x5c\x02\x00\x00\x7d\x06\x7d\x07\x74\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x06\x7c\x01\x7c\x02\x7c\x03\x7c\x07\xac\x06\xab\x05\x00\x00\x00\x00\x00\x00\x53\x00\x74\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x04\x7c\x00\xab\x02\x00\x00\x00\x00\x00\x00\x01\x00\x09\x00\x74\x15\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x5c\x03\x00\x00\x7d\x08\x7d\x09\x7d\x06\x74\x17\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x02\xab\x01\x00\x00\x00\x00\x00\x00\x35\x00\x7d\x0a\x74\x19\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x35\x00\x01\x00\x7c\x0a\x6a\x1a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x1c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7d\x0b\x74\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x06\x7c\x0b\x7c\x01\x7c\x02\x7c\x09\x7c\x03\xab\x06\x00\x00\x00\x00\x00\x00\x6a\x21\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x63\x02\x64\x01\x64\x01\x64\x01\xab\x02\x00\x00\x00\x00\x00\x00\x01\x00\x63\x02\x64\x01\x64\x01\x64\x01\xab\x02\x00\x00\x00\x00\x00\x00\x01\x00\x09\x00\x74\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x23\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x53\x00\x23\x00\x74\x24\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x72\x03\x01\x00\x59\x00\x53\x00\x77\x00\x78\x03\x59\x00\x77\x01\x23\x00\x31\x00\x73\x01\x77\x02\x01\x00\x59\x00\x01\x00\x01\x00\x6e\x03\x78\x03\x59\x00\x77\x01\x64\x01\x64\x01\x64\x01\xab\x02\x00\x00\x00\x00\x00\x00\x01\x00\x6e\x0c\x23\x00\x31\x00\x73\x01\x77\x02\x01\x00\x59\x00\x01\x00\x01\x00\x6e\x03\x78\x03\x59\x00\x77\x01\x09\x00\x74\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x23\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x79\x01\x23\x00\x74\x24\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x72\x03\x01\x00\x59\x00\x79\x01\x77\x00\x78\x03\x59\x00\x77\x01\x23\x00\x09\x00\x74\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x23\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x77\x00\x23\x00\x74\x24\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x72\x03\x01\x00\x59\x00\x77\x00\x77\x00\x78\x03\x59\x00\x77\x01\x78\x03\x59\x00\x77\x01",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[34];
+ }
+runpy_toplevel_consts_21 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 33,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "No module specified for execution",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+runpy_toplevel_consts_25 = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ Py_None,
+ Py_None,
+ Py_False,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[27];
+ }_object;
+ }
+runpy_toplevel_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 27,
+ },
+ .ob_item = {
+ & runpy_toplevel_consts_0._ascii.ob_base,
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 0],
+ Py_None,
+ & const_str_run_module._ascii.ob_base,
+ & const_str_run_path._ascii.ob_base,
+ & runpy_toplevel_consts_5.ob_base.ob_base,
+ & const_str__TempModule._ascii.ob_base,
+ & runpy_toplevel_consts_7.ob_base.ob_base,
+ & const_str__ModifiedArgv0._ascii.ob_base,
+ & runpy_toplevel_consts_9.ob_base.ob_base,
+ & runpy_toplevel_consts_10.ob_base.ob_base,
+ & runpy_toplevel_consts_11.ob_base.ob_base,
+ & runpy_toplevel_consts_12.ob_base.ob_base,
+ & const_str__Error._ascii.ob_base,
+ & runpy_toplevel_consts_14.ob_base.ob_base,
+ & runpy_toplevel_consts_15.ob_base.ob_base,
+ & runpy_toplevel_consts_16.ob_base.ob_base,
+ & runpy_toplevel_consts_17.ob_base.ob_base,
+ & runpy_toplevel_consts_18.ob_base.ob_base,
+ &_Py_ID(__main__),
+ (PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + 2],
+ & runpy_toplevel_consts_21._ascii.ob_base,
+ & importlib__bootstrap_toplevel_consts_25_consts_3._object.ob_base.ob_base,
+ & codecs_toplevel_consts_12_consts_7._object.ob_base.ob_base,
+ & importlib__bootstrap_external_toplevel_consts_82._object.ob_base.ob_base,
+ & runpy_toplevel_consts_25._object.ob_base.ob_base,
+ & importlib__bootstrap_toplevel_consts_44_consts_10._object.ob_base.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[20];
+ }
+runpy_toplevel_names_2 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 19,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "importlib.machinery",
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[15];
+ }
+runpy_toplevel_names_4 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 14,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "importlib.util",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[29];
+ }_object;
+ }
+runpy_toplevel_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 29,
+ },
+ .ob_item = {
+ &_Py_ID(__doc__),
+ & const_str_sys._ascii.ob_base,
+ & runpy_toplevel_names_2._ascii.ob_base,
+ &_Py_ID(importlib),
+ & runpy_toplevel_names_4._ascii.ob_base,
+ & const_str_io._ascii.ob_base,
+ & const_str_os._ascii.ob_base,
+ &_Py_ID(__all__),
+ &_Py_ID(type),
+ & const_str_ModuleType._ascii.ob_base,
+ &_Py_ID(object),
+ & const_str__TempModule._ascii.ob_base,
+ & const_str__ModifiedArgv0._ascii.ob_base,
+ & const_str__run_code._ascii.ob_base,
+ & const_str__run_module_code._ascii.ob_base,
+ & const_str_ImportError._ascii.ob_base,
+ & const_str__get_module_details._ascii.ob_base,
+ & const_str_Exception._ascii.ob_base,
+ & const_str__Error._ascii.ob_base,
+ & const_str__run_module_as_main._ascii.ob_base,
+ & const_str_run_module._ascii.ob_base,
+ & const_str__get_main_module_details._ascii.ob_base,
+ & const_str__get_code_from_file._ascii.ob_base,
+ & const_str_run_path._ascii.ob_base,
+ &_Py_ID(__name__),
+ &_Py_ID(len),
+ &_Py_ID(argv),
+ & const_str_print._ascii.ob_base,
+ &_Py_ID(stderr),
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[247];
+ }
+runpy_toplevel_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 246,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\xf0\x03\x01\x01\x01\xf1\x02\x07\x01\x04\xf3\x18\x00\x01\x0b\xdb\x00\x1a\xdb\x00\x15\xdb\x00\x09\xdb\x00\x09\xf0\x06\x00\x05\x11\x90\x2a\xf0\x03\x02\x0b\x02\x80\x07\xf1\x0a\x00\x0e\x12\x90\x23\x8b\x59\x80\x0a\xf4\x04\x15\x01\x20\x90\x26\xf4\x00\x15\x01\x20\xf4\x2e\x0d\x01\x28\x90\x56\xf4\x00\x0d\x01\x28\xf0\x20\x00\x2f\x33\xd8\x26\x2a\xd8\x29\x2d\xf3\x05\x18\x01\x17\xf0\x34\x00\x29\x2d\xd8\x2c\x30\xd8\x2f\x33\xf3\x05\x0b\x01\x1e\xf0\x1c\x00\x29\x34\xf3\x00\x3b\x01\x20\xf4\x7a\x01\x01\x01\x4d\x01\x88\x59\xf4\x00\x01\x01\x4d\x01\xf3\x0e\x1a\x01\x2b\xf0\x38\x00\x27\x2b\xd8\x28\x2d\xf3\x03\x1c\x01\x45\x01\xf0\x3c\x00\x24\x2f\xf3\x00\x10\x01\x2c\xf2\x26\x0a\x01\x17\xf3\x18\x2f\x01\x15\xf0\x64\x01\x00\x04\x0c\x88\x7a\xd2\x03\x19\xe1\x07\x0a\x88\x33\x8f\x38\x89\x38\x83\x7d\x90\x71\xd2\x07\x18\xd9\x08\x0d\xd0\x0e\x31\xb8\x03\xbf\x0a\xb9\x0a\xd6\x08\x43\xe0\x0c\x0f\x8f\x48\x89\x48\x90\x51\x88\x4b\xd9\x08\x1b\x98\x43\x9f\x48\x99\x48\xa0\x51\x99\x4b\xd5\x08\x28\xf0\x0d\x00\x04\x1a",
+};
+static
+ struct _PyCode_DEF(384)
+runpy_toplevel = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 192,
+ },
+ .co_consts = & runpy_toplevel_consts._object.ob_base.ob_base,
+ .co_names = & runpy_toplevel_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 0,
+ .co_argcount = 0,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 5 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 5,
+ .co_firstlineno = 1,
+ .co_nlocalsplus = 0,
+ .co_nlocals = 0,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 756,
+ .co_localsplusnames = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_filename = & runpy_toplevel_consts_5_consts_2_filename._ascii.ob_base,
+ .co_name = &_Py_STR(anon_module),
+ .co_qualname = &_Py_STR(anon_module),
+ .co_linetable = & runpy_toplevel_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x64\x00\x5a\x00\x64\x01\x64\x02\x6c\x01\x5a\x01\x64\x01\x64\x02\x6c\x02\x5a\x03\x64\x01\x64\x02\x6c\x04\x5a\x03\x64\x01\x64\x02\x6c\x05\x5a\x05\x64\x01\x64\x02\x6c\x06\x5a\x06\x64\x03\x64\x04\x67\x02\x5a\x07\x02\x00\x65\x08\x65\x01\xab\x01\x00\x00\x00\x00\x00\x00\x5a\x09\x02\x00\x47\x00\x64\x05\x84\x00\x64\x06\x65\x0a\xab\x03\x00\x00\x00\x00\x00\x00\x5a\x0b\x02\x00\x47\x00\x64\x07\x84\x00\x64\x08\x65\x0a\xab\x03\x00\x00\x00\x00\x00\x00\x5a\x0c\x09\x00\x09\x00\x09\x00\x64\x17\x64\x09\x84\x01\x5a\x0d\x09\x00\x09\x00\x09\x00\x64\x17\x64\x0a\x84\x01\x5a\x0e\x65\x0f\x66\x01\x64\x0b\x84\x01\x5a\x10\x02\x00\x47\x00\x64\x0c\x84\x00\x64\x0d\x65\x11\xab\x03\x00\x00\x00\x00\x00\x00\x5a\x12\x64\x18\x64\x0e\x84\x01\x5a\x13\x09\x00\x09\x00\x64\x19\x64\x0f\x84\x01\x5a\x14\x65\x0f\x66\x01\x64\x10\x84\x01\x5a\x15\x64\x11\x84\x00\x5a\x16\x64\x1a\x64\x12\x84\x01\x5a\x17\x65\x18\x64\x13\x6b\x28\x00\x00\x72\x4d\x02\x00\x65\x19\x65\x01\x6a\x34\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x64\x14\x6b\x02\x00\x00\x72\x15\x02\x00\x65\x1b\x64\x15\x65\x01\x6a\x38\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xac\x16\xab\x02\x00\x00\x00\x00\x00\x00\x01\x00\x79\x02\x65\x01\x6a\x34\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x01\x3d\x00\x02\x00\x65\x13\x65\x01\x6a\x34\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x01\x19\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x79\x02\x79\x02",
+ ._co_firsttraceable = 0,
+};
+
+PyObject *
+_Py_get_runpy_toplevel(void)
+{
+ return Py_NewRef((PyObject *) &runpy_toplevel);
+}
+
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[17];
+ }
+const_str_TestFrozenUtf8_1 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 16,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "TestFrozenUtf8_1",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+__hello___toplevel_consts_1_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ & const_str_TestFrozenUtf8_1._ascii.ob_base,
+ (PyObject *)&_Py_SINGLETON(strings).latin1[54],
+ Py_None,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[19];
+ }
+__hello___toplevel_consts_1_filename = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 18,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "<frozen __hello__>",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[6];
+ }
+__hello___toplevel_consts_1_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 5,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x84\x00\xda\x04\x10",
+};
+static
+ struct _PyCode_DEF(16)
+__hello___toplevel_consts_1 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 8,
+ },
+ .co_consts = & __hello___toplevel_consts_1_consts._object.ob_base.ob_base,
+ .co_names = & runpy_toplevel_consts_12_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 0,
+ .co_argcount = 0,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 1 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 1,
+ .co_firstlineno = 3,
+ .co_nlocalsplus = 0,
+ .co_nlocals = 0,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 757,
+ .co_localsplusnames = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_filename = & __hello___toplevel_consts_1_filename._ascii.ob_base,
+ .co_name = & const_str_TestFrozenUtf8_1._ascii.ob_base,
+ .co_qualname = & const_str_TestFrozenUtf8_1._ascii.ob_base,
+ .co_linetable = & __hello___toplevel_consts_1_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x65\x00\x5a\x01\x64\x00\x5a\x02\x64\x01\x5a\x03\x79\x02",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[17];
+ }
+const_str_TestFrozenUtf8_2 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 16,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "TestFrozenUtf8_2",
+};
+static
+ struct {
+ PyCompactUnicodeObject _compact;
+ uint16_t _data[2];
+ }
+__hello___toplevel_consts_3_consts_1 = {
+ ._compact = {
+ ._base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 1,
+ .hash = -1,
+ .state = {
+ .kind = 2,
+ .compact = 1,
+ .ascii = 0,
+ .statically_allocated = 1,
+ },
+ },
+ .utf8 = "\xcf\x80",
+ .utf8_length = 2,
+ },
+ ._data = {
+ 960,
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+__hello___toplevel_consts_3_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ & const_str_TestFrozenUtf8_2._ascii.ob_base,
+ & __hello___toplevel_consts_3_consts_1._compact._base.ob_base,
+ Py_None,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(16)
+__hello___toplevel_consts_3 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 8,
+ },
+ .co_consts = & __hello___toplevel_consts_3_consts._object.ob_base.ob_base,
+ .co_names = & runpy_toplevel_consts_12_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 0,
+ .co_argcount = 0,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 1 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 1,
+ .co_firstlineno = 6,
+ .co_nlocalsplus = 0,
+ .co_nlocals = 0,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 758,
+ .co_localsplusnames = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_filename = & __hello___toplevel_consts_1_filename._ascii.ob_base,
+ .co_name = & const_str_TestFrozenUtf8_2._ascii.ob_base,
+ .co_qualname = & const_str_TestFrozenUtf8_2._ascii.ob_base,
+ .co_linetable = & __hello___toplevel_consts_1_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x65\x00\x5a\x01\x64\x00\x5a\x02\x64\x01\x5a\x03\x79\x02",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[17];
+ }
+const_str_TestFrozenUtf8_4 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 16,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "TestFrozenUtf8_4",
+};
+static
+ struct {
+ PyCompactUnicodeObject _compact;
+ uint32_t _data[2];
+ }
+__hello___toplevel_consts_5_consts_1 = {
+ ._compact = {
+ ._base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 1,
+ .hash = -1,
+ .state = {
+ .kind = 4,
+ .compact = 1,
+ .ascii = 0,
+ .statically_allocated = 1,
+ },
+ },
+ .utf8 = "\xf0\x9f\x98\x80",
+ .utf8_length = 4,
+ },
+ ._data = {
+ 128512,
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+__hello___toplevel_consts_5_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ & const_str_TestFrozenUtf8_4._ascii.ob_base,
+ & __hello___toplevel_consts_5_consts_1._compact._base.ob_base,
+ Py_None,
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[6];
+ }
+__hello___toplevel_consts_5_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 5,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x84\x00\xda\x04\x14",
+};
+static
+ struct _PyCode_DEF(16)
+__hello___toplevel_consts_5 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 8,
+ },
+ .co_consts = & __hello___toplevel_consts_5_consts._object.ob_base.ob_base,
+ .co_names = & runpy_toplevel_consts_12_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 0,
+ .co_argcount = 0,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 1 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 1,
+ .co_firstlineno = 9,
+ .co_nlocalsplus = 0,
+ .co_nlocals = 0,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 759,
+ .co_localsplusnames = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_filename = & __hello___toplevel_consts_1_filename._ascii.ob_base,
+ .co_name = & const_str_TestFrozenUtf8_4._ascii.ob_base,
+ .co_qualname = & const_str_TestFrozenUtf8_4._ascii.ob_base,
+ .co_linetable = & __hello___toplevel_consts_5_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x65\x00\x5a\x01\x64\x00\x5a\x02\x64\x01\x5a\x03\x79\x02",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[13];
+ }
+__hello___toplevel_consts_7_consts_1 = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 12,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "Hello world!",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+__hello___toplevel_consts_7_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ Py_None,
+ & __hello___toplevel_consts_7_consts_1._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[1];
+ }_object;
+ }
+__hello___toplevel_consts_7_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 1,
+ },
+ .ob_item = {
+ & const_str_print._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[11];
+ }
+__hello___toplevel_consts_7_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 10,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\x80\x00\xdc\x04\x09\x88\x2e\xd5\x04\x19",
+};
+static
+ struct _PyCode_DEF(26)
+__hello___toplevel_consts_7 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 13,
+ },
+ .co_consts = & __hello___toplevel_consts_7_consts._object.ob_base.ob_base,
+ .co_names = & __hello___toplevel_consts_7_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 0,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 3 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 3,
+ .co_firstlineno = 12,
+ .co_nlocalsplus = 0,
+ .co_nlocals = 0,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 760,
+ .co_localsplusnames = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_filename = & __hello___toplevel_consts_1_filename._ascii.ob_base,
+ .co_name = & const_str_main._ascii.ob_base,
+ .co_qualname = & const_str_main._ascii.ob_base,
+ .co_linetable = & __hello___toplevel_consts_7_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x64\x01\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x79\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[10];
+ }_object;
+ }
+__hello___toplevel_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 10,
+ },
+ .ob_item = {
+ Py_True,
+ & __hello___toplevel_consts_1.ob_base.ob_base,
+ & const_str_TestFrozenUtf8_1._ascii.ob_base,
+ & __hello___toplevel_consts_3.ob_base.ob_base,
+ & const_str_TestFrozenUtf8_2._ascii.ob_base,
+ & __hello___toplevel_consts_5.ob_base.ob_base,
+ & const_str_TestFrozenUtf8_4._ascii.ob_base,
+ & __hello___toplevel_consts_7.ob_base.ob_base,
+ &_Py_ID(__main__),
+ Py_None,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[12];
+ }
+const_str_initialized = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 11,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "initialized",
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[6];
+ }_object;
+ }
+__hello___toplevel_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 6,
+ },
+ .ob_item = {
+ & const_str_initialized._ascii.ob_base,
+ & const_str_TestFrozenUtf8_1._ascii.ob_base,
+ & const_str_TestFrozenUtf8_2._ascii.ob_base,
+ & const_str_TestFrozenUtf8_4._ascii.ob_base,
+ & const_str_main._ascii.ob_base,
+ &_Py_ID(__name__),
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[66];
+ }
+__hello___toplevel_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 65,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\xf0\x03\x01\x01\x01\xd8\x0e\x12\x80\x0b\xf7\x04\x01\x01\x11\xf1\x00\x01\x01\x11\xf7\x06\x01\x01\x11\xf1\x00\x01\x01\x11\xf7\x06\x01\x01\x15\xf1\x00\x01\x01\x15\xf2\x06\x01\x01\x1a\xf0\x06\x00\x04\x0c\x88\x7a\xd2\x03\x19\xd9\x04\x08\x85\x46\xf0\x03\x00\x04\x1a",
+};
+static
+ struct _PyCode_DEF(100)
+__hello___toplevel = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 50,
+ },
+ .co_consts = & __hello___toplevel_consts._object.ob_base.ob_base,
+ .co_names = & __hello___toplevel_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 0,
+ .co_argcount = 0,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 4 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 4,
+ .co_firstlineno = 1,
+ .co_nlocalsplus = 0,
+ .co_nlocals = 0,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 761,
+ .co_localsplusnames = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_filename = & __hello___toplevel_consts_1_filename._ascii.ob_base,
+ .co_name = &_Py_STR(anon_module),
+ .co_qualname = &_Py_STR(anon_module),
+ .co_linetable = & __hello___toplevel_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x64\x00\x5a\x00\x02\x00\x47\x00\x64\x01\x84\x00\x64\x02\xab\x02\x00\x00\x00\x00\x00\x00\x5a\x01\x02\x00\x47\x00\x64\x03\x84\x00\x64\x04\xab\x02\x00\x00\x00\x00\x00\x00\x5a\x02\x02\x00\x47\x00\x64\x05\x84\x00\x64\x06\xab\x02\x00\x00\x00\x00\x00\x00\x5a\x03\x64\x07\x84\x00\x5a\x04\x65\x05\x64\x08\x6b\x28\x00\x00\x72\x08\x02\x00\x65\x04\xab\x00\x00\x00\x00\x00\x00\x00\x01\x00\x79\x09\x79\x09",
+ ._co_firsttraceable = 0,
+};
+
+PyObject *
+_Py_get___hello___toplevel(void)
+{
+ return Py_NewRef((PyObject *) &__hello___toplevel);
+}
+
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[20];
+ }
+__phello___toplevel_consts_1_filename = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 19,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "<frozen __phello__>",
+};
+static
+ struct _PyCode_DEF(26)
+__phello___toplevel_consts_1 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 13,
+ },
+ .co_consts = & __hello___toplevel_consts_7_consts._object.ob_base.ob_base,
+ .co_names = & __hello___toplevel_consts_7_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 0,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 3 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 3,
+ .co_firstlineno = 3,
+ .co_nlocalsplus = 0,
+ .co_nlocals = 0,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 762,
+ .co_localsplusnames = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_filename = & __phello___toplevel_consts_1_filename._ascii.ob_base,
+ .co_name = & const_str_main._ascii.ob_base,
+ .co_qualname = & const_str_main._ascii.ob_base,
+ .co_linetable = & __hello___toplevel_consts_7_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x64\x01\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x79\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[4];
+ }_object;
+ }
+__phello___toplevel_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_item = {
+ Py_True,
+ & __phello___toplevel_consts_1.ob_base.ob_base,
+ &_Py_ID(__main__),
+ Py_None,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+__phello___toplevel_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ & const_str_initialized._ascii.ob_base,
+ & const_str_main._ascii.ob_base,
+ &_Py_ID(__name__),
+ },
+ },
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[36];
+ }
+__phello___toplevel_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 35,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\xf0\x03\x01\x01\x01\xd8\x0e\x12\x80\x0b\xf2\x04\x01\x01\x1a\xf0\x06\x00\x04\x0c\x88\x7a\xd2\x03\x19\xd9\x04\x08\x85\x46\xf0\x03\x00\x04\x1a",
+};
+static
+ struct _PyCode_DEF(40)
+__phello___toplevel = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 20,
+ },
+ .co_consts = & __phello___toplevel_consts._object.ob_base.ob_base,
+ .co_names = & __phello___toplevel_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 0,
+ .co_argcount = 0,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 2 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 2,
+ .co_firstlineno = 1,
+ .co_nlocalsplus = 0,
+ .co_nlocals = 0,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 763,
+ .co_localsplusnames = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_filename = & __phello___toplevel_consts_1_filename._ascii.ob_base,
+ .co_name = &_Py_STR(anon_module),
+ .co_qualname = &_Py_STR(anon_module),
+ .co_linetable = & __phello___toplevel_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x64\x00\x5a\x00\x64\x01\x84\x00\x5a\x01\x65\x02\x64\x02\x6b\x28\x00\x00\x72\x08\x02\x00\x65\x01\xab\x00\x00\x00\x00\x00\x00\x00\x01\x00\x79\x03\x79\x03",
+ ._co_firsttraceable = 0,
+};
+
+PyObject *
+_Py_get___phello___toplevel(void)
+{
+ return Py_NewRef((PyObject *) &__phello___toplevel);
+}
+
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[24];
+ }
+__phello___ham_toplevel_filename = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 23,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "<frozen __phello__.ham>",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[6];
+ }
+__phello___ham_toplevel_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 5,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\xf1\x03\x01\x01\x01",
+};
+static
+ struct _PyCode_DEF(4)
+__phello___ham_toplevel = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 2,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_1_consts._object.ob_base.ob_base,
+ .co_names = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 0,
+ .co_argcount = 0,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 0 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 0,
+ .co_firstlineno = 1,
+ .co_nlocalsplus = 0,
+ .co_nlocals = 0,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 764,
+ .co_localsplusnames = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_filename = & __phello___ham_toplevel_filename._ascii.ob_base,
+ .co_name = &_Py_STR(anon_module),
+ .co_qualname = &_Py_STR(anon_module),
+ .co_linetable = & __phello___ham_toplevel_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x79\x00",
+ ._co_firsttraceable = 0,
+};
+
+PyObject *
+_Py_get___phello___ham_toplevel(void)
+{
+ return Py_NewRef((PyObject *) &__phello___ham_toplevel);
+}
+
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[29];
+ }
+__phello___ham_eggs_toplevel_filename = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 28,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "<frozen __phello__.ham.eggs>",
+};
+static
+ struct _PyCode_DEF(4)
+__phello___ham_eggs_toplevel = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 2,
+ },
+ .co_consts = & importlib__bootstrap_toplevel_consts_1_consts._object.ob_base.ob_base,
+ .co_names = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 0,
+ .co_argcount = 0,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 0 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 0,
+ .co_firstlineno = 1,
+ .co_nlocalsplus = 0,
+ .co_nlocals = 0,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 765,
+ .co_localsplusnames = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_filename = & __phello___ham_eggs_toplevel_filename._ascii.ob_base,
+ .co_name = &_Py_STR(anon_module),
+ .co_qualname = &_Py_STR(anon_module),
+ .co_linetable = & __phello___ham_toplevel_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x79\x00",
+ ._co_firsttraceable = 0,
+};
+
+PyObject *
+_Py_get___phello___ham_eggs_toplevel(void)
+{
+ return Py_NewRef((PyObject *) &__phello___ham_eggs_toplevel);
+}
+
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[25];
+ }
+__phello___spam_toplevel_consts_1_filename = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 24,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "<frozen __phello__.spam>",
+};
+static
+ struct _PyCode_DEF(26)
+__phello___spam_toplevel_consts_1 = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 13,
+ },
+ .co_consts = & __hello___toplevel_consts_7_consts._object.ob_base.ob_base,
+ .co_names = & __hello___toplevel_consts_7_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 3,
+ .co_argcount = 0,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 3 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 3,
+ .co_firstlineno = 3,
+ .co_nlocalsplus = 0,
+ .co_nlocals = 0,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 766,
+ .co_localsplusnames = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_filename = & __phello___spam_toplevel_consts_1_filename._ascii.ob_base,
+ .co_name = & const_str_main._ascii.ob_base,
+ .co_qualname = & const_str_main._ascii.ob_base,
+ .co_linetable = & __hello___toplevel_consts_7_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x74\x01\x00\x00\x00\x00\x00\x00\x00\x00\x64\x01\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x79\x00",
+ ._co_firsttraceable = 0,
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[4];
+ }_object;
+ }
+__phello___spam_toplevel_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 4,
+ },
+ .ob_item = {
+ Py_True,
+ & __phello___spam_toplevel_consts_1.ob_base.ob_base,
+ &_Py_ID(__main__),
+ Py_None,
+ },
+ },
+};
+static
+ struct _PyCode_DEF(40)
+__phello___spam_toplevel = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 20,
+ },
+ .co_consts = & __phello___spam_toplevel_consts._object.ob_base.ob_base,
+ .co_names = & __phello___toplevel_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 0,
+ .co_argcount = 0,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 2 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 2,
+ .co_firstlineno = 1,
+ .co_nlocalsplus = 0,
+ .co_nlocals = 0,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 767,
+ .co_localsplusnames = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_filename = & __phello___spam_toplevel_consts_1_filename._ascii.ob_base,
+ .co_name = &_Py_STR(anon_module),
+ .co_qualname = &_Py_STR(anon_module),
+ .co_linetable = & __phello___toplevel_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x64\x00\x5a\x00\x64\x01\x84\x00\x5a\x01\x65\x02\x64\x02\x6b\x28\x00\x00\x72\x08\x02\x00\x65\x01\xab\x00\x00\x00\x00\x00\x00\x00\x01\x00\x79\x03\x79\x03",
+ ._co_firsttraceable = 0,
+};
+
+PyObject *
+_Py_get___phello___spam_toplevel(void)
+{
+ return Py_NewRef((PyObject *) &__phello___spam_toplevel);
+}
+
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[3];
+ }_object;
+ }
+frozen_only_toplevel_consts = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 3,
+ },
+ .ob_item = {
+ Py_True,
+ & __hello___toplevel_consts_7_consts_1._ascii.ob_base,
+ Py_None,
+ },
+ },
+};
+static
+ struct {
+ PyGC_Head _gc_head;
+ struct {
+ PyObject_VAR_HEAD
+ PyObject *ob_item[2];
+ }_object;
+ }
+frozen_only_toplevel_names = {
+ ._object = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyTuple_Type,
+ },
+ .ob_size = 2,
+ },
+ .ob_item = {
+ & const_str_initialized._ascii.ob_base,
+ & const_str_print._ascii.ob_base,
+ },
+ },
+};
+static
+ struct {
+ PyASCIIObject _ascii;
+ uint8_t _data[21];
+ }
+frozen_only_toplevel_filename = {
+ ._ascii = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyUnicode_Type,
+ },
+ .length = 20,
+ .hash = -1,
+ .state = {
+ .kind = 1,
+ .compact = 1,
+ .ascii = 1,
+ .statically_allocated = 1,
+ },
+ },
+ ._data = "<frozen frozen_only>",
+};
+static
+ struct {
+ PyObject_VAR_HEAD
+ Py_hash_t ob_shash;
+ char ob_sval[19];
+ }
+frozen_only_toplevel_linetable = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBytes_Type,
+ },
+ .ob_size = 18,
+ },
+ .ob_shash = -1,
+ .ob_sval = "\xf0\x03\x01\x01\x01\xd8\x0e\x12\x80\x0b\xd9\x00\x05\x80\x6e\xd5\x00\x15",
+};
+static
+ struct _PyCode_DEF(24)
+frozen_only_toplevel = {
+ .ob_base = {
+ .ob_base = {
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyCode_Type,
+ },
+ .ob_size = 12,
+ },
+ .co_consts = & frozen_only_toplevel_consts._object.ob_base.ob_base,
+ .co_names = & frozen_only_toplevel_names._object.ob_base.ob_base,
+ .co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_flags = 0,
+ .co_argcount = 0,
+ .co_posonlyargcount = 0,
+ .co_kwonlyargcount = 0,
+ .co_framesize = 3 + FRAME_SPECIALS_SIZE,
+ .co_stacksize = 3,
+ .co_firstlineno = 1,
+ .co_nlocalsplus = 0,
+ .co_nlocals = 0,
+ .co_ncellvars = 0,
+ .co_nfreevars = 0,
+ .co_version = 768,
+ .co_localsplusnames = (PyObject *)& _Py_SINGLETON(tuple_empty),
+ .co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_empty),
+ .co_filename = & frozen_only_toplevel_filename._ascii.ob_base,
+ .co_name = &_Py_STR(anon_module),
+ .co_qualname = &_Py_STR(anon_module),
+ .co_linetable = & frozen_only_toplevel_linetable.ob_base.ob_base,
+ ._co_cached = NULL,
+ .co_code_adaptive = "\x97\x00\x64\x00\x5a\x00\x02\x00\x65\x01\x64\x01\xab\x01\x00\x00\x00\x00\x00\x00\x01\x00\x79\x02",
+ ._co_firsttraceable = 0,
+};
+
+PyObject *
+_Py_get_frozen_only_toplevel(void)
+{
+ return Py_NewRef((PyObject *) &frozen_only_toplevel);
+}
+
+void
+_Py_Deepfreeze_Fini(void) {
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_toplevel_consts_1);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_toplevel_consts_3);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_toplevel_consts_4);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_toplevel_consts_5);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_toplevel_consts_7_consts_1_consts_1_consts_2);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_toplevel_consts_7_consts_1_consts_1_consts_3);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_toplevel_consts_7_consts_1_consts_1_consts_4);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_toplevel_consts_7_consts_1_consts_1);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_toplevel_consts_7_consts_1);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_toplevel_consts_7_consts_2);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_toplevel_consts_7_consts_3);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_toplevel_consts_7_consts_5);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_toplevel_consts_7_consts_6);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_toplevel_consts_7);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_toplevel_consts_9_consts_2);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_toplevel_consts_9_consts_3);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_toplevel_consts_9_consts_4);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_toplevel_consts_9);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_toplevel_consts_11);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_toplevel_consts_13);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_toplevel_consts_14_consts_2);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_toplevel_consts_14_consts_3);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_toplevel_consts_14_consts_4);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_toplevel_consts_14_consts_5);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_toplevel_consts_14_consts_6);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_toplevel_consts_14);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_toplevel_consts_16_consts_2);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_toplevel_consts_16_consts_3);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_toplevel_consts_16_consts_4);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_toplevel_consts_16_consts_5);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_toplevel_consts_16);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_toplevel_consts_18_consts_1);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_toplevel_consts_18_consts_2);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_toplevel_consts_18_consts_3);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_toplevel_consts_18);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_toplevel_consts_20_consts_2);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_toplevel_consts_20);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_toplevel_consts_21);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_toplevel_consts_22);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_toplevel_consts_25);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_toplevel_consts_26_consts_1);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_toplevel_consts_26);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_toplevel_consts_27_consts_1);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_toplevel_consts_27);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_toplevel_consts_28);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_toplevel_consts_29);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_toplevel_consts_30_consts_4);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_toplevel_consts_30_consts_5);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_toplevel_consts_30_consts_6);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_toplevel_consts_30_consts_7);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_toplevel_consts_30_consts_8);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_toplevel_consts_30_consts_9);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_toplevel_consts_30_consts_10);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_toplevel_consts_30_consts_11);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_toplevel_consts_30);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_toplevel_consts_33);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_toplevel_consts_34);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_toplevel_consts_37);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_toplevel_consts_38);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_toplevel_consts_39);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_toplevel_consts_40);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_toplevel_consts_41);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_toplevel_consts_42);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_toplevel_consts_43);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_toplevel_consts_44_consts_4);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_toplevel_consts_44_consts_5);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_toplevel_consts_44_consts_6);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_toplevel_consts_44_consts_7);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_toplevel_consts_44_consts_8);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_toplevel_consts_44_consts_9);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_toplevel_consts_44);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_toplevel_consts_46_consts_3);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_toplevel_consts_46_consts_5);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_toplevel_consts_46_consts_6);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_toplevel_consts_46_consts_7);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_toplevel_consts_46_consts_8);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_toplevel_consts_46_consts_9);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_toplevel_consts_46_consts_10);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_toplevel_consts_46_consts_11);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_toplevel_consts_46_consts_12);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_toplevel_consts_46);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_toplevel_consts_48_consts_2);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_toplevel_consts_48_consts_3);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_toplevel_consts_48);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_toplevel_consts_50);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_toplevel_consts_51);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_toplevel_consts_52);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_toplevel_consts_55);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_toplevel_consts_56);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_toplevel_consts_57);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_toplevel_consts_59);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_toplevel_consts_60);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_toplevel_consts_61);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_toplevel_consts_62);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_toplevel_consts_63);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_toplevel_consts_64);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_toplevel_consts_65);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_toplevel);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_6);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_11_consts_3);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_11_consts_4);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_11);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_12);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_13);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_14);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_15);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_16);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_17_consts_1);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_17);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_18);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_19);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_20);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_21);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_22);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_23);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_24);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_25);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_36);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_37);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_38);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_39);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_40);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_41_consts_1);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_41_consts_2);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_41);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_42);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_43);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_44);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_45);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_46);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_47);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_48);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_50);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_51);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_52_consts_5);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_52_consts_6);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_52_consts_8);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_52);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_54_consts_2);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_54_consts_3);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_54_consts_4);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_54_consts_5);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_54);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_56_consts_1);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_56_consts_2);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_56_consts_3);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_56_consts_4);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_56_consts_5);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_56_consts_8);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_56_consts_9);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_56);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_58_consts_2);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_58_consts_3);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_58_consts_4);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_58_consts_5);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_58_consts_6);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_58_consts_7);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_58_consts_8);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_58);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_60_consts_2);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_60_consts_3);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_60_consts_6);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_60);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_62_consts_2);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_62_consts_3);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_62);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_64_consts_2);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_64_consts_3);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_64_consts_4);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_64_consts_5);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_64_consts_6);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_64_consts_7_consts_2);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_64_consts_7);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_64_consts_8);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_64_consts_9);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_64_consts_10);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_64);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_66_consts_3);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_66_consts_4);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_66_consts_5);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_66_consts_6);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_66_consts_7);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_66_consts_8);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_66_consts_9);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_66_consts_10);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_66_consts_11);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_66_consts_12);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_66_consts_13);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_66);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_68_consts_1);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_68_consts_2);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_68_consts_3);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_68_consts_4);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_68_consts_5);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_68_consts_6);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_68_consts_7);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_68_consts_8);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_68);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_70_consts_2);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_70_consts_3);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_70_consts_4);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_70_consts_6);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_70_consts_7);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_70_consts_8);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_70);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_72_consts_2_consts_1);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_72_consts_2);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_72_consts_3);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_72_consts_4);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_72_consts_6);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_72_consts_7);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_72_consts_8_consts_1);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_72_consts_8);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_72_consts_9);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_72);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_74);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_75);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_76);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_77);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib__bootstrap_external_toplevel);
+ _PyStaticCode_Fini((PyCodeObject *)&zipimport_toplevel_consts_7);
+ _PyStaticCode_Fini((PyCodeObject *)&zipimport_toplevel_consts_11_consts_2);
+ _PyStaticCode_Fini((PyCodeObject *)&zipimport_toplevel_consts_11_consts_4);
+ _PyStaticCode_Fini((PyCodeObject *)&zipimport_toplevel_consts_11_consts_5);
+ _PyStaticCode_Fini((PyCodeObject *)&zipimport_toplevel_consts_11_consts_6);
+ _PyStaticCode_Fini((PyCodeObject *)&zipimport_toplevel_consts_11_consts_7);
+ _PyStaticCode_Fini((PyCodeObject *)&zipimport_toplevel_consts_11_consts_8);
+ _PyStaticCode_Fini((PyCodeObject *)&zipimport_toplevel_consts_11_consts_9);
+ _PyStaticCode_Fini((PyCodeObject *)&zipimport_toplevel_consts_11_consts_10);
+ _PyStaticCode_Fini((PyCodeObject *)&zipimport_toplevel_consts_11_consts_11);
+ _PyStaticCode_Fini((PyCodeObject *)&zipimport_toplevel_consts_11_consts_12);
+ _PyStaticCode_Fini((PyCodeObject *)&zipimport_toplevel_consts_11_consts_13);
+ _PyStaticCode_Fini((PyCodeObject *)&zipimport_toplevel_consts_11);
+ _PyStaticCode_Fini((PyCodeObject *)&zipimport_toplevel_consts_18);
+ _PyStaticCode_Fini((PyCodeObject *)&zipimport_toplevel_consts_19);
+ _PyStaticCode_Fini((PyCodeObject *)&zipimport_toplevel_consts_20);
+ _PyStaticCode_Fini((PyCodeObject *)&zipimport_toplevel_consts_21);
+ _PyStaticCode_Fini((PyCodeObject *)&zipimport_toplevel_consts_23);
+ _PyStaticCode_Fini((PyCodeObject *)&zipimport_toplevel_consts_24);
+ _PyStaticCode_Fini((PyCodeObject *)&zipimport_toplevel_consts_25);
+ _PyStaticCode_Fini((PyCodeObject *)&zipimport_toplevel_consts_26);
+ _PyStaticCode_Fini((PyCodeObject *)&zipimport_toplevel_consts_27);
+ _PyStaticCode_Fini((PyCodeObject *)&zipimport_toplevel_consts_28);
+ _PyStaticCode_Fini((PyCodeObject *)&zipimport_toplevel_consts_29);
+ _PyStaticCode_Fini((PyCodeObject *)&zipimport_toplevel_consts_30);
+ _PyStaticCode_Fini((PyCodeObject *)&zipimport_toplevel_consts_31);
+ _PyStaticCode_Fini((PyCodeObject *)&zipimport_toplevel_consts_32);
+ _PyStaticCode_Fini((PyCodeObject *)&zipimport_toplevel);
+ _PyStaticCode_Fini((PyCodeObject *)&abc_toplevel_consts_1);
+ _PyStaticCode_Fini((PyCodeObject *)&abc_toplevel_consts_2_consts_3);
+ _PyStaticCode_Fini((PyCodeObject *)&abc_toplevel_consts_2);
+ _PyStaticCode_Fini((PyCodeObject *)&abc_toplevel_consts_4_consts_3);
+ _PyStaticCode_Fini((PyCodeObject *)&abc_toplevel_consts_4);
+ _PyStaticCode_Fini((PyCodeObject *)&abc_toplevel_consts_6);
+ _PyStaticCode_Fini((PyCodeObject *)&abc_toplevel_consts_10_consts_2);
+ _PyStaticCode_Fini((PyCodeObject *)&abc_toplevel_consts_10_consts_3);
+ _PyStaticCode_Fini((PyCodeObject *)&abc_toplevel_consts_10_consts_4);
+ _PyStaticCode_Fini((PyCodeObject *)&abc_toplevel_consts_10_consts_5);
+ _PyStaticCode_Fini((PyCodeObject *)&abc_toplevel_consts_10_consts_6);
+ _PyStaticCode_Fini((PyCodeObject *)&abc_toplevel_consts_10_consts_7);
+ _PyStaticCode_Fini((PyCodeObject *)&abc_toplevel_consts_10_consts_8);
+ _PyStaticCode_Fini((PyCodeObject *)&abc_toplevel_consts_10);
+ _PyStaticCode_Fini((PyCodeObject *)&abc_toplevel_consts_14);
+ _PyStaticCode_Fini((PyCodeObject *)&abc_toplevel_consts_15);
+ _PyStaticCode_Fini((PyCodeObject *)&abc_toplevel);
+ _PyStaticCode_Fini((PyCodeObject *)&codecs_toplevel_consts_12_consts_5);
+ _PyStaticCode_Fini((PyCodeObject *)&codecs_toplevel_consts_12_consts_6);
+ _PyStaticCode_Fini((PyCodeObject *)&codecs_toplevel_consts_12);
+ _PyStaticCode_Fini((PyCodeObject *)&codecs_toplevel_consts_14_consts_2);
+ _PyStaticCode_Fini((PyCodeObject *)&codecs_toplevel_consts_14_consts_3);
+ _PyStaticCode_Fini((PyCodeObject *)&codecs_toplevel_consts_14);
+ _PyStaticCode_Fini((PyCodeObject *)&codecs_toplevel_consts_16_consts_2);
+ _PyStaticCode_Fini((PyCodeObject *)&codecs_toplevel_consts_16_consts_3);
+ _PyStaticCode_Fini((PyCodeObject *)&codecs_toplevel_consts_16_consts_4);
+ _PyStaticCode_Fini((PyCodeObject *)&codecs_toplevel_consts_16_consts_5);
+ _PyStaticCode_Fini((PyCodeObject *)&codecs_toplevel_consts_16_consts_6);
+ _PyStaticCode_Fini((PyCodeObject *)&codecs_toplevel_consts_16);
+ _PyStaticCode_Fini((PyCodeObject *)&codecs_toplevel_consts_18_consts_2);
+ _PyStaticCode_Fini((PyCodeObject *)&codecs_toplevel_consts_18_consts_3);
+ _PyStaticCode_Fini((PyCodeObject *)&codecs_toplevel_consts_18_consts_4);
+ _PyStaticCode_Fini((PyCodeObject *)&codecs_toplevel_consts_18_consts_5);
+ _PyStaticCode_Fini((PyCodeObject *)&codecs_toplevel_consts_18_consts_6);
+ _PyStaticCode_Fini((PyCodeObject *)&codecs_toplevel_consts_18_consts_7);
+ _PyStaticCode_Fini((PyCodeObject *)&codecs_toplevel_consts_18);
+ _PyStaticCode_Fini((PyCodeObject *)&codecs_toplevel_consts_20_consts_2);
+ _PyStaticCode_Fini((PyCodeObject *)&codecs_toplevel_consts_20_consts_3);
+ _PyStaticCode_Fini((PyCodeObject *)&codecs_toplevel_consts_20_consts_4);
+ _PyStaticCode_Fini((PyCodeObject *)&codecs_toplevel_consts_20_consts_5);
+ _PyStaticCode_Fini((PyCodeObject *)&codecs_toplevel_consts_20_consts_6);
+ _PyStaticCode_Fini((PyCodeObject *)&codecs_toplevel_consts_20);
+ _PyStaticCode_Fini((PyCodeObject *)&codecs_toplevel_consts_22_consts_2);
+ _PyStaticCode_Fini((PyCodeObject *)&codecs_toplevel_consts_22_consts_3);
+ _PyStaticCode_Fini((PyCodeObject *)&codecs_toplevel_consts_22_consts_4);
+ _PyStaticCode_Fini((PyCodeObject *)&codecs_toplevel_consts_22_consts_5);
+ _PyStaticCode_Fini((PyCodeObject *)&codecs_toplevel_consts_22_consts_6);
+ _PyStaticCode_Fini((PyCodeObject *)&codecs_toplevel_consts_22_consts_7);
+ _PyStaticCode_Fini((PyCodeObject *)&codecs_toplevel_consts_22);
+ _PyStaticCode_Fini((PyCodeObject *)&codecs_toplevel_consts_24_consts_1);
+ _PyStaticCode_Fini((PyCodeObject *)&codecs_toplevel_consts_24_consts_2);
+ _PyStaticCode_Fini((PyCodeObject *)&codecs_toplevel_consts_24_consts_3);
+ _PyStaticCode_Fini((PyCodeObject *)&codecs_toplevel_consts_24_consts_4);
+ _PyStaticCode_Fini((PyCodeObject *)&codecs_toplevel_consts_24_consts_5);
+ _PyStaticCode_Fini((PyCodeObject *)&codecs_toplevel_consts_24_consts_6);
+ _PyStaticCode_Fini((PyCodeObject *)&codecs_toplevel_consts_24_consts_7);
+ _PyStaticCode_Fini((PyCodeObject *)&codecs_toplevel_consts_24_consts_8);
+ _PyStaticCode_Fini((PyCodeObject *)&codecs_toplevel_consts_24_consts_9);
+ _PyStaticCode_Fini((PyCodeObject *)&codecs_toplevel_consts_24);
+ _PyStaticCode_Fini((PyCodeObject *)&codecs_toplevel_consts_26_consts_1);
+ _PyStaticCode_Fini((PyCodeObject *)&codecs_toplevel_consts_26_consts_2);
+ _PyStaticCode_Fini((PyCodeObject *)&codecs_toplevel_consts_26_consts_3);
+ _PyStaticCode_Fini((PyCodeObject *)&codecs_toplevel_consts_26_consts_5);
+ _PyStaticCode_Fini((PyCodeObject *)&codecs_toplevel_consts_26_consts_6);
+ _PyStaticCode_Fini((PyCodeObject *)&codecs_toplevel_consts_26_consts_7);
+ _PyStaticCode_Fini((PyCodeObject *)&codecs_toplevel_consts_26_consts_8);
+ _PyStaticCode_Fini((PyCodeObject *)&codecs_toplevel_consts_26_consts_9);
+ _PyStaticCode_Fini((PyCodeObject *)&codecs_toplevel_consts_26_consts_10);
+ _PyStaticCode_Fini((PyCodeObject *)&codecs_toplevel_consts_26_consts_11);
+ _PyStaticCode_Fini((PyCodeObject *)&codecs_toplevel_consts_26_consts_12);
+ _PyStaticCode_Fini((PyCodeObject *)&codecs_toplevel_consts_26_consts_13);
+ _PyStaticCode_Fini((PyCodeObject *)&codecs_toplevel_consts_26_consts_14);
+ _PyStaticCode_Fini((PyCodeObject *)&codecs_toplevel_consts_26);
+ _PyStaticCode_Fini((PyCodeObject *)&codecs_toplevel_consts_28_consts_3);
+ _PyStaticCode_Fini((PyCodeObject *)&codecs_toplevel_consts_28_consts_4);
+ _PyStaticCode_Fini((PyCodeObject *)&codecs_toplevel_consts_28_consts_6);
+ _PyStaticCode_Fini((PyCodeObject *)&codecs_toplevel_consts_28_consts_7);
+ _PyStaticCode_Fini((PyCodeObject *)&codecs_toplevel_consts_28_consts_8);
+ _PyStaticCode_Fini((PyCodeObject *)&codecs_toplevel_consts_28_consts_9);
+ _PyStaticCode_Fini((PyCodeObject *)&codecs_toplevel_consts_28_consts_10);
+ _PyStaticCode_Fini((PyCodeObject *)&codecs_toplevel_consts_28_consts_11);
+ _PyStaticCode_Fini((PyCodeObject *)&codecs_toplevel_consts_28_consts_12);
+ _PyStaticCode_Fini((PyCodeObject *)&codecs_toplevel_consts_28_consts_13);
+ _PyStaticCode_Fini((PyCodeObject *)&codecs_toplevel_consts_28_consts_14);
+ _PyStaticCode_Fini((PyCodeObject *)&codecs_toplevel_consts_28_consts_15);
+ _PyStaticCode_Fini((PyCodeObject *)&codecs_toplevel_consts_28_consts_16);
+ _PyStaticCode_Fini((PyCodeObject *)&codecs_toplevel_consts_28_consts_17);
+ _PyStaticCode_Fini((PyCodeObject *)&codecs_toplevel_consts_28);
+ _PyStaticCode_Fini((PyCodeObject *)&codecs_toplevel_consts_30_consts_3);
+ _PyStaticCode_Fini((PyCodeObject *)&codecs_toplevel_consts_30_consts_4);
+ _PyStaticCode_Fini((PyCodeObject *)&codecs_toplevel_consts_30_consts_6);
+ _PyStaticCode_Fini((PyCodeObject *)&codecs_toplevel_consts_30_consts_7);
+ _PyStaticCode_Fini((PyCodeObject *)&codecs_toplevel_consts_30_consts_8);
+ _PyStaticCode_Fini((PyCodeObject *)&codecs_toplevel_consts_30_consts_9);
+ _PyStaticCode_Fini((PyCodeObject *)&codecs_toplevel_consts_30_consts_10);
+ _PyStaticCode_Fini((PyCodeObject *)&codecs_toplevel_consts_30_consts_11);
+ _PyStaticCode_Fini((PyCodeObject *)&codecs_toplevel_consts_30_consts_12);
+ _PyStaticCode_Fini((PyCodeObject *)&codecs_toplevel_consts_30_consts_13);
+ _PyStaticCode_Fini((PyCodeObject *)&codecs_toplevel_consts_30_consts_14);
+ _PyStaticCode_Fini((PyCodeObject *)&codecs_toplevel_consts_30_consts_15);
+ _PyStaticCode_Fini((PyCodeObject *)&codecs_toplevel_consts_30_consts_16);
+ _PyStaticCode_Fini((PyCodeObject *)&codecs_toplevel_consts_30_consts_17);
+ _PyStaticCode_Fini((PyCodeObject *)&codecs_toplevel_consts_30);
+ _PyStaticCode_Fini((PyCodeObject *)&codecs_toplevel_consts_33);
+ _PyStaticCode_Fini((PyCodeObject *)&codecs_toplevel_consts_34);
+ _PyStaticCode_Fini((PyCodeObject *)&codecs_toplevel_consts_35);
+ _PyStaticCode_Fini((PyCodeObject *)&codecs_toplevel_consts_36);
+ _PyStaticCode_Fini((PyCodeObject *)&codecs_toplevel_consts_37);
+ _PyStaticCode_Fini((PyCodeObject *)&codecs_toplevel_consts_38);
+ _PyStaticCode_Fini((PyCodeObject *)&codecs_toplevel_consts_39);
+ _PyStaticCode_Fini((PyCodeObject *)&codecs_toplevel_consts_40);
+ _PyStaticCode_Fini((PyCodeObject *)&codecs_toplevel_consts_41);
+ _PyStaticCode_Fini((PyCodeObject *)&codecs_toplevel_consts_42);
+ _PyStaticCode_Fini((PyCodeObject *)&codecs_toplevel_consts_43);
+ _PyStaticCode_Fini((PyCodeObject *)&codecs_toplevel_consts_44);
+ _PyStaticCode_Fini((PyCodeObject *)&codecs_toplevel);
+ _PyStaticCode_Fini((PyCodeObject *)&io_toplevel_consts_9);
+ _PyStaticCode_Fini((PyCodeObject *)&io_toplevel_consts_12);
+ _PyStaticCode_Fini((PyCodeObject *)&io_toplevel_consts_14);
+ _PyStaticCode_Fini((PyCodeObject *)&io_toplevel_consts_16);
+ _PyStaticCode_Fini((PyCodeObject *)&io_toplevel);
+ _PyStaticCode_Fini((PyCodeObject *)&_collections_abc_toplevel_consts_5);
+ _PyStaticCode_Fini((PyCodeObject *)&_collections_abc_toplevel_consts_13);
+ _PyStaticCode_Fini((PyCodeObject *)&_collections_abc_toplevel_consts_14);
+ _PyStaticCode_Fini((PyCodeObject *)&_collections_abc_toplevel_consts_15);
+ _PyStaticCode_Fini((PyCodeObject *)&_collections_abc_toplevel_consts_16);
+ _PyStaticCode_Fini((PyCodeObject *)&_collections_abc_toplevel_consts_17_consts_2);
+ _PyStaticCode_Fini((PyCodeObject *)&_collections_abc_toplevel_consts_17_consts_3);
+ _PyStaticCode_Fini((PyCodeObject *)&_collections_abc_toplevel_consts_17);
+ _PyStaticCode_Fini((PyCodeObject *)&_collections_abc_toplevel_consts_20_consts_2);
+ _PyStaticCode_Fini((PyCodeObject *)&_collections_abc_toplevel_consts_20_consts_3);
+ _PyStaticCode_Fini((PyCodeObject *)&_collections_abc_toplevel_consts_20);
+ _PyStaticCode_Fini((PyCodeObject *)&_collections_abc_toplevel_consts_22_consts_2);
+ _PyStaticCode_Fini((PyCodeObject *)&_collections_abc_toplevel_consts_22_consts_4);
+ _PyStaticCode_Fini((PyCodeObject *)&_collections_abc_toplevel_consts_22_consts_5);
+ _PyStaticCode_Fini((PyCodeObject *)&_collections_abc_toplevel_consts_22_consts_6);
+ _PyStaticCode_Fini((PyCodeObject *)&_collections_abc_toplevel_consts_22);
+ _PyStaticCode_Fini((PyCodeObject *)&_collections_abc_toplevel_consts_24_consts_2);
+ _PyStaticCode_Fini((PyCodeObject *)&_collections_abc_toplevel_consts_24_consts_3);
+ _PyStaticCode_Fini((PyCodeObject *)&_collections_abc_toplevel_consts_24);
+ _PyStaticCode_Fini((PyCodeObject *)&_collections_abc_toplevel_consts_26_consts_2);
+ _PyStaticCode_Fini((PyCodeObject *)&_collections_abc_toplevel_consts_26_consts_3);
+ _PyStaticCode_Fini((PyCodeObject *)&_collections_abc_toplevel_consts_26_consts_4);
+ _PyStaticCode_Fini((PyCodeObject *)&_collections_abc_toplevel_consts_26);
+ _PyStaticCode_Fini((PyCodeObject *)&_collections_abc_toplevel_consts_28_consts_2);
+ _PyStaticCode_Fini((PyCodeObject *)&_collections_abc_toplevel_consts_28_consts_3);
+ _PyStaticCode_Fini((PyCodeObject *)&_collections_abc_toplevel_consts_28_consts_5);
+ _PyStaticCode_Fini((PyCodeObject *)&_collections_abc_toplevel_consts_28_consts_6);
+ _PyStaticCode_Fini((PyCodeObject *)&_collections_abc_toplevel_consts_28_consts_7);
+ _PyStaticCode_Fini((PyCodeObject *)&_collections_abc_toplevel_consts_28);
+ _PyStaticCode_Fini((PyCodeObject *)&_collections_abc_toplevel_consts_30_consts_2);
+ _PyStaticCode_Fini((PyCodeObject *)&_collections_abc_toplevel_consts_30_consts_3);
+ _PyStaticCode_Fini((PyCodeObject *)&_collections_abc_toplevel_consts_30);
+ _PyStaticCode_Fini((PyCodeObject *)&_collections_abc_toplevel_consts_32_consts_2);
+ _PyStaticCode_Fini((PyCodeObject *)&_collections_abc_toplevel_consts_32_consts_3);
+ _PyStaticCode_Fini((PyCodeObject *)&_collections_abc_toplevel_consts_32_consts_4);
+ _PyStaticCode_Fini((PyCodeObject *)&_collections_abc_toplevel_consts_32);
+ _PyStaticCode_Fini((PyCodeObject *)&_collections_abc_toplevel_consts_34_consts_2);
+ _PyStaticCode_Fini((PyCodeObject *)&_collections_abc_toplevel_consts_34_consts_3);
+ _PyStaticCode_Fini((PyCodeObject *)&_collections_abc_toplevel_consts_34);
+ _PyStaticCode_Fini((PyCodeObject *)&_collections_abc_toplevel_consts_36_consts_2);
+ _PyStaticCode_Fini((PyCodeObject *)&_collections_abc_toplevel_consts_36_consts_3);
+ _PyStaticCode_Fini((PyCodeObject *)&_collections_abc_toplevel_consts_36_consts_5);
+ _PyStaticCode_Fini((PyCodeObject *)&_collections_abc_toplevel_consts_36_consts_6);
+ _PyStaticCode_Fini((PyCodeObject *)&_collections_abc_toplevel_consts_36_consts_7);
+ _PyStaticCode_Fini((PyCodeObject *)&_collections_abc_toplevel_consts_36);
+ _PyStaticCode_Fini((PyCodeObject *)&_collections_abc_toplevel_consts_38_consts_2);
+ _PyStaticCode_Fini((PyCodeObject *)&_collections_abc_toplevel_consts_38_consts_3);
+ _PyStaticCode_Fini((PyCodeObject *)&_collections_abc_toplevel_consts_38);
+ _PyStaticCode_Fini((PyCodeObject *)&_collections_abc_toplevel_consts_40_consts_2);
+ _PyStaticCode_Fini((PyCodeObject *)&_collections_abc_toplevel_consts_40_consts_3);
+ _PyStaticCode_Fini((PyCodeObject *)&_collections_abc_toplevel_consts_40);
+ _PyStaticCode_Fini((PyCodeObject *)&_collections_abc_toplevel_consts_42_consts_2);
+ _PyStaticCode_Fini((PyCodeObject *)&_collections_abc_toplevel_consts_42);
+ _PyStaticCode_Fini((PyCodeObject *)&_collections_abc_toplevel_consts_44_consts_4);
+ _PyStaticCode_Fini((PyCodeObject *)&_collections_abc_toplevel_consts_44_consts_5);
+ _PyStaticCode_Fini((PyCodeObject *)&_collections_abc_toplevel_consts_44);
+ _PyStaticCode_Fini((PyCodeObject *)&_collections_abc_toplevel_consts_46_consts_3);
+ _PyStaticCode_Fini((PyCodeObject *)&_collections_abc_toplevel_consts_46_consts_4);
+ _PyStaticCode_Fini((PyCodeObject *)&_collections_abc_toplevel_consts_46_consts_5);
+ _PyStaticCode_Fini((PyCodeObject *)&_collections_abc_toplevel_consts_46_consts_6);
+ _PyStaticCode_Fini((PyCodeObject *)&_collections_abc_toplevel_consts_46);
+ _PyStaticCode_Fini((PyCodeObject *)&_collections_abc_toplevel_consts_48_consts_4);
+ _PyStaticCode_Fini((PyCodeObject *)&_collections_abc_toplevel_consts_48);
+ _PyStaticCode_Fini((PyCodeObject *)&_collections_abc_toplevel_consts_49);
+ _PyStaticCode_Fini((PyCodeObject *)&_collections_abc_toplevel_consts_50_consts_2);
+ _PyStaticCode_Fini((PyCodeObject *)&_collections_abc_toplevel_consts_50_consts_3);
+ _PyStaticCode_Fini((PyCodeObject *)&_collections_abc_toplevel_consts_50);
+ _PyStaticCode_Fini((PyCodeObject *)&_collections_abc_toplevel_consts_52_consts_3);
+ _PyStaticCode_Fini((PyCodeObject *)&_collections_abc_toplevel_consts_52_consts_4);
+ _PyStaticCode_Fini((PyCodeObject *)&_collections_abc_toplevel_consts_52_consts_5);
+ _PyStaticCode_Fini((PyCodeObject *)&_collections_abc_toplevel_consts_52_consts_6);
+ _PyStaticCode_Fini((PyCodeObject *)&_collections_abc_toplevel_consts_52_consts_7);
+ _PyStaticCode_Fini((PyCodeObject *)&_collections_abc_toplevel_consts_52_consts_8);
+ _PyStaticCode_Fini((PyCodeObject *)&_collections_abc_toplevel_consts_52_consts_9_consts_1);
+ _PyStaticCode_Fini((PyCodeObject *)&_collections_abc_toplevel_consts_52_consts_9);
+ _PyStaticCode_Fini((PyCodeObject *)&_collections_abc_toplevel_consts_52_consts_10);
+ _PyStaticCode_Fini((PyCodeObject *)&_collections_abc_toplevel_consts_52_consts_11_consts_1);
+ _PyStaticCode_Fini((PyCodeObject *)&_collections_abc_toplevel_consts_52_consts_11);
+ _PyStaticCode_Fini((PyCodeObject *)&_collections_abc_toplevel_consts_52_consts_12_consts_1);
+ _PyStaticCode_Fini((PyCodeObject *)&_collections_abc_toplevel_consts_52_consts_12);
+ _PyStaticCode_Fini((PyCodeObject *)&_collections_abc_toplevel_consts_52_consts_13_consts_1);
+ _PyStaticCode_Fini((PyCodeObject *)&_collections_abc_toplevel_consts_52_consts_13);
+ _PyStaticCode_Fini((PyCodeObject *)&_collections_abc_toplevel_consts_52_consts_14);
+ _PyStaticCode_Fini((PyCodeObject *)&_collections_abc_toplevel_consts_52_consts_15);
+ _PyStaticCode_Fini((PyCodeObject *)&_collections_abc_toplevel_consts_52);
+ _PyStaticCode_Fini((PyCodeObject *)&_collections_abc_toplevel_consts_54_consts_3);
+ _PyStaticCode_Fini((PyCodeObject *)&_collections_abc_toplevel_consts_54_consts_4);
+ _PyStaticCode_Fini((PyCodeObject *)&_collections_abc_toplevel_consts_54_consts_5);
+ _PyStaticCode_Fini((PyCodeObject *)&_collections_abc_toplevel_consts_54_consts_6);
+ _PyStaticCode_Fini((PyCodeObject *)&_collections_abc_toplevel_consts_54_consts_7);
+ _PyStaticCode_Fini((PyCodeObject *)&_collections_abc_toplevel_consts_54_consts_8);
+ _PyStaticCode_Fini((PyCodeObject *)&_collections_abc_toplevel_consts_54_consts_9);
+ _PyStaticCode_Fini((PyCodeObject *)&_collections_abc_toplevel_consts_54_consts_10);
+ _PyStaticCode_Fini((PyCodeObject *)&_collections_abc_toplevel_consts_54_consts_11);
+ _PyStaticCode_Fini((PyCodeObject *)&_collections_abc_toplevel_consts_54);
+ _PyStaticCode_Fini((PyCodeObject *)&_collections_abc_toplevel_consts_56_consts_4);
+ _PyStaticCode_Fini((PyCodeObject *)&_collections_abc_toplevel_consts_56_consts_6);
+ _PyStaticCode_Fini((PyCodeObject *)&_collections_abc_toplevel_consts_56_consts_7);
+ _PyStaticCode_Fini((PyCodeObject *)&_collections_abc_toplevel_consts_56_consts_8);
+ _PyStaticCode_Fini((PyCodeObject *)&_collections_abc_toplevel_consts_56_consts_9);
+ _PyStaticCode_Fini((PyCodeObject *)&_collections_abc_toplevel_consts_56_consts_10);
+ _PyStaticCode_Fini((PyCodeObject *)&_collections_abc_toplevel_consts_56_consts_11);
+ _PyStaticCode_Fini((PyCodeObject *)&_collections_abc_toplevel_consts_56);
+ _PyStaticCode_Fini((PyCodeObject *)&_collections_abc_toplevel_consts_58_consts_2);
+ _PyStaticCode_Fini((PyCodeObject *)&_collections_abc_toplevel_consts_58_consts_3);
+ _PyStaticCode_Fini((PyCodeObject *)&_collections_abc_toplevel_consts_58_consts_4);
+ _PyStaticCode_Fini((PyCodeObject *)&_collections_abc_toplevel_consts_58);
+ _PyStaticCode_Fini((PyCodeObject *)&_collections_abc_toplevel_consts_60_consts_2);
+ _PyStaticCode_Fini((PyCodeObject *)&_collections_abc_toplevel_consts_60_consts_3);
+ _PyStaticCode_Fini((PyCodeObject *)&_collections_abc_toplevel_consts_60_consts_4);
+ _PyStaticCode_Fini((PyCodeObject *)&_collections_abc_toplevel_consts_60);
+ _PyStaticCode_Fini((PyCodeObject *)&_collections_abc_toplevel_consts_62_consts_2);
+ _PyStaticCode_Fini((PyCodeObject *)&_collections_abc_toplevel_consts_62_consts_3);
+ _PyStaticCode_Fini((PyCodeObject *)&_collections_abc_toplevel_consts_62_consts_4);
+ _PyStaticCode_Fini((PyCodeObject *)&_collections_abc_toplevel_consts_62);
+ _PyStaticCode_Fini((PyCodeObject *)&_collections_abc_toplevel_consts_64_consts_2);
+ _PyStaticCode_Fini((PyCodeObject *)&_collections_abc_toplevel_consts_64_consts_3);
+ _PyStaticCode_Fini((PyCodeObject *)&_collections_abc_toplevel_consts_64);
+ _PyStaticCode_Fini((PyCodeObject *)&_collections_abc_toplevel_consts_66_consts_3);
+ _PyStaticCode_Fini((PyCodeObject *)&_collections_abc_toplevel_consts_66_consts_4);
+ _PyStaticCode_Fini((PyCodeObject *)&_collections_abc_toplevel_consts_66_consts_5);
+ _PyStaticCode_Fini((PyCodeObject *)&_collections_abc_toplevel_consts_66_consts_6);
+ _PyStaticCode_Fini((PyCodeObject *)&_collections_abc_toplevel_consts_66_consts_7);
+ _PyStaticCode_Fini((PyCodeObject *)&_collections_abc_toplevel_consts_66_consts_8);
+ _PyStaticCode_Fini((PyCodeObject *)&_collections_abc_toplevel_consts_66_consts_10);
+ _PyStaticCode_Fini((PyCodeObject *)&_collections_abc_toplevel_consts_66);
+ _PyStaticCode_Fini((PyCodeObject *)&_collections_abc_toplevel_consts_68_consts_4);
+ _PyStaticCode_Fini((PyCodeObject *)&_collections_abc_toplevel_consts_68_consts_5);
+ _PyStaticCode_Fini((PyCodeObject *)&_collections_abc_toplevel_consts_68_consts_6);
+ _PyStaticCode_Fini((PyCodeObject *)&_collections_abc_toplevel_consts_68_consts_7);
+ _PyStaticCode_Fini((PyCodeObject *)&_collections_abc_toplevel_consts_68_consts_9);
+ _PyStaticCode_Fini((PyCodeObject *)&_collections_abc_toplevel_consts_68_consts_10_consts_1);
+ _PyStaticCode_Fini((PyCodeObject *)&_collections_abc_toplevel_consts_68_consts_10);
+ _PyStaticCode_Fini((PyCodeObject *)&_collections_abc_toplevel_consts_68);
+ _PyStaticCode_Fini((PyCodeObject *)&_collections_abc_toplevel_consts_70_consts_1);
+ _PyStaticCode_Fini((PyCodeObject *)&_collections_abc_toplevel_consts_70_consts_2);
+ _PyStaticCode_Fini((PyCodeObject *)&_collections_abc_toplevel_consts_70);
+ _PyStaticCode_Fini((PyCodeObject *)&_collections_abc_toplevel_consts_72);
+ _PyStaticCode_Fini((PyCodeObject *)&_collections_abc_toplevel_consts_74_consts_3);
+ _PyStaticCode_Fini((PyCodeObject *)&_collections_abc_toplevel_consts_74_consts_4);
+ _PyStaticCode_Fini((PyCodeObject *)&_collections_abc_toplevel_consts_74_consts_5);
+ _PyStaticCode_Fini((PyCodeObject *)&_collections_abc_toplevel_consts_74_consts_6);
+ _PyStaticCode_Fini((PyCodeObject *)&_collections_abc_toplevel_consts_74_consts_7);
+ _PyStaticCode_Fini((PyCodeObject *)&_collections_abc_toplevel_consts_74_consts_8);
+ _PyStaticCode_Fini((PyCodeObject *)&_collections_abc_toplevel_consts_74_consts_9);
+ _PyStaticCode_Fini((PyCodeObject *)&_collections_abc_toplevel_consts_74_consts_10);
+ _PyStaticCode_Fini((PyCodeObject *)&_collections_abc_toplevel_consts_74_consts_11);
+ _PyStaticCode_Fini((PyCodeObject *)&_collections_abc_toplevel_consts_74_consts_12);
+ _PyStaticCode_Fini((PyCodeObject *)&_collections_abc_toplevel_consts_74);
+ _PyStaticCode_Fini((PyCodeObject *)&_collections_abc_toplevel);
+ _PyStaticCode_Fini((PyCodeObject *)&_sitebuiltins_toplevel_consts_3_consts_1);
+ _PyStaticCode_Fini((PyCodeObject *)&_sitebuiltins_toplevel_consts_3_consts_2);
+ _PyStaticCode_Fini((PyCodeObject *)&_sitebuiltins_toplevel_consts_3_consts_4);
+ _PyStaticCode_Fini((PyCodeObject *)&_sitebuiltins_toplevel_consts_3);
+ _PyStaticCode_Fini((PyCodeObject *)&_sitebuiltins_toplevel_consts_5_consts_3);
+ _PyStaticCode_Fini((PyCodeObject *)&_sitebuiltins_toplevel_consts_5_consts_4);
+ _PyStaticCode_Fini((PyCodeObject *)&_sitebuiltins_toplevel_consts_5_consts_5);
+ _PyStaticCode_Fini((PyCodeObject *)&_sitebuiltins_toplevel_consts_5_consts_6);
+ _PyStaticCode_Fini((PyCodeObject *)&_sitebuiltins_toplevel_consts_5);
+ _PyStaticCode_Fini((PyCodeObject *)&_sitebuiltins_toplevel_consts_7_consts_2);
+ _PyStaticCode_Fini((PyCodeObject *)&_sitebuiltins_toplevel_consts_7_consts_3);
+ _PyStaticCode_Fini((PyCodeObject *)&_sitebuiltins_toplevel_consts_7);
+ _PyStaticCode_Fini((PyCodeObject *)&_sitebuiltins_toplevel);
+ _PyStaticCode_Fini((PyCodeObject *)&genericpath_toplevel_consts_4);
+ _PyStaticCode_Fini((PyCodeObject *)&genericpath_toplevel_consts_5);
+ _PyStaticCode_Fini((PyCodeObject *)&genericpath_toplevel_consts_6);
+ _PyStaticCode_Fini((PyCodeObject *)&genericpath_toplevel_consts_7);
+ _PyStaticCode_Fini((PyCodeObject *)&genericpath_toplevel_consts_8);
+ _PyStaticCode_Fini((PyCodeObject *)&genericpath_toplevel_consts_9);
+ _PyStaticCode_Fini((PyCodeObject *)&genericpath_toplevel_consts_10);
+ _PyStaticCode_Fini((PyCodeObject *)&genericpath_toplevel_consts_11);
+ _PyStaticCode_Fini((PyCodeObject *)&genericpath_toplevel_consts_12);
+ _PyStaticCode_Fini((PyCodeObject *)&genericpath_toplevel_consts_13);
+ _PyStaticCode_Fini((PyCodeObject *)&genericpath_toplevel_consts_14);
+ _PyStaticCode_Fini((PyCodeObject *)&genericpath_toplevel_consts_15);
+ _PyStaticCode_Fini((PyCodeObject *)&genericpath_toplevel_consts_16);
+ _PyStaticCode_Fini((PyCodeObject *)&genericpath_toplevel_consts_17);
+ _PyStaticCode_Fini((PyCodeObject *)&genericpath_toplevel);
+ _PyStaticCode_Fini((PyCodeObject *)&ntpath_toplevel_consts_12);
+ _PyStaticCode_Fini((PyCodeObject *)&ntpath_toplevel_consts_14);
+ _PyStaticCode_Fini((PyCodeObject *)&ntpath_toplevel_consts_15);
+ _PyStaticCode_Fini((PyCodeObject *)&ntpath_toplevel_consts_16);
+ _PyStaticCode_Fini((PyCodeObject *)&ntpath_toplevel_consts_17);
+ _PyStaticCode_Fini((PyCodeObject *)&ntpath_toplevel_consts_18);
+ _PyStaticCode_Fini((PyCodeObject *)&ntpath_toplevel_consts_19);
+ _PyStaticCode_Fini((PyCodeObject *)&ntpath_toplevel_consts_20);
+ _PyStaticCode_Fini((PyCodeObject *)&ntpath_toplevel_consts_21);
+ _PyStaticCode_Fini((PyCodeObject *)&ntpath_toplevel_consts_22);
+ _PyStaticCode_Fini((PyCodeObject *)&ntpath_toplevel_consts_23);
+ _PyStaticCode_Fini((PyCodeObject *)&ntpath_toplevel_consts_25);
+ _PyStaticCode_Fini((PyCodeObject *)&ntpath_toplevel_consts_26);
+ _PyStaticCode_Fini((PyCodeObject *)&ntpath_toplevel_consts_27);
+ _PyStaticCode_Fini((PyCodeObject *)&ntpath_toplevel_consts_29);
+ _PyStaticCode_Fini((PyCodeObject *)&ntpath_toplevel_consts_30);
+ _PyStaticCode_Fini((PyCodeObject *)&ntpath_toplevel_consts_31);
+ _PyStaticCode_Fini((PyCodeObject *)&ntpath_toplevel_consts_33);
+ _PyStaticCode_Fini((PyCodeObject *)&ntpath_toplevel_consts_34);
+ _PyStaticCode_Fini((PyCodeObject *)&ntpath_toplevel_consts_35);
+ _PyStaticCode_Fini((PyCodeObject *)&ntpath_toplevel_consts_37);
+ _PyStaticCode_Fini((PyCodeObject *)&ntpath_toplevel_consts_39);
+ _PyStaticCode_Fini((PyCodeObject *)&ntpath_toplevel_consts_40);
+ _PyStaticCode_Fini((PyCodeObject *)&ntpath_toplevel_consts_43);
+ _PyStaticCode_Fini((PyCodeObject *)&ntpath_toplevel_consts_45);
+ _PyStaticCode_Fini((PyCodeObject *)&ntpath_toplevel_consts_46);
+ _PyStaticCode_Fini((PyCodeObject *)&ntpath_toplevel_consts_52);
+ _PyStaticCode_Fini((PyCodeObject *)&ntpath_toplevel_consts_53);
+ _PyStaticCode_Fini((PyCodeObject *)&ntpath_toplevel);
+ _PyStaticCode_Fini((PyCodeObject *)&posixpath_toplevel_consts_11);
+ _PyStaticCode_Fini((PyCodeObject *)&posixpath_toplevel_consts_12);
+ _PyStaticCode_Fini((PyCodeObject *)&posixpath_toplevel_consts_13);
+ _PyStaticCode_Fini((PyCodeObject *)&posixpath_toplevel_consts_14);
+ _PyStaticCode_Fini((PyCodeObject *)&posixpath_toplevel_consts_15);
+ _PyStaticCode_Fini((PyCodeObject *)&posixpath_toplevel_consts_16);
+ _PyStaticCode_Fini((PyCodeObject *)&posixpath_toplevel_consts_17);
+ _PyStaticCode_Fini((PyCodeObject *)&posixpath_toplevel_consts_18);
+ _PyStaticCode_Fini((PyCodeObject *)&posixpath_toplevel_consts_19);
+ _PyStaticCode_Fini((PyCodeObject *)&posixpath_toplevel_consts_20);
+ _PyStaticCode_Fini((PyCodeObject *)&posixpath_toplevel_consts_21);
+ _PyStaticCode_Fini((PyCodeObject *)&posixpath_toplevel_consts_22);
+ _PyStaticCode_Fini((PyCodeObject *)&posixpath_toplevel_consts_23);
+ _PyStaticCode_Fini((PyCodeObject *)&posixpath_toplevel_consts_24);
+ _PyStaticCode_Fini((PyCodeObject *)&posixpath_toplevel_consts_25);
+ _PyStaticCode_Fini((PyCodeObject *)&posixpath_toplevel_consts_27);
+ _PyStaticCode_Fini((PyCodeObject *)&posixpath_toplevel_consts_28);
+ _PyStaticCode_Fini((PyCodeObject *)&posixpath_toplevel_consts_29);
+ _PyStaticCode_Fini((PyCodeObject *)&posixpath_toplevel_consts_32);
+ _PyStaticCode_Fini((PyCodeObject *)&posixpath_toplevel_consts_33);
+ _PyStaticCode_Fini((PyCodeObject *)&posixpath_toplevel_consts_35);
+ _PyStaticCode_Fini((PyCodeObject *)&posixpath_toplevel_consts_36_consts_7);
+ _PyStaticCode_Fini((PyCodeObject *)&posixpath_toplevel_consts_36);
+ _PyStaticCode_Fini((PyCodeObject *)&posixpath_toplevel);
+ _PyStaticCode_Fini((PyCodeObject *)&os_toplevel_consts_5);
+ _PyStaticCode_Fini((PyCodeObject *)&os_toplevel_consts_6);
+ _PyStaticCode_Fini((PyCodeObject *)&os_toplevel_consts_19);
+ _PyStaticCode_Fini((PyCodeObject *)&os_toplevel_consts_79);
+ _PyStaticCode_Fini((PyCodeObject *)&os_toplevel_consts_80);
+ _PyStaticCode_Fini((PyCodeObject *)&os_toplevel_consts_81);
+ _PyStaticCode_Fini((PyCodeObject *)&os_toplevel_consts_83);
+ _PyStaticCode_Fini((PyCodeObject *)&os_toplevel_consts_86);
+ _PyStaticCode_Fini((PyCodeObject *)&os_toplevel_consts_87);
+ _PyStaticCode_Fini((PyCodeObject *)&os_toplevel_consts_89);
+ _PyStaticCode_Fini((PyCodeObject *)&os_toplevel_consts_90);
+ _PyStaticCode_Fini((PyCodeObject *)&os_toplevel_consts_91);
+ _PyStaticCode_Fini((PyCodeObject *)&os_toplevel_consts_92);
+ _PyStaticCode_Fini((PyCodeObject *)&os_toplevel_consts_93);
+ _PyStaticCode_Fini((PyCodeObject *)&os_toplevel_consts_94);
+ _PyStaticCode_Fini((PyCodeObject *)&os_toplevel_consts_96);
+ _PyStaticCode_Fini((PyCodeObject *)&os_toplevel_consts_97);
+ _PyStaticCode_Fini((PyCodeObject *)&os_toplevel_consts_99_consts_1);
+ _PyStaticCode_Fini((PyCodeObject *)&os_toplevel_consts_99_consts_2);
+ _PyStaticCode_Fini((PyCodeObject *)&os_toplevel_consts_99_consts_3);
+ _PyStaticCode_Fini((PyCodeObject *)&os_toplevel_consts_99_consts_4);
+ _PyStaticCode_Fini((PyCodeObject *)&os_toplevel_consts_99_consts_5);
+ _PyStaticCode_Fini((PyCodeObject *)&os_toplevel_consts_99_consts_6);
+ _PyStaticCode_Fini((PyCodeObject *)&os_toplevel_consts_99_consts_7_consts_2);
+ _PyStaticCode_Fini((PyCodeObject *)&os_toplevel_consts_99_consts_7);
+ _PyStaticCode_Fini((PyCodeObject *)&os_toplevel_consts_99_consts_8);
+ _PyStaticCode_Fini((PyCodeObject *)&os_toplevel_consts_99_consts_9);
+ _PyStaticCode_Fini((PyCodeObject *)&os_toplevel_consts_99_consts_10);
+ _PyStaticCode_Fini((PyCodeObject *)&os_toplevel_consts_99_consts_11);
+ _PyStaticCode_Fini((PyCodeObject *)&os_toplevel_consts_99_consts_12);
+ _PyStaticCode_Fini((PyCodeObject *)&os_toplevel_consts_99);
+ _PyStaticCode_Fini((PyCodeObject *)&os_toplevel_consts_101_consts_2);
+ _PyStaticCode_Fini((PyCodeObject *)&os_toplevel_consts_101_consts_3);
+ _PyStaticCode_Fini((PyCodeObject *)&os_toplevel_consts_101_consts_4);
+ _PyStaticCode_Fini((PyCodeObject *)&os_toplevel_consts_101_consts_5);
+ _PyStaticCode_Fini((PyCodeObject *)&os_toplevel_consts_101);
+ _PyStaticCode_Fini((PyCodeObject *)&os_toplevel_consts_102);
+ _PyStaticCode_Fini((PyCodeObject *)&os_toplevel_consts_104);
+ _PyStaticCode_Fini((PyCodeObject *)&os_toplevel_consts_105);
+ _PyStaticCode_Fini((PyCodeObject *)&os_toplevel_consts_107_consts_1);
+ _PyStaticCode_Fini((PyCodeObject *)&os_toplevel_consts_107_consts_2);
+ _PyStaticCode_Fini((PyCodeObject *)&os_toplevel_consts_107);
+ _PyStaticCode_Fini((PyCodeObject *)&os_toplevel_consts_112);
+ _PyStaticCode_Fini((PyCodeObject *)&os_toplevel_consts_113);
+ _PyStaticCode_Fini((PyCodeObject *)&os_toplevel_consts_114);
+ _PyStaticCode_Fini((PyCodeObject *)&os_toplevel_consts_115);
+ _PyStaticCode_Fini((PyCodeObject *)&os_toplevel_consts_116);
+ _PyStaticCode_Fini((PyCodeObject *)&os_toplevel_consts_118);
+ _PyStaticCode_Fini((PyCodeObject *)&os_toplevel_consts_119);
+ _PyStaticCode_Fini((PyCodeObject *)&os_toplevel_consts_123);
+ _PyStaticCode_Fini((PyCodeObject *)&os_toplevel_consts_124);
+ _PyStaticCode_Fini((PyCodeObject *)&os_toplevel_consts_128);
+ _PyStaticCode_Fini((PyCodeObject *)&os_toplevel_consts_129_consts_1);
+ _PyStaticCode_Fini((PyCodeObject *)&os_toplevel_consts_129_consts_2);
+ _PyStaticCode_Fini((PyCodeObject *)&os_toplevel_consts_129_consts_3);
+ _PyStaticCode_Fini((PyCodeObject *)&os_toplevel_consts_129_consts_4);
+ _PyStaticCode_Fini((PyCodeObject *)&os_toplevel_consts_129_consts_5);
+ _PyStaticCode_Fini((PyCodeObject *)&os_toplevel_consts_129_consts_6);
+ _PyStaticCode_Fini((PyCodeObject *)&os_toplevel_consts_129);
+ _PyStaticCode_Fini((PyCodeObject *)&os_toplevel_consts_132);
+ _PyStaticCode_Fini((PyCodeObject *)&os_toplevel_consts_133);
+ _PyStaticCode_Fini((PyCodeObject *)&os_toplevel_consts_135_consts_2);
+ _PyStaticCode_Fini((PyCodeObject *)&os_toplevel_consts_135_consts_3);
+ _PyStaticCode_Fini((PyCodeObject *)&os_toplevel_consts_135);
+ _PyStaticCode_Fini((PyCodeObject *)&os_toplevel_consts_137_consts_1);
+ _PyStaticCode_Fini((PyCodeObject *)&os_toplevel_consts_137_consts_2);
+ _PyStaticCode_Fini((PyCodeObject *)&os_toplevel_consts_137_consts_3);
+ _PyStaticCode_Fini((PyCodeObject *)&os_toplevel_consts_137_consts_4);
+ _PyStaticCode_Fini((PyCodeObject *)&os_toplevel_consts_137_consts_5);
+ _PyStaticCode_Fini((PyCodeObject *)&os_toplevel_consts_137);
+ _PyStaticCode_Fini((PyCodeObject *)&os_toplevel_consts_139);
+ _PyStaticCode_Fini((PyCodeObject *)&os_toplevel);
+ _PyStaticCode_Fini((PyCodeObject *)&site_toplevel_consts_3);
+ _PyStaticCode_Fini((PyCodeObject *)&site_toplevel_consts_4);
+ _PyStaticCode_Fini((PyCodeObject *)&site_toplevel_consts_5);
+ _PyStaticCode_Fini((PyCodeObject *)&site_toplevel_consts_6);
+ _PyStaticCode_Fini((PyCodeObject *)&site_toplevel_consts_7);
+ _PyStaticCode_Fini((PyCodeObject *)&site_toplevel_consts_8);
+ _PyStaticCode_Fini((PyCodeObject *)&site_toplevel_consts_9);
+ _PyStaticCode_Fini((PyCodeObject *)&site_toplevel_consts_10);
+ _PyStaticCode_Fini((PyCodeObject *)&site_toplevel_consts_11_consts_3);
+ _PyStaticCode_Fini((PyCodeObject *)&site_toplevel_consts_11);
+ _PyStaticCode_Fini((PyCodeObject *)&site_toplevel_consts_12);
+ _PyStaticCode_Fini((PyCodeObject *)&site_toplevel_consts_13);
+ _PyStaticCode_Fini((PyCodeObject *)&site_toplevel_consts_14);
+ _PyStaticCode_Fini((PyCodeObject *)&site_toplevel_consts_15);
+ _PyStaticCode_Fini((PyCodeObject *)&site_toplevel_consts_16);
+ _PyStaticCode_Fini((PyCodeObject *)&site_toplevel_consts_17);
+ _PyStaticCode_Fini((PyCodeObject *)&site_toplevel_consts_18);
+ _PyStaticCode_Fini((PyCodeObject *)&site_toplevel_consts_19);
+ _PyStaticCode_Fini((PyCodeObject *)&site_toplevel_consts_20);
+ _PyStaticCode_Fini((PyCodeObject *)&site_toplevel_consts_21_consts_1_consts_9);
+ _PyStaticCode_Fini((PyCodeObject *)&site_toplevel_consts_21_consts_1);
+ _PyStaticCode_Fini((PyCodeObject *)&site_toplevel_consts_21);
+ _PyStaticCode_Fini((PyCodeObject *)&site_toplevel_consts_22_consts_4);
+ _PyStaticCode_Fini((PyCodeObject *)&site_toplevel_consts_22);
+ _PyStaticCode_Fini((PyCodeObject *)&site_toplevel_consts_23);
+ _PyStaticCode_Fini((PyCodeObject *)&site_toplevel_consts_24);
+ _PyStaticCode_Fini((PyCodeObject *)&site_toplevel_consts_25);
+ _PyStaticCode_Fini((PyCodeObject *)&site_toplevel_consts_26_consts_7);
+ _PyStaticCode_Fini((PyCodeObject *)&site_toplevel_consts_26);
+ _PyStaticCode_Fini((PyCodeObject *)&site_toplevel);
+ _PyStaticCode_Fini((PyCodeObject *)&stat_toplevel_consts_11);
+ _PyStaticCode_Fini((PyCodeObject *)&stat_toplevel_consts_12);
+ _PyStaticCode_Fini((PyCodeObject *)&stat_toplevel_consts_20);
+ _PyStaticCode_Fini((PyCodeObject *)&stat_toplevel_consts_21);
+ _PyStaticCode_Fini((PyCodeObject *)&stat_toplevel_consts_22);
+ _PyStaticCode_Fini((PyCodeObject *)&stat_toplevel_consts_23);
+ _PyStaticCode_Fini((PyCodeObject *)&stat_toplevel_consts_24);
+ _PyStaticCode_Fini((PyCodeObject *)&stat_toplevel_consts_25);
+ _PyStaticCode_Fini((PyCodeObject *)&stat_toplevel_consts_26);
+ _PyStaticCode_Fini((PyCodeObject *)&stat_toplevel_consts_27);
+ _PyStaticCode_Fini((PyCodeObject *)&stat_toplevel_consts_28);
+ _PyStaticCode_Fini((PyCodeObject *)&stat_toplevel_consts_29);
+ _PyStaticCode_Fini((PyCodeObject *)&stat_toplevel_consts_58);
+ _PyStaticCode_Fini((PyCodeObject *)&stat_toplevel);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib_util_toplevel_consts_15);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib_util_toplevel_consts_16);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib_util_toplevel_consts_17);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib_util_toplevel_consts_18);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib_util_toplevel_consts_19_consts_2);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib_util_toplevel_consts_19_consts_3);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib_util_toplevel_consts_19_consts_4);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib_util_toplevel_consts_19_consts_5);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib_util_toplevel_consts_19);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib_util_toplevel_consts_21_consts_2);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib_util_toplevel_consts_21_consts_3);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib_util_toplevel_consts_21);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib_util_toplevel_consts_23_consts_2);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib_util_toplevel_consts_23_consts_3_consts_1);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib_util_toplevel_consts_23_consts_3);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib_util_toplevel_consts_23_consts_4);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib_util_toplevel_consts_23_consts_5);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib_util_toplevel_consts_23_consts_6);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib_util_toplevel_consts_23);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib_util_toplevel);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib_machinery_toplevel_consts_13);
+ _PyStaticCode_Fini((PyCodeObject *)&importlib_machinery_toplevel);
+ _PyStaticCode_Fini((PyCodeObject *)&runpy_toplevel_consts_5_consts_2);
+ _PyStaticCode_Fini((PyCodeObject *)&runpy_toplevel_consts_5_consts_3);
+ _PyStaticCode_Fini((PyCodeObject *)&runpy_toplevel_consts_5_consts_4);
+ _PyStaticCode_Fini((PyCodeObject *)&runpy_toplevel_consts_5);
+ _PyStaticCode_Fini((PyCodeObject *)&runpy_toplevel_consts_7_consts_1);
+ _PyStaticCode_Fini((PyCodeObject *)&runpy_toplevel_consts_7_consts_2);
+ _PyStaticCode_Fini((PyCodeObject *)&runpy_toplevel_consts_7_consts_3);
+ _PyStaticCode_Fini((PyCodeObject *)&runpy_toplevel_consts_7);
+ _PyStaticCode_Fini((PyCodeObject *)&runpy_toplevel_consts_9);
+ _PyStaticCode_Fini((PyCodeObject *)&runpy_toplevel_consts_10);
+ _PyStaticCode_Fini((PyCodeObject *)&runpy_toplevel_consts_11);
+ _PyStaticCode_Fini((PyCodeObject *)&runpy_toplevel_consts_12);
+ _PyStaticCode_Fini((PyCodeObject *)&runpy_toplevel_consts_14);
+ _PyStaticCode_Fini((PyCodeObject *)&runpy_toplevel_consts_15);
+ _PyStaticCode_Fini((PyCodeObject *)&runpy_toplevel_consts_16);
+ _PyStaticCode_Fini((PyCodeObject *)&runpy_toplevel_consts_17);
+ _PyStaticCode_Fini((PyCodeObject *)&runpy_toplevel_consts_18);
+ _PyStaticCode_Fini((PyCodeObject *)&runpy_toplevel);
+ _PyStaticCode_Fini((PyCodeObject *)&__hello___toplevel_consts_1);
+ _PyStaticCode_Fini((PyCodeObject *)&__hello___toplevel_consts_3);
+ _PyStaticCode_Fini((PyCodeObject *)&__hello___toplevel_consts_5);
+ _PyStaticCode_Fini((PyCodeObject *)&__hello___toplevel_consts_7);
+ _PyStaticCode_Fini((PyCodeObject *)&__hello___toplevel);
+ _PyStaticCode_Fini((PyCodeObject *)&__phello___toplevel_consts_1);
+ _PyStaticCode_Fini((PyCodeObject *)&__phello___toplevel);
+ _PyStaticCode_Fini((PyCodeObject *)&__phello___ham_toplevel);
+ _PyStaticCode_Fini((PyCodeObject *)&__phello___ham_eggs_toplevel);
+ _PyStaticCode_Fini((PyCodeObject *)&__phello___spam_toplevel_consts_1);
+ _PyStaticCode_Fini((PyCodeObject *)&__phello___spam_toplevel);
+ _PyStaticCode_Fini((PyCodeObject *)&frozen_only_toplevel);
+}
+int
+_Py_Deepfreeze_Init(void) {
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_toplevel_consts_1) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_toplevel_consts_3) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_toplevel_consts_4) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_toplevel_consts_5) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_toplevel_consts_7_consts_1_consts_1_consts_2) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_toplevel_consts_7_consts_1_consts_1_consts_3) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_toplevel_consts_7_consts_1_consts_1_consts_4) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_toplevel_consts_7_consts_1_consts_1) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_toplevel_consts_7_consts_1) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_toplevel_consts_7_consts_2) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_toplevel_consts_7_consts_3) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_toplevel_consts_7_consts_5) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_toplevel_consts_7_consts_6) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_toplevel_consts_7) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_toplevel_consts_9_consts_2) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_toplevel_consts_9_consts_3) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_toplevel_consts_9_consts_4) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_toplevel_consts_9) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_toplevel_consts_11) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_toplevel_consts_13) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_toplevel_consts_14_consts_2) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_toplevel_consts_14_consts_3) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_toplevel_consts_14_consts_4) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_toplevel_consts_14_consts_5) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_toplevel_consts_14_consts_6) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_toplevel_consts_14) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_toplevel_consts_16_consts_2) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_toplevel_consts_16_consts_3) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_toplevel_consts_16_consts_4) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_toplevel_consts_16_consts_5) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_toplevel_consts_16) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_toplevel_consts_18_consts_1) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_toplevel_consts_18_consts_2) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_toplevel_consts_18_consts_3) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_toplevel_consts_18) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_toplevel_consts_20_consts_2) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_toplevel_consts_20) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_toplevel_consts_21) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_toplevel_consts_22) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_toplevel_consts_25) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_toplevel_consts_26_consts_1) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_toplevel_consts_26) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_toplevel_consts_27_consts_1) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_toplevel_consts_27) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_toplevel_consts_28) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_toplevel_consts_29) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_toplevel_consts_30_consts_4) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_toplevel_consts_30_consts_5) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_toplevel_consts_30_consts_6) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_toplevel_consts_30_consts_7) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_toplevel_consts_30_consts_8) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_toplevel_consts_30_consts_9) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_toplevel_consts_30_consts_10) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_toplevel_consts_30_consts_11) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_toplevel_consts_30) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_toplevel_consts_33) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_toplevel_consts_34) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_toplevel_consts_37) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_toplevel_consts_38) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_toplevel_consts_39) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_toplevel_consts_40) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_toplevel_consts_41) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_toplevel_consts_42) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_toplevel_consts_43) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_toplevel_consts_44_consts_4) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_toplevel_consts_44_consts_5) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_toplevel_consts_44_consts_6) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_toplevel_consts_44_consts_7) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_toplevel_consts_44_consts_8) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_toplevel_consts_44_consts_9) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_toplevel_consts_44) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_toplevel_consts_46_consts_3) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_toplevel_consts_46_consts_5) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_toplevel_consts_46_consts_6) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_toplevel_consts_46_consts_7) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_toplevel_consts_46_consts_8) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_toplevel_consts_46_consts_9) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_toplevel_consts_46_consts_10) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_toplevel_consts_46_consts_11) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_toplevel_consts_46_consts_12) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_toplevel_consts_46) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_toplevel_consts_48_consts_2) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_toplevel_consts_48_consts_3) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_toplevel_consts_48) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_toplevel_consts_50) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_toplevel_consts_51) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_toplevel_consts_52) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_toplevel_consts_55) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_toplevel_consts_56) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_toplevel_consts_57) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_toplevel_consts_59) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_toplevel_consts_60) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_toplevel_consts_61) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_toplevel_consts_62) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_toplevel_consts_63) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_toplevel_consts_64) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_toplevel_consts_65) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_toplevel) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_6) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_11_consts_3) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_11_consts_4) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_11) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_12) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_13) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_14) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_15) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_16) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_17_consts_1) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_17) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_18) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_19) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_20) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_21) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_22) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_23) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_24) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_25) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_36) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_37) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_38) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_39) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_40) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_41_consts_1) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_41_consts_2) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_41) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_42) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_43) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_44) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_45) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_46) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_47) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_48) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_50) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_51) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_52_consts_5) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_52_consts_6) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_52_consts_8) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_52) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_54_consts_2) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_54_consts_3) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_54_consts_4) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_54_consts_5) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_54) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_56_consts_1) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_56_consts_2) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_56_consts_3) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_56_consts_4) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_56_consts_5) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_56_consts_8) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_56_consts_9) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_56) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_58_consts_2) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_58_consts_3) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_58_consts_4) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_58_consts_5) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_58_consts_6) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_58_consts_7) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_58_consts_8) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_58) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_60_consts_2) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_60_consts_3) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_60_consts_6) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_60) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_62_consts_2) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_62_consts_3) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_62) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_64_consts_2) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_64_consts_3) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_64_consts_4) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_64_consts_5) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_64_consts_6) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_64_consts_7_consts_2) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_64_consts_7) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_64_consts_8) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_64_consts_9) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_64_consts_10) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_64) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_66_consts_3) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_66_consts_4) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_66_consts_5) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_66_consts_6) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_66_consts_7) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_66_consts_8) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_66_consts_9) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_66_consts_10) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_66_consts_11) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_66_consts_12) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_66_consts_13) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_66) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_68_consts_1) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_68_consts_2) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_68_consts_3) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_68_consts_4) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_68_consts_5) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_68_consts_6) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_68_consts_7) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_68_consts_8) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_68) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_70_consts_2) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_70_consts_3) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_70_consts_4) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_70_consts_6) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_70_consts_7) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_70_consts_8) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_70) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_72_consts_2_consts_1) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_72_consts_2) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_72_consts_3) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_72_consts_4) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_72_consts_6) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_72_consts_7) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_72_consts_8_consts_1) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_72_consts_8) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_72_consts_9) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_72) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_74) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_75) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_76) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_external_toplevel_consts_77) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib__bootstrap_external_toplevel) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&zipimport_toplevel_consts_7) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&zipimport_toplevel_consts_11_consts_2) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&zipimport_toplevel_consts_11_consts_4) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&zipimport_toplevel_consts_11_consts_5) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&zipimport_toplevel_consts_11_consts_6) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&zipimport_toplevel_consts_11_consts_7) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&zipimport_toplevel_consts_11_consts_8) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&zipimport_toplevel_consts_11_consts_9) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&zipimport_toplevel_consts_11_consts_10) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&zipimport_toplevel_consts_11_consts_11) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&zipimport_toplevel_consts_11_consts_12) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&zipimport_toplevel_consts_11_consts_13) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&zipimport_toplevel_consts_11) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&zipimport_toplevel_consts_18) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&zipimport_toplevel_consts_19) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&zipimport_toplevel_consts_20) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&zipimport_toplevel_consts_21) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&zipimport_toplevel_consts_23) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&zipimport_toplevel_consts_24) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&zipimport_toplevel_consts_25) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&zipimport_toplevel_consts_26) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&zipimport_toplevel_consts_27) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&zipimport_toplevel_consts_28) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&zipimport_toplevel_consts_29) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&zipimport_toplevel_consts_30) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&zipimport_toplevel_consts_31) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&zipimport_toplevel_consts_32) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&zipimport_toplevel) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&abc_toplevel_consts_1) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&abc_toplevel_consts_2_consts_3) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&abc_toplevel_consts_2) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&abc_toplevel_consts_4_consts_3) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&abc_toplevel_consts_4) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&abc_toplevel_consts_6) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&abc_toplevel_consts_10_consts_2) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&abc_toplevel_consts_10_consts_3) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&abc_toplevel_consts_10_consts_4) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&abc_toplevel_consts_10_consts_5) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&abc_toplevel_consts_10_consts_6) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&abc_toplevel_consts_10_consts_7) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&abc_toplevel_consts_10_consts_8) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&abc_toplevel_consts_10) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&abc_toplevel_consts_14) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&abc_toplevel_consts_15) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&abc_toplevel) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&codecs_toplevel_consts_12_consts_5) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&codecs_toplevel_consts_12_consts_6) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&codecs_toplevel_consts_12) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&codecs_toplevel_consts_14_consts_2) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&codecs_toplevel_consts_14_consts_3) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&codecs_toplevel_consts_14) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&codecs_toplevel_consts_16_consts_2) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&codecs_toplevel_consts_16_consts_3) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&codecs_toplevel_consts_16_consts_4) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&codecs_toplevel_consts_16_consts_5) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&codecs_toplevel_consts_16_consts_6) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&codecs_toplevel_consts_16) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&codecs_toplevel_consts_18_consts_2) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&codecs_toplevel_consts_18_consts_3) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&codecs_toplevel_consts_18_consts_4) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&codecs_toplevel_consts_18_consts_5) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&codecs_toplevel_consts_18_consts_6) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&codecs_toplevel_consts_18_consts_7) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&codecs_toplevel_consts_18) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&codecs_toplevel_consts_20_consts_2) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&codecs_toplevel_consts_20_consts_3) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&codecs_toplevel_consts_20_consts_4) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&codecs_toplevel_consts_20_consts_5) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&codecs_toplevel_consts_20_consts_6) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&codecs_toplevel_consts_20) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&codecs_toplevel_consts_22_consts_2) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&codecs_toplevel_consts_22_consts_3) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&codecs_toplevel_consts_22_consts_4) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&codecs_toplevel_consts_22_consts_5) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&codecs_toplevel_consts_22_consts_6) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&codecs_toplevel_consts_22_consts_7) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&codecs_toplevel_consts_22) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&codecs_toplevel_consts_24_consts_1) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&codecs_toplevel_consts_24_consts_2) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&codecs_toplevel_consts_24_consts_3) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&codecs_toplevel_consts_24_consts_4) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&codecs_toplevel_consts_24_consts_5) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&codecs_toplevel_consts_24_consts_6) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&codecs_toplevel_consts_24_consts_7) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&codecs_toplevel_consts_24_consts_8) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&codecs_toplevel_consts_24_consts_9) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&codecs_toplevel_consts_24) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&codecs_toplevel_consts_26_consts_1) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&codecs_toplevel_consts_26_consts_2) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&codecs_toplevel_consts_26_consts_3) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&codecs_toplevel_consts_26_consts_5) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&codecs_toplevel_consts_26_consts_6) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&codecs_toplevel_consts_26_consts_7) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&codecs_toplevel_consts_26_consts_8) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&codecs_toplevel_consts_26_consts_9) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&codecs_toplevel_consts_26_consts_10) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&codecs_toplevel_consts_26_consts_11) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&codecs_toplevel_consts_26_consts_12) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&codecs_toplevel_consts_26_consts_13) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&codecs_toplevel_consts_26_consts_14) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&codecs_toplevel_consts_26) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&codecs_toplevel_consts_28_consts_3) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&codecs_toplevel_consts_28_consts_4) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&codecs_toplevel_consts_28_consts_6) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&codecs_toplevel_consts_28_consts_7) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&codecs_toplevel_consts_28_consts_8) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&codecs_toplevel_consts_28_consts_9) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&codecs_toplevel_consts_28_consts_10) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&codecs_toplevel_consts_28_consts_11) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&codecs_toplevel_consts_28_consts_12) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&codecs_toplevel_consts_28_consts_13) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&codecs_toplevel_consts_28_consts_14) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&codecs_toplevel_consts_28_consts_15) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&codecs_toplevel_consts_28_consts_16) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&codecs_toplevel_consts_28_consts_17) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&codecs_toplevel_consts_28) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&codecs_toplevel_consts_30_consts_3) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&codecs_toplevel_consts_30_consts_4) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&codecs_toplevel_consts_30_consts_6) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&codecs_toplevel_consts_30_consts_7) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&codecs_toplevel_consts_30_consts_8) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&codecs_toplevel_consts_30_consts_9) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&codecs_toplevel_consts_30_consts_10) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&codecs_toplevel_consts_30_consts_11) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&codecs_toplevel_consts_30_consts_12) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&codecs_toplevel_consts_30_consts_13) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&codecs_toplevel_consts_30_consts_14) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&codecs_toplevel_consts_30_consts_15) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&codecs_toplevel_consts_30_consts_16) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&codecs_toplevel_consts_30_consts_17) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&codecs_toplevel_consts_30) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&codecs_toplevel_consts_33) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&codecs_toplevel_consts_34) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&codecs_toplevel_consts_35) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&codecs_toplevel_consts_36) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&codecs_toplevel_consts_37) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&codecs_toplevel_consts_38) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&codecs_toplevel_consts_39) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&codecs_toplevel_consts_40) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&codecs_toplevel_consts_41) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&codecs_toplevel_consts_42) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&codecs_toplevel_consts_43) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&codecs_toplevel_consts_44) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&codecs_toplevel) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&io_toplevel_consts_9) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&io_toplevel_consts_12) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&io_toplevel_consts_14) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&io_toplevel_consts_16) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&io_toplevel) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&_collections_abc_toplevel_consts_5) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&_collections_abc_toplevel_consts_13) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&_collections_abc_toplevel_consts_14) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&_collections_abc_toplevel_consts_15) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&_collections_abc_toplevel_consts_16) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&_collections_abc_toplevel_consts_17_consts_2) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&_collections_abc_toplevel_consts_17_consts_3) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&_collections_abc_toplevel_consts_17) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&_collections_abc_toplevel_consts_20_consts_2) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&_collections_abc_toplevel_consts_20_consts_3) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&_collections_abc_toplevel_consts_20) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&_collections_abc_toplevel_consts_22_consts_2) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&_collections_abc_toplevel_consts_22_consts_4) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&_collections_abc_toplevel_consts_22_consts_5) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&_collections_abc_toplevel_consts_22_consts_6) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&_collections_abc_toplevel_consts_22) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&_collections_abc_toplevel_consts_24_consts_2) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&_collections_abc_toplevel_consts_24_consts_3) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&_collections_abc_toplevel_consts_24) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&_collections_abc_toplevel_consts_26_consts_2) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&_collections_abc_toplevel_consts_26_consts_3) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&_collections_abc_toplevel_consts_26_consts_4) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&_collections_abc_toplevel_consts_26) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&_collections_abc_toplevel_consts_28_consts_2) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&_collections_abc_toplevel_consts_28_consts_3) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&_collections_abc_toplevel_consts_28_consts_5) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&_collections_abc_toplevel_consts_28_consts_6) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&_collections_abc_toplevel_consts_28_consts_7) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&_collections_abc_toplevel_consts_28) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&_collections_abc_toplevel_consts_30_consts_2) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&_collections_abc_toplevel_consts_30_consts_3) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&_collections_abc_toplevel_consts_30) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&_collections_abc_toplevel_consts_32_consts_2) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&_collections_abc_toplevel_consts_32_consts_3) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&_collections_abc_toplevel_consts_32_consts_4) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&_collections_abc_toplevel_consts_32) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&_collections_abc_toplevel_consts_34_consts_2) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&_collections_abc_toplevel_consts_34_consts_3) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&_collections_abc_toplevel_consts_34) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&_collections_abc_toplevel_consts_36_consts_2) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&_collections_abc_toplevel_consts_36_consts_3) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&_collections_abc_toplevel_consts_36_consts_5) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&_collections_abc_toplevel_consts_36_consts_6) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&_collections_abc_toplevel_consts_36_consts_7) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&_collections_abc_toplevel_consts_36) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&_collections_abc_toplevel_consts_38_consts_2) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&_collections_abc_toplevel_consts_38_consts_3) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&_collections_abc_toplevel_consts_38) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&_collections_abc_toplevel_consts_40_consts_2) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&_collections_abc_toplevel_consts_40_consts_3) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&_collections_abc_toplevel_consts_40) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&_collections_abc_toplevel_consts_42_consts_2) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&_collections_abc_toplevel_consts_42) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&_collections_abc_toplevel_consts_44_consts_4) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&_collections_abc_toplevel_consts_44_consts_5) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&_collections_abc_toplevel_consts_44) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&_collections_abc_toplevel_consts_46_consts_3) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&_collections_abc_toplevel_consts_46_consts_4) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&_collections_abc_toplevel_consts_46_consts_5) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&_collections_abc_toplevel_consts_46_consts_6) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&_collections_abc_toplevel_consts_46) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&_collections_abc_toplevel_consts_48_consts_4) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&_collections_abc_toplevel_consts_48) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&_collections_abc_toplevel_consts_49) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&_collections_abc_toplevel_consts_50_consts_2) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&_collections_abc_toplevel_consts_50_consts_3) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&_collections_abc_toplevel_consts_50) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&_collections_abc_toplevel_consts_52_consts_3) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&_collections_abc_toplevel_consts_52_consts_4) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&_collections_abc_toplevel_consts_52_consts_5) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&_collections_abc_toplevel_consts_52_consts_6) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&_collections_abc_toplevel_consts_52_consts_7) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&_collections_abc_toplevel_consts_52_consts_8) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&_collections_abc_toplevel_consts_52_consts_9_consts_1) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&_collections_abc_toplevel_consts_52_consts_9) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&_collections_abc_toplevel_consts_52_consts_10) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&_collections_abc_toplevel_consts_52_consts_11_consts_1) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&_collections_abc_toplevel_consts_52_consts_11) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&_collections_abc_toplevel_consts_52_consts_12_consts_1) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&_collections_abc_toplevel_consts_52_consts_12) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&_collections_abc_toplevel_consts_52_consts_13_consts_1) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&_collections_abc_toplevel_consts_52_consts_13) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&_collections_abc_toplevel_consts_52_consts_14) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&_collections_abc_toplevel_consts_52_consts_15) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&_collections_abc_toplevel_consts_52) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&_collections_abc_toplevel_consts_54_consts_3) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&_collections_abc_toplevel_consts_54_consts_4) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&_collections_abc_toplevel_consts_54_consts_5) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&_collections_abc_toplevel_consts_54_consts_6) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&_collections_abc_toplevel_consts_54_consts_7) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&_collections_abc_toplevel_consts_54_consts_8) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&_collections_abc_toplevel_consts_54_consts_9) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&_collections_abc_toplevel_consts_54_consts_10) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&_collections_abc_toplevel_consts_54_consts_11) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&_collections_abc_toplevel_consts_54) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&_collections_abc_toplevel_consts_56_consts_4) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&_collections_abc_toplevel_consts_56_consts_6) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&_collections_abc_toplevel_consts_56_consts_7) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&_collections_abc_toplevel_consts_56_consts_8) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&_collections_abc_toplevel_consts_56_consts_9) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&_collections_abc_toplevel_consts_56_consts_10) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&_collections_abc_toplevel_consts_56_consts_11) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&_collections_abc_toplevel_consts_56) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&_collections_abc_toplevel_consts_58_consts_2) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&_collections_abc_toplevel_consts_58_consts_3) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&_collections_abc_toplevel_consts_58_consts_4) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&_collections_abc_toplevel_consts_58) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&_collections_abc_toplevel_consts_60_consts_2) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&_collections_abc_toplevel_consts_60_consts_3) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&_collections_abc_toplevel_consts_60_consts_4) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&_collections_abc_toplevel_consts_60) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&_collections_abc_toplevel_consts_62_consts_2) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&_collections_abc_toplevel_consts_62_consts_3) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&_collections_abc_toplevel_consts_62_consts_4) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&_collections_abc_toplevel_consts_62) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&_collections_abc_toplevel_consts_64_consts_2) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&_collections_abc_toplevel_consts_64_consts_3) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&_collections_abc_toplevel_consts_64) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&_collections_abc_toplevel_consts_66_consts_3) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&_collections_abc_toplevel_consts_66_consts_4) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&_collections_abc_toplevel_consts_66_consts_5) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&_collections_abc_toplevel_consts_66_consts_6) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&_collections_abc_toplevel_consts_66_consts_7) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&_collections_abc_toplevel_consts_66_consts_8) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&_collections_abc_toplevel_consts_66_consts_10) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&_collections_abc_toplevel_consts_66) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&_collections_abc_toplevel_consts_68_consts_4) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&_collections_abc_toplevel_consts_68_consts_5) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&_collections_abc_toplevel_consts_68_consts_6) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&_collections_abc_toplevel_consts_68_consts_7) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&_collections_abc_toplevel_consts_68_consts_9) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&_collections_abc_toplevel_consts_68_consts_10_consts_1) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&_collections_abc_toplevel_consts_68_consts_10) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&_collections_abc_toplevel_consts_68) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&_collections_abc_toplevel_consts_70_consts_1) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&_collections_abc_toplevel_consts_70_consts_2) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&_collections_abc_toplevel_consts_70) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&_collections_abc_toplevel_consts_72) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&_collections_abc_toplevel_consts_74_consts_3) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&_collections_abc_toplevel_consts_74_consts_4) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&_collections_abc_toplevel_consts_74_consts_5) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&_collections_abc_toplevel_consts_74_consts_6) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&_collections_abc_toplevel_consts_74_consts_7) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&_collections_abc_toplevel_consts_74_consts_8) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&_collections_abc_toplevel_consts_74_consts_9) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&_collections_abc_toplevel_consts_74_consts_10) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&_collections_abc_toplevel_consts_74_consts_11) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&_collections_abc_toplevel_consts_74_consts_12) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&_collections_abc_toplevel_consts_74) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&_collections_abc_toplevel) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&_sitebuiltins_toplevel_consts_3_consts_1) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&_sitebuiltins_toplevel_consts_3_consts_2) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&_sitebuiltins_toplevel_consts_3_consts_4) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&_sitebuiltins_toplevel_consts_3) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&_sitebuiltins_toplevel_consts_5_consts_3) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&_sitebuiltins_toplevel_consts_5_consts_4) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&_sitebuiltins_toplevel_consts_5_consts_5) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&_sitebuiltins_toplevel_consts_5_consts_6) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&_sitebuiltins_toplevel_consts_5) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&_sitebuiltins_toplevel_consts_7_consts_2) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&_sitebuiltins_toplevel_consts_7_consts_3) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&_sitebuiltins_toplevel_consts_7) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&_sitebuiltins_toplevel) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&genericpath_toplevel_consts_4) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&genericpath_toplevel_consts_5) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&genericpath_toplevel_consts_6) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&genericpath_toplevel_consts_7) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&genericpath_toplevel_consts_8) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&genericpath_toplevel_consts_9) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&genericpath_toplevel_consts_10) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&genericpath_toplevel_consts_11) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&genericpath_toplevel_consts_12) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&genericpath_toplevel_consts_13) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&genericpath_toplevel_consts_14) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&genericpath_toplevel_consts_15) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&genericpath_toplevel_consts_16) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&genericpath_toplevel_consts_17) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&genericpath_toplevel) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&ntpath_toplevel_consts_12) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&ntpath_toplevel_consts_14) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&ntpath_toplevel_consts_15) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&ntpath_toplevel_consts_16) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&ntpath_toplevel_consts_17) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&ntpath_toplevel_consts_18) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&ntpath_toplevel_consts_19) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&ntpath_toplevel_consts_20) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&ntpath_toplevel_consts_21) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&ntpath_toplevel_consts_22) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&ntpath_toplevel_consts_23) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&ntpath_toplevel_consts_25) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&ntpath_toplevel_consts_26) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&ntpath_toplevel_consts_27) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&ntpath_toplevel_consts_29) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&ntpath_toplevel_consts_30) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&ntpath_toplevel_consts_31) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&ntpath_toplevel_consts_33) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&ntpath_toplevel_consts_34) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&ntpath_toplevel_consts_35) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&ntpath_toplevel_consts_37) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&ntpath_toplevel_consts_39) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&ntpath_toplevel_consts_40) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&ntpath_toplevel_consts_43) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&ntpath_toplevel_consts_45) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&ntpath_toplevel_consts_46) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&ntpath_toplevel_consts_52) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&ntpath_toplevel_consts_53) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&ntpath_toplevel) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&posixpath_toplevel_consts_11) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&posixpath_toplevel_consts_12) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&posixpath_toplevel_consts_13) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&posixpath_toplevel_consts_14) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&posixpath_toplevel_consts_15) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&posixpath_toplevel_consts_16) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&posixpath_toplevel_consts_17) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&posixpath_toplevel_consts_18) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&posixpath_toplevel_consts_19) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&posixpath_toplevel_consts_20) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&posixpath_toplevel_consts_21) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&posixpath_toplevel_consts_22) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&posixpath_toplevel_consts_23) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&posixpath_toplevel_consts_24) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&posixpath_toplevel_consts_25) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&posixpath_toplevel_consts_27) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&posixpath_toplevel_consts_28) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&posixpath_toplevel_consts_29) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&posixpath_toplevel_consts_32) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&posixpath_toplevel_consts_33) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&posixpath_toplevel_consts_35) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&posixpath_toplevel_consts_36_consts_7) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&posixpath_toplevel_consts_36) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&posixpath_toplevel) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&os_toplevel_consts_5) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&os_toplevel_consts_6) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&os_toplevel_consts_19) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&os_toplevel_consts_79) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&os_toplevel_consts_80) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&os_toplevel_consts_81) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&os_toplevel_consts_83) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&os_toplevel_consts_86) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&os_toplevel_consts_87) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&os_toplevel_consts_89) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&os_toplevel_consts_90) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&os_toplevel_consts_91) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&os_toplevel_consts_92) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&os_toplevel_consts_93) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&os_toplevel_consts_94) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&os_toplevel_consts_96) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&os_toplevel_consts_97) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&os_toplevel_consts_99_consts_1) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&os_toplevel_consts_99_consts_2) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&os_toplevel_consts_99_consts_3) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&os_toplevel_consts_99_consts_4) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&os_toplevel_consts_99_consts_5) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&os_toplevel_consts_99_consts_6) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&os_toplevel_consts_99_consts_7_consts_2) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&os_toplevel_consts_99_consts_7) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&os_toplevel_consts_99_consts_8) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&os_toplevel_consts_99_consts_9) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&os_toplevel_consts_99_consts_10) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&os_toplevel_consts_99_consts_11) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&os_toplevel_consts_99_consts_12) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&os_toplevel_consts_99) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&os_toplevel_consts_101_consts_2) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&os_toplevel_consts_101_consts_3) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&os_toplevel_consts_101_consts_4) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&os_toplevel_consts_101_consts_5) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&os_toplevel_consts_101) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&os_toplevel_consts_102) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&os_toplevel_consts_104) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&os_toplevel_consts_105) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&os_toplevel_consts_107_consts_1) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&os_toplevel_consts_107_consts_2) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&os_toplevel_consts_107) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&os_toplevel_consts_112) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&os_toplevel_consts_113) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&os_toplevel_consts_114) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&os_toplevel_consts_115) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&os_toplevel_consts_116) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&os_toplevel_consts_118) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&os_toplevel_consts_119) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&os_toplevel_consts_123) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&os_toplevel_consts_124) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&os_toplevel_consts_128) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&os_toplevel_consts_129_consts_1) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&os_toplevel_consts_129_consts_2) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&os_toplevel_consts_129_consts_3) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&os_toplevel_consts_129_consts_4) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&os_toplevel_consts_129_consts_5) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&os_toplevel_consts_129_consts_6) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&os_toplevel_consts_129) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&os_toplevel_consts_132) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&os_toplevel_consts_133) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&os_toplevel_consts_135_consts_2) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&os_toplevel_consts_135_consts_3) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&os_toplevel_consts_135) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&os_toplevel_consts_137_consts_1) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&os_toplevel_consts_137_consts_2) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&os_toplevel_consts_137_consts_3) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&os_toplevel_consts_137_consts_4) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&os_toplevel_consts_137_consts_5) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&os_toplevel_consts_137) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&os_toplevel_consts_139) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&os_toplevel) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&site_toplevel_consts_3) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&site_toplevel_consts_4) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&site_toplevel_consts_5) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&site_toplevel_consts_6) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&site_toplevel_consts_7) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&site_toplevel_consts_8) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&site_toplevel_consts_9) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&site_toplevel_consts_10) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&site_toplevel_consts_11_consts_3) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&site_toplevel_consts_11) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&site_toplevel_consts_12) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&site_toplevel_consts_13) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&site_toplevel_consts_14) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&site_toplevel_consts_15) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&site_toplevel_consts_16) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&site_toplevel_consts_17) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&site_toplevel_consts_18) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&site_toplevel_consts_19) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&site_toplevel_consts_20) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&site_toplevel_consts_21_consts_1_consts_9) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&site_toplevel_consts_21_consts_1) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&site_toplevel_consts_21) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&site_toplevel_consts_22_consts_4) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&site_toplevel_consts_22) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&site_toplevel_consts_23) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&site_toplevel_consts_24) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&site_toplevel_consts_25) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&site_toplevel_consts_26_consts_7) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&site_toplevel_consts_26) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&site_toplevel) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&stat_toplevel_consts_11) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&stat_toplevel_consts_12) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&stat_toplevel_consts_20) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&stat_toplevel_consts_21) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&stat_toplevel_consts_22) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&stat_toplevel_consts_23) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&stat_toplevel_consts_24) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&stat_toplevel_consts_25) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&stat_toplevel_consts_26) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&stat_toplevel_consts_27) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&stat_toplevel_consts_28) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&stat_toplevel_consts_29) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&stat_toplevel_consts_58) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&stat_toplevel) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib_util_toplevel_consts_15) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib_util_toplevel_consts_16) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib_util_toplevel_consts_17) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib_util_toplevel_consts_18) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib_util_toplevel_consts_19_consts_2) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib_util_toplevel_consts_19_consts_3) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib_util_toplevel_consts_19_consts_4) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib_util_toplevel_consts_19_consts_5) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib_util_toplevel_consts_19) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib_util_toplevel_consts_21_consts_2) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib_util_toplevel_consts_21_consts_3) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib_util_toplevel_consts_21) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib_util_toplevel_consts_23_consts_2) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib_util_toplevel_consts_23_consts_3_consts_1) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib_util_toplevel_consts_23_consts_3) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib_util_toplevel_consts_23_consts_4) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib_util_toplevel_consts_23_consts_5) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib_util_toplevel_consts_23_consts_6) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib_util_toplevel_consts_23) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib_util_toplevel) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib_machinery_toplevel_consts_13) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&importlib_machinery_toplevel) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&runpy_toplevel_consts_5_consts_2) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&runpy_toplevel_consts_5_consts_3) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&runpy_toplevel_consts_5_consts_4) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&runpy_toplevel_consts_5) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&runpy_toplevel_consts_7_consts_1) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&runpy_toplevel_consts_7_consts_2) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&runpy_toplevel_consts_7_consts_3) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&runpy_toplevel_consts_7) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&runpy_toplevel_consts_9) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&runpy_toplevel_consts_10) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&runpy_toplevel_consts_11) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&runpy_toplevel_consts_12) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&runpy_toplevel_consts_14) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&runpy_toplevel_consts_15) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&runpy_toplevel_consts_16) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&runpy_toplevel_consts_17) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&runpy_toplevel_consts_18) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&runpy_toplevel) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&__hello___toplevel_consts_1) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&__hello___toplevel_consts_3) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&__hello___toplevel_consts_5) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&__hello___toplevel_consts_7) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&__hello___toplevel) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&__phello___toplevel_consts_1) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&__phello___toplevel) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&__phello___ham_toplevel) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&__phello___ham_eggs_toplevel) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&__phello___spam_toplevel_consts_1) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&__phello___spam_toplevel) < 0) {
+ return -1;
+ }
+ if (_PyStaticCode_Init((PyCodeObject *)&frozen_only_toplevel) < 0) {
+ return -1;
+ }
+ return 0;
+}
+
+uint32_t _Py_next_func_version = 769;
+
diff --git a/contrib/tools/python3/Python/dtoa.c b/contrib/tools/python3/Python/dtoa.c
new file mode 100644
index 00000000000..c5e343b82f7
--- /dev/null
+++ b/contrib/tools/python3/Python/dtoa.c
@@ -0,0 +1,2820 @@
+/****************************************************************
+ *
+ * The author of this software is David M. Gay.
+ *
+ * Copyright (c) 1991, 2000, 2001 by Lucent Technologies.
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose without fee is hereby granted, provided that this entire notice
+ * is included in all copies of any software which is or includes a copy
+ * or modification of this software and in all copies of the supporting
+ * documentation for such software.
+ *
+ * THIS SOFTWARE IS BEING PROVIDED "AS IS", WITHOUT ANY EXPRESS OR IMPLIED
+ * WARRANTY. IN PARTICULAR, NEITHER THE AUTHOR NOR LUCENT MAKES ANY
+ * REPRESENTATION OR WARRANTY OF ANY KIND CONCERNING THE MERCHANTABILITY
+ * OF THIS SOFTWARE OR ITS FITNESS FOR ANY PARTICULAR PURPOSE.
+ *
+ ***************************************************************/
+
+/****************************************************************
+ * This is dtoa.c by David M. Gay, downloaded from
+ * http://www.netlib.org/fp/dtoa.c on April 15, 2009 and modified for
+ * inclusion into the Python core by Mark E. T. Dickinson and Eric V. Smith.
+ *
+ * Please remember to check http://www.netlib.org/fp regularly (and especially
+ * before any Python release) for bugfixes and updates.
+ *
+ * The major modifications from Gay's original code are as follows:
+ *
+ * 0. The original code has been specialized to Python's needs by removing
+ * many of the #ifdef'd sections. In particular, code to support VAX and
+ * IBM floating-point formats, hex NaNs, hex floats, locale-aware
+ * treatment of the decimal point, and setting of the inexact flag have
+ * been removed.
+ *
+ * 1. We use PyMem_Malloc and PyMem_Free in place of malloc and free.
+ *
+ * 2. The public functions strtod, dtoa and freedtoa all now have
+ * a _Py_dg_ prefix.
+ *
+ * 3. Instead of assuming that PyMem_Malloc always succeeds, we thread
+ * PyMem_Malloc failures through the code. The functions
+ *
+ * Balloc, multadd, s2b, i2b, mult, pow5mult, lshift, diff, d2b
+ *
+ * of return type *Bigint all return NULL to indicate a malloc failure.
+ * Similarly, rv_alloc and nrv_alloc (return type char *) return NULL on
+ * failure. bigcomp now has return type int (it used to be void) and
+ * returns -1 on failure and 0 otherwise. _Py_dg_dtoa returns NULL
+ * on failure. _Py_dg_strtod indicates failure due to malloc failure
+ * by returning -1.0, setting errno=ENOMEM and *se to s00.
+ *
+ * 4. The static variable dtoa_result has been removed. Callers of
+ * _Py_dg_dtoa are expected to call _Py_dg_freedtoa to free
+ * the memory allocated by _Py_dg_dtoa.
+ *
+ * 5. The code has been reformatted to better fit with Python's
+ * C style guide (PEP 7).
+ *
+ * 6. A bug in the memory allocation has been fixed: to avoid FREEing memory
+ * that hasn't been MALLOC'ed, private_mem should only be used when k <=
+ * Kmax.
+ *
+ * 7. _Py_dg_strtod has been modified so that it doesn't accept strings with
+ * leading whitespace.
+ *
+ * 8. A corner case where _Py_dg_dtoa didn't strip trailing zeros has been
+ * fixed. (bugs.python.org/issue40780)
+ *
+ ***************************************************************/
+
+/* Please send bug reports for the original dtoa.c code to David M. Gay (dmg
+ * at acm dot org, with " at " changed at "@" and " dot " changed to ".").
+ * Please report bugs for this modified version using the Python issue tracker
+ * (http://bugs.python.org). */
+
+/* On a machine with IEEE extended-precision registers, it is
+ * necessary to specify double-precision (53-bit) rounding precision
+ * before invoking strtod or dtoa. If the machine uses (the equivalent
+ * of) Intel 80x87 arithmetic, the call
+ * _control87(PC_53, MCW_PC);
+ * does this with many compilers. Whether this or another call is
+ * appropriate depends on the compiler; for this to work, it may be
+ * necessary to #include "float.h" or another system-dependent header
+ * file.
+ */
+
+/* strtod for IEEE-, VAX-, and IBM-arithmetic machines.
+ *
+ * This strtod returns a nearest machine number to the input decimal
+ * string (or sets errno to ERANGE). With IEEE arithmetic, ties are
+ * broken by the IEEE round-even rule. Otherwise ties are broken by
+ * biased rounding (add half and chop).
+ *
+ * Inspired loosely by William D. Clinger's paper "How to Read Floating
+ * Point Numbers Accurately" [Proc. ACM SIGPLAN '90, pp. 92-101].
+ *
+ * Modifications:
+ *
+ * 1. We only require IEEE, IBM, or VAX double-precision
+ * arithmetic (not IEEE double-extended).
+ * 2. We get by with floating-point arithmetic in a case that
+ * Clinger missed -- when we're computing d * 10^n
+ * for a small integer d and the integer n is not too
+ * much larger than 22 (the maximum integer k for which
+ * we can represent 10^k exactly), we may be able to
+ * compute (d*10^k) * 10^(e-k) with just one roundoff.
+ * 3. Rather than a bit-at-a-time adjustment of the binary
+ * result in the hard case, we use floating-point
+ * arithmetic to determine the adjustment to within
+ * one bit; only in really hard cases do we need to
+ * compute a second residual.
+ * 4. Because of 3., we don't need a large table of powers of 10
+ * for ten-to-e (just some small tables, e.g. of 10^k
+ * for 0 <= k <= 22).
+ */
+
+/* Linking of Python's #defines to Gay's #defines starts here. */
+
+#include "Python.h"
+#include "pycore_dtoa.h" // _PY_SHORT_FLOAT_REPR
+#include "pycore_pystate.h" // _PyInterpreterState_GET()
+#include <stdlib.h> // exit()
+
+/* if _PY_SHORT_FLOAT_REPR == 0, then don't even try to compile
+ the following code */
+#if _PY_SHORT_FLOAT_REPR == 1
+
+#include "float.h"
+
+#define MALLOC PyMem_Malloc
+#define FREE PyMem_Free
+
+/* This code should also work for ARM mixed-endian format on little-endian
+ machines, where doubles have byte order 45670123 (in increasing address
+ order, 0 being the least significant byte). */
+#ifdef DOUBLE_IS_LITTLE_ENDIAN_IEEE754
+# define IEEE_8087
+#endif
+#if defined(DOUBLE_IS_BIG_ENDIAN_IEEE754) || \
+ defined(DOUBLE_IS_ARM_MIXED_ENDIAN_IEEE754)
+# define IEEE_MC68k
+#endif
+#if defined(IEEE_8087) + defined(IEEE_MC68k) != 1
+#error "Exactly one of IEEE_8087 or IEEE_MC68k should be defined."
+#endif
+
+/* The code below assumes that the endianness of integers matches the
+ endianness of the two 32-bit words of a double. Check this. */
+#if defined(WORDS_BIGENDIAN) && (defined(DOUBLE_IS_LITTLE_ENDIAN_IEEE754) || \
+ defined(DOUBLE_IS_ARM_MIXED_ENDIAN_IEEE754))
+#error "doubles and ints have incompatible endianness"
+#endif
+
+#if !defined(WORDS_BIGENDIAN) && defined(DOUBLE_IS_BIG_ENDIAN_IEEE754)
+#error "doubles and ints have incompatible endianness"
+#endif
+
+
+// ULong is defined in pycore_dtoa.h.
+typedef int32_t Long;
+typedef uint64_t ULLong;
+
+#undef DEBUG
+#ifdef Py_DEBUG
+#define DEBUG
+#endif
+
+/* End Python #define linking */
+
+#ifdef DEBUG
+#define Bug(x) {fprintf(stderr, "%s\n", x); exit(1);}
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef union { double d; ULong L[2]; } U;
+
+#ifdef IEEE_8087
+#define word0(x) (x)->L[1]
+#define word1(x) (x)->L[0]
+#else
+#define word0(x) (x)->L[0]
+#define word1(x) (x)->L[1]
+#endif
+#define dval(x) (x)->d
+
+#ifndef STRTOD_DIGLIM
+#define STRTOD_DIGLIM 40
+#endif
+
+/* maximum permitted exponent value for strtod; exponents larger than
+ MAX_ABS_EXP in absolute value get truncated to +-MAX_ABS_EXP. MAX_ABS_EXP
+ should fit into an int. */
+#ifndef MAX_ABS_EXP
+#define MAX_ABS_EXP 1100000000U
+#endif
+/* Bound on length of pieces of input strings in _Py_dg_strtod; specifically,
+ this is used to bound the total number of digits ignoring leading zeros and
+ the number of digits that follow the decimal point. Ideally, MAX_DIGITS
+ should satisfy MAX_DIGITS + 400 < MAX_ABS_EXP; that ensures that the
+ exponent clipping in _Py_dg_strtod can't affect the value of the output. */
+#ifndef MAX_DIGITS
+#define MAX_DIGITS 1000000000U
+#endif
+
+/* Guard against trying to use the above values on unusual platforms with ints
+ * of width less than 32 bits. */
+#if MAX_ABS_EXP > INT_MAX
+#error "MAX_ABS_EXP should fit in an int"
+#endif
+#if MAX_DIGITS > INT_MAX
+#error "MAX_DIGITS should fit in an int"
+#endif
+
+/* The following definition of Storeinc is appropriate for MIPS processors.
+ * An alternative that might be better on some machines is
+ * #define Storeinc(a,b,c) (*a++ = b << 16 | c & 0xffff)
+ */
+#if defined(IEEE_8087)
+#define Storeinc(a,b,c) (((unsigned short *)a)[1] = (unsigned short)b, \
+ ((unsigned short *)a)[0] = (unsigned short)c, a++)
+#else
+#define Storeinc(a,b,c) (((unsigned short *)a)[0] = (unsigned short)b, \
+ ((unsigned short *)a)[1] = (unsigned short)c, a++)
+#endif
+
+/* #define P DBL_MANT_DIG */
+/* Ten_pmax = floor(P*log(2)/log(5)) */
+/* Bletch = (highest power of 2 < DBL_MAX_10_EXP) / 16 */
+/* Quick_max = floor((P-1)*log(FLT_RADIX)/log(10) - 1) */
+/* Int_max = floor(P*log(FLT_RADIX)/log(10) - 1) */
+
+#define Exp_shift 20
+#define Exp_shift1 20
+#define Exp_msk1 0x100000
+#define Exp_msk11 0x100000
+#define Exp_mask 0x7ff00000
+#define P 53
+#define Nbits 53
+#define Bias 1023
+#define Emax 1023
+#define Emin (-1022)
+#define Etiny (-1074) /* smallest denormal is 2**Etiny */
+#define Exp_1 0x3ff00000
+#define Exp_11 0x3ff00000
+#define Ebits 11
+#define Frac_mask 0xfffff
+#define Frac_mask1 0xfffff
+#define Ten_pmax 22
+#define Bletch 0x10
+#define Bndry_mask 0xfffff
+#define Bndry_mask1 0xfffff
+#define Sign_bit 0x80000000
+#define Log2P 1
+#define Tiny0 0
+#define Tiny1 1
+#define Quick_max 14
+#define Int_max 14
+
+#ifndef Flt_Rounds
+#ifdef FLT_ROUNDS
+#define Flt_Rounds FLT_ROUNDS
+#else
+#define Flt_Rounds 1
+#endif
+#endif /*Flt_Rounds*/
+
+#define Rounding Flt_Rounds
+
+#define Big0 (Frac_mask1 | Exp_msk1*(DBL_MAX_EXP+Bias-1))
+#define Big1 0xffffffff
+
+/* Bits of the representation of positive infinity. */
+
+#define POSINF_WORD0 0x7ff00000
+#define POSINF_WORD1 0
+
+/* struct BCinfo is used to pass information from _Py_dg_strtod to bigcomp */
+
+typedef struct BCinfo BCinfo;
+struct
+BCinfo {
+ int e0, nd, nd0, scale;
+};
+
+#define FFFFFFFF 0xffffffffUL
+
+/* struct Bigint is used to represent arbitrary-precision integers. These
+ integers are stored in sign-magnitude format, with the magnitude stored as
+ an array of base 2**32 digits. Bigints are always normalized: if x is a
+ Bigint then x->wds >= 1, and either x->wds == 1 or x[wds-1] is nonzero.
+
+ The Bigint fields are as follows:
+
+ - next is a header used by Balloc and Bfree to keep track of lists
+ of freed Bigints; it's also used for the linked list of
+ powers of 5 of the form 5**2**i used by pow5mult.
+ - k indicates which pool this Bigint was allocated from
+ - maxwds is the maximum number of words space was allocated for
+ (usually maxwds == 2**k)
+ - sign is 1 for negative Bigints, 0 for positive. The sign is unused
+ (ignored on inputs, set to 0 on outputs) in almost all operations
+ involving Bigints: a notable exception is the diff function, which
+ ignores signs on inputs but sets the sign of the output correctly.
+ - wds is the actual number of significant words
+ - x contains the vector of words (digits) for this Bigint, from least
+ significant (x[0]) to most significant (x[wds-1]).
+*/
+
+// struct Bigint is defined in pycore_dtoa.h.
+typedef struct Bigint Bigint;
+
+#ifndef Py_USING_MEMORY_DEBUGGER
+
+/* Memory management: memory is allocated from, and returned to, Kmax+1 pools
+ of memory, where pool k (0 <= k <= Kmax) is for Bigints b with b->maxwds ==
+ 1 << k. These pools are maintained as linked lists, with freelist[k]
+ pointing to the head of the list for pool k.
+
+ On allocation, if there's no free slot in the appropriate pool, MALLOC is
+ called to get more memory. This memory is not returned to the system until
+ Python quits. There's also a private memory pool that's allocated from
+ in preference to using MALLOC.
+
+ For Bigints with more than (1 << Kmax) digits (which implies at least 1233
+ decimal digits), memory is directly allocated using MALLOC, and freed using
+ FREE.
+
+ XXX: it would be easy to bypass this memory-management system and
+ translate each call to Balloc into a call to PyMem_Malloc, and each
+ Bfree to PyMem_Free. Investigate whether this has any significant
+ performance on impact. */
+
+#define freelist interp->dtoa.freelist
+#define private_mem interp->dtoa.preallocated
+#define pmem_next interp->dtoa.preallocated_next
+
+/* Allocate space for a Bigint with up to 1<<k digits */
+
+static Bigint *
+Balloc(int k)
+{
+ int x;
+ Bigint *rv;
+ unsigned int len;
+ PyInterpreterState *interp = _PyInterpreterState_GET();
+
+ if (k <= Bigint_Kmax && (rv = freelist[k]))
+ freelist[k] = rv->next;
+ else {
+ x = 1 << k;
+ len = (sizeof(Bigint) + (x-1)*sizeof(ULong) + sizeof(double) - 1)
+ /sizeof(double);
+ if (k <= Bigint_Kmax &&
+ pmem_next - private_mem + len <= (Py_ssize_t)Bigint_PREALLOC_SIZE
+ ) {
+ rv = (Bigint*)pmem_next;
+ pmem_next += len;
+ }
+ else {
+ rv = (Bigint*)MALLOC(len*sizeof(double));
+ if (rv == NULL)
+ return NULL;
+ }
+ rv->k = k;
+ rv->maxwds = x;
+ }
+ rv->sign = rv->wds = 0;
+ return rv;
+}
+
+/* Free a Bigint allocated with Balloc */
+
+static void
+Bfree(Bigint *v)
+{
+ if (v) {
+ if (v->k > Bigint_Kmax)
+ FREE((void*)v);
+ else {
+ PyInterpreterState *interp = _PyInterpreterState_GET();
+ v->next = freelist[v->k];
+ freelist[v->k] = v;
+ }
+ }
+}
+
+#undef pmem_next
+#undef private_mem
+#undef freelist
+
+#else
+
+/* Alternative versions of Balloc and Bfree that use PyMem_Malloc and
+ PyMem_Free directly in place of the custom memory allocation scheme above.
+ These are provided for the benefit of memory debugging tools like
+ Valgrind. */
+
+/* Allocate space for a Bigint with up to 1<<k digits */
+
+static Bigint *
+Balloc(int k)
+{
+ int x;
+ Bigint *rv;
+ unsigned int len;
+
+ x = 1 << k;
+ len = (sizeof(Bigint) + (x-1)*sizeof(ULong) + sizeof(double) - 1)
+ /sizeof(double);
+
+ rv = (Bigint*)MALLOC(len*sizeof(double));
+ if (rv == NULL)
+ return NULL;
+
+ rv->k = k;
+ rv->maxwds = x;
+ rv->sign = rv->wds = 0;
+ return rv;
+}
+
+/* Free a Bigint allocated with Balloc */
+
+static void
+Bfree(Bigint *v)
+{
+ if (v) {
+ FREE((void*)v);
+ }
+}
+
+#endif /* Py_USING_MEMORY_DEBUGGER */
+
+#define Bcopy(x,y) memcpy((char *)&x->sign, (char *)&y->sign, \
+ y->wds*sizeof(Long) + 2*sizeof(int))
+
+/* Multiply a Bigint b by m and add a. Either modifies b in place and returns
+ a pointer to the modified b, or Bfrees b and returns a pointer to a copy.
+ On failure, return NULL. In this case, b will have been already freed. */
+
+static Bigint *
+multadd(Bigint *b, int m, int a) /* multiply by m and add a */
+{
+ int i, wds;
+ ULong *x;
+ ULLong carry, y;
+ Bigint *b1;
+
+ wds = b->wds;
+ x = b->x;
+ i = 0;
+ carry = a;
+ do {
+ y = *x * (ULLong)m + carry;
+ carry = y >> 32;
+ *x++ = (ULong)(y & FFFFFFFF);
+ }
+ while(++i < wds);
+ if (carry) {
+ if (wds >= b->maxwds) {
+ b1 = Balloc(b->k+1);
+ if (b1 == NULL){
+ Bfree(b);
+ return NULL;
+ }
+ Bcopy(b1, b);
+ Bfree(b);
+ b = b1;
+ }
+ b->x[wds++] = (ULong)carry;
+ b->wds = wds;
+ }
+ return b;
+}
+
+/* convert a string s containing nd decimal digits (possibly containing a
+ decimal separator at position nd0, which is ignored) to a Bigint. This
+ function carries on where the parsing code in _Py_dg_strtod leaves off: on
+ entry, y9 contains the result of converting the first 9 digits. Returns
+ NULL on failure. */
+
+static Bigint *
+s2b(const char *s, int nd0, int nd, ULong y9)
+{
+ Bigint *b;
+ int i, k;
+ Long x, y;
+
+ x = (nd + 8) / 9;
+ for(k = 0, y = 1; x > y; y <<= 1, k++) ;
+ b = Balloc(k);
+ if (b == NULL)
+ return NULL;
+ b->x[0] = y9;
+ b->wds = 1;
+
+ if (nd <= 9)
+ return b;
+
+ s += 9;
+ for (i = 9; i < nd0; i++) {
+ b = multadd(b, 10, *s++ - '0');
+ if (b == NULL)
+ return NULL;
+ }
+ s++;
+ for(; i < nd; i++) {
+ b = multadd(b, 10, *s++ - '0');
+ if (b == NULL)
+ return NULL;
+ }
+ return b;
+}
+
+/* count leading 0 bits in the 32-bit integer x. */
+
+static int
+hi0bits(ULong x)
+{
+ int k = 0;
+
+ if (!(x & 0xffff0000)) {
+ k = 16;
+ x <<= 16;
+ }
+ if (!(x & 0xff000000)) {
+ k += 8;
+ x <<= 8;
+ }
+ if (!(x & 0xf0000000)) {
+ k += 4;
+ x <<= 4;
+ }
+ if (!(x & 0xc0000000)) {
+ k += 2;
+ x <<= 2;
+ }
+ if (!(x & 0x80000000)) {
+ k++;
+ if (!(x & 0x40000000))
+ return 32;
+ }
+ return k;
+}
+
+/* count trailing 0 bits in the 32-bit integer y, and shift y right by that
+ number of bits. */
+
+static int
+lo0bits(ULong *y)
+{
+ int k;
+ ULong x = *y;
+
+ if (x & 7) {
+ if (x & 1)
+ return 0;
+ if (x & 2) {
+ *y = x >> 1;
+ return 1;
+ }
+ *y = x >> 2;
+ return 2;
+ }
+ k = 0;
+ if (!(x & 0xffff)) {
+ k = 16;
+ x >>= 16;
+ }
+ if (!(x & 0xff)) {
+ k += 8;
+ x >>= 8;
+ }
+ if (!(x & 0xf)) {
+ k += 4;
+ x >>= 4;
+ }
+ if (!(x & 0x3)) {
+ k += 2;
+ x >>= 2;
+ }
+ if (!(x & 1)) {
+ k++;
+ x >>= 1;
+ if (!x)
+ return 32;
+ }
+ *y = x;
+ return k;
+}
+
+/* convert a small nonnegative integer to a Bigint */
+
+static Bigint *
+i2b(int i)
+{
+ Bigint *b;
+
+ b = Balloc(1);
+ if (b == NULL)
+ return NULL;
+ b->x[0] = i;
+ b->wds = 1;
+ return b;
+}
+
+/* multiply two Bigints. Returns a new Bigint, or NULL on failure. Ignores
+ the signs of a and b. */
+
+static Bigint *
+mult(Bigint *a, Bigint *b)
+{
+ Bigint *c;
+ int k, wa, wb, wc;
+ ULong *x, *xa, *xae, *xb, *xbe, *xc, *xc0;
+ ULong y;
+ ULLong carry, z;
+
+ if ((!a->x[0] && a->wds == 1) || (!b->x[0] && b->wds == 1)) {
+ c = Balloc(0);
+ if (c == NULL)
+ return NULL;
+ c->wds = 1;
+ c->x[0] = 0;
+ return c;
+ }
+
+ if (a->wds < b->wds) {
+ c = a;
+ a = b;
+ b = c;
+ }
+ k = a->k;
+ wa = a->wds;
+ wb = b->wds;
+ wc = wa + wb;
+ if (wc > a->maxwds)
+ k++;
+ c = Balloc(k);
+ if (c == NULL)
+ return NULL;
+ for(x = c->x, xa = x + wc; x < xa; x++)
+ *x = 0;
+ xa = a->x;
+ xae = xa + wa;
+ xb = b->x;
+ xbe = xb + wb;
+ xc0 = c->x;
+ for(; xb < xbe; xc0++) {
+ if ((y = *xb++)) {
+ x = xa;
+ xc = xc0;
+ carry = 0;
+ do {
+ z = *x++ * (ULLong)y + *xc + carry;
+ carry = z >> 32;
+ *xc++ = (ULong)(z & FFFFFFFF);
+ }
+ while(x < xae);
+ *xc = (ULong)carry;
+ }
+ }
+ for(xc0 = c->x, xc = xc0 + wc; wc > 0 && !*--xc; --wc) ;
+ c->wds = wc;
+ return c;
+}
+
+#ifndef Py_USING_MEMORY_DEBUGGER
+
+/* multiply the Bigint b by 5**k. Returns a pointer to the result, or NULL on
+ failure; if the returned pointer is distinct from b then the original
+ Bigint b will have been Bfree'd. Ignores the sign of b. */
+
+static Bigint *
+pow5mult(Bigint *b, int k)
+{
+ Bigint *b1, *p5, *p51;
+ int i;
+ static const int p05[3] = { 5, 25, 125 };
+
+ if ((i = k & 3)) {
+ b = multadd(b, p05[i-1], 0);
+ if (b == NULL)
+ return NULL;
+ }
+
+ if (!(k >>= 2))
+ return b;
+ PyInterpreterState *interp = _PyInterpreterState_GET();
+ p5 = interp->dtoa.p5s;
+ if (!p5) {
+ /* first time */
+ p5 = i2b(625);
+ if (p5 == NULL) {
+ Bfree(b);
+ return NULL;
+ }
+ interp->dtoa.p5s = p5;
+ p5->next = 0;
+ }
+ for(;;) {
+ if (k & 1) {
+ b1 = mult(b, p5);
+ Bfree(b);
+ b = b1;
+ if (b == NULL)
+ return NULL;
+ }
+ if (!(k >>= 1))
+ break;
+ p51 = p5->next;
+ if (!p51) {
+ p51 = mult(p5,p5);
+ if (p51 == NULL) {
+ Bfree(b);
+ return NULL;
+ }
+ p51->next = 0;
+ p5->next = p51;
+ }
+ p5 = p51;
+ }
+ return b;
+}
+
+#else
+
+/* Version of pow5mult that doesn't cache powers of 5. Provided for
+ the benefit of memory debugging tools like Valgrind. */
+
+static Bigint *
+pow5mult(Bigint *b, int k)
+{
+ Bigint *b1, *p5, *p51;
+ int i;
+ static const int p05[3] = { 5, 25, 125 };
+
+ if ((i = k & 3)) {
+ b = multadd(b, p05[i-1], 0);
+ if (b == NULL)
+ return NULL;
+ }
+
+ if (!(k >>= 2))
+ return b;
+ p5 = i2b(625);
+ if (p5 == NULL) {
+ Bfree(b);
+ return NULL;
+ }
+
+ for(;;) {
+ if (k & 1) {
+ b1 = mult(b, p5);
+ Bfree(b);
+ b = b1;
+ if (b == NULL) {
+ Bfree(p5);
+ return NULL;
+ }
+ }
+ if (!(k >>= 1))
+ break;
+ p51 = mult(p5, p5);
+ Bfree(p5);
+ p5 = p51;
+ if (p5 == NULL) {
+ Bfree(b);
+ return NULL;
+ }
+ }
+ Bfree(p5);
+ return b;
+}
+
+#endif /* Py_USING_MEMORY_DEBUGGER */
+
+/* shift a Bigint b left by k bits. Return a pointer to the shifted result,
+ or NULL on failure. If the returned pointer is distinct from b then the
+ original b will have been Bfree'd. Ignores the sign of b. */
+
+static Bigint *
+lshift(Bigint *b, int k)
+{
+ int i, k1, n, n1;
+ Bigint *b1;
+ ULong *x, *x1, *xe, z;
+
+ if (!k || (!b->x[0] && b->wds == 1))
+ return b;
+
+ n = k >> 5;
+ k1 = b->k;
+ n1 = n + b->wds + 1;
+ for(i = b->maxwds; n1 > i; i <<= 1)
+ k1++;
+ b1 = Balloc(k1);
+ if (b1 == NULL) {
+ Bfree(b);
+ return NULL;
+ }
+ x1 = b1->x;
+ for(i = 0; i < n; i++)
+ *x1++ = 0;
+ x = b->x;
+ xe = x + b->wds;
+ if (k &= 0x1f) {
+ k1 = 32 - k;
+ z = 0;
+ do {
+ *x1++ = *x << k | z;
+ z = *x++ >> k1;
+ }
+ while(x < xe);
+ if ((*x1 = z))
+ ++n1;
+ }
+ else do
+ *x1++ = *x++;
+ while(x < xe);
+ b1->wds = n1 - 1;
+ Bfree(b);
+ return b1;
+}
+
+/* Do a three-way compare of a and b, returning -1 if a < b, 0 if a == b and
+ 1 if a > b. Ignores signs of a and b. */
+
+static int
+cmp(Bigint *a, Bigint *b)
+{
+ ULong *xa, *xa0, *xb, *xb0;
+ int i, j;
+
+ i = a->wds;
+ j = b->wds;
+#ifdef DEBUG
+ if (i > 1 && !a->x[i-1])
+ Bug("cmp called with a->x[a->wds-1] == 0");
+ if (j > 1 && !b->x[j-1])
+ Bug("cmp called with b->x[b->wds-1] == 0");
+#endif
+ if (i -= j)
+ return i;
+ xa0 = a->x;
+ xa = xa0 + j;
+ xb0 = b->x;
+ xb = xb0 + j;
+ for(;;) {
+ if (*--xa != *--xb)
+ return *xa < *xb ? -1 : 1;
+ if (xa <= xa0)
+ break;
+ }
+ return 0;
+}
+
+/* Take the difference of Bigints a and b, returning a new Bigint. Returns
+ NULL on failure. The signs of a and b are ignored, but the sign of the
+ result is set appropriately. */
+
+static Bigint *
+diff(Bigint *a, Bigint *b)
+{
+ Bigint *c;
+ int i, wa, wb;
+ ULong *xa, *xae, *xb, *xbe, *xc;
+ ULLong borrow, y;
+
+ i = cmp(a,b);
+ if (!i) {
+ c = Balloc(0);
+ if (c == NULL)
+ return NULL;
+ c->wds = 1;
+ c->x[0] = 0;
+ return c;
+ }
+ if (i < 0) {
+ c = a;
+ a = b;
+ b = c;
+ i = 1;
+ }
+ else
+ i = 0;
+ c = Balloc(a->k);
+ if (c == NULL)
+ return NULL;
+ c->sign = i;
+ wa = a->wds;
+ xa = a->x;
+ xae = xa + wa;
+ wb = b->wds;
+ xb = b->x;
+ xbe = xb + wb;
+ xc = c->x;
+ borrow = 0;
+ do {
+ y = (ULLong)*xa++ - *xb++ - borrow;
+ borrow = y >> 32 & (ULong)1;
+ *xc++ = (ULong)(y & FFFFFFFF);
+ }
+ while(xb < xbe);
+ while(xa < xae) {
+ y = *xa++ - borrow;
+ borrow = y >> 32 & (ULong)1;
+ *xc++ = (ULong)(y & FFFFFFFF);
+ }
+ while(!*--xc)
+ wa--;
+ c->wds = wa;
+ return c;
+}
+
+/* Given a positive normal double x, return the difference between x and the
+ next double up. Doesn't give correct results for subnormals. */
+
+static double
+ulp(U *x)
+{
+ Long L;
+ U u;
+
+ L = (word0(x) & Exp_mask) - (P-1)*Exp_msk1;
+ word0(&u) = L;
+ word1(&u) = 0;
+ return dval(&u);
+}
+
+/* Convert a Bigint to a double plus an exponent */
+
+static double
+b2d(Bigint *a, int *e)
+{
+ ULong *xa, *xa0, w, y, z;
+ int k;
+ U d;
+
+ xa0 = a->x;
+ xa = xa0 + a->wds;
+ y = *--xa;
+#ifdef DEBUG
+ if (!y) Bug("zero y in b2d");
+#endif
+ k = hi0bits(y);
+ *e = 32 - k;
+ if (k < Ebits) {
+ word0(&d) = Exp_1 | y >> (Ebits - k);
+ w = xa > xa0 ? *--xa : 0;
+ word1(&d) = y << ((32-Ebits) + k) | w >> (Ebits - k);
+ goto ret_d;
+ }
+ z = xa > xa0 ? *--xa : 0;
+ if (k -= Ebits) {
+ word0(&d) = Exp_1 | y << k | z >> (32 - k);
+ y = xa > xa0 ? *--xa : 0;
+ word1(&d) = z << k | y >> (32 - k);
+ }
+ else {
+ word0(&d) = Exp_1 | y;
+ word1(&d) = z;
+ }
+ ret_d:
+ return dval(&d);
+}
+
+/* Convert a scaled double to a Bigint plus an exponent. Similar to d2b,
+ except that it accepts the scale parameter used in _Py_dg_strtod (which
+ should be either 0 or 2*P), and the normalization for the return value is
+ different (see below). On input, d should be finite and nonnegative, and d
+ / 2**scale should be exactly representable as an IEEE 754 double.
+
+ Returns a Bigint b and an integer e such that
+
+ dval(d) / 2**scale = b * 2**e.
+
+ Unlike d2b, b is not necessarily odd: b and e are normalized so
+ that either 2**(P-1) <= b < 2**P and e >= Etiny, or b < 2**P
+ and e == Etiny. This applies equally to an input of 0.0: in that
+ case the return values are b = 0 and e = Etiny.
+
+ The above normalization ensures that for all possible inputs d,
+ 2**e gives ulp(d/2**scale).
+
+ Returns NULL on failure.
+*/
+
+static Bigint *
+sd2b(U *d, int scale, int *e)
+{
+ Bigint *b;
+
+ b = Balloc(1);
+ if (b == NULL)
+ return NULL;
+
+ /* First construct b and e assuming that scale == 0. */
+ b->wds = 2;
+ b->x[0] = word1(d);
+ b->x[1] = word0(d) & Frac_mask;
+ *e = Etiny - 1 + (int)((word0(d) & Exp_mask) >> Exp_shift);
+ if (*e < Etiny)
+ *e = Etiny;
+ else
+ b->x[1] |= Exp_msk1;
+
+ /* Now adjust for scale, provided that b != 0. */
+ if (scale && (b->x[0] || b->x[1])) {
+ *e -= scale;
+ if (*e < Etiny) {
+ scale = Etiny - *e;
+ *e = Etiny;
+ /* We can't shift more than P-1 bits without shifting out a 1. */
+ assert(0 < scale && scale <= P - 1);
+ if (scale >= 32) {
+ /* The bits shifted out should all be zero. */
+ assert(b->x[0] == 0);
+ b->x[0] = b->x[1];
+ b->x[1] = 0;
+ scale -= 32;
+ }
+ if (scale) {
+ /* The bits shifted out should all be zero. */
+ assert(b->x[0] << (32 - scale) == 0);
+ b->x[0] = (b->x[0] >> scale) | (b->x[1] << (32 - scale));
+ b->x[1] >>= scale;
+ }
+ }
+ }
+ /* Ensure b is normalized. */
+ if (!b->x[1])
+ b->wds = 1;
+
+ return b;
+}
+
+/* Convert a double to a Bigint plus an exponent. Return NULL on failure.
+
+ Given a finite nonzero double d, return an odd Bigint b and exponent *e
+ such that fabs(d) = b * 2**e. On return, *bbits gives the number of
+ significant bits of b; that is, 2**(*bbits-1) <= b < 2**(*bbits).
+
+ If d is zero, then b == 0, *e == -1010, *bbits = 0.
+ */
+
+static Bigint *
+d2b(U *d, int *e, int *bits)
+{
+ Bigint *b;
+ int de, k;
+ ULong *x, y, z;
+ int i;
+
+ b = Balloc(1);
+ if (b == NULL)
+ return NULL;
+ x = b->x;
+
+ z = word0(d) & Frac_mask;
+ word0(d) &= 0x7fffffff; /* clear sign bit, which we ignore */
+ if ((de = (int)(word0(d) >> Exp_shift)))
+ z |= Exp_msk1;
+ if ((y = word1(d))) {
+ if ((k = lo0bits(&y))) {
+ x[0] = y | z << (32 - k);
+ z >>= k;
+ }
+ else
+ x[0] = y;
+ i =
+ b->wds = (x[1] = z) ? 2 : 1;
+ }
+ else {
+ k = lo0bits(&z);
+ x[0] = z;
+ i =
+ b->wds = 1;
+ k += 32;
+ }
+ if (de) {
+ *e = de - Bias - (P-1) + k;
+ *bits = P - k;
+ }
+ else {
+ *e = de - Bias - (P-1) + 1 + k;
+ *bits = 32*i - hi0bits(x[i-1]);
+ }
+ return b;
+}
+
+/* Compute the ratio of two Bigints, as a double. The result may have an
+ error of up to 2.5 ulps. */
+
+static double
+ratio(Bigint *a, Bigint *b)
+{
+ U da, db;
+ int k, ka, kb;
+
+ dval(&da) = b2d(a, &ka);
+ dval(&db) = b2d(b, &kb);
+ k = ka - kb + 32*(a->wds - b->wds);
+ if (k > 0)
+ word0(&da) += k*Exp_msk1;
+ else {
+ k = -k;
+ word0(&db) += k*Exp_msk1;
+ }
+ return dval(&da) / dval(&db);
+}
+
+static const double
+tens[] = {
+ 1e0, 1e1, 1e2, 1e3, 1e4, 1e5, 1e6, 1e7, 1e8, 1e9,
+ 1e10, 1e11, 1e12, 1e13, 1e14, 1e15, 1e16, 1e17, 1e18, 1e19,
+ 1e20, 1e21, 1e22
+};
+
+static const double
+bigtens[] = { 1e16, 1e32, 1e64, 1e128, 1e256 };
+static const double tinytens[] = { 1e-16, 1e-32, 1e-64, 1e-128,
+ 9007199254740992.*9007199254740992.e-256
+ /* = 2^106 * 1e-256 */
+};
+/* The factor of 2^53 in tinytens[4] helps us avoid setting the underflow */
+/* flag unnecessarily. It leads to a song and dance at the end of strtod. */
+#define Scale_Bit 0x10
+#define n_bigtens 5
+
+#define ULbits 32
+#define kshift 5
+#define kmask 31
+
+
+static int
+dshift(Bigint *b, int p2)
+{
+ int rv = hi0bits(b->x[b->wds-1]) - 4;
+ if (p2 > 0)
+ rv -= p2;
+ return rv & kmask;
+}
+
+/* special case of Bigint division. The quotient is always in the range 0 <=
+ quotient < 10, and on entry the divisor S is normalized so that its top 4
+ bits (28--31) are zero and bit 27 is set. */
+
+static int
+quorem(Bigint *b, Bigint *S)
+{
+ int n;
+ ULong *bx, *bxe, q, *sx, *sxe;
+ ULLong borrow, carry, y, ys;
+
+ n = S->wds;
+#ifdef DEBUG
+ /*debug*/ if (b->wds > n)
+ /*debug*/ Bug("oversize b in quorem");
+#endif
+ if (b->wds < n)
+ return 0;
+ sx = S->x;
+ sxe = sx + --n;
+ bx = b->x;
+ bxe = bx + n;
+ q = *bxe / (*sxe + 1); /* ensure q <= true quotient */
+#ifdef DEBUG
+ /*debug*/ if (q > 9)
+ /*debug*/ Bug("oversized quotient in quorem");
+#endif
+ if (q) {
+ borrow = 0;
+ carry = 0;
+ do {
+ ys = *sx++ * (ULLong)q + carry;
+ carry = ys >> 32;
+ y = *bx - (ys & FFFFFFFF) - borrow;
+ borrow = y >> 32 & (ULong)1;
+ *bx++ = (ULong)(y & FFFFFFFF);
+ }
+ while(sx <= sxe);
+ if (!*bxe) {
+ bx = b->x;
+ while(--bxe > bx && !*bxe)
+ --n;
+ b->wds = n;
+ }
+ }
+ if (cmp(b, S) >= 0) {
+ q++;
+ borrow = 0;
+ carry = 0;
+ bx = b->x;
+ sx = S->x;
+ do {
+ ys = *sx++ + carry;
+ carry = ys >> 32;
+ y = *bx - (ys & FFFFFFFF) - borrow;
+ borrow = y >> 32 & (ULong)1;
+ *bx++ = (ULong)(y & FFFFFFFF);
+ }
+ while(sx <= sxe);
+ bx = b->x;
+ bxe = bx + n;
+ if (!*bxe) {
+ while(--bxe > bx && !*bxe)
+ --n;
+ b->wds = n;
+ }
+ }
+ return q;
+}
+
+/* sulp(x) is a version of ulp(x) that takes bc.scale into account.
+
+ Assuming that x is finite and nonnegative (positive zero is fine
+ here) and x / 2^bc.scale is exactly representable as a double,
+ sulp(x) is equivalent to 2^bc.scale * ulp(x / 2^bc.scale). */
+
+static double
+sulp(U *x, BCinfo *bc)
+{
+ U u;
+
+ if (bc->scale && 2*P + 1 > (int)((word0(x) & Exp_mask) >> Exp_shift)) {
+ /* rv/2^bc->scale is subnormal */
+ word0(&u) = (P+2)*Exp_msk1;
+ word1(&u) = 0;
+ return u.d;
+ }
+ else {
+ assert(word0(x) || word1(x)); /* x != 0.0 */
+ return ulp(x);
+ }
+}
+
+/* The bigcomp function handles some hard cases for strtod, for inputs
+ with more than STRTOD_DIGLIM digits. It's called once an initial
+ estimate for the double corresponding to the input string has
+ already been obtained by the code in _Py_dg_strtod.
+
+ The bigcomp function is only called after _Py_dg_strtod has found a
+ double value rv such that either rv or rv + 1ulp represents the
+ correctly rounded value corresponding to the original string. It
+ determines which of these two values is the correct one by
+ computing the decimal digits of rv + 0.5ulp and comparing them with
+ the corresponding digits of s0.
+
+ In the following, write dv for the absolute value of the number represented
+ by the input string.
+
+ Inputs:
+
+ s0 points to the first significant digit of the input string.
+
+ rv is a (possibly scaled) estimate for the closest double value to the
+ value represented by the original input to _Py_dg_strtod. If
+ bc->scale is nonzero, then rv/2^(bc->scale) is the approximation to
+ the input value.
+
+ bc is a struct containing information gathered during the parsing and
+ estimation steps of _Py_dg_strtod. Description of fields follows:
+
+ bc->e0 gives the exponent of the input value, such that dv = (integer
+ given by the bd->nd digits of s0) * 10**e0
+
+ bc->nd gives the total number of significant digits of s0. It will
+ be at least 1.
+
+ bc->nd0 gives the number of significant digits of s0 before the
+ decimal separator. If there's no decimal separator, bc->nd0 ==
+ bc->nd.
+
+ bc->scale is the value used to scale rv to avoid doing arithmetic with
+ subnormal values. It's either 0 or 2*P (=106).
+
+ Outputs:
+
+ On successful exit, rv/2^(bc->scale) is the closest double to dv.
+
+ Returns 0 on success, -1 on failure (e.g., due to a failed malloc call). */
+
+static int
+bigcomp(U *rv, const char *s0, BCinfo *bc)
+{
+ Bigint *b, *d;
+ int b2, d2, dd, i, nd, nd0, odd, p2, p5;
+
+ nd = bc->nd;
+ nd0 = bc->nd0;
+ p5 = nd + bc->e0;
+ b = sd2b(rv, bc->scale, &p2);
+ if (b == NULL)
+ return -1;
+
+ /* record whether the lsb of rv/2^(bc->scale) is odd: in the exact halfway
+ case, this is used for round to even. */
+ odd = b->x[0] & 1;
+
+ /* left shift b by 1 bit and or a 1 into the least significant bit;
+ this gives us b * 2**p2 = rv/2^(bc->scale) + 0.5 ulp. */
+ b = lshift(b, 1);
+ if (b == NULL)
+ return -1;
+ b->x[0] |= 1;
+ p2--;
+
+ p2 -= p5;
+ d = i2b(1);
+ if (d == NULL) {
+ Bfree(b);
+ return -1;
+ }
+ /* Arrange for convenient computation of quotients:
+ * shift left if necessary so divisor has 4 leading 0 bits.
+ */
+ if (p5 > 0) {
+ d = pow5mult(d, p5);
+ if (d == NULL) {
+ Bfree(b);
+ return -1;
+ }
+ }
+ else if (p5 < 0) {
+ b = pow5mult(b, -p5);
+ if (b == NULL) {
+ Bfree(d);
+ return -1;
+ }
+ }
+ if (p2 > 0) {
+ b2 = p2;
+ d2 = 0;
+ }
+ else {
+ b2 = 0;
+ d2 = -p2;
+ }
+ i = dshift(d, d2);
+ if ((b2 += i) > 0) {
+ b = lshift(b, b2);
+ if (b == NULL) {
+ Bfree(d);
+ return -1;
+ }
+ }
+ if ((d2 += i) > 0) {
+ d = lshift(d, d2);
+ if (d == NULL) {
+ Bfree(b);
+ return -1;
+ }
+ }
+
+ /* Compare s0 with b/d: set dd to -1, 0, or 1 according as s0 < b/d, s0 ==
+ * b/d, or s0 > b/d. Here the digits of s0 are thought of as representing
+ * a number in the range [0.1, 1). */
+ if (cmp(b, d) >= 0)
+ /* b/d >= 1 */
+ dd = -1;
+ else {
+ i = 0;
+ for(;;) {
+ b = multadd(b, 10, 0);
+ if (b == NULL) {
+ Bfree(d);
+ return -1;
+ }
+ dd = s0[i < nd0 ? i : i+1] - '0' - quorem(b, d);
+ i++;
+
+ if (dd)
+ break;
+ if (!b->x[0] && b->wds == 1) {
+ /* b/d == 0 */
+ dd = i < nd;
+ break;
+ }
+ if (!(i < nd)) {
+ /* b/d != 0, but digits of s0 exhausted */
+ dd = -1;
+ break;
+ }
+ }
+ }
+ Bfree(b);
+ Bfree(d);
+ if (dd > 0 || (dd == 0 && odd))
+ dval(rv) += sulp(rv, bc);
+ return 0;
+}
+
+
+double
+_Py_dg_strtod(const char *s00, char **se)
+{
+ int bb2, bb5, bbe, bd2, bd5, bs2, c, dsign, e, e1, error;
+ int esign, i, j, k, lz, nd, nd0, odd, sign;
+ const char *s, *s0, *s1;
+ double aadj, aadj1;
+ U aadj2, adj, rv, rv0;
+ ULong y, z, abs_exp;
+ Long L;
+ BCinfo bc;
+ Bigint *bb = NULL, *bd = NULL, *bd0 = NULL, *bs = NULL, *delta = NULL;
+ size_t ndigits, fraclen;
+ double result;
+
+ dval(&rv) = 0.;
+
+ /* Start parsing. */
+ c = *(s = s00);
+
+ /* Parse optional sign, if present. */
+ sign = 0;
+ switch (c) {
+ case '-':
+ sign = 1;
+ /* fall through */
+ case '+':
+ c = *++s;
+ }
+
+ /* Skip leading zeros: lz is true iff there were leading zeros. */
+ s1 = s;
+ while (c == '0')
+ c = *++s;
+ lz = s != s1;
+
+ /* Point s0 at the first nonzero digit (if any). fraclen will be the
+ number of digits between the decimal point and the end of the
+ digit string. ndigits will be the total number of digits ignoring
+ leading zeros. */
+ s0 = s1 = s;
+ while ('0' <= c && c <= '9')
+ c = *++s;
+ ndigits = s - s1;
+ fraclen = 0;
+
+ /* Parse decimal point and following digits. */
+ if (c == '.') {
+ c = *++s;
+ if (!ndigits) {
+ s1 = s;
+ while (c == '0')
+ c = *++s;
+ lz = lz || s != s1;
+ fraclen += (s - s1);
+ s0 = s;
+ }
+ s1 = s;
+ while ('0' <= c && c <= '9')
+ c = *++s;
+ ndigits += s - s1;
+ fraclen += s - s1;
+ }
+
+ /* Now lz is true if and only if there were leading zero digits, and
+ ndigits gives the total number of digits ignoring leading zeros. A
+ valid input must have at least one digit. */
+ if (!ndigits && !lz) {
+ if (se)
+ *se = (char *)s00;
+ goto parse_error;
+ }
+
+ /* Range check ndigits and fraclen to make sure that they, and values
+ computed with them, can safely fit in an int. */
+ if (ndigits > MAX_DIGITS || fraclen > MAX_DIGITS) {
+ if (se)
+ *se = (char *)s00;
+ goto parse_error;
+ }
+ nd = (int)ndigits;
+ nd0 = (int)ndigits - (int)fraclen;
+
+ /* Parse exponent. */
+ e = 0;
+ if (c == 'e' || c == 'E') {
+ s00 = s;
+ c = *++s;
+
+ /* Exponent sign. */
+ esign = 0;
+ switch (c) {
+ case '-':
+ esign = 1;
+ /* fall through */
+ case '+':
+ c = *++s;
+ }
+
+ /* Skip zeros. lz is true iff there are leading zeros. */
+ s1 = s;
+ while (c == '0')
+ c = *++s;
+ lz = s != s1;
+
+ /* Get absolute value of the exponent. */
+ s1 = s;
+ abs_exp = 0;
+ while ('0' <= c && c <= '9') {
+ abs_exp = 10*abs_exp + (c - '0');
+ c = *++s;
+ }
+
+ /* abs_exp will be correct modulo 2**32. But 10**9 < 2**32, so if
+ there are at most 9 significant exponent digits then overflow is
+ impossible. */
+ if (s - s1 > 9 || abs_exp > MAX_ABS_EXP)
+ e = (int)MAX_ABS_EXP;
+ else
+ e = (int)abs_exp;
+ if (esign)
+ e = -e;
+
+ /* A valid exponent must have at least one digit. */
+ if (s == s1 && !lz)
+ s = s00;
+ }
+
+ /* Adjust exponent to take into account position of the point. */
+ e -= nd - nd0;
+ if (nd0 <= 0)
+ nd0 = nd;
+
+ /* Finished parsing. Set se to indicate how far we parsed */
+ if (se)
+ *se = (char *)s;
+
+ /* If all digits were zero, exit with return value +-0.0. Otherwise,
+ strip trailing zeros: scan back until we hit a nonzero digit. */
+ if (!nd)
+ goto ret;
+ for (i = nd; i > 0; ) {
+ --i;
+ if (s0[i < nd0 ? i : i+1] != '0') {
+ ++i;
+ break;
+ }
+ }
+ e += nd - i;
+ nd = i;
+ if (nd0 > nd)
+ nd0 = nd;
+
+ /* Summary of parsing results. After parsing, and dealing with zero
+ * inputs, we have values s0, nd0, nd, e, sign, where:
+ *
+ * - s0 points to the first significant digit of the input string
+ *
+ * - nd is the total number of significant digits (here, and
+ * below, 'significant digits' means the set of digits of the
+ * significand of the input that remain after ignoring leading
+ * and trailing zeros).
+ *
+ * - nd0 indicates the position of the decimal point, if present; it
+ * satisfies 1 <= nd0 <= nd. The nd significant digits are in
+ * s0[0:nd0] and s0[nd0+1:nd+1] using the usual Python half-open slice
+ * notation. (If nd0 < nd, then s0[nd0] contains a '.' character; if
+ * nd0 == nd, then s0[nd0] could be any non-digit character.)
+ *
+ * - e is the adjusted exponent: the absolute value of the number
+ * represented by the original input string is n * 10**e, where
+ * n is the integer represented by the concatenation of
+ * s0[0:nd0] and s0[nd0+1:nd+1]
+ *
+ * - sign gives the sign of the input: 1 for negative, 0 for positive
+ *
+ * - the first and last significant digits are nonzero
+ */
+
+ /* put first DBL_DIG+1 digits into integer y and z.
+ *
+ * - y contains the value represented by the first min(9, nd)
+ * significant digits
+ *
+ * - if nd > 9, z contains the value represented by significant digits
+ * with indices in [9, min(16, nd)). So y * 10**(min(16, nd) - 9) + z
+ * gives the value represented by the first min(16, nd) sig. digits.
+ */
+
+ bc.e0 = e1 = e;
+ y = z = 0;
+ for (i = 0; i < nd; i++) {
+ if (i < 9)
+ y = 10*y + s0[i < nd0 ? i : i+1] - '0';
+ else if (i < DBL_DIG+1)
+ z = 10*z + s0[i < nd0 ? i : i+1] - '0';
+ else
+ break;
+ }
+
+ k = nd < DBL_DIG + 1 ? nd : DBL_DIG + 1;
+ dval(&rv) = y;
+ if (k > 9) {
+ dval(&rv) = tens[k - 9] * dval(&rv) + z;
+ }
+ if (nd <= DBL_DIG
+ && Flt_Rounds == 1
+ ) {
+ if (!e)
+ goto ret;
+ if (e > 0) {
+ if (e <= Ten_pmax) {
+ dval(&rv) *= tens[e];
+ goto ret;
+ }
+ i = DBL_DIG - nd;
+ if (e <= Ten_pmax + i) {
+ /* A fancier test would sometimes let us do
+ * this for larger i values.
+ */
+ e -= i;
+ dval(&rv) *= tens[i];
+ dval(&rv) *= tens[e];
+ goto ret;
+ }
+ }
+ else if (e >= -Ten_pmax) {
+ dval(&rv) /= tens[-e];
+ goto ret;
+ }
+ }
+ e1 += nd - k;
+
+ bc.scale = 0;
+
+ /* Get starting approximation = rv * 10**e1 */
+
+ if (e1 > 0) {
+ if ((i = e1 & 15))
+ dval(&rv) *= tens[i];
+ if (e1 &= ~15) {
+ if (e1 > DBL_MAX_10_EXP)
+ goto ovfl;
+ e1 >>= 4;
+ for(j = 0; e1 > 1; j++, e1 >>= 1)
+ if (e1 & 1)
+ dval(&rv) *= bigtens[j];
+ /* The last multiplication could overflow. */
+ word0(&rv) -= P*Exp_msk1;
+ dval(&rv) *= bigtens[j];
+ if ((z = word0(&rv) & Exp_mask)
+ > Exp_msk1*(DBL_MAX_EXP+Bias-P))
+ goto ovfl;
+ if (z > Exp_msk1*(DBL_MAX_EXP+Bias-1-P)) {
+ /* set to largest number */
+ /* (Can't trust DBL_MAX) */
+ word0(&rv) = Big0;
+ word1(&rv) = Big1;
+ }
+ else
+ word0(&rv) += P*Exp_msk1;
+ }
+ }
+ else if (e1 < 0) {
+ /* The input decimal value lies in [10**e1, 10**(e1+16)).
+
+ If e1 <= -512, underflow immediately.
+ If e1 <= -256, set bc.scale to 2*P.
+
+ So for input value < 1e-256, bc.scale is always set;
+ for input value >= 1e-240, bc.scale is never set.
+ For input values in [1e-256, 1e-240), bc.scale may or may
+ not be set. */
+
+ e1 = -e1;
+ if ((i = e1 & 15))
+ dval(&rv) /= tens[i];
+ if (e1 >>= 4) {
+ if (e1 >= 1 << n_bigtens)
+ goto undfl;
+ if (e1 & Scale_Bit)
+ bc.scale = 2*P;
+ for(j = 0; e1 > 0; j++, e1 >>= 1)
+ if (e1 & 1)
+ dval(&rv) *= tinytens[j];
+ if (bc.scale && (j = 2*P + 1 - ((word0(&rv) & Exp_mask)
+ >> Exp_shift)) > 0) {
+ /* scaled rv is denormal; clear j low bits */
+ if (j >= 32) {
+ word1(&rv) = 0;
+ if (j >= 53)
+ word0(&rv) = (P+2)*Exp_msk1;
+ else
+ word0(&rv) &= 0xffffffff << (j-32);
+ }
+ else
+ word1(&rv) &= 0xffffffff << j;
+ }
+ if (!dval(&rv))
+ goto undfl;
+ }
+ }
+
+ /* Now the hard part -- adjusting rv to the correct value.*/
+
+ /* Put digits into bd: true value = bd * 10^e */
+
+ bc.nd = nd;
+ bc.nd0 = nd0; /* Only needed if nd > STRTOD_DIGLIM, but done here */
+ /* to silence an erroneous warning about bc.nd0 */
+ /* possibly not being initialized. */
+ if (nd > STRTOD_DIGLIM) {
+ /* ASSERT(STRTOD_DIGLIM >= 18); 18 == one more than the */
+ /* minimum number of decimal digits to distinguish double values */
+ /* in IEEE arithmetic. */
+
+ /* Truncate input to 18 significant digits, then discard any trailing
+ zeros on the result by updating nd, nd0, e and y suitably. (There's
+ no need to update z; it's not reused beyond this point.) */
+ for (i = 18; i > 0; ) {
+ /* scan back until we hit a nonzero digit. significant digit 'i'
+ is s0[i] if i < nd0, s0[i+1] if i >= nd0. */
+ --i;
+ if (s0[i < nd0 ? i : i+1] != '0') {
+ ++i;
+ break;
+ }
+ }
+ e += nd - i;
+ nd = i;
+ if (nd0 > nd)
+ nd0 = nd;
+ if (nd < 9) { /* must recompute y */
+ y = 0;
+ for(i = 0; i < nd0; ++i)
+ y = 10*y + s0[i] - '0';
+ for(; i < nd; ++i)
+ y = 10*y + s0[i+1] - '0';
+ }
+ }
+ bd0 = s2b(s0, nd0, nd, y);
+ if (bd0 == NULL)
+ goto failed_malloc;
+
+ /* Notation for the comments below. Write:
+
+ - dv for the absolute value of the number represented by the original
+ decimal input string.
+
+ - if we've truncated dv, write tdv for the truncated value.
+ Otherwise, set tdv == dv.
+
+ - srv for the quantity rv/2^bc.scale; so srv is the current binary
+ approximation to tdv (and dv). It should be exactly representable
+ in an IEEE 754 double.
+ */
+
+ for(;;) {
+
+ /* This is the main correction loop for _Py_dg_strtod.
+
+ We've got a decimal value tdv, and a floating-point approximation
+ srv=rv/2^bc.scale to tdv. The aim is to determine whether srv is
+ close enough (i.e., within 0.5 ulps) to tdv, and to compute a new
+ approximation if not.
+
+ To determine whether srv is close enough to tdv, compute integers
+ bd, bb and bs proportional to tdv, srv and 0.5 ulp(srv)
+ respectively, and then use integer arithmetic to determine whether
+ |tdv - srv| is less than, equal to, or greater than 0.5 ulp(srv).
+ */
+
+ bd = Balloc(bd0->k);
+ if (bd == NULL) {
+ goto failed_malloc;
+ }
+ Bcopy(bd, bd0);
+ bb = sd2b(&rv, bc.scale, &bbe); /* srv = bb * 2^bbe */
+ if (bb == NULL) {
+ goto failed_malloc;
+ }
+ /* Record whether lsb of bb is odd, in case we need this
+ for the round-to-even step later. */
+ odd = bb->x[0] & 1;
+
+ /* tdv = bd * 10**e; srv = bb * 2**bbe */
+ bs = i2b(1);
+ if (bs == NULL) {
+ goto failed_malloc;
+ }
+
+ if (e >= 0) {
+ bb2 = bb5 = 0;
+ bd2 = bd5 = e;
+ }
+ else {
+ bb2 = bb5 = -e;
+ bd2 = bd5 = 0;
+ }
+ if (bbe >= 0)
+ bb2 += bbe;
+ else
+ bd2 -= bbe;
+ bs2 = bb2;
+ bb2++;
+ bd2++;
+
+ /* At this stage bd5 - bb5 == e == bd2 - bb2 + bbe, bb2 - bs2 == 1,
+ and bs == 1, so:
+
+ tdv == bd * 10**e = bd * 2**(bbe - bb2 + bd2) * 5**(bd5 - bb5)
+ srv == bb * 2**bbe = bb * 2**(bbe - bb2 + bb2)
+ 0.5 ulp(srv) == 2**(bbe-1) = bs * 2**(bbe - bb2 + bs2)
+
+ It follows that:
+
+ M * tdv = bd * 2**bd2 * 5**bd5
+ M * srv = bb * 2**bb2 * 5**bb5
+ M * 0.5 ulp(srv) = bs * 2**bs2 * 5**bb5
+
+ for some constant M. (Actually, M == 2**(bb2 - bbe) * 5**bb5, but
+ this fact is not needed below.)
+ */
+
+ /* Remove factor of 2**i, where i = min(bb2, bd2, bs2). */
+ i = bb2 < bd2 ? bb2 : bd2;
+ if (i > bs2)
+ i = bs2;
+ if (i > 0) {
+ bb2 -= i;
+ bd2 -= i;
+ bs2 -= i;
+ }
+
+ /* Scale bb, bd, bs by the appropriate powers of 2 and 5. */
+ if (bb5 > 0) {
+ bs = pow5mult(bs, bb5);
+ if (bs == NULL) {
+ goto failed_malloc;
+ }
+ Bigint *bb1 = mult(bs, bb);
+ Bfree(bb);
+ bb = bb1;
+ if (bb == NULL) {
+ goto failed_malloc;
+ }
+ }
+ if (bb2 > 0) {
+ bb = lshift(bb, bb2);
+ if (bb == NULL) {
+ goto failed_malloc;
+ }
+ }
+ if (bd5 > 0) {
+ bd = pow5mult(bd, bd5);
+ if (bd == NULL) {
+ goto failed_malloc;
+ }
+ }
+ if (bd2 > 0) {
+ bd = lshift(bd, bd2);
+ if (bd == NULL) {
+ goto failed_malloc;
+ }
+ }
+ if (bs2 > 0) {
+ bs = lshift(bs, bs2);
+ if (bs == NULL) {
+ goto failed_malloc;
+ }
+ }
+
+ /* Now bd, bb and bs are scaled versions of tdv, srv and 0.5 ulp(srv),
+ respectively. Compute the difference |tdv - srv|, and compare
+ with 0.5 ulp(srv). */
+
+ delta = diff(bb, bd);
+ if (delta == NULL) {
+ goto failed_malloc;
+ }
+ dsign = delta->sign;
+ delta->sign = 0;
+ i = cmp(delta, bs);
+ if (bc.nd > nd && i <= 0) {
+ if (dsign)
+ break; /* Must use bigcomp(). */
+
+ /* Here rv overestimates the truncated decimal value by at most
+ 0.5 ulp(rv). Hence rv either overestimates the true decimal
+ value by <= 0.5 ulp(rv), or underestimates it by some small
+ amount (< 0.1 ulp(rv)); either way, rv is within 0.5 ulps of
+ the true decimal value, so it's possible to exit.
+
+ Exception: if scaled rv is a normal exact power of 2, but not
+ DBL_MIN, then rv - 0.5 ulp(rv) takes us all the way down to the
+ next double, so the correctly rounded result is either rv - 0.5
+ ulp(rv) or rv; in this case, use bigcomp to distinguish. */
+
+ if (!word1(&rv) && !(word0(&rv) & Bndry_mask)) {
+ /* rv can't be 0, since it's an overestimate for some
+ nonzero value. So rv is a normal power of 2. */
+ j = (int)(word0(&rv) & Exp_mask) >> Exp_shift;
+ /* rv / 2^bc.scale = 2^(j - 1023 - bc.scale); use bigcomp if
+ rv / 2^bc.scale >= 2^-1021. */
+ if (j - bc.scale >= 2) {
+ dval(&rv) -= 0.5 * sulp(&rv, &bc);
+ break; /* Use bigcomp. */
+ }
+ }
+
+ {
+ bc.nd = nd;
+ i = -1; /* Discarded digits make delta smaller. */
+ }
+ }
+
+ if (i < 0) {
+ /* Error is less than half an ulp -- check for
+ * special case of mantissa a power of two.
+ */
+ if (dsign || word1(&rv) || word0(&rv) & Bndry_mask
+ || (word0(&rv) & Exp_mask) <= (2*P+1)*Exp_msk1
+ ) {
+ break;
+ }
+ if (!delta->x[0] && delta->wds <= 1) {
+ /* exact result */
+ break;
+ }
+ delta = lshift(delta,Log2P);
+ if (delta == NULL) {
+ goto failed_malloc;
+ }
+ if (cmp(delta, bs) > 0)
+ goto drop_down;
+ break;
+ }
+ if (i == 0) {
+ /* exactly half-way between */
+ if (dsign) {
+ if ((word0(&rv) & Bndry_mask1) == Bndry_mask1
+ && word1(&rv) == (
+ (bc.scale &&
+ (y = word0(&rv) & Exp_mask) <= 2*P*Exp_msk1) ?
+ (0xffffffff & (0xffffffff << (2*P+1-(y>>Exp_shift)))) :
+ 0xffffffff)) {
+ /*boundary case -- increment exponent*/
+ word0(&rv) = (word0(&rv) & Exp_mask)
+ + Exp_msk1
+ ;
+ word1(&rv) = 0;
+ /* dsign = 0; */
+ break;
+ }
+ }
+ else if (!(word0(&rv) & Bndry_mask) && !word1(&rv)) {
+ drop_down:
+ /* boundary case -- decrement exponent */
+ if (bc.scale) {
+ L = word0(&rv) & Exp_mask;
+ if (L <= (2*P+1)*Exp_msk1) {
+ if (L > (P+2)*Exp_msk1)
+ /* round even ==> */
+ /* accept rv */
+ break;
+ /* rv = smallest denormal */
+ if (bc.nd > nd)
+ break;
+ goto undfl;
+ }
+ }
+ L = (word0(&rv) & Exp_mask) - Exp_msk1;
+ word0(&rv) = L | Bndry_mask1;
+ word1(&rv) = 0xffffffff;
+ break;
+ }
+ if (!odd)
+ break;
+ if (dsign)
+ dval(&rv) += sulp(&rv, &bc);
+ else {
+ dval(&rv) -= sulp(&rv, &bc);
+ if (!dval(&rv)) {
+ if (bc.nd >nd)
+ break;
+ goto undfl;
+ }
+ }
+ /* dsign = 1 - dsign; */
+ break;
+ }
+ if ((aadj = ratio(delta, bs)) <= 2.) {
+ if (dsign)
+ aadj = aadj1 = 1.;
+ else if (word1(&rv) || word0(&rv) & Bndry_mask) {
+ if (word1(&rv) == Tiny1 && !word0(&rv)) {
+ if (bc.nd >nd)
+ break;
+ goto undfl;
+ }
+ aadj = 1.;
+ aadj1 = -1.;
+ }
+ else {
+ /* special case -- power of FLT_RADIX to be */
+ /* rounded down... */
+
+ if (aadj < 2./FLT_RADIX)
+ aadj = 1./FLT_RADIX;
+ else
+ aadj *= 0.5;
+ aadj1 = -aadj;
+ }
+ }
+ else {
+ aadj *= 0.5;
+ aadj1 = dsign ? aadj : -aadj;
+ if (Flt_Rounds == 0)
+ aadj1 += 0.5;
+ }
+ y = word0(&rv) & Exp_mask;
+
+ /* Check for overflow */
+
+ if (y == Exp_msk1*(DBL_MAX_EXP+Bias-1)) {
+ dval(&rv0) = dval(&rv);
+ word0(&rv) -= P*Exp_msk1;
+ adj.d = aadj1 * ulp(&rv);
+ dval(&rv) += adj.d;
+ if ((word0(&rv) & Exp_mask) >=
+ Exp_msk1*(DBL_MAX_EXP+Bias-P)) {
+ if (word0(&rv0) == Big0 && word1(&rv0) == Big1) {
+ goto ovfl;
+ }
+ word0(&rv) = Big0;
+ word1(&rv) = Big1;
+ goto cont;
+ }
+ else
+ word0(&rv) += P*Exp_msk1;
+ }
+ else {
+ if (bc.scale && y <= 2*P*Exp_msk1) {
+ if (aadj <= 0x7fffffff) {
+ if ((z = (ULong)aadj) <= 0)
+ z = 1;
+ aadj = z;
+ aadj1 = dsign ? aadj : -aadj;
+ }
+ dval(&aadj2) = aadj1;
+ word0(&aadj2) += (2*P+1)*Exp_msk1 - y;
+ aadj1 = dval(&aadj2);
+ }
+ adj.d = aadj1 * ulp(&rv);
+ dval(&rv) += adj.d;
+ }
+ z = word0(&rv) & Exp_mask;
+ if (bc.nd == nd) {
+ if (!bc.scale)
+ if (y == z) {
+ /* Can we stop now? */
+ L = (Long)aadj;
+ aadj -= L;
+ /* The tolerances below are conservative. */
+ if (dsign || word1(&rv) || word0(&rv) & Bndry_mask) {
+ if (aadj < .4999999 || aadj > .5000001)
+ break;
+ }
+ else if (aadj < .4999999/FLT_RADIX)
+ break;
+ }
+ }
+ cont:
+ Bfree(bb); bb = NULL;
+ Bfree(bd); bd = NULL;
+ Bfree(bs); bs = NULL;
+ Bfree(delta); delta = NULL;
+ }
+ if (bc.nd > nd) {
+ error = bigcomp(&rv, s0, &bc);
+ if (error)
+ goto failed_malloc;
+ }
+
+ if (bc.scale) {
+ word0(&rv0) = Exp_1 - 2*P*Exp_msk1;
+ word1(&rv0) = 0;
+ dval(&rv) *= dval(&rv0);
+ }
+
+ ret:
+ result = sign ? -dval(&rv) : dval(&rv);
+ goto done;
+
+ parse_error:
+ result = 0.0;
+ goto done;
+
+ failed_malloc:
+ errno = ENOMEM;
+ result = -1.0;
+ goto done;
+
+ undfl:
+ result = sign ? -0.0 : 0.0;
+ goto done;
+
+ ovfl:
+ errno = ERANGE;
+ /* Can't trust HUGE_VAL */
+ word0(&rv) = Exp_mask;
+ word1(&rv) = 0;
+ result = sign ? -dval(&rv) : dval(&rv);
+ goto done;
+
+ done:
+ Bfree(bb);
+ Bfree(bd);
+ Bfree(bs);
+ Bfree(bd0);
+ Bfree(delta);
+ return result;
+
+}
+
+static char *
+rv_alloc(int i)
+{
+ int j, k, *r;
+
+ j = sizeof(ULong);
+ for(k = 0;
+ sizeof(Bigint) - sizeof(ULong) - sizeof(int) + j <= (unsigned)i;
+ j <<= 1)
+ k++;
+ r = (int*)Balloc(k);
+ if (r == NULL)
+ return NULL;
+ *r = k;
+ return (char *)(r+1);
+}
+
+static char *
+nrv_alloc(const char *s, char **rve, int n)
+{
+ char *rv, *t;
+
+ rv = rv_alloc(n);
+ if (rv == NULL)
+ return NULL;
+ t = rv;
+ while((*t = *s++)) t++;
+ if (rve)
+ *rve = t;
+ return rv;
+}
+
+/* freedtoa(s) must be used to free values s returned by dtoa
+ * when MULTIPLE_THREADS is #defined. It should be used in all cases,
+ * but for consistency with earlier versions of dtoa, it is optional
+ * when MULTIPLE_THREADS is not defined.
+ */
+
+void
+_Py_dg_freedtoa(char *s)
+{
+ Bigint *b = (Bigint *)((int *)s - 1);
+ b->maxwds = 1 << (b->k = *(int*)b);
+ Bfree(b);
+}
+
+/* dtoa for IEEE arithmetic (dmg): convert double to ASCII string.
+ *
+ * Inspired by "How to Print Floating-Point Numbers Accurately" by
+ * Guy L. Steele, Jr. and Jon L. White [Proc. ACM SIGPLAN '90, pp. 112-126].
+ *
+ * Modifications:
+ * 1. Rather than iterating, we use a simple numeric overestimate
+ * to determine k = floor(log10(d)). We scale relevant
+ * quantities using O(log2(k)) rather than O(k) multiplications.
+ * 2. For some modes > 2 (corresponding to ecvt and fcvt), we don't
+ * try to generate digits strictly left to right. Instead, we
+ * compute with fewer bits and propagate the carry if necessary
+ * when rounding the final digit up. This is often faster.
+ * 3. Under the assumption that input will be rounded nearest,
+ * mode 0 renders 1e23 as 1e23 rather than 9.999999999999999e22.
+ * That is, we allow equality in stopping tests when the
+ * round-nearest rule will give the same floating-point value
+ * as would satisfaction of the stopping test with strict
+ * inequality.
+ * 4. We remove common factors of powers of 2 from relevant
+ * quantities.
+ * 5. When converting floating-point integers less than 1e16,
+ * we use floating-point arithmetic rather than resorting
+ * to multiple-precision integers.
+ * 6. When asked to produce fewer than 15 digits, we first try
+ * to get by with floating-point arithmetic; we resort to
+ * multiple-precision integer arithmetic only if we cannot
+ * guarantee that the floating-point calculation has given
+ * the correctly rounded result. For k requested digits and
+ * "uniformly" distributed input, the probability is
+ * something like 10^(k-15) that we must resort to the Long
+ * calculation.
+ */
+
+/* Additional notes (METD): (1) returns NULL on failure. (2) to avoid memory
+ leakage, a successful call to _Py_dg_dtoa should always be matched by a
+ call to _Py_dg_freedtoa. */
+
+char *
+_Py_dg_dtoa(double dd, int mode, int ndigits,
+ int *decpt, int *sign, char **rve)
+{
+ /* Arguments ndigits, decpt, sign are similar to those
+ of ecvt and fcvt; trailing zeros are suppressed from
+ the returned string. If not null, *rve is set to point
+ to the end of the return value. If d is +-Infinity or NaN,
+ then *decpt is set to 9999.
+
+ mode:
+ 0 ==> shortest string that yields d when read in
+ and rounded to nearest.
+ 1 ==> like 0, but with Steele & White stopping rule;
+ e.g. with IEEE P754 arithmetic , mode 0 gives
+ 1e23 whereas mode 1 gives 9.999999999999999e22.
+ 2 ==> max(1,ndigits) significant digits. This gives a
+ return value similar to that of ecvt, except
+ that trailing zeros are suppressed.
+ 3 ==> through ndigits past the decimal point. This
+ gives a return value similar to that from fcvt,
+ except that trailing zeros are suppressed, and
+ ndigits can be negative.
+ 4,5 ==> similar to 2 and 3, respectively, but (in
+ round-nearest mode) with the tests of mode 0 to
+ possibly return a shorter string that rounds to d.
+ With IEEE arithmetic and compilation with
+ -DHonor_FLT_ROUNDS, modes 4 and 5 behave the same
+ as modes 2 and 3 when FLT_ROUNDS != 1.
+ 6-9 ==> Debugging modes similar to mode - 4: don't try
+ fast floating-point estimate (if applicable).
+
+ Values of mode other than 0-9 are treated as mode 0.
+
+ Sufficient space is allocated to the return value
+ to hold the suppressed trailing zeros.
+ */
+
+ int bbits, b2, b5, be, dig, i, ieps, ilim, ilim0, ilim1,
+ j, j1, k, k0, k_check, leftright, m2, m5, s2, s5,
+ spec_case, try_quick;
+ Long L;
+ int denorm;
+ ULong x;
+ Bigint *b, *b1, *delta, *mlo, *mhi, *S;
+ U d2, eps, u;
+ double ds;
+ char *s, *s0;
+
+ /* set pointers to NULL, to silence gcc compiler warnings and make
+ cleanup easier on error */
+ mlo = mhi = S = 0;
+ s0 = 0;
+
+ u.d = dd;
+ if (word0(&u) & Sign_bit) {
+ /* set sign for everything, including 0's and NaNs */
+ *sign = 1;
+ word0(&u) &= ~Sign_bit; /* clear sign bit */
+ }
+ else
+ *sign = 0;
+
+ /* quick return for Infinities, NaNs and zeros */
+ if ((word0(&u) & Exp_mask) == Exp_mask)
+ {
+ /* Infinity or NaN */
+ *decpt = 9999;
+ if (!word1(&u) && !(word0(&u) & 0xfffff))
+ return nrv_alloc("Infinity", rve, 8);
+ return nrv_alloc("NaN", rve, 3);
+ }
+ if (!dval(&u)) {
+ *decpt = 1;
+ return nrv_alloc("0", rve, 1);
+ }
+
+ /* compute k = floor(log10(d)). The computation may leave k
+ one too large, but should never leave k too small. */
+ b = d2b(&u, &be, &bbits);
+ if (b == NULL)
+ goto failed_malloc;
+ if ((i = (int)(word0(&u) >> Exp_shift1 & (Exp_mask>>Exp_shift1)))) {
+ dval(&d2) = dval(&u);
+ word0(&d2) &= Frac_mask1;
+ word0(&d2) |= Exp_11;
+
+ /* log(x) ~=~ log(1.5) + (x-1.5)/1.5
+ * log10(x) = log(x) / log(10)
+ * ~=~ log(1.5)/log(10) + (x-1.5)/(1.5*log(10))
+ * log10(d) = (i-Bias)*log(2)/log(10) + log10(d2)
+ *
+ * This suggests computing an approximation k to log10(d) by
+ *
+ * k = (i - Bias)*0.301029995663981
+ * + ( (d2-1.5)*0.289529654602168 + 0.176091259055681 );
+ *
+ * We want k to be too large rather than too small.
+ * The error in the first-order Taylor series approximation
+ * is in our favor, so we just round up the constant enough
+ * to compensate for any error in the multiplication of
+ * (i - Bias) by 0.301029995663981; since |i - Bias| <= 1077,
+ * and 1077 * 0.30103 * 2^-52 ~=~ 7.2e-14,
+ * adding 1e-13 to the constant term more than suffices.
+ * Hence we adjust the constant term to 0.1760912590558.
+ * (We could get a more accurate k by invoking log10,
+ * but this is probably not worthwhile.)
+ */
+
+ i -= Bias;
+ denorm = 0;
+ }
+ else {
+ /* d is denormalized */
+
+ i = bbits + be + (Bias + (P-1) - 1);
+ x = i > 32 ? word0(&u) << (64 - i) | word1(&u) >> (i - 32)
+ : word1(&u) << (32 - i);
+ dval(&d2) = x;
+ word0(&d2) -= 31*Exp_msk1; /* adjust exponent */
+ i -= (Bias + (P-1) - 1) + 1;
+ denorm = 1;
+ }
+ ds = (dval(&d2)-1.5)*0.289529654602168 + 0.1760912590558 +
+ i*0.301029995663981;
+ k = (int)ds;
+ if (ds < 0. && ds != k)
+ k--; /* want k = floor(ds) */
+ k_check = 1;
+ if (k >= 0 && k <= Ten_pmax) {
+ if (dval(&u) < tens[k])
+ k--;
+ k_check = 0;
+ }
+ j = bbits - i - 1;
+ if (j >= 0) {
+ b2 = 0;
+ s2 = j;
+ }
+ else {
+ b2 = -j;
+ s2 = 0;
+ }
+ if (k >= 0) {
+ b5 = 0;
+ s5 = k;
+ s2 += k;
+ }
+ else {
+ b2 -= k;
+ b5 = -k;
+ s5 = 0;
+ }
+ if (mode < 0 || mode > 9)
+ mode = 0;
+
+ try_quick = 1;
+
+ if (mode > 5) {
+ mode -= 4;
+ try_quick = 0;
+ }
+ leftright = 1;
+ ilim = ilim1 = -1; /* Values for cases 0 and 1; done here to */
+ /* silence erroneous "gcc -Wall" warning. */
+ switch(mode) {
+ case 0:
+ case 1:
+ i = 18;
+ ndigits = 0;
+ break;
+ case 2:
+ leftright = 0;
+ /* fall through */
+ case 4:
+ if (ndigits <= 0)
+ ndigits = 1;
+ ilim = ilim1 = i = ndigits;
+ break;
+ case 3:
+ leftright = 0;
+ /* fall through */
+ case 5:
+ i = ndigits + k + 1;
+ ilim = i;
+ ilim1 = i - 1;
+ if (i <= 0)
+ i = 1;
+ }
+ s0 = rv_alloc(i);
+ if (s0 == NULL)
+ goto failed_malloc;
+ s = s0;
+
+
+ if (ilim >= 0 && ilim <= Quick_max && try_quick) {
+
+ /* Try to get by with floating-point arithmetic. */
+
+ i = 0;
+ dval(&d2) = dval(&u);
+ k0 = k;
+ ilim0 = ilim;
+ ieps = 2; /* conservative */
+ if (k > 0) {
+ ds = tens[k&0xf];
+ j = k >> 4;
+ if (j & Bletch) {
+ /* prevent overflows */
+ j &= Bletch - 1;
+ dval(&u) /= bigtens[n_bigtens-1];
+ ieps++;
+ }
+ for(; j; j >>= 1, i++)
+ if (j & 1) {
+ ieps++;
+ ds *= bigtens[i];
+ }
+ dval(&u) /= ds;
+ }
+ else if ((j1 = -k)) {
+ dval(&u) *= tens[j1 & 0xf];
+ for(j = j1 >> 4; j; j >>= 1, i++)
+ if (j & 1) {
+ ieps++;
+ dval(&u) *= bigtens[i];
+ }
+ }
+ if (k_check && dval(&u) < 1. && ilim > 0) {
+ if (ilim1 <= 0)
+ goto fast_failed;
+ ilim = ilim1;
+ k--;
+ dval(&u) *= 10.;
+ ieps++;
+ }
+ dval(&eps) = ieps*dval(&u) + 7.;
+ word0(&eps) -= (P-1)*Exp_msk1;
+ if (ilim == 0) {
+ S = mhi = 0;
+ dval(&u) -= 5.;
+ if (dval(&u) > dval(&eps))
+ goto one_digit;
+ if (dval(&u) < -dval(&eps))
+ goto no_digits;
+ goto fast_failed;
+ }
+ if (leftright) {
+ /* Use Steele & White method of only
+ * generating digits needed.
+ */
+ dval(&eps) = 0.5/tens[ilim-1] - dval(&eps);
+ for(i = 0;;) {
+ L = (Long)dval(&u);
+ dval(&u) -= L;
+ *s++ = '0' + (int)L;
+ if (dval(&u) < dval(&eps))
+ goto ret1;
+ if (1. - dval(&u) < dval(&eps))
+ goto bump_up;
+ if (++i >= ilim)
+ break;
+ dval(&eps) *= 10.;
+ dval(&u) *= 10.;
+ }
+ }
+ else {
+ /* Generate ilim digits, then fix them up. */
+ dval(&eps) *= tens[ilim-1];
+ for(i = 1;; i++, dval(&u) *= 10.) {
+ L = (Long)(dval(&u));
+ if (!(dval(&u) -= L))
+ ilim = i;
+ *s++ = '0' + (int)L;
+ if (i == ilim) {
+ if (dval(&u) > 0.5 + dval(&eps))
+ goto bump_up;
+ else if (dval(&u) < 0.5 - dval(&eps)) {
+ while(*--s == '0');
+ s++;
+ goto ret1;
+ }
+ break;
+ }
+ }
+ }
+ fast_failed:
+ s = s0;
+ dval(&u) = dval(&d2);
+ k = k0;
+ ilim = ilim0;
+ }
+
+ /* Do we have a "small" integer? */
+
+ if (be >= 0 && k <= Int_max) {
+ /* Yes. */
+ ds = tens[k];
+ if (ndigits < 0 && ilim <= 0) {
+ S = mhi = 0;
+ if (ilim < 0 || dval(&u) <= 5*ds)
+ goto no_digits;
+ goto one_digit;
+ }
+ for(i = 1;; i++, dval(&u) *= 10.) {
+ L = (Long)(dval(&u) / ds);
+ dval(&u) -= L*ds;
+ *s++ = '0' + (int)L;
+ if (!dval(&u)) {
+ break;
+ }
+ if (i == ilim) {
+ dval(&u) += dval(&u);
+ if (dval(&u) > ds || (dval(&u) == ds && L & 1)) {
+ bump_up:
+ while(*--s == '9')
+ if (s == s0) {
+ k++;
+ *s = '0';
+ break;
+ }
+ ++*s++;
+ }
+ else {
+ /* Strip trailing zeros. This branch was missing from the
+ original dtoa.c, leading to surplus trailing zeros in
+ some cases. See bugs.python.org/issue40780. */
+ while (s > s0 && s[-1] == '0') {
+ --s;
+ }
+ }
+ break;
+ }
+ }
+ goto ret1;
+ }
+
+ m2 = b2;
+ m5 = b5;
+ if (leftright) {
+ i =
+ denorm ? be + (Bias + (P-1) - 1 + 1) :
+ 1 + P - bbits;
+ b2 += i;
+ s2 += i;
+ mhi = i2b(1);
+ if (mhi == NULL)
+ goto failed_malloc;
+ }
+ if (m2 > 0 && s2 > 0) {
+ i = m2 < s2 ? m2 : s2;
+ b2 -= i;
+ m2 -= i;
+ s2 -= i;
+ }
+ if (b5 > 0) {
+ if (leftright) {
+ if (m5 > 0) {
+ mhi = pow5mult(mhi, m5);
+ if (mhi == NULL)
+ goto failed_malloc;
+ b1 = mult(mhi, b);
+ Bfree(b);
+ b = b1;
+ if (b == NULL)
+ goto failed_malloc;
+ }
+ if ((j = b5 - m5)) {
+ b = pow5mult(b, j);
+ if (b == NULL)
+ goto failed_malloc;
+ }
+ }
+ else {
+ b = pow5mult(b, b5);
+ if (b == NULL)
+ goto failed_malloc;
+ }
+ }
+ S = i2b(1);
+ if (S == NULL)
+ goto failed_malloc;
+ if (s5 > 0) {
+ S = pow5mult(S, s5);
+ if (S == NULL)
+ goto failed_malloc;
+ }
+
+ /* Check for special case that d is a normalized power of 2. */
+
+ spec_case = 0;
+ if ((mode < 2 || leftright)
+ ) {
+ if (!word1(&u) && !(word0(&u) & Bndry_mask)
+ && word0(&u) & (Exp_mask & ~Exp_msk1)
+ ) {
+ /* The special case */
+ b2 += Log2P;
+ s2 += Log2P;
+ spec_case = 1;
+ }
+ }
+
+ /* Arrange for convenient computation of quotients:
+ * shift left if necessary so divisor has 4 leading 0 bits.
+ *
+ * Perhaps we should just compute leading 28 bits of S once
+ * and for all and pass them and a shift to quorem, so it
+ * can do shifts and ors to compute the numerator for q.
+ */
+#define iInc 28
+ i = dshift(S, s2);
+ b2 += i;
+ m2 += i;
+ s2 += i;
+ if (b2 > 0) {
+ b = lshift(b, b2);
+ if (b == NULL)
+ goto failed_malloc;
+ }
+ if (s2 > 0) {
+ S = lshift(S, s2);
+ if (S == NULL)
+ goto failed_malloc;
+ }
+ if (k_check) {
+ if (cmp(b,S) < 0) {
+ k--;
+ b = multadd(b, 10, 0); /* we botched the k estimate */
+ if (b == NULL)
+ goto failed_malloc;
+ if (leftright) {
+ mhi = multadd(mhi, 10, 0);
+ if (mhi == NULL)
+ goto failed_malloc;
+ }
+ ilim = ilim1;
+ }
+ }
+ if (ilim <= 0 && (mode == 3 || mode == 5)) {
+ if (ilim < 0) {
+ /* no digits, fcvt style */
+ no_digits:
+ k = -1 - ndigits;
+ goto ret;
+ }
+ else {
+ S = multadd(S, 5, 0);
+ if (S == NULL)
+ goto failed_malloc;
+ if (cmp(b, S) <= 0)
+ goto no_digits;
+ }
+ one_digit:
+ *s++ = '1';
+ k++;
+ goto ret;
+ }
+ if (leftright) {
+ if (m2 > 0) {
+ mhi = lshift(mhi, m2);
+ if (mhi == NULL)
+ goto failed_malloc;
+ }
+
+ /* Compute mlo -- check for special case
+ * that d is a normalized power of 2.
+ */
+
+ mlo = mhi;
+ if (spec_case) {
+ mhi = Balloc(mhi->k);
+ if (mhi == NULL)
+ goto failed_malloc;
+ Bcopy(mhi, mlo);
+ mhi = lshift(mhi, Log2P);
+ if (mhi == NULL)
+ goto failed_malloc;
+ }
+
+ for(i = 1;;i++) {
+ dig = quorem(b,S) + '0';
+ /* Do we yet have the shortest decimal string
+ * that will round to d?
+ */
+ j = cmp(b, mlo);
+ delta = diff(S, mhi);
+ if (delta == NULL)
+ goto failed_malloc;
+ j1 = delta->sign ? 1 : cmp(b, delta);
+ Bfree(delta);
+ if (j1 == 0 && mode != 1 && !(word1(&u) & 1)
+ ) {
+ if (dig == '9')
+ goto round_9_up;
+ if (j > 0)
+ dig++;
+ *s++ = dig;
+ goto ret;
+ }
+ if (j < 0 || (j == 0 && mode != 1
+ && !(word1(&u) & 1)
+ )) {
+ if (!b->x[0] && b->wds <= 1) {
+ goto accept_dig;
+ }
+ if (j1 > 0) {
+ b = lshift(b, 1);
+ if (b == NULL)
+ goto failed_malloc;
+ j1 = cmp(b, S);
+ if ((j1 > 0 || (j1 == 0 && dig & 1))
+ && dig++ == '9')
+ goto round_9_up;
+ }
+ accept_dig:
+ *s++ = dig;
+ goto ret;
+ }
+ if (j1 > 0) {
+ if (dig == '9') { /* possible if i == 1 */
+ round_9_up:
+ *s++ = '9';
+ goto roundoff;
+ }
+ *s++ = dig + 1;
+ goto ret;
+ }
+ *s++ = dig;
+ if (i == ilim)
+ break;
+ b = multadd(b, 10, 0);
+ if (b == NULL)
+ goto failed_malloc;
+ if (mlo == mhi) {
+ mlo = mhi = multadd(mhi, 10, 0);
+ if (mlo == NULL)
+ goto failed_malloc;
+ }
+ else {
+ mlo = multadd(mlo, 10, 0);
+ if (mlo == NULL)
+ goto failed_malloc;
+ mhi = multadd(mhi, 10, 0);
+ if (mhi == NULL)
+ goto failed_malloc;
+ }
+ }
+ }
+ else
+ for(i = 1;; i++) {
+ *s++ = dig = quorem(b,S) + '0';
+ if (!b->x[0] && b->wds <= 1) {
+ goto ret;
+ }
+ if (i >= ilim)
+ break;
+ b = multadd(b, 10, 0);
+ if (b == NULL)
+ goto failed_malloc;
+ }
+
+ /* Round off last digit */
+
+ b = lshift(b, 1);
+ if (b == NULL)
+ goto failed_malloc;
+ j = cmp(b, S);
+ if (j > 0 || (j == 0 && dig & 1)) {
+ roundoff:
+ while(*--s == '9')
+ if (s == s0) {
+ k++;
+ *s++ = '1';
+ goto ret;
+ }
+ ++*s++;
+ }
+ else {
+ while(*--s == '0');
+ s++;
+ }
+ ret:
+ Bfree(S);
+ if (mhi) {
+ if (mlo && mlo != mhi)
+ Bfree(mlo);
+ Bfree(mhi);
+ }
+ ret1:
+ Bfree(b);
+ *s = 0;
+ *decpt = k + 1;
+ if (rve)
+ *rve = s;
+ return s0;
+ failed_malloc:
+ if (S)
+ Bfree(S);
+ if (mlo && mlo != mhi)
+ Bfree(mlo);
+ if (mhi)
+ Bfree(mhi);
+ if (b)
+ Bfree(b);
+ if (s0)
+ _Py_dg_freedtoa(s0);
+ return NULL;
+}
+#ifdef __cplusplus
+}
+#endif
+
+#endif // _PY_SHORT_FLOAT_REPR == 1
diff --git a/contrib/tools/python3/Python/dynamic_annotations.c b/contrib/tools/python3/Python/dynamic_annotations.c
new file mode 100644
index 00000000000..7febaa09df1
--- /dev/null
+++ b/contrib/tools/python3/Python/dynamic_annotations.c
@@ -0,0 +1,154 @@
+/* Copyright (c) 2008-2009, Google Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * ---
+ * Author: Kostya Serebryany
+ */
+
+#ifdef _MSC_VER
+# include <windows.h>
+#endif
+
+#ifdef __cplusplus
+# error "This file should be built as pure C to avoid name mangling"
+#endif
+
+#include <stdlib.h>
+#include <string.h>
+
+#include "dynamic_annotations.h"
+
+/* Each function is empty and called (via a macro) only in debug mode.
+ The arguments are captured by dynamic tools at runtime. */
+
+#if DYNAMIC_ANNOTATIONS_ENABLED == 1
+
+void AnnotateRWLockCreate(const char *file, int line,
+ const volatile void *lock){}
+void AnnotateRWLockDestroy(const char *file, int line,
+ const volatile void *lock){}
+void AnnotateRWLockAcquired(const char *file, int line,
+ const volatile void *lock, long is_w){}
+void AnnotateRWLockReleased(const char *file, int line,
+ const volatile void *lock, long is_w){}
+void AnnotateBarrierInit(const char *file, int line,
+ const volatile void *barrier, long count,
+ long reinitialization_allowed) {}
+void AnnotateBarrierWaitBefore(const char *file, int line,
+ const volatile void *barrier) {}
+void AnnotateBarrierWaitAfter(const char *file, int line,
+ const volatile void *barrier) {}
+void AnnotateBarrierDestroy(const char *file, int line,
+ const volatile void *barrier) {}
+
+void AnnotateCondVarWait(const char *file, int line,
+ const volatile void *cv,
+ const volatile void *lock){}
+void AnnotateCondVarSignal(const char *file, int line,
+ const volatile void *cv){}
+void AnnotateCondVarSignalAll(const char *file, int line,
+ const volatile void *cv){}
+void AnnotatePublishMemoryRange(const char *file, int line,
+ const volatile void *address,
+ long size){}
+void AnnotateUnpublishMemoryRange(const char *file, int line,
+ const volatile void *address,
+ long size){}
+void AnnotatePCQCreate(const char *file, int line,
+ const volatile void *pcq){}
+void AnnotatePCQDestroy(const char *file, int line,
+ const volatile void *pcq){}
+void AnnotatePCQPut(const char *file, int line,
+ const volatile void *pcq){}
+void AnnotatePCQGet(const char *file, int line,
+ const volatile void *pcq){}
+void AnnotateNewMemory(const char *file, int line,
+ const volatile void *mem,
+ long size){}
+void AnnotateExpectRace(const char *file, int line,
+ const volatile void *mem,
+ const char *description){}
+void AnnotateBenignRace(const char *file, int line,
+ const volatile void *mem,
+ const char *description){}
+void AnnotateBenignRaceSized(const char *file, int line,
+ const volatile void *mem,
+ long size,
+ const char *description) {}
+void AnnotateMutexIsUsedAsCondVar(const char *file, int line,
+ const volatile void *mu){}
+void AnnotateTraceMemory(const char *file, int line,
+ const volatile void *arg){}
+void AnnotateThreadName(const char *file, int line,
+ const char *name){}
+void AnnotateIgnoreReadsBegin(const char *file, int line){}
+void AnnotateIgnoreReadsEnd(const char *file, int line){}
+void AnnotateIgnoreWritesBegin(const char *file, int line){}
+void AnnotateIgnoreWritesEnd(const char *file, int line){}
+void AnnotateIgnoreSyncBegin(const char *file, int line){}
+void AnnotateIgnoreSyncEnd(const char *file, int line){}
+void AnnotateEnableRaceDetection(const char *file, int line, int enable){}
+void AnnotateNoOp(const char *file, int line,
+ const volatile void *arg){}
+void AnnotateFlushState(const char *file, int line){}
+
+static int GetRunningOnValgrind(void) {
+#ifdef RUNNING_ON_VALGRIND
+ if (RUNNING_ON_VALGRIND) return 1;
+#endif
+
+#ifndef _MSC_VER
+ const char *running_on_valgrind_str = getenv("RUNNING_ON_VALGRIND");
+ if (running_on_valgrind_str) {
+ return strcmp(running_on_valgrind_str, "0") != 0;
+ }
+#else
+ /* Visual Studio issues warnings if we use getenv,
+ * so we use GetEnvironmentVariableA instead.
+ */
+ char value[100] = "1";
+ int res = GetEnvironmentVariableA("RUNNING_ON_VALGRIND",
+ value, sizeof(value));
+ /* value will remain "1" if res == 0 or res >= sizeof(value). The latter
+ * can happen only if the given value is long, in this case it can't be "0".
+ */
+ if (res > 0 && !strcmp(value, "0"))
+ return 1;
+#endif
+ return 0;
+}
+
+/* See the comments in dynamic_annotations.h */
+int RunningOnValgrind(void) {
+ static volatile int running_on_valgrind = -1;
+ /* C doesn't have thread-safe initialization of statics, and we
+ don't want to depend on pthread_once here, so hack it. */
+ int local_running_on_valgrind = running_on_valgrind;
+ if (local_running_on_valgrind == -1)
+ running_on_valgrind = local_running_on_valgrind = GetRunningOnValgrind();
+ return local_running_on_valgrind;
+}
+
+#endif /* DYNAMIC_ANNOTATIONS_ENABLED == 1 */
diff --git a/contrib/tools/python3/Python/dynload_shlib.c b/contrib/tools/python3/Python/dynload_shlib.c
new file mode 100644
index 00000000000..6761bba4579
--- /dev/null
+++ b/contrib/tools/python3/Python/dynload_shlib.c
@@ -0,0 +1,111 @@
+
+/* Support for dynamic loading of extension modules */
+
+#include "Python.h"
+#include "pycore_interp.h" // _PyInterpreterState.dlopenflags
+#include "pycore_pystate.h" // _PyInterpreterState_GET()
+#include "importdl.h"
+
+#include <sys/types.h>
+#include <sys/stat.h>
+
+#if defined(__NetBSD__)
+#include <sys/param.h>
+#if (NetBSD < 199712)
+#include <nlist.h>
+#include <link.h>
+#define dlerror() "error in dynamic linking"
+#endif
+#endif /* NetBSD */
+
+#ifdef HAVE_DLFCN_H
+#include <dlfcn.h>
+#endif
+
+#if (defined(__OpenBSD__) || defined(__NetBSD__)) && !defined(__ELF__)
+#define LEAD_UNDERSCORE "_"
+#else
+#define LEAD_UNDERSCORE ""
+#endif
+
+/* The .so extension module ABI tag, supplied by the Makefile via
+ Makefile.pre.in and configure. This is used to discriminate between
+ incompatible .so files so that extensions for different Python builds can
+ live in the same directory. E.g. foomodule.cpython-32.so
+*/
+
+const char *_PyImport_DynLoadFiletab[] = {
+#ifdef __CYGWIN__
+ ".dll",
+#else /* !__CYGWIN__ */
+ "." SOABI ".so",
+#ifdef ALT_SOABI
+ "." ALT_SOABI ".so",
+#endif
+ ".abi" PYTHON_ABI_STRING ".so",
+ ".so",
+#endif /* __CYGWIN__ */
+ NULL,
+};
+
+
+dl_funcptr
+_PyImport_FindSharedFuncptr(const char *prefix,
+ const char *shortname,
+ const char *pathname, FILE *fp)
+{
+ dl_funcptr p;
+ void *handle;
+ char funcname[258];
+ char pathbuf[260];
+ int dlopenflags=0;
+
+ if (strchr(pathname, '/') == NULL) {
+ /* Prefix bare filename with "./" */
+ PyOS_snprintf(pathbuf, sizeof(pathbuf), "./%-.255s", pathname);
+ pathname = pathbuf;
+ }
+
+ PyOS_snprintf(funcname, sizeof(funcname),
+ LEAD_UNDERSCORE "%.20s_%.200s", prefix, shortname);
+
+ if (fp != NULL) {
+ struct _Py_stat_struct status;
+ if (_Py_fstat(fileno(fp), &status) == -1)
+ return NULL;
+ }
+
+ dlopenflags = _PyImport_GetDLOpenFlags(_PyInterpreterState_GET());
+
+ handle = dlopen(pathname, dlopenflags);
+
+ if (handle == NULL) {
+ PyObject *mod_name;
+ PyObject *path;
+ PyObject *error_ob;
+ const char *error = dlerror();
+ if (error == NULL)
+ error = "unknown dlopen() error";
+ error_ob = PyUnicode_DecodeLocale(error, "surrogateescape");
+ if (error_ob == NULL)
+ return NULL;
+ mod_name = PyUnicode_FromString(shortname);
+ if (mod_name == NULL) {
+ Py_DECREF(error_ob);
+ return NULL;
+ }
+ path = PyUnicode_DecodeFSDefault(pathname);
+ if (path == NULL) {
+ Py_DECREF(error_ob);
+ Py_DECREF(mod_name);
+ return NULL;
+ }
+ PyErr_SetImportError(error_ob, mod_name, path);
+ Py_DECREF(error_ob);
+ Py_DECREF(mod_name);
+ Py_DECREF(path);
+ return NULL;
+ }
+ p = (dl_funcptr) dlsym(handle, funcname);
+ return p;
+}
diff --git a/contrib/tools/python3/Python/dynload_win.c b/contrib/tools/python3/Python/dynload_win.c
new file mode 100644
index 00000000000..acab05e2c6d
--- /dev/null
+++ b/contrib/tools/python3/Python/dynload_win.c
@@ -0,0 +1,347 @@
+
+/* Support for dynamic loading of extension modules */
+
+#include "Python.h"
+#include "pycore_fileutils.h" // _Py_add_relfile()
+#include "pycore_pystate.h" // _PyInterpreterState_GET()
+
+#ifdef HAVE_DIRECT_H
+#include <direct.h>
+#endif
+#include <ctype.h>
+
+#include "importdl.h"
+#include "patchlevel.h"
+#include <windows.h>
+
+#ifdef _DEBUG
+#define PYD_DEBUG_SUFFIX "_d"
+#else
+#define PYD_DEBUG_SUFFIX ""
+#endif
+
+#ifdef PYD_PLATFORM_TAG
+#define PYD_TAGGED_SUFFIX PYD_DEBUG_SUFFIX ".cp" Py_STRINGIFY(PY_MAJOR_VERSION) Py_STRINGIFY(PY_MINOR_VERSION) "-" PYD_PLATFORM_TAG ".pyd"
+#else
+#define PYD_TAGGED_SUFFIX PYD_DEBUG_SUFFIX ".cp" Py_STRINGIFY(PY_MAJOR_VERSION) Py_STRINGIFY(PY_MINOR_VERSION) ".pyd"
+#endif
+
+#define PYD_UNTAGGED_SUFFIX PYD_DEBUG_SUFFIX ".pyd"
+
+const char *_PyImport_DynLoadFiletab[] = {
+ PYD_TAGGED_SUFFIX,
+ PYD_UNTAGGED_SUFFIX,
+ NULL
+};
+
+/* Function to return the name of the "python" DLL that the supplied module
+ directly imports. Looks through the list of imported modules and
+ returns the first entry that starts with "python" (case sensitive) and
+ is followed by nothing but numbers until the separator (period).
+
+ Returns a pointer to the import name, or NULL if no matching name was
+ located.
+
+ This function parses through the PE header for the module as loaded in
+ memory by the system loader. The PE header is accessed as documented by
+ Microsoft in the MSDN PE and COFF specification (2/99), and handles
+ both PE32 and PE32+. It only worries about the direct import table and
+ not the delay load import table since it's unlikely an extension is
+ going to be delay loading Python (after all, it's already loaded).
+
+ If any magic values are not found (e.g., the PE header or optional
+ header magic), then this function simply returns NULL. */
+
+#define DWORD_AT(mem) (*(DWORD *)(mem))
+#define WORD_AT(mem) (*(WORD *)(mem))
+
+static char *GetPythonImport (HINSTANCE hModule)
+{
+ unsigned char *dllbase, *import_data, *import_name;
+ DWORD pe_offset, opt_offset;
+ WORD opt_magic;
+ int num_dict_off, import_off;
+
+ /* Safety check input */
+ if (hModule == NULL) {
+ return NULL;
+ }
+
+ /* Module instance is also the base load address. First portion of
+ memory is the MS-DOS loader, which holds the offset to the PE
+ header (from the load base) at 0x3C */
+ dllbase = (unsigned char *)hModule;
+ pe_offset = DWORD_AT(dllbase + 0x3C);
+
+ /* The PE signature must be "PE\0\0" */
+ if (memcmp(dllbase+pe_offset,"PE\0\0",4)) {
+ return NULL;
+ }
+
+ /* Following the PE signature is the standard COFF header (20
+ bytes) and then the optional header. The optional header starts
+ with a magic value of 0x10B for PE32 or 0x20B for PE32+ (PE32+
+ uses 64-bits for some fields). It might also be 0x107 for a ROM
+ image, but we don't process that here.
+
+ The optional header ends with a data dictionary that directly
+ points to certain types of data, among them the import entries
+ (in the second table entry). Based on the header type, we
+ determine offsets for the data dictionary count and the entry
+ within the dictionary pointing to the imports. */
+
+ opt_offset = pe_offset + 4 + 20;
+ opt_magic = WORD_AT(dllbase+opt_offset);
+ if (opt_magic == 0x10B) {
+ /* PE32 */
+ num_dict_off = 92;
+ import_off = 104;
+ } else if (opt_magic == 0x20B) {
+ /* PE32+ */
+ num_dict_off = 108;
+ import_off = 120;
+ } else {
+ /* Unsupported */
+ return NULL;
+ }
+
+ /* Now if an import table exists, offset to it and walk the list of
+ imports. The import table is an array (ending when an entry has
+ empty values) of structures (20 bytes each), which contains (at
+ offset 12) a relative address (to the module base) at which a
+ string constant holding the import name is located. */
+
+ if (DWORD_AT(dllbase + opt_offset + num_dict_off) >= 2) {
+ /* We have at least 2 tables - the import table is the second
+ one. But still it may be that the table size is zero */
+ if (0 == DWORD_AT(dllbase + opt_offset + import_off + sizeof(DWORD)))
+ return NULL;
+ import_data = dllbase + DWORD_AT(dllbase +
+ opt_offset +
+ import_off);
+ while (DWORD_AT(import_data)) {
+ import_name = dllbase + DWORD_AT(import_data+12);
+ if (strlen(import_name) >= 6 &&
+ !strncmp(import_name,"python",6)) {
+ char *pch;
+
+ /* Don't claim that python3.dll is a Python DLL. */
+#ifdef _DEBUG
+ if (strcmp(import_name, "python3_d.dll") == 0) {
+#else
+ if (strcmp(import_name, "python3.dll") == 0) {
+#endif
+ import_data += 20;
+ continue;
+ }
+
+ /* Ensure python prefix is followed only
+ by numbers to the end of the basename */
+ pch = import_name + 6;
+#ifdef _DEBUG
+ while (*pch && pch[0] != '_' && pch[1] != 'd' && pch[2] != '.') {
+#else
+ while (*pch && *pch != '.') {
+#endif
+ if (*pch >= '0' && *pch <= '9') {
+ pch++;
+ } else {
+ pch = NULL;
+ break;
+ }
+ }
+
+ if (pch) {
+ /* Found it - return the name */
+ return import_name;
+ }
+ }
+ import_data += 20;
+ }
+ }
+
+ return NULL;
+}
+
+#ifdef Py_ENABLE_SHARED
+/* Load python3.dll before loading any extension module that might refer
+ to it. That way, we can be sure that always the python3.dll corresponding
+ to this python DLL is loaded, not a python3.dll that might be on the path
+ by chance.
+ Return whether the DLL was found.
+*/
+extern HMODULE PyWin_DLLhModule;
+static int
+_Py_CheckPython3(void)
+{
+ static int python3_checked = 0;
+ static HANDLE hPython3;
+ #define MAXPATHLEN 512
+ wchar_t py3path[MAXPATHLEN+1];
+ if (python3_checked) {
+ return hPython3 != NULL;
+ }
+ python3_checked = 1;
+
+ /* If there is a python3.dll next to the python3y.dll,
+ use that DLL */
+ if (PyWin_DLLhModule && GetModuleFileNameW(PyWin_DLLhModule, py3path, MAXPATHLEN)) {
+ wchar_t *p = wcsrchr(py3path, L'\\');
+ if (p) {
+ wcscpy(p + 1, PY3_DLLNAME);
+ hPython3 = LoadLibraryExW(py3path, NULL, LOAD_LIBRARY_SEARCH_DEFAULT_DIRS);
+ if (hPython3 != NULL) {
+ return 1;
+ }
+ }
+ }
+
+ /* If we can locate python3.dll in our application dir,
+ use that DLL */
+ hPython3 = LoadLibraryExW(PY3_DLLNAME, NULL, LOAD_LIBRARY_SEARCH_APPLICATION_DIR);
+ if (hPython3 != NULL) {
+ return 1;
+ }
+
+ /* For back-compat, also search {sys.prefix}\DLLs, though
+ that has not been a normal install layout for a while */
+ PyInterpreterState *interp = _PyInterpreterState_GET();
+ PyConfig *config = (PyConfig*)_PyInterpreterState_GetConfig(interp);
+ assert(config->prefix);
+ if (config->prefix) {
+ wcscpy_s(py3path, MAXPATHLEN, config->prefix);
+ if (py3path[0] && _Py_add_relfile(py3path, L"DLLs\\" PY3_DLLNAME, MAXPATHLEN) >= 0) {
+ hPython3 = LoadLibraryExW(py3path, NULL, LOAD_LIBRARY_SEARCH_DEFAULT_DIRS);
+ }
+ }
+ return hPython3 != NULL;
+ #undef MAXPATHLEN
+}
+#endif /* Py_ENABLE_SHARED */
+
+dl_funcptr _PyImport_FindSharedFuncptrWindows(const char *prefix,
+ const char *shortname,
+ PyObject *pathname, FILE *fp)
+{
+ dl_funcptr p;
+ char funcname[258], *import_python;
+
+#ifdef Py_ENABLE_SHARED
+ _Py_CheckPython3();
+#endif /* Py_ENABLE_SHARED */
+
+ wchar_t *wpathname = PyUnicode_AsWideCharString(pathname, NULL);
+ if (wpathname == NULL)
+ return NULL;
+
+ PyOS_snprintf(funcname, sizeof(funcname), "%.20s_%.200s", prefix, shortname);
+
+ {
+ HINSTANCE hDLL = NULL;
+#ifdef MS_WINDOWS_DESKTOP
+ unsigned int old_mode;
+
+ /* Don't display a message box when Python can't load a DLL */
+ old_mode = SetErrorMode(SEM_FAILCRITICALERRORS);
+#endif
+
+ /* bpo-36085: We use LoadLibraryEx with restricted search paths
+ to avoid DLL preloading attacks and enable use of the
+ AddDllDirectory function. We add SEARCH_DLL_LOAD_DIR to
+ ensure DLLs adjacent to the PYD are preferred. */
+ Py_BEGIN_ALLOW_THREADS
+ hDLL = LoadLibraryExW(wpathname, NULL,
+ LOAD_LIBRARY_SEARCH_DEFAULT_DIRS |
+ LOAD_LIBRARY_SEARCH_DLL_LOAD_DIR);
+ Py_END_ALLOW_THREADS
+ PyMem_Free(wpathname);
+
+#ifdef MS_WINDOWS_DESKTOP
+ /* restore old error mode settings */
+ SetErrorMode(old_mode);
+#endif
+
+ if (hDLL==NULL){
+ PyObject *message;
+ unsigned int errorCode;
+
+ /* Get an error string from Win32 error code */
+ wchar_t theInfo[256]; /* Pointer to error text
+ from system */
+ int theLength; /* Length of error text */
+
+ errorCode = GetLastError();
+
+ theLength = FormatMessageW(
+ FORMAT_MESSAGE_FROM_SYSTEM |
+ FORMAT_MESSAGE_IGNORE_INSERTS, /* flags */
+ NULL, /* message source */
+ errorCode, /* the message (error) ID */
+ MAKELANGID(LANG_NEUTRAL,
+ SUBLANG_DEFAULT),
+ /* Default language */
+ theInfo, /* the buffer */
+ sizeof(theInfo) / sizeof(wchar_t), /* size in wchars */
+ NULL); /* no additional format args. */
+
+ /* Problem: could not get the error message.
+ This should not happen if called correctly. */
+ if (theLength == 0) {
+ message = PyUnicode_FromFormat(
+ "DLL load failed with error code %u while importing %s",
+ errorCode, shortname);
+ } else {
+ /* For some reason a \r\n
+ is appended to the text */
+ if (theLength >= 2 &&
+ theInfo[theLength-2] == '\r' &&
+ theInfo[theLength-1] == '\n') {
+ theLength -= 2;
+ theInfo[theLength] = '\0';
+ }
+ message = PyUnicode_FromFormat(
+ "DLL load failed while importing %s: ", shortname);
+
+ PyUnicode_AppendAndDel(&message,
+ PyUnicode_FromWideChar(
+ theInfo,
+ theLength));
+ }
+ if (message != NULL) {
+ PyObject *shortname_obj = PyUnicode_FromString(shortname);
+ PyErr_SetImportError(message, shortname_obj, pathname);
+ Py_XDECREF(shortname_obj);
+ Py_DECREF(message);
+ }
+ return NULL;
+ } else {
+ char buffer[256];
+
+ PyOS_snprintf(buffer, sizeof(buffer),
+#ifdef _DEBUG
+ "python%d%d_d.dll",
+#else
+ "python%d%d.dll",
+#endif
+ PY_MAJOR_VERSION,PY_MINOR_VERSION);
+ import_python = GetPythonImport(hDLL);
+
+ if (import_python &&
+ _stricmp(buffer,import_python)) {
+ PyErr_Format(PyExc_ImportError,
+ "Module use of %.150s conflicts "
+ "with this version of Python.",
+ import_python);
+ Py_BEGIN_ALLOW_THREADS
+ FreeLibrary(hDLL);
+ Py_END_ALLOW_THREADS
+ return NULL;
+ }
+ }
+ Py_BEGIN_ALLOW_THREADS
+ p = GetProcAddress(hDLL, funcname);
+ Py_END_ALLOW_THREADS
+ }
+
+ return p;
+}
diff --git a/contrib/tools/python3/Python/errors.c b/contrib/tools/python3/Python/errors.c
new file mode 100644
index 00000000000..68e740425b6
--- /dev/null
+++ b/contrib/tools/python3/Python/errors.c
@@ -0,0 +1,1960 @@
+
+/* Error handling */
+
+#include "Python.h"
+#include "pycore_call.h" // _PyObject_CallNoArgs()
+#include "pycore_initconfig.h" // _PyStatus_ERR()
+#include "pycore_pyerrors.h" // _PyErr_Format()
+#include "pycore_pystate.h" // _PyThreadState_GET()
+#include "pycore_structseq.h" // _PyStructSequence_FiniBuiltin()
+#include "pycore_sysmodule.h" // _PySys_Audit()
+#include "pycore_traceback.h" // _PyTraceBack_FromFrame()
+
+#include <ctype.h>
+#ifdef MS_WINDOWS
+# include <windows.h>
+# include <winbase.h>
+# include <stdlib.h> // _sys_nerr
+#endif
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+static PyObject *
+_PyErr_FormatV(PyThreadState *tstate, PyObject *exception,
+ const char *format, va_list vargs);
+
+void
+_PyErr_SetRaisedException(PyThreadState *tstate, PyObject *exc)
+{
+ PyObject *old_exc = tstate->current_exception;
+ tstate->current_exception = exc;
+ Py_XDECREF(old_exc);
+}
+
+static PyObject*
+_PyErr_CreateException(PyObject *exception_type, PyObject *value)
+{
+ PyObject *exc;
+
+ if (value == NULL || value == Py_None) {
+ exc = _PyObject_CallNoArgs(exception_type);
+ }
+ else if (PyTuple_Check(value)) {
+ exc = PyObject_Call(exception_type, value, NULL);
+ }
+ else {
+ exc = PyObject_CallOneArg(exception_type, value);
+ }
+
+ if (exc != NULL && !PyExceptionInstance_Check(exc)) {
+ PyErr_Format(PyExc_TypeError,
+ "calling %R should have returned an instance of "
+ "BaseException, not %s",
+ exception_type, Py_TYPE(exc)->tp_name);
+ Py_CLEAR(exc);
+ }
+
+ return exc;
+}
+
+void
+_PyErr_Restore(PyThreadState *tstate, PyObject *type, PyObject *value,
+ PyObject *traceback)
+{
+ if (type == NULL) {
+ assert(value == NULL);
+ assert(traceback == NULL);
+ _PyErr_SetRaisedException(tstate, NULL);
+ return;
+ }
+ assert(PyExceptionClass_Check(type));
+ if (value != NULL && type == (PyObject *)Py_TYPE(value)) {
+ /* Already normalized */
+ assert(((PyBaseExceptionObject *)value)->traceback != Py_None);
+ }
+ else {
+ PyObject *exc = _PyErr_CreateException(type, value);
+ Py_XDECREF(value);
+ if (exc == NULL) {
+ Py_DECREF(type);
+ Py_XDECREF(traceback);
+ return;
+ }
+ value = exc;
+ }
+ assert(PyExceptionInstance_Check(value));
+ if (traceback != NULL && !PyTraceBack_Check(traceback)) {
+ if (traceback == Py_None) {
+ Py_DECREF(Py_None);
+ traceback = NULL;
+ }
+ else {
+ PyErr_SetString(PyExc_TypeError, "traceback must be a Traceback or None");
+ Py_XDECREF(value);
+ Py_DECREF(type);
+ Py_XDECREF(traceback);
+ return;
+ }
+ }
+ PyObject *old_traceback = ((PyBaseExceptionObject *)value)->traceback;
+ ((PyBaseExceptionObject *)value)->traceback = traceback;
+ Py_XDECREF(old_traceback);
+ _PyErr_SetRaisedException(tstate, value);
+ Py_DECREF(type);
+}
+
+void
+PyErr_Restore(PyObject *type, PyObject *value, PyObject *traceback)
+{
+ PyThreadState *tstate = _PyThreadState_GET();
+ _PyErr_Restore(tstate, type, value, traceback);
+}
+
+void
+PyErr_SetRaisedException(PyObject *exc)
+{
+ PyThreadState *tstate = _PyThreadState_GET();
+ _PyErr_SetRaisedException(tstate, exc);
+}
+
+_PyErr_StackItem *
+_PyErr_GetTopmostException(PyThreadState *tstate)
+{
+ _PyErr_StackItem *exc_info = tstate->exc_info;
+ assert(exc_info);
+
+ while ((exc_info->exc_value == NULL || exc_info->exc_value == Py_None) &&
+ exc_info->previous_item != NULL)
+ {
+ exc_info = exc_info->previous_item;
+ }
+ return exc_info;
+}
+
+static PyObject *
+get_normalization_failure_note(PyThreadState *tstate, PyObject *exception, PyObject *value)
+{
+ PyObject *args = PyObject_Repr(value);
+ if (args == NULL) {
+ _PyErr_Clear(tstate);
+ args = PyUnicode_FromFormat("<unknown>");
+ }
+ PyObject *note;
+ const char *tpname = ((PyTypeObject*)exception)->tp_name;
+ if (args == NULL) {
+ _PyErr_Clear(tstate);
+ note = PyUnicode_FromFormat("Normalization failed: type=%s", tpname);
+ }
+ else {
+ note = PyUnicode_FromFormat("Normalization failed: type=%s args=%S",
+ tpname, args);
+ Py_DECREF(args);
+ }
+ return note;
+}
+
+void
+_PyErr_SetObject(PyThreadState *tstate, PyObject *exception, PyObject *value)
+{
+ PyObject *exc_value;
+ PyObject *tb = NULL;
+
+ if (exception != NULL &&
+ !PyExceptionClass_Check(exception)) {
+ _PyErr_Format(tstate, PyExc_SystemError,
+ "_PyErr_SetObject: "
+ "exception %R is not a BaseException subclass",
+ exception);
+ return;
+ }
+ /* Normalize the exception */
+ int is_subclass = 0;
+ if (value != NULL && PyExceptionInstance_Check(value)) {
+ is_subclass = PyObject_IsSubclass((PyObject *)Py_TYPE(value), exception);
+ if (is_subclass < 0) {
+ return;
+ }
+ }
+ Py_XINCREF(value);
+ if (!is_subclass) {
+ /* We must normalize the value right now */
+
+ /* Issue #23571: functions must not be called with an
+ exception set */
+ _PyErr_Clear(tstate);
+
+ PyObject *fixed_value = _PyErr_CreateException(exception, value);
+ if (fixed_value == NULL) {
+ PyObject *exc = _PyErr_GetRaisedException(tstate);
+ assert(PyExceptionInstance_Check(exc));
+
+ PyObject *note = get_normalization_failure_note(tstate, exception, value);
+ Py_XDECREF(value);
+ if (note != NULL) {
+ /* ignore errors in _PyException_AddNote - they will be overwritten below */
+ _PyException_AddNote(exc, note);
+ Py_DECREF(note);
+ }
+ _PyErr_SetRaisedException(tstate, exc);
+ return;
+ }
+ Py_XSETREF(value, fixed_value);
+ }
+
+ exc_value = _PyErr_GetTopmostException(tstate)->exc_value;
+ if (exc_value != NULL && exc_value != Py_None) {
+ /* Implicit exception chaining */
+ Py_INCREF(exc_value);
+ /* Avoid creating new reference cycles through the
+ context chain, while taking care not to hang on
+ pre-existing ones.
+ This is O(chain length) but context chains are
+ usually very short. Sensitive readers may try
+ to inline the call to PyException_GetContext. */
+ if (exc_value != value) {
+ PyObject *o = exc_value, *context;
+ PyObject *slow_o = o; /* Floyd's cycle detection algo */
+ int slow_update_toggle = 0;
+ while ((context = PyException_GetContext(o))) {
+ Py_DECREF(context);
+ if (context == value) {
+ PyException_SetContext(o, NULL);
+ break;
+ }
+ o = context;
+ if (o == slow_o) {
+ /* pre-existing cycle - all exceptions on the
+ path were visited and checked. */
+ break;
+ }
+ if (slow_update_toggle) {
+ slow_o = PyException_GetContext(slow_o);
+ Py_DECREF(slow_o);
+ }
+ slow_update_toggle = !slow_update_toggle;
+ }
+ PyException_SetContext(value, exc_value);
+ }
+ else {
+ Py_DECREF(exc_value);
+ }
+ }
+ assert(value != NULL);
+ if (PyExceptionInstance_Check(value))
+ tb = PyException_GetTraceback(value);
+ _PyErr_Restore(tstate, Py_NewRef(Py_TYPE(value)), value, tb);
+}
+
+void
+PyErr_SetObject(PyObject *exception, PyObject *value)
+{
+ PyThreadState *tstate = _PyThreadState_GET();
+ _PyErr_SetObject(tstate, exception, value);
+}
+
+/* Set a key error with the specified argument, wrapping it in a
+ * tuple automatically so that tuple keys are not unpacked as the
+ * exception arguments. */
+void
+_PyErr_SetKeyError(PyObject *arg)
+{
+ PyThreadState *tstate = _PyThreadState_GET();
+ PyObject *tup = PyTuple_Pack(1, arg);
+ if (!tup) {
+ /* caller will expect error to be set anyway */
+ return;
+ }
+ _PyErr_SetObject(tstate, PyExc_KeyError, tup);
+ Py_DECREF(tup);
+}
+
+void
+_PyErr_SetNone(PyThreadState *tstate, PyObject *exception)
+{
+ _PyErr_SetObject(tstate, exception, (PyObject *)NULL);
+}
+
+
+void
+PyErr_SetNone(PyObject *exception)
+{
+ PyThreadState *tstate = _PyThreadState_GET();
+ _PyErr_SetNone(tstate, exception);
+}
+
+
+void
+_PyErr_SetString(PyThreadState *tstate, PyObject *exception,
+ const char *string)
+{
+ PyObject *value = PyUnicode_FromString(string);
+ if (value != NULL) {
+ _PyErr_SetObject(tstate, exception, value);
+ Py_DECREF(value);
+ }
+}
+
+void
+PyErr_SetString(PyObject *exception, const char *string)
+{
+ PyThreadState *tstate = _PyThreadState_GET();
+ _PyErr_SetString(tstate, exception, string);
+}
+
+
+PyObject* _Py_HOT_FUNCTION
+PyErr_Occurred(void)
+{
+ /* The caller must hold the GIL. */
+ assert(PyGILState_Check());
+
+ PyThreadState *tstate = _PyThreadState_GET();
+ return _PyErr_Occurred(tstate);
+}
+
+
+int
+PyErr_GivenExceptionMatches(PyObject *err, PyObject *exc)
+{
+ if (err == NULL || exc == NULL) {
+ /* maybe caused by "import exceptions" that failed early on */
+ return 0;
+ }
+ if (PyTuple_Check(exc)) {
+ Py_ssize_t i, n;
+ n = PyTuple_Size(exc);
+ for (i = 0; i < n; i++) {
+ /* Test recursively */
+ if (PyErr_GivenExceptionMatches(
+ err, PyTuple_GET_ITEM(exc, i)))
+ {
+ return 1;
+ }
+ }
+ return 0;
+ }
+ /* err might be an instance, so check its class. */
+ if (PyExceptionInstance_Check(err))
+ err = PyExceptionInstance_Class(err);
+
+ if (PyExceptionClass_Check(err) && PyExceptionClass_Check(exc)) {
+ return PyType_IsSubtype((PyTypeObject *)err, (PyTypeObject *)exc);
+ }
+
+ return err == exc;
+}
+
+
+int
+_PyErr_ExceptionMatches(PyThreadState *tstate, PyObject *exc)
+{
+ return PyErr_GivenExceptionMatches(_PyErr_Occurred(tstate), exc);
+}
+
+
+int
+PyErr_ExceptionMatches(PyObject *exc)
+{
+ PyThreadState *tstate = _PyThreadState_GET();
+ return _PyErr_ExceptionMatches(tstate, exc);
+}
+
+
+#ifndef Py_NORMALIZE_RECURSION_LIMIT
+#define Py_NORMALIZE_RECURSION_LIMIT 32
+#endif
+
+/* Used in many places to normalize a raised exception, including in
+ eval_code2(), do_raise(), and PyErr_Print()
+
+ XXX: should PyErr_NormalizeException() also call
+ PyException_SetTraceback() with the resulting value and tb?
+*/
+void
+_PyErr_NormalizeException(PyThreadState *tstate, PyObject **exc,
+ PyObject **val, PyObject **tb)
+{
+ int recursion_depth = 0;
+ tstate->recursion_headroom++;
+ PyObject *type, *value, *initial_tb;
+
+ restart:
+ type = *exc;
+ if (type == NULL) {
+ /* There was no exception, so nothing to do. */
+ tstate->recursion_headroom--;
+ return;
+ }
+
+ value = *val;
+ /* If PyErr_SetNone() was used, the value will have been actually
+ set to NULL.
+ */
+ if (!value) {
+ value = Py_NewRef(Py_None);
+ }
+
+ /* Normalize the exception so that if the type is a class, the
+ value will be an instance.
+ */
+ if (PyExceptionClass_Check(type)) {
+ PyObject *inclass = NULL;
+ int is_subclass = 0;
+
+ if (PyExceptionInstance_Check(value)) {
+ inclass = PyExceptionInstance_Class(value);
+ is_subclass = PyObject_IsSubclass(inclass, type);
+ if (is_subclass < 0) {
+ goto error;
+ }
+ }
+
+ /* If the value was not an instance, or is not an instance
+ whose class is (or is derived from) type, then use the
+ value as an argument to instantiation of the type
+ class.
+ */
+ if (!is_subclass) {
+ PyObject *fixed_value = _PyErr_CreateException(type, value);
+ if (fixed_value == NULL) {
+ goto error;
+ }
+ Py_SETREF(value, fixed_value);
+ }
+ /* If the class of the instance doesn't exactly match the
+ class of the type, believe the instance.
+ */
+ else if (inclass != type) {
+ Py_SETREF(type, Py_NewRef(inclass));
+ }
+ }
+ *exc = type;
+ *val = value;
+ tstate->recursion_headroom--;
+ return;
+
+ error:
+ Py_DECREF(type);
+ Py_DECREF(value);
+ recursion_depth++;
+ if (recursion_depth == Py_NORMALIZE_RECURSION_LIMIT) {
+ _PyErr_SetString(tstate, PyExc_RecursionError,
+ "maximum recursion depth exceeded "
+ "while normalizing an exception");
+ }
+ /* If the new exception doesn't set a traceback and the old
+ exception had a traceback, use the old traceback for the
+ new exception. It's better than nothing.
+ */
+ initial_tb = *tb;
+ _PyErr_Fetch(tstate, exc, val, tb);
+ assert(*exc != NULL);
+ if (initial_tb != NULL) {
+ if (*tb == NULL)
+ *tb = initial_tb;
+ else
+ Py_DECREF(initial_tb);
+ }
+ /* Abort when Py_NORMALIZE_RECURSION_LIMIT has been exceeded, and the
+ corresponding RecursionError could not be normalized, and the
+ MemoryError raised when normalize this RecursionError could not be
+ normalized. */
+ if (recursion_depth >= Py_NORMALIZE_RECURSION_LIMIT + 2) {
+ if (PyErr_GivenExceptionMatches(*exc, PyExc_MemoryError)) {
+ Py_FatalError("Cannot recover from MemoryErrors "
+ "while normalizing exceptions.");
+ }
+ else {
+ Py_FatalError("Cannot recover from the recursive normalization "
+ "of an exception.");
+ }
+ }
+ goto restart;
+}
+
+
+void
+PyErr_NormalizeException(PyObject **exc, PyObject **val, PyObject **tb)
+{
+ PyThreadState *tstate = _PyThreadState_GET();
+ _PyErr_NormalizeException(tstate, exc, val, tb);
+}
+
+
+PyObject *
+_PyErr_GetRaisedException(PyThreadState *tstate) {
+ PyObject *exc = tstate->current_exception;
+ tstate->current_exception = NULL;
+ return exc;
+}
+
+PyObject *
+PyErr_GetRaisedException(void)
+{
+ PyThreadState *tstate = _PyThreadState_GET();
+ return _PyErr_GetRaisedException(tstate);
+}
+
+void
+_PyErr_Fetch(PyThreadState *tstate, PyObject **p_type, PyObject **p_value,
+ PyObject **p_traceback)
+{
+ PyObject *exc = _PyErr_GetRaisedException(tstate);
+ *p_value = exc;
+ if (exc == NULL) {
+ *p_type = NULL;
+ *p_traceback = NULL;
+ }
+ else {
+ *p_type = Py_NewRef(Py_TYPE(exc));
+ *p_traceback = Py_XNewRef(((PyBaseExceptionObject *)exc)->traceback);
+ }
+}
+
+
+void
+PyErr_Fetch(PyObject **p_type, PyObject **p_value, PyObject **p_traceback)
+{
+ PyThreadState *tstate = _PyThreadState_GET();
+ _PyErr_Fetch(tstate, p_type, p_value, p_traceback);
+}
+
+
+void
+_PyErr_Clear(PyThreadState *tstate)
+{
+ _PyErr_Restore(tstate, NULL, NULL, NULL);
+}
+
+
+void
+PyErr_Clear(void)
+{
+ PyThreadState *tstate = _PyThreadState_GET();
+ _PyErr_Clear(tstate);
+}
+
+static PyObject*
+get_exc_type(PyObject *exc_value) /* returns a borrowed ref */
+{
+ if (exc_value == NULL || exc_value == Py_None) {
+ return Py_None;
+ }
+ else {
+ assert(PyExceptionInstance_Check(exc_value));
+ PyObject *type = PyExceptionInstance_Class(exc_value);
+ assert(type != NULL);
+ return type;
+ }
+}
+
+static PyObject*
+get_exc_traceback(PyObject *exc_value) /* returns a borrowed ref */
+{
+ if (exc_value == NULL || exc_value == Py_None) {
+ return Py_None;
+ }
+ else {
+ assert(PyExceptionInstance_Check(exc_value));
+ PyObject *tb = PyException_GetTraceback(exc_value);
+ Py_XDECREF(tb);
+ return tb ? tb : Py_None;
+ }
+}
+
+void
+_PyErr_GetExcInfo(PyThreadState *tstate,
+ PyObject **p_type, PyObject **p_value, PyObject **p_traceback)
+{
+ _PyErr_StackItem *exc_info = _PyErr_GetTopmostException(tstate);
+
+ *p_type = Py_XNewRef(get_exc_type(exc_info->exc_value));
+ *p_value = Py_XNewRef(exc_info->exc_value);
+ *p_traceback = Py_XNewRef(get_exc_traceback(exc_info->exc_value));
+}
+
+PyObject*
+_PyErr_GetHandledException(PyThreadState *tstate)
+{
+ _PyErr_StackItem *exc_info = _PyErr_GetTopmostException(tstate);
+ PyObject *exc = exc_info->exc_value;
+ if (exc == NULL || exc == Py_None) {
+ return NULL;
+ }
+ return Py_NewRef(exc);
+}
+
+PyObject*
+PyErr_GetHandledException(void)
+{
+ PyThreadState *tstate = _PyThreadState_GET();
+ return _PyErr_GetHandledException(tstate);
+}
+
+void
+_PyErr_SetHandledException(PyThreadState *tstate, PyObject *exc)
+{
+ Py_XSETREF(tstate->exc_info->exc_value, Py_XNewRef(exc));
+}
+
+void
+PyErr_SetHandledException(PyObject *exc)
+{
+ PyThreadState *tstate = _PyThreadState_GET();
+ _PyErr_SetHandledException(tstate, exc);
+}
+
+void
+PyErr_GetExcInfo(PyObject **p_type, PyObject **p_value, PyObject **p_traceback)
+{
+ PyThreadState *tstate = _PyThreadState_GET();
+ _PyErr_GetExcInfo(tstate, p_type, p_value, p_traceback);
+}
+
+void
+PyErr_SetExcInfo(PyObject *type, PyObject *value, PyObject *traceback)
+{
+ PyErr_SetHandledException(value);
+ Py_XDECREF(value);
+ /* These args are no longer used, but we still need to steal a ref */
+ Py_XDECREF(type);
+ Py_XDECREF(traceback);
+}
+
+
+PyObject*
+_PyErr_StackItemToExcInfoTuple(_PyErr_StackItem *err_info)
+{
+ PyObject *exc_value = err_info->exc_value;
+
+ assert(exc_value == NULL ||
+ exc_value == Py_None ||
+ PyExceptionInstance_Check(exc_value));
+
+ PyObject *exc_type = get_exc_type(exc_value);
+ PyObject *exc_traceback = get_exc_traceback(exc_value);
+
+ return Py_BuildValue(
+ "(OOO)",
+ exc_type ? exc_type : Py_None,
+ exc_value ? exc_value : Py_None,
+ exc_traceback ? exc_traceback : Py_None);
+}
+
+
+/* Like PyErr_Restore(), but if an exception is already set,
+ set the context associated with it.
+
+ The caller is responsible for ensuring that this call won't create
+ any cycles in the exception context chain. */
+void
+_PyErr_ChainExceptions(PyObject *typ, PyObject *val, PyObject *tb)
+{
+ if (typ == NULL)
+ return;
+
+ PyThreadState *tstate = _PyThreadState_GET();
+
+ if (!PyExceptionClass_Check(typ)) {
+ _PyErr_Format(tstate, PyExc_SystemError,
+ "_PyErr_ChainExceptions: "
+ "exception %R is not a BaseException subclass",
+ typ);
+ return;
+ }
+
+ if (_PyErr_Occurred(tstate)) {
+ _PyErr_NormalizeException(tstate, &typ, &val, &tb);
+ if (tb != NULL) {
+ PyException_SetTraceback(val, tb);
+ Py_DECREF(tb);
+ }
+ Py_DECREF(typ);
+ PyObject *exc2 = _PyErr_GetRaisedException(tstate);
+ PyException_SetContext(exc2, val);
+ _PyErr_SetRaisedException(tstate, exc2);
+ }
+ else {
+ _PyErr_Restore(tstate, typ, val, tb);
+ }
+}
+
+/* Like PyErr_SetRaisedException(), but if an exception is already set,
+ set the context associated with it.
+
+ The caller is responsible for ensuring that this call won't create
+ any cycles in the exception context chain. */
+void
+_PyErr_ChainExceptions1(PyObject *exc)
+{
+ if (exc == NULL) {
+ return;
+ }
+ PyThreadState *tstate = _PyThreadState_GET();
+ if (_PyErr_Occurred(tstate)) {
+ PyObject *exc2 = _PyErr_GetRaisedException(tstate);
+ PyException_SetContext(exc2, exc);
+ _PyErr_SetRaisedException(tstate, exc2);
+ }
+ else {
+ _PyErr_SetRaisedException(tstate, exc);
+ }
+}
+
+/* Set the currently set exception's context to the given exception.
+
+ If the provided exc_info is NULL, then the current Python thread state's
+ exc_info will be used for the context instead.
+
+ This function can only be called when _PyErr_Occurred() is true.
+ Also, this function won't create any cycles in the exception context
+ chain to the extent that _PyErr_SetObject ensures this. */
+void
+_PyErr_ChainStackItem(_PyErr_StackItem *exc_info)
+{
+ PyThreadState *tstate = _PyThreadState_GET();
+ assert(_PyErr_Occurred(tstate));
+
+ int exc_info_given;
+ if (exc_info == NULL) {
+ exc_info_given = 0;
+ exc_info = tstate->exc_info;
+ } else {
+ exc_info_given = 1;
+ }
+
+ if (exc_info->exc_value == NULL || exc_info->exc_value == Py_None) {
+ return;
+ }
+
+ _PyErr_StackItem *saved_exc_info;
+ if (exc_info_given) {
+ /* Temporarily set the thread state's exc_info since this is what
+ _PyErr_SetObject uses for implicit exception chaining. */
+ saved_exc_info = tstate->exc_info;
+ tstate->exc_info = exc_info;
+ }
+
+ PyObject *typ, *val, *tb;
+ _PyErr_Fetch(tstate, &typ, &val, &tb);
+
+ /* _PyErr_SetObject sets the context from PyThreadState. */
+ _PyErr_SetObject(tstate, typ, val);
+ Py_DECREF(typ); // since _PyErr_Occurred was true
+ Py_XDECREF(val);
+ Py_XDECREF(tb);
+
+ if (exc_info_given) {
+ tstate->exc_info = saved_exc_info;
+ }
+}
+
+static PyObject *
+_PyErr_FormatVFromCause(PyThreadState *tstate, PyObject *exception,
+ const char *format, va_list vargs)
+{
+ assert(_PyErr_Occurred(tstate));
+ PyObject *exc = _PyErr_GetRaisedException(tstate);
+ assert(!_PyErr_Occurred(tstate));
+ _PyErr_FormatV(tstate, exception, format, vargs);
+ PyObject *exc2 = _PyErr_GetRaisedException(tstate);
+ PyException_SetCause(exc2, Py_NewRef(exc));
+ PyException_SetContext(exc2, Py_NewRef(exc));
+ Py_DECREF(exc);
+ _PyErr_SetRaisedException(tstate, exc2);
+ return NULL;
+}
+
+PyObject *
+_PyErr_FormatFromCauseTstate(PyThreadState *tstate, PyObject *exception,
+ const char *format, ...)
+{
+ va_list vargs;
+ va_start(vargs, format);
+ _PyErr_FormatVFromCause(tstate, exception, format, vargs);
+ va_end(vargs);
+ return NULL;
+}
+
+PyObject *
+_PyErr_FormatFromCause(PyObject *exception, const char *format, ...)
+{
+ PyThreadState *tstate = _PyThreadState_GET();
+ va_list vargs;
+ va_start(vargs, format);
+ _PyErr_FormatVFromCause(tstate, exception, format, vargs);
+ va_end(vargs);
+ return NULL;
+}
+
+/* Convenience functions to set a type error exception and return 0 */
+
+int
+PyErr_BadArgument(void)
+{
+ PyThreadState *tstate = _PyThreadState_GET();
+ _PyErr_SetString(tstate, PyExc_TypeError,
+ "bad argument type for built-in operation");
+ return 0;
+}
+
+PyObject *
+PyErr_NoMemory(void)
+{
+ PyThreadState *tstate = _PyThreadState_GET();
+ return _PyErr_NoMemory(tstate);
+}
+
+PyObject *
+PyErr_SetFromErrnoWithFilenameObject(PyObject *exc, PyObject *filenameObject)
+{
+ return PyErr_SetFromErrnoWithFilenameObjects(exc, filenameObject, NULL);
+}
+
+PyObject *
+PyErr_SetFromErrnoWithFilenameObjects(PyObject *exc, PyObject *filenameObject, PyObject *filenameObject2)
+{
+ PyThreadState *tstate = _PyThreadState_GET();
+ PyObject *message;
+ PyObject *v, *args;
+ int i = errno;
+#ifdef MS_WINDOWS
+ WCHAR *s_buf = NULL;
+#endif /* Unix/Windows */
+
+#ifdef EINTR
+ if (i == EINTR && PyErr_CheckSignals())
+ return NULL;
+#endif
+
+#ifndef MS_WINDOWS
+ if (i != 0) {
+ const char *s = strerror(i);
+ message = PyUnicode_DecodeLocale(s, "surrogateescape");
+ }
+ else {
+ /* Sometimes errno didn't get set */
+ message = PyUnicode_FromString("Error");
+ }
+#else
+ if (i == 0)
+ message = PyUnicode_FromString("Error"); /* Sometimes errno didn't get set */
+ else
+ {
+ /* Note that the Win32 errors do not lineup with the
+ errno error. So if the error is in the MSVC error
+ table, we use it, otherwise we assume it really _is_
+ a Win32 error code
+ */
+ if (i > 0 && i < _sys_nerr) {
+ message = PyUnicode_FromString(_sys_errlist[i]);
+ }
+ else {
+ int len = FormatMessageW(
+ FORMAT_MESSAGE_ALLOCATE_BUFFER |
+ FORMAT_MESSAGE_FROM_SYSTEM |
+ FORMAT_MESSAGE_IGNORE_INSERTS,
+ NULL, /* no message source */
+ i,
+ MAKELANGID(LANG_NEUTRAL,
+ SUBLANG_DEFAULT),
+ /* Default language */
+ (LPWSTR) &s_buf,
+ 0, /* size not used */
+ NULL); /* no args */
+ if (len==0) {
+ /* Only ever seen this in out-of-mem
+ situations */
+ s_buf = NULL;
+ message = PyUnicode_FromFormat("Windows Error 0x%x", i);
+ } else {
+ /* remove trailing cr/lf and dots */
+ while (len > 0 && (s_buf[len-1] <= L' ' || s_buf[len-1] == L'.'))
+ s_buf[--len] = L'\0';
+ message = PyUnicode_FromWideChar(s_buf, len);
+ }
+ }
+ }
+#endif /* Unix/Windows */
+
+ if (message == NULL)
+ {
+#ifdef MS_WINDOWS
+ LocalFree(s_buf);
+#endif
+ return NULL;
+ }
+
+ if (filenameObject != NULL) {
+ if (filenameObject2 != NULL)
+ args = Py_BuildValue("(iOOiO)", i, message, filenameObject, 0, filenameObject2);
+ else
+ args = Py_BuildValue("(iOO)", i, message, filenameObject);
+ } else {
+ assert(filenameObject2 == NULL);
+ args = Py_BuildValue("(iO)", i, message);
+ }
+ Py_DECREF(message);
+
+ if (args != NULL) {
+ v = PyObject_Call(exc, args, NULL);
+ Py_DECREF(args);
+ if (v != NULL) {
+ _PyErr_SetObject(tstate, (PyObject *) Py_TYPE(v), v);
+ Py_DECREF(v);
+ }
+ }
+#ifdef MS_WINDOWS
+ LocalFree(s_buf);
+#endif
+ return NULL;
+}
+
+PyObject *
+PyErr_SetFromErrnoWithFilename(PyObject *exc, const char *filename)
+{
+ PyObject *name = NULL;
+ if (filename) {
+ int i = errno;
+ name = PyUnicode_DecodeFSDefault(filename);
+ if (name == NULL) {
+ return NULL;
+ }
+ errno = i;
+ }
+ PyObject *result = PyErr_SetFromErrnoWithFilenameObjects(exc, name, NULL);
+ Py_XDECREF(name);
+ return result;
+}
+
+PyObject *
+PyErr_SetFromErrno(PyObject *exc)
+{
+ return PyErr_SetFromErrnoWithFilenameObjects(exc, NULL, NULL);
+}
+
+#ifdef MS_WINDOWS
+/* Windows specific error code handling */
+PyObject *PyErr_SetExcFromWindowsErrWithFilenameObject(
+ PyObject *exc,
+ int ierr,
+ PyObject *filenameObject)
+{
+ return PyErr_SetExcFromWindowsErrWithFilenameObjects(exc, ierr,
+ filenameObject, NULL);
+}
+
+PyObject *PyErr_SetExcFromWindowsErrWithFilenameObjects(
+ PyObject *exc,
+ int ierr,
+ PyObject *filenameObject,
+ PyObject *filenameObject2)
+{
+ PyThreadState *tstate = _PyThreadState_GET();
+ int len;
+ WCHAR *s_buf = NULL; /* Free via LocalFree */
+ PyObject *message;
+ PyObject *args, *v;
+
+ DWORD err = (DWORD)ierr;
+ if (err==0) {
+ err = GetLastError();
+ }
+
+ len = FormatMessageW(
+ /* Error API error */
+ FORMAT_MESSAGE_ALLOCATE_BUFFER |
+ FORMAT_MESSAGE_FROM_SYSTEM |
+ FORMAT_MESSAGE_IGNORE_INSERTS,
+ NULL, /* no message source */
+ err,
+ MAKELANGID(LANG_NEUTRAL,
+ SUBLANG_DEFAULT), /* Default language */
+ (LPWSTR) &s_buf,
+ 0, /* size not used */
+ NULL); /* no args */
+ if (len==0) {
+ /* Only seen this in out of mem situations */
+ message = PyUnicode_FromFormat("Windows Error 0x%x", err);
+ s_buf = NULL;
+ } else {
+ /* remove trailing cr/lf and dots */
+ while (len > 0 && (s_buf[len-1] <= L' ' || s_buf[len-1] == L'.'))
+ s_buf[--len] = L'\0';
+ message = PyUnicode_FromWideChar(s_buf, len);
+ }
+
+ if (message == NULL)
+ {
+ LocalFree(s_buf);
+ return NULL;
+ }
+
+ if (filenameObject == NULL) {
+ assert(filenameObject2 == NULL);
+ filenameObject = filenameObject2 = Py_None;
+ }
+ else if (filenameObject2 == NULL)
+ filenameObject2 = Py_None;
+ /* This is the constructor signature for OSError.
+ The POSIX translation will be figured out by the constructor. */
+ args = Py_BuildValue("(iOOiO)", 0, message, filenameObject, err, filenameObject2);
+ Py_DECREF(message);
+
+ if (args != NULL) {
+ v = PyObject_Call(exc, args, NULL);
+ Py_DECREF(args);
+ if (v != NULL) {
+ _PyErr_SetObject(tstate, (PyObject *) Py_TYPE(v), v);
+ Py_DECREF(v);
+ }
+ }
+ LocalFree(s_buf);
+ return NULL;
+}
+
+PyObject *PyErr_SetExcFromWindowsErrWithFilename(
+ PyObject *exc,
+ int ierr,
+ const char *filename)
+{
+ PyObject *name = NULL;
+ if (filename) {
+ if ((DWORD)ierr == 0) {
+ ierr = (int)GetLastError();
+ }
+ name = PyUnicode_DecodeFSDefault(filename);
+ if (name == NULL) {
+ return NULL;
+ }
+ }
+ PyObject *ret = PyErr_SetExcFromWindowsErrWithFilenameObjects(exc,
+ ierr,
+ name,
+ NULL);
+ Py_XDECREF(name);
+ return ret;
+}
+
+PyObject *PyErr_SetExcFromWindowsErr(PyObject *exc, int ierr)
+{
+ return PyErr_SetExcFromWindowsErrWithFilename(exc, ierr, NULL);
+}
+
+PyObject *PyErr_SetFromWindowsErr(int ierr)
+{
+ return PyErr_SetExcFromWindowsErrWithFilename(PyExc_OSError,
+ ierr, NULL);
+}
+
+PyObject *PyErr_SetFromWindowsErrWithFilename(
+ int ierr,
+ const char *filename)
+{
+ PyObject *name = NULL;
+ if (filename) {
+ if ((DWORD)ierr == 0) {
+ ierr = (int)GetLastError();
+ }
+ name = PyUnicode_DecodeFSDefault(filename);
+ if (name == NULL) {
+ return NULL;
+ }
+ }
+ PyObject *result = PyErr_SetExcFromWindowsErrWithFilenameObjects(
+ PyExc_OSError,
+ ierr, name, NULL);
+ Py_XDECREF(name);
+ return result;
+}
+
+#endif /* MS_WINDOWS */
+
+static PyObject *
+_PyErr_SetImportErrorSubclassWithNameFrom(
+ PyObject *exception, PyObject *msg,
+ PyObject *name, PyObject *path, PyObject* from_name)
+{
+ PyThreadState *tstate = _PyThreadState_GET();
+ int issubclass;
+ PyObject *kwargs, *error;
+
+ issubclass = PyObject_IsSubclass(exception, PyExc_ImportError);
+ if (issubclass < 0) {
+ return NULL;
+ }
+ else if (!issubclass) {
+ _PyErr_SetString(tstate, PyExc_TypeError,
+ "expected a subclass of ImportError");
+ return NULL;
+ }
+
+ if (msg == NULL) {
+ _PyErr_SetString(tstate, PyExc_TypeError,
+ "expected a message argument");
+ return NULL;
+ }
+
+ if (name == NULL) {
+ name = Py_None;
+ }
+ if (path == NULL) {
+ path = Py_None;
+ }
+ if (from_name == NULL) {
+ from_name = Py_None;
+ }
+
+
+ kwargs = PyDict_New();
+ if (kwargs == NULL) {
+ return NULL;
+ }
+ if (PyDict_SetItemString(kwargs, "name", name) < 0) {
+ goto done;
+ }
+ if (PyDict_SetItemString(kwargs, "path", path) < 0) {
+ goto done;
+ }
+ if (PyDict_SetItemString(kwargs, "name_from", from_name) < 0) {
+ goto done;
+ }
+
+ error = PyObject_VectorcallDict(exception, &msg, 1, kwargs);
+ if (error != NULL) {
+ _PyErr_SetObject(tstate, (PyObject *)Py_TYPE(error), error);
+ Py_DECREF(error);
+ }
+
+done:
+ Py_DECREF(kwargs);
+ return NULL;
+}
+
+
+PyObject *
+PyErr_SetImportErrorSubclass(PyObject *exception, PyObject *msg,
+ PyObject *name, PyObject *path)
+{
+ return _PyErr_SetImportErrorSubclassWithNameFrom(exception, msg, name, path, NULL);
+}
+
+PyObject *
+_PyErr_SetImportErrorWithNameFrom(PyObject *msg, PyObject *name, PyObject *path, PyObject* from_name)
+{
+ return _PyErr_SetImportErrorSubclassWithNameFrom(PyExc_ImportError, msg, name, path, from_name);
+}
+
+PyObject *
+PyErr_SetImportError(PyObject *msg, PyObject *name, PyObject *path)
+{
+ return PyErr_SetImportErrorSubclass(PyExc_ImportError, msg, name, path);
+}
+
+void
+_PyErr_BadInternalCall(const char *filename, int lineno)
+{
+ PyThreadState *tstate = _PyThreadState_GET();
+ _PyErr_Format(tstate, PyExc_SystemError,
+ "%s:%d: bad argument to internal function",
+ filename, lineno);
+}
+
+/* Remove the preprocessor macro for PyErr_BadInternalCall() so that we can
+ export the entry point for existing object code: */
+#undef PyErr_BadInternalCall
+void
+PyErr_BadInternalCall(void)
+{
+ assert(0 && "bad argument to internal function");
+ PyThreadState *tstate = _PyThreadState_GET();
+ _PyErr_SetString(tstate, PyExc_SystemError,
+ "bad argument to internal function");
+}
+#define PyErr_BadInternalCall() _PyErr_BadInternalCall(__FILE__, __LINE__)
+
+
+static PyObject *
+_PyErr_FormatV(PyThreadState *tstate, PyObject *exception,
+ const char *format, va_list vargs)
+{
+ PyObject* string;
+
+ /* Issue #23571: PyUnicode_FromFormatV() must not be called with an
+ exception set, it calls arbitrary Python code like PyObject_Repr() */
+ _PyErr_Clear(tstate);
+
+ string = PyUnicode_FromFormatV(format, vargs);
+ if (string != NULL) {
+ _PyErr_SetObject(tstate, exception, string);
+ Py_DECREF(string);
+ }
+ return NULL;
+}
+
+
+PyObject *
+PyErr_FormatV(PyObject *exception, const char *format, va_list vargs)
+{
+ PyThreadState *tstate = _PyThreadState_GET();
+ return _PyErr_FormatV(tstate, exception, format, vargs);
+}
+
+
+PyObject *
+_PyErr_Format(PyThreadState *tstate, PyObject *exception,
+ const char *format, ...)
+{
+ va_list vargs;
+ va_start(vargs, format);
+ _PyErr_FormatV(tstate, exception, format, vargs);
+ va_end(vargs);
+ return NULL;
+}
+
+
+PyObject *
+PyErr_Format(PyObject *exception, const char *format, ...)
+{
+ PyThreadState *tstate = _PyThreadState_GET();
+ va_list vargs;
+ va_start(vargs, format);
+ _PyErr_FormatV(tstate, exception, format, vargs);
+ va_end(vargs);
+ return NULL;
+}
+
+
+/* Adds a note to the current exception (if any) */
+void
+_PyErr_FormatNote(const char *format, ...)
+{
+ PyObject *exc = PyErr_GetRaisedException();
+ if (exc == NULL) {
+ return;
+ }
+ va_list vargs;
+ va_start(vargs, format);
+ PyObject *note = PyUnicode_FromFormatV(format, vargs);
+ va_end(vargs);
+ if (note == NULL) {
+ goto error;
+ }
+ int res = _PyException_AddNote(exc, note);
+ Py_DECREF(note);
+ if (res < 0) {
+ goto error;
+ }
+ PyErr_SetRaisedException(exc);
+ return;
+error:
+ _PyErr_ChainExceptions1(exc);
+}
+
+
+PyObject *
+PyErr_NewException(const char *name, PyObject *base, PyObject *dict)
+{
+ PyThreadState *tstate = _PyThreadState_GET();
+ PyObject *modulename = NULL;
+ PyObject *mydict = NULL;
+ PyObject *bases = NULL;
+ PyObject *result = NULL;
+
+#if defined(__has_feature)
+# if __has_feature(memory_sanitizer)
+ __msan_unpoison_string(name);
+# endif
+#endif
+ const char *dot = strrchr(name, '.');
+ if (dot == NULL) {
+ _PyErr_SetString(tstate, PyExc_SystemError,
+ "PyErr_NewException: name must be module.class");
+ return NULL;
+ }
+ if (base == NULL) {
+ base = PyExc_Exception;
+ }
+ if (dict == NULL) {
+ dict = mydict = PyDict_New();
+ if (dict == NULL)
+ goto failure;
+ }
+
+ int r = PyDict_Contains(dict, &_Py_ID(__module__));
+ if (r < 0) {
+ goto failure;
+ }
+ if (r == 0) {
+ modulename = PyUnicode_FromStringAndSize(name,
+ (Py_ssize_t)(dot-name));
+ if (modulename == NULL)
+ goto failure;
+ if (PyDict_SetItem(dict, &_Py_ID(__module__), modulename) != 0)
+ goto failure;
+ }
+ if (PyTuple_Check(base)) {
+ bases = Py_NewRef(base);
+ } else {
+ bases = PyTuple_Pack(1, base);
+ if (bases == NULL)
+ goto failure;
+ }
+ /* Create a real class. */
+ result = PyObject_CallFunction((PyObject *)&PyType_Type, "sOO",
+ dot+1, bases, dict);
+ failure:
+ Py_XDECREF(bases);
+ Py_XDECREF(mydict);
+ Py_XDECREF(modulename);
+ return result;
+}
+
+
+/* Create an exception with docstring */
+PyObject *
+PyErr_NewExceptionWithDoc(const char *name, const char *doc,
+ PyObject *base, PyObject *dict)
+{
+ int result;
+ PyObject *ret = NULL;
+ PyObject *mydict = NULL; /* points to the dict only if we create it */
+ PyObject *docobj;
+
+ if (dict == NULL) {
+ dict = mydict = PyDict_New();
+ if (dict == NULL) {
+ return NULL;
+ }
+ }
+
+ if (doc != NULL) {
+ docobj = PyUnicode_FromString(doc);
+ if (docobj == NULL)
+ goto failure;
+ result = PyDict_SetItemString(dict, "__doc__", docobj);
+ Py_DECREF(docobj);
+ if (result < 0)
+ goto failure;
+ }
+
+ ret = PyErr_NewException(name, base, dict);
+ failure:
+ Py_XDECREF(mydict);
+ return ret;
+}
+
+
+PyDoc_STRVAR(UnraisableHookArgs__doc__,
+"UnraisableHookArgs\n\
+\n\
+Type used to pass arguments to sys.unraisablehook.");
+
+static PyTypeObject UnraisableHookArgsType;
+
+static PyStructSequence_Field UnraisableHookArgs_fields[] = {
+ {"exc_type", "Exception type"},
+ {"exc_value", "Exception value"},
+ {"exc_traceback", "Exception traceback"},
+ {"err_msg", "Error message"},
+ {"object", "Object causing the exception"},
+ {0}
+};
+
+static PyStructSequence_Desc UnraisableHookArgs_desc = {
+ .name = "UnraisableHookArgs",
+ .doc = UnraisableHookArgs__doc__,
+ .fields = UnraisableHookArgs_fields,
+ .n_in_sequence = 5
+};
+
+
+PyStatus
+_PyErr_InitTypes(PyInterpreterState *interp)
+{
+ if (_PyStructSequence_InitBuiltin(interp, &UnraisableHookArgsType,
+ &UnraisableHookArgs_desc) < 0)
+ {
+ return _PyStatus_ERR("failed to initialize UnraisableHookArgs type");
+ }
+ return _PyStatus_OK();
+}
+
+
+void
+_PyErr_FiniTypes(PyInterpreterState *interp)
+{
+ _PyStructSequence_FiniBuiltin(interp, &UnraisableHookArgsType);
+}
+
+
+static PyObject *
+make_unraisable_hook_args(PyThreadState *tstate, PyObject *exc_type,
+ PyObject *exc_value, PyObject *exc_tb,
+ PyObject *err_msg, PyObject *obj)
+{
+ PyObject *args = PyStructSequence_New(&UnraisableHookArgsType);
+ if (args == NULL) {
+ return NULL;
+ }
+
+ Py_ssize_t pos = 0;
+#define ADD_ITEM(exc_type) \
+ do { \
+ if (exc_type == NULL) { \
+ exc_type = Py_None; \
+ } \
+ PyStructSequence_SET_ITEM(args, pos++, Py_NewRef(exc_type)); \
+ } while (0)
+
+
+ ADD_ITEM(exc_type);
+ ADD_ITEM(exc_value);
+ ADD_ITEM(exc_tb);
+ ADD_ITEM(err_msg);
+ ADD_ITEM(obj);
+#undef ADD_ITEM
+
+ if (_PyErr_Occurred(tstate)) {
+ Py_DECREF(args);
+ return NULL;
+ }
+ return args;
+}
+
+
+
+/* Default implementation of sys.unraisablehook.
+
+ It can be called to log the exception of a custom sys.unraisablehook.
+
+ Do nothing if sys.stderr attribute doesn't exist or is set to None. */
+static int
+write_unraisable_exc_file(PyThreadState *tstate, PyObject *exc_type,
+ PyObject *exc_value, PyObject *exc_tb,
+ PyObject *err_msg, PyObject *obj, PyObject *file)
+{
+ if (obj != NULL && obj != Py_None) {
+ if (err_msg != NULL && err_msg != Py_None) {
+ if (PyFile_WriteObject(err_msg, file, Py_PRINT_RAW) < 0) {
+ return -1;
+ }
+ if (PyFile_WriteString(": ", file) < 0) {
+ return -1;
+ }
+ }
+ else {
+ if (PyFile_WriteString("Exception ignored in: ", file) < 0) {
+ return -1;
+ }
+ }
+
+ if (PyFile_WriteObject(obj, file, 0) < 0) {
+ _PyErr_Clear(tstate);
+ if (PyFile_WriteString("<object repr() failed>", file) < 0) {
+ return -1;
+ }
+ }
+ if (PyFile_WriteString("\n", file) < 0) {
+ return -1;
+ }
+ }
+ else if (err_msg != NULL && err_msg != Py_None) {
+ if (PyFile_WriteObject(err_msg, file, Py_PRINT_RAW) < 0) {
+ return -1;
+ }
+ if (PyFile_WriteString(":\n", file) < 0) {
+ return -1;
+ }
+ }
+
+ if (exc_tb != NULL && exc_tb != Py_None) {
+ if (PyTraceBack_Print(exc_tb, file) < 0) {
+ /* continue even if writing the traceback failed */
+ _PyErr_Clear(tstate);
+ }
+ }
+
+ if (exc_type == NULL || exc_type == Py_None) {
+ return -1;
+ }
+
+ assert(PyExceptionClass_Check(exc_type));
+
+ PyObject *modulename = PyObject_GetAttr(exc_type, &_Py_ID(__module__));
+ if (modulename == NULL || !PyUnicode_Check(modulename)) {
+ Py_XDECREF(modulename);
+ _PyErr_Clear(tstate);
+ if (PyFile_WriteString("<unknown>", file) < 0) {
+ return -1;
+ }
+ }
+ else {
+ if (!_PyUnicode_Equal(modulename, &_Py_ID(builtins)) &&
+ !_PyUnicode_Equal(modulename, &_Py_ID(__main__))) {
+ if (PyFile_WriteObject(modulename, file, Py_PRINT_RAW) < 0) {
+ Py_DECREF(modulename);
+ return -1;
+ }
+ Py_DECREF(modulename);
+ if (PyFile_WriteString(".", file) < 0) {
+ return -1;
+ }
+ }
+ else {
+ Py_DECREF(modulename);
+ }
+ }
+
+ PyObject *qualname = PyType_GetQualName((PyTypeObject *)exc_type);
+ if (qualname == NULL || !PyUnicode_Check(qualname)) {
+ Py_XDECREF(qualname);
+ _PyErr_Clear(tstate);
+ if (PyFile_WriteString("<unknown>", file) < 0) {
+ return -1;
+ }
+ }
+ else {
+ if (PyFile_WriteObject(qualname, file, Py_PRINT_RAW) < 0) {
+ Py_DECREF(qualname);
+ return -1;
+ }
+ Py_DECREF(qualname);
+ }
+
+ if (exc_value && exc_value != Py_None) {
+ if (PyFile_WriteString(": ", file) < 0) {
+ return -1;
+ }
+ if (PyFile_WriteObject(exc_value, file, Py_PRINT_RAW) < 0) {
+ _PyErr_Clear(tstate);
+ if (PyFile_WriteString("<exception str() failed>", file) < 0) {
+ return -1;
+ }
+ }
+ }
+
+ if (PyFile_WriteString("\n", file) < 0) {
+ return -1;
+ }
+
+ /* Explicitly call file.flush() */
+ PyObject *res = _PyObject_CallMethodNoArgs(file, &_Py_ID(flush));
+ if (!res) {
+ return -1;
+ }
+ Py_DECREF(res);
+
+ return 0;
+}
+
+
+static int
+write_unraisable_exc(PyThreadState *tstate, PyObject *exc_type,
+ PyObject *exc_value, PyObject *exc_tb, PyObject *err_msg,
+ PyObject *obj)
+{
+ PyObject *file = _PySys_GetAttr(tstate, &_Py_ID(stderr));
+ if (file == NULL || file == Py_None) {
+ return 0;
+ }
+
+ /* Hold a strong reference to ensure that sys.stderr doesn't go away
+ while we use it */
+ Py_INCREF(file);
+ int res = write_unraisable_exc_file(tstate, exc_type, exc_value, exc_tb,
+ err_msg, obj, file);
+ Py_DECREF(file);
+
+ return res;
+}
+
+
+PyObject*
+_PyErr_WriteUnraisableDefaultHook(PyObject *args)
+{
+ PyThreadState *tstate = _PyThreadState_GET();
+
+ if (!Py_IS_TYPE(args, &UnraisableHookArgsType)) {
+ _PyErr_SetString(tstate, PyExc_TypeError,
+ "sys.unraisablehook argument type "
+ "must be UnraisableHookArgs");
+ return NULL;
+ }
+
+ /* Borrowed references */
+ PyObject *exc_type = PyStructSequence_GET_ITEM(args, 0);
+ PyObject *exc_value = PyStructSequence_GET_ITEM(args, 1);
+ PyObject *exc_tb = PyStructSequence_GET_ITEM(args, 2);
+ PyObject *err_msg = PyStructSequence_GET_ITEM(args, 3);
+ PyObject *obj = PyStructSequence_GET_ITEM(args, 4);
+
+ if (write_unraisable_exc(tstate, exc_type, exc_value, exc_tb, err_msg, obj) < 0) {
+ return NULL;
+ }
+ Py_RETURN_NONE;
+}
+
+
+/* Call sys.unraisablehook().
+
+ This function can be used when an exception has occurred but there is no way
+ for Python to handle it. For example, when a destructor raises an exception
+ or during garbage collection (gc.collect()).
+
+ If err_msg_str is non-NULL, the error message is formatted as:
+ "Exception ignored %s" % err_msg_str. Otherwise, use "Exception ignored in"
+ error message.
+
+ An exception must be set when calling this function. */
+void
+_PyErr_WriteUnraisableMsg(const char *err_msg_str, PyObject *obj)
+{
+ PyThreadState *tstate = _PyThreadState_GET();
+ _Py_EnsureTstateNotNULL(tstate);
+
+ PyObject *err_msg = NULL;
+ PyObject *exc_type, *exc_value, *exc_tb;
+ _PyErr_Fetch(tstate, &exc_type, &exc_value, &exc_tb);
+
+ assert(exc_type != NULL);
+
+ if (exc_type == NULL) {
+ /* sys.unraisablehook requires that at least exc_type is set */
+ goto default_hook;
+ }
+
+ if (exc_tb == NULL) {
+ PyFrameObject *frame = PyThreadState_GetFrame(tstate);
+ if (frame != NULL) {
+ exc_tb = _PyTraceBack_FromFrame(NULL, frame);
+ if (exc_tb == NULL) {
+ _PyErr_Clear(tstate);
+ }
+ Py_DECREF(frame);
+ }
+ }
+
+ _PyErr_NormalizeException(tstate, &exc_type, &exc_value, &exc_tb);
+
+ if (exc_tb != NULL && exc_tb != Py_None && PyTraceBack_Check(exc_tb)) {
+ if (PyException_SetTraceback(exc_value, exc_tb) < 0) {
+ _PyErr_Clear(tstate);
+ }
+ }
+
+ if (err_msg_str != NULL) {
+ err_msg = PyUnicode_FromFormat("Exception ignored %s", err_msg_str);
+ if (err_msg == NULL) {
+ PyErr_Clear();
+ }
+ }
+
+ PyObject *hook_args = make_unraisable_hook_args(
+ tstate, exc_type, exc_value, exc_tb, err_msg, obj);
+ if (hook_args == NULL) {
+ err_msg_str = ("Exception ignored on building "
+ "sys.unraisablehook arguments");
+ goto error;
+ }
+
+ PyObject *hook = _PySys_GetAttr(tstate, &_Py_ID(unraisablehook));
+ if (hook == NULL) {
+ Py_DECREF(hook_args);
+ goto default_hook;
+ }
+
+ if (_PySys_Audit(tstate, "sys.unraisablehook", "OO", hook, hook_args) < 0) {
+ Py_DECREF(hook_args);
+ err_msg_str = "Exception ignored in audit hook";
+ obj = NULL;
+ goto error;
+ }
+
+ if (hook == Py_None) {
+ Py_DECREF(hook_args);
+ goto default_hook;
+ }
+
+ PyObject *res = PyObject_CallOneArg(hook, hook_args);
+ Py_DECREF(hook_args);
+ if (res != NULL) {
+ Py_DECREF(res);
+ goto done;
+ }
+
+ /* sys.unraisablehook failed: log its error using default hook */
+ obj = hook;
+ err_msg_str = NULL;
+
+error:
+ /* err_msg_str and obj have been updated and we have a new exception */
+ Py_XSETREF(err_msg, PyUnicode_FromString(err_msg_str ?
+ err_msg_str : "Exception ignored in sys.unraisablehook"));
+ Py_XDECREF(exc_type);
+ Py_XDECREF(exc_value);
+ Py_XDECREF(exc_tb);
+ _PyErr_Fetch(tstate, &exc_type, &exc_value, &exc_tb);
+
+default_hook:
+ /* Call the default unraisable hook (ignore failure) */
+ (void)write_unraisable_exc(tstate, exc_type, exc_value, exc_tb,
+ err_msg, obj);
+
+done:
+ Py_XDECREF(exc_type);
+ Py_XDECREF(exc_value);
+ Py_XDECREF(exc_tb);
+ Py_XDECREF(err_msg);
+ _PyErr_Clear(tstate); /* Just in case */
+}
+
+
+void
+PyErr_WriteUnraisable(PyObject *obj)
+{
+ _PyErr_WriteUnraisableMsg(NULL, obj);
+}
+
+
+void
+PyErr_SyntaxLocation(const char *filename, int lineno)
+{
+ PyErr_SyntaxLocationEx(filename, lineno, -1);
+}
+
+
+/* Set file and line information for the current exception.
+ If the exception is not a SyntaxError, also sets additional attributes
+ to make printing of exceptions believe it is a syntax error. */
+
+static void
+PyErr_SyntaxLocationObjectEx(PyObject *filename, int lineno, int col_offset,
+ int end_lineno, int end_col_offset)
+{
+ PyThreadState *tstate = _PyThreadState_GET();
+
+ /* add attributes for the line number and filename for the error */
+ PyObject *exc = _PyErr_GetRaisedException(tstate);
+ /* XXX check that it is, indeed, a syntax error. It might not
+ * be, though. */
+ PyObject *tmp = PyLong_FromLong(lineno);
+ if (tmp == NULL) {
+ _PyErr_Clear(tstate);
+ }
+ else {
+ if (PyObject_SetAttr(exc, &_Py_ID(lineno), tmp)) {
+ _PyErr_Clear(tstate);
+ }
+ Py_DECREF(tmp);
+ }
+ tmp = NULL;
+ if (col_offset >= 0) {
+ tmp = PyLong_FromLong(col_offset);
+ if (tmp == NULL) {
+ _PyErr_Clear(tstate);
+ }
+ }
+ if (PyObject_SetAttr(exc, &_Py_ID(offset), tmp ? tmp : Py_None)) {
+ _PyErr_Clear(tstate);
+ }
+ Py_XDECREF(tmp);
+
+ tmp = NULL;
+ if (end_lineno >= 0) {
+ tmp = PyLong_FromLong(end_lineno);
+ if (tmp == NULL) {
+ _PyErr_Clear(tstate);
+ }
+ }
+ if (PyObject_SetAttr(exc, &_Py_ID(end_lineno), tmp ? tmp : Py_None)) {
+ _PyErr_Clear(tstate);
+ }
+ Py_XDECREF(tmp);
+
+ tmp = NULL;
+ if (end_col_offset >= 0) {
+ tmp = PyLong_FromLong(end_col_offset);
+ if (tmp == NULL) {
+ _PyErr_Clear(tstate);
+ }
+ }
+ if (PyObject_SetAttr(exc, &_Py_ID(end_offset), tmp ? tmp : Py_None)) {
+ _PyErr_Clear(tstate);
+ }
+ Py_XDECREF(tmp);
+
+ tmp = NULL;
+ if (filename != NULL) {
+ if (PyObject_SetAttr(exc, &_Py_ID(filename), filename)) {
+ _PyErr_Clear(tstate);
+ }
+
+ tmp = PyErr_ProgramTextObject(filename, lineno);
+ if (tmp) {
+ if (PyObject_SetAttr(exc, &_Py_ID(text), tmp)) {
+ _PyErr_Clear(tstate);
+ }
+ Py_DECREF(tmp);
+ }
+ else {
+ _PyErr_Clear(tstate);
+ }
+ }
+ if ((PyObject *)Py_TYPE(exc) != PyExc_SyntaxError) {
+ if (_PyObject_LookupAttr(exc, &_Py_ID(msg), &tmp) < 0) {
+ _PyErr_Clear(tstate);
+ }
+ else if (tmp) {
+ Py_DECREF(tmp);
+ }
+ else {
+ tmp = PyObject_Str(exc);
+ if (tmp) {
+ if (PyObject_SetAttr(exc, &_Py_ID(msg), tmp)) {
+ _PyErr_Clear(tstate);
+ }
+ Py_DECREF(tmp);
+ }
+ else {
+ _PyErr_Clear(tstate);
+ }
+ }
+
+ if (_PyObject_LookupAttr(exc, &_Py_ID(print_file_and_line), &tmp) < 0) {
+ _PyErr_Clear(tstate);
+ }
+ else if (tmp) {
+ Py_DECREF(tmp);
+ }
+ else {
+ if (PyObject_SetAttr(exc, &_Py_ID(print_file_and_line), Py_None)) {
+ _PyErr_Clear(tstate);
+ }
+ }
+ }
+ _PyErr_SetRaisedException(tstate, exc);
+}
+
+void
+PyErr_SyntaxLocationObject(PyObject *filename, int lineno, int col_offset) {
+ PyErr_SyntaxLocationObjectEx(filename, lineno, col_offset, lineno, -1);
+}
+
+void
+PyErr_RangedSyntaxLocationObject(PyObject *filename, int lineno, int col_offset,
+ int end_lineno, int end_col_offset) {
+ PyErr_SyntaxLocationObjectEx(filename, lineno, col_offset, end_lineno, end_col_offset);
+}
+
+void
+PyErr_SyntaxLocationEx(const char *filename, int lineno, int col_offset)
+{
+ PyThreadState *tstate = _PyThreadState_GET();
+ PyObject *fileobj;
+ if (filename != NULL) {
+ fileobj = PyUnicode_DecodeFSDefault(filename);
+ if (fileobj == NULL) {
+ _PyErr_Clear(tstate);
+ }
+ }
+ else {
+ fileobj = NULL;
+ }
+ PyErr_SyntaxLocationObject(fileobj, lineno, col_offset);
+ Py_XDECREF(fileobj);
+}
+
+/* Attempt to load the line of text that the exception refers to. If it
+ fails, it will return NULL but will not set an exception.
+
+ XXX The functionality of this function is quite similar to the
+ functionality in tb_displayline() in traceback.c. */
+
+static PyObject *
+err_programtext(PyThreadState *tstate, FILE *fp, int lineno, const char* encoding)
+{
+ int i;
+ char linebuf[1000];
+ if (fp == NULL) {
+ return NULL;
+ }
+
+ for (i = 0; i < lineno; i++) {
+ char *pLastChar = &linebuf[sizeof(linebuf) - 2];
+ do {
+ *pLastChar = '\0';
+ if (Py_UniversalNewlineFgets(linebuf, sizeof linebuf,
+ fp, NULL) == NULL) {
+ goto after_loop;
+ }
+ /* fgets read *something*; if it didn't get as
+ far as pLastChar, it must have found a newline
+ or hit the end of the file; if pLastChar is \n,
+ it obviously found a newline; else we haven't
+ yet seen a newline, so must continue */
+ } while (*pLastChar != '\0' && *pLastChar != '\n');
+ }
+
+after_loop:
+ fclose(fp);
+ if (i == lineno) {
+ PyObject *res;
+ if (encoding != NULL) {
+ res = PyUnicode_Decode(linebuf, strlen(linebuf), encoding, "replace");
+ } else {
+ res = PyUnicode_FromString(linebuf);
+ }
+ if (res == NULL)
+ _PyErr_Clear(tstate);
+ return res;
+ }
+ return NULL;
+}
+
+PyObject *
+PyErr_ProgramText(const char *filename, int lineno)
+{
+ if (filename == NULL) {
+ return NULL;
+ }
+
+ PyObject *filename_obj = PyUnicode_DecodeFSDefault(filename);
+ if (filename_obj == NULL) {
+ PyErr_Clear();
+ return NULL;
+ }
+ PyObject *res = PyErr_ProgramTextObject(filename_obj, lineno);
+ Py_DECREF(filename_obj);
+ return res;
+}
+
+PyObject *
+_PyErr_ProgramDecodedTextObject(PyObject *filename, int lineno, const char* encoding)
+{
+ if (filename == NULL || lineno <= 0) {
+ return NULL;
+ }
+
+ PyThreadState *tstate = _PyThreadState_GET();
+ FILE *fp = _Py_fopen_obj(filename, "r" PY_STDIOTEXTMODE);
+ if (fp == NULL) {
+ _PyErr_Clear(tstate);
+ return NULL;
+ }
+ return err_programtext(tstate, fp, lineno, encoding);
+}
+
+PyObject *
+PyErr_ProgramTextObject(PyObject *filename, int lineno)
+{
+ return _PyErr_ProgramDecodedTextObject(filename, lineno, NULL);
+}
+
+#ifdef __cplusplus
+}
+#endif
diff --git a/contrib/tools/python3/Python/fileutils.c b/contrib/tools/python3/Python/fileutils.c
new file mode 100644
index 00000000000..45de2b891d9
--- /dev/null
+++ b/contrib/tools/python3/Python/fileutils.c
@@ -0,0 +1,2942 @@
+#include "Python.h"
+#include "pycore_fileutils.h" // fileutils definitions
+#include "pycore_runtime.h" // _PyRuntime
+#include "osdefs.h" // SEP
+#include <locale.h>
+#include <stdlib.h> // mbstowcs()
+
+#ifdef MS_WINDOWS
+# include <malloc.h>
+# include <windows.h>
+# include <winioctl.h> // FILE_DEVICE_* constants
+# include "pycore_fileutils_windows.h" // FILE_STAT_BASIC_INFORMATION
+# if defined(MS_WINDOWS_GAMES) && !defined(MS_WINDOWS_DESKTOP)
+# define PATHCCH_ALLOW_LONG_PATHS 0x01
+# else
+# include <pathcch.h> // PathCchCombineEx
+# endif
+extern int winerror_to_errno(int);
+#endif
+
+#ifdef HAVE_LANGINFO_H
+#include <langinfo.h>
+#endif
+
+#ifdef HAVE_SYS_IOCTL_H
+#include <sys/ioctl.h>
+#endif
+
+#ifdef HAVE_NON_UNICODE_WCHAR_T_REPRESENTATION
+#error #include <iconv.h>
+#endif
+
+#ifdef HAVE_FCNTL_H
+#include <fcntl.h>
+#endif /* HAVE_FCNTL_H */
+
+#ifdef O_CLOEXEC
+/* Does open() support the O_CLOEXEC flag? Possible values:
+
+ -1: unknown
+ 0: open() ignores O_CLOEXEC flag, ex: Linux kernel older than 2.6.23
+ 1: open() supports O_CLOEXEC flag, close-on-exec is set
+
+ The flag is used by _Py_open(), _Py_open_noraise(), io.FileIO
+ and os.open(). */
+int _Py_open_cloexec_works = -1;
+#endif
+
+// The value must be the same in unicodeobject.c.
+#define MAX_UNICODE 0x10ffff
+
+// mbstowcs() and mbrtowc() errors
+static const size_t DECODE_ERROR = ((size_t)-1);
+static const size_t INCOMPLETE_CHARACTER = (size_t)-2;
+
+
+static int
+get_surrogateescape(_Py_error_handler errors, int *surrogateescape)
+{
+ switch (errors)
+ {
+ case _Py_ERROR_STRICT:
+ *surrogateescape = 0;
+ return 0;
+ case _Py_ERROR_SURROGATEESCAPE:
+ *surrogateescape = 1;
+ return 0;
+ default:
+ return -1;
+ }
+}
+
+
+PyObject *
+_Py_device_encoding(int fd)
+{
+ int valid;
+ Py_BEGIN_ALLOW_THREADS
+ _Py_BEGIN_SUPPRESS_IPH
+ valid = isatty(fd);
+ _Py_END_SUPPRESS_IPH
+ Py_END_ALLOW_THREADS
+ if (!valid)
+ Py_RETURN_NONE;
+
+#ifdef MS_WINDOWS
+#ifdef HAVE_WINDOWS_CONSOLE_IO
+ UINT cp;
+ if (fd == 0)
+ cp = GetConsoleCP();
+ else if (fd == 1 || fd == 2)
+ cp = GetConsoleOutputCP();
+ else
+ cp = 0;
+ /* GetConsoleCP() and GetConsoleOutputCP() return 0 if the application
+ has no console */
+ if (cp == 0) {
+ Py_RETURN_NONE;
+ }
+
+ return PyUnicode_FromFormat("cp%u", (unsigned int)cp);
+#else
+ Py_RETURN_NONE;
+#endif /* HAVE_WINDOWS_CONSOLE_IO */
+#else
+ if (_PyRuntime.preconfig.utf8_mode) {
+ _Py_DECLARE_STR(utf_8, "utf-8");
+ return Py_NewRef(&_Py_STR(utf_8));
+ }
+ return _Py_GetLocaleEncodingObject();
+#endif
+}
+
+
+static size_t
+is_valid_wide_char(wchar_t ch)
+{
+#ifdef HAVE_NON_UNICODE_WCHAR_T_REPRESENTATION
+ /* Oracle Solaris doesn't use Unicode code points as wchar_t encoding
+ for non-Unicode locales, which makes values higher than MAX_UNICODE
+ possibly valid. */
+ return 1;
+#endif
+ if (Py_UNICODE_IS_SURROGATE(ch)) {
+ // Reject lone surrogate characters
+ return 0;
+ }
+ if (ch > MAX_UNICODE) {
+ // bpo-35883: Reject characters outside [U+0000; U+10ffff] range.
+ // The glibc mbstowcs() UTF-8 decoder does not respect the RFC 3629,
+ // it creates characters outside the [U+0000; U+10ffff] range:
+ // https://sourceware.org/bugzilla/show_bug.cgi?id=2373
+ return 0;
+ }
+ return 1;
+}
+
+
+static size_t
+_Py_mbstowcs(wchar_t *dest, const char *src, size_t n)
+{
+ size_t count = mbstowcs(dest, src, n);
+ if (dest != NULL && count != DECODE_ERROR) {
+ for (size_t i=0; i < count; i++) {
+ wchar_t ch = dest[i];
+ if (!is_valid_wide_char(ch)) {
+ return DECODE_ERROR;
+ }
+ }
+ }
+ return count;
+}
+
+
+#ifdef HAVE_MBRTOWC
+static size_t
+_Py_mbrtowc(wchar_t *pwc, const char *str, size_t len, mbstate_t *pmbs)
+{
+ assert(pwc != NULL);
+ size_t count = mbrtowc(pwc, str, len, pmbs);
+ if (count != 0 && count != DECODE_ERROR && count != INCOMPLETE_CHARACTER) {
+ if (!is_valid_wide_char(*pwc)) {
+ return DECODE_ERROR;
+ }
+ }
+ return count;
+}
+#endif
+
+
+#if !defined(_Py_FORCE_UTF8_FS_ENCODING) && !defined(MS_WINDOWS)
+
+#define USE_FORCE_ASCII
+
+extern int _Py_normalize_encoding(const char *, char *, size_t);
+
+/* Workaround FreeBSD and OpenIndiana locale encoding issue with the C locale
+ and POSIX locale. nl_langinfo(CODESET) announces an alias of the
+ ASCII encoding, whereas mbstowcs() and wcstombs() functions use the
+ ISO-8859-1 encoding. The problem is that os.fsencode() and os.fsdecode() use
+ locale.getpreferredencoding() codec. For example, if command line arguments
+ are decoded by mbstowcs() and encoded back by os.fsencode(), we get a
+ UnicodeEncodeError instead of retrieving the original byte string.
+
+ The workaround is enabled if setlocale(LC_CTYPE, NULL) returns "C",
+ nl_langinfo(CODESET) announces "ascii" (or an alias to ASCII), and at least
+ one byte in range 0x80-0xff can be decoded from the locale encoding. The
+ workaround is also enabled on error, for example if getting the locale
+ failed.
+
+ On HP-UX with the C locale or the POSIX locale, nl_langinfo(CODESET)
+ announces "roman8" but mbstowcs() uses Latin1 in practice. Force also the
+ ASCII encoding in this case.
+
+ Values of force_ascii:
+
+ 1: the workaround is used: Py_EncodeLocale() uses
+ encode_ascii_surrogateescape() and Py_DecodeLocale() uses
+ decode_ascii()
+ 0: the workaround is not used: Py_EncodeLocale() uses wcstombs() and
+ Py_DecodeLocale() uses mbstowcs()
+ -1: unknown, need to call check_force_ascii() to get the value
+*/
+#define force_ascii (_PyRuntime.fileutils.force_ascii)
+
+static int
+check_force_ascii(void)
+{
+ char *loc = setlocale(LC_CTYPE, NULL);
+ if (loc == NULL) {
+ goto error;
+ }
+ if (strcmp(loc, "C") != 0 && strcmp(loc, "POSIX") != 0) {
+ /* the LC_CTYPE locale is different than C and POSIX */
+ return 0;
+ }
+
+#if defined(HAVE_LANGINFO_H) && defined(CODESET)
+ const char *codeset = nl_langinfo(CODESET);
+ if (!codeset || codeset[0] == '\0') {
+ /* CODESET is not set or empty */
+ goto error;
+ }
+
+ char encoding[20]; /* longest name: "iso_646.irv_1991\0" */
+ if (!_Py_normalize_encoding(codeset, encoding, sizeof(encoding))) {
+ goto error;
+ }
+
+#ifdef __hpux
+ if (strcmp(encoding, "roman8") == 0) {
+ unsigned char ch;
+ wchar_t wch;
+ size_t res;
+
+ ch = (unsigned char)0xA7;
+ res = _Py_mbstowcs(&wch, (char*)&ch, 1);
+ if (res != DECODE_ERROR && wch == L'\xA7') {
+ /* On HP-UX with C locale or the POSIX locale,
+ nl_langinfo(CODESET) announces "roman8", whereas mbstowcs() uses
+ Latin1 encoding in practice. Force ASCII in this case.
+
+ Roman8 decodes 0xA7 to U+00CF. Latin1 decodes 0xA7 to U+00A7. */
+ return 1;
+ }
+ }
+#else
+ const char* ascii_aliases[] = {
+ "ascii",
+ /* Aliases from Lib/encodings/aliases.py */
+ "646",
+ "ansi_x3.4_1968",
+ "ansi_x3.4_1986",
+ "ansi_x3_4_1968",
+ "cp367",
+ "csascii",
+ "ibm367",
+ "iso646_us",
+ "iso_646.irv_1991",
+ "iso_ir_6",
+ "us",
+ "us_ascii",
+ NULL
+ };
+
+ int is_ascii = 0;
+ for (const char **alias=ascii_aliases; *alias != NULL; alias++) {
+ if (strcmp(encoding, *alias) == 0) {
+ is_ascii = 1;
+ break;
+ }
+ }
+ if (!is_ascii) {
+ /* nl_langinfo(CODESET) is not "ascii" or an alias of ASCII */
+ return 0;
+ }
+
+ for (unsigned int i=0x80; i<=0xff; i++) {
+ char ch[1];
+ wchar_t wch[1];
+ size_t res;
+
+ unsigned uch = (unsigned char)i;
+ ch[0] = (char)uch;
+ res = _Py_mbstowcs(wch, ch, 1);
+ if (res != DECODE_ERROR) {
+ /* decoding a non-ASCII character from the locale encoding succeed:
+ the locale encoding is not ASCII, force ASCII */
+ return 1;
+ }
+ }
+ /* None of the bytes in the range 0x80-0xff can be decoded from the locale
+ encoding: the locale encoding is really ASCII */
+#endif /* !defined(__hpux) */
+ return 0;
+#else
+ /* nl_langinfo(CODESET) is not available: always force ASCII */
+ return 1;
+#endif /* defined(HAVE_LANGINFO_H) && defined(CODESET) */
+
+error:
+ /* if an error occurred, force the ASCII encoding */
+ return 1;
+}
+
+
+int
+_Py_GetForceASCII(void)
+{
+ if (force_ascii == -1) {
+ force_ascii = check_force_ascii();
+ }
+ return force_ascii;
+}
+
+
+void
+_Py_ResetForceASCII(void)
+{
+ force_ascii = -1;
+}
+
+
+static int
+encode_ascii(const wchar_t *text, char **str,
+ size_t *error_pos, const char **reason,
+ int raw_malloc, _Py_error_handler errors)
+{
+ char *result = NULL, *out;
+ size_t len, i;
+ wchar_t ch;
+
+ int surrogateescape;
+ if (get_surrogateescape(errors, &surrogateescape) < 0) {
+ return -3;
+ }
+
+ len = wcslen(text);
+
+ /* +1 for NULL byte */
+ if (raw_malloc) {
+ result = PyMem_RawMalloc(len + 1);
+ }
+ else {
+ result = PyMem_Malloc(len + 1);
+ }
+ if (result == NULL) {
+ return -1;
+ }
+
+ out = result;
+ for (i=0; i<len; i++) {
+ ch = text[i];
+
+ if (ch <= 0x7f) {
+ /* ASCII character */
+ *out++ = (char)ch;
+ }
+ else if (surrogateescape && 0xdc80 <= ch && ch <= 0xdcff) {
+ /* UTF-8b surrogate */
+ *out++ = (char)(ch - 0xdc00);
+ }
+ else {
+ if (raw_malloc) {
+ PyMem_RawFree(result);
+ }
+ else {
+ PyMem_Free(result);
+ }
+ if (error_pos != NULL) {
+ *error_pos = i;
+ }
+ if (reason) {
+ *reason = "encoding error";
+ }
+ return -2;
+ }
+ }
+ *out = '\0';
+ *str = result;
+ return 0;
+}
+#else
+int
+_Py_GetForceASCII(void)
+{
+ return 0;
+}
+
+void
+_Py_ResetForceASCII(void)
+{
+ /* nothing to do */
+}
+#endif /* !defined(_Py_FORCE_UTF8_FS_ENCODING) && !defined(MS_WINDOWS) */
+
+
+#if !defined(HAVE_MBRTOWC) || defined(USE_FORCE_ASCII)
+static int
+decode_ascii(const char *arg, wchar_t **wstr, size_t *wlen,
+ const char **reason, _Py_error_handler errors)
+{
+ wchar_t *res;
+ unsigned char *in;
+ wchar_t *out;
+ size_t argsize = strlen(arg) + 1;
+
+ int surrogateescape;
+ if (get_surrogateescape(errors, &surrogateescape) < 0) {
+ return -3;
+ }
+
+ if (argsize > PY_SSIZE_T_MAX / sizeof(wchar_t)) {
+ return -1;
+ }
+ res = PyMem_RawMalloc(argsize * sizeof(wchar_t));
+ if (!res) {
+ return -1;
+ }
+
+ out = res;
+ for (in = (unsigned char*)arg; *in; in++) {
+ unsigned char ch = *in;
+ if (ch < 128) {
+ *out++ = ch;
+ }
+ else {
+ if (!surrogateescape) {
+ PyMem_RawFree(res);
+ if (wlen) {
+ *wlen = in - (unsigned char*)arg;
+ }
+ if (reason) {
+ *reason = "decoding error";
+ }
+ return -2;
+ }
+ *out++ = 0xdc00 + ch;
+ }
+ }
+ *out = 0;
+
+ if (wlen != NULL) {
+ *wlen = out - res;
+ }
+ *wstr = res;
+ return 0;
+}
+#endif /* !HAVE_MBRTOWC */
+
+static int
+decode_current_locale(const char* arg, wchar_t **wstr, size_t *wlen,
+ const char **reason, _Py_error_handler errors)
+{
+ wchar_t *res;
+ size_t argsize;
+ size_t count;
+#ifdef HAVE_MBRTOWC
+ unsigned char *in;
+ wchar_t *out;
+ mbstate_t mbs;
+#endif
+
+ int surrogateescape;
+ if (get_surrogateescape(errors, &surrogateescape) < 0) {
+ return -3;
+ }
+
+#ifdef HAVE_BROKEN_MBSTOWCS
+ /* Some platforms have a broken implementation of
+ * mbstowcs which does not count the characters that
+ * would result from conversion. Use an upper bound.
+ */
+ argsize = strlen(arg);
+#else
+ argsize = _Py_mbstowcs(NULL, arg, 0);
+#endif
+ if (argsize != DECODE_ERROR) {
+ if (argsize > PY_SSIZE_T_MAX / sizeof(wchar_t) - 1) {
+ return -1;
+ }
+ res = (wchar_t *)PyMem_RawMalloc((argsize + 1) * sizeof(wchar_t));
+ if (!res) {
+ return -1;
+ }
+
+ count = _Py_mbstowcs(res, arg, argsize + 1);
+ if (count != DECODE_ERROR) {
+ *wstr = res;
+ if (wlen != NULL) {
+ *wlen = count;
+ }
+ return 0;
+ }
+ PyMem_RawFree(res);
+ }
+
+ /* Conversion failed. Fall back to escaping with surrogateescape. */
+#ifdef HAVE_MBRTOWC
+ /* Try conversion with mbrtwoc (C99), and escape non-decodable bytes. */
+
+ /* Overallocate; as multi-byte characters are in the argument, the
+ actual output could use less memory. */
+ argsize = strlen(arg) + 1;
+ if (argsize > PY_SSIZE_T_MAX / sizeof(wchar_t)) {
+ return -1;
+ }
+ res = (wchar_t*)PyMem_RawMalloc(argsize * sizeof(wchar_t));
+ if (!res) {
+ return -1;
+ }
+
+ in = (unsigned char*)arg;
+ out = res;
+ memset(&mbs, 0, sizeof mbs);
+ while (argsize) {
+ size_t converted = _Py_mbrtowc(out, (char*)in, argsize, &mbs);
+ if (converted == 0) {
+ /* Reached end of string; null char stored. */
+ break;
+ }
+
+ if (converted == INCOMPLETE_CHARACTER) {
+ /* Incomplete character. This should never happen,
+ since we provide everything that we have -
+ unless there is a bug in the C library, or I
+ misunderstood how mbrtowc works. */
+ goto decode_error;
+ }
+
+ if (converted == DECODE_ERROR) {
+ if (!surrogateescape) {
+ goto decode_error;
+ }
+
+ /* Decoding error. Escape as UTF-8b, and start over in the initial
+ shift state. */
+ *out++ = 0xdc00 + *in++;
+ argsize--;
+ memset(&mbs, 0, sizeof mbs);
+ continue;
+ }
+
+ // _Py_mbrtowc() reject lone surrogate characters
+ assert(!Py_UNICODE_IS_SURROGATE(*out));
+
+ /* successfully converted some bytes */
+ in += converted;
+ argsize -= converted;
+ out++;
+ }
+ if (wlen != NULL) {
+ *wlen = out - res;
+ }
+ *wstr = res;
+ return 0;
+
+decode_error:
+ PyMem_RawFree(res);
+ if (wlen) {
+ *wlen = in - (unsigned char*)arg;
+ }
+ if (reason) {
+ *reason = "decoding error";
+ }
+ return -2;
+#else /* HAVE_MBRTOWC */
+ /* Cannot use C locale for escaping; manually escape as if charset
+ is ASCII (i.e. escape all bytes > 128. This will still roundtrip
+ correctly in the locale's charset, which must be an ASCII superset. */
+ return decode_ascii(arg, wstr, wlen, reason, errors);
+#endif /* HAVE_MBRTOWC */
+}
+
+
+/* Decode a byte string from the locale encoding.
+
+ Use the strict error handler if 'surrogateescape' is zero. Use the
+ surrogateescape error handler if 'surrogateescape' is non-zero: undecodable
+ bytes are decoded as characters in range U+DC80..U+DCFF. If a byte sequence
+ can be decoded as a surrogate character, escape the bytes using the
+ surrogateescape error handler instead of decoding them.
+
+ On success, return 0 and write the newly allocated wide character string into
+ *wstr (use PyMem_RawFree() to free the memory). If wlen is not NULL, write
+ the number of wide characters excluding the null character into *wlen.
+
+ On memory allocation failure, return -1.
+
+ On decoding error, return -2. If wlen is not NULL, write the start of
+ invalid byte sequence in the input string into *wlen. If reason is not NULL,
+ write the decoding error message into *reason.
+
+ Return -3 if the error handler 'errors' is not supported.
+
+ Use the Py_EncodeLocaleEx() function to encode the character string back to
+ a byte string. */
+int
+_Py_DecodeLocaleEx(const char* arg, wchar_t **wstr, size_t *wlen,
+ const char **reason,
+ int current_locale, _Py_error_handler errors)
+{
+ if (current_locale) {
+#ifdef _Py_FORCE_UTF8_LOCALE
+ return _Py_DecodeUTF8Ex(arg, strlen(arg), wstr, wlen, reason,
+ errors);
+#else
+ return decode_current_locale(arg, wstr, wlen, reason, errors);
+#endif
+ }
+
+#ifdef _Py_FORCE_UTF8_FS_ENCODING
+ return _Py_DecodeUTF8Ex(arg, strlen(arg), wstr, wlen, reason,
+ errors);
+#else
+ int use_utf8 = (_PyRuntime.preconfig.utf8_mode >= 1);
+#ifdef MS_WINDOWS
+ use_utf8 |= (_PyRuntime.preconfig.legacy_windows_fs_encoding == 0);
+#endif
+ if (use_utf8) {
+ return _Py_DecodeUTF8Ex(arg, strlen(arg), wstr, wlen, reason,
+ errors);
+ }
+
+#ifdef USE_FORCE_ASCII
+ if (force_ascii == -1) {
+ force_ascii = check_force_ascii();
+ }
+
+ if (force_ascii) {
+ /* force ASCII encoding to workaround mbstowcs() issue */
+ return decode_ascii(arg, wstr, wlen, reason, errors);
+ }
+#endif
+
+ return decode_current_locale(arg, wstr, wlen, reason, errors);
+#endif /* !_Py_FORCE_UTF8_FS_ENCODING */
+}
+
+
+/* Decode a byte string from the locale encoding with the
+ surrogateescape error handler: undecodable bytes are decoded as characters
+ in range U+DC80..U+DCFF. If a byte sequence can be decoded as a surrogate
+ character, escape the bytes using the surrogateescape error handler instead
+ of decoding them.
+
+ Return a pointer to a newly allocated wide character string, use
+ PyMem_RawFree() to free the memory. If size is not NULL, write the number of
+ wide characters excluding the null character into *size
+
+ Return NULL on decoding error or memory allocation error. If *size* is not
+ NULL, *size is set to (size_t)-1 on memory error or set to (size_t)-2 on
+ decoding error.
+
+ Decoding errors should never happen, unless there is a bug in the C
+ library.
+
+ Use the Py_EncodeLocale() function to encode the character string back to a
+ byte string. */
+wchar_t*
+Py_DecodeLocale(const char* arg, size_t *wlen)
+{
+ wchar_t *wstr;
+ int res = _Py_DecodeLocaleEx(arg, &wstr, wlen,
+ NULL, 0,
+ _Py_ERROR_SURROGATEESCAPE);
+ if (res != 0) {
+ assert(res != -3);
+ if (wlen != NULL) {
+ *wlen = (size_t)res;
+ }
+ return NULL;
+ }
+ return wstr;
+}
+
+
+static int
+encode_current_locale(const wchar_t *text, char **str,
+ size_t *error_pos, const char **reason,
+ int raw_malloc, _Py_error_handler errors)
+{
+ const size_t len = wcslen(text);
+ char *result = NULL, *bytes = NULL;
+ size_t i, size, converted;
+ wchar_t c, buf[2];
+
+ int surrogateescape;
+ if (get_surrogateescape(errors, &surrogateescape) < 0) {
+ return -3;
+ }
+
+ /* The function works in two steps:
+ 1. compute the length of the output buffer in bytes (size)
+ 2. outputs the bytes */
+ size = 0;
+ buf[1] = 0;
+ while (1) {
+ for (i=0; i < len; i++) {
+ c = text[i];
+ if (c >= 0xdc80 && c <= 0xdcff) {
+ if (!surrogateescape) {
+ goto encode_error;
+ }
+ /* UTF-8b surrogate */
+ if (bytes != NULL) {
+ *bytes++ = c - 0xdc00;
+ size--;
+ }
+ else {
+ size++;
+ }
+ continue;
+ }
+ else {
+ buf[0] = c;
+ if (bytes != NULL) {
+ converted = wcstombs(bytes, buf, size);
+ }
+ else {
+ converted = wcstombs(NULL, buf, 0);
+ }
+ if (converted == DECODE_ERROR) {
+ goto encode_error;
+ }
+ if (bytes != NULL) {
+ bytes += converted;
+ size -= converted;
+ }
+ else {
+ size += converted;
+ }
+ }
+ }
+ if (result != NULL) {
+ *bytes = '\0';
+ break;
+ }
+
+ size += 1; /* nul byte at the end */
+ if (raw_malloc) {
+ result = PyMem_RawMalloc(size);
+ }
+ else {
+ result = PyMem_Malloc(size);
+ }
+ if (result == NULL) {
+ return -1;
+ }
+ bytes = result;
+ }
+ *str = result;
+ return 0;
+
+encode_error:
+ if (raw_malloc) {
+ PyMem_RawFree(result);
+ }
+ else {
+ PyMem_Free(result);
+ }
+ if (error_pos != NULL) {
+ *error_pos = i;
+ }
+ if (reason) {
+ *reason = "encoding error";
+ }
+ return -2;
+}
+
+
+/* Encode a string to the locale encoding.
+
+ Parameters:
+
+ * raw_malloc: if non-zero, allocate memory using PyMem_RawMalloc() instead
+ of PyMem_Malloc().
+ * current_locale: if non-zero, use the current LC_CTYPE, otherwise use
+ Python filesystem encoding.
+ * errors: error handler like "strict" or "surrogateescape".
+
+ Return value:
+
+ 0: success, *str is set to a newly allocated decoded string.
+ -1: memory allocation failure
+ -2: encoding error, set *error_pos and *reason (if set).
+ -3: the error handler 'errors' is not supported.
+ */
+static int
+encode_locale_ex(const wchar_t *text, char **str, size_t *error_pos,
+ const char **reason,
+ int raw_malloc, int current_locale, _Py_error_handler errors)
+{
+ if (current_locale) {
+#ifdef _Py_FORCE_UTF8_LOCALE
+ return _Py_EncodeUTF8Ex(text, str, error_pos, reason,
+ raw_malloc, errors);
+#else
+ return encode_current_locale(text, str, error_pos, reason,
+ raw_malloc, errors);
+#endif
+ }
+
+#ifdef _Py_FORCE_UTF8_FS_ENCODING
+ return _Py_EncodeUTF8Ex(text, str, error_pos, reason,
+ raw_malloc, errors);
+#else
+ int use_utf8 = (_PyRuntime.preconfig.utf8_mode >= 1);
+#ifdef MS_WINDOWS
+ use_utf8 |= (_PyRuntime.preconfig.legacy_windows_fs_encoding == 0);
+#endif
+ if (use_utf8) {
+ return _Py_EncodeUTF8Ex(text, str, error_pos, reason,
+ raw_malloc, errors);
+ }
+
+#ifdef USE_FORCE_ASCII
+ if (force_ascii == -1) {
+ force_ascii = check_force_ascii();
+ }
+
+ if (force_ascii) {
+ return encode_ascii(text, str, error_pos, reason,
+ raw_malloc, errors);
+ }
+#endif
+
+ return encode_current_locale(text, str, error_pos, reason,
+ raw_malloc, errors);
+#endif /* _Py_FORCE_UTF8_FS_ENCODING */
+}
+
+static char*
+encode_locale(const wchar_t *text, size_t *error_pos,
+ int raw_malloc, int current_locale)
+{
+ char *str;
+ int res = encode_locale_ex(text, &str, error_pos, NULL,
+ raw_malloc, current_locale,
+ _Py_ERROR_SURROGATEESCAPE);
+ if (res != -2 && error_pos) {
+ *error_pos = (size_t)-1;
+ }
+ if (res != 0) {
+ return NULL;
+ }
+ return str;
+}
+
+/* Encode a wide character string to the locale encoding with the
+ surrogateescape error handler: surrogate characters in the range
+ U+DC80..U+DCFF are converted to bytes 0x80..0xFF.
+
+ Return a pointer to a newly allocated byte string, use PyMem_Free() to free
+ the memory. Return NULL on encoding or memory allocation error.
+
+ If error_pos is not NULL, *error_pos is set to (size_t)-1 on success, or set
+ to the index of the invalid character on encoding error.
+
+ Use the Py_DecodeLocale() function to decode the bytes string back to a wide
+ character string. */
+char*
+Py_EncodeLocale(const wchar_t *text, size_t *error_pos)
+{
+ return encode_locale(text, error_pos, 0, 0);
+}
+
+
+/* Similar to Py_EncodeLocale(), but result must be freed by PyMem_RawFree()
+ instead of PyMem_Free(). */
+char*
+_Py_EncodeLocaleRaw(const wchar_t *text, size_t *error_pos)
+{
+ return encode_locale(text, error_pos, 1, 0);
+}
+
+
+int
+_Py_EncodeLocaleEx(const wchar_t *text, char **str,
+ size_t *error_pos, const char **reason,
+ int current_locale, _Py_error_handler errors)
+{
+ return encode_locale_ex(text, str, error_pos, reason, 1,
+ current_locale, errors);
+}
+
+
+// Get the current locale encoding name:
+//
+// - Return "utf-8" if _Py_FORCE_UTF8_LOCALE macro is defined (ex: on Android)
+// - Return "utf-8" if the UTF-8 Mode is enabled
+// - On Windows, return the ANSI code page (ex: "cp1250")
+// - Return "utf-8" if nl_langinfo(CODESET) returns an empty string.
+// - Otherwise, return nl_langinfo(CODESET).
+//
+// Return NULL on memory allocation failure.
+//
+// See also config_get_locale_encoding()
+wchar_t*
+_Py_GetLocaleEncoding(void)
+{
+#ifdef _Py_FORCE_UTF8_LOCALE
+ // On Android langinfo.h and CODESET are missing,
+ // and UTF-8 is always used in mbstowcs() and wcstombs().
+ return _PyMem_RawWcsdup(L"utf-8");
+#else
+
+#ifdef MS_WINDOWS
+ wchar_t encoding[23];
+ unsigned int ansi_codepage = GetACP();
+ swprintf(encoding, Py_ARRAY_LENGTH(encoding), L"cp%u", ansi_codepage);
+ encoding[Py_ARRAY_LENGTH(encoding) - 1] = 0;
+ return _PyMem_RawWcsdup(encoding);
+#else
+ const char *encoding = nl_langinfo(CODESET);
+ if (!encoding || encoding[0] == '\0') {
+ // Use UTF-8 if nl_langinfo() returns an empty string. It can happen on
+ // macOS if the LC_CTYPE locale is not supported.
+ return _PyMem_RawWcsdup(L"utf-8");
+ }
+
+ wchar_t *wstr;
+ int res = decode_current_locale(encoding, &wstr, NULL,
+ NULL, _Py_ERROR_SURROGATEESCAPE);
+ if (res < 0) {
+ return NULL;
+ }
+ return wstr;
+#endif // !MS_WINDOWS
+
+#endif // !_Py_FORCE_UTF8_LOCALE
+}
+
+
+PyObject *
+_Py_GetLocaleEncodingObject(void)
+{
+ wchar_t *encoding = _Py_GetLocaleEncoding();
+ if (encoding == NULL) {
+ PyErr_NoMemory();
+ return NULL;
+ }
+
+ PyObject *str = PyUnicode_FromWideChar(encoding, -1);
+ PyMem_RawFree(encoding);
+ return str;
+}
+
+#ifdef HAVE_NON_UNICODE_WCHAR_T_REPRESENTATION
+
+/* Check whether current locale uses Unicode as internal wchar_t form. */
+int
+_Py_LocaleUsesNonUnicodeWchar(void)
+{
+ /* Oracle Solaris uses non-Unicode internal wchar_t form for
+ non-Unicode locales and hence needs conversion to UTF first. */
+ char* codeset = nl_langinfo(CODESET);
+ if (!codeset) {
+ return 0;
+ }
+ /* 646 refers to ISO/IEC 646 standard that corresponds to ASCII encoding */
+ return (strcmp(codeset, "UTF-8") != 0 && strcmp(codeset, "646") != 0);
+}
+
+static wchar_t *
+_Py_ConvertWCharForm(const wchar_t *source, Py_ssize_t size,
+ const char *tocode, const char *fromcode)
+{
+ static_assert(sizeof(wchar_t) == 4, "wchar_t must be 32-bit");
+
+ /* Ensure we won't overflow the size. */
+ if (size > (PY_SSIZE_T_MAX / (Py_ssize_t)sizeof(wchar_t))) {
+ PyErr_NoMemory();
+ return NULL;
+ }
+
+ /* the string doesn't have to be NULL terminated */
+ wchar_t* target = PyMem_Malloc(size * sizeof(wchar_t));
+ if (target == NULL) {
+ PyErr_NoMemory();
+ return NULL;
+ }
+
+ iconv_t cd = iconv_open(tocode, fromcode);
+ if (cd == (iconv_t)-1) {
+ PyErr_Format(PyExc_ValueError, "iconv_open() failed");
+ PyMem_Free(target);
+ return NULL;
+ }
+
+ char *inbuf = (char *) source;
+ char *outbuf = (char *) target;
+ size_t inbytesleft = sizeof(wchar_t) * size;
+ size_t outbytesleft = inbytesleft;
+
+ size_t ret = iconv(cd, &inbuf, &inbytesleft, &outbuf, &outbytesleft);
+ if (ret == DECODE_ERROR) {
+ PyErr_Format(PyExc_ValueError, "iconv() failed");
+ PyMem_Free(target);
+ iconv_close(cd);
+ return NULL;
+ }
+
+ iconv_close(cd);
+ return target;
+}
+
+/* Convert a wide character string to the UCS-4 encoded string. This
+ is necessary on systems where internal form of wchar_t are not Unicode
+ code points (e.g. Oracle Solaris).
+
+ Return a pointer to a newly allocated string, use PyMem_Free() to free
+ the memory. Return NULL and raise exception on conversion or memory
+ allocation error. */
+wchar_t *
+_Py_DecodeNonUnicodeWchar(const wchar_t *native, Py_ssize_t size)
+{
+ return _Py_ConvertWCharForm(native, size, "UCS-4-INTERNAL", "wchar_t");
+}
+
+/* Convert a UCS-4 encoded string to native wide character string. This
+ is necessary on systems where internal form of wchar_t are not Unicode
+ code points (e.g. Oracle Solaris).
+
+ The conversion is done in place. This can be done because both wchar_t
+ and UCS-4 use 4-byte encoding, and one wchar_t symbol always correspond
+ to a single UCS-4 symbol and vice versa. (This is true for Oracle Solaris,
+ which is currently the only system using these functions; it doesn't have
+ to be for other systems).
+
+ Return 0 on success. Return -1 and raise exception on conversion
+ or memory allocation error. */
+int
+_Py_EncodeNonUnicodeWchar_InPlace(wchar_t *unicode, Py_ssize_t size)
+{
+ wchar_t* result = _Py_ConvertWCharForm(unicode, size, "wchar_t", "UCS-4-INTERNAL");
+ if (!result) {
+ return -1;
+ }
+ memcpy(unicode, result, size * sizeof(wchar_t));
+ PyMem_Free(result);
+ return 0;
+}
+#endif /* HAVE_NON_UNICODE_WCHAR_T_REPRESENTATION */
+
+#ifdef MS_WINDOWS
+static __int64 secs_between_epochs = 11644473600; /* Seconds between 1.1.1601 and 1.1.1970 */
+
+static void
+FILE_TIME_to_time_t_nsec(FILETIME *in_ptr, time_t *time_out, int* nsec_out)
+{
+ /* XXX endianness. Shouldn't matter, as all Windows implementations are little-endian */
+ /* Cannot simply cast and dereference in_ptr,
+ since it might not be aligned properly */
+ __int64 in;
+ memcpy(&in, in_ptr, sizeof(in));
+ *nsec_out = (int)(in % 10000000) * 100; /* FILETIME is in units of 100 nsec. */
+ *time_out = Py_SAFE_DOWNCAST((in / 10000000) - secs_between_epochs, __int64, time_t);
+}
+
+static void
+LARGE_INTEGER_to_time_t_nsec(LARGE_INTEGER *in_ptr, time_t *time_out, int* nsec_out)
+{
+ *nsec_out = (int)(in_ptr->QuadPart % 10000000) * 100; /* FILETIME is in units of 100 nsec. */
+ *time_out = Py_SAFE_DOWNCAST((in_ptr->QuadPart / 10000000) - secs_between_epochs, __int64, time_t);
+}
+
+void
+_Py_time_t_to_FILE_TIME(time_t time_in, int nsec_in, FILETIME *out_ptr)
+{
+ /* XXX endianness */
+ __int64 out;
+ out = time_in + secs_between_epochs;
+ out = out * 10000000 + nsec_in / 100;
+ memcpy(out_ptr, &out, sizeof(out));
+}
+
+/* Below, we *know* that ugo+r is 0444 */
+#if _S_IREAD != 0400
+#error Unsupported C library
+#endif
+static int
+attributes_to_mode(DWORD attr)
+{
+ int m = 0;
+ if (attr & FILE_ATTRIBUTE_DIRECTORY)
+ m |= _S_IFDIR | 0111; /* IFEXEC for user,group,other */
+ else
+ m |= _S_IFREG;
+ if (attr & FILE_ATTRIBUTE_READONLY)
+ m |= 0444;
+ else
+ m |= 0666;
+ return m;
+}
+
+
+typedef union {
+ FILE_ID_128 id;
+ struct {
+ uint64_t st_ino;
+ uint64_t st_ino_high;
+ };
+} id_128_to_ino;
+
+
+void
+_Py_attribute_data_to_stat(BY_HANDLE_FILE_INFORMATION *info, ULONG reparse_tag,
+ FILE_BASIC_INFO *basic_info, FILE_ID_INFO *id_info,
+ struct _Py_stat_struct *result)
+{
+ memset(result, 0, sizeof(*result));
+ result->st_mode = attributes_to_mode(info->dwFileAttributes);
+ result->st_size = (((__int64)info->nFileSizeHigh)<<32) + info->nFileSizeLow;
+ result->st_dev = id_info ? id_info->VolumeSerialNumber : info->dwVolumeSerialNumber;
+ result->st_rdev = 0;
+ /* st_ctime is deprecated, but we preserve the legacy value in our caller, not here */
+ if (basic_info) {
+ LARGE_INTEGER_to_time_t_nsec(&basic_info->CreationTime, &result->st_birthtime, &result->st_birthtime_nsec);
+ LARGE_INTEGER_to_time_t_nsec(&basic_info->ChangeTime, &result->st_ctime, &result->st_ctime_nsec);
+ LARGE_INTEGER_to_time_t_nsec(&basic_info->LastWriteTime, &result->st_mtime, &result->st_mtime_nsec);
+ LARGE_INTEGER_to_time_t_nsec(&basic_info->LastAccessTime, &result->st_atime, &result->st_atime_nsec);
+ } else {
+ FILE_TIME_to_time_t_nsec(&info->ftCreationTime, &result->st_birthtime, &result->st_birthtime_nsec);
+ FILE_TIME_to_time_t_nsec(&info->ftLastWriteTime, &result->st_mtime, &result->st_mtime_nsec);
+ FILE_TIME_to_time_t_nsec(&info->ftLastAccessTime, &result->st_atime, &result->st_atime_nsec);
+ }
+ result->st_nlink = info->nNumberOfLinks;
+
+ if (id_info) {
+ id_128_to_ino file_id;
+ file_id.id = id_info->FileId;
+ result->st_ino = file_id.st_ino;
+ result->st_ino_high = file_id.st_ino_high;
+ }
+ if (!result->st_ino && !result->st_ino_high) {
+ /* should only occur for DirEntry_from_find_data, in which case the
+ index is likely to be zero anyway. */
+ result->st_ino = (((uint64_t)info->nFileIndexHigh) << 32) + info->nFileIndexLow;
+ }
+
+ /* bpo-37834: Only actual symlinks set the S_IFLNK flag. But lstat() will
+ open other name surrogate reparse points without traversing them. To
+ detect/handle these, check st_file_attributes and st_reparse_tag. */
+ result->st_reparse_tag = reparse_tag;
+ if (info->dwFileAttributes & FILE_ATTRIBUTE_REPARSE_POINT &&
+ reparse_tag == IO_REPARSE_TAG_SYMLINK) {
+ /* set the bits that make this a symlink */
+ result->st_mode = (result->st_mode & ~S_IFMT) | S_IFLNK;
+ }
+ result->st_file_attributes = info->dwFileAttributes;
+}
+
+void
+_Py_stat_basic_info_to_stat(FILE_STAT_BASIC_INFORMATION *info,
+ struct _Py_stat_struct *result)
+{
+ memset(result, 0, sizeof(*result));
+ result->st_mode = attributes_to_mode(info->FileAttributes);
+ result->st_size = info->EndOfFile.QuadPart;
+ LARGE_INTEGER_to_time_t_nsec(&info->CreationTime, &result->st_birthtime, &result->st_birthtime_nsec);
+ LARGE_INTEGER_to_time_t_nsec(&info->ChangeTime, &result->st_ctime, &result->st_ctime_nsec);
+ LARGE_INTEGER_to_time_t_nsec(&info->LastWriteTime, &result->st_mtime, &result->st_mtime_nsec);
+ LARGE_INTEGER_to_time_t_nsec(&info->LastAccessTime, &result->st_atime, &result->st_atime_nsec);
+ result->st_nlink = info->NumberOfLinks;
+ result->st_dev = info->VolumeSerialNumber.QuadPart;
+ /* File systems with less than 128-bits zero pad into this field */
+ id_128_to_ino file_id;
+ file_id.id = info->FileId128;
+ result->st_ino = file_id.st_ino;
+ result->st_ino_high = file_id.st_ino_high;
+ /* bpo-37834: Only actual symlinks set the S_IFLNK flag. But lstat() will
+ open other name surrogate reparse points without traversing them. To
+ detect/handle these, check st_file_attributes and st_reparse_tag. */
+ result->st_reparse_tag = info->ReparseTag;
+ if (info->FileAttributes & FILE_ATTRIBUTE_REPARSE_POINT &&
+ info->ReparseTag == IO_REPARSE_TAG_SYMLINK) {
+ /* set the bits that make this a symlink */
+ result->st_mode = (result->st_mode & ~S_IFMT) | S_IFLNK;
+ }
+ result->st_file_attributes = info->FileAttributes;
+ switch (info->DeviceType) {
+ case FILE_DEVICE_DISK:
+ case FILE_DEVICE_VIRTUAL_DISK:
+ case FILE_DEVICE_DFS:
+ case FILE_DEVICE_CD_ROM:
+ case FILE_DEVICE_CONTROLLER:
+ case FILE_DEVICE_DATALINK:
+ break;
+ case FILE_DEVICE_DISK_FILE_SYSTEM:
+ case FILE_DEVICE_CD_ROM_FILE_SYSTEM:
+ case FILE_DEVICE_NETWORK_FILE_SYSTEM:
+ result->st_mode = (result->st_mode & ~S_IFMT) | 0x6000; /* _S_IFBLK */
+ break;
+ case FILE_DEVICE_CONSOLE:
+ case FILE_DEVICE_NULL:
+ case FILE_DEVICE_KEYBOARD:
+ case FILE_DEVICE_MODEM:
+ case FILE_DEVICE_MOUSE:
+ case FILE_DEVICE_PARALLEL_PORT:
+ case FILE_DEVICE_PRINTER:
+ case FILE_DEVICE_SCREEN:
+ case FILE_DEVICE_SERIAL_PORT:
+ case FILE_DEVICE_SOUND:
+ result->st_mode = (result->st_mode & ~S_IFMT) | _S_IFCHR;
+ break;
+ case FILE_DEVICE_NAMED_PIPE:
+ result->st_mode = (result->st_mode & ~S_IFMT) | _S_IFIFO;
+ break;
+ default:
+ if (info->FileAttributes & FILE_ATTRIBUTE_DIRECTORY) {
+ result->st_mode = (result->st_mode & ~S_IFMT) | _S_IFDIR;
+ }
+ break;
+ }
+}
+
+#endif
+
+/* Return information about a file.
+
+ On POSIX, use fstat().
+
+ On Windows, use GetFileType() and GetFileInformationByHandle() which support
+ files larger than 2 GiB. fstat() may fail with EOVERFLOW on files larger
+ than 2 GiB because the file size type is a signed 32-bit integer: see issue
+ #23152.
+
+ On Windows, set the last Windows error and return nonzero on error. On
+ POSIX, set errno and return nonzero on error. Fill status and return 0 on
+ success. */
+int
+_Py_fstat_noraise(int fd, struct _Py_stat_struct *status)
+{
+#ifdef MS_WINDOWS
+ BY_HANDLE_FILE_INFORMATION info;
+ FILE_BASIC_INFO basicInfo;
+ FILE_ID_INFO idInfo;
+ FILE_ID_INFO *pIdInfo = &idInfo;
+ HANDLE h;
+ int type;
+
+ h = _Py_get_osfhandle_noraise(fd);
+
+ if (h == INVALID_HANDLE_VALUE) {
+ /* errno is already set by _get_osfhandle, but we also set
+ the Win32 error for callers who expect that */
+ SetLastError(ERROR_INVALID_HANDLE);
+ return -1;
+ }
+ memset(status, 0, sizeof(*status));
+
+ type = GetFileType(h);
+ if (type == FILE_TYPE_UNKNOWN) {
+ DWORD error = GetLastError();
+ if (error != 0) {
+ errno = winerror_to_errno(error);
+ return -1;
+ }
+ /* else: valid but unknown file */
+ }
+
+ if (type != FILE_TYPE_DISK) {
+ if (type == FILE_TYPE_CHAR)
+ status->st_mode = _S_IFCHR;
+ else if (type == FILE_TYPE_PIPE)
+ status->st_mode = _S_IFIFO;
+ return 0;
+ }
+
+ if (!GetFileInformationByHandle(h, &info) ||
+ !GetFileInformationByHandleEx(h, FileBasicInfo, &basicInfo, sizeof(basicInfo))) {
+ /* The Win32 error is already set, but we also set errno for
+ callers who expect it */
+ errno = winerror_to_errno(GetLastError());
+ return -1;
+ }
+
+ if (!GetFileInformationByHandleEx(h, FileIdInfo, &idInfo, sizeof(idInfo))) {
+ /* Failed to get FileIdInfo, so do not pass it along */
+ pIdInfo = NULL;
+ }
+
+ _Py_attribute_data_to_stat(&info, 0, &basicInfo, pIdInfo, status);
+ return 0;
+#else
+ return fstat(fd, status);
+#endif
+}
+
+/* Return information about a file.
+
+ On POSIX, use fstat().
+
+ On Windows, use GetFileType() and GetFileInformationByHandle() which support
+ files larger than 2 GiB. fstat() may fail with EOVERFLOW on files larger
+ than 2 GiB because the file size type is a signed 32-bit integer: see issue
+ #23152.
+
+ Raise an exception and return -1 on error. On Windows, set the last Windows
+ error on error. On POSIX, set errno on error. Fill status and return 0 on
+ success.
+
+ Release the GIL to call GetFileType() and GetFileInformationByHandle(), or
+ to call fstat(). The caller must hold the GIL. */
+int
+_Py_fstat(int fd, struct _Py_stat_struct *status)
+{
+ int res;
+
+ assert(PyGILState_Check());
+
+ Py_BEGIN_ALLOW_THREADS
+ res = _Py_fstat_noraise(fd, status);
+ Py_END_ALLOW_THREADS
+
+ if (res != 0) {
+#ifdef MS_WINDOWS
+ PyErr_SetFromWindowsErr(0);
+#else
+ PyErr_SetFromErrno(PyExc_OSError);
+#endif
+ return -1;
+ }
+ return 0;
+}
+
+/* Like _Py_stat() but with a raw filename. */
+int
+_Py_wstat(const wchar_t* path, struct stat *buf)
+{
+ int err;
+#ifdef MS_WINDOWS
+ struct _stat wstatbuf;
+ err = _wstat(path, &wstatbuf);
+ if (!err) {
+ buf->st_mode = wstatbuf.st_mode;
+ }
+#else
+ char *fname;
+ fname = _Py_EncodeLocaleRaw(path, NULL);
+ if (fname == NULL) {
+ errno = EINVAL;
+ return -1;
+ }
+ err = stat(fname, buf);
+ PyMem_RawFree(fname);
+#endif
+ return err;
+}
+
+
+/* Call _wstat() on Windows, or encode the path to the filesystem encoding and
+ call stat() otherwise. Only fill st_mode attribute on Windows.
+
+ Return 0 on success, -1 on _wstat() / stat() error, -2 if an exception was
+ raised. */
+
+int
+_Py_stat(PyObject *path, struct stat *statbuf)
+{
+#ifdef MS_WINDOWS
+ int err;
+
+ wchar_t *wpath = PyUnicode_AsWideCharString(path, NULL);
+ if (wpath == NULL)
+ return -2;
+
+ err = _Py_wstat(wpath, statbuf);
+ PyMem_Free(wpath);
+ return err;
+#else
+ int ret;
+ PyObject *bytes;
+ char *cpath;
+
+ bytes = PyUnicode_EncodeFSDefault(path);
+ if (bytes == NULL)
+ return -2;
+
+ /* check for embedded null bytes */
+ if (PyBytes_AsStringAndSize(bytes, &cpath, NULL) == -1) {
+ Py_DECREF(bytes);
+ return -2;
+ }
+
+ ret = stat(cpath, statbuf);
+ Py_DECREF(bytes);
+ return ret;
+#endif
+}
+
+#ifdef MS_WINDOWS
+// For some Windows API partitions, SetHandleInformation() is declared
+// but none of the handle flags are defined.
+#ifndef HANDLE_FLAG_INHERIT
+#define HANDLE_FLAG_INHERIT 0x00000001
+#endif
+#endif
+
+/* This function MUST be kept async-signal-safe on POSIX when raise=0. */
+static int
+get_inheritable(int fd, int raise)
+{
+#ifdef MS_WINDOWS
+ HANDLE handle;
+ DWORD flags;
+
+ handle = _Py_get_osfhandle_noraise(fd);
+ if (handle == INVALID_HANDLE_VALUE) {
+ if (raise)
+ PyErr_SetFromErrno(PyExc_OSError);
+ return -1;
+ }
+
+ if (!GetHandleInformation(handle, &flags)) {
+ if (raise)
+ PyErr_SetFromWindowsErr(0);
+ return -1;
+ }
+
+ return (flags & HANDLE_FLAG_INHERIT);
+#else
+ int flags;
+
+ flags = fcntl(fd, F_GETFD, 0);
+ if (flags == -1) {
+ if (raise)
+ PyErr_SetFromErrno(PyExc_OSError);
+ return -1;
+ }
+ return !(flags & FD_CLOEXEC);
+#endif
+}
+
+/* Get the inheritable flag of the specified file descriptor.
+ Return 1 if the file descriptor can be inherited, 0 if it cannot,
+ raise an exception and return -1 on error. */
+int
+_Py_get_inheritable(int fd)
+{
+ return get_inheritable(fd, 1);
+}
+
+
+/* This function MUST be kept async-signal-safe on POSIX when raise=0. */
+static int
+set_inheritable(int fd, int inheritable, int raise, int *atomic_flag_works)
+{
+#ifdef MS_WINDOWS
+ HANDLE handle;
+ DWORD flags;
+#else
+#if defined(HAVE_SYS_IOCTL_H) && defined(FIOCLEX) && defined(FIONCLEX)
+ static int ioctl_works = -1;
+ int request;
+ int err;
+#endif
+ int flags, new_flags;
+ int res;
+#endif
+
+ /* atomic_flag_works can only be used to make the file descriptor
+ non-inheritable */
+ assert(!(atomic_flag_works != NULL && inheritable));
+
+ if (atomic_flag_works != NULL && !inheritable) {
+ if (*atomic_flag_works == -1) {
+ int isInheritable = get_inheritable(fd, raise);
+ if (isInheritable == -1)
+ return -1;
+ *atomic_flag_works = !isInheritable;
+ }
+
+ if (*atomic_flag_works)
+ return 0;
+ }
+
+#ifdef MS_WINDOWS
+ handle = _Py_get_osfhandle_noraise(fd);
+ if (handle == INVALID_HANDLE_VALUE) {
+ if (raise)
+ PyErr_SetFromErrno(PyExc_OSError);
+ return -1;
+ }
+
+ if (inheritable)
+ flags = HANDLE_FLAG_INHERIT;
+ else
+ flags = 0;
+
+ if (!SetHandleInformation(handle, HANDLE_FLAG_INHERIT, flags)) {
+ if (raise)
+ PyErr_SetFromWindowsErr(0);
+ return -1;
+ }
+ return 0;
+
+#else
+
+#if defined(HAVE_SYS_IOCTL_H) && defined(FIOCLEX) && defined(FIONCLEX)
+ if (ioctl_works != 0 && raise != 0) {
+ /* fast-path: ioctl() only requires one syscall */
+ /* caveat: raise=0 is an indicator that we must be async-signal-safe
+ * thus avoid using ioctl() so we skip the fast-path. */
+ if (inheritable)
+ request = FIONCLEX;
+ else
+ request = FIOCLEX;
+ err = ioctl(fd, request, NULL);
+ if (!err) {
+ ioctl_works = 1;
+ return 0;
+ }
+
+#ifdef O_PATH
+ if (errno == EBADF) {
+ // bpo-44849: On Linux and FreeBSD, ioctl(FIOCLEX) fails with EBADF
+ // on O_PATH file descriptors. Fall through to the fcntl()
+ // implementation.
+ }
+ else
+#endif
+ if (errno != ENOTTY && errno != EACCES) {
+ if (raise)
+ PyErr_SetFromErrno(PyExc_OSError);
+ return -1;
+ }
+ else {
+ /* Issue #22258: Here, ENOTTY means "Inappropriate ioctl for
+ device". The ioctl is declared but not supported by the kernel.
+ Remember that ioctl() doesn't work. It is the case on
+ Illumos-based OS for example.
+
+ Issue #27057: When SELinux policy disallows ioctl it will fail
+ with EACCES. While FIOCLEX is safe operation it may be
+ unavailable because ioctl was denied altogether.
+ This can be the case on Android. */
+ ioctl_works = 0;
+ }
+ /* fallback to fcntl() if ioctl() does not work */
+ }
+#endif
+
+ /* slow-path: fcntl() requires two syscalls */
+ flags = fcntl(fd, F_GETFD);
+ if (flags < 0) {
+ if (raise)
+ PyErr_SetFromErrno(PyExc_OSError);
+ return -1;
+ }
+
+ if (inheritable) {
+ new_flags = flags & ~FD_CLOEXEC;
+ }
+ else {
+ new_flags = flags | FD_CLOEXEC;
+ }
+
+ if (new_flags == flags) {
+ /* FD_CLOEXEC flag already set/cleared: nothing to do */
+ return 0;
+ }
+
+ res = fcntl(fd, F_SETFD, new_flags);
+ if (res < 0) {
+ if (raise)
+ PyErr_SetFromErrno(PyExc_OSError);
+ return -1;
+ }
+ return 0;
+#endif
+}
+
+/* Make the file descriptor non-inheritable.
+ Return 0 on success, set errno and return -1 on error. */
+static int
+make_non_inheritable(int fd)
+{
+ return set_inheritable(fd, 0, 0, NULL);
+}
+
+/* Set the inheritable flag of the specified file descriptor.
+ On success: return 0, on error: raise an exception and return -1.
+
+ If atomic_flag_works is not NULL:
+
+ * if *atomic_flag_works==-1, check if the inheritable is set on the file
+ descriptor: if yes, set *atomic_flag_works to 1, otherwise set to 0 and
+ set the inheritable flag
+ * if *atomic_flag_works==1: do nothing
+ * if *atomic_flag_works==0: set inheritable flag to False
+
+ Set atomic_flag_works to NULL if no atomic flag was used to create the
+ file descriptor.
+
+ atomic_flag_works can only be used to make a file descriptor
+ non-inheritable: atomic_flag_works must be NULL if inheritable=1. */
+int
+_Py_set_inheritable(int fd, int inheritable, int *atomic_flag_works)
+{
+ return set_inheritable(fd, inheritable, 1, atomic_flag_works);
+}
+
+/* Same as _Py_set_inheritable() but on error, set errno and
+ don't raise an exception.
+ This function is async-signal-safe. */
+int
+_Py_set_inheritable_async_safe(int fd, int inheritable, int *atomic_flag_works)
+{
+ return set_inheritable(fd, inheritable, 0, atomic_flag_works);
+}
+
+static int
+_Py_open_impl(const char *pathname, int flags, int gil_held)
+{
+ int fd;
+ int async_err = 0;
+#ifndef MS_WINDOWS
+ int *atomic_flag_works;
+#endif
+
+#ifdef MS_WINDOWS
+ flags |= O_NOINHERIT;
+#elif defined(O_CLOEXEC)
+ atomic_flag_works = &_Py_open_cloexec_works;
+ flags |= O_CLOEXEC;
+#else
+ atomic_flag_works = NULL;
+#endif
+
+ if (gil_held) {
+ PyObject *pathname_obj = PyUnicode_DecodeFSDefault(pathname);
+ if (pathname_obj == NULL) {
+ return -1;
+ }
+ if (PySys_Audit("open", "OOi", pathname_obj, Py_None, flags) < 0) {
+ Py_DECREF(pathname_obj);
+ return -1;
+ }
+
+ do {
+ Py_BEGIN_ALLOW_THREADS
+ fd = open(pathname, flags);
+ Py_END_ALLOW_THREADS
+ } while (fd < 0
+ && errno == EINTR && !(async_err = PyErr_CheckSignals()));
+ if (async_err) {
+ Py_DECREF(pathname_obj);
+ return -1;
+ }
+ if (fd < 0) {
+ PyErr_SetFromErrnoWithFilenameObjects(PyExc_OSError, pathname_obj, NULL);
+ Py_DECREF(pathname_obj);
+ return -1;
+ }
+ Py_DECREF(pathname_obj);
+ }
+ else {
+ fd = open(pathname, flags);
+ if (fd < 0)
+ return -1;
+ }
+
+#ifndef MS_WINDOWS
+ if (set_inheritable(fd, 0, gil_held, atomic_flag_works) < 0) {
+ close(fd);
+ return -1;
+ }
+#endif
+
+ return fd;
+}
+
+/* Open a file with the specified flags (wrapper to open() function).
+ Return a file descriptor on success. Raise an exception and return -1 on
+ error.
+
+ The file descriptor is created non-inheritable.
+
+ When interrupted by a signal (open() fails with EINTR), retry the syscall,
+ except if the Python signal handler raises an exception.
+
+ Release the GIL to call open(). The caller must hold the GIL. */
+int
+_Py_open(const char *pathname, int flags)
+{
+ /* _Py_open() must be called with the GIL held. */
+ assert(PyGILState_Check());
+ return _Py_open_impl(pathname, flags, 1);
+}
+
+/* Open a file with the specified flags (wrapper to open() function).
+ Return a file descriptor on success. Set errno and return -1 on error.
+
+ The file descriptor is created non-inheritable.
+
+ If interrupted by a signal, fail with EINTR. */
+int
+_Py_open_noraise(const char *pathname, int flags)
+{
+ return _Py_open_impl(pathname, flags, 0);
+}
+
+/* Open a file. Use _wfopen() on Windows, encode the path to the locale
+ encoding and use fopen() otherwise.
+
+ The file descriptor is created non-inheritable.
+
+ If interrupted by a signal, fail with EINTR. */
+FILE *
+_Py_wfopen(const wchar_t *path, const wchar_t *mode)
+{
+ FILE *f;
+ if (PySys_Audit("open", "uui", path, mode, 0) < 0) {
+ return NULL;
+ }
+#ifndef MS_WINDOWS
+ char *cpath;
+ char cmode[10];
+ size_t r;
+ r = wcstombs(cmode, mode, 10);
+ if (r == DECODE_ERROR || r >= 10) {
+ errno = EINVAL;
+ return NULL;
+ }
+ cpath = _Py_EncodeLocaleRaw(path, NULL);
+ if (cpath == NULL) {
+ return NULL;
+ }
+ f = fopen(cpath, cmode);
+ PyMem_RawFree(cpath);
+#else
+ f = _wfopen(path, mode);
+#endif
+ if (f == NULL)
+ return NULL;
+ if (make_non_inheritable(fileno(f)) < 0) {
+ fclose(f);
+ return NULL;
+ }
+ return f;
+}
+
+
+/* Open a file. Call _wfopen() on Windows, or encode the path to the filesystem
+ encoding and call fopen() otherwise.
+
+ Return the new file object on success. Raise an exception and return NULL
+ on error.
+
+ The file descriptor is created non-inheritable.
+
+ When interrupted by a signal (open() fails with EINTR), retry the syscall,
+ except if the Python signal handler raises an exception.
+
+ Release the GIL to call _wfopen() or fopen(). The caller must hold
+ the GIL. */
+FILE*
+_Py_fopen_obj(PyObject *path, const char *mode)
+{
+ FILE *f;
+ int async_err = 0;
+#ifdef MS_WINDOWS
+ wchar_t wmode[10];
+ int usize;
+
+ assert(PyGILState_Check());
+
+ if (PySys_Audit("open", "Osi", path, mode, 0) < 0) {
+ return NULL;
+ }
+ if (!PyUnicode_Check(path)) {
+ PyErr_Format(PyExc_TypeError,
+ "str file path expected under Windows, got %R",
+ Py_TYPE(path));
+ return NULL;
+ }
+
+ wchar_t *wpath = PyUnicode_AsWideCharString(path, NULL);
+ if (wpath == NULL)
+ return NULL;
+
+ usize = MultiByteToWideChar(CP_ACP, 0, mode, -1,
+ wmode, Py_ARRAY_LENGTH(wmode));
+ if (usize == 0) {
+ PyErr_SetFromWindowsErr(0);
+ PyMem_Free(wpath);
+ return NULL;
+ }
+
+ do {
+ Py_BEGIN_ALLOW_THREADS
+ f = _wfopen(wpath, wmode);
+ Py_END_ALLOW_THREADS
+ } while (f == NULL
+ && errno == EINTR && !(async_err = PyErr_CheckSignals()));
+ int saved_errno = errno;
+ PyMem_Free(wpath);
+#else
+ PyObject *bytes;
+ const char *path_bytes;
+
+ assert(PyGILState_Check());
+
+ if (!PyUnicode_FSConverter(path, &bytes))
+ return NULL;
+ path_bytes = PyBytes_AS_STRING(bytes);
+
+ if (PySys_Audit("open", "Osi", path, mode, 0) < 0) {
+ Py_DECREF(bytes);
+ return NULL;
+ }
+
+ do {
+ Py_BEGIN_ALLOW_THREADS
+ f = fopen(path_bytes, mode);
+ Py_END_ALLOW_THREADS
+ } while (f == NULL
+ && errno == EINTR && !(async_err = PyErr_CheckSignals()));
+ int saved_errno = errno;
+ Py_DECREF(bytes);
+#endif
+ if (async_err)
+ return NULL;
+
+ if (f == NULL) {
+ errno = saved_errno;
+ PyErr_SetFromErrnoWithFilenameObject(PyExc_OSError, path);
+ return NULL;
+ }
+
+ if (set_inheritable(fileno(f), 0, 1, NULL) < 0) {
+ fclose(f);
+ return NULL;
+ }
+ return f;
+}
+
+/* Read count bytes from fd into buf.
+
+ On success, return the number of read bytes, it can be lower than count.
+ If the current file offset is at or past the end of file, no bytes are read,
+ and read() returns zero.
+
+ On error, raise an exception, set errno and return -1.
+
+ When interrupted by a signal (read() fails with EINTR), retry the syscall.
+ If the Python signal handler raises an exception, the function returns -1
+ (the syscall is not retried).
+
+ Release the GIL to call read(). The caller must hold the GIL. */
+Py_ssize_t
+_Py_read(int fd, void *buf, size_t count)
+{
+ Py_ssize_t n;
+ int err;
+ int async_err = 0;
+
+ assert(PyGILState_Check());
+
+ /* _Py_read() must not be called with an exception set, otherwise the
+ * caller may think that read() was interrupted by a signal and the signal
+ * handler raised an exception. */
+ assert(!PyErr_Occurred());
+
+ if (count > _PY_READ_MAX) {
+ count = _PY_READ_MAX;
+ }
+
+ _Py_BEGIN_SUPPRESS_IPH
+ do {
+ Py_BEGIN_ALLOW_THREADS
+ errno = 0;
+#ifdef MS_WINDOWS
+ _doserrno = 0;
+ n = read(fd, buf, (int)count);
+ // read() on a non-blocking empty pipe fails with EINVAL, which is
+ // mapped from the Windows error code ERROR_NO_DATA.
+ if (n < 0 && errno == EINVAL) {
+ if (_doserrno == ERROR_NO_DATA) {
+ errno = EAGAIN;
+ }
+ }
+#else
+ n = read(fd, buf, count);
+#endif
+ /* save/restore errno because PyErr_CheckSignals()
+ * and PyErr_SetFromErrno() can modify it */
+ err = errno;
+ Py_END_ALLOW_THREADS
+ } while (n < 0 && err == EINTR &&
+ !(async_err = PyErr_CheckSignals()));
+ _Py_END_SUPPRESS_IPH
+
+ if (async_err) {
+ /* read() was interrupted by a signal (failed with EINTR)
+ * and the Python signal handler raised an exception */
+ errno = err;
+ assert(errno == EINTR && PyErr_Occurred());
+ return -1;
+ }
+ if (n < 0) {
+ PyErr_SetFromErrno(PyExc_OSError);
+ errno = err;
+ return -1;
+ }
+
+ return n;
+}
+
+static Py_ssize_t
+_Py_write_impl(int fd, const void *buf, size_t count, int gil_held)
+{
+ Py_ssize_t n;
+ int err;
+ int async_err = 0;
+
+ _Py_BEGIN_SUPPRESS_IPH
+#ifdef MS_WINDOWS
+ if (count > 32767) {
+ /* Issue #11395: the Windows console returns an error (12: not
+ enough space error) on writing into stdout if stdout mode is
+ binary and the length is greater than 66,000 bytes (or less,
+ depending on heap usage). */
+ if (gil_held) {
+ Py_BEGIN_ALLOW_THREADS
+ if (isatty(fd)) {
+ count = 32767;
+ }
+ Py_END_ALLOW_THREADS
+ } else {
+ if (isatty(fd)) {
+ count = 32767;
+ }
+ }
+ }
+
+#endif
+ if (count > _PY_WRITE_MAX) {
+ count = _PY_WRITE_MAX;
+ }
+
+ if (gil_held) {
+ do {
+ Py_BEGIN_ALLOW_THREADS
+ errno = 0;
+#ifdef MS_WINDOWS
+ // write() on a non-blocking pipe fails with ENOSPC on Windows if
+ // the pipe lacks available space for the entire buffer.
+ int c = (int)count;
+ do {
+ _doserrno = 0;
+ n = write(fd, buf, c);
+ if (n >= 0 || errno != ENOSPC || _doserrno != 0) {
+ break;
+ }
+ errno = EAGAIN;
+ c /= 2;
+ } while (c > 0);
+#else
+ n = write(fd, buf, count);
+#endif
+ /* save/restore errno because PyErr_CheckSignals()
+ * and PyErr_SetFromErrno() can modify it */
+ err = errno;
+ Py_END_ALLOW_THREADS
+ } while (n < 0 && err == EINTR &&
+ !(async_err = PyErr_CheckSignals()));
+ }
+ else {
+ do {
+ errno = 0;
+#ifdef MS_WINDOWS
+ // write() on a non-blocking pipe fails with ENOSPC on Windows if
+ // the pipe lacks available space for the entire buffer.
+ int c = (int)count;
+ do {
+ _doserrno = 0;
+ n = write(fd, buf, c);
+ if (n >= 0 || errno != ENOSPC || _doserrno != 0) {
+ break;
+ }
+ errno = EAGAIN;
+ c /= 2;
+ } while (c > 0);
+#else
+ n = write(fd, buf, count);
+#endif
+ err = errno;
+ } while (n < 0 && err == EINTR);
+ }
+ _Py_END_SUPPRESS_IPH
+
+ if (async_err) {
+ /* write() was interrupted by a signal (failed with EINTR)
+ and the Python signal handler raised an exception (if gil_held is
+ nonzero). */
+ errno = err;
+ assert(errno == EINTR && (!gil_held || PyErr_Occurred()));
+ return -1;
+ }
+ if (n < 0) {
+ if (gil_held)
+ PyErr_SetFromErrno(PyExc_OSError);
+ errno = err;
+ return -1;
+ }
+
+ return n;
+}
+
+/* Write count bytes of buf into fd.
+
+ On success, return the number of written bytes, it can be lower than count
+ including 0. On error, raise an exception, set errno and return -1.
+
+ When interrupted by a signal (write() fails with EINTR), retry the syscall.
+ If the Python signal handler raises an exception, the function returns -1
+ (the syscall is not retried).
+
+ Release the GIL to call write(). The caller must hold the GIL. */
+Py_ssize_t
+_Py_write(int fd, const void *buf, size_t count)
+{
+ assert(PyGILState_Check());
+
+ /* _Py_write() must not be called with an exception set, otherwise the
+ * caller may think that write() was interrupted by a signal and the signal
+ * handler raised an exception. */
+ assert(!PyErr_Occurred());
+
+ return _Py_write_impl(fd, buf, count, 1);
+}
+
+/* Write count bytes of buf into fd.
+ *
+ * On success, return the number of written bytes, it can be lower than count
+ * including 0. On error, set errno and return -1.
+ *
+ * When interrupted by a signal (write() fails with EINTR), retry the syscall
+ * without calling the Python signal handler. */
+Py_ssize_t
+_Py_write_noraise(int fd, const void *buf, size_t count)
+{
+ return _Py_write_impl(fd, buf, count, 0);
+}
+
+#ifdef HAVE_READLINK
+
+/* Read value of symbolic link. Encode the path to the locale encoding, decode
+ the result from the locale encoding.
+
+ Return -1 on encoding error, on readlink() error, if the internal buffer is
+ too short, on decoding error, or if 'buf' is too short. */
+int
+_Py_wreadlink(const wchar_t *path, wchar_t *buf, size_t buflen)
+{
+ char *cpath;
+ char cbuf[MAXPATHLEN];
+ size_t cbuf_len = Py_ARRAY_LENGTH(cbuf);
+ wchar_t *wbuf;
+ Py_ssize_t res;
+ size_t r1;
+
+ cpath = _Py_EncodeLocaleRaw(path, NULL);
+ if (cpath == NULL) {
+ errno = EINVAL;
+ return -1;
+ }
+ res = readlink(cpath, cbuf, cbuf_len);
+ PyMem_RawFree(cpath);
+ if (res == -1) {
+ return -1;
+ }
+ if ((size_t)res == cbuf_len) {
+ errno = EINVAL;
+ return -1;
+ }
+ cbuf[res] = '\0'; /* buf will be null terminated */
+ wbuf = Py_DecodeLocale(cbuf, &r1);
+ if (wbuf == NULL) {
+ errno = EINVAL;
+ return -1;
+ }
+ /* wbuf must have space to store the trailing NUL character */
+ if (buflen <= r1) {
+ PyMem_RawFree(wbuf);
+ errno = EINVAL;
+ return -1;
+ }
+ wcsncpy(buf, wbuf, buflen);
+ PyMem_RawFree(wbuf);
+ return (int)r1;
+}
+#endif
+
+#ifdef HAVE_REALPATH
+
+/* Return the canonicalized absolute pathname. Encode path to the locale
+ encoding, decode the result from the locale encoding.
+
+ Return NULL on encoding error, realpath() error, decoding error
+ or if 'resolved_path' is too short. */
+wchar_t*
+_Py_wrealpath(const wchar_t *path,
+ wchar_t *resolved_path, size_t resolved_path_len)
+{
+ char *cpath;
+ char cresolved_path[MAXPATHLEN];
+ wchar_t *wresolved_path;
+ char *res;
+ size_t r;
+ cpath = _Py_EncodeLocaleRaw(path, NULL);
+ if (cpath == NULL) {
+ errno = EINVAL;
+ return NULL;
+ }
+ res = realpath(cpath, cresolved_path);
+ PyMem_RawFree(cpath);
+ if (res == NULL)
+ return NULL;
+
+ wresolved_path = Py_DecodeLocale(cresolved_path, &r);
+ if (wresolved_path == NULL) {
+ errno = EINVAL;
+ return NULL;
+ }
+ /* wresolved_path must have space to store the trailing NUL character */
+ if (resolved_path_len <= r) {
+ PyMem_RawFree(wresolved_path);
+ errno = EINVAL;
+ return NULL;
+ }
+ wcsncpy(resolved_path, wresolved_path, resolved_path_len);
+ PyMem_RawFree(wresolved_path);
+ return resolved_path;
+}
+#endif
+
+
+int
+_Py_isabs(const wchar_t *path)
+{
+#ifdef MS_WINDOWS
+ const wchar_t *tail;
+ HRESULT hr = PathCchSkipRoot(path, &tail);
+ if (FAILED(hr) || path == tail) {
+ return 0;
+ }
+ if (tail == &path[1] && (path[0] == SEP || path[0] == ALTSEP)) {
+ // Exclude paths with leading SEP
+ return 0;
+ }
+ if (tail == &path[2] && path[1] == L':') {
+ // Exclude drive-relative paths (e.g. C:filename.ext)
+ return 0;
+ }
+ return 1;
+#else
+ return (path[0] == SEP);
+#endif
+}
+
+
+/* Get an absolute path.
+ On error (ex: fail to get the current directory), return -1.
+ On memory allocation failure, set *abspath_p to NULL and return 0.
+ On success, return a newly allocated to *abspath_p to and return 0.
+ The string must be freed by PyMem_RawFree(). */
+int
+_Py_abspath(const wchar_t *path, wchar_t **abspath_p)
+{
+ if (path[0] == '\0' || !wcscmp(path, L".")) {
+ wchar_t cwd[MAXPATHLEN + 1];
+ cwd[Py_ARRAY_LENGTH(cwd) - 1] = 0;
+ if (!_Py_wgetcwd(cwd, Py_ARRAY_LENGTH(cwd) - 1)) {
+ /* unable to get the current directory */
+ return -1;
+ }
+ *abspath_p = _PyMem_RawWcsdup(cwd);
+ return 0;
+ }
+
+ if (_Py_isabs(path)) {
+ *abspath_p = _PyMem_RawWcsdup(path);
+ return 0;
+ }
+
+#ifdef MS_WINDOWS
+ return _PyOS_getfullpathname(path, abspath_p);
+#else
+ wchar_t cwd[MAXPATHLEN + 1];
+ cwd[Py_ARRAY_LENGTH(cwd) - 1] = 0;
+ if (!_Py_wgetcwd(cwd, Py_ARRAY_LENGTH(cwd) - 1)) {
+ /* unable to get the current directory */
+ return -1;
+ }
+
+ size_t cwd_len = wcslen(cwd);
+ size_t path_len = wcslen(path);
+ size_t len = cwd_len + 1 + path_len + 1;
+ if (len <= (size_t)PY_SSIZE_T_MAX / sizeof(wchar_t)) {
+ *abspath_p = PyMem_RawMalloc(len * sizeof(wchar_t));
+ }
+ else {
+ *abspath_p = NULL;
+ }
+ if (*abspath_p == NULL) {
+ return 0;
+ }
+
+ wchar_t *abspath = *abspath_p;
+ memcpy(abspath, cwd, cwd_len * sizeof(wchar_t));
+ abspath += cwd_len;
+
+ *abspath = (wchar_t)SEP;
+ abspath++;
+
+ memcpy(abspath, path, path_len * sizeof(wchar_t));
+ abspath += path_len;
+
+ *abspath = 0;
+ return 0;
+#endif
+}
+
+// The Windows Games API family implements the PathCch* APIs in the Xbox OS,
+// but does not expose them yet. Load them dynamically until
+// 1) they are officially exposed
+// 2) we stop supporting older versions of the GDK which do not expose them
+#if defined(MS_WINDOWS_GAMES) && !defined(MS_WINDOWS_DESKTOP)
+HRESULT
+PathCchSkipRoot(const wchar_t *path, const wchar_t **rootEnd)
+{
+ static int initialized = 0;
+ typedef HRESULT(__stdcall *PPathCchSkipRoot) (PCWSTR pszPath,
+ PCWSTR *ppszRootEnd);
+ static PPathCchSkipRoot _PathCchSkipRoot;
+
+ if (initialized == 0) {
+ HMODULE pathapi = LoadLibraryExW(L"api-ms-win-core-path-l1-1-0.dll", NULL,
+ LOAD_LIBRARY_SEARCH_SYSTEM32);
+ if (pathapi) {
+ _PathCchSkipRoot = (PPathCchSkipRoot)GetProcAddress(
+ pathapi, "PathCchSkipRoot");
+ }
+ else {
+ _PathCchSkipRoot = NULL;
+ }
+ initialized = 1;
+ }
+
+ if (!_PathCchSkipRoot) {
+ return E_NOINTERFACE;
+ }
+
+ return _PathCchSkipRoot(path, rootEnd);
+}
+
+static HRESULT
+PathCchCombineEx(wchar_t *buffer, size_t bufsize, const wchar_t *dirname,
+ const wchar_t *relfile, unsigned long flags)
+{
+ static int initialized = 0;
+ typedef HRESULT(__stdcall *PPathCchCombineEx) (PWSTR pszPathOut,
+ size_t cchPathOut,
+ PCWSTR pszPathIn,
+ PCWSTR pszMore,
+ unsigned long dwFlags);
+ static PPathCchCombineEx _PathCchCombineEx;
+
+ if (initialized == 0) {
+ HMODULE pathapi = LoadLibraryExW(L"api-ms-win-core-path-l1-1-0.dll", NULL,
+ LOAD_LIBRARY_SEARCH_SYSTEM32);
+ if (pathapi) {
+ _PathCchCombineEx = (PPathCchCombineEx)GetProcAddress(
+ pathapi, "PathCchCombineEx");
+ }
+ else {
+ _PathCchCombineEx = NULL;
+ }
+ initialized = 1;
+ }
+
+ if (!_PathCchCombineEx) {
+ return E_NOINTERFACE;
+ }
+
+ return _PathCchCombineEx(buffer, bufsize, dirname, relfile, flags);
+}
+
+#endif /* defined(MS_WINDOWS_GAMES) && !defined(MS_WINDOWS_DESKTOP) */
+
+// The caller must ensure "buffer" is big enough.
+static int
+join_relfile(wchar_t *buffer, size_t bufsize,
+ const wchar_t *dirname, const wchar_t *relfile)
+{
+#ifdef MS_WINDOWS
+ if (FAILED(PathCchCombineEx(buffer, bufsize, dirname, relfile,
+ PATHCCH_ALLOW_LONG_PATHS))) {
+ return -1;
+ }
+#else
+ assert(!_Py_isabs(relfile));
+ size_t dirlen = wcslen(dirname);
+ size_t rellen = wcslen(relfile);
+ size_t maxlen = bufsize - 1;
+ if (maxlen > MAXPATHLEN || dirlen >= maxlen || rellen >= maxlen - dirlen) {
+ return -1;
+ }
+ if (dirlen == 0) {
+ // We do not add a leading separator.
+ wcscpy(buffer, relfile);
+ }
+ else {
+ if (dirname != buffer) {
+ wcscpy(buffer, dirname);
+ }
+ size_t relstart = dirlen;
+ if (dirlen > 1 && dirname[dirlen - 1] != SEP) {
+ buffer[dirlen] = SEP;
+ relstart += 1;
+ }
+ wcscpy(&buffer[relstart], relfile);
+ }
+#endif
+ return 0;
+}
+
+/* Join the two paths together, like os.path.join(). Return NULL
+ if memory could not be allocated. The caller is responsible
+ for calling PyMem_RawFree() on the result. */
+wchar_t *
+_Py_join_relfile(const wchar_t *dirname, const wchar_t *relfile)
+{
+ assert(dirname != NULL && relfile != NULL);
+#ifndef MS_WINDOWS
+ assert(!_Py_isabs(relfile));
+#endif
+ size_t maxlen = wcslen(dirname) + 1 + wcslen(relfile);
+ size_t bufsize = maxlen + 1;
+ wchar_t *filename = PyMem_RawMalloc(bufsize * sizeof(wchar_t));
+ if (filename == NULL) {
+ return NULL;
+ }
+ assert(wcslen(dirname) < MAXPATHLEN);
+ assert(wcslen(relfile) < MAXPATHLEN - wcslen(dirname));
+ if (join_relfile(filename, bufsize, dirname, relfile) < 0) {
+ PyMem_RawFree(filename);
+ return NULL;
+ }
+ return filename;
+}
+
+/* Join the two paths together, like os.path.join().
+ dirname: the target buffer with the dirname already in place,
+ including trailing NUL
+ relfile: this must be a relative path
+ bufsize: total allocated size of the buffer
+ Return -1 if anything is wrong with the path lengths. */
+int
+_Py_add_relfile(wchar_t *dirname, const wchar_t *relfile, size_t bufsize)
+{
+ assert(dirname != NULL && relfile != NULL);
+ assert(bufsize > 0);
+ return join_relfile(dirname, bufsize, dirname, relfile);
+}
+
+
+size_t
+_Py_find_basename(const wchar_t *filename)
+{
+ for (size_t i = wcslen(filename); i > 0; --i) {
+ if (filename[i] == SEP) {
+ return i + 1;
+ }
+ }
+ return 0;
+}
+
+/* In-place path normalisation. Returns the start of the normalized
+ path, which will be within the original buffer. Guaranteed to not
+ make the path longer, and will not fail. 'size' is the length of
+ the path, if known. If -1, the first null character will be assumed
+ to be the end of the path. 'normsize' will be set to contain the
+ length of the resulting normalized path. */
+wchar_t *
+_Py_normpath_and_size(wchar_t *path, Py_ssize_t size, Py_ssize_t *normsize)
+{
+ assert(path != NULL);
+ if ((size < 0 && !path[0]) || size == 0) {
+ *normsize = 0;
+ return path;
+ }
+ wchar_t *pEnd = size >= 0 ? &path[size] : NULL;
+ wchar_t *p1 = path; // sequentially scanned address in the path
+ wchar_t *p2 = path; // destination of a scanned character to be ljusted
+ wchar_t *minP2 = path; // the beginning of the destination range
+ wchar_t lastC = L'\0'; // the last ljusted character, p2[-1] in most cases
+
+#define IS_END(x) (pEnd ? (x) == pEnd : !*(x))
+#ifdef ALTSEP
+#define IS_SEP(x) (*(x) == SEP || *(x) == ALTSEP)
+#else
+#define IS_SEP(x) (*(x) == SEP)
+#endif
+#define SEP_OR_END(x) (IS_SEP(x) || IS_END(x))
+
+ // Skip leading '.\'
+ if (p1[0] == L'.' && IS_SEP(&p1[1])) {
+ path = &path[2];
+ while (IS_SEP(path) && !IS_END(path)) {
+ path++;
+ }
+ p1 = p2 = minP2 = path;
+ lastC = SEP;
+ }
+#ifdef MS_WINDOWS
+ // Skip past drive segment and update minP2
+ else if (p1[0] && p1[1] == L':') {
+ *p2++ = *p1++;
+ *p2++ = *p1++;
+ minP2 = p2;
+ lastC = L':';
+ }
+ // Skip past all \\-prefixed paths, including \\?\, \\.\,
+ // and network paths, including the first segment.
+ else if (IS_SEP(&p1[0]) && IS_SEP(&p1[1])) {
+ int sepCount = 2;
+ *p2++ = SEP;
+ *p2++ = SEP;
+ p1 += 2;
+ for (; !IS_END(p1) && sepCount; ++p1) {
+ if (IS_SEP(p1)) {
+ --sepCount;
+ *p2++ = lastC = SEP;
+ } else {
+ *p2++ = lastC = *p1;
+ }
+ }
+ minP2 = p2 - 1;
+ }
+#else
+ // Skip past two leading SEPs
+ else if (IS_SEP(&p1[0]) && IS_SEP(&p1[1]) && !IS_SEP(&p1[2])) {
+ *p2++ = *p1++;
+ *p2++ = *p1++;
+ minP2 = p2 - 1; // Absolute path has SEP at minP2
+ lastC = SEP;
+ }
+#endif /* MS_WINDOWS */
+
+ /* if pEnd is specified, check that. Else, check for null terminator */
+ for (; !IS_END(p1); ++p1) {
+ wchar_t c = *p1;
+#ifdef ALTSEP
+ if (c == ALTSEP) {
+ c = SEP;
+ }
+#endif
+ if (lastC == SEP) {
+ if (c == L'.') {
+ int sep_at_1 = SEP_OR_END(&p1[1]);
+ int sep_at_2 = !sep_at_1 && SEP_OR_END(&p1[2]);
+ if (sep_at_2 && p1[1] == L'.') {
+ wchar_t *p3 = p2;
+ while (p3 != minP2 && *--p3 == SEP) { }
+ while (p3 != minP2 && *(p3 - 1) != SEP) { --p3; }
+ if (p2 == minP2
+ || (p3[0] == L'.' && p3[1] == L'.' && IS_SEP(&p3[2])))
+ {
+ // Previous segment is also ../, so append instead.
+ // Relative path does not absorb ../ at minP2 as well.
+ *p2++ = L'.';
+ *p2++ = L'.';
+ lastC = L'.';
+ } else if (p3[0] == SEP) {
+ // Absolute path, so absorb segment
+ p2 = p3 + 1;
+ } else {
+ p2 = p3;
+ }
+ p1 += 1;
+ } else if (sep_at_1) {
+ } else {
+ *p2++ = lastC = c;
+ }
+ } else if (c == SEP) {
+ } else {
+ *p2++ = lastC = c;
+ }
+ } else {
+ *p2++ = lastC = c;
+ }
+ }
+ *p2 = L'\0';
+ if (p2 != minP2) {
+ while (--p2 != minP2 && *p2 == SEP) {
+ *p2 = L'\0';
+ }
+ } else {
+ --p2;
+ }
+ *normsize = p2 - path + 1;
+#undef SEP_OR_END
+#undef IS_SEP
+#undef IS_END
+ return path;
+}
+
+/* In-place path normalisation. Returns the start of the normalized
+ path, which will be within the original buffer. Guaranteed to not
+ make the path longer, and will not fail. 'size' is the length of
+ the path, if known. If -1, the first null character will be assumed
+ to be the end of the path. */
+wchar_t *
+_Py_normpath(wchar_t *path, Py_ssize_t size)
+{
+ Py_ssize_t norm_length;
+ return _Py_normpath_and_size(path, size, &norm_length);
+}
+
+
+/* Get the current directory. buflen is the buffer size in wide characters
+ including the null character. Decode the path from the locale encoding.
+
+ Return NULL on getcwd() error, on decoding error, or if 'buf' is
+ too short. */
+wchar_t*
+_Py_wgetcwd(wchar_t *buf, size_t buflen)
+{
+#ifdef MS_WINDOWS
+ int ibuflen = (int)Py_MIN(buflen, INT_MAX);
+ return _wgetcwd(buf, ibuflen);
+#else
+ char fname[MAXPATHLEN];
+ wchar_t *wname;
+ size_t len;
+
+ if (getcwd(fname, Py_ARRAY_LENGTH(fname)) == NULL)
+ return NULL;
+ wname = Py_DecodeLocale(fname, &len);
+ if (wname == NULL)
+ return NULL;
+ /* wname must have space to store the trailing NUL character */
+ if (buflen <= len) {
+ PyMem_RawFree(wname);
+ return NULL;
+ }
+ wcsncpy(buf, wname, buflen);
+ PyMem_RawFree(wname);
+ return buf;
+#endif
+}
+
+/* Duplicate a file descriptor. The new file descriptor is created as
+ non-inheritable. Return a new file descriptor on success, raise an OSError
+ exception and return -1 on error.
+
+ The GIL is released to call dup(). The caller must hold the GIL. */
+int
+_Py_dup(int fd)
+{
+#ifdef MS_WINDOWS
+ HANDLE handle;
+#endif
+
+ assert(PyGILState_Check());
+
+#ifdef MS_WINDOWS
+ handle = _Py_get_osfhandle(fd);
+ if (handle == INVALID_HANDLE_VALUE)
+ return -1;
+
+ Py_BEGIN_ALLOW_THREADS
+ _Py_BEGIN_SUPPRESS_IPH
+ fd = dup(fd);
+ _Py_END_SUPPRESS_IPH
+ Py_END_ALLOW_THREADS
+ if (fd < 0) {
+ PyErr_SetFromErrno(PyExc_OSError);
+ return -1;
+ }
+
+ if (_Py_set_inheritable(fd, 0, NULL) < 0) {
+ _Py_BEGIN_SUPPRESS_IPH
+ close(fd);
+ _Py_END_SUPPRESS_IPH
+ return -1;
+ }
+#elif defined(HAVE_FCNTL_H) && defined(F_DUPFD_CLOEXEC)
+ Py_BEGIN_ALLOW_THREADS
+ _Py_BEGIN_SUPPRESS_IPH
+ fd = fcntl(fd, F_DUPFD_CLOEXEC, 0);
+ _Py_END_SUPPRESS_IPH
+ Py_END_ALLOW_THREADS
+ if (fd < 0) {
+ PyErr_SetFromErrno(PyExc_OSError);
+ return -1;
+ }
+
+#elif HAVE_DUP
+ Py_BEGIN_ALLOW_THREADS
+ _Py_BEGIN_SUPPRESS_IPH
+ fd = dup(fd);
+ _Py_END_SUPPRESS_IPH
+ Py_END_ALLOW_THREADS
+ if (fd < 0) {
+ PyErr_SetFromErrno(PyExc_OSError);
+ return -1;
+ }
+
+ if (_Py_set_inheritable(fd, 0, NULL) < 0) {
+ _Py_BEGIN_SUPPRESS_IPH
+ close(fd);
+ _Py_END_SUPPRESS_IPH
+ return -1;
+ }
+#else
+ errno = ENOTSUP;
+ PyErr_SetFromErrno(PyExc_OSError);
+ return -1;
+#endif
+ return fd;
+}
+
+#ifndef MS_WINDOWS
+/* Get the blocking mode of the file descriptor.
+ Return 0 if the O_NONBLOCK flag is set, 1 if the flag is cleared,
+ raise an exception and return -1 on error. */
+int
+_Py_get_blocking(int fd)
+{
+ int flags;
+ _Py_BEGIN_SUPPRESS_IPH
+ flags = fcntl(fd, F_GETFL, 0);
+ _Py_END_SUPPRESS_IPH
+ if (flags < 0) {
+ PyErr_SetFromErrno(PyExc_OSError);
+ return -1;
+ }
+
+ return !(flags & O_NONBLOCK);
+}
+
+/* Set the blocking mode of the specified file descriptor.
+
+ Set the O_NONBLOCK flag if blocking is False, clear the O_NONBLOCK flag
+ otherwise.
+
+ Return 0 on success, raise an exception and return -1 on error. */
+int
+_Py_set_blocking(int fd, int blocking)
+{
+/* bpo-41462: On VxWorks, ioctl(FIONBIO) only works on sockets.
+ Use fcntl() instead. */
+#if defined(HAVE_SYS_IOCTL_H) && defined(FIONBIO) && !defined(__VXWORKS__)
+ int arg = !blocking;
+ if (ioctl(fd, FIONBIO, &arg) < 0)
+ goto error;
+#else
+ int flags, res;
+
+ _Py_BEGIN_SUPPRESS_IPH
+ flags = fcntl(fd, F_GETFL, 0);
+ if (flags >= 0) {
+ if (blocking)
+ flags = flags & (~O_NONBLOCK);
+ else
+ flags = flags | O_NONBLOCK;
+
+ res = fcntl(fd, F_SETFL, flags);
+ } else {
+ res = -1;
+ }
+ _Py_END_SUPPRESS_IPH
+
+ if (res < 0)
+ goto error;
+#endif
+ return 0;
+
+error:
+ PyErr_SetFromErrno(PyExc_OSError);
+ return -1;
+}
+#else /* MS_WINDOWS */
+int
+_Py_get_blocking(int fd)
+{
+ HANDLE handle;
+ DWORD mode;
+ BOOL success;
+
+ handle = _Py_get_osfhandle(fd);
+ if (handle == INVALID_HANDLE_VALUE) {
+ return -1;
+ }
+
+ Py_BEGIN_ALLOW_THREADS
+ success = GetNamedPipeHandleStateW(handle, &mode,
+ NULL, NULL, NULL, NULL, 0);
+ Py_END_ALLOW_THREADS
+
+ if (!success) {
+ PyErr_SetFromWindowsErr(0);
+ return -1;
+ }
+
+ return !(mode & PIPE_NOWAIT);
+}
+
+int
+_Py_set_blocking(int fd, int blocking)
+{
+ HANDLE handle;
+ DWORD mode;
+ BOOL success;
+
+ handle = _Py_get_osfhandle(fd);
+ if (handle == INVALID_HANDLE_VALUE) {
+ return -1;
+ }
+
+ Py_BEGIN_ALLOW_THREADS
+ success = GetNamedPipeHandleStateW(handle, &mode,
+ NULL, NULL, NULL, NULL, 0);
+ if (success) {
+ if (blocking) {
+ mode &= ~PIPE_NOWAIT;
+ }
+ else {
+ mode |= PIPE_NOWAIT;
+ }
+ success = SetNamedPipeHandleState(handle, &mode, NULL, NULL);
+ }
+ Py_END_ALLOW_THREADS
+
+ if (!success) {
+ PyErr_SetFromWindowsErr(0);
+ return -1;
+ }
+ return 0;
+}
+
+void*
+_Py_get_osfhandle_noraise(int fd)
+{
+ void *handle;
+ _Py_BEGIN_SUPPRESS_IPH
+ handle = (void*)_get_osfhandle(fd);
+ _Py_END_SUPPRESS_IPH
+ return handle;
+}
+
+void*
+_Py_get_osfhandle(int fd)
+{
+ void *handle = _Py_get_osfhandle_noraise(fd);
+ if (handle == INVALID_HANDLE_VALUE)
+ PyErr_SetFromErrno(PyExc_OSError);
+
+ return handle;
+}
+
+int
+_Py_open_osfhandle_noraise(void *handle, int flags)
+{
+ int fd;
+ _Py_BEGIN_SUPPRESS_IPH
+ fd = _open_osfhandle((intptr_t)handle, flags);
+ _Py_END_SUPPRESS_IPH
+ return fd;
+}
+
+int
+_Py_open_osfhandle(void *handle, int flags)
+{
+ int fd = _Py_open_osfhandle_noraise(handle, flags);
+ if (fd == -1)
+ PyErr_SetFromErrno(PyExc_OSError);
+
+ return fd;
+}
+#endif /* MS_WINDOWS */
+
+int
+_Py_GetLocaleconvNumeric(struct lconv *lc,
+ PyObject **decimal_point, PyObject **thousands_sep)
+{
+ assert(decimal_point != NULL);
+ assert(thousands_sep != NULL);
+
+#ifndef MS_WINDOWS
+ int change_locale = 0;
+ if ((strlen(lc->decimal_point) > 1 || ((unsigned char)lc->decimal_point[0]) > 127)) {
+ change_locale = 1;
+ }
+ if ((strlen(lc->thousands_sep) > 1 || ((unsigned char)lc->thousands_sep[0]) > 127)) {
+ change_locale = 1;
+ }
+
+ /* Keep a copy of the LC_CTYPE locale */
+ char *oldloc = NULL, *loc = NULL;
+ if (change_locale) {
+ oldloc = setlocale(LC_CTYPE, NULL);
+ if (!oldloc) {
+ PyErr_SetString(PyExc_RuntimeWarning,
+ "failed to get LC_CTYPE locale");
+ return -1;
+ }
+
+ oldloc = _PyMem_Strdup(oldloc);
+ if (!oldloc) {
+ PyErr_NoMemory();
+ return -1;
+ }
+
+ loc = setlocale(LC_NUMERIC, NULL);
+ if (loc != NULL && strcmp(loc, oldloc) == 0) {
+ loc = NULL;
+ }
+
+ if (loc != NULL) {
+ /* Only set the locale temporarily the LC_CTYPE locale
+ if LC_NUMERIC locale is different than LC_CTYPE locale and
+ decimal_point and/or thousands_sep are non-ASCII or longer than
+ 1 byte */
+ setlocale(LC_CTYPE, loc);
+ }
+ }
+
+#define GET_LOCALE_STRING(ATTR) PyUnicode_DecodeLocale(lc->ATTR, NULL)
+#else /* MS_WINDOWS */
+/* Use _W_* fields of Windows strcut lconv */
+#define GET_LOCALE_STRING(ATTR) PyUnicode_FromWideChar(lc->_W_ ## ATTR, -1)
+#endif /* MS_WINDOWS */
+
+ int res = -1;
+
+ *decimal_point = GET_LOCALE_STRING(decimal_point);
+ if (*decimal_point == NULL) {
+ goto done;
+ }
+
+ *thousands_sep = GET_LOCALE_STRING(thousands_sep);
+ if (*thousands_sep == NULL) {
+ goto done;
+ }
+
+ res = 0;
+
+done:
+#ifndef MS_WINDOWS
+ if (loc != NULL) {
+ setlocale(LC_CTYPE, oldloc);
+ }
+ PyMem_Free(oldloc);
+#endif
+ return res;
+
+#undef GET_LOCALE_STRING
+}
+
+/* Our selection logic for which function to use is as follows:
+ * 1. If close_range(2) is available, always prefer that; it's better for
+ * contiguous ranges like this than fdwalk(3) which entails iterating over
+ * the entire fd space and simply doing nothing for those outside the range.
+ * 2. If closefrom(2) is available, we'll attempt to use that next if we're
+ * closing up to sysconf(_SC_OPEN_MAX).
+ * 2a. Fallback to fdwalk(3) if we're not closing up to sysconf(_SC_OPEN_MAX),
+ * as that will be more performant if the range happens to have any chunk of
+ * non-opened fd in the middle.
+ * 2b. If fdwalk(3) isn't available, just do a plain close(2) loop.
+ */
+#ifdef __FreeBSD__
+# define USE_CLOSEFROM
+#endif /* __FreeBSD__ */
+
+#ifdef HAVE_FDWALK
+# define USE_FDWALK
+#endif /* HAVE_FDWALK */
+
+#ifdef USE_FDWALK
+static int
+_fdwalk_close_func(void *lohi, int fd)
+{
+ int lo = ((int *)lohi)[0];
+ int hi = ((int *)lohi)[1];
+
+ if (fd >= hi) {
+ return 1;
+ }
+ else if (fd >= lo) {
+ /* Ignore errors */
+ (void)close(fd);
+ }
+ return 0;
+}
+#endif /* USE_FDWALK */
+
+/* Closes all file descriptors in [first, last], ignoring errors. */
+void
+_Py_closerange(int first, int last)
+{
+ first = Py_MAX(first, 0);
+ _Py_BEGIN_SUPPRESS_IPH
+#ifdef HAVE_CLOSE_RANGE
+ if (close_range(first, last, 0) == 0) {
+ /* close_range() ignores errors when it closes file descriptors.
+ * Possible reasons of an error return are lack of kernel support
+ * or denial of the underlying syscall by a seccomp sandbox on Linux.
+ * Fallback to other methods in case of any error. */
+ }
+ else
+#endif /* HAVE_CLOSE_RANGE */
+#ifdef USE_CLOSEFROM
+ if (last >= sysconf(_SC_OPEN_MAX)) {
+ /* Any errors encountered while closing file descriptors are ignored */
+ closefrom(first);
+ }
+ else
+#endif /* USE_CLOSEFROM */
+#ifdef USE_FDWALK
+ {
+ int lohi[2];
+ lohi[0] = first;
+ lohi[1] = last + 1;
+ fdwalk(_fdwalk_close_func, lohi);
+ }
+#else
+ {
+ for (int i = first; i <= last; i++) {
+ /* Ignore errors */
+ (void)close(i);
+ }
+ }
+#endif /* USE_FDWALK */
+ _Py_END_SUPPRESS_IPH
+}
diff --git a/contrib/tools/python3/Python/flowgraph.c b/contrib/tools/python3/Python/flowgraph.c
new file mode 100644
index 00000000000..fbbe053ae58
--- /dev/null
+++ b/contrib/tools/python3/Python/flowgraph.c
@@ -0,0 +1,2229 @@
+
+#include <stdbool.h>
+
+#include "Python.h"
+#include "pycore_flowgraph.h"
+#include "pycore_compile.h"
+#include "pycore_pymem.h" // _PyMem_IsPtrFreed()
+
+#include "pycore_opcode_utils.h"
+#define NEED_OPCODE_METADATA
+#include "opcode_metadata.h" // _PyOpcode_opcode_metadata, _PyOpcode_num_popped/pushed
+#undef NEED_OPCODE_METADATA
+
+
+#undef SUCCESS
+#undef ERROR
+#define SUCCESS 0
+#define ERROR -1
+
+#define RETURN_IF_ERROR(X) \
+ if ((X) == -1) { \
+ return ERROR; \
+ }
+
+#define DEFAULT_BLOCK_SIZE 16
+
+typedef _PyCompilerSrcLocation location;
+typedef _PyCfgJumpTargetLabel jump_target_label;
+typedef _PyCfgBasicblock basicblock;
+typedef _PyCfgBuilder cfg_builder;
+typedef _PyCfgInstruction cfg_instr;
+
+static const jump_target_label NO_LABEL = {-1};
+
+#define SAME_LABEL(L1, L2) ((L1).id == (L2).id)
+#define IS_LABEL(L) (!SAME_LABEL((L), (NO_LABEL)))
+
+
+static inline int
+is_block_push(cfg_instr *i)
+{
+ return IS_BLOCK_PUSH_OPCODE(i->i_opcode);
+}
+
+static inline int
+is_jump(cfg_instr *i)
+{
+ return IS_JUMP_OPCODE(i->i_opcode);
+}
+
+/* One arg*/
+#define INSTR_SET_OP1(I, OP, ARG) \
+ do { \
+ assert(HAS_ARG(OP)); \
+ _PyCfgInstruction *_instr__ptr_ = (I); \
+ _instr__ptr_->i_opcode = (OP); \
+ _instr__ptr_->i_oparg = (ARG); \
+ } while (0);
+
+/* No args*/
+#define INSTR_SET_OP0(I, OP) \
+ do { \
+ assert(!HAS_ARG(OP)); \
+ _PyCfgInstruction *_instr__ptr_ = (I); \
+ _instr__ptr_->i_opcode = (OP); \
+ _instr__ptr_->i_oparg = 0; \
+ } while (0);
+
+/***** Blocks *****/
+
+/* Returns the offset of the next instruction in the current block's
+ b_instr array. Resizes the b_instr as necessary.
+ Returns -1 on failure.
+*/
+static int
+basicblock_next_instr(basicblock *b)
+{
+ assert(b != NULL);
+ RETURN_IF_ERROR(
+ _PyCompile_EnsureArrayLargeEnough(
+ b->b_iused + 1,
+ (void**)&b->b_instr,
+ &b->b_ialloc,
+ DEFAULT_BLOCK_SIZE,
+ sizeof(cfg_instr)));
+ return b->b_iused++;
+}
+
+/* Allocate a new block and return a pointer to it.
+ Returns NULL on error.
+*/
+
+static basicblock *
+cfg_builder_new_block(cfg_builder *g)
+{
+ basicblock *b = (basicblock *)PyObject_Calloc(1, sizeof(basicblock));
+ if (b == NULL) {
+ PyErr_NoMemory();
+ return NULL;
+ }
+ /* Extend the singly linked list of blocks with new block. */
+ b->b_list = g->g_block_list;
+ g->g_block_list = b;
+ b->b_label = NO_LABEL;
+ return b;
+}
+
+static int
+basicblock_addop(basicblock *b, int opcode, int oparg, location loc)
+{
+ assert(IS_WITHIN_OPCODE_RANGE(opcode));
+ assert(!IS_ASSEMBLER_OPCODE(opcode));
+ assert(HAS_ARG(opcode) || HAS_TARGET(opcode) || oparg == 0);
+ assert(0 <= oparg && oparg < (1 << 30));
+
+ int off = basicblock_next_instr(b);
+ if (off < 0) {
+ return ERROR;
+ }
+ cfg_instr *i = &b->b_instr[off];
+ i->i_opcode = opcode;
+ i->i_oparg = oparg;
+ i->i_target = NULL;
+ i->i_loc = loc;
+
+ return SUCCESS;
+}
+
+static inline int
+basicblock_append_instructions(basicblock *target, basicblock *source)
+{
+ for (int i = 0; i < source->b_iused; i++) {
+ int n = basicblock_next_instr(target);
+ if (n < 0) {
+ return ERROR;
+ }
+ target->b_instr[n] = source->b_instr[i];
+ }
+ return SUCCESS;
+}
+
+static basicblock *
+copy_basicblock(cfg_builder *g, basicblock *block)
+{
+ /* Cannot copy a block if it has a fallthrough, since
+ * a block can only have one fallthrough predecessor.
+ */
+ assert(BB_NO_FALLTHROUGH(block));
+ basicblock *result = cfg_builder_new_block(g);
+ if (result == NULL) {
+ return NULL;
+ }
+ if (basicblock_append_instructions(result, block) < 0) {
+ return NULL;
+ }
+ return result;
+}
+
+int
+_PyBasicblock_InsertInstruction(basicblock *block, int pos, cfg_instr *instr) {
+ RETURN_IF_ERROR(basicblock_next_instr(block));
+ for (int i = block->b_iused - 1; i > pos; i--) {
+ block->b_instr[i] = block->b_instr[i-1];
+ }
+ block->b_instr[pos] = *instr;
+ return SUCCESS;
+}
+
+static int
+instr_size(cfg_instr *instruction)
+{
+ return _PyCompile_InstrSize(instruction->i_opcode, instruction->i_oparg);
+}
+
+static int
+blocksize(basicblock *b)
+{
+ int size = 0;
+ for (int i = 0; i < b->b_iused; i++) {
+ size += instr_size(&b->b_instr[i]);
+ }
+ return size;
+}
+
+/* For debugging purposes only */
+#if 0
+static void
+dump_instr(cfg_instr *i)
+{
+ const char *jump = is_jump(i) ? "jump " : "";
+
+ char arg[128];
+
+ *arg = '\0';
+ if (HAS_ARG(i->i_opcode)) {
+ sprintf(arg, "arg: %d ", i->i_oparg);
+ }
+ if (HAS_TARGET(i->i_opcode)) {
+ sprintf(arg, "target: %p [%d] ", i->i_target, i->i_oparg);
+ }
+ fprintf(stderr, "line: %d, opcode: %d %s%s\n",
+ i->i_loc.lineno, i->i_opcode, arg, jump);
+}
+
+static inline int
+basicblock_returns(const basicblock *b) {
+ cfg_instr *last = _PyCfg_BasicblockLastInstr(b);
+ return last && (last->i_opcode == RETURN_VALUE || last->i_opcode == RETURN_CONST);
+}
+
+static void
+dump_basicblock(const basicblock *b)
+{
+ const char *b_return = basicblock_returns(b) ? "return " : "";
+ fprintf(stderr, "%d: [EH=%d CLD=%d WRM=%d NO_FT=%d %p] used: %d, depth: %d, offset: %d %s\n",
+ b->b_label.id, b->b_except_handler, b->b_cold, b->b_warm, BB_NO_FALLTHROUGH(b), b, b->b_iused,
+ b->b_startdepth, b->b_offset, b_return);
+ if (b->b_instr) {
+ int i;
+ for (i = 0; i < b->b_iused; i++) {
+ fprintf(stderr, " [%02d] ", i);
+ dump_instr(b->b_instr + i);
+ }
+ }
+}
+
+void
+_PyCfgBuilder_DumpGraph(const basicblock *entryblock)
+{
+ for (const basicblock *b = entryblock; b != NULL; b = b->b_next) {
+ dump_basicblock(b);
+ }
+}
+
+#endif
+
+
+/***** CFG construction and modification *****/
+
+static basicblock *
+cfg_builder_use_next_block(cfg_builder *g, basicblock *block)
+{
+ assert(block != NULL);
+ g->g_curblock->b_next = block;
+ g->g_curblock = block;
+ return block;
+}
+
+cfg_instr *
+_PyCfg_BasicblockLastInstr(const basicblock *b) {
+ assert(b->b_iused >= 0);
+ if (b->b_iused > 0) {
+ assert(b->b_instr != NULL);
+ return &b->b_instr[b->b_iused - 1];
+ }
+ return NULL;
+}
+
+static inline int
+basicblock_exits_scope(const basicblock *b) {
+ cfg_instr *last = _PyCfg_BasicblockLastInstr(b);
+ return last && IS_SCOPE_EXIT_OPCODE(last->i_opcode);
+}
+
+static bool
+cfg_builder_current_block_is_terminated(cfg_builder *g)
+{
+ cfg_instr *last = _PyCfg_BasicblockLastInstr(g->g_curblock);
+ if (last && IS_TERMINATOR_OPCODE(last->i_opcode)) {
+ return true;
+ }
+ if (IS_LABEL(g->g_current_label)) {
+ if (last || IS_LABEL(g->g_curblock->b_label)) {
+ return true;
+ }
+ else {
+ /* current block is empty, label it */
+ g->g_curblock->b_label = g->g_current_label;
+ g->g_current_label = NO_LABEL;
+ }
+ }
+ return false;
+}
+
+static int
+cfg_builder_maybe_start_new_block(cfg_builder *g)
+{
+ if (cfg_builder_current_block_is_terminated(g)) {
+ basicblock *b = cfg_builder_new_block(g);
+ if (b == NULL) {
+ return ERROR;
+ }
+ b->b_label = g->g_current_label;
+ g->g_current_label = NO_LABEL;
+ cfg_builder_use_next_block(g, b);
+ }
+ return SUCCESS;
+}
+
+#ifndef NDEBUG
+static bool
+cfg_builder_check(cfg_builder *g)
+{
+ assert(g->g_entryblock->b_iused > 0);
+ for (basicblock *block = g->g_block_list; block != NULL; block = block->b_list) {
+ assert(!_PyMem_IsPtrFreed(block));
+ if (block->b_instr != NULL) {
+ assert(block->b_ialloc > 0);
+ assert(block->b_iused >= 0);
+ assert(block->b_ialloc >= block->b_iused);
+ }
+ else {
+ assert (block->b_iused == 0);
+ assert (block->b_ialloc == 0);
+ }
+ }
+ return true;
+}
+#endif
+
+int
+_PyCfgBuilder_Init(cfg_builder *g)
+{
+ g->g_block_list = NULL;
+ basicblock *block = cfg_builder_new_block(g);
+ if (block == NULL) {
+ return ERROR;
+ }
+ g->g_curblock = g->g_entryblock = block;
+ g->g_current_label = NO_LABEL;
+ return SUCCESS;
+}
+
+void
+_PyCfgBuilder_Fini(cfg_builder* g)
+{
+ assert(cfg_builder_check(g));
+ basicblock *b = g->g_block_list;
+ while (b != NULL) {
+ if (b->b_instr) {
+ PyObject_Free((void *)b->b_instr);
+ }
+ basicblock *next = b->b_list;
+ PyObject_Free((void *)b);
+ b = next;
+ }
+}
+
+int
+_PyCfgBuilder_UseLabel(cfg_builder *g, jump_target_label lbl)
+{
+ g->g_current_label = lbl;
+ return cfg_builder_maybe_start_new_block(g);
+}
+
+int
+_PyCfgBuilder_Addop(cfg_builder *g, int opcode, int oparg, location loc)
+{
+ RETURN_IF_ERROR(cfg_builder_maybe_start_new_block(g));
+ return basicblock_addop(g->g_curblock, opcode, oparg, loc);
+}
+
+
+/***** debugging helpers *****/
+
+#ifndef NDEBUG
+static int remove_redundant_nops(basicblock *bb);
+
+/*
+static bool
+no_redundant_nops(cfg_builder *g) {
+ for (basicblock *b = g->g_entryblock; b != NULL; b = b->b_next) {
+ if (remove_redundant_nops(b) != 0) {
+ return false;
+ }
+ }
+ return true;
+}
+*/
+
+static bool
+no_empty_basic_blocks(cfg_builder *g) {
+ for (basicblock *b = g->g_entryblock; b != NULL; b = b->b_next) {
+ if (b->b_iused == 0) {
+ return false;
+ }
+ }
+ return true;
+}
+
+static bool
+no_redundant_jumps(cfg_builder *g) {
+ for (basicblock *b = g->g_entryblock; b != NULL; b = b->b_next) {
+ cfg_instr *last = _PyCfg_BasicblockLastInstr(b);
+ if (last != NULL) {
+ if (IS_UNCONDITIONAL_JUMP_OPCODE(last->i_opcode)) {
+ assert(last->i_target != b->b_next);
+ if (last->i_target == b->b_next) {
+ return false;
+ }
+ }
+ }
+ }
+ return true;
+}
+
+#endif
+
+/***** CFG preprocessing (jump targets and exceptions) *****/
+
+static int
+normalize_jumps_in_block(cfg_builder *g, basicblock *b) {
+ cfg_instr *last = _PyCfg_BasicblockLastInstr(b);
+ if (last == NULL || !is_jump(last)) {
+ return SUCCESS;
+ }
+ assert(!IS_ASSEMBLER_OPCODE(last->i_opcode));
+ bool is_forward = last->i_target->b_visited == 0;
+ switch(last->i_opcode) {
+ case JUMP:
+ last->i_opcode = is_forward ? JUMP_FORWARD : JUMP_BACKWARD;
+ return SUCCESS;
+ case JUMP_NO_INTERRUPT:
+ last->i_opcode = is_forward ?
+ JUMP_FORWARD : JUMP_BACKWARD_NO_INTERRUPT;
+ return SUCCESS;
+ }
+ int reversed_opcode = 0;
+ switch(last->i_opcode) {
+ case POP_JUMP_IF_NOT_NONE:
+ reversed_opcode = POP_JUMP_IF_NONE;
+ break;
+ case POP_JUMP_IF_NONE:
+ reversed_opcode = POP_JUMP_IF_NOT_NONE;
+ break;
+ case POP_JUMP_IF_FALSE:
+ reversed_opcode = POP_JUMP_IF_TRUE;
+ break;
+ case POP_JUMP_IF_TRUE:
+ reversed_opcode = POP_JUMP_IF_FALSE;
+ break;
+ }
+ if (is_forward) {
+ return SUCCESS;
+ }
+ /* transform 'conditional jump T' to
+ * 'reversed_jump b_next' followed by 'jump_backwards T'
+ */
+
+ basicblock *target = last->i_target;
+ basicblock *backwards_jump = cfg_builder_new_block(g);
+ if (backwards_jump == NULL) {
+ return ERROR;
+ }
+ basicblock_addop(backwards_jump, JUMP, target->b_label.id, last->i_loc);
+ backwards_jump->b_instr[0].i_target = target;
+ last->i_opcode = reversed_opcode;
+ last->i_target = b->b_next;
+
+ backwards_jump->b_cold = b->b_cold;
+ backwards_jump->b_next = b->b_next;
+ b->b_next = backwards_jump;
+ return SUCCESS;
+}
+
+
+static int
+normalize_jumps(_PyCfgBuilder *g)
+{
+ basicblock *entryblock = g->g_entryblock;
+ for (basicblock *b = entryblock; b != NULL; b = b->b_next) {
+ b->b_visited = 0;
+ }
+ for (basicblock *b = entryblock; b != NULL; b = b->b_next) {
+ b->b_visited = 1;
+ RETURN_IF_ERROR(normalize_jumps_in_block(g, b));
+ }
+ return SUCCESS;
+}
+
+static void
+resolve_jump_offsets(basicblock *entryblock)
+{
+ int bsize, totsize, extended_arg_recompile;
+
+ /* Compute the size of each block and fixup jump args.
+ Replace block pointer with position in bytecode. */
+ do {
+ totsize = 0;
+ for (basicblock *b = entryblock; b != NULL; b = b->b_next) {
+ bsize = blocksize(b);
+ b->b_offset = totsize;
+ totsize += bsize;
+ }
+ extended_arg_recompile = 0;
+ for (basicblock *b = entryblock; b != NULL; b = b->b_next) {
+ bsize = b->b_offset;
+ for (int i = 0; i < b->b_iused; i++) {
+ cfg_instr *instr = &b->b_instr[i];
+ int isize = instr_size(instr);
+ /* jump offsets are computed relative to
+ * the instruction pointer after fetching
+ * the jump instruction.
+ */
+ bsize += isize;
+ if (is_jump(instr)) {
+ instr->i_oparg = instr->i_target->b_offset;
+ if (instr->i_oparg < bsize) {
+ assert(IS_BACKWARDS_JUMP_OPCODE(instr->i_opcode));
+ instr->i_oparg = bsize - instr->i_oparg;
+ }
+ else {
+ assert(!IS_BACKWARDS_JUMP_OPCODE(instr->i_opcode));
+ instr->i_oparg -= bsize;
+ }
+ if (instr_size(instr) != isize) {
+ extended_arg_recompile = 1;
+ }
+ }
+ }
+ }
+
+ /* XXX: This is an awful hack that could hurt performance, but
+ on the bright side it should work until we come up
+ with a better solution.
+
+ The issue is that in the first loop blocksize() is called
+ which calls instr_size() which requires i_oparg be set
+ appropriately. There is a bootstrap problem because
+ i_oparg is calculated in the second loop above.
+
+ So we loop until we stop seeing new EXTENDED_ARGs.
+ The only EXTENDED_ARGs that could be popping up are
+ ones in jump instructions. So this should converge
+ fairly quickly.
+ */
+ } while (extended_arg_recompile);
+}
+
+int
+_PyCfg_ResolveJumps(_PyCfgBuilder *g)
+{
+ RETURN_IF_ERROR(normalize_jumps(g));
+ assert(no_redundant_jumps(g));
+ resolve_jump_offsets(g->g_entryblock);
+ return SUCCESS;
+}
+
+static int
+check_cfg(cfg_builder *g) {
+ for (basicblock *b = g->g_entryblock; b != NULL; b = b->b_next) {
+ /* Raise SystemError if jump or exit is not last instruction in the block. */
+ for (int i = 0; i < b->b_iused; i++) {
+ int opcode = b->b_instr[i].i_opcode;
+ assert(!IS_ASSEMBLER_OPCODE(opcode));
+ if (IS_TERMINATOR_OPCODE(opcode)) {
+ if (i != b->b_iused - 1) {
+ PyErr_SetString(PyExc_SystemError, "malformed control flow graph.");
+ return ERROR;
+ }
+ }
+ }
+ }
+ return SUCCESS;
+}
+
+static int
+get_max_label(basicblock *entryblock)
+{
+ int lbl = -1;
+ for (basicblock *b = entryblock; b != NULL; b = b->b_next) {
+ if (b->b_label.id > lbl) {
+ lbl = b->b_label.id;
+ }
+ }
+ return lbl;
+}
+
+/* Calculate the actual jump target from the target_label */
+static int
+translate_jump_labels_to_targets(basicblock *entryblock)
+{
+ int max_label = get_max_label(entryblock);
+ size_t mapsize = sizeof(basicblock *) * (max_label + 1);
+ basicblock **label2block = (basicblock **)PyMem_Malloc(mapsize);
+ if (!label2block) {
+ PyErr_NoMemory();
+ return ERROR;
+ }
+ memset(label2block, 0, mapsize);
+ for (basicblock *b = entryblock; b != NULL; b = b->b_next) {
+ if (b->b_label.id >= 0) {
+ label2block[b->b_label.id] = b;
+ }
+ }
+ for (basicblock *b = entryblock; b != NULL; b = b->b_next) {
+ for (int i = 0; i < b->b_iused; i++) {
+ cfg_instr *instr = &b->b_instr[i];
+ assert(instr->i_target == NULL);
+ if (HAS_TARGET(instr->i_opcode)) {
+ int lbl = instr->i_oparg;
+ assert(lbl >= 0 && lbl <= max_label);
+ instr->i_target = label2block[lbl];
+ assert(instr->i_target != NULL);
+ assert(instr->i_target->b_label.id == lbl);
+ }
+ }
+ }
+ PyMem_Free(label2block);
+ return SUCCESS;
+}
+
+int
+_PyCfg_JumpLabelsToTargets(basicblock *entryblock)
+{
+ return translate_jump_labels_to_targets(entryblock);
+}
+
+static int
+mark_except_handlers(basicblock *entryblock) {
+#ifndef NDEBUG
+ for (basicblock *b = entryblock; b != NULL; b = b->b_next) {
+ assert(!b->b_except_handler);
+ }
+#endif
+ for (basicblock *b = entryblock; b != NULL; b = b->b_next) {
+ for (int i=0; i < b->b_iused; i++) {
+ cfg_instr *instr = &b->b_instr[i];
+ if (is_block_push(instr)) {
+ instr->i_target->b_except_handler = 1;
+ }
+ }
+ }
+ return SUCCESS;
+}
+
+
+typedef _PyCfgExceptStack ExceptStack;
+
+static basicblock *
+push_except_block(ExceptStack *stack, cfg_instr *setup) {
+ assert(is_block_push(setup));
+ int opcode = setup->i_opcode;
+ basicblock * target = setup->i_target;
+ if (opcode == SETUP_WITH || opcode == SETUP_CLEANUP) {
+ target->b_preserve_lasti = 1;
+ }
+ assert(stack->depth <= CO_MAXBLOCKS);
+ stack->handlers[++stack->depth] = target;
+ return target;
+}
+
+static basicblock *
+pop_except_block(ExceptStack *stack) {
+ assert(stack->depth > 0);
+ return stack->handlers[--stack->depth];
+}
+
+static basicblock *
+except_stack_top(ExceptStack *stack) {
+ return stack->handlers[stack->depth];
+}
+
+static ExceptStack *
+make_except_stack(void) {
+ ExceptStack *new = PyMem_Malloc(sizeof(ExceptStack));
+ if (new == NULL) {
+ PyErr_NoMemory();
+ return NULL;
+ }
+ new->depth = 0;
+ new->handlers[0] = NULL;
+ return new;
+}
+
+static ExceptStack *
+copy_except_stack(ExceptStack *stack) {
+ ExceptStack *copy = PyMem_Malloc(sizeof(ExceptStack));
+ if (copy == NULL) {
+ PyErr_NoMemory();
+ return NULL;
+ }
+ memcpy(copy, stack, sizeof(ExceptStack));
+ return copy;
+}
+
+static basicblock**
+make_cfg_traversal_stack(basicblock *entryblock) {
+ int nblocks = 0;
+ for (basicblock *b = entryblock; b != NULL; b = b->b_next) {
+ b->b_visited = 0;
+ nblocks++;
+ }
+ basicblock **stack = (basicblock **)PyMem_Malloc(sizeof(basicblock *) * nblocks);
+ if (!stack) {
+ PyErr_NoMemory();
+ }
+ return stack;
+}
+
+Py_LOCAL_INLINE(void)
+stackdepth_push(basicblock ***sp, basicblock *b, int depth)
+{
+ assert(b->b_startdepth < 0 || b->b_startdepth == depth);
+ if (b->b_startdepth < depth && b->b_startdepth < 100) {
+ assert(b->b_startdepth < 0);
+ b->b_startdepth = depth;
+ *(*sp)++ = b;
+ }
+}
+
+/* Find the flow path that needs the largest stack. We assume that
+ * cycles in the flow graph have no net effect on the stack depth.
+ */
+int
+_PyCfg_Stackdepth(basicblock *entryblock, int code_flags)
+{
+ for (basicblock *b = entryblock; b != NULL; b = b->b_next) {
+ b->b_startdepth = INT_MIN;
+ }
+ basicblock **stack = make_cfg_traversal_stack(entryblock);
+ if (!stack) {
+ return ERROR;
+ }
+
+ int maxdepth = 0;
+ basicblock **sp = stack;
+ if (code_flags & (CO_GENERATOR | CO_COROUTINE | CO_ASYNC_GENERATOR)) {
+ stackdepth_push(&sp, entryblock, 1);
+ } else {
+ stackdepth_push(&sp, entryblock, 0);
+ }
+
+ while (sp != stack) {
+ basicblock *b = *--sp;
+ int depth = b->b_startdepth;
+ assert(depth >= 0);
+ basicblock *next = b->b_next;
+ for (int i = 0; i < b->b_iused; i++) {
+ cfg_instr *instr = &b->b_instr[i];
+ int effect = PyCompile_OpcodeStackEffectWithJump(instr->i_opcode, instr->i_oparg, 0);
+ if (effect == PY_INVALID_STACK_EFFECT) {
+ PyErr_Format(PyExc_SystemError,
+ "compiler PyCompile_OpcodeStackEffectWithJump(opcode=%d, arg=%i) failed",
+ instr->i_opcode, instr->i_oparg);
+ return ERROR;
+ }
+ int new_depth = depth + effect;
+ assert(new_depth >= 0); /* invalid code or bug in stackdepth() */
+ if (new_depth > maxdepth) {
+ maxdepth = new_depth;
+ }
+ if (HAS_TARGET(instr->i_opcode)) {
+ effect = PyCompile_OpcodeStackEffectWithJump(instr->i_opcode, instr->i_oparg, 1);
+ assert(effect != PY_INVALID_STACK_EFFECT);
+ int target_depth = depth + effect;
+ assert(target_depth >= 0); /* invalid code or bug in stackdepth() */
+ if (target_depth > maxdepth) {
+ maxdepth = target_depth;
+ }
+ stackdepth_push(&sp, instr->i_target, target_depth);
+ }
+ depth = new_depth;
+ assert(!IS_ASSEMBLER_OPCODE(instr->i_opcode));
+ if (IS_UNCONDITIONAL_JUMP_OPCODE(instr->i_opcode) ||
+ IS_SCOPE_EXIT_OPCODE(instr->i_opcode))
+ {
+ /* remaining code is dead */
+ next = NULL;
+ break;
+ }
+ }
+ if (next != NULL) {
+ assert(BB_HAS_FALLTHROUGH(b));
+ stackdepth_push(&sp, next, depth);
+ }
+ }
+ PyMem_Free(stack);
+ return maxdepth;
+}
+
+static int
+label_exception_targets(basicblock *entryblock) {
+ basicblock **todo_stack = make_cfg_traversal_stack(entryblock);
+ if (todo_stack == NULL) {
+ return ERROR;
+ }
+ ExceptStack *except_stack = make_except_stack();
+ if (except_stack == NULL) {
+ PyMem_Free(todo_stack);
+ PyErr_NoMemory();
+ return ERROR;
+ }
+ except_stack->depth = 0;
+ todo_stack[0] = entryblock;
+ entryblock->b_visited = 1;
+ entryblock->b_exceptstack = except_stack;
+ basicblock **todo = &todo_stack[1];
+ basicblock *handler = NULL;
+ while (todo > todo_stack) {
+ todo--;
+ basicblock *b = todo[0];
+ assert(b->b_visited == 1);
+ except_stack = b->b_exceptstack;
+ assert(except_stack != NULL);
+ b->b_exceptstack = NULL;
+ handler = except_stack_top(except_stack);
+ for (int i = 0; i < b->b_iused; i++) {
+ cfg_instr *instr = &b->b_instr[i];
+ if (is_block_push(instr)) {
+ if (!instr->i_target->b_visited) {
+ ExceptStack *copy = copy_except_stack(except_stack);
+ if (copy == NULL) {
+ goto error;
+ }
+ instr->i_target->b_exceptstack = copy;
+ todo[0] = instr->i_target;
+ instr->i_target->b_visited = 1;
+ todo++;
+ }
+ handler = push_except_block(except_stack, instr);
+ }
+ else if (instr->i_opcode == POP_BLOCK) {
+ handler = pop_except_block(except_stack);
+ }
+ else if (is_jump(instr)) {
+ instr->i_except = handler;
+ assert(i == b->b_iused -1);
+ if (!instr->i_target->b_visited) {
+ if (BB_HAS_FALLTHROUGH(b)) {
+ ExceptStack *copy = copy_except_stack(except_stack);
+ if (copy == NULL) {
+ goto error;
+ }
+ instr->i_target->b_exceptstack = copy;
+ }
+ else {
+ instr->i_target->b_exceptstack = except_stack;
+ except_stack = NULL;
+ }
+ todo[0] = instr->i_target;
+ instr->i_target->b_visited = 1;
+ todo++;
+ }
+ }
+ else {
+ if (instr->i_opcode == YIELD_VALUE) {
+ instr->i_oparg = except_stack->depth;
+ }
+ instr->i_except = handler;
+ }
+ }
+ if (BB_HAS_FALLTHROUGH(b) && !b->b_next->b_visited) {
+ assert(except_stack != NULL);
+ b->b_next->b_exceptstack = except_stack;
+ todo[0] = b->b_next;
+ b->b_next->b_visited = 1;
+ todo++;
+ }
+ else if (except_stack != NULL) {
+ PyMem_Free(except_stack);
+ }
+ }
+#ifdef Py_DEBUG
+ for (basicblock *b = entryblock; b != NULL; b = b->b_next) {
+ assert(b->b_exceptstack == NULL);
+ }
+#endif
+ PyMem_Free(todo_stack);
+ return SUCCESS;
+error:
+ PyMem_Free(todo_stack);
+ PyMem_Free(except_stack);
+ return ERROR;
+}
+
+/***** CFG optimizations *****/
+
+static int
+mark_reachable(basicblock *entryblock) {
+ basicblock **stack = make_cfg_traversal_stack(entryblock);
+ if (stack == NULL) {
+ return ERROR;
+ }
+ basicblock **sp = stack;
+ entryblock->b_predecessors = 1;
+ *sp++ = entryblock;
+ while (sp > stack) {
+ basicblock *b = *(--sp);
+ b->b_visited = 1;
+ if (b->b_next && BB_HAS_FALLTHROUGH(b)) {
+ if (!b->b_next->b_visited) {
+ assert(b->b_next->b_predecessors == 0);
+ *sp++ = b->b_next;
+ }
+ b->b_next->b_predecessors++;
+ }
+ for (int i = 0; i < b->b_iused; i++) {
+ basicblock *target;
+ cfg_instr *instr = &b->b_instr[i];
+ if (is_jump(instr) || is_block_push(instr)) {
+ target = instr->i_target;
+ if (!target->b_visited) {
+ assert(target->b_predecessors == 0 || target == b->b_next);
+ *sp++ = target;
+ }
+ target->b_predecessors++;
+ }
+ }
+ }
+ PyMem_Free(stack);
+ return SUCCESS;
+}
+
+static void
+eliminate_empty_basic_blocks(cfg_builder *g) {
+ /* Eliminate empty blocks */
+ for (basicblock *b = g->g_entryblock; b != NULL; b = b->b_next) {
+ basicblock *next = b->b_next;
+ while (next && next->b_iused == 0) {
+ next = next->b_next;
+ }
+ b->b_next = next;
+ }
+ while(g->g_entryblock && g->g_entryblock->b_iused == 0) {
+ g->g_entryblock = g->g_entryblock->b_next;
+ }
+ int next_lbl = get_max_label(g->g_entryblock) + 1;
+ for (basicblock *b = g->g_entryblock; b != NULL; b = b->b_next) {
+ assert(b->b_iused > 0);
+ for (int i = 0; i < b->b_iused; i++) {
+ cfg_instr *instr = &b->b_instr[i];
+ if (HAS_TARGET(instr->i_opcode)) {
+ basicblock *target = instr->i_target;
+ while (target->b_iused == 0) {
+ target = target->b_next;
+ }
+ if (instr->i_target != target) {
+ if (!IS_LABEL(target->b_label)) {
+ target->b_label.id = next_lbl++;
+ }
+ instr->i_target = target;
+ instr->i_oparg = target->b_label.id;
+ }
+ assert(instr->i_target && instr->i_target->b_iused > 0);
+ }
+ }
+ }
+}
+
+static int
+remove_redundant_nops(basicblock *bb) {
+ /* Remove NOPs when legal to do so. */
+ int dest = 0;
+ int prev_lineno = -1;
+ for (int src = 0; src < bb->b_iused; src++) {
+ int lineno = bb->b_instr[src].i_loc.lineno;
+ if (bb->b_instr[src].i_opcode == NOP) {
+ /* Eliminate no-op if it doesn't have a line number */
+ if (lineno < 0) {
+ continue;
+ }
+ /* or, if the previous instruction had the same line number. */
+ if (prev_lineno == lineno) {
+ continue;
+ }
+ /* or, if the next instruction has same line number or no line number */
+ if (src < bb->b_iused - 1) {
+ int next_lineno = bb->b_instr[src+1].i_loc.lineno;
+ if (next_lineno == lineno) {
+ continue;
+ }
+ if (next_lineno < 0) {
+ bb->b_instr[src+1].i_loc = bb->b_instr[src].i_loc;
+ continue;
+ }
+ }
+ else {
+ basicblock* next = bb->b_next;
+ while (next && next->b_iused == 0) {
+ next = next->b_next;
+ }
+ /* or if last instruction in BB and next BB has same line number */
+ if (next) {
+ location next_loc = NO_LOCATION;
+ for (int next_i=0; next_i < next->b_iused; next_i++) {
+ cfg_instr *instr = &next->b_instr[next_i];
+ if (instr->i_opcode == NOP && instr->i_loc.lineno == NO_LOCATION.lineno) {
+ /* Skip over NOPs without location, they will be removed */
+ continue;
+ }
+ next_loc = instr->i_loc;
+ break;
+ }
+ if (lineno == next_loc.lineno) {
+ continue;
+ }
+ }
+ }
+
+ }
+ if (dest != src) {
+ bb->b_instr[dest] = bb->b_instr[src];
+ }
+ dest++;
+ prev_lineno = lineno;
+ }
+ assert(dest <= bb->b_iused);
+ int num_removed = bb->b_iused - dest;
+ bb->b_iused = dest;
+ return num_removed;
+}
+
+static int
+remove_redundant_nops_and_pairs(basicblock *entryblock)
+{
+ bool done = false;
+
+ while (! done) {
+ done = true;
+ cfg_instr *prev_instr = NULL;
+ cfg_instr *instr = NULL;
+ for (basicblock *b = entryblock; b != NULL; b = b->b_next) {
+ remove_redundant_nops(b);
+ if (IS_LABEL(b->b_label)) {
+ /* this block is a jump target, forget instr */
+ instr = NULL;
+ }
+ for (int i = 0; i < b->b_iused; i++) {
+ prev_instr = instr;
+ instr = &b->b_instr[i];
+ int prev_opcode = prev_instr ? prev_instr->i_opcode : 0;
+ int prev_oparg = prev_instr ? prev_instr->i_oparg : 0;
+ int opcode = instr->i_opcode;
+ bool is_redundant_pair = false;
+ if (opcode == POP_TOP) {
+ if (prev_opcode == LOAD_CONST) {
+ is_redundant_pair = true;
+ }
+ else if (prev_opcode == COPY && prev_oparg == 1) {
+ is_redundant_pair = true;
+ }
+ }
+ if (is_redundant_pair) {
+ INSTR_SET_OP0(prev_instr, NOP);
+ INSTR_SET_OP0(instr, NOP);
+ done = false;
+ }
+ }
+ if ((instr && is_jump(instr)) || !BB_HAS_FALLTHROUGH(b)) {
+ instr = NULL;
+ }
+ }
+ }
+ return SUCCESS;
+}
+
+static int
+remove_redundant_jumps(cfg_builder *g) {
+ /* If a non-empty block ends with a jump instruction, check if the next
+ * non-empty block reached through normal flow control is the target
+ * of that jump. If it is, then the jump instruction is redundant and
+ * can be deleted.
+ */
+ assert(no_empty_basic_blocks(g));
+ for (basicblock *b = g->g_entryblock; b != NULL; b = b->b_next) {
+ cfg_instr *last = _PyCfg_BasicblockLastInstr(b);
+ assert(last != NULL);
+ assert(!IS_ASSEMBLER_OPCODE(last->i_opcode));
+ if (IS_UNCONDITIONAL_JUMP_OPCODE(last->i_opcode)) {
+ if (last->i_target == NULL) {
+ PyErr_SetString(PyExc_SystemError, "jump with NULL target");
+ return ERROR;
+ }
+ if (last->i_target == b->b_next) {
+ assert(b->b_next->b_iused);
+ INSTR_SET_OP0(last, NOP);
+ }
+ }
+ }
+ return SUCCESS;
+}
+
+/* Maximum size of basic block that should be copied in optimizer */
+#define MAX_COPY_SIZE 4
+
+/* If this block ends with an unconditional jump to a small exit block, then
+ * remove the jump and extend this block with the target.
+ * Returns 1 if extended, 0 if no change, and -1 on error.
+ */
+static int
+inline_small_exit_blocks(basicblock *bb) {
+ cfg_instr *last = _PyCfg_BasicblockLastInstr(bb);
+ if (last == NULL) {
+ return 0;
+ }
+ if (!IS_UNCONDITIONAL_JUMP_OPCODE(last->i_opcode)) {
+ return 0;
+ }
+ basicblock *target = last->i_target;
+ if (basicblock_exits_scope(target) && target->b_iused <= MAX_COPY_SIZE) {
+ INSTR_SET_OP0(last, NOP);
+ RETURN_IF_ERROR(basicblock_append_instructions(bb, target));
+ return 1;
+ }
+ return 0;
+}
+
+// Attempt to eliminate jumps to jumps by updating inst to jump to
+// target->i_target using the provided opcode. Return whether or not the
+// optimization was successful.
+static bool
+jump_thread(cfg_instr *inst, cfg_instr *target, int opcode)
+{
+ assert(is_jump(inst));
+ assert(is_jump(target));
+ // bpo-45773: If inst->i_target == target->i_target, then nothing actually
+ // changes (and we fall into an infinite loop):
+ if ((inst->i_loc.lineno == target->i_loc.lineno || target->i_loc.lineno == -1) &&
+ inst->i_target != target->i_target)
+ {
+ inst->i_target = target->i_target;
+ inst->i_opcode = opcode;
+ return true;
+ }
+ return false;
+}
+
+static PyObject*
+get_const_value(int opcode, int oparg, PyObject *co_consts)
+{
+ PyObject *constant = NULL;
+ assert(HAS_CONST(opcode));
+ if (opcode == LOAD_CONST) {
+ constant = PyList_GET_ITEM(co_consts, oparg);
+ }
+
+ if (constant == NULL) {
+ PyErr_SetString(PyExc_SystemError,
+ "Internal error: failed to get value of a constant");
+ return NULL;
+ }
+ return Py_NewRef(constant);
+}
+
+/* Replace LOAD_CONST c1, LOAD_CONST c2 ... LOAD_CONST cn, BUILD_TUPLE n
+ with LOAD_CONST (c1, c2, ... cn).
+ The consts table must still be in list form so that the
+ new constant (c1, c2, ... cn) can be appended.
+ Called with codestr pointing to the first LOAD_CONST.
+*/
+static int
+fold_tuple_on_constants(PyObject *const_cache,
+ cfg_instr *inst,
+ int n, PyObject *consts)
+{
+ /* Pre-conditions */
+ assert(PyDict_CheckExact(const_cache));
+ assert(PyList_CheckExact(consts));
+ assert(inst[n].i_opcode == BUILD_TUPLE);
+ assert(inst[n].i_oparg == n);
+
+ for (int i = 0; i < n; i++) {
+ if (!HAS_CONST(inst[i].i_opcode)) {
+ return SUCCESS;
+ }
+ }
+
+ /* Buildup new tuple of constants */
+ PyObject *newconst = PyTuple_New(n);
+ if (newconst == NULL) {
+ return ERROR;
+ }
+ for (int i = 0; i < n; i++) {
+ int op = inst[i].i_opcode;
+ int arg = inst[i].i_oparg;
+ PyObject *constant = get_const_value(op, arg, consts);
+ if (constant == NULL) {
+ return ERROR;
+ }
+ PyTuple_SET_ITEM(newconst, i, constant);
+ }
+ if (_PyCompile_ConstCacheMergeOne(const_cache, &newconst) < 0) {
+ Py_DECREF(newconst);
+ return ERROR;
+ }
+
+ Py_ssize_t index;
+ for (index = 0; index < PyList_GET_SIZE(consts); index++) {
+ if (PyList_GET_ITEM(consts, index) == newconst) {
+ break;
+ }
+ }
+ if (index == PyList_GET_SIZE(consts)) {
+ if ((size_t)index >= (size_t)INT_MAX - 1) {
+ Py_DECREF(newconst);
+ PyErr_SetString(PyExc_OverflowError, "too many constants");
+ return ERROR;
+ }
+ if (PyList_Append(consts, newconst)) {
+ Py_DECREF(newconst);
+ return ERROR;
+ }
+ }
+ Py_DECREF(newconst);
+ for (int i = 0; i < n; i++) {
+ INSTR_SET_OP0(&inst[i], NOP);
+ }
+ INSTR_SET_OP1(&inst[n], LOAD_CONST, (int)index);
+ return SUCCESS;
+}
+
+#define VISITED (-1)
+
+// Replace an arbitrary run of SWAPs and NOPs with an optimal one that has the
+// same effect.
+static int
+swaptimize(basicblock *block, int *ix)
+{
+ // NOTE: "./python -m test test_patma" serves as a good, quick stress test
+ // for this function. Make sure to blow away cached *.pyc files first!
+ assert(*ix < block->b_iused);
+ cfg_instr *instructions = &block->b_instr[*ix];
+ // Find the length of the current sequence of SWAPs and NOPs, and record the
+ // maximum depth of the stack manipulations:
+ assert(instructions[0].i_opcode == SWAP);
+ int depth = instructions[0].i_oparg;
+ int len = 0;
+ int more = false;
+ int limit = block->b_iused - *ix;
+ while (++len < limit) {
+ int opcode = instructions[len].i_opcode;
+ if (opcode == SWAP) {
+ depth = Py_MAX(depth, instructions[len].i_oparg);
+ more = true;
+ }
+ else if (opcode != NOP) {
+ break;
+ }
+ }
+ // It's already optimal if there's only one SWAP:
+ if (!more) {
+ return SUCCESS;
+ }
+ // Create an array with elements {0, 1, 2, ..., depth - 1}:
+ int *stack = PyMem_Malloc(depth * sizeof(int));
+ if (stack == NULL) {
+ PyErr_NoMemory();
+ return ERROR;
+ }
+ for (int i = 0; i < depth; i++) {
+ stack[i] = i;
+ }
+ // Simulate the combined effect of these instructions by "running" them on
+ // our "stack":
+ for (int i = 0; i < len; i++) {
+ if (instructions[i].i_opcode == SWAP) {
+ int oparg = instructions[i].i_oparg;
+ int top = stack[0];
+ // SWAPs are 1-indexed:
+ stack[0] = stack[oparg - 1];
+ stack[oparg - 1] = top;
+ }
+ }
+ // Now we can begin! Our approach here is based on a solution to a closely
+ // related problem (https://cs.stackexchange.com/a/13938). It's easiest to
+ // think of this algorithm as determining the steps needed to efficiently
+ // "un-shuffle" our stack. By performing the moves in *reverse* order,
+ // though, we can efficiently *shuffle* it! For this reason, we will be
+ // replacing instructions starting from the *end* of the run. Since the
+ // solution is optimal, we don't need to worry about running out of space:
+ int current = len - 1;
+ for (int i = 0; i < depth; i++) {
+ // Skip items that have already been visited, or just happen to be in
+ // the correct location:
+ if (stack[i] == VISITED || stack[i] == i) {
+ continue;
+ }
+ // Okay, we've found an item that hasn't been visited. It forms a cycle
+ // with other items; traversing the cycle and swapping each item with
+ // the next will put them all in the correct place. The weird
+ // loop-and-a-half is necessary to insert 0 into every cycle, since we
+ // can only swap from that position:
+ int j = i;
+ while (true) {
+ // Skip the actual swap if our item is zero, since swapping the top
+ // item with itself is pointless:
+ if (j) {
+ assert(0 <= current);
+ // SWAPs are 1-indexed:
+ instructions[current].i_opcode = SWAP;
+ instructions[current--].i_oparg = j + 1;
+ }
+ if (stack[j] == VISITED) {
+ // Completed the cycle:
+ assert(j == i);
+ break;
+ }
+ int next_j = stack[j];
+ stack[j] = VISITED;
+ j = next_j;
+ }
+ }
+ // NOP out any unused instructions:
+ while (0 <= current) {
+ INSTR_SET_OP0(&instructions[current--], NOP);
+ }
+ PyMem_Free(stack);
+ *ix += len - 1;
+ return SUCCESS;
+}
+
+
+// This list is pretty small, since it's only okay to reorder opcodes that:
+// - can't affect control flow (like jumping or raising exceptions)
+// - can't invoke arbitrary code (besides finalizers)
+// - only touch the TOS (and pop it when finished)
+#define SWAPPABLE(opcode) \
+ ((opcode) == STORE_FAST || \
+ (opcode) == STORE_FAST_MAYBE_NULL || \
+ (opcode) == POP_TOP)
+
+#define STORES_TO(instr) \
+ (((instr).i_opcode == STORE_FAST || \
+ (instr).i_opcode == STORE_FAST_MAYBE_NULL) \
+ ? (instr).i_oparg : -1)
+
+static int
+next_swappable_instruction(basicblock *block, int i, int lineno)
+{
+ while (++i < block->b_iused) {
+ cfg_instr *instruction = &block->b_instr[i];
+ if (0 <= lineno && instruction->i_loc.lineno != lineno) {
+ // Optimizing across this instruction could cause user-visible
+ // changes in the names bound between line tracing events!
+ return -1;
+ }
+ if (instruction->i_opcode == NOP) {
+ continue;
+ }
+ if (SWAPPABLE(instruction->i_opcode)) {
+ return i;
+ }
+ return -1;
+ }
+ return -1;
+}
+
+// Attempt to apply SWAPs statically by swapping *instructions* rather than
+// stack items. For example, we can replace SWAP(2), POP_TOP, STORE_FAST(42)
+// with the more efficient NOP, STORE_FAST(42), POP_TOP.
+static void
+apply_static_swaps(basicblock *block, int i)
+{
+ // SWAPs are to our left, and potential swaperands are to our right:
+ for (; 0 <= i; i--) {
+ assert(i < block->b_iused);
+ cfg_instr *swap = &block->b_instr[i];
+ if (swap->i_opcode != SWAP) {
+ if (swap->i_opcode == NOP || SWAPPABLE(swap->i_opcode)) {
+ // Nope, but we know how to handle these. Keep looking:
+ continue;
+ }
+ // We can't reason about what this instruction does. Bail:
+ return;
+ }
+ int j = next_swappable_instruction(block, i, -1);
+ if (j < 0) {
+ return;
+ }
+ int k = j;
+ int lineno = block->b_instr[j].i_loc.lineno;
+ for (int count = swap->i_oparg - 1; 0 < count; count--) {
+ k = next_swappable_instruction(block, k, lineno);
+ if (k < 0) {
+ return;
+ }
+ }
+ // The reordering is not safe if the two instructions to be swapped
+ // store to the same location, or if any intervening instruction stores
+ // to the same location as either of them.
+ int store_j = STORES_TO(block->b_instr[j]);
+ int store_k = STORES_TO(block->b_instr[k]);
+ if (store_j >= 0 || store_k >= 0) {
+ if (store_j == store_k) {
+ return;
+ }
+ for (int idx = j + 1; idx < k; idx++) {
+ int store_idx = STORES_TO(block->b_instr[idx]);
+ if (store_idx >= 0 && (store_idx == store_j || store_idx == store_k)) {
+ return;
+ }
+ }
+ }
+
+ // Success!
+ INSTR_SET_OP0(swap, NOP);
+ cfg_instr temp = block->b_instr[j];
+ block->b_instr[j] = block->b_instr[k];
+ block->b_instr[k] = temp;
+ }
+}
+
+static int
+optimize_basic_block(PyObject *const_cache, basicblock *bb, PyObject *consts)
+{
+ assert(PyDict_CheckExact(const_cache));
+ assert(PyList_CheckExact(consts));
+ cfg_instr nop;
+ INSTR_SET_OP0(&nop, NOP);
+ cfg_instr *target = &nop;
+ int opcode = 0;
+ int oparg = 0;
+ int nextop = 0;
+ for (int i = 0; i < bb->b_iused; i++) {
+ cfg_instr *inst = &bb->b_instr[i];
+ bool is_copy_of_load_const = (opcode == LOAD_CONST &&
+ inst->i_opcode == COPY &&
+ inst->i_oparg == 1);
+ if (! is_copy_of_load_const) {
+ opcode = inst->i_opcode;
+ oparg = inst->i_oparg;
+ if (HAS_TARGET(opcode)) {
+ assert(inst->i_target->b_iused > 0);
+ target = &inst->i_target->b_instr[0];
+ assert(!IS_ASSEMBLER_OPCODE(target->i_opcode));
+ }
+ else {
+ target = &nop;
+ }
+ }
+ nextop = i+1 < bb->b_iused ? bb->b_instr[i+1].i_opcode : 0;
+ assert(!IS_ASSEMBLER_OPCODE(opcode));
+ switch (opcode) {
+ /* Remove LOAD_CONST const; conditional jump */
+ case LOAD_CONST:
+ {
+ PyObject* cnt;
+ int is_true;
+ int jump_if_true;
+ switch(nextop) {
+ case POP_JUMP_IF_FALSE:
+ case POP_JUMP_IF_TRUE:
+ cnt = get_const_value(opcode, oparg, consts);
+ if (cnt == NULL) {
+ goto error;
+ }
+ is_true = PyObject_IsTrue(cnt);
+ Py_DECREF(cnt);
+ if (is_true == -1) {
+ goto error;
+ }
+ INSTR_SET_OP0(inst, NOP);
+ jump_if_true = nextop == POP_JUMP_IF_TRUE;
+ if (is_true == jump_if_true) {
+ bb->b_instr[i+1].i_opcode = JUMP;
+ }
+ else {
+ INSTR_SET_OP0(&bb->b_instr[i + 1], NOP);
+ }
+ break;
+ case IS_OP:
+ cnt = get_const_value(opcode, oparg, consts);
+ if (cnt == NULL) {
+ goto error;
+ }
+ int jump_op = i+2 < bb->b_iused ? bb->b_instr[i+2].i_opcode : 0;
+ if (Py_IsNone(cnt) && (jump_op == POP_JUMP_IF_FALSE || jump_op == POP_JUMP_IF_TRUE)) {
+ unsigned char nextarg = bb->b_instr[i+1].i_oparg;
+ INSTR_SET_OP0(inst, NOP);
+ INSTR_SET_OP0(&bb->b_instr[i + 1], NOP);
+ bb->b_instr[i+2].i_opcode = nextarg ^ (jump_op == POP_JUMP_IF_FALSE) ?
+ POP_JUMP_IF_NOT_NONE : POP_JUMP_IF_NONE;
+ }
+ Py_DECREF(cnt);
+ break;
+ case RETURN_VALUE:
+ INSTR_SET_OP0(inst, NOP);
+ INSTR_SET_OP1(&bb->b_instr[++i], RETURN_CONST, oparg);
+ break;
+ }
+ break;
+ }
+ /* Try to fold tuples of constants.
+ Skip over BUILD_TUPLE(1) UNPACK_SEQUENCE(1).
+ Replace BUILD_TUPLE(2) UNPACK_SEQUENCE(2) with SWAP(2).
+ Replace BUILD_TUPLE(3) UNPACK_SEQUENCE(3) with SWAP(3). */
+ case BUILD_TUPLE:
+ if (nextop == UNPACK_SEQUENCE && oparg == bb->b_instr[i+1].i_oparg) {
+ switch(oparg) {
+ case 1:
+ INSTR_SET_OP0(inst, NOP);
+ INSTR_SET_OP0(&bb->b_instr[i + 1], NOP);
+ continue;
+ case 2:
+ case 3:
+ INSTR_SET_OP0(inst, NOP);
+ bb->b_instr[i+1].i_opcode = SWAP;
+ continue;
+ }
+ }
+ if (i >= oparg) {
+ if (fold_tuple_on_constants(const_cache, inst-oparg, oparg, consts)) {
+ goto error;
+ }
+ }
+ break;
+ case POP_JUMP_IF_NOT_NONE:
+ case POP_JUMP_IF_NONE:
+ switch (target->i_opcode) {
+ case JUMP:
+ i -= jump_thread(inst, target, inst->i_opcode);
+ }
+ break;
+ case POP_JUMP_IF_FALSE:
+ switch (target->i_opcode) {
+ case JUMP:
+ i -= jump_thread(inst, target, POP_JUMP_IF_FALSE);
+ }
+ break;
+ case POP_JUMP_IF_TRUE:
+ switch (target->i_opcode) {
+ case JUMP:
+ i -= jump_thread(inst, target, POP_JUMP_IF_TRUE);
+ }
+ break;
+ case JUMP:
+ switch (target->i_opcode) {
+ case JUMP:
+ i -= jump_thread(inst, target, JUMP);
+ }
+ break;
+ case FOR_ITER:
+ if (target->i_opcode == JUMP) {
+ /* This will not work now because the jump (at target) could
+ * be forward or backward and FOR_ITER only jumps forward. We
+ * can re-enable this if ever we implement a backward version
+ * of FOR_ITER.
+ */
+ /*
+ i -= jump_thread(inst, target, FOR_ITER);
+ */
+ }
+ break;
+ case SWAP:
+ if (oparg == 1) {
+ INSTR_SET_OP0(inst, NOP);
+ break;
+ }
+ if (swaptimize(bb, &i) < 0) {
+ goto error;
+ }
+ apply_static_swaps(bb, i);
+ break;
+ case KW_NAMES:
+ break;
+ case PUSH_NULL:
+ if (nextop == LOAD_GLOBAL && (bb->b_instr[i+1].i_oparg & 1) == 0) {
+ INSTR_SET_OP0(inst, NOP);
+ bb->b_instr[i+1].i_oparg |= 1;
+ }
+ break;
+ default:
+ /* All HAS_CONST opcodes should be handled with LOAD_CONST */
+ assert (!HAS_CONST(inst->i_opcode));
+ }
+ }
+ return SUCCESS;
+error:
+ return ERROR;
+}
+
+
+/* Perform optimizations on a control flow graph.
+ The consts object should still be in list form to allow new constants
+ to be appended.
+
+ Code trasnformations that reduce code size initially fill the gaps with
+ NOPs. Later those NOPs are removed.
+*/
+static int
+optimize_cfg(cfg_builder *g, PyObject *consts, PyObject *const_cache)
+{
+ assert(PyDict_CheckExact(const_cache));
+ RETURN_IF_ERROR(check_cfg(g));
+ eliminate_empty_basic_blocks(g);
+ for (basicblock *b = g->g_entryblock; b != NULL; b = b->b_next) {
+ RETURN_IF_ERROR(inline_small_exit_blocks(b));
+ }
+ assert(no_empty_basic_blocks(g));
+ for (basicblock *b = g->g_entryblock; b != NULL; b = b->b_next) {
+ RETURN_IF_ERROR(optimize_basic_block(const_cache, b, consts));
+ assert(b->b_predecessors == 0);
+ }
+ RETURN_IF_ERROR(remove_redundant_nops_and_pairs(g->g_entryblock));
+ for (basicblock *b = g->g_entryblock; b != NULL; b = b->b_next) {
+ RETURN_IF_ERROR(inline_small_exit_blocks(b));
+ }
+ RETURN_IF_ERROR(mark_reachable(g->g_entryblock));
+
+ /* Delete unreachable instructions */
+ for (basicblock *b = g->g_entryblock; b != NULL; b = b->b_next) {
+ if (b->b_predecessors == 0) {
+ b->b_iused = 0;
+ }
+ }
+ for (basicblock *b = g->g_entryblock; b != NULL; b = b->b_next) {
+ remove_redundant_nops(b);
+ }
+ eliminate_empty_basic_blocks(g);
+ /* This assertion fails in an edge case (See gh-109889).
+ * Remove it for the release (it's just one more NOP in the
+ * bytecode for unlikely code).
+ */
+ // assert(no_redundant_nops(g));
+ RETURN_IF_ERROR(remove_redundant_jumps(g));
+ return SUCCESS;
+}
+
+// helper functions for add_checks_for_loads_of_unknown_variables
+static inline void
+maybe_push(basicblock *b, uint64_t unsafe_mask, basicblock ***sp)
+{
+ // Push b if the unsafe mask is giving us any new information.
+ // To avoid overflowing the stack, only allow each block once.
+ // Use b->b_visited=1 to mean that b is currently on the stack.
+ uint64_t both = b->b_unsafe_locals_mask | unsafe_mask;
+ if (b->b_unsafe_locals_mask != both) {
+ b->b_unsafe_locals_mask = both;
+ // More work left to do.
+ if (!b->b_visited) {
+ // not on the stack, so push it.
+ *(*sp)++ = b;
+ b->b_visited = 1;
+ }
+ }
+}
+
+static void
+scan_block_for_locals(basicblock *b, basicblock ***sp)
+{
+ // bit i is set if local i is potentially uninitialized
+ uint64_t unsafe_mask = b->b_unsafe_locals_mask;
+ for (int i = 0; i < b->b_iused; i++) {
+ cfg_instr *instr = &b->b_instr[i];
+ assert(instr->i_opcode != EXTENDED_ARG);
+ assert(!IS_SUPERINSTRUCTION_OPCODE(instr->i_opcode));
+ if (instr->i_except != NULL) {
+ maybe_push(instr->i_except, unsafe_mask, sp);
+ }
+ if (instr->i_oparg >= 64) {
+ continue;
+ }
+ assert(instr->i_oparg >= 0);
+ uint64_t bit = (uint64_t)1 << instr->i_oparg;
+ switch (instr->i_opcode) {
+ case DELETE_FAST:
+ case LOAD_FAST_AND_CLEAR:
+ case STORE_FAST_MAYBE_NULL:
+ unsafe_mask |= bit;
+ break;
+ case STORE_FAST:
+ unsafe_mask &= ~bit;
+ break;
+ case LOAD_FAST_CHECK:
+ // If this doesn't raise, then the local is defined.
+ unsafe_mask &= ~bit;
+ break;
+ case LOAD_FAST:
+ if (unsafe_mask & bit) {
+ instr->i_opcode = LOAD_FAST_CHECK;
+ }
+ unsafe_mask &= ~bit;
+ break;
+ }
+ }
+ if (b->b_next && BB_HAS_FALLTHROUGH(b)) {
+ maybe_push(b->b_next, unsafe_mask, sp);
+ }
+ cfg_instr *last = _PyCfg_BasicblockLastInstr(b);
+ if (last && is_jump(last)) {
+ assert(last->i_target != NULL);
+ maybe_push(last->i_target, unsafe_mask, sp);
+ }
+}
+
+static int
+fast_scan_many_locals(basicblock *entryblock, int nlocals)
+{
+ assert(nlocals > 64);
+ Py_ssize_t *states = PyMem_Calloc(nlocals - 64, sizeof(Py_ssize_t));
+ if (states == NULL) {
+ PyErr_NoMemory();
+ return ERROR;
+ }
+ Py_ssize_t blocknum = 0;
+ // state[i - 64] == blocknum if local i is guaranteed to
+ // be initialized, i.e., if it has had a previous LOAD_FAST or
+ // STORE_FAST within that basicblock (not followed by
+ // DELETE_FAST/LOAD_FAST_AND_CLEAR/STORE_FAST_MAYBE_NULL).
+ for (basicblock *b = entryblock; b != NULL; b = b->b_next) {
+ blocknum++;
+ for (int i = 0; i < b->b_iused; i++) {
+ cfg_instr *instr = &b->b_instr[i];
+ assert(instr->i_opcode != EXTENDED_ARG);
+ assert(!IS_SUPERINSTRUCTION_OPCODE(instr->i_opcode));
+ int arg = instr->i_oparg;
+ if (arg < 64) {
+ continue;
+ }
+ assert(arg >= 0);
+ switch (instr->i_opcode) {
+ case DELETE_FAST:
+ case LOAD_FAST_AND_CLEAR:
+ case STORE_FAST_MAYBE_NULL:
+ states[arg - 64] = blocknum - 1;
+ break;
+ case STORE_FAST:
+ states[arg - 64] = blocknum;
+ break;
+ case LOAD_FAST:
+ if (states[arg - 64] != blocknum) {
+ instr->i_opcode = LOAD_FAST_CHECK;
+ }
+ states[arg - 64] = blocknum;
+ break;
+ Py_UNREACHABLE();
+ }
+ }
+ }
+ PyMem_Free(states);
+ return SUCCESS;
+}
+
+static int
+remove_unused_consts(basicblock *entryblock, PyObject *consts)
+{
+ assert(PyList_CheckExact(consts));
+ Py_ssize_t nconsts = PyList_GET_SIZE(consts);
+ if (nconsts == 0) {
+ return SUCCESS; /* nothing to do */
+ }
+
+ Py_ssize_t *index_map = NULL;
+ Py_ssize_t *reverse_index_map = NULL;
+ int err = ERROR;
+
+ index_map = PyMem_Malloc(nconsts * sizeof(Py_ssize_t));
+ if (index_map == NULL) {
+ goto end;
+ }
+ for (Py_ssize_t i = 1; i < nconsts; i++) {
+ index_map[i] = -1;
+ }
+ // The first constant may be docstring; keep it always.
+ index_map[0] = 0;
+
+ /* mark used consts */
+ for (basicblock *b = entryblock; b != NULL; b = b->b_next) {
+ for (int i = 0; i < b->b_iused; i++) {
+ if (HAS_CONST(b->b_instr[i].i_opcode)) {
+ int index = b->b_instr[i].i_oparg;
+ index_map[index] = index;
+ }
+ }
+ }
+ /* now index_map[i] == i if consts[i] is used, -1 otherwise */
+ /* condense consts */
+ Py_ssize_t n_used_consts = 0;
+ for (int i = 0; i < nconsts; i++) {
+ if (index_map[i] != -1) {
+ assert(index_map[i] == i);
+ index_map[n_used_consts++] = index_map[i];
+ }
+ }
+ if (n_used_consts == nconsts) {
+ /* nothing to do */
+ err = SUCCESS;
+ goto end;
+ }
+
+ /* move all used consts to the beginning of the consts list */
+ assert(n_used_consts < nconsts);
+ for (Py_ssize_t i = 0; i < n_used_consts; i++) {
+ Py_ssize_t old_index = index_map[i];
+ assert(i <= old_index && old_index < nconsts);
+ if (i != old_index) {
+ PyObject *value = PyList_GET_ITEM(consts, index_map[i]);
+ assert(value != NULL);
+ PyList_SetItem(consts, i, Py_NewRef(value));
+ }
+ }
+
+ /* truncate the consts list at its new size */
+ if (PyList_SetSlice(consts, n_used_consts, nconsts, NULL) < 0) {
+ goto end;
+ }
+ /* adjust const indices in the bytecode */
+ reverse_index_map = PyMem_Malloc(nconsts * sizeof(Py_ssize_t));
+ if (reverse_index_map == NULL) {
+ goto end;
+ }
+ for (Py_ssize_t i = 0; i < nconsts; i++) {
+ reverse_index_map[i] = -1;
+ }
+ for (Py_ssize_t i = 0; i < n_used_consts; i++) {
+ assert(index_map[i] != -1);
+ assert(reverse_index_map[index_map[i]] == -1);
+ reverse_index_map[index_map[i]] = i;
+ }
+
+ for (basicblock *b = entryblock; b != NULL; b = b->b_next) {
+ for (int i = 0; i < b->b_iused; i++) {
+ if (HAS_CONST(b->b_instr[i].i_opcode)) {
+ int index = b->b_instr[i].i_oparg;
+ assert(reverse_index_map[index] >= 0);
+ assert(reverse_index_map[index] < n_used_consts);
+ b->b_instr[i].i_oparg = (int)reverse_index_map[index];
+ }
+ }
+ }
+
+ err = SUCCESS;
+end:
+ PyMem_Free(index_map);
+ PyMem_Free(reverse_index_map);
+ return err;
+}
+
+
+
+static int
+add_checks_for_loads_of_uninitialized_variables(basicblock *entryblock,
+ int nlocals,
+ int nparams)
+{
+ if (nlocals == 0) {
+ return SUCCESS;
+ }
+ if (nlocals > 64) {
+ // To avoid O(nlocals**2) compilation, locals beyond the first
+ // 64 are only analyzed one basicblock at a time: initialization
+ // info is not passed between basicblocks.
+ if (fast_scan_many_locals(entryblock, nlocals) < 0) {
+ return ERROR;
+ }
+ nlocals = 64;
+ }
+ basicblock **stack = make_cfg_traversal_stack(entryblock);
+ if (stack == NULL) {
+ return ERROR;
+ }
+ basicblock **sp = stack;
+
+ // First origin of being uninitialized:
+ // The non-parameter locals in the entry block.
+ uint64_t start_mask = 0;
+ for (int i = nparams; i < nlocals; i++) {
+ start_mask |= (uint64_t)1 << i;
+ }
+ maybe_push(entryblock, start_mask, &sp);
+
+ // Second origin of being uninitialized:
+ // There could be DELETE_FAST somewhere, so
+ // be sure to scan each basicblock at least once.
+ for (basicblock *b = entryblock; b != NULL; b = b->b_next) {
+ scan_block_for_locals(b, &sp);
+ }
+ // Now propagate the uncertainty from the origins we found: Use
+ // LOAD_FAST_CHECK for any LOAD_FAST where the local could be undefined.
+ while (sp > stack) {
+ basicblock *b = *--sp;
+ // mark as no longer on stack
+ b->b_visited = 0;
+ scan_block_for_locals(b, &sp);
+ }
+ PyMem_Free(stack);
+ return SUCCESS;
+}
+
+
+static int
+mark_warm(basicblock *entryblock) {
+ basicblock **stack = make_cfg_traversal_stack(entryblock);
+ if (stack == NULL) {
+ return ERROR;
+ }
+ basicblock **sp = stack;
+
+ *sp++ = entryblock;
+ entryblock->b_visited = 1;
+ while (sp > stack) {
+ basicblock *b = *(--sp);
+ assert(!b->b_except_handler);
+ b->b_warm = 1;
+ basicblock *next = b->b_next;
+ if (next && BB_HAS_FALLTHROUGH(b) && !next->b_visited) {
+ *sp++ = next;
+ next->b_visited = 1;
+ }
+ for (int i=0; i < b->b_iused; i++) {
+ cfg_instr *instr = &b->b_instr[i];
+ if (is_jump(instr) && !instr->i_target->b_visited) {
+ *sp++ = instr->i_target;
+ instr->i_target->b_visited = 1;
+ }
+ }
+ }
+ PyMem_Free(stack);
+ return SUCCESS;
+}
+
+static int
+mark_cold(basicblock *entryblock) {
+ for (basicblock *b = entryblock; b != NULL; b = b->b_next) {
+ assert(!b->b_cold && !b->b_warm);
+ }
+ if (mark_warm(entryblock) < 0) {
+ return ERROR;
+ }
+
+ basicblock **stack = make_cfg_traversal_stack(entryblock);
+ if (stack == NULL) {
+ return ERROR;
+ }
+
+ basicblock **sp = stack;
+ for (basicblock *b = entryblock; b != NULL; b = b->b_next) {
+ if (b->b_except_handler) {
+ assert(!b->b_warm);
+ *sp++ = b;
+ b->b_visited = 1;
+ }
+ }
+
+ while (sp > stack) {
+ basicblock *b = *(--sp);
+ b->b_cold = 1;
+ basicblock *next = b->b_next;
+ if (next && BB_HAS_FALLTHROUGH(b)) {
+ if (!next->b_warm && !next->b_visited) {
+ *sp++ = next;
+ next->b_visited = 1;
+ }
+ }
+ for (int i = 0; i < b->b_iused; i++) {
+ cfg_instr *instr = &b->b_instr[i];
+ if (is_jump(instr)) {
+ assert(i == b->b_iused - 1);
+ basicblock *target = b->b_instr[i].i_target;
+ if (!target->b_warm && !target->b_visited) {
+ *sp++ = target;
+ target->b_visited = 1;
+ }
+ }
+ }
+ }
+ PyMem_Free(stack);
+ return SUCCESS;
+}
+
+
+static int
+push_cold_blocks_to_end(cfg_builder *g, int code_flags) {
+ basicblock *entryblock = g->g_entryblock;
+ if (entryblock->b_next == NULL) {
+ /* single basicblock, no need to reorder */
+ return SUCCESS;
+ }
+ RETURN_IF_ERROR(mark_cold(entryblock));
+
+ int next_lbl = get_max_label(g->g_entryblock) + 1;
+
+ /* If we have a cold block with fallthrough to a warm block, add */
+ /* an explicit jump instead of fallthrough */
+ for (basicblock *b = entryblock; b != NULL; b = b->b_next) {
+ if (b->b_cold && BB_HAS_FALLTHROUGH(b) && b->b_next && b->b_next->b_warm) {
+ basicblock *explicit_jump = cfg_builder_new_block(g);
+ if (explicit_jump == NULL) {
+ return ERROR;
+ }
+ if (!IS_LABEL(b->b_next->b_label)) {
+ b->b_next->b_label.id = next_lbl++;
+ }
+ basicblock_addop(explicit_jump, JUMP, b->b_next->b_label.id, NO_LOCATION);
+ explicit_jump->b_cold = 1;
+ explicit_jump->b_next = b->b_next;
+ b->b_next = explicit_jump;
+
+ /* set target */
+ cfg_instr *last = _PyCfg_BasicblockLastInstr(explicit_jump);
+ last->i_target = explicit_jump->b_next;
+ }
+ }
+
+ assert(!entryblock->b_cold); /* First block can't be cold */
+ basicblock *cold_blocks = NULL;
+ basicblock *cold_blocks_tail = NULL;
+
+ basicblock *b = entryblock;
+ while(b->b_next) {
+ assert(!b->b_cold);
+ while (b->b_next && !b->b_next->b_cold) {
+ b = b->b_next;
+ }
+ if (b->b_next == NULL) {
+ /* no more cold blocks */
+ break;
+ }
+
+ /* b->b_next is the beginning of a cold streak */
+ assert(!b->b_cold && b->b_next->b_cold);
+
+ basicblock *b_end = b->b_next;
+ while (b_end->b_next && b_end->b_next->b_cold) {
+ b_end = b_end->b_next;
+ }
+
+ /* b_end is the end of the cold streak */
+ assert(b_end && b_end->b_cold);
+ assert(b_end->b_next == NULL || !b_end->b_next->b_cold);
+
+ if (cold_blocks == NULL) {
+ cold_blocks = b->b_next;
+ }
+ else {
+ cold_blocks_tail->b_next = b->b_next;
+ }
+ cold_blocks_tail = b_end;
+ b->b_next = b_end->b_next;
+ b_end->b_next = NULL;
+ }
+ assert(b != NULL && b->b_next == NULL);
+ b->b_next = cold_blocks;
+
+ if (cold_blocks != NULL) {
+ RETURN_IF_ERROR(remove_redundant_jumps(g));
+ }
+ return SUCCESS;
+}
+
+void
+_PyCfg_ConvertPseudoOps(basicblock *entryblock)
+{
+ for (basicblock *b = entryblock; b != NULL; b = b->b_next) {
+ for (int i = 0; i < b->b_iused; i++) {
+ cfg_instr *instr = &b->b_instr[i];
+ if (is_block_push(instr) || instr->i_opcode == POP_BLOCK) {
+ INSTR_SET_OP0(instr, NOP);
+ }
+ else if (instr->i_opcode == STORE_FAST_MAYBE_NULL) {
+ instr->i_opcode = STORE_FAST;
+ }
+ }
+ }
+ for (basicblock *b = entryblock; b != NULL; b = b->b_next) {
+ remove_redundant_nops(b);
+ }
+}
+
+static inline bool
+is_exit_without_lineno(basicblock *b) {
+ if (!basicblock_exits_scope(b)) {
+ return false;
+ }
+ for (int i = 0; i < b->b_iused; i++) {
+ if (b->b_instr[i].i_loc.lineno >= 0) {
+ return false;
+ }
+ }
+ return true;
+}
+
+
+/* PEP 626 mandates that the f_lineno of a frame is correct
+ * after a frame terminates. It would be prohibitively expensive
+ * to continuously update the f_lineno field at runtime,
+ * so we make sure that all exiting instruction (raises and returns)
+ * have a valid line number, allowing us to compute f_lineno lazily.
+ * We can do this by duplicating the exit blocks without line number
+ * so that none have more than one predecessor. We can then safely
+ * copy the line number from the sole predecessor block.
+ */
+static int
+duplicate_exits_without_lineno(cfg_builder *g)
+{
+ assert(no_empty_basic_blocks(g));
+
+ int next_lbl = get_max_label(g->g_entryblock) + 1;
+
+ /* Copy all exit blocks without line number that are targets of a jump.
+ */
+ basicblock *entryblock = g->g_entryblock;
+ for (basicblock *b = entryblock; b != NULL; b = b->b_next) {
+ cfg_instr *last = _PyCfg_BasicblockLastInstr(b);
+ assert(last != NULL);
+ if (is_jump(last)) {
+ basicblock *target = last->i_target;
+ if (is_exit_without_lineno(target) && target->b_predecessors > 1) {
+ basicblock *new_target = copy_basicblock(g, target);
+ if (new_target == NULL) {
+ return ERROR;
+ }
+ new_target->b_instr[0].i_loc = last->i_loc;
+ last->i_target = new_target;
+ target->b_predecessors--;
+ new_target->b_predecessors = 1;
+ new_target->b_next = target->b_next;
+ new_target->b_label.id = next_lbl++;
+ target->b_next = new_target;
+ }
+ }
+ }
+
+ /* Any remaining reachable exit blocks without line number can only be reached by
+ * fall through, and thus can only have a single predecessor */
+ for (basicblock *b = entryblock; b != NULL; b = b->b_next) {
+ if (BB_HAS_FALLTHROUGH(b) && b->b_next && b->b_iused > 0) {
+ if (is_exit_without_lineno(b->b_next)) {
+ cfg_instr *last = _PyCfg_BasicblockLastInstr(b);
+ assert(last != NULL);
+ b->b_next->b_instr[0].i_loc = last->i_loc;
+ }
+ }
+ }
+ return SUCCESS;
+}
+
+
+/* If an instruction has no line number, but it's predecessor in the BB does,
+ * then copy the line number. If a successor block has no line number, and only
+ * one predecessor, then inherit the line number.
+ * This ensures that all exit blocks (with one predecessor) receive a line number.
+ * Also reduces the size of the line number table,
+ * but has no impact on the generated line number events.
+ */
+static void
+propagate_line_numbers(basicblock *entryblock) {
+ for (basicblock *b = entryblock; b != NULL; b = b->b_next) {
+ cfg_instr *last = _PyCfg_BasicblockLastInstr(b);
+ if (last == NULL) {
+ continue;
+ }
+
+ location prev_location = NO_LOCATION;
+ for (int i = 0; i < b->b_iused; i++) {
+ if (b->b_instr[i].i_loc.lineno < 0) {
+ b->b_instr[i].i_loc = prev_location;
+ }
+ else {
+ prev_location = b->b_instr[i].i_loc;
+ }
+ }
+ if (BB_HAS_FALLTHROUGH(b) && b->b_next->b_predecessors == 1) {
+ assert(b->b_next->b_iused);
+ if (b->b_next->b_instr[0].i_loc.lineno < 0) {
+ b->b_next->b_instr[0].i_loc = prev_location;
+ }
+ }
+ if (is_jump(last)) {
+ basicblock *target = last->i_target;
+ if (target->b_predecessors == 1) {
+ if (target->b_instr[0].i_loc.lineno < 0) {
+ target->b_instr[0].i_loc = prev_location;
+ }
+ }
+ }
+ }
+}
+
+/* Make sure that all returns have a line number, even if early passes
+ * have failed to propagate a correct line number.
+ * The resulting line number may not be correct according to PEP 626,
+ * but should be "good enough", and no worse than in older versions. */
+static void
+guarantee_lineno_for_exits(basicblock *entryblock, int firstlineno) {
+ int lineno = firstlineno;
+ assert(lineno > 0);
+ for (basicblock *b = entryblock; b != NULL; b = b->b_next) {
+ cfg_instr *last = _PyCfg_BasicblockLastInstr(b);
+ if (last == NULL) {
+ continue;
+ }
+ if (last->i_loc.lineno < 0) {
+ if (last->i_opcode == RETURN_VALUE) {
+ for (int i = 0; i < b->b_iused; i++) {
+ assert(b->b_instr[i].i_loc.lineno < 0);
+
+ b->b_instr[i].i_loc.lineno = lineno;
+ }
+ }
+ }
+ else {
+ lineno = last->i_loc.lineno;
+ }
+ }
+}
+
+static int
+resolve_line_numbers(cfg_builder *g, int firstlineno)
+{
+ RETURN_IF_ERROR(duplicate_exits_without_lineno(g));
+ propagate_line_numbers(g->g_entryblock);
+ guarantee_lineno_for_exits(g->g_entryblock, firstlineno);
+ return SUCCESS;
+}
+
+int
+_PyCfg_OptimizeCodeUnit(cfg_builder *g, PyObject *consts, PyObject *const_cache,
+ int code_flags, int nlocals, int nparams, int firstlineno)
+{
+ assert(cfg_builder_check(g));
+ /** Preprocessing **/
+ /* Map labels to targets and mark exception handlers */
+ RETURN_IF_ERROR(translate_jump_labels_to_targets(g->g_entryblock));
+ RETURN_IF_ERROR(mark_except_handlers(g->g_entryblock));
+ RETURN_IF_ERROR(label_exception_targets(g->g_entryblock));
+
+ /** Optimization **/
+ RETURN_IF_ERROR(optimize_cfg(g, consts, const_cache));
+ RETURN_IF_ERROR(remove_unused_consts(g->g_entryblock, consts));
+ RETURN_IF_ERROR(
+ add_checks_for_loads_of_uninitialized_variables(
+ g->g_entryblock, nlocals, nparams));
+
+ RETURN_IF_ERROR(push_cold_blocks_to_end(g, code_flags));
+ RETURN_IF_ERROR(resolve_line_numbers(g, firstlineno));
+ return SUCCESS;
+}
diff --git a/contrib/tools/python3/Python/formatter_unicode.c b/contrib/tools/python3/Python/formatter_unicode.c
new file mode 100644
index 00000000000..38e5f69bfb4
--- /dev/null
+++ b/contrib/tools/python3/Python/formatter_unicode.c
@@ -0,0 +1,1623 @@
+/* implements the unicode (as opposed to string) version of the
+ built-in formatters for string, int, float. that is, the versions
+ of int.__float__, etc., that take and return unicode objects */
+
+#include "Python.h"
+#include "pycore_fileutils.h" // _Py_GetLocaleconvNumeric()
+#include "pycore_long.h" // _PyLong_FormatWriter()
+#include <locale.h>
+
+/* Raises an exception about an unknown presentation type for this
+ * type. */
+
+static void
+unknown_presentation_type(Py_UCS4 presentation_type,
+ const char* type_name)
+{
+ /* %c might be out-of-range, hence the two cases. */
+ if (presentation_type > 32 && presentation_type < 128)
+ PyErr_Format(PyExc_ValueError,
+ "Unknown format code '%c' "
+ "for object of type '%.200s'",
+ (char)presentation_type,
+ type_name);
+ else
+ PyErr_Format(PyExc_ValueError,
+ "Unknown format code '\\x%x' "
+ "for object of type '%.200s'",
+ (unsigned int)presentation_type,
+ type_name);
+}
+
+static void
+invalid_thousands_separator_type(char specifier, Py_UCS4 presentation_type)
+{
+ assert(specifier == ',' || specifier == '_');
+ if (presentation_type > 32 && presentation_type < 128)
+ PyErr_Format(PyExc_ValueError,
+ "Cannot specify '%c' with '%c'.",
+ specifier, (char)presentation_type);
+ else
+ PyErr_Format(PyExc_ValueError,
+ "Cannot specify '%c' with '\\x%x'.",
+ specifier, (unsigned int)presentation_type);
+}
+
+static void
+invalid_comma_and_underscore(void)
+{
+ PyErr_Format(PyExc_ValueError, "Cannot specify both ',' and '_'.");
+}
+
+/*
+ get_integer consumes 0 or more decimal digit characters from an
+ input string, updates *result with the corresponding positive
+ integer, and returns the number of digits consumed.
+
+ returns -1 on error.
+*/
+static int
+get_integer(PyObject *str, Py_ssize_t *ppos, Py_ssize_t end,
+ Py_ssize_t *result)
+{
+ Py_ssize_t accumulator, digitval, pos = *ppos;
+ int numdigits;
+ int kind = PyUnicode_KIND(str);
+ const void *data = PyUnicode_DATA(str);
+
+ accumulator = numdigits = 0;
+ for (; pos < end; pos++, numdigits++) {
+ digitval = Py_UNICODE_TODECIMAL(PyUnicode_READ(kind, data, pos));
+ if (digitval < 0)
+ break;
+ /*
+ Detect possible overflow before it happens:
+
+ accumulator * 10 + digitval > PY_SSIZE_T_MAX if and only if
+ accumulator > (PY_SSIZE_T_MAX - digitval) / 10.
+ */
+ if (accumulator > (PY_SSIZE_T_MAX - digitval) / 10) {
+ PyErr_Format(PyExc_ValueError,
+ "Too many decimal digits in format string");
+ *ppos = pos;
+ return -1;
+ }
+ accumulator = accumulator * 10 + digitval;
+ }
+ *ppos = pos;
+ *result = accumulator;
+ return numdigits;
+}
+
+/************************************************************************/
+/*********** standard format specifier parsing **************************/
+/************************************************************************/
+
+/* returns true if this character is a specifier alignment token */
+Py_LOCAL_INLINE(int)
+is_alignment_token(Py_UCS4 c)
+{
+ switch (c) {
+ case '<': case '>': case '=': case '^':
+ return 1;
+ default:
+ return 0;
+ }
+}
+
+/* returns true if this character is a sign element */
+Py_LOCAL_INLINE(int)
+is_sign_element(Py_UCS4 c)
+{
+ switch (c) {
+ case ' ': case '+': case '-':
+ return 1;
+ default:
+ return 0;
+ }
+}
+
+/* Locale type codes. LT_NO_LOCALE must be zero. */
+enum LocaleType {
+ LT_NO_LOCALE = 0,
+ LT_DEFAULT_LOCALE = ',',
+ LT_UNDERSCORE_LOCALE = '_',
+ LT_UNDER_FOUR_LOCALE,
+ LT_CURRENT_LOCALE
+};
+
+typedef struct {
+ Py_UCS4 fill_char;
+ Py_UCS4 align;
+ int alternate;
+ int no_neg_0;
+ Py_UCS4 sign;
+ Py_ssize_t width;
+ enum LocaleType thousands_separators;
+ Py_ssize_t precision;
+ Py_UCS4 type;
+} InternalFormatSpec;
+
+
+/*
+ ptr points to the start of the format_spec, end points just past its end.
+ fills in format with the parsed information.
+ returns 1 on success, 0 on failure.
+ if failure, sets the exception
+*/
+static int
+parse_internal_render_format_spec(PyObject *obj,
+ PyObject *format_spec,
+ Py_ssize_t start, Py_ssize_t end,
+ InternalFormatSpec *format,
+ char default_type,
+ char default_align)
+{
+ Py_ssize_t pos = start;
+ int kind = PyUnicode_KIND(format_spec);
+ const void *data = PyUnicode_DATA(format_spec);
+ /* end-pos is used throughout this code to specify the length of
+ the input string */
+#define READ_spec(index) PyUnicode_READ(kind, data, index)
+
+ Py_ssize_t consumed;
+ int align_specified = 0;
+ int fill_char_specified = 0;
+
+ format->fill_char = ' ';
+ format->align = default_align;
+ format->alternate = 0;
+ format->no_neg_0 = 0;
+ format->sign = '\0';
+ format->width = -1;
+ format->thousands_separators = LT_NO_LOCALE;
+ format->precision = -1;
+ format->type = default_type;
+
+ /* If the second char is an alignment token,
+ then parse the fill char */
+ if (end-pos >= 2 && is_alignment_token(READ_spec(pos+1))) {
+ format->align = READ_spec(pos+1);
+ format->fill_char = READ_spec(pos);
+ fill_char_specified = 1;
+ align_specified = 1;
+ pos += 2;
+ }
+ else if (end-pos >= 1 && is_alignment_token(READ_spec(pos))) {
+ format->align = READ_spec(pos);
+ align_specified = 1;
+ ++pos;
+ }
+
+ /* Parse the various sign options */
+ if (end-pos >= 1 && is_sign_element(READ_spec(pos))) {
+ format->sign = READ_spec(pos);
+ ++pos;
+ }
+
+ /* If the next character is z, request coercion of negative 0.
+ Applies only to floats. */
+ if (end-pos >= 1 && READ_spec(pos) == 'z') {
+ format->no_neg_0 = 1;
+ ++pos;
+ }
+
+ /* If the next character is #, we're in alternate mode. This only
+ applies to integers. */
+ if (end-pos >= 1 && READ_spec(pos) == '#') {
+ format->alternate = 1;
+ ++pos;
+ }
+
+ /* The special case for 0-padding (backwards compat) */
+ if (!fill_char_specified && end-pos >= 1 && READ_spec(pos) == '0') {
+ format->fill_char = '0';
+ if (!align_specified && default_align == '>') {
+ format->align = '=';
+ }
+ ++pos;
+ }
+
+ consumed = get_integer(format_spec, &pos, end, &format->width);
+ if (consumed == -1)
+ /* Overflow error. Exception already set. */
+ return 0;
+
+ /* If consumed is 0, we didn't consume any characters for the
+ width. In that case, reset the width to -1, because
+ get_integer() will have set it to zero. -1 is how we record
+ that the width wasn't specified. */
+ if (consumed == 0)
+ format->width = -1;
+
+ /* Comma signifies add thousands separators */
+ if (end-pos && READ_spec(pos) == ',') {
+ format->thousands_separators = LT_DEFAULT_LOCALE;
+ ++pos;
+ }
+ /* Underscore signifies add thousands separators */
+ if (end-pos && READ_spec(pos) == '_') {
+ if (format->thousands_separators != LT_NO_LOCALE) {
+ invalid_comma_and_underscore();
+ return 0;
+ }
+ format->thousands_separators = LT_UNDERSCORE_LOCALE;
+ ++pos;
+ }
+ if (end-pos && READ_spec(pos) == ',') {
+ if (format->thousands_separators == LT_UNDERSCORE_LOCALE) {
+ invalid_comma_and_underscore();
+ return 0;
+ }
+ }
+
+ /* Parse field precision */
+ if (end-pos && READ_spec(pos) == '.') {
+ ++pos;
+
+ consumed = get_integer(format_spec, &pos, end, &format->precision);
+ if (consumed == -1)
+ /* Overflow error. Exception already set. */
+ return 0;
+
+ /* Not having a precision after a dot is an error. */
+ if (consumed == 0) {
+ PyErr_Format(PyExc_ValueError,
+ "Format specifier missing precision");
+ return 0;
+ }
+
+ }
+
+ /* Finally, parse the type field. */
+
+ if (end-pos > 1) {
+ /* More than one char remains, so this is an invalid format
+ specifier. */
+ /* Create a temporary object that contains the format spec we're
+ operating on. It's format_spec[start:end] (in Python syntax). */
+ PyObject* actual_format_spec = PyUnicode_FromKindAndData(kind,
+ (char*)data + kind*start,
+ end-start);
+ if (actual_format_spec != NULL) {
+ PyErr_Format(PyExc_ValueError,
+ "Invalid format specifier '%U' for object of type '%.200s'",
+ actual_format_spec, Py_TYPE(obj)->tp_name);
+ Py_DECREF(actual_format_spec);
+ }
+ return 0;
+ }
+
+ if (end-pos == 1) {
+ format->type = READ_spec(pos);
+ ++pos;
+ }
+
+ /* Do as much validating as we can, just by looking at the format
+ specifier. Do not take into account what type of formatting
+ we're doing (int, float, string). */
+
+ if (format->thousands_separators) {
+ switch (format->type) {
+ case 'd':
+ case 'e':
+ case 'f':
+ case 'g':
+ case 'E':
+ case 'G':
+ case '%':
+ case 'F':
+ case '\0':
+ /* These are allowed. See PEP 378.*/
+ break;
+ case 'b':
+ case 'o':
+ case 'x':
+ case 'X':
+ /* Underscores are allowed in bin/oct/hex. See PEP 515. */
+ if (format->thousands_separators == LT_UNDERSCORE_LOCALE) {
+ /* Every four digits, not every three, in bin/oct/hex. */
+ format->thousands_separators = LT_UNDER_FOUR_LOCALE;
+ break;
+ }
+ /* fall through */
+ default:
+ invalid_thousands_separator_type(format->thousands_separators, format->type);
+ return 0;
+ }
+ }
+
+ assert (format->align <= 127);
+ assert (format->sign <= 127);
+ return 1;
+}
+
+/* Calculate the padding needed. */
+static void
+calc_padding(Py_ssize_t nchars, Py_ssize_t width, Py_UCS4 align,
+ Py_ssize_t *n_lpadding, Py_ssize_t *n_rpadding,
+ Py_ssize_t *n_total)
+{
+ if (width >= 0) {
+ if (nchars > width)
+ *n_total = nchars;
+ else
+ *n_total = width;
+ }
+ else {
+ /* not specified, use all of the chars and no more */
+ *n_total = nchars;
+ }
+
+ /* Figure out how much leading space we need, based on the
+ aligning */
+ if (align == '>')
+ *n_lpadding = *n_total - nchars;
+ else if (align == '^')
+ *n_lpadding = (*n_total - nchars) / 2;
+ else if (align == '<' || align == '=')
+ *n_lpadding = 0;
+ else {
+ /* We should never have an unspecified alignment. */
+ Py_UNREACHABLE();
+ }
+
+ *n_rpadding = *n_total - nchars - *n_lpadding;
+}
+
+/* Do the padding, and return a pointer to where the caller-supplied
+ content goes. */
+static int
+fill_padding(_PyUnicodeWriter *writer,
+ Py_ssize_t nchars,
+ Py_UCS4 fill_char, Py_ssize_t n_lpadding,
+ Py_ssize_t n_rpadding)
+{
+ Py_ssize_t pos;
+
+ /* Pad on left. */
+ if (n_lpadding) {
+ pos = writer->pos;
+ _PyUnicode_FastFill(writer->buffer, pos, n_lpadding, fill_char);
+ }
+
+ /* Pad on right. */
+ if (n_rpadding) {
+ pos = writer->pos + nchars + n_lpadding;
+ _PyUnicode_FastFill(writer->buffer, pos, n_rpadding, fill_char);
+ }
+
+ /* Pointer to the user content. */
+ writer->pos += n_lpadding;
+ return 0;
+}
+
+/************************************************************************/
+/*********** common routines for numeric formatting *********************/
+/************************************************************************/
+
+/* Locale info needed for formatting integers and the part of floats
+ before and including the decimal. Note that locales only support
+ 8-bit chars, not unicode. */
+typedef struct {
+ PyObject *decimal_point;
+ PyObject *thousands_sep;
+ const char *grouping;
+ char *grouping_buffer;
+} LocaleInfo;
+
+#define LocaleInfo_STATIC_INIT {0, 0, 0, 0}
+
+/* describes the layout for an integer, see the comment in
+ calc_number_widths() for details */
+typedef struct {
+ Py_ssize_t n_lpadding;
+ Py_ssize_t n_prefix;
+ Py_ssize_t n_spadding;
+ Py_ssize_t n_rpadding;
+ char sign;
+ Py_ssize_t n_sign; /* number of digits needed for sign (0/1) */
+ Py_ssize_t n_grouped_digits; /* Space taken up by the digits, including
+ any grouping chars. */
+ Py_ssize_t n_decimal; /* 0 if only an integer */
+ Py_ssize_t n_remainder; /* Digits in decimal and/or exponent part,
+ excluding the decimal itself, if
+ present. */
+
+ /* These 2 are not the widths of fields, but are needed by
+ STRINGLIB_GROUPING. */
+ Py_ssize_t n_digits; /* The number of digits before a decimal
+ or exponent. */
+ Py_ssize_t n_min_width; /* The min_width we used when we computed
+ the n_grouped_digits width. */
+} NumberFieldWidths;
+
+
+/* Given a number of the form:
+ digits[remainder]
+ where ptr points to the start and end points to the end, find where
+ the integer part ends. This could be a decimal, an exponent, both,
+ or neither.
+ If a decimal point is present, set *has_decimal and increment
+ remainder beyond it.
+ Results are undefined (but shouldn't crash) for improperly
+ formatted strings.
+*/
+static void
+parse_number(PyObject *s, Py_ssize_t pos, Py_ssize_t end,
+ Py_ssize_t *n_remainder, int *has_decimal)
+{
+ Py_ssize_t remainder;
+ int kind = PyUnicode_KIND(s);
+ const void *data = PyUnicode_DATA(s);
+
+ while (pos<end && Py_ISDIGIT(PyUnicode_READ(kind, data, pos)))
+ ++pos;
+ remainder = pos;
+
+ /* Does remainder start with a decimal point? */
+ *has_decimal = pos<end && PyUnicode_READ(kind, data, remainder) == '.';
+
+ /* Skip the decimal point. */
+ if (*has_decimal)
+ remainder++;
+
+ *n_remainder = end - remainder;
+}
+
+/* not all fields of format are used. for example, precision is
+ unused. should this take discrete params in order to be more clear
+ about what it does? or is passing a single format parameter easier
+ and more efficient enough to justify a little obfuscation?
+ Return -1 on error. */
+static Py_ssize_t
+calc_number_widths(NumberFieldWidths *spec, Py_ssize_t n_prefix,
+ Py_UCS4 sign_char, Py_ssize_t n_start,
+ Py_ssize_t n_end, Py_ssize_t n_remainder,
+ int has_decimal, const LocaleInfo *locale,
+ const InternalFormatSpec *format, Py_UCS4 *maxchar)
+{
+ Py_ssize_t n_non_digit_non_padding;
+ Py_ssize_t n_padding;
+
+ spec->n_digits = n_end - n_start - n_remainder - (has_decimal?1:0);
+ spec->n_lpadding = 0;
+ spec->n_prefix = n_prefix;
+ spec->n_decimal = has_decimal ? PyUnicode_GET_LENGTH(locale->decimal_point) : 0;
+ spec->n_remainder = n_remainder;
+ spec->n_spadding = 0;
+ spec->n_rpadding = 0;
+ spec->sign = '\0';
+ spec->n_sign = 0;
+
+ /* the output will look like:
+ | |
+ | <lpadding> <sign> <prefix> <spadding> <grouped_digits> <decimal> <remainder> <rpadding> |
+ | |
+
+ sign is computed from format->sign and the actual
+ sign of the number
+
+ prefix is given (it's for the '0x' prefix)
+
+ digits is already known
+
+ the total width is either given, or computed from the
+ actual digits
+
+ only one of lpadding, spadding, and rpadding can be non-zero,
+ and it's calculated from the width and other fields
+ */
+
+ /* compute the various parts we're going to write */
+ switch (format->sign) {
+ case '+':
+ /* always put a + or - */
+ spec->n_sign = 1;
+ spec->sign = (sign_char == '-' ? '-' : '+');
+ break;
+ case ' ':
+ spec->n_sign = 1;
+ spec->sign = (sign_char == '-' ? '-' : ' ');
+ break;
+ default:
+ /* Not specified, or the default (-) */
+ if (sign_char == '-') {
+ spec->n_sign = 1;
+ spec->sign = '-';
+ }
+ }
+
+ /* The number of chars used for non-digits and non-padding. */
+ n_non_digit_non_padding = spec->n_sign + spec->n_prefix + spec->n_decimal +
+ spec->n_remainder;
+
+ /* min_width can go negative, that's okay. format->width == -1 means
+ we don't care. */
+ if (format->fill_char == '0' && format->align == '=')
+ spec->n_min_width = format->width - n_non_digit_non_padding;
+ else
+ spec->n_min_width = 0;
+
+ if (spec->n_digits == 0)
+ /* This case only occurs when using 'c' formatting, we need
+ to special case it because the grouping code always wants
+ to have at least one character. */
+ spec->n_grouped_digits = 0;
+ else {
+ Py_UCS4 grouping_maxchar;
+ spec->n_grouped_digits = _PyUnicode_InsertThousandsGrouping(
+ NULL, 0,
+ NULL, 0, spec->n_digits,
+ spec->n_min_width,
+ locale->grouping, locale->thousands_sep, &grouping_maxchar);
+ if (spec->n_grouped_digits == -1) {
+ return -1;
+ }
+ *maxchar = Py_MAX(*maxchar, grouping_maxchar);
+ }
+
+ /* Given the desired width and the total of digit and non-digit
+ space we consume, see if we need any padding. format->width can
+ be negative (meaning no padding), but this code still works in
+ that case. */
+ n_padding = format->width -
+ (n_non_digit_non_padding + spec->n_grouped_digits);
+ if (n_padding > 0) {
+ /* Some padding is needed. Determine if it's left, space, or right. */
+ switch (format->align) {
+ case '<':
+ spec->n_rpadding = n_padding;
+ break;
+ case '^':
+ spec->n_lpadding = n_padding / 2;
+ spec->n_rpadding = n_padding - spec->n_lpadding;
+ break;
+ case '=':
+ spec->n_spadding = n_padding;
+ break;
+ case '>':
+ spec->n_lpadding = n_padding;
+ break;
+ default:
+ /* Shouldn't get here */
+ Py_UNREACHABLE();
+ }
+ }
+
+ if (spec->n_lpadding || spec->n_spadding || spec->n_rpadding)
+ *maxchar = Py_MAX(*maxchar, format->fill_char);
+
+ if (spec->n_decimal)
+ *maxchar = Py_MAX(*maxchar, PyUnicode_MAX_CHAR_VALUE(locale->decimal_point));
+
+ return spec->n_lpadding + spec->n_sign + spec->n_prefix +
+ spec->n_spadding + spec->n_grouped_digits + spec->n_decimal +
+ spec->n_remainder + spec->n_rpadding;
+}
+
+/* Fill in the digit parts of a number's string representation,
+ as determined in calc_number_widths().
+ Return -1 on error, or 0 on success. */
+static int
+fill_number(_PyUnicodeWriter *writer, const NumberFieldWidths *spec,
+ PyObject *digits, Py_ssize_t d_start,
+ PyObject *prefix, Py_ssize_t p_start,
+ Py_UCS4 fill_char,
+ LocaleInfo *locale, int toupper)
+{
+ /* Used to keep track of digits, decimal, and remainder. */
+ Py_ssize_t d_pos = d_start;
+ const int kind = writer->kind;
+ const void *data = writer->data;
+ Py_ssize_t r;
+
+ if (spec->n_lpadding) {
+ _PyUnicode_FastFill(writer->buffer,
+ writer->pos, spec->n_lpadding, fill_char);
+ writer->pos += spec->n_lpadding;
+ }
+ if (spec->n_sign == 1) {
+ PyUnicode_WRITE(kind, data, writer->pos, spec->sign);
+ writer->pos++;
+ }
+ if (spec->n_prefix) {
+ _PyUnicode_FastCopyCharacters(writer->buffer, writer->pos,
+ prefix, p_start,
+ spec->n_prefix);
+ if (toupper) {
+ Py_ssize_t t;
+ for (t = 0; t < spec->n_prefix; t++) {
+ Py_UCS4 c = PyUnicode_READ(kind, data, writer->pos + t);
+ c = Py_TOUPPER(c);
+ assert (c <= 127);
+ PyUnicode_WRITE(kind, data, writer->pos + t, c);
+ }
+ }
+ writer->pos += spec->n_prefix;
+ }
+ if (spec->n_spadding) {
+ _PyUnicode_FastFill(writer->buffer,
+ writer->pos, spec->n_spadding, fill_char);
+ writer->pos += spec->n_spadding;
+ }
+
+ /* Only for type 'c' special case, it has no digits. */
+ if (spec->n_digits != 0) {
+ /* Fill the digits with InsertThousandsGrouping. */
+ r = _PyUnicode_InsertThousandsGrouping(
+ writer, spec->n_grouped_digits,
+ digits, d_pos, spec->n_digits,
+ spec->n_min_width,
+ locale->grouping, locale->thousands_sep, NULL);
+ if (r == -1)
+ return -1;
+ assert(r == spec->n_grouped_digits);
+ d_pos += spec->n_digits;
+ }
+ if (toupper) {
+ Py_ssize_t t;
+ for (t = 0; t < spec->n_grouped_digits; t++) {
+ Py_UCS4 c = PyUnicode_READ(kind, data, writer->pos + t);
+ c = Py_TOUPPER(c);
+ if (c > 127) {
+ PyErr_SetString(PyExc_SystemError, "non-ascii grouped digit");
+ return -1;
+ }
+ PyUnicode_WRITE(kind, data, writer->pos + t, c);
+ }
+ }
+ writer->pos += spec->n_grouped_digits;
+
+ if (spec->n_decimal) {
+ _PyUnicode_FastCopyCharacters(
+ writer->buffer, writer->pos,
+ locale->decimal_point, 0, spec->n_decimal);
+ writer->pos += spec->n_decimal;
+ d_pos += 1;
+ }
+
+ if (spec->n_remainder) {
+ _PyUnicode_FastCopyCharacters(
+ writer->buffer, writer->pos,
+ digits, d_pos, spec->n_remainder);
+ writer->pos += spec->n_remainder;
+ /* d_pos += spec->n_remainder; */
+ }
+
+ if (spec->n_rpadding) {
+ _PyUnicode_FastFill(writer->buffer,
+ writer->pos, spec->n_rpadding,
+ fill_char);
+ writer->pos += spec->n_rpadding;
+ }
+ return 0;
+}
+
+static const char no_grouping[1] = {CHAR_MAX};
+
+/* Find the decimal point character(s?), thousands_separator(s?), and
+ grouping description, either for the current locale if type is
+ LT_CURRENT_LOCALE, a hard-coded locale if LT_DEFAULT_LOCALE or
+ LT_UNDERSCORE_LOCALE/LT_UNDER_FOUR_LOCALE, or none if LT_NO_LOCALE. */
+static int
+get_locale_info(enum LocaleType type, LocaleInfo *locale_info)
+{
+ switch (type) {
+ case LT_CURRENT_LOCALE: {
+ struct lconv *lc = localeconv();
+ if (_Py_GetLocaleconvNumeric(lc,
+ &locale_info->decimal_point,
+ &locale_info->thousands_sep) < 0) {
+ return -1;
+ }
+
+ /* localeconv() grouping can become a dangling pointer or point
+ to a different string if another thread calls localeconv() during
+ the string formatting. Copy the string to avoid this risk. */
+ locale_info->grouping_buffer = _PyMem_Strdup(lc->grouping);
+ if (locale_info->grouping_buffer == NULL) {
+ PyErr_NoMemory();
+ return -1;
+ }
+ locale_info->grouping = locale_info->grouping_buffer;
+ break;
+ }
+ case LT_DEFAULT_LOCALE:
+ case LT_UNDERSCORE_LOCALE:
+ case LT_UNDER_FOUR_LOCALE:
+ locale_info->decimal_point = PyUnicode_FromOrdinal('.');
+ locale_info->thousands_sep = PyUnicode_FromOrdinal(
+ type == LT_DEFAULT_LOCALE ? ',' : '_');
+ if (!locale_info->decimal_point || !locale_info->thousands_sep)
+ return -1;
+ if (type != LT_UNDER_FOUR_LOCALE)
+ locale_info->grouping = "\3"; /* Group every 3 characters. The
+ (implicit) trailing 0 means repeat
+ infinitely. */
+ else
+ locale_info->grouping = "\4"; /* Bin/oct/hex group every four. */
+ break;
+ case LT_NO_LOCALE:
+ locale_info->decimal_point = PyUnicode_FromOrdinal('.');
+ locale_info->thousands_sep = PyUnicode_New(0, 0);
+ if (!locale_info->decimal_point || !locale_info->thousands_sep)
+ return -1;
+ locale_info->grouping = no_grouping;
+ break;
+ }
+ return 0;
+}
+
+static void
+free_locale_info(LocaleInfo *locale_info)
+{
+ Py_XDECREF(locale_info->decimal_point);
+ Py_XDECREF(locale_info->thousands_sep);
+ PyMem_Free(locale_info->grouping_buffer);
+}
+
+/************************************************************************/
+/*********** string formatting ******************************************/
+/************************************************************************/
+
+static int
+format_string_internal(PyObject *value, const InternalFormatSpec *format,
+ _PyUnicodeWriter *writer)
+{
+ Py_ssize_t lpad;
+ Py_ssize_t rpad;
+ Py_ssize_t total;
+ Py_ssize_t len;
+ int result = -1;
+ Py_UCS4 maxchar;
+
+ assert(PyUnicode_IS_READY(value));
+ len = PyUnicode_GET_LENGTH(value);
+
+ /* sign is not allowed on strings */
+ if (format->sign != '\0') {
+ if (format->sign == ' ') {
+ PyErr_SetString(PyExc_ValueError,
+ "Space not allowed in string format specifier");
+ }
+ else {
+ PyErr_SetString(PyExc_ValueError,
+ "Sign not allowed in string format specifier");
+ }
+ goto done;
+ }
+
+ /* negative 0 coercion is not allowed on strings */
+ if (format->no_neg_0) {
+ PyErr_SetString(PyExc_ValueError,
+ "Negative zero coercion (z) not allowed in string format "
+ "specifier");
+ goto done;
+ }
+
+ /* alternate is not allowed on strings */
+ if (format->alternate) {
+ PyErr_SetString(PyExc_ValueError,
+ "Alternate form (#) not allowed in string format "
+ "specifier");
+ goto done;
+ }
+
+ /* '=' alignment not allowed on strings */
+ if (format->align == '=') {
+ PyErr_SetString(PyExc_ValueError,
+ "'=' alignment not allowed "
+ "in string format specifier");
+ goto done;
+ }
+
+ if ((format->width == -1 || format->width <= len)
+ && (format->precision == -1 || format->precision >= len)) {
+ /* Fast path */
+ return _PyUnicodeWriter_WriteStr(writer, value);
+ }
+
+ /* if precision is specified, output no more that format.precision
+ characters */
+ if (format->precision >= 0 && len >= format->precision) {
+ len = format->precision;
+ }
+
+ calc_padding(len, format->width, format->align, &lpad, &rpad, &total);
+
+ maxchar = writer->maxchar;
+ if (lpad != 0 || rpad != 0)
+ maxchar = Py_MAX(maxchar, format->fill_char);
+ if (PyUnicode_MAX_CHAR_VALUE(value) > maxchar) {
+ Py_UCS4 valmaxchar = _PyUnicode_FindMaxChar(value, 0, len);
+ maxchar = Py_MAX(maxchar, valmaxchar);
+ }
+
+ /* allocate the resulting string */
+ if (_PyUnicodeWriter_Prepare(writer, total, maxchar) == -1)
+ goto done;
+
+ /* Write into that space. First the padding. */
+ result = fill_padding(writer, len, format->fill_char, lpad, rpad);
+ if (result == -1)
+ goto done;
+
+ /* Then the source string. */
+ if (len) {
+ _PyUnicode_FastCopyCharacters(writer->buffer, writer->pos,
+ value, 0, len);
+ }
+ writer->pos += (len + rpad);
+ result = 0;
+
+done:
+ return result;
+}
+
+
+/************************************************************************/
+/*********** long formatting ********************************************/
+/************************************************************************/
+
+static int
+format_long_internal(PyObject *value, const InternalFormatSpec *format,
+ _PyUnicodeWriter *writer)
+{
+ int result = -1;
+ Py_UCS4 maxchar = 127;
+ PyObject *tmp = NULL;
+ Py_ssize_t inumeric_chars;
+ Py_UCS4 sign_char = '\0';
+ Py_ssize_t n_digits; /* count of digits need from the computed
+ string */
+ Py_ssize_t n_remainder = 0; /* Used only for 'c' formatting, which
+ produces non-digits */
+ Py_ssize_t n_prefix = 0; /* Count of prefix chars, (e.g., '0x') */
+ Py_ssize_t n_total;
+ Py_ssize_t prefix = 0;
+ NumberFieldWidths spec;
+ long x;
+
+ /* Locale settings, either from the actual locale or
+ from a hard-code pseudo-locale */
+ LocaleInfo locale = LocaleInfo_STATIC_INIT;
+
+ /* no precision allowed on integers */
+ if (format->precision != -1) {
+ PyErr_SetString(PyExc_ValueError,
+ "Precision not allowed in integer format specifier");
+ goto done;
+ }
+ /* no negative zero coercion on integers */
+ if (format->no_neg_0) {
+ PyErr_SetString(PyExc_ValueError,
+ "Negative zero coercion (z) not allowed in integer"
+ " format specifier");
+ goto done;
+ }
+
+ /* special case for character formatting */
+ if (format->type == 'c') {
+ /* error to specify a sign */
+ if (format->sign != '\0') {
+ PyErr_SetString(PyExc_ValueError,
+ "Sign not allowed with integer"
+ " format specifier 'c'");
+ goto done;
+ }
+ /* error to request alternate format */
+ if (format->alternate) {
+ PyErr_SetString(PyExc_ValueError,
+ "Alternate form (#) not allowed with integer"
+ " format specifier 'c'");
+ goto done;
+ }
+
+ /* taken from unicodeobject.c formatchar() */
+ /* Integer input truncated to a character */
+ x = PyLong_AsLong(value);
+ if (x == -1 && PyErr_Occurred())
+ goto done;
+ if (x < 0 || x > 0x10ffff) {
+ PyErr_SetString(PyExc_OverflowError,
+ "%c arg not in range(0x110000)");
+ goto done;
+ }
+ tmp = PyUnicode_FromOrdinal(x);
+ inumeric_chars = 0;
+ n_digits = 1;
+ maxchar = Py_MAX(maxchar, (Py_UCS4)x);
+
+ /* As a sort-of hack, we tell calc_number_widths that we only
+ have "remainder" characters. calc_number_widths thinks
+ these are characters that don't get formatted, only copied
+ into the output string. We do this for 'c' formatting,
+ because the characters are likely to be non-digits. */
+ n_remainder = 1;
+ }
+ else {
+ int base;
+ int leading_chars_to_skip = 0; /* Number of characters added by
+ PyNumber_ToBase that we want to
+ skip over. */
+
+ /* Compute the base and how many characters will be added by
+ PyNumber_ToBase */
+ switch (format->type) {
+ case 'b':
+ base = 2;
+ leading_chars_to_skip = 2; /* 0b */
+ break;
+ case 'o':
+ base = 8;
+ leading_chars_to_skip = 2; /* 0o */
+ break;
+ case 'x':
+ case 'X':
+ base = 16;
+ leading_chars_to_skip = 2; /* 0x */
+ break;
+ default: /* shouldn't be needed, but stops a compiler warning */
+ case 'd':
+ case 'n':
+ base = 10;
+ break;
+ }
+
+ if (format->sign != '+' && format->sign != ' '
+ && format->width == -1
+ && format->type != 'X' && format->type != 'n'
+ && !format->thousands_separators
+ && PyLong_CheckExact(value))
+ {
+ /* Fast path */
+ return _PyLong_FormatWriter(writer, value, base, format->alternate);
+ }
+
+ /* The number of prefix chars is the same as the leading
+ chars to skip */
+ if (format->alternate)
+ n_prefix = leading_chars_to_skip;
+
+ /* Do the hard part, converting to a string in a given base */
+ tmp = _PyLong_Format(value, base);
+ if (tmp == NULL || PyUnicode_READY(tmp) == -1)
+ goto done;
+
+ inumeric_chars = 0;
+ n_digits = PyUnicode_GET_LENGTH(tmp);
+
+ prefix = inumeric_chars;
+
+ /* Is a sign character present in the output? If so, remember it
+ and skip it */
+ if (PyUnicode_READ_CHAR(tmp, inumeric_chars) == '-') {
+ sign_char = '-';
+ ++prefix;
+ ++leading_chars_to_skip;
+ }
+
+ /* Skip over the leading chars (0x, 0b, etc.) */
+ n_digits -= leading_chars_to_skip;
+ inumeric_chars += leading_chars_to_skip;
+ }
+
+ /* Determine the grouping, separator, and decimal point, if any. */
+ if (get_locale_info(format->type == 'n' ? LT_CURRENT_LOCALE :
+ format->thousands_separators,
+ &locale) == -1)
+ goto done;
+
+ /* Calculate how much memory we'll need. */
+ n_total = calc_number_widths(&spec, n_prefix, sign_char, inumeric_chars,
+ inumeric_chars + n_digits, n_remainder, 0,
+ &locale, format, &maxchar);
+ if (n_total == -1) {
+ goto done;
+ }
+
+ /* Allocate the memory. */
+ if (_PyUnicodeWriter_Prepare(writer, n_total, maxchar) == -1)
+ goto done;
+
+ /* Populate the memory. */
+ result = fill_number(writer, &spec,
+ tmp, inumeric_chars,
+ tmp, prefix, format->fill_char,
+ &locale, format->type == 'X');
+
+done:
+ Py_XDECREF(tmp);
+ free_locale_info(&locale);
+ return result;
+}
+
+/************************************************************************/
+/*********** float formatting *******************************************/
+/************************************************************************/
+
+/* much of this is taken from unicodeobject.c */
+static int
+format_float_internal(PyObject *value,
+ const InternalFormatSpec *format,
+ _PyUnicodeWriter *writer)
+{
+ char *buf = NULL; /* buffer returned from PyOS_double_to_string */
+ Py_ssize_t n_digits;
+ Py_ssize_t n_remainder;
+ Py_ssize_t n_total;
+ int has_decimal;
+ double val;
+ int precision, default_precision = 6;
+ Py_UCS4 type = format->type;
+ int add_pct = 0;
+ Py_ssize_t index;
+ NumberFieldWidths spec;
+ int flags = 0;
+ int result = -1;
+ Py_UCS4 maxchar = 127;
+ Py_UCS4 sign_char = '\0';
+ int float_type; /* Used to see if we have a nan, inf, or regular float. */
+ PyObject *unicode_tmp = NULL;
+
+ /* Locale settings, either from the actual locale or
+ from a hard-code pseudo-locale */
+ LocaleInfo locale = LocaleInfo_STATIC_INIT;
+
+ if (format->precision > INT_MAX) {
+ PyErr_SetString(PyExc_ValueError, "precision too big");
+ goto done;
+ }
+ precision = (int)format->precision;
+
+ if (format->alternate)
+ flags |= Py_DTSF_ALT;
+ if (format->no_neg_0)
+ flags |= Py_DTSF_NO_NEG_0;
+
+ if (type == '\0') {
+ /* Omitted type specifier. Behaves in the same way as repr(x)
+ and str(x) if no precision is given, else like 'g', but with
+ at least one digit after the decimal point. */
+ flags |= Py_DTSF_ADD_DOT_0;
+ type = 'r';
+ default_precision = 0;
+ }
+
+ if (type == 'n')
+ /* 'n' is the same as 'g', except for the locale used to
+ format the result. We take care of that later. */
+ type = 'g';
+
+ val = PyFloat_AsDouble(value);
+ if (val == -1.0 && PyErr_Occurred())
+ goto done;
+
+ if (type == '%') {
+ type = 'f';
+ val *= 100;
+ add_pct = 1;
+ }
+
+ if (precision < 0)
+ precision = default_precision;
+ else if (type == 'r')
+ type = 'g';
+
+ /* Cast "type", because if we're in unicode we need to pass an
+ 8-bit char. This is safe, because we've restricted what "type"
+ can be. */
+ buf = PyOS_double_to_string(val, (char)type, precision, flags,
+ &float_type);
+ if (buf == NULL)
+ goto done;
+ n_digits = strlen(buf);
+
+ if (add_pct) {
+ /* We know that buf has a trailing zero (since we just called
+ strlen() on it), and we don't use that fact any more. So we
+ can just write over the trailing zero. */
+ buf[n_digits] = '%';
+ n_digits += 1;
+ }
+
+ if (format->sign != '+' && format->sign != ' '
+ && format->width == -1
+ && format->type != 'n'
+ && !format->thousands_separators)
+ {
+ /* Fast path */
+ result = _PyUnicodeWriter_WriteASCIIString(writer, buf, n_digits);
+ PyMem_Free(buf);
+ return result;
+ }
+
+ /* Since there is no unicode version of PyOS_double_to_string,
+ just use the 8 bit version and then convert to unicode. */
+ unicode_tmp = _PyUnicode_FromASCII(buf, n_digits);
+ PyMem_Free(buf);
+ if (unicode_tmp == NULL)
+ goto done;
+
+ /* Is a sign character present in the output? If so, remember it
+ and skip it */
+ index = 0;
+ if (PyUnicode_READ_CHAR(unicode_tmp, index) == '-') {
+ sign_char = '-';
+ ++index;
+ --n_digits;
+ }
+
+ /* Determine if we have any "remainder" (after the digits, might include
+ decimal or exponent or both (or neither)) */
+ parse_number(unicode_tmp, index, index + n_digits, &n_remainder, &has_decimal);
+
+ /* Determine the grouping, separator, and decimal point, if any. */
+ if (get_locale_info(format->type == 'n' ? LT_CURRENT_LOCALE :
+ format->thousands_separators,
+ &locale) == -1)
+ goto done;
+
+ /* Calculate how much memory we'll need. */
+ n_total = calc_number_widths(&spec, 0, sign_char, index,
+ index + n_digits, n_remainder, has_decimal,
+ &locale, format, &maxchar);
+ if (n_total == -1) {
+ goto done;
+ }
+
+ /* Allocate the memory. */
+ if (_PyUnicodeWriter_Prepare(writer, n_total, maxchar) == -1)
+ goto done;
+
+ /* Populate the memory. */
+ result = fill_number(writer, &spec,
+ unicode_tmp, index,
+ NULL, 0, format->fill_char,
+ &locale, 0);
+
+done:
+ Py_XDECREF(unicode_tmp);
+ free_locale_info(&locale);
+ return result;
+}
+
+/************************************************************************/
+/*********** complex formatting *****************************************/
+/************************************************************************/
+
+static int
+format_complex_internal(PyObject *value,
+ const InternalFormatSpec *format,
+ _PyUnicodeWriter *writer)
+{
+ double re;
+ double im;
+ char *re_buf = NULL; /* buffer returned from PyOS_double_to_string */
+ char *im_buf = NULL; /* buffer returned from PyOS_double_to_string */
+
+ InternalFormatSpec tmp_format = *format;
+ Py_ssize_t n_re_digits;
+ Py_ssize_t n_im_digits;
+ Py_ssize_t n_re_remainder;
+ Py_ssize_t n_im_remainder;
+ Py_ssize_t n_re_total;
+ Py_ssize_t n_im_total;
+ int re_has_decimal;
+ int im_has_decimal;
+ int precision, default_precision = 6;
+ Py_UCS4 type = format->type;
+ Py_ssize_t i_re;
+ Py_ssize_t i_im;
+ NumberFieldWidths re_spec;
+ NumberFieldWidths im_spec;
+ int flags = 0;
+ int result = -1;
+ Py_UCS4 maxchar = 127;
+ int rkind;
+ void *rdata;
+ Py_UCS4 re_sign_char = '\0';
+ Py_UCS4 im_sign_char = '\0';
+ int re_float_type; /* Used to see if we have a nan, inf, or regular float. */
+ int im_float_type;
+ int add_parens = 0;
+ int skip_re = 0;
+ Py_ssize_t lpad;
+ Py_ssize_t rpad;
+ Py_ssize_t total;
+ PyObject *re_unicode_tmp = NULL;
+ PyObject *im_unicode_tmp = NULL;
+
+ /* Locale settings, either from the actual locale or
+ from a hard-code pseudo-locale */
+ LocaleInfo locale = LocaleInfo_STATIC_INIT;
+
+ if (format->precision > INT_MAX) {
+ PyErr_SetString(PyExc_ValueError, "precision too big");
+ goto done;
+ }
+ precision = (int)format->precision;
+
+ /* Zero padding is not allowed. */
+ if (format->fill_char == '0') {
+ PyErr_SetString(PyExc_ValueError,
+ "Zero padding is not allowed in complex format "
+ "specifier");
+ goto done;
+ }
+
+ /* Neither is '=' alignment . */
+ if (format->align == '=') {
+ PyErr_SetString(PyExc_ValueError,
+ "'=' alignment flag is not allowed in complex format "
+ "specifier");
+ goto done;
+ }
+
+ re = PyComplex_RealAsDouble(value);
+ if (re == -1.0 && PyErr_Occurred())
+ goto done;
+ im = PyComplex_ImagAsDouble(value);
+ if (im == -1.0 && PyErr_Occurred())
+ goto done;
+
+ if (format->alternate)
+ flags |= Py_DTSF_ALT;
+ if (format->no_neg_0)
+ flags |= Py_DTSF_NO_NEG_0;
+
+ if (type == '\0') {
+ /* Omitted type specifier. Should be like str(self). */
+ type = 'r';
+ default_precision = 0;
+ if (re == 0.0 && copysign(1.0, re) == 1.0)
+ skip_re = 1;
+ else
+ add_parens = 1;
+ }
+
+ if (type == 'n')
+ /* 'n' is the same as 'g', except for the locale used to
+ format the result. We take care of that later. */
+ type = 'g';
+
+ if (precision < 0)
+ precision = default_precision;
+ else if (type == 'r')
+ type = 'g';
+
+ /* Cast "type", because if we're in unicode we need to pass an
+ 8-bit char. This is safe, because we've restricted what "type"
+ can be. */
+ re_buf = PyOS_double_to_string(re, (char)type, precision, flags,
+ &re_float_type);
+ if (re_buf == NULL)
+ goto done;
+ im_buf = PyOS_double_to_string(im, (char)type, precision, flags,
+ &im_float_type);
+ if (im_buf == NULL)
+ goto done;
+
+ n_re_digits = strlen(re_buf);
+ n_im_digits = strlen(im_buf);
+
+ /* Since there is no unicode version of PyOS_double_to_string,
+ just use the 8 bit version and then convert to unicode. */
+ re_unicode_tmp = _PyUnicode_FromASCII(re_buf, n_re_digits);
+ if (re_unicode_tmp == NULL)
+ goto done;
+ i_re = 0;
+
+ im_unicode_tmp = _PyUnicode_FromASCII(im_buf, n_im_digits);
+ if (im_unicode_tmp == NULL)
+ goto done;
+ i_im = 0;
+
+ /* Is a sign character present in the output? If so, remember it
+ and skip it */
+ if (PyUnicode_READ_CHAR(re_unicode_tmp, i_re) == '-') {
+ re_sign_char = '-';
+ ++i_re;
+ --n_re_digits;
+ }
+ if (PyUnicode_READ_CHAR(im_unicode_tmp, i_im) == '-') {
+ im_sign_char = '-';
+ ++i_im;
+ --n_im_digits;
+ }
+
+ /* Determine if we have any "remainder" (after the digits, might include
+ decimal or exponent or both (or neither)) */
+ parse_number(re_unicode_tmp, i_re, i_re + n_re_digits,
+ &n_re_remainder, &re_has_decimal);
+ parse_number(im_unicode_tmp, i_im, i_im + n_im_digits,
+ &n_im_remainder, &im_has_decimal);
+
+ /* Determine the grouping, separator, and decimal point, if any. */
+ if (get_locale_info(format->type == 'n' ? LT_CURRENT_LOCALE :
+ format->thousands_separators,
+ &locale) == -1)
+ goto done;
+
+ /* Turn off any padding. We'll do it later after we've composed
+ the numbers without padding. */
+ tmp_format.fill_char = '\0';
+ tmp_format.align = '<';
+ tmp_format.width = -1;
+
+ /* Calculate how much memory we'll need. */
+ n_re_total = calc_number_widths(&re_spec, 0, re_sign_char,
+ i_re, i_re + n_re_digits, n_re_remainder,
+ re_has_decimal, &locale, &tmp_format,
+ &maxchar);
+ if (n_re_total == -1) {
+ goto done;
+ }
+
+ /* Same formatting, but always include a sign, unless the real part is
+ * going to be omitted, in which case we use whatever sign convention was
+ * requested by the original format. */
+ if (!skip_re)
+ tmp_format.sign = '+';
+ n_im_total = calc_number_widths(&im_spec, 0, im_sign_char,
+ i_im, i_im + n_im_digits, n_im_remainder,
+ im_has_decimal, &locale, &tmp_format,
+ &maxchar);
+ if (n_im_total == -1) {
+ goto done;
+ }
+
+ if (skip_re)
+ n_re_total = 0;
+
+ /* Add 1 for the 'j', and optionally 2 for parens. */
+ calc_padding(n_re_total + n_im_total + 1 + add_parens * 2,
+ format->width, format->align, &lpad, &rpad, &total);
+
+ if (lpad || rpad)
+ maxchar = Py_MAX(maxchar, format->fill_char);
+
+ if (_PyUnicodeWriter_Prepare(writer, total, maxchar) == -1)
+ goto done;
+ rkind = writer->kind;
+ rdata = writer->data;
+
+ /* Populate the memory. First, the padding. */
+ result = fill_padding(writer,
+ n_re_total + n_im_total + 1 + add_parens * 2,
+ format->fill_char, lpad, rpad);
+ if (result == -1)
+ goto done;
+
+ if (add_parens) {
+ PyUnicode_WRITE(rkind, rdata, writer->pos, '(');
+ writer->pos++;
+ }
+
+ if (!skip_re) {
+ result = fill_number(writer, &re_spec,
+ re_unicode_tmp, i_re,
+ NULL, 0,
+ 0,
+ &locale, 0);
+ if (result == -1)
+ goto done;
+ }
+ result = fill_number(writer, &im_spec,
+ im_unicode_tmp, i_im,
+ NULL, 0,
+ 0,
+ &locale, 0);
+ if (result == -1)
+ goto done;
+ PyUnicode_WRITE(rkind, rdata, writer->pos, 'j');
+ writer->pos++;
+
+ if (add_parens) {
+ PyUnicode_WRITE(rkind, rdata, writer->pos, ')');
+ writer->pos++;
+ }
+
+ writer->pos += rpad;
+
+done:
+ PyMem_Free(re_buf);
+ PyMem_Free(im_buf);
+ Py_XDECREF(re_unicode_tmp);
+ Py_XDECREF(im_unicode_tmp);
+ free_locale_info(&locale);
+ return result;
+}
+
+/************************************************************************/
+/*********** built in formatters ****************************************/
+/************************************************************************/
+static int
+format_obj(PyObject *obj, _PyUnicodeWriter *writer)
+{
+ PyObject *str;
+ int err;
+
+ str = PyObject_Str(obj);
+ if (str == NULL)
+ return -1;
+ err = _PyUnicodeWriter_WriteStr(writer, str);
+ Py_DECREF(str);
+ return err;
+}
+
+int
+_PyUnicode_FormatAdvancedWriter(_PyUnicodeWriter *writer,
+ PyObject *obj,
+ PyObject *format_spec,
+ Py_ssize_t start, Py_ssize_t end)
+{
+ InternalFormatSpec format;
+
+ assert(PyUnicode_Check(obj));
+
+ /* check for the special case of zero length format spec, make
+ it equivalent to str(obj) */
+ if (start == end) {
+ if (PyUnicode_CheckExact(obj))
+ return _PyUnicodeWriter_WriteStr(writer, obj);
+ else
+ return format_obj(obj, writer);
+ }
+
+ /* parse the format_spec */
+ if (!parse_internal_render_format_spec(obj, format_spec, start, end,
+ &format, 's', '<'))
+ return -1;
+
+ /* type conversion? */
+ switch (format.type) {
+ case 's':
+ /* no type conversion needed, already a string. do the formatting */
+ return format_string_internal(obj, &format, writer);
+ default:
+ /* unknown */
+ unknown_presentation_type(format.type, Py_TYPE(obj)->tp_name);
+ return -1;
+ }
+}
+
+int
+_PyLong_FormatAdvancedWriter(_PyUnicodeWriter *writer,
+ PyObject *obj,
+ PyObject *format_spec,
+ Py_ssize_t start, Py_ssize_t end)
+{
+ PyObject *tmp = NULL;
+ InternalFormatSpec format;
+ int result = -1;
+
+ /* check for the special case of zero length format spec, make
+ it equivalent to str(obj) */
+ if (start == end) {
+ if (PyLong_CheckExact(obj))
+ return _PyLong_FormatWriter(writer, obj, 10, 0);
+ else
+ return format_obj(obj, writer);
+ }
+
+ /* parse the format_spec */
+ if (!parse_internal_render_format_spec(obj, format_spec, start, end,
+ &format, 'd', '>'))
+ goto done;
+
+ /* type conversion? */
+ switch (format.type) {
+ case 'b':
+ case 'c':
+ case 'd':
+ case 'o':
+ case 'x':
+ case 'X':
+ case 'n':
+ /* no type conversion needed, already an int. do the formatting */
+ result = format_long_internal(obj, &format, writer);
+ break;
+
+ case 'e':
+ case 'E':
+ case 'f':
+ case 'F':
+ case 'g':
+ case 'G':
+ case '%':
+ /* convert to float */
+ tmp = PyNumber_Float(obj);
+ if (tmp == NULL)
+ goto done;
+ result = format_float_internal(tmp, &format, writer);
+ break;
+
+ default:
+ /* unknown */
+ unknown_presentation_type(format.type, Py_TYPE(obj)->tp_name);
+ goto done;
+ }
+
+done:
+ Py_XDECREF(tmp);
+ return result;
+}
+
+int
+_PyFloat_FormatAdvancedWriter(_PyUnicodeWriter *writer,
+ PyObject *obj,
+ PyObject *format_spec,
+ Py_ssize_t start, Py_ssize_t end)
+{
+ InternalFormatSpec format;
+
+ /* check for the special case of zero length format spec, make
+ it equivalent to str(obj) */
+ if (start == end)
+ return format_obj(obj, writer);
+
+ /* parse the format_spec */
+ if (!parse_internal_render_format_spec(obj, format_spec, start, end,
+ &format, '\0', '>'))
+ return -1;
+
+ /* type conversion? */
+ switch (format.type) {
+ case '\0': /* No format code: like 'g', but with at least one decimal. */
+ case 'e':
+ case 'E':
+ case 'f':
+ case 'F':
+ case 'g':
+ case 'G':
+ case 'n':
+ case '%':
+ /* no conversion, already a float. do the formatting */
+ return format_float_internal(obj, &format, writer);
+
+ default:
+ /* unknown */
+ unknown_presentation_type(format.type, Py_TYPE(obj)->tp_name);
+ return -1;
+ }
+}
+
+int
+_PyComplex_FormatAdvancedWriter(_PyUnicodeWriter *writer,
+ PyObject *obj,
+ PyObject *format_spec,
+ Py_ssize_t start, Py_ssize_t end)
+{
+ InternalFormatSpec format;
+
+ /* check for the special case of zero length format spec, make
+ it equivalent to str(obj) */
+ if (start == end)
+ return format_obj(obj, writer);
+
+ /* parse the format_spec */
+ if (!parse_internal_render_format_spec(obj, format_spec, start, end,
+ &format, '\0', '>'))
+ return -1;
+
+ /* type conversion? */
+ switch (format.type) {
+ case '\0': /* No format code: like 'g', but with at least one decimal. */
+ case 'e':
+ case 'E':
+ case 'f':
+ case 'F':
+ case 'g':
+ case 'G':
+ case 'n':
+ /* no conversion, already a complex. do the formatting */
+ return format_complex_internal(obj, &format, writer);
+
+ default:
+ /* unknown */
+ unknown_presentation_type(format.type, Py_TYPE(obj)->tp_name);
+ return -1;
+ }
+}
diff --git a/contrib/tools/python3/Python/frame.c b/contrib/tools/python3/Python/frame.c
new file mode 100644
index 00000000000..b84fd9b6a93
--- /dev/null
+++ b/contrib/tools/python3/Python/frame.c
@@ -0,0 +1,168 @@
+
+#define _PY_INTERPRETER
+
+#include "Python.h"
+#include "frameobject.h"
+#include "pycore_code.h" // stats
+#include "pycore_frame.h"
+#include "pycore_object.h" // _PyObject_GC_UNTRACK()
+#include "opcode.h"
+
+int
+_PyFrame_Traverse(_PyInterpreterFrame *frame, visitproc visit, void *arg)
+{
+ Py_VISIT(frame->frame_obj);
+ Py_VISIT(frame->f_locals);
+ Py_VISIT(frame->f_funcobj);
+ Py_VISIT(frame->f_code);
+ /* locals */
+ PyObject **locals = _PyFrame_GetLocalsArray(frame);
+ int i = 0;
+ /* locals and stack */
+ for (; i <frame->stacktop; i++) {
+ Py_VISIT(locals[i]);
+ }
+ return 0;
+}
+
+PyFrameObject *
+_PyFrame_MakeAndSetFrameObject(_PyInterpreterFrame *frame)
+{
+ assert(frame->frame_obj == NULL);
+ PyObject *exc = PyErr_GetRaisedException();
+
+ PyFrameObject *f = _PyFrame_New_NoTrack(frame->f_code);
+ if (f == NULL) {
+ Py_XDECREF(exc);
+ return NULL;
+ }
+ PyErr_SetRaisedException(exc);
+ if (frame->frame_obj) {
+ // GH-97002: How did we get into this horrible situation? Most likely,
+ // allocating f triggered a GC collection, which ran some code that
+ // *also* created the same frame... while we were in the middle of
+ // creating it! See test_sneaky_frame_object in test_frame.py for a
+ // concrete example.
+ //
+ // Regardless, just throw f away and use that frame instead, since it's
+ // already been exposed to user code. It's actually a bit tricky to do
+ // this, since we aren't backed by a real _PyInterpreterFrame anymore.
+ // Just pretend that we have an owned, cleared frame so frame_dealloc
+ // doesn't make the situation worse:
+ f->f_frame = (_PyInterpreterFrame *)f->_f_frame_data;
+ f->f_frame->owner = FRAME_CLEARED;
+ f->f_frame->frame_obj = f;
+ Py_DECREF(f);
+ return frame->frame_obj;
+ }
+ assert(frame->owner != FRAME_OWNED_BY_FRAME_OBJECT);
+ assert(frame->owner != FRAME_CLEARED);
+ f->f_frame = frame;
+ frame->frame_obj = f;
+ return f;
+}
+
+void
+_PyFrame_Copy(_PyInterpreterFrame *src, _PyInterpreterFrame *dest)
+{
+ assert(src->stacktop >= src->f_code->co_nlocalsplus);
+ Py_ssize_t size = ((char*)&src->localsplus[src->stacktop]) - (char *)src;
+ memcpy(dest, src, size);
+ // Don't leave a dangling pointer to the old frame when creating generators
+ // and coroutines:
+ dest->previous = NULL;
+}
+
+
+static void
+take_ownership(PyFrameObject *f, _PyInterpreterFrame *frame)
+{
+ assert(frame->owner != FRAME_OWNED_BY_CSTACK);
+ assert(frame->owner != FRAME_OWNED_BY_FRAME_OBJECT);
+ assert(frame->owner != FRAME_CLEARED);
+ Py_ssize_t size = ((char*)&frame->localsplus[frame->stacktop]) - (char *)frame;
+ Py_INCREF(frame->f_code);
+ memcpy((_PyInterpreterFrame *)f->_f_frame_data, frame, size);
+ frame = (_PyInterpreterFrame *)f->_f_frame_data;
+ f->f_frame = frame;
+ frame->owner = FRAME_OWNED_BY_FRAME_OBJECT;
+ if (_PyFrame_IsIncomplete(frame)) {
+ // This may be a newly-created generator or coroutine frame. Since it's
+ // dead anyways, just pretend that the first RESUME ran:
+ PyCodeObject *code = frame->f_code;
+ frame->prev_instr = _PyCode_CODE(code) + code->_co_firsttraceable;
+ }
+ assert(!_PyFrame_IsIncomplete(frame));
+ assert(f->f_back == NULL);
+ _PyInterpreterFrame *prev = _PyFrame_GetFirstComplete(frame->previous);
+ frame->previous = NULL;
+ if (prev) {
+ assert(prev->owner != FRAME_OWNED_BY_CSTACK);
+ /* Link PyFrameObjects.f_back and remove link through _PyInterpreterFrame.previous */
+ PyFrameObject *back = _PyFrame_GetFrameObject(prev);
+ if (back == NULL) {
+ /* Memory error here. */
+ assert(PyErr_ExceptionMatches(PyExc_MemoryError));
+ /* Nothing we can do about it */
+ PyErr_Clear();
+ }
+ else {
+ f->f_back = (PyFrameObject *)Py_NewRef(back);
+ }
+ }
+ if (!_PyObject_GC_IS_TRACKED((PyObject *)f)) {
+ _PyObject_GC_TRACK((PyObject *)f);
+ }
+}
+
+void
+_PyFrame_ClearExceptCode(_PyInterpreterFrame *frame)
+{
+ /* It is the responsibility of the owning generator/coroutine
+ * to have cleared the enclosing generator, if any. */
+ assert(frame->owner != FRAME_OWNED_BY_GENERATOR ||
+ _PyFrame_GetGenerator(frame)->gi_frame_state == FRAME_CLEARED);
+ // GH-99729: Clearing this frame can expose the stack (via finalizers). It's
+ // crucial that this frame has been unlinked, and is no longer visible:
+ assert(_PyThreadState_GET()->cframe->current_frame != frame);
+ if (frame->frame_obj) {
+ PyFrameObject *f = frame->frame_obj;
+ frame->frame_obj = NULL;
+ if (Py_REFCNT(f) > 1) {
+ take_ownership(f, frame);
+ Py_DECREF(f);
+ return;
+ }
+ Py_DECREF(f);
+ }
+ assert(frame->stacktop >= 0);
+ for (int i = 0; i < frame->stacktop; i++) {
+ Py_XDECREF(frame->localsplus[i]);
+ }
+ Py_XDECREF(frame->frame_obj);
+ Py_XDECREF(frame->f_locals);
+ Py_DECREF(frame->f_funcobj);
+}
+
+/* Unstable API functions */
+
+PyObject *
+PyUnstable_InterpreterFrame_GetCode(struct _PyInterpreterFrame *frame)
+{
+ PyObject *code = (PyObject *)frame->f_code;
+ Py_INCREF(code);
+ return code;
+}
+
+int
+PyUnstable_InterpreterFrame_GetLasti(struct _PyInterpreterFrame *frame)
+{
+ return _PyInterpreterFrame_LASTI(frame) * sizeof(_Py_CODEUNIT);
+}
+
+int
+PyUnstable_InterpreterFrame_GetLine(_PyInterpreterFrame *frame)
+{
+ int addr = _PyInterpreterFrame_LASTI(frame) * sizeof(_Py_CODEUNIT);
+ return PyCode_Addr2Line(frame->f_code, addr);
+}
diff --git a/contrib/tools/python3/Python/frozen.c b/contrib/tools/python3/Python/frozen.c
new file mode 100644
index 00000000000..f8e0b8b065a
--- /dev/null
+++ b/contrib/tools/python3/Python/frozen.c
@@ -0,0 +1,162 @@
+
+/* Frozen modules initializer
+ *
+ * Frozen modules are written to header files by Programs/_freeze_module.
+ * These files are typically put in Python/frozen_modules/. Each holds
+ * an array of bytes named "_Py_M__<module>", which is used below.
+ *
+ * These files must be regenerated any time the corresponding .pyc
+ * file would change (including with changes to the compiler, bytecode
+ * format, marshal format). This can be done with "make regen-frozen".
+ * That make target just runs Tools/build/freeze_modules.py.
+ *
+ * The freeze_modules.py script also determines which modules get
+ * frozen. Update the list at the top of the script to add, remove,
+ * or modify the target modules. Then run the script
+ * (or run "make regen-frozen").
+ *
+ * The script does the following:
+ *
+ * 1. run Programs/_freeze_module on the target modules
+ * 2. update the includes and _PyImport_FrozenModules[] in this file
+ * 3. update the FROZEN_FILES variable in Makefile.pre.in
+ * 4. update the per-module targets in Makefile.pre.in
+ * 5. update the lists of modules in PCbuild/_freeze_module.vcxproj and
+ * PCbuild/_freeze_module.vcxproj.filters
+ *
+ * (Note that most of the data in this file is auto-generated by the script.)
+ *
+ * Those steps can also be done manually, though this is not recommended.
+ * Expect such manual changes to be removed the next time
+ * freeze_modules.py runs.
+ * */
+
+/* In order to test the support for frozen modules, by default we
+ define some simple frozen modules: __hello__, __phello__ (a package),
+ and __phello__.spam. Loading any will print some famous words... */
+
+#include "Python.h"
+#include "pycore_import.h"
+
+#include <stdbool.h>
+
+/* Includes for frozen modules: */
+#include "frozen_modules/importlib._bootstrap.h"
+#include "frozen_modules/importlib._bootstrap_external.h"
+#include "frozen_modules/zipimport.h"
+#include "frozen_modules/abc.h"
+#include "frozen_modules/codecs.h"
+#include "frozen_modules/io.h"
+#include "frozen_modules/_collections_abc.h"
+#include "frozen_modules/_sitebuiltins.h"
+#include "frozen_modules/genericpath.h"
+#include "frozen_modules/ntpath.h"
+#include "frozen_modules/posixpath.h"
+#include "frozen_modules/os.h"
+#include "frozen_modules/site.h"
+#include "frozen_modules/stat.h"
+#include "frozen_modules/importlib.util.h"
+#include "frozen_modules/importlib.machinery.h"
+#include "frozen_modules/runpy.h"
+#include "frozen_modules/__hello__.h"
+#include "frozen_modules/__phello__.h"
+#include "frozen_modules/__phello__.ham.h"
+#include "frozen_modules/__phello__.ham.eggs.h"
+#include "frozen_modules/__phello__.spam.h"
+#include "frozen_modules/frozen_only.h"
+/* End includes */
+
+#define GET_CODE(name) _Py_get_##name##_toplevel
+
+/* Start extern declarations */
+extern PyObject *_Py_get_importlib__bootstrap_toplevel(void);
+extern PyObject *_Py_get_importlib__bootstrap_external_toplevel(void);
+extern PyObject *_Py_get_zipimport_toplevel(void);
+extern PyObject *_Py_get_abc_toplevel(void);
+extern PyObject *_Py_get_codecs_toplevel(void);
+extern PyObject *_Py_get_io_toplevel(void);
+extern PyObject *_Py_get__collections_abc_toplevel(void);
+extern PyObject *_Py_get__sitebuiltins_toplevel(void);
+extern PyObject *_Py_get_genericpath_toplevel(void);
+extern PyObject *_Py_get_ntpath_toplevel(void);
+extern PyObject *_Py_get_posixpath_toplevel(void);
+extern PyObject *_Py_get_os_toplevel(void);
+extern PyObject *_Py_get_site_toplevel(void);
+extern PyObject *_Py_get_stat_toplevel(void);
+extern PyObject *_Py_get_importlib_util_toplevel(void);
+extern PyObject *_Py_get_importlib_machinery_toplevel(void);
+extern PyObject *_Py_get_runpy_toplevel(void);
+extern PyObject *_Py_get___hello___toplevel(void);
+extern PyObject *_Py_get___phello___toplevel(void);
+extern PyObject *_Py_get___phello___ham_toplevel(void);
+extern PyObject *_Py_get___phello___ham_eggs_toplevel(void);
+extern PyObject *_Py_get___phello___spam_toplevel(void);
+extern PyObject *_Py_get_frozen_only_toplevel(void);
+/* End extern declarations */
+
+static const struct _frozen bootstrap_modules[] = {
+ {"_frozen_importlib", _Py_M__importlib__bootstrap, (int)sizeof(_Py_M__importlib__bootstrap), false, GET_CODE(importlib__bootstrap)},
+ {"_frozen_importlib_external", _Py_M__importlib__bootstrap_external, (int)sizeof(_Py_M__importlib__bootstrap_external), false, GET_CODE(importlib__bootstrap_external)},
+ {"zipimport", _Py_M__zipimport, (int)sizeof(_Py_M__zipimport), false, GET_CODE(zipimport)},
+ {0, 0, 0} /* bootstrap sentinel */
+};
+static const struct _frozen stdlib_modules[] = {
+ /* stdlib - startup, without site (python -S) */
+ {"abc", _Py_M__abc, (int)sizeof(_Py_M__abc), false, GET_CODE(abc)},
+ {"codecs", _Py_M__codecs, (int)sizeof(_Py_M__codecs), false, GET_CODE(codecs)},
+ {"io", _Py_M__io, (int)sizeof(_Py_M__io), false, GET_CODE(io)},
+
+ /* stdlib - startup, with site */
+ {"_collections_abc", _Py_M___collections_abc, (int)sizeof(_Py_M___collections_abc), false, GET_CODE(_collections_abc)},
+ {"_sitebuiltins", _Py_M___sitebuiltins, (int)sizeof(_Py_M___sitebuiltins), false, GET_CODE(_sitebuiltins)},
+ {"genericpath", _Py_M__genericpath, (int)sizeof(_Py_M__genericpath), false, GET_CODE(genericpath)},
+ {"ntpath", _Py_M__ntpath, (int)sizeof(_Py_M__ntpath), false, GET_CODE(ntpath)},
+ {"posixpath", _Py_M__posixpath, (int)sizeof(_Py_M__posixpath), false, GET_CODE(posixpath)},
+ {"os.path", _Py_M__posixpath, (int)sizeof(_Py_M__posixpath), false, GET_CODE(posixpath)},
+ {"os", _Py_M__os, (int)sizeof(_Py_M__os), false, GET_CODE(os)},
+ {"site", _Py_M__site, (int)sizeof(_Py_M__site), false, GET_CODE(site)},
+ {"stat", _Py_M__stat, (int)sizeof(_Py_M__stat), false, GET_CODE(stat)},
+
+ /* runpy - run module with -m */
+ {"importlib.util", _Py_M__importlib_util, (int)sizeof(_Py_M__importlib_util), false, GET_CODE(importlib_util)},
+ {"importlib.machinery", _Py_M__importlib_machinery, (int)sizeof(_Py_M__importlib_machinery), false, GET_CODE(importlib_machinery)},
+ {"runpy", _Py_M__runpy, (int)sizeof(_Py_M__runpy), false, GET_CODE(runpy)},
+ {0, 0, 0} /* stdlib sentinel */
+};
+static const struct _frozen test_modules[] = {
+ {"__hello__", _Py_M____hello__, (int)sizeof(_Py_M____hello__), false, GET_CODE(__hello__)},
+ {"__hello_alias__", _Py_M____hello__, (int)sizeof(_Py_M____hello__), false, GET_CODE(__hello__)},
+ {"__phello_alias__", _Py_M____hello__, (int)sizeof(_Py_M____hello__), true, GET_CODE(__hello__)},
+ {"__phello_alias__.spam", _Py_M____hello__, (int)sizeof(_Py_M____hello__), false, GET_CODE(__hello__)},
+ {"__phello__", _Py_M____phello__, (int)sizeof(_Py_M____phello__), true, GET_CODE(__phello__)},
+ {"__phello__.__init__", _Py_M____phello__, (int)sizeof(_Py_M____phello__), false, GET_CODE(__phello__)},
+ {"__phello__.ham", _Py_M____phello___ham, (int)sizeof(_Py_M____phello___ham), true, GET_CODE(__phello___ham)},
+ {"__phello__.ham.__init__", _Py_M____phello___ham, (int)sizeof(_Py_M____phello___ham), false, GET_CODE(__phello___ham)},
+ {"__phello__.ham.eggs", _Py_M____phello___ham_eggs, (int)sizeof(_Py_M____phello___ham_eggs), false, GET_CODE(__phello___ham_eggs)},
+ {"__phello__.spam", _Py_M____phello___spam, (int)sizeof(_Py_M____phello___spam), false, GET_CODE(__phello___spam)},
+ {"__hello_only__", _Py_M__frozen_only, (int)sizeof(_Py_M__frozen_only), false, GET_CODE(frozen_only)},
+ {0, 0, 0} /* test sentinel */
+};
+const struct _frozen *_PyImport_FrozenBootstrap = bootstrap_modules;
+const struct _frozen *_PyImport_FrozenStdlib = stdlib_modules;
+const struct _frozen *_PyImport_FrozenTest = test_modules;
+
+static const struct _module_alias aliases[] = {
+ {"_frozen_importlib", "importlib._bootstrap"},
+ {"_frozen_importlib_external", "importlib._bootstrap_external"},
+ {"os.path", "posixpath"},
+ {"__hello_alias__", "__hello__"},
+ {"__phello_alias__", "__hello__"},
+ {"__phello_alias__.spam", "__hello__"},
+ {"__phello__.__init__", "<__phello__"},
+ {"__phello__.ham.__init__", "<__phello__.ham"},
+ {"__hello_only__", NULL},
+ {0, 0} /* aliases sentinel */
+};
+const struct _module_alias *_PyImport_FrozenAliases = aliases;
+
+
+/* Embedding apps may change this pointer to point to their favorite
+ collection of frozen modules: */
+
+const struct _frozen *PyImport_FrozenModules = NULL;
diff --git a/contrib/tools/python3/Python/frozen_modules/README.txt b/contrib/tools/python3/Python/frozen_modules/README.txt
new file mode 100644
index 00000000000..795bb0efad3
--- /dev/null
+++ b/contrib/tools/python3/Python/frozen_modules/README.txt
@@ -0,0 +1,7 @@
+This directory contains the generated .h files for all the frozen
+modules. Python/frozen.c depends on these files.
+
+Note that, other than the required frozen modules, none of these files
+are committed into the repo.
+
+See Tools/build/freeze_modules.py for more info.
diff --git a/contrib/tools/python3/Python/frozen_modules/__hello__.h b/contrib/tools/python3/Python/frozen_modules/__hello__.h
new file mode 100644
index 00000000000..3325f05298a
--- /dev/null
+++ b/contrib/tools/python3/Python/frozen_modules/__hello__.h
@@ -0,0 +1,56 @@
+/* Auto-generated by Programs/_freeze_module.py */
+const unsigned char _Py_M____hello__[] = {
+ 227,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,
+ 0,0,0,0,0,243,100,0,0,0,151,0,100,0,90,0,
+ 2,0,71,0,100,1,132,0,100,2,171,2,0,0,0,0,
+ 0,0,90,1,2,0,71,0,100,3,132,0,100,4,171,2,
+ 0,0,0,0,0,0,90,2,2,0,71,0,100,5,132,0,
+ 100,6,171,2,0,0,0,0,0,0,90,3,100,7,132,0,
+ 90,4,101,5,100,8,107,40,0,0,114,8,2,0,101,4,
+ 171,0,0,0,0,0,0,0,1,0,121,9,121,9,41,10,
+ 84,99,0,0,0,0,0,0,0,0,0,0,0,0,1,0,
+ 0,0,0,0,0,0,243,16,0,0,0,151,0,101,0,90,
+ 1,100,0,90,2,100,1,90,3,121,2,41,3,218,16,84,
+ 101,115,116,70,114,111,122,101,110,85,116,102,56,95,49,245,
+ 2,0,0,0,194,182,78,169,4,218,8,95,95,110,97,109,
+ 101,95,95,218,10,95,95,109,111,100,117,108,101,95,95,218,
+ 12,95,95,113,117,97,108,110,97,109,101,95,95,218,7,95,
+ 95,100,111,99,95,95,169,0,243,0,0,0,0,250,18,60,
+ 102,114,111,122,101,110,32,95,95,104,101,108,108,111,95,95,
+ 62,114,3,0,0,0,114,3,0,0,0,3,0,0,0,243,
+ 5,0,0,0,132,0,218,4,16,114,11,0,0,0,114,3,
+ 0,0,0,99,0,0,0,0,0,0,0,0,0,0,0,0,
+ 1,0,0,0,0,0,0,0,243,16,0,0,0,151,0,101,
+ 0,90,1,100,0,90,2,100,1,90,3,121,2,41,3,218,
+ 16,84,101,115,116,70,114,111,122,101,110,85,116,102,56,95,
+ 50,117,2,0,0,0,207,128,78,114,5,0,0,0,114,10,
+ 0,0,0,114,11,0,0,0,114,12,0,0,0,114,15,0,
+ 0,0,114,15,0,0,0,6,0,0,0,114,13,0,0,0,
+ 114,11,0,0,0,114,15,0,0,0,99,0,0,0,0,0,
+ 0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,243,
+ 16,0,0,0,151,0,101,0,90,1,100,0,90,2,100,1,
+ 90,3,121,2,41,3,218,16,84,101,115,116,70,114,111,122,
+ 101,110,85,116,102,56,95,52,117,4,0,0,0,240,159,152,
+ 128,78,114,5,0,0,0,114,10,0,0,0,114,11,0,0,
+ 0,114,12,0,0,0,114,17,0,0,0,114,17,0,0,0,
+ 9,0,0,0,115,5,0,0,0,132,0,218,4,20,114,11,
+ 0,0,0,114,17,0,0,0,99,0,0,0,0,0,0,0,
+ 0,0,0,0,0,3,0,0,0,3,0,0,0,243,26,0,
+ 0,0,151,0,116,1,0,0,0,0,0,0,0,0,100,1,
+ 171,1,0,0,0,0,0,0,1,0,121,0,41,2,78,122,
+ 12,72,101,108,108,111,32,119,111,114,108,100,33,41,1,218,
+ 5,112,114,105,110,116,114,10,0,0,0,114,11,0,0,0,
+ 114,12,0,0,0,218,4,109,97,105,110,114,20,0,0,0,
+ 12,0,0,0,115,10,0,0,0,128,0,220,4,9,136,46,
+ 213,4,25,114,11,0,0,0,218,8,95,95,109,97,105,110,
+ 95,95,78,41,6,218,11,105,110,105,116,105,97,108,105,122,
+ 101,100,114,3,0,0,0,114,15,0,0,0,114,17,0,0,
+ 0,114,20,0,0,0,114,6,0,0,0,114,10,0,0,0,
+ 114,11,0,0,0,114,12,0,0,0,250,8,60,109,111,100,
+ 117,108,101,62,114,23,0,0,0,1,0,0,0,115,65,0,
+ 0,0,240,3,1,1,1,216,14,18,128,11,247,4,1,1,
+ 17,241,0,1,1,17,247,6,1,1,17,241,0,1,1,17,
+ 247,6,1,1,21,241,0,1,1,21,242,6,1,1,26,240,
+ 6,0,4,12,136,122,210,3,25,217,4,8,133,70,240,3,
+ 0,4,26,114,11,0,0,0,
+};
diff --git a/contrib/tools/python3/Python/frozen_modules/__phello__.h b/contrib/tools/python3/Python/frozen_modules/__phello__.h
new file mode 100644
index 00000000000..70394ad9b82
--- /dev/null
+++ b/contrib/tools/python3/Python/frozen_modules/__phello__.h
@@ -0,0 +1,24 @@
+/* Auto-generated by Programs/_freeze_module.py */
+const unsigned char _Py_M____phello__[] = {
+ 227,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,
+ 0,0,0,0,0,243,40,0,0,0,151,0,100,0,90,0,
+ 100,1,132,0,90,1,101,2,100,2,107,40,0,0,114,8,
+ 2,0,101,1,171,0,0,0,0,0,0,0,1,0,121,3,
+ 121,3,41,4,84,99,0,0,0,0,0,0,0,0,0,0,
+ 0,0,3,0,0,0,3,0,0,0,243,26,0,0,0,151,
+ 0,116,1,0,0,0,0,0,0,0,0,100,1,171,1,0,
+ 0,0,0,0,0,1,0,121,0,41,2,78,122,12,72,101,
+ 108,108,111,32,119,111,114,108,100,33,41,1,218,5,112,114,
+ 105,110,116,169,0,243,0,0,0,0,250,19,60,102,114,111,
+ 122,101,110,32,95,95,112,104,101,108,108,111,95,95,62,218,
+ 4,109,97,105,110,114,7,0,0,0,3,0,0,0,115,10,
+ 0,0,0,128,0,220,4,9,136,46,213,4,25,114,5,0,
+ 0,0,218,8,95,95,109,97,105,110,95,95,78,41,3,218,
+ 11,105,110,105,116,105,97,108,105,122,101,100,114,7,0,0,
+ 0,218,8,95,95,110,97,109,101,95,95,114,4,0,0,0,
+ 114,5,0,0,0,114,6,0,0,0,250,8,60,109,111,100,
+ 117,108,101,62,114,11,0,0,0,1,0,0,0,115,35,0,
+ 0,0,240,3,1,1,1,216,14,18,128,11,242,4,1,1,
+ 26,240,6,0,4,12,136,122,210,3,25,217,4,8,133,70,
+ 240,3,0,4,26,114,5,0,0,0,
+};
diff --git a/contrib/tools/python3/Python/frozen_modules/__phello__.ham.eggs.h b/contrib/tools/python3/Python/frozen_modules/__phello__.ham.eggs.h
new file mode 100644
index 00000000000..26151b1ccfe
--- /dev/null
+++ b/contrib/tools/python3/Python/frozen_modules/__phello__.ham.eggs.h
@@ -0,0 +1,10 @@
+/* Auto-generated by Programs/_freeze_module.py */
+const unsigned char _Py_M____phello___ham_eggs[] = {
+ 227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,243,4,0,0,0,151,0,121,0,41,1,
+ 78,169,0,114,2,0,0,0,243,0,0,0,0,250,28,60,
+ 102,114,111,122,101,110,32,95,95,112,104,101,108,108,111,95,
+ 95,46,104,97,109,46,101,103,103,115,62,250,8,60,109,111,
+ 100,117,108,101,62,114,5,0,0,0,1,0,0,0,115,5,
+ 0,0,0,241,3,1,1,1,114,3,0,0,0,
+};
diff --git a/contrib/tools/python3/Python/frozen_modules/__phello__.ham.h b/contrib/tools/python3/Python/frozen_modules/__phello__.ham.h
new file mode 100644
index 00000000000..04fbf313adc
--- /dev/null
+++ b/contrib/tools/python3/Python/frozen_modules/__phello__.ham.h
@@ -0,0 +1,10 @@
+/* Auto-generated by Programs/_freeze_module.py */
+const unsigned char _Py_M____phello___ham[] = {
+ 227,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,243,4,0,0,0,151,0,121,0,41,1,
+ 78,169,0,114,2,0,0,0,243,0,0,0,0,250,23,60,
+ 102,114,111,122,101,110,32,95,95,112,104,101,108,108,111,95,
+ 95,46,104,97,109,62,250,8,60,109,111,100,117,108,101,62,
+ 114,5,0,0,0,1,0,0,0,115,5,0,0,0,241,3,
+ 1,1,1,114,3,0,0,0,
+};
diff --git a/contrib/tools/python3/Python/frozen_modules/__phello__.spam.h b/contrib/tools/python3/Python/frozen_modules/__phello__.spam.h
new file mode 100644
index 00000000000..a9903d8224c
--- /dev/null
+++ b/contrib/tools/python3/Python/frozen_modules/__phello__.spam.h
@@ -0,0 +1,24 @@
+/* Auto-generated by Programs/_freeze_module.py */
+const unsigned char _Py_M____phello___spam[] = {
+ 227,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,
+ 0,0,0,0,0,243,40,0,0,0,151,0,100,0,90,0,
+ 100,1,132,0,90,1,101,2,100,2,107,40,0,0,114,8,
+ 2,0,101,1,171,0,0,0,0,0,0,0,1,0,121,3,
+ 121,3,41,4,84,99,0,0,0,0,0,0,0,0,0,0,
+ 0,0,3,0,0,0,3,0,0,0,243,26,0,0,0,151,
+ 0,116,1,0,0,0,0,0,0,0,0,100,1,171,1,0,
+ 0,0,0,0,0,1,0,121,0,41,2,78,122,12,72,101,
+ 108,108,111,32,119,111,114,108,100,33,41,1,218,5,112,114,
+ 105,110,116,169,0,243,0,0,0,0,250,24,60,102,114,111,
+ 122,101,110,32,95,95,112,104,101,108,108,111,95,95,46,115,
+ 112,97,109,62,218,4,109,97,105,110,114,7,0,0,0,3,
+ 0,0,0,115,10,0,0,0,128,0,220,4,9,136,46,213,
+ 4,25,114,5,0,0,0,218,8,95,95,109,97,105,110,95,
+ 95,78,41,3,218,11,105,110,105,116,105,97,108,105,122,101,
+ 100,114,7,0,0,0,218,8,95,95,110,97,109,101,95,95,
+ 114,4,0,0,0,114,5,0,0,0,114,6,0,0,0,250,
+ 8,60,109,111,100,117,108,101,62,114,11,0,0,0,1,0,
+ 0,0,115,35,0,0,0,240,3,1,1,1,216,14,18,128,
+ 11,242,4,1,1,26,240,6,0,4,12,136,122,210,3,25,
+ 217,4,8,133,70,240,3,0,4,26,114,5,0,0,0,
+};
diff --git a/contrib/tools/python3/Python/frozen_modules/_collections_abc.h b/contrib/tools/python3/Python/frozen_modules/_collections_abc.h
new file mode 100644
index 00000000000..07817070698
--- /dev/null
+++ b/contrib/tools/python3/Python/frozen_modules/_collections_abc.h
@@ -0,0 +1,2871 @@
+/* Auto-generated by Programs/_freeze_module.py */
+const unsigned char _Py_M___collections_abc[] = {
+ 227,0,0,0,0,0,0,0,0,0,0,0,0,8,0,0,
+ 0,0,0,0,0,243,90,10,0,0,151,0,100,0,90,0,
+ 100,1,100,2,108,1,109,2,90,2,109,3,90,3,1,0,
+ 100,1,100,3,108,4,90,4,2,0,101,5,101,6,101,7,
+ 25,0,0,0,171,1,0,0,0,0,0,0,90,8,2,0,
+ 101,5,100,4,171,1,0,0,0,0,0,0,90,9,100,5,
+ 132,0,90,10,2,0,101,5,101,10,171,1,0,0,0,0,
+ 0,0,90,11,91,10,103,0,100,6,162,1,90,12,100,7,
+ 90,13,2,0,101,5,2,0,101,14,100,8,171,1,0,0,
+ 0,0,0,0,171,1,0,0,0,0,0,0,90,15,2,0,
+ 101,5,2,0,101,14,2,0,101,16,171,0,0,0,0,0,
+ 0,0,171,1,0,0,0,0,0,0,171,1,0,0,0,0,
+ 0,0,90,17,2,0,101,5,2,0,101,14,105,0,106,37,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,171,0,0,0,0,0,0,0,171,1,0,0,0,0,
+ 0,0,171,1,0,0,0,0,0,0,90,19,2,0,101,5,
+ 2,0,101,14,105,0,106,41,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,171,0,0,0,0,0,
+ 0,0,171,1,0,0,0,0,0,0,171,1,0,0,0,0,
+ 0,0,90,21,2,0,101,5,2,0,101,14,105,0,106,45,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,171,0,0,0,0,0,0,0,171,1,0,0,0,0,
+ 0,0,171,1,0,0,0,0,0,0,90,23,2,0,101,5,
+ 2,0,101,14,103,0,171,1,0,0,0,0,0,0,171,1,
+ 0,0,0,0,0,0,90,24,2,0,101,5,2,0,101,14,
+ 2,0,101,25,103,0,171,1,0,0,0,0,0,0,171,1,
+ 0,0,0,0,0,0,171,1,0,0,0,0,0,0,90,26,
+ 2,0,101,5,2,0,101,14,2,0,101,27,100,1,171,1,
+ 0,0,0,0,0,0,171,1,0,0,0,0,0,0,171,1,
+ 0,0,0,0,0,0,90,28,2,0,101,5,2,0,101,14,
+ 2,0,101,27,100,9,100,10,122,3,0,0,171,1,0,0,
+ 0,0,0,0,171,1,0,0,0,0,0,0,171,1,0,0,
+ 0,0,0,0,90,29,2,0,101,5,2,0,101,14,2,0,
+ 101,30,171,0,0,0,0,0,0,0,171,1,0,0,0,0,
+ 0,0,171,1,0,0,0,0,0,0,90,31,2,0,101,5,
+ 2,0,101,14,100,11,171,1,0,0,0,0,0,0,171,1,
+ 0,0,0,0,0,0,90,32,2,0,101,5,2,0,101,14,
+ 100,12,171,1,0,0,0,0,0,0,171,1,0,0,0,0,
+ 0,0,90,33,2,0,101,5,2,0,101,14,2,0,101,34,
+ 171,0,0,0,0,0,0,0,171,1,0,0,0,0,0,0,
+ 171,1,0,0,0,0,0,0,90,35,2,0,101,5,105,0,
+ 106,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,171,0,0,0,0,0,0,0,171,1,0,0,
+ 0,0,0,0,90,36,2,0,101,5,105,0,106,41,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 171,0,0,0,0,0,0,0,171,1,0,0,0,0,0,0,
+ 90,37,2,0,101,5,105,0,106,45,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,171,0,0,0,
+ 0,0,0,0,171,1,0,0,0,0,0,0,90,38,2,0,
+ 101,5,101,5,106,78,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,171,1,0,0,0,0,0,0,
+ 90,40,2,0,101,5,2,0,100,13,132,0,171,0,0,0,
+ 0,0,0,0,171,1,0,0,0,0,0,0,90,41,100,14,
+ 132,0,90,42,2,0,101,42,171,0,0,0,0,0,0,0,
+ 90,42,2,0,101,5,101,42,171,1,0,0,0,0,0,0,
+ 90,43,101,42,106,89,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,171,0,0,0,0,0,0,0,
+ 1,0,91,42,100,15,132,0,90,45,2,0,101,45,171,0,
+ 0,0,0,0,0,0,90,45,2,0,101,5,101,45,171,1,
+ 0,0,0,0,0,0,90,46,91,45,100,16,132,0,90,47,
+ 2,0,71,0,100,17,132,0,100,18,101,2,172,19,171,3,
+ 0,0,0,0,0,0,90,48,2,0,71,0,100,20,132,0,
+ 100,21,101,2,172,19,171,3,0,0,0,0,0,0,90,49,
+ 2,0,71,0,100,22,132,0,100,23,101,49,171,3,0,0,
+ 0,0,0,0,90,50,101,50,106,103,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,101,43,171,1,
+ 0,0,0,0,0,0,1,0,2,0,71,0,100,24,132,0,
+ 100,25,101,2,172,19,171,3,0,0,0,0,0,0,90,52,
+ 2,0,71,0,100,26,132,0,100,27,101,52,171,3,0,0,
+ 0,0,0,0,90,53,2,0,71,0,100,28,132,0,100,29,
+ 101,53,171,3,0,0,0,0,0,0,90,54,101,54,106,103,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,101,46,171,1,0,0,0,0,0,0,1,0,2,0,
+ 71,0,100,30,132,0,100,31,101,2,172,19,171,3,0,0,
+ 0,0,0,0,90,55,2,0,71,0,100,32,132,0,100,33,
+ 101,55,171,3,0,0,0,0,0,0,90,56,101,56,106,103,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,101,15,171,1,0,0,0,0,0,0,1,0,101,56,
+ 106,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,101,17,171,1,0,0,0,0,0,0,1,0,
+ 101,56,106,103,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,101,19,171,1,0,0,0,0,0,0,
+ 1,0,101,56,106,103,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,101,21,171,1,0,0,0,0,
+ 0,0,1,0,101,56,106,103,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,101,23,171,1,0,0,
+ 0,0,0,0,1,0,101,56,106,103,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,101,24,171,1,
+ 0,0,0,0,0,0,1,0,101,56,106,103,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,26,
+ 171,1,0,0,0,0,0,0,1,0,101,56,106,103,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 101,28,171,1,0,0,0,0,0,0,1,0,101,56,106,103,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,101,29,171,1,0,0,0,0,0,0,1,0,101,56,
+ 106,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,101,31,171,1,0,0,0,0,0,0,1,0,
+ 101,56,106,103,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,101,32,171,1,0,0,0,0,0,0,
+ 1,0,101,56,106,103,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,101,33,171,1,0,0,0,0,
+ 0,0,1,0,101,56,106,103,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,101,35,171,1,0,0,
+ 0,0,0,0,1,0,2,0,71,0,100,34,132,0,100,35,
+ 101,55,171,3,0,0,0,0,0,0,90,57,2,0,71,0,
+ 100,36,132,0,100,37,101,56,171,3,0,0,0,0,0,0,
+ 90,58,101,58,106,103,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,101,41,171,1,0,0,0,0,
+ 0,0,1,0,2,0,71,0,100,38,132,0,100,39,101,2,
+ 172,19,171,3,0,0,0,0,0,0,90,59,2,0,71,0,
+ 100,40,132,0,100,41,101,2,172,19,171,3,0,0,0,0,
+ 0,0,90,60,2,0,71,0,100,42,132,0,100,43,101,59,
+ 101,55,101,60,171,5,0,0,0,0,0,0,90,61,2,0,
+ 71,0,100,44,132,0,100,45,101,2,172,19,171,3,0,0,
+ 0,0,0,0,90,62,2,0,71,0,100,46,132,0,100,47,
+ 101,8,171,3,0,0,0,0,0,0,90,63,100,48,132,0,
+ 90,64,100,49,132,0,90,65,2,0,71,0,100,50,132,0,
+ 100,51,101,2,172,19,171,3,0,0,0,0,0,0,90,66,
+ 2,0,71,0,100,52,132,0,100,53,101,61,171,3,0,0,
+ 0,0,0,0,90,67,101,67,106,103,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,101,68,171,1,
+ 0,0,0,0,0,0,1,0,2,0,71,0,100,54,132,0,
+ 100,55,101,67,171,3,0,0,0,0,0,0,90,69,101,69,
+ 106,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,101,30,171,1,0,0,0,0,0,0,1,0,
+ 2,0,71,0,100,56,132,0,100,57,101,61,171,3,0,0,
+ 0,0,0,0,90,70,101,70,106,103,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,101,40,171,1,
+ 0,0,0,0,0,0,1,0,2,0,71,0,100,58,132,0,
+ 100,59,101,59,171,3,0,0,0,0,0,0,90,71,2,0,
+ 71,0,100,60,132,0,100,61,101,71,101,67,171,4,0,0,
+ 0,0,0,0,90,72,101,72,106,103,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,101,36,171,1,
+ 0,0,0,0,0,0,1,0,2,0,71,0,100,62,132,0,
+ 100,63,101,71,101,67,171,4,0,0,0,0,0,0,90,73,
+ 101,73,106,103,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,101,38,171,1,0,0,0,0,0,0,
+ 1,0,2,0,71,0,100,64,132,0,100,65,101,71,101,61,
+ 171,4,0,0,0,0,0,0,90,74,101,74,106,103,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 101,37,171,1,0,0,0,0,0,0,1,0,2,0,71,0,
+ 100,66,132,0,100,67,101,70,171,3,0,0,0,0,0,0,
+ 90,75,101,75,106,103,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,101,76,171,1,0,0,0,0,
+ 0,0,1,0,2,0,71,0,100,68,132,0,100,69,101,57,
+ 101,61,171,4,0,0,0,0,0,0,90,77,101,77,106,103,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,101,78,171,1,0,0,0,0,0,0,1,0,101,77,
+ 106,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,101,79,171,1,0,0,0,0,0,0,1,0,
+ 101,77,106,103,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,101,27,171,1,0,0,0,0,0,0,
+ 1,0,101,77,106,103,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,101,80,171,1,0,0,0,0,
+ 0,0,1,0,2,0,71,0,100,70,132,0,100,71,101,2,
+ 171,3,0,0,0,0,0,0,90,81,2,0,71,0,100,72,
+ 132,0,100,73,101,77,101,81,172,19,171,4,0,0,0,0,
+ 0,0,90,82,101,82,106,103,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,101,83,171,1,0,0,
+ 0,0,0,0,1,0,101,82,106,103,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,101,16,171,1,
+ 0,0,0,0,0,0,1,0,2,0,71,0,100,74,132,0,
+ 100,75,101,77,171,3,0,0,0,0,0,0,90,84,101,84,
+ 106,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,101,6,171,1,0,0,0,0,0,0,1,0,
+ 101,84,106,103,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,101,16,171,1,0,0,0,0,0,0,
+ 1,0,121,3,41,76,122,106,65,98,115,116,114,97,99,116,
+ 32,66,97,115,101,32,67,108,97,115,115,101,115,32,40,65,
+ 66,67,115,41,32,102,111,114,32,99,111,108,108,101,99,116,
+ 105,111,110,115,44,32,97,99,99,111,114,100,105,110,103,32,
+ 116,111,32,80,69,80,32,51,49,49,57,46,10,10,85,110,
+ 105,116,32,116,101,115,116,115,32,97,114,101,32,105,110,32,
+ 116,101,115,116,95,99,111,108,108,101,99,116,105,111,110,115,
+ 46,10,233,0,0,0,0,41,2,218,7,65,66,67,77,101,
+ 116,97,218,14,97,98,115,116,114,97,99,116,109,101,116,104,
+ 111,100,78,46,99,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,3,0,0,0,243,4,0,0,0,151,0,
+ 121,0,169,1,78,169,0,114,7,0,0,0,243,0,0,0,
+ 0,250,25,60,102,114,111,122,101,110,32,95,99,111,108,108,
+ 101,99,116,105,111,110,115,95,97,98,99,62,218,2,95,102,
+ 114,10,0,0,0,40,0,0,0,115,2,0,0,0,129,0,
+ 114,8,0,0,0,41,26,218,9,65,119,97,105,116,97,98,
+ 108,101,218,9,67,111,114,111,117,116,105,110,101,218,13,65,
+ 115,121,110,99,73,116,101,114,97,98,108,101,218,13,65,115,
+ 121,110,99,73,116,101,114,97,116,111,114,218,14,65,115,121,
+ 110,99,71,101,110,101,114,97,116,111,114,218,8,72,97,115,
+ 104,97,98,108,101,218,8,73,116,101,114,97,98,108,101,218,
+ 8,73,116,101,114,97,116,111,114,218,9,71,101,110,101,114,
+ 97,116,111,114,218,10,82,101,118,101,114,115,105,98,108,101,
+ 218,5,83,105,122,101,100,218,9,67,111,110,116,97,105,110,
+ 101,114,218,8,67,97,108,108,97,98,108,101,218,10,67,111,
+ 108,108,101,99,116,105,111,110,218,3,83,101,116,218,10,77,
+ 117,116,97,98,108,101,83,101,116,218,7,77,97,112,112,105,
+ 110,103,218,14,77,117,116,97,98,108,101,77,97,112,112,105,
+ 110,103,218,11,77,97,112,112,105,110,103,86,105,101,119,218,
+ 8,75,101,121,115,86,105,101,119,218,9,73,116,101,109,115,
+ 86,105,101,119,218,10,86,97,108,117,101,115,86,105,101,119,
+ 218,8,83,101,113,117,101,110,99,101,218,15,77,117,116,97,
+ 98,108,101,83,101,113,117,101,110,99,101,218,10,66,121,116,
+ 101,83,116,114,105,110,103,218,6,66,117,102,102,101,114,122,
+ 15,99,111,108,108,101,99,116,105,111,110,115,46,97,98,99,
+ 114,8,0,0,0,233,1,0,0,0,105,232,3,0,0,218,
+ 0,114,7,0,0,0,99,0,0,0,0,0,0,0,0,0,
+ 0,0,0,1,0,0,0,35,0,0,0,243,14,0,0,0,
+ 75,0,1,0,151,0,100,0,150,0,151,1,83,0,114,6,
+ 0,0,0,114,7,0,0,0,114,7,0,0,0,114,8,0,
+ 0,0,114,9,0,0,0,250,8,60,108,97,109,98,100,97,
+ 62,114,40,0,0,0,88,0,0,0,115,7,0,0,0,232,
+ 0,248,128,0,155,53,114,8,0,0,0,99,0,0,0,0,
+ 0,0,0,0,0,0,0,0,2,0,0,0,131,0,0,0,
+ 243,12,0,0,0,75,0,1,0,151,0,121,0,173,3,119,
+ 1,114,6,0,0,0,114,7,0,0,0,114,7,0,0,0,
+ 114,8,0,0,0,114,9,0,0,0,218,5,95,99,111,114,
+ 111,114,42,0,0,0,90,0,0,0,115,6,0,0,0,232,
+ 0,248,129,0,249,243,4,0,0,0,130,2,4,1,99,0,
+ 0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,3,
+ 2,0,0,243,22,0,0,0,75,0,1,0,151,0,100,0,
+ 173,4,150,1,151,1,1,0,121,0,173,3,119,1,114,6,
+ 0,0,0,114,7,0,0,0,114,7,0,0,0,114,8,0,
+ 0,0,114,9,0,0,0,218,3,95,97,103,114,45,0,0,
+ 0,96,0,0,0,115,8,0,0,0,232,0,248,128,0,149,
+ 21,249,243,4,0,0,0,130,7,9,1,99,1,0,0,0,
+ 0,0,0,0,0,0,0,0,4,0,0,0,7,0,0,0,
+ 243,152,0,0,0,151,0,124,0,106,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,125,2,124,
+ 1,68,0,93,57,0,0,125,3,124,2,68,0,93,43,0,
+ 0,125,4,124,3,124,4,106,2,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,118,0,115,1,140,
+ 18,124,4,106,2,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,124,3,25,0,0,0,128,10,116,
+ 4,0,0,0,0,0,0,0,0,99,2,1,0,99,2,1,
+ 0,83,0,1,0,140,50,4,0,116,4,0,0,0,0,0,
+ 0,0,0,99,2,1,0,83,0,4,0,121,1,41,2,78,
+ 84,41,3,218,7,95,95,109,114,111,95,95,218,8,95,95,
+ 100,105,99,116,95,95,218,14,78,111,116,73,109,112,108,101,
+ 109,101,110,116,101,100,41,5,218,1,67,218,7,109,101,116,
+ 104,111,100,115,218,3,109,114,111,218,6,109,101,116,104,111,
+ 100,218,1,66,115,5,0,0,0,32,32,32,32,32,114,9,
+ 0,0,0,218,14,95,99,104,101,99,107,95,109,101,116,104,
+ 111,100,115,114,56,0,0,0,104,0,0,0,115,90,0,0,
+ 0,128,0,216,10,11,143,41,137,41,128,67,216,18,25,242,
+ 0,7,5,34,136,6,216,17,20,242,0,6,9,34,136,65,
+ 216,15,21,152,17,159,26,153,26,210,15,35,216,19,20,151,
+ 58,145,58,152,102,209,19,37,208,19,45,220,27,41,212,20,
+ 41,217,16,21,240,9,6,9,34,244,12,0,20,34,210,12,
+ 33,240,15,7,5,34,240,16,0,12,16,114,8,0,0,0,
+ 99,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,
+ 0,0,0,0,0,243,48,0,0,0,151,0,101,0,90,1,
+ 100,0,90,2,100,1,90,3,101,4,100,2,132,0,171,0,
+ 0,0,0,0,0,0,90,5,101,6,100,3,132,0,171,0,
+ 0,0,0,0,0,0,90,7,121,4,41,5,114,16,0,0,
+ 0,114,7,0,0,0,99,1,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,3,0,0,0,243,4,0,0,0,
+ 151,0,121,1,169,2,78,114,2,0,0,0,114,7,0,0,
+ 0,169,1,218,4,115,101,108,102,115,1,0,0,0,32,114,
+ 9,0,0,0,218,8,95,95,104,97,115,104,95,95,122,17,
+ 72,97,115,104,97,98,108,101,46,95,95,104,97,115,104,95,
+ 95,120,0,0,0,243,5,0,0,0,128,0,224,15,16,114,
+ 8,0,0,0,99,2,0,0,0,0,0,0,0,0,0,0,
+ 0,4,0,0,0,3,0,0,0,243,54,0,0,0,151,0,
+ 124,0,116,0,0,0,0,0,0,0,0,0,117,0,114,12,
+ 116,3,0,0,0,0,0,0,0,0,124,1,100,1,171,2,
+ 0,0,0,0,0,0,83,0,116,4,0,0,0,0,0,0,
+ 0,0,83,0,41,2,78,114,62,0,0,0,41,3,114,16,
+ 0,0,0,114,56,0,0,0,114,50,0,0,0,169,2,218,
+ 3,99,108,115,114,51,0,0,0,115,2,0,0,0,32,32,
+ 114,9,0,0,0,218,16,95,95,115,117,98,99,108,97,115,
+ 115,104,111,111,107,95,95,122,25,72,97,115,104,97,98,108,
+ 101,46,95,95,115,117,98,99,108,97,115,115,104,111,111,107,
+ 95,95,124,0,0,0,243,28,0,0,0,128,0,224,11,14,
+ 148,40,137,63,220,19,33,160,33,160,90,211,19,48,208,12,
+ 48,220,15,29,208,8,29,114,8,0,0,0,78,41,8,218,
+ 8,95,95,110,97,109,101,95,95,218,10,95,95,109,111,100,
+ 117,108,101,95,95,218,12,95,95,113,117,97,108,110,97,109,
+ 101,95,95,218,9,95,95,115,108,111,116,115,95,95,114,4,
+ 0,0,0,114,62,0,0,0,218,11,99,108,97,115,115,109,
+ 101,116,104,111,100,114,67,0,0,0,114,7,0,0,0,114,
+ 8,0,0,0,114,9,0,0,0,114,16,0,0,0,114,16,
+ 0,0,0,116,0,0,0,243,45,0,0,0,132,0,224,16,
+ 18,128,73,224,5,19,241,2,1,5,17,243,3,0,6,20,
+ 240,2,1,5,17,240,6,0,6,17,241,2,3,5,30,243,
+ 3,0,6,17,241,2,3,5,30,114,8,0,0,0,114,16,
+ 0,0,0,41,1,218,9,109,101,116,97,99,108,97,115,115,
+ 99,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,
+ 0,0,0,0,0,243,64,0,0,0,151,0,101,0,90,1,
+ 100,0,90,2,100,1,90,3,101,4,100,2,132,0,171,0,
+ 0,0,0,0,0,0,90,5,101,6,100,3,132,0,171,0,
+ 0,0,0,0,0,0,90,7,2,0,101,6,101,8,171,1,
+ 0,0,0,0,0,0,90,9,121,4,41,5,114,11,0,0,
+ 0,114,7,0,0,0,99,1,0,0,0,0,0,0,0,0,
+ 0,0,0,2,0,0,0,35,0,0,0,243,20,0,0,0,
+ 75,0,1,0,151,0,100,0,150,1,151,1,1,0,121,0,
+ 173,3,119,1,114,6,0,0,0,114,7,0,0,0,114,60,
+ 0,0,0,115,1,0,0,0,32,114,9,0,0,0,218,9,
+ 95,95,97,119,97,105,116,95,95,122,19,65,119,97,105,116,
+ 97,98,108,101,46,95,95,97,119,97,105,116,95,95,135,0,
+ 0,0,115,9,0,0,0,232,0,248,128,0,228,8,13,249,
+ 115,4,0,0,0,130,6,8,1,99,2,0,0,0,0,0,
+ 0,0,0,0,0,0,4,0,0,0,3,0,0,0,243,54,
+ 0,0,0,151,0,124,0,116,0,0,0,0,0,0,0,0,
+ 0,117,0,114,12,116,3,0,0,0,0,0,0,0,0,124,
+ 1,100,1,171,2,0,0,0,0,0,0,83,0,116,4,0,
+ 0,0,0,0,0,0,0,83,0,41,2,78,114,78,0,0,
+ 0,41,3,114,11,0,0,0,114,56,0,0,0,114,50,0,
+ 0,0,114,65,0,0,0,115,2,0,0,0,32,32,114,9,
+ 0,0,0,114,67,0,0,0,122,26,65,119,97,105,116,97,
+ 98,108,101,46,95,95,115,117,98,99,108,97,115,115,104,111,
+ 111,107,95,95,139,0,0,0,115,29,0,0,0,128,0,224,
+ 11,14,148,41,209,11,27,220,19,33,160,33,160,91,211,19,
+ 49,208,12,49,220,15,29,208,8,29,114,8,0,0,0,78,
+ 41,10,114,69,0,0,0,114,70,0,0,0,114,71,0,0,
+ 0,114,72,0,0,0,114,4,0,0,0,114,78,0,0,0,
+ 114,73,0,0,0,114,67,0,0,0,218,12,71,101,110,101,
+ 114,105,99,65,108,105,97,115,218,17,95,95,99,108,97,115,
+ 115,95,103,101,116,105,116,101,109,95,95,114,7,0,0,0,
+ 114,8,0,0,0,114,9,0,0,0,114,11,0,0,0,114,
+ 11,0,0,0,131,0,0,0,115,58,0,0,0,132,0,224,
+ 16,18,128,73,224,5,19,241,2,1,5,14,243,3,0,6,
+ 20,240,2,1,5,14,240,6,0,6,17,241,2,3,5,30,
+ 243,3,0,6,17,240,2,3,5,30,241,10,0,25,36,160,
+ 76,211,24,49,209,4,21,114,8,0,0,0,114,11,0,0,
+ 0,99,0,0,0,0,0,0,0,0,0,0,0,0,3,0,
+ 0,0,0,0,0,0,243,72,0,0,0,151,0,101,0,90,
+ 1,100,0,90,2,100,1,90,3,101,4,100,2,132,0,171,
+ 0,0,0,0,0,0,0,90,5,101,4,100,7,100,4,132,
+ 1,171,0,0,0,0,0,0,0,90,6,100,5,132,0,90,
+ 7,101,8,100,6,132,0,171,0,0,0,0,0,0,0,90,
+ 9,121,3,41,8,114,12,0,0,0,114,7,0,0,0,99,
+ 2,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,
+ 3,0,0,0,243,14,0,0,0,151,0,116,0,0,0,0,
+ 0,0,0,0,0,130,1,41,1,122,99,83,101,110,100,32,
+ 97,32,118,97,108,117,101,32,105,110,116,111,32,116,104,101,
+ 32,99,111,114,111,117,116,105,110,101,46,10,32,32,32,32,
+ 32,32,32,32,82,101,116,117,114,110,32,110,101,120,116,32,
+ 121,105,101,108,100,101,100,32,118,97,108,117,101,32,111,114,
+ 32,114,97,105,115,101,32,83,116,111,112,73,116,101,114,97,
+ 116,105,111,110,46,10,32,32,32,32,32,32,32,32,169,1,
+ 218,13,83,116,111,112,73,116,101,114,97,116,105,111,110,169,
+ 2,114,61,0,0,0,218,5,118,97,108,117,101,115,2,0,
+ 0,0,32,32,114,9,0,0,0,218,4,115,101,110,100,122,
+ 14,67,111,114,111,117,116,105,110,101,46,115,101,110,100,152,
+ 0,0,0,243,10,0,0,0,128,0,244,10,0,15,28,208,
+ 8,27,114,8,0,0,0,78,99,4,0,0,0,0,0,0,
+ 0,0,0,0,0,3,0,0,0,3,0,0,0,243,70,0,
+ 0,0,151,0,124,2,128,11,124,3,128,2,124,1,130,1,
+ 2,0,124,1,171,0,0,0,0,0,0,0,125,2,124,3,
+ 129,17,124,2,106,1,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,124,3,171,1,0,0,0,0,
+ 0,0,125,2,124,2,130,1,41,1,122,103,82,97,105,115,
+ 101,32,97,110,32,101,120,99,101,112,116,105,111,110,32,105,
+ 110,32,116,104,101,32,99,111,114,111,117,116,105,110,101,46,
+ 10,32,32,32,32,32,32,32,32,82,101,116,117,114,110,32,
+ 110,101,120,116,32,121,105,101,108,100,101,100,32,118,97,108,
+ 117,101,32,111,114,32,114,97,105,115,101,32,83,116,111,112,
+ 73,116,101,114,97,116,105,111,110,46,10,32,32,32,32,32,
+ 32,32,32,169,1,218,14,119,105,116,104,95,116,114,97,99,
+ 101,98,97,99,107,169,4,114,61,0,0,0,218,3,116,121,
+ 112,218,3,118,97,108,218,2,116,98,115,4,0,0,0,32,
+ 32,32,32,114,9,0,0,0,218,5,116,104,114,111,119,122,
+ 15,67,111,114,111,117,116,105,110,101,46,116,104,114,111,119,
+ 159,0,0,0,243,52,0,0,0,128,0,240,10,0,12,15,
+ 136,59,216,15,17,136,122,216,22,25,144,9,217,18,21,147,
+ 37,136,67,216,11,13,136,62,216,18,21,215,18,36,209,18,
+ 36,160,82,211,18,40,136,67,216,14,17,136,9,114,8,0,
+ 0,0,99,1,0,0,0,0,0,0,0,0,0,0,0,4,
+ 0,0,0,3,0,0,0,243,110,0,0,0,151,0,9,0,
+ 124,0,106,1,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,116,2,0,0,0,0,0,0,0,0,
+ 171,1,0,0,0,0,0,0,1,0,116,5,0,0,0,0,
+ 0,0,0,0,100,1,171,1,0,0,0,0,0,0,130,1,
+ 35,0,116,2,0,0,0,0,0,0,0,0,116,6,0,0,
+ 0,0,0,0,0,0,102,2,36,0,114,3,1,0,89,0,
+ 121,2,119,0,120,3,89,0,119,1,41,3,250,46,82,97,
+ 105,115,101,32,71,101,110,101,114,97,116,111,114,69,120,105,
+ 116,32,105,110,115,105,100,101,32,99,111,114,111,117,116,105,
+ 110,101,46,10,32,32,32,32,32,32,32,32,122,31,99,111,
+ 114,111,117,116,105,110,101,32,105,103,110,111,114,101,100,32,
+ 71,101,110,101,114,97,116,111,114,69,120,105,116,78,169,4,
+ 114,97,0,0,0,218,13,71,101,110,101,114,97,116,111,114,
+ 69,120,105,116,218,12,82,117,110,116,105,109,101,69,114,114,
+ 111,114,114,85,0,0,0,114,60,0,0,0,115,1,0,0,
+ 0,32,114,9,0,0,0,218,5,99,108,111,115,101,122,15,
+ 67,111,114,111,117,116,105,110,101,46,99,108,111,115,101,172,
+ 0,0,0,243,59,0,0,0,128,0,240,6,5,9,66,1,
+ 216,12,16,143,74,137,74,148,125,212,12,37,244,8,0,19,
+ 31,208,31,64,211,18,65,208,12,65,248,244,7,0,17,30,
+ 156,125,208,15,45,242,0,1,9,17,217,12,16,240,3,1,
+ 9,17,250,243,12,0,0,0,130,21,34,0,162,15,52,3,
+ 179,1,52,3,99,2,0,0,0,0,0,0,0,0,0,0,
+ 0,7,0,0,0,3,0,0,0,243,60,0,0,0,151,0,
+ 124,0,116,0,0,0,0,0,0,0,0,0,117,0,114,15,
+ 116,3,0,0,0,0,0,0,0,0,124,1,100,1,100,2,
+ 100,3,100,4,171,5,0,0,0,0,0,0,83,0,116,4,
+ 0,0,0,0,0,0,0,0,83,0,41,5,78,114,78,0,
+ 0,0,114,88,0,0,0,114,97,0,0,0,114,104,0,0,
+ 0,41,3,114,12,0,0,0,114,56,0,0,0,114,50,0,
+ 0,0,114,65,0,0,0,115,2,0,0,0,32,32,114,9,
+ 0,0,0,114,67,0,0,0,122,26,67,111,114,111,117,116,
+ 105,110,101,46,95,95,115,117,98,99,108,97,115,115,104,111,
+ 111,107,95,95,182,0,0,0,115,35,0,0,0,128,0,224,
+ 11,14,148,41,209,11,27,220,19,33,160,33,160,91,176,38,
+ 184,39,192,55,211,19,75,208,12,75,220,15,29,208,8,29,
+ 114,8,0,0,0,169,2,78,78,41,10,114,69,0,0,0,
+ 114,70,0,0,0,114,71,0,0,0,114,72,0,0,0,114,
+ 4,0,0,0,114,88,0,0,0,114,97,0,0,0,114,104,
+ 0,0,0,114,73,0,0,0,114,67,0,0,0,114,7,0,
+ 0,0,114,8,0,0,0,114,9,0,0,0,114,12,0,0,
+ 0,114,12,0,0,0,148,0,0,0,115,71,0,0,0,132,
+ 0,224,16,18,128,73,224,5,19,241,2,4,5,28,243,3,
+ 0,6,20,240,2,4,5,28,240,12,0,6,20,242,2,10,
+ 5,18,243,3,0,6,20,240,2,10,5,18,242,24,8,5,
+ 66,1,240,20,0,6,17,241,2,3,5,30,243,3,0,6,
+ 17,241,2,3,5,30,114,8,0,0,0,114,12,0,0,0,
+ 99,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,
+ 0,0,0,0,0,243,64,0,0,0,151,0,101,0,90,1,
+ 100,0,90,2,100,1,90,3,101,4,100,2,132,0,171,0,
+ 0,0,0,0,0,0,90,5,101,6,100,3,132,0,171,0,
+ 0,0,0,0,0,0,90,7,2,0,101,6,101,8,171,1,
+ 0,0,0,0,0,0,90,9,121,4,41,5,114,13,0,0,
+ 0,114,7,0,0,0,99,1,0,0,0,0,0,0,0,0,
+ 0,0,0,2,0,0,0,3,0,0,0,243,22,0,0,0,
+ 151,0,116,1,0,0,0,0,0,0,0,0,171,0,0,0,
+ 0,0,0,0,83,0,114,6,0,0,0,41,1,114,14,0,
+ 0,0,114,60,0,0,0,115,1,0,0,0,32,114,9,0,
+ 0,0,218,9,95,95,97,105,116,101,114,95,95,122,23,65,
+ 115,121,110,99,73,116,101,114,97,98,108,101,46,95,95,97,
+ 105,116,101,114,95,95,196,0,0,0,115,10,0,0,0,128,
+ 0,228,15,28,139,127,208,8,30,114,8,0,0,0,99,2,
+ 0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,3,
+ 0,0,0,243,54,0,0,0,151,0,124,0,116,0,0,0,
+ 0,0,0,0,0,0,117,0,114,12,116,3,0,0,0,0,
+ 0,0,0,0,124,1,100,1,171,2,0,0,0,0,0,0,
+ 83,0,116,4,0,0,0,0,0,0,0,0,83,0,41,2,
+ 78,114,111,0,0,0,41,3,114,13,0,0,0,114,56,0,
+ 0,0,114,50,0,0,0,114,65,0,0,0,115,2,0,0,
+ 0,32,32,114,9,0,0,0,114,67,0,0,0,122,30,65,
+ 115,121,110,99,73,116,101,114,97,98,108,101,46,95,95,115,
+ 117,98,99,108,97,115,115,104,111,111,107,95,95,200,0,0,
+ 0,115,29,0,0,0,128,0,224,11,14,148,45,209,11,31,
+ 220,19,33,160,33,160,91,211,19,49,208,12,49,220,15,29,
+ 208,8,29,114,8,0,0,0,78,41,10,114,69,0,0,0,
+ 114,70,0,0,0,114,71,0,0,0,114,72,0,0,0,114,
+ 4,0,0,0,114,111,0,0,0,114,73,0,0,0,114,67,
+ 0,0,0,114,80,0,0,0,114,81,0,0,0,114,7,0,
+ 0,0,114,8,0,0,0,114,9,0,0,0,114,13,0,0,
+ 0,114,13,0,0,0,192,0,0,0,115,58,0,0,0,132,
+ 0,224,16,18,128,73,224,5,19,241,2,1,5,31,243,3,
+ 0,6,20,240,2,1,5,31,240,6,0,6,17,241,2,3,
+ 5,30,243,3,0,6,17,240,2,3,5,30,241,10,0,25,
+ 36,160,76,211,24,49,209,4,21,114,8,0,0,0,114,13,
+ 0,0,0,99,0,0,0,0,0,0,0,0,0,0,0,0,
+ 2,0,0,0,0,0,0,0,243,54,0,0,0,151,0,101,
+ 0,90,1,100,0,90,2,100,1,90,3,101,4,100,2,132,
+ 0,171,0,0,0,0,0,0,0,90,5,100,3,132,0,90,
+ 6,101,7,100,4,132,0,171,0,0,0,0,0,0,0,90,
+ 8,121,5,41,6,114,14,0,0,0,114,7,0,0,0,99,
+ 1,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,
+ 131,0,0,0,243,22,0,0,0,75,0,1,0,151,0,116,
+ 0,0,0,0,0,0,0,0,0,130,1,173,3,119,1,41,
+ 1,122,64,82,101,116,117,114,110,32,116,104,101,32,110,101,
+ 120,116,32,105,116,101,109,32,111,114,32,114,97,105,115,101,
+ 32,83,116,111,112,65,115,121,110,99,73,116,101,114,97,116,
+ 105,111,110,32,119,104,101,110,32,101,120,104,97,117,115,116,
+ 101,100,46,169,1,218,18,83,116,111,112,65,115,121,110,99,
+ 73,116,101,114,97,116,105,111,110,114,60,0,0,0,115,1,
+ 0,0,0,32,114,9,0,0,0,218,9,95,95,97,110,101,
+ 120,116,95,95,122,23,65,115,121,110,99,73,116,101,114,97,
+ 116,111,114,46,95,95,97,110,101,120,116,95,95,213,0,0,
+ 0,115,14,0,0,0,232,0,248,128,0,244,6,0,15,33,
+ 208,8,32,249,114,46,0,0,0,99,1,0,0,0,0,0,
+ 0,0,0,0,0,0,1,0,0,0,3,0,0,0,243,6,
+ 0,0,0,151,0,124,0,83,0,114,6,0,0,0,114,7,
+ 0,0,0,114,60,0,0,0,115,1,0,0,0,32,114,9,
+ 0,0,0,114,111,0,0,0,122,23,65,115,121,110,99,73,
+ 116,101,114,97,116,111,114,46,95,95,97,105,116,101,114,95,
+ 95,218,0,0,0,243,7,0,0,0,128,0,216,15,19,136,
+ 11,114,8,0,0,0,99,2,0,0,0,0,0,0,0,0,
+ 0,0,0,5,0,0,0,3,0,0,0,243,56,0,0,0,
+ 151,0,124,0,116,0,0,0,0,0,0,0,0,0,117,0,
+ 114,13,116,3,0,0,0,0,0,0,0,0,124,1,100,1,
+ 100,2,171,3,0,0,0,0,0,0,83,0,116,4,0,0,
+ 0,0,0,0,0,0,83,0,41,3,78,114,117,0,0,0,
+ 114,111,0,0,0,41,3,114,14,0,0,0,114,56,0,0,
+ 0,114,50,0,0,0,114,65,0,0,0,115,2,0,0,0,
+ 32,32,114,9,0,0,0,114,67,0,0,0,122,30,65,115,
+ 121,110,99,73,116,101,114,97,116,111,114,46,95,95,115,117,
+ 98,99,108,97,115,115,104,111,111,107,95,95,221,0,0,0,
+ 115,31,0,0,0,128,0,224,11,14,148,45,209,11,31,220,
+ 19,33,160,33,160,91,176,43,211,19,62,208,12,62,220,15,
+ 29,208,8,29,114,8,0,0,0,78,41,9,114,69,0,0,
+ 0,114,70,0,0,0,114,71,0,0,0,114,72,0,0,0,
+ 114,4,0,0,0,114,117,0,0,0,114,111,0,0,0,114,
+ 73,0,0,0,114,67,0,0,0,114,7,0,0,0,114,8,
+ 0,0,0,114,9,0,0,0,114,14,0,0,0,114,14,0,
+ 0,0,209,0,0,0,115,50,0,0,0,132,0,224,16,18,
+ 128,73,224,5,19,241,2,2,5,33,243,3,0,6,20,240,
+ 2,2,5,33,242,8,1,5,20,240,6,0,6,17,241,2,
+ 3,5,30,243,3,0,6,17,241,2,3,5,30,114,8,0,
+ 0,0,114,14,0,0,0,99,0,0,0,0,0,0,0,0,
+ 0,0,0,0,3,0,0,0,0,0,0,0,243,78,0,0,
+ 0,151,0,101,0,90,1,100,0,90,2,100,1,90,3,100,
+ 2,132,0,90,4,101,5,100,3,132,0,171,0,0,0,0,
+ 0,0,0,90,6,101,5,100,8,100,5,132,1,171,0,0,
+ 0,0,0,0,0,90,7,100,6,132,0,90,8,101,9,100,
+ 7,132,0,171,0,0,0,0,0,0,0,90,10,121,4,41,
+ 9,114,15,0,0,0,114,7,0,0,0,99,1,0,0,0,
+ 0,0,0,0,0,0,0,0,3,0,0,0,131,0,0,0,
+ 243,64,0,0,0,75,0,1,0,151,0,124,0,106,1,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,100,1,171,1,0,0,0,0,0,0,131,0,100,1,123,
+ 3,0,0,150,2,151,3,134,5,5,0,83,0,55,0,140,
+ 4,173,3,119,1,41,2,122,112,82,101,116,117,114,110,32,
+ 116,104,101,32,110,101,120,116,32,105,116,101,109,32,102,114,
+ 111,109,32,116,104,101,32,97,115,121,110,99,104,114,111,110,
+ 111,117,115,32,103,101,110,101,114,97,116,111,114,46,10,32,
+ 32,32,32,32,32,32,32,87,104,101,110,32,101,120,104,97,
+ 117,115,116,101,100,44,32,114,97,105,115,101,32,83,116,111,
+ 112,65,115,121,110,99,73,116,101,114,97,116,105,111,110,46,
+ 10,32,32,32,32,32,32,32,32,78,41,1,218,5,97,115,
+ 101,110,100,114,60,0,0,0,115,1,0,0,0,32,114,9,
+ 0,0,0,114,117,0,0,0,122,24,65,115,121,110,99,71,
+ 101,110,101,114,97,116,111,114,46,95,95,97,110,101,120,116,
+ 95,95,232,0,0,0,115,29,0,0,0,232,0,248,128,0,
+ 240,8,0,22,26,151,90,145,90,160,4,211,21,37,215,15,
+ 37,208,8,37,208,15,37,250,115,12,0,0,0,130,21,30,
+ 1,151,1,28,4,152,5,30,1,99,2,0,0,0,0,0,
+ 0,0,0,0,0,0,2,0,0,0,131,0,0,0,243,22,
+ 0,0,0,75,0,1,0,151,0,116,0,0,0,0,0,0,
+ 0,0,0,130,1,173,3,119,1,41,1,122,117,83,101,110,
+ 100,32,97,32,118,97,108,117,101,32,105,110,116,111,32,116,
+ 104,101,32,97,115,121,110,99,104,114,111,110,111,117,115,32,
+ 103,101,110,101,114,97,116,111,114,46,10,32,32,32,32,32,
+ 32,32,32,82,101,116,117,114,110,32,110,101,120,116,32,121,
+ 105,101,108,100,101,100,32,118,97,108,117,101,32,111,114,32,
+ 114,97,105,115,101,32,83,116,111,112,65,115,121,110,99,73,
+ 116,101,114,97,116,105,111,110,46,10,32,32,32,32,32,32,
+ 32,32,114,115,0,0,0,114,86,0,0,0,115,2,0,0,
+ 0,32,32,114,9,0,0,0,114,123,0,0,0,122,20,65,
+ 115,121,110,99,71,101,110,101,114,97,116,111,114,46,97,115,
+ 101,110,100,238,0,0,0,115,14,0,0,0,232,0,248,128,
+ 0,244,10,0,15,33,208,8,32,249,114,46,0,0,0,78,
+ 99,4,0,0,0,0,0,0,0,0,0,0,0,3,0,0,
+ 0,131,0,0,0,243,78,0,0,0,75,0,1,0,151,0,
+ 124,2,128,11,124,3,128,2,124,1,130,1,2,0,124,1,
+ 171,0,0,0,0,0,0,0,125,2,124,3,129,17,124,2,
+ 106,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,124,3,171,1,0,0,0,0,0,0,125,2,
+ 124,2,130,1,173,3,119,1,41,1,122,121,82,97,105,115,
+ 101,32,97,110,32,101,120,99,101,112,116,105,111,110,32,105,
+ 110,32,116,104,101,32,97,115,121,110,99,104,114,111,110,111,
+ 117,115,32,103,101,110,101,114,97,116,111,114,46,10,32,32,
+ 32,32,32,32,32,32,82,101,116,117,114,110,32,110,101,120,
+ 116,32,121,105,101,108,100,101,100,32,118,97,108,117,101,32,
+ 111,114,32,114,97,105,115,101,32,83,116,111,112,65,115,121,
+ 110,99,73,116,101,114,97,116,105,111,110,46,10,32,32,32,
+ 32,32,32,32,32,114,91,0,0,0,114,93,0,0,0,115,
+ 4,0,0,0,32,32,32,32,114,9,0,0,0,218,6,97,
+ 116,104,114,111,119,122,21,65,115,121,110,99,71,101,110,101,
+ 114,97,116,111,114,46,97,116,104,114,111,119,245,0,0,0,
+ 115,56,0,0,0,232,0,248,128,0,240,10,0,12,15,136,
+ 59,216,15,17,136,122,216,22,25,144,9,217,18,21,147,37,
+ 136,67,216,11,13,136,62,216,18,21,215,18,36,209,18,36,
+ 160,82,211,18,40,136,67,216,14,17,136,9,249,115,4,0,
+ 0,0,130,35,37,1,99,1,0,0,0,0,0,0,0,0,
+ 0,0,0,4,0,0,0,131,0,0,0,243,138,0,0,0,
+ 75,0,1,0,151,0,9,0,124,0,106,1,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,2,
+ 0,0,0,0,0,0,0,0,171,1,0,0,0,0,0,0,
+ 131,0,100,1,123,3,0,0,150,3,151,3,134,5,5,0,
+ 1,0,116,5,0,0,0,0,0,0,0,0,100,2,171,1,
+ 0,0,0,0,0,0,130,1,55,0,140,15,35,0,116,2,
+ 0,0,0,0,0,0,0,0,116,6,0,0,0,0,0,0,
+ 0,0,102,2,36,0,114,3,1,0,89,0,121,1,119,0,
+ 120,3,89,0,119,1,173,3,119,1,41,3,114,100,0,0,
+ 0,78,122,44,97,115,121,110,99,104,114,111,110,111,117,115,
+ 32,103,101,110,101,114,97,116,111,114,32,105,103,110,111,114,
+ 101,100,32,71,101,110,101,114,97,116,111,114,69,120,105,116,
+ 41,4,114,126,0,0,0,114,102,0,0,0,114,103,0,0,
+ 0,114,116,0,0,0,114,60,0,0,0,115,1,0,0,0,
+ 32,114,9,0,0,0,218,6,97,99,108,111,115,101,122,21,
+ 65,115,121,110,99,71,101,110,101,114,97,116,111,114,46,97,
+ 99,108,111,115,101,2,1,0,0,115,72,0,0,0,232,0,
+ 248,128,0,240,6,5,9,79,1,216,18,22,151,43,145,43,
+ 156,109,211,18,44,215,12,44,208,12,44,244,8,0,19,31,
+ 208,31,77,211,18,78,208,12,78,240,9,0,13,45,249,220,
+ 16,29,212,31,49,208,15,50,242,0,1,9,17,217,12,16,
+ 240,3,1,9,17,252,115,47,0,0,0,130,1,65,3,1,
+ 132,24,46,0,156,1,44,4,157,4,46,0,161,11,65,3,
+ 1,172,1,46,0,174,15,65,0,3,189,2,65,3,1,191,
+ 1,65,0,3,193,0,3,65,3,1,99,2,0,0,0,0,
+ 0,0,0,0,0,0,0,8,0,0,0,3,0,0,0,243,
+ 62,0,0,0,151,0,124,0,116,0,0,0,0,0,0,0,
+ 0,0,117,0,114,16,116,3,0,0,0,0,0,0,0,0,
+ 124,1,100,1,100,2,100,3,100,4,100,5,171,6,0,0,
+ 0,0,0,0,83,0,116,4,0,0,0,0,0,0,0,0,
+ 83,0,41,6,78,114,111,0,0,0,114,117,0,0,0,114,
+ 123,0,0,0,114,126,0,0,0,114,128,0,0,0,41,3,
+ 114,15,0,0,0,114,56,0,0,0,114,50,0,0,0,114,
+ 65,0,0,0,115,2,0,0,0,32,32,114,9,0,0,0,
+ 114,67,0,0,0,122,31,65,115,121,110,99,71,101,110,101,
+ 114,97,116,111,114,46,95,95,115,117,98,99,108,97,115,115,
+ 104,111,111,107,95,95,12,1,0,0,115,42,0,0,0,128,
+ 0,224,11,14,148,46,209,11,32,220,19,33,160,33,160,91,
+ 176,43,216,34,41,168,56,176,88,243,3,1,20,63,240,0,
+ 1,13,63,228,15,29,208,8,29,114,8,0,0,0,114,108,
+ 0,0,0,41,11,114,69,0,0,0,114,70,0,0,0,114,
+ 71,0,0,0,114,72,0,0,0,114,117,0,0,0,114,4,
+ 0,0,0,114,123,0,0,0,114,126,0,0,0,114,128,0,
+ 0,0,114,73,0,0,0,114,67,0,0,0,114,7,0,0,
+ 0,114,8,0,0,0,114,9,0,0,0,114,15,0,0,0,
+ 114,15,0,0,0,228,0,0,0,115,78,0,0,0,132,0,
+ 224,16,18,128,73,242,4,4,5,38,240,12,0,6,20,241,
+ 2,4,5,33,243,3,0,6,20,240,2,4,5,33,240,12,
+ 0,6,20,242,2,10,5,18,243,3,0,6,20,240,2,10,
+ 5,18,242,24,8,5,79,1,240,20,0,6,17,241,2,4,
+ 5,30,243,3,0,6,17,241,2,4,5,30,114,8,0,0,
+ 0,114,15,0,0,0,99,0,0,0,0,0,0,0,0,0,
+ 0,0,0,3,0,0,0,0,0,0,0,243,64,0,0,0,
+ 151,0,101,0,90,1,100,0,90,2,100,1,90,3,101,4,
+ 100,2,132,0,171,0,0,0,0,0,0,0,90,5,101,6,
+ 100,3,132,0,171,0,0,0,0,0,0,0,90,7,2,0,
+ 101,6,101,8,171,1,0,0,0,0,0,0,90,9,121,4,
+ 41,5,114,17,0,0,0,114,7,0,0,0,99,1,0,0,
+ 0,0,0,0,0,0,0,0,0,2,0,0,0,35,0,0,
+ 0,243,12,0,0,0,75,0,1,0,151,0,121,0,173,3,
+ 119,1,114,6,0,0,0,114,7,0,0,0,114,60,0,0,
+ 0,115,1,0,0,0,32,114,9,0,0,0,218,8,95,95,
+ 105,116,101,114,95,95,122,17,73,116,101,114,97,98,108,101,
+ 46,95,95,105,116,101,114,95,95,27,1,0,0,243,9,0,
+ 0,0,232,0,248,128,0,224,14,19,249,114,43,0,0,0,
+ 99,2,0,0,0,0,0,0,0,0,0,0,0,4,0,0,
+ 0,3,0,0,0,243,54,0,0,0,151,0,124,0,116,0,
+ 0,0,0,0,0,0,0,0,117,0,114,12,116,3,0,0,
+ 0,0,0,0,0,0,124,1,100,1,171,2,0,0,0,0,
+ 0,0,83,0,116,4,0,0,0,0,0,0,0,0,83,0,
+ 41,2,78,114,132,0,0,0,41,3,114,17,0,0,0,114,
+ 56,0,0,0,114,50,0,0,0,114,65,0,0,0,115,2,
+ 0,0,0,32,32,114,9,0,0,0,114,67,0,0,0,122,
+ 25,73,116,101,114,97,98,108,101,46,95,95,115,117,98,99,
+ 108,97,115,115,104,111,111,107,95,95,32,1,0,0,114,68,
+ 0,0,0,114,8,0,0,0,78,41,10,114,69,0,0,0,
+ 114,70,0,0,0,114,71,0,0,0,114,72,0,0,0,114,
+ 4,0,0,0,114,132,0,0,0,114,73,0,0,0,114,67,
+ 0,0,0,114,80,0,0,0,114,81,0,0,0,114,7,0,
+ 0,0,114,8,0,0,0,114,9,0,0,0,114,17,0,0,
+ 0,114,17,0,0,0,23,1,0,0,115,58,0,0,0,132,
+ 0,224,16,18,128,73,224,5,19,241,2,2,5,23,243,3,
+ 0,6,20,240,2,2,5,23,240,8,0,6,17,241,2,3,
+ 5,30,243,3,0,6,17,240,2,3,5,30,241,10,0,25,
+ 36,160,76,211,24,49,209,4,21,114,8,0,0,0,114,17,
+ 0,0,0,99,0,0,0,0,0,0,0,0,0,0,0,0,
+ 2,0,0,0,0,0,0,0,243,54,0,0,0,151,0,101,
+ 0,90,1,100,0,90,2,100,1,90,3,101,4,100,2,132,
+ 0,171,0,0,0,0,0,0,0,90,5,100,3,132,0,90,
+ 6,101,7,100,4,132,0,171,0,0,0,0,0,0,0,90,
+ 8,121,5,41,6,114,18,0,0,0,114,7,0,0,0,99,
+ 1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,
+ 3,0,0,0,243,14,0,0,0,151,0,116,0,0,0,0,
+ 0,0,0,0,0,130,1,41,1,122,75,82,101,116,117,114,
+ 110,32,116,104,101,32,110,101,120,116,32,105,116,101,109,32,
+ 102,114,111,109,32,116,104,101,32,105,116,101,114,97,116,111,
+ 114,46,32,87,104,101,110,32,101,120,104,97,117,115,116,101,
+ 100,44,32,114,97,105,115,101,32,83,116,111,112,73,116,101,
+ 114,97,116,105,111,110,114,84,0,0,0,114,60,0,0,0,
+ 115,1,0,0,0,32,114,9,0,0,0,218,8,95,95,110,
+ 101,120,116,95,95,122,17,73,116,101,114,97,116,111,114,46,
+ 95,95,110,101,120,116,95,95,45,1,0,0,115,10,0,0,
+ 0,128,0,244,6,0,15,28,208,8,27,114,8,0,0,0,
+ 99,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,
+ 0,3,0,0,0,243,6,0,0,0,151,0,124,0,83,0,
+ 114,6,0,0,0,114,7,0,0,0,114,60,0,0,0,115,
+ 1,0,0,0,32,114,9,0,0,0,114,132,0,0,0,122,
+ 17,73,116,101,114,97,116,111,114,46,95,95,105,116,101,114,
+ 95,95,50,1,0,0,114,119,0,0,0,114,8,0,0,0,
+ 99,2,0,0,0,0,0,0,0,0,0,0,0,5,0,0,
+ 0,3,0,0,0,243,56,0,0,0,151,0,124,0,116,0,
+ 0,0,0,0,0,0,0,0,117,0,114,13,116,3,0,0,
+ 0,0,0,0,0,0,124,1,100,1,100,2,171,3,0,0,
+ 0,0,0,0,83,0,116,4,0,0,0,0,0,0,0,0,
+ 83,0,41,3,78,114,132,0,0,0,114,137,0,0,0,41,
+ 3,114,18,0,0,0,114,56,0,0,0,114,50,0,0,0,
+ 114,65,0,0,0,115,2,0,0,0,32,32,114,9,0,0,
+ 0,114,67,0,0,0,122,25,73,116,101,114,97,116,111,114,
+ 46,95,95,115,117,98,99,108,97,115,115,104,111,111,107,95,
+ 95,53,1,0,0,115,30,0,0,0,128,0,224,11,14,148,
+ 40,137,63,220,19,33,160,33,160,90,176,26,211,19,60,208,
+ 12,60,220,15,29,208,8,29,114,8,0,0,0,78,41,9,
+ 114,69,0,0,0,114,70,0,0,0,114,71,0,0,0,114,
+ 72,0,0,0,114,4,0,0,0,114,137,0,0,0,114,132,
+ 0,0,0,114,73,0,0,0,114,67,0,0,0,114,7,0,
+ 0,0,114,8,0,0,0,114,9,0,0,0,114,18,0,0,
+ 0,114,18,0,0,0,41,1,0,0,115,50,0,0,0,132,
+ 0,224,16,18,128,73,224,5,19,241,2,2,5,28,243,3,
+ 0,6,20,240,2,2,5,28,242,8,1,5,20,240,6,0,
+ 6,17,241,2,3,5,30,243,3,0,6,17,241,2,3,5,
+ 30,114,8,0,0,0,114,18,0,0,0,99,0,0,0,0,
+ 0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,
+ 243,48,0,0,0,151,0,101,0,90,1,100,0,90,2,100,
+ 1,90,3,101,4,100,2,132,0,171,0,0,0,0,0,0,
+ 0,90,5,101,6,100,3,132,0,171,0,0,0,0,0,0,
+ 0,90,7,121,4,41,5,114,20,0,0,0,114,7,0,0,
+ 0,99,1,0,0,0,0,0,0,0,0,0,0,0,2,0,
+ 0,0,35,0,0,0,243,12,0,0,0,75,0,1,0,151,
+ 0,121,0,173,3,119,1,114,6,0,0,0,114,7,0,0,
+ 0,114,60,0,0,0,115,1,0,0,0,32,114,9,0,0,
+ 0,218,12,95,95,114,101,118,101,114,115,101,100,95,95,122,
+ 23,82,101,118,101,114,115,105,98,108,101,46,95,95,114,101,
+ 118,101,114,115,101,100,95,95,80,1,0,0,114,133,0,0,
+ 0,114,43,0,0,0,99,2,0,0,0,0,0,0,0,0,
+ 0,0,0,5,0,0,0,3,0,0,0,243,56,0,0,0,
+ 151,0,124,0,116,0,0,0,0,0,0,0,0,0,117,0,
+ 114,13,116,3,0,0,0,0,0,0,0,0,124,1,100,1,
+ 100,2,171,3,0,0,0,0,0,0,83,0,116,4,0,0,
+ 0,0,0,0,0,0,83,0,41,3,78,114,142,0,0,0,
+ 114,132,0,0,0,41,3,114,20,0,0,0,114,56,0,0,
+ 0,114,50,0,0,0,114,65,0,0,0,115,2,0,0,0,
+ 32,32,114,9,0,0,0,114,67,0,0,0,122,27,82,101,
+ 118,101,114,115,105,98,108,101,46,95,95,115,117,98,99,108,
+ 97,115,115,104,111,111,107,95,95,85,1,0,0,115,31,0,
+ 0,0,128,0,224,11,14,148,42,209,11,28,220,19,33,160,
+ 33,160,94,176,90,211,19,64,208,12,64,220,15,29,208,8,
+ 29,114,8,0,0,0,78,41,8,114,69,0,0,0,114,70,
+ 0,0,0,114,71,0,0,0,114,72,0,0,0,114,4,0,
+ 0,0,114,142,0,0,0,114,73,0,0,0,114,67,0,0,
+ 0,114,7,0,0,0,114,8,0,0,0,114,9,0,0,0,
+ 114,20,0,0,0,114,20,0,0,0,76,1,0,0,115,45,
+ 0,0,0,132,0,224,16,18,128,73,224,5,19,241,2,2,
+ 5,23,243,3,0,6,20,240,2,2,5,23,240,8,0,6,
+ 17,241,2,3,5,30,243,3,0,6,17,241,2,3,5,30,
+ 114,8,0,0,0,114,20,0,0,0,99,0,0,0,0,0,
+ 0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,243,
+ 78,0,0,0,151,0,101,0,90,1,100,0,90,2,100,1,
+ 90,3,100,2,132,0,90,4,101,5,100,3,132,0,171,0,
+ 0,0,0,0,0,0,90,6,101,5,100,8,100,5,132,1,
+ 171,0,0,0,0,0,0,0,90,7,100,6,132,0,90,8,
+ 101,9,100,7,132,0,171,0,0,0,0,0,0,0,90,10,
+ 121,4,41,9,114,19,0,0,0,114,7,0,0,0,99,1,
+ 0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,3,
+ 0,0,0,243,36,0,0,0,151,0,124,0,106,1,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 100,1,171,1,0,0,0,0,0,0,83,0,41,2,122,94,
+ 82,101,116,117,114,110,32,116,104,101,32,110,101,120,116,32,
+ 105,116,101,109,32,102,114,111,109,32,116,104,101,32,103,101,
+ 110,101,114,97,116,111,114,46,10,32,32,32,32,32,32,32,
+ 32,87,104,101,110,32,101,120,104,97,117,115,116,101,100,44,
+ 32,114,97,105,115,101,32,83,116,111,112,73,116,101,114,97,
+ 116,105,111,110,46,10,32,32,32,32,32,32,32,32,78,41,
+ 1,114,88,0,0,0,114,60,0,0,0,115,1,0,0,0,
+ 32,114,9,0,0,0,114,137,0,0,0,122,18,71,101,110,
+ 101,114,97,116,111,114,46,95,95,110,101,120,116,95,95,96,
+ 1,0,0,115,18,0,0,0,128,0,240,8,0,16,20,143,
+ 121,137,121,152,20,139,127,208,8,30,114,8,0,0,0,99,
+ 2,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,
+ 3,0,0,0,243,14,0,0,0,151,0,116,0,0,0,0,
+ 0,0,0,0,0,130,1,41,1,122,99,83,101,110,100,32,
+ 97,32,118,97,108,117,101,32,105,110,116,111,32,116,104,101,
+ 32,103,101,110,101,114,97,116,111,114,46,10,32,32,32,32,
+ 32,32,32,32,82,101,116,117,114,110,32,110,101,120,116,32,
+ 121,105,101,108,100,101,100,32,118,97,108,117,101,32,111,114,
+ 32,114,97,105,115,101,32,83,116,111,112,73,116,101,114,97,
+ 116,105,111,110,46,10,32,32,32,32,32,32,32,32,114,84,
+ 0,0,0,114,86,0,0,0,115,2,0,0,0,32,32,114,
+ 9,0,0,0,114,88,0,0,0,122,14,71,101,110,101,114,
+ 97,116,111,114,46,115,101,110,100,102,1,0,0,114,89,0,
+ 0,0,114,8,0,0,0,78,99,4,0,0,0,0,0,0,
+ 0,0,0,0,0,3,0,0,0,3,0,0,0,243,70,0,
+ 0,0,151,0,124,2,128,11,124,3,128,2,124,1,130,1,
+ 2,0,124,1,171,0,0,0,0,0,0,0,125,2,124,3,
+ 129,17,124,2,106,1,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,124,3,171,1,0,0,0,0,
+ 0,0,125,2,124,2,130,1,41,1,122,103,82,97,105,115,
+ 101,32,97,110,32,101,120,99,101,112,116,105,111,110,32,105,
+ 110,32,116,104,101,32,103,101,110,101,114,97,116,111,114,46,
+ 10,32,32,32,32,32,32,32,32,82,101,116,117,114,110,32,
+ 110,101,120,116,32,121,105,101,108,100,101,100,32,118,97,108,
+ 117,101,32,111,114,32,114,97,105,115,101,32,83,116,111,112,
+ 73,116,101,114,97,116,105,111,110,46,10,32,32,32,32,32,
+ 32,32,32,114,91,0,0,0,114,93,0,0,0,115,4,0,
+ 0,0,32,32,32,32,114,9,0,0,0,114,97,0,0,0,
+ 122,15,71,101,110,101,114,97,116,111,114,46,116,104,114,111,
+ 119,109,1,0,0,114,98,0,0,0,114,8,0,0,0,99,
+ 1,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,
+ 3,0,0,0,243,110,0,0,0,151,0,9,0,124,0,106,
+ 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,116,2,0,0,0,0,0,0,0,0,171,1,0,
+ 0,0,0,0,0,1,0,116,5,0,0,0,0,0,0,0,
+ 0,100,1,171,1,0,0,0,0,0,0,130,1,35,0,116,
+ 2,0,0,0,0,0,0,0,0,116,6,0,0,0,0,0,
+ 0,0,0,102,2,36,0,114,3,1,0,89,0,121,2,119,
+ 0,120,3,89,0,119,1,41,3,122,46,82,97,105,115,101,
+ 32,71,101,110,101,114,97,116,111,114,69,120,105,116,32,105,
+ 110,115,105,100,101,32,103,101,110,101,114,97,116,111,114,46,
+ 10,32,32,32,32,32,32,32,32,122,31,103,101,110,101,114,
+ 97,116,111,114,32,105,103,110,111,114,101,100,32,71,101,110,
+ 101,114,97,116,111,114,69,120,105,116,78,114,101,0,0,0,
+ 114,60,0,0,0,115,1,0,0,0,32,114,9,0,0,0,
+ 114,104,0,0,0,122,15,71,101,110,101,114,97,116,111,114,
+ 46,99,108,111,115,101,122,1,0,0,114,105,0,0,0,114,
+ 106,0,0,0,99,2,0,0,0,0,0,0,0,0,0,0,
+ 0,8,0,0,0,3,0,0,0,243,62,0,0,0,151,0,
+ 124,0,116,0,0,0,0,0,0,0,0,0,117,0,114,16,
+ 116,3,0,0,0,0,0,0,0,0,124,1,100,1,100,2,
+ 100,3,100,4,100,5,171,6,0,0,0,0,0,0,83,0,
+ 116,4,0,0,0,0,0,0,0,0,83,0,41,6,78,114,
+ 132,0,0,0,114,137,0,0,0,114,88,0,0,0,114,97,
+ 0,0,0,114,104,0,0,0,41,3,114,19,0,0,0,114,
+ 56,0,0,0,114,50,0,0,0,114,65,0,0,0,115,2,
+ 0,0,0,32,32,114,9,0,0,0,114,67,0,0,0,122,
+ 26,71,101,110,101,114,97,116,111,114,46,95,95,115,117,98,
+ 99,108,97,115,115,104,111,111,107,95,95,132,1,0,0,115,
+ 42,0,0,0,128,0,224,11,14,148,41,209,11,27,220,19,
+ 33,160,33,160,90,176,26,216,34,40,168,39,176,55,243,3,
+ 1,20,60,240,0,1,13,60,228,15,29,208,8,29,114,8,
+ 0,0,0,114,108,0,0,0,41,11,114,69,0,0,0,114,
+ 70,0,0,0,114,71,0,0,0,114,72,0,0,0,114,137,
+ 0,0,0,114,4,0,0,0,114,88,0,0,0,114,97,0,
+ 0,0,114,104,0,0,0,114,73,0,0,0,114,67,0,0,
+ 0,114,7,0,0,0,114,8,0,0,0,114,9,0,0,0,
+ 114,19,0,0,0,114,19,0,0,0,92,1,0,0,115,78,
+ 0,0,0,132,0,224,16,18,128,73,242,4,4,5,31,240,
+ 12,0,6,20,241,2,4,5,28,243,3,0,6,20,240,2,
+ 4,5,28,240,12,0,6,20,242,2,10,5,18,243,3,0,
+ 6,20,240,2,10,5,18,242,24,8,5,66,1,240,20,0,
+ 6,17,241,2,4,5,30,243,3,0,6,17,241,2,4,5,
+ 30,114,8,0,0,0,114,19,0,0,0,99,0,0,0,0,
+ 0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,
+ 243,48,0,0,0,151,0,101,0,90,1,100,0,90,2,100,
+ 1,90,3,101,4,100,2,132,0,171,0,0,0,0,0,0,
+ 0,90,5,101,6,100,3,132,0,171,0,0,0,0,0,0,
+ 0,90,7,121,4,41,5,114,21,0,0,0,114,7,0,0,
+ 0,99,1,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,3,0,0,0,243,4,0,0,0,151,0,121,1,114,
+ 59,0,0,0,114,7,0,0,0,114,60,0,0,0,115,1,
+ 0,0,0,32,114,9,0,0,0,218,7,95,95,108,101,110,
+ 95,95,122,13,83,105,122,101,100,46,95,95,108,101,110,95,
+ 95,147,1,0,0,114,63,0,0,0,114,8,0,0,0,99,
+ 2,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,
+ 3,0,0,0,243,54,0,0,0,151,0,124,0,116,0,0,
+ 0,0,0,0,0,0,0,117,0,114,12,116,3,0,0,0,
+ 0,0,0,0,0,124,1,100,1,171,2,0,0,0,0,0,
+ 0,83,0,116,4,0,0,0,0,0,0,0,0,83,0,41,
+ 2,78,114,152,0,0,0,41,3,114,21,0,0,0,114,56,
+ 0,0,0,114,50,0,0,0,114,65,0,0,0,115,2,0,
+ 0,0,32,32,114,9,0,0,0,114,67,0,0,0,122,22,
+ 83,105,122,101,100,46,95,95,115,117,98,99,108,97,115,115,
+ 104,111,111,107,95,95,151,1,0,0,115,28,0,0,0,128,
+ 0,224,11,14,148,37,137,60,220,19,33,160,33,160,89,211,
+ 19,47,208,12,47,220,15,29,208,8,29,114,8,0,0,0,
+ 78,41,8,114,69,0,0,0,114,70,0,0,0,114,71,0,
+ 0,0,114,72,0,0,0,114,4,0,0,0,114,152,0,0,
+ 0,114,73,0,0,0,114,67,0,0,0,114,7,0,0,0,
+ 114,8,0,0,0,114,9,0,0,0,114,21,0,0,0,114,
+ 21,0,0,0,143,1,0,0,114,74,0,0,0,114,8,0,
+ 0,0,114,21,0,0,0,99,0,0,0,0,0,0,0,0,
+ 0,0,0,0,3,0,0,0,0,0,0,0,243,64,0,0,
+ 0,151,0,101,0,90,1,100,0,90,2,100,1,90,3,101,
+ 4,100,2,132,0,171,0,0,0,0,0,0,0,90,5,101,
+ 6,100,3,132,0,171,0,0,0,0,0,0,0,90,7,2,
+ 0,101,6,101,8,171,1,0,0,0,0,0,0,90,9,121,
+ 4,41,5,114,22,0,0,0,114,7,0,0,0,99,2,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,
+ 0,0,243,4,0,0,0,151,0,121,1,169,2,78,70,114,
+ 7,0,0,0,41,2,114,61,0,0,0,218,1,120,115,2,
+ 0,0,0,32,32,114,9,0,0,0,218,12,95,95,99,111,
+ 110,116,97,105,110,115,95,95,122,22,67,111,110,116,97,105,
+ 110,101,114,46,95,95,99,111,110,116,97,105,110,115,95,95,
+ 162,1,0,0,243,5,0,0,0,128,0,224,15,20,114,8,
+ 0,0,0,99,2,0,0,0,0,0,0,0,0,0,0,0,
+ 4,0,0,0,3,0,0,0,243,54,0,0,0,151,0,124,
+ 0,116,0,0,0,0,0,0,0,0,0,117,0,114,12,116,
+ 3,0,0,0,0,0,0,0,0,124,1,100,1,171,2,0,
+ 0,0,0,0,0,83,0,116,4,0,0,0,0,0,0,0,
+ 0,83,0,41,2,78,114,158,0,0,0,41,3,114,22,0,
+ 0,0,114,56,0,0,0,114,50,0,0,0,114,65,0,0,
+ 0,115,2,0,0,0,32,32,114,9,0,0,0,114,67,0,
+ 0,0,122,26,67,111,110,116,97,105,110,101,114,46,95,95,
+ 115,117,98,99,108,97,115,115,104,111,111,107,95,95,166,1,
+ 0,0,115,29,0,0,0,128,0,224,11,14,148,41,209,11,
+ 27,220,19,33,160,33,160,94,211,19,52,208,12,52,220,15,
+ 29,208,8,29,114,8,0,0,0,78,41,10,114,69,0,0,
+ 0,114,70,0,0,0,114,71,0,0,0,114,72,0,0,0,
+ 114,4,0,0,0,114,158,0,0,0,114,73,0,0,0,114,
+ 67,0,0,0,114,80,0,0,0,114,81,0,0,0,114,7,
+ 0,0,0,114,8,0,0,0,114,9,0,0,0,114,22,0,
+ 0,0,114,22,0,0,0,158,1,0,0,115,58,0,0,0,
+ 132,0,224,16,18,128,73,224,5,19,241,2,1,5,21,243,
+ 3,0,6,20,240,2,1,5,21,240,6,0,6,17,241,2,
+ 3,5,30,243,3,0,6,17,240,2,3,5,30,241,10,0,
+ 25,36,160,76,211,24,49,209,4,21,114,8,0,0,0,114,
+ 22,0,0,0,99,0,0,0,0,0,0,0,0,0,0,0,
+ 0,2,0,0,0,0,0,0,0,243,32,0,0,0,151,0,
+ 101,0,90,1,100,0,90,2,100,1,90,3,101,4,100,2,
+ 132,0,171,0,0,0,0,0,0,0,90,5,121,3,41,4,
+ 114,24,0,0,0,114,7,0,0,0,99,2,0,0,0,0,
+ 0,0,0,0,0,0,0,6,0,0,0,3,0,0,0,243,
+ 58,0,0,0,151,0,124,0,116,0,0,0,0,0,0,0,
+ 0,0,117,0,114,14,116,3,0,0,0,0,0,0,0,0,
+ 124,1,100,1,100,2,100,3,171,4,0,0,0,0,0,0,
+ 83,0,116,4,0,0,0,0,0,0,0,0,83,0,41,4,
+ 78,114,152,0,0,0,114,132,0,0,0,114,158,0,0,0,
+ 41,3,114,24,0,0,0,114,56,0,0,0,114,50,0,0,
+ 0,114,65,0,0,0,115,2,0,0,0,32,32,114,9,0,
+ 0,0,114,67,0,0,0,122,27,67,111,108,108,101,99,116,
+ 105,111,110,46,95,95,115,117,98,99,108,97,115,115,104,111,
+ 111,107,95,95,179,1,0,0,115,33,0,0,0,128,0,224,
+ 11,14,148,42,209,11,28,220,19,33,160,33,160,105,176,26,
+ 184,94,211,19,76,208,12,76,220,15,29,208,8,29,114,8,
+ 0,0,0,78,41,6,114,69,0,0,0,114,70,0,0,0,
+ 114,71,0,0,0,114,72,0,0,0,114,73,0,0,0,114,
+ 67,0,0,0,114,7,0,0,0,114,8,0,0,0,114,9,
+ 0,0,0,114,24,0,0,0,114,24,0,0,0,175,1,0,
+ 0,115,25,0,0,0,132,0,224,16,18,128,73,224,5,16,
+ 241,2,3,5,30,243,3,0,6,17,241,2,3,5,30,114,
+ 8,0,0,0,114,24,0,0,0,99,0,0,0,0,0,0,
+ 0,0,0,0,0,0,5,0,0,0,0,0,0,0,243,58,
+ 0,0,0,151,0,101,0,90,1,100,0,90,2,100,1,90,
+ 3,101,4,100,2,101,5,100,3,101,6,102,4,100,4,132,
+ 4,171,0,0,0,0,0,0,0,90,7,101,8,100,5,132,
+ 0,171,0,0,0,0,0,0,0,90,9,121,6,41,7,114,
+ 36,0,0,0,114,7,0,0,0,218,5,102,108,97,103,115,
+ 218,6,114,101,116,117,114,110,99,2,0,0,0,2,0,0,
+ 0,0,0,0,0,1,0,0,0,3,0,0,0,243,14,0,
+ 0,0,151,0,116,0,0,0,0,0,0,0,0,0,130,1,
+ 114,6,0,0,0,169,1,218,19,78,111,116,73,109,112,108,
+ 101,109,101,110,116,101,100,69,114,114,111,114,41,2,114,61,
+ 0,0,0,114,164,0,0,0,115,2,0,0,0,32,32,114,
+ 9,0,0,0,218,10,95,95,98,117,102,102,101,114,95,95,
+ 122,17,66,117,102,102,101,114,46,95,95,98,117,102,102,101,
+ 114,95,95,190,1,0,0,115,8,0,0,0,128,0,228,14,
+ 33,208,8,33,114,8,0,0,0,99,2,0,0,0,0,0,
+ 0,0,0,0,0,0,4,0,0,0,3,0,0,0,243,54,
+ 0,0,0,151,0,124,0,116,0,0,0,0,0,0,0,0,
+ 0,117,0,114,12,116,3,0,0,0,0,0,0,0,0,124,
+ 1,100,1,171,2,0,0,0,0,0,0,83,0,116,4,0,
+ 0,0,0,0,0,0,0,83,0,41,2,78,114,169,0,0,
+ 0,41,3,114,36,0,0,0,114,56,0,0,0,114,50,0,
+ 0,0,114,65,0,0,0,115,2,0,0,0,32,32,114,9,
+ 0,0,0,114,67,0,0,0,122,23,66,117,102,102,101,114,
+ 46,95,95,115,117,98,99,108,97,115,115,104,111,111,107,95,
+ 95,194,1,0,0,115,28,0,0,0,128,0,224,11,14,148,
+ 38,137,61,220,19,33,160,33,160,92,211,19,50,208,12,50,
+ 220,15,29,208,8,29,114,8,0,0,0,78,41,10,114,69,
+ 0,0,0,114,70,0,0,0,114,71,0,0,0,114,72,0,
+ 0,0,114,4,0,0,0,218,3,105,110,116,218,10,109,101,
+ 109,111,114,121,118,105,101,119,114,169,0,0,0,114,73,0,
+ 0,0,114,67,0,0,0,114,7,0,0,0,114,8,0,0,
+ 0,114,9,0,0,0,114,36,0,0,0,114,36,0,0,0,
+ 186,1,0,0,115,59,0,0,0,132,0,224,16,18,128,73,
+ 224,5,19,240,2,1,5,34,160,3,240,0,1,5,34,168,
+ 58,242,0,1,5,34,243,3,0,6,20,240,2,1,5,34,
+ 240,6,0,6,17,241,2,3,5,30,243,3,0,6,17,241,
+ 2,3,5,30,114,8,0,0,0,114,36,0,0,0,99,0,
+ 0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,
+ 0,0,0,243,64,0,0,0,135,0,151,0,101,0,90,1,
+ 100,0,90,2,100,1,90,3,100,2,90,4,136,0,102,1,
+ 100,3,132,8,90,5,136,0,102,1,100,4,132,8,90,6,
+ 100,5,132,0,90,7,136,0,102,1,100,6,132,8,90,8,
+ 136,0,120,1,90,9,83,0,41,7,218,21,95,67,97,108,
+ 108,97,98,108,101,71,101,110,101,114,105,99,65,108,105,97,
+ 115,122,252,32,82,101,112,114,101,115,101,110,116,32,96,67,
+ 97,108,108,97,98,108,101,91,97,114,103,116,121,112,101,115,
+ 44,32,114,101,115,117,108,116,116,121,112,101,93,96,46,10,
+ 10,32,32,32,32,84,104,105,115,32,115,101,116,115,32,96,
+ 96,95,95,97,114,103,115,95,95,96,96,32,116,111,32,97,
+ 32,116,117,112,108,101,32,99,111,110,116,97,105,110,105,110,
+ 103,32,116,104,101,32,102,108,97,116,116,101,110,101,100,32,
+ 96,96,97,114,103,116,121,112,101,115,96,96,10,32,32,32,
+ 32,102,111,108,108,111,119,101,100,32,98,121,32,96,96,114,
+ 101,115,117,108,116,116,121,112,101,96,96,46,10,10,32,32,
+ 32,32,69,120,97,109,112,108,101,58,32,96,96,67,97,108,
+ 108,97,98,108,101,91,91,105,110,116,44,32,115,116,114,93,
+ 44,32,102,108,111,97,116,93,96,96,32,115,101,116,115,32,
+ 96,96,95,95,97,114,103,115,95,95,96,96,32,116,111,10,
+ 32,32,32,32,96,96,40,105,110,116,44,32,115,116,114,44,
+ 32,102,108,111,97,116,41,96,96,46,10,32,32,32,32,114,
+ 7,0,0,0,99,3,0,0,0,0,0,0,0,0,0,0,
+ 0,5,0,0,0,3,0,0,0,243,240,0,0,0,149,1,
+ 151,0,116,1,0,0,0,0,0,0,0,0,124,2,116,2,
+ 0,0,0,0,0,0,0,0,171,2,0,0,0,0,0,0,
+ 114,14,116,5,0,0,0,0,0,0,0,0,124,2,171,1,
+ 0,0,0,0,0,0,100,1,107,40,0,0,115,11,116,7,
+ 0,0,0,0,0,0,0,0,100,2,171,1,0,0,0,0,
+ 0,0,130,1,124,2,92,2,0,0,125,3,125,4,116,1,
+ 0,0,0,0,0,0,0,0,124,3,116,2,0,0,0,0,
+ 0,0,0,0,116,8,0,0,0,0,0,0,0,0,102,2,
+ 171,2,0,0,0,0,0,0,114,8,103,0,124,3,162,1,
+ 124,4,145,1,173,6,125,2,110,25,116,11,0,0,0,0,
+ 0,0,0,0,124,3,171,1,0,0,0,0,0,0,115,14,
+ 116,7,0,0,0,0,0,0,0,0,100,3,124,3,155,0,
+ 157,2,171,1,0,0,0,0,0,0,130,1,116,12,0,0,
+ 0,0,0,0,0,0,137,5,124,0,141,29,0,0,124,0,
+ 124,1,124,2,171,3,0,0,0,0,0,0,83,0,41,4,
+ 78,233,2,0,0,0,122,54,67,97,108,108,97,98,108,101,
+ 32,109,117,115,116,32,98,101,32,117,115,101,100,32,97,115,
+ 32,67,97,108,108,97,98,108,101,91,91,97,114,103,44,32,
+ 46,46,46,93,44,32,114,101,115,117,108,116,93,46,122,70,
+ 69,120,112,101,99,116,101,100,32,97,32,108,105,115,116,32,
+ 111,102,32,116,121,112,101,115,44,32,97,110,32,101,108,108,
+ 105,112,115,105,115,44,32,80,97,114,97,109,83,112,101,99,
+ 44,32,111,114,32,67,111,110,99,97,116,101,110,97,116,101,
+ 46,32,71,111,116,32,41,8,218,10,105,115,105,110,115,116,
+ 97,110,99,101,218,5,116,117,112,108,101,218,3,108,101,110,
+ 218,9,84,121,112,101,69,114,114,111,114,218,4,108,105,115,
+ 116,218,14,95,105,115,95,112,97,114,97,109,95,101,120,112,
+ 114,218,5,115,117,112,101,114,218,7,95,95,110,101,119,95,
+ 95,41,6,114,66,0,0,0,218,6,111,114,105,103,105,110,
+ 218,4,97,114,103,115,218,6,116,95,97,114,103,115,218,8,
+ 116,95,114,101,115,117,108,116,218,9,95,95,99,108,97,115,
+ 115,95,95,115,6,0,0,0,32,32,32,32,32,128,114,9,
+ 0,0,0,114,184,0,0,0,122,29,95,67,97,108,108,97,
+ 98,108,101,71,101,110,101,114,105,99,65,108,105,97,115,46,
+ 95,95,110,101,119,95,95,213,1,0,0,115,138,0,0,0,
+ 248,128,0,220,16,26,152,52,164,21,212,16,39,172,67,176,
+ 4,171,73,184,17,170,78,220,18,27,216,16,72,243,3,1,
+ 19,74,1,240,0,1,13,74,1,224,27,31,209,8,24,136,
+ 6,144,8,220,11,21,144,102,156,117,164,100,152,109,212,11,
+ 44,216,19,38,144,86,208,19,38,152,88,209,19,38,137,68,
+ 220,17,31,160,6,212,17,39,220,18,27,240,0,1,31,62,
+ 216,62,68,184,88,240,3,1,29,71,1,243,0,1,19,72,
+ 1,240,0,1,13,72,1,228,15,20,137,119,137,127,152,115,
+ 160,70,168,68,211,15,49,208,8,49,114,8,0,0,0,99,
+ 1,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,
+ 3,0,0,0,243,46,1,0,0,149,1,151,0,116,1,0,
+ 0,0,0,0,0,0,0,124,0,106,2,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,171,1,0,
+ 0,0,0,0,0,100,1,107,40,0,0,114,38,116,5,0,
+ 0,0,0,0,0,0,0,124,0,106,2,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,100,2,25,
+ 0,0,0,171,1,0,0,0,0,0,0,114,14,116,6,0,
+ 0,0,0,0,0,0,0,137,2,124,0,141,17,0,0,171,
+ 0,0,0,0,0,0,0,83,0,100,3,100,4,106,11,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,124,0,106,2,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,100,0,100,5,26,0,68,0,143,
+ 1,99,2,103,0,99,2,93,13,0,0,125,1,116,13,0,
+ 0,0,0,0,0,0,0,124,1,171,1,0,0,0,0,0,
+ 0,145,2,140,15,4,0,99,2,125,1,171,1,0,0,0,
+ 0,0,0,155,0,100,6,116,13,0,0,0,0,0,0,0,
+ 0,124,0,106,2,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,100,5,25,0,0,0,171,1,0,
+ 0,0,0,0,0,155,0,100,7,157,5,83,0,99,2,1,
+ 0,99,2,125,1,119,0,41,8,78,114,176,0,0,0,114,
+ 2,0,0,0,122,26,99,111,108,108,101,99,116,105,111,110,
+ 115,46,97,98,99,46,67,97,108,108,97,98,108,101,91,91,
+ 122,2,44,32,233,255,255,255,255,122,3,93,44,32,250,1,
+ 93,41,7,114,179,0,0,0,218,8,95,95,97,114,103,115,
+ 95,95,114,182,0,0,0,114,183,0,0,0,218,8,95,95,
+ 114,101,112,114,95,95,218,4,106,111,105,110,218,10,95,116,
+ 121,112,101,95,114,101,112,114,41,3,114,61,0,0,0,218,
+ 1,97,114,189,0,0,0,115,3,0,0,0,32,32,128,114,
+ 9,0,0,0,114,194,0,0,0,122,30,95,67,97,108,108,
+ 97,98,108,101,71,101,110,101,114,105,99,65,108,105,97,115,
+ 46,95,95,114,101,112,114,95,95,225,1,0,0,115,133,0,
+ 0,0,248,128,0,220,11,14,136,116,143,125,137,125,211,11,
+ 29,160,17,210,11,34,164,126,176,100,183,109,177,109,192,65,
+ 209,54,70,212,39,71,220,19,24,145,55,209,19,35,211,19,
+ 37,208,12,37,240,2,1,19,21,216,21,25,151,89,145,89,
+ 176,116,183,125,177,125,192,83,192,98,208,55,73,214,31,74,
+ 176,33,164,10,168,49,165,13,210,31,74,211,21,75,208,20,
+ 76,200,67,220,19,29,152,100,159,109,153,109,168,66,209,30,
+ 47,211,19,48,208,18,49,176,17,240,5,2,17,52,240,0,
+ 2,9,53,249,218,31,74,115,6,0,0,0,193,29,18,66,
+ 18,10,99,1,0,0,0,0,0,0,0,0,0,0,0,5,
+ 0,0,0,3,0,0,0,243,148,0,0,0,151,0,124,0,
+ 106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,125,1,116,3,0,0,0,0,0,0,0,0,
+ 124,1,171,1,0,0,0,0,0,0,100,1,107,40,0,0,
+ 114,14,116,5,0,0,0,0,0,0,0,0,124,1,100,2,
+ 25,0,0,0,171,1,0,0,0,0,0,0,115,19,116,7,
+ 0,0,0,0,0,0,0,0,124,1,100,0,100,3,26,0,
+ 171,1,0,0,0,0,0,0,124,1,100,3,25,0,0,0,
+ 102,2,125,1,116,8,0,0,0,0,0,0,0,0,116,10,
+ 0,0,0,0,0,0,0,0,124,1,102,2,102,2,83,0,
+ 41,4,78,114,176,0,0,0,114,2,0,0,0,114,191,0,
+ 0,0,41,6,114,193,0,0,0,114,179,0,0,0,114,182,
+ 0,0,0,114,181,0,0,0,114,174,0,0,0,114,23,0,
+ 0,0,41,2,114,61,0,0,0,114,186,0,0,0,115,2,
+ 0,0,0,32,32,114,9,0,0,0,218,10,95,95,114,101,
+ 100,117,99,101,95,95,122,32,95,67,97,108,108,97,98,108,
+ 101,71,101,110,101,114,105,99,65,108,105,97,115,46,95,95,
+ 114,101,100,117,99,101,95,95,232,1,0,0,115,73,0,0,
+ 0,128,0,216,15,19,143,125,137,125,136,4,220,16,19,144,
+ 68,147,9,152,81,146,14,164,62,176,36,176,113,177,39,212,
+ 35,58,220,19,23,152,4,152,83,152,98,152,9,147,63,160,
+ 68,168,18,161,72,208,19,44,136,68,220,15,36,164,120,176,
+ 20,208,38,54,208,15,54,208,8,54,114,8,0,0,0,99,
+ 2,0,0,0,0,0,0,0,0,0,0,0,6,0,0,0,
+ 3,0,0,0,243,220,0,0,0,149,1,151,0,116,1,0,
+ 0,0,0,0,0,0,0,124,1,116,2,0,0,0,0,0,
+ 0,0,0,171,2,0,0,0,0,0,0,115,3,124,1,102,
+ 1,125,1,116,4,0,0,0,0,0,0,0,0,137,5,124,
+ 0,141,13,0,0,124,1,171,1,0,0,0,0,0,0,106,
+ 8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,125,2,116,1,0,0,0,0,0,0,0,0,124,
+ 2,100,1,25,0,0,0,116,2,0,0,0,0,0,0,0,
+ 0,116,10,0,0,0,0,0,0,0,0,102,2,171,2,0,
+ 0,0,0,0,0,115,14,124,2,100,2,25,0,0,0,125,
+ 3,124,2,100,0,100,2,26,0,125,4,124,4,124,3,102,
+ 2,125,2,116,13,0,0,0,0,0,0,0,0,116,14,0,
+ 0,0,0,0,0,0,0,116,3,0,0,0,0,0,0,0,
+ 0,124,2,171,1,0,0,0,0,0,0,171,2,0,0,0,
+ 0,0,0,83,0,41,3,78,114,2,0,0,0,114,191,0,
+ 0,0,41,8,114,177,0,0,0,114,178,0,0,0,114,183,
+ 0,0,0,218,11,95,95,103,101,116,105,116,101,109,95,95,
+ 114,193,0,0,0,114,181,0,0,0,114,174,0,0,0,114,
+ 23,0,0,0,41,6,114,61,0,0,0,218,4,105,116,101,
+ 109,218,8,110,101,119,95,97,114,103,115,114,188,0,0,0,
+ 114,187,0,0,0,114,189,0,0,0,115,6,0,0,0,32,
+ 32,32,32,32,128,114,9,0,0,0,114,201,0,0,0,122,
+ 33,95,67,97,108,108,97,98,108,101,71,101,110,101,114,105,
+ 99,65,108,105,97,115,46,95,95,103,101,116,105,116,101,109,
+ 95,95,238,1,0,0,115,110,0,0,0,248,128,0,244,10,
+ 0,16,26,152,36,164,5,212,15,38,216,20,24,144,55,136,
+ 68,228,19,24,145,55,209,19,38,160,116,211,19,44,215,19,
+ 53,209,19,53,136,8,244,6,0,16,26,152,40,160,49,153,
+ 43,172,5,172,116,160,125,212,15,53,216,23,31,160,2,145,
+ 124,136,72,216,21,29,152,99,152,114,144,93,136,70,216,24,
+ 30,160,8,208,23,41,136,72,220,15,36,164,88,172,117,176,
+ 88,171,127,211,15,63,208,8,63,114,8,0,0,0,41,10,
+ 114,69,0,0,0,114,70,0,0,0,114,71,0,0,0,218,
+ 7,95,95,100,111,99,95,95,114,72,0,0,0,114,184,0,
+ 0,0,114,194,0,0,0,114,199,0,0,0,114,201,0,0,
+ 0,218,13,95,95,99,108,97,115,115,99,101,108,108,95,95,
+ 169,1,114,189,0,0,0,115,1,0,0,0,64,114,9,0,
+ 0,0,114,174,0,0,0,114,174,0,0,0,201,1,0,0,
+ 115,42,0,0,0,248,132,0,241,2,7,5,8,240,18,0,
+ 17,19,128,73,244,4,10,5,50,244,24,5,5,53,242,14,
+ 4,5,55,247,12,15,5,64,1,240,0,15,5,64,1,114,
+ 8,0,0,0,114,174,0,0,0,99,1,0,0,0,0,0,
+ 0,0,0,0,0,0,4,0,0,0,3,0,0,0,243,156,
+ 0,0,0,135,0,151,0,137,0,116,0,0,0,0,0,0,
+ 0,0,0,117,0,114,1,121,1,116,3,0,0,0,0,0,
+ 0,0,0,137,0,116,4,0,0,0,0,0,0,0,0,171,
+ 2,0,0,0,0,0,0,114,1,121,1,116,7,0,0,0,
+ 0,0,0,0,0,137,0,171,1,0,0,0,0,0,0,138,
+ 0,100,2,125,1,137,0,106,8,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,100,3,107,40,0,
+ 0,120,1,114,20,1,0,116,11,0,0,0,0,0,0,0,
+ 0,136,0,102,1,100,4,132,8,124,1,68,0,171,0,0,
+ 0,0,0,0,0,171,1,0,0,0,0,0,0,83,0,41,
+ 5,122,124,67,104,101,99,107,115,32,105,102,32,111,98,106,
+ 32,109,97,116,99,104,101,115,32,101,105,116,104,101,114,32,
+ 97,32,108,105,115,116,32,111,102,32,116,121,112,101,115,44,
+ 32,96,96,46,46,46,96,96,44,32,96,96,80,97,114,97,
+ 109,83,112,101,99,96,96,32,111,114,10,32,32,32,32,96,
+ 96,95,67,111,110,99,97,116,101,110,97,116,101,71,101,110,
+ 101,114,105,99,65,108,105,97,115,96,96,32,102,114,111,109,
+ 32,116,121,112,105,110,103,46,112,121,10,32,32,32,32,84,
+ 41,2,218,9,80,97,114,97,109,83,112,101,99,218,24,95,
+ 67,111,110,99,97,116,101,110,97,116,101,71,101,110,101,114,
+ 105,99,65,108,105,97,115,218,6,116,121,112,105,110,103,99,
+ 1,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,
+ 51,0,0,0,243,60,0,0,0,149,1,75,0,1,0,151,
+ 0,124,0,93,19,0,0,125,1,137,2,106,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,
+ 1,107,40,0,0,150,1,151,1,1,0,140,21,4,0,121,
+ 0,173,3,119,1,114,6,0,0,0,41,1,114,69,0,0,
+ 0,41,3,218,2,46,48,218,4,110,97,109,101,218,3,111,
+ 98,106,115,3,0,0,0,32,32,128,114,9,0,0,0,250,
+ 9,60,103,101,110,101,120,112,114,62,122,33,95,105,115,95,
+ 112,97,114,97,109,95,101,120,112,114,46,60,108,111,99,97,
+ 108,115,62,46,60,103,101,110,101,120,112,114,62,9,2,0,
+ 0,115,26,0,0,0,248,232,0,248,128,0,210,45,85,192,
+ 116,168,99,175,108,169,108,184,100,213,46,66,209,45,85,249,
+ 115,4,0,0,0,131,25,28,1,41,6,218,8,69,108,108,
+ 105,112,115,105,115,114,177,0,0,0,114,181,0,0,0,218,
+ 4,116,121,112,101,114,70,0,0,0,218,3,97,110,121,41,
+ 2,114,214,0,0,0,218,5,110,97,109,101,115,115,2,0,
+ 0,0,96,32,114,9,0,0,0,114,182,0,0,0,114,182,
+ 0,0,0,255,1,0,0,115,73,0,0,0,248,128,0,240,
+ 8,0,8,11,140,104,129,127,216,15,19,220,7,17,144,35,
+ 148,116,212,7,28,216,15,19,220,10,14,136,115,139,41,128,
+ 67,216,12,53,128,69,216,11,14,143,62,137,62,152,88,209,
+ 11,37,210,11,85,172,35,211,45,85,200,117,212,45,85,211,
+ 42,85,208,4,85,114,8,0,0,0,99,1,0,0,0,0,
+ 0,0,0,0,0,0,0,4,0,0,0,3,0,0,0,243,
+ 238,0,0,0,151,0,116,1,0,0,0,0,0,0,0,0,
+ 124,0,116,2,0,0,0,0,0,0,0,0,171,2,0,0,
+ 0,0,0,0,114,54,124,0,106,4,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,100,1,107,40,
+ 0,0,114,12,124,0,106,6,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,83,0,124,0,106,4,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,155,0,100,2,124,0,106,6,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,155,0,157,3,
+ 83,0,124,0,116,8,0,0,0,0,0,0,0,0,117,0,
+ 114,1,121,3,116,1,0,0,0,0,0,0,0,0,124,0,
+ 116,10,0,0,0,0,0,0,0,0,171,2,0,0,0,0,
+ 0,0,114,12,124,0,106,12,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,83,0,116,15,0,0,
+ 0,0,0,0,0,0,124,0,171,1,0,0,0,0,0,0,
+ 83,0,41,4,122,223,82,101,116,117,114,110,32,116,104,101,
+ 32,114,101,112,114,40,41,32,111,102,32,97,110,32,111,98,
+ 106,101,99,116,44,32,115,112,101,99,105,97,108,45,99,97,
+ 115,105,110,103,32,116,121,112,101,115,32,40,105,110,116,101,
+ 114,110,97,108,32,104,101,108,112,101,114,41,46,10,10,32,
+ 32,32,32,67,111,112,105,101,100,32,102,114,111,109,32,58,
+ 109,111,100,58,96,116,121,112,105,110,103,96,32,115,105,110,
+ 99,101,32,99,111,108,108,101,99,116,105,111,110,115,46,97,
+ 98,99,10,32,32,32,32,115,104,111,117,108,100,110,39,116,
+ 32,100,101,112,101,110,100,32,111,110,32,116,104,97,116,32,
+ 109,111,100,117,108,101,46,10,32,32,32,32,40,75,101,101,
+ 112,32,116,104,105,115,32,114,111,117,103,104,108,121,32,105,
+ 110,32,115,121,110,99,32,119,105,116,104,32,116,104,101,32,
+ 116,121,112,105,110,103,32,118,101,114,115,105,111,110,46,41,
+ 10,32,32,32,32,218,8,98,117,105,108,116,105,110,115,250,
+ 1,46,122,3,46,46,46,41,8,114,177,0,0,0,114,217,
+ 0,0,0,114,70,0,0,0,114,71,0,0,0,114,216,0,
+ 0,0,218,12,70,117,110,99,116,105,111,110,84,121,112,101,
+ 114,69,0,0,0,218,4,114,101,112,114,41,1,114,214,0,
+ 0,0,115,1,0,0,0,32,114,9,0,0,0,114,196,0,
+ 0,0,114,196,0,0,0,11,2,0,0,115,107,0,0,0,
+ 128,0,244,14,0,8,18,144,35,148,116,212,7,28,216,11,
+ 14,143,62,137,62,152,90,210,11,39,216,19,22,215,19,35,
+ 209,19,35,208,12,35,216,18,21,151,46,145,46,208,17,33,
+ 160,17,160,51,215,35,51,209,35,51,208,34,52,208,15,53,
+ 208,8,53,216,7,10,140,104,129,127,216,15,20,220,7,17,
+ 144,35,148,124,212,7,36,216,15,18,143,124,137,124,208,8,
+ 27,220,11,15,144,3,139,57,208,4,20,114,8,0,0,0,
+ 99,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,
+ 0,0,0,0,0,243,64,0,0,0,151,0,101,0,90,1,
+ 100,0,90,2,100,1,90,3,101,4,100,2,132,0,171,0,
+ 0,0,0,0,0,0,90,5,101,6,100,3,132,0,171,0,
+ 0,0,0,0,0,0,90,7,2,0,101,6,101,8,171,1,
+ 0,0,0,0,0,0,90,9,121,4,41,5,114,23,0,0,
+ 0,114,7,0,0,0,99,1,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,15,0,0,0,243,4,0,0,0,
+ 151,0,121,1,114,156,0,0,0,114,7,0,0,0,41,3,
+ 114,61,0,0,0,114,186,0,0,0,218,4,107,119,100,115,
+ 115,3,0,0,0,32,32,32,114,9,0,0,0,218,8,95,
+ 95,99,97,108,108,95,95,122,17,67,97,108,108,97,98,108,
+ 101,46,95,95,99,97,108,108,95,95,33,2,0,0,114,159,
+ 0,0,0,114,8,0,0,0,99,2,0,0,0,0,0,0,
+ 0,0,0,0,0,4,0,0,0,3,0,0,0,243,54,0,
+ 0,0,151,0,124,0,116,0,0,0,0,0,0,0,0,0,
+ 117,0,114,12,116,3,0,0,0,0,0,0,0,0,124,1,
+ 100,1,171,2,0,0,0,0,0,0,83,0,116,4,0,0,
+ 0,0,0,0,0,0,83,0,41,2,78,114,228,0,0,0,
+ 41,3,114,23,0,0,0,114,56,0,0,0,114,50,0,0,
+ 0,114,65,0,0,0,115,2,0,0,0,32,32,114,9,0,
+ 0,0,114,67,0,0,0,122,25,67,97,108,108,97,98,108,
+ 101,46,95,95,115,117,98,99,108,97,115,115,104,111,111,107,
+ 95,95,37,2,0,0,114,68,0,0,0,114,8,0,0,0,
+ 78,41,10,114,69,0,0,0,114,70,0,0,0,114,71,0,
+ 0,0,114,72,0,0,0,114,4,0,0,0,114,228,0,0,
+ 0,114,73,0,0,0,114,67,0,0,0,114,174,0,0,0,
+ 114,81,0,0,0,114,7,0,0,0,114,8,0,0,0,114,
+ 9,0,0,0,114,23,0,0,0,114,23,0,0,0,29,2,
+ 0,0,115,59,0,0,0,132,0,224,16,18,128,73,224,5,
+ 19,241,2,1,5,21,243,3,0,6,20,240,2,1,5,21,
+ 240,6,0,6,17,241,2,3,5,30,243,3,0,6,17,240,
+ 2,3,5,30,241,10,0,25,36,208,36,57,211,24,58,209,
+ 4,21,114,8,0,0,0,114,23,0,0,0,99,0,0,0,
+ 0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,
+ 0,243,120,0,0,0,151,0,101,0,90,1,100,0,90,2,
+ 100,1,90,3,100,2,90,4,100,3,132,0,90,5,100,4,
+ 132,0,90,6,100,5,132,0,90,7,100,6,132,0,90,8,
+ 100,7,132,0,90,9,101,10,100,8,132,0,171,0,0,0,
+ 0,0,0,0,90,11,100,9,132,0,90,12,101,12,90,13,
+ 100,10,132,0,90,14,100,11,132,0,90,15,101,15,90,16,
+ 100,12,132,0,90,17,100,13,132,0,90,18,100,14,132,0,
+ 90,19,101,19,90,20,100,15,132,0,90,21,121,16,41,17,
+ 114,25,0,0,0,97,90,1,0,0,65,32,115,101,116,32,
+ 105,115,32,97,32,102,105,110,105,116,101,44,32,105,116,101,
+ 114,97,98,108,101,32,99,111,110,116,97,105,110,101,114,46,
+ 10,10,32,32,32,32,84,104,105,115,32,99,108,97,115,115,
+ 32,112,114,111,118,105,100,101,115,32,99,111,110,99,114,101,
+ 116,101,32,103,101,110,101,114,105,99,32,105,109,112,108,101,
+ 109,101,110,116,97,116,105,111,110,115,32,111,102,32,97,108,
+ 108,10,32,32,32,32,109,101,116,104,111,100,115,32,101,120,
+ 99,101,112,116,32,102,111,114,32,95,95,99,111,110,116,97,
+ 105,110,115,95,95,44,32,95,95,105,116,101,114,95,95,32,
+ 97,110,100,32,95,95,108,101,110,95,95,46,10,10,32,32,
+ 32,32,84,111,32,111,118,101,114,114,105,100,101,32,116,104,
+ 101,32,99,111,109,112,97,114,105,115,111,110,115,32,40,112,
+ 114,101,115,117,109,97,98,108,121,32,102,111,114,32,115,112,
+ 101,101,100,44,32,97,115,32,116,104,101,10,32,32,32,32,
+ 115,101,109,97,110,116,105,99,115,32,97,114,101,32,102,105,
+ 120,101,100,41,44,32,114,101,100,101,102,105,110,101,32,95,
+ 95,108,101,95,95,32,97,110,100,32,95,95,103,101,95,95,
+ 44,10,32,32,32,32,116,104,101,110,32,116,104,101,32,111,
+ 116,104,101,114,32,111,112,101,114,97,116,105,111,110,115,32,
+ 119,105,108,108,32,97,117,116,111,109,97,116,105,99,97,108,
+ 108,121,32,102,111,108,108,111,119,32,115,117,105,116,46,10,
+ 32,32,32,32,114,7,0,0,0,99,2,0,0,0,0,0,
+ 0,0,0,0,0,0,4,0,0,0,3,0,0,0,243,122,
+ 0,0,0,151,0,116,1,0,0,0,0,0,0,0,0,124,
+ 1,116,2,0,0,0,0,0,0,0,0,171,2,0,0,0,
+ 0,0,0,115,6,116,4,0,0,0,0,0,0,0,0,83,
+ 0,116,7,0,0,0,0,0,0,0,0,124,0,171,1,0,
+ 0,0,0,0,0,116,7,0,0,0,0,0,0,0,0,124,
+ 1,171,1,0,0,0,0,0,0,107,68,0,0,114,1,121,
+ 1,124,0,68,0,93,8,0,0,125,2,124,2,124,1,118,
+ 1,115,1,140,8,1,0,121,1,4,0,121,2,169,3,78,
+ 70,84,169,4,114,177,0,0,0,114,25,0,0,0,114,50,
+ 0,0,0,114,179,0,0,0,169,3,114,61,0,0,0,218,
+ 5,111,116,104,101,114,218,4,101,108,101,109,115,3,0,0,
+ 0,32,32,32,114,9,0,0,0,218,6,95,95,108,101,95,
+ 95,122,10,83,101,116,46,95,95,108,101,95,95,62,2,0,
+ 0,115,68,0,0,0,128,0,220,15,25,152,37,164,19,212,
+ 15,37,220,19,33,208,12,33,220,11,14,136,116,139,57,148,
+ 115,152,53,147,122,210,11,33,216,19,24,216,20,24,242,0,
+ 2,9,29,136,68,216,15,19,152,53,210,15,32,217,23,28,
+ 240,5,2,9,29,240,6,0,16,20,114,8,0,0,0,99,
+ 2,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,
+ 3,0,0,0,243,130,0,0,0,151,0,116,1,0,0,0,
+ 0,0,0,0,0,124,1,116,2,0,0,0,0,0,0,0,
+ 0,171,2,0,0,0,0,0,0,115,6,116,4,0,0,0,
+ 0,0,0,0,0,83,0,116,7,0,0,0,0,0,0,0,
+ 0,124,0,171,1,0,0,0,0,0,0,116,7,0,0,0,
+ 0,0,0,0,0,124,1,171,1,0,0,0,0,0,0,107,
+ 2,0,0,120,1,114,17,1,0,124,0,106,9,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,
+ 1,171,1,0,0,0,0,0,0,83,0,114,6,0,0,0,
+ 169,5,114,177,0,0,0,114,25,0,0,0,114,50,0,0,
+ 0,114,179,0,0,0,114,237,0,0,0,169,2,114,61,0,
+ 0,0,114,235,0,0,0,115,2,0,0,0,32,32,114,9,
+ 0,0,0,218,6,95,95,108,116,95,95,122,10,83,101,116,
+ 46,95,95,108,116,95,95,72,2,0,0,243,51,0,0,0,
+ 128,0,220,15,25,152,37,164,19,212,15,37,220,19,33,208,
+ 12,33,220,15,18,144,52,139,121,156,51,152,117,155,58,209,
+ 15,37,210,15,60,168,36,175,43,169,43,176,101,211,42,60,
+ 208,8,60,114,8,0,0,0,99,2,0,0,0,0,0,0,
+ 0,0,0,0,0,4,0,0,0,3,0,0,0,243,130,0,
+ 0,0,151,0,116,1,0,0,0,0,0,0,0,0,124,1,
+ 116,2,0,0,0,0,0,0,0,0,171,2,0,0,0,0,
+ 0,0,115,6,116,4,0,0,0,0,0,0,0,0,83,0,
+ 116,7,0,0,0,0,0,0,0,0,124,0,171,1,0,0,
+ 0,0,0,0,116,7,0,0,0,0,0,0,0,0,124,1,
+ 171,1,0,0,0,0,0,0,107,68,0,0,120,1,114,17,
+ 1,0,124,0,106,9,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,124,1,171,1,0,0,0,0,
+ 0,0,83,0,114,6,0,0,0,41,5,114,177,0,0,0,
+ 114,25,0,0,0,114,50,0,0,0,114,179,0,0,0,218,
+ 6,95,95,103,101,95,95,114,240,0,0,0,115,2,0,0,
+ 0,32,32,114,9,0,0,0,218,6,95,95,103,116,95,95,
+ 122,10,83,101,116,46,95,95,103,116,95,95,77,2,0,0,
+ 114,242,0,0,0,114,8,0,0,0,99,2,0,0,0,0,
+ 0,0,0,0,0,0,0,4,0,0,0,3,0,0,0,243,
+ 122,0,0,0,151,0,116,1,0,0,0,0,0,0,0,0,
+ 124,1,116,2,0,0,0,0,0,0,0,0,171,2,0,0,
+ 0,0,0,0,115,6,116,4,0,0,0,0,0,0,0,0,
+ 83,0,116,7,0,0,0,0,0,0,0,0,124,0,171,1,
+ 0,0,0,0,0,0,116,7,0,0,0,0,0,0,0,0,
+ 124,1,171,1,0,0,0,0,0,0,107,2,0,0,114,1,
+ 121,1,124,1,68,0,93,8,0,0,125,2,124,2,124,0,
+ 118,1,115,1,140,8,1,0,121,1,4,0,121,2,114,232,
+ 0,0,0,114,233,0,0,0,114,234,0,0,0,115,3,0,
+ 0,0,32,32,32,114,9,0,0,0,114,244,0,0,0,122,
+ 10,83,101,116,46,95,95,103,101,95,95,82,2,0,0,115,
+ 68,0,0,0,128,0,220,15,25,152,37,164,19,212,15,37,
+ 220,19,33,208,12,33,220,11,14,136,116,139,57,148,115,152,
+ 53,147,122,210,11,33,216,19,24,216,20,25,242,0,2,9,
+ 29,136,68,216,15,19,152,52,210,15,31,217,23,28,240,5,
+ 2,9,29,240,6,0,16,20,114,8,0,0,0,99,2,0,
+ 0,0,0,0,0,0,0,0,0,0,4,0,0,0,3,0,
+ 0,0,243,130,0,0,0,151,0,116,1,0,0,0,0,0,
+ 0,0,0,124,1,116,2,0,0,0,0,0,0,0,0,171,
+ 2,0,0,0,0,0,0,115,6,116,4,0,0,0,0,0,
+ 0,0,0,83,0,116,7,0,0,0,0,0,0,0,0,124,
+ 0,171,1,0,0,0,0,0,0,116,7,0,0,0,0,0,
+ 0,0,0,124,1,171,1,0,0,0,0,0,0,107,40,0,
+ 0,120,1,114,17,1,0,124,0,106,9,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,124,1,171,
+ 1,0,0,0,0,0,0,83,0,114,6,0,0,0,114,239,
+ 0,0,0,114,240,0,0,0,115,2,0,0,0,32,32,114,
+ 9,0,0,0,218,6,95,95,101,113,95,95,122,10,83,101,
+ 116,46,95,95,101,113,95,95,92,2,0,0,115,51,0,0,
+ 0,128,0,220,15,25,152,37,164,19,212,15,37,220,19,33,
+ 208,12,33,220,15,18,144,52,139,121,156,67,160,5,155,74,
+ 209,15,38,210,15,61,168,52,175,59,169,59,176,117,211,43,
+ 61,208,8,61,114,8,0,0,0,99,2,0,0,0,0,0,
+ 0,0,0,0,0,0,3,0,0,0,3,0,0,0,243,18,
+ 0,0,0,151,0,2,0,124,0,124,1,171,1,0,0,0,
+ 0,0,0,83,0,41,1,122,188,67,111,110,115,116,114,117,
+ 99,116,32,97,110,32,105,110,115,116,97,110,99,101,32,111,
+ 102,32,116,104,101,32,99,108,97,115,115,32,102,114,111,109,
+ 32,97,110,121,32,105,116,101,114,97,98,108,101,32,105,110,
+ 112,117,116,46,10,10,32,32,32,32,32,32,32,32,77,117,
+ 115,116,32,111,118,101,114,114,105,100,101,32,116,104,105,115,
+ 32,109,101,116,104,111,100,32,105,102,32,116,104,101,32,99,
+ 108,97,115,115,32,99,111,110,115,116,114,117,99,116,111,114,
+ 32,115,105,103,110,97,116,117,114,101,10,32,32,32,32,32,
+ 32,32,32,100,111,101,115,32,110,111,116,32,97,99,99,101,
+ 112,116,32,97,110,32,105,116,101,114,97,98,108,101,32,102,
+ 111,114,32,97,110,32,105,110,112,117,116,46,10,32,32,32,
+ 32,32,32,32,32,114,7,0,0,0,169,2,114,66,0,0,
+ 0,218,2,105,116,115,2,0,0,0,32,32,114,9,0,0,
+ 0,218,14,95,102,114,111,109,95,105,116,101,114,97,98,108,
+ 101,122,18,83,101,116,46,95,102,114,111,109,95,105,116,101,
+ 114,97,98,108,101,97,2,0,0,115,13,0,0,0,128,0,
+ 241,14,0,16,19,144,50,139,119,136,14,114,8,0,0,0,
+ 99,2,0,0,0,0,0,0,0,0,0,0,0,4,0,0,
+ 0,3,0,0,0,243,100,0,0,0,135,0,151,0,116,1,
+ 0,0,0,0,0,0,0,0,124,1,116,2,0,0,0,0,
+ 0,0,0,0,171,2,0,0,0,0,0,0,115,6,116,4,
+ 0,0,0,0,0,0,0,0,83,0,137,0,106,7,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 136,0,102,1,100,1,132,8,124,1,68,0,171,0,0,0,
+ 0,0,0,0,171,1,0,0,0,0,0,0,83,0,41,2,
+ 78,99,1,0,0,0,0,0,0,0,0,0,0,0,3,0,
+ 0,0,51,0,0,0,243,44,0,0,0,149,1,75,0,1,
+ 0,151,0,124,0,93,11,0,0,125,1,124,1,137,2,118,
+ 0,115,1,140,8,124,1,150,1,151,1,1,0,140,13,4,
+ 0,121,0,173,3,119,1,114,6,0,0,0,114,7,0,0,
+ 0,169,3,114,212,0,0,0,114,87,0,0,0,114,61,0,
+ 0,0,115,3,0,0,0,32,32,128,114,9,0,0,0,114,
+ 215,0,0,0,122,30,83,101,116,46,95,95,97,110,100,95,
+ 95,46,60,108,111,99,97,108,115,62,46,60,103,101,110,101,
+ 120,112,114,62,109,2,0,0,115,23,0,0,0,248,232,0,
+ 248,128,0,210,34,77,168,85,184,117,200,4,186,125,164,53,
+ 209,34,77,249,115,8,0,0,0,131,9,20,1,141,7,20,
+ 1,169,4,114,177,0,0,0,114,17,0,0,0,114,50,0,
+ 0,0,114,252,0,0,0,114,240,0,0,0,115,2,0,0,
+ 0,96,32,114,9,0,0,0,218,7,95,95,97,110,100,95,
+ 95,122,11,83,101,116,46,95,95,97,110,100,95,95,106,2,
+ 0,0,115,42,0,0,0,248,128,0,220,15,25,152,37,164,
+ 24,212,15,42,220,19,33,208,12,33,216,15,19,215,15,34,
+ 209,15,34,211,34,77,176,101,212,34,77,211,15,77,208,8,
+ 77,114,8,0,0,0,99,2,0,0,0,0,0,0,0,0,
+ 0,0,0,3,0,0,0,3,0,0,0,243,30,0,0,0,
+ 151,0,124,1,68,0,93,8,0,0,125,2,124,2,124,0,
+ 118,0,115,1,140,8,1,0,121,1,4,0,121,2,41,3,
+ 122,49,82,101,116,117,114,110,32,84,114,117,101,32,105,102,
+ 32,116,119,111,32,115,101,116,115,32,104,97,118,101,32,97,
+ 32,110,117,108,108,32,105,110,116,101,114,115,101,99,116,105,
+ 111,110,46,70,84,114,7,0,0,0,41,3,114,61,0,0,
+ 0,114,235,0,0,0,114,87,0,0,0,115,3,0,0,0,
+ 32,32,32,114,9,0,0,0,218,10,105,115,100,105,115,106,
+ 111,105,110,116,122,14,83,101,116,46,105,115,100,105,115,106,
+ 111,105,110,116,113,2,0,0,115,32,0,0,0,128,0,224,
+ 21,26,242,0,2,9,29,136,69,216,15,20,152,4,138,125,
+ 217,23,28,240,5,2,9,29,240,6,0,16,20,114,8,0,
+ 0,0,99,2,0,0,0,0,0,0,0,0,0,0,0,4,
+ 0,0,0,3,0,0,0,243,102,0,0,0,151,0,116,1,
+ 0,0,0,0,0,0,0,0,124,1,116,2,0,0,0,0,
+ 0,0,0,0,171,2,0,0,0,0,0,0,115,6,116,4,
+ 0,0,0,0,0,0,0,0,83,0,100,1,132,0,124,0,
+ 124,1,102,2,68,0,171,0,0,0,0,0,0,0,125,2,
+ 124,0,106,7,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,124,2,171,1,0,0,0,0,0,0,
+ 83,0,41,2,78,99,1,0,0,0,0,0,0,0,0,0,
+ 0,0,3,0,0,0,51,0,0,0,243,46,0,0,0,75,
+ 0,1,0,151,0,124,0,93,13,0,0,125,1,124,1,68,
+ 0,93,6,0,0,125,2,124,2,150,1,151,1,1,0,140,
+ 8,4,0,140,15,4,0,121,0,173,3,119,1,114,6,0,
+ 0,0,114,7,0,0,0,41,3,114,212,0,0,0,218,1,
+ 115,218,1,101,115,3,0,0,0,32,32,32,114,9,0,0,
+ 0,114,215,0,0,0,122,29,83,101,116,46,95,95,111,114,
+ 95,95,46,60,108,111,99,97,108,115,62,46,60,103,101,110,
+ 101,120,112,114,62,123,2,0,0,115,28,0,0,0,232,0,
+ 248,128,0,210,16,53,144,113,176,49,210,16,53,168,97,148,
+ 17,208,16,53,144,17,209,16,53,249,115,4,0,0,0,130,
+ 19,21,1,114,0,1,0,0,41,3,114,61,0,0,0,114,
+ 235,0,0,0,218,5,99,104,97,105,110,115,3,0,0,0,
+ 32,32,32,114,9,0,0,0,218,6,95,95,111,114,95,95,
+ 122,10,83,101,116,46,95,95,111,114,95,95,120,2,0,0,
+ 115,49,0,0,0,128,0,220,15,25,152,37,164,24,212,15,
+ 42,220,19,33,208,12,33,217,16,53,152,84,160,53,152,77,
+ 212,16,53,136,5,216,15,19,215,15,34,209,15,34,160,53,
+ 211,15,41,208,8,41,114,8,0,0,0,99,2,0,0,0,
+ 0,0,0,0,0,0,0,0,4,0,0,0,3,0,0,0,
+ 243,166,0,0,0,135,1,151,0,116,1,0,0,0,0,0,
+ 0,0,0,137,1,116,2,0,0,0,0,0,0,0,0,171,
+ 2,0,0,0,0,0,0,115,39,116,1,0,0,0,0,0,
+ 0,0,0,137,1,116,4,0,0,0,0,0,0,0,0,171,
+ 2,0,0,0,0,0,0,115,6,116,6,0,0,0,0,0,
+ 0,0,0,83,0,124,0,106,9,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,137,1,171,1,0,
+ 0,0,0,0,0,138,1,124,0,106,9,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,136,1,102,
+ 1,100,1,132,8,124,0,68,0,171,0,0,0,0,0,0,
+ 0,171,1,0,0,0,0,0,0,83,0,41,2,78,99,1,
+ 0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,51,
+ 0,0,0,243,42,0,0,0,149,1,75,0,1,0,151,0,
+ 124,0,93,10,0,0,125,1,124,1,137,2,118,1,114,4,
+ 124,1,150,1,151,1,1,0,140,12,4,0,121,0,173,3,
+ 119,1,114,6,0,0,0,114,7,0,0,0,41,3,114,212,
+ 0,0,0,114,87,0,0,0,114,235,0,0,0,115,3,0,
+ 0,0,32,32,128,114,9,0,0,0,114,215,0,0,0,122,
+ 30,83,101,116,46,95,95,115,117,98,95,95,46,60,108,111,
+ 99,97,108,115,62,46,60,103,101,110,101,120,112,114,62,133,
+ 2,0,0,115,32,0,0,0,248,232,0,248,128,0,242,0,
+ 1,35,58,168,85,216,38,43,176,53,209,38,56,244,3,0,
+ 36,41,241,0,1,35,58,249,243,4,0,0,0,131,16,19,
+ 1,169,5,114,177,0,0,0,114,25,0,0,0,114,17,0,
+ 0,0,114,50,0,0,0,114,252,0,0,0,114,240,0,0,
+ 0,115,2,0,0,0,32,96,114,9,0,0,0,218,7,95,
+ 95,115,117,98,95,95,122,11,83,101,116,46,95,95,115,117,
+ 98,95,95,128,2,0,0,115,76,0,0,0,248,128,0,220,
+ 15,25,152,37,164,19,212,15,37,220,19,29,152,101,164,88,
+ 212,19,46,220,23,37,208,16,37,216,20,24,215,20,39,209,
+ 20,39,168,5,211,20,46,136,69,216,15,19,215,15,34,209,
+ 15,34,243,0,1,35,58,176,100,244,0,1,35,58,243,0,
+ 1,16,58,240,0,1,9,58,114,8,0,0,0,99,2,0,
+ 0,0,0,0,0,0,0,0,0,0,4,0,0,0,3,0,
+ 0,0,243,166,0,0,0,135,0,151,0,116,1,0,0,0,
+ 0,0,0,0,0,124,1,116,2,0,0,0,0,0,0,0,
+ 0,171,2,0,0,0,0,0,0,115,39,116,1,0,0,0,
+ 0,0,0,0,0,124,1,116,4,0,0,0,0,0,0,0,
+ 0,171,2,0,0,0,0,0,0,115,6,116,6,0,0,0,
+ 0,0,0,0,0,83,0,137,0,106,9,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,124,1,171,
+ 1,0,0,0,0,0,0,125,1,137,0,106,9,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,
+ 0,102,1,100,1,132,8,124,1,68,0,171,0,0,0,0,
+ 0,0,0,171,1,0,0,0,0,0,0,83,0,41,2,78,
+ 99,1,0,0,0,0,0,0,0,0,0,0,0,3,0,0,
+ 0,51,0,0,0,243,42,0,0,0,149,1,75,0,1,0,
+ 151,0,124,0,93,10,0,0,125,1,124,1,137,2,118,1,
+ 114,4,124,1,150,1,151,1,1,0,140,12,4,0,121,0,
+ 173,3,119,1,114,6,0,0,0,114,7,0,0,0,114,255,
+ 0,0,0,115,3,0,0,0,32,32,128,114,9,0,0,0,
+ 114,215,0,0,0,122,31,83,101,116,46,95,95,114,115,117,
+ 98,95,95,46,60,108,111,99,97,108,115,62,46,60,103,101,
+ 110,101,120,112,114,62,141,2,0,0,115,32,0,0,0,248,
+ 232,0,248,128,0,242,0,1,35,57,168,85,216,38,43,176,
+ 52,209,38,55,244,3,0,36,41,241,0,1,35,57,249,114,
+ 12,1,0,0,114,13,1,0,0,114,240,0,0,0,115,2,
+ 0,0,0,96,32,114,9,0,0,0,218,8,95,95,114,115,
+ 117,98,95,95,122,12,83,101,116,46,95,95,114,115,117,98,
+ 95,95,136,2,0,0,115,76,0,0,0,248,128,0,220,15,
+ 25,152,37,164,19,212,15,37,220,19,29,152,101,164,88,212,
+ 19,46,220,23,37,208,16,37,216,20,24,215,20,39,209,20,
+ 39,168,5,211,20,46,136,69,216,15,19,215,15,34,209,15,
+ 34,243,0,1,35,57,176,101,244,0,1,35,57,243,0,1,
+ 16,57,240,0,1,9,57,114,8,0,0,0,99,2,0,0,
+ 0,0,0,0,0,0,0,0,0,4,0,0,0,3,0,0,
+ 0,243,134,0,0,0,151,0,116,1,0,0,0,0,0,0,
+ 0,0,124,1,116,2,0,0,0,0,0,0,0,0,171,2,
+ 0,0,0,0,0,0,115,39,116,1,0,0,0,0,0,0,
+ 0,0,124,1,116,4,0,0,0,0,0,0,0,0,171,2,
+ 0,0,0,0,0,0,115,6,116,6,0,0,0,0,0,0,
+ 0,0,83,0,124,0,106,9,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,124,1,171,1,0,0,
+ 0,0,0,0,125,1,124,0,124,1,122,10,0,0,124,1,
+ 124,0,122,10,0,0,122,7,0,0,83,0,114,6,0,0,
+ 0,114,13,1,0,0,114,240,0,0,0,115,2,0,0,0,
+ 32,32,114,9,0,0,0,218,7,95,95,120,111,114,95,95,
+ 122,11,83,101,116,46,95,95,120,111,114,95,95,144,2,0,
+ 0,115,63,0,0,0,128,0,220,15,25,152,37,164,19,212,
+ 15,37,220,19,29,152,101,164,88,212,19,46,220,23,37,208,
+ 16,37,216,20,24,215,20,39,209,20,39,168,5,211,20,46,
+ 136,69,216,16,20,144,117,145,12,160,21,168,20,161,28,209,
+ 15,46,208,8,46,114,8,0,0,0,99,1,0,0,0,0,
+ 0,0,0,0,0,0,0,5,0,0,0,3,0,0,0,243,
+ 20,1,0,0,151,0,116,0,0,0,0,0,0,0,0,0,
+ 106,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,125,1,100,1,124,1,122,5,0,0,100,2,
+ 122,0,0,0,125,2,116,5,0,0,0,0,0,0,0,0,
+ 124,0,171,1,0,0,0,0,0,0,125,3,100,3,124,3,
+ 100,2,122,0,0,0,122,5,0,0,125,4,124,4,124,2,
+ 122,14,0,0,125,4,124,0,68,0,93,35,0,0,125,5,
+ 116,7,0,0,0,0,0,0,0,0,124,5,171,1,0,0,
+ 0,0,0,0,125,6,124,4,124,6,124,6,100,4,122,3,
+ 0,0,122,12,0,0,100,5,122,12,0,0,100,6,122,5,
+ 0,0,122,25,0,0,125,4,124,4,124,2,122,14,0,0,
+ 125,4,140,37,4,0,124,4,124,4,100,7,122,9,0,0,
+ 124,4,100,8,122,9,0,0,122,12,0,0,122,25,0,0,
+ 125,4,124,4,100,9,122,5,0,0,100,10,122,0,0,0,
+ 125,4,124,4,124,2,122,14,0,0,125,4,124,4,124,1,
+ 107,68,0,0,114,8,124,4,124,2,100,2,122,0,0,0,
+ 122,23,0,0,125,4,124,4,100,11,107,40,0,0,114,2,
+ 100,12,125,4,124,4,83,0,41,13,97,43,2,0,0,67,
+ 111,109,112,117,116,101,32,116,104,101,32,104,97,115,104,32,
+ 118,97,108,117,101,32,111,102,32,97,32,115,101,116,46,10,
+ 10,32,32,32,32,32,32,32,32,78,111,116,101,32,116,104,
+ 97,116,32,119,101,32,100,111,110,39,116,32,100,101,102,105,
+ 110,101,32,95,95,104,97,115,104,95,95,58,32,110,111,116,
+ 32,97,108,108,32,115,101,116,115,32,97,114,101,32,104,97,
+ 115,104,97,98,108,101,46,10,32,32,32,32,32,32,32,32,
+ 66,117,116,32,105,102,32,121,111,117,32,100,101,102,105,110,
+ 101,32,97,32,104,97,115,104,97,98,108,101,32,115,101,116,
+ 32,116,121,112,101,44,32,105,116,115,32,95,95,104,97,115,
+ 104,95,95,32,115,104,111,117,108,100,10,32,32,32,32,32,
+ 32,32,32,99,97,108,108,32,116,104,105,115,32,102,117,110,
+ 99,116,105,111,110,46,10,10,32,32,32,32,32,32,32,32,
+ 84,104,105,115,32,109,117,115,116,32,98,101,32,99,111,109,
+ 112,97,116,105,98,108,101,32,95,95,101,113,95,95,46,10,
+ 10,32,32,32,32,32,32,32,32,65,108,108,32,115,101,116,
+ 115,32,111,117,103,104,116,32,116,111,32,99,111,109,112,97,
+ 114,101,32,101,113,117,97,108,32,105,102,32,116,104,101,121,
+ 32,99,111,110,116,97,105,110,32,116,104,101,32,115,97,109,
+ 101,10,32,32,32,32,32,32,32,32,101,108,101,109,101,110,
+ 116,115,44,32,114,101,103,97,114,100,108,101,115,115,32,111,
+ 102,32,104,111,119,32,116,104,101,121,32,97,114,101,32,105,
+ 109,112,108,101,109,101,110,116,101,100,44,32,97,110,100,10,
+ 32,32,32,32,32,32,32,32,114,101,103,97,114,100,108,101,
+ 115,115,32,111,102,32,116,104,101,32,111,114,100,101,114,32,
+ 111,102,32,116,104,101,32,101,108,101,109,101,110,116,115,59,
+ 32,115,111,32,116,104,101,114,101,39,115,32,110,111,116,32,
+ 109,117,99,104,10,32,32,32,32,32,32,32,32,102,114,101,
+ 101,100,111,109,32,102,111,114,32,95,95,101,113,95,95,32,
+ 111,114,32,95,95,104,97,115,104,95,95,46,32,32,87,101,
+ 32,109,97,116,99,104,32,116,104,101,32,97,108,103,111,114,
+ 105,116,104,109,32,117,115,101,100,10,32,32,32,32,32,32,
+ 32,32,98,121,32,116,104,101,32,98,117,105,108,116,45,105,
+ 110,32,102,114,111,122,101,110,115,101,116,32,116,121,112,101,
+ 46,10,32,32,32,32,32,32,32,32,114,176,0,0,0,114,
+ 37,0,0,0,105,77,239,232,114,233,16,0,0,0,105,179,
+ 77,91,5,108,3,0,0,0,215,52,126,50,3,0,233,11,
+ 0,0,0,233,25,0,0,0,105,205,13,1,0,105,227,195,
+ 17,54,114,191,0,0,0,105,193,199,56,35,41,4,218,3,
+ 115,121,115,218,7,109,97,120,115,105,122,101,114,179,0,0,
+ 0,218,4,104,97,115,104,41,7,114,61,0,0,0,218,3,
+ 77,65,88,218,4,77,65,83,75,218,1,110,218,1,104,114,
+ 157,0,0,0,218,2,104,120,115,7,0,0,0,32,32,32,
+ 32,32,32,32,114,9,0,0,0,218,5,95,104,97,115,104,
+ 122,9,83,101,116,46,95,104,97,115,104,153,2,0,0,115,
+ 204,0,0,0,128,0,244,30,0,15,18,143,107,137,107,136,
+ 3,216,15,16,144,51,137,119,152,17,137,123,136,4,220,12,
+ 15,144,4,139,73,136,1,216,12,22,152,33,152,97,153,37,
+ 209,12,32,136,1,216,8,9,136,84,137,9,136,1,216,17,
+ 21,242,0,3,9,22,136,65,220,17,21,144,97,147,23,136,
+ 66,216,12,13,144,34,152,2,152,98,153,8,145,47,160,72,
+ 209,18,44,176,26,209,17,59,209,12,59,136,65,216,12,13,
+ 144,20,137,73,137,65,240,7,3,9,22,240,8,0,9,10,
+ 136,97,144,50,137,103,152,33,152,114,153,39,209,13,34,209,
+ 8,34,136,1,216,12,13,144,5,137,73,152,9,209,12,33,
+ 136,1,216,8,9,136,84,137,9,136,1,216,11,12,136,115,
+ 138,55,216,12,13,144,20,152,1,145,24,137,77,136,65,216,
+ 11,12,144,2,138,55,216,16,25,136,65,216,15,16,136,8,
+ 114,8,0,0,0,78,41,22,114,69,0,0,0,114,70,0,
+ 0,0,114,71,0,0,0,114,204,0,0,0,114,72,0,0,
+ 0,114,237,0,0,0,114,241,0,0,0,114,245,0,0,0,
+ 114,244,0,0,0,114,248,0,0,0,114,73,0,0,0,114,
+ 252,0,0,0,114,1,1,0,0,218,8,95,95,114,97,110,
+ 100,95,95,114,3,1,0,0,114,9,1,0,0,218,7,95,
+ 95,114,111,114,95,95,114,14,1,0,0,114,17,1,0,0,
+ 114,19,1,0,0,218,8,95,95,114,120,111,114,95,95,114,
+ 32,1,0,0,114,7,0,0,0,114,8,0,0,0,114,9,
+ 0,0,0,114,25,0,0,0,114,25,0,0,0,49,2,0,
+ 0,115,116,0,0,0,132,0,241,2,8,5,8,240,20,0,
+ 17,19,128,73,242,4,8,5,20,242,20,3,5,61,242,10,
+ 3,5,61,242,10,8,5,20,242,20,3,5,62,240,10,0,
+ 6,17,241,2,6,5,23,243,3,0,6,17,240,2,6,5,
+ 23,242,16,3,5,78,1,240,10,0,16,23,128,72,242,4,
+ 5,5,20,242,14,4,5,42,240,12,0,15,21,128,71,242,
+ 4,6,5,58,242,16,6,5,57,242,16,5,5,47,240,14,
+ 0,16,23,128,72,243,4,31,5,17,114,8,0,0,0,114,
+ 25,0,0,0,99,0,0,0,0,0,0,0,0,0,0,0,
+ 0,2,0,0,0,0,0,0,0,243,94,0,0,0,151,0,
+ 101,0,90,1,100,0,90,2,100,1,90,3,100,2,90,4,
+ 101,5,100,3,132,0,171,0,0,0,0,0,0,0,90,6,
+ 101,5,100,4,132,0,171,0,0,0,0,0,0,0,90,7,
+ 100,5,132,0,90,8,100,6,132,0,90,9,100,7,132,0,
+ 90,10,100,8,132,0,90,11,100,9,132,0,90,12,100,10,
+ 132,0,90,13,100,11,132,0,90,14,121,12,41,13,114,26,
+ 0,0,0,97,135,1,0,0,65,32,109,117,116,97,98,108,
+ 101,32,115,101,116,32,105,115,32,97,32,102,105,110,105,116,
+ 101,44,32,105,116,101,114,97,98,108,101,32,99,111,110,116,
+ 97,105,110,101,114,46,10,10,32,32,32,32,84,104,105,115,
+ 32,99,108,97,115,115,32,112,114,111,118,105,100,101,115,32,
+ 99,111,110,99,114,101,116,101,32,103,101,110,101,114,105,99,
+ 32,105,109,112,108,101,109,101,110,116,97,116,105,111,110,115,
+ 32,111,102,32,97,108,108,10,32,32,32,32,109,101,116,104,
+ 111,100,115,32,101,120,99,101,112,116,32,102,111,114,32,95,
+ 95,99,111,110,116,97,105,110,115,95,95,44,32,95,95,105,
+ 116,101,114,95,95,44,32,95,95,108,101,110,95,95,44,10,
+ 32,32,32,32,97,100,100,40,41,44,32,97,110,100,32,100,
+ 105,115,99,97,114,100,40,41,46,10,10,32,32,32,32,84,
+ 111,32,111,118,101,114,114,105,100,101,32,116,104,101,32,99,
+ 111,109,112,97,114,105,115,111,110,115,32,40,112,114,101,115,
+ 117,109,97,98,108,121,32,102,111,114,32,115,112,101,101,100,
+ 44,32,97,115,32,116,104,101,10,32,32,32,32,115,101,109,
+ 97,110,116,105,99,115,32,97,114,101,32,102,105,120,101,100,
+ 41,44,32,97,108,108,32,121,111,117,32,104,97,118,101,32,
+ 116,111,32,100,111,32,105,115,32,114,101,100,101,102,105,110,
+ 101,32,95,95,108,101,95,95,32,97,110,100,10,32,32,32,
+ 32,116,104,101,110,32,116,104,101,32,111,116,104,101,114,32,
+ 111,112,101,114,97,116,105,111,110,115,32,119,105,108,108,32,
+ 97,117,116,111,109,97,116,105,99,97,108,108,121,32,102,111,
+ 108,108,111,119,32,115,117,105,116,46,10,32,32,32,32,114,
+ 7,0,0,0,99,2,0,0,0,0,0,0,0,0,0,0,
+ 0,1,0,0,0,3,0,0,0,243,14,0,0,0,151,0,
+ 116,0,0,0,0,0,0,0,0,0,130,1,41,1,122,15,
+ 65,100,100,32,97,110,32,101,108,101,109,101,110,116,46,114,
+ 167,0,0,0,114,86,0,0,0,115,2,0,0,0,32,32,
+ 114,9,0,0,0,218,3,97,100,100,122,14,77,117,116,97,
+ 98,108,101,83,101,116,46,97,100,100,204,2,0,0,243,10,
+ 0,0,0,128,0,244,6,0,15,34,208,8,33,114,8,0,
+ 0,0,99,2,0,0,0,0,0,0,0,0,0,0,0,1,
+ 0,0,0,3,0,0,0,243,14,0,0,0,151,0,116,0,
+ 0,0,0,0,0,0,0,0,130,1,41,1,122,56,82,101,
+ 109,111,118,101,32,97,110,32,101,108,101,109,101,110,116,46,
+ 32,32,68,111,32,110,111,116,32,114,97,105,115,101,32,97,
+ 110,32,101,120,99,101,112,116,105,111,110,32,105,102,32,97,
+ 98,115,101,110,116,46,114,167,0,0,0,114,86,0,0,0,
+ 115,2,0,0,0,32,32,114,9,0,0,0,218,7,100,105,
+ 115,99,97,114,100,122,18,77,117,116,97,98,108,101,83,101,
+ 116,46,100,105,115,99,97,114,100,209,2,0,0,114,39,1,
+ 0,0,114,8,0,0,0,99,2,0,0,0,0,0,0,0,
+ 0,0,0,0,3,0,0,0,3,0,0,0,243,68,0,0,
+ 0,151,0,124,1,124,0,118,1,114,11,116,1,0,0,0,
+ 0,0,0,0,0,124,1,171,1,0,0,0,0,0,0,130,
+ 1,124,0,106,3,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,124,1,171,1,0,0,0,0,0,
+ 0,1,0,121,1,41,2,122,53,82,101,109,111,118,101,32,
+ 97,110,32,101,108,101,109,101,110,116,46,32,73,102,32,110,
+ 111,116,32,97,32,109,101,109,98,101,114,44,32,114,97,105,
+ 115,101,32,97,32,75,101,121,69,114,114,111,114,46,78,41,
+ 2,218,8,75,101,121,69,114,114,111,114,114,41,1,0,0,
+ 114,86,0,0,0,115,2,0,0,0,32,32,114,9,0,0,
+ 0,218,6,114,101,109,111,118,101,122,17,77,117,116,97,98,
+ 108,101,83,101,116,46,114,101,109,111,118,101,214,2,0,0,
+ 115,32,0,0,0,128,0,224,11,16,152,4,209,11,28,220,
+ 18,26,152,53,147,47,208,12,33,216,8,12,143,12,137,12,
+ 144,85,213,8,27,114,8,0,0,0,99,1,0,0,0,0,
+ 0,0,0,0,0,0,0,4,0,0,0,3,0,0,0,243,
+ 126,0,0,0,151,0,116,1,0,0,0,0,0,0,0,0,
+ 124,0,171,1,0,0,0,0,0,0,125,1,9,0,116,3,
+ 0,0,0,0,0,0,0,0,124,1,171,1,0,0,0,0,
+ 0,0,125,2,124,0,106,9,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,124,2,171,1,0,0,
+ 0,0,0,0,1,0,124,2,83,0,35,0,116,4,0,0,
+ 0,0,0,0,0,0,36,0,114,8,1,0,116,6,0,0,
+ 0,0,0,0,0,0,100,1,130,2,119,0,120,3,89,0,
+ 119,1,41,2,122,50,82,101,116,117,114,110,32,116,104,101,
+ 32,112,111,112,112,101,100,32,118,97,108,117,101,46,32,32,
+ 82,97,105,115,101,32,75,101,121,69,114,114,111,114,32,105,
+ 102,32,101,109,112,116,121,46,78,41,5,218,4,105,116,101,
+ 114,218,4,110,101,120,116,114,85,0,0,0,114,43,1,0,
+ 0,114,41,1,0,0,169,3,114,61,0,0,0,114,251,0,
+ 0,0,114,87,0,0,0,115,3,0,0,0,32,32,32,114,
+ 9,0,0,0,218,3,112,111,112,122,14,77,117,116,97,98,
+ 108,101,83,101,116,46,112,111,112,220,2,0,0,115,69,0,
+ 0,0,128,0,228,13,17,144,36,139,90,136,2,240,2,3,
+ 9,37,220,20,24,152,18,147,72,136,69,240,6,0,9,13,
+ 143,12,137,12,144,85,212,8,27,216,15,20,136,12,248,244,
+ 7,0,16,29,242,0,1,9,37,220,18,26,160,4,208,12,
+ 36,240,3,1,9,37,250,115,8,0,0,0,141,11,43,0,
+ 171,17,60,3,99,1,0,0,0,0,0,0,0,0,0,0,
+ 0,4,0,0,0,3,0,0,0,243,70,0,0,0,151,0,
+ 9,0,9,0,124,0,106,1,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,171,0,0,0,0,0,
+ 0,0,1,0,140,17,35,0,116,2,0,0,0,0,0,0,
+ 0,0,36,0,114,3,1,0,89,0,121,1,119,0,120,3,
+ 89,0,119,1,41,2,122,54,84,104,105,115,32,105,115,32,
+ 115,108,111,119,32,40,99,114,101,97,116,101,115,32,78,32,
+ 110,101,119,32,105,116,101,114,97,116,111,114,115,33,41,32,
+ 98,117,116,32,101,102,102,101,99,116,105,118,101,46,78,41,
+ 2,114,49,1,0,0,114,43,1,0,0,114,60,0,0,0,
+ 115,1,0,0,0,32,114,9,0,0,0,218,5,99,108,101,
+ 97,114,122,16,77,117,116,97,98,108,101,83,101,116,46,99,
+ 108,101,97,114,230,2,0,0,115,42,0,0,0,128,0,240,
+ 4,4,9,17,216,18,22,216,16,20,151,8,145,8,148,10,
+ 240,3,0,19,23,248,228,15,23,242,0,1,9,17,217,12,
+ 16,240,3,1,9,17,250,243,12,0,0,0,130,18,20,0,
+ 148,9,32,3,159,1,32,3,99,2,0,0,0,0,0,0,
+ 0,0,0,0,0,4,0,0,0,3,0,0,0,243,54,0,
+ 0,0,151,0,124,1,68,0,93,19,0,0,125,2,124,0,
+ 106,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,124,2,171,1,0,0,0,0,0,0,1,0,
+ 140,21,4,0,124,0,83,0,114,6,0,0,0,41,1,114,
+ 38,1,0,0,114,48,1,0,0,115,3,0,0,0,32,32,
+ 32,114,9,0,0,0,218,7,95,95,105,111,114,95,95,122,
+ 18,77,117,116,97,98,108,101,83,101,116,46,95,95,105,111,
+ 114,95,95,238,2,0,0,115,33,0,0,0,128,0,216,21,
+ 23,242,0,1,9,28,136,69,216,12,16,143,72,137,72,144,
+ 85,141,79,240,3,1,9,28,224,15,19,136,11,114,8,0,
+ 0,0,99,2,0,0,0,0,0,0,0,0,0,0,0,4,
+ 0,0,0,3,0,0,0,243,60,0,0,0,151,0,124,0,
+ 124,1,122,10,0,0,68,0,93,19,0,0,125,2,124,0,
+ 106,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,124,2,171,1,0,0,0,0,0,0,1,0,
+ 140,21,4,0,124,0,83,0,114,6,0,0,0,41,1,114,
+ 41,1,0,0,114,48,1,0,0,115,3,0,0,0,32,32,
+ 32,114,9,0,0,0,218,8,95,95,105,97,110,100,95,95,
+ 122,19,77,117,116,97,98,108,101,83,101,116,46,95,95,105,
+ 97,110,100,95,95,243,2,0,0,115,38,0,0,0,128,0,
+ 216,22,26,152,82,145,105,242,0,1,9,32,136,69,216,12,
+ 16,143,76,137,76,152,21,213,12,31,240,3,1,9,32,224,
+ 15,19,136,11,114,8,0,0,0,99,2,0,0,0,0,0,
+ 0,0,0,0,0,0,4,0,0,0,3,0,0,0,243,208,
+ 0,0,0,151,0,124,1,124,0,117,0,114,18,124,0,106,
+ 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,171,0,0,0,0,0,0,0,1,0,124,0,83,
+ 0,116,3,0,0,0,0,0,0,0,0,124,1,116,4,0,
+ 0,0,0,0,0,0,0,171,2,0,0,0,0,0,0,115,
+ 17,124,0,106,7,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,124,1,171,1,0,0,0,0,0,
+ 0,125,1,124,1,68,0,93,41,0,0,125,2,124,2,124,
+ 0,118,0,114,18,124,0,106,9,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,124,2,171,1,0,
+ 0,0,0,0,0,1,0,140,25,124,0,106,11,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,
+ 2,171,1,0,0,0,0,0,0,1,0,140,43,4,0,124,
+ 0,83,0,114,6,0,0,0,41,6,114,51,1,0,0,114,
+ 177,0,0,0,114,25,0,0,0,114,252,0,0,0,114,41,
+ 1,0,0,114,38,1,0,0,114,48,1,0,0,115,3,0,
+ 0,0,32,32,32,114,9,0,0,0,218,8,95,95,105,120,
+ 111,114,95,95,122,19,77,117,116,97,98,108,101,83,101,116,
+ 46,95,95,105,120,111,114,95,95,248,2,0,0,115,105,0,
+ 0,0,128,0,216,11,13,144,20,137,58,216,12,16,143,74,
+ 137,74,140,76,240,18,0,16,20,136,11,244,15,0,20,30,
+ 152,98,164,35,212,19,38,216,21,25,215,21,40,209,21,40,
+ 168,18,211,21,44,144,2,216,25,27,242,0,4,13,36,144,
+ 5,216,19,24,152,68,145,61,216,20,24,151,76,145,76,160,
+ 21,213,20,39,224,20,24,151,72,145,72,152,85,149,79,240,
+ 9,4,13,36,240,10,0,16,20,136,11,114,8,0,0,0,
+ 99,2,0,0,0,0,0,0,0,0,0,0,0,4,0,0,
+ 0,3,0,0,0,243,98,0,0,0,151,0,124,1,124,0,
+ 117,0,114,18,124,0,106,1,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,171,0,0,0,0,0,
+ 0,0,1,0,124,0,83,0,124,1,68,0,93,19,0,0,
+ 125,2,124,0,106,3,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,124,2,171,1,0,0,0,0,
+ 0,0,1,0,140,21,4,0,124,0,83,0,114,6,0,0,
+ 0,41,2,114,51,1,0,0,114,41,1,0,0,114,48,1,
+ 0,0,115,3,0,0,0,32,32,32,114,9,0,0,0,218,
+ 8,95,95,105,115,117,98,95,95,122,19,77,117,116,97,98,
+ 108,101,83,101,116,46,95,95,105,115,117,98,95,95,5,3,
+ 0,0,115,59,0,0,0,128,0,216,11,13,144,20,137,58,
+ 216,12,16,143,74,137,74,140,76,240,8,0,16,20,136,11,
+ 240,5,0,26,28,242,0,1,13,36,144,5,216,16,20,151,
+ 12,145,12,152,85,213,16,35,240,3,1,13,36,224,15,19,
+ 136,11,114,8,0,0,0,78,41,15,114,69,0,0,0,114,
+ 70,0,0,0,114,71,0,0,0,114,204,0,0,0,114,72,
+ 0,0,0,114,4,0,0,0,114,38,1,0,0,114,41,1,
+ 0,0,114,44,1,0,0,114,49,1,0,0,114,51,1,0,
+ 0,114,54,1,0,0,114,56,1,0,0,114,58,1,0,0,
+ 114,60,1,0,0,114,7,0,0,0,114,8,0,0,0,114,
+ 9,0,0,0,114,26,0,0,0,114,26,0,0,0,190,2,
+ 0,0,115,87,0,0,0,132,0,241,2,9,5,8,240,22,
+ 0,17,19,128,73,224,5,19,241,2,2,5,34,243,3,0,
+ 6,20,240,2,2,5,34,240,8,0,6,20,241,2,2,5,
+ 34,243,3,0,6,20,240,2,2,5,34,242,8,4,5,28,
+ 242,12,8,5,21,242,20,6,5,17,242,16,3,5,20,242,
+ 10,3,5,20,242,10,11,5,20,243,26,6,5,20,114,8,
+ 0,0,0,114,26,0,0,0,99,0,0,0,0,0,0,0,
+ 0,0,0,0,0,2,0,0,0,0,0,0,0,243,82,0,
+ 0,0,151,0,101,0,90,1,100,0,90,2,100,1,90,3,
+ 100,2,90,4,100,3,90,5,101,6,100,4,132,0,171,0,
+ 0,0,0,0,0,0,90,7,100,12,100,6,132,1,90,8,
+ 100,7,132,0,90,9,100,8,132,0,90,10,100,9,132,0,
+ 90,11,100,10,132,0,90,12,100,11,132,0,90,13,100,5,
+ 90,14,121,5,41,13,114,27,0,0,0,122,198,65,32,77,
+ 97,112,112,105,110,103,32,105,115,32,97,32,103,101,110,101,
+ 114,105,99,32,99,111,110,116,97,105,110,101,114,32,102,111,
+ 114,32,97,115,115,111,99,105,97,116,105,110,103,32,107,101,
+ 121,47,118,97,108,117,101,10,32,32,32,32,112,97,105,114,
+ 115,46,10,10,32,32,32,32,84,104,105,115,32,99,108,97,
+ 115,115,32,112,114,111,118,105,100,101,115,32,99,111,110,99,
+ 114,101,116,101,32,103,101,110,101,114,105,99,32,105,109,112,
+ 108,101,109,101,110,116,97,116,105,111,110,115,32,111,102,32,
+ 97,108,108,10,32,32,32,32,109,101,116,104,111,100,115,32,
+ 101,120,99,101,112,116,32,102,111,114,32,95,95,103,101,116,
+ 105,116,101,109,95,95,44,32,95,95,105,116,101,114,95,95,
+ 44,32,97,110,100,32,95,95,108,101,110,95,95,46,10,32,
+ 32,32,32,114,7,0,0,0,233,64,0,0,0,99,2,0,
+ 0,0,0,0,0,0,0,0,0,0,1,0,0,0,3,0,
+ 0,0,243,14,0,0,0,151,0,116,0,0,0,0,0,0,
+ 0,0,0,130,1,114,6,0,0,0,169,1,114,43,1,0,
+ 0,169,2,114,61,0,0,0,218,3,107,101,121,115,2,0,
+ 0,0,32,32,114,9,0,0,0,114,201,0,0,0,122,19,
+ 77,97,112,112,105,110,103,46,95,95,103,101,116,105,116,101,
+ 109,95,95,32,3,0,0,243,7,0,0,0,128,0,228,14,
+ 22,136,14,114,8,0,0,0,78,99,3,0,0,0,0,0,
+ 0,0,0,0,0,0,4,0,0,0,3,0,0,0,243,48,
+ 0,0,0,151,0,9,0,124,0,124,1,25,0,0,0,83,
+ 0,35,0,116,0,0,0,0,0,0,0,0,0,36,0,114,
+ 5,1,0,124,2,99,2,89,0,83,0,119,0,120,3,89,
+ 0,119,1,41,1,122,60,68,46,103,101,116,40,107,91,44,
+ 100,93,41,32,45,62,32,68,91,107,93,32,105,102,32,107,
+ 32,105,110,32,68,44,32,101,108,115,101,32,100,46,32,32,
+ 100,32,100,101,102,97,117,108,116,115,32,116,111,32,78,111,
+ 110,101,46,114,64,1,0,0,169,3,114,61,0,0,0,114,
+ 66,1,0,0,218,7,100,101,102,97,117,108,116,115,3,0,
+ 0,0,32,32,32,114,9,0,0,0,218,3,103,101,116,122,
+ 11,77,97,112,112,105,110,103,46,103,101,116,36,3,0,0,
+ 115,37,0,0,0,128,0,240,4,3,9,27,216,19,23,152,
+ 3,145,57,208,12,28,248,220,15,23,242,0,1,9,27,216,
+ 19,26,138,78,240,3,1,9,27,250,115,12,0,0,0,130,
+ 4,7,0,135,11,21,3,148,1,21,3,99,2,0,0,0,
+ 0,0,0,0,0,0,0,0,4,0,0,0,3,0,0,0,
+ 243,46,0,0,0,151,0,9,0,124,0,124,1,25,0,0,
+ 0,1,0,121,1,35,0,116,0,0,0,0,0,0,0,0,
+ 0,36,0,114,3,1,0,89,0,121,2,119,0,120,3,89,
+ 0,119,1,169,3,78,84,70,114,64,1,0,0,114,65,1,
+ 0,0,115,2,0,0,0,32,32,114,9,0,0,0,114,158,
+ 0,0,0,122,20,77,97,112,112,105,110,103,46,95,95,99,
+ 111,110,116,97,105,110,115,95,95,43,3,0,0,115,39,0,
+ 0,0,128,0,240,2,5,9,24,216,12,16,144,19,138,73,
+ 240,8,0,20,24,248,244,7,0,16,24,242,0,1,9,25,
+ 217,19,24,240,3,1,9,25,250,115,12,0,0,0,130,5,
+ 8,0,136,9,20,3,147,1,20,3,99,1,0,0,0,0,
+ 0,0,0,0,0,0,0,3,0,0,0,3,0,0,0,243,
+ 24,0,0,0,151,0,116,1,0,0,0,0,0,0,0,0,
+ 124,0,171,1,0,0,0,0,0,0,83,0,41,1,122,58,
+ 68,46,107,101,121,115,40,41,32,45,62,32,97,32,115,101,
+ 116,45,108,105,107,101,32,111,98,106,101,99,116,32,112,114,
+ 111,118,105,100,105,110,103,32,97,32,118,105,101,119,32,111,
+ 110,32,68,39,115,32,107,101,121,115,41,1,114,30,0,0,
+ 0,114,60,0,0,0,115,1,0,0,0,32,114,9,0,0,
+ 0,218,4,107,101,121,115,122,12,77,97,112,112,105,110,103,
+ 46,107,101,121,115,51,3,0,0,115,12,0,0,0,128,0,
+ 228,15,23,152,4,139,126,208,8,29,114,8,0,0,0,99,
+ 1,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,
+ 3,0,0,0,243,24,0,0,0,151,0,116,1,0,0,0,
+ 0,0,0,0,0,124,0,171,1,0,0,0,0,0,0,83,
+ 0,41,1,122,60,68,46,105,116,101,109,115,40,41,32,45,
+ 62,32,97,32,115,101,116,45,108,105,107,101,32,111,98,106,
+ 101,99,116,32,112,114,111,118,105,100,105,110,103,32,97,32,
+ 118,105,101,119,32,111,110,32,68,39,115,32,105,116,101,109,
+ 115,41,1,114,31,0,0,0,114,60,0,0,0,115,1,0,
+ 0,0,32,114,9,0,0,0,218,5,105,116,101,109,115,122,
+ 13,77,97,112,112,105,110,103,46,105,116,101,109,115,55,3,
+ 0,0,115,12,0,0,0,128,0,228,15,24,152,20,139,127,
+ 208,8,30,114,8,0,0,0,99,1,0,0,0,0,0,0,
+ 0,0,0,0,0,3,0,0,0,3,0,0,0,243,24,0,
+ 0,0,151,0,116,1,0,0,0,0,0,0,0,0,124,0,
+ 171,1,0,0,0,0,0,0,83,0,41,1,122,54,68,46,
+ 118,97,108,117,101,115,40,41,32,45,62,32,97,110,32,111,
+ 98,106,101,99,116,32,112,114,111,118,105,100,105,110,103,32,
+ 97,32,118,105,101,119,32,111,110,32,68,39,115,32,118,97,
+ 108,117,101,115,41,1,114,32,0,0,0,114,60,0,0,0,
+ 115,1,0,0,0,32,114,9,0,0,0,218,6,118,97,108,
+ 117,101,115,122,14,77,97,112,112,105,110,103,46,118,97,108,
+ 117,101,115,59,3,0,0,115,13,0,0,0,128,0,228,15,
+ 25,152,36,211,15,31,208,8,31,114,8,0,0,0,99,2,
+ 0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,3,
+ 0,0,0,243,148,0,0,0,151,0,116,1,0,0,0,0,
+ 0,0,0,0,124,1,116,2,0,0,0,0,0,0,0,0,
+ 171,2,0,0,0,0,0,0,115,6,116,4,0,0,0,0,
+ 0,0,0,0,83,0,116,7,0,0,0,0,0,0,0,0,
+ 124,0,106,9,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,171,0,0,0,0,0,0,0,171,1,
+ 0,0,0,0,0,0,116,7,0,0,0,0,0,0,0,0,
+ 124,1,106,9,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,171,0,0,0,0,0,0,0,171,1,
+ 0,0,0,0,0,0,107,40,0,0,83,0,114,6,0,0,
+ 0,41,5,114,177,0,0,0,114,27,0,0,0,114,50,0,
+ 0,0,218,4,100,105,99,116,114,77,1,0,0,114,240,0,
+ 0,0,115,2,0,0,0,32,32,114,9,0,0,0,114,248,
+ 0,0,0,122,14,77,97,112,112,105,110,103,46,95,95,101,
+ 113,95,95,63,3,0,0,115,51,0,0,0,128,0,220,15,
+ 25,152,37,164,23,212,15,41,220,19,33,208,12,33,220,15,
+ 19,144,68,151,74,145,74,147,76,211,15,33,164,84,168,37,
+ 175,43,169,43,171,45,211,37,56,209,15,56,208,8,56,114,
+ 8,0,0,0,114,6,0,0,0,41,15,114,69,0,0,0,
+ 114,70,0,0,0,114,71,0,0,0,114,204,0,0,0,114,
+ 72,0,0,0,218,15,95,95,97,98,99,95,116,112,102,108,
+ 97,103,115,95,95,114,4,0,0,0,114,201,0,0,0,114,
+ 71,1,0,0,114,158,0,0,0,114,75,1,0,0,114,77,
+ 1,0,0,114,79,1,0,0,114,248,0,0,0,114,142,0,
+ 0,0,114,7,0,0,0,114,8,0,0,0,114,9,0,0,
+ 0,114,27,0,0,0,114,27,0,0,0,19,3,0,0,115,
+ 76,0,0,0,132,0,241,2,5,5,8,240,14,0,17,19,
+ 128,73,240,6,0,23,29,128,79,224,5,19,241,2,1,5,
+ 23,243,3,0,6,20,240,2,1,5,23,243,6,5,5,27,
+ 242,14,6,5,24,242,16,2,5,30,242,8,2,5,31,242,
+ 8,2,5,32,242,8,3,5,57,240,10,0,20,24,129,76,
+ 114,8,0,0,0,114,27,0,0,0,99,0,0,0,0,0,
+ 0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,243,
+ 50,0,0,0,151,0,101,0,90,1,100,0,90,2,100,1,
+ 90,3,100,2,132,0,90,4,100,3,132,0,90,5,100,4,
+ 132,0,90,6,2,0,101,7,101,8,171,1,0,0,0,0,
+ 0,0,90,9,121,5,41,6,114,29,0,0,0,169,1,218,
+ 8,95,109,97,112,112,105,110,103,99,2,0,0,0,0,0,
+ 0,0,0,0,0,0,2,0,0,0,3,0,0,0,243,18,
+ 0,0,0,151,0,124,1,124,0,95,0,0,0,0,0,0,
+ 0,0,0,121,0,114,6,0,0,0,114,84,1,0,0,41,
+ 2,114,61,0,0,0,218,7,109,97,112,112,105,110,103,115,
+ 2,0,0,0,32,32,114,9,0,0,0,218,8,95,95,105,
+ 110,105,116,95,95,122,20,77,97,112,112,105,110,103,86,105,
+ 101,119,46,95,95,105,110,105,116,95,95,77,3,0,0,115,
+ 9,0,0,0,128,0,216,24,31,136,4,141,13,114,8,0,
+ 0,0,99,1,0,0,0,0,0,0,0,0,0,0,0,3,
+ 0,0,0,3,0,0,0,243,44,0,0,0,151,0,116,1,
+ 0,0,0,0,0,0,0,0,124,0,106,2,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,1,
+ 0,0,0,0,0,0,83,0,114,6,0,0,0,41,2,114,
+ 179,0,0,0,114,85,1,0,0,114,60,0,0,0,115,1,
+ 0,0,0,32,114,9,0,0,0,114,152,0,0,0,122,19,
+ 77,97,112,112,105,110,103,86,105,101,119,46,95,95,108,101,
+ 110,95,95,80,3,0,0,115,17,0,0,0,128,0,220,15,
+ 18,144,52,151,61,145,61,211,15,33,208,8,33,114,8,0,
+ 0,0,99,1,0,0,0,0,0,0,0,0,0,0,0,3,
+ 0,0,0,3,0,0,0,243,36,0,0,0,151,0,100,1,
+ 106,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,124,0,171,1,0,0,0,0,0,0,83,0,
+ 41,2,78,122,38,123,48,46,95,95,99,108,97,115,115,95,
+ 95,46,95,95,110,97,109,101,95,95,125,40,123,48,46,95,
+ 109,97,112,112,105,110,103,33,114,125,41,41,1,218,6,102,
+ 111,114,109,97,116,114,60,0,0,0,115,1,0,0,0,32,
+ 114,9,0,0,0,114,194,0,0,0,122,20,77,97,112,112,
+ 105,110,103,86,105,101,119,46,95,95,114,101,112,114,95,95,
+ 83,3,0,0,115,19,0,0,0,128,0,216,15,55,215,15,
+ 62,209,15,62,184,116,211,15,68,208,8,68,114,8,0,0,
+ 0,78,41,10,114,69,0,0,0,114,70,0,0,0,114,71,
+ 0,0,0,114,72,0,0,0,114,88,1,0,0,114,152,0,
+ 0,0,114,194,0,0,0,114,73,0,0,0,114,80,0,0,
+ 0,114,81,0,0,0,114,7,0,0,0,114,8,0,0,0,
+ 114,9,0,0,0,114,29,0,0,0,114,29,0,0,0,73,
+ 3,0,0,115,36,0,0,0,132,0,224,16,27,128,73,242,
+ 4,1,5,32,242,6,1,5,34,242,6,1,5,69,1,241,
+ 6,0,25,36,160,76,211,24,49,209,4,21,114,8,0,0,
+ 0,114,29,0,0,0,99,0,0,0,0,0,0,0,0,0,
+ 0,0,0,2,0,0,0,0,0,0,0,243,44,0,0,0,
+ 151,0,101,0,90,1,100,0,90,2,100,1,90,3,101,4,
+ 100,2,132,0,171,0,0,0,0,0,0,0,90,5,100,3,
+ 132,0,90,6,100,4,132,0,90,7,121,5,41,6,114,30,
+ 0,0,0,114,7,0,0,0,99,2,0,0,0,0,0,0,
+ 0,0,0,0,0,3,0,0,0,3,0,0,0,243,24,0,
+ 0,0,151,0,116,1,0,0,0,0,0,0,0,0,124,1,
+ 171,1,0,0,0,0,0,0,83,0,114,6,0,0,0,169,
+ 1,218,3,115,101,116,114,250,0,0,0,115,2,0,0,0,
+ 32,32,114,9,0,0,0,114,252,0,0,0,122,23,75,101,
+ 121,115,86,105,101,119,46,95,102,114,111,109,95,105,116,101,
+ 114,97,98,108,101,93,3,0,0,243,11,0,0,0,128,0,
+ 228,15,18,144,50,139,119,136,14,114,8,0,0,0,99,2,
+ 0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,3,
+ 0,0,0,243,30,0,0,0,151,0,124,1,124,0,106,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,118,0,83,0,114,6,0,0,0,114,84,1,0,0,
+ 114,65,1,0,0,115,2,0,0,0,32,32,114,9,0,0,
+ 0,114,158,0,0,0,122,21,75,101,121,115,86,105,101,119,
+ 46,95,95,99,111,110,116,97,105,110,115,95,95,97,3,0,
+ 0,115,17,0,0,0,128,0,216,15,18,144,100,151,109,145,
+ 109,208,15,35,208,8,35,114,8,0,0,0,99,1,0,0,
+ 0,0,0,0,0,0,0,0,0,3,0,0,0,35,0,0,
+ 0,243,56,0,0,0,75,0,1,0,151,0,124,0,106,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,69,0,100,0,123,3,0,0,150,2,151,2,134,5,
+ 5,0,1,0,121,0,55,0,140,5,173,3,119,1,114,6,
+ 0,0,0,114,84,1,0,0,114,60,0,0,0,115,1,0,
+ 0,0,32,114,9,0,0,0,114,132,0,0,0,122,17,75,
+ 101,121,115,86,105,101,119,46,95,95,105,116,101,114,95,95,
+ 100,3,0,0,115,19,0,0,0,232,0,248,128,0,216,19,
+ 23,151,61,145,61,215,8,32,210,8,32,250,115,12,0,0,
+ 0,130,16,26,1,146,1,24,4,147,6,26,1,78,169,8,
+ 114,69,0,0,0,114,70,0,0,0,114,71,0,0,0,114,
+ 72,0,0,0,114,73,0,0,0,114,252,0,0,0,114,158,
+ 0,0,0,114,132,0,0,0,114,7,0,0,0,114,8,0,
+ 0,0,114,9,0,0,0,114,30,0,0,0,114,30,0,0,
+ 0,89,3,0,0,115,35,0,0,0,132,0,224,16,18,128,
+ 73,224,5,16,241,2,1,5,23,243,3,0,6,17,240,2,
+ 1,5,23,242,6,1,5,36,243,6,1,5,33,114,8,0,
+ 0,0,114,30,0,0,0,99,0,0,0,0,0,0,0,0,
+ 0,0,0,0,2,0,0,0,0,0,0,0,243,44,0,0,
+ 0,151,0,101,0,90,1,100,0,90,2,100,1,90,3,101,
+ 4,100,2,132,0,171,0,0,0,0,0,0,0,90,5,100,
+ 3,132,0,90,6,100,4,132,0,90,7,121,5,41,6,114,
+ 31,0,0,0,114,7,0,0,0,99,2,0,0,0,0,0,
+ 0,0,0,0,0,0,3,0,0,0,3,0,0,0,243,24,
+ 0,0,0,151,0,116,1,0,0,0,0,0,0,0,0,124,
+ 1,171,1,0,0,0,0,0,0,83,0,114,6,0,0,0,
+ 114,94,1,0,0,114,250,0,0,0,115,2,0,0,0,32,
+ 32,114,9,0,0,0,114,252,0,0,0,122,24,73,116,101,
+ 109,115,86,105,101,119,46,95,102,114,111,109,95,105,116,101,
+ 114,97,98,108,101,111,3,0,0,114,96,1,0,0,114,8,
+ 0,0,0,99,2,0,0,0,0,0,0,0,0,0,0,0,
+ 4,0,0,0,3,0,0,0,243,96,0,0,0,151,0,124,
+ 1,92,2,0,0,125,2,125,3,9,0,124,0,106,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,124,2,25,0,0,0,125,4,124,4,124,3,117,0,120,
+ 1,115,5,1,0,124,4,124,3,107,40,0,0,83,0,35,
+ 0,116,2,0,0,0,0,0,0,0,0,36,0,114,3,1,
+ 0,89,0,121,1,119,0,120,3,89,0,119,1,114,156,0,
+ 0,0,41,2,114,85,1,0,0,114,43,1,0,0,41,5,
+ 114,61,0,0,0,114,202,0,0,0,114,66,1,0,0,114,
+ 87,0,0,0,218,1,118,115,5,0,0,0,32,32,32,32,
+ 32,114,9,0,0,0,114,158,0,0,0,122,22,73,116,101,
+ 109,115,86,105,101,119,46,95,95,99,111,110,116,97,105,110,
+ 115,95,95,115,3,0,0,115,71,0,0,0,128,0,216,21,
+ 25,137,10,136,3,136,85,240,2,5,9,44,216,16,20,151,
+ 13,145,13,152,99,209,16,34,136,65,240,8,0,20,21,152,
+ 5,144,58,210,19,43,160,17,160,101,161,26,208,12,43,248,
+ 244,7,0,16,24,242,0,1,9,25,217,19,24,240,3,1,
+ 9,25,250,115,12,0,0,0,135,15,33,0,161,9,45,3,
+ 172,1,45,3,99,1,0,0,0,0,0,0,0,0,0,0,
+ 0,4,0,0,0,35,0,0,0,243,84,0,0,0,75,0,
+ 1,0,151,0,124,0,106,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,68,0,93,21,0,0,
+ 125,1,124,1,124,0,106,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,124,1,25,0,0,0,
+ 102,2,150,1,151,1,1,0,140,23,4,0,121,0,173,3,
+ 119,1,114,6,0,0,0,114,84,1,0,0,114,65,1,0,
+ 0,115,2,0,0,0,32,32,114,9,0,0,0,114,132,0,
+ 0,0,122,18,73,116,101,109,115,86,105,101,119,46,95,95,
+ 105,116,101,114,95,95,124,3,0,0,115,45,0,0,0,232,
+ 0,248,128,0,216,19,23,151,61,145,61,242,0,1,9,44,
+ 136,67,216,19,22,152,4,159,13,153,13,160,99,209,24,42,
+ 208,18,43,211,12,43,241,3,1,9,44,249,115,4,0,0,
+ 0,130,38,40,1,78,114,99,1,0,0,114,7,0,0,0,
+ 114,8,0,0,0,114,9,0,0,0,114,31,0,0,0,114,
+ 31,0,0,0,107,3,0,0,115,35,0,0,0,132,0,224,
+ 16,18,128,73,224,5,16,241,2,1,5,23,243,3,0,6,
+ 17,240,2,1,5,23,242,6,7,5,44,243,18,2,5,44,
+ 114,8,0,0,0,114,31,0,0,0,99,0,0,0,0,0,
+ 0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,243,
+ 28,0,0,0,151,0,101,0,90,1,100,0,90,2,100,1,
+ 90,3,100,2,132,0,90,4,100,3,132,0,90,5,121,4,
+ 41,5,114,32,0,0,0,114,7,0,0,0,99,2,0,0,
+ 0,0,0,0,0,0,0,0,0,3,0,0,0,3,0,0,
+ 0,243,90,0,0,0,151,0,124,0,106,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,0,
+ 93,28,0,0,125,2,124,0,106,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,124,2,25,0,
+ 0,0,125,3,124,3,124,1,117,0,115,6,124,3,124,1,
+ 107,40,0,0,115,1,140,28,1,0,121,1,4,0,121,2,
+ 114,73,1,0,0,114,84,1,0,0,41,4,114,61,0,0,
+ 0,114,87,0,0,0,114,66,1,0,0,114,103,1,0,0,
+ 115,4,0,0,0,32,32,32,32,114,9,0,0,0,114,158,
+ 0,0,0,122,23,86,97,108,117,101,115,86,105,101,119,46,
+ 95,95,99,111,110,116,97,105,110,115,95,95,136,3,0,0,
+ 115,56,0,0,0,128,0,216,19,23,151,61,145,61,242,0,
+ 3,9,28,136,67,216,16,20,151,13,145,13,152,99,209,16,
+ 34,136,65,216,15,16,144,69,137,122,152,81,160,37,155,90,
+ 217,23,27,240,7,3,9,28,240,8,0,16,21,114,8,0,
+ 0,0,99,1,0,0,0,0,0,0,0,0,0,0,0,3,
+ 0,0,0,35,0,0,0,243,80,0,0,0,75,0,1,0,
+ 151,0,124,0,106,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,68,0,93,19,0,0,125,1,
+ 124,0,106,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,124,1,25,0,0,0,150,1,151,1,
+ 1,0,140,21,4,0,121,0,173,3,119,1,114,6,0,0,
+ 0,114,84,1,0,0,114,65,1,0,0,115,2,0,0,0,
+ 32,32,114,9,0,0,0,114,132,0,0,0,122,19,86,97,
+ 108,117,101,115,86,105,101,119,46,95,95,105,116,101,114,95,
+ 95,143,3,0,0,115,40,0,0,0,232,0,248,128,0,216,
+ 19,23,151,61,145,61,242,0,1,9,37,136,67,216,18,22,
+ 151,45,145,45,160,3,209,18,36,211,12,36,241,3,1,9,
+ 37,249,115,4,0,0,0,130,36,38,1,78,41,6,114,69,
+ 0,0,0,114,70,0,0,0,114,71,0,0,0,114,72,0,
+ 0,0,114,158,0,0,0,114,132,0,0,0,114,7,0,0,
+ 0,114,8,0,0,0,114,9,0,0,0,114,32,0,0,0,
+ 114,32,0,0,0,132,3,0,0,115,17,0,0,0,132,0,
+ 224,16,18,128,73,242,4,5,5,21,243,14,2,5,37,114,
+ 8,0,0,0,114,32,0,0,0,99,0,0,0,0,0,0,
+ 0,0,0,0,0,0,2,0,0,0,0,0,0,0,243,104,
+ 0,0,0,151,0,101,0,90,1,100,0,90,2,100,1,90,
+ 3,100,2,90,4,101,5,100,3,132,0,171,0,0,0,0,
+ 0,0,0,90,6,101,5,100,4,132,0,171,0,0,0,0,
+ 0,0,0,90,7,2,0,101,8,171,0,0,0,0,0,0,
+ 0,90,9,101,9,102,1,100,5,132,1,90,10,100,6,132,
+ 0,90,11,100,7,132,0,90,12,100,11,100,8,132,1,90,
+ 13,100,12,100,10,132,1,90,14,121,9,41,13,114,28,0,
+ 0,0,122,235,65,32,77,117,116,97,98,108,101,77,97,112,
+ 112,105,110,103,32,105,115,32,97,32,103,101,110,101,114,105,
+ 99,32,99,111,110,116,97,105,110,101,114,32,102,111,114,32,
+ 97,115,115,111,99,105,97,116,105,110,103,10,32,32,32,32,
+ 107,101,121,47,118,97,108,117,101,32,112,97,105,114,115,46,
+ 10,10,32,32,32,32,84,104,105,115,32,99,108,97,115,115,
+ 32,112,114,111,118,105,100,101,115,32,99,111,110,99,114,101,
+ 116,101,32,103,101,110,101,114,105,99,32,105,109,112,108,101,
+ 109,101,110,116,97,116,105,111,110,115,32,111,102,32,97,108,
+ 108,10,32,32,32,32,109,101,116,104,111,100,115,32,101,120,
+ 99,101,112,116,32,102,111,114,32,95,95,103,101,116,105,116,
+ 101,109,95,95,44,32,95,95,115,101,116,105,116,101,109,95,
+ 95,44,32,95,95,100,101,108,105,116,101,109,95,95,44,10,
+ 32,32,32,32,95,95,105,116,101,114,95,95,44,32,97,110,
+ 100,32,95,95,108,101,110,95,95,46,10,32,32,32,32,114,
+ 7,0,0,0,99,3,0,0,0,0,0,0,0,0,0,0,
+ 0,1,0,0,0,3,0,0,0,243,14,0,0,0,151,0,
+ 116,0,0,0,0,0,0,0,0,0,130,1,114,6,0,0,
+ 0,114,64,1,0,0,169,3,114,61,0,0,0,114,66,1,
+ 0,0,114,87,0,0,0,115,3,0,0,0,32,32,32,114,
+ 9,0,0,0,218,11,95,95,115,101,116,105,116,101,109,95,
+ 95,122,26,77,117,116,97,98,108,101,77,97,112,112,105,110,
+ 103,46,95,95,115,101,116,105,116,101,109,95,95,162,3,0,
+ 0,114,67,1,0,0,114,8,0,0,0,99,2,0,0,0,
+ 0,0,0,0,0,0,0,0,1,0,0,0,3,0,0,0,
+ 243,14,0,0,0,151,0,116,0,0,0,0,0,0,0,0,
+ 0,130,1,114,6,0,0,0,114,64,1,0,0,114,65,1,
+ 0,0,115,2,0,0,0,32,32,114,9,0,0,0,218,11,
+ 95,95,100,101,108,105,116,101,109,95,95,122,26,77,117,116,
+ 97,98,108,101,77,97,112,112,105,110,103,46,95,95,100,101,
+ 108,105,116,101,109,95,95,166,3,0,0,114,67,1,0,0,
+ 114,8,0,0,0,99,3,0,0,0,0,0,0,0,0,0,
+ 0,0,4,0,0,0,3,0,0,0,243,88,0,0,0,151,
+ 0,9,0,124,0,124,1,25,0,0,0,125,3,124,0,124,
+ 1,61,0,124,3,83,0,35,0,116,0,0,0,0,0,0,
+ 0,0,0,36,0,114,20,1,0,124,2,124,0,106,2,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,117,0,114,1,130,0,124,2,99,2,89,0,83,0,119,
+ 0,120,3,89,0,119,1,41,1,122,169,68,46,112,111,112,
+ 40,107,91,44,100,93,41,32,45,62,32,118,44,32,114,101,
+ 109,111,118,101,32,115,112,101,99,105,102,105,101,100,32,107,
+ 101,121,32,97,110,100,32,114,101,116,117,114,110,32,116,104,
+ 101,32,99,111,114,114,101,115,112,111,110,100,105,110,103,32,
+ 118,97,108,117,101,46,10,32,32,32,32,32,32,32,32,32,
+ 32,73,102,32,107,101,121,32,105,115,32,110,111,116,32,102,
+ 111,117,110,100,44,32,100,32,105,115,32,114,101,116,117,114,
+ 110,101,100,32,105,102,32,103,105,118,101,110,44,32,111,116,
+ 104,101,114,119,105,115,101,32,75,101,121,69,114,114,111,114,
+ 32,105,115,32,114,97,105,115,101,100,46,10,32,32,32,32,
+ 32,32,32,32,41,2,114,43,1,0,0,218,23,95,77,117,
+ 116,97,98,108,101,77,97,112,112,105,110,103,95,95,109,97,
+ 114,107,101,114,41,4,114,61,0,0,0,114,66,1,0,0,
+ 114,70,1,0,0,114,87,0,0,0,115,4,0,0,0,32,
+ 32,32,32,114,9,0,0,0,114,49,1,0,0,122,18,77,
+ 117,116,97,98,108,101,77,97,112,112,105,110,103,46,112,111,
+ 112,172,3,0,0,115,67,0,0,0,128,0,240,8,8,9,
+ 25,216,20,24,152,19,145,73,136,69,240,12,0,17,21,144,
+ 83,144,9,216,19,24,136,76,248,244,13,0,16,24,242,0,
+ 3,9,27,216,15,22,152,36,159,45,153,45,209,15,39,216,
+ 16,21,216,19,26,138,78,240,7,3,9,27,250,115,12,0,
+ 0,0,130,5,12,0,140,26,41,3,168,1,41,3,99,1,
+ 0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,3,
+ 0,0,0,243,108,0,0,0,151,0,9,0,116,1,0,0,
+ 0,0,0,0,0,0,116,3,0,0,0,0,0,0,0,0,
+ 124,0,171,1,0,0,0,0,0,0,171,1,0,0,0,0,
+ 0,0,125,1,124,0,124,1,25,0,0,0,125,2,124,0,
+ 124,1,61,0,124,1,124,2,102,2,83,0,35,0,116,4,
+ 0,0,0,0,0,0,0,0,36,0,114,8,1,0,116,6,
+ 0,0,0,0,0,0,0,0,100,1,130,2,119,0,120,3,
+ 89,0,119,1,41,2,122,131,68,46,112,111,112,105,116,101,
+ 109,40,41,32,45,62,32,40,107,44,32,118,41,44,32,114,
+ 101,109,111,118,101,32,97,110,100,32,114,101,116,117,114,110,
+ 32,115,111,109,101,32,40,107,101,121,44,32,118,97,108,117,
+ 101,41,32,112,97,105,114,10,32,32,32,32,32,32,32,32,
+ 32,32,32,97,115,32,97,32,50,45,116,117,112,108,101,59,
+ 32,98,117,116,32,114,97,105,115,101,32,75,101,121,69,114,
+ 114,111,114,32,105,102,32,68,32,105,115,32,101,109,112,116,
+ 121,46,10,32,32,32,32,32,32,32,32,78,41,4,114,47,
+ 1,0,0,114,46,1,0,0,114,85,0,0,0,114,43,1,
+ 0,0,114,110,1,0,0,115,3,0,0,0,32,32,32,114,
+ 9,0,0,0,218,7,112,111,112,105,116,101,109,122,22,77,
+ 117,116,97,98,108,101,77,97,112,112,105,110,103,46,112,111,
+ 112,105,116,101,109,186,3,0,0,115,74,0,0,0,128,0,
+ 240,8,3,9,37,220,18,22,148,116,152,68,147,122,211,18,
+ 34,136,67,240,6,0,17,21,144,83,145,9,136,5,216,12,
+ 16,144,19,136,73,216,15,18,144,69,136,122,208,8,25,248,
+ 244,9,0,16,29,242,0,1,9,37,220,18,26,160,4,208,
+ 12,36,240,3,1,9,37,250,115,8,0,0,0,130,20,34,
+ 0,162,17,51,3,99,1,0,0,0,0,0,0,0,0,0,
+ 0,0,4,0,0,0,3,0,0,0,243,70,0,0,0,151,
+ 0,9,0,9,0,124,0,106,1,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,171,0,0,0,0,
+ 0,0,0,1,0,140,17,35,0,116,2,0,0,0,0,0,
+ 0,0,0,36,0,114,3,1,0,89,0,121,1,119,0,120,
+ 3,89,0,119,1,41,2,122,44,68,46,99,108,101,97,114,
+ 40,41,32,45,62,32,78,111,110,101,46,32,32,82,101,109,
+ 111,118,101,32,97,108,108,32,105,116,101,109,115,32,102,114,
+ 111,109,32,68,46,78,41,2,114,117,1,0,0,114,43,1,
+ 0,0,114,60,0,0,0,115,1,0,0,0,32,114,9,0,
+ 0,0,114,51,1,0,0,122,20,77,117,116,97,98,108,101,
+ 77,97,112,112,105,110,103,46,99,108,101,97,114,198,3,0,
+ 0,115,42,0,0,0,128,0,240,4,4,9,17,216,18,22,
+ 216,16,20,151,12,145,12,148,14,240,3,0,19,23,248,228,
+ 15,23,242,0,1,9,17,217,12,16,240,3,1,9,17,250,
+ 114,52,1,0,0,99,2,0,0,0,2,0,0,0,0,0,
+ 0,0,4,0,0,0,11,0,0,0,243,240,0,0,0,151,
+ 0,116,1,0,0,0,0,0,0,0,0,124,1,116,2,0,
+ 0,0,0,0,0,0,0,171,2,0,0,0,0,0,0,114,
+ 16,124,1,68,0,93,10,0,0,125,3,124,1,124,3,25,
+ 0,0,0,124,0,124,3,60,0,0,0,140,12,4,0,110,
+ 57,116,5,0,0,0,0,0,0,0,0,124,1,100,1,171,
+ 2,0,0,0,0,0,0,114,30,124,1,106,7,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,
+ 0,0,0,0,0,0,0,68,0,93,10,0,0,125,3,124,
+ 1,124,3,25,0,0,0,124,0,124,3,60,0,0,0,140,
+ 12,4,0,110,15,124,1,68,0,93,10,0,0,92,2,0,
+ 0,125,3,125,4,124,4,124,0,124,3,60,0,0,0,140,
+ 12,4,0,124,2,106,9,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,171,0,0,0,0,0,0,
+ 0,68,0,93,10,0,0,92,2,0,0,125,3,125,4,124,
+ 4,124,0,124,3,60,0,0,0,140,12,4,0,121,2,41,
+ 3,97,75,1,0,0,32,68,46,117,112,100,97,116,101,40,
+ 91,69,44,32,93,42,42,70,41,32,45,62,32,78,111,110,
+ 101,46,32,32,85,112,100,97,116,101,32,68,32,102,114,111,
+ 109,32,109,97,112,112,105,110,103,47,105,116,101,114,97,98,
+ 108,101,32,69,32,97,110,100,32,70,46,10,32,32,32,32,
+ 32,32,32,32,32,32,32,32,73,102,32,69,32,112,114,101,
+ 115,101,110,116,32,97,110,100,32,104,97,115,32,97,32,46,
+ 107,101,121,115,40,41,32,109,101,116,104,111,100,44,32,100,
+ 111,101,115,58,32,32,32,32,32,102,111,114,32,107,32,105,
+ 110,32,69,58,32,68,91,107,93,32,61,32,69,91,107,93,
+ 10,32,32,32,32,32,32,32,32,32,32,32,32,73,102,32,
+ 69,32,112,114,101,115,101,110,116,32,97,110,100,32,108,97,
+ 99,107,115,32,46,107,101,121,115,40,41,32,109,101,116,104,
+ 111,100,44,32,100,111,101,115,58,32,32,32,32,32,102,111,
+ 114,32,40,107,44,32,118,41,32,105,110,32,69,58,32,68,
+ 91,107,93,32,61,32,118,10,32,32,32,32,32,32,32,32,
+ 32,32,32,32,73,110,32,101,105,116,104,101,114,32,99,97,
+ 115,101,44,32,116,104,105,115,32,105,115,32,102,111,108,108,
+ 111,119,101,100,32,98,121,58,32,102,111,114,32,107,44,32,
+ 118,32,105,110,32,70,46,105,116,101,109,115,40,41,58,32,
+ 68,91,107,93,32,61,32,118,10,32,32,32,32,32,32,32,
+ 32,114,75,1,0,0,78,41,5,114,177,0,0,0,114,27,
+ 0,0,0,218,7,104,97,115,97,116,116,114,114,75,1,0,
+ 0,114,77,1,0,0,41,5,114,61,0,0,0,114,235,0,
+ 0,0,114,227,0,0,0,114,66,1,0,0,114,87,0,0,
+ 0,115,5,0,0,0,32,32,32,32,32,114,9,0,0,0,
+ 218,6,117,112,100,97,116,101,122,21,77,117,116,97,98,108,
+ 101,77,97,112,112,105,110,103,46,117,112,100,97,116,101,206,
+ 3,0,0,115,150,0,0,0,128,0,244,12,0,12,22,144,
+ 101,156,87,212,11,37,216,23,28,242,0,1,13,39,144,3,
+ 216,28,33,160,35,153,74,144,4,144,83,146,9,241,3,1,
+ 13,39,228,13,20,144,85,152,70,212,13,35,216,23,28,151,
+ 122,145,122,147,124,242,0,1,13,39,144,3,216,28,33,160,
+ 35,153,74,144,4,144,83,146,9,241,3,1,13,39,240,6,
+ 0,31,36,242,0,1,13,34,145,10,144,3,144,85,216,28,
+ 33,144,4,144,83,146,9,240,3,1,13,34,224,26,30,159,
+ 42,153,42,155,44,242,0,1,9,30,137,74,136,67,144,21,
+ 216,24,29,136,68,144,19,138,73,241,3,1,9,30,114,8,
+ 0,0,0,78,99,3,0,0,0,0,0,0,0,0,0,0,
+ 0,4,0,0,0,3,0,0,0,243,56,0,0,0,151,0,
+ 9,0,124,0,124,1,25,0,0,0,83,0,35,0,116,0,
+ 0,0,0,0,0,0,0,0,36,0,114,9,1,0,124,2,
+ 124,0,124,1,60,0,0,0,89,0,124,2,83,0,119,0,
+ 120,3,89,0,119,1,41,1,122,64,68,46,115,101,116,100,
+ 101,102,97,117,108,116,40,107,91,44,100,93,41,32,45,62,
+ 32,68,46,103,101,116,40,107,44,100,41,44,32,97,108,115,
+ 111,32,115,101,116,32,68,91,107,93,61,100,32,105,102,32,
+ 107,32,110,111,116,32,105,110,32,68,114,64,1,0,0,114,
+ 69,1,0,0,115,3,0,0,0,32,32,32,114,9,0,0,
+ 0,218,10,115,101,116,100,101,102,97,117,108,116,122,25,77,
+ 117,116,97,98,108,101,77,97,112,112,105,110,103,46,115,101,
+ 116,100,101,102,97,117,108,116,224,3,0,0,115,46,0,0,
+ 0,128,0,240,4,3,9,32,216,19,23,152,3,145,57,208,
+ 12,28,248,220,15,23,242,0,1,9,32,216,24,31,136,68,
+ 144,19,138,73,216,15,22,136,14,240,5,1,9,32,250,115,
+ 12,0,0,0,130,4,7,0,135,14,25,3,152,1,25,3,
+ 41,1,114,7,0,0,0,114,6,0,0,0,41,15,114,69,
+ 0,0,0,114,70,0,0,0,114,71,0,0,0,114,204,0,
+ 0,0,114,72,0,0,0,114,4,0,0,0,114,111,1,0,
+ 0,114,113,1,0,0,218,6,111,98,106,101,99,116,114,115,
+ 1,0,0,114,49,1,0,0,114,117,1,0,0,114,51,1,
+ 0,0,114,121,1,0,0,114,123,1,0,0,114,7,0,0,
+ 0,114,8,0,0,0,114,9,0,0,0,114,28,0,0,0,
+ 114,28,0,0,0,151,3,0,0,115,89,0,0,0,132,0,
+ 241,2,6,5,8,240,16,0,17,19,128,73,224,5,19,241,
+ 2,1,5,23,243,3,0,6,20,240,2,1,5,23,240,6,
+ 0,6,20,241,2,1,5,23,243,3,0,6,20,240,2,1,
+ 5,23,241,6,0,16,22,139,120,128,72,224,31,39,243,0,
+ 12,5,25,242,28,10,5,26,242,24,6,5,17,243,16,16,
+ 5,30,244,36,6,5,23,114,8,0,0,0,114,28,0,0,
+ 0,99,0,0,0,0,0,0,0,0,0,0,0,0,2,0,
+ 0,0,0,0,0,0,243,72,0,0,0,151,0,101,0,90,
+ 1,100,0,90,2,100,1,90,3,100,2,90,4,100,3,90,
+ 5,101,6,100,4,132,0,171,0,0,0,0,0,0,0,90,
+ 7,100,5,132,0,90,8,100,6,132,0,90,9,100,7,132,
+ 0,90,10,100,11,100,9,132,1,90,11,100,10,132,0,90,
+ 12,121,8,41,12,114,33,0,0,0,122,138,65,108,108,32,
+ 116,104,101,32,111,112,101,114,97,116,105,111,110,115,32,111,
+ 110,32,97,32,114,101,97,100,45,111,110,108,121,32,115,101,
+ 113,117,101,110,99,101,46,10,10,32,32,32,32,67,111,110,
+ 99,114,101,116,101,32,115,117,98,99,108,97,115,115,101,115,
+ 32,109,117,115,116,32,111,118,101,114,114,105,100,101,32,95,
+ 95,110,101,119,95,95,32,111,114,32,95,95,105,110,105,116,
+ 95,95,44,10,32,32,32,32,95,95,103,101,116,105,116,101,
+ 109,95,95,44,32,97,110,100,32,95,95,108,101,110,95,95,
+ 46,10,32,32,32,32,114,7,0,0,0,233,32,0,0,0,
+ 99,2,0,0,0,0,0,0,0,0,0,0,0,1,0,0,
+ 0,3,0,0,0,243,14,0,0,0,151,0,116,0,0,0,
+ 0,0,0,0,0,0,130,1,114,6,0,0,0,169,1,218,
+ 10,73,110,100,101,120,69,114,114,111,114,169,2,114,61,0,
+ 0,0,218,5,105,110,100,101,120,115,2,0,0,0,32,32,
+ 114,9,0,0,0,114,201,0,0,0,122,20,83,101,113,117,
+ 101,110,99,101,46,95,95,103,101,116,105,116,101,109,95,95,
+ 250,3,0,0,243,8,0,0,0,128,0,228,14,24,208,8,
+ 24,114,8,0,0,0,99,1,0,0,0,0,0,0,0,0,
+ 0,0,0,4,0,0,0,35,0,0,0,243,78,0,0,0,
+ 75,0,1,0,151,0,100,1,125,1,9,0,9,0,124,0,
+ 124,1,25,0,0,0,125,2,124,2,150,2,151,1,1,0,
+ 124,1,100,2,122,13,0,0,125,1,140,15,35,0,116,0,
+ 0,0,0,0,0,0,0,0,36,0,114,3,1,0,89,0,
+ 121,0,119,0,120,3,89,0,119,1,173,3,119,1,41,3,
+ 78,114,2,0,0,0,114,37,0,0,0,114,128,1,0,0,
+ 41,3,114,61,0,0,0,218,1,105,114,103,1,0,0,115,
+ 3,0,0,0,32,32,32,114,9,0,0,0,114,132,0,0,
+ 0,122,17,83,101,113,117,101,110,99,101,46,95,95,105,116,
+ 101,114,95,95,254,3,0,0,115,66,0,0,0,232,0,248,
+ 128,0,216,12,13,136,1,240,2,6,9,19,216,18,22,216,
+ 20,24,152,17,145,71,144,1,216,22,23,146,7,216,16,17,
+ 144,81,145,6,144,1,240,7,0,19,23,248,244,8,0,16,
+ 26,242,0,1,9,19,217,12,18,240,3,1,9,19,252,115,
+ 24,0,0,0,130,3,37,1,134,16,22,0,150,9,34,3,
+ 159,2,37,1,161,1,34,3,162,3,37,1,99,2,0,0,
+ 0,0,0,0,0,0,0,0,0,3,0,0,0,3,0,0,
+ 0,243,40,0,0,0,151,0,124,0,68,0,93,13,0,0,
+ 125,2,124,2,124,1,117,0,115,6,124,2,124,1,107,40,
+ 0,0,115,1,140,13,1,0,121,1,4,0,121,2,114,73,
+ 1,0,0,114,7,0,0,0,41,3,114,61,0,0,0,114,
+ 87,0,0,0,114,103,1,0,0,115,3,0,0,0,32,32,
+ 32,114,9,0,0,0,114,158,0,0,0,122,21,83,101,113,
+ 117,101,110,99,101,46,95,95,99,111,110,116,97,105,110,115,
+ 95,95,8,4,0,0,115,38,0,0,0,128,0,216,17,21,
+ 242,0,2,9,28,136,65,216,15,16,144,69,137,122,152,81,
+ 160,37,155,90,217,23,27,240,5,2,9,28,240,6,0,16,
+ 21,114,8,0,0,0,99,1,0,0,0,0,0,0,0,0,
+ 0,0,0,7,0,0,0,35,0,0,0,243,94,0,0,0,
+ 75,0,1,0,151,0,116,1,0,0,0,0,0,0,0,0,
+ 116,3,0,0,0,0,0,0,0,0,116,5,0,0,0,0,
+ 0,0,0,0,124,0,171,1,0,0,0,0,0,0,171,1,
+ 0,0,0,0,0,0,171,1,0,0,0,0,0,0,68,0,
+ 93,9,0,0,125,1,124,0,124,1,25,0,0,0,150,1,
+ 151,1,1,0,140,11,4,0,121,0,173,3,119,1,114,6,
+ 0,0,0,41,3,218,8,114,101,118,101,114,115,101,100,218,
+ 5,114,97,110,103,101,114,179,0,0,0,41,2,114,61,0,
+ 0,0,114,134,1,0,0,115,2,0,0,0,32,32,114,9,
+ 0,0,0,114,142,0,0,0,122,21,83,101,113,117,101,110,
+ 99,101,46,95,95,114,101,118,101,114,115,101,100,95,95,14,
+ 4,0,0,115,44,0,0,0,232,0,248,128,0,220,17,25,
+ 156,37,164,3,160,68,163,9,211,26,42,211,17,43,242,0,
+ 1,9,26,136,65,216,18,22,144,113,145,39,139,77,241,3,
+ 1,9,26,249,115,4,0,0,0,130,43,45,1,78,99,4,
+ 0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,3,
+ 0,0,0,243,238,0,0,0,151,0,124,2,129,29,124,2,
+ 100,1,107,2,0,0,114,24,116,1,0,0,0,0,0,0,
+ 0,0,116,3,0,0,0,0,0,0,0,0,124,0,171,1,
+ 0,0,0,0,0,0,124,2,122,0,0,0,100,1,171,2,
+ 0,0,0,0,0,0,125,2,124,3,129,19,124,3,100,1,
+ 107,2,0,0,114,14,124,3,116,3,0,0,0,0,0,0,
+ 0,0,124,0,171,1,0,0,0,0,0,0,122,13,0,0,
+ 125,3,124,2,125,4,124,3,129,5,124,4,124,3,107,2,
+ 0,0,114,31,9,0,124,0,124,4,25,0,0,0,125,5,
+ 124,5,124,1,117,0,115,5,124,5,124,1,107,40,0,0,
+ 114,2,124,4,83,0,124,4,100,2,122,13,0,0,125,4,
+ 124,3,128,1,140,25,124,4,124,3,107,2,0,0,114,1,
+ 140,31,116,6,0,0,0,0,0,0,0,0,130,1,35,0,
+ 116,4,0,0,0,0,0,0,0,0,36,0,114,8,1,0,
+ 89,0,116,6,0,0,0,0,0,0,0,0,130,1,119,0,
+ 120,3,89,0,119,1,41,3,122,230,83,46,105,110,100,101,
+ 120,40,118,97,108,117,101,44,32,91,115,116,97,114,116,44,
+ 32,91,115,116,111,112,93,93,41,32,45,62,32,105,110,116,
+ 101,103,101,114,32,45,45,32,114,101,116,117,114,110,32,102,
+ 105,114,115,116,32,105,110,100,101,120,32,111,102,32,118,97,
+ 108,117,101,46,10,32,32,32,32,32,32,32,32,32,32,32,
+ 82,97,105,115,101,115,32,86,97,108,117,101,69,114,114,111,
+ 114,32,105,102,32,116,104,101,32,118,97,108,117,101,32,105,
+ 115,32,110,111,116,32,112,114,101,115,101,110,116,46,10,10,
+ 32,32,32,32,32,32,32,32,32,32,32,83,117,112,112,111,
+ 114,116,105,110,103,32,115,116,97,114,116,32,97,110,100,32,
+ 115,116,111,112,32,97,114,103,117,109,101,110,116,115,32,105,
+ 115,32,111,112,116,105,111,110,97,108,44,32,98,117,116,10,
+ 32,32,32,32,32,32,32,32,32,32,32,114,101,99,111,109,
+ 109,101,110,100,101,100,46,10,32,32,32,32,32,32,32,32,
+ 114,2,0,0,0,114,37,0,0,0,41,4,218,3,109,97,
+ 120,114,179,0,0,0,114,129,1,0,0,218,10,86,97,108,
+ 117,101,69,114,114,111,114,41,6,114,61,0,0,0,114,87,
+ 0,0,0,218,5,115,116,97,114,116,218,4,115,116,111,112,
+ 114,134,1,0,0,114,103,1,0,0,115,6,0,0,0,32,
+ 32,32,32,32,32,114,9,0,0,0,114,131,1,0,0,122,
+ 14,83,101,113,117,101,110,99,101,46,105,110,100,101,120,18,
+ 4,0,0,115,171,0,0,0,128,0,240,14,0,12,17,208,
+ 11,28,160,21,168,17,162,25,220,20,23,156,3,152,68,155,
+ 9,160,69,209,24,41,168,49,211,20,45,136,69,216,11,15,
+ 208,11,27,160,4,160,113,162,8,216,12,16,148,67,152,4,
+ 147,73,209,12,29,136,68,224,12,17,136,1,216,14,18,136,
+ 108,152,97,160,36,154,104,240,2,3,13,22,216,20,24,152,
+ 17,145,71,144,1,240,6,0,16,17,144,69,137,122,152,81,
+ 160,37,154,90,216,23,24,144,8,216,12,13,144,17,137,70,
+ 136,65,240,15,0,15,19,137,108,152,97,160,36,155,104,244,
+ 16,0,15,25,208,8,24,248,244,11,0,20,30,242,0,1,
+ 13,22,216,16,21,244,8,0,15,25,208,8,24,240,11,1,
+ 13,22,250,115,17,0,0,0,191,5,65,35,0,193,35,9,
+ 65,52,3,193,51,1,65,52,3,99,2,0,0,0,0,0,
+ 0,0,0,0,0,0,4,0,0,0,3,0,0,0,243,44,
+ 0,0,0,135,1,151,0,116,1,0,0,0,0,0,0,0,
+ 0,136,1,102,1,100,1,132,8,124,0,68,0,171,0,0,
+ 0,0,0,0,0,171,1,0,0,0,0,0,0,83,0,41,
+ 2,122,66,83,46,99,111,117,110,116,40,118,97,108,117,101,
+ 41,32,45,62,32,105,110,116,101,103,101,114,32,45,45,32,
+ 114,101,116,117,114,110,32,110,117,109,98,101,114,32,111,102,
+ 32,111,99,99,117,114,114,101,110,99,101,115,32,111,102,32,
+ 118,97,108,117,101,99,1,0,0,0,0,0,0,0,0,0,
+ 0,0,3,0,0,0,51,0,0,0,243,54,0,0,0,149,
+ 1,75,0,1,0,151,0,124,0,93,16,0,0,125,1,124,
+ 1,137,2,117,0,115,6,124,1,137,2,107,40,0,0,115,
+ 1,140,13,100,0,150,1,151,1,1,0,140,18,4,0,121,
+ 1,173,3,119,1,41,2,114,37,0,0,0,78,114,7,0,
+ 0,0,41,3,114,212,0,0,0,114,103,1,0,0,114,87,
+ 0,0,0,115,3,0,0,0,32,32,128,114,9,0,0,0,
+ 114,215,0,0,0,122,33,83,101,113,117,101,110,99,101,46,
+ 99,111,117,110,116,46,60,108,111,99,97,108,115,62,46,60,
+ 103,101,110,101,120,112,114,62,43,4,0,0,115,29,0,0,
+ 0,248,232,0,248,128,0,210,18,63,152,17,160,97,168,53,
+ 161,106,176,65,184,21,179,74,148,49,209,18,63,249,115,8,
+ 0,0,0,131,14,25,1,146,7,25,1,41,1,218,3,115,
+ 117,109,114,86,0,0,0,115,2,0,0,0,32,96,114,9,
+ 0,0,0,218,5,99,111,117,110,116,122,14,83,101,113,117,
+ 101,110,99,101,46,99,111,117,110,116,41,4,0,0,115,20,
+ 0,0,0,248,128,0,228,15,18,211,18,63,152,100,212,18,
+ 63,211,15,63,208,8,63,114,8,0,0,0,41,2,114,2,
+ 0,0,0,78,41,13,114,69,0,0,0,114,70,0,0,0,
+ 114,71,0,0,0,114,204,0,0,0,114,72,0,0,0,114,
+ 82,1,0,0,114,4,0,0,0,114,201,0,0,0,114,132,
+ 0,0,0,114,158,0,0,0,114,142,0,0,0,114,131,1,
+ 0,0,114,147,1,0,0,114,7,0,0,0,114,8,0,0,
+ 0,114,9,0,0,0,114,33,0,0,0,114,33,0,0,0,
+ 238,3,0,0,115,65,0,0,0,132,0,241,2,4,5,8,
+ 240,12,0,17,19,128,73,240,6,0,23,29,128,79,224,5,
+ 19,241,2,1,5,25,243,3,0,6,20,240,2,1,5,25,
+ 242,6,8,5,19,242,20,4,5,21,242,12,2,5,26,243,
+ 8,21,5,25,243,46,2,5,64,1,114,8,0,0,0,114,
+ 33,0,0,0,99,0,0,0,0,0,0,0,0,0,0,0,
+ 0,2,0,0,0,0,0,0,0,243,40,0,0,0,135,0,
+ 151,0,101,0,90,1,100,0,90,2,136,0,102,1,100,1,
+ 132,8,90,3,136,0,102,1,100,2,132,8,90,4,136,0,
+ 120,1,90,5,83,0,41,3,218,24,95,68,101,112,114,101,
+ 99,97,116,101,66,121,116,101,83,116,114,105,110,103,77,101,
+ 116,97,99,4,0,0,0,0,0,0,0,0,0,0,0,6,
+ 0,0,0,11,0,0,0,243,98,0,0,0,149,1,151,0,
+ 124,1,100,1,107,55,0,0,114,23,100,2,100,0,108,0,
+ 125,5,124,5,106,3,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,100,3,100,4,172,5,171,2,
+ 0,0,0,0,0,0,1,0,116,5,0,0,0,0,0,0,
+ 0,0,137,6,124,0,141,12,0,0,124,0,124,1,124,2,
+ 124,3,102,4,105,0,124,4,164,1,142,1,83,0,41,6,
+ 78,114,35,0,0,0,114,2,0,0,0,250,26,99,111,108,
+ 108,101,99,116,105,111,110,115,46,97,98,99,46,66,121,116,
+ 101,83,116,114,105,110,103,169,2,233,3,0,0,0,233,14,
+ 0,0,0,169,1,114,44,1,0,0,41,4,218,8,119,97,
+ 114,110,105,110,103,115,218,11,95,100,101,112,114,101,99,97,
+ 116,101,100,114,183,0,0,0,114,184,0,0,0,41,7,114,
+ 66,0,0,0,114,213,0,0,0,218,5,98,97,115,101,115,
+ 218,9,110,97,109,101,115,112,97,99,101,218,6,107,119,97,
+ 114,103,115,114,156,1,0,0,114,189,0,0,0,115,7,0,
+ 0,0,32,32,32,32,32,32,128,114,9,0,0,0,114,184,
+ 0,0,0,122,32,95,68,101,112,114,101,99,97,116,101,66,
+ 121,116,101,83,116,114,105,110,103,77,101,116,97,46,95,95,
+ 110,101,119,95,95,51,4,0,0,115,67,0,0,0,248,128,
+ 0,216,11,15,144,60,210,11,31,219,12,27,224,12,20,215,
+ 12,32,209,12,32,216,16,44,216,23,30,240,5,0,13,33,
+ 244,0,3,13,14,244,8,0,16,21,137,119,137,127,152,115,
+ 160,68,168,37,176,25,209,15,69,184,102,209,15,69,208,8,
+ 69,114,8,0,0,0,99,2,0,0,0,0,0,0,0,0,
+ 0,0,0,4,0,0,0,3,0,0,0,243,80,0,0,0,
+ 149,1,151,0,100,1,100,0,108,0,125,2,124,2,106,3,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,100,2,100,3,172,4,171,2,0,0,0,0,0,0,
+ 1,0,116,4,0,0,0,0,0,0,0,0,137,3,124,0,
+ 141,13,0,0,124,1,171,1,0,0,0,0,0,0,83,0,
+ 41,5,78,114,2,0,0,0,114,151,1,0,0,114,152,1,
+ 0,0,114,155,1,0,0,41,4,114,156,1,0,0,114,157,
+ 1,0,0,114,183,0,0,0,218,17,95,95,105,110,115,116,
+ 97,110,99,101,99,104,101,99,107,95,95,41,4,114,66,0,
+ 0,0,218,8,105,110,115,116,97,110,99,101,114,156,1,0,
+ 0,114,189,0,0,0,115,4,0,0,0,32,32,32,128,114,
+ 9,0,0,0,114,162,1,0,0,122,42,95,68,101,112,114,
+ 101,99,97,116,101,66,121,116,101,83,116,114,105,110,103,77,
+ 101,116,97,46,95,95,105,110,115,116,97,110,99,101,99,104,
+ 101,99,107,95,95,61,4,0,0,115,49,0,0,0,248,128,
+ 0,219,8,23,224,8,16,215,8,28,209,8,28,216,12,40,
+ 216,19,26,240,5,0,9,29,244,0,3,9,10,244,8,0,
+ 16,21,137,119,209,15,40,168,24,211,15,50,208,8,50,114,
+ 8,0,0,0,41,6,114,69,0,0,0,114,70,0,0,0,
+ 114,71,0,0,0,114,184,0,0,0,114,162,1,0,0,114,
+ 205,0,0,0,114,206,0,0,0,115,1,0,0,0,64,114,
+ 9,0,0,0,114,149,1,0,0,114,149,1,0,0,50,4,
+ 0,0,115,19,0,0,0,248,132,0,244,2,8,5,70,1,
+ 247,20,7,5,51,240,0,7,5,51,114,8,0,0,0,114,
+ 149,1,0,0,99,0,0,0,0,0,0,0,0,0,0,0,
+ 0,1,0,0,0,0,0,0,0,243,20,0,0,0,151,0,
+ 101,0,90,1,100,0,90,2,100,1,90,3,100,2,90,4,
+ 121,3,41,4,114,35,0,0,0,122,77,84,104,105,115,32,
+ 117,110,105,102,105,101,115,32,98,121,116,101,115,32,97,110,
+ 100,32,98,121,116,101,97,114,114,97,121,46,10,10,32,32,
+ 32,32,88,88,88,32,83,104,111,117,108,100,32,97,100,100,
+ 32,97,108,108,32,116,104,101,105,114,32,109,101,116,104,111,
+ 100,115,46,10,32,32,32,32,114,7,0,0,0,78,41,5,
+ 114,69,0,0,0,114,70,0,0,0,114,71,0,0,0,114,
+ 204,0,0,0,114,72,0,0,0,114,7,0,0,0,114,8,
+ 0,0,0,114,9,0,0,0,114,35,0,0,0,114,35,0,
+ 0,0,70,4,0,0,115,14,0,0,0,132,0,241,2,3,
+ 5,8,240,10,0,17,19,129,73,114,8,0,0,0,114,35,
+ 0,0,0,99,0,0,0,0,0,0,0,0,0,0,0,0,
+ 2,0,0,0,0,0,0,0,243,112,0,0,0,151,0,101,
+ 0,90,1,100,0,90,2,100,1,90,3,100,2,90,4,101,
+ 5,100,3,132,0,171,0,0,0,0,0,0,0,90,6,101,
+ 5,100,4,132,0,171,0,0,0,0,0,0,0,90,7,101,
+ 5,100,5,132,0,171,0,0,0,0,0,0,0,90,8,100,
+ 6,132,0,90,9,100,7,132,0,90,10,100,8,132,0,90,
+ 11,100,9,132,0,90,12,100,14,100,10,132,1,90,13,100,
+ 11,132,0,90,14,100,12,132,0,90,15,121,13,41,15,114,
+ 34,0,0,0,122,174,65,108,108,32,116,104,101,32,111,112,
+ 101,114,97,116,105,111,110,115,32,111,110,32,97,32,114,101,
+ 97,100,45,119,114,105,116,101,32,115,101,113,117,101,110,99,
+ 101,46,10,10,32,32,32,32,67,111,110,99,114,101,116,101,
+ 32,115,117,98,99,108,97,115,115,101,115,32,109,117,115,116,
+ 32,112,114,111,118,105,100,101,32,95,95,110,101,119,95,95,
+ 32,111,114,32,95,95,105,110,105,116,95,95,44,10,32,32,
+ 32,32,95,95,103,101,116,105,116,101,109,95,95,44,32,95,
+ 95,115,101,116,105,116,101,109,95,95,44,32,95,95,100,101,
+ 108,105,116,101,109,95,95,44,32,95,95,108,101,110,95,95,
+ 44,32,97,110,100,32,105,110,115,101,114,116,40,41,46,10,
+ 32,32,32,32,114,7,0,0,0,99,3,0,0,0,0,0,
+ 0,0,0,0,0,0,1,0,0,0,3,0,0,0,243,14,
+ 0,0,0,151,0,116,0,0,0,0,0,0,0,0,0,130,
+ 1,114,6,0,0,0,114,128,1,0,0,169,3,114,61,0,
+ 0,0,114,131,1,0,0,114,87,0,0,0,115,3,0,0,
+ 0,32,32,32,114,9,0,0,0,114,111,1,0,0,122,27,
+ 77,117,116,97,98,108,101,83,101,113,117,101,110,99,101,46,
+ 95,95,115,101,116,105,116,101,109,95,95,91,4,0,0,114,
+ 132,1,0,0,114,8,0,0,0,99,2,0,0,0,0,0,
+ 0,0,0,0,0,0,1,0,0,0,3,0,0,0,243,14,
+ 0,0,0,151,0,116,0,0,0,0,0,0,0,0,0,130,
+ 1,114,6,0,0,0,114,128,1,0,0,114,130,1,0,0,
+ 115,2,0,0,0,32,32,114,9,0,0,0,114,113,1,0,
+ 0,122,27,77,117,116,97,98,108,101,83,101,113,117,101,110,
+ 99,101,46,95,95,100,101,108,105,116,101,109,95,95,95,4,
+ 0,0,114,132,1,0,0,114,8,0,0,0,99,3,0,0,
+ 0,0,0,0,0,0,0,0,0,1,0,0,0,3,0,0,
+ 0,243,14,0,0,0,151,0,116,0,0,0,0,0,0,0,
+ 0,0,130,1,41,1,122,51,83,46,105,110,115,101,114,116,
+ 40,105,110,100,101,120,44,32,118,97,108,117,101,41,32,45,
+ 45,32,105,110,115,101,114,116,32,118,97,108,117,101,32,98,
+ 101,102,111,114,101,32,105,110,100,101,120,114,128,1,0,0,
+ 114,167,1,0,0,115,3,0,0,0,32,32,32,114,9,0,
+ 0,0,218,6,105,110,115,101,114,116,122,22,77,117,116,97,
+ 98,108,101,83,101,113,117,101,110,99,101,46,105,110,115,101,
+ 114,116,99,4,0,0,115,10,0,0,0,128,0,244,6,0,
+ 15,25,208,8,24,114,8,0,0,0,99,2,0,0,0,0,
+ 0,0,0,0,0,0,0,5,0,0,0,3,0,0,0,243,
+ 58,0,0,0,151,0,124,0,106,1,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,116,3,0,0,
+ 0,0,0,0,0,0,124,0,171,1,0,0,0,0,0,0,
+ 124,1,171,2,0,0,0,0,0,0,1,0,121,1,41,2,
+ 122,58,83,46,97,112,112,101,110,100,40,118,97,108,117,101,
+ 41,32,45,45,32,97,112,112,101,110,100,32,118,97,108,117,
+ 101,32,116,111,32,116,104,101,32,101,110,100,32,111,102,32,
+ 116,104,101,32,115,101,113,117,101,110,99,101,78,41,2,114,
+ 170,1,0,0,114,179,0,0,0,114,86,0,0,0,115,2,
+ 0,0,0,32,32,114,9,0,0,0,218,6,97,112,112,101,
+ 110,100,122,22,77,117,116,97,98,108,101,83,101,113,117,101,
+ 110,99,101,46,97,112,112,101,110,100,104,4,0,0,115,20,
+ 0,0,0,128,0,224,8,12,143,11,137,11,148,67,152,4,
+ 147,73,152,117,213,8,37,114,8,0,0,0,99,1,0,0,
+ 0,0,0,0,0,0,0,0,0,4,0,0,0,3,0,0,
+ 0,243,70,0,0,0,151,0,9,0,9,0,124,0,106,1,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,171,0,0,0,0,0,0,0,1,0,140,17,35,0,
+ 116,2,0,0,0,0,0,0,0,0,36,0,114,3,1,0,
+ 89,0,121,1,119,0,120,3,89,0,119,1,41,2,122,44,
+ 83,46,99,108,101,97,114,40,41,32,45,62,32,78,111,110,
+ 101,32,45,45,32,114,101,109,111,118,101,32,97,108,108,32,
+ 105,116,101,109,115,32,102,114,111,109,32,83,78,41,2,114,
+ 49,1,0,0,114,129,1,0,0,114,60,0,0,0,115,1,
+ 0,0,0,32,114,9,0,0,0,114,51,1,0,0,122,21,
+ 77,117,116,97,98,108,101,83,101,113,117,101,110,99,101,46,
+ 99,108,101,97,114,108,4,0,0,115,42,0,0,0,128,0,
+ 240,4,4,9,17,216,18,22,216,16,20,151,8,145,8,148,
+ 10,240,3,0,19,23,248,228,15,25,242,0,1,9,17,217,
+ 12,16,240,3,1,9,17,250,114,52,1,0,0,99,1,0,
+ 0,0,0,0,0,0,0,0,0,0,5,0,0,0,3,0,
+ 0,0,243,122,0,0,0,151,0,116,1,0,0,0,0,0,
+ 0,0,0,124,0,171,1,0,0,0,0,0,0,125,1,116,
+ 3,0,0,0,0,0,0,0,0,124,1,100,1,122,2,0,
+ 0,171,1,0,0,0,0,0,0,68,0,93,31,0,0,125,
+ 2,124,0,124,1,124,2,122,10,0,0,100,2,122,10,0,
+ 0,25,0,0,0,124,0,124,2,25,0,0,0,99,2,124,
+ 0,124,2,60,0,0,0,124,0,124,1,124,2,122,10,0,
+ 0,100,2,122,10,0,0,60,0,0,0,140,33,4,0,121,
+ 3,41,4,122,33,83,46,114,101,118,101,114,115,101,40,41,
+ 32,45,45,32,114,101,118,101,114,115,101,32,42,73,78,32,
+ 80,76,65,67,69,42,114,176,0,0,0,114,37,0,0,0,
+ 78,41,2,114,179,0,0,0,114,138,1,0,0,41,3,114,
+ 61,0,0,0,114,29,1,0,0,114,134,1,0,0,115,3,
+ 0,0,0,32,32,32,114,9,0,0,0,218,7,114,101,118,
+ 101,114,115,101,122,23,77,117,116,97,98,108,101,83,101,113,
+ 117,101,110,99,101,46,114,101,118,101,114,115,101,116,4,0,
+ 0,115,78,0,0,0,128,0,228,12,15,144,4,139,73,136,
+ 1,220,17,22,144,113,152,33,145,116,147,27,242,0,1,9,
+ 56,136,65,216,35,39,168,1,168,33,169,3,168,65,169,5,
+ 161,59,176,4,176,81,177,7,208,12,32,136,68,144,17,137,
+ 71,144,84,152,33,152,65,153,35,152,97,153,37,146,91,241,
+ 3,1,9,56,114,8,0,0,0,99,2,0,0,0,0,0,
+ 0,0,0,0,0,0,4,0,0,0,3,0,0,0,243,82,
+ 0,0,0,151,0,124,1,124,0,117,0,114,11,116,1,0,
+ 0,0,0,0,0,0,0,124,1,171,1,0,0,0,0,0,
+ 0,125,1,124,1,68,0,93,19,0,0,125,2,124,0,106,
+ 3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,124,2,171,1,0,0,0,0,0,0,1,0,140,
+ 21,4,0,121,1,41,2,122,77,83,46,101,120,116,101,110,
+ 100,40,105,116,101,114,97,98,108,101,41,32,45,45,32,101,
+ 120,116,101,110,100,32,115,101,113,117,101,110,99,101,32,98,
+ 121,32,97,112,112,101,110,100,105,110,103,32,101,108,101,109,
+ 101,110,116,115,32,102,114,111,109,32,116,104,101,32,105,116,
+ 101,114,97,98,108,101,78,41,2,114,181,0,0,0,114,172,
+ 1,0,0,41,3,114,61,0,0,0,114,79,1,0,0,114,
+ 103,1,0,0,115,3,0,0,0,32,32,32,114,9,0,0,
+ 0,218,6,101,120,116,101,110,100,122,22,77,117,116,97,98,
+ 108,101,83,101,113,117,101,110,99,101,46,101,120,116,101,110,
+ 100,122,4,0,0,115,44,0,0,0,128,0,224,11,17,144,
+ 84,137,62,220,21,25,152,38,147,92,136,70,216,17,23,242,
+ 0,1,9,27,136,65,216,12,16,143,75,137,75,152,1,141,
+ 78,241,3,1,9,27,114,8,0,0,0,99,2,0,0,0,
+ 0,0,0,0,0,0,0,0,2,0,0,0,3,0,0,0,
+ 243,22,0,0,0,151,0,124,0,124,1,25,0,0,0,125,
+ 2,124,0,124,1,61,0,124,2,83,0,41,1,122,153,83,
+ 46,112,111,112,40,91,105,110,100,101,120,93,41,32,45,62,
+ 32,105,116,101,109,32,45,45,32,114,101,109,111,118,101,32,
+ 97,110,100,32,114,101,116,117,114,110,32,105,116,101,109,32,
+ 97,116,32,105,110,100,101,120,32,40,100,101,102,97,117,108,
+ 116,32,108,97,115,116,41,46,10,32,32,32,32,32,32,32,
+ 32,32,32,32,82,97,105,115,101,32,73,110,100,101,120,69,
+ 114,114,111,114,32,105,102,32,108,105,115,116,32,105,115,32,
+ 101,109,112,116,121,32,111,114,32,105,110,100,101,120,32,105,
+ 115,32,111,117,116,32,111,102,32,114,97,110,103,101,46,10,
+ 32,32,32,32,32,32,32,32,114,7,0,0,0,41,3,114,
+ 61,0,0,0,114,131,1,0,0,114,103,1,0,0,115,3,
+ 0,0,0,32,32,32,114,9,0,0,0,114,49,1,0,0,
+ 122,19,77,117,116,97,98,108,101,83,101,113,117,101,110,99,
+ 101,46,112,111,112,129,4,0,0,115,25,0,0,0,128,0,
+ 240,8,0,13,17,144,21,137,75,136,1,216,12,16,144,21,
+ 136,75,216,15,16,136,8,114,8,0,0,0,99,2,0,0,
+ 0,0,0,0,0,0,0,0,0,4,0,0,0,3,0,0,
+ 0,243,40,0,0,0,151,0,124,0,124,0,106,1,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 124,1,171,1,0,0,0,0,0,0,61,0,121,1,41,2,
+ 122,118,83,46,114,101,109,111,118,101,40,118,97,108,117,101,
+ 41,32,45,45,32,114,101,109,111,118,101,32,102,105,114,115,
+ 116,32,111,99,99,117,114,114,101,110,99,101,32,111,102,32,
+ 118,97,108,117,101,46,10,32,32,32,32,32,32,32,32,32,
+ 32,32,82,97,105,115,101,32,86,97,108,117,101,69,114,114,
+ 111,114,32,105,102,32,116,104,101,32,118,97,108,117,101,32,
+ 105,115,32,110,111,116,32,112,114,101,115,101,110,116,46,10,
+ 32,32,32,32,32,32,32,32,78,41,1,114,131,1,0,0,
+ 114,86,0,0,0,115,2,0,0,0,32,32,114,9,0,0,
+ 0,114,44,1,0,0,122,22,77,117,116,97,98,108,101,83,
+ 101,113,117,101,110,99,101,46,114,101,109,111,118,101,137,4,
+ 0,0,115,21,0,0,0,128,0,240,8,0,13,17,144,20,
+ 151,26,145,26,152,69,211,17,34,209,12,35,114,8,0,0,
+ 0,99,2,0,0,0,0,0,0,0,0,0,0,0,3,0,
+ 0,0,3,0,0,0,243,40,0,0,0,151,0,124,0,106,
+ 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,124,1,171,1,0,0,0,0,0,0,1,0,124,
+ 0,83,0,114,6,0,0,0,41,1,114,177,1,0,0,41,
+ 2,114,61,0,0,0,114,79,1,0,0,115,2,0,0,0,
+ 32,32,114,9,0,0,0,218,8,95,95,105,97,100,100,95,
+ 95,122,24,77,117,116,97,98,108,101,83,101,113,117,101,110,
+ 99,101,46,95,95,105,97,100,100,95,95,143,4,0,0,115,
+ 19,0,0,0,128,0,216,8,12,143,11,137,11,144,70,212,
+ 8,27,216,15,19,136,11,114,8,0,0,0,78,41,1,114,
+ 191,0,0,0,41,16,114,69,0,0,0,114,70,0,0,0,
+ 114,71,0,0,0,114,204,0,0,0,114,72,0,0,0,114,
+ 4,0,0,0,114,111,1,0,0,114,113,1,0,0,114,170,
+ 1,0,0,114,172,1,0,0,114,51,1,0,0,114,175,1,
+ 0,0,114,177,1,0,0,114,49,1,0,0,114,44,1,0,
+ 0,114,181,1,0,0,114,7,0,0,0,114,8,0,0,0,
+ 114,9,0,0,0,114,34,0,0,0,114,34,0,0,0,82,
+ 4,0,0,115,107,0,0,0,132,0,241,2,4,5,8,240,
+ 12,0,17,19,128,73,224,5,19,241,2,1,5,25,243,3,
+ 0,6,20,240,2,1,5,25,240,6,0,6,20,241,2,1,
+ 5,25,243,3,0,6,20,240,2,1,5,25,240,6,0,6,
+ 20,241,2,2,5,25,243,3,0,6,20,240,2,2,5,25,
+ 242,8,2,5,38,242,8,6,5,17,242,16,4,5,56,242,
+ 12,5,5,27,243,14,6,5,17,242,16,4,5,36,243,12,
+ 2,5,20,114,8,0,0,0,114,34,0,0,0,41,85,114,
+ 204,0,0,0,218,3,97,98,99,114,3,0,0,0,114,4,
+ 0,0,0,114,24,1,0,0,114,217,0,0,0,114,181,0,
+ 0,0,114,171,0,0,0,114,80,0,0,0,218,12,69,108,
+ 108,105,112,115,105,115,84,121,112,101,114,10,0,0,0,114,
+ 223,0,0,0,218,7,95,95,97,108,108,95,95,114,69,0,
+ 0,0,114,46,1,0,0,218,14,98,121,116,101,115,95,105,
+ 116,101,114,97,116,111,114,218,9,98,121,116,101,97,114,114,
+ 97,121,218,18,98,121,116,101,97,114,114,97,121,95,105,116,
+ 101,114,97,116,111,114,114,75,1,0,0,218,16,100,105,99,
+ 116,95,107,101,121,105,116,101,114,97,116,111,114,114,79,1,
+ 0,0,218,18,100,105,99,116,95,118,97,108,117,101,105,116,
+ 101,114,97,116,111,114,114,77,1,0,0,218,17,100,105,99,
+ 116,95,105,116,101,109,105,116,101,114,97,116,111,114,218,13,
+ 108,105,115,116,95,105,116,101,114,97,116,111,114,114,137,1,
+ 0,0,218,20,108,105,115,116,95,114,101,118,101,114,115,101,
+ 105,116,101,114,97,116,111,114,114,138,1,0,0,218,14,114,
+ 97,110,103,101,95,105,116,101,114,97,116,111,114,218,18,108,
+ 111,110,103,114,97,110,103,101,95,105,116,101,114,97,116,111,
+ 114,114,95,1,0,0,218,12,115,101,116,95,105,116,101,114,
+ 97,116,111,114,218,12,115,116,114,95,105,116,101,114,97,116,
+ 111,114,218,14,116,117,112,108,101,95,105,116,101,114,97,116,
+ 111,114,218,3,122,105,112,218,12,122,105,112,95,105,116,101,
+ 114,97,116,111,114,218,9,100,105,99,116,95,107,101,121,115,
+ 218,11,100,105,99,116,95,118,97,108,117,101,115,218,10,100,
+ 105,99,116,95,105,116,101,109,115,114,49,0,0,0,218,12,
+ 109,97,112,112,105,110,103,112,114,111,120,121,218,9,103,101,
+ 110,101,114,97,116,111,114,114,42,0,0,0,218,9,99,111,
+ 114,111,117,116,105,110,101,114,104,0,0,0,114,45,0,0,
+ 0,218,15,97,115,121,110,99,95,103,101,110,101,114,97,116,
+ 111,114,114,56,0,0,0,114,16,0,0,0,114,11,0,0,
+ 0,114,12,0,0,0,218,8,114,101,103,105,115,116,101,114,
+ 114,13,0,0,0,114,14,0,0,0,114,15,0,0,0,114,
+ 17,0,0,0,114,18,0,0,0,114,20,0,0,0,114,19,
+ 0,0,0,114,21,0,0,0,114,22,0,0,0,114,24,0,
+ 0,0,114,36,0,0,0,114,174,0,0,0,114,182,0,0,
+ 0,114,196,0,0,0,114,23,0,0,0,114,25,0,0,0,
+ 218,9,102,114,111,122,101,110,115,101,116,114,26,0,0,0,
+ 114,27,0,0,0,114,29,0,0,0,114,30,0,0,0,114,
+ 31,0,0,0,114,32,0,0,0,114,28,0,0,0,114,81,
+ 1,0,0,114,33,0,0,0,114,178,0,0,0,218,3,115,
+ 116,114,114,172,0,0,0,114,149,1,0,0,114,35,0,0,
+ 0,218,5,98,121,116,101,115,114,34,0,0,0,114,7,0,
+ 0,0,114,8,0,0,0,114,9,0,0,0,250,8,60,109,
+ 111,100,117,108,101,62,114,211,1,0,0,1,0,0,0,115,
+ 1,5,0,0,240,3,1,1,1,241,8,3,1,4,247,62,
+ 0,1,40,219,0,10,225,15,19,144,68,152,19,145,73,139,
+ 127,128,12,217,15,19,144,67,139,121,128,12,218,0,14,217,
+ 15,19,144,66,139,120,128,12,216,4,6,242,4,9,11,13,
+ 128,7,240,30,0,12,29,128,8,241,18,0,18,22,145,100,
+ 152,51,147,105,147,31,128,14,217,21,25,153,36,153,121,155,
+ 123,211,26,43,211,21,44,208,0,18,225,19,23,153,4,152,
+ 82,159,87,153,87,155,89,155,15,211,19,40,208,0,16,217,
+ 21,25,153,36,152,114,159,121,153,121,155,123,211,26,43,211,
+ 21,44,208,0,18,217,20,24,153,20,152,98,159,104,153,104,
+ 155,106,211,25,41,211,20,42,208,0,17,217,16,20,145,84,
+ 152,34,147,88,147,14,128,13,217,23,27,153,68,161,24,168,
+ 34,163,28,211,28,46,211,23,47,208,0,20,217,17,21,145,
+ 100,153,53,160,17,155,56,147,110,211,17,37,128,14,217,21,
+ 25,153,36,153,117,160,81,168,36,161,89,211,31,47,211,26,
+ 48,211,21,49,208,0,18,217,15,19,145,68,153,19,155,21,
+ 147,75,211,15,32,128,12,217,15,19,145,68,152,18,147,72,
+ 139,126,128,12,217,17,21,145,100,152,50,147,104,147,30,128,
+ 14,217,15,19,145,68,153,19,155,21,147,75,211,15,32,128,
+ 12,225,12,16,144,18,151,23,145,23,147,25,139,79,128,9,
+ 217,14,18,144,50,151,57,145,57,147,59,211,14,31,128,11,
+ 217,13,17,144,34,151,40,145,40,147,42,211,13,29,128,10,
+ 225,15,19,144,68,151,77,145,77,211,15,34,128,12,217,12,
+ 16,146,47,211,17,36,211,12,37,128,9,226,0,23,217,8,
+ 13,139,7,128,5,217,12,16,144,21,139,75,128,9,216,0,
+ 5,135,11,129,11,132,13,216,4,9,226,0,22,217,6,9,
+ 131,101,128,3,217,18,22,144,115,147,41,128,15,216,4,7,
+ 242,10,10,1,16,244,24,12,1,30,152,23,245,0,12,1,
+ 30,244,30,14,1,50,152,39,245,0,14,1,50,244,34,38,
+ 1,30,144,9,244,0,38,1,30,240,82,1,0,1,10,215,
+ 0,18,209,0,18,144,57,212,0,29,244,6,14,1,50,152,
+ 103,245,0,14,1,50,244,34,16,1,30,144,77,244,0,16,
+ 1,30,244,38,45,1,30,144,93,244,0,45,1,30,240,96,
+ 1,0,1,15,215,0,23,209,0,23,152,15,212,0,40,244,
+ 6,15,1,50,152,23,245,0,15,1,50,244,36,16,1,30,
+ 136,120,244,0,16,1,30,240,38,0,1,9,215,0,17,209,
+ 0,17,144,46,212,0,33,216,0,8,215,0,17,209,0,17,
+ 208,18,36,212,0,37,224,0,8,215,0,17,209,0,17,208,
+ 18,34,212,0,35,216,0,8,215,0,17,209,0,17,208,18,
+ 36,212,0,37,216,0,8,215,0,17,209,0,17,208,18,35,
+ 212,0,36,216,0,8,215,0,17,209,0,17,144,45,212,0,
+ 32,216,0,8,215,0,17,209,0,17,208,18,38,212,0,39,
+ 216,0,8,215,0,17,209,0,17,144,46,212,0,33,216,0,
+ 8,215,0,17,209,0,17,208,18,36,212,0,37,216,0,8,
+ 215,0,17,209,0,17,144,44,212,0,31,216,0,8,215,0,
+ 17,209,0,17,144,44,212,0,31,216,0,8,215,0,17,209,
+ 0,17,144,46,212,0,33,216,0,8,215,0,17,209,0,17,
+ 144,44,212,0,31,244,6,13,1,30,144,24,244,0,13,1,
+ 30,244,32,45,1,30,144,8,244,0,45,1,30,240,96,1,
+ 0,1,10,215,0,18,209,0,18,144,57,212,0,29,244,6,
+ 12,1,30,144,103,245,0,12,1,30,244,30,14,1,50,152,
+ 39,245,0,14,1,50,244,34,8,1,30,144,21,152,8,160,
+ 41,244,0,8,1,30,244,22,12,1,30,144,119,245,0,12,
+ 1,30,244,30,52,1,64,1,152,76,244,0,52,1,64,1,
+ 242,108,1,10,1,86,1,242,24,15,1,21,244,36,14,1,
+ 59,152,23,245,0,14,1,59,244,40,71,2,1,17,136,42,
+ 244,0,71,2,1,17,240,84,4,0,1,4,135,12,129,12,
+ 136,89,212,0,23,244,6,77,1,1,20,144,19,244,0,77,
+ 1,1,20,240,96,2,0,1,11,215,0,19,209,0,19,144,
+ 67,212,0,24,244,10,49,1,24,136,106,244,0,49,1,24,
+ 240,102,1,0,1,8,215,0,16,209,0,16,144,28,212,0,
+ 30,244,6,13,1,50,144,37,244,0,13,1,50,244,32,12,
+ 1,33,136,123,152,67,244,0,12,1,33,240,30,0,1,9,
+ 215,0,17,209,0,17,144,41,212,0,28,244,6,19,1,44,
+ 144,11,152,83,244,0,19,1,44,240,44,0,1,10,215,0,
+ 18,209,0,18,144,58,212,0,30,244,6,13,1,37,144,27,
+ 152,106,244,0,13,1,37,240,32,0,1,11,215,0,19,209,
+ 0,19,144,75,212,0,32,244,6,79,1,1,23,144,87,244,
+ 0,79,1,1,23,240,100,2,0,1,15,215,0,23,209,0,
+ 23,152,4,212,0,29,244,10,61,1,64,1,136,122,152,58,
+ 244,0,61,1,64,1,240,126,1,0,1,9,215,0,17,209,
+ 0,17,144,37,212,0,24,216,0,8,215,0,17,209,0,17,
+ 144,35,212,0,22,216,0,8,215,0,17,209,0,17,144,37,
+ 212,0,24,216,0,8,215,0,17,209,0,17,144,42,212,0,
+ 29,244,4,18,1,51,152,119,244,0,18,1,51,244,40,6,
+ 1,19,144,24,208,37,61,245,0,6,1,19,240,16,0,1,
+ 11,215,0,19,209,0,19,144,69,212,0,26,216,0,10,215,
+ 0,19,209,0,19,144,73,212,0,30,244,6,63,1,20,144,
+ 104,244,0,63,1,20,240,68,2,0,1,16,215,0,24,209,
+ 0,24,152,20,212,0,30,216,0,15,215,0,24,209,0,24,
+ 152,25,213,0,35,114,8,0,0,0,
+};
diff --git a/contrib/tools/python3/Python/frozen_modules/_sitebuiltins.h b/contrib/tools/python3/Python/frozen_modules/_sitebuiltins.h
new file mode 100644
index 00000000000..7569a3ac216
--- /dev/null
+++ b/contrib/tools/python3/Python/frozen_modules/_sitebuiltins.h
@@ -0,0 +1,299 @@
+/* Auto-generated by Programs/_freeze_module.py */
+const unsigned char _Py_M___sitebuiltins[] = {
+ 227,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,
+ 0,0,0,0,0,243,82,0,0,0,151,0,100,0,90,0,
+ 100,1,100,2,108,1,90,1,2,0,71,0,100,3,132,0,
+ 100,4,101,2,171,3,0,0,0,0,0,0,90,3,2,0,
+ 71,0,100,5,132,0,100,6,101,2,171,3,0,0,0,0,
+ 0,0,90,4,2,0,71,0,100,7,132,0,100,8,101,2,
+ 171,3,0,0,0,0,0,0,90,5,121,2,41,9,122,61,
+ 10,84,104,101,32,111,98,106,101,99,116,115,32,117,115,101,
+ 100,32,98,121,32,116,104,101,32,115,105,116,101,32,109,111,
+ 100,117,108,101,32,116,111,32,97,100,100,32,99,117,115,116,
+ 111,109,32,98,117,105,108,116,105,110,115,46,10,233,0,0,
+ 0,0,78,99,0,0,0,0,0,0,0,0,0,0,0,0,
+ 2,0,0,0,0,0,0,0,243,32,0,0,0,151,0,101,
+ 0,90,1,100,0,90,2,100,1,132,0,90,3,100,2,132,
+ 0,90,4,100,5,100,4,132,1,90,5,121,3,41,6,218,
+ 7,81,117,105,116,116,101,114,99,3,0,0,0,0,0,0,
+ 0,0,0,0,0,2,0,0,0,3,0,0,0,243,32,0,
+ 0,0,151,0,124,1,124,0,95,0,0,0,0,0,0,0,
+ 0,0,124,2,124,0,95,1,0,0,0,0,0,0,0,0,
+ 121,0,169,1,78,169,2,218,4,110,97,109,101,218,3,101,
+ 111,102,41,3,218,4,115,101,108,102,114,8,0,0,0,114,
+ 9,0,0,0,115,3,0,0,0,32,32,32,250,22,60,102,
+ 114,111,122,101,110,32,95,115,105,116,101,98,117,105,108,116,
+ 105,110,115,62,218,8,95,95,105,110,105,116,95,95,122,16,
+ 81,117,105,116,116,101,114,46,95,95,105,110,105,116,95,95,
+ 14,0,0,0,115,16,0,0,0,128,0,216,20,24,136,4,
+ 140,9,216,19,22,136,4,141,8,243,0,0,0,0,99,1,
+ 0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,3,
+ 0,0,0,243,60,0,0,0,151,0,100,1,124,0,106,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,155,1,100,2,124,0,106,2,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,155,1,100,3,
+ 157,5,83,0,41,4,78,122,4,85,115,101,32,122,6,40,
+ 41,32,111,114,32,122,8,32,116,111,32,101,120,105,116,114,
+ 7,0,0,0,169,1,114,10,0,0,0,115,1,0,0,0,
+ 32,114,11,0,0,0,218,8,95,95,114,101,112,114,95,95,
+ 122,16,81,117,105,116,116,101,114,46,95,95,114,101,112,114,
+ 95,95,17,0,0,0,115,21,0,0,0,129,0,216,43,47,
+ 175,57,171,57,176,100,183,104,179,104,208,15,63,208,8,63,
+ 114,13,0,0,0,78,99,2,0,0,0,0,0,0,0,0,
+ 0,0,0,4,0,0,0,3,0,0,0,243,120,0,0,0,
+ 151,0,9,0,116,0,0,0,0,0,0,0,0,0,106,2,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,106,5,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,171,0,0,0,0,0,0,0,1,0,
+ 116,7,0,0,0,0,0,0,0,0,124,1,171,1,0,0,
+ 0,0,0,0,130,1,35,0,1,0,89,0,116,7,0,0,
+ 0,0,0,0,0,0,124,1,171,1,0,0,0,0,0,0,
+ 130,1,120,3,89,0,119,1,114,6,0,0,0,41,4,218,
+ 3,115,121,115,218,5,115,116,100,105,110,218,5,99,108,111,
+ 115,101,218,10,83,121,115,116,101,109,69,120,105,116,41,2,
+ 114,10,0,0,0,218,4,99,111,100,101,115,2,0,0,0,
+ 32,32,114,11,0,0,0,218,8,95,95,99,97,108,108,95,
+ 95,122,16,81,117,105,116,116,101,114,46,95,95,99,97,108,
+ 108,95,95,19,0,0,0,115,55,0,0,0,128,0,240,6,
+ 3,9,17,220,12,15,143,73,137,73,143,79,137,79,212,12,
+ 29,244,6,0,15,25,152,20,211,14,30,208,8,30,248,240,
+ 5,1,9,17,216,12,16,220,14,24,152,20,211,14,30,208,
+ 8,30,250,115,8,0,0,0,130,30,43,0,171,2,57,3,
+ 114,6,0,0,0,41,6,218,8,95,95,110,97,109,101,95,
+ 95,218,10,95,95,109,111,100,117,108,101,95,95,218,12,95,
+ 95,113,117,97,108,110,97,109,101,95,95,114,12,0,0,0,
+ 114,16,0,0,0,114,23,0,0,0,169,0,114,13,0,0,
+ 0,114,11,0,0,0,114,4,0,0,0,114,4,0,0,0,
+ 13,0,0,0,115,18,0,0,0,132,0,242,2,2,5,23,
+ 242,6,1,5,64,1,244,4,7,5,31,114,13,0,0,0,
+ 114,4,0,0,0,99,0,0,0,0,0,0,0,0,0,0,
+ 0,0,2,0,0,0,0,0,0,0,243,46,0,0,0,151,
+ 0,101,0,90,1,100,0,90,2,100,1,90,3,100,2,90,
+ 4,100,8,100,3,132,1,90,5,100,4,132,0,90,6,100,
+ 5,132,0,90,7,100,6,132,0,90,8,121,7,41,9,218,
+ 8,95,80,114,105,110,116,101,114,122,110,105,110,116,101,114,
+ 97,99,116,105,118,101,32,112,114,111,109,112,116,32,111,98,
+ 106,101,99,116,115,32,102,111,114,32,112,114,105,110,116,105,
+ 110,103,32,116,104,101,32,108,105,99,101,110,115,101,32,116,
+ 101,120,116,44,32,97,32,108,105,115,116,32,111,102,10,32,
+ 32,32,32,99,111,110,116,114,105,98,117,116,111,114,115,32,
+ 97,110,100,32,116,104,101,32,99,111,112,121,114,105,103,104,
+ 116,32,110,111,116,105,99,101,46,233,23,0,0,0,99,5,
+ 0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,3,
+ 0,0,0,243,178,0,0,0,151,0,100,1,100,0,108,0,
+ 125,5,124,1,124,0,95,1,0,0,0,0,0,0,0,0,
+ 124,2,124,0,95,2,0,0,0,0,0,0,0,0,100,0,
+ 124,0,95,3,0,0,0,0,0,0,0,0,124,4,68,0,
+ 143,6,143,7,99,3,103,0,99,2,93,37,0,0,125,6,
+ 124,3,68,0,93,30,0,0,125,7,124,5,106,8,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 106,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,124,6,124,7,171,2,0,0,0,0,0,0,
+ 145,3,140,32,4,0,140,39,4,0,99,3,125,7,125,6,
+ 124,0,95,6,0,0,0,0,0,0,0,0,121,0,99,2,
+ 1,0,99,3,125,7,125,6,119,0,169,2,78,114,2,0,
+ 0,0,41,7,218,2,111,115,218,14,95,80,114,105,110,116,
+ 101,114,95,95,110,97,109,101,218,14,95,80,114,105,110,116,
+ 101,114,95,95,100,97,116,97,218,15,95,80,114,105,110,116,
+ 101,114,95,95,108,105,110,101,115,218,4,112,97,116,104,218,
+ 4,106,111,105,110,218,19,95,80,114,105,110,116,101,114,95,
+ 95,102,105,108,101,110,97,109,101,115,41,8,114,10,0,0,
+ 0,114,8,0,0,0,218,4,100,97,116,97,218,5,102,105,
+ 108,101,115,218,4,100,105,114,115,114,33,0,0,0,218,3,
+ 100,105,114,218,8,102,105,108,101,110,97,109,101,115,8,0,
+ 0,0,32,32,32,32,32,32,32,32,114,11,0,0,0,114,
+ 12,0,0,0,122,17,95,80,114,105,110,116,101,114,46,95,
+ 95,105,110,105,116,95,95,35,0,0,0,115,92,0,0,0,
+ 128,0,219,8,17,216,22,26,136,4,140,11,216,22,26,136,
+ 4,140,11,216,23,27,136,4,140,12,224,39,43,247,3,2,
+ 28,51,216,32,35,216,44,49,242,5,2,28,51,224,32,40,
+ 240,5,0,29,31,159,71,153,71,159,76,153,76,168,19,168,
+ 104,213,28,55,240,0,2,28,51,208,28,55,243,0,2,28,
+ 51,136,4,213,8,24,249,243,0,2,28,51,115,5,0,0,
+ 0,159,42,65,19,6,99,1,0,0,0,0,0,0,0,0,
+ 0,0,0,7,0,0,0,3,0,0,0,243,70,1,0,0,
+ 151,0,124,0,106,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,114,1,121,0,100,0,125,1,
+ 124,0,106,2,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,68,0,93,42,0,0,125,2,9,0,
+ 116,5,0,0,0,0,0,0,0,0,124,2,100,1,172,2,
+ 171,2,0,0,0,0,0,0,53,0,125,3,124,3,106,7,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,171,0,0,0,0,0,0,0,125,1,100,0,100,0,
+ 100,0,171,2,0,0,0,0,0,0,1,0,1,0,110,1,
+ 4,0,124,1,115,12,124,0,106,10,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,125,1,124,1,
+ 106,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,100,3,171,1,0,0,0,0,0,0,124,0,
+ 95,0,0,0,0,0,0,0,0,0,116,15,0,0,0,0,
+ 0,0,0,0,124,0,106,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,171,1,0,0,0,0,
+ 0,0,124,0,95,8,0,0,0,0,0,0,0,0,121,0,
+ 35,0,49,0,115,1,119,2,1,0,89,0,1,0,1,0,
+ 140,75,120,3,89,0,119,1,35,0,116,8,0,0,0,0,
+ 0,0,0,0,36,0,114,3,1,0,89,0,140,131,119,0,
+ 120,3,89,0,119,1,41,4,78,122,5,117,116,102,45,56,
+ 41,1,218,8,101,110,99,111,100,105,110,103,250,1,10,41,
+ 9,114,36,0,0,0,114,39,0,0,0,218,4,111,112,101,
+ 110,218,4,114,101,97,100,218,7,79,83,69,114,114,111,114,
+ 114,35,0,0,0,218,5,115,112,108,105,116,218,3,108,101,
+ 110,218,17,95,80,114,105,110,116,101,114,95,95,108,105,110,
+ 101,99,110,116,41,4,114,10,0,0,0,114,40,0,0,0,
+ 114,44,0,0,0,218,2,102,112,115,4,0,0,0,32,32,
+ 32,32,114,11,0,0,0,218,7,95,95,115,101,116,117,112,
+ 122,16,95,80,114,105,110,116,101,114,46,95,95,115,101,116,
+ 117,112,44,0,0,0,115,155,0,0,0,128,0,216,11,15,
+ 143,60,138,60,216,12,18,216,15,19,136,4,216,24,28,215,
+ 24,40,209,24,40,242,0,6,9,21,136,72,240,2,5,13,
+ 21,220,21,25,152,40,168,87,212,21,53,240,0,1,17,37,
+ 184,18,216,27,29,159,55,153,55,155,57,144,68,247,3,1,
+ 17,37,225,16,21,240,9,6,9,21,241,14,0,16,20,216,
+ 19,23,151,59,145,59,136,68,216,23,27,151,122,145,122,160,
+ 36,211,23,39,136,4,140,12,220,25,28,152,84,159,92,153,
+ 92,211,25,42,136,4,141,14,247,17,1,17,37,240,0,1,
+ 17,37,251,244,6,0,20,27,242,0,1,13,21,217,16,20,
+ 240,3,1,13,21,250,115,39,0,0,0,160,13,66,20,2,
+ 173,17,66,8,5,190,8,66,20,2,194,8,5,66,17,9,
+ 194,13,7,66,20,2,194,20,9,66,32,5,194,31,1,66,
+ 32,5,99,1,0,0,0,0,0,0,0,0,0,0,0,3,
+ 0,0,0,3,0,0,0,243,194,0,0,0,151,0,124,0,
+ 106,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,171,0,0,0,0,0,0,0,1,0,116,3,
+ 0,0,0,0,0,0,0,0,124,0,106,4,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,1,
+ 0,0,0,0,0,0,124,0,106,6,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,107,26,0,0,
+ 114,27,100,1,106,9,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,124,0,106,4,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,1,
+ 0,0,0,0,0,0,83,0,100,2,124,0,106,10,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 102,1,100,3,122,5,0,0,122,6,0,0,83,0,41,4,
+ 78,114,47,0,0,0,122,33,84,121,112,101,32,37,115,40,
+ 41,32,116,111,32,115,101,101,32,116,104,101,32,102,117,108,
+ 108,32,37,115,32,116,101,120,116,233,2,0,0,0,41,6,
+ 218,15,95,80,114,105,110,116,101,114,95,95,115,101,116,117,
+ 112,114,52,0,0,0,114,36,0,0,0,218,8,77,65,88,
+ 76,73,78,69,83,114,38,0,0,0,114,34,0,0,0,114,
+ 15,0,0,0,115,1,0,0,0,32,114,11,0,0,0,114,
+ 16,0,0,0,122,17,95,80,114,105,110,116,101,114,46,95,
+ 95,114,101,112,114,95,95,60,0,0,0,115,73,0,0,0,
+ 128,0,216,8,12,143,12,137,12,140,14,220,11,14,136,116,
+ 143,124,137,124,211,11,28,160,4,167,13,161,13,210,11,45,
+ 216,19,23,151,57,145,57,152,84,159,92,153,92,211,19,42,
+ 208,12,42,224,19,54,184,52,191,59,185,59,184,46,200,17,
+ 209,58,74,209,19,75,208,12,75,114,13,0,0,0,99,1,
+ 0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,3,
+ 0,0,0,243,22,1,0,0,151,0,124,0,106,1,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 171,0,0,0,0,0,0,0,1,0,100,1,125,1,100,2,
+ 125,2,9,0,9,0,116,3,0,0,0,0,0,0,0,0,
+ 124,2,124,2,124,0,106,4,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,122,0,0,0,171,2,
+ 0,0,0,0,0,0,68,0,93,26,0,0,125,3,116,7,
+ 0,0,0,0,0,0,0,0,124,0,106,8,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,3,
+ 25,0,0,0,171,1,0,0,0,0,0,0,1,0,140,28,
+ 4,0,9,0,124,2,124,0,106,4,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,122,13,0,0,
+ 125,2,100,0,125,4,124,4,128,20,116,11,0,0,0,0,
+ 0,0,0,0,124,1,171,1,0,0,0,0,0,0,125,4,
+ 124,4,100,3,118,1,114,2,100,0,125,4,124,4,128,1,
+ 140,20,124,4,100,4,107,40,0,0,114,1,121,0,140,102,
+ 35,0,116,12,0,0,0,0,0,0,0,0,36,0,114,3,
+ 1,0,89,0,121,0,119,0,120,3,89,0,119,1,41,5,
+ 78,122,48,72,105,116,32,82,101,116,117,114,110,32,102,111,
+ 114,32,109,111,114,101,44,32,111,114,32,113,32,40,97,110,
+ 100,32,82,101,116,117,114,110,41,32,116,111,32,113,117,105,
+ 116,58,32,114,2,0,0,0,41,2,218,0,218,1,113,114,
+ 62,0,0,0,41,7,114,58,0,0,0,218,5,114,97,110,
+ 103,101,114,59,0,0,0,218,5,112,114,105,110,116,114,36,
+ 0,0,0,218,5,105,110,112,117,116,218,10,73,110,100,101,
+ 120,69,114,114,111,114,41,5,114,10,0,0,0,218,6,112,
+ 114,111,109,112,116,218,6,108,105,110,101,110,111,218,1,105,
+ 218,3,107,101,121,115,5,0,0,0,32,32,32,32,32,114,
+ 11,0,0,0,114,23,0,0,0,122,17,95,80,114,105,110,
+ 116,101,114,46,95,95,99,97,108,108,95,95,67,0,0,0,
+ 115,168,0,0,0,128,0,216,8,12,143,12,137,12,140,14,
+ 216,17,67,136,6,216,17,18,136,6,216,14,15,240,2,13,
+ 13,26,220,25,30,152,118,160,118,176,4,183,13,177,13,209,
+ 39,61,211,25,62,242,0,1,17,43,144,65,220,20,25,152,
+ 36,159,44,153,44,160,113,153,47,213,20,42,241,3,1,17,
+ 43,240,10,0,17,23,152,36,159,45,153,45,209,16,39,144,
+ 6,216,22,26,144,3,216,22,25,144,107,220,26,31,160,6,
+ 155,45,144,67,216,23,26,160,41,209,23,43,216,30,34,152,
+ 3,240,7,0,23,26,145,107,240,8,0,20,23,152,35,146,
+ 58,216,20,25,240,29,0,15,16,248,244,8,0,20,30,242,
+ 0,1,13,22,217,16,21,240,3,1,13,22,250,115,17,0,
+ 0,0,151,54,65,60,0,193,60,9,66,8,3,194,7,1,
+ 66,8,3,78,41,2,114,27,0,0,0,114,27,0,0,0,
+ 41,9,114,24,0,0,0,114,25,0,0,0,114,26,0,0,
+ 0,218,7,95,95,100,111,99,95,95,114,59,0,0,0,114,
+ 12,0,0,0,114,58,0,0,0,114,16,0,0,0,114,23,
+ 0,0,0,114,27,0,0,0,114,13,0,0,0,114,11,0,
+ 0,0,114,29,0,0,0,114,29,0,0,0,29,0,0,0,
+ 115,35,0,0,0,132,0,241,2,1,5,46,240,6,0,16,
+ 18,128,72,243,4,7,5,51,242,18,14,5,43,242,32,5,
+ 5,76,1,243,14,18,5,26,114,13,0,0,0,114,29,0,
+ 0,0,99,0,0,0,0,0,0,0,0,0,0,0,0,1,
+ 0,0,0,0,0,0,0,243,28,0,0,0,151,0,101,0,
+ 90,1,100,0,90,2,100,1,90,3,100,2,132,0,90,4,
+ 100,3,132,0,90,5,121,4,41,5,218,7,95,72,101,108,
+ 112,101,114,97,51,1,0,0,68,101,102,105,110,101,32,116,
+ 104,101,32,98,117,105,108,116,105,110,32,39,104,101,108,112,
+ 39,46,10,10,32,32,32,32,84,104,105,115,32,105,115,32,
+ 97,32,119,114,97,112,112,101,114,32,97,114,111,117,110,100,
+ 32,112,121,100,111,99,46,104,101,108,112,32,116,104,97,116,
+ 32,112,114,111,118,105,100,101,115,32,97,32,104,101,108,112,
+ 102,117,108,32,109,101,115,115,97,103,101,10,32,32,32,32,
+ 119,104,101,110,32,39,104,101,108,112,39,32,105,115,32,116,
+ 121,112,101,100,32,97,116,32,116,104,101,32,80,121,116,104,
+ 111,110,32,105,110,116,101,114,97,99,116,105,118,101,32,112,
+ 114,111,109,112,116,46,10,10,32,32,32,32,67,97,108,108,
+ 105,110,103,32,104,101,108,112,40,41,32,97,116,32,116,104,
+ 101,32,80,121,116,104,111,110,32,112,114,111,109,112,116,32,
+ 115,116,97,114,116,115,32,97,110,32,105,110,116,101,114,97,
+ 99,116,105,118,101,32,104,101,108,112,32,115,101,115,115,105,
+ 111,110,46,10,32,32,32,32,67,97,108,108,105,110,103,32,
+ 104,101,108,112,40,116,104,105,110,103,41,32,112,114,105,110,
+ 116,115,32,104,101,108,112,32,102,111,114,32,116,104,101,32,
+ 112,121,116,104,111,110,32,111,98,106,101,99,116,32,39,116,
+ 104,105,110,103,39,46,10,32,32,32,32,99,1,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,
+ 243,4,0,0,0,151,0,121,1,41,2,78,122,72,84,121,
+ 112,101,32,104,101,108,112,40,41,32,102,111,114,32,105,110,
+ 116,101,114,97,99,116,105,118,101,32,104,101,108,112,44,32,
+ 111,114,32,104,101,108,112,40,111,98,106,101,99,116,41,32,
+ 102,111,114,32,104,101,108,112,32,97,98,111,117,116,32,111,
+ 98,106,101,99,116,46,114,27,0,0,0,114,15,0,0,0,
+ 115,1,0,0,0,32,114,11,0,0,0,114,16,0,0,0,
+ 122,16,95,72,101,108,112,101,114,46,95,95,114,101,112,114,
+ 95,95,98,0,0,0,115,7,0,0,0,128,0,240,2,1,
+ 16,56,114,13,0,0,0,99,1,0,0,0,0,0,0,0,
+ 0,0,0,0,5,0,0,0,15,0,0,0,243,46,0,0,
+ 0,151,0,100,1,100,0,108,0,125,3,2,0,124,3,106,
+ 2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,124,1,105,0,124,2,164,1,142,1,83,0,114,
+ 32,0,0,0,41,2,218,5,112,121,100,111,99,218,4,104,
+ 101,108,112,41,4,114,10,0,0,0,218,4,97,114,103,115,
+ 218,4,107,119,100,115,114,76,0,0,0,115,4,0,0,0,
+ 32,32,32,32,114,11,0,0,0,114,23,0,0,0,122,16,
+ 95,72,101,108,112,101,114,46,95,95,99,97,108,108,95,95,
+ 101,0,0,0,115,27,0,0,0,128,0,219,8,20,216,15,
+ 25,136,117,143,122,137,122,152,52,208,15,40,160,52,209,15,
+ 40,208,8,40,114,13,0,0,0,78,41,6,114,24,0,0,
+ 0,114,25,0,0,0,114,26,0,0,0,114,71,0,0,0,
+ 114,16,0,0,0,114,23,0,0,0,114,27,0,0,0,114,
+ 13,0,0,0,114,11,0,0,0,114,73,0,0,0,114,73,
+ 0,0,0,88,0,0,0,115,17,0,0,0,132,0,241,2,
+ 7,5,8,242,18,2,5,56,243,6,2,5,41,114,13,0,
+ 0,0,114,73,0,0,0,41,6,114,71,0,0,0,114,18,
+ 0,0,0,218,6,111,98,106,101,99,116,114,4,0,0,0,
+ 114,29,0,0,0,114,73,0,0,0,114,27,0,0,0,114,
+ 13,0,0,0,114,11,0,0,0,250,8,60,109,111,100,117,
+ 108,101,62,114,81,0,0,0,1,0,0,0,115,52,0,0,
+ 0,240,3,1,1,1,241,2,2,1,4,243,20,0,1,11,
+ 244,4,13,1,31,136,102,244,0,13,1,31,244,32,56,1,
+ 26,136,118,244,0,56,1,26,244,118,1,15,1,41,136,102,
+ 245,0,15,1,41,114,13,0,0,0,
+};
diff --git a/contrib/tools/python3/Python/frozen_modules/abc.h b/contrib/tools/python3/Python/frozen_modules/abc.h
new file mode 100644
index 00000000000..ba88c8d67da
--- /dev/null
+++ b/contrib/tools/python3/Python/frozen_modules/abc.h
@@ -0,0 +1,505 @@
+/* Auto-generated by Programs/_freeze_module.py */
+const unsigned char _Py_M__abc[] = {
+ 227,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,
+ 0,0,0,0,0,243,226,0,0,0,151,0,100,0,90,0,
+ 100,1,132,0,90,1,2,0,71,0,100,2,132,0,100,3,
+ 101,2,171,3,0,0,0,0,0,0,90,3,2,0,71,0,
+ 100,4,132,0,100,5,101,4,171,3,0,0,0,0,0,0,
+ 90,5,2,0,71,0,100,6,132,0,100,7,101,6,171,3,
+ 0,0,0,0,0,0,90,7,9,0,100,8,100,9,108,8,
+ 109,9,90,9,109,10,90,10,109,11,90,11,109,12,90,12,
+ 109,13,90,13,109,14,90,14,109,15,90,15,109,16,90,16,
+ 1,0,2,0,71,0,100,10,132,0,100,11,101,17,171,3,
+ 0,0,0,0,0,0,90,18,100,14,132,0,90,22,2,0,
+ 71,0,100,15,132,0,100,16,101,18,172,17,171,3,0,0,
+ 0,0,0,0,90,23,121,18,35,0,101,19,36,0,114,18,
+ 1,0,100,8,100,12,108,20,109,18,90,18,109,9,90,9,
+ 1,0,100,13,101,18,95,21,0,0,0,0,0,0,0,0,
+ 89,0,140,38,119,0,120,3,89,0,119,1,41,19,122,51,
+ 65,98,115,116,114,97,99,116,32,66,97,115,101,32,67,108,
+ 97,115,115,101,115,32,40,65,66,67,115,41,32,97,99,99,
+ 111,114,100,105,110,103,32,116,111,32,80,69,80,32,51,49,
+ 49,57,46,99,1,0,0,0,0,0,0,0,0,0,0,0,
+ 2,0,0,0,3,0,0,0,243,20,0,0,0,151,0,100,
+ 1,124,0,95,0,0,0,0,0,0,0,0,0,124,0,83,
+ 0,41,2,97,73,2,0,0,65,32,100,101,99,111,114,97,
+ 116,111,114,32,105,110,100,105,99,97,116,105,110,103,32,97,
+ 98,115,116,114,97,99,116,32,109,101,116,104,111,100,115,46,
+ 10,10,32,32,32,32,82,101,113,117,105,114,101,115,32,116,
+ 104,97,116,32,116,104,101,32,109,101,116,97,99,108,97,115,
+ 115,32,105,115,32,65,66,67,77,101,116,97,32,111,114,32,
+ 100,101,114,105,118,101,100,32,102,114,111,109,32,105,116,46,
+ 32,32,65,10,32,32,32,32,99,108,97,115,115,32,116,104,
+ 97,116,32,104,97,115,32,97,32,109,101,116,97,99,108,97,
+ 115,115,32,100,101,114,105,118,101,100,32,102,114,111,109,32,
+ 65,66,67,77,101,116,97,32,99,97,110,110,111,116,32,98,
+ 101,10,32,32,32,32,105,110,115,116,97,110,116,105,97,116,
+ 101,100,32,117,110,108,101,115,115,32,97,108,108,32,111,102,
+ 32,105,116,115,32,97,98,115,116,114,97,99,116,32,109,101,
+ 116,104,111,100,115,32,97,114,101,32,111,118,101,114,114,105,
+ 100,100,101,110,46,10,32,32,32,32,84,104,101,32,97,98,
+ 115,116,114,97,99,116,32,109,101,116,104,111,100,115,32,99,
+ 97,110,32,98,101,32,99,97,108,108,101,100,32,117,115,105,
+ 110,103,32,97,110,121,32,111,102,32,116,104,101,32,110,111,
+ 114,109,97,108,10,32,32,32,32,39,115,117,112,101,114,39,
+ 32,99,97,108,108,32,109,101,99,104,97,110,105,115,109,115,
+ 46,32,32,97,98,115,116,114,97,99,116,109,101,116,104,111,
+ 100,40,41,32,109,97,121,32,98,101,32,117,115,101,100,32,
+ 116,111,32,100,101,99,108,97,114,101,10,32,32,32,32,97,
+ 98,115,116,114,97,99,116,32,109,101,116,104,111,100,115,32,
+ 102,111,114,32,112,114,111,112,101,114,116,105,101,115,32,97,
+ 110,100,32,100,101,115,99,114,105,112,116,111,114,115,46,10,
+ 10,32,32,32,32,85,115,97,103,101,58,10,10,32,32,32,
+ 32,32,32,32,32,99,108,97,115,115,32,67,40,109,101,116,
+ 97,99,108,97,115,115,61,65,66,67,77,101,116,97,41,58,
+ 10,32,32,32,32,32,32,32,32,32,32,32,32,64,97,98,
+ 115,116,114,97,99,116,109,101,116,104,111,100,10,32,32,32,
+ 32,32,32,32,32,32,32,32,32,100,101,102,32,109,121,95,
+ 97,98,115,116,114,97,99,116,95,109,101,116,104,111,100,40,
+ 115,101,108,102,44,32,97,114,103,49,44,32,97,114,103,50,
+ 44,32,97,114,103,78,41,58,10,32,32,32,32,32,32,32,
+ 32,32,32,32,32,32,32,32,32,46,46,46,10,32,32,32,
+ 32,84,41,1,218,20,95,95,105,115,97,98,115,116,114,97,
+ 99,116,109,101,116,104,111,100,95,95,41,1,218,7,102,117,
+ 110,99,111,98,106,115,1,0,0,0,32,250,12,60,102,114,
+ 111,122,101,110,32,97,98,99,62,218,14,97,98,115,116,114,
+ 97,99,116,109,101,116,104,111,100,114,6,0,0,0,7,0,
+ 0,0,115,17,0,0,0,128,0,240,34,0,36,40,128,71,
+ 212,4,32,216,11,18,128,78,243,0,0,0,0,99,0,0,
+ 0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,
+ 0,0,243,38,0,0,0,135,0,151,0,101,0,90,1,100,
+ 0,90,2,100,1,90,3,100,2,90,4,136,0,102,1,100,
+ 3,132,8,90,5,136,0,120,1,90,6,83,0,41,4,218,
+ 19,97,98,115,116,114,97,99,116,99,108,97,115,115,109,101,
+ 116,104,111,100,97,8,1,0,0,65,32,100,101,99,111,114,
+ 97,116,111,114,32,105,110,100,105,99,97,116,105,110,103,32,
+ 97,98,115,116,114,97,99,116,32,99,108,97,115,115,109,101,
+ 116,104,111,100,115,46,10,10,32,32,32,32,68,101,112,114,
+ 101,99,97,116,101,100,44,32,117,115,101,32,39,99,108,97,
+ 115,115,109,101,116,104,111,100,39,32,119,105,116,104,32,39,
+ 97,98,115,116,114,97,99,116,109,101,116,104,111,100,39,32,
+ 105,110,115,116,101,97,100,58,10,10,32,32,32,32,32,32,
+ 32,32,99,108,97,115,115,32,67,40,65,66,67,41,58,10,
+ 32,32,32,32,32,32,32,32,32,32,32,32,64,99,108,97,
+ 115,115,109,101,116,104,111,100,10,32,32,32,32,32,32,32,
+ 32,32,32,32,32,64,97,98,115,116,114,97,99,116,109,101,
+ 116,104,111,100,10,32,32,32,32,32,32,32,32,32,32,32,
+ 32,100,101,102,32,109,121,95,97,98,115,116,114,97,99,116,
+ 95,99,108,97,115,115,109,101,116,104,111,100,40,99,108,115,
+ 44,32,46,46,46,41,58,10,32,32,32,32,32,32,32,32,
+ 32,32,32,32,32,32,32,32,46,46,46,10,10,32,32,32,
+ 32,84,99,2,0,0,0,0,0,0,0,0,0,0,0,3,
+ 0,0,0,3,0,0,0,243,50,0,0,0,149,1,151,0,
+ 100,1,124,1,95,0,0,0,0,0,0,0,0,0,116,2,
+ 0,0,0,0,0,0,0,0,137,2,124,0,141,9,0,0,
+ 124,1,171,1,0,0,0,0,0,0,1,0,121,0,169,2,
+ 78,84,169,3,114,3,0,0,0,218,5,115,117,112,101,114,
+ 218,8,95,95,105,110,105,116,95,95,169,3,218,4,115,101,
+ 108,102,218,8,99,97,108,108,97,98,108,101,218,9,95,95,
+ 99,108,97,115,115,95,95,115,3,0,0,0,32,32,128,114,
+ 5,0,0,0,114,14,0,0,0,122,28,97,98,115,116,114,
+ 97,99,116,99,108,97,115,115,109,101,116,104,111,100,46,95,
+ 95,105,110,105,116,95,95,43,0,0,0,243,24,0,0,0,
+ 248,128,0,216,40,44,136,8,212,8,37,220,8,13,137,7,
+ 209,8,24,152,24,213,8,34,114,7,0,0,0,169,7,218,
+ 8,95,95,110,97,109,101,95,95,218,10,95,95,109,111,100,
+ 117,108,101,95,95,218,12,95,95,113,117,97,108,110,97,109,
+ 101,95,95,218,7,95,95,100,111,99,95,95,114,3,0,0,
+ 0,114,14,0,0,0,218,13,95,95,99,108,97,115,115,99,
+ 101,108,108,95,95,169,1,114,18,0,0,0,115,1,0,0,
+ 0,64,114,5,0,0,0,114,9,0,0,0,114,9,0,0,
+ 0,28,0,0,0,243,26,0,0,0,248,132,0,241,2,10,
+ 5,8,240,24,0,28,32,208,4,24,247,4,2,5,35,240,
+ 0,2,5,35,114,7,0,0,0,114,9,0,0,0,99,0,
+ 0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,
+ 0,0,0,243,38,0,0,0,135,0,151,0,101,0,90,1,
+ 100,0,90,2,100,1,90,3,100,2,90,4,136,0,102,1,
+ 100,3,132,8,90,5,136,0,120,1,90,6,83,0,41,4,
+ 218,20,97,98,115,116,114,97,99,116,115,116,97,116,105,99,
+ 109,101,116,104,111,100,97,7,1,0,0,65,32,100,101,99,
+ 111,114,97,116,111,114,32,105,110,100,105,99,97,116,105,110,
+ 103,32,97,98,115,116,114,97,99,116,32,115,116,97,116,105,
+ 99,109,101,116,104,111,100,115,46,10,10,32,32,32,32,68,
+ 101,112,114,101,99,97,116,101,100,44,32,117,115,101,32,39,
+ 115,116,97,116,105,99,109,101,116,104,111,100,39,32,119,105,
+ 116,104,32,39,97,98,115,116,114,97,99,116,109,101,116,104,
+ 111,100,39,32,105,110,115,116,101,97,100,58,10,10,32,32,
+ 32,32,32,32,32,32,99,108,97,115,115,32,67,40,65,66,
+ 67,41,58,10,32,32,32,32,32,32,32,32,32,32,32,32,
+ 64,115,116,97,116,105,99,109,101,116,104,111,100,10,32,32,
+ 32,32,32,32,32,32,32,32,32,32,64,97,98,115,116,114,
+ 97,99,116,109,101,116,104,111,100,10,32,32,32,32,32,32,
+ 32,32,32,32,32,32,100,101,102,32,109,121,95,97,98,115,
+ 116,114,97,99,116,95,115,116,97,116,105,99,109,101,116,104,
+ 111,100,40,46,46,46,41,58,10,32,32,32,32,32,32,32,
+ 32,32,32,32,32,32,32,32,32,46,46,46,10,10,32,32,
+ 32,32,84,99,2,0,0,0,0,0,0,0,0,0,0,0,
+ 3,0,0,0,3,0,0,0,243,50,0,0,0,149,1,151,
+ 0,100,1,124,1,95,0,0,0,0,0,0,0,0,0,116,
+ 2,0,0,0,0,0,0,0,0,137,2,124,0,141,9,0,
+ 0,124,1,171,1,0,0,0,0,0,0,1,0,121,0,114,
+ 11,0,0,0,114,12,0,0,0,114,15,0,0,0,115,3,
+ 0,0,0,32,32,128,114,5,0,0,0,114,14,0,0,0,
+ 122,29,97,98,115,116,114,97,99,116,115,116,97,116,105,99,
+ 109,101,116,104,111,100,46,95,95,105,110,105,116,95,95,63,
+ 0,0,0,114,19,0,0,0,114,7,0,0,0,114,20,0,
+ 0,0,114,26,0,0,0,115,1,0,0,0,64,114,5,0,
+ 0,0,114,29,0,0,0,114,29,0,0,0,48,0,0,0,
+ 114,27,0,0,0,114,7,0,0,0,114,29,0,0,0,99,
+ 0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,
+ 0,0,0,0,243,20,0,0,0,151,0,101,0,90,1,100,
+ 0,90,2,100,1,90,3,100,2,90,4,121,3,41,4,218,
+ 16,97,98,115,116,114,97,99,116,112,114,111,112,101,114,116,
+ 121,122,249,65,32,100,101,99,111,114,97,116,111,114,32,105,
+ 110,100,105,99,97,116,105,110,103,32,97,98,115,116,114,97,
+ 99,116,32,112,114,111,112,101,114,116,105,101,115,46,10,10,
+ 32,32,32,32,68,101,112,114,101,99,97,116,101,100,44,32,
+ 117,115,101,32,39,112,114,111,112,101,114,116,121,39,32,119,
+ 105,116,104,32,39,97,98,115,116,114,97,99,116,109,101,116,
+ 104,111,100,39,32,105,110,115,116,101,97,100,58,10,10,32,
+ 32,32,32,32,32,32,32,99,108,97,115,115,32,67,40,65,
+ 66,67,41,58,10,32,32,32,32,32,32,32,32,32,32,32,
+ 32,64,112,114,111,112,101,114,116,121,10,32,32,32,32,32,
+ 32,32,32,32,32,32,32,64,97,98,115,116,114,97,99,116,
+ 109,101,116,104,111,100,10,32,32,32,32,32,32,32,32,32,
+ 32,32,32,100,101,102,32,109,121,95,97,98,115,116,114,97,
+ 99,116,95,112,114,111,112,101,114,116,121,40,115,101,108,102,
+ 41,58,10,32,32,32,32,32,32,32,32,32,32,32,32,32,
+ 32,32,32,46,46,46,10,10,32,32,32,32,84,78,41,5,
+ 114,21,0,0,0,114,22,0,0,0,114,23,0,0,0,114,
+ 24,0,0,0,114,3,0,0,0,169,0,114,7,0,0,0,
+ 114,5,0,0,0,114,32,0,0,0,114,32,0,0,0,68,
+ 0,0,0,115,15,0,0,0,132,0,241,2,10,5,8,240,
+ 24,0,28,32,209,4,24,114,7,0,0,0,114,32,0,0,
+ 0,233,0,0,0,0,41,8,218,15,103,101,116,95,99,97,
+ 99,104,101,95,116,111,107,101,110,218,9,95,97,98,99,95,
+ 105,110,105,116,218,13,95,97,98,99,95,114,101,103,105,115,
+ 116,101,114,218,18,95,97,98,99,95,105,110,115,116,97,110,
+ 99,101,99,104,101,99,107,218,18,95,97,98,99,95,115,117,
+ 98,99,108,97,115,115,99,104,101,99,107,218,9,95,103,101,
+ 116,95,100,117,109,112,218,15,95,114,101,115,101,116,95,114,
+ 101,103,105,115,116,114,121,218,13,95,114,101,115,101,116,95,
+ 99,97,99,104,101,115,99,0,0,0,0,0,0,0,0,0,
+ 0,0,0,2,0,0,0,0,0,0,0,243,72,0,0,0,
+ 135,0,151,0,101,0,90,1,100,0,90,2,100,1,90,3,
+ 136,0,102,1,100,2,132,8,90,4,100,3,132,0,90,5,
+ 100,4,132,0,90,6,100,5,132,0,90,7,100,9,100,6,
+ 132,1,90,8,100,7,132,0,90,9,100,8,132,0,90,10,
+ 136,0,120,1,90,11,83,0,41,10,218,7,65,66,67,77,
+ 101,116,97,97,144,2,0,0,77,101,116,97,99,108,97,115,
+ 115,32,102,111,114,32,100,101,102,105,110,105,110,103,32,65,
+ 98,115,116,114,97,99,116,32,66,97,115,101,32,67,108,97,
+ 115,115,101,115,32,40,65,66,67,115,41,46,10,10,32,32,
+ 32,32,32,32,32,32,85,115,101,32,116,104,105,115,32,109,
+ 101,116,97,99,108,97,115,115,32,116,111,32,99,114,101,97,
+ 116,101,32,97,110,32,65,66,67,46,32,32,65,110,32,65,
+ 66,67,32,99,97,110,32,98,101,32,115,117,98,99,108,97,
+ 115,115,101,100,10,32,32,32,32,32,32,32,32,100,105,114,
+ 101,99,116,108,121,44,32,97,110,100,32,116,104,101,110,32,
+ 97,99,116,115,32,97,115,32,97,32,109,105,120,45,105,110,
+ 32,99,108,97,115,115,46,32,32,89,111,117,32,99,97,110,
+ 32,97,108,115,111,32,114,101,103,105,115,116,101,114,10,32,
+ 32,32,32,32,32,32,32,117,110,114,101,108,97,116,101,100,
+ 32,99,111,110,99,114,101,116,101,32,99,108,97,115,115,101,
+ 115,32,40,101,118,101,110,32,98,117,105,108,116,45,105,110,
+ 32,99,108,97,115,115,101,115,41,32,97,110,100,32,117,110,
+ 114,101,108,97,116,101,100,10,32,32,32,32,32,32,32,32,
+ 65,66,67,115,32,97,115,32,39,118,105,114,116,117,97,108,
+ 32,115,117,98,99,108,97,115,115,101,115,39,32,45,45,32,
+ 116,104,101,115,101,32,97,110,100,32,116,104,101,105,114,32,
+ 100,101,115,99,101,110,100,97,110,116,115,32,119,105,108,108,
+ 10,32,32,32,32,32,32,32,32,98,101,32,99,111,110,115,
+ 105,100,101,114,101,100,32,115,117,98,99,108,97,115,115,101,
+ 115,32,111,102,32,116,104,101,32,114,101,103,105,115,116,101,
+ 114,105,110,103,32,65,66,67,32,98,121,32,116,104,101,32,
+ 98,117,105,108,116,45,105,110,10,32,32,32,32,32,32,32,
+ 32,105,115,115,117,98,99,108,97,115,115,40,41,32,102,117,
+ 110,99,116,105,111,110,44,32,98,117,116,32,116,104,101,32,
+ 114,101,103,105,115,116,101,114,105,110,103,32,65,66,67,32,
+ 119,111,110,39,116,32,115,104,111,119,32,117,112,32,105,110,
+ 10,32,32,32,32,32,32,32,32,116,104,101,105,114,32,77,
+ 82,79,32,40,77,101,116,104,111,100,32,82,101,115,111,108,
+ 117,116,105,111,110,32,79,114,100,101,114,41,32,110,111,114,
+ 32,119,105,108,108,32,109,101,116,104,111,100,10,32,32,32,
+ 32,32,32,32,32,105,109,112,108,101,109,101,110,116,97,116,
+ 105,111,110,115,32,100,101,102,105,110,101,100,32,98,121,32,
+ 116,104,101,32,114,101,103,105,115,116,101,114,105,110,103,32,
+ 65,66,67,32,98,101,32,99,97,108,108,97,98,108,101,32,
+ 40,110,111,116,10,32,32,32,32,32,32,32,32,101,118,101,
+ 110,32,118,105,97,32,115,117,112,101,114,40,41,41,46,10,
+ 32,32,32,32,32,32,32,32,99,4,0,0,0,4,0,0,
+ 0,0,0,0,0,6,0,0,0,11,0,0,0,243,68,0,
+ 0,0,149,1,151,0,116,1,0,0,0,0,0,0,0,0,
+ 137,6,124,0,141,4,0,0,124,0,124,1,124,2,124,3,
+ 102,4,105,0,124,4,164,1,142,1,125,5,116,5,0,0,
+ 0,0,0,0,0,0,124,5,171,1,0,0,0,0,0,0,
+ 1,0,124,5,83,0,169,1,78,41,3,114,13,0,0,0,
+ 218,7,95,95,110,101,119,95,95,114,36,0,0,0,41,7,
+ 218,4,109,99,108,115,218,4,110,97,109,101,218,5,98,97,
+ 115,101,115,218,9,110,97,109,101,115,112,97,99,101,218,6,
+ 107,119,97,114,103,115,218,3,99,108,115,114,18,0,0,0,
+ 115,7,0,0,0,32,32,32,32,32,32,128,114,5,0,0,
+ 0,114,47,0,0,0,122,15,65,66,67,77,101,116,97,46,
+ 95,95,110,101,119,95,95,105,0,0,0,115,40,0,0,0,
+ 248,128,0,220,18,23,145,39,145,47,160,36,168,4,168,101,
+ 176,89,209,18,73,192,38,209,18,73,136,67,220,12,21,144,
+ 99,140,78,216,19,22,136,74,114,7,0,0,0,99,2,0,
+ 0,0,0,0,0,0,0,0,0,0,4,0,0,0,3,0,
+ 0,0,243,26,0,0,0,151,0,116,1,0,0,0,0,0,
+ 0,0,0,124,0,124,1,171,2,0,0,0,0,0,0,83,
+ 0,41,1,122,123,82,101,103,105,115,116,101,114,32,97,32,
+ 118,105,114,116,117,97,108,32,115,117,98,99,108,97,115,115,
+ 32,111,102,32,97,110,32,65,66,67,46,10,10,32,32,32,
+ 32,32,32,32,32,32,32,32,32,82,101,116,117,114,110,115,
+ 32,116,104,101,32,115,117,98,99,108,97,115,115,44,32,116,
+ 111,32,97,108,108,111,119,32,117,115,97,103,101,32,97,115,
+ 32,97,32,99,108,97,115,115,32,100,101,99,111,114,97,116,
+ 111,114,46,10,32,32,32,32,32,32,32,32,32,32,32,32,
+ 41,1,114,37,0,0,0,169,2,114,53,0,0,0,218,8,
+ 115,117,98,99,108,97,115,115,115,2,0,0,0,32,32,114,
+ 5,0,0,0,218,8,114,101,103,105,115,116,101,114,122,16,
+ 65,66,67,77,101,116,97,46,114,101,103,105,115,116,101,114,
+ 110,0,0,0,115,17,0,0,0,128,0,244,10,0,20,33,
+ 160,19,160,104,211,19,47,208,12,47,114,7,0,0,0,99,
+ 2,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,
+ 3,0,0,0,243,26,0,0,0,151,0,116,1,0,0,0,
+ 0,0,0,0,0,124,0,124,1,171,2,0,0,0,0,0,
+ 0,83,0,41,1,122,39,79,118,101,114,114,105,100,101,32,
+ 102,111,114,32,105,115,105,110,115,116,97,110,99,101,40,105,
+ 110,115,116,97,110,99,101,44,32,99,108,115,41,46,41,1,
+ 114,38,0,0,0,41,2,114,53,0,0,0,218,8,105,110,
+ 115,116,97,110,99,101,115,2,0,0,0,32,32,114,5,0,
+ 0,0,218,17,95,95,105,110,115,116,97,110,99,101,99,104,
+ 101,99,107,95,95,122,25,65,66,67,77,101,116,97,46,95,
+ 95,105,110,115,116,97,110,99,101,99,104,101,99,107,95,95,
+ 117,0,0,0,243,15,0,0,0,128,0,228,19,37,160,99,
+ 168,56,211,19,52,208,12,52,114,7,0,0,0,99,2,0,
+ 0,0,0,0,0,0,0,0,0,0,4,0,0,0,3,0,
+ 0,0,243,26,0,0,0,151,0,116,1,0,0,0,0,0,
+ 0,0,0,124,0,124,1,171,2,0,0,0,0,0,0,83,
+ 0,41,1,122,39,79,118,101,114,114,105,100,101,32,102,111,
+ 114,32,105,115,115,117,98,99,108,97,115,115,40,115,117,98,
+ 99,108,97,115,115,44,32,99,108,115,41,46,41,1,114,39,
+ 0,0,0,114,55,0,0,0,115,2,0,0,0,32,32,114,
+ 5,0,0,0,218,17,95,95,115,117,98,99,108,97,115,115,
+ 99,104,101,99,107,95,95,122,25,65,66,67,77,101,116,97,
+ 46,95,95,115,117,98,99,108,97,115,115,99,104,101,99,107,
+ 95,95,121,0,0,0,114,61,0,0,0,114,7,0,0,0,
+ 99,2,0,0,0,0,0,0,0,0,0,0,0,6,0,0,
+ 0,3,0,0,0,243,34,1,0,0,151,0,116,1,0,0,
+ 0,0,0,0,0,0,100,1,124,0,106,2,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,0,
+ 100,2,124,0,106,4,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,155,0,157,4,124,1,172,3,
+ 171,2,0,0,0,0,0,0,1,0,116,1,0,0,0,0,
+ 0,0,0,0,100,4,116,7,0,0,0,0,0,0,0,0,
+ 171,0,0,0,0,0,0,0,155,0,157,2,124,1,172,3,
+ 171,2,0,0,0,0,0,0,1,0,116,9,0,0,0,0,
+ 0,0,0,0,124,0,171,1,0,0,0,0,0,0,92,4,
+ 0,0,125,2,125,3,125,4,125,5,116,1,0,0,0,0,
+ 0,0,0,0,100,5,124,2,155,2,157,2,124,1,172,3,
+ 171,2,0,0,0,0,0,0,1,0,116,1,0,0,0,0,
+ 0,0,0,0,100,6,124,3,155,2,157,2,124,1,172,3,
+ 171,2,0,0,0,0,0,0,1,0,116,1,0,0,0,0,
+ 0,0,0,0,100,7,124,4,155,2,157,2,124,1,172,3,
+ 171,2,0,0,0,0,0,0,1,0,116,1,0,0,0,0,
+ 0,0,0,0,100,8,124,5,155,2,157,2,124,1,172,3,
+ 171,2,0,0,0,0,0,0,1,0,121,9,41,10,122,39,
+ 68,101,98,117,103,32,104,101,108,112,101,114,32,116,111,32,
+ 112,114,105,110,116,32,116,104,101,32,65,66,67,32,114,101,
+ 103,105,115,116,114,121,46,122,7,67,108,97,115,115,58,32,
+ 250,1,46,41,1,218,4,102,105,108,101,122,14,73,110,118,
+ 46,32,99,111,117,110,116,101,114,58,32,122,15,95,97,98,
+ 99,95,114,101,103,105,115,116,114,121,58,32,122,12,95,97,
+ 98,99,95,99,97,99,104,101,58,32,122,21,95,97,98,99,
+ 95,110,101,103,97,116,105,118,101,95,99,97,99,104,101,58,
+ 32,122,29,95,97,98,99,95,110,101,103,97,116,105,118,101,
+ 95,99,97,99,104,101,95,118,101,114,115,105,111,110,58,32,
+ 78,41,5,218,5,112,114,105,110,116,114,22,0,0,0,114,
+ 23,0,0,0,114,35,0,0,0,114,40,0,0,0,41,6,
+ 114,53,0,0,0,114,66,0,0,0,218,13,95,97,98,99,
+ 95,114,101,103,105,115,116,114,121,218,10,95,97,98,99,95,
+ 99,97,99,104,101,218,19,95,97,98,99,95,110,101,103,97,
+ 116,105,118,101,95,99,97,99,104,101,218,27,95,97,98,99,
+ 95,110,101,103,97,116,105,118,101,95,99,97,99,104,101,95,
+ 118,101,114,115,105,111,110,115,6,0,0,0,32,32,32,32,
+ 32,32,114,5,0,0,0,218,14,95,100,117,109,112,95,114,
+ 101,103,105,115,116,114,121,122,22,65,66,67,77,101,116,97,
+ 46,95,100,117,109,112,95,114,101,103,105,115,116,114,121,125,
+ 0,0,0,115,158,0,0,0,128,0,228,12,17,144,71,152,
+ 67,159,78,153,78,208,27,43,168,49,168,83,215,45,61,209,
+ 45,61,208,44,62,208,18,63,192,100,213,12,75,220,12,17,
+ 144,78,164,63,211,35,52,208,34,53,208,18,54,184,84,213,
+ 12,66,228,44,53,176,99,171,78,241,3,1,13,42,136,93,
+ 152,74,208,40,59,216,13,40,220,12,17,144,79,160,77,208,
+ 35,52,208,18,53,184,68,213,12,65,220,12,17,144,76,160,
+ 26,160,14,208,18,47,176,100,213,12,59,220,12,17,208,20,
+ 41,208,42,61,208,41,64,208,18,65,200,4,213,12,77,220,
+ 12,17,208,20,49,208,50,77,208,49,80,208,18,81,216,23,
+ 27,246,3,1,13,29,114,7,0,0,0,99,1,0,0,0,
+ 0,0,0,0,0,0,0,0,3,0,0,0,3,0,0,0,
+ 243,26,0,0,0,151,0,116,1,0,0,0,0,0,0,0,
+ 0,124,0,171,1,0,0,0,0,0,0,1,0,121,1,41,
+ 2,122,46,67,108,101,97,114,32,116,104,101,32,114,101,103,
+ 105,115,116,114,121,32,40,102,111,114,32,100,101,98,117,103,
+ 103,105,110,103,32,111,114,32,116,101,115,116,105,110,103,41,
+ 46,78,41,1,114,41,0,0,0,169,1,114,53,0,0,0,
+ 115,1,0,0,0,32,114,5,0,0,0,218,19,95,97,98,
+ 99,95,114,101,103,105,115,116,114,121,95,99,108,101,97,114,
+ 122,27,65,66,67,77,101,116,97,46,95,97,98,99,95,114,
+ 101,103,105,115,116,114,121,95,99,108,101,97,114,137,0,0,
+ 0,115,10,0,0,0,128,0,228,12,27,152,67,213,12,32,
+ 114,7,0,0,0,99,1,0,0,0,0,0,0,0,0,0,
+ 0,0,3,0,0,0,3,0,0,0,243,26,0,0,0,151,
+ 0,116,1,0,0,0,0,0,0,0,0,124,0,171,1,0,
+ 0,0,0,0,0,1,0,121,1,41,2,122,44,67,108,101,
+ 97,114,32,116,104,101,32,99,97,99,104,101,115,32,40,102,
+ 111,114,32,100,101,98,117,103,103,105,110,103,32,111,114,32,
+ 116,101,115,116,105,110,103,41,46,78,41,1,114,42,0,0,
+ 0,114,74,0,0,0,115,1,0,0,0,32,114,5,0,0,
+ 0,218,17,95,97,98,99,95,99,97,99,104,101,115,95,99,
+ 108,101,97,114,122,25,65,66,67,77,101,116,97,46,95,97,
+ 98,99,95,99,97,99,104,101,115,95,99,108,101,97,114,141,
+ 0,0,0,115,10,0,0,0,128,0,228,12,25,152,35,213,
+ 12,30,114,7,0,0,0,114,46,0,0,0,41,12,114,21,
+ 0,0,0,114,22,0,0,0,114,23,0,0,0,114,24,0,
+ 0,0,114,47,0,0,0,114,57,0,0,0,114,60,0,0,
+ 0,114,63,0,0,0,114,72,0,0,0,114,75,0,0,0,
+ 114,77,0,0,0,114,25,0,0,0,114,26,0,0,0,115,
+ 1,0,0,0,64,114,5,0,0,0,114,44,0,0,0,114,
+ 44,0,0,0,92,0,0,0,115,43,0,0,0,248,132,0,
+ 241,2,11,9,12,244,24,3,9,23,242,10,5,9,48,242,
+ 14,2,9,53,242,8,2,9,53,243,8,10,9,29,242,24,
+ 2,9,33,246,8,2,9,31,114,7,0,0,0,114,44,0,
+ 0,0,41,2,114,44,0,0,0,114,35,0,0,0,218,3,
+ 97,98,99,99,1,0,0,0,0,0,0,0,0,0,0,0,
+ 7,0,0,0,3,0,0,0,243,118,1,0,0,151,0,116,
+ 1,0,0,0,0,0,0,0,0,124,0,100,1,171,2,0,
+ 0,0,0,0,0,115,2,124,0,83,0,116,3,0,0,0,
+ 0,0,0,0,0,171,0,0,0,0,0,0,0,125,1,124,
+ 0,106,4,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,68,0,93,64,0,0,125,2,116,7,0,
+ 0,0,0,0,0,0,0,124,2,100,1,100,2,171,3,0,
+ 0,0,0,0,0,68,0,93,46,0,0,125,3,116,7,0,
+ 0,0,0,0,0,0,0,124,0,124,3,100,3,171,3,0,
+ 0,0,0,0,0,125,4,116,7,0,0,0,0,0,0,0,
+ 0,124,4,100,4,100,5,171,3,0,0,0,0,0,0,115,
+ 1,140,30,124,1,106,9,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,124,3,171,1,0,0,0,
+ 0,0,0,1,0,140,48,4,0,140,66,4,0,124,0,106,
+ 10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,106,13,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,171,0,0,0,0,0,0,0,68,
+ 0,93,36,0,0,92,2,0,0,125,3,125,4,116,7,0,
+ 0,0,0,0,0,0,0,124,4,100,4,100,5,171,3,0,
+ 0,0,0,0,0,115,1,140,20,124,1,106,9,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,
+ 3,171,1,0,0,0,0,0,0,1,0,140,38,4,0,116,
+ 15,0,0,0,0,0,0,0,0,124,1,171,1,0,0,0,
+ 0,0,0,124,0,95,8,0,0,0,0,0,0,0,0,124,
+ 0,83,0,41,6,97,155,2,0,0,82,101,99,97,108,99,
+ 117,108,97,116,101,32,116,104,101,32,115,101,116,32,111,102,
+ 32,97,98,115,116,114,97,99,116,32,109,101,116,104,111,100,
+ 115,32,111,102,32,97,110,32,97,98,115,116,114,97,99,116,
+ 32,99,108,97,115,115,46,10,10,32,32,32,32,73,102,32,
+ 97,32,99,108,97,115,115,32,104,97,115,32,104,97,100,32,
+ 111,110,101,32,111,102,32,105,116,115,32,97,98,115,116,114,
+ 97,99,116,32,109,101,116,104,111,100,115,32,105,109,112,108,
+ 101,109,101,110,116,101,100,32,97,102,116,101,114,32,116,104,
+ 101,10,32,32,32,32,99,108,97,115,115,32,119,97,115,32,
+ 99,114,101,97,116,101,100,44,32,116,104,101,32,109,101,116,
+ 104,111,100,32,119,105,108,108,32,110,111,116,32,98,101,32,
+ 99,111,110,115,105,100,101,114,101,100,32,105,109,112,108,101,
+ 109,101,110,116,101,100,32,117,110,116,105,108,10,32,32,32,
+ 32,116,104,105,115,32,102,117,110,99,116,105,111,110,32,105,
+ 115,32,99,97,108,108,101,100,46,32,65,108,116,101,114,110,
+ 97,116,105,118,101,108,121,44,32,105,102,32,97,32,110,101,
+ 119,32,97,98,115,116,114,97,99,116,32,109,101,116,104,111,
+ 100,32,104,97,115,32,98,101,101,110,10,32,32,32,32,97,
+ 100,100,101,100,32,116,111,32,116,104,101,32,99,108,97,115,
+ 115,44,32,105,116,32,119,105,108,108,32,111,110,108,121,32,
+ 98,101,32,99,111,110,115,105,100,101,114,101,100,32,97,110,
+ 32,97,98,115,116,114,97,99,116,32,109,101,116,104,111,100,
+ 32,111,102,32,116,104,101,10,32,32,32,32,99,108,97,115,
+ 115,32,97,102,116,101,114,32,116,104,105,115,32,102,117,110,
+ 99,116,105,111,110,32,105,115,32,99,97,108,108,101,100,46,
+ 10,10,32,32,32,32,84,104,105,115,32,102,117,110,99,116,
+ 105,111,110,32,115,104,111,117,108,100,32,98,101,32,99,97,
+ 108,108,101,100,32,98,101,102,111,114,101,32,97,110,121,32,
+ 117,115,101,32,105,115,32,109,97,100,101,32,111,102,32,116,
+ 104,101,32,99,108,97,115,115,44,10,32,32,32,32,117,115,
+ 117,97,108,108,121,32,105,110,32,99,108,97,115,115,32,100,
+ 101,99,111,114,97,116,111,114,115,32,116,104,97,116,32,97,
+ 100,100,32,109,101,116,104,111,100,115,32,116,111,32,116,104,
+ 101,32,115,117,98,106,101,99,116,32,99,108,97,115,115,46,
+ 10,10,32,32,32,32,82,101,116,117,114,110,115,32,99,108,
+ 115,44,32,116,111,32,97,108,108,111,119,32,117,115,97,103,
+ 101,32,97,115,32,97,32,99,108,97,115,115,32,100,101,99,
+ 111,114,97,116,111,114,46,10,10,32,32,32,32,73,102,32,
+ 99,108,115,32,105,115,32,110,111,116,32,97,110,32,105,110,
+ 115,116,97,110,99,101,32,111,102,32,65,66,67,77,101,116,
+ 97,44,32,100,111,101,115,32,110,111,116,104,105,110,103,46,
+ 10,32,32,32,32,218,19,95,95,97,98,115,116,114,97,99,
+ 116,109,101,116,104,111,100,115,95,95,114,33,0,0,0,78,
+ 114,3,0,0,0,70,41,9,218,7,104,97,115,97,116,116,
+ 114,218,3,115,101,116,218,9,95,95,98,97,115,101,115,95,
+ 95,218,7,103,101,116,97,116,116,114,218,3,97,100,100,218,
+ 8,95,95,100,105,99,116,95,95,218,5,105,116,101,109,115,
+ 218,9,102,114,111,122,101,110,115,101,116,114,80,0,0,0,
+ 41,5,114,53,0,0,0,218,9,97,98,115,116,114,97,99,
+ 116,115,218,4,115,99,108,115,114,49,0,0,0,218,5,118,
+ 97,108,117,101,115,5,0,0,0,32,32,32,32,32,114,5,
+ 0,0,0,218,22,117,112,100,97,116,101,95,97,98,115,116,
+ 114,97,99,116,109,101,116,104,111,100,115,114,92,0,0,0,
+ 146,0,0,0,115,193,0,0,0,128,0,244,32,0,12,19,
+ 144,51,208,24,45,212,11,46,240,8,0,16,19,136,10,228,
+ 16,19,147,5,128,73,240,6,0,17,20,151,13,145,13,242,
+ 0,4,5,36,136,4,220,20,27,152,68,208,34,55,184,18,
+ 211,20,60,242,0,3,9,36,136,68,220,20,27,152,67,160,
+ 20,160,116,211,20,44,136,69,220,15,22,144,117,208,30,52,
+ 176,101,213,15,60,216,16,25,151,13,145,13,152,100,213,16,
+ 35,241,7,3,9,36,240,3,4,5,36,240,12,0,24,27,
+ 151,124,145,124,215,23,41,209,23,41,211,23,43,242,0,2,
+ 5,32,137,11,136,4,136,101,220,11,18,144,53,208,26,48,
+ 176,37,213,11,56,216,12,21,143,77,137,77,152,36,213,12,
+ 31,240,5,2,5,32,244,6,0,31,40,168,9,211,30,50,
+ 128,67,212,4,27,216,11,14,128,74,114,7,0,0,0,99,
+ 0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,
+ 0,0,0,0,243,20,0,0,0,151,0,101,0,90,1,100,
+ 0,90,2,100,1,90,3,100,2,90,4,121,3,41,4,218,
+ 3,65,66,67,122,86,72,101,108,112,101,114,32,99,108,97,
+ 115,115,32,116,104,97,116,32,112,114,111,118,105,100,101,115,
+ 32,97,32,115,116,97,110,100,97,114,100,32,119,97,121,32,
+ 116,111,32,99,114,101,97,116,101,32,97,110,32,65,66,67,
+ 32,117,115,105,110,103,10,32,32,32,32,105,110,104,101,114,
+ 105,116,97,110,99,101,46,10,32,32,32,32,114,33,0,0,
+ 0,78,41,5,114,21,0,0,0,114,22,0,0,0,114,23,
+ 0,0,0,114,24,0,0,0,218,9,95,95,115,108,111,116,
+ 115,95,95,114,33,0,0,0,114,7,0,0,0,114,5,0,
+ 0,0,114,94,0,0,0,114,94,0,0,0,184,0,0,0,
+ 115,14,0,0,0,132,0,241,2,2,5,8,240,6,0,17,
+ 19,129,73,114,7,0,0,0,114,94,0,0,0,41,1,218,
+ 9,109,101,116,97,99,108,97,115,115,78,41,24,114,24,0,
+ 0,0,114,6,0,0,0,218,11,99,108,97,115,115,109,101,
+ 116,104,111,100,114,9,0,0,0,218,12,115,116,97,116,105,
+ 99,109,101,116,104,111,100,114,29,0,0,0,218,8,112,114,
+ 111,112,101,114,116,121,114,32,0,0,0,218,4,95,97,98,
+ 99,114,35,0,0,0,114,36,0,0,0,114,37,0,0,0,
+ 114,38,0,0,0,114,39,0,0,0,114,40,0,0,0,114,
+ 41,0,0,0,114,42,0,0,0,218,4,116,121,112,101,114,
+ 44,0,0,0,218,11,73,109,112,111,114,116,69,114,114,111,
+ 114,218,7,95,112,121,95,97,98,99,114,22,0,0,0,114,
+ 92,0,0,0,114,94,0,0,0,114,33,0,0,0,114,7,
+ 0,0,0,114,5,0,0,0,250,8,60,109,111,100,117,108,
+ 101,62,114,104,0,0,0,1,0,0,0,115,131,0,0,0,
+ 240,3,1,1,1,241,8,0,1,58,242,6,18,1,19,244,
+ 42,17,1,35,152,43,244,0,17,1,35,244,40,17,1,35,
+ 152,60,244,0,17,1,35,244,40,13,1,32,144,120,244,0,
+ 13,1,32,240,32,59,1,31,247,2,2,5,54,247,0,2,
+ 5,54,243,0,2,5,54,244,14,51,5,31,144,36,244,0,
+ 51,5,31,242,108,1,35,1,15,244,76,1,4,1,19,144,
+ 71,246,0,4,1,19,248,240,65,3,0,8,19,242,0,2,
+ 1,31,223,4,48,216,25,30,128,71,214,4,22,240,5,2,
+ 1,31,250,115,17,0,0,0,168,20,65,23,0,193,23,20,
+ 65,46,3,193,45,1,65,46,3,
+};
diff --git a/contrib/tools/python3/Python/frozen_modules/codecs.h b/contrib/tools/python3/Python/frozen_modules/codecs.h
new file mode 100644
index 00000000000..ad126ebe86f
--- /dev/null
+++ b/contrib/tools/python3/Python/frozen_modules/codecs.h
@@ -0,0 +1,2644 @@
+/* Auto-generated by Programs/_freeze_module.py */
+const unsigned char _Py_M__codecs[] = {
+ 227,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,
+ 0,0,0,0,0,243,136,2,0,0,151,0,100,0,90,0,
+ 100,1,100,2,108,1,90,1,100,1,100,2,108,2,90,2,
+ 9,0,100,1,100,3,108,3,173,2,1,0,103,0,100,5,
+ 162,1,90,7,100,6,90,8,100,7,120,1,90,9,90,10,
+ 100,8,120,1,90,11,90,12,100,9,90,13,100,10,90,14,
+ 101,2,106,30,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,100,11,107,40,0,0,114,7,101,10,
+ 120,1,90,16,90,17,101,13,90,18,110,6,101,12,120,1,
+ 90,16,90,17,101,14,90,18,101,10,90,19,101,12,90,20,
+ 101,13,90,21,101,14,90,22,2,0,71,0,100,12,132,0,
+ 100,13,101,23,171,3,0,0,0,0,0,0,90,24,2,0,
+ 71,0,100,14,132,0,100,15,171,2,0,0,0,0,0,0,
+ 90,25,2,0,71,0,100,16,132,0,100,17,101,26,171,3,
+ 0,0,0,0,0,0,90,27,2,0,71,0,100,18,132,0,
+ 100,19,101,27,171,3,0,0,0,0,0,0,90,28,2,0,
+ 71,0,100,20,132,0,100,21,101,26,171,3,0,0,0,0,
+ 0,0,90,29,2,0,71,0,100,22,132,0,100,23,101,29,
+ 171,3,0,0,0,0,0,0,90,30,2,0,71,0,100,24,
+ 132,0,100,25,101,25,171,3,0,0,0,0,0,0,90,31,
+ 2,0,71,0,100,26,132,0,100,27,101,25,171,3,0,0,
+ 0,0,0,0,90,32,2,0,71,0,100,28,132,0,100,29,
+ 171,2,0,0,0,0,0,0,90,33,2,0,71,0,100,30,
+ 132,0,100,31,171,2,0,0,0,0,0,0,90,34,100,50,
+ 100,33,132,1,90,35,100,51,100,34,132,1,90,36,100,35,
+ 132,0,90,37,100,36,132,0,90,38,100,37,132,0,90,39,
+ 100,38,132,0,90,40,100,39,132,0,90,41,100,40,132,0,
+ 90,42,100,52,100,41,132,1,90,43,100,52,100,42,132,1,
+ 90,44,100,43,132,0,90,45,100,44,132,0,90,46,9,0,
+ 2,0,101,47,100,32,171,1,0,0,0,0,0,0,90,48,
+ 2,0,101,47,100,45,171,1,0,0,0,0,0,0,90,49,
+ 2,0,101,47,100,46,171,1,0,0,0,0,0,0,90,50,
+ 2,0,101,47,100,47,171,1,0,0,0,0,0,0,90,51,
+ 2,0,101,47,100,48,171,1,0,0,0,0,0,0,90,52,
+ 2,0,101,47,100,49,171,1,0,0,0,0,0,0,90,53,
+ 100,1,90,55,101,55,114,5,100,1,100,2,108,56,90,56,
+ 121,2,121,2,35,0,101,4,36,0,114,16,90,5,2,0,
+ 101,6,100,4,101,5,122,6,0,0,171,1,0,0,0,0,
+ 0,0,130,1,100,2,90,5,91,5,119,1,119,0,120,3,
+ 89,0,119,1,35,0,101,54,36,0,114,15,1,0,100,2,
+ 90,48,100,2,90,49,100,2,90,50,100,2,90,51,100,2,
+ 90,52,100,2,90,53,89,0,140,53,119,0,120,3,89,0,
+ 119,1,41,53,122,158,32,99,111,100,101,99,115,32,45,45,
+ 32,80,121,116,104,111,110,32,67,111,100,101,99,32,82,101,
+ 103,105,115,116,114,121,44,32,65,80,73,32,97,110,100,32,
+ 104,101,108,112,101,114,115,46,10,10,10,87,114,105,116,116,
+ 101,110,32,98,121,32,77,97,114,99,45,65,110,100,114,101,
+ 32,76,101,109,98,117,114,103,32,40,109,97,108,64,108,101,
+ 109,98,117,114,103,46,99,111,109,41,46,10,10,40,99,41,
+ 32,67,111,112,121,114,105,103,104,116,32,67,78,82,73,44,
+ 32,65,108,108,32,82,105,103,104,116,115,32,82,101,115,101,
+ 114,118,101,100,46,32,78,79,32,87,65,82,82,65,78,84,
+ 89,46,10,10,233,0,0,0,0,78,41,1,218,1,42,122,
+ 37,70,97,105,108,101,100,32,116,111,32,108,111,97,100,32,
+ 116,104,101,32,98,117,105,108,116,105,110,32,99,111,100,101,
+ 99,115,58,32,37,115,41,44,218,8,114,101,103,105,115,116,
+ 101,114,218,6,108,111,111,107,117,112,218,4,111,112,101,110,
+ 218,11,69,110,99,111,100,101,100,70,105,108,101,218,3,66,
+ 79,77,218,6,66,79,77,95,66,69,218,6,66,79,77,95,
+ 76,69,218,8,66,79,77,51,50,95,66,69,218,8,66,79,
+ 77,51,50,95,76,69,218,8,66,79,77,54,52,95,66,69,
+ 218,8,66,79,77,54,52,95,76,69,218,8,66,79,77,95,
+ 85,84,70,56,218,9,66,79,77,95,85,84,70,49,54,218,
+ 12,66,79,77,95,85,84,70,49,54,95,76,69,218,12,66,
+ 79,77,95,85,84,70,49,54,95,66,69,218,9,66,79,77,
+ 95,85,84,70,51,50,218,12,66,79,77,95,85,84,70,51,
+ 50,95,76,69,218,12,66,79,77,95,85,84,70,51,50,95,
+ 66,69,218,9,67,111,100,101,99,73,110,102,111,218,5,67,
+ 111,100,101,99,218,18,73,110,99,114,101,109,101,110,116,97,
+ 108,69,110,99,111,100,101,114,218,18,73,110,99,114,101,109,
+ 101,110,116,97,108,68,101,99,111,100,101,114,218,12,83,116,
+ 114,101,97,109,82,101,97,100,101,114,218,12,83,116,114,101,
+ 97,109,87,114,105,116,101,114,218,18,83,116,114,101,97,109,
+ 82,101,97,100,101,114,87,114,105,116,101,114,218,13,83,116,
+ 114,101,97,109,82,101,99,111,100,101,114,218,10,103,101,116,
+ 101,110,99,111,100,101,114,218,10,103,101,116,100,101,99,111,
+ 100,101,114,218,21,103,101,116,105,110,99,114,101,109,101,110,
+ 116,97,108,101,110,99,111,100,101,114,218,21,103,101,116,105,
+ 110,99,114,101,109,101,110,116,97,108,100,101,99,111,100,101,
+ 114,218,9,103,101,116,114,101,97,100,101,114,218,9,103,101,
+ 116,119,114,105,116,101,114,218,6,101,110,99,111,100,101,218,
+ 6,100,101,99,111,100,101,218,10,105,116,101,114,101,110,99,
+ 111,100,101,218,10,105,116,101,114,100,101,99,111,100,101,218,
+ 13,115,116,114,105,99,116,95,101,114,114,111,114,115,218,13,
+ 105,103,110,111,114,101,95,101,114,114,111,114,115,218,14,114,
+ 101,112,108,97,99,101,95,101,114,114,111,114,115,218,24,120,
+ 109,108,99,104,97,114,114,101,102,114,101,112,108,97,99,101,
+ 95,101,114,114,111,114,115,218,23,98,97,99,107,115,108,97,
+ 115,104,114,101,112,108,97,99,101,95,101,114,114,111,114,115,
+ 218,18,110,97,109,101,114,101,112,108,97,99,101,95,101,114,
+ 114,111,114,115,218,14,114,101,103,105,115,116,101,114,95,101,
+ 114,114,111,114,218,12,108,111,111,107,117,112,95,101,114,114,
+ 111,114,115,3,0,0,0,239,187,191,115,2,0,0,0,255,
+ 254,115,2,0,0,0,254,255,115,4,0,0,0,255,254,0,
+ 0,115,4,0,0,0,0,0,254,255,218,6,108,105,116,116,
+ 108,101,99,0,0,0,0,0,0,0,0,0,0,0,0,3,
+ 0,0,0,0,0,0,0,243,44,0,0,0,151,0,101,0,
+ 90,1,100,0,90,2,100,1,90,3,100,2,90,4,9,0,
+ 9,0,100,7,100,3,100,4,156,1,100,5,132,3,90,5,
+ 100,6,132,0,90,6,121,3,41,8,114,22,0,0,0,122,
+ 48,67,111,100,101,99,32,100,101,116,97,105,108,115,32,119,
+ 104,101,110,32,108,111,111,107,105,110,103,32,117,112,32,116,
+ 104,101,32,99,111,100,101,99,32,114,101,103,105,115,116,114,
+ 121,84,78,41,1,218,17,95,105,115,95,116,101,120,116,95,
+ 101,110,99,111,100,105,110,103,99,8,0,0,0,0,0,0,
+ 0,1,0,0,0,7,0,0,0,3,0,0,0,243,174,0,
+ 0,0,151,0,116,0,0,0,0,0,0,0,0,0,106,3,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,124,0,124,1,124,2,124,3,124,4,102,4,171,2,
+ 0,0,0,0,0,0,125,9,124,7,124,9,95,2,0,0,
+ 0,0,0,0,0,0,124,1,124,9,95,3,0,0,0,0,
+ 0,0,0,0,124,2,124,9,95,4,0,0,0,0,0,0,
+ 0,0,124,5,124,9,95,5,0,0,0,0,0,0,0,0,
+ 124,6,124,9,95,6,0,0,0,0,0,0,0,0,124,4,
+ 124,9,95,7,0,0,0,0,0,0,0,0,124,3,124,9,
+ 95,8,0,0,0,0,0,0,0,0,124,8,129,7,124,8,
+ 124,9,95,9,0,0,0,0,0,0,0,0,124,9,83,0,
+ 169,1,78,41,10,218,5,116,117,112,108,101,218,7,95,95,
+ 110,101,119,95,95,218,4,110,97,109,101,114,36,0,0,0,
+ 114,37,0,0,0,218,18,105,110,99,114,101,109,101,110,116,
+ 97,108,101,110,99,111,100,101,114,218,18,105,110,99,114,101,
+ 109,101,110,116,97,108,100,101,99,111,100,101,114,218,12,115,
+ 116,114,101,97,109,119,114,105,116,101,114,218,12,115,116,114,
+ 101,97,109,114,101,97,100,101,114,114,50,0,0,0,41,10,
+ 218,3,99,108,115,114,36,0,0,0,114,37,0,0,0,114,
+ 59,0,0,0,114,58,0,0,0,114,56,0,0,0,114,57,
+ 0,0,0,114,55,0,0,0,114,50,0,0,0,218,4,115,
+ 101,108,102,115,10,0,0,0,32,32,32,32,32,32,32,32,
+ 32,32,250,15,60,102,114,111,122,101,110,32,99,111,100,101,
+ 99,115,62,114,54,0,0,0,122,17,67,111,100,101,99,73,
+ 110,102,111,46,95,95,110,101,119,95,95,94,0,0,0,115,
+ 101,0,0,0,128,0,244,6,0,16,21,143,125,137,125,152,
+ 83,160,54,168,54,176,60,192,28,208,34,78,211,15,79,136,
+ 4,216,20,24,136,4,140,9,216,22,28,136,4,140,11,216,
+ 22,28,136,4,140,11,216,34,52,136,4,212,8,31,216,34,
+ 52,136,4,212,8,31,216,28,40,136,4,212,8,25,216,28,
+ 40,136,4,212,8,25,216,11,28,208,11,40,216,37,54,136,
+ 68,212,12,34,216,15,19,136,11,243,0,0,0,0,99,1,
+ 0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,3,
+ 0,0,0,243,138,0,0,0,151,0,100,1,124,0,106,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,106,2,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,124,0,106,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,106,4,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 124,0,106,6,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,116,9,0,0,0,0,0,0,0,0,
+ 124,0,171,1,0,0,0,0,0,0,102,4,122,6,0,0,
+ 83,0,41,2,78,122,37,60,37,115,46,37,115,32,111,98,
+ 106,101,99,116,32,102,111,114,32,101,110,99,111,100,105,110,
+ 103,32,37,115,32,97,116,32,37,35,120,62,41,5,218,9,
+ 95,95,99,108,97,115,115,95,95,218,10,95,95,109,111,100,
+ 117,108,101,95,95,218,12,95,95,113,117,97,108,110,97,109,
+ 101,95,95,114,55,0,0,0,218,2,105,100,169,1,114,61,
+ 0,0,0,115,1,0,0,0,32,114,62,0,0,0,218,8,
+ 95,95,114,101,112,114,95,95,122,18,67,111,100,101,99,73,
+ 110,102,111,46,95,95,114,101,112,114,95,95,109,0,0,0,
+ 115,58,0,0,0,128,0,216,15,54,216,17,21,151,30,145,
+ 30,215,17,42,209,17,42,168,68,175,78,169,78,215,44,71,
+ 209,44,71,216,17,21,151,25,145,25,156,66,152,116,155,72,
+ 240,3,1,17,38,241,3,2,16,38,240,0,2,9,38,114,
+ 63,0,0,0,41,5,78,78,78,78,78,41,7,218,8,95,
+ 95,110,97,109,101,95,95,114,66,0,0,0,114,67,0,0,
+ 0,218,7,95,95,100,111,99,95,95,114,50,0,0,0,114,
+ 54,0,0,0,114,70,0,0,0,169,0,114,63,0,0,0,
+ 114,62,0,0,0,114,22,0,0,0,114,22,0,0,0,83,
+ 0,0,0,115,37,0,0,0,132,0,217,4,58,240,16,0,
+ 25,29,208,4,21,224,69,73,216,63,67,240,3,13,5,20,
+ 224,29,33,244,5,13,5,20,243,30,3,5,38,114,63,0,
+ 0,0,114,22,0,0,0,99,0,0,0,0,0,0,0,0,
+ 0,0,0,0,2,0,0,0,0,0,0,0,243,32,0,0,
+ 0,151,0,101,0,90,1,100,0,90,2,100,1,90,3,100,
+ 5,100,2,132,1,90,4,100,5,100,3,132,1,90,5,121,
+ 4,41,6,114,23,0,0,0,97,57,4,0,0,32,68,101,
+ 102,105,110,101,115,32,116,104,101,32,105,110,116,101,114,102,
+ 97,99,101,32,102,111,114,32,115,116,97,116,101,108,101,115,
+ 115,32,101,110,99,111,100,101,114,115,47,100,101,99,111,100,
+ 101,114,115,46,10,10,32,32,32,32,32,32,32,32,84,104,
+ 101,32,46,101,110,99,111,100,101,40,41,47,46,100,101,99,
+ 111,100,101,40,41,32,109,101,116,104,111,100,115,32,109,97,
+ 121,32,117,115,101,32,100,105,102,102,101,114,101,110,116,32,
+ 101,114,114,111,114,10,32,32,32,32,32,32,32,32,104,97,
+ 110,100,108,105,110,103,32,115,99,104,101,109,101,115,32,98,
+ 121,32,112,114,111,118,105,100,105,110,103,32,116,104,101,32,
+ 101,114,114,111,114,115,32,97,114,103,117,109,101,110,116,46,
+ 32,84,104,101,115,101,10,32,32,32,32,32,32,32,32,115,
+ 116,114,105,110,103,32,118,97,108,117,101,115,32,97,114,101,
+ 32,112,114,101,100,101,102,105,110,101,100,58,10,10,32,32,
+ 32,32,32,32,32,32,32,39,115,116,114,105,99,116,39,32,
+ 45,32,114,97,105,115,101,32,97,32,86,97,108,117,101,69,
+ 114,114,111,114,32,101,114,114,111,114,32,40,111,114,32,97,
+ 32,115,117,98,99,108,97,115,115,41,10,32,32,32,32,32,
+ 32,32,32,32,39,105,103,110,111,114,101,39,32,45,32,105,
+ 103,110,111,114,101,32,116,104,101,32,99,104,97,114,97,99,
+ 116,101,114,32,97,110,100,32,99,111,110,116,105,110,117,101,
+ 32,119,105,116,104,32,116,104,101,32,110,101,120,116,10,32,
+ 32,32,32,32,32,32,32,32,39,114,101,112,108,97,99,101,
+ 39,32,45,32,114,101,112,108,97,99,101,32,119,105,116,104,
+ 32,97,32,115,117,105,116,97,98,108,101,32,114,101,112,108,
+ 97,99,101,109,101,110,116,32,99,104,97,114,97,99,116,101,
+ 114,59,10,32,32,32,32,32,32,32,32,32,32,32,32,32,
+ 32,32,32,32,32,32,32,80,121,116,104,111,110,32,119,105,
+ 108,108,32,117,115,101,32,116,104,101,32,111,102,102,105,99,
+ 105,97,108,32,85,43,70,70,70,68,32,82,69,80,76,65,
+ 67,69,77,69,78,84,10,32,32,32,32,32,32,32,32,32,
+ 32,32,32,32,32,32,32,32,32,32,32,67,72,65,82,65,
+ 67,84,69,82,32,102,111,114,32,116,104,101,32,98,117,105,
+ 108,116,105,110,32,85,110,105,99,111,100,101,32,99,111,100,
+ 101,99,115,32,111,110,10,32,32,32,32,32,32,32,32,32,
+ 32,32,32,32,32,32,32,32,32,32,32,100,101,99,111,100,
+ 105,110,103,32,97,110,100,32,39,63,39,32,111,110,32,101,
+ 110,99,111,100,105,110,103,46,10,32,32,32,32,32,32,32,
+ 32,32,39,115,117,114,114,111,103,97,116,101,101,115,99,97,
+ 112,101,39,32,45,32,114,101,112,108,97,99,101,32,119,105,
+ 116,104,32,112,114,105,118,97,116,101,32,99,111,100,101,32,
+ 112,111,105,110,116,115,32,85,43,68,67,110,110,46,10,32,
+ 32,32,32,32,32,32,32,32,39,120,109,108,99,104,97,114,
+ 114,101,102,114,101,112,108,97,99,101,39,32,45,32,82,101,
+ 112,108,97,99,101,32,119,105,116,104,32,116,104,101,32,97,
+ 112,112,114,111,112,114,105,97,116,101,32,88,77,76,10,32,
+ 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,
+ 32,32,32,32,32,32,32,32,32,32,32,32,32,32,99,104,
+ 97,114,97,99,116,101,114,32,114,101,102,101,114,101,110,99,
+ 101,32,40,111,110,108,121,32,102,111,114,32,101,110,99,111,
+ 100,105,110,103,41,46,10,32,32,32,32,32,32,32,32,32,
+ 39,98,97,99,107,115,108,97,115,104,114,101,112,108,97,99,
+ 101,39,32,32,45,32,82,101,112,108,97,99,101,32,119,105,
+ 116,104,32,98,97,99,107,115,108,97,115,104,101,100,32,101,
+ 115,99,97,112,101,32,115,101,113,117,101,110,99,101,115,46,
+ 10,32,32,32,32,32,32,32,32,32,39,110,97,109,101,114,
+ 101,112,108,97,99,101,39,32,32,32,32,32,32,32,45,32,
+ 82,101,112,108,97,99,101,32,119,105,116,104,32,92,78,123,
+ 46,46,46,125,32,101,115,99,97,112,101,32,115,101,113,117,
+ 101,110,99,101,115,10,32,32,32,32,32,32,32,32,32,32,
+ 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,
+ 32,32,32,32,32,40,111,110,108,121,32,102,111,114,32,101,
+ 110,99,111,100,105,110,103,41,46,10,10,32,32,32,32,32,
+ 32,32,32,84,104,101,32,115,101,116,32,111,102,32,97,108,
+ 108,111,119,101,100,32,118,97,108,117,101,115,32,99,97,110,
+ 32,98,101,32,101,120,116,101,110,100,101,100,32,118,105,97,
+ 32,114,101,103,105,115,116,101,114,95,101,114,114,111,114,46,
+ 10,10,32,32,32,32,99,3,0,0,0,0,0,0,0,0,
+ 0,0,0,1,0,0,0,3,0,0,0,243,14,0,0,0,
+ 151,0,116,0,0,0,0,0,0,0,0,0,130,1,41,1,
+ 97,35,2,0,0,32,69,110,99,111,100,101,115,32,116,104,
+ 101,32,111,98,106,101,99,116,32,105,110,112,117,116,32,97,
+ 110,100,32,114,101,116,117,114,110,115,32,97,32,116,117,112,
+ 108,101,32,40,111,117,116,112,117,116,10,32,32,32,32,32,
+ 32,32,32,32,32,32,32,111,98,106,101,99,116,44,32,108,
+ 101,110,103,116,104,32,99,111,110,115,117,109,101,100,41,46,
+ 10,10,32,32,32,32,32,32,32,32,32,32,32,32,101,114,
+ 114,111,114,115,32,100,101,102,105,110,101,115,32,116,104,101,
+ 32,101,114,114,111,114,32,104,97,110,100,108,105,110,103,32,
+ 116,111,32,97,112,112,108,121,46,32,73,116,32,100,101,102,
+ 97,117,108,116,115,32,116,111,10,32,32,32,32,32,32,32,
+ 32,32,32,32,32,39,115,116,114,105,99,116,39,32,104,97,
+ 110,100,108,105,110,103,46,10,10,32,32,32,32,32,32,32,
+ 32,32,32,32,32,84,104,101,32,109,101,116,104,111,100,32,
+ 109,97,121,32,110,111,116,32,115,116,111,114,101,32,115,116,
+ 97,116,101,32,105,110,32,116,104,101,32,67,111,100,101,99,
+ 32,105,110,115,116,97,110,99,101,46,32,85,115,101,10,32,
+ 32,32,32,32,32,32,32,32,32,32,32,83,116,114,101,97,
+ 109,87,114,105,116,101,114,32,102,111,114,32,99,111,100,101,
+ 99,115,32,119,104,105,99,104,32,104,97,118,101,32,116,111,
+ 32,107,101,101,112,32,115,116,97,116,101,32,105,110,32,111,
+ 114,100,101,114,32,116,111,10,32,32,32,32,32,32,32,32,
+ 32,32,32,32,109,97,107,101,32,101,110,99,111,100,105,110,
+ 103,32,101,102,102,105,99,105,101,110,116,46,10,10,32,32,
+ 32,32,32,32,32,32,32,32,32,32,84,104,101,32,101,110,
+ 99,111,100,101,114,32,109,117,115,116,32,98,101,32,97,98,
+ 108,101,32,116,111,32,104,97,110,100,108,101,32,122,101,114,
+ 111,32,108,101,110,103,116,104,32,105,110,112,117,116,32,97,
+ 110,100,10,32,32,32,32,32,32,32,32,32,32,32,32,114,
+ 101,116,117,114,110,32,97,110,32,101,109,112,116,121,32,111,
+ 98,106,101,99,116,32,111,102,32,116,104,101,32,111,117,116,
+ 112,117,116,32,111,98,106,101,99,116,32,116,121,112,101,32,
+ 105,110,32,116,104,105,115,10,32,32,32,32,32,32,32,32,
+ 32,32,32,32,115,105,116,117,97,116,105,111,110,46,10,10,
+ 32,32,32,32,32,32,32,32,169,1,218,19,78,111,116,73,
+ 109,112,108,101,109,101,110,116,101,100,69,114,114,111,114,169,
+ 3,114,61,0,0,0,218,5,105,110,112,117,116,218,6,101,
+ 114,114,111,114,115,115,3,0,0,0,32,32,32,114,62,0,
+ 0,0,114,36,0,0,0,122,12,67,111,100,101,99,46,101,
+ 110,99,111,100,101,138,0,0,0,115,10,0,0,0,128,0,
+ 244,34,0,15,34,208,8,33,114,63,0,0,0,99,3,0,
+ 0,0,0,0,0,0,0,0,0,0,1,0,0,0,3,0,
+ 0,0,243,14,0,0,0,151,0,116,0,0,0,0,0,0,
+ 0,0,0,130,1,41,1,97,242,2,0,0,32,68,101,99,
+ 111,100,101,115,32,116,104,101,32,111,98,106,101,99,116,32,
+ 105,110,112,117,116,32,97,110,100,32,114,101,116,117,114,110,
+ 115,32,97,32,116,117,112,108,101,32,40,111,117,116,112,117,
+ 116,10,32,32,32,32,32,32,32,32,32,32,32,32,111,98,
+ 106,101,99,116,44,32,108,101,110,103,116,104,32,99,111,110,
+ 115,117,109,101,100,41,46,10,10,32,32,32,32,32,32,32,
+ 32,32,32,32,32,105,110,112,117,116,32,109,117,115,116,32,
+ 98,101,32,97,110,32,111,98,106,101,99,116,32,119,104,105,
+ 99,104,32,112,114,111,118,105,100,101,115,32,116,104,101,32,
+ 98,102,95,103,101,116,114,101,97,100,98,117,102,10,32,32,
+ 32,32,32,32,32,32,32,32,32,32,98,117,102,102,101,114,
+ 32,115,108,111,116,46,32,80,121,116,104,111,110,32,115,116,
+ 114,105,110,103,115,44,32,98,117,102,102,101,114,32,111,98,
+ 106,101,99,116,115,32,97,110,100,32,109,101,109,111,114,121,
+ 10,32,32,32,32,32,32,32,32,32,32,32,32,109,97,112,
+ 112,101,100,32,102,105,108,101,115,32,97,114,101,32,101,120,
+ 97,109,112,108,101,115,32,111,102,32,111,98,106,101,99,116,
+ 115,32,112,114,111,118,105,100,105,110,103,32,116,104,105,115,
+ 32,115,108,111,116,46,10,10,32,32,32,32,32,32,32,32,
+ 32,32,32,32,101,114,114,111,114,115,32,100,101,102,105,110,
+ 101,115,32,116,104,101,32,101,114,114,111,114,32,104,97,110,
+ 100,108,105,110,103,32,116,111,32,97,112,112,108,121,46,32,
+ 73,116,32,100,101,102,97,117,108,116,115,32,116,111,10,32,
+ 32,32,32,32,32,32,32,32,32,32,32,39,115,116,114,105,
+ 99,116,39,32,104,97,110,100,108,105,110,103,46,10,10,32,
+ 32,32,32,32,32,32,32,32,32,32,32,84,104,101,32,109,
+ 101,116,104,111,100,32,109,97,121,32,110,111,116,32,115,116,
+ 111,114,101,32,115,116,97,116,101,32,105,110,32,116,104,101,
+ 32,67,111,100,101,99,32,105,110,115,116,97,110,99,101,46,
+ 32,85,115,101,10,32,32,32,32,32,32,32,32,32,32,32,
+ 32,83,116,114,101,97,109,82,101,97,100,101,114,32,102,111,
+ 114,32,99,111,100,101,99,115,32,119,104,105,99,104,32,104,
+ 97,118,101,32,116,111,32,107,101,101,112,32,115,116,97,116,
+ 101,32,105,110,32,111,114,100,101,114,32,116,111,10,32,32,
+ 32,32,32,32,32,32,32,32,32,32,109,97,107,101,32,100,
+ 101,99,111,100,105,110,103,32,101,102,102,105,99,105,101,110,
+ 116,46,10,10,32,32,32,32,32,32,32,32,32,32,32,32,
+ 84,104,101,32,100,101,99,111,100,101,114,32,109,117,115,116,
+ 32,98,101,32,97,98,108,101,32,116,111,32,104,97,110,100,
+ 108,101,32,122,101,114,111,32,108,101,110,103,116,104,32,105,
+ 110,112,117,116,32,97,110,100,10,32,32,32,32,32,32,32,
+ 32,32,32,32,32,114,101,116,117,114,110,32,97,110,32,101,
+ 109,112,116,121,32,111,98,106,101,99,116,32,111,102,32,116,
+ 104,101,32,111,117,116,112,117,116,32,111,98,106,101,99,116,
+ 32,116,121,112,101,32,105,110,32,116,104,105,115,10,32,32,
+ 32,32,32,32,32,32,32,32,32,32,115,105,116,117,97,116,
+ 105,111,110,46,10,10,32,32,32,32,32,32,32,32,114,76,
+ 0,0,0,114,78,0,0,0,115,3,0,0,0,32,32,32,
+ 114,62,0,0,0,114,37,0,0,0,122,12,67,111,100,101,
+ 99,46,100,101,99,111,100,101,157,0,0,0,115,10,0,0,
+ 0,128,0,244,42,0,15,34,208,8,33,114,63,0,0,0,
+ 78,169,1,218,6,115,116,114,105,99,116,41,6,114,71,0,
+ 0,0,114,66,0,0,0,114,67,0,0,0,114,72,0,0,
+ 0,114,36,0,0,0,114,37,0,0,0,114,73,0,0,0,
+ 114,63,0,0,0,114,62,0,0,0,114,23,0,0,0,114,
+ 23,0,0,0,114,0,0,0,115,17,0,0,0,132,0,241,
+ 4,21,5,8,243,44,17,5,34,244,38,21,5,34,114,63,
+ 0,0,0,114,23,0,0,0,99,0,0,0,0,0,0,0,
+ 0,0,0,0,0,2,0,0,0,0,0,0,0,243,50,0,
+ 0,0,151,0,101,0,90,1,100,0,90,2,100,1,90,3,
+ 100,8,100,2,132,1,90,4,100,9,100,3,132,1,90,5,
+ 100,4,132,0,90,6,100,5,132,0,90,7,100,6,132,0,
+ 90,8,121,7,41,10,114,24,0,0,0,122,232,10,32,32,
+ 32,32,65,110,32,73,110,99,114,101,109,101,110,116,97,108,
+ 69,110,99,111,100,101,114,32,101,110,99,111,100,101,115,32,
+ 97,110,32,105,110,112,117,116,32,105,110,32,109,117,108,116,
+ 105,112,108,101,32,115,116,101,112,115,46,32,84,104,101,32,
+ 105,110,112,117,116,32,99,97,110,10,32,32,32,32,98,101,
+ 32,112,97,115,115,101,100,32,112,105,101,99,101,32,98,121,
+ 32,112,105,101,99,101,32,116,111,32,116,104,101,32,101,110,
+ 99,111,100,101,40,41,32,109,101,116,104,111,100,46,32,84,
+ 104,101,32,73,110,99,114,101,109,101,110,116,97,108,69,110,
+ 99,111,100,101,114,10,32,32,32,32,114,101,109,101,109,98,
+ 101,114,115,32,116,104,101,32,115,116,97,116,101,32,111,102,
+ 32,116,104,101,32,101,110,99,111,100,105,110,103,32,112,114,
+ 111,99,101,115,115,32,98,101,116,119,101,101,110,32,99,97,
+ 108,108,115,32,116,111,32,101,110,99,111,100,101,40,41,46,
+ 10,32,32,32,32,99,2,0,0,0,0,0,0,0,0,0,
+ 0,0,2,0,0,0,3,0,0,0,243,32,0,0,0,151,
+ 0,124,1,124,0,95,0,0,0,0,0,0,0,0,0,100,
+ 1,124,0,95,1,0,0,0,0,0,0,0,0,121,2,41,
+ 3,122,244,10,32,32,32,32,32,32,32,32,67,114,101,97,
+ 116,101,115,32,97,110,32,73,110,99,114,101,109,101,110,116,
+ 97,108,69,110,99,111,100,101,114,32,105,110,115,116,97,110,
+ 99,101,46,10,10,32,32,32,32,32,32,32,32,84,104,101,
+ 32,73,110,99,114,101,109,101,110,116,97,108,69,110,99,111,
+ 100,101,114,32,109,97,121,32,117,115,101,32,100,105,102,102,
+ 101,114,101,110,116,32,101,114,114,111,114,32,104,97,110,100,
+ 108,105,110,103,32,115,99,104,101,109,101,115,32,98,121,10,
+ 32,32,32,32,32,32,32,32,112,114,111,118,105,100,105,110,
+ 103,32,116,104,101,32,101,114,114,111,114,115,32,107,101,121,
+ 119,111,114,100,32,97,114,103,117,109,101,110,116,46,32,83,
+ 101,101,32,116,104,101,32,109,111,100,117,108,101,32,100,111,
+ 99,115,116,114,105,110,103,10,32,32,32,32,32,32,32,32,
+ 102,111,114,32,97,32,108,105,115,116,32,111,102,32,112,111,
+ 115,115,105,98,108,101,32,118,97,108,117,101,115,46,10,32,
+ 32,32,32,32,32,32,32,218,0,78,41,2,114,80,0,0,
+ 0,218,6,98,117,102,102,101,114,169,2,114,61,0,0,0,
+ 114,80,0,0,0,115,2,0,0,0,32,32,114,62,0,0,
+ 0,218,8,95,95,105,110,105,116,95,95,122,27,73,110,99,
+ 114,101,109,101,110,116,97,108,69,110,99,111,100,101,114,46,
+ 95,95,105,110,105,116,95,95,186,0,0,0,115,18,0,0,
+ 0,128,0,240,16,0,23,29,136,4,140,11,216,22,24,136,
+ 4,141,11,114,63,0,0,0,99,3,0,0,0,0,0,0,
+ 0,0,0,0,0,1,0,0,0,3,0,0,0,243,14,0,
+ 0,0,151,0,116,0,0,0,0,0,0,0,0,0,130,1,
+ 41,1,122,65,10,32,32,32,32,32,32,32,32,69,110,99,
+ 111,100,101,115,32,105,110,112,117,116,32,97,110,100,32,114,
+ 101,116,117,114,110,115,32,116,104,101,32,114,101,115,117,108,
+ 116,105,110,103,32,111,98,106,101,99,116,46,10,32,32,32,
+ 32,32,32,32,32,114,76,0,0,0,169,3,114,61,0,0,
+ 0,114,79,0,0,0,218,5,102,105,110,97,108,115,3,0,
+ 0,0,32,32,32,114,62,0,0,0,114,36,0,0,0,122,
+ 25,73,110,99,114,101,109,101,110,116,97,108,69,110,99,111,
+ 100,101,114,46,101,110,99,111,100,101,197,0,0,0,243,10,
+ 0,0,0,128,0,244,8,0,15,34,208,8,33,114,63,0,
+ 0,0,99,1,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,3,0,0,0,243,4,0,0,0,151,0,121,1,
+ 41,2,122,58,10,32,32,32,32,32,32,32,32,82,101,115,
+ 101,116,115,32,116,104,101,32,101,110,99,111,100,101,114,32,
+ 116,111,32,116,104,101,32,105,110,105,116,105,97,108,32,115,
+ 116,97,116,101,46,10,32,32,32,32,32,32,32,32,78,114,
+ 73,0,0,0,114,69,0,0,0,115,1,0,0,0,32,114,
+ 62,0,0,0,218,5,114,101,115,101,116,122,24,73,110,99,
+ 114,101,109,101,110,116,97,108,69,110,99,111,100,101,114,46,
+ 114,101,115,101,116,203,0,0,0,243,2,0,0,0,129,0,
+ 114,63,0,0,0,99,1,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,3,0,0,0,243,4,0,0,0,151,
+ 0,121,1,41,2,122,58,10,32,32,32,32,32,32,32,32,
+ 82,101,116,117,114,110,32,116,104,101,32,99,117,114,114,101,
+ 110,116,32,115,116,97,116,101,32,111,102,32,116,104,101,32,
+ 101,110,99,111,100,101,114,46,10,32,32,32,32,32,32,32,
+ 32,114,2,0,0,0,114,73,0,0,0,114,69,0,0,0,
+ 115,1,0,0,0,32,114,62,0,0,0,218,8,103,101,116,
+ 115,116,97,116,101,122,27,73,110,99,114,101,109,101,110,116,
+ 97,108,69,110,99,111,100,101,114,46,103,101,116,115,116,97,
+ 116,101,208,0,0,0,115,7,0,0,0,128,0,240,8,0,
+ 16,17,114,63,0,0,0,99,2,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,3,0,0,0,243,4,0,0,
+ 0,151,0,121,1,41,2,122,108,10,32,32,32,32,32,32,
+ 32,32,83,101,116,32,116,104,101,32,99,117,114,114,101,110,
+ 116,32,115,116,97,116,101,32,111,102,32,116,104,101,32,101,
+ 110,99,111,100,101,114,46,32,115,116,97,116,101,32,109,117,
+ 115,116,32,104,97,118,101,32,98,101,101,110,10,32,32,32,
+ 32,32,32,32,32,114,101,116,117,114,110,101,100,32,98,121,
+ 32,103,101,116,115,116,97,116,101,40,41,46,10,32,32,32,
+ 32,32,32,32,32,78,114,73,0,0,0,169,2,114,61,0,
+ 0,0,218,5,115,116,97,116,101,115,2,0,0,0,32,32,
+ 114,62,0,0,0,218,8,115,101,116,115,116,97,116,101,122,
+ 27,73,110,99,114,101,109,101,110,116,97,108,69,110,99,111,
+ 100,101,114,46,115,101,116,115,116,97,116,101,214,0,0,0,
+ 114,96,0,0,0,114,63,0,0,0,78,114,82,0,0,0,
+ 169,1,70,41,9,114,71,0,0,0,114,66,0,0,0,114,
+ 67,0,0,0,114,72,0,0,0,114,89,0,0,0,114,36,
+ 0,0,0,114,95,0,0,0,114,98,0,0,0,114,102,0,
+ 0,0,114,73,0,0,0,114,63,0,0,0,114,62,0,0,
+ 0,114,24,0,0,0,114,24,0,0,0,180,0,0,0,115,
+ 32,0,0,0,132,0,241,2,4,5,8,243,10,9,5,25,
+ 243,22,4,5,34,242,12,3,5,12,242,10,4,5,17,243,
+ 12,4,5,12,114,63,0,0,0,114,24,0,0,0,99,0,
+ 0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,
+ 0,0,0,243,56,0,0,0,151,0,101,0,90,1,100,0,
+ 90,2,100,1,90,3,100,9,100,2,132,1,90,4,100,3,
+ 132,0,90,5,100,10,100,4,132,1,90,6,100,5,132,0,
+ 90,7,100,6,132,0,90,8,100,7,132,0,90,9,121,8,
+ 41,11,218,26,66,117,102,102,101,114,101,100,73,110,99,114,
+ 101,109,101,110,116,97,108,69,110,99,111,100,101,114,122,192,
+ 10,32,32,32,32,84,104,105,115,32,115,117,98,99,108,97,
+ 115,115,32,111,102,32,73,110,99,114,101,109,101,110,116,97,
+ 108,69,110,99,111,100,101,114,32,99,97,110,32,98,101,32,
+ 117,115,101,100,32,97,115,32,116,104,101,32,98,97,115,101,
+ 99,108,97,115,115,32,102,111,114,32,97,110,10,32,32,32,
+ 32,105,110,99,114,101,109,101,110,116,97,108,32,101,110,99,
+ 111,100,101,114,32,105,102,32,116,104,101,32,101,110,99,111,
+ 100,101,114,32,109,117,115,116,32,107,101,101,112,32,115,111,
+ 109,101,32,111,102,32,116,104,101,32,111,117,116,112,117,116,
+ 32,105,110,32,97,10,32,32,32,32,98,117,102,102,101,114,
+ 32,98,101,116,119,101,101,110,32,99,97,108,108,115,32,116,
+ 111,32,101,110,99,111,100,101,40,41,46,10,32,32,32,32,
+ 99,2,0,0,0,0,0,0,0,0,0,0,0,4,0,0,
+ 0,3,0,0,0,243,62,0,0,0,151,0,116,0,0,0,
+ 0,0,0,0,0,0,106,3,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,124,0,124,1,171,2,
+ 0,0,0,0,0,0,1,0,100,1,124,0,95,2,0,0,
+ 0,0,0,0,0,0,121,0,169,2,78,114,86,0,0,0,
+ 41,3,114,24,0,0,0,114,89,0,0,0,114,87,0,0,
+ 0,114,88,0,0,0,115,2,0,0,0,32,32,114,62,0,
+ 0,0,114,89,0,0,0,122,35,66,117,102,102,101,114,101,
+ 100,73,110,99,114,101,109,101,110,116,97,108,69,110,99,111,
+ 100,101,114,46,95,95,105,110,105,116,95,95,226,0,0,0,
+ 115,25,0,0,0,128,0,220,8,26,215,8,35,209,8,35,
+ 160,68,168,38,212,8,49,224,22,24,136,4,141,11,114,63,
+ 0,0,0,99,4,0,0,0,0,0,0,0,0,0,0,0,
+ 1,0,0,0,3,0,0,0,243,14,0,0,0,151,0,116,
+ 0,0,0,0,0,0,0,0,0,130,1,114,52,0,0,0,
+ 114,76,0,0,0,169,4,114,61,0,0,0,114,79,0,0,
+ 0,114,80,0,0,0,114,92,0,0,0,115,4,0,0,0,
+ 32,32,32,32,114,62,0,0,0,218,14,95,98,117,102,102,
+ 101,114,95,101,110,99,111,100,101,122,41,66,117,102,102,101,
+ 114,101,100,73,110,99,114,101,109,101,110,116,97,108,69,110,
+ 99,111,100,101,114,46,95,98,117,102,102,101,114,95,101,110,
+ 99,111,100,101,231,0,0,0,243,10,0,0,0,128,0,244,
+ 6,0,15,34,208,8,33,114,63,0,0,0,99,3,0,0,
+ 0,0,0,0,0,0,0,0,0,5,0,0,0,3,0,0,
+ 0,243,120,0,0,0,151,0,124,0,106,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,1,
+ 122,0,0,0,125,3,124,0,106,3,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,124,3,124,0,
+ 106,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,124,2,171,3,0,0,0,0,0,0,92,2,
+ 0,0,125,4,125,5,124,3,124,5,100,0,26,0,124,0,
+ 95,0,0,0,0,0,0,0,0,0,124,4,83,0,114,52,
+ 0,0,0,41,3,114,87,0,0,0,114,110,0,0,0,114,
+ 80,0,0,0,169,6,114,61,0,0,0,114,79,0,0,0,
+ 114,92,0,0,0,218,4,100,97,116,97,218,6,114,101,115,
+ 117,108,116,218,8,99,111,110,115,117,109,101,100,115,6,0,
+ 0,0,32,32,32,32,32,32,114,62,0,0,0,114,36,0,
+ 0,0,122,33,66,117,102,102,101,114,101,100,73,110,99,114,
+ 101,109,101,110,116,97,108,69,110,99,111,100,101,114,46,101,
+ 110,99,111,100,101,236,0,0,0,243,63,0,0,0,128,0,
+ 224,15,19,143,123,137,123,152,85,209,15,34,136,4,216,29,
+ 33,215,29,48,209,29,48,176,20,176,116,183,123,177,123,192,
+ 69,211,29,74,209,8,26,136,22,144,24,224,22,26,152,56,
+ 152,57,144,111,136,4,140,11,216,15,21,136,13,114,63,0,
+ 0,0,99,1,0,0,0,0,0,0,0,0,0,0,0,3,
+ 0,0,0,3,0,0,0,243,60,0,0,0,151,0,116,0,
+ 0,0,0,0,0,0,0,0,106,3,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,124,0,171,1,
+ 0,0,0,0,0,0,1,0,100,1,124,0,95,2,0,0,
+ 0,0,0,0,0,0,121,0,114,107,0,0,0,41,3,114,
+ 24,0,0,0,114,95,0,0,0,114,87,0,0,0,114,69,
+ 0,0,0,115,1,0,0,0,32,114,62,0,0,0,114,95,
+ 0,0,0,122,32,66,117,102,102,101,114,101,100,73,110,99,
+ 114,101,109,101,110,116,97,108,69,110,99,111,100,101,114,46,
+ 114,101,115,101,116,244,0,0,0,115,23,0,0,0,128,0,
+ 220,8,26,215,8,32,209,8,32,160,20,212,8,38,216,22,
+ 24,136,4,141,11,114,63,0,0,0,99,1,0,0,0,0,
+ 0,0,0,0,0,0,0,2,0,0,0,3,0,0,0,243,
+ 34,0,0,0,151,0,124,0,106,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,120,1,115,2,
+ 1,0,100,1,83,0,169,2,78,114,2,0,0,0,169,1,
+ 114,87,0,0,0,114,69,0,0,0,115,1,0,0,0,32,
+ 114,62,0,0,0,114,98,0,0,0,122,35,66,117,102,102,
+ 101,114,101,100,73,110,99,114,101,109,101,110,116,97,108,69,
+ 110,99,111,100,101,114,46,103,101,116,115,116,97,116,101,248,
+ 0,0,0,115,17,0,0,0,128,0,216,15,19,143,123,137,
+ 123,210,15,31,152,97,208,8,31,114,63,0,0,0,99,2,
+ 0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,3,
+ 0,0,0,243,26,0,0,0,151,0,124,1,120,1,115,2,
+ 1,0,100,1,124,0,95,0,0,0,0,0,0,0,0,0,
+ 121,0,114,107,0,0,0,114,121,0,0,0,114,100,0,0,
+ 0,115,2,0,0,0,32,32,114,62,0,0,0,114,102,0,
+ 0,0,122,35,66,117,102,102,101,114,101,100,73,110,99,114,
+ 101,109,101,110,116,97,108,69,110,99,111,100,101,114,46,115,
+ 101,116,115,116,97,116,101,251,0,0,0,115,13,0,0,0,
+ 128,0,216,22,27,146,107,152,114,136,4,141,11,114,63,0,
+ 0,0,78,114,82,0,0,0,114,103,0,0,0,41,10,114,
+ 71,0,0,0,114,66,0,0,0,114,67,0,0,0,114,72,
+ 0,0,0,114,89,0,0,0,114,110,0,0,0,114,36,0,
+ 0,0,114,95,0,0,0,114,98,0,0,0,114,102,0,0,
+ 0,114,73,0,0,0,114,63,0,0,0,114,62,0,0,0,
+ 114,105,0,0,0,114,105,0,0,0,220,0,0,0,115,37,
+ 0,0,0,132,0,241,2,4,5,8,243,10,3,5,25,242,
+ 10,3,5,34,243,10,6,5,22,242,16,2,5,25,242,8,
+ 1,5,32,243,6,1,5,34,114,63,0,0,0,114,105,0,
+ 0,0,99,0,0,0,0,0,0,0,0,0,0,0,0,2,
+ 0,0,0,0,0,0,0,243,50,0,0,0,151,0,101,0,
+ 90,1,100,0,90,2,100,1,90,3,100,8,100,2,132,1,
+ 90,4,100,9,100,3,132,1,90,5,100,4,132,0,90,6,
+ 100,5,132,0,90,7,100,6,132,0,90,8,121,7,41,10,
+ 114,25,0,0,0,122,232,10,32,32,32,32,65,110,32,73,
+ 110,99,114,101,109,101,110,116,97,108,68,101,99,111,100,101,
+ 114,32,100,101,99,111,100,101,115,32,97,110,32,105,110,112,
+ 117,116,32,105,110,32,109,117,108,116,105,112,108,101,32,115,
+ 116,101,112,115,46,32,84,104,101,32,105,110,112,117,116,32,
+ 99,97,110,10,32,32,32,32,98,101,32,112,97,115,115,101,
+ 100,32,112,105,101,99,101,32,98,121,32,112,105,101,99,101,
+ 32,116,111,32,116,104,101,32,100,101,99,111,100,101,40,41,
+ 32,109,101,116,104,111,100,46,32,84,104,101,32,73,110,99,
+ 114,101,109,101,110,116,97,108,68,101,99,111,100,101,114,10,
+ 32,32,32,32,114,101,109,101,109,98,101,114,115,32,116,104,
+ 101,32,115,116,97,116,101,32,111,102,32,116,104,101,32,100,
+ 101,99,111,100,105,110,103,32,112,114,111,99,101,115,115,32,
+ 98,101,116,119,101,101,110,32,99,97,108,108,115,32,116,111,
+ 32,100,101,99,111,100,101,40,41,46,10,32,32,32,32,99,
+ 2,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,
+ 3,0,0,0,243,18,0,0,0,151,0,124,1,124,0,95,
+ 0,0,0,0,0,0,0,0,0,121,1,41,2,122,243,10,
+ 32,32,32,32,32,32,32,32,67,114,101,97,116,101,32,97,
+ 110,32,73,110,99,114,101,109,101,110,116,97,108,68,101,99,
+ 111,100,101,114,32,105,110,115,116,97,110,99,101,46,10,10,
+ 32,32,32,32,32,32,32,32,84,104,101,32,73,110,99,114,
+ 101,109,101,110,116,97,108,68,101,99,111,100,101,114,32,109,
+ 97,121,32,117,115,101,32,100,105,102,102,101,114,101,110,116,
+ 32,101,114,114,111,114,32,104,97,110,100,108,105,110,103,32,
+ 115,99,104,101,109,101,115,32,98,121,10,32,32,32,32,32,
+ 32,32,32,112,114,111,118,105,100,105,110,103,32,116,104,101,
+ 32,101,114,114,111,114,115,32,107,101,121,119,111,114,100,32,
+ 97,114,103,117,109,101,110,116,46,32,83,101,101,32,116,104,
+ 101,32,109,111,100,117,108,101,32,100,111,99,115,116,114,105,
+ 110,103,10,32,32,32,32,32,32,32,32,102,111,114,32,97,
+ 32,108,105,115,116,32,111,102,32,112,111,115,115,105,98,108,
+ 101,32,118,97,108,117,101,115,46,10,32,32,32,32,32,32,
+ 32,32,78,41,1,114,80,0,0,0,114,88,0,0,0,115,
+ 2,0,0,0,32,32,114,62,0,0,0,114,89,0,0,0,
+ 122,27,73,110,99,114,101,109,101,110,116,97,108,68,101,99,
+ 111,100,101,114,46,95,95,105,110,105,116,95,95,4,1,0,
+ 0,115,11,0,0,0,128,0,240,16,0,23,29,136,4,141,
+ 11,114,63,0,0,0,99,3,0,0,0,0,0,0,0,0,
+ 0,0,0,1,0,0,0,3,0,0,0,243,14,0,0,0,
+ 151,0,116,0,0,0,0,0,0,0,0,0,130,1,41,1,
+ 122,64,10,32,32,32,32,32,32,32,32,68,101,99,111,100,
+ 101,32,105,110,112,117,116,32,97,110,100,32,114,101,116,117,
+ 114,110,115,32,116,104,101,32,114,101,115,117,108,116,105,110,
+ 103,32,111,98,106,101,99,116,46,10,32,32,32,32,32,32,
+ 32,32,114,76,0,0,0,114,91,0,0,0,115,3,0,0,
+ 0,32,32,32,114,62,0,0,0,114,37,0,0,0,122,25,
+ 73,110,99,114,101,109,101,110,116,97,108,68,101,99,111,100,
+ 101,114,46,100,101,99,111,100,101,14,1,0,0,114,93,0,
+ 0,0,114,63,0,0,0,99,1,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,3,0,0,0,243,4,0,0,
+ 0,151,0,121,1,41,2,122,57,10,32,32,32,32,32,32,
+ 32,32,82,101,115,101,116,32,116,104,101,32,100,101,99,111,
+ 100,101,114,32,116,111,32,116,104,101,32,105,110,105,116,105,
+ 97,108,32,115,116,97,116,101,46,10,32,32,32,32,32,32,
+ 32,32,78,114,73,0,0,0,114,69,0,0,0,115,1,0,
+ 0,0,32,114,62,0,0,0,114,95,0,0,0,122,24,73,
+ 110,99,114,101,109,101,110,116,97,108,68,101,99,111,100,101,
+ 114,46,114,101,115,101,116,20,1,0,0,114,96,0,0,0,
+ 114,63,0,0,0,99,1,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,3,0,0,0,243,4,0,0,0,151,
+ 0,121,1,41,2,97,9,2,0,0,10,32,32,32,32,32,
+ 32,32,32,82,101,116,117,114,110,32,116,104,101,32,99,117,
+ 114,114,101,110,116,32,115,116,97,116,101,32,111,102,32,116,
+ 104,101,32,100,101,99,111,100,101,114,46,10,10,32,32,32,
+ 32,32,32,32,32,84,104,105,115,32,109,117,115,116,32,98,
+ 101,32,97,32,40,98,117,102,102,101,114,101,100,95,105,110,
+ 112,117,116,44,32,97,100,100,105,116,105,111,110,97,108,95,
+ 115,116,97,116,101,95,105,110,102,111,41,32,116,117,112,108,
+ 101,46,10,32,32,32,32,32,32,32,32,98,117,102,102,101,
+ 114,101,100,95,105,110,112,117,116,32,109,117,115,116,32,98,
+ 101,32,97,32,98,121,116,101,115,32,111,98,106,101,99,116,
+ 32,99,111,110,116,97,105,110,105,110,103,32,98,121,116,101,
+ 115,32,116,104,97,116,10,32,32,32,32,32,32,32,32,119,
+ 101,114,101,32,112,97,115,115,101,100,32,116,111,32,100,101,
+ 99,111,100,101,40,41,32,116,104,97,116,32,104,97,118,101,
+ 32,110,111,116,32,121,101,116,32,98,101,101,110,32,99,111,
+ 110,118,101,114,116,101,100,46,10,32,32,32,32,32,32,32,
+ 32,97,100,100,105,116,105,111,110,97,108,95,115,116,97,116,
+ 101,95,105,110,102,111,32,109,117,115,116,32,98,101,32,97,
+ 32,110,111,110,45,110,101,103,97,116,105,118,101,32,105,110,
+ 116,101,103,101,114,10,32,32,32,32,32,32,32,32,114,101,
+ 112,114,101,115,101,110,116,105,110,103,32,116,104,101,32,115,
+ 116,97,116,101,32,111,102,32,116,104,101,32,100,101,99,111,
+ 100,101,114,32,87,73,84,72,79,85,84,32,121,101,116,32,
+ 104,97,118,105,110,103,10,32,32,32,32,32,32,32,32,112,
+ 114,111,99,101,115,115,101,100,32,116,104,101,32,99,111,110,
+ 116,101,110,116,115,32,111,102,32,98,117,102,102,101,114,101,
+ 100,95,105,110,112,117,116,46,32,32,73,110,32,116,104,101,
+ 32,105,110,105,116,105,97,108,32,115,116,97,116,101,10,32,
+ 32,32,32,32,32,32,32,97,110,100,32,97,102,116,101,114,
+ 32,114,101,115,101,116,40,41,44,32,103,101,116,115,116,97,
+ 116,101,40,41,32,109,117,115,116,32,114,101,116,117,114,110,
+ 32,40,98,34,34,44,32,48,41,46,10,32,32,32,32,32,
+ 32,32,32,41,2,114,63,0,0,0,114,2,0,0,0,114,
+ 73,0,0,0,114,69,0,0,0,115,1,0,0,0,32,114,
+ 62,0,0,0,114,98,0,0,0,122,27,73,110,99,114,101,
+ 109,101,110,116,97,108,68,101,99,111,100,101,114,46,103,101,
+ 116,115,116,97,116,101,25,1,0,0,115,7,0,0,0,128,
+ 0,240,24,0,16,24,114,63,0,0,0,99,2,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,
+ 243,4,0,0,0,151,0,121,1,41,2,122,182,10,32,32,
+ 32,32,32,32,32,32,83,101,116,32,116,104,101,32,99,117,
+ 114,114,101,110,116,32,115,116,97,116,101,32,111,102,32,116,
+ 104,101,32,100,101,99,111,100,101,114,46,10,10,32,32,32,
+ 32,32,32,32,32,115,116,97,116,101,32,109,117,115,116,32,
+ 104,97,118,101,32,98,101,101,110,32,114,101,116,117,114,110,
+ 101,100,32,98,121,32,103,101,116,115,116,97,116,101,40,41,
+ 46,32,32,84,104,101,32,101,102,102,101,99,116,32,111,102,
+ 10,32,32,32,32,32,32,32,32,115,101,116,115,116,97,116,
+ 101,40,40,98,34,34,44,32,48,41,41,32,109,117,115,116,
+ 32,98,101,32,101,113,117,105,118,97,108,101,110,116,32,116,
+ 111,32,114,101,115,101,116,40,41,46,10,32,32,32,32,32,
+ 32,32,32,78,114,73,0,0,0,114,100,0,0,0,115,2,
+ 0,0,0,32,32,114,62,0,0,0,114,102,0,0,0,122,
+ 27,73,110,99,114,101,109,101,110,116,97,108,68,101,99,111,
+ 100,101,114,46,115,101,116,115,116,97,116,101,39,1,0,0,
+ 114,96,0,0,0,114,63,0,0,0,78,114,82,0,0,0,
+ 114,103,0,0,0,41,9,114,71,0,0,0,114,66,0,0,
+ 0,114,67,0,0,0,114,72,0,0,0,114,89,0,0,0,
+ 114,37,0,0,0,114,95,0,0,0,114,98,0,0,0,114,
+ 102,0,0,0,114,73,0,0,0,114,63,0,0,0,114,62,
+ 0,0,0,114,25,0,0,0,114,25,0,0,0,254,0,0,
+ 0,115,32,0,0,0,132,0,241,2,4,5,8,243,10,8,
+ 5,29,243,20,4,5,34,242,12,3,5,12,242,10,12,5,
+ 24,243,28,6,5,12,114,63,0,0,0,114,25,0,0,0,
+ 99,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,
+ 0,0,0,0,0,243,56,0,0,0,151,0,101,0,90,1,
+ 100,0,90,2,100,1,90,3,100,9,100,2,132,1,90,4,
+ 100,3,132,0,90,5,100,10,100,4,132,1,90,6,100,5,
+ 132,0,90,7,100,6,132,0,90,8,100,7,132,0,90,9,
+ 121,8,41,11,218,26,66,117,102,102,101,114,101,100,73,110,
+ 99,114,101,109,101,110,116,97,108,68,101,99,111,100,101,114,
+ 122,174,10,32,32,32,32,84,104,105,115,32,115,117,98,99,
+ 108,97,115,115,32,111,102,32,73,110,99,114,101,109,101,110,
+ 116,97,108,68,101,99,111,100,101,114,32,99,97,110,32,98,
+ 101,32,117,115,101,100,32,97,115,32,116,104,101,32,98,97,
+ 115,101,99,108,97,115,115,32,102,111,114,32,97,110,10,32,
+ 32,32,32,105,110,99,114,101,109,101,110,116,97,108,32,100,
+ 101,99,111,100,101,114,32,105,102,32,116,104,101,32,100,101,
+ 99,111,100,101,114,32,109,117,115,116,32,98,101,32,97,98,
+ 108,101,32,116,111,32,104,97,110,100,108,101,32,105,110,99,
+ 111,109,112,108,101,116,101,10,32,32,32,32,98,121,116,101,
+ 32,115,101,113,117,101,110,99,101,115,46,10,32,32,32,32,
+ 99,2,0,0,0,0,0,0,0,0,0,0,0,4,0,0,
+ 0,3,0,0,0,243,62,0,0,0,151,0,116,0,0,0,
+ 0,0,0,0,0,0,106,3,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,124,0,124,1,171,2,
+ 0,0,0,0,0,0,1,0,100,1,124,0,95,2,0,0,
+ 0,0,0,0,0,0,121,0,169,2,78,114,63,0,0,0,
+ 41,3,114,25,0,0,0,114,89,0,0,0,114,87,0,0,
+ 0,114,88,0,0,0,115,2,0,0,0,32,32,114,62,0,
+ 0,0,114,89,0,0,0,122,35,66,117,102,102,101,114,101,
+ 100,73,110,99,114,101,109,101,110,116,97,108,68,101,99,111,
+ 100,101,114,46,95,95,105,110,105,116,95,95,53,1,0,0,
+ 115,25,0,0,0,128,0,220,8,26,215,8,35,209,8,35,
+ 160,68,168,38,212,8,49,224,22,25,136,4,141,11,114,63,
+ 0,0,0,99,4,0,0,0,0,0,0,0,0,0,0,0,
+ 1,0,0,0,3,0,0,0,243,14,0,0,0,151,0,116,
+ 0,0,0,0,0,0,0,0,0,130,1,114,52,0,0,0,
+ 114,76,0,0,0,114,109,0,0,0,115,4,0,0,0,32,
+ 32,32,32,114,62,0,0,0,218,14,95,98,117,102,102,101,
+ 114,95,100,101,99,111,100,101,122,41,66,117,102,102,101,114,
+ 101,100,73,110,99,114,101,109,101,110,116,97,108,68,101,99,
+ 111,100,101,114,46,95,98,117,102,102,101,114,95,100,101,99,
+ 111,100,101,58,1,0,0,114,111,0,0,0,114,63,0,0,
+ 0,99,3,0,0,0,0,0,0,0,0,0,0,0,5,0,
+ 0,0,3,0,0,0,243,120,0,0,0,151,0,124,0,106,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,124,1,122,0,0,0,125,3,124,0,106,3,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,124,3,124,0,106,4,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,124,2,171,3,0,0,0,
+ 0,0,0,92,2,0,0,125,4,125,5,124,3,124,5,100,
+ 0,26,0,124,0,95,0,0,0,0,0,0,0,0,0,124,
+ 4,83,0,114,52,0,0,0,41,3,114,87,0,0,0,114,
+ 134,0,0,0,114,80,0,0,0,114,113,0,0,0,115,6,
+ 0,0,0,32,32,32,32,32,32,114,62,0,0,0,114,37,
+ 0,0,0,122,33,66,117,102,102,101,114,101,100,73,110,99,
+ 114,101,109,101,110,116,97,108,68,101,99,111,100,101,114,46,
+ 100,101,99,111,100,101,63,1,0,0,114,117,0,0,0,114,
+ 63,0,0,0,99,1,0,0,0,0,0,0,0,0,0,0,
+ 0,3,0,0,0,3,0,0,0,243,60,0,0,0,151,0,
+ 116,0,0,0,0,0,0,0,0,0,106,3,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,0,
+ 171,1,0,0,0,0,0,0,1,0,100,1,124,0,95,2,
+ 0,0,0,0,0,0,0,0,121,0,114,132,0,0,0,41,
+ 3,114,25,0,0,0,114,95,0,0,0,114,87,0,0,0,
+ 114,69,0,0,0,115,1,0,0,0,32,114,62,0,0,0,
+ 114,95,0,0,0,122,32,66,117,102,102,101,114,101,100,73,
+ 110,99,114,101,109,101,110,116,97,108,68,101,99,111,100,101,
+ 114,46,114,101,115,101,116,71,1,0,0,115,23,0,0,0,
+ 128,0,220,8,26,215,8,32,209,8,32,160,20,212,8,38,
+ 216,22,25,136,4,141,11,114,63,0,0,0,99,1,0,0,
+ 0,0,0,0,0,0,0,0,0,2,0,0,0,3,0,0,
+ 0,243,30,0,0,0,151,0,124,0,106,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,1,
+ 102,2,83,0,114,120,0,0,0,114,121,0,0,0,114,69,
+ 0,0,0,115,1,0,0,0,32,114,62,0,0,0,114,98,
+ 0,0,0,122,35,66,117,102,102,101,114,101,100,73,110,99,
+ 114,101,109,101,110,116,97,108,68,101,99,111,100,101,114,46,
+ 103,101,116,115,116,97,116,101,75,1,0,0,115,17,0,0,
+ 0,128,0,224,16,20,151,11,145,11,152,81,208,15,31,208,
+ 8,31,114,63,0,0,0,99,2,0,0,0,0,0,0,0,
+ 0,0,0,0,2,0,0,0,3,0,0,0,243,24,0,0,
+ 0,151,0,124,1,100,1,25,0,0,0,124,0,95,0,0,
+ 0,0,0,0,0,0,0,121,0,114,120,0,0,0,114,121,
+ 0,0,0,114,100,0,0,0,115,2,0,0,0,32,32,114,
+ 62,0,0,0,114,102,0,0,0,122,35,66,117,102,102,101,
+ 114,101,100,73,110,99,114,101,109,101,110,116,97,108,68,101,
+ 99,111,100,101,114,46,115,101,116,115,116,97,116,101,79,1,
+ 0,0,115,13,0,0,0,128,0,224,22,27,152,65,145,104,
+ 136,4,141,11,114,63,0,0,0,78,114,82,0,0,0,114,
+ 103,0,0,0,41,10,114,71,0,0,0,114,66,0,0,0,
+ 114,67,0,0,0,114,72,0,0,0,114,89,0,0,0,114,
+ 134,0,0,0,114,37,0,0,0,114,95,0,0,0,114,98,
+ 0,0,0,114,102,0,0,0,114,73,0,0,0,114,63,0,
+ 0,0,114,62,0,0,0,114,130,0,0,0,114,130,0,0,
+ 0,47,1,0,0,115,37,0,0,0,132,0,241,2,4,5,
+ 8,243,10,3,5,26,242,10,3,5,34,243,10,6,5,22,
+ 242,16,2,5,26,242,8,2,5,32,243,8,2,5,31,114,
+ 63,0,0,0,114,130,0,0,0,99,0,0,0,0,0,0,
+ 0,0,0,0,0,0,2,0,0,0,0,0,0,0,243,74,
+ 0,0,0,151,0,101,0,90,1,100,0,90,2,100,11,100,
+ 1,132,1,90,3,100,2,132,0,90,4,100,3,132,0,90,
+ 5,100,4,132,0,90,6,100,12,100,5,132,1,90,7,101,
+ 8,102,1,100,6,132,1,90,9,100,7,132,0,90,10,100,
+ 8,132,0,90,11,100,9,132,0,90,12,121,10,41,13,114,
+ 27,0,0,0,99,3,0,0,0,0,0,0,0,0,0,0,
+ 0,2,0,0,0,3,0,0,0,243,32,0,0,0,151,0,
+ 124,1,124,0,95,0,0,0,0,0,0,0,0,0,124,2,
+ 124,0,95,1,0,0,0,0,0,0,0,0,121,1,41,2,
+ 97,119,3,0,0,32,67,114,101,97,116,101,115,32,97,32,
+ 83,116,114,101,97,109,87,114,105,116,101,114,32,105,110,115,
+ 116,97,110,99,101,46,10,10,32,32,32,32,32,32,32,32,
+ 32,32,32,32,115,116,114,101,97,109,32,109,117,115,116,32,
+ 98,101,32,97,32,102,105,108,101,45,108,105,107,101,32,111,
+ 98,106,101,99,116,32,111,112,101,110,32,102,111,114,32,119,
+ 114,105,116,105,110,103,46,10,10,32,32,32,32,32,32,32,
+ 32,32,32,32,32,84,104,101,32,83,116,114,101,97,109,87,
+ 114,105,116,101,114,32,109,97,121,32,117,115,101,32,100,105,
+ 102,102,101,114,101,110,116,32,101,114,114,111,114,32,104,97,
+ 110,100,108,105,110,103,10,32,32,32,32,32,32,32,32,32,
+ 32,32,32,115,99,104,101,109,101,115,32,98,121,32,112,114,
+ 111,118,105,100,105,110,103,32,116,104,101,32,101,114,114,111,
+ 114,115,32,107,101,121,119,111,114,100,32,97,114,103,117,109,
+ 101,110,116,46,32,84,104,101,115,101,10,32,32,32,32,32,
+ 32,32,32,32,32,32,32,112,97,114,97,109,101,116,101,114,
+ 115,32,97,114,101,32,112,114,101,100,101,102,105,110,101,100,
+ 58,10,10,32,32,32,32,32,32,32,32,32,32,32,32,32,
+ 39,115,116,114,105,99,116,39,32,45,32,114,97,105,115,101,
+ 32,97,32,86,97,108,117,101,69,114,114,111,114,32,40,111,
+ 114,32,97,32,115,117,98,99,108,97,115,115,41,10,32,32,
+ 32,32,32,32,32,32,32,32,32,32,32,39,105,103,110,111,
+ 114,101,39,32,45,32,105,103,110,111,114,101,32,116,104,101,
+ 32,99,104,97,114,97,99,116,101,114,32,97,110,100,32,99,
+ 111,110,116,105,110,117,101,32,119,105,116,104,32,116,104,101,
+ 32,110,101,120,116,10,32,32,32,32,32,32,32,32,32,32,
+ 32,32,32,39,114,101,112,108,97,99,101,39,45,32,114,101,
+ 112,108,97,99,101,32,119,105,116,104,32,97,32,115,117,105,
+ 116,97,98,108,101,32,114,101,112,108,97,99,101,109,101,110,
+ 116,32,99,104,97,114,97,99,116,101,114,10,32,32,32,32,
+ 32,32,32,32,32,32,32,32,32,39,120,109,108,99,104,97,
+ 114,114,101,102,114,101,112,108,97,99,101,39,32,45,32,82,
+ 101,112,108,97,99,101,32,119,105,116,104,32,116,104,101,32,
+ 97,112,112,114,111,112,114,105,97,116,101,32,88,77,76,10,
+ 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,
+ 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,
+ 32,32,32,99,104,97,114,97,99,116,101,114,32,114,101,102,
+ 101,114,101,110,99,101,46,10,32,32,32,32,32,32,32,32,
+ 32,32,32,32,32,39,98,97,99,107,115,108,97,115,104,114,
+ 101,112,108,97,99,101,39,32,32,45,32,82,101,112,108,97,
+ 99,101,32,119,105,116,104,32,98,97,99,107,115,108,97,115,
+ 104,101,100,32,101,115,99,97,112,101,10,32,32,32,32,32,
+ 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,
+ 32,32,32,32,32,32,32,32,32,32,32,32,32,32,115,101,
+ 113,117,101,110,99,101,115,46,10,32,32,32,32,32,32,32,
+ 32,32,32,32,32,32,39,110,97,109,101,114,101,112,108,97,
+ 99,101,39,32,32,32,32,32,32,32,45,32,82,101,112,108,
+ 97,99,101,32,119,105,116,104,32,92,78,123,46,46,46,125,
+ 32,101,115,99,97,112,101,32,115,101,113,117,101,110,99,101,
+ 115,46,10,10,32,32,32,32,32,32,32,32,32,32,32,32,
+ 84,104,101,32,115,101,116,32,111,102,32,97,108,108,111,119,
+ 101,100,32,112,97,114,97,109,101,116,101,114,32,118,97,108,
+ 117,101,115,32,99,97,110,32,98,101,32,101,120,116,101,110,
+ 100,101,100,32,118,105,97,10,32,32,32,32,32,32,32,32,
+ 32,32,32,32,114,101,103,105,115,116,101,114,95,101,114,114,
+ 111,114,46,10,32,32,32,32,32,32,32,32,78,41,2,218,
+ 6,115,116,114,101,97,109,114,80,0,0,0,169,3,114,61,
+ 0,0,0,114,141,0,0,0,114,80,0,0,0,115,3,0,
+ 0,0,32,32,32,114,62,0,0,0,114,89,0,0,0,122,
+ 21,83,116,114,101,97,109,87,114,105,116,101,114,46,95,95,
+ 105,110,105,116,95,95,92,1,0,0,115,18,0,0,0,128,
+ 0,240,44,0,23,29,136,4,140,11,216,22,28,136,4,141,
+ 11,114,63,0,0,0,99,2,0,0,0,0,0,0,0,0,
+ 0,0,0,4,0,0,0,3,0,0,0,243,120,0,0,0,
+ 151,0,124,0,106,1,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,124,1,124,0,106,2,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 171,2,0,0,0,0,0,0,92,2,0,0,125,2,125,3,
+ 124,0,106,4,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,106,7,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,124,2,171,1,0,0,
+ 0,0,0,0,1,0,121,1,41,2,122,62,32,87,114,105,
+ 116,101,115,32,116,104,101,32,111,98,106,101,99,116,39,115,
+ 32,99,111,110,116,101,110,116,115,32,101,110,99,111,100,101,
+ 100,32,116,111,32,115,101,108,102,46,115,116,114,101,97,109,
+ 46,10,32,32,32,32,32,32,32,32,78,41,4,114,36,0,
+ 0,0,114,80,0,0,0,114,141,0,0,0,218,5,119,114,
+ 105,116,101,41,4,114,61,0,0,0,218,6,111,98,106,101,
+ 99,116,114,114,0,0,0,114,116,0,0,0,115,4,0,0,
+ 0,32,32,32,32,114,62,0,0,0,114,144,0,0,0,122,
+ 18,83,116,114,101,97,109,87,114,105,116,101,114,46,119,114,
+ 105,116,101,117,1,0,0,115,46,0,0,0,128,0,240,8,
+ 0,26,30,159,27,153,27,160,86,168,84,175,91,169,91,211,
+ 25,57,137,14,136,4,136,104,216,8,12,143,11,137,11,215,
+ 8,25,209,8,25,152,36,213,8,31,114,63,0,0,0,99,
+ 2,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,
+ 3,0,0,0,243,68,0,0,0,151,0,124,0,106,1,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,100,1,106,3,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,124,1,171,1,0,0,0,0,0,
+ 0,171,1,0,0,0,0,0,0,1,0,121,2,41,3,122,
+ 91,32,87,114,105,116,101,115,32,116,104,101,32,99,111,110,
+ 99,97,116,101,110,97,116,101,100,32,108,105,115,116,32,111,
+ 102,32,115,116,114,105,110,103,115,32,116,111,32,116,104,101,
+ 32,115,116,114,101,97,109,10,32,32,32,32,32,32,32,32,
+ 32,32,32,32,117,115,105,110,103,32,46,119,114,105,116,101,
+ 40,41,46,10,32,32,32,32,32,32,32,32,114,86,0,0,
+ 0,78,41,2,114,144,0,0,0,218,4,106,111,105,110,169,
+ 2,114,61,0,0,0,218,4,108,105,115,116,115,2,0,0,
+ 0,32,32,114,62,0,0,0,218,10,119,114,105,116,101,108,
+ 105,110,101,115,122,23,83,116,114,101,97,109,87,114,105,116,
+ 101,114,46,119,114,105,116,101,108,105,110,101,115,124,1,0,
+ 0,115,24,0,0,0,128,0,240,10,0,9,13,143,10,137,
+ 10,144,50,151,55,145,55,152,52,147,61,213,8,33,114,63,
+ 0,0,0,99,1,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,3,0,0,0,243,4,0,0,0,151,0,121,
+ 1,41,2,97,50,1,0,0,32,82,101,115,101,116,115,32,
+ 116,104,101,32,99,111,100,101,99,32,98,117,102,102,101,114,
+ 115,32,117,115,101,100,32,102,111,114,32,107,101,101,112,105,
+ 110,103,32,105,110,116,101,114,110,97,108,32,115,116,97,116,
+ 101,46,10,10,32,32,32,32,32,32,32,32,32,32,32,32,
+ 67,97,108,108,105,110,103,32,116,104,105,115,32,109,101,116,
+ 104,111,100,32,115,104,111,117,108,100,32,101,110,115,117,114,
+ 101,32,116,104,97,116,32,116,104,101,32,100,97,116,97,32,
+ 111,110,32,116,104,101,10,32,32,32,32,32,32,32,32,32,
+ 32,32,32,111,117,116,112,117,116,32,105,115,32,112,117,116,
+ 32,105,110,116,111,32,97,32,99,108,101,97,110,32,115,116,
+ 97,116,101,44,32,116,104,97,116,32,97,108,108,111,119,115,
+ 32,97,112,112,101,110,100,105,110,103,10,32,32,32,32,32,
+ 32,32,32,32,32,32,32,111,102,32,110,101,119,32,102,114,
+ 101,115,104,32,100,97,116,97,32,119,105,116,104,111,117,116,
+ 32,104,97,118,105,110,103,32,116,111,32,114,101,115,99,97,
+ 110,32,116,104,101,32,119,104,111,108,101,10,32,32,32,32,
+ 32,32,32,32,32,32,32,32,115,116,114,101,97,109,32,116,
+ 111,32,114,101,99,111,118,101,114,32,115,116,97,116,101,46,
+ 10,10,32,32,32,32,32,32,32,32,78,114,73,0,0,0,
+ 114,69,0,0,0,115,1,0,0,0,32,114,62,0,0,0,
+ 114,95,0,0,0,122,18,83,116,114,101,97,109,87,114,105,
+ 116,101,114,46,114,101,115,101,116,131,1,0,0,115,7,0,
+ 0,0,128,0,240,20,0,9,13,114,63,0,0,0,99,3,
+ 0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,3,
+ 0,0,0,243,116,0,0,0,151,0,124,0,106,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 106,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,124,1,124,2,171,2,0,0,0,0,0,0,
+ 1,0,124,2,100,1,107,40,0,0,114,23,124,1,100,1,
+ 107,40,0,0,114,17,124,0,106,5,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,171,0,0,0,
+ 0,0,0,0,1,0,121,0,121,0,121,0,114,120,0,0,
+ 0,169,3,114,141,0,0,0,218,4,115,101,101,107,114,95,
+ 0,0,0,169,3,114,61,0,0,0,218,6,111,102,102,115,
+ 101,116,218,6,119,104,101,110,99,101,115,3,0,0,0,32,
+ 32,32,114,62,0,0,0,114,154,0,0,0,122,17,83,116,
+ 114,101,97,109,87,114,105,116,101,114,46,115,101,101,107,143,
+ 1,0,0,115,51,0,0,0,128,0,216,8,12,143,11,137,
+ 11,215,8,24,209,8,24,152,22,160,22,212,8,40,216,11,
+ 17,144,81,138,59,152,54,160,81,154,59,216,12,16,143,74,
+ 137,74,141,76,240,3,0,28,39,136,59,114,63,0,0,0,
+ 99,3,0,0,0,0,0,0,0,0,0,0,0,4,0,0,
+ 0,3,0,0,0,243,40,0,0,0,151,0,2,0,124,2,
+ 124,0,106,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,124,1,171,2,0,0,0,0,0,0,
+ 83,0,169,1,122,63,32,73,110,104,101,114,105,116,32,97,
+ 108,108,32,111,116,104,101,114,32,109,101,116,104,111,100,115,
+ 32,102,114,111,109,32,116,104,101,32,117,110,100,101,114,108,
+ 121,105,110,103,32,115,116,114,101,97,109,46,10,32,32,32,
+ 32,32,32,32,32,169,1,114,141,0,0,0,169,3,114,61,
+ 0,0,0,114,55,0,0,0,218,7,103,101,116,97,116,116,
+ 114,115,3,0,0,0,32,32,32,114,62,0,0,0,218,11,
+ 95,95,103,101,116,97,116,116,114,95,95,122,24,83,116,114,
+ 101,97,109,87,114,105,116,101,114,46,95,95,103,101,116,97,
+ 116,116,114,95,95,148,1,0,0,243,21,0,0,0,128,0,
+ 241,10,0,16,23,144,116,151,123,145,123,160,68,211,15,41,
+ 208,8,41,114,63,0,0,0,99,1,0,0,0,0,0,0,
+ 0,0,0,0,0,1,0,0,0,3,0,0,0,243,6,0,
+ 0,0,151,0,124,0,83,0,114,52,0,0,0,114,73,0,
+ 0,0,114,69,0,0,0,115,1,0,0,0,32,114,62,0,
+ 0,0,218,9,95,95,101,110,116,101,114,95,95,122,22,83,
+ 116,114,101,97,109,87,114,105,116,101,114,46,95,95,101,110,
+ 116,101,114,95,95,155,1,0,0,243,7,0,0,0,128,0,
+ 216,15,19,136,11,114,63,0,0,0,99,4,0,0,0,0,
+ 0,0,0,0,0,0,0,2,0,0,0,3,0,0,0,243,
+ 56,0,0,0,151,0,124,0,106,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,106,3,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 171,0,0,0,0,0,0,0,1,0,121,0,114,52,0,0,
+ 0,169,2,114,141,0,0,0,218,5,99,108,111,115,101,169,
+ 4,114,61,0,0,0,218,4,116,121,112,101,218,5,118,97,
+ 108,117,101,218,2,116,98,115,4,0,0,0,32,32,32,32,
+ 114,62,0,0,0,218,8,95,95,101,120,105,116,95,95,122,
+ 21,83,116,114,101,97,109,87,114,105,116,101,114,46,95,95,
+ 101,120,105,116,95,95,158,1,0,0,243,18,0,0,0,128,
+ 0,216,8,12,143,11,137,11,215,8,25,209,8,25,213,8,
+ 27,114,63,0,0,0,99,2,0,0,0,0,0,0,0,0,
+ 0,0,0,4,0,0,0,3,0,0,0,243,70,0,0,0,
+ 151,0,116,1,0,0,0,0,0,0,0,0,100,1,124,0,
+ 106,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,106,4,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,122,6,0,0,171,1,0,0,
+ 0,0,0,0,130,1,169,2,78,122,18,99,97,110,39,116,
+ 32,115,101,114,105,97,108,105,122,101,32,37,115,169,3,218,
+ 9,84,121,112,101,69,114,114,111,114,114,65,0,0,0,114,
+ 71,0,0,0,169,2,114,61,0,0,0,218,5,112,114,111,
+ 116,111,115,2,0,0,0,32,32,114,62,0,0,0,218,13,
+ 95,95,114,101,100,117,99,101,95,101,120,95,95,122,26,83,
+ 116,114,101,97,109,87,114,105,116,101,114,46,95,95,114,101,
+ 100,117,99,101,95,101,120,95,95,161,1,0,0,243,29,0,
+ 0,0,128,0,220,14,23,208,24,44,168,116,175,126,169,126,
+ 215,47,70,209,47,70,209,24,70,211,14,71,208,8,71,114,
+ 63,0,0,0,78,114,82,0,0,0,169,1,114,2,0,0,
+ 0,41,13,114,71,0,0,0,114,66,0,0,0,114,67,0,
+ 0,0,114,89,0,0,0,114,144,0,0,0,114,150,0,0,
+ 0,114,95,0,0,0,114,154,0,0,0,114,162,0,0,0,
+ 114,163,0,0,0,114,166,0,0,0,114,175,0,0,0,114,
+ 183,0,0,0,114,73,0,0,0,114,63,0,0,0,114,62,
+ 0,0,0,114,27,0,0,0,114,27,0,0,0,90,1,0,
+ 0,115,53,0,0,0,132,0,243,4,23,5,29,242,50,5,
+ 5,32,242,14,5,5,34,242,14,10,5,13,243,24,3,5,
+ 25,240,12,0,29,36,243,3,5,5,42,242,14,1,5,20,
+ 242,6,1,5,28,243,6,1,5,72,1,114,63,0,0,0,
+ 114,27,0,0,0,99,0,0,0,0,0,0,0,0,0,0,
+ 0,0,2,0,0,0,0,0,0,0,243,110,0,0,0,151,
+ 0,101,0,90,1,100,0,90,2,101,3,90,4,100,15,100,
+ 1,132,1,90,5,100,15,100,2,132,1,90,6,100,16,100,
+ 3,132,1,90,7,100,17,100,5,132,1,90,8,100,17,100,
+ 6,132,1,90,9,100,7,132,0,90,10,100,18,100,8,132,
+ 1,90,11,100,9,132,0,90,12,100,10,132,0,90,13,101,
+ 14,102,1,100,11,132,1,90,15,100,12,132,0,90,16,100,
+ 13,132,0,90,17,100,14,132,0,90,18,121,4,41,19,114,
+ 26,0,0,0,99,3,0,0,0,0,0,0,0,0,0,0,
+ 0,2,0,0,0,3,0,0,0,243,136,0,0,0,151,0,
+ 124,1,124,0,95,0,0,0,0,0,0,0,0,0,124,2,
+ 124,0,95,1,0,0,0,0,0,0,0,0,100,1,124,0,
+ 95,2,0,0,0,0,0,0,0,0,124,0,106,7,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 171,0,0,0,0,0,0,0,124,0,95,4,0,0,0,0,
+ 0,0,0,0,124,0,106,8,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,124,0,95,5,0,0,
+ 0,0,0,0,0,0,100,2,124,0,95,6,0,0,0,0,
+ 0,0,0,0,121,2,41,3,97,141,2,0,0,32,67,114,
+ 101,97,116,101,115,32,97,32,83,116,114,101,97,109,82,101,
+ 97,100,101,114,32,105,110,115,116,97,110,99,101,46,10,10,
+ 32,32,32,32,32,32,32,32,32,32,32,32,115,116,114,101,
+ 97,109,32,109,117,115,116,32,98,101,32,97,32,102,105,108,
+ 101,45,108,105,107,101,32,111,98,106,101,99,116,32,111,112,
+ 101,110,32,102,111,114,32,114,101,97,100,105,110,103,46,10,
+ 10,32,32,32,32,32,32,32,32,32,32,32,32,84,104,101,
+ 32,83,116,114,101,97,109,82,101,97,100,101,114,32,109,97,
+ 121,32,117,115,101,32,100,105,102,102,101,114,101,110,116,32,
+ 101,114,114,111,114,32,104,97,110,100,108,105,110,103,10,32,
+ 32,32,32,32,32,32,32,32,32,32,32,115,99,104,101,109,
+ 101,115,32,98,121,32,112,114,111,118,105,100,105,110,103,32,
+ 116,104,101,32,101,114,114,111,114,115,32,107,101,121,119,111,
+ 114,100,32,97,114,103,117,109,101,110,116,46,32,84,104,101,
+ 115,101,10,32,32,32,32,32,32,32,32,32,32,32,32,112,
+ 97,114,97,109,101,116,101,114,115,32,97,114,101,32,112,114,
+ 101,100,101,102,105,110,101,100,58,10,10,32,32,32,32,32,
+ 32,32,32,32,32,32,32,32,39,115,116,114,105,99,116,39,
+ 32,45,32,114,97,105,115,101,32,97,32,86,97,108,117,101,
+ 69,114,114,111,114,32,40,111,114,32,97,32,115,117,98,99,
+ 108,97,115,115,41,10,32,32,32,32,32,32,32,32,32,32,
+ 32,32,32,39,105,103,110,111,114,101,39,32,45,32,105,103,
+ 110,111,114,101,32,116,104,101,32,99,104,97,114,97,99,116,
+ 101,114,32,97,110,100,32,99,111,110,116,105,110,117,101,32,
+ 119,105,116,104,32,116,104,101,32,110,101,120,116,10,32,32,
+ 32,32,32,32,32,32,32,32,32,32,32,39,114,101,112,108,
+ 97,99,101,39,45,32,114,101,112,108,97,99,101,32,119,105,
+ 116,104,32,97,32,115,117,105,116,97,98,108,101,32,114,101,
+ 112,108,97,99,101,109,101,110,116,32,99,104,97,114,97,99,
+ 116,101,114,10,32,32,32,32,32,32,32,32,32,32,32,32,
+ 32,39,98,97,99,107,115,108,97,115,104,114,101,112,108,97,
+ 99,101,39,32,45,32,82,101,112,108,97,99,101,32,119,105,
+ 116,104,32,98,97,99,107,115,108,97,115,104,101,100,32,101,
+ 115,99,97,112,101,32,115,101,113,117,101,110,99,101,115,59,
+ 10,10,32,32,32,32,32,32,32,32,32,32,32,32,84,104,
+ 101,32,115,101,116,32,111,102,32,97,108,108,111,119,101,100,
+ 32,112,97,114,97,109,101,116,101,114,32,118,97,108,117,101,
+ 115,32,99,97,110,32,98,101,32,101,120,116,101,110,100,101,
+ 100,32,118,105,97,10,32,32,32,32,32,32,32,32,32,32,
+ 32,32,114,101,103,105,115,116,101,114,95,101,114,114,111,114,
+ 46,10,32,32,32,32,32,32,32,32,114,63,0,0,0,78,
+ 41,7,114,141,0,0,0,114,80,0,0,0,218,10,98,121,
+ 116,101,98,117,102,102,101,114,218,14,99,104,97,114,98,117,
+ 102,102,101,114,116,121,112,101,218,17,95,101,109,112,116,121,
+ 95,99,104,97,114,98,117,102,102,101,114,218,10,99,104,97,
+ 114,98,117,102,102,101,114,218,10,108,105,110,101,98,117,102,
+ 102,101,114,114,142,0,0,0,115,3,0,0,0,32,32,32,
+ 114,62,0,0,0,114,89,0,0,0,122,21,83,116,114,101,
+ 97,109,82,101,97,100,101,114,46,95,95,105,110,105,116,95,
+ 95,170,1,0,0,115,62,0,0,0,128,0,240,36,0,23,
+ 29,136,4,140,11,216,22,28,136,4,140,11,216,26,29,136,
+ 4,140,15,216,33,37,215,33,52,209,33,52,211,33,54,136,
+ 4,212,8,30,216,26,30,215,26,48,209,26,48,136,4,140,
+ 15,216,26,30,136,4,141,15,114,63,0,0,0,99,3,0,
+ 0,0,0,0,0,0,0,0,0,0,1,0,0,0,3,0,
+ 0,0,243,14,0,0,0,151,0,116,0,0,0,0,0,0,
+ 0,0,0,130,1,114,52,0,0,0,114,76,0,0,0,114,
+ 78,0,0,0,115,3,0,0,0,32,32,32,114,62,0,0,
+ 0,114,37,0,0,0,122,19,83,116,114,101,97,109,82,101,
+ 97,100,101,114,46,100,101,99,111,100,101,195,1,0,0,115,
+ 8,0,0,0,128,0,220,14,33,208,8,33,114,63,0,0,
+ 0,99,4,0,0,0,0,0,0,0,0,0,0,0,6,0,
+ 0,0,3,0,0,0,243,70,3,0,0,151,0,124,0,106,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,114,49,124,0,106,2,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,106,5,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,
+ 0,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,171,1,0,0,0,0,0,0,124,0,95,
+ 3,0,0,0,0,0,0,0,0,100,1,124,0,95,0,0,
+ 0,0,0,0,0,0,0,124,2,100,2,107,2,0,0,114,
+ 2,124,1,125,2,9,0,124,2,100,2,107,92,0,0,114,
+ 25,116,9,0,0,0,0,0,0,0,0,124,0,106,6,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,171,1,0,0,0,0,0,0,124,2,107,92,0,0,114,
+ 1,110,144,124,1,100,2,107,2,0,0,114,27,124,0,106,
+ 10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,106,13,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,171,0,0,0,0,0,0,0,125,
+ 4,110,27,124,0,106,10,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,106,13,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,124,1,171,
+ 1,0,0,0,0,0,0,125,4,124,0,106,14,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,
+ 4,122,0,0,0,125,5,124,5,115,1,110,67,9,0,124,
+ 0,106,17,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,124,5,124,0,106,18,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,171,2,0,
+ 0,0,0,0,0,92,2,0,0,125,6,125,7,124,5,124,
+ 7,100,1,26,0,124,0,95,7,0,0,0,0,0,0,0,
+ 0,124,0,120,1,106,6,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,124,6,122,13,0,0,99,
+ 2,95,3,0,0,0,0,0,0,0,0,124,4,115,1,110,
+ 1,140,174,124,2,100,2,107,2,0,0,114,31,124,0,106,
+ 6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,125,10,124,0,106,2,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,124,0,95,3,0,
+ 0,0,0,0,0,0,0,124,10,83,0,124,0,106,6,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,100,1,124,2,26,0,125,10,124,0,106,6,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,
+ 2,100,1,26,0,124,0,95,3,0,0,0,0,0,0,0,
+ 0,124,10,83,0,35,0,116,20,0,0,0,0,0,0,0,
+ 0,36,0,114,90,125,8,124,3,114,77,124,0,106,17,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,124,5,100,1,124,8,106,22,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,26,0,124,0,106,
+ 18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,171,2,0,0,0,0,0,0,92,2,0,0,125,
+ 6,125,7,124,6,106,25,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,100,3,172,4,171,1,0,
+ 0,0,0,0,0,125,9,116,9,0,0,0,0,0,0,0,
+ 0,124,9,171,1,0,0,0,0,0,0,100,5,107,26,0,
+ 0,114,2,130,0,130,0,89,0,100,1,125,8,126,8,140,
+ 202,100,1,125,8,126,8,119,1,119,0,120,3,89,0,119,
+ 1,41,6,97,236,4,0,0,32,68,101,99,111,100,101,115,
+ 32,100,97,116,97,32,102,114,111,109,32,116,104,101,32,115,
+ 116,114,101,97,109,32,115,101,108,102,46,115,116,114,101,97,
+ 109,32,97,110,100,32,114,101,116,117,114,110,115,32,116,104,
+ 101,10,32,32,32,32,32,32,32,32,32,32,32,32,114,101,
+ 115,117,108,116,105,110,103,32,111,98,106,101,99,116,46,10,
+ 10,32,32,32,32,32,32,32,32,32,32,32,32,99,104,97,
+ 114,115,32,105,110,100,105,99,97,116,101,115,32,116,104,101,
+ 32,110,117,109,98,101,114,32,111,102,32,100,101,99,111,100,
+ 101,100,32,99,111,100,101,32,112,111,105,110,116,115,32,111,
+ 114,32,98,121,116,101,115,32,116,111,10,32,32,32,32,32,
+ 32,32,32,32,32,32,32,114,101,116,117,114,110,46,32,114,
+ 101,97,100,40,41,32,119,105,108,108,32,110,101,118,101,114,
+ 32,114,101,116,117,114,110,32,109,111,114,101,32,100,97,116,
+ 97,32,116,104,97,110,32,114,101,113,117,101,115,116,101,100,
+ 44,10,32,32,32,32,32,32,32,32,32,32,32,32,98,117,
+ 116,32,105,116,32,109,105,103,104,116,32,114,101,116,117,114,
+ 110,32,108,101,115,115,44,32,105,102,32,116,104,101,114,101,
+ 32,105,115,32,110,111,116,32,101,110,111,117,103,104,32,97,
+ 118,97,105,108,97,98,108,101,46,10,10,32,32,32,32,32,
+ 32,32,32,32,32,32,32,115,105,122,101,32,105,110,100,105,
+ 99,97,116,101,115,32,116,104,101,32,97,112,112,114,111,120,
+ 105,109,97,116,101,32,109,97,120,105,109,117,109,32,110,117,
+ 109,98,101,114,32,111,102,32,100,101,99,111,100,101,100,10,
+ 32,32,32,32,32,32,32,32,32,32,32,32,98,121,116,101,
+ 115,32,111,114,32,99,111,100,101,32,112,111,105,110,116,115,
+ 32,116,111,32,114,101,97,100,32,102,111,114,32,100,101,99,
+ 111,100,105,110,103,46,32,84,104,101,32,100,101,99,111,100,
+ 101,114,10,32,32,32,32,32,32,32,32,32,32,32,32,99,
+ 97,110,32,109,111,100,105,102,121,32,116,104,105,115,32,115,
+ 101,116,116,105,110,103,32,97,115,32,97,112,112,114,111,112,
+ 114,105,97,116,101,46,32,84,104,101,32,100,101,102,97,117,
+ 108,116,32,118,97,108,117,101,10,32,32,32,32,32,32,32,
+ 32,32,32,32,32,45,49,32,105,110,100,105,99,97,116,101,
+ 115,32,116,111,32,114,101,97,100,32,97,110,100,32,100,101,
+ 99,111,100,101,32,97,115,32,109,117,99,104,32,97,115,32,
+ 112,111,115,115,105,98,108,101,46,32,32,115,105,122,101,10,
+ 32,32,32,32,32,32,32,32,32,32,32,32,105,115,32,105,
+ 110,116,101,110,100,101,100,32,116,111,32,112,114,101,118,101,
+ 110,116,32,104,97,118,105,110,103,32,116,111,32,100,101,99,
+ 111,100,101,32,104,117,103,101,32,102,105,108,101,115,32,105,
+ 110,32,111,110,101,10,32,32,32,32,32,32,32,32,32,32,
+ 32,32,115,116,101,112,46,10,10,32,32,32,32,32,32,32,
+ 32,32,32,32,32,73,102,32,102,105,114,115,116,108,105,110,
+ 101,32,105,115,32,116,114,117,101,44,32,97,110,100,32,97,
+ 32,85,110,105,99,111,100,101,68,101,99,111,100,101,69,114,
+ 114,111,114,32,104,97,112,112,101,110,115,10,32,32,32,32,
+ 32,32,32,32,32,32,32,32,97,102,116,101,114,32,116,104,
+ 101,32,102,105,114,115,116,32,108,105,110,101,32,116,101,114,
+ 109,105,110,97,116,111,114,32,105,110,32,116,104,101,32,105,
+ 110,112,117,116,32,111,110,108,121,32,116,104,101,32,102,105,
+ 114,115,116,32,108,105,110,101,10,32,32,32,32,32,32,32,
+ 32,32,32,32,32,119,105,108,108,32,98,101,32,114,101,116,
+ 117,114,110,101,100,44,32,116,104,101,32,114,101,115,116,32,
+ 111,102,32,116,104,101,32,105,110,112,117,116,32,119,105,108,
+ 108,32,98,101,32,107,101,112,116,32,117,110,116,105,108,32,
+ 116,104,101,10,32,32,32,32,32,32,32,32,32,32,32,32,
+ 110,101,120,116,32,99,97,108,108,32,116,111,32,114,101,97,
+ 100,40,41,46,10,10,32,32,32,32,32,32,32,32,32,32,
+ 32,32,84,104,101,32,109,101,116,104,111,100,32,115,104,111,
+ 117,108,100,32,117,115,101,32,97,32,103,114,101,101,100,121,
+ 32,114,101,97,100,32,115,116,114,97,116,101,103,121,44,32,
+ 109,101,97,110,105,110,103,32,116,104,97,116,10,32,32,32,
+ 32,32,32,32,32,32,32,32,32,105,116,32,115,104,111,117,
+ 108,100,32,114,101,97,100,32,97,115,32,109,117,99,104,32,
+ 100,97,116,97,32,97,115,32,105,115,32,97,108,108,111,119,
+ 101,100,32,119,105,116,104,105,110,32,116,104,101,10,32,32,
+ 32,32,32,32,32,32,32,32,32,32,100,101,102,105,110,105,
+ 116,105,111,110,32,111,102,32,116,104,101,32,101,110,99,111,
+ 100,105,110,103,32,97,110,100,32,116,104,101,32,103,105,118,
+ 101,110,32,115,105,122,101,44,32,101,46,103,46,32,32,105,
+ 102,10,32,32,32,32,32,32,32,32,32,32,32,32,111,112,
+ 116,105,111,110,97,108,32,101,110,99,111,100,105,110,103,32,
+ 101,110,100,105,110,103,115,32,111,114,32,115,116,97,116,101,
+ 32,109,97,114,107,101,114,115,32,97,114,101,32,97,118,97,
+ 105,108,97,98,108,101,10,32,32,32,32,32,32,32,32,32,
+ 32,32,32,111,110,32,116,104,101,32,115,116,114,101,97,109,
+ 44,32,116,104,101,115,101,32,115,104,111,117,108,100,32,98,
+ 101,32,114,101,97,100,32,116,111,111,46,10,32,32,32,32,
+ 32,32,32,32,78,114,2,0,0,0,84,169,1,218,8,107,
+ 101,101,112,101,110,100,115,233,1,0,0,0,41,13,114,192,
+ 0,0,0,114,190,0,0,0,114,147,0,0,0,114,191,0,
+ 0,0,218,3,108,101,110,114,141,0,0,0,218,4,114,101,
+ 97,100,114,188,0,0,0,114,37,0,0,0,114,80,0,0,
+ 0,218,18,85,110,105,99,111,100,101,68,101,99,111,100,101,
+ 69,114,114,111,114,218,5,115,116,97,114,116,218,10,115,112,
+ 108,105,116,108,105,110,101,115,41,11,114,61,0,0,0,218,
+ 4,115,105,122,101,218,5,99,104,97,114,115,218,9,102,105,
+ 114,115,116,108,105,110,101,218,7,110,101,119,100,97,116,97,
+ 114,114,0,0,0,218,8,110,101,119,99,104,97,114,115,218,
+ 12,100,101,99,111,100,101,100,98,121,116,101,115,218,3,101,
+ 120,99,218,5,108,105,110,101,115,114,115,0,0,0,115,11,
+ 0,0,0,32,32,32,32,32,32,32,32,32,32,32,114,62,
+ 0,0,0,114,199,0,0,0,122,17,83,116,114,101,97,109,
+ 82,101,97,100,101,114,46,114,101,97,100,198,1,0,0,115,
+ 152,1,0,0,128,0,240,56,0,12,16,143,63,138,63,216,
+ 30,34,215,30,52,209,30,52,215,30,57,209,30,57,184,36,
+ 191,47,185,47,211,30,74,136,68,140,79,216,30,34,136,68,
+ 140,79,224,11,16,144,49,138,57,240,6,0,21,25,136,69,
+ 240,6,0,15,19,224,15,20,152,1,138,122,220,19,22,144,
+ 116,151,127,145,127,211,19,39,168,53,210,19,48,216,20,25,
+ 224,15,19,144,97,138,120,216,26,30,159,43,153,43,215,26,
+ 42,209,26,42,211,26,44,145,7,224,26,30,159,43,153,43,
+ 215,26,42,209,26,42,168,52,211,26,48,144,7,224,19,23,
+ 151,63,145,63,160,87,209,19,44,136,68,217,19,23,216,16,
+ 21,240,2,10,13,26,216,41,45,175,27,169,27,176,84,184,
+ 52,191,59,185,59,211,41,71,209,16,38,144,8,152,44,240,
+ 22,0,31,35,160,60,160,61,208,30,49,136,68,140,79,224,
+ 12,16,143,79,138,79,152,120,209,12,39,141,79,225,19,26,
+ 216,16,21,240,63,0,15,19,240,64,1,0,12,17,144,49,
+ 138,57,224,21,25,151,95,145,95,136,70,216,30,34,215,30,
+ 52,209,30,52,136,68,140,79,240,10,0,16,22,136,13,240,
+ 5,0,22,26,151,95,145,95,160,86,160,101,208,21,44,136,
+ 70,216,30,34,159,111,153,111,168,101,168,102,208,30,53,136,
+ 68,140,79,216,15,21,136,13,248,244,49,0,20,38,242,0,
+ 8,13,26,217,19,28,224,24,28,159,11,153,11,160,68,168,
+ 26,168,35,175,41,169,41,208,36,52,176,100,183,107,177,107,
+ 211,24,66,241,3,0,21,43,144,72,152,108,224,28,36,215,
+ 28,47,209,28,47,184,20,208,28,47,211,28,62,144,69,220,
+ 23,26,152,53,147,122,160,49,146,125,216,24,29,224,20,25,
+ 244,7,0,24,37,251,240,11,8,13,26,250,115,25,0,0,
+ 0,194,50,31,68,61,0,196,61,9,70,32,3,197,6,65,
+ 16,70,27,3,198,27,5,70,32,3,78,99,3,0,0,0,
+ 0,0,0,0,0,0,0,0,5,0,0,0,3,0,0,0,
+ 243,38,4,0,0,151,0,124,0,106,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,114,104,124,
+ 0,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,100,1,25,0,0,0,125,3,124,0,106,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,100,1,61,0,116,3,0,0,0,0,0,0,0,
+ 0,124,0,106,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,171,1,0,0,0,0,0,0,100,
+ 2,107,40,0,0,114,27,124,0,106,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,100,1,25,
+ 0,0,0,124,0,95,2,0,0,0,0,0,0,0,0,100,
+ 3,124,0,95,0,0,0,0,0,0,0,0,0,124,2,115,
+ 21,124,3,106,7,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,100,4,172,5,171,1,0,0,0,
+ 0,0,0,100,1,25,0,0,0,125,3,124,3,83,0,124,
+ 1,120,1,115,2,1,0,100,6,125,4,124,0,106,8,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,125,3,9,0,124,0,106,11,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,124,4,100,7,172,
+ 8,171,2,0,0,0,0,0,0,125,5,124,5,114,88,116,
+ 13,0,0,0,0,0,0,0,0,124,5,116,14,0,0,0,
+ 0,0,0,0,0,171,2,0,0,0,0,0,0,114,17,124,
+ 5,106,17,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,100,9,171,1,0,0,0,0,0,0,115,
+ 33,116,13,0,0,0,0,0,0,0,0,124,5,116,18,0,
+ 0,0,0,0,0,0,0,171,2,0,0,0,0,0,0,114,
+ 39,124,5,106,17,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,100,10,171,1,0,0,0,0,0,
+ 0,114,22,124,5,124,0,106,11,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,100,2,100,2,172,
+ 11,171,2,0,0,0,0,0,0,122,13,0,0,125,5,124,
+ 3,124,5,122,13,0,0,125,3,124,3,106,7,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,
+ 7,172,5,171,1,0,0,0,0,0,0,125,6,124,6,114,
+ 217,116,3,0,0,0,0,0,0,0,0,124,6,171,1,0,
+ 0,0,0,0,0,100,2,107,68,0,0,114,109,124,6,100,
+ 1,25,0,0,0,125,3,124,6,100,1,61,0,116,3,0,
+ 0,0,0,0,0,0,0,124,6,171,1,0,0,0,0,0,
+ 0,100,2,107,68,0,0,114,38,124,6,100,12,120,2,120,
+ 2,25,0,0,0,124,0,106,4,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,122,13,0,0,99,
+ 3,99,2,60,0,0,0,124,6,124,0,95,0,0,0,0,
+ 0,0,0,0,0,100,3,124,0,95,2,0,0,0,0,0,
+ 0,0,0,110,23,124,6,100,1,25,0,0,0,124,0,106,
+ 4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,122,0,0,0,124,0,95,2,0,0,0,0,0,
+ 0,0,0,124,2,115,21,124,3,106,7,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,100,4,172,
+ 5,171,1,0,0,0,0,0,0,100,1,25,0,0,0,125,
+ 3,9,0,124,3,83,0,124,6,100,1,25,0,0,0,125,
+ 7,124,6,100,1,25,0,0,0,106,7,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,100,4,172,
+ 5,171,1,0,0,0,0,0,0,100,1,25,0,0,0,125,
+ 8,124,7,124,8,107,55,0,0,114,60,124,0,106,8,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,106,21,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,124,6,100,2,100,3,26,0,171,1,0,
+ 0,0,0,0,0,124,0,106,4,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,122,0,0,0,124,
+ 0,95,2,0,0,0,0,0,0,0,0,124,2,114,5,124,
+ 7,125,3,9,0,124,3,83,0,124,8,125,3,9,0,124,
+ 3,83,0,124,5,114,2,124,1,129,28,124,3,114,23,124,
+ 2,115,21,124,3,106,7,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,100,4,172,5,171,1,0,
+ 0,0,0,0,0,100,1,25,0,0,0,125,3,9,0,124,
+ 3,83,0,124,4,100,13,107,2,0,0,114,5,124,4,100,
+ 14,122,18,0,0,125,4,144,1,140,139,41,15,122,177,32,
+ 82,101,97,100,32,111,110,101,32,108,105,110,101,32,102,114,
+ 111,109,32,116,104,101,32,105,110,112,117,116,32,115,116,114,
+ 101,97,109,32,97,110,100,32,114,101,116,117,114,110,32,116,
+ 104,101,10,32,32,32,32,32,32,32,32,32,32,32,32,100,
+ 101,99,111,100,101,100,32,100,97,116,97,46,10,10,32,32,
+ 32,32,32,32,32,32,32,32,32,32,115,105,122,101,44,32,
+ 105,102,32,103,105,118,101,110,44,32,105,115,32,112,97,115,
+ 115,101,100,32,97,115,32,115,105,122,101,32,97,114,103,117,
+ 109,101,110,116,32,116,111,32,116,104,101,10,32,32,32,32,
+ 32,32,32,32,32,32,32,32,114,101,97,100,40,41,32,109,
+ 101,116,104,111,100,46,10,10,32,32,32,32,32,32,32,32,
+ 114,2,0,0,0,114,197,0,0,0,78,70,114,195,0,0,
+ 0,233,72,0,0,0,84,41,1,114,205,0,0,0,250,1,
+ 13,243,1,0,0,0,13,41,2,114,203,0,0,0,114,204,
+ 0,0,0,233,255,255,255,255,105,64,31,0,0,233,2,0,
+ 0,0,41,11,114,192,0,0,0,114,198,0,0,0,114,191,
+ 0,0,0,114,202,0,0,0,114,190,0,0,0,114,199,0,
+ 0,0,218,10,105,115,105,110,115,116,97,110,99,101,218,3,
+ 115,116,114,218,8,101,110,100,115,119,105,116,104,218,5,98,
+ 121,116,101,115,114,147,0,0,0,41,9,114,61,0,0,0,
+ 114,203,0,0,0,114,196,0,0,0,218,4,108,105,110,101,
+ 218,8,114,101,97,100,115,105,122,101,114,114,0,0,0,114,
+ 210,0,0,0,218,12,108,105,110,101,48,119,105,116,104,101,
+ 110,100,218,15,108,105,110,101,48,119,105,116,104,111,117,116,
+ 101,110,100,115,9,0,0,0,32,32,32,32,32,32,32,32,
+ 32,114,62,0,0,0,218,8,114,101,97,100,108,105,110,101,
+ 122,21,83,116,114,101,97,109,82,101,97,100,101,114,46,114,
+ 101,97,100,108,105,110,101,22,2,0,0,115,59,2,0,0,
+ 128,0,240,22,0,12,16,143,63,138,63,216,19,23,151,63,
+ 145,63,160,49,209,19,37,136,68,216,16,20,151,15,145,15,
+ 160,1,208,16,34,220,15,18,144,52,151,63,145,63,211,15,
+ 35,160,113,210,15,40,240,6,0,35,39,167,47,161,47,176,
+ 33,209,34,52,144,4,148,15,216,34,38,144,4,148,15,217,
+ 19,27,216,23,27,151,127,145,127,176,5,144,127,211,23,54,
+ 176,113,209,23,57,144,4,216,19,23,136,75,224,19,23,146,
+ 58,152,50,136,8,216,15,19,215,15,37,209,15,37,136,4,
+ 224,14,18,216,19,23,151,57,145,57,152,88,176,20,144,57,
+ 211,19,54,136,68,217,15,19,244,8,0,21,31,152,116,164,
+ 83,212,20,41,168,100,175,109,169,109,184,68,212,46,65,220,
+ 20,30,152,116,164,85,212,20,43,176,4,183,13,177,13,184,
+ 101,212,48,68,216,20,24,152,68,159,73,153,73,168,49,176,
+ 65,152,73,211,28,54,209,20,54,144,68,224,12,16,144,68,
+ 137,76,136,68,216,20,24,151,79,145,79,168,84,144,79,211,
+ 20,50,136,69,217,15,20,220,19,22,144,117,147,58,160,1,
+ 146,62,240,6,0,28,33,160,17,153,56,144,68,216,24,29,
+ 152,97,152,8,220,23,26,152,53,147,122,160,65,146,126,224,
+ 24,29,152,98,155,9,160,84,167,95,161,95,209,24,52,155,
+ 9,216,42,47,152,4,156,15,216,42,46,152,4,157,15,240,
+ 6,0,43,48,176,1,169,40,176,84,183,95,177,95,209,42,
+ 68,152,4,156,15,217,27,35,216,31,35,159,127,153,127,184,
+ 5,152,127,211,31,62,184,113,209,31,65,152,4,216,20,25,
+ 240,38,0,16,20,136,11,240,37,0,32,37,160,81,153,120,
+ 144,12,216,34,39,168,1,161,40,215,34,53,209,34,53,184,
+ 117,208,34,53,211,34,69,192,97,209,34,72,144,15,216,19,
+ 31,160,63,210,19,50,224,38,42,215,38,60,209,38,60,215,
+ 38,65,209,38,65,192,37,200,1,200,2,192,41,211,38,76,
+ 216,38,42,167,111,161,111,241,3,1,39,54,144,68,148,79,
+ 225,23,31,216,31,43,152,4,240,6,0,21,26,240,16,0,
+ 16,20,136,11,240,19,0,32,47,152,4,216,20,25,240,16,
+ 0,16,20,136,11,241,13,0,20,24,152,52,208,27,43,217,
+ 19,23,161,8,216,27,31,159,63,153,63,176,69,152,63,211,
+ 27,58,184,49,209,27,61,144,68,216,16,21,240,6,0,16,
+ 20,136,11,240,5,0,16,24,152,36,138,127,216,16,24,152,
+ 65,145,13,144,8,241,93,1,0,15,19,114,63,0,0,0,
+ 99,3,0,0,0,0,0,0,0,0,0,0,0,3,0,0,
+ 0,3,0,0,0,243,68,0,0,0,151,0,124,0,106,1,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,171,0,0,0,0,0,0,0,125,3,124,3,106,3,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,124,2,171,1,0,0,0,0,0,0,83,0,41,1,
+ 97,83,1,0,0,32,82,101,97,100,32,97,108,108,32,108,
+ 105,110,101,115,32,97,118,97,105,108,97,98,108,101,32,111,
+ 110,32,116,104,101,32,105,110,112,117,116,32,115,116,114,101,
+ 97,109,10,32,32,32,32,32,32,32,32,32,32,32,32,97,
+ 110,100,32,114,101,116,117,114,110,32,116,104,101,109,32,97,
+ 115,32,97,32,108,105,115,116,46,10,10,32,32,32,32,32,
+ 32,32,32,32,32,32,32,76,105,110,101,32,98,114,101,97,
+ 107,115,32,97,114,101,32,105,109,112,108,101,109,101,110,116,
+ 101,100,32,117,115,105,110,103,32,116,104,101,32,99,111,100,
+ 101,99,39,115,32,100,101,99,111,100,101,114,10,32,32,32,
+ 32,32,32,32,32,32,32,32,32,109,101,116,104,111,100,32,
+ 97,110,100,32,97,114,101,32,105,110,99,108,117,100,101,100,
+ 32,105,110,32,116,104,101,32,108,105,115,116,32,101,110,116,
+ 114,105,101,115,46,10,10,32,32,32,32,32,32,32,32,32,
+ 32,32,32,115,105,122,101,104,105,110,116,44,32,105,102,32,
+ 103,105,118,101,110,44,32,105,115,32,105,103,110,111,114,101,
+ 100,32,115,105,110,99,101,32,116,104,101,114,101,32,105,115,
+ 32,110,111,32,101,102,102,105,99,105,101,110,116,10,32,32,
+ 32,32,32,32,32,32,32,32,32,32,119,97,121,32,116,111,
+ 32,102,105,110,100,105,110,103,32,116,104,101,32,116,114,117,
+ 101,32,101,110,100,45,111,102,45,108,105,110,101,46,10,10,
+ 32,32,32,32,32,32,32,32,41,2,114,199,0,0,0,114,
+ 202,0,0,0,41,4,114,61,0,0,0,218,8,115,105,122,
+ 101,104,105,110,116,114,196,0,0,0,114,114,0,0,0,115,
+ 4,0,0,0,32,32,32,32,114,62,0,0,0,218,9,114,
+ 101,97,100,108,105,110,101,115,122,22,83,116,114,101,97,109,
+ 82,101,97,100,101,114,46,114,101,97,100,108,105,110,101,115,
+ 97,2,0,0,115,30,0,0,0,128,0,240,24,0,16,20,
+ 143,121,137,121,139,123,136,4,216,15,19,143,127,137,127,152,
+ 120,211,15,40,208,8,40,114,63,0,0,0,99,1,0,0,
+ 0,0,0,0,0,0,0,0,0,2,0,0,0,3,0,0,
+ 0,243,66,0,0,0,151,0,100,1,124,0,95,0,0,0,
+ 0,0,0,0,0,0,124,0,106,2,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,124,0,95,2,
+ 0,0,0,0,0,0,0,0,100,2,124,0,95,3,0,0,
+ 0,0,0,0,0,0,121,2,41,3,122,236,32,82,101,115,
+ 101,116,115,32,116,104,101,32,99,111,100,101,99,32,98,117,
+ 102,102,101,114,115,32,117,115,101,100,32,102,111,114,32,107,
+ 101,101,112,105,110,103,32,105,110,116,101,114,110,97,108,32,
+ 115,116,97,116,101,46,10,10,32,32,32,32,32,32,32,32,
+ 32,32,32,32,78,111,116,101,32,116,104,97,116,32,110,111,
+ 32,115,116,114,101,97,109,32,114,101,112,111,115,105,116,105,
+ 111,110,105,110,103,32,115,104,111,117,108,100,32,116,97,107,
+ 101,32,112,108,97,99,101,46,10,32,32,32,32,32,32,32,
+ 32,32,32,32,32,84,104,105,115,32,109,101,116,104,111,100,
+ 32,105,115,32,112,114,105,109,97,114,105,108,121,32,105,110,
+ 116,101,110,100,101,100,32,116,111,32,98,101,32,97,98,108,
+ 101,32,116,111,32,114,101,99,111,118,101,114,10,32,32,32,
+ 32,32,32,32,32,32,32,32,32,102,114,111,109,32,100,101,
+ 99,111,100,105,110,103,32,101,114,114,111,114,115,46,10,10,
+ 32,32,32,32,32,32,32,32,114,63,0,0,0,78,41,4,
+ 114,188,0,0,0,114,190,0,0,0,114,191,0,0,0,114,
+ 192,0,0,0,114,69,0,0,0,115,1,0,0,0,32,114,
+ 62,0,0,0,114,95,0,0,0,122,18,83,116,114,101,97,
+ 109,82,101,97,100,101,114,46,114,101,115,101,116,112,2,0,
+ 0,115,31,0,0,0,128,0,240,18,0,27,30,136,4,140,
+ 15,216,26,30,215,26,48,209,26,48,136,4,140,15,216,26,
+ 30,136,4,141,15,114,63,0,0,0,99,3,0,0,0,0,
+ 0,0,0,0,0,0,0,4,0,0,0,3,0,0,0,243,
+ 92,0,0,0,151,0,124,0,106,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,106,3,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 124,1,124,2,171,2,0,0,0,0,0,0,1,0,124,0,
+ 106,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,171,0,0,0,0,0,0,0,1,0,121,1,
+ 41,2,122,112,32,83,101,116,32,116,104,101,32,105,110,112,
+ 117,116,32,115,116,114,101,97,109,39,115,32,99,117,114,114,
+ 101,110,116,32,112,111,115,105,116,105,111,110,46,10,10,32,
+ 32,32,32,32,32,32,32,32,32,32,32,82,101,115,101,116,
+ 115,32,116,104,101,32,99,111,100,101,99,32,98,117,102,102,
+ 101,114,115,32,117,115,101,100,32,102,111,114,32,107,101,101,
+ 112,105,110,103,32,115,116,97,116,101,46,10,32,32,32,32,
+ 32,32,32,32,78,114,153,0,0,0,114,155,0,0,0,115,
+ 3,0,0,0,32,32,32,114,62,0,0,0,114,154,0,0,
+ 0,122,17,83,116,114,101,97,109,82,101,97,100,101,114,46,
+ 115,101,101,107,125,2,0,0,115,33,0,0,0,128,0,240,
+ 10,0,9,13,143,11,137,11,215,8,24,209,8,24,152,22,
+ 160,22,212,8,40,216,8,12,143,10,137,10,141,12,114,63,
+ 0,0,0,99,1,0,0,0,0,0,0,0,0,0,0,0,
+ 2,0,0,0,3,0,0,0,243,54,0,0,0,151,0,124,
+ 0,106,1,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,171,0,0,0,0,0,0,0,125,1,124,
+ 1,114,2,124,1,83,0,116,2,0,0,0,0,0,0,0,
+ 0,130,1,169,1,122,52,32,82,101,116,117,114,110,32,116,
+ 104,101,32,110,101,120,116,32,100,101,99,111,100,101,100,32,
+ 108,105,110,101,32,102,114,111,109,32,116,104,101,32,105,110,
+ 112,117,116,32,115,116,114,101,97,109,46,41,2,114,225,0,
+ 0,0,218,13,83,116,111,112,73,116,101,114,97,116,105,111,
+ 110,41,2,114,61,0,0,0,114,221,0,0,0,115,2,0,
+ 0,0,32,32,114,62,0,0,0,218,8,95,95,110,101,120,
+ 116,95,95,122,21,83,116,114,101,97,109,82,101,97,100,101,
+ 114,46,95,95,110,101,120,116,95,95,133,2,0,0,115,29,
+ 0,0,0,128,0,240,6,0,16,20,143,125,137,125,139,127,
+ 136,4,217,11,15,216,19,23,136,75,220,14,27,208,8,27,
+ 114,63,0,0,0,99,1,0,0,0,0,0,0,0,0,0,
+ 0,0,1,0,0,0,3,0,0,0,243,6,0,0,0,151,
+ 0,124,0,83,0,114,52,0,0,0,114,73,0,0,0,114,
+ 69,0,0,0,115,1,0,0,0,32,114,62,0,0,0,218,
+ 8,95,95,105,116,101,114,95,95,122,21,83,116,114,101,97,
+ 109,82,101,97,100,101,114,46,95,95,105,116,101,114,95,95,
+ 141,2,0,0,114,167,0,0,0,114,63,0,0,0,99,3,
+ 0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,3,
+ 0,0,0,243,40,0,0,0,151,0,2,0,124,2,124,0,
+ 106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,124,1,171,2,0,0,0,0,0,0,83,0,
+ 114,159,0,0,0,114,160,0,0,0,114,161,0,0,0,115,
+ 3,0,0,0,32,32,32,114,62,0,0,0,114,163,0,0,
+ 0,122,24,83,116,114,101,97,109,82,101,97,100,101,114,46,
+ 95,95,103,101,116,97,116,116,114,95,95,144,2,0,0,114,
+ 164,0,0,0,114,63,0,0,0,99,1,0,0,0,0,0,
+ 0,0,0,0,0,0,1,0,0,0,3,0,0,0,243,6,
+ 0,0,0,151,0,124,0,83,0,114,52,0,0,0,114,73,
+ 0,0,0,114,69,0,0,0,115,1,0,0,0,32,114,62,
+ 0,0,0,114,166,0,0,0,122,22,83,116,114,101,97,109,
+ 82,101,97,100,101,114,46,95,95,101,110,116,101,114,95,95,
+ 151,2,0,0,114,167,0,0,0,114,63,0,0,0,99,4,
+ 0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,3,
+ 0,0,0,243,56,0,0,0,151,0,124,0,106,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 106,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,171,0,0,0,0,0,0,0,1,0,121,0,
+ 114,52,0,0,0,114,169,0,0,0,114,171,0,0,0,115,
+ 4,0,0,0,32,32,32,32,114,62,0,0,0,114,175,0,
+ 0,0,122,21,83,116,114,101,97,109,82,101,97,100,101,114,
+ 46,95,95,101,120,105,116,95,95,154,2,0,0,114,176,0,
+ 0,0,114,63,0,0,0,99,2,0,0,0,0,0,0,0,
+ 0,0,0,0,4,0,0,0,3,0,0,0,243,70,0,0,
+ 0,151,0,116,1,0,0,0,0,0,0,0,0,100,1,124,
+ 0,106,2,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,106,4,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,122,6,0,0,171,1,0,
+ 0,0,0,0,0,130,1,114,178,0,0,0,114,179,0,0,
+ 0,114,181,0,0,0,115,2,0,0,0,32,32,114,62,0,
+ 0,0,114,183,0,0,0,122,26,83,116,114,101,97,109,82,
+ 101,97,100,101,114,46,95,95,114,101,100,117,99,101,95,101,
+ 120,95,95,157,2,0,0,114,184,0,0,0,114,63,0,0,
+ 0,114,82,0,0,0,41,3,114,215,0,0,0,114,215,0,
+ 0,0,70,41,2,78,84,114,185,0,0,0,41,19,114,71,
+ 0,0,0,114,66,0,0,0,114,67,0,0,0,114,218,0,
+ 0,0,114,189,0,0,0,114,89,0,0,0,114,37,0,0,
+ 0,114,199,0,0,0,114,225,0,0,0,114,228,0,0,0,
+ 114,95,0,0,0,114,154,0,0,0,114,234,0,0,0,114,
+ 236,0,0,0,114,162,0,0,0,114,163,0,0,0,114,166,
+ 0,0,0,114,175,0,0,0,114,183,0,0,0,114,73,0,
+ 0,0,114,63,0,0,0,114,62,0,0,0,114,26,0,0,
+ 0,114,26,0,0,0,166,1,0,0,115,82,0,0,0,132,
+ 0,224,21,24,128,78,243,4,23,5,31,243,50,1,5,34,
+ 243,6,78,1,5,22,243,96,2,73,1,5,20,243,86,2,
+ 13,5,41,242,30,11,5,31,243,26,6,5,21,242,16,6,
+ 5,28,242,16,1,5,20,240,8,0,29,36,243,3,5,5,
+ 42,242,14,1,5,20,242,6,1,5,28,243,6,1,5,72,
+ 1,114,63,0,0,0,114,26,0,0,0,99,0,0,0,0,
+ 0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,
+ 243,118,0,0,0,151,0,101,0,90,1,100,0,90,2,100,
+ 1,90,3,100,2,90,4,100,18,100,3,132,1,90,5,100,
+ 19,100,4,132,1,90,6,100,20,100,6,132,1,90,7,100,
+ 20,100,7,132,1,90,8,100,8,132,0,90,9,100,9,132,
+ 0,90,10,100,10,132,0,90,11,100,11,132,0,90,12,100,
+ 12,132,0,90,13,100,21,100,13,132,1,90,14,101,15,102,
+ 1,100,14,132,1,90,16,100,15,132,0,90,17,100,16,132,
+ 0,90,18,100,17,132,0,90,19,121,5,41,22,114,28,0,
+ 0,0,97,1,1,0,0,32,83,116,114,101,97,109,82,101,
+ 97,100,101,114,87,114,105,116,101,114,32,105,110,115,116,97,
+ 110,99,101,115,32,97,108,108,111,119,32,119,114,97,112,112,
+ 105,110,103,32,115,116,114,101,97,109,115,32,119,104,105,99,
+ 104,10,32,32,32,32,32,32,32,32,119,111,114,107,32,105,
+ 110,32,98,111,116,104,32,114,101,97,100,32,97,110,100,32,
+ 119,114,105,116,101,32,109,111,100,101,115,46,10,10,32,32,
+ 32,32,32,32,32,32,84,104,101,32,100,101,115,105,103,110,
+ 32,105,115,32,115,117,99,104,32,116,104,97,116,32,111,110,
+ 101,32,99,97,110,32,117,115,101,32,116,104,101,32,102,97,
+ 99,116,111,114,121,32,102,117,110,99,116,105,111,110,115,10,
+ 32,32,32,32,32,32,32,32,114,101,116,117,114,110,101,100,
+ 32,98,121,32,116,104,101,32,99,111,100,101,99,46,108,111,
+ 111,107,117,112,40,41,32,102,117,110,99,116,105,111,110,32,
+ 116,111,32,99,111,110,115,116,114,117,99,116,32,116,104,101,
+ 10,32,32,32,32,32,32,32,32,105,110,115,116,97,110,99,
+ 101,46,10,10,32,32,32,32,218,7,117,110,107,110,111,119,
+ 110,99,5,0,0,0,0,0,0,0,0,0,0,0,4,0,
+ 0,0,3,0,0,0,243,88,0,0,0,151,0,124,1,124,
+ 0,95,0,0,0,0,0,0,0,0,0,2,0,124,2,124,
+ 1,124,4,171,2,0,0,0,0,0,0,124,0,95,1,0,
+ 0,0,0,0,0,0,0,2,0,124,3,124,1,124,4,171,
+ 2,0,0,0,0,0,0,124,0,95,2,0,0,0,0,0,
+ 0,0,0,124,4,124,0,95,3,0,0,0,0,0,0,0,
+ 0,121,1,41,2,97,82,1,0,0,32,67,114,101,97,116,
+ 101,115,32,97,32,83,116,114,101,97,109,82,101,97,100,101,
+ 114,87,114,105,116,101,114,32,105,110,115,116,97,110,99,101,
+ 46,10,10,32,32,32,32,32,32,32,32,32,32,32,32,115,
+ 116,114,101,97,109,32,109,117,115,116,32,98,101,32,97,32,
+ 83,116,114,101,97,109,45,108,105,107,101,32,111,98,106,101,
+ 99,116,46,10,10,32,32,32,32,32,32,32,32,32,32,32,
+ 32,82,101,97,100,101,114,44,32,87,114,105,116,101,114,32,
+ 109,117,115,116,32,98,101,32,102,97,99,116,111,114,121,32,
+ 102,117,110,99,116,105,111,110,115,32,111,114,32,99,108,97,
+ 115,115,101,115,10,32,32,32,32,32,32,32,32,32,32,32,
+ 32,112,114,111,118,105,100,105,110,103,32,116,104,101,32,83,
+ 116,114,101,97,109,82,101,97,100,101,114,44,32,83,116,114,
+ 101,97,109,87,114,105,116,101,114,32,105,110,116,101,114,102,
+ 97,99,101,32,114,101,115,112,46,10,10,32,32,32,32,32,
+ 32,32,32,32,32,32,32,69,114,114,111,114,32,104,97,110,
+ 100,108,105,110,103,32,105,115,32,100,111,110,101,32,105,110,
+ 32,116,104,101,32,115,97,109,101,32,119,97,121,32,97,115,
+ 32,100,101,102,105,110,101,100,32,102,111,114,32,116,104,101,
+ 10,32,32,32,32,32,32,32,32,32,32,32,32,83,116,114,
+ 101,97,109,87,114,105,116,101,114,47,82,101,97,100,101,114,
+ 115,46,10,10,32,32,32,32,32,32,32,32,78,41,4,114,
+ 141,0,0,0,218,6,114,101,97,100,101,114,218,6,119,114,
+ 105,116,101,114,114,80,0,0,0,41,5,114,61,0,0,0,
+ 114,141,0,0,0,218,6,82,101,97,100,101,114,218,6,87,
+ 114,105,116,101,114,114,80,0,0,0,115,5,0,0,0,32,
+ 32,32,32,32,114,62,0,0,0,114,89,0,0,0,122,27,
+ 83,116,114,101,97,109,82,101,97,100,101,114,87,114,105,116,
+ 101,114,46,95,95,105,110,105,116,95,95,175,2,0,0,115,
+ 46,0,0,0,128,0,240,26,0,23,29,136,4,140,11,217,
+ 22,28,152,86,160,86,211,22,44,136,4,140,11,217,22,28,
+ 152,86,160,86,211,22,44,136,4,140,11,216,22,28,136,4,
+ 141,11,114,63,0,0,0,99,2,0,0,0,0,0,0,0,
+ 0,0,0,0,3,0,0,0,3,0,0,0,243,56,0,0,
+ 0,151,0,124,0,106,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,106,3,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,124,1,171,
+ 1,0,0,0,0,0,0,83,0,114,52,0,0,0,41,2,
+ 114,244,0,0,0,114,199,0,0,0,169,2,114,61,0,0,
+ 0,114,203,0,0,0,115,2,0,0,0,32,32,114,62,0,
+ 0,0,114,199,0,0,0,122,23,83,116,114,101,97,109,82,
+ 101,97,100,101,114,87,114,105,116,101,114,46,114,101,97,100,
+ 193,2,0,0,115,23,0,0,0,128,0,224,15,19,143,123,
+ 137,123,215,15,31,209,15,31,160,4,211,15,37,208,8,37,
+ 114,63,0,0,0,78,99,2,0,0,0,0,0,0,0,0,
+ 0,0,0,3,0,0,0,3,0,0,0,243,56,0,0,0,
+ 151,0,124,0,106,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,106,3,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,124,1,171,1,
+ 0,0,0,0,0,0,83,0,114,52,0,0,0,41,2,114,
+ 244,0,0,0,114,225,0,0,0,114,249,0,0,0,115,2,
+ 0,0,0,32,32,114,62,0,0,0,114,225,0,0,0,122,
+ 27,83,116,114,101,97,109,82,101,97,100,101,114,87,114,105,
+ 116,101,114,46,114,101,97,100,108,105,110,101,197,2,0,0,
+ 115,23,0,0,0,128,0,224,15,19,143,123,137,123,215,15,
+ 35,209,15,35,160,68,211,15,41,208,8,41,114,63,0,0,
+ 0,99,2,0,0,0,0,0,0,0,0,0,0,0,3,0,
+ 0,0,3,0,0,0,243,56,0,0,0,151,0,124,0,106,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,106,3,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,124,1,171,1,0,0,0,0,0,
+ 0,83,0,114,52,0,0,0,41,2,114,244,0,0,0,114,
+ 228,0,0,0,41,2,114,61,0,0,0,114,227,0,0,0,
+ 115,2,0,0,0,32,32,114,62,0,0,0,114,228,0,0,
+ 0,122,28,83,116,114,101,97,109,82,101,97,100,101,114,87,
+ 114,105,116,101,114,46,114,101,97,100,108,105,110,101,115,201,
+ 2,0,0,115,23,0,0,0,128,0,224,15,19,143,123,137,
+ 123,215,15,36,209,15,36,160,88,211,15,46,208,8,46,114,
+ 63,0,0,0,99,1,0,0,0,0,0,0,0,0,0,0,
+ 0,3,0,0,0,3,0,0,0,243,44,0,0,0,151,0,
+ 116,1,0,0,0,0,0,0,0,0,124,0,106,2,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 171,1,0,0,0,0,0,0,83,0,114,232,0,0,0,41,
+ 2,218,4,110,101,120,116,114,244,0,0,0,114,69,0,0,
+ 0,115,1,0,0,0,32,114,62,0,0,0,114,234,0,0,
+ 0,122,27,83,116,114,101,97,109,82,101,97,100,101,114,87,
+ 114,105,116,101,114,46,95,95,110,101,120,116,95,95,205,2,
+ 0,0,115,19,0,0,0,128,0,244,6,0,16,20,144,68,
+ 151,75,145,75,211,15,32,208,8,32,114,63,0,0,0,99,
+ 1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,
+ 3,0,0,0,243,6,0,0,0,151,0,124,0,83,0,114,
+ 52,0,0,0,114,73,0,0,0,114,69,0,0,0,115,1,
+ 0,0,0,32,114,62,0,0,0,114,236,0,0,0,122,27,
+ 83,116,114,101,97,109,82,101,97,100,101,114,87,114,105,116,
+ 101,114,46,95,95,105,116,101,114,95,95,210,2,0,0,114,
+ 167,0,0,0,114,63,0,0,0,99,2,0,0,0,0,0,
+ 0,0,0,0,0,0,3,0,0,0,3,0,0,0,243,56,
+ 0,0,0,151,0,124,0,106,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,106,3,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,
+ 1,171,1,0,0,0,0,0,0,83,0,114,52,0,0,0,
+ 41,2,114,245,0,0,0,114,144,0,0,0,41,2,114,61,
+ 0,0,0,114,114,0,0,0,115,2,0,0,0,32,32,114,
+ 62,0,0,0,114,144,0,0,0,122,24,83,116,114,101,97,
+ 109,82,101,97,100,101,114,87,114,105,116,101,114,46,119,114,
+ 105,116,101,213,2,0,0,115,23,0,0,0,128,0,224,15,
+ 19,143,123,137,123,215,15,32,209,15,32,160,20,211,15,38,
+ 208,8,38,114,63,0,0,0,99,2,0,0,0,0,0,0,
+ 0,0,0,0,0,3,0,0,0,3,0,0,0,243,56,0,
+ 0,0,151,0,124,0,106,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,106,3,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,1,
+ 171,1,0,0,0,0,0,0,83,0,114,52,0,0,0,41,
+ 2,114,245,0,0,0,114,150,0,0,0,114,148,0,0,0,
+ 115,2,0,0,0,32,32,114,62,0,0,0,114,150,0,0,
+ 0,122,29,83,116,114,101,97,109,82,101,97,100,101,114,87,
+ 114,105,116,101,114,46,119,114,105,116,101,108,105,110,101,115,
+ 217,2,0,0,115,23,0,0,0,128,0,224,15,19,143,123,
+ 137,123,215,15,37,209,15,37,160,100,211,15,43,208,8,43,
+ 114,63,0,0,0,99,1,0,0,0,0,0,0,0,0,0,
+ 0,0,2,0,0,0,3,0,0,0,243,108,0,0,0,151,
+ 0,124,0,106,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,106,3,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,171,0,0,0,0,
+ 0,0,0,1,0,124,0,106,4,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,106,3,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,
+ 0,0,0,0,0,0,0,1,0,121,0,114,52,0,0,0,
+ 169,3,114,244,0,0,0,114,95,0,0,0,114,245,0,0,
+ 0,114,69,0,0,0,115,1,0,0,0,32,114,62,0,0,
+ 0,114,95,0,0,0,122,24,83,116,114,101,97,109,82,101,
+ 97,100,101,114,87,114,105,116,101,114,46,114,101,115,101,116,
+ 221,2,0,0,243,34,0,0,0,128,0,224,8,12,143,11,
+ 137,11,215,8,25,209,8,25,212,8,27,216,8,12,143,11,
+ 137,11,215,8,25,209,8,25,213,8,27,114,63,0,0,0,
+ 99,3,0,0,0,0,0,0,0,0,0,0,0,4,0,0,
+ 0,3,0,0,0,243,188,0,0,0,151,0,124,0,106,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,106,3,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,124,1,124,2,171,2,0,0,0,0,
+ 0,0,1,0,124,0,106,4,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,106,7,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,0,
+ 0,0,0,0,0,0,1,0,124,2,100,1,107,40,0,0,
+ 114,33,124,1,100,1,107,40,0,0,114,27,124,0,106,8,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,106,7,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,171,0,0,0,0,0,0,0,1,0,
+ 121,0,121,0,121,0,114,120,0,0,0,41,5,114,141,0,
+ 0,0,114,154,0,0,0,114,244,0,0,0,114,95,0,0,
+ 0,114,245,0,0,0,114,155,0,0,0,115,3,0,0,0,
+ 32,32,32,114,62,0,0,0,114,154,0,0,0,122,23,83,
+ 116,114,101,97,109,82,101,97,100,101,114,87,114,105,116,101,
+ 114,46,115,101,101,107,226,2,0,0,115,74,0,0,0,128,
+ 0,216,8,12,143,11,137,11,215,8,24,209,8,24,152,22,
+ 160,22,212,8,40,216,8,12,143,11,137,11,215,8,25,209,
+ 8,25,212,8,27,216,11,17,144,81,138,59,152,54,160,81,
+ 154,59,216,12,16,143,75,137,75,215,12,29,209,12,29,213,
+ 12,31,240,3,0,28,39,136,59,114,63,0,0,0,99,3,
+ 0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,3,
+ 0,0,0,243,40,0,0,0,151,0,2,0,124,2,124,0,
+ 106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,124,1,171,2,0,0,0,0,0,0,83,0,
+ 114,159,0,0,0,114,160,0,0,0,114,161,0,0,0,115,
+ 3,0,0,0,32,32,32,114,62,0,0,0,114,163,0,0,
+ 0,122,30,83,116,114,101,97,109,82,101,97,100,101,114,87,
+ 114,105,116,101,114,46,95,95,103,101,116,97,116,116,114,95,
+ 95,232,2,0,0,114,164,0,0,0,114,63,0,0,0,99,
+ 1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,
+ 3,0,0,0,243,6,0,0,0,151,0,124,0,83,0,114,
+ 52,0,0,0,114,73,0,0,0,114,69,0,0,0,115,1,
+ 0,0,0,32,114,62,0,0,0,114,166,0,0,0,122,28,
+ 83,116,114,101,97,109,82,101,97,100,101,114,87,114,105,116,
+ 101,114,46,95,95,101,110,116,101,114,95,95,241,2,0,0,
+ 114,167,0,0,0,114,63,0,0,0,99,4,0,0,0,0,
+ 0,0,0,0,0,0,0,2,0,0,0,3,0,0,0,243,
+ 56,0,0,0,151,0,124,0,106,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,106,3,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 171,0,0,0,0,0,0,0,1,0,121,0,114,52,0,0,
+ 0,114,169,0,0,0,114,171,0,0,0,115,4,0,0,0,
+ 32,32,32,32,114,62,0,0,0,114,175,0,0,0,122,27,
+ 83,116,114,101,97,109,82,101,97,100,101,114,87,114,105,116,
+ 101,114,46,95,95,101,120,105,116,95,95,244,2,0,0,114,
+ 176,0,0,0,114,63,0,0,0,99,2,0,0,0,0,0,
+ 0,0,0,0,0,0,4,0,0,0,3,0,0,0,243,70,
+ 0,0,0,151,0,116,1,0,0,0,0,0,0,0,0,100,
+ 1,124,0,106,2,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,106,4,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,122,6,0,0,171,
+ 1,0,0,0,0,0,0,130,1,114,178,0,0,0,114,179,
+ 0,0,0,114,181,0,0,0,115,2,0,0,0,32,32,114,
+ 62,0,0,0,114,183,0,0,0,122,32,83,116,114,101,97,
+ 109,82,101,97,100,101,114,87,114,105,116,101,114,46,95,95,
+ 114,101,100,117,99,101,95,101,120,95,95,247,2,0,0,114,
+ 184,0,0,0,114,63,0,0,0,114,82,0,0,0,169,1,
+ 114,215,0,0,0,114,52,0,0,0,114,185,0,0,0,41,
+ 20,114,71,0,0,0,114,66,0,0,0,114,67,0,0,0,
+ 114,72,0,0,0,218,8,101,110,99,111,100,105,110,103,114,
+ 89,0,0,0,114,199,0,0,0,114,225,0,0,0,114,228,
+ 0,0,0,114,234,0,0,0,114,236,0,0,0,114,144,0,
+ 0,0,114,150,0,0,0,114,95,0,0,0,114,154,0,0,
+ 0,114,162,0,0,0,114,163,0,0,0,114,166,0,0,0,
+ 114,175,0,0,0,114,183,0,0,0,114,73,0,0,0,114,
+ 63,0,0,0,114,62,0,0,0,114,28,0,0,0,114,28,
+ 0,0,0,162,2,0,0,115,90,0,0,0,132,0,241,4,
+ 7,5,8,240,18,0,16,25,128,72,243,4,16,5,29,243,
+ 36,2,5,38,243,8,2,5,42,243,8,2,5,47,242,8,
+ 3,5,33,242,10,1,5,20,242,6,2,5,39,242,8,2,
+ 5,44,242,8,3,5,28,243,10,4,5,32,240,14,0,29,
+ 36,243,3,5,5,42,242,18,1,5,20,242,6,1,5,28,
+ 243,6,1,5,72,1,114,63,0,0,0,114,28,0,0,0,
+ 99,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,
+ 0,0,0,0,0,243,124,0,0,0,151,0,101,0,90,1,
+ 100,0,90,2,100,1,90,3,100,2,90,4,100,2,90,5,
+ 9,0,100,18,100,3,132,1,90,6,100,19,100,4,132,1,
+ 90,7,100,20,100,6,132,1,90,8,100,20,100,7,132,1,
+ 90,9,100,8,132,0,90,10,100,9,132,0,90,11,100,10,
+ 132,0,90,12,100,11,132,0,90,13,100,12,132,0,90,14,
+ 100,21,100,13,132,1,90,15,101,16,102,1,100,14,132,1,
+ 90,17,100,15,132,0,90,18,100,16,132,0,90,19,100,17,
+ 132,0,90,20,121,5,41,22,114,29,0,0,0,97,66,2,
+ 0,0,32,83,116,114,101,97,109,82,101,99,111,100,101,114,
+ 32,105,110,115,116,97,110,99,101,115,32,116,114,97,110,115,
+ 108,97,116,101,32,100,97,116,97,32,102,114,111,109,32,111,
+ 110,101,32,101,110,99,111,100,105,110,103,32,116,111,32,97,
+ 110,111,116,104,101,114,46,10,10,32,32,32,32,32,32,32,
+ 32,84,104,101,121,32,117,115,101,32,116,104,101,32,99,111,
+ 109,112,108,101,116,101,32,115,101,116,32,111,102,32,65,80,
+ 73,115,32,114,101,116,117,114,110,101,100,32,98,121,32,116,
+ 104,101,10,32,32,32,32,32,32,32,32,99,111,100,101,99,
+ 115,46,108,111,111,107,117,112,40,41,32,102,117,110,99,116,
+ 105,111,110,32,116,111,32,105,109,112,108,101,109,101,110,116,
+ 32,116,104,101,105,114,32,116,97,115,107,46,10,10,32,32,
+ 32,32,32,32,32,32,68,97,116,97,32,119,114,105,116,116,
+ 101,110,32,116,111,32,116,104,101,32,83,116,114,101,97,109,
+ 82,101,99,111,100,101,114,32,105,115,32,102,105,114,115,116,
+ 32,100,101,99,111,100,101,100,32,105,110,116,111,32,97,110,
+ 10,32,32,32,32,32,32,32,32,105,110,116,101,114,109,101,
+ 100,105,97,116,101,32,102,111,114,109,97,116,32,40,100,101,
+ 112,101,110,100,105,110,103,32,111,110,32,116,104,101,32,34,
+ 100,101,99,111,100,101,34,32,99,111,100,101,99,41,32,97,
+ 110,100,32,116,104,101,110,10,32,32,32,32,32,32,32,32,
+ 119,114,105,116,116,101,110,32,116,111,32,116,104,101,32,117,
+ 110,100,101,114,108,121,105,110,103,32,115,116,114,101,97,109,
+ 32,117,115,105,110,103,32,97,110,32,105,110,115,116,97,110,
+ 99,101,32,111,102,32,116,104,101,32,112,114,111,118,105,100,
+ 101,100,10,32,32,32,32,32,32,32,32,87,114,105,116,101,
+ 114,32,99,108,97,115,115,46,10,10,32,32,32,32,32,32,
+ 32,32,73,110,32,116,104,101,32,111,116,104,101,114,32,100,
+ 105,114,101,99,116,105,111,110,44,32,100,97,116,97,32,105,
+ 115,32,114,101,97,100,32,102,114,111,109,32,116,104,101,32,
+ 117,110,100,101,114,108,121,105,110,103,32,115,116,114,101,97,
+ 109,32,117,115,105,110,103,10,32,32,32,32,32,32,32,32,
+ 97,32,82,101,97,100,101,114,32,105,110,115,116,97,110,99,
+ 101,32,97,110,100,32,116,104,101,110,32,101,110,99,111,100,
+ 101,100,32,97,110,100,32,114,101,116,117,114,110,101,100,32,
+ 116,111,32,116,104,101,32,99,97,108,108,101,114,46,10,10,
+ 32,32,32,32,114,242,0,0,0,99,7,0,0,0,0,0,
+ 0,0,0,0,0,0,4,0,0,0,3,0,0,0,243,116,
+ 0,0,0,151,0,124,1,124,0,95,0,0,0,0,0,0,
+ 0,0,0,124,2,124,0,95,1,0,0,0,0,0,0,0,
+ 0,124,3,124,0,95,2,0,0,0,0,0,0,0,0,2,
+ 0,124,4,124,1,124,6,171,2,0,0,0,0,0,0,124,
+ 0,95,3,0,0,0,0,0,0,0,0,2,0,124,5,124,
+ 1,124,6,171,2,0,0,0,0,0,0,124,0,95,4,0,
+ 0,0,0,0,0,0,0,124,6,124,0,95,5,0,0,0,
+ 0,0,0,0,0,121,1,41,2,97,233,2,0,0,32,67,
+ 114,101,97,116,101,115,32,97,32,83,116,114,101,97,109,82,
+ 101,99,111,100,101,114,32,105,110,115,116,97,110,99,101,32,
+ 119,104,105,99,104,32,105,109,112,108,101,109,101,110,116,115,
+ 32,97,32,116,119,111,45,119,97,121,10,32,32,32,32,32,
+ 32,32,32,32,32,32,32,99,111,110,118,101,114,115,105,111,
+ 110,58,32,101,110,99,111,100,101,32,97,110,100,32,100,101,
+ 99,111,100,101,32,119,111,114,107,32,111,110,32,116,104,101,
+ 32,102,114,111,110,116,101,110,100,32,40,116,104,101,10,32,
+ 32,32,32,32,32,32,32,32,32,32,32,100,97,116,97,32,
+ 118,105,115,105,98,108,101,32,116,111,32,46,114,101,97,100,
+ 40,41,32,97,110,100,32,46,119,114,105,116,101,40,41,41,
+ 32,119,104,105,108,101,32,82,101,97,100,101,114,32,97,110,
+ 100,32,87,114,105,116,101,114,10,32,32,32,32,32,32,32,
+ 32,32,32,32,32,119,111,114,107,32,111,110,32,116,104,101,
+ 32,98,97,99,107,101,110,100,32,40,116,104,101,32,100,97,
+ 116,97,32,105,110,32,115,116,114,101,97,109,41,46,10,10,
+ 32,32,32,32,32,32,32,32,32,32,32,32,89,111,117,32,
+ 99,97,110,32,117,115,101,32,116,104,101,115,101,32,111,98,
+ 106,101,99,116,115,32,116,111,32,100,111,32,116,114,97,110,
+ 115,112,97,114,101,110,116,10,32,32,32,32,32,32,32,32,
+ 32,32,32,32,116,114,97,110,115,99,111,100,105,110,103,115,
+ 32,102,114,111,109,32,101,46,103,46,32,108,97,116,105,110,
+ 45,49,32,116,111,32,117,116,102,45,56,32,97,110,100,32,
+ 98,97,99,107,46,10,10,32,32,32,32,32,32,32,32,32,
+ 32,32,32,115,116,114,101,97,109,32,109,117,115,116,32,98,
+ 101,32,97,32,102,105,108,101,45,108,105,107,101,32,111,98,
+ 106,101,99,116,46,10,10,32,32,32,32,32,32,32,32,32,
+ 32,32,32,101,110,99,111,100,101,32,97,110,100,32,100,101,
+ 99,111,100,101,32,109,117,115,116,32,97,100,104,101,114,101,
+ 32,116,111,32,116,104,101,32,67,111,100,101,99,32,105,110,
+ 116,101,114,102,97,99,101,59,32,82,101,97,100,101,114,32,
+ 97,110,100,10,32,32,32,32,32,32,32,32,32,32,32,32,
+ 87,114,105,116,101,114,32,109,117,115,116,32,98,101,32,102,
+ 97,99,116,111,114,121,32,102,117,110,99,116,105,111,110,115,
+ 32,111,114,32,99,108,97,115,115,101,115,32,112,114,111,118,
+ 105,100,105,110,103,32,116,104,101,10,32,32,32,32,32,32,
+ 32,32,32,32,32,32,83,116,114,101,97,109,82,101,97,100,
+ 101,114,32,97,110,100,32,83,116,114,101,97,109,87,114,105,
+ 116,101,114,32,105,110,116,101,114,102,97,99,101,115,32,114,
+ 101,115,112,46,10,10,32,32,32,32,32,32,32,32,32,32,
+ 32,32,69,114,114,111,114,32,104,97,110,100,108,105,110,103,
+ 32,105,115,32,100,111,110,101,32,105,110,32,116,104,101,32,
+ 115,97,109,101,32,119,97,121,32,97,115,32,100,101,102,105,
+ 110,101,100,32,102,111,114,32,116,104,101,10,32,32,32,32,
+ 32,32,32,32,32,32,32,32,83,116,114,101,97,109,87,114,
+ 105,116,101,114,47,82,101,97,100,101,114,115,46,10,10,32,
+ 32,32,32,32,32,32,32,78,41,6,114,141,0,0,0,114,
+ 36,0,0,0,114,37,0,0,0,114,244,0,0,0,114,245,
+ 0,0,0,114,80,0,0,0,41,7,114,61,0,0,0,114,
+ 141,0,0,0,114,36,0,0,0,114,37,0,0,0,114,246,
+ 0,0,0,114,247,0,0,0,114,80,0,0,0,115,7,0,
+ 0,0,32,32,32,32,32,32,32,114,62,0,0,0,114,89,
+ 0,0,0,122,22,83,116,114,101,97,109,82,101,99,111,100,
+ 101,114,46,95,95,105,110,105,116,95,95,16,3,0,0,115,
+ 60,0,0,0,128,0,240,42,0,23,29,136,4,140,11,216,
+ 22,28,136,4,140,11,216,22,28,136,4,140,11,217,22,28,
+ 152,86,160,86,211,22,44,136,4,140,11,217,22,28,152,86,
+ 160,86,211,22,44,136,4,140,11,216,22,28,136,4,141,11,
+ 114,63,0,0,0,99,2,0,0,0,0,0,0,0,0,0,
+ 0,0,4,0,0,0,3,0,0,0,243,122,0,0,0,151,
+ 0,124,0,106,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,106,3,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,124,1,171,1,0,
+ 0,0,0,0,0,125,2,124,0,106,5,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,124,2,124,
+ 0,106,6,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,171,2,0,0,0,0,0,0,92,2,0,
+ 0,125,2,125,3,124,2,83,0,114,52,0,0,0,41,4,
+ 114,244,0,0,0,114,199,0,0,0,114,36,0,0,0,114,
+ 80,0,0,0,169,4,114,61,0,0,0,114,203,0,0,0,
+ 114,114,0,0,0,218,12,98,121,116,101,115,101,110,99,111,
+ 100,101,100,115,4,0,0,0,32,32,32,32,114,62,0,0,
+ 0,114,199,0,0,0,122,18,83,116,114,101,97,109,82,101,
+ 99,111,100,101,114,46,114,101,97,100,44,3,0,0,115,52,
+ 0,0,0,128,0,224,15,19,143,123,137,123,215,15,31,209,
+ 15,31,160,4,211,15,37,136,4,216,29,33,159,91,153,91,
+ 168,20,168,116,175,123,169,123,211,29,59,209,8,26,136,4,
+ 136,108,216,15,19,136,11,114,63,0,0,0,78,99,2,0,
+ 0,0,0,0,0,0,0,0,0,0,4,0,0,0,3,0,
+ 0,0,243,180,0,0,0,151,0,124,1,128,27,124,0,106,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,106,3,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,171,0,0,0,0,0,0,0,125,
+ 2,110,27,124,0,106,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,106,3,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,124,1,171,
+ 1,0,0,0,0,0,0,125,2,124,0,106,5,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,
+ 2,124,0,106,6,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,171,2,0,0,0,0,0,0,92,
+ 2,0,0,125,2,125,3,124,2,83,0,114,52,0,0,0,
+ 41,4,114,244,0,0,0,114,225,0,0,0,114,36,0,0,
+ 0,114,80,0,0,0,114,14,1,0,0,115,4,0,0,0,
+ 32,32,32,32,114,62,0,0,0,114,225,0,0,0,122,22,
+ 83,116,114,101,97,109,82,101,99,111,100,101,114,46,114,101,
+ 97,100,108,105,110,101,50,3,0,0,115,75,0,0,0,128,
+ 0,224,11,15,136,60,216,19,23,151,59,145,59,215,19,39,
+ 209,19,39,211,19,41,137,68,224,19,23,151,59,145,59,215,
+ 19,39,209,19,39,168,4,211,19,45,136,68,216,29,33,159,
+ 91,153,91,168,20,168,116,175,123,169,123,211,29,59,209,8,
+ 26,136,4,136,108,216,15,19,136,11,114,63,0,0,0,99,
+ 2,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,
+ 3,0,0,0,243,152,0,0,0,151,0,124,0,106,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,106,3,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,171,0,0,0,0,0,0,0,125,2,124,
+ 0,106,5,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,124,2,124,0,106,6,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,171,2,0,
+ 0,0,0,0,0,92,2,0,0,125,2,125,3,124,2,106,
+ 9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,100,1,172,2,171,1,0,0,0,0,0,0,83,
+ 0,41,3,78,84,114,195,0,0,0,41,5,114,244,0,0,
+ 0,114,199,0,0,0,114,36,0,0,0,114,80,0,0,0,
+ 114,202,0,0,0,41,4,114,61,0,0,0,114,227,0,0,
+ 0,114,114,0,0,0,114,15,1,0,0,115,4,0,0,0,
+ 32,32,32,32,114,62,0,0,0,114,228,0,0,0,122,23,
+ 83,116,114,101,97,109,82,101,99,111,100,101,114,46,114,101,
+ 97,100,108,105,110,101,115,59,3,0,0,115,62,0,0,0,
+ 128,0,224,15,19,143,123,137,123,215,15,31,209,15,31,211,
+ 15,33,136,4,216,29,33,159,91,153,91,168,20,168,116,175,
+ 123,169,123,211,29,59,209,8,26,136,4,136,108,216,15,19,
+ 143,127,137,127,168,4,136,127,211,15,45,208,8,45,114,63,
+ 0,0,0,99,1,0,0,0,0,0,0,0,0,0,0,0,
+ 4,0,0,0,3,0,0,0,243,110,0,0,0,151,0,116,
+ 1,0,0,0,0,0,0,0,0,124,0,106,2,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,
+ 1,0,0,0,0,0,0,125,1,124,0,106,5,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,
+ 1,124,0,106,6,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,171,2,0,0,0,0,0,0,92,
+ 2,0,0,125,1,125,2,124,1,83,0,114,232,0,0,0,
+ 41,4,114,253,0,0,0,114,244,0,0,0,114,36,0,0,
+ 0,114,80,0,0,0,41,3,114,61,0,0,0,114,114,0,
+ 0,0,114,15,1,0,0,115,3,0,0,0,32,32,32,114,
+ 62,0,0,0,114,234,0,0,0,122,22,83,116,114,101,97,
+ 109,82,101,99,111,100,101,114,46,95,95,110,101,120,116,95,
+ 95,65,3,0,0,115,48,0,0,0,128,0,244,6,0,16,
+ 20,144,68,151,75,145,75,211,15,32,136,4,216,29,33,159,
+ 91,153,91,168,20,168,116,175,123,169,123,211,29,59,209,8,
+ 26,136,4,136,108,216,15,19,136,11,114,63,0,0,0,99,
+ 1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,
+ 3,0,0,0,243,6,0,0,0,151,0,124,0,83,0,114,
+ 52,0,0,0,114,73,0,0,0,114,69,0,0,0,115,1,
+ 0,0,0,32,114,62,0,0,0,114,236,0,0,0,122,22,
+ 83,116,114,101,97,109,82,101,99,111,100,101,114,46,95,95,
+ 105,116,101,114,95,95,72,3,0,0,114,167,0,0,0,114,
+ 63,0,0,0,99,2,0,0,0,0,0,0,0,0,0,0,
+ 0,4,0,0,0,3,0,0,0,243,118,0,0,0,151,0,
+ 124,0,106,1,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,124,1,124,0,106,2,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,2,
+ 0,0,0,0,0,0,92,2,0,0,125,1,125,2,124,0,
+ 106,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,106,7,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,124,1,171,1,0,0,0,0,
+ 0,0,83,0,114,52,0,0,0,41,4,114,37,0,0,0,
+ 114,80,0,0,0,114,245,0,0,0,114,144,0,0,0,41,
+ 3,114,61,0,0,0,114,114,0,0,0,218,12,98,121,116,
+ 101,115,100,101,99,111,100,101,100,115,3,0,0,0,32,32,
+ 32,114,62,0,0,0,114,144,0,0,0,122,19,83,116,114,
+ 101,97,109,82,101,99,111,100,101,114,46,119,114,105,116,101,
+ 75,3,0,0,115,48,0,0,0,128,0,224,29,33,159,91,
+ 153,91,168,20,168,116,175,123,169,123,211,29,59,209,8,26,
+ 136,4,136,108,216,15,19,143,123,137,123,215,15,32,209,15,
+ 32,160,20,211,15,38,208,8,38,114,63,0,0,0,99,2,
+ 0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,3,
+ 0,0,0,243,152,0,0,0,151,0,100,1,106,1,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 124,1,171,1,0,0,0,0,0,0,125,2,124,0,106,3,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,124,2,124,0,106,4,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,171,2,0,0,0,0,
+ 0,0,92,2,0,0,125,2,125,3,124,0,106,6,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 106,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,124,2,171,1,0,0,0,0,0,0,83,0,
+ 114,132,0,0,0,41,5,114,147,0,0,0,114,37,0,0,
+ 0,114,80,0,0,0,114,245,0,0,0,114,144,0,0,0,
+ 41,4,114,61,0,0,0,114,149,0,0,0,114,114,0,0,
+ 0,114,21,1,0,0,115,4,0,0,0,32,32,32,32,114,
+ 62,0,0,0,114,150,0,0,0,122,24,83,116,114,101,97,
+ 109,82,101,99,111,100,101,114,46,119,114,105,116,101,108,105,
+ 110,101,115,80,3,0,0,115,61,0,0,0,128,0,224,15,
+ 18,143,120,137,120,152,4,139,126,136,4,216,29,33,159,91,
+ 153,91,168,20,168,116,175,123,169,123,211,29,59,209,8,26,
+ 136,4,136,108,216,15,19,143,123,137,123,215,15,32,209,15,
+ 32,160,20,211,15,38,208,8,38,114,63,0,0,0,99,1,
+ 0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,3,
+ 0,0,0,243,108,0,0,0,151,0,124,0,106,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 106,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,171,0,0,0,0,0,0,0,1,0,124,0,
+ 106,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,106,3,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,171,0,0,0,0,0,0,0,
+ 1,0,121,0,114,52,0,0,0,114,2,1,0,0,114,69,
+ 0,0,0,115,1,0,0,0,32,114,62,0,0,0,114,95,
+ 0,0,0,122,19,83,116,114,101,97,109,82,101,99,111,100,
+ 101,114,46,114,101,115,101,116,86,3,0,0,114,3,1,0,
+ 0,114,63,0,0,0,99,3,0,0,0,0,0,0,0,0,
+ 0,0,0,4,0,0,0,3,0,0,0,243,116,0,0,0,
+ 151,0,124,0,106,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,106,3,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,124,1,124,2,
+ 171,2,0,0,0,0,0,0,1,0,124,0,106,4,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 106,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,124,1,124,2,171,2,0,0,0,0,0,0,
+ 1,0,121,0,114,52,0,0,0,41,3,114,244,0,0,0,
+ 114,154,0,0,0,114,245,0,0,0,114,155,0,0,0,115,
+ 3,0,0,0,32,32,32,114,62,0,0,0,114,154,0,0,
+ 0,122,18,83,116,114,101,97,109,82,101,99,111,100,101,114,
+ 46,115,101,101,107,91,3,0,0,115,44,0,0,0,128,0,
+ 240,6,0,9,13,143,11,137,11,215,8,24,209,8,24,152,
+ 22,160,22,212,8,40,216,8,12,143,11,137,11,215,8,24,
+ 209,8,24,152,22,160,22,213,8,40,114,63,0,0,0,99,
+ 3,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,
+ 3,0,0,0,243,40,0,0,0,151,0,2,0,124,2,124,
+ 0,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,124,1,171,2,0,0,0,0,0,0,83,
+ 0,114,159,0,0,0,114,160,0,0,0,114,161,0,0,0,
+ 115,3,0,0,0,32,32,32,114,62,0,0,0,114,163,0,
+ 0,0,122,25,83,116,114,101,97,109,82,101,99,111,100,101,
+ 114,46,95,95,103,101,116,97,116,116,114,95,95,97,3,0,
+ 0,114,164,0,0,0,114,63,0,0,0,99,1,0,0,0,
+ 0,0,0,0,0,0,0,0,1,0,0,0,3,0,0,0,
+ 243,6,0,0,0,151,0,124,0,83,0,114,52,0,0,0,
+ 114,73,0,0,0,114,69,0,0,0,115,1,0,0,0,32,
+ 114,62,0,0,0,114,166,0,0,0,122,23,83,116,114,101,
+ 97,109,82,101,99,111,100,101,114,46,95,95,101,110,116,101,
+ 114,95,95,104,3,0,0,114,167,0,0,0,114,63,0,0,
+ 0,99,4,0,0,0,0,0,0,0,0,0,0,0,2,0,
+ 0,0,3,0,0,0,243,56,0,0,0,151,0,124,0,106,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,106,3,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,171,0,0,0,0,0,0,0,1,
+ 0,121,0,114,52,0,0,0,114,169,0,0,0,114,171,0,
+ 0,0,115,4,0,0,0,32,32,32,32,114,62,0,0,0,
+ 114,175,0,0,0,122,22,83,116,114,101,97,109,82,101,99,
+ 111,100,101,114,46,95,95,101,120,105,116,95,95,107,3,0,
+ 0,114,176,0,0,0,114,63,0,0,0,99,2,0,0,0,
+ 0,0,0,0,0,0,0,0,4,0,0,0,3,0,0,0,
+ 243,70,0,0,0,151,0,116,1,0,0,0,0,0,0,0,
+ 0,100,1,124,0,106,2,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,106,4,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,122,6,0,
+ 0,171,1,0,0,0,0,0,0,130,1,114,178,0,0,0,
+ 114,179,0,0,0,114,181,0,0,0,115,2,0,0,0,32,
+ 32,114,62,0,0,0,114,183,0,0,0,122,27,83,116,114,
+ 101,97,109,82,101,99,111,100,101,114,46,95,95,114,101,100,
+ 117,99,101,95,101,120,95,95,110,3,0,0,114,184,0,0,
+ 0,114,63,0,0,0,114,82,0,0,0,114,9,1,0,0,
+ 114,52,0,0,0,114,185,0,0,0,41,21,114,71,0,0,
+ 0,114,66,0,0,0,114,67,0,0,0,114,72,0,0,0,
+ 218,13,100,97,116,97,95,101,110,99,111,100,105,110,103,218,
+ 13,102,105,108,101,95,101,110,99,111,100,105,110,103,114,89,
+ 0,0,0,114,199,0,0,0,114,225,0,0,0,114,228,0,
+ 0,0,114,234,0,0,0,114,236,0,0,0,114,144,0,0,
+ 0,114,150,0,0,0,114,95,0,0,0,114,154,0,0,0,
+ 114,162,0,0,0,114,163,0,0,0,114,166,0,0,0,114,
+ 175,0,0,0,114,183,0,0,0,114,73,0,0,0,114,63,
+ 0,0,0,114,62,0,0,0,114,29,0,0,0,114,29,0,
+ 0,0,252,2,0,0,115,100,0,0,0,132,0,241,4,13,
+ 5,8,240,30,0,21,30,128,77,216,20,29,128,77,240,6,
+ 0,25,33,243,3,26,5,29,243,56,4,5,20,243,12,7,
+ 5,20,243,18,4,5,46,242,12,5,5,20,242,14,1,5,
+ 20,242,6,3,5,39,242,10,4,5,39,242,12,3,5,28,
+ 243,10,4,5,41,240,14,0,29,36,243,3,5,5,42,242,
+ 14,1,5,20,242,6,1,5,28,243,6,1,5,72,1,114,
+ 63,0,0,0,114,29,0,0,0,114,83,0,0,0,99,5,
+ 0,0,0,0,0,0,0,0,0,0,0,6,0,0,0,3,
+ 0,0,0,243,232,0,0,0,151,0,124,2,129,9,100,1,
+ 124,1,118,1,114,5,124,1,100,1,122,0,0,0,125,1,
+ 116,1,0,0,0,0,0,0,0,0,106,2,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,0,
+ 124,1,124,4,171,3,0,0,0,0,0,0,125,5,124,2,
+ 128,2,124,5,83,0,9,0,116,5,0,0,0,0,0,0,
+ 0,0,124,2,171,1,0,0,0,0,0,0,125,6,116,7,
+ 0,0,0,0,0,0,0,0,124,5,124,6,106,8,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 124,6,106,10,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,124,3,171,4,0,0,0,0,0,0,
+ 125,7,124,2,124,7,95,6,0,0,0,0,0,0,0,0,
+ 124,7,83,0,35,0,1,0,124,5,106,15,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,0,
+ 0,0,0,0,0,0,1,0,130,0,120,3,89,0,119,1,
+ 41,2,97,155,4,0,0,32,79,112,101,110,32,97,110,32,
+ 101,110,99,111,100,101,100,32,102,105,108,101,32,117,115,105,
+ 110,103,32,116,104,101,32,103,105,118,101,110,32,109,111,100,
+ 101,32,97,110,100,32,114,101,116,117,114,110,10,32,32,32,
+ 32,32,32,32,32,97,32,119,114,97,112,112,101,100,32,118,
+ 101,114,115,105,111,110,32,112,114,111,118,105,100,105,110,103,
+ 32,116,114,97,110,115,112,97,114,101,110,116,32,101,110,99,
+ 111,100,105,110,103,47,100,101,99,111,100,105,110,103,46,10,
+ 10,32,32,32,32,32,32,32,32,78,111,116,101,58,32,84,
+ 104,101,32,119,114,97,112,112,101,100,32,118,101,114,115,105,
+ 111,110,32,119,105,108,108,32,111,110,108,121,32,97,99,99,
+ 101,112,116,32,116,104,101,32,111,98,106,101,99,116,32,102,
+ 111,114,109,97,116,10,32,32,32,32,32,32,32,32,100,101,
+ 102,105,110,101,100,32,98,121,32,116,104,101,32,99,111,100,
+ 101,99,115,44,32,105,46,101,46,32,85,110,105,99,111,100,
+ 101,32,111,98,106,101,99,116,115,32,102,111,114,32,109,111,
+ 115,116,32,98,117,105,108,116,105,110,10,32,32,32,32,32,
+ 32,32,32,99,111,100,101,99,115,46,32,79,117,116,112,117,
+ 116,32,105,115,32,97,108,115,111,32,99,111,100,101,99,32,
+ 100,101,112,101,110,100,101,110,116,32,97,110,100,32,119,105,
+ 108,108,32,117,115,117,97,108,108,121,32,98,101,10,32,32,
+ 32,32,32,32,32,32,85,110,105,99,111,100,101,32,97,115,
+ 32,119,101,108,108,46,10,10,32,32,32,32,32,32,32,32,
+ 73,102,32,101,110,99,111,100,105,110,103,32,105,115,32,110,
+ 111,116,32,78,111,110,101,44,32,116,104,101,110,32,116,104,
+ 101,10,32,32,32,32,32,32,32,32,117,110,100,101,114,108,
+ 121,105,110,103,32,101,110,99,111,100,101,100,32,102,105,108,
+ 101,115,32,97,114,101,32,97,108,119,97,121,115,32,111,112,
+ 101,110,101,100,32,105,110,32,98,105,110,97,114,121,32,109,
+ 111,100,101,46,10,32,32,32,32,32,32,32,32,84,104,101,
+ 32,100,101,102,97,117,108,116,32,102,105,108,101,32,109,111,
+ 100,101,32,105,115,32,39,114,39,44,32,109,101,97,110,105,
+ 110,103,32,116,111,32,111,112,101,110,32,116,104,101,32,102,
+ 105,108,101,32,105,110,32,114,101,97,100,32,109,111,100,101,
+ 46,10,10,32,32,32,32,32,32,32,32,101,110,99,111,100,
+ 105,110,103,32,115,112,101,99,105,102,105,101,115,32,116,104,
+ 101,32,101,110,99,111,100,105,110,103,32,119,104,105,99,104,
+ 32,105,115,32,116,111,32,98,101,32,117,115,101,100,32,102,
+ 111,114,32,116,104,101,10,32,32,32,32,32,32,32,32,102,
+ 105,108,101,46,10,10,32,32,32,32,32,32,32,32,101,114,
+ 114,111,114,115,32,109,97,121,32,98,101,32,103,105,118,101,
+ 110,32,116,111,32,100,101,102,105,110,101,32,116,104,101,32,
+ 101,114,114,111,114,32,104,97,110,100,108,105,110,103,46,32,
+ 73,116,32,100,101,102,97,117,108,116,115,10,32,32,32,32,
+ 32,32,32,32,116,111,32,39,115,116,114,105,99,116,39,32,
+ 119,104,105,99,104,32,99,97,117,115,101,115,32,86,97,108,
+ 117,101,69,114,114,111,114,115,32,116,111,32,98,101,32,114,
+ 97,105,115,101,100,32,105,110,32,99,97,115,101,32,97,110,
+ 10,32,32,32,32,32,32,32,32,101,110,99,111,100,105,110,
+ 103,32,101,114,114,111,114,32,111,99,99,117,114,115,46,10,
+ 10,32,32,32,32,32,32,32,32,98,117,102,102,101,114,105,
+ 110,103,32,104,97,115,32,116,104,101,32,115,97,109,101,32,
+ 109,101,97,110,105,110,103,32,97,115,32,102,111,114,32,116,
+ 104,101,32,98,117,105,108,116,105,110,32,111,112,101,110,40,
+ 41,32,65,80,73,46,10,32,32,32,32,32,32,32,32,73,
+ 116,32,100,101,102,97,117,108,116,115,32,116,111,32,45,49,
+ 32,119,104,105,99,104,32,109,101,97,110,115,32,116,104,97,
+ 116,32,116,104,101,32,100,101,102,97,117,108,116,32,98,117,
+ 102,102,101,114,32,115,105,122,101,32,119,105,108,108,10,32,
+ 32,32,32,32,32,32,32,98,101,32,117,115,101,100,46,10,
+ 10,32,32,32,32,32,32,32,32,84,104,101,32,114,101,116,
+ 117,114,110,101,100,32,119,114,97,112,112,101,100,32,102,105,
+ 108,101,32,111,98,106,101,99,116,32,112,114,111,118,105,100,
+ 101,115,32,97,110,32,101,120,116,114,97,32,97,116,116,114,
+ 105,98,117,116,101,10,32,32,32,32,32,32,32,32,46,101,
+ 110,99,111,100,105,110,103,32,119,104,105,99,104,32,97,108,
+ 108,111,119,115,32,113,117,101,114,121,105,110,103,32,116,104,
+ 101,32,117,115,101,100,32,101,110,99,111,100,105,110,103,46,
+ 32,84,104,105,115,10,32,32,32,32,32,32,32,32,97,116,
+ 116,114,105,98,117,116,101,32,105,115,32,111,110,108,121,32,
+ 97,118,97,105,108,97,98,108,101,32,105,102,32,97,110,32,
+ 101,110,99,111,100,105,110,103,32,119,97,115,32,115,112,101,
+ 99,105,102,105,101,100,32,97,115,10,32,32,32,32,32,32,
+ 32,32,112,97,114,97,109,101,116,101,114,46,10,10,32,32,
+ 32,32,218,1,98,41,8,218,8,98,117,105,108,116,105,110,
+ 115,114,6,0,0,0,114,5,0,0,0,114,28,0,0,0,
+ 114,59,0,0,0,114,58,0,0,0,114,10,1,0,0,114,
+ 170,0,0,0,41,8,218,8,102,105,108,101,110,97,109,101,
+ 218,4,109,111,100,101,114,10,1,0,0,114,80,0,0,0,
+ 218,9,98,117,102,102,101,114,105,110,103,218,4,102,105,108,
+ 101,218,4,105,110,102,111,218,3,115,114,119,115,8,0,0,
+ 0,32,32,32,32,32,32,32,32,114,62,0,0,0,114,6,
+ 0,0,0,114,6,0,0,0,115,3,0,0,115,129,0,0,
+ 0,128,0,240,62,0,8,16,208,7,27,216,7,10,144,36,
+ 129,127,224,15,19,144,99,137,122,136,4,220,11,19,143,61,
+ 137,61,152,24,160,52,168,25,211,11,51,128,68,216,7,15,
+ 208,7,23,216,15,19,136,11,240,4,8,5,14,220,15,21,
+ 144,104,211,15,31,136,4,220,14,32,160,20,160,116,215,39,
+ 56,209,39,56,184,36,215,58,75,209,58,75,200,86,211,14,
+ 84,136,3,224,23,31,136,3,140,12,216,15,18,136,10,248,
+ 240,2,2,5,14,216,8,12,143,10,137,10,140,12,216,8,
+ 13,250,115,11,0,0,0,168,53,65,30,0,193,30,19,65,
+ 49,3,99,4,0,0,0,0,0,0,0,0,0,0,0,8,
+ 0,0,0,3,0,0,0,243,198,0,0,0,151,0,124,2,
+ 128,2,124,1,125,2,116,1,0,0,0,0,0,0,0,0,
+ 124,1,171,1,0,0,0,0,0,0,125,4,116,1,0,0,
+ 0,0,0,0,0,0,124,2,171,1,0,0,0,0,0,0,
+ 125,5,116,3,0,0,0,0,0,0,0,0,124,0,124,4,
+ 106,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,124,4,106,6,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,124,5,106,8,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 124,5,106,10,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,124,3,171,6,0,0,0,0,0,0,
+ 125,6,124,1,124,6,95,6,0,0,0,0,0,0,0,0,
+ 124,2,124,6,95,7,0,0,0,0,0,0,0,0,124,6,
+ 83,0,41,1,97,218,3,0,0,32,82,101,116,117,114,110,
+ 32,97,32,119,114,97,112,112,101,100,32,118,101,114,115,105,
+ 111,110,32,111,102,32,102,105,108,101,32,119,104,105,99,104,
+ 32,112,114,111,118,105,100,101,115,32,116,114,97,110,115,112,
+ 97,114,101,110,116,10,32,32,32,32,32,32,32,32,101,110,
+ 99,111,100,105,110,103,32,116,114,97,110,115,108,97,116,105,
+ 111,110,46,10,10,32,32,32,32,32,32,32,32,68,97,116,
+ 97,32,119,114,105,116,116,101,110,32,116,111,32,116,104,101,
+ 32,119,114,97,112,112,101,100,32,102,105,108,101,32,105,115,
+ 32,100,101,99,111,100,101,100,32,97,99,99,111,114,100,105,
+ 110,103,10,32,32,32,32,32,32,32,32,116,111,32,116,104,
+ 101,32,103,105,118,101,110,32,100,97,116,97,95,101,110,99,
+ 111,100,105,110,103,32,97,110,100,32,116,104,101,110,32,101,
+ 110,99,111,100,101,100,32,116,111,32,116,104,101,32,117,110,
+ 100,101,114,108,121,105,110,103,10,32,32,32,32,32,32,32,
+ 32,102,105,108,101,32,117,115,105,110,103,32,102,105,108,101,
+ 95,101,110,99,111,100,105,110,103,46,32,84,104,101,32,105,
+ 110,116,101,114,109,101,100,105,97,116,101,32,100,97,116,97,
+ 32,116,121,112,101,10,32,32,32,32,32,32,32,32,119,105,
+ 108,108,32,117,115,117,97,108,108,121,32,98,101,32,85,110,
+ 105,99,111,100,101,32,98,117,116,32,100,101,112,101,110,100,
+ 115,32,111,110,32,116,104,101,32,115,112,101,99,105,102,105,
+ 101,100,32,99,111,100,101,99,115,46,10,10,32,32,32,32,
+ 32,32,32,32,66,121,116,101,115,32,114,101,97,100,32,102,
+ 114,111,109,32,116,104,101,32,102,105,108,101,32,97,114,101,
+ 32,100,101,99,111,100,101,100,32,117,115,105,110,103,32,102,
+ 105,108,101,95,101,110,99,111,100,105,110,103,32,97,110,100,
+ 32,116,104,101,110,10,32,32,32,32,32,32,32,32,112,97,
+ 115,115,101,100,32,98,97,99,107,32,116,111,32,116,104,101,
+ 32,99,97,108,108,101,114,32,101,110,99,111,100,101,100,32,
+ 117,115,105,110,103,32,100,97,116,97,95,101,110,99,111,100,
+ 105,110,103,46,10,10,32,32,32,32,32,32,32,32,73,102,
+ 32,102,105,108,101,95,101,110,99,111,100,105,110,103,32,105,
+ 115,32,110,111,116,32,103,105,118,101,110,44,32,105,116,32,
+ 100,101,102,97,117,108,116,115,32,116,111,32,100,97,116,97,
+ 95,101,110,99,111,100,105,110,103,46,10,10,32,32,32,32,
+ 32,32,32,32,101,114,114,111,114,115,32,109,97,121,32,98,
+ 101,32,103,105,118,101,110,32,116,111,32,100,101,102,105,110,
+ 101,32,116,104,101,32,101,114,114,111,114,32,104,97,110,100,
+ 108,105,110,103,46,32,73,116,32,100,101,102,97,117,108,116,
+ 115,10,32,32,32,32,32,32,32,32,116,111,32,39,115,116,
+ 114,105,99,116,39,32,119,104,105,99,104,32,99,97,117,115,
+ 101,115,32,86,97,108,117,101,69,114,114,111,114,115,32,116,
+ 111,32,98,101,32,114,97,105,115,101,100,32,105,110,32,99,
+ 97,115,101,32,97,110,10,32,32,32,32,32,32,32,32,101,
+ 110,99,111,100,105,110,103,32,101,114,114,111,114,32,111,99,
+ 99,117,114,115,46,10,10,32,32,32,32,32,32,32,32,84,
+ 104,101,32,114,101,116,117,114,110,101,100,32,119,114,97,112,
+ 112,101,100,32,102,105,108,101,32,111,98,106,101,99,116,32,
+ 112,114,111,118,105,100,101,115,32,116,119,111,32,101,120,116,
+ 114,97,32,97,116,116,114,105,98,117,116,101,115,10,32,32,
+ 32,32,32,32,32,32,46,100,97,116,97,95,101,110,99,111,
+ 100,105,110,103,32,97,110,100,32,46,102,105,108,101,95,101,
+ 110,99,111,100,105,110,103,32,119,104,105,99,104,32,114,101,
+ 102,108,101,99,116,32,116,104,101,32,103,105,118,101,110,10,
+ 32,32,32,32,32,32,32,32,112,97,114,97,109,101,116,101,
+ 114,115,32,111,102,32,116,104,101,32,115,97,109,101,32,110,
+ 97,109,101,46,32,84,104,101,32,97,116,116,114,105,98,117,
+ 116,101,115,32,99,97,110,32,98,101,32,117,115,101,100,32,
+ 102,111,114,10,32,32,32,32,32,32,32,32,105,110,116,114,
+ 111,115,112,101,99,116,105,111,110,32,98,121,32,80,121,116,
+ 104,111,110,32,112,114,111,103,114,97,109,115,46,10,10,32,
+ 32,32,32,41,8,114,5,0,0,0,114,29,0,0,0,114,
+ 36,0,0,0,114,37,0,0,0,114,59,0,0,0,114,58,
+ 0,0,0,114,29,1,0,0,114,30,1,0,0,41,7,114,
+ 37,1,0,0,114,29,1,0,0,114,30,1,0,0,114,80,
+ 0,0,0,218,9,100,97,116,97,95,105,110,102,111,218,9,
+ 102,105,108,101,95,105,110,102,111,218,2,115,114,115,7,0,
+ 0,0,32,32,32,32,32,32,32,114,62,0,0,0,114,7,
+ 0,0,0,114,7,0,0,0,164,3,0,0,115,106,0,0,
+ 0,128,0,240,50,0,8,21,208,7,28,216,24,37,136,13,
+ 220,16,22,144,125,211,16,37,128,73,220,16,22,144,125,211,
+ 16,37,128,73,220,9,22,144,116,152,89,215,29,45,209,29,
+ 45,168,121,215,47,63,209,47,63,216,23,32,215,23,45,209,
+ 23,45,168,121,215,47,69,209,47,69,192,118,243,3,1,10,
+ 79,1,128,66,240,6,0,24,37,128,66,212,4,20,216,23,
+ 36,128,66,212,4,20,216,11,13,128,73,114,63,0,0,0,
+ 99,1,0,0,0,0,0,0,0,0,0,0,0,3,0,0,
+ 0,3,0,0,0,243,44,0,0,0,151,0,116,1,0,0,
+ 0,0,0,0,0,0,124,0,171,1,0,0,0,0,0,0,
+ 106,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,83,0,41,1,122,158,32,76,111,111,107,117,
+ 112,32,117,112,32,116,104,101,32,99,111,100,101,99,32,102,
+ 111,114,32,116,104,101,32,103,105,118,101,110,32,101,110,99,
+ 111,100,105,110,103,32,97,110,100,32,114,101,116,117,114,110,
+ 10,32,32,32,32,32,32,32,32,105,116,115,32,101,110,99,
+ 111,100,101,114,32,102,117,110,99,116,105,111,110,46,10,10,
+ 32,32,32,32,32,32,32,32,82,97,105,115,101,115,32,97,
+ 32,76,111,111,107,117,112,69,114,114,111,114,32,105,110,32,
+ 99,97,115,101,32,116,104,101,32,101,110,99,111,100,105,110,
+ 103,32,99,97,110,110,111,116,32,98,101,32,102,111,117,110,
+ 100,46,10,10,32,32,32,32,41,2,114,5,0,0,0,114,
+ 36,0,0,0,169,1,114,10,1,0,0,115,1,0,0,0,
+ 32,114,62,0,0,0,114,30,0,0,0,114,30,0,0,0,
+ 202,3,0,0,243,21,0,0,0,128,0,244,16,0,12,18,
+ 144,40,211,11,27,215,11,34,209,11,34,208,4,34,114,63,
+ 0,0,0,99,1,0,0,0,0,0,0,0,0,0,0,0,
+ 3,0,0,0,3,0,0,0,243,44,0,0,0,151,0,116,
+ 1,0,0,0,0,0,0,0,0,124,0,171,1,0,0,0,
+ 0,0,0,106,2,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,83,0,41,1,122,158,32,76,111,
+ 111,107,117,112,32,117,112,32,116,104,101,32,99,111,100,101,
+ 99,32,102,111,114,32,116,104,101,32,103,105,118,101,110,32,
+ 101,110,99,111,100,105,110,103,32,97,110,100,32,114,101,116,
+ 117,114,110,10,32,32,32,32,32,32,32,32,105,116,115,32,
+ 100,101,99,111,100,101,114,32,102,117,110,99,116,105,111,110,
+ 46,10,10,32,32,32,32,32,32,32,32,82,97,105,115,101,
+ 115,32,97,32,76,111,111,107,117,112,69,114,114,111,114,32,
+ 105,110,32,99,97,115,101,32,116,104,101,32,101,110,99,111,
+ 100,105,110,103,32,99,97,110,110,111,116,32,98,101,32,102,
+ 111,117,110,100,46,10,10,32,32,32,32,41,2,114,5,0,
+ 0,0,114,37,0,0,0,114,45,1,0,0,115,1,0,0,
+ 0,32,114,62,0,0,0,114,31,0,0,0,114,31,0,0,
+ 0,212,3,0,0,114,46,1,0,0,114,63,0,0,0,99,
+ 1,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,
+ 3,0,0,0,243,74,0,0,0,151,0,116,1,0,0,0,
+ 0,0,0,0,0,124,0,171,1,0,0,0,0,0,0,106,
+ 2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,125,1,124,1,128,11,116,5,0,0,0,0,0,
+ 0,0,0,124,0,171,1,0,0,0,0,0,0,130,1,124,
+ 1,83,0,41,1,122,247,32,76,111,111,107,117,112,32,117,
+ 112,32,116,104,101,32,99,111,100,101,99,32,102,111,114,32,
+ 116,104,101,32,103,105,118,101,110,32,101,110,99,111,100,105,
+ 110,103,32,97,110,100,32,114,101,116,117,114,110,10,32,32,
+ 32,32,32,32,32,32,105,116,115,32,73,110,99,114,101,109,
+ 101,110,116,97,108,69,110,99,111,100,101,114,32,99,108,97,
+ 115,115,32,111,114,32,102,97,99,116,111,114,121,32,102,117,
+ 110,99,116,105,111,110,46,10,10,32,32,32,32,32,32,32,
+ 32,82,97,105,115,101,115,32,97,32,76,111,111,107,117,112,
+ 69,114,114,111,114,32,105,110,32,99,97,115,101,32,116,104,
+ 101,32,101,110,99,111,100,105,110,103,32,99,97,110,110,111,
+ 116,32,98,101,32,102,111,117,110,100,10,32,32,32,32,32,
+ 32,32,32,111,114,32,116,104,101,32,99,111,100,101,99,115,
+ 32,100,111,101,115,110,39,116,32,112,114,111,118,105,100,101,
+ 32,97,110,32,105,110,99,114,101,109,101,110,116,97,108,32,
+ 101,110,99,111,100,101,114,46,10,10,32,32,32,32,41,3,
+ 114,5,0,0,0,114,56,0,0,0,218,11,76,111,111,107,
+ 117,112,69,114,114,111,114,41,2,114,10,1,0,0,218,7,
+ 101,110,99,111,100,101,114,115,2,0,0,0,32,32,114,62,
+ 0,0,0,114,32,0,0,0,114,32,0,0,0,222,3,0,
+ 0,243,41,0,0,0,128,0,244,18,0,15,21,144,88,211,
+ 14,30,215,14,49,209,14,49,128,71,216,7,14,128,127,220,
+ 14,25,152,40,211,14,35,208,8,35,216,11,18,128,78,114,
+ 63,0,0,0,99,1,0,0,0,0,0,0,0,0,0,0,
+ 0,3,0,0,0,3,0,0,0,243,74,0,0,0,151,0,
+ 116,1,0,0,0,0,0,0,0,0,124,0,171,1,0,0,
+ 0,0,0,0,106,2,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,125,1,124,1,128,11,116,5,
+ 0,0,0,0,0,0,0,0,124,0,171,1,0,0,0,0,
+ 0,0,130,1,124,1,83,0,41,1,122,247,32,76,111,111,
+ 107,117,112,32,117,112,32,116,104,101,32,99,111,100,101,99,
+ 32,102,111,114,32,116,104,101,32,103,105,118,101,110,32,101,
+ 110,99,111,100,105,110,103,32,97,110,100,32,114,101,116,117,
+ 114,110,10,32,32,32,32,32,32,32,32,105,116,115,32,73,
+ 110,99,114,101,109,101,110,116,97,108,68,101,99,111,100,101,
+ 114,32,99,108,97,115,115,32,111,114,32,102,97,99,116,111,
+ 114,121,32,102,117,110,99,116,105,111,110,46,10,10,32,32,
+ 32,32,32,32,32,32,82,97,105,115,101,115,32,97,32,76,
+ 111,111,107,117,112,69,114,114,111,114,32,105,110,32,99,97,
+ 115,101,32,116,104,101,32,101,110,99,111,100,105,110,103,32,
+ 99,97,110,110,111,116,32,98,101,32,102,111,117,110,100,10,
+ 32,32,32,32,32,32,32,32,111,114,32,116,104,101,32,99,
+ 111,100,101,99,115,32,100,111,101,115,110,39,116,32,112,114,
+ 111,118,105,100,101,32,97,110,32,105,110,99,114,101,109,101,
+ 110,116,97,108,32,100,101,99,111,100,101,114,46,10,10,32,
+ 32,32,32,41,3,114,5,0,0,0,114,57,0,0,0,114,
+ 49,1,0,0,41,2,114,10,1,0,0,218,7,100,101,99,
+ 111,100,101,114,115,2,0,0,0,32,32,114,62,0,0,0,
+ 114,33,0,0,0,114,33,0,0,0,236,3,0,0,114,51,
+ 1,0,0,114,63,0,0,0,99,1,0,0,0,0,0,0,
+ 0,0,0,0,0,3,0,0,0,3,0,0,0,243,44,0,
+ 0,0,151,0,116,1,0,0,0,0,0,0,0,0,124,0,
+ 171,1,0,0,0,0,0,0,106,2,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,83,0,41,1,
+ 122,180,32,76,111,111,107,117,112,32,117,112,32,116,104,101,
+ 32,99,111,100,101,99,32,102,111,114,32,116,104,101,32,103,
+ 105,118,101,110,32,101,110,99,111,100,105,110,103,32,97,110,
+ 100,32,114,101,116,117,114,110,10,32,32,32,32,32,32,32,
+ 32,105,116,115,32,83,116,114,101,97,109,82,101,97,100,101,
+ 114,32,99,108,97,115,115,32,111,114,32,102,97,99,116,111,
+ 114,121,32,102,117,110,99,116,105,111,110,46,10,10,32,32,
+ 32,32,32,32,32,32,82,97,105,115,101,115,32,97,32,76,
+ 111,111,107,117,112,69,114,114,111,114,32,105,110,32,99,97,
+ 115,101,32,116,104,101,32,101,110,99,111,100,105,110,103,32,
+ 99,97,110,110,111,116,32,98,101,32,102,111,117,110,100,46,
+ 10,10,32,32,32,32,41,2,114,5,0,0,0,114,59,0,
+ 0,0,114,45,1,0,0,115,1,0,0,0,32,114,62,0,
+ 0,0,114,34,0,0,0,114,34,0,0,0,250,3,0,0,
+ 243,21,0,0,0,128,0,244,16,0,12,18,144,40,211,11,
+ 27,215,11,40,209,11,40,208,4,40,114,63,0,0,0,99,
+ 1,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,
+ 3,0,0,0,243,44,0,0,0,151,0,116,1,0,0,0,
+ 0,0,0,0,0,124,0,171,1,0,0,0,0,0,0,106,
+ 2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,83,0,41,1,122,180,32,76,111,111,107,117,112,
+ 32,117,112,32,116,104,101,32,99,111,100,101,99,32,102,111,
+ 114,32,116,104,101,32,103,105,118,101,110,32,101,110,99,111,
+ 100,105,110,103,32,97,110,100,32,114,101,116,117,114,110,10,
+ 32,32,32,32,32,32,32,32,105,116,115,32,83,116,114,101,
+ 97,109,87,114,105,116,101,114,32,99,108,97,115,115,32,111,
+ 114,32,102,97,99,116,111,114,121,32,102,117,110,99,116,105,
+ 111,110,46,10,10,32,32,32,32,32,32,32,32,82,97,105,
+ 115,101,115,32,97,32,76,111,111,107,117,112,69,114,114,111,
+ 114,32,105,110,32,99,97,115,101,32,116,104,101,32,101,110,
+ 99,111,100,105,110,103,32,99,97,110,110,111,116,32,98,101,
+ 32,102,111,117,110,100,46,10,10,32,32,32,32,41,2,114,
+ 5,0,0,0,114,58,0,0,0,114,45,1,0,0,115,1,
+ 0,0,0,32,114,62,0,0,0,114,35,0,0,0,114,35,
+ 0,0,0,4,4,0,0,114,55,1,0,0,114,63,0,0,
+ 0,99,3,0,0,0,0,0,0,0,0,0,0,0,5,0,
+ 0,0,43,0,0,0,243,160,0,0,0,75,0,1,0,151,
+ 0,2,0,116,1,0,0,0,0,0,0,0,0,124,1,171,
+ 1,0,0,0,0,0,0,124,2,102,1,105,0,124,3,164,
+ 1,142,1,125,4,124,0,68,0,93,26,0,0,125,5,124,
+ 4,106,3,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,124,5,171,1,0,0,0,0,0,0,125,
+ 6,124,6,115,1,140,23,124,6,150,1,151,1,1,0,140,
+ 28,4,0,124,4,106,3,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,100,1,100,2,171,2,0,
+ 0,0,0,0,0,125,6,124,6,114,5,124,6,150,1,151,
+ 1,1,0,121,3,121,3,173,3,119,1,41,4,122,191,10,
+ 32,32,32,32,69,110,99,111,100,105,110,103,32,105,116,101,
+ 114,97,116,111,114,46,10,10,32,32,32,32,69,110,99,111,
+ 100,101,115,32,116,104,101,32,105,110,112,117,116,32,115,116,
+ 114,105,110,103,115,32,102,114,111,109,32,116,104,101,32,105,
+ 116,101,114,97,116,111,114,32,117,115,105,110,103,32,97,110,
+ 32,73,110,99,114,101,109,101,110,116,97,108,69,110,99,111,
+ 100,101,114,46,10,10,32,32,32,32,101,114,114,111,114,115,
+ 32,97,110,100,32,107,119,97,114,103,115,32,97,114,101,32,
+ 112,97,115,115,101,100,32,116,104,114,111,117,103,104,32,116,
+ 111,32,116,104,101,32,73,110,99,114,101,109,101,110,116,97,
+ 108,69,110,99,111,100,101,114,10,32,32,32,32,99,111,110,
+ 115,116,114,117,99,116,111,114,46,10,32,32,32,32,114,86,
+ 0,0,0,84,78,41,2,114,32,0,0,0,114,36,0,0,
+ 0,41,7,218,8,105,116,101,114,97,116,111,114,114,10,1,
+ 0,0,114,80,0,0,0,218,6,107,119,97,114,103,115,114,
+ 50,1,0,0,114,79,0,0,0,218,6,111,117,116,112,117,
+ 116,115,7,0,0,0,32,32,32,32,32,32,32,114,62,0,
+ 0,0,114,38,0,0,0,114,38,0,0,0,14,4,0,0,
+ 115,99,0,0,0,232,0,248,128,0,240,18,0,15,46,212,
+ 14,35,160,72,211,14,45,168,102,209,14,63,184,6,209,14,
+ 63,128,71,216,17,25,242,0,3,5,25,136,5,216,17,24,
+ 151,30,145,30,160,5,211,17,38,136,6,218,11,17,216,18,
+ 24,139,76,240,7,3,5,25,240,8,0,14,21,143,94,137,
+ 94,152,66,160,4,211,13,37,128,70,217,7,13,216,14,20,
+ 139,12,240,3,0,8,14,249,243,10,0,0,0,130,43,65,
+ 14,1,174,32,65,14,1,99,3,0,0,0,0,0,0,0,
+ 0,0,0,0,5,0,0,0,43,0,0,0,243,160,0,0,
+ 0,75,0,1,0,151,0,2,0,116,1,0,0,0,0,0,
+ 0,0,0,124,1,171,1,0,0,0,0,0,0,124,2,102,
+ 1,105,0,124,3,164,1,142,1,125,4,124,0,68,0,93,
+ 26,0,0,125,5,124,4,106,3,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,124,5,171,1,0,
+ 0,0,0,0,0,125,6,124,6,115,1,140,23,124,6,150,
+ 1,151,1,1,0,140,28,4,0,124,4,106,3,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,
+ 1,100,2,171,2,0,0,0,0,0,0,125,6,124,6,114,
+ 5,124,6,150,1,151,1,1,0,121,3,121,3,173,3,119,
+ 1,41,4,122,191,10,32,32,32,32,68,101,99,111,100,105,
+ 110,103,32,105,116,101,114,97,116,111,114,46,10,10,32,32,
+ 32,32,68,101,99,111,100,101,115,32,116,104,101,32,105,110,
+ 112,117,116,32,115,116,114,105,110,103,115,32,102,114,111,109,
+ 32,116,104,101,32,105,116,101,114,97,116,111,114,32,117,115,
+ 105,110,103,32,97,110,32,73,110,99,114,101,109,101,110,116,
+ 97,108,68,101,99,111,100,101,114,46,10,10,32,32,32,32,
+ 101,114,114,111,114,115,32,97,110,100,32,107,119,97,114,103,
+ 115,32,97,114,101,32,112,97,115,115,101,100,32,116,104,114,
+ 111,117,103,104,32,116,111,32,116,104,101,32,73,110,99,114,
+ 101,109,101,110,116,97,108,68,101,99,111,100,101,114,10,32,
+ 32,32,32,99,111,110,115,116,114,117,99,116,111,114,46,10,
+ 32,32,32,32,114,63,0,0,0,84,78,41,2,114,33,0,
+ 0,0,114,37,0,0,0,41,7,114,58,1,0,0,114,10,
+ 1,0,0,114,80,0,0,0,114,59,1,0,0,114,53,1,
+ 0,0,114,79,0,0,0,114,60,1,0,0,115,7,0,0,
+ 0,32,32,32,32,32,32,32,114,62,0,0,0,114,39,0,
+ 0,0,114,39,0,0,0,32,4,0,0,115,99,0,0,0,
+ 232,0,248,128,0,240,18,0,15,46,212,14,35,160,72,211,
+ 14,45,168,102,209,14,63,184,6,209,14,63,128,71,216,17,
+ 25,242,0,3,5,25,136,5,216,17,24,151,30,145,30,160,
+ 5,211,17,38,136,6,218,11,17,216,18,24,139,76,240,7,
+ 3,5,25,240,8,0,14,21,143,94,137,94,152,67,160,20,
+ 211,13,38,128,70,217,7,13,216,14,20,139,12,240,3,0,
+ 8,14,249,114,61,1,0,0,99,1,0,0,0,0,0,0,
+ 0,0,0,0,0,5,0,0,0,3,0,0,0,243,46,0,
+ 0,0,151,0,124,0,68,0,143,1,99,2,105,0,99,2,
+ 93,5,0,0,125,1,124,1,124,1,147,2,140,7,4,0,
+ 99,2,125,1,83,0,99,2,1,0,99,2,125,1,119,0,
+ 41,1,122,136,32,109,97,107,101,95,105,100,101,110,116,105,
+ 116,121,95,100,105,99,116,40,114,110,103,41,32,45,62,32,
+ 100,105,99,116,10,10,32,32,32,32,32,32,32,32,82,101,
+ 116,117,114,110,32,97,32,100,105,99,116,105,111,110,97,114,
+ 121,32,119,104,101,114,101,32,101,108,101,109,101,110,116,115,
+ 32,111,102,32,116,104,101,32,114,110,103,32,115,101,113,117,
+ 101,110,99,101,32,97,114,101,10,32,32,32,32,32,32,32,
+ 32,109,97,112,112,101,100,32,116,111,32,116,104,101,109,115,
+ 101,108,118,101,115,46,10,10,32,32,32,32,114,73,0,0,
+ 0,41,2,218,3,114,110,103,218,1,105,115,2,0,0,0,
+ 32,32,114,62,0,0,0,218,18,109,97,107,101,95,105,100,
+ 101,110,116,105,116,121,95,100,105,99,116,114,66,1,0,0,
+ 52,4,0,0,115,28,0,0,0,128,0,240,16,0,26,29,
+ 214,11,29,144,65,136,65,136,97,137,67,210,11,29,208,4,
+ 29,249,210,11,29,115,4,0,0,0,133,10,18,4,99,1,
+ 0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,3,
+ 0,0,0,243,88,0,0,0,151,0,105,0,125,1,124,0,
+ 106,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,171,0,0,0,0,0,0,0,68,0,93,20,
+ 0,0,92,2,0,0,125,2,125,3,124,3,124,1,118,1,
+ 114,6,124,2,124,1,124,3,60,0,0,0,140,16,100,1,
+ 124,1,124,3,60,0,0,0,140,22,4,0,124,1,83,0,
+ 41,2,97,130,1,0,0,32,67,114,101,97,116,101,115,32,
+ 97,110,32,101,110,99,111,100,105,110,103,32,109,97,112,32,
+ 102,114,111,109,32,97,32,100,101,99,111,100,105,110,103,32,
+ 109,97,112,46,10,10,32,32,32,32,32,32,32,32,73,102,
+ 32,97,32,116,97,114,103,101,116,32,109,97,112,112,105,110,
+ 103,32,105,110,32,116,104,101,32,100,101,99,111,100,105,110,
+ 103,32,109,97,112,32,111,99,99,117,114,115,32,109,117,108,
+ 116,105,112,108,101,10,32,32,32,32,32,32,32,32,116,105,
+ 109,101,115,44,32,116,104,101,110,32,116,104,97,116,32,116,
+ 97,114,103,101,116,32,105,115,32,109,97,112,112,101,100,32,
+ 116,111,32,78,111,110,101,32,40,117,110,100,101,102,105,110,
+ 101,100,32,109,97,112,112,105,110,103,41,44,10,32,32,32,
+ 32,32,32,32,32,99,97,117,115,105,110,103,32,97,110,32,
+ 101,120,99,101,112,116,105,111,110,32,119,104,101,110,32,101,
+ 110,99,111,117,110,116,101,114,101,100,32,98,121,32,116,104,
+ 101,32,99,104,97,114,109,97,112,32,99,111,100,101,99,10,
+ 32,32,32,32,32,32,32,32,100,117,114,105,110,103,32,116,
+ 114,97,110,115,108,97,116,105,111,110,46,10,10,32,32,32,
+ 32,32,32,32,32,79,110,101,32,101,120,97,109,112,108,101,
+ 32,119,104,101,114,101,32,116,104,105,115,32,104,97,112,112,
+ 101,110,115,32,105,115,32,99,112,56,55,53,46,112,121,32,
+ 119,104,105,99,104,32,100,101,99,111,100,101,115,10,32,32,
+ 32,32,32,32,32,32,109,117,108,116,105,112,108,101,32,99,
+ 104,97,114,97,99,116,101,114,32,116,111,32,92,117,48,48,
+ 49,97,46,10,10,32,32,32,32,78,41,1,218,5,105,116,
+ 101,109,115,41,4,218,12,100,101,99,111,100,105,110,103,95,
+ 109,97,112,218,1,109,218,1,107,218,1,118,115,4,0,0,
+ 0,32,32,32,32,114,62,0,0,0,218,17,109,97,107,101,
+ 95,101,110,99,111,100,105,110,103,95,109,97,112,114,73,1,
+ 0,0,62,4,0,0,115,69,0,0,0,128,0,240,26,0,
+ 9,11,128,65,216,15,27,215,15,33,209,15,33,211,15,35,
+ 242,0,4,5,24,137,3,136,1,136,33,216,15,16,144,65,
+ 137,118,216,19,20,136,65,136,97,138,68,224,19,23,136,65,
+ 136,97,138,68,240,9,4,5,24,240,10,0,12,13,128,72,
+ 114,63,0,0,0,218,6,105,103,110,111,114,101,218,7,114,
+ 101,112,108,97,99,101,218,17,120,109,108,99,104,97,114,114,
+ 101,102,114,101,112,108,97,99,101,218,16,98,97,99,107,115,
+ 108,97,115,104,114,101,112,108,97,99,101,218,11,110,97,109,
+ 101,114,101,112,108,97,99,101,41,4,218,1,114,78,114,83,
+ 0,0,0,114,215,0,0,0,41,2,78,114,83,0,0,0,
+ 114,82,0,0,0,41,57,114,72,0,0,0,114,33,1,0,
+ 0,218,3,115,121,115,218,7,95,99,111,100,101,99,115,218,
+ 11,73,109,112,111,114,116,69,114,114,111,114,218,3,119,104,
+ 121,218,11,83,121,115,116,101,109,69,114,114,111,114,218,7,
+ 95,95,97,108,108,95,95,114,15,0,0,0,114,10,0,0,
+ 0,114,17,0,0,0,114,9,0,0,0,114,18,0,0,0,
+ 114,20,0,0,0,114,21,0,0,0,218,9,98,121,116,101,
+ 111,114,100,101,114,114,8,0,0,0,114,16,0,0,0,114,
+ 19,0,0,0,114,12,0,0,0,114,11,0,0,0,114,14,
+ 0,0,0,114,13,0,0,0,114,53,0,0,0,114,22,0,
+ 0,0,114,23,0,0,0,114,145,0,0,0,114,24,0,0,
+ 0,114,105,0,0,0,114,25,0,0,0,114,130,0,0,0,
+ 114,27,0,0,0,114,26,0,0,0,114,28,0,0,0,114,
+ 29,0,0,0,114,6,0,0,0,114,7,0,0,0,114,30,
+ 0,0,0,114,31,0,0,0,114,32,0,0,0,114,33,0,
+ 0,0,114,34,0,0,0,114,35,0,0,0,114,38,0,0,
+ 0,114,39,0,0,0,114,66,1,0,0,114,73,1,0,0,
+ 114,47,0,0,0,114,40,0,0,0,114,41,0,0,0,114,
+ 42,0,0,0,114,43,0,0,0,114,44,0,0,0,114,45,
+ 0,0,0,114,49,1,0,0,218,6,95,102,97,108,115,101,
+ 218,9,101,110,99,111,100,105,110,103,115,114,73,0,0,0,
+ 114,63,0,0,0,114,62,0,0,0,250,8,60,109,111,100,
+ 117,108,101,62,114,89,1,0,0,1,0,0,0,115,20,2,
+ 0,0,240,3,1,1,1,241,2,7,1,4,243,18,0,1,
+ 16,219,0,10,240,8,3,1,69,1,220,4,25,242,8,13,
+ 11,45,128,7,240,48,0,12,27,128,8,240,6,0,25,36,
+ 208,0,35,128,6,136,28,240,6,0,25,36,208,0,35,128,
+ 6,136,28,240,6,0,16,35,128,12,240,6,0,16,35,128,
+ 12,224,3,6,135,61,129,61,144,72,210,3,28,240,6,0,
+ 23,35,208,4,34,128,67,136,41,240,6,0,17,29,129,73,
+ 240,10,0,23,35,208,4,34,128,67,136,41,240,6,0,17,
+ 29,128,73,240,6,0,12,24,128,8,216,11,23,128,8,216,
+ 11,23,128,8,216,11,23,128,8,244,10,29,1,38,144,5,
+ 244,0,29,1,38,247,62,64,1,1,34,241,0,64,1,1,
+ 34,244,68,2,38,1,12,152,22,244,0,38,1,12,244,80,
+ 1,32,1,34,208,33,51,244,0,32,1,34,244,68,1,47,
+ 1,12,152,22,244,0,47,1,12,244,98,1,34,1,31,208,
+ 33,51,244,0,34,1,31,244,86,1,72,1,1,72,1,144,
+ 53,244,0,72,1,1,72,1,244,88,2,120,3,1,72,1,
+ 144,53,244,0,120,3,1,72,1,247,120,7,86,1,1,72,
+ 1,241,0,86,1,1,72,1,247,116,2,115,1,1,72,1,
+ 241,0,115,1,1,72,1,243,110,3,47,1,14,243,98,1,
+ 34,1,14,242,76,1,8,1,35,242,20,8,1,35,242,20,
+ 12,1,19,242,28,12,1,19,242,28,8,1,41,242,20,8,
+ 1,41,243,20,16,1,21,243,36,16,1,21,242,40,8,1,
+ 30,242,20,19,1,13,240,46,14,1,30,217,20,32,160,24,
+ 211,20,42,128,77,217,20,32,160,24,211,20,42,128,77,217,
+ 21,33,160,41,211,21,44,128,78,217,31,43,208,44,63,211,
+ 31,64,208,4,28,217,30,42,208,43,61,211,30,62,208,4,
+ 27,217,25,37,160,109,211,25,52,208,4,22,240,24,0,10,
+ 11,128,6,217,3,9,220,4,20,240,3,0,4,10,248,240,
+ 111,34,0,8,19,242,0,1,1,69,1,217,10,21,208,22,
+ 61,192,3,209,22,67,211,10,68,208,4,68,251,240,3,1,
+ 1,69,1,251,240,86,34,0,8,19,242,0,7,1,30,224,
+ 20,24,128,77,216,20,24,128,77,216,21,25,128,78,216,31,
+ 35,208,4,28,216,30,34,208,4,27,216,25,29,210,4,22,
+ 240,15,7,1,30,250,115,41,0,0,0,140,5,68,21,0,
+ 195,27,48,68,45,0,196,21,5,68,42,3,196,26,11,68,
+ 37,3,196,37,5,68,42,3,196,45,17,69,1,3,197,0,
+ 1,69,1,3,
+};
diff --git a/contrib/tools/python3/Python/frozen_modules/frozen_only.h b/contrib/tools/python3/Python/frozen_modules/frozen_only.h
new file mode 100644
index 00000000000..0fca6de55cc
--- /dev/null
+++ b/contrib/tools/python3/Python/frozen_modules/frozen_only.h
@@ -0,0 +1,14 @@
+/* Auto-generated by Programs/_freeze_module.py */
+const unsigned char _Py_M__frozen_only[] = {
+ 227,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,
+ 0,0,0,0,0,243,24,0,0,0,151,0,100,0,90,0,
+ 2,0,101,1,100,1,171,1,0,0,0,0,0,0,1,0,
+ 121,2,41,3,84,122,12,72,101,108,108,111,32,119,111,114,
+ 108,100,33,78,41,2,218,11,105,110,105,116,105,97,108,105,
+ 122,101,100,218,5,112,114,105,110,116,169,0,243,0,0,0,
+ 0,250,20,60,102,114,111,122,101,110,32,102,114,111,122,101,
+ 110,95,111,110,108,121,62,250,8,60,109,111,100,117,108,101,
+ 62,114,7,0,0,0,1,0,0,0,115,18,0,0,0,240,
+ 3,1,1,1,216,14,18,128,11,217,0,5,128,110,213,0,
+ 21,114,5,0,0,0,
+};
diff --git a/contrib/tools/python3/Python/frozen_modules/genericpath.h b/contrib/tools/python3/Python/frozen_modules/genericpath.h
new file mode 100644
index 00000000000..cdbd57a934a
--- /dev/null
+++ b/contrib/tools/python3/Python/frozen_modules/genericpath.h
@@ -0,0 +1,389 @@
+/* Auto-generated by Programs/_freeze_module.py */
+const unsigned char _Py_M__genericpath[] = {
+ 227,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,
+ 0,0,0,0,0,243,116,0,0,0,151,0,100,0,90,0,
+ 100,1,100,2,108,1,90,1,100,1,100,2,108,2,90,2,
+ 103,0,100,3,162,1,90,3,100,4,132,0,90,4,100,5,
+ 132,0,90,5,100,6,132,0,90,6,100,7,132,0,90,7,
+ 100,8,132,0,90,8,100,9,132,0,90,9,100,10,132,0,
+ 90,10,100,11,132,0,90,11,100,12,132,0,90,12,100,13,
+ 132,0,90,13,100,14,132,0,90,14,100,15,132,0,90,15,
+ 100,16,132,0,90,16,100,17,132,0,90,17,121,2,41,18,
+ 122,152,10,80,97,116,104,32,111,112,101,114,97,116,105,111,
+ 110,115,32,99,111,109,109,111,110,32,116,111,32,109,111,114,
+ 101,32,116,104,97,110,32,111,110,101,32,79,83,10,68,111,
+ 32,110,111,116,32,117,115,101,32,100,105,114,101,99,116,108,
+ 121,46,32,32,84,104,101,32,79,83,32,115,112,101,99,105,
+ 102,105,99,32,109,111,100,117,108,101,115,32,105,109,112,111,
+ 114,116,32,116,104,101,32,97,112,112,114,111,112,114,105,97,
+ 116,101,10,102,117,110,99,116,105,111,110,115,32,102,114,111,
+ 109,32,116,104,105,115,32,109,111,100,117,108,101,32,116,104,
+ 101,109,115,101,108,118,101,115,46,10,233,0,0,0,0,78,
+ 41,12,218,12,99,111,109,109,111,110,112,114,101,102,105,120,
+ 218,6,101,120,105,115,116,115,218,8,103,101,116,97,116,105,
+ 109,101,218,8,103,101,116,99,116,105,109,101,218,8,103,101,
+ 116,109,116,105,109,101,218,7,103,101,116,115,105,122,101,218,
+ 5,105,115,100,105,114,218,6,105,115,102,105,108,101,218,6,
+ 105,115,108,105,110,107,218,8,115,97,109,101,102,105,108,101,
+ 218,12,115,97,109,101,111,112,101,110,102,105,108,101,218,8,
+ 115,97,109,101,115,116,97,116,99,1,0,0,0,0,0,0,
+ 0,0,0,0,0,4,0,0,0,3,0,0,0,243,90,0,
+ 0,0,151,0,9,0,116,1,0,0,0,0,0,0,0,0,
+ 106,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,124,0,171,1,0,0,0,0,0,0,1,0,
+ 121,2,35,0,116,4,0,0,0,0,0,0,0,0,116,6,
+ 0,0,0,0,0,0,0,0,102,2,36,0,114,3,1,0,
+ 89,0,121,1,119,0,120,3,89,0,119,1,41,3,122,68,
+ 84,101,115,116,32,119,104,101,116,104,101,114,32,97,32,112,
+ 97,116,104,32,101,120,105,115,116,115,46,32,32,82,101,116,
+ 117,114,110,115,32,70,97,108,115,101,32,102,111,114,32,98,
+ 114,111,107,101,110,32,115,121,109,98,111,108,105,99,32,108,
+ 105,110,107,115,70,84,41,4,218,2,111,115,218,4,115,116,
+ 97,116,218,7,79,83,69,114,114,111,114,218,10,86,97,108,
+ 117,101,69,114,114,111,114,41,1,218,4,112,97,116,104,115,
+ 1,0,0,0,32,250,20,60,102,114,111,122,101,110,32,103,
+ 101,110,101,114,105,99,112,97,116,104,62,114,4,0,0,0,
+ 114,4,0,0,0,16,0,0,0,115,48,0,0,0,128,0,
+ 240,4,3,5,21,220,8,10,143,7,137,7,144,4,140,13,
+ 240,6,0,12,16,248,244,5,0,13,20,148,90,208,11,32,
+ 242,0,1,5,21,217,15,20,240,3,1,5,21,250,115,12,
+ 0,0,0,130,21,24,0,152,15,42,3,169,1,42,3,99,
+ 1,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,
+ 3,0,0,0,243,150,0,0,0,151,0,9,0,116,1,0,
+ 0,0,0,0,0,0,0,106,2,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,124,0,171,1,0,
+ 0,0,0,0,0,125,1,116,3,0,0,0,0,0,0,0,
+ 0,106,8,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,124,1,106,10,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,171,1,0,0,0,
+ 0,0,0,83,0,35,0,116,4,0,0,0,0,0,0,0,
+ 0,116,6,0,0,0,0,0,0,0,0,102,2,36,0,114,
+ 3,1,0,89,0,121,1,119,0,120,3,89,0,119,1,41,
+ 2,122,37,84,101,115,116,32,119,104,101,116,104,101,114,32,
+ 97,32,112,97,116,104,32,105,115,32,97,32,114,101,103,117,
+ 108,97,114,32,102,105,108,101,70,41,6,114,16,0,0,0,
+ 114,17,0,0,0,114,18,0,0,0,114,19,0,0,0,218,
+ 7,83,95,73,83,82,69,71,218,7,115,116,95,109,111,100,
+ 101,169,2,114,20,0,0,0,218,2,115,116,115,2,0,0,
+ 0,32,32,114,21,0,0,0,114,10,0,0,0,114,10,0,
+ 0,0,27,0,0,0,115,66,0,0,0,128,0,240,4,3,
+ 5,21,220,13,15,143,87,137,87,144,84,139,93,136,2,244,
+ 6,0,12,16,143,60,137,60,152,2,159,10,153,10,211,11,
+ 35,208,4,35,248,244,5,0,13,20,148,90,208,11,32,242,
+ 0,1,5,21,217,15,20,240,3,1,5,21,250,243,15,0,
+ 0,0,130,21,54,0,182,15,65,8,3,193,7,1,65,8,
+ 3,99,1,0,0,0,0,0,0,0,0,0,0,0,4,0,
+ 0,0,3,0,0,0,243,150,0,0,0,151,0,9,0,116,
+ 1,0,0,0,0,0,0,0,0,106,2,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,124,0,171,
+ 1,0,0,0,0,0,0,125,1,116,3,0,0,0,0,0,
+ 0,0,0,106,8,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,124,1,106,10,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,171,1,0,
+ 0,0,0,0,0,83,0,35,0,116,4,0,0,0,0,0,
+ 0,0,0,116,6,0,0,0,0,0,0,0,0,102,2,36,
+ 0,114,3,1,0,89,0,121,1,119,0,120,3,89,0,119,
+ 1,41,2,122,60,82,101,116,117,114,110,32,116,114,117,101,
+ 32,105,102,32,116,104,101,32,112,97,116,104,110,97,109,101,
+ 32,114,101,102,101,114,115,32,116,111,32,97,110,32,101,120,
+ 105,115,116,105,110,103,32,100,105,114,101,99,116,111,114,121,
+ 46,70,41,6,114,16,0,0,0,114,17,0,0,0,114,18,
+ 0,0,0,114,19,0,0,0,218,7,83,95,73,83,68,73,
+ 82,114,24,0,0,0,41,2,218,1,115,114,26,0,0,0,
+ 115,2,0,0,0,32,32,114,21,0,0,0,114,9,0,0,
+ 0,114,9,0,0,0,39,0,0,0,115,66,0,0,0,128,
+ 0,240,4,3,5,21,220,13,15,143,87,137,87,144,81,139,
+ 90,136,2,244,6,0,12,16,143,60,137,60,152,2,159,10,
+ 153,10,211,11,35,208,4,35,248,244,5,0,13,20,148,90,
+ 208,11,32,242,0,1,5,21,217,15,20,240,3,1,5,21,
+ 250,114,27,0,0,0,99,1,0,0,0,0,0,0,0,0,
+ 0,0,0,5,0,0,0,3,0,0,0,243,160,0,0,0,
+ 151,0,9,0,116,1,0,0,0,0,0,0,0,0,106,2,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,124,0,171,1,0,0,0,0,0,0,125,1,116,11,
+ 0,0,0,0,0,0,0,0,106,12,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,124,1,106,14,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,171,1,0,0,0,0,0,0,83,0,35,0,116,4,
+ 0,0,0,0,0,0,0,0,116,6,0,0,0,0,0,0,
+ 0,0,116,8,0,0,0,0,0,0,0,0,102,3,36,0,
+ 114,3,1,0,89,0,121,1,119,0,120,3,89,0,119,1,
+ 41,2,122,38,84,101,115,116,32,119,104,101,116,104,101,114,
+ 32,97,32,112,97,116,104,32,105,115,32,97,32,115,121,109,
+ 98,111,108,105,99,32,108,105,110,107,70,41,8,114,16,0,
+ 0,0,218,5,108,115,116,97,116,114,18,0,0,0,114,19,
+ 0,0,0,218,14,65,116,116,114,105,98,117,116,101,69,114,
+ 114,111,114,114,17,0,0,0,218,7,83,95,73,83,76,78,
+ 75,114,24,0,0,0,114,25,0,0,0,115,2,0,0,0,
+ 32,32,114,21,0,0,0,114,11,0,0,0,114,11,0,0,
+ 0,51,0,0,0,115,68,0,0,0,128,0,240,4,3,5,
+ 21,220,13,15,143,88,137,88,144,100,139,94,136,2,244,6,
+ 0,12,16,143,60,137,60,152,2,159,10,153,10,211,11,35,
+ 208,4,35,248,244,5,0,13,20,148,90,164,30,208,11,48,
+ 242,0,1,5,21,217,15,20,240,3,1,5,21,250,115,15,
+ 0,0,0,130,21,54,0,182,20,65,13,3,193,12,1,65,
+ 13,3,99,1,0,0,0,0,0,0,0,0,0,0,0,3,
+ 0,0,0,3,0,0,0,243,64,0,0,0,151,0,116,1,
+ 0,0,0,0,0,0,0,0,106,2,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,124,0,171,1,
+ 0,0,0,0,0,0,106,4,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,83,0,41,1,122,49,
+ 82,101,116,117,114,110,32,116,104,101,32,115,105,122,101,32,
+ 111,102,32,97,32,102,105,108,101,44,32,114,101,112,111,114,
+ 116,101,100,32,98,121,32,111,115,46,115,116,97,116,40,41,
+ 46,41,3,114,16,0,0,0,114,17,0,0,0,218,7,115,
+ 116,95,115,105,122,101,169,1,218,8,102,105,108,101,110,97,
+ 109,101,115,1,0,0,0,32,114,21,0,0,0,114,8,0,
+ 0,0,114,8,0,0,0,60,0,0,0,115,23,0,0,0,
+ 128,0,228,11,13,143,55,137,55,144,56,211,11,28,215,11,
+ 36,209,11,36,208,4,36,243,0,0,0,0,99,1,0,0,
+ 0,0,0,0,0,0,0,0,0,3,0,0,0,3,0,0,
+ 0,243,64,0,0,0,151,0,116,1,0,0,0,0,0,0,
+ 0,0,106,2,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,124,0,171,1,0,0,0,0,0,0,
+ 106,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,83,0,41,1,122,67,82,101,116,117,114,110,
+ 32,116,104,101,32,108,97,115,116,32,109,111,100,105,102,105,
+ 99,97,116,105,111,110,32,116,105,109,101,32,111,102,32,97,
+ 32,102,105,108,101,44,32,114,101,112,111,114,116,101,100,32,
+ 98,121,32,111,115,46,115,116,97,116,40,41,46,41,3,114,
+ 16,0,0,0,114,17,0,0,0,218,8,115,116,95,109,116,
+ 105,109,101,114,37,0,0,0,115,1,0,0,0,32,114,21,
+ 0,0,0,114,7,0,0,0,114,7,0,0,0,65,0,0,
+ 0,243,23,0,0,0,128,0,228,11,13,143,55,137,55,144,
+ 56,211,11,28,215,11,37,209,11,37,208,4,37,114,39,0,
+ 0,0,99,1,0,0,0,0,0,0,0,0,0,0,0,3,
+ 0,0,0,3,0,0,0,243,64,0,0,0,151,0,116,1,
+ 0,0,0,0,0,0,0,0,106,2,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,124,0,171,1,
+ 0,0,0,0,0,0,106,4,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,83,0,41,1,122,61,
+ 82,101,116,117,114,110,32,116,104,101,32,108,97,115,116,32,
+ 97,99,99,101,115,115,32,116,105,109,101,32,111,102,32,97,
+ 32,102,105,108,101,44,32,114,101,112,111,114,116,101,100,32,
+ 98,121,32,111,115,46,115,116,97,116,40,41,46,41,3,114,
+ 16,0,0,0,114,17,0,0,0,218,8,115,116,95,97,116,
+ 105,109,101,114,37,0,0,0,115,1,0,0,0,32,114,21,
+ 0,0,0,114,5,0,0,0,114,5,0,0,0,70,0,0,
+ 0,114,42,0,0,0,114,39,0,0,0,99,1,0,0,0,
+ 0,0,0,0,0,0,0,0,3,0,0,0,3,0,0,0,
+ 243,64,0,0,0,151,0,116,1,0,0,0,0,0,0,0,
+ 0,106,2,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,124,0,171,1,0,0,0,0,0,0,106,
+ 4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,83,0,41,1,122,65,82,101,116,117,114,110,32,
+ 116,104,101,32,109,101,116,97,100,97,116,97,32,99,104,97,
+ 110,103,101,32,116,105,109,101,32,111,102,32,97,32,102,105,
+ 108,101,44,32,114,101,112,111,114,116,101,100,32,98,121,32,
+ 111,115,46,115,116,97,116,40,41,46,41,3,114,16,0,0,
+ 0,114,17,0,0,0,218,8,115,116,95,99,116,105,109,101,
+ 114,37,0,0,0,115,1,0,0,0,32,114,21,0,0,0,
+ 114,6,0,0,0,114,6,0,0,0,75,0,0,0,114,42,
+ 0,0,0,114,39,0,0,0,99,1,0,0,0,0,0,0,
+ 0,0,0,0,0,6,0,0,0,3,0,0,0,243,244,0,
+ 0,0,151,0,124,0,115,1,121,1,116,1,0,0,0,0,
+ 0,0,0,0,124,0,100,2,25,0,0,0,116,2,0,0,
+ 0,0,0,0,0,0,116,4,0,0,0,0,0,0,0,0,
+ 102,2,171,2,0,0,0,0,0,0,115,35,116,5,0,0,
+ 0,0,0,0,0,0,116,7,0,0,0,0,0,0,0,0,
+ 116,8,0,0,0,0,0,0,0,0,106,10,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,0,
+ 171,2,0,0,0,0,0,0,171,1,0,0,0,0,0,0,
+ 125,0,116,13,0,0,0,0,0,0,0,0,124,0,171,1,
+ 0,0,0,0,0,0,125,1,116,15,0,0,0,0,0,0,
+ 0,0,124,0,171,1,0,0,0,0,0,0,125,2,116,17,
+ 0,0,0,0,0,0,0,0,124,1,171,1,0,0,0,0,
+ 0,0,68,0,93,20,0,0,92,2,0,0,125,3,125,4,
+ 124,4,124,2,124,3,25,0,0,0,107,55,0,0,115,1,
+ 140,15,124,1,100,3,124,3,26,0,99,2,1,0,83,0,
+ 4,0,124,1,83,0,41,4,122,71,71,105,118,101,110,32,
+ 97,32,108,105,115,116,32,111,102,32,112,97,116,104,110,97,
+ 109,101,115,44,32,114,101,116,117,114,110,115,32,116,104,101,
+ 32,108,111,110,103,101,115,116,32,99,111,109,109,111,110,32,
+ 108,101,97,100,105,110,103,32,99,111,109,112,111,110,101,110,
+ 116,218,0,114,2,0,0,0,78,41,9,218,10,105,115,105,
+ 110,115,116,97,110,99,101,218,4,108,105,115,116,218,5,116,
+ 117,112,108,101,218,3,109,97,112,114,16,0,0,0,218,6,
+ 102,115,112,97,116,104,218,3,109,105,110,218,3,109,97,120,
+ 218,9,101,110,117,109,101,114,97,116,101,41,5,218,1,109,
+ 218,2,115,49,218,2,115,50,218,1,105,218,1,99,115,5,
+ 0,0,0,32,32,32,32,32,114,21,0,0,0,114,3,0,
+ 0,0,114,3,0,0,0,81,0,0,0,115,118,0,0,0,
+ 128,0,225,11,12,144,82,244,10,0,12,22,144,97,152,1,
+ 145,100,156,84,164,53,152,77,212,11,42,220,12,17,148,35,
+ 148,98,151,105,145,105,160,17,211,18,35,211,12,36,136,1,
+ 220,9,12,136,81,139,22,128,66,220,9,12,136,81,139,22,
+ 128,66,220,16,25,152,34,147,13,242,0,2,5,26,137,4,
+ 136,1,136,49,216,11,12,144,2,144,49,145,5,139,58,216,
+ 19,21,144,98,144,113,144,54,138,77,240,5,2,5,26,240,
+ 6,0,12,14,128,73,114,39,0,0,0,99,2,0,0,0,
+ 0,0,0,0,0,0,0,0,2,0,0,0,3,0,0,0,
+ 243,106,0,0,0,151,0,124,0,106,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,124,1,106,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,107,40,0,0,120,1,114,25,1,0,124,0,106,
+ 2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,124,1,106,2,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,107,40,0,0,83,0,41,
+ 1,122,53,84,101,115,116,32,119,104,101,116,104,101,114,32,
+ 116,119,111,32,115,116,97,116,32,98,117,102,102,101,114,115,
+ 32,114,101,102,101,114,101,110,99,101,32,116,104,101,32,115,
+ 97,109,101,32,102,105,108,101,41,2,218,6,115,116,95,105,
+ 110,111,218,6,115,116,95,100,101,118,41,2,114,58,0,0,
+ 0,114,59,0,0,0,115,2,0,0,0,32,32,114,21,0,
+ 0,0,114,14,0,0,0,114,14,0,0,0,99,0,0,0,
+ 115,44,0,0,0,128,0,224,12,14,143,73,137,73,152,18,
+ 159,25,153,25,209,12,34,242,0,1,13,35,216,12,14,143,
+ 73,137,73,152,18,159,25,153,25,209,12,34,240,3,1,5,
+ 36,114,39,0,0,0,99,2,0,0,0,0,0,0,0,0,
+ 0,0,0,4,0,0,0,3,0,0,0,243,110,0,0,0,
+ 151,0,116,1,0,0,0,0,0,0,0,0,106,2,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 124,0,171,1,0,0,0,0,0,0,125,2,116,1,0,0,
+ 0,0,0,0,0,0,106,2,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,124,1,171,1,0,0,
+ 0,0,0,0,125,3,116,5,0,0,0,0,0,0,0,0,
+ 124,2,124,3,171,2,0,0,0,0,0,0,83,0,41,1,
+ 122,213,84,101,115,116,32,119,104,101,116,104,101,114,32,116,
+ 119,111,32,112,97,116,104,110,97,109,101,115,32,114,101,102,
+ 101,114,101,110,99,101,32,116,104,101,32,115,97,109,101,32,
+ 97,99,116,117,97,108,32,102,105,108,101,32,111,114,32,100,
+ 105,114,101,99,116,111,114,121,10,10,32,32,32,32,84,104,
+ 105,115,32,105,115,32,100,101,116,101,114,109,105,110,101,100,
+ 32,98,121,32,116,104,101,32,100,101,118,105,99,101,32,110,
+ 117,109,98,101,114,32,97,110,100,32,105,45,110,111,100,101,
+ 32,110,117,109,98,101,114,32,97,110,100,10,32,32,32,32,
+ 114,97,105,115,101,115,32,97,110,32,101,120,99,101,112,116,
+ 105,111,110,32,105,102,32,97,110,32,111,115,46,115,116,97,
+ 116,40,41,32,99,97,108,108,32,111,110,32,101,105,116,104,
+ 101,114,32,112,97,116,104,110,97,109,101,32,102,97,105,108,
+ 115,46,10,32,32,32,32,41,3,114,16,0,0,0,114,17,
+ 0,0,0,114,14,0,0,0,41,4,218,2,102,49,218,2,
+ 102,50,114,58,0,0,0,114,59,0,0,0,115,4,0,0,
+ 0,32,32,32,32,114,21,0,0,0,114,12,0,0,0,114,
+ 12,0,0,0,106,0,0,0,115,43,0,0,0,128,0,244,
+ 12,0,10,12,143,23,137,23,144,18,139,27,128,66,220,9,
+ 11,143,23,137,23,144,18,139,27,128,66,220,11,19,144,66,
+ 152,2,211,11,27,208,4,27,114,39,0,0,0,99,2,0,
+ 0,0,0,0,0,0,0,0,0,0,4,0,0,0,3,0,
+ 0,0,243,110,0,0,0,151,0,116,1,0,0,0,0,0,
+ 0,0,0,106,2,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,124,0,171,1,0,0,0,0,0,
+ 0,125,2,116,1,0,0,0,0,0,0,0,0,106,2,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,124,1,171,1,0,0,0,0,0,0,125,3,116,5,0,
+ 0,0,0,0,0,0,0,124,2,124,3,171,2,0,0,0,
+ 0,0,0,83,0,41,1,122,58,84,101,115,116,32,119,104,
+ 101,116,104,101,114,32,116,119,111,32,111,112,101,110,32,102,
+ 105,108,101,32,111,98,106,101,99,116,115,32,114,101,102,101,
+ 114,101,110,99,101,32,116,104,101,32,115,97,109,101,32,102,
+ 105,108,101,41,3,114,16,0,0,0,218,5,102,115,116,97,
+ 116,114,14,0,0,0,41,4,218,3,102,112,49,218,3,102,
+ 112,50,114,58,0,0,0,114,59,0,0,0,115,4,0,0,
+ 0,32,32,32,32,114,21,0,0,0,114,13,0,0,0,114,
+ 13,0,0,0,119,0,0,0,115,41,0,0,0,128,0,228,
+ 9,11,143,24,137,24,144,35,139,29,128,66,220,9,11,143,
+ 24,137,24,144,35,139,29,128,66,220,11,19,144,66,152,2,
+ 211,11,27,208,4,27,114,39,0,0,0,99,4,0,0,0,
+ 0,0,0,0,0,0,0,0,4,0,0,0,3,0,0,0,
+ 243,240,0,0,0,151,0,124,0,106,1,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,124,1,171,
+ 1,0,0,0,0,0,0,125,4,124,2,114,29,124,0,106,
+ 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,124,2,171,1,0,0,0,0,0,0,125,5,116,
+ 3,0,0,0,0,0,0,0,0,124,4,124,5,171,2,0,
+ 0,0,0,0,0,125,4,124,0,106,1,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,124,3,171,
+ 1,0,0,0,0,0,0,125,6,124,6,124,4,107,68,0,
+ 0,114,42,124,4,100,1,122,0,0,0,125,7,124,7,124,
+ 6,107,2,0,0,114,32,124,0,124,7,124,7,100,1,122,
+ 0,0,0,26,0,124,3,107,55,0,0,114,10,124,0,100,
+ 2,124,6,26,0,124,0,124,6,100,2,26,0,102,2,83,
+ 0,124,7,100,1,122,13,0,0,125,7,124,7,124,6,107,
+ 2,0,0,114,1,140,32,124,0,124,0,100,2,100,3,26,
+ 0,102,2,83,0,41,4,122,164,83,112,108,105,116,32,116,
+ 104,101,32,101,120,116,101,110,115,105,111,110,32,102,114,111,
+ 109,32,97,32,112,97,116,104,110,97,109,101,46,10,10,32,
+ 32,32,32,69,120,116,101,110,115,105,111,110,32,105,115,32,
+ 101,118,101,114,121,116,104,105,110,103,32,102,114,111,109,32,
+ 116,104,101,32,108,97,115,116,32,100,111,116,32,116,111,32,
+ 116,104,101,32,101,110,100,44,32,105,103,110,111,114,105,110,
+ 103,10,32,32,32,32,108,101,97,100,105,110,103,32,100,111,
+ 116,115,46,32,32,82,101,116,117,114,110,115,32,34,40,114,
+ 111,111,116,44,32,101,120,116,41,34,59,32,101,120,116,32,
+ 109,97,121,32,98,101,32,101,109,112,116,121,46,233,1,0,
+ 0,0,78,114,2,0,0,0,41,2,218,5,114,102,105,110,
+ 100,114,55,0,0,0,41,8,218,1,112,218,3,115,101,112,
+ 218,6,97,108,116,115,101,112,218,6,101,120,116,115,101,112,
+ 218,8,115,101,112,73,110,100,101,120,218,11,97,108,116,115,
+ 101,112,73,110,100,101,120,218,8,100,111,116,73,110,100,101,
+ 120,218,13,102,105,108,101,110,97,109,101,73,110,100,101,120,
+ 115,8,0,0,0,32,32,32,32,32,32,32,32,114,21,0,
+ 0,0,218,9,95,115,112,108,105,116,101,120,116,114,83,0,
+ 0,0,133,0,0,0,115,162,0,0,0,128,0,240,14,0,
+ 16,17,143,119,137,119,144,115,139,124,128,72,217,7,13,216,
+ 22,23,151,103,145,103,152,102,147,111,136,11,220,19,22,144,
+ 120,160,27,211,19,45,136,8,224,15,16,143,119,137,119,144,
+ 118,139,127,128,72,216,7,15,144,40,210,7,26,224,24,32,
+ 160,49,153,12,136,13,216,14,27,152,104,210,14,38,216,15,
+ 16,144,29,152,125,168,81,153,127,208,15,47,176,54,210,15,
+ 57,216,23,24,152,25,152,40,144,124,160,81,160,120,160,121,
+ 160,92,208,23,49,208,16,49,216,12,25,152,81,209,12,30,
+ 136,77,240,7,0,15,28,152,104,211,14,38,240,10,0,12,
+ 13,136,97,144,2,144,17,136,101,136,56,128,79,114,39,0,
+ 0,0,99,1,0,0,0,0,0,0,0,0,0,0,0,6,
+ 0,0,0,7,0,0,0,243,208,0,0,0,151,0,100,1,
+ 120,1,125,2,125,3,124,1,68,0,93,76,0,0,125,4,
+ 116,1,0,0,0,0,0,0,0,0,124,4,116,2,0,0,
+ 0,0,0,0,0,0,171,2,0,0,0,0,0,0,114,3,
+ 100,2,125,2,140,22,116,1,0,0,0,0,0,0,0,0,
+ 124,4,116,4,0,0,0,0,0,0,0,0,171,2,0,0,
+ 0,0,0,0,114,3,100,2,125,3,140,41,116,7,0,0,
+ 0,0,0,0,0,0,124,0,155,0,100,3,124,4,106,8,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,106,10,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,155,2,157,3,171,1,0,0,0,0,
+ 0,0,100,0,130,2,4,0,124,2,114,15,124,3,114,12,
+ 116,7,0,0,0,0,0,0,0,0,100,4,171,1,0,0,
+ 0,0,0,0,100,0,130,2,121,0,121,0,41,5,78,70,
+ 84,122,59,40,41,32,97,114,103,117,109,101,110,116,32,109,
+ 117,115,116,32,98,101,32,115,116,114,44,32,98,121,116,101,
+ 115,44,32,111,114,32,111,115,46,80,97,116,104,76,105,107,
+ 101,32,111,98,106,101,99,116,44,32,110,111,116,32,122,46,
+ 67,97,110,39,116,32,109,105,120,32,115,116,114,105,110,103,
+ 115,32,97,110,100,32,98,121,116,101,115,32,105,110,32,112,
+ 97,116,104,32,99,111,109,112,111,110,101,110,116,115,41,6,
+ 114,49,0,0,0,218,3,115,116,114,218,5,98,121,116,101,
+ 115,218,9,84,121,112,101,69,114,114,111,114,218,9,95,95,
+ 99,108,97,115,115,95,95,218,8,95,95,110,97,109,101,95,
+ 95,41,5,218,8,102,117,110,99,110,97,109,101,218,4,97,
+ 114,103,115,218,6,104,97,115,115,116,114,218,8,104,97,115,
+ 98,121,116,101,115,114,30,0,0,0,115,5,0,0,0,32,
+ 32,32,32,32,114,21,0,0,0,218,16,95,99,104,101,99,
+ 107,95,97,114,103,95,116,121,112,101,115,114,94,0,0,0,
+ 156,0,0,0,115,136,0,0,0,128,0,216,24,29,208,4,
+ 29,128,70,136,88,216,13,17,242,0,7,5,91,1,136,1,
+ 220,11,21,144,97,156,19,212,11,29,216,21,25,137,70,220,
+ 13,23,152,1,156,53,212,13,33,216,23,27,137,72,228,18,
+ 27,152,120,152,106,240,0,1,41,55,216,55,56,183,123,177,
+ 123,215,55,75,209,55,75,208,54,78,240,3,1,29,80,1,
+ 243,0,1,19,81,1,216,86,90,240,3,1,13,91,1,240,
+ 13,7,5,91,1,241,16,0,8,14,145,40,220,14,23,208,
+ 24,72,211,14,73,200,116,208,8,83,240,3,0,19,27,128,
+ 118,114,39,0,0,0,41,18,218,7,95,95,100,111,99,95,
+ 95,114,16,0,0,0,114,17,0,0,0,218,7,95,95,97,
+ 108,108,95,95,114,4,0,0,0,114,10,0,0,0,114,9,
+ 0,0,0,114,11,0,0,0,114,8,0,0,0,114,7,0,
+ 0,0,114,5,0,0,0,114,6,0,0,0,114,3,0,0,
+ 0,114,14,0,0,0,114,12,0,0,0,114,13,0,0,0,
+ 114,83,0,0,0,114,94,0,0,0,169,0,114,39,0,0,
+ 0,114,21,0,0,0,250,8,60,109,111,100,117,108,101,62,
+ 114,98,0,0,0,1,0,0,0,115,96,0,0,0,240,3,
+ 1,1,1,241,2,4,1,4,243,10,0,1,10,219,0,11,
+ 242,4,2,11,23,128,7,242,14,6,1,16,242,22,6,1,
+ 36,242,24,6,1,36,242,24,6,1,36,242,18,2,1,37,
+ 242,10,2,1,38,242,10,2,1,38,242,10,2,1,38,242,
+ 12,14,1,14,242,36,3,1,36,242,14,8,1,28,242,26,
+ 4,1,28,242,28,21,1,20,243,46,11,1,84,1,114,39,
+ 0,0,0,
+};
diff --git a/contrib/tools/python3/Python/frozen_modules/getpath.h b/contrib/tools/python3/Python/frozen_modules/getpath.h
new file mode 100644
index 00000000000..1bc2a38dc05
--- /dev/null
+++ b/contrib/tools/python3/Python/frozen_modules/getpath.h
@@ -0,0 +1,747 @@
+/* Auto-generated by Programs/_freeze_module.c */
+const unsigned char _Py_M__getpath[] = {
+ 99,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,
+ 0,0,0,0,0,243,202,19,0,0,151,0,101,0,106,3,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,100,0,171,1,0,0,0,0,0,0,120,1,115,2,
+ 1,0,101,2,90,3,101,4,100,1,107,40,0,0,115,5,
+ 101,4,100,2,107,40,0,0,114,60,100,3,90,5,100,4,
+ 90,6,100,5,101,7,155,0,157,2,90,8,101,3,155,0,
+ 100,6,101,7,155,0,100,7,101,9,155,0,157,5,90,10,
+ 101,10,155,0,100,8,157,2,101,10,155,0,100,9,157,2,
+ 103,2,90,11,101,3,155,0,100,6,101,7,155,0,100,7,
+ 101,9,155,0,100,10,157,6,90,12,100,11,103,1,90,13,
+ 100,12,90,14,101,3,155,0,100,6,101,7,155,0,101,9,
+ 155,0,100,13,157,5,90,15,100,14,90,16,100,15,90,17,
+ 110,58,101,4,100,16,107,40,0,0,114,53,100,3,90,5,
+ 101,18,155,0,100,17,157,2,90,6,100,5,90,8,100,18,
+ 90,10,101,10,155,0,100,19,157,2,101,10,155,0,100,20,
+ 157,2,103,2,90,11,101,3,155,0,90,12,100,21,103,1,
+ 90,13,100,12,90,14,100,5,101,7,155,0,101,9,155,0,
+ 101,19,120,1,115,2,1,0,100,22,155,0,100,13,157,5,
+ 90,15,100,23,101,20,155,0,100,24,157,3,90,21,100,25,
+ 90,16,100,26,90,17,101,22,100,27,156,1,100,28,132,2,
+ 90,23,101,0,106,3,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,100,29,171,1,0,0,0,0,
+ 0,0,90,24,101,0,106,3,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,100,30,171,1,0,0,
+ 0,0,0,0,90,25,101,0,106,3,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,100,31,171,1,
+ 0,0,0,0,0,0,90,26,101,0,106,3,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,32,
+ 171,1,0,0,0,0,0,0,90,27,101,0,106,3,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 100,33,171,1,0,0,0,0,0,0,90,28,101,0,106,3,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,100,34,171,1,0,0,0,0,0,0,90,29,101,0,
+ 106,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,100,35,171,1,0,0,0,0,0,0,90,30,
+ 101,0,106,3,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,100,36,171,1,0,0,0,0,0,0,
+ 90,31,101,0,100,37,25,0,0,0,90,32,101,0,106,3,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,100,38,100,39,171,2,0,0,0,0,0,0,90,33,
+ 101,0,106,3,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,100,40,171,1,0,0,0,0,0,0,
+ 90,34,101,0,106,3,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,100,41,171,1,0,0,0,0,
+ 0,0,90,35,100,42,90,36,100,42,90,37,100,42,90,38,
+ 2,0,101,39,101,24,171,1,0,0,0,0,0,0,90,40,
+ 101,24,115,22,9,0,101,0,106,3,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,100,43,103,0,
+ 171,2,0,0,0,0,0,0,100,44,25,0,0,0,90,24,
+ 101,24,115,2,101,8,90,24,101,42,114,25,2,0,101,43,
+ 101,24,101,42,171,2,0,0,0,0,0,0,115,16,2,0,
+ 101,44,101,24,101,42,122,0,0,0,171,1,0,0,0,0,
+ 0,0,114,5,101,24,101,42,122,0,0,0,90,24,101,45,
+ 114,4,101,26,115,2,101,46,90,26,101,26,115,12,101,17,
+ 101,24,118,0,114,8,2,0,101,47,101,24,171,1,0,0,
+ 0,0,0,0,90,26,101,26,115,3,101,46,90,26,110,7,
+ 101,4,100,2,107,40,0,0,114,2,101,26,90,46,101,26,
+ 115,47,101,24,114,45,101,48,114,43,101,48,106,99,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 101,16,171,1,0,0,0,0,0,0,68,0,93,23,0,0,
+ 90,50,2,0,101,51,101,50,101,24,171,2,0,0,0,0,
+ 0,0,90,50,2,0,101,44,101,50,171,1,0,0,0,0,
+ 0,0,115,1,140,21,101,50,90,26,1,0,110,1,4,0,
+ 101,26,115,12,100,22,90,26,2,0,101,47,100,7,171,1,
+ 0,0,0,0,0,0,90,52,101,52,90,36,101,53,115,2,
+ 101,54,114,44,101,4,100,2,107,40,0,0,114,19,101,55,
+ 114,17,2,0,101,56,101,57,171,1,0,0,0,0,0,0,
+ 155,0,100,45,101,7,155,0,100,7,101,9,155,0,157,5,
+ 90,27,110,2,101,26,90,27,101,46,115,2,101,27,90,46,
+ 101,53,120,1,115,2,1,0,101,54,90,26,2,0,101,56,
+ 101,26,171,1,0,0,0,0,0,0,90,52,100,46,90,58,
+ 101,25,114,3,100,47,90,58,110,8,101,33,114,6,101,59,
+ 114,4,101,45,115,2,101,59,90,25,100,42,90,60,101,25,
+ 115,232,101,45,115,230,9,0,101,52,120,1,115,8,1,0,
+ 2,0,101,56,101,26,171,1,0,0,0,0,0,0,90,61,
+ 2,0,101,56,101,61,171,1,0,0,0,0,0,0,90,60,
+ 9,0,2,0,101,62,2,0,101,51,101,60,101,14,171,2,
+ 0,0,0,0,0,0,171,1,0,0,0,0,0,0,90,63,
+ 101,63,68,0,93,186,0,0,90,66,101,66,106,135,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 100,48,171,1,0,0,0,0,0,0,92,3,0,0,90,68,
+ 90,69,90,70,101,69,115,1,140,27,101,68,106,143,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 171,0,0,0,0,0,0,0,106,145,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,171,0,0,0,
+ 0,0,0,0,100,30,107,40,0,0,115,1,140,61,101,70,
+ 106,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,171,0,0,0,0,0,0,0,120,1,90,52,
+ 90,36,101,27,115,105,9,0,2,0,101,73,101,26,171,1,
+ 0,0,0,0,0,0,90,27,101,27,101,26,107,40,0,0,
+ 114,2,100,22,90,27,101,27,115,87,2,0,101,51,101,52,
+ 2,0,101,75,101,26,171,1,0,0,0,0,0,0,171,2,
+ 0,0,0,0,0,0,90,27,101,4,100,16,107,55,0,0,
+ 114,67,2,0,101,22,101,27,171,1,0,0,0,0,0,0,
+ 115,59,2,0,101,75,101,26,171,1,0,0,0,0,0,0,
+ 90,76,101,8,100,5,101,7,155,0,100,7,101,9,155,0,
+ 157,4,102,2,68,0,93,38,0,0,90,77,101,77,101,42,
+ 114,2,101,42,110,1,100,22,122,13,0,0,90,77,101,76,
+ 101,77,107,40,0,0,114,1,140,18,2,0,101,51,101,52,
+ 101,77,171,2,0,0,0,0,0,0,90,77,2,0,101,22,
+ 101,77,171,1,0,0,0,0,0,0,115,1,140,36,101,77,
+ 90,27,1,0,110,1,4,0,1,0,110,3,4,0,100,42,
+ 90,60,101,27,115,10,101,26,120,1,115,6,1,0,101,46,
+ 120,1,115,2,1,0,100,22,90,27,101,46,115,2,101,27,
+ 90,46,9,0,2,0,101,73,101,46,171,1,0,0,0,0,
+ 0,0,90,46,101,52,115,40,101,4,100,2,107,40,0,0,
+ 114,35,101,57,114,33,2,0,101,56,101,57,171,1,0,0,
+ 0,0,0,0,90,80,2,0,101,81,100,50,132,0,101,11,
+ 68,0,171,0,0,0,0,0,0,0,171,1,0,0,0,0,
+ 0,0,114,10,2,0,101,73,101,80,171,1,0,0,0,0,
+ 0,0,90,52,101,52,90,36,101,52,115,10,2,0,101,56,
+ 101,46,171,1,0,0,0,0,0,0,120,1,90,52,90,36,
+ 101,36,115,8,2,0,101,56,101,46,171,1,0,0,0,0,
+ 0,0,90,36,100,42,90,82,100,42,90,83,101,45,115,89,
+ 101,58,115,87,101,57,101,26,101,46,102,3,68,0,93,71,
+ 0,0,90,50,101,50,115,1,140,6,101,4,100,16,107,40,
+ 0,0,114,38,2,0,101,43,101,50,100,51,171,2,0,0,
+ 0,0,0,0,115,9,2,0,101,43,101,50,100,52,171,2,
+ 0,0,0,0,0,0,114,20,101,50,106,169,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,7,
+ 171,1,0,0,0,0,0,0,100,44,25,0,0,0,90,50,
+ 101,50,100,53,122,13,0,0,90,50,9,0,2,0,101,62,
+ 101,50,171,1,0,0,0,0,0,0,90,82,2,0,101,56,
+ 101,50,171,1,0,0,0,0,0,0,90,83,1,0,110,1,
+ 4,0,101,83,114,6,100,44,90,33,101,83,90,25,103,0,
+ 90,34,100,42,90,85,101,58,115,4,101,36,114,2,101,45,
+ 114,21,101,0,106,3,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,100,54,100,44,171,2,0,0,
+ 0,0,0,0,100,44,107,68,0,0,114,88,9,0,2,0,
+ 101,51,101,36,2,0,101,62,2,0,101,51,101,36,101,5,
+ 171,2,0,0,0,0,0,0,171,1,0,0,0,0,0,0,
+ 100,44,25,0,0,0,171,2,0,0,0,0,0,0,90,38,
+ 2,0,101,51,101,36,101,18,171,2,0,0,0,0,0,0,
+ 90,85,101,85,114,51,101,4,100,16,107,40,0,0,114,3,
+ 101,85,90,86,110,9,2,0,101,23,101,85,103,1,101,13,
+ 162,1,173,6,142,0,90,86,101,86,114,10,2,0,101,51,
+ 101,86,100,18,171,2,0,0,0,0,0,0,90,37,110,9,
+ 2,0,101,51,101,85,100,18,171,2,0,0,0,0,0,0,
+ 90,37,101,28,115,2,101,86,90,28,101,29,115,2,101,85,
+ 90,29,100,39,101,0,100,54,60,0,0,0,101,45,114,6,
+ 100,22,120,1,90,28,90,29,144,1,110,70,101,25,114,27,
+ 101,25,106,135,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,101,16,171,1,0,0,0,0,0,0,
+ 92,3,0,0,90,28,90,87,90,29,101,87,115,2,101,28,
+ 90,29,100,42,90,37,101,57,114,76,101,28,115,74,2,0,
+ 101,56,101,57,171,1,0,0,0,0,0,0,90,80,101,15,
+ 114,32,101,4,100,16,107,40,0,0,114,18,2,0,101,22,
+ 2,0,101,51,101,80,101,15,171,2,0,0,0,0,0,0,
+ 171,1,0,0,0,0,0,0,114,12,101,80,90,28,110,9,
+ 2,0,101,23,101,80,101,15,171,2,0,0,0,0,0,0,
+ 90,28,101,10,114,30,101,11,114,28,101,28,115,26,2,0,
+ 101,81,100,55,132,0,101,11,68,0,171,0,0,0,0,0,
+ 0,0,171,1,0,0,0,0,0,0,114,11,101,80,90,28,
+ 2,0,101,51,101,28,101,10,171,2,0,0,0,0,0,0,
+ 90,37,101,15,114,57,101,52,114,55,101,28,115,53,101,4,
+ 100,16,107,40,0,0,114,18,2,0,101,22,2,0,101,51,
+ 101,52,101,15,171,2,0,0,0,0,0,0,171,1,0,0,
+ 0,0,0,0,114,12,101,52,90,28,110,9,2,0,101,23,
+ 101,52,101,15,171,2,0,0,0,0,0,0,90,28,101,28,
+ 114,19,2,0,101,51,101,28,101,10,171,2,0,0,0,0,
+ 0,0,90,37,2,0,101,88,101,37,171,1,0,0,0,0,
+ 0,0,115,2,100,42,90,37,101,10,114,28,101,11,114,26,
+ 101,52,114,24,101,28,115,22,2,0,101,23,101,52,103,1,
+ 101,11,162,1,173,6,142,0,90,28,101,28,114,11,101,37,
+ 115,9,2,0,101,51,101,28,101,10,171,2,0,0,0,0,
+ 0,0,90,37,101,89,114,27,101,28,115,25,101,89,90,28,
+ 2,0,101,81,100,56,132,0,101,11,68,0,171,0,0,0,
+ 0,0,0,0,171,1,0,0,0,0,0,0,115,8,2,0,
+ 101,79,100,57,171,1,0,0,0,0,0,0,1,0,101,28,
+ 115,16,2,0,101,47,100,22,171,1,0,0,0,0,0,0,
+ 90,28,2,0,101,79,100,57,171,1,0,0,0,0,0,0,
+ 1,0,101,12,114,65,101,29,115,63,101,4,100,16,107,40,
+ 0,0,114,2,101,28,90,29,101,29,115,13,101,52,114,11,
+ 2,0,101,23,101,52,101,12,101,88,172,27,171,3,0,0,
+ 0,0,0,0,90,29,101,29,115,4,101,90,114,2,101,90,
+ 90,29,101,29,114,15,2,0,101,88,2,0,101,51,101,29,
+ 101,12,171,2,0,0,0,0,0,0,171,1,0,0,0,0,
+ 0,0,115,18,101,4,100,16,107,40,0,0,114,5,101,38,
+ 115,11,101,29,90,38,110,8,2,0,101,79,100,58,171,1,
+ 0,0,0,0,0,0,1,0,101,29,115,2,101,28,90,29,
+ 101,28,114,2,101,29,115,8,2,0,101,79,100,59,171,1,
+ 0,0,0,0,0,0,1,0,101,45,114,27,101,45,106,99,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,101,16,171,1,0,0,0,0,0,0,101,0,100,40,
+ 60,0,0,0,100,39,101,0,100,41,60,0,0,0,144,1,
+ 110,223,101,35,144,1,115,220,103,0,90,34,101,33,114,47,
+ 101,32,114,45,101,32,106,99,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,101,16,171,1,0,0,
+ 0,0,0,0,68,0,93,25,0,0,90,50,101,34,106,183,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,2,0,101,47,101,50,171,1,0,0,0,0,0,0,
+ 171,1,0,0,0,0,0,0,1,0,140,27,4,0,101,4,
+ 100,16,107,40,0,0,114,38,101,57,114,9,2,0,101,56,
+ 101,57,171,1,0,0,0,0,0,0,90,80,110,2,101,52,
+ 90,80,101,34,106,183,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,2,0,101,51,101,80,101,15,
+ 171,2,0,0,0,0,0,0,171,1,0,0,0,0,0,0,
+ 1,0,110,51,101,85,114,25,101,34,106,183,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,
+ 101,51,101,89,101,15,171,2,0,0,0,0,0,0,171,1,
+ 0,0,0,0,0,0,1,0,110,24,101,34,106,183,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 2,0,101,51,101,28,101,15,171,2,0,0,0,0,0,0,
+ 171,1,0,0,0,0,0,0,1,0,101,4,100,16,107,40,
+ 0,0,114,137,101,33,114,135,101,92,114,133,101,92,106,186,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,101,92,106,188,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,102,2,68,0,93,106,0,0,
+ 90,95,9,0,101,92,106,193,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,101,95,101,21,171,2,
+ 0,0,0,0,0,0,90,68,9,0,100,44,90,97,9,0,
+ 9,0,101,92,106,197,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,101,68,101,92,106,199,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 101,68,101,97,171,2,0,0,0,0,0,0,171,2,0,0,
+ 0,0,0,0,90,100,2,0,101,101,101,100,101,102,171,2,
+ 0,0,0,0,0,0,114,32,101,34,106,207,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,100,
+ 106,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,101,16,171,1,0,0,0,0,0,0,171,1,
+ 0,0,0,0,0,0,1,0,101,97,100,39,122,13,0,0,
+ 90,97,140,82,4,0,101,105,114,46,101,105,106,99,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 101,16,171,1,0,0,0,0,0,0,68,0,93,26,0,0,
+ 90,50,101,34,106,183,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,2,0,101,51,101,28,101,50,
+ 171,2,0,0,0,0,0,0,171,1,0,0,0,0,0,0,
+ 1,0,140,28,4,0,101,37,115,11,101,28,114,9,2,0,
+ 101,51,101,28,101,10,171,2,0,0,0,0,0,0,90,37,
+ 101,38,115,11,101,29,114,9,2,0,101,51,101,29,101,12,
+ 171,2,0,0,0,0,0,0,90,38,101,4,100,16,107,40,
+ 0,0,114,62,101,38,114,17,101,34,106,183,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,38,
+ 171,1,0,0,0,0,0,0,1,0,101,37,114,17,101,34,
+ 106,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,101,37,171,1,0,0,0,0,0,0,1,0,
+ 101,52,114,60,101,52,101,34,118,1,114,56,101,34,106,183,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,101,52,171,1,0,0,0,0,0,0,1,0,110,38,
+ 101,37,114,17,101,34,106,183,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,101,37,171,1,0,0,
+ 0,0,0,0,1,0,101,38,114,17,101,34,106,183,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 101,38,171,1,0,0,0,0,0,0,1,0,101,34,101,0,
+ 100,40,60,0,0,0,100,39,101,0,100,41,60,0,0,0,
+ 101,4,100,16,107,55,0,0,114,48,101,85,114,46,101,0,
+ 106,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,100,33,171,1,0,0,0,0,0,0,120,1,
+ 115,2,1,0,101,89,90,28,101,0,106,3,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,34,
+ 171,1,0,0,0,0,0,0,120,1,115,6,1,0,101,90,
+ 120,1,115,2,1,0,101,28,90,29,101,82,114,137,100,39,
+ 101,0,100,60,60,0,0,0,100,44,101,0,100,38,60,0,
+ 0,0,100,44,101,0,100,61,60,0,0,0,100,39,101,0,
+ 100,62,60,0,0,0,103,0,90,34,101,82,68,0,93,100,
+ 0,0,90,66,101,66,106,135,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,100,63,171,1,0,0,
+ 0,0,0,0,100,44,25,0,0,0,106,143,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,0,
+ 0,0,0,0,0,0,90,66,101,66,115,1,140,40,101,66,
+ 100,64,107,40,0,0,114,6,100,39,101,0,100,61,60,0,
+ 0,0,140,51,101,66,106,213,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,100,65,171,1,0,0,
+ 0,0,0,0,114,9,2,0,101,79,100,66,171,1,0,0,
+ 0,0,0,0,1,0,140,77,101,34,106,183,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,
+ 101,51,101,83,101,66,171,2,0,0,0,0,0,0,171,1,
+ 0,0,0,0,0,0,1,0,140,102,4,0,101,34,101,0,
+ 100,40,60,0,0,0,100,39,101,0,100,41,60,0,0,0,
+ 101,24,101,0,100,29,60,0,0,0,101,25,101,0,100,30,
+ 60,0,0,0,101,26,101,0,100,31,60,0,0,0,101,27,
+ 101,0,100,32,60,0,0,0,101,28,101,0,100,33,60,0,
+ 0,0,101,29,101,0,100,34,60,0,0,0,101,30,120,1,
+ 115,2,1,0,101,28,101,0,100,35,60,0,0,0,101,31,
+ 120,1,115,2,1,0,101,29,101,0,100,36,60,0,0,0,
+ 101,3,101,0,100,0,60,0,0,0,101,37,120,1,115,2,
+ 1,0,100,22,101,0,100,67,60,0,0,0,101,38,120,1,
+ 115,2,1,0,100,22,101,0,100,68,60,0,0,0,121,42,
+ 35,0,101,41,36,0,114,4,1,0,89,0,144,7,140,48,
+ 119,0,120,3,89,0,119,1,35,0,101,64,101,65,102,2,
+ 36,0,114,21,1,0,2,0,101,62,2,0,101,51,101,61,
+ 101,14,171,2,0,0,0,0,0,0,171,1,0,0,0,0,
+ 0,0,90,63,101,61,90,60,89,0,144,6,140,103,119,0,
+ 120,3,89,0,119,1,35,0,101,64,101,65,102,2,36,0,
+ 114,8,1,0,100,42,90,60,103,0,90,63,89,0,144,6,
+ 140,121,119,0,120,3,89,0,119,1,35,0,101,74,36,0,
+ 114,4,1,0,89,0,144,6,140,34,119,0,120,3,89,0,
+ 119,1,35,0,101,74,36,0,114,30,90,78,2,0,101,22,
+ 101,46,171,1,0,0,0,0,0,0,114,11,2,0,101,79,
+ 100,49,101,27,155,0,157,2,171,1,0,0,0,0,0,0,
+ 1,0,89,0,100,42,90,78,91,78,144,5,140,205,100,42,
+ 90,78,91,78,119,1,119,0,120,3,89,0,119,1,35,0,
+ 101,74,36,0,114,4,1,0,89,0,144,5,140,144,119,0,
+ 120,3,89,0,119,1,35,0,101,41,36,0,114,15,1,0,
+ 101,36,90,38,2,0,101,51,101,36,101,18,171,2,0,0,
+ 0,0,0,0,90,85,89,0,144,5,140,21,101,64,101,65,
+ 102,2,36,0,114,35,1,0,2,0,101,22,2,0,101,51,
+ 101,36,101,6,171,2,0,0,0,0,0,0,171,1,0,0,
+ 0,0,0,0,114,16,2,0,101,51,101,36,101,18,171,2,
+ 0,0,0,0,0,0,90,85,101,4,100,16,107,40,0,0,
+ 114,2,101,36,90,38,89,0,144,5,140,61,119,0,120,3,
+ 89,0,119,1,35,0,101,74,36,0,114,3,1,0,89,0,
+ 110,4,119,0,120,3,89,0,119,1,101,25,115,61,101,37,
+ 115,59,101,92,106,197,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,101,68,100,42,171,2,0,0,
+ 0,0,0,0,90,100,2,0,101,101,101,100,101,102,171,2,
+ 0,0,0,0,0,0,114,32,101,34,106,207,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,100,
+ 106,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,101,16,171,1,0,0,0,0,0,0,171,1,
+ 0,0,0,0,0,0,1,0,101,92,106,209,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,68,
+ 171,1,0,0,0,0,0,0,1,0,110,22,35,0,101,92,
+ 106,209,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,101,68,171,1,0,0,0,0,0,0,1,0,
+ 119,0,120,3,89,0,119,1,144,3,140,96,35,0,101,74,
+ 36,0,114,4,1,0,89,0,144,3,140,104,119,0,120,3,
+ 89,0,119,1,41,69,218,10,112,108,97,116,108,105,98,100,
+ 105,114,218,5,112,111,115,105,120,218,6,100,97,114,119,105,
+ 110,122,14,112,121,98,117,105,108,100,100,105,114,46,116,120,
+ 116,122,19,77,111,100,117,108,101,115,47,83,101,116,117,112,
+ 46,108,111,99,97,108,218,6,112,121,116,104,111,110,122,7,
+ 47,112,121,116,104,111,110,250,1,46,122,6,47,111,115,46,
+ 112,121,122,7,47,111,115,46,112,121,99,122,12,47,108,105,
+ 98,45,100,121,110,108,111,97,100,122,9,76,105,98,47,111,
+ 115,46,112,121,122,10,112,121,118,101,110,118,46,99,102,103,
+ 122,4,46,122,105,112,250,1,58,250,1,47,218,2,110,116,
+ 122,20,92,77,111,100,117,108,101,115,92,83,101,116,117,112,
+ 46,108,111,99,97,108,218,3,76,105,98,122,6,92,111,115,
+ 46,112,121,122,7,92,111,115,46,112,121,99,122,9,76,105,
+ 98,92,111,115,46,112,121,218,0,122,27,83,79,70,84,87,
+ 65,82,69,92,80,121,116,104,111,110,92,80,121,116,104,111,
+ 110,67,111,114,101,92,122,11,92,80,121,116,104,111,110,80,
+ 97,116,104,250,1,59,250,1,92,41,1,218,4,116,101,115,
+ 116,99,1,0,0,0,0,0,0,0,1,0,0,0,4,0,
+ 0,0,7,0,0,0,243,88,0,0,0,135,0,135,1,151,
+ 0,137,0,114,38,116,1,0,0,0,0,0,0,0,0,136,
+ 0,136,1,102,2,100,1,132,8,124,2,68,0,171,0,0,
+ 0,0,0,0,0,171,1,0,0,0,0,0,0,114,2,137,
+ 0,83,0,116,3,0,0,0,0,0,0,0,0,137,0,171,
+ 1,0,0,0,0,0,0,138,0,137,0,114,1,140,37,121,
+ 0,121,0,41,2,78,99,1,0,0,0,0,0,0,0,0,
+ 0,0,0,7,0,0,0,51,0,0,0,243,66,0,0,0,
+ 149,2,75,0,1,0,151,0,124,0,93,22,0,0,125,1,
+ 2,0,137,3,116,1,0,0,0,0,0,0,0,0,137,2,
+ 124,1,171,2,0,0,0,0,0,0,171,1,0,0,0,0,
+ 0,0,150,1,151,1,1,0,140,24,4,0,121,0,173,3,
+ 119,1,169,1,78,41,1,218,8,106,111,105,110,112,97,116,
+ 104,41,4,218,2,46,48,218,1,102,218,6,112,114,101,102,
+ 105,120,114,13,0,0,0,115,4,0,0,0,32,32,128,128,
+ 250,16,60,102,114,111,122,101,110,32,103,101,116,112,97,116,
+ 104,62,250,9,60,103,101,110,101,120,112,114,62,122,28,115,
+ 101,97,114,99,104,95,117,112,46,60,108,111,99,97,108,115,
+ 62,46,60,103,101,110,101,120,112,114,62,210,0,0,0,115,
+ 29,0,0,0,248,232,0,248,128,0,210,14,60,168,81,137,
+ 116,148,72,152,86,160,81,211,20,39,215,15,40,209,14,60,
+ 249,115,4,0,0,0,131,28,31,1,41,2,218,3,97,110,
+ 121,218,7,100,105,114,110,97,109,101,41,3,114,20,0,0,
+ 0,114,13,0,0,0,218,9,108,97,110,100,109,97,114,107,
+ 115,115,3,0,0,0,96,96,32,114,21,0,0,0,218,9,
+ 115,101,97,114,99,104,95,117,112,114,26,0,0,0,208,0,
+ 0,0,115,39,0,0,0,249,128,0,217,10,16,220,11,14,
+ 212,14,60,176,41,212,14,60,212,11,60,216,19,25,136,77,
+ 220,17,24,152,22,147,31,136,6,244,7,0,11,17,243,0,
+ 0,0,0,218,12,112,114,111,103,114,97,109,95,110,97,109,
+ 101,218,4,104,111,109,101,218,10,101,120,101,99,117,116,97,
+ 98,108,101,218,15,98,97,115,101,95,101,120,101,99,117,116,
+ 97,98,108,101,114,20,0,0,0,218,11,101,120,101,99,95,
+ 112,114,101,102,105,120,218,11,98,97,115,101,95,112,114,101,
+ 102,105,120,218,16,98,97,115,101,95,101,120,101,99,95,112,
+ 114,101,102,105,120,218,14,112,121,116,104,111,110,112,97,116,
+ 104,95,101,110,118,218,15,117,115,101,95,101,110,118,105,114,
+ 111,110,109,101,110,116,233,1,0,0,0,218,19,109,111,100,
+ 117,108,101,95,115,101,97,114,99,104,95,112,97,116,104,115,
+ 218,23,109,111,100,117,108,101,95,115,101,97,114,99,104,95,
+ 112,97,116,104,115,95,115,101,116,78,218,9,111,114,105,103,
+ 95,97,114,103,118,233,0,0,0,0,122,11,47,98,105,110,
+ 47,112,121,116,104,111,110,70,84,250,1,61,122,32,70,97,
+ 105,108,101,100,32,116,111,32,102,105,110,100,32,114,101,97,
+ 108,32,108,111,99,97,116,105,111,110,32,111,102,32,99,1,
+ 0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,35,
+ 0,0,0,243,78,0,0,0,75,0,1,0,151,0,124,0,
+ 93,29,0,0,125,1,116,1,0,0,0,0,0,0,0,0,
+ 116,3,0,0,0,0,0,0,0,0,116,4,0,0,0,0,
+ 0,0,0,0,124,1,171,2,0,0,0,0,0,0,171,1,
+ 0,0,0,0,0,0,150,1,151,1,1,0,140,31,4,0,
+ 121,0,173,3,119,1,114,16,0,0,0,169,3,218,6,105,
+ 115,102,105,108,101,114,17,0,0,0,218,11,108,105,98,114,
+ 97,114,121,95,100,105,114,41,2,114,18,0,0,0,218,1,
+ 112,115,2,0,0,0,32,32,114,21,0,0,0,114,22,0,
+ 0,0,114,22,0,0,0,167,1,0,0,115,28,0,0,0,
+ 232,0,248,128,0,210,10,70,176,1,140,54,148,40,156,59,
+ 168,1,211,18,42,215,11,43,209,10,70,249,243,4,0,0,
+ 0,130,35,37,1,218,3,101,120,101,218,3,100,108,108,122,
+ 5,46,95,112,116,104,218,16,95,105,115,95,112,121,116,104,
+ 111,110,95,98,117,105,108,100,99,1,0,0,0,0,0,0,
+ 0,0,0,0,0,7,0,0,0,35,0,0,0,243,78,0,
+ 0,0,75,0,1,0,151,0,124,0,93,29,0,0,125,1,
+ 116,1,0,0,0,0,0,0,0,0,116,3,0,0,0,0,
+ 0,0,0,0,116,4,0,0,0,0,0,0,0,0,124,1,
+ 171,2,0,0,0,0,0,0,171,1,0,0,0,0,0,0,
+ 150,1,151,1,1,0,140,31,4,0,121,0,173,3,119,1,
+ 114,16,0,0,0,114,44,0,0,0,169,2,114,18,0,0,
+ 0,114,19,0,0,0,115,2,0,0,0,32,32,114,21,0,
+ 0,0,114,22,0,0,0,114,22,0,0,0,51,2,0,0,
+ 115,28,0,0,0,232,0,248,128,0,210,18,78,184,1,148,
+ 54,156,40,164,59,176,1,211,26,50,215,19,51,209,18,78,
+ 249,114,48,0,0,0,99,1,0,0,0,0,0,0,0,0,
+ 0,0,0,7,0,0,0,35,0,0,0,243,78,0,0,0,
+ 75,0,1,0,151,0,124,0,93,29,0,0,125,1,116,1,
+ 0,0,0,0,0,0,0,0,116,3,0,0,0,0,0,0,
+ 0,0,116,4,0,0,0,0,0,0,0,0,124,1,171,2,
+ 0,0,0,0,0,0,171,1,0,0,0,0,0,0,150,1,
+ 151,1,1,0,140,31,4,0,121,0,173,3,119,1,114,16,
+ 0,0,0,41,3,114,45,0,0,0,114,17,0,0,0,114,
+ 20,0,0,0,114,53,0,0,0,115,2,0,0,0,32,32,
+ 114,21,0,0,0,114,22,0,0,0,114,22,0,0,0,78,
+ 2,0,0,115,28,0,0,0,232,0,248,128,0,210,18,73,
+ 176,49,148,54,156,40,164,54,168,49,211,26,45,215,19,46,
+ 209,18,73,249,114,48,0,0,0,122,54,67,111,117,108,100,
+ 32,110,111,116,32,102,105,110,100,32,112,108,97,116,102,111,
+ 114,109,32,105,110,100,101,112,101,110,100,101,110,116,32,108,
+ 105,98,114,97,114,105,101,115,32,60,112,114,101,102,105,120,
+ 62,122,57,67,111,117,108,100,32,110,111,116,32,102,105,110,
+ 100,32,112,108,97,116,102,111,114,109,32,100,101,112,101,110,
+ 100,101,110,116,32,108,105,98,114,97,114,105,101,115,32,60,
+ 101,120,101,99,95,112,114,101,102,105,120,62,122,56,67,111,
+ 110,115,105,100,101,114,32,115,101,116,116,105,110,103,32,36,
+ 80,89,84,72,79,78,72,79,77,69,32,116,111,32,60,112,
+ 114,101,102,105,120,62,91,58,60,101,120,101,99,95,112,114,
+ 101,102,105,120,62,93,218,8,105,115,111,108,97,116,101,100,
+ 218,11,115,105,116,101,95,105,109,112,111,114,116,218,9,115,
+ 97,102,101,95,112,97,116,104,250,1,35,122,11,105,109,112,
+ 111,114,116,32,115,105,116,101,122,7,105,109,112,111,114,116,
+ 32,122,39,117,110,115,117,112,112,111,114,116,101,100,32,39,
+ 105,109,112,111,114,116,39,32,108,105,110,101,32,105,110,32,
+ 46,95,112,116,104,32,102,105,108,101,218,10,115,116,100,108,
+ 105,98,95,100,105,114,218,14,112,108,97,116,115,116,100,108,
+ 105,98,95,100,105,114,41,107,218,6,99,111,110,102,105,103,
+ 218,3,103,101,116,218,10,80,76,65,84,76,73,66,68,73,
+ 82,114,1,0,0,0,218,7,111,115,95,110,97,109,101,218,
+ 12,66,85,73,76,68,68,73,82,95,84,88,84,218,14,66,
+ 85,73,76,68,95,76,65,78,68,77,65,82,75,218,13,86,
+ 69,82,83,73,79,78,95,77,65,74,79,82,218,20,68,69,
+ 70,65,85,76,84,95,80,82,79,71,82,65,77,95,78,65,
+ 77,69,218,13,86,69,82,83,73,79,78,95,77,73,78,79,
+ 82,218,13,83,84,68,76,73,66,95,83,85,66,68,73,82,
+ 218,16,83,84,68,76,73,66,95,76,65,78,68,77,65,82,
+ 75,83,218,19,80,76,65,84,83,84,68,76,73,66,95,76,
+ 65,78,68,77,65,82,75,218,21,66,85,73,76,68,83,84,
+ 68,76,73,66,95,76,65,78,68,77,65,82,75,83,218,13,
+ 86,69,78,86,95,76,65,78,68,77,65,82,75,218,12,90,
+ 73,80,95,76,65,78,68,77,65,82,75,218,5,68,69,76,
+ 73,77,218,3,83,69,80,218,5,86,80,65,84,72,218,10,
+ 80,89,68,69,66,85,71,69,88,84,218,8,80,89,87,73,
+ 78,86,69,82,218,10,87,73,78,82,69,71,95,75,69,89,
+ 114,45,0,0,0,114,26,0,0,0,114,28,0,0,0,114,
+ 29,0,0,0,114,30,0,0,0,114,31,0,0,0,114,20,
+ 0,0,0,114,32,0,0,0,114,33,0,0,0,114,34,0,
+ 0,0,218,14,69,78,86,95,80,89,84,72,79,78,80,65,
+ 84,72,114,36,0,0,0,218,10,112,121,116,104,111,110,112,
+ 97,116,104,218,18,112,121,116,104,111,110,112,97,116,104,95,
+ 119,97,115,95,115,101,116,218,19,114,101,97,108,95,101,120,
+ 101,99,117,116,97,98,108,101,95,100,105,114,114,59,0,0,
+ 0,114,60,0,0,0,218,4,98,111,111,108,218,20,112,114,
+ 111,103,114,97,109,95,110,97,109,101,95,119,97,115,95,115,
+ 101,116,218,10,73,110,100,101,120,69,114,114,111,114,218,10,
+ 69,88,69,95,83,85,70,70,73,88,218,9,104,97,115,115,
+ 117,102,102,105,120,218,7,105,115,120,102,105,108,101,218,10,
+ 112,121,95,115,101,116,112,97,116,104,218,15,114,101,97,108,
+ 95,101,120,101,99,117,116,97,98,108,101,218,7,97,98,115,
+ 112,97,116,104,218,8,69,78,86,95,80,65,84,72,218,5,
+ 115,112,108,105,116,114,47,0,0,0,114,17,0,0,0,218,
+ 14,101,120,101,99,117,116,97,98,108,101,95,100,105,114,218,
+ 20,69,78,86,95,80,89,84,72,79,78,69,88,69,67,85,
+ 84,65,66,76,69,218,23,69,78,86,95,95,95,80,89,86,
+ 69,78,86,95,76,65,85,78,67,72,69,82,95,95,218,19,
+ 87,73,84,72,95,78,69,88,84,95,70,82,65,77,69,87,
+ 79,82,75,114,24,0,0,0,218,7,108,105,98,114,97,114,
+ 121,218,12,104,111,109,101,95,119,97,115,95,115,101,116,218,
+ 14,69,78,86,95,80,89,84,72,79,78,72,79,77,69,218,
+ 11,118,101,110,118,95,112,114,101,102,105,120,218,12,118,101,
+ 110,118,95,112,114,101,102,105,120,50,218,9,114,101,97,100,
+ 108,105,110,101,115,218,9,112,121,118,101,110,118,99,102,103,
+ 218,17,70,105,108,101,78,111,116,70,111,117,110,100,69,114,
+ 114,111,114,218,15,80,101,114,109,105,115,115,105,111,110,69,
+ 114,114,111,114,218,4,108,105,110,101,218,9,112,97,114,116,
+ 105,116,105,111,110,218,3,107,101,121,218,7,104,97,100,95,
+ 101,113,117,218,5,118,97,108,117,101,218,5,115,116,114,105,
+ 112,218,5,108,111,119,101,114,218,8,114,101,97,108,112,97,
+ 116,104,218,7,79,83,69,114,114,111,114,218,8,98,97,115,
+ 101,110,97,109,101,218,8,98,97,115,101,95,101,120,101,218,
+ 9,99,97,110,100,105,100,97,116,101,218,2,101,120,218,4,
+ 119,97,114,110,114,46,0,0,0,114,23,0,0,0,218,3,
+ 112,116,104,218,7,112,116,104,95,100,105,114,218,10,114,112,
+ 97,114,116,105,116,105,111,110,218,12,98,117,105,108,100,95,
+ 112,114,101,102,105,120,218,19,98,117,105,108,100,95,115,116,
+ 100,108,105,98,95,112,114,101,102,105,120,218,9,104,97,100,
+ 95,100,101,108,105,109,218,5,105,115,100,105,114,218,6,80,
+ 82,69,70,73,88,218,11,69,88,69,67,95,80,82,69,70,
+ 73,88,218,6,97,112,112,101,110,100,218,6,119,105,110,114,
+ 101,103,218,17,72,75,69,89,95,67,85,82,82,69,78,84,
+ 95,85,83,69,82,218,18,72,75,69,89,95,76,79,67,65,
+ 76,95,77,65,67,72,73,78,69,218,2,104,107,218,9,79,
+ 112,101,110,75,101,121,69,120,218,1,105,218,10,81,117,101,
+ 114,121,86,97,108,117,101,218,7,69,110,117,109,75,101,121,
+ 218,1,118,218,10,105,115,105,110,115,116,97,110,99,101,218,
+ 3,115,116,114,218,6,101,120,116,101,110,100,218,8,67,108,
+ 111,115,101,75,101,121,218,10,80,89,84,72,79,78,80,65,
+ 84,72,218,10,115,116,97,114,116,115,119,105,116,104,169,0,
+ 114,27,0,0,0,114,21,0,0,0,250,8,60,109,111,100,
+ 117,108,101,62,114,150,0,0,0,1,0,0,0,115,126,13,
+ 0,0,240,3,1,1,1,240,92,5,0,14,20,143,90,137,
+ 90,152,12,211,13,37,210,13,51,168,26,128,10,224,3,10,
+ 136,103,210,3,21,152,23,160,72,210,25,44,216,19,35,128,
+ 76,216,21,42,128,78,216,29,35,160,77,160,63,208,27,51,
+ 208,4,24,216,23,33,144,108,160,39,168,45,168,31,184,1,
+ 184,45,184,31,208,20,73,128,77,216,27,40,152,47,168,22,
+ 208,24,48,176,93,176,79,192,55,208,50,75,208,23,76,208,
+ 4,20,216,29,39,152,76,168,7,176,13,168,127,184,97,192,
+ 13,184,127,200,108,208,26,91,208,4,23,216,29,40,152,77,
+ 208,4,25,216,20,32,128,77,216,22,32,144,92,160,23,168,
+ 29,168,15,184,13,176,127,192,100,208,19,75,128,76,216,12,
+ 15,128,69,216,10,13,129,67,224,5,12,144,4,130,95,216,
+ 19,35,128,76,216,24,29,144,119,208,30,52,208,21,53,128,
+ 78,216,29,35,208,4,24,216,20,25,128,77,216,27,40,152,
+ 47,168,23,208,24,49,176,109,176,95,192,72,208,51,77,208,
+ 23,78,208,4,20,216,29,39,152,76,208,4,23,216,29,41,
+ 152,78,208,4,25,216,20,32,128,77,216,21,27,152,77,152,
+ 63,168,61,168,47,184,42,210,58,74,200,2,208,57,75,200,
+ 52,208,19,80,128,76,216,19,49,176,40,176,26,184,60,208,
+ 17,72,128,74,216,12,15,128,69,216,10,14,128,67,240,14,
+ 0,40,46,244,0,4,1,33,240,22,0,16,22,143,122,137,
+ 122,152,46,211,15,41,128,12,216,7,13,135,122,129,122,144,
+ 38,211,7,25,128,4,216,13,19,143,90,137,90,152,12,211,
+ 13,37,128,10,216,18,24,151,42,145,42,208,29,46,211,18,
+ 47,128,15,216,9,15,143,26,137,26,144,72,211,9,29,128,
+ 6,216,14,20,143,106,137,106,152,29,211,14,39,128,11,216,
+ 14,20,143,106,137,106,152,29,211,14,39,128,11,216,19,25,
+ 151,58,145,58,208,30,48,211,19,49,208,0,16,216,17,23,
+ 208,24,40,209,17,41,128,14,216,18,24,151,42,145,42,208,
+ 29,46,176,1,211,18,50,128,15,224,13,19,143,90,137,90,
+ 208,24,45,211,13,46,128,10,216,21,27,151,90,145,90,208,
+ 32,57,211,21,58,208,0,18,224,22,26,208,0,19,216,13,
+ 17,128,10,216,17,21,128,14,241,12,0,24,28,152,76,211,
+ 23,41,208,0,20,225,7,19,240,2,3,5,13,216,23,29,
+ 151,122,145,122,160,43,168,114,211,23,50,176,49,209,23,53,
+ 136,12,241,8,0,8,20,216,19,39,128,76,225,3,13,145,
+ 105,160,12,168,106,212,22,57,185,103,192,108,208,85,95,209,
+ 70,95,212,62,96,216,19,31,160,42,209,19,44,128,76,241,
+ 14,0,4,14,241,6,0,12,22,216,21,36,136,10,225,7,
+ 17,144,99,152,92,209,22,41,225,17,24,152,28,211,17,38,
+ 128,74,225,7,17,240,6,0,18,33,129,74,216,5,12,144,
+ 8,210,5,24,240,12,0,23,33,128,79,225,7,17,145,108,
+ 161,120,240,8,0,14,22,143,94,137,94,152,69,211,13,34,
+ 242,0,4,5,18,136,1,217,12,20,144,81,152,12,211,12,
+ 37,136,1,217,11,18,144,49,141,58,216,25,26,136,74,217,
+ 12,17,240,9,4,5,18,241,12,0,8,18,216,17,19,128,
+ 74,241,8,0,22,29,152,83,147,92,128,78,240,6,0,27,
+ 41,208,4,23,225,3,23,209,27,50,240,10,0,8,15,144,
+ 40,210,7,26,209,31,50,241,10,0,30,37,160,87,211,29,
+ 45,208,28,46,168,107,184,45,184,31,200,1,200,45,200,31,
+ 208,26,89,137,15,224,26,36,136,15,225,11,26,216,26,41,
+ 136,15,224,17,37,210,17,64,208,41,64,128,74,217,21,28,
+ 152,90,211,21,40,128,78,240,18,0,16,21,128,12,225,3,
+ 7,216,19,23,129,76,217,5,20,153,30,177,10,216,11,25,
+ 128,68,240,14,0,15,19,128,11,241,8,0,8,12,145,74,
+ 240,2,14,5,23,240,6,0,24,38,210,23,60,169,23,176,
+ 26,211,41,60,136,12,217,22,29,152,108,211,22,43,136,11,
+ 240,2,6,9,39,225,24,33,161,40,168,59,184,13,211,34,
+ 70,211,24,71,136,73,240,18,0,17,26,242,0,37,5,27,
+ 136,4,216,30,34,159,110,153,110,168,83,211,30,49,209,8,
+ 27,136,3,136,87,144,101,218,11,18,144,115,151,121,145,121,
+ 147,123,215,23,40,209,23,40,211,23,42,168,102,211,23,52,
+ 216,51,56,183,59,177,59,179,61,208,12,64,136,78,208,29,
+ 48,217,19,34,240,6,6,17,25,217,38,46,168,122,211,38,
+ 58,144,79,216,23,38,168,42,210,23,52,224,42,44,152,15,
+ 241,6,0,24,39,217,38,46,168,126,185,120,200,10,211,63,
+ 83,211,38,84,144,79,240,12,0,24,31,160,36,146,127,169,
+ 118,176,111,212,47,70,217,35,43,168,74,211,35,55,152,8,
+ 216,42,62,192,38,200,29,200,15,208,87,88,208,89,102,208,
+ 88,103,208,64,104,208,41,105,242,0,11,25,38,152,73,216,
+ 28,37,177,122,169,26,192,114,209,28,73,152,73,216,31,39,
+ 168,57,210,31,52,216,32,40,217,40,48,176,30,192,25,211,
+ 40,75,152,73,241,10,0,32,38,160,105,213,31,48,216,50,
+ 59,160,15,217,32,37,240,23,11,25,38,241,24,0,13,18,
+ 240,71,1,37,5,27,240,74,1,0,23,27,136,11,241,14,
+ 0,8,23,216,22,32,210,22,57,160,79,210,22,57,176,114,
+ 128,79,225,7,22,216,22,37,128,79,240,4,6,1,67,1,
+ 217,22,30,152,127,211,22,47,128,79,241,14,0,8,22,152,
+ 39,160,88,210,26,45,177,39,225,18,25,152,39,211,18,34,
+ 128,75,217,7,10,209,10,70,208,53,69,212,10,70,212,7,
+ 70,241,6,0,26,34,160,43,211,25,46,136,14,216,30,44,
+ 208,8,27,241,8,0,8,22,217,43,50,176,63,211,43,67,
+ 208,4,67,128,78,208,21,40,241,8,0,8,27,217,26,33,
+ 160,47,211,26,50,208,4,23,240,18,0,7,11,128,3,216,
+ 10,14,128,7,241,8,0,8,18,153,44,240,12,0,15,22,
+ 144,122,160,63,208,13,51,242,0,10,5,21,136,1,218,11,
+ 12,216,15,22,152,36,138,127,161,73,168,97,176,21,212,36,
+ 55,185,57,192,81,200,5,212,59,78,216,20,21,151,76,145,
+ 76,160,19,211,20,37,160,97,209,20,40,144,1,216,12,13,
+ 144,23,137,76,136,65,240,2,5,13,21,217,22,31,160,1,
+ 147,108,144,3,217,26,33,160,33,155,42,144,7,217,16,21,
+ 240,17,10,5,21,241,28,0,8,15,216,26,27,136,15,216,
+ 15,22,136,4,216,21,23,136,10,240,14,0,16,20,128,12,
+ 225,9,21,209,26,45,177,106,216,11,17,143,58,137,58,208,
+ 22,40,168,33,211,11,44,168,113,210,11,48,240,6,17,5,
+ 53,217,25,33,216,12,31,217,12,21,145,104,208,31,50,176,
+ 76,211,22,65,211,12,66,192,49,209,12,69,243,5,3,26,
+ 10,136,14,241,8,0,24,32,208,32,51,176,85,211,23,59,
+ 136,12,241,28,0,8,20,216,11,18,144,100,138,63,224,34,
+ 46,209,12,31,225,34,43,168,76,208,34,81,208,59,80,210,
+ 34,81,208,12,31,225,11,30,217,25,33,208,34,53,176,117,
+ 211,25,61,137,74,225,25,33,160,44,176,5,211,25,54,136,
+ 74,225,15,21,216,21,40,136,70,241,8,0,16,27,216,26,
+ 38,136,75,240,8,0,38,39,136,6,208,15,33,209,8,34,
+ 241,14,0,4,14,240,6,0,28,30,208,4,29,128,70,138,
+ 91,241,8,0,8,12,240,6,0,42,46,175,30,169,30,184,
+ 5,211,41,62,209,8,38,136,6,144,9,152,59,217,15,24,
+ 216,26,32,136,75,224,21,25,136,10,241,8,0,8,15,145,
+ 118,217,22,29,152,103,211,22,38,136,11,217,11,23,216,15,
+ 22,152,36,138,127,225,19,25,153,40,160,59,176,12,211,26,
+ 61,212,19,62,216,29,40,145,70,225,25,34,160,59,176,12,
+ 211,25,61,144,6,217,11,24,209,29,45,177,102,217,15,18,
+ 209,18,78,208,61,77,212,18,78,212,15,78,216,25,36,144,
+ 6,217,29,37,160,102,168,109,211,29,60,144,10,241,8,0,
+ 8,20,153,14,169,118,216,11,18,144,100,138,63,225,15,21,
+ 145,104,152,126,168,124,211,22,60,212,15,61,216,25,39,145,
+ 6,225,21,30,152,126,168,124,211,21,60,136,70,217,11,17,
+ 217,25,33,160,38,168,45,211,25,56,136,74,217,19,24,152,
+ 26,212,19,36,216,29,33,144,10,241,8,0,8,21,209,25,
+ 41,169,110,193,86,217,17,26,152,62,208,17,61,208,44,60,
+ 210,17,61,136,6,217,11,17,153,42,217,25,33,160,38,168,
+ 45,211,25,56,136,74,225,7,13,145,102,216,17,23,136,6,
+ 217,15,18,209,18,73,208,56,72,212,18,73,212,15,73,217,
+ 12,16,208,17,73,212,12,74,225,11,17,217,17,24,152,18,
+ 147,27,136,6,217,8,12,208,13,69,212,8,70,241,8,0,
+ 8,27,161,59,216,11,18,144,100,138,63,240,8,0,27,33,
+ 136,75,217,15,26,153,126,217,26,35,160,78,208,52,71,200,
+ 101,212,26,84,136,75,217,15,26,153,123,216,26,37,136,75,
+ 217,15,26,161,37,169,8,176,27,208,62,81,211,40,82,212,
+ 34,83,216,15,22,152,36,138,127,241,6,0,24,38,240,14,
+ 0,38,49,145,78,225,16,20,208,21,80,212,16,81,241,8,
+ 0,12,23,216,22,28,136,11,241,6,0,12,18,153,27,217,
+ 8,12,208,13,71,212,8,72,241,30,0,4,14,224,36,46,
+ 215,36,52,209,36,52,176,85,211,36,59,128,70,208,11,32,
+ 209,4,33,216,40,41,128,70,208,11,36,211,4,37,226,9,
+ 27,240,8,0,18,20,128,74,241,6,0,8,23,153,62,216,
+ 17,31,215,17,37,209,17,37,160,101,211,17,44,242,0,1,
+ 9,42,136,65,216,12,22,215,12,29,209,12,29,153,103,160,
+ 97,155,106,213,12,41,240,3,1,9,42,240,8,0,8,15,
+ 144,36,130,127,225,11,18,217,26,33,160,39,211,26,42,137,
+ 75,224,26,40,136,75,216,8,18,215,8,25,209,8,25,153,
+ 40,160,59,176,12,211,26,61,213,8,62,217,9,21,224,8,
+ 18,215,8,25,209,8,25,153,40,160,54,168,60,211,26,56,
+ 213,8,57,224,8,18,215,8,25,209,8,25,153,40,160,54,
+ 168,60,211,26,56,212,8,57,224,7,14,144,36,130,127,153,
+ 63,169,118,240,10,0,20,26,215,19,43,209,19,43,168,86,
+ 215,45,70,209,45,70,208,18,71,242,0,23,9,21,136,66,
+ 240,2,22,13,21,216,22,28,215,22,38,209,22,38,160,114,
+ 168,58,211,22,54,144,3,240,2,18,17,41,216,24,25,144,
+ 65,216,26,30,240,2,3,25,34,216,32,38,215,32,49,209,
+ 32,49,176,35,176,118,183,126,177,126,192,99,200,49,211,55,
+ 77,211,32,78,152,65,241,6,0,28,38,160,97,168,19,212,
+ 27,45,216,28,38,215,28,45,209,28,45,168,97,175,103,169,
+ 103,176,101,171,110,212,28,61,216,24,25,152,81,153,6,152,
+ 1,240,15,0,27,31,240,11,23,9,21,241,52,0,8,18,
+ 216,17,27,215,17,33,209,17,33,160,37,211,17,40,242,0,
+ 1,9,51,136,65,216,12,22,215,12,29,209,12,29,153,104,
+ 160,118,168,113,211,30,49,213,12,50,240,3,1,9,51,241,
+ 8,0,12,22,153,38,217,21,29,152,102,160,109,211,21,52,
+ 136,10,217,11,25,153,107,217,25,33,160,43,208,47,66,211,
+ 25,67,136,14,224,7,14,144,36,130,127,225,11,25,216,12,
+ 22,215,12,29,209,12,29,152,110,212,12,45,217,11,21,216,
+ 12,22,215,12,29,209,12,29,152,106,212,12,41,217,11,25,
+ 152,110,176,74,209,30,62,240,10,0,13,23,215,12,29,209,
+ 12,29,152,110,213,12,45,225,11,21,216,12,22,215,12,29,
+ 209,12,29,152,106,212,12,41,217,11,25,216,12,22,215,12,
+ 29,209,12,29,152,110,212,12,45,224,36,46,128,70,208,11,
+ 32,209,4,33,216,40,41,128,70,208,11,36,209,4,37,240,
+ 18,0,4,11,136,100,130,63,145,124,216,13,19,143,90,137,
+ 90,152,8,211,13,33,210,13,43,160,86,128,70,216,18,24,
+ 151,42,145,42,152,93,211,18,43,210,18,68,168,123,210,18,
+ 68,184,102,128,75,241,14,0,4,7,216,25,26,128,70,136,
+ 58,209,4,22,216,32,33,128,70,208,11,28,209,4,29,216,
+ 28,29,128,70,136,61,209,4,25,216,26,27,128,70,136,59,
+ 209,4,23,216,17,19,128,74,216,16,19,242,0,9,5,55,
+ 136,4,216,15,19,143,126,137,126,152,99,211,15,34,160,49,
+ 209,15,37,215,15,43,209,15,43,211,15,45,136,4,217,15,
+ 19,216,12,16,216,13,17,144,93,210,13,34,216,36,37,136,
+ 70,144,61,210,12,33,216,13,17,143,95,137,95,152,89,212,
+ 13,39,217,12,16,208,17,58,213,12,59,224,12,22,215,12,
+ 29,209,12,29,153,104,160,119,176,4,211,30,53,213,12,54,
+ 240,19,9,5,55,240,20,0,37,47,128,70,208,11,32,209,
+ 4,33,216,40,41,128,70,208,11,36,209,4,37,240,12,0,
+ 26,38,128,6,128,126,209,0,22,216,17,21,128,6,128,118,
+ 129,14,216,23,33,128,6,128,124,209,0,20,216,28,43,128,
+ 6,208,7,24,209,0,25,216,19,25,128,6,128,120,209,0,
+ 16,216,24,35,128,6,128,125,209,0,21,216,24,35,210,24,
+ 45,160,118,128,6,128,125,209,0,21,216,29,45,210,29,60,
+ 176,27,128,6,208,7,25,209,0,26,224,23,33,128,6,128,
+ 124,209,0,20,224,23,33,210,23,39,160,82,128,6,128,124,
+ 209,0,20,216,27,41,210,27,47,168,82,128,6,208,7,23,
+ 210,0,24,248,240,127,16,0,12,22,242,0,1,5,13,218,
+ 8,12,240,3,1,5,13,251,240,88,3,0,17,34,160,63,
+ 208,15,51,242,0,3,9,39,225,24,33,161,40,168,60,184,
+ 29,211,34,71,211,24,72,136,73,216,26,38,139,75,240,7,
+ 3,9,39,251,240,8,0,13,30,152,127,208,11,47,242,0,
+ 2,5,23,216,22,26,136,11,216,20,22,139,9,240,5,2,
+ 5,23,251,240,32,0,24,31,242,0,1,17,25,218,20,24,
+ 240,3,1,17,25,251,240,80,1,0,8,15,242,0,4,1,
+ 67,1,241,6,0,8,14,136,111,212,7,30,217,8,12,208,
+ 15,47,176,15,208,47,64,208,13,65,212,8,66,255,249,240,
+ 9,4,1,67,1,251,240,104,1,0,20,27,242,0,1,13,
+ 21,218,16,20,240,3,1,13,21,251,240,54,0,12,22,242,
+ 0,3,5,60,224,25,44,136,14,217,23,31,208,32,51,176,
+ 85,211,23,59,139,12,216,12,29,152,127,208,11,47,242,0,
+ 7,5,53,217,11,17,145,40,208,27,46,176,14,211,18,63,
+ 212,11,64,217,27,35,208,36,55,184,21,211,27,63,136,76,
+ 216,15,22,152,36,138,127,240,8,0,34,53,144,14,250,240,
+ 15,7,5,53,251,240,64,6,0,32,39,242,0,1,25,34,
+ 217,28,33,240,3,1,25,34,250,241,16,0,28,32,169,10,
+ 216,28,34,215,28,45,209,28,45,168,99,176,52,211,28,56,
+ 152,1,217,27,37,160,97,168,19,212,27,45,216,28,38,215,
+ 28,45,209,28,45,168,97,175,103,169,103,176,101,171,110,212,
+ 28,61,224,20,26,151,79,145,79,160,67,213,20,40,248,144,
+ 70,151,79,145,79,160,67,213,20,40,250,209,20,40,248,216,
+ 19,26,242,0,1,13,21,218,16,20,240,3,1,13,21,250,
+ 115,229,0,0,0,197,46,21,98,43,0,201,7,20,99,22,
+ 0,201,28,15,98,55,0,202,63,15,99,40,2,204,61,8,
+ 99,52,0,207,9,16,100,26,2,208,2,34,100,38,0,217,
+ 61,18,103,25,2,218,16,3,103,1,2,218,20,34,101,37,
+ 2,218,54,47,103,1,2,226,43,5,98,52,3,226,51,1,
+ 98,52,3,226,55,24,99,19,3,227,15,3,99,22,0,227,
+ 18,1,99,19,3,227,19,3,99,22,0,227,22,11,99,37,
+ 3,227,36,1,99,37,3,227,40,5,99,49,5,227,48,1,
+ 99,49,5,227,52,5,100,23,3,227,57,19,100,18,3,228,
+ 18,5,100,23,3,228,26,5,100,35,5,228,34,1,100,35,
+ 5,228,38,16,101,34,3,228,57,37,101,34,3,229,33,1,
+ 101,34,3,229,37,5,101,45,5,229,42,2,103,1,2,229,
+ 44,1,101,45,5,229,45,65,2,103,1,2,230,47,18,103,
+ 25,2,231,1,19,103,20,5,231,20,3,103,25,2,231,25,
+ 5,103,34,5,231,33,1,103,34,5,
+};
diff --git a/contrib/tools/python3/Python/frozen_modules/importlib._bootstrap.h b/contrib/tools/python3/Python/frozen_modules/importlib._bootstrap.h
new file mode 100644
index 00000000000..20e6d2d6189
--- /dev/null
+++ b/contrib/tools/python3/Python/frozen_modules/importlib._bootstrap.h
@@ -0,0 +1,3488 @@
+/* Auto-generated by Programs/_freeze_module.c */
+const unsigned char _Py_M__importlib__bootstrap[] = {
+ 99,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,
+ 0,0,0,0,0,243,10,2,0,0,151,0,100,0,90,0,
+ 100,1,132,0,90,1,100,2,90,2,100,2,90,3,100,2,
+ 90,4,100,2,97,5,100,3,132,0,90,6,100,4,132,0,
+ 90,7,2,0,71,0,100,5,132,0,100,6,101,8,171,3,
+ 0,0,0,0,0,0,90,9,2,0,71,0,100,7,132,0,
+ 100,8,171,2,0,0,0,0,0,0,90,10,105,0,90,11,
+ 100,2,97,12,2,0,71,0,100,9,132,0,100,10,171,2,
+ 0,0,0,0,0,0,90,13,2,0,71,0,100,11,132,0,
+ 100,12,101,14,171,3,0,0,0,0,0,0,90,15,100,13,
+ 132,0,90,16,2,0,71,0,100,14,132,0,100,15,171,2,
+ 0,0,0,0,0,0,90,17,2,0,71,0,100,16,132,0,
+ 100,17,171,2,0,0,0,0,0,0,90,18,2,0,71,0,
+ 100,18,132,0,100,19,171,2,0,0,0,0,0,0,90,19,
+ 100,20,132,0,90,20,100,21,132,0,90,21,100,22,132,0,
+ 90,22,100,23,100,24,156,1,100,25,132,2,90,23,100,26,
+ 132,0,90,24,100,27,132,0,90,25,100,28,132,0,90,26,
+ 100,29,132,0,90,27,2,0,71,0,100,30,132,0,100,31,
+ 171,2,0,0,0,0,0,0,90,28,100,2,100,2,100,32,
+ 156,2,100,33,132,2,90,29,100,66,100,34,132,1,90,30,
+ 100,35,100,36,156,1,100,37,132,2,90,31,100,38,132,0,
+ 90,32,100,39,132,0,90,33,100,40,132,0,90,34,100,41,
+ 132,0,90,35,100,42,132,0,90,36,100,43,132,0,90,37,
+ 2,0,71,0,100,44,132,0,100,45,171,2,0,0,0,0,
+ 0,0,90,38,2,0,71,0,100,46,132,0,100,47,171,2,
+ 0,0,0,0,0,0,90,39,2,0,71,0,100,48,132,0,
+ 100,49,171,2,0,0,0,0,0,0,90,40,100,50,132,0,
+ 90,41,100,67,100,51,132,1,90,42,100,52,132,0,90,43,
+ 100,53,90,44,101,44,100,54,122,0,0,0,90,45,100,55,
+ 132,0,90,46,2,0,101,47,171,0,0,0,0,0,0,0,
+ 90,48,100,56,132,0,90,49,100,68,100,57,132,1,90,50,
+ 100,35,100,58,156,1,100,59,132,2,90,51,100,60,132,0,
+ 90,52,100,69,100,61,132,1,90,53,100,62,132,0,90,54,
+ 100,63,132,0,90,55,100,64,132,0,90,56,100,65,132,0,
+ 90,57,121,2,41,70,97,83,1,0,0,67,111,114,101,32,
+ 105,109,112,108,101,109,101,110,116,97,116,105,111,110,32,111,
+ 102,32,105,109,112,111,114,116,46,10,10,84,104,105,115,32,
+ 109,111,100,117,108,101,32,105,115,32,78,79,84,32,109,101,
+ 97,110,116,32,116,111,32,98,101,32,100,105,114,101,99,116,
+ 108,121,32,105,109,112,111,114,116,101,100,33,32,73,116,32,
+ 104,97,115,32,98,101,101,110,32,100,101,115,105,103,110,101,
+ 100,32,115,117,99,104,10,116,104,97,116,32,105,116,32,99,
+ 97,110,32,98,101,32,98,111,111,116,115,116,114,97,112,112,
+ 101,100,32,105,110,116,111,32,80,121,116,104,111,110,32,97,
+ 115,32,116,104,101,32,105,109,112,108,101,109,101,110,116,97,
+ 116,105,111,110,32,111,102,32,105,109,112,111,114,116,46,32,
+ 65,115,10,115,117,99,104,32,105,116,32,114,101,113,117,105,
+ 114,101,115,32,116,104,101,32,105,110,106,101,99,116,105,111,
+ 110,32,111,102,32,115,112,101,99,105,102,105,99,32,109,111,
+ 100,117,108,101,115,32,97,110,100,32,97,116,116,114,105,98,
+ 117,116,101,115,32,105,110,32,111,114,100,101,114,32,116,111,
+ 10,119,111,114,107,46,32,79,110,101,32,115,104,111,117,108,
+ 100,32,117,115,101,32,105,109,112,111,114,116,108,105,98,32,
+ 97,115,32,116,104,101,32,112,117,98,108,105,99,45,102,97,
+ 99,105,110,103,32,118,101,114,115,105,111,110,32,111,102,32,
+ 116,104,105,115,32,109,111,100,117,108,101,46,10,10,99,1,
+ 0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,3,
+ 0,0,0,243,100,0,0,0,151,0,9,0,124,0,106,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,83,0,35,0,116,2,0,0,0,0,0,0,0,0,
+ 36,0,114,24,1,0,116,5,0,0,0,0,0,0,0,0,
+ 124,0,171,1,0,0,0,0,0,0,106,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,2,
+ 89,0,83,0,119,0,120,3,89,0,119,1,169,1,78,41,
+ 3,218,12,95,95,113,117,97,108,110,97,109,101,95,95,218,
+ 14,65,116,116,114,105,98,117,116,101,69,114,114,111,114,218,
+ 4,116,121,112,101,41,1,218,3,111,98,106,115,1,0,0,
+ 0,32,250,29,60,102,114,111,122,101,110,32,105,109,112,111,
+ 114,116,108,105,98,46,95,98,111,111,116,115,116,114,97,112,
+ 62,218,12,95,111,98,106,101,99,116,95,110,97,109,101,114,
+ 8,0,0,0,23,0,0,0,115,50,0,0,0,128,0,240,
+ 2,3,5,38,216,15,18,215,15,31,209,15,31,208,8,31,
+ 248,220,11,25,242,0,1,5,38,220,15,19,144,67,139,121,
+ 215,15,37,209,15,37,210,8,37,240,3,1,5,38,250,115,
+ 12,0,0,0,130,11,14,0,142,30,47,3,174,1,47,3,
+ 78,99,2,0,0,0,0,0,0,0,0,0,0,0,9,0,
+ 0,0,3,0,0,0,243,164,0,0,0,151,0,100,1,68,
+ 0,93,38,0,0,125,2,116,1,0,0,0,0,0,0,0,
+ 0,124,1,124,2,171,2,0,0,0,0,0,0,115,1,140,
+ 16,116,3,0,0,0,0,0,0,0,0,124,0,124,2,116,
+ 5,0,0,0,0,0,0,0,0,124,1,124,2,171,2,0,
+ 0,0,0,0,0,171,3,0,0,0,0,0,0,1,0,140,
+ 40,4,0,124,0,106,6,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,106,9,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,124,1,106,
+ 6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,171,1,0,0,0,0,0,0,1,0,121,2,41,
+ 3,122,47,83,105,109,112,108,101,32,115,117,98,115,116,105,
+ 116,117,116,101,32,102,111,114,32,102,117,110,99,116,111,111,
+ 108,115,46,117,112,100,97,116,101,95,119,114,97,112,112,101,
+ 114,46,41,4,218,10,95,95,109,111,100,117,108,101,95,95,
+ 218,8,95,95,110,97,109,101,95,95,114,3,0,0,0,218,
+ 7,95,95,100,111,99,95,95,78,41,5,218,7,104,97,115,
+ 97,116,116,114,218,7,115,101,116,97,116,116,114,218,7,103,
+ 101,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,218,3,110,101,119,218,
+ 3,111,108,100,218,7,114,101,112,108,97,99,101,115,3,0,
+ 0,0,32,32,32,114,7,0,0,0,218,5,95,119,114,97,
+ 112,114,21,0,0,0,40,0,0,0,115,70,0,0,0,128,
+ 0,224,19,72,242,0,2,5,57,136,7,220,11,18,144,51,
+ 152,7,213,11,32,220,12,19,144,67,152,23,164,39,168,35,
+ 168,119,211,34,55,213,12,56,240,5,2,5,57,240,6,0,
+ 5,8,135,76,129,76,215,4,23,209,4,23,152,3,159,12,
+ 153,12,213,4,37,243,0,0,0,0,99,1,0,0,0,0,
+ 0,0,0,0,0,0,0,4,0,0,0,3,0,0,0,243,
+ 44,0,0,0,151,0,2,0,116,1,0,0,0,0,0,0,
+ 0,0,116,2,0,0,0,0,0,0,0,0,171,1,0,0,
+ 0,0,0,0,124,0,171,1,0,0,0,0,0,0,83,0,
+ 114,2,0,0,0,41,2,114,5,0,0,0,218,3,115,121,
+ 115,169,1,218,4,110,97,109,101,115,1,0,0,0,32,114,
+ 7,0,0,0,218,11,95,110,101,119,95,109,111,100,117,108,
+ 101,114,27,0,0,0,48,0,0,0,115,18,0,0,0,128,
+ 0,216,11,20,140,52,148,3,139,57,144,84,139,63,208,4,
+ 26,114,22,0,0,0,99,0,0,0,0,0,0,0,0,0,
+ 0,0,0,1,0,0,0,0,0,0,0,243,12,0,0,0,
+ 151,0,101,0,90,1,100,0,90,2,121,1,41,2,218,5,
+ 95,76,105,115,116,78,169,3,114,11,0,0,0,114,10,0,
+ 0,0,114,3,0,0,0,169,0,114,22,0,0,0,114,7,
+ 0,0,0,114,29,0,0,0,114,29,0,0,0,55,0,0,
+ 0,243,5,0,0,0,132,0,216,4,8,114,22,0,0,0,
+ 114,29,0,0,0,99,0,0,0,0,0,0,0,0,0,0,
+ 0,0,2,0,0,0,0,0,0,0,243,46,0,0,0,151,
+ 0,101,0,90,1,100,0,90,2,100,1,132,0,90,3,100,
+ 2,132,0,90,4,100,3,132,0,90,5,100,7,100,5,132,
+ 1,90,6,100,7,100,6,132,1,90,7,121,4,41,8,218,
+ 20,95,87,101,97,107,86,97,108,117,101,68,105,99,116,105,
+ 111,110,97,114,121,99,1,0,0,0,0,0,0,0,0,0,
+ 0,0,5,0,0,0,3,0,0,0,243,148,0,0,0,135,
+ 2,151,0,116,0,0,0,0,0,0,0,0,0,106,3,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,124,0,171,1,0,0,0,0,0,0,138,2,2,0,71,
+ 0,136,2,102,1,100,1,132,8,100,2,116,0,0,0,0,
+ 0,0,0,0,0,106,2,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,171,3,0,0,0,0,0,
+ 0,125,1,124,1,124,0,95,2,0,0,0,0,0,0,0,
+ 0,124,0,106,7,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,171,0,0,0,0,0,0,0,1,
+ 0,121,0,41,3,78,99,0,0,0,0,0,0,0,0,0,
+ 0,0,0,3,0,0,0,0,0,0,0,243,66,0,0,0,
+ 149,1,135,0,151,0,101,0,90,1,100,0,90,2,100,1,
+ 90,3,136,0,102,1,100,2,132,8,90,4,136,0,102,1,
+ 100,3,132,8,90,5,101,6,136,1,102,1,100,4,132,8,
+ 171,0,0,0,0,0,0,0,90,7,136,0,120,1,90,8,
+ 83,0,41,5,250,47,95,87,101,97,107,86,97,108,117,101,
+ 68,105,99,116,105,111,110,97,114,121,46,95,95,105,110,105,
+ 116,95,95,46,60,108,111,99,97,108,115,62,46,75,101,121,
+ 101,100,82,101,102,41,1,218,3,107,101,121,99,3,0,0,
+ 0,0,0,0,0,0,0,0,0,5,0,0,0,19,0,0,
+ 0,243,76,0,0,0,149,1,151,0,116,0,0,0,0,0,
+ 0,0,0,0,137,4,124,0,141,5,0,0,124,0,124,1,
+ 124,0,106,4,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,171,3,0,0,0,0,0,0,125,3,
+ 124,2,124,3,95,3,0,0,0,0,0,0,0,0,124,3,
+ 83,0,114,2,0,0,0,41,4,218,5,115,117,112,101,114,
+ 218,7,95,95,110,101,119,95,95,218,6,114,101,109,111,118,
+ 101,114,38,0,0,0,41,5,114,5,0,0,0,218,2,111,
+ 98,114,38,0,0,0,218,4,115,101,108,102,218,9,95,95,
+ 99,108,97,115,115,95,95,115,5,0,0,0,32,32,32,32,
+ 128,114,7,0,0,0,114,41,0,0,0,122,55,95,87,101,
+ 97,107,86,97,108,117,101,68,105,99,116,105,111,110,97,114,
+ 121,46,95,95,105,110,105,116,95,95,46,60,108,111,99,97,
+ 108,115,62,46,75,101,121,101,100,82,101,102,46,95,95,110,
+ 101,119,95,95,74,0,0,0,115,37,0,0,0,248,128,0,
+ 220,23,28,145,119,145,127,160,116,168,82,176,20,183,27,177,
+ 27,211,23,61,144,4,216,27,30,144,4,148,8,216,23,27,
+ 144,11,114,22,0,0,0,99,3,0,0,0,0,0,0,0,
+ 0,0,0,0,4,0,0,0,19,0,0,0,243,58,0,0,
+ 0,149,1,151,0,116,0,0,0,0,0,0,0,0,0,137,
+ 3,124,0,141,5,0,0,124,1,124,0,106,4,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,
+ 2,0,0,0,0,0,0,1,0,121,0,114,2,0,0,0,
+ 41,3,114,40,0,0,0,218,8,95,95,105,110,105,116,95,
+ 95,114,42,0,0,0,41,4,114,44,0,0,0,114,43,0,
+ 0,0,114,38,0,0,0,114,45,0,0,0,115,4,0,0,
+ 0,32,32,32,128,114,7,0,0,0,114,47,0,0,0,122,
+ 56,95,87,101,97,107,86,97,108,117,101,68,105,99,116,105,
+ 111,110,97,114,121,46,95,95,105,110,105,116,95,95,46,60,
+ 108,111,99,97,108,115,62,46,75,101,121,101,100,82,101,102,
+ 46,95,95,105,110,105,116,95,95,79,0,0,0,115,22,0,
+ 0,0,248,128,0,220,16,21,145,7,209,16,32,160,18,160,
+ 84,167,91,161,91,213,16,49,114,22,0,0,0,99,1,0,
+ 0,0,0,0,0,0,0,0,0,0,4,0,0,0,19,0,
+ 0,0,243,210,0,0,0,149,1,151,0,2,0,137,2,171,
+ 0,0,0,0,0,0,0,125,1,124,1,129,93,124,1,106,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,114,38,124,1,106,2,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,106,5,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,
+ 0,106,6,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,171,1,0,0,0,0,0,0,1,0,121,
+ 0,116,8,0,0,0,0,0,0,0,0,106,11,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,
+ 1,106,12,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,124,0,106,6,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,171,2,0,0,0,
+ 0,0,0,1,0,121,0,121,0,114,2,0,0,0,41,7,
+ 218,10,95,105,116,101,114,97,116,105,110,103,218,17,95,112,
+ 101,110,100,105,110,103,95,114,101,109,111,118,97,108,115,218,
+ 6,97,112,112,101,110,100,114,38,0,0,0,218,8,95,119,
+ 101,97,107,114,101,102,218,20,95,114,101,109,111,118,101,95,
+ 100,101,97,100,95,119,101,97,107,114,101,102,218,4,100,97,
+ 116,97,41,3,218,2,119,114,114,44,0,0,0,218,12,115,
+ 101,108,102,95,119,101,97,107,114,101,102,115,3,0,0,0,
+ 32,32,128,114,7,0,0,0,114,42,0,0,0,122,54,95,
+ 87,101,97,107,86,97,108,117,101,68,105,99,116,105,111,110,
+ 97,114,121,46,95,95,105,110,105,116,95,95,46,60,108,111,
+ 99,97,108,115,62,46,75,101,121,101,100,82,101,102,46,114,
+ 101,109,111,118,101,82,0,0,0,115,78,0,0,0,248,128,
+ 0,241,8,0,24,36,147,126,144,4,216,19,23,208,19,35,
+ 216,23,27,151,127,146,127,216,24,28,215,24,46,209,24,46,
+ 215,24,53,209,24,53,176,98,183,102,177,102,213,24,61,228,
+ 24,32,215,24,53,209,24,53,176,100,183,105,177,105,192,18,
+ 199,22,193,22,213,24,72,240,9,0,20,36,114,22,0,0,
+ 0,41,9,114,11,0,0,0,114,10,0,0,0,114,3,0,
+ 0,0,218,9,95,95,115,108,111,116,115,95,95,114,41,0,
+ 0,0,114,47,0,0,0,218,12,115,116,97,116,105,99,109,
+ 101,116,104,111,100,114,42,0,0,0,218,13,95,95,99,108,
+ 97,115,115,99,101,108,108,95,95,41,2,114,45,0,0,0,
+ 114,56,0,0,0,115,2,0,0,0,64,128,114,7,0,0,
+ 0,218,8,75,101,121,101,100,82,101,102,114,37,0,0,0,
+ 70,0,0,0,115,40,0,0,0,249,132,0,224,24,30,136,
+ 73,244,4,3,13,28,244,10,1,13,50,240,6,0,14,26,
+ 243,2,8,13,73,1,243,3,0,14,26,244,2,8,13,73,
+ 1,114,22,0,0,0,114,60,0,0,0,41,4,114,52,0,
+ 0,0,218,3,114,101,102,218,9,95,75,101,121,101,100,82,
+ 101,102,218,5,99,108,101,97,114,41,3,114,44,0,0,0,
+ 114,60,0,0,0,114,56,0,0,0,115,3,0,0,0,32,
+ 32,64,114,7,0,0,0,114,47,0,0,0,122,29,95,87,
+ 101,97,107,86,97,108,117,101,68,105,99,116,105,111,110,97,
+ 114,121,46,95,95,105,110,105,116,95,95,64,0,0,0,115,
+ 53,0,0,0,248,128,0,220,23,31,151,124,145,124,160,68,
+ 211,23,41,136,12,246,10,21,9,73,1,148,120,151,124,145,
+ 124,244,0,21,9,73,1,240,46,0,26,34,136,4,140,14,
+ 216,8,12,143,10,137,10,141,12,114,22,0,0,0,99,1,
+ 0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,3,
+ 0,0,0,243,62,0,0,0,151,0,103,0,124,0,95,0,
+ 0,0,0,0,0,0,0,0,116,3,0,0,0,0,0,0,
+ 0,0,171,0,0,0,0,0,0,0,124,0,95,2,0,0,
+ 0,0,0,0,0,0,105,0,124,0,95,3,0,0,0,0,
+ 0,0,0,0,121,0,114,2,0,0,0,41,4,114,50,0,
+ 0,0,218,3,115,101,116,114,49,0,0,0,114,54,0,0,
+ 0,169,1,114,44,0,0,0,115,1,0,0,0,32,114,7,
+ 0,0,0,114,63,0,0,0,122,26,95,87,101,97,107,86,
+ 97,108,117,101,68,105,99,116,105,111,110,97,114,121,46,99,
+ 108,101,97,114,96,0,0,0,115,26,0,0,0,128,0,216,
+ 33,35,136,4,212,8,30,220,26,29,155,37,136,4,140,15,
+ 216,20,22,136,4,141,9,114,22,0,0,0,99,1,0,0,
+ 0,0,0,0,0,0,0,0,0,4,0,0,0,3,0,0,
+ 0,243,164,0,0,0,151,0,124,0,106,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,2,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,125,1,124,0,106,4,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,125,2,9,0,9,0,
+ 2,0,124,1,171,0,0,0,0,0,0,0,125,3,116,8,
+ 0,0,0,0,0,0,0,0,106,11,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,124,2,124,3,
+ 171,2,0,0,0,0,0,0,1,0,140,31,35,0,116,6,
+ 0,0,0,0,0,0,0,0,36,0,114,3,1,0,89,0,
+ 121,0,119,0,120,3,89,0,119,1,114,2,0,0,0,41,
+ 6,114,50,0,0,0,218,3,112,111,112,114,54,0,0,0,
+ 218,10,73,110,100,101,120,69,114,114,111,114,114,52,0,0,
+ 0,114,53,0,0,0,41,4,114,44,0,0,0,114,68,0,
+ 0,0,218,1,100,114,38,0,0,0,115,4,0,0,0,32,
+ 32,32,32,114,7,0,0,0,218,16,95,99,111,109,109,105,
+ 116,95,114,101,109,111,118,97,108,115,122,37,95,87,101,97,
+ 107,86,97,108,117,101,68,105,99,116,105,111,110,97,114,121,
+ 46,95,99,111,109,109,105,116,95,114,101,109,111,118,97,108,
+ 115,101,0,0,0,115,86,0,0,0,128,0,216,14,18,215,
+ 14,36,209,14,36,215,14,40,209,14,40,136,3,216,12,16,
+ 143,73,137,73,136,1,216,14,18,240,2,3,13,23,217,22,
+ 25,147,101,144,3,244,6,0,13,21,215,12,41,209,12,41,
+ 168,33,168,83,212,12,49,240,11,0,15,19,248,244,6,0,
+ 20,30,242,0,1,13,23,217,16,22,240,3,1,13,23,250,
+ 115,17,0,0,0,165,7,65,3,0,193,3,9,65,15,3,
+ 193,14,1,65,15,3,78,99,3,0,0,0,0,0,0,0,
+ 0,0,0,0,4,0,0,0,3,0,0,0,243,150,0,0,
+ 0,151,0,124,0,106,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,114,16,124,0,106,3,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,171,0,0,0,0,0,0,0,1,0,9,0,124,0,106,
+ 4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,124,1,25,0,0,0,125,3,2,0,124,3,171,
+ 0,0,0,0,0,0,0,120,1,125,4,128,2,124,2,83,
+ 0,124,4,83,0,35,0,116,6,0,0,0,0,0,0,0,
+ 0,36,0,114,5,1,0,124,2,99,2,89,0,83,0,119,
+ 0,120,3,89,0,119,1,114,2,0,0,0,41,4,114,50,
+ 0,0,0,114,71,0,0,0,114,54,0,0,0,218,8,75,
+ 101,121,69,114,114,111,114,41,5,114,44,0,0,0,114,38,
+ 0,0,0,218,7,100,101,102,97,117,108,116,114,55,0,0,
+ 0,218,1,111,115,5,0,0,0,32,32,32,32,32,114,7,
+ 0,0,0,218,3,103,101,116,122,24,95,87,101,97,107,86,
+ 97,108,117,101,68,105,99,116,105,111,110,97,114,121,46,103,
+ 101,116,111,0,0,0,115,87,0,0,0,128,0,216,11,15,
+ 215,11,33,210,11,33,216,12,16,215,12,33,209,12,33,212,
+ 12,35,240,2,8,9,25,216,17,21,151,25,145,25,152,51,
+ 145,30,136,66,241,8,0,22,24,147,84,144,9,144,1,208,
+ 15,34,216,23,30,144,14,224,23,24,144,8,248,244,13,0,
+ 16,24,242,0,1,9,27,216,19,26,138,78,240,3,1,9,
+ 27,250,115,15,0,0,0,158,15,58,0,186,11,65,8,3,
+ 193,7,1,65,8,3,99,3,0,0,0,0,0,0,0,0,
+ 0,0,0,4,0,0,0,3,0,0,0,243,208,0,0,0,
+ 151,0,9,0,2,0,124,0,106,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,124,1,25,0,
+ 0,0,171,0,0,0,0,0,0,0,125,3,124,3,128,61,
+ 124,0,106,4,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,114,16,124,0,106,7,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,0,
+ 0,0,0,0,0,0,1,0,124,0,106,9,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,2,
+ 124,1,171,2,0,0,0,0,0,0,124,0,106,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 124,1,60,0,0,0,124,2,83,0,124,3,83,0,35,0,
+ 116,2,0,0,0,0,0,0,0,0,36,0,114,5,1,0,
+ 100,0,125,3,89,0,140,78,119,0,120,3,89,0,119,1,
+ 114,2,0,0,0,41,5,114,54,0,0,0,114,73,0,0,
+ 0,114,50,0,0,0,114,71,0,0,0,114,62,0,0,0,
+ 41,4,114,44,0,0,0,114,38,0,0,0,114,74,0,0,
+ 0,114,75,0,0,0,115,4,0,0,0,32,32,32,32,114,
+ 7,0,0,0,218,10,115,101,116,100,101,102,97,117,108,116,
+ 122,31,95,87,101,97,107,86,97,108,117,101,68,105,99,116,
+ 105,111,110,97,114,121,46,115,101,116,100,101,102,97,117,108,
+ 116,124,0,0,0,115,109,0,0,0,128,0,240,2,3,9,
+ 21,216,16,30,144,4,151,9,145,9,152,35,145,14,211,16,
+ 32,136,65,240,6,0,12,13,136,57,216,15,19,215,15,37,
+ 210,15,37,216,16,20,215,16,37,209,16,37,212,16,39,216,
+ 29,33,159,94,153,94,168,71,176,83,211,29,57,136,68,143,
+ 73,137,73,144,99,137,78,216,19,26,136,78,224,19,20,136,
+ 72,248,244,17,0,16,24,242,0,1,9,21,216,16,20,138,
+ 65,240,3,1,9,21,250,115,17,0,0,0,130,20,65,23,
+ 0,193,23,11,65,37,3,193,36,1,65,37,3,114,2,0,
+ 0,0,41,8,114,11,0,0,0,114,10,0,0,0,114,3,
+ 0,0,0,114,47,0,0,0,114,63,0,0,0,114,71,0,
+ 0,0,114,76,0,0,0,114,78,0,0,0,114,31,0,0,
+ 0,114,22,0,0,0,114,7,0,0,0,114,34,0,0,0,
+ 114,34,0,0,0,62,0,0,0,115,28,0,0,0,132,0,
+ 242,4,30,5,21,242,64,1,3,5,23,242,10,8,5,50,
+ 243,20,11,5,25,244,26,11,5,21,114,22,0,0,0,114,
+ 34,0,0,0,99,0,0,0,0,0,0,0,0,0,0,0,
+ 0,1,0,0,0,0,0,0,0,243,34,0,0,0,151,0,
+ 101,0,90,1,100,0,90,2,100,1,90,3,100,2,132,0,
+ 90,4,100,3,132,0,90,5,100,4,132,0,90,6,121,5,
+ 41,6,218,18,95,66,108,111,99,107,105,110,103,79,110,77,
+ 97,110,97,103,101,114,122,59,65,32,99,111,110,116,101,120,
+ 116,32,109,97,110,97,103,101,114,32,114,101,115,112,111,110,
+ 115,105,98,108,101,32,116,111,32,117,112,100,97,116,105,110,
+ 103,32,96,96,95,98,108,111,99,107,105,110,103,95,111,110,
+ 96,96,46,99,3,0,0,0,0,0,0,0,0,0,0,0,
+ 2,0,0,0,3,0,0,0,243,32,0,0,0,151,0,124,
+ 1,124,0,95,0,0,0,0,0,0,0,0,0,124,2,124,
+ 0,95,1,0,0,0,0,0,0,0,0,121,0,114,2,0,
+ 0,0,41,2,218,9,116,104,114,101,97,100,95,105,100,218,
+ 4,108,111,99,107,41,3,114,44,0,0,0,114,82,0,0,
+ 0,114,83,0,0,0,115,3,0,0,0,32,32,32,114,7,
+ 0,0,0,114,47,0,0,0,122,27,95,66,108,111,99,107,
+ 105,110,103,79,110,77,97,110,97,103,101,114,46,95,95,105,
+ 110,105,116,95,95,158,0,0,0,115,16,0,0,0,128,0,
+ 216,25,34,136,4,140,14,216,20,24,136,4,141,9,114,22,
+ 0,0,0,99,1,0,0,0,0,0,0,0,0,0,0,0,
+ 5,0,0,0,3,0,0,0,243,168,0,0,0,151,0,116,
+ 0,0,0,0,0,0,0,0,0,106,3,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,124,0,106,
+ 4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,116,7,0,0,0,0,0,0,0,0,171,0,0,
+ 0,0,0,0,0,171,2,0,0,0,0,0,0,124,0,95,
+ 4,0,0,0,0,0,0,0,0,124,0,106,8,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,
+ 11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,124,0,106,12,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,171,1,0,0,0,0,0,
+ 0,1,0,121,1,41,2,122,67,77,97,114,107,32,116,104,
+ 101,32,114,117,110,110,105,110,103,32,116,104,114,101,97,100,
+ 32,97,115,32,119,97,105,116,105,110,103,32,102,111,114,32,
+ 115,101,108,102,46,108,111,99,107,46,32,118,105,97,32,95,
+ 98,108,111,99,107,105,110,103,95,111,110,46,78,41,7,218,
+ 12,95,98,108,111,99,107,105,110,103,95,111,110,114,78,0,
+ 0,0,114,82,0,0,0,114,29,0,0,0,218,10,98,108,
+ 111,99,107,101,100,95,111,110,114,51,0,0,0,114,83,0,
+ 0,0,114,66,0,0,0,115,1,0,0,0,32,114,7,0,
+ 0,0,218,9,95,95,101,110,116,101,114,95,95,122,28,95,
+ 66,108,111,99,107,105,110,103,79,110,77,97,110,97,103,101,
+ 114,46,95,95,101,110,116,101,114,95,95,162,0,0,0,115,
+ 52,0,0,0,128,0,244,16,0,27,39,215,26,49,209,26,
+ 49,176,36,183,46,177,46,196,37,195,39,211,26,74,136,4,
+ 140,15,216,8,12,143,15,137,15,215,8,30,209,8,30,152,
+ 116,159,121,153,121,213,8,41,114,22,0,0,0,99,1,0,
+ 0,0,0,0,0,0,0,0,0,0,3,0,0,0,15,0,
+ 0,0,243,78,0,0,0,151,0,124,0,106,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,
+ 3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,124,0,106,4,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,171,1,0,0,0,0,0,
+ 0,1,0,121,1,41,2,122,54,82,101,109,111,118,101,32,
+ 115,101,108,102,46,108,111,99,107,32,102,114,111,109,32,116,
+ 104,105,115,32,116,104,114,101,97,100,39,115,32,95,98,108,
+ 111,99,107,105,110,103,95,111,110,32,108,105,115,116,46,78,
+ 41,3,114,86,0,0,0,114,42,0,0,0,114,83,0,0,
+ 0,169,3,114,44,0,0,0,218,4,97,114,103,115,218,6,
+ 107,119,97,114,103,115,115,3,0,0,0,32,32,32,114,7,
+ 0,0,0,218,8,95,95,101,120,105,116,95,95,122,27,95,
+ 66,108,111,99,107,105,110,103,79,110,77,97,110,97,103,101,
+ 114,46,95,95,101,120,105,116,95,95,173,0,0,0,115,24,
+ 0,0,0,128,0,224,8,12,143,15,137,15,215,8,30,209,
+ 8,30,152,116,159,121,153,121,213,8,41,114,22,0,0,0,
+ 78,41,7,114,11,0,0,0,114,10,0,0,0,114,3,0,
+ 0,0,114,12,0,0,0,114,47,0,0,0,114,87,0,0,
+ 0,114,92,0,0,0,114,31,0,0,0,114,22,0,0,0,
+ 114,7,0,0,0,114,80,0,0,0,114,80,0,0,0,156,
+ 0,0,0,115,20,0,0,0,132,0,217,4,69,242,2,2,
+ 5,25,242,8,9,5,42,243,22,2,5,42,114,22,0,0,
+ 0,114,80,0,0,0,99,0,0,0,0,0,0,0,0,0,
+ 0,0,0,1,0,0,0,0,0,0,0,243,12,0,0,0,
+ 151,0,101,0,90,1,100,0,90,2,121,1,41,2,218,14,
+ 95,68,101,97,100,108,111,99,107,69,114,114,111,114,78,114,
+ 30,0,0,0,114,31,0,0,0,114,22,0,0,0,114,7,
+ 0,0,0,114,94,0,0,0,114,94,0,0,0,178,0,0,
+ 0,114,32,0,0,0,114,22,0,0,0,114,94,0,0,0,
+ 99,1,0,0,0,0,0,0,0,3,0,0,0,7,0,0,
+ 0,3,0,0,0,243,208,0,0,0,151,0,124,0,124,2,
+ 118,0,114,1,121,1,124,2,68,0,93,87,0,0,125,4,
+ 124,3,106,1,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,124,4,171,1,0,0,0,0,0,0,
+ 120,1,125,5,115,1,140,23,124,4,124,1,118,0,114,2,
+ 1,0,121,2,124,1,106,3,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,124,4,171,1,0,0,
+ 0,0,0,0,1,0,124,5,68,0,143,6,99,2,103,0,
+ 99,2,93,14,0,0,125,6,124,6,106,4,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,145,2,
+ 140,16,4,0,125,7,125,6,116,7,0,0,0,0,0,0,
+ 0,0,124,0,124,1,124,7,124,3,172,3,171,4,0,0,
+ 0,0,0,0,115,1,140,87,1,0,121,1,4,0,121,2,
+ 99,2,1,0,99,2,125,6,119,0,41,4,97,242,2,0,
+ 0,67,104,101,99,107,32,105,102,32,39,116,97,114,103,101,
+ 116,95,105,100,39,32,105,115,32,104,111,108,100,105,110,103,
+ 32,116,104,101,32,115,97,109,101,32,108,111,99,107,32,97,
+ 115,32,97,110,111,116,104,101,114,32,116,104,114,101,97,100,
+ 40,115,41,46,10,10,32,32,32,32,84,104,101,32,115,101,
+ 97,114,99,104,32,119,105,116,104,105,110,32,39,98,108,111,
+ 99,107,105,110,103,95,111,110,39,32,115,116,97,114,116,115,
+ 32,119,105,116,104,32,116,104,101,32,116,104,114,101,97,100,
+ 115,32,108,105,115,116,101,100,32,105,110,10,32,32,32,32,
+ 39,99,97,110,100,105,100,97,116,101,95,105,100,115,39,46,
+ 32,32,39,115,101,101,110,95,105,100,115,39,32,99,111,110,
+ 116,97,105,110,115,32,97,110,121,32,116,104,114,101,97,100,
+ 115,32,116,104,97,116,32,97,114,101,32,99,111,110,115,105,
+ 100,101,114,101,100,10,32,32,32,32,97,108,114,101,97,100,
+ 121,32,116,114,97,118,101,114,115,101,100,32,105,110,32,116,
+ 104,101,32,115,101,97,114,99,104,46,10,10,32,32,32,32,
+ 75,101,121,119,111,114,100,32,97,114,103,117,109,101,110,116,
+ 115,58,10,32,32,32,32,116,97,114,103,101,116,95,105,100,
+ 32,32,32,32,32,45,45,32,84,104,101,32,116,104,114,101,
+ 97,100,32,105,100,32,116,111,32,116,114,121,32,116,111,32,
+ 114,101,97,99,104,46,10,32,32,32,32,115,101,101,110,95,
+ 105,100,115,32,32,32,32,32,32,45,45,32,65,32,115,101,
+ 116,32,111,102,32,116,104,114,101,97,100,115,32,116,104,97,
+ 116,32,104,97,118,101,32,97,108,114,101,97,100,121,32,98,
+ 101,101,110,32,118,105,115,105,116,101,100,46,10,32,32,32,
+ 32,99,97,110,100,105,100,97,116,101,95,105,100,115,32,45,
+ 45,32,84,104,101,32,116,104,114,101,97,100,32,105,100,115,
+ 32,102,114,111,109,32,119,104,105,99,104,32,116,111,32,98,
+ 101,103,105,110,46,10,32,32,32,32,98,108,111,99,107,105,
+ 110,103,95,111,110,32,32,32,45,45,32,65,32,100,105,99,
+ 116,32,114,101,112,114,101,115,101,110,116,105,110,103,32,116,
+ 104,101,32,116,104,114,101,97,100,47,98,108,111,99,107,105,
+ 110,103,45,111,110,32,103,114,97,112,104,46,32,32,84,104,
+ 105,115,32,109,97,121,10,32,32,32,32,32,32,32,32,32,
+ 32,32,32,32,32,32,32,32,32,32,32,32,98,101,32,116,
+ 104,101,32,115,97,109,101,32,111,98,106,101,99,116,32,97,
+ 115,32,116,104,101,32,103,108,111,98,97,108,32,39,95,98,
+ 108,111,99,107,105,110,103,95,111,110,39,32,98,117,116,32,
+ 105,116,32,105,115,10,32,32,32,32,32,32,32,32,32,32,
+ 32,32,32,32,32,32,32,32,32,32,32,97,32,112,97,114,
+ 97,109,101,116,101,114,32,116,111,32,114,101,100,117,99,101,
+ 32,116,104,101,32,105,109,112,97,99,116,32,116,104,97,116,
+ 32,103,108,111,98,97,108,32,109,117,116,97,98,108,101,10,
+ 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,
+ 32,32,32,32,32,115,116,97,116,101,32,104,97,115,32,111,
+ 110,32,116,104,101,32,114,101,115,117,108,116,32,111,102,32,
+ 116,104,105,115,32,102,117,110,99,116,105,111,110,46,10,32,
+ 32,32,32,84,70,41,3,218,8,115,101,101,110,95,105,100,
+ 115,218,13,99,97,110,100,105,100,97,116,101,95,105,100,115,
+ 218,11,98,108,111,99,107,105,110,103,95,111,110,41,4,114,
+ 76,0,0,0,218,3,97,100,100,218,5,111,119,110,101,114,
+ 218,15,95,104,97,115,95,100,101,97,100,108,111,99,107,101,
+ 100,41,8,218,9,116,97,114,103,101,116,95,105,100,114,96,
+ 0,0,0,114,97,0,0,0,114,98,0,0,0,218,3,116,
+ 105,100,218,21,99,97,110,100,105,100,97,116,101,95,98,108,
+ 111,99,107,105,110,103,95,111,110,114,83,0,0,0,218,5,
+ 101,100,103,101,115,115,8,0,0,0,32,32,32,32,32,32,
+ 32,32,114,7,0,0,0,114,101,0,0,0,114,101,0,0,
+ 0,183,0,0,0,115,137,0,0,0,128,0,240,32,0,8,
+ 17,144,77,209,7,33,240,6,0,16,20,240,6,0,16,29,
+ 242,0,16,5,24,136,3,216,41,52,175,31,169,31,184,19,
+ 211,41,61,208,16,61,208,16,37,208,16,61,224,12,20,216,
+ 13,16,144,72,137,95,241,10,0,20,25,216,8,16,143,12,
+ 137,12,144,83,212,8,25,240,6,0,41,62,214,16,62,160,
+ 4,144,20,151,26,147,26,208,16,62,136,5,208,16,62,220,
+ 11,26,152,57,168,120,192,117,216,28,39,246,3,1,12,41,
+ 225,19,23,240,33,16,5,24,240,36,0,12,17,249,242,11,
+ 0,17,63,115,5,0,0,0,186,19,65,35,6,99,0,0,
+ 0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,
+ 0,0,243,46,0,0,0,151,0,101,0,90,1,100,0,90,
+ 2,100,1,90,3,100,2,132,0,90,4,100,3,132,0,90,
+ 5,100,4,132,0,90,6,100,5,132,0,90,7,100,6,132,
+ 0,90,8,121,7,41,8,218,11,95,77,111,100,117,108,101,
+ 76,111,99,107,122,169,65,32,114,101,99,117,114,115,105,118,
+ 101,32,108,111,99,107,32,105,109,112,108,101,109,101,110,116,
+ 97,116,105,111,110,32,119,104,105,99,104,32,105,115,32,97,
+ 98,108,101,32,116,111,32,100,101,116,101,99,116,32,100,101,
+ 97,100,108,111,99,107,115,10,32,32,32,32,40,101,46,103,
+ 46,32,116,104,114,101,97,100,32,49,32,116,114,121,105,110,
+ 103,32,116,111,32,116,97,107,101,32,108,111,99,107,115,32,
+ 65,32,116,104,101,110,32,66,44,32,97,110,100,32,116,104,
+ 114,101,97,100,32,50,32,116,114,121,105,110,103,32,116,111,
+ 10,32,32,32,32,116,97,107,101,32,108,111,99,107,115,32,
+ 66,32,116,104,101,110,32,65,41,46,10,32,32,32,32,99,
+ 2,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,
+ 3,0,0,0,243,160,0,0,0,151,0,116,0,0,0,0,
+ 0,0,0,0,0,106,3,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,171,0,0,0,0,0,0,
+ 0,124,0,95,2,0,0,0,0,0,0,0,0,116,0,0,
+ 0,0,0,0,0,0,0,106,7,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,171,0,0,0,0,
+ 0,0,0,124,0,95,4,0,0,0,0,0,0,0,0,124,
+ 1,124,0,95,5,0,0,0,0,0,0,0,0,100,0,124,
+ 0,95,6,0,0,0,0,0,0,0,0,103,0,124,0,95,
+ 7,0,0,0,0,0,0,0,0,103,0,124,0,95,8,0,
+ 0,0,0,0,0,0,0,121,0,114,2,0,0,0,41,9,
+ 218,7,95,116,104,114,101,97,100,218,5,82,76,111,99,107,
+ 114,83,0,0,0,218,13,97,108,108,111,99,97,116,101,95,
+ 108,111,99,107,218,6,119,97,107,101,117,112,114,26,0,0,
+ 0,114,100,0,0,0,218,5,99,111,117,110,116,218,7,119,
+ 97,105,116,101,114,115,169,2,114,44,0,0,0,114,26,0,
+ 0,0,115,2,0,0,0,32,32,114,7,0,0,0,114,47,
+ 0,0,0,122,20,95,77,111,100,117,108,101,76,111,99,107,
+ 46,95,95,105,110,105,116,95,95,232,0,0,0,115,69,0,
+ 0,0,128,0,244,42,0,21,28,151,77,145,77,147,79,136,
+ 4,140,9,220,22,29,215,22,43,209,22,43,211,22,45,136,
+ 4,140,11,240,6,0,21,25,136,4,140,9,240,8,0,22,
+ 26,136,4,140,10,240,22,0,22,24,136,4,140,10,240,28,
+ 0,24,26,136,4,141,12,114,22,0,0,0,99,1,0,0,
+ 0,0,0,0,0,0,0,0,0,6,0,0,0,3,0,0,
+ 0,243,114,0,0,0,151,0,116,1,0,0,0,0,0,0,
+ 0,0,116,2,0,0,0,0,0,0,0,0,106,5,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 171,0,0,0,0,0,0,0,116,7,0,0,0,0,0,0,
+ 0,0,171,0,0,0,0,0,0,0,124,0,106,8,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 103,1,116,10,0,0,0,0,0,0,0,0,172,1,171,4,
+ 0,0,0,0,0,0,83,0,41,2,78,41,4,114,102,0,
+ 0,0,114,96,0,0,0,114,97,0,0,0,114,98,0,0,
+ 0,41,6,114,101,0,0,0,114,109,0,0,0,218,9,103,
+ 101,116,95,105,100,101,110,116,114,65,0,0,0,114,100,0,
+ 0,0,114,85,0,0,0,114,66,0,0,0,115,1,0,0,
+ 0,32,114,7,0,0,0,218,12,104,97,115,95,100,101,97,
+ 100,108,111,99,107,122,24,95,77,111,100,117,108,101,76,111,
+ 99,107,46,104,97,115,95,100,101,97,100,108,111,99,107,32,
+ 1,0,0,115,48,0,0,0,128,0,244,10,0,16,31,228,
+ 22,29,215,22,39,209,22,39,211,22,41,220,21,24,147,85,
+ 240,6,0,28,32,159,58,153,58,152,44,228,24,36,244,17,
+ 9,16,10,240,0,9,9,10,114,22,0,0,0,99,1,0,
+ 0,0,0,0,0,0,0,0,0,0,7,0,0,0,3,0,
+ 0,0,243,86,2,0,0,151,0,116,0,0,0,0,0,0,
+ 0,0,0,106,3,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,171,0,0,0,0,0,0,0,125,
+ 1,116,5,0,0,0,0,0,0,0,0,124,1,124,0,171,
+ 2,0,0,0,0,0,0,53,0,1,0,9,0,124,0,106,
+ 6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,53,0,1,0,124,0,106,8,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,103,0,107,
+ 40,0,0,115,15,124,0,106,10,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,124,1,107,40,0,
+ 0,114,52,124,1,124,0,95,5,0,0,0,0,0,0,0,
+ 0,124,0,106,8,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,106,13,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,100,1,171,1,0,
+ 0,0,0,0,0,1,0,9,0,100,2,100,2,100,2,171,
+ 2,0,0,0,0,0,0,1,0,100,2,100,2,100,2,171,
+ 2,0,0,0,0,0,0,1,0,121,1,124,0,106,15,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,171,0,0,0,0,0,0,0,114,14,116,17,0,0,0,
+ 0,0,0,0,0,100,3,124,0,155,2,157,2,171,1,0,
+ 0,0,0,0,0,130,1,124,0,106,18,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,106,21,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,100,4,171,1,0,0,0,0,0,0,114,27,124,0,106,
+ 22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,106,13,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,100,2,171,1,0,0,0,0,0,
+ 0,1,0,100,2,100,2,100,2,171,2,0,0,0,0,0,
+ 0,1,0,124,0,106,18,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,106,21,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,171,0,0,
+ 0,0,0,0,0,1,0,124,0,106,18,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,106,25,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,171,0,0,0,0,0,0,0,1,0,140,240,35,0,49,
+ 0,115,1,119,2,1,0,89,0,1,0,1,0,140,62,120,
+ 3,89,0,119,1,35,0,49,0,115,1,119,2,1,0,89,
+ 0,1,0,1,0,121,2,120,3,89,0,119,1,41,5,122,
+ 185,10,32,32,32,32,32,32,32,32,65,99,113,117,105,114,
+ 101,32,116,104,101,32,109,111,100,117,108,101,32,108,111,99,
+ 107,46,32,32,73,102,32,97,32,112,111,116,101,110,116,105,
+ 97,108,32,100,101,97,100,108,111,99,107,32,105,115,32,100,
+ 101,116,101,99,116,101,100,44,10,32,32,32,32,32,32,32,
+ 32,97,32,95,68,101,97,100,108,111,99,107,69,114,114,111,
+ 114,32,105,115,32,114,97,105,115,101,100,46,10,32,32,32,
+ 32,32,32,32,32,79,116,104,101,114,119,105,115,101,44,32,
+ 116,104,101,32,108,111,99,107,32,105,115,32,97,108,119,97,
+ 121,115,32,97,99,113,117,105,114,101,100,32,97,110,100,32,
+ 84,114,117,101,32,105,115,32,114,101,116,117,114,110,101,100,
+ 46,10,32,32,32,32,32,32,32,32,84,78,122,21,100,101,
+ 97,100,108,111,99,107,32,100,101,116,101,99,116,101,100,32,
+ 98,121,32,70,41,13,114,109,0,0,0,114,117,0,0,0,
+ 114,80,0,0,0,114,83,0,0,0,114,113,0,0,0,114,
+ 100,0,0,0,114,51,0,0,0,114,118,0,0,0,114,94,
+ 0,0,0,114,112,0,0,0,218,7,97,99,113,117,105,114,
+ 101,114,114,0,0,0,218,7,114,101,108,101,97,115,101,169,
+ 2,114,44,0,0,0,114,103,0,0,0,115,2,0,0,0,
+ 32,32,114,7,0,0,0,114,120,0,0,0,122,19,95,77,
+ 111,100,117,108,101,76,111,99,107,46,97,99,113,117,105,114,
+ 101,48,1,0,0,115,5,1,0,0,128,0,244,12,0,15,
+ 22,215,14,31,209,14,31,211,14,33,136,3,220,13,31,160,
+ 3,160,84,211,13,42,241,0,59,9,38,216,18,22,240,8,
+ 0,22,26,151,89,145,89,241,0,44,17,50,216,23,27,151,
+ 122,145,122,160,82,210,23,39,168,52,175,58,169,58,184,19,
+ 210,43,60,240,14,0,38,41,152,4,156,10,216,24,28,159,
+ 10,153,10,215,24,41,209,24,41,168,36,212,24,47,216,31,
+ 35,247,21,44,17,50,247,11,59,9,38,240,0,59,9,38,
+ 240,68,1,0,24,28,215,23,40,209,23,40,212,23,42,220,
+ 30,44,208,47,68,192,84,192,72,208,45,77,211,30,78,208,
+ 24,78,240,26,0,24,28,151,123,145,123,215,23,42,209,23,
+ 42,168,53,212,23,49,216,24,28,159,12,153,12,215,24,43,
+ 209,24,43,168,68,212,24,49,247,89,1,44,17,50,240,98,
+ 1,0,17,21,151,11,145,11,215,16,35,209,16,35,212,16,
+ 37,240,10,0,17,21,151,11,145,11,215,16,35,209,16,35,
+ 212,16,37,240,117,1,0,19,23,247,8,44,17,50,240,0,
+ 44,17,50,250,247,11,59,9,38,240,0,59,9,38,250,115,
+ 48,0,0,0,161,14,68,31,3,175,65,2,68,19,5,193,
+ 49,8,68,31,3,194,2,65,20,68,19,5,195,22,61,68,
+ 31,3,196,19,5,68,28,9,196,24,7,68,31,3,196,31,
+ 5,68,40,7,99,1,0,0,0,0,0,0,0,0,0,0,
+ 0,6,0,0,0,3,0,0,0,243,218,1,0,0,151,0,
+ 116,0,0,0,0,0,0,0,0,0,106,3,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,0,
+ 0,0,0,0,0,0,125,1,124,0,106,4,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,0,
+ 1,0,124,0,106,6,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,124,1,107,55,0,0,114,11,
+ 116,9,0,0,0,0,0,0,0,0,100,1,171,1,0,0,
+ 0,0,0,0,130,1,116,11,0,0,0,0,0,0,0,0,
+ 124,0,106,12,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,171,1,0,0,0,0,0,0,100,2,
+ 107,68,0,0,115,2,74,0,130,1,124,0,106,12,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 106,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,171,0,0,0,0,0,0,0,1,0,116,11,
+ 0,0,0,0,0,0,0,0,124,0,106,12,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,1,
+ 0,0,0,0,0,0,115,83,100,0,124,0,95,3,0,0,
+ 0,0,0,0,0,0,116,11,0,0,0,0,0,0,0,0,
+ 124,0,106,16,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,171,1,0,0,0,0,0,0,100,2,
+ 107,68,0,0,114,52,124,0,106,16,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,106,15,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 171,0,0,0,0,0,0,0,1,0,124,0,106,18,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 106,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,171,0,0,0,0,0,0,0,1,0,100,0,
+ 100,0,100,0,171,2,0,0,0,0,0,0,1,0,121,0,
+ 35,0,49,0,115,1,119,2,1,0,89,0,1,0,1,0,
+ 121,0,120,3,89,0,119,1,41,3,78,250,31,99,97,110,
+ 110,111,116,32,114,101,108,101,97,115,101,32,117,110,45,97,
+ 99,113,117,105,114,101,100,32,108,111,99,107,233,0,0,0,
+ 0,41,11,114,109,0,0,0,114,117,0,0,0,114,83,0,
+ 0,0,114,100,0,0,0,218,12,82,117,110,116,105,109,101,
+ 69,114,114,111,114,218,3,108,101,110,114,113,0,0,0,114,
+ 68,0,0,0,114,114,0,0,0,114,112,0,0,0,114,121,
+ 0,0,0,114,122,0,0,0,115,2,0,0,0,32,32,114,
+ 7,0,0,0,114,121,0,0,0,122,19,95,77,111,100,117,
+ 108,101,76,111,99,107,46,114,101,108,101,97,115,101,116,1,
+ 0,0,115,168,0,0,0,128,0,220,14,21,215,14,31,209,
+ 14,31,211,14,33,136,3,216,13,17,143,89,137,89,241,0,
+ 9,9,42,216,15,19,143,122,137,122,152,83,210,15,32,220,
+ 22,34,208,35,68,211,22,69,208,16,69,220,19,22,144,116,
+ 151,122,145,122,147,63,160,81,210,19,38,209,12,38,216,12,
+ 16,143,74,137,74,143,78,137,78,212,12,28,220,19,22,144,
+ 116,151,122,145,122,148,63,216,29,33,144,4,148,10,220,19,
+ 22,144,116,151,124,145,124,211,19,36,160,113,210,19,40,216,
+ 20,24,151,76,145,76,215,20,36,209,20,36,212,20,38,216,
+ 20,24,151,75,145,75,215,20,39,209,20,39,212,20,41,247,
+ 19,9,9,42,247,0,9,9,42,241,0,9,9,42,250,115,
+ 12,0,0,0,161,66,55,67,33,3,195,33,5,67,42,7,
+ 99,1,0,0,0,0,0,0,0,0,0,0,0,6,0,0,
+ 0,3,0,0,0,243,56,0,0,0,151,0,100,1,124,0,
+ 106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,155,2,100,2,116,3,0,0,0,0,0,0,
+ 0,0,124,0,171,1,0,0,0,0,0,0,155,0,157,4,
+ 83,0,41,3,78,122,12,95,77,111,100,117,108,101,76,111,
+ 99,107,40,250,5,41,32,97,116,32,169,2,114,26,0,0,
+ 0,218,2,105,100,114,66,0,0,0,115,1,0,0,0,32,
+ 114,7,0,0,0,218,8,95,95,114,101,112,114,95,95,122,
+ 20,95,77,111,100,117,108,101,76,111,99,107,46,95,95,114,
+ 101,112,114,95,95,129,1,0,0,115,29,0,0,0,128,0,
+ 216,17,29,152,100,159,105,153,105,152,93,168,37,180,2,176,
+ 52,179,8,168,122,208,15,58,208,8,58,114,22,0,0,0,
+ 78,41,9,114,11,0,0,0,114,10,0,0,0,114,3,0,
+ 0,0,114,12,0,0,0,114,47,0,0,0,114,118,0,0,
+ 0,114,120,0,0,0,114,121,0,0,0,114,132,0,0,0,
+ 114,31,0,0,0,114,22,0,0,0,114,7,0,0,0,114,
+ 107,0,0,0,114,107,0,0,0,226,0,0,0,115,35,0,
+ 0,0,132,0,241,2,3,5,8,242,10,54,5,26,242,112,
+ 1,14,5,10,242,32,66,1,5,38,242,72,2,11,5,42,
+ 243,26,1,5,59,114,22,0,0,0,114,107,0,0,0,99,
+ 0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,
+ 0,0,0,0,243,40,0,0,0,151,0,101,0,90,1,100,
+ 0,90,2,100,1,90,3,100,2,132,0,90,4,100,3,132,
+ 0,90,5,100,4,132,0,90,6,100,5,132,0,90,7,121,
+ 6,41,7,218,16,95,68,117,109,109,121,77,111,100,117,108,
+ 101,76,111,99,107,122,86,65,32,115,105,109,112,108,101,32,
+ 95,77,111,100,117,108,101,76,111,99,107,32,101,113,117,105,
+ 118,97,108,101,110,116,32,102,111,114,32,80,121,116,104,111,
+ 110,32,98,117,105,108,100,115,32,119,105,116,104,111,117,116,
+ 10,32,32,32,32,109,117,108,116,105,45,116,104,114,101,97,
+ 100,105,110,103,32,115,117,112,112,111,114,116,46,99,2,0,
+ 0,0,0,0,0,0,0,0,0,0,2,0,0,0,3,0,
+ 0,0,243,32,0,0,0,151,0,124,1,124,0,95,0,0,
+ 0,0,0,0,0,0,0,100,1,124,0,95,1,0,0,0,
+ 0,0,0,0,0,121,0,169,2,78,114,125,0,0,0,41,
+ 2,114,26,0,0,0,114,113,0,0,0,114,115,0,0,0,
+ 115,2,0,0,0,32,32,114,7,0,0,0,114,47,0,0,
+ 0,122,25,95,68,117,109,109,121,77,111,100,117,108,101,76,
+ 111,99,107,46,95,95,105,110,105,116,95,95,137,1,0,0,
+ 115,16,0,0,0,128,0,216,20,24,136,4,140,9,216,21,
+ 22,136,4,141,10,114,22,0,0,0,99,1,0,0,0,0,
+ 0,0,0,0,0,0,0,3,0,0,0,3,0,0,0,243,
+ 46,0,0,0,151,0,124,0,120,1,106,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,1,
+ 122,13,0,0,99,2,95,0,0,0,0,0,0,0,0,0,
+ 121,2,41,3,78,233,1,0,0,0,84,41,1,114,113,0,
+ 0,0,114,66,0,0,0,115,1,0,0,0,32,114,7,0,
+ 0,0,114,120,0,0,0,122,24,95,68,117,109,109,121,77,
+ 111,100,117,108,101,76,111,99,107,46,97,99,113,117,105,114,
+ 101,141,1,0,0,115,18,0,0,0,128,0,216,8,12,143,
+ 10,138,10,144,97,137,15,141,10,216,15,19,114,22,0,0,
+ 0,99,1,0,0,0,0,0,0,0,0,0,0,0,3,0,
+ 0,0,3,0,0,0,243,98,0,0,0,151,0,124,0,106,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,100,1,107,40,0,0,114,11,116,3,0,0,0,
+ 0,0,0,0,0,100,2,171,1,0,0,0,0,0,0,130,
+ 1,124,0,120,1,106,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,100,3,122,23,0,0,99,
+ 2,95,0,0,0,0,0,0,0,0,0,121,0,41,4,78,
+ 114,125,0,0,0,114,124,0,0,0,114,138,0,0,0,41,
+ 2,114,113,0,0,0,114,126,0,0,0,114,66,0,0,0,
+ 115,1,0,0,0,32,114,7,0,0,0,114,121,0,0,0,
+ 122,24,95,68,117,109,109,121,77,111,100,117,108,101,76,111,
+ 99,107,46,114,101,108,101,97,115,101,145,1,0,0,115,38,
+ 0,0,0,128,0,216,11,15,143,58,137,58,152,17,138,63,
+ 220,18,30,208,31,64,211,18,65,208,12,65,216,8,12,143,
+ 10,138,10,144,97,137,15,142,10,114,22,0,0,0,99,1,
+ 0,0,0,0,0,0,0,0,0,0,0,6,0,0,0,3,
+ 0,0,0,243,56,0,0,0,151,0,100,1,124,0,106,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,155,2,100,2,116,3,0,0,0,0,0,0,0,0,
+ 124,0,171,1,0,0,0,0,0,0,155,0,157,4,83,0,
+ 41,3,78,122,17,95,68,117,109,109,121,77,111,100,117,108,
+ 101,76,111,99,107,40,114,129,0,0,0,114,130,0,0,0,
+ 114,66,0,0,0,115,1,0,0,0,32,114,7,0,0,0,
+ 114,132,0,0,0,122,25,95,68,117,109,109,121,77,111,100,
+ 117,108,101,76,111,99,107,46,95,95,114,101,112,114,95,95,
+ 150,1,0,0,115,29,0,0,0,128,0,216,17,34,160,52,
+ 167,57,161,57,160,45,168,117,180,82,184,4,179,88,176,74,
+ 208,15,63,208,8,63,114,22,0,0,0,78,41,8,114,11,
+ 0,0,0,114,10,0,0,0,114,3,0,0,0,114,12,0,
+ 0,0,114,47,0,0,0,114,120,0,0,0,114,121,0,0,
+ 0,114,132,0,0,0,114,31,0,0,0,114,22,0,0,0,
+ 114,7,0,0,0,114,134,0,0,0,114,134,0,0,0,133,
+ 1,0,0,115,28,0,0,0,132,0,241,2,1,5,32,242,
+ 6,2,5,23,242,8,2,5,20,242,8,3,5,24,243,10,
+ 1,5,64,1,114,22,0,0,0,114,134,0,0,0,99,0,
+ 0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,
+ 0,0,0,243,30,0,0,0,151,0,101,0,90,1,100,0,
+ 90,2,100,1,132,0,90,3,100,2,132,0,90,4,100,3,
+ 132,0,90,5,121,4,41,5,218,18,95,77,111,100,117,108,
+ 101,76,111,99,107,77,97,110,97,103,101,114,99,2,0,0,
+ 0,0,0,0,0,0,0,0,0,2,0,0,0,3,0,0,
+ 0,243,32,0,0,0,151,0,124,1,124,0,95,0,0,0,
+ 0,0,0,0,0,0,100,0,124,0,95,1,0,0,0,0,
+ 0,0,0,0,121,0,114,2,0,0,0,41,2,218,5,95,
+ 110,97,109,101,218,5,95,108,111,99,107,114,115,0,0,0,
+ 115,2,0,0,0,32,32,114,7,0,0,0,114,47,0,0,
+ 0,122,27,95,77,111,100,117,108,101,76,111,99,107,77,97,
+ 110,97,103,101,114,46,95,95,105,110,105,116,95,95,156,1,
+ 0,0,115,16,0,0,0,128,0,216,21,25,136,4,140,10,
+ 216,21,25,136,4,141,10,114,22,0,0,0,99,1,0,0,
+ 0,0,0,0,0,0,0,0,0,3,0,0,0,3,0,0,
+ 0,243,108,0,0,0,151,0,116,1,0,0,0,0,0,0,
+ 0,0,124,0,106,2,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,171,1,0,0,0,0,0,0,
+ 124,0,95,2,0,0,0,0,0,0,0,0,124,0,106,4,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,106,7,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,171,0,0,0,0,0,0,0,1,0,
+ 121,0,114,2,0,0,0,41,4,218,16,95,103,101,116,95,
+ 109,111,100,117,108,101,95,108,111,99,107,114,144,0,0,0,
+ 114,145,0,0,0,114,120,0,0,0,114,66,0,0,0,115,
+ 1,0,0,0,32,114,7,0,0,0,114,87,0,0,0,122,
+ 28,95,77,111,100,117,108,101,76,111,99,107,77,97,110,97,
+ 103,101,114,46,95,95,101,110,116,101,114,95,95,160,1,0,
+ 0,115,34,0,0,0,128,0,220,21,37,160,100,167,106,161,
+ 106,211,21,49,136,4,140,10,216,8,12,143,10,137,10,215,
+ 8,26,209,8,26,213,8,28,114,22,0,0,0,99,1,0,
+ 0,0,0,0,0,0,0,0,0,0,2,0,0,0,15,0,
+ 0,0,243,56,0,0,0,151,0,124,0,106,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,
+ 3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,171,0,0,0,0,0,0,0,1,0,121,0,114,
+ 2,0,0,0,41,2,114,145,0,0,0,114,121,0,0,0,
+ 114,89,0,0,0,115,3,0,0,0,32,32,32,114,7,0,
+ 0,0,114,92,0,0,0,122,27,95,77,111,100,117,108,101,
+ 76,111,99,107,77,97,110,97,103,101,114,46,95,95,101,120,
+ 105,116,95,95,164,1,0,0,115,18,0,0,0,128,0,216,
+ 8,12,143,10,137,10,215,8,26,209,8,26,213,8,28,114,
+ 22,0,0,0,78,41,6,114,11,0,0,0,114,10,0,0,
+ 0,114,3,0,0,0,114,47,0,0,0,114,87,0,0,0,
+ 114,92,0,0,0,114,31,0,0,0,114,22,0,0,0,114,
+ 7,0,0,0,114,142,0,0,0,114,142,0,0,0,154,1,
+ 0,0,115,17,0,0,0,132,0,242,4,2,5,26,242,8,
+ 2,5,29,243,8,1,5,29,114,22,0,0,0,114,142,0,
+ 0,0,99,1,0,0,0,0,0,0,0,0,0,0,0,4,
+ 0,0,0,3,0,0,0,243,74,1,0,0,151,0,116,0,
+ 0,0,0,0,0,0,0,0,106,3,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,171,0,0,0,
+ 0,0,0,0,1,0,9,0,9,0,116,5,0,0,0,0,
+ 0,0,0,0,124,0,25,0,0,0,171,0,0,0,0,0,
+ 0,0,125,1,124,1,128,63,116,8,0,0,0,0,0,0,
+ 0,0,128,12,116,11,0,0,0,0,0,0,0,0,124,0,
+ 171,1,0,0,0,0,0,0,125,1,110,11,116,13,0,0,
+ 0,0,0,0,0,0,124,0,171,1,0,0,0,0,0,0,
+ 125,1,124,0,102,1,100,2,132,1,125,2,116,14,0,0,
+ 0,0,0,0,0,0,106,17,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,124,1,124,2,171,2,
+ 0,0,0,0,0,0,116,4,0,0,0,0,0,0,0,0,
+ 124,0,60,0,0,0,116,0,0,0,0,0,0,0,0,0,
+ 106,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,171,0,0,0,0,0,0,0,1,0,124,1,
+ 83,0,35,0,116,6,0,0,0,0,0,0,0,0,36,0,
+ 114,5,1,0,100,1,125,1,89,0,140,100,119,0,120,3,
+ 89,0,119,1,35,0,116,0,0,0,0,0,0,0,0,0,
+ 106,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,171,0,0,0,0,0,0,0,1,0,119,0,
+ 120,3,89,0,119,1,41,3,122,139,71,101,116,32,111,114,
+ 32,99,114,101,97,116,101,32,116,104,101,32,109,111,100,117,
+ 108,101,32,108,111,99,107,32,102,111,114,32,97,32,103,105,
+ 118,101,110,32,109,111,100,117,108,101,32,110,97,109,101,46,
+ 10,10,32,32,32,32,65,99,113,117,105,114,101,47,114,101,
+ 108,101,97,115,101,32,105,110,116,101,114,110,97,108,108,121,
+ 32,116,104,101,32,103,108,111,98,97,108,32,105,109,112,111,
+ 114,116,32,108,111,99,107,32,116,111,32,112,114,111,116,101,
+ 99,116,10,32,32,32,32,95,109,111,100,117,108,101,95,108,
+ 111,99,107,115,46,78,99,2,0,0,0,0,0,0,0,0,
+ 0,0,0,4,0,0,0,19,0,0,0,243,196,0,0,0,
+ 151,0,116,0,0,0,0,0,0,0,0,0,106,3,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 171,0,0,0,0,0,0,0,1,0,9,0,116,4,0,0,
+ 0,0,0,0,0,0,106,7,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,124,1,171,1,0,0,
+ 0,0,0,0,124,0,117,0,114,7,116,4,0,0,0,0,
+ 0,0,0,0,124,1,61,0,116,0,0,0,0,0,0,0,
+ 0,0,106,9,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,171,0,0,0,0,0,0,0,1,0,
+ 121,0,35,0,116,0,0,0,0,0,0,0,0,0,106,9,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,171,0,0,0,0,0,0,0,1,0,119,0,120,3,
+ 89,0,119,1,114,2,0,0,0,41,5,218,4,95,105,109,
+ 112,218,12,97,99,113,117,105,114,101,95,108,111,99,107,218,
+ 13,95,109,111,100,117,108,101,95,108,111,99,107,115,114,76,
+ 0,0,0,218,12,114,101,108,101,97,115,101,95,108,111,99,
+ 107,41,2,114,61,0,0,0,114,26,0,0,0,115,2,0,
+ 0,0,32,32,114,7,0,0,0,218,2,99,98,122,28,95,
+ 103,101,116,95,109,111,100,117,108,101,95,108,111,99,107,46,
+ 60,108,111,99,97,108,115,62,46,99,98,189,1,0,0,115,
+ 73,0,0,0,128,0,220,16,20,215,16,33,209,16,33,212,
+ 16,35,240,2,7,17,40,244,8,0,24,37,215,23,40,209,
+ 23,40,168,20,211,23,46,176,35,209,23,53,220,28,41,168,
+ 36,208,28,47,228,20,24,215,20,37,209,20,37,213,20,39,
+ 248,148,68,215,20,37,209,20,37,213,20,39,250,115,11,0,
+ 0,0,150,30,65,9,0,193,9,22,65,31,3,41,10,114,
+ 151,0,0,0,114,152,0,0,0,114,153,0,0,0,114,73,
+ 0,0,0,114,109,0,0,0,114,134,0,0,0,114,107,0,
+ 0,0,114,52,0,0,0,114,61,0,0,0,114,154,0,0,
+ 0,41,3,114,26,0,0,0,114,83,0,0,0,114,155,0,
+ 0,0,115,3,0,0,0,32,32,32,114,7,0,0,0,114,
+ 147,0,0,0,114,147,0,0,0,170,1,0,0,115,156,0,
+ 0,0,128,0,244,12,0,5,9,215,4,21,209,4,21,212,
+ 4,23,240,2,25,5,28,240,2,3,9,24,220,19,32,160,
+ 20,209,19,38,211,19,40,136,68,240,8,0,12,16,136,60,
+ 220,15,22,136,127,220,23,39,168,4,211,23,45,145,4,228,
+ 23,34,160,52,211,23,40,144,4,224,29,33,243,0,9,13,
+ 40,244,22,0,35,43,167,44,161,44,168,116,176,82,211,34,
+ 56,140,77,152,36,209,12,31,228,8,12,215,8,25,209,8,
+ 25,212,8,27,224,11,15,128,75,248,244,49,0,16,24,242,
+ 0,1,9,24,216,19,23,138,68,240,3,1,9,24,251,244,
+ 44,0,9,13,215,8,25,209,8,25,213,8,27,250,115,41,
+ 0,0,0,151,13,65,59,0,164,65,1,66,12,0,193,59,
+ 11,66,9,3,194,6,2,66,12,0,194,8,1,66,9,3,
+ 194,9,3,66,12,0,194,12,22,66,34,3,99,1,0,0,
+ 0,0,0,0,0,0,0,0,0,4,0,0,0,3,0,0,
+ 0,243,122,0,0,0,151,0,116,1,0,0,0,0,0,0,
+ 0,0,124,0,171,1,0,0,0,0,0,0,125,1,9,0,
+ 124,1,106,3,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,171,0,0,0,0,0,0,0,1,0,
+ 124,1,106,5,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,171,0,0,0,0,0,0,0,1,0,
+ 121,1,35,0,116,6,0,0,0,0,0,0,0,0,36,0,
+ 114,3,1,0,89,0,121,1,119,0,120,3,89,0,119,1,
+ 41,2,122,189,65,99,113,117,105,114,101,115,32,116,104,101,
+ 110,32,114,101,108,101,97,115,101,115,32,116,104,101,32,109,
+ 111,100,117,108,101,32,108,111,99,107,32,102,111,114,32,97,
+ 32,103,105,118,101,110,32,109,111,100,117,108,101,32,110,97,
+ 109,101,46,10,10,32,32,32,32,84,104,105,115,32,105,115,
+ 32,117,115,101,100,32,116,111,32,101,110,115,117,114,101,32,
+ 97,32,109,111,100,117,108,101,32,105,115,32,99,111,109,112,
+ 108,101,116,101,108,121,32,105,110,105,116,105,97,108,105,122,
+ 101,100,44,32,105,110,32,116,104,101,10,32,32,32,32,101,
+ 118,101,110,116,32,105,116,32,105,115,32,98,101,105,110,103,
+ 32,105,109,112,111,114,116,101,100,32,98,121,32,97,110,111,
+ 116,104,101,114,32,116,104,114,101,97,100,46,10,32,32,32,
+ 32,78,41,4,114,147,0,0,0,114,120,0,0,0,114,121,
+ 0,0,0,114,94,0,0,0,41,2,114,26,0,0,0,114,
+ 83,0,0,0,115,2,0,0,0,32,32,114,7,0,0,0,
+ 218,19,95,108,111,99,107,95,117,110,108,111,99,107,95,109,
+ 111,100,117,108,101,114,157,0,0,0,207,1,0,0,115,61,
+ 0,0,0,128,0,244,12,0,12,28,152,68,211,11,33,128,
+ 68,240,2,7,5,23,216,8,12,143,12,137,12,140,14,240,
+ 12,0,9,13,143,12,137,12,141,14,248,244,11,0,12,26,
+ 242,0,3,5,13,241,6,0,9,13,240,7,3,5,13,250,
+ 115,12,0,0,0,141,16,46,0,174,9,58,3,185,1,58,
+ 3,99,1,0,0,0,0,0,0,0,0,0,0,0,5,0,
+ 0,0,15,0,0,0,243,18,0,0,0,151,0,2,0,124,
+ 0,124,1,105,0,124,2,164,1,142,1,83,0,41,1,97,
+ 46,1,0,0,114,101,109,111,118,101,95,105,109,112,111,114,
+ 116,108,105,98,95,102,114,97,109,101,115,32,105,110,32,105,
+ 109,112,111,114,116,46,99,32,119,105,108,108,32,97,108,119,
+ 97,121,115,32,114,101,109,111,118,101,32,115,101,113,117,101,
+ 110,99,101,115,10,32,32,32,32,111,102,32,105,109,112,111,
+ 114,116,108,105,98,32,102,114,97,109,101,115,32,116,104,97,
+ 116,32,101,110,100,32,119,105,116,104,32,97,32,99,97,108,
+ 108,32,116,111,32,116,104,105,115,32,102,117,110,99,116,105,
+ 111,110,10,10,32,32,32,32,85,115,101,32,105,116,32,105,
+ 110,115,116,101,97,100,32,111,102,32,97,32,110,111,114,109,
+ 97,108,32,99,97,108,108,32,105,110,32,112,108,97,99,101,
+ 115,32,119,104,101,114,101,32,105,110,99,108,117,100,105,110,
+ 103,32,116,104,101,32,105,109,112,111,114,116,108,105,98,10,
+ 32,32,32,32,102,114,97,109,101,115,32,105,110,116,114,111,
+ 100,117,99,101,115,32,117,110,119,97,110,116,101,100,32,110,
+ 111,105,115,101,32,105,110,116,111,32,116,104,101,32,116,114,
+ 97,99,101,98,97,99,107,32,40,101,46,103,46,32,119,104,
+ 101,110,32,101,120,101,99,117,116,105,110,103,10,32,32,32,
+ 32,109,111,100,117,108,101,32,99,111,100,101,41,10,32,32,
+ 32,32,114,31,0,0,0,41,3,218,1,102,114,90,0,0,
+ 0,218,4,107,119,100,115,115,3,0,0,0,32,32,32,114,
+ 7,0,0,0,218,25,95,99,97,108,108,95,119,105,116,104,
+ 95,102,114,97,109,101,115,95,114,101,109,111,118,101,100,114,
+ 161,0,0,0,224,1,0,0,115,20,0,0,0,128,0,241,
+ 16,0,12,13,136,100,208,11,27,144,100,209,11,27,208,4,
+ 27,114,22,0,0,0,114,138,0,0,0,41,1,218,9,118,
+ 101,114,98,111,115,105,116,121,99,1,0,0,0,0,0,0,
+ 0,1,0,0,0,5,0,0,0,7,0,0,0,243,188,0,
+ 0,0,151,0,116,0,0,0,0,0,0,0,0,0,106,2,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,106,4,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,124,1,107,92,0,0,114,63,124,0,
+ 106,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,100,1,171,1,0,0,0,0,0,0,115,5,
+ 100,2,124,0,122,0,0,0,125,0,116,9,0,0,0,0,
+ 0,0,0,0,2,0,124,0,106,10,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,124,2,142,0,
+ 116,0,0,0,0,0,0,0,0,0,106,12,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,3,
+ 171,2,0,0,0,0,0,0,1,0,121,4,121,4,41,5,
+ 122,61,80,114,105,110,116,32,116,104,101,32,109,101,115,115,
+ 97,103,101,32,116,111,32,115,116,100,101,114,114,32,105,102,
+ 32,45,118,47,80,89,84,72,79,78,86,69,82,66,79,83,
+ 69,32,105,115,32,116,117,114,110,101,100,32,111,110,46,41,
+ 2,250,1,35,122,7,105,109,112,111,114,116,32,122,2,35,
+ 32,41,1,218,4,102,105,108,101,78,41,7,114,24,0,0,
+ 0,218,5,102,108,97,103,115,218,7,118,101,114,98,111,115,
+ 101,218,10,115,116,97,114,116,115,119,105,116,104,218,5,112,
+ 114,105,110,116,218,6,102,111,114,109,97,116,218,6,115,116,
+ 100,101,114,114,41,3,218,7,109,101,115,115,97,103,101,114,
+ 162,0,0,0,114,90,0,0,0,115,3,0,0,0,32,32,
+ 32,114,7,0,0,0,218,16,95,118,101,114,98,111,115,101,
+ 95,109,101,115,115,97,103,101,114,173,0,0,0,235,1,0,
+ 0,115,74,0,0,0,128,0,228,7,10,135,121,129,121,215,
+ 7,24,209,7,24,152,73,210,7,37,216,15,22,215,15,33,
+ 209,15,33,208,34,50,212,15,51,216,22,26,152,87,145,110,
+ 136,71,220,8,13,136,110,136,103,143,110,137,110,152,100,208,
+ 14,35,172,35,175,42,169,42,214,8,53,240,7,0,8,38,
+ 114,22,0,0,0,99,1,0,0,0,0,0,0,0,0,0,
+ 0,0,4,0,0,0,3,0,0,0,243,42,0,0,0,135,
+ 0,151,0,136,0,102,1,100,1,132,8,125,1,116,1,0,
+ 0,0,0,0,0,0,0,124,1,137,0,171,2,0,0,0,
+ 0,0,0,1,0,124,1,83,0,41,2,122,49,68,101,99,
+ 111,114,97,116,111,114,32,116,111,32,118,101,114,105,102,121,
+ 32,116,104,101,32,110,97,109,101,100,32,109,111,100,117,108,
+ 101,32,105,115,32,98,117,105,108,116,45,105,110,46,99,2,
+ 0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,19,
+ 0,0,0,243,90,0,0,0,149,1,151,0,124,1,116,0,
+ 0,0,0,0,0,0,0,0,106,2,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,118,1,114,16,
+ 116,5,0,0,0,0,0,0,0,0,124,1,155,2,100,1,
+ 157,2,124,1,172,2,171,2,0,0,0,0,0,0,130,1,
+ 2,0,137,2,124,0,124,1,171,2,0,0,0,0,0,0,
+ 83,0,41,3,78,250,25,32,105,115,32,110,111,116,32,97,
+ 32,98,117,105,108,116,45,105,110,32,109,111,100,117,108,101,
+ 114,25,0,0,0,41,3,114,24,0,0,0,218,20,98,117,
+ 105,108,116,105,110,95,109,111,100,117,108,101,95,110,97,109,
+ 101,115,218,11,73,109,112,111,114,116,69,114,114,111,114,169,
+ 3,114,44,0,0,0,218,8,102,117,108,108,110,97,109,101,
+ 218,3,102,120,110,115,3,0,0,0,32,32,128,114,7,0,
+ 0,0,218,25,95,114,101,113,117,105,114,101,115,95,98,117,
+ 105,108,116,105,110,95,119,114,97,112,112,101,114,122,52,95,
+ 114,101,113,117,105,114,101,115,95,98,117,105,108,116,105,110,
+ 46,60,108,111,99,97,108,115,62,46,95,114,101,113,117,105,
+ 114,101,115,95,98,117,105,108,116,105,110,95,119,114,97,112,
+ 112,101,114,245,1,0,0,115,56,0,0,0,248,128,0,216,
+ 11,19,156,51,215,27,51,209,27,51,209,11,51,220,18,29,
+ 160,24,160,12,208,44,69,208,30,70,216,35,43,244,3,1,
+ 19,45,240,0,1,13,45,225,15,18,144,52,152,24,211,15,
+ 34,208,8,34,114,22,0,0,0,169,1,114,21,0,0,0,
+ 41,2,114,181,0,0,0,114,182,0,0,0,115,2,0,0,
+ 0,96,32,114,7,0,0,0,218,17,95,114,101,113,117,105,
+ 114,101,115,95,98,117,105,108,116,105,110,114,184,0,0,0,
+ 243,1,0,0,115,27,0,0,0,248,128,0,244,4,4,5,
+ 35,244,10,0,5,10,208,10,35,160,83,212,4,41,216,11,
+ 36,208,4,36,114,22,0,0,0,99,1,0,0,0,0,0,
+ 0,0,0,0,0,0,4,0,0,0,3,0,0,0,243,42,
+ 0,0,0,135,0,151,0,136,0,102,1,100,1,132,8,125,
+ 1,116,1,0,0,0,0,0,0,0,0,124,1,137,0,171,
+ 2,0,0,0,0,0,0,1,0,124,1,83,0,41,2,122,
+ 47,68,101,99,111,114,97,116,111,114,32,116,111,32,118,101,
+ 114,105,102,121,32,116,104,101,32,110,97,109,101,100,32,109,
+ 111,100,117,108,101,32,105,115,32,102,114,111,122,101,110,46,
+ 99,2,0,0,0,0,0,0,0,0,0,0,0,4,0,0,
+ 0,19,0,0,0,243,96,0,0,0,149,1,151,0,116,0,
+ 0,0,0,0,0,0,0,0,106,3,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,124,1,171,1,
+ 0,0,0,0,0,0,115,16,116,5,0,0,0,0,0,0,
+ 0,0,124,1,155,2,100,1,157,2,124,1,172,2,171,2,
+ 0,0,0,0,0,0,130,1,2,0,137,2,124,0,124,1,
+ 171,2,0,0,0,0,0,0,83,0,41,3,78,122,23,32,
+ 105,115,32,110,111,116,32,97,32,102,114,111,122,101,110,32,
+ 109,111,100,117,108,101,114,25,0,0,0,41,3,114,151,0,
+ 0,0,218,9,105,115,95,102,114,111,122,101,110,114,178,0,
+ 0,0,114,179,0,0,0,115,3,0,0,0,32,32,128,114,
+ 7,0,0,0,218,24,95,114,101,113,117,105,114,101,115,95,
+ 102,114,111,122,101,110,95,119,114,97,112,112,101,114,122,50,
+ 95,114,101,113,117,105,114,101,115,95,102,114,111,122,101,110,
+ 46,60,108,111,99,97,108,115,62,46,95,114,101,113,117,105,
+ 114,101,115,95,102,114,111,122,101,110,95,119,114,97,112,112,
+ 101,114,0,2,0,0,115,54,0,0,0,248,128,0,220,15,
+ 19,143,126,137,126,152,104,212,15,39,220,18,29,160,24,160,
+ 12,208,44,67,208,30,68,216,35,43,244,3,1,19,45,240,
+ 0,1,13,45,225,15,18,144,52,152,24,211,15,34,208,8,
+ 34,114,22,0,0,0,114,183,0,0,0,41,2,114,181,0,
+ 0,0,114,188,0,0,0,115,2,0,0,0,96,32,114,7,
+ 0,0,0,218,16,95,114,101,113,117,105,114,101,115,95,102,
+ 114,111,122,101,110,114,189,0,0,0,254,1,0,0,115,27,
+ 0,0,0,248,128,0,244,4,4,5,35,244,10,0,5,10,
+ 208,10,34,160,67,212,4,40,216,11,35,208,4,35,114,22,
+ 0,0,0,99,2,0,0,0,0,0,0,0,0,0,0,0,
+ 4,0,0,0,3,0,0,0,243,240,0,0,0,151,0,100,
+ 1,125,2,116,0,0,0,0,0,0,0,0,0,106,3,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,124,2,116,4,0,0,0,0,0,0,0,0,171,2,0,
+ 0,0,0,0,0,1,0,116,7,0,0,0,0,0,0,0,
+ 0,124,1,124,0,171,2,0,0,0,0,0,0,125,3,124,
+ 1,116,8,0,0,0,0,0,0,0,0,106,10,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,
+ 0,114,50,116,8,0,0,0,0,0,0,0,0,106,10,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,124,1,25,0,0,0,125,4,116,13,0,0,0,0,0,
+ 0,0,0,124,3,124,4,171,2,0,0,0,0,0,0,1,
+ 0,116,8,0,0,0,0,0,0,0,0,106,10,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,
+ 1,25,0,0,0,83,0,116,15,0,0,0,0,0,0,0,
+ 0,124,3,171,1,0,0,0,0,0,0,83,0,41,2,122,
+ 130,76,111,97,100,32,116,104,101,32,115,112,101,99,105,102,
+ 105,101,100,32,109,111,100,117,108,101,32,105,110,116,111,32,
+ 115,121,115,46,109,111,100,117,108,101,115,32,97,110,100,32,
+ 114,101,116,117,114,110,32,105,116,46,10,10,32,32,32,32,
+ 84,104,105,115,32,109,101,116,104,111,100,32,105,115,32,100,
+ 101,112,114,101,99,97,116,101,100,46,32,32,85,115,101,32,
+ 108,111,97,100,101,114,46,101,120,101,99,95,109,111,100,117,
+ 108,101,40,41,32,105,110,115,116,101,97,100,46,10,10,32,
+ 32,32,32,122,103,116,104,101,32,108,111,97,100,95,109,111,
+ 100,117,108,101,40,41,32,109,101,116,104,111,100,32,105,115,
+ 32,100,101,112,114,101,99,97,116,101,100,32,97,110,100,32,
+ 115,108,97,116,101,100,32,102,111,114,32,114,101,109,111,118,
+ 97,108,32,105,110,32,80,121,116,104,111,110,32,51,46,49,
+ 50,59,32,117,115,101,32,101,120,101,99,95,109,111,100,117,
+ 108,101,40,41,32,105,110,115,116,101,97,100,41,8,218,9,
+ 95,119,97,114,110,105,110,103,115,218,4,119,97,114,110,218,
+ 18,68,101,112,114,101,99,97,116,105,111,110,87,97,114,110,
+ 105,110,103,218,16,115,112,101,99,95,102,114,111,109,95,108,
+ 111,97,100,101,114,114,24,0,0,0,218,7,109,111,100,117,
+ 108,101,115,218,5,95,101,120,101,99,218,5,95,108,111,97,
+ 100,41,5,114,44,0,0,0,114,180,0,0,0,218,3,109,
+ 115,103,218,4,115,112,101,99,218,6,109,111,100,117,108,101,
+ 115,5,0,0,0,32,32,32,32,32,114,7,0,0,0,218,
+ 17,95,108,111,97,100,95,109,111,100,117,108,101,95,115,104,
+ 105,109,114,201,0,0,0,10,2,0,0,115,97,0,0,0,
+ 128,0,240,12,1,12,51,128,67,228,4,13,135,78,129,78,
+ 144,51,212,24,42,212,4,43,220,11,27,152,72,160,100,211,
+ 11,43,128,68,216,7,15,148,51,151,59,145,59,209,7,30,
+ 220,17,20,151,27,145,27,152,88,209,17,38,136,6,220,8,
+ 13,136,100,144,70,212,8,27,220,15,18,143,123,137,123,152,
+ 56,209,15,36,208,8,36,228,15,20,144,84,139,123,208,8,
+ 26,114,22,0,0,0,99,1,0,0,0,0,0,0,0,0,
+ 0,0,0,6,0,0,0,3,0,0,0,243,252,0,0,0,
+ 151,0,116,1,0,0,0,0,0,0,0,0,124,0,100,1,
+ 100,2,171,3,0,0,0,0,0,0,125,1,116,1,0,0,
+ 0,0,0,0,0,0,124,0,100,3,100,2,171,3,0,0,
+ 0,0,0,0,120,1,125,2,114,11,116,3,0,0,0,0,
+ 0,0,0,0,124,2,171,1,0,0,0,0,0,0,83,0,
+ 9,0,124,0,106,4,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,125,3,9,0,124,0,106,8,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,125,4,100,5,124,3,155,2,100,6,124,4,155,2,
+ 100,7,157,5,83,0,35,0,116,6,0,0,0,0,0,0,
+ 0,0,36,0,114,5,1,0,100,4,125,3,89,0,140,35,
+ 119,0,120,3,89,0,119,1,35,0,116,6,0,0,0,0,
+ 0,0,0,0,36,0,114,22,1,0,124,1,128,8,100,5,
+ 124,3,155,2,100,7,157,3,99,2,89,0,83,0,100,5,
+ 124,3,155,2,100,8,124,1,155,2,100,9,157,5,99,2,
+ 89,0,83,0,119,0,120,3,89,0,119,1,41,10,122,44,
+ 84,104,101,32,105,109,112,108,101,109,101,110,116,97,116,105,
+ 111,110,32,111,102,32,77,111,100,117,108,101,84,121,112,101,
+ 46,95,95,114,101,112,114,95,95,40,41,46,218,10,95,95,
+ 108,111,97,100,101,114,95,95,78,218,8,95,95,115,112,101,
+ 99,95,95,250,1,63,250,8,60,109,111,100,117,108,101,32,
+ 250,6,32,102,114,111,109,32,250,1,62,250,2,32,40,250,
+ 2,41,62,41,5,114,15,0,0,0,218,22,95,109,111,100,
+ 117,108,101,95,114,101,112,114,95,102,114,111,109,95,115,112,
+ 101,99,114,11,0,0,0,114,4,0,0,0,218,8,95,95,
+ 102,105,108,101,95,95,41,5,114,200,0,0,0,218,6,108,
+ 111,97,100,101,114,114,199,0,0,0,114,26,0,0,0,218,
+ 8,102,105,108,101,110,97,109,101,115,5,0,0,0,32,32,
+ 32,32,32,114,7,0,0,0,218,12,95,109,111,100,117,108,
+ 101,95,114,101,112,114,114,215,0,0,0,29,2,0,0,115,
+ 177,0,0,0,128,0,228,13,20,144,86,152,92,168,52,211,
+ 13,48,128,70,220,15,22,144,118,152,122,168,52,211,15,48,
+ 208,7,48,128,116,208,7,48,220,15,37,160,100,211,15,43,
+ 208,8,43,240,4,3,5,19,216,15,21,143,127,137,127,136,
+ 4,240,6,8,5,54,216,19,25,151,63,145,63,136,8,240,
+ 14,0,18,26,152,36,152,24,160,22,168,8,160,124,176,49,
+ 208,15,53,208,8,53,248,244,21,0,12,26,242,0,1,5,
+ 19,216,15,18,138,4,240,3,1,5,19,251,244,8,0,12,
+ 26,242,0,4,5,53,216,11,17,136,62,216,21,29,152,100,
+ 152,88,160,81,208,19,39,210,12,39,224,21,29,152,100,152,
+ 88,160,82,168,6,160,122,176,18,208,19,52,210,12,52,240,
+ 9,4,5,53,250,115,40,0,0,0,169,12,65,11,0,182,
+ 12,65,28,0,193,11,11,65,25,3,193,24,1,65,25,3,
+ 193,28,17,65,59,3,193,47,9,65,59,3,193,58,1,65,
+ 59,3,99,0,0,0,0,0,0,0,0,0,0,0,0,4,
+ 0,0,0,0,0,0,0,243,164,0,0,0,151,0,101,0,
+ 90,1,100,0,90,2,100,1,90,3,100,2,100,2,100,2,
+ 100,3,156,3,100,4,132,2,90,4,100,5,132,0,90,5,
+ 100,6,132,0,90,6,101,7,100,7,132,0,171,0,0,0,
+ 0,0,0,0,90,8,101,8,106,18,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,100,8,132,0,
+ 171,0,0,0,0,0,0,0,90,8,101,7,100,9,132,0,
+ 171,0,0,0,0,0,0,0,90,10,101,7,100,10,132,0,
+ 171,0,0,0,0,0,0,0,90,11,101,11,106,18,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 100,11,132,0,171,0,0,0,0,0,0,0,90,11,121,2,
+ 41,12,218,10,77,111,100,117,108,101,83,112,101,99,97,208,
+ 5,0,0,84,104,101,32,115,112,101,99,105,102,105,99,97,
+ 116,105,111,110,32,102,111,114,32,97,32,109,111,100,117,108,
+ 101,44,32,117,115,101,100,32,102,111,114,32,108,111,97,100,
+ 105,110,103,46,10,10,32,32,32,32,65,32,109,111,100,117,
+ 108,101,39,115,32,115,112,101,99,32,105,115,32,116,104,101,
+ 32,115,111,117,114,99,101,32,102,111,114,32,105,110,102,111,
+ 114,109,97,116,105,111,110,32,97,98,111,117,116,32,116,104,
+ 101,32,109,111,100,117,108,101,46,32,32,70,111,114,10,32,
+ 32,32,32,100,97,116,97,32,97,115,115,111,99,105,97,116,
+ 101,100,32,119,105,116,104,32,116,104,101,32,109,111,100,117,
+ 108,101,44,32,105,110,99,108,117,100,105,110,103,32,115,111,
+ 117,114,99,101,44,32,117,115,101,32,116,104,101,32,115,112,
+ 101,99,39,115,10,32,32,32,32,108,111,97,100,101,114,46,
+ 10,10,32,32,32,32,96,110,97,109,101,96,32,105,115,32,
+ 116,104,101,32,97,98,115,111,108,117,116,101,32,110,97,109,
+ 101,32,111,102,32,116,104,101,32,109,111,100,117,108,101,46,
+ 32,32,96,108,111,97,100,101,114,96,32,105,115,32,116,104,
+ 101,32,108,111,97,100,101,114,10,32,32,32,32,116,111,32,
+ 117,115,101,32,119,104,101,110,32,108,111,97,100,105,110,103,
+ 32,116,104,101,32,109,111,100,117,108,101,46,32,32,96,112,
+ 97,114,101,110,116,96,32,105,115,32,116,104,101,32,110,97,
+ 109,101,32,111,102,32,116,104,101,10,32,32,32,32,112,97,
+ 99,107,97,103,101,32,116,104,101,32,109,111,100,117,108,101,
+ 32,105,115,32,105,110,46,32,32,84,104,101,32,112,97,114,
+ 101,110,116,32,105,115,32,100,101,114,105,118,101,100,32,102,
+ 114,111,109,32,116,104,101,32,110,97,109,101,46,10,10,32,
+ 32,32,32,96,105,115,95,112,97,99,107,97,103,101,96,32,
+ 100,101,116,101,114,109,105,110,101,115,32,105,102,32,116,104,
+ 101,32,109,111,100,117,108,101,32,105,115,32,99,111,110,115,
+ 105,100,101,114,101,100,32,97,32,112,97,99,107,97,103,101,
+ 32,111,114,10,32,32,32,32,110,111,116,46,32,32,79,110,
+ 32,109,111,100,117,108,101,115,32,116,104,105,115,32,105,115,
+ 32,114,101,102,108,101,99,116,101,100,32,98,121,32,116,104,
+ 101,32,96,95,95,112,97,116,104,95,95,96,32,97,116,116,
+ 114,105,98,117,116,101,46,10,10,32,32,32,32,96,111,114,
+ 105,103,105,110,96,32,105,115,32,116,104,101,32,115,112,101,
+ 99,105,102,105,99,32,108,111,99,97,116,105,111,110,32,117,
+ 115,101,100,32,98,121,32,116,104,101,32,108,111,97,100,101,
+ 114,32,102,114,111,109,32,119,104,105,99,104,32,116,111,10,
+ 32,32,32,32,108,111,97,100,32,116,104,101,32,109,111,100,
+ 117,108,101,44,32,105,102,32,116,104,97,116,32,105,110,102,
+ 111,114,109,97,116,105,111,110,32,105,115,32,97,118,97,105,
+ 108,97,98,108,101,46,32,32,87,104,101,110,32,102,105,108,
+ 101,110,97,109,101,32,105,115,10,32,32,32,32,115,101,116,
+ 44,32,111,114,105,103,105,110,32,119,105,108,108,32,109,97,
+ 116,99,104,46,10,10,32,32,32,32,96,104,97,115,95,108,
+ 111,99,97,116,105,111,110,96,32,105,110,100,105,99,97,116,
+ 101,115,32,116,104,97,116,32,97,32,115,112,101,99,39,115,
+ 32,34,111,114,105,103,105,110,34,32,114,101,102,108,101,99,
+ 116,115,32,97,32,108,111,99,97,116,105,111,110,46,10,32,
+ 32,32,32,87,104,101,110,32,116,104,105,115,32,105,115,32,
+ 84,114,117,101,44,32,96,95,95,102,105,108,101,95,95,96,
+ 32,97,116,116,114,105,98,117,116,101,32,111,102,32,116,104,
+ 101,32,109,111,100,117,108,101,32,105,115,32,115,101,116,46,
+ 10,10,32,32,32,32,96,99,97,99,104,101,100,96,32,105,
+ 115,32,116,104,101,32,108,111,99,97,116,105,111,110,32,111,
+ 102,32,116,104,101,32,99,97,99,104,101,100,32,98,121,116,
+ 101,99,111,100,101,32,102,105,108,101,44,32,105,102,32,97,
+ 110,121,46,32,32,73,116,10,32,32,32,32,99,111,114,114,
+ 101,115,112,111,110,100,115,32,116,111,32,116,104,101,32,96,
+ 95,95,99,97,99,104,101,100,95,95,96,32,97,116,116,114,
+ 105,98,117,116,101,46,10,10,32,32,32,32,96,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,96,32,105,115,32,116,104,101,32,
+ 115,101,113,117,101,110,99,101,32,111,102,32,112,97,116,104,
+ 32,101,110,116,114,105,101,115,32,116,111,10,32,32,32,32,
+ 115,101,97,114,99,104,32,119,104,101,110,32,105,109,112,111,
+ 114,116,105,110,103,32,115,117,98,109,111,100,117,108,101,115,
+ 46,32,32,73,102,32,115,101,116,44,32,105,115,95,112,97,
+ 99,107,97,103,101,32,115,104,111,117,108,100,32,98,101,10,
+ 32,32,32,32,84,114,117,101,45,45,97,110,100,32,70,97,
+ 108,115,101,32,111,116,104,101,114,119,105,115,101,46,10,10,
+ 32,32,32,32,80,97,99,107,97,103,101,115,32,97,114,101,
+ 32,115,105,109,112,108,121,32,109,111,100,117,108,101,115,32,
+ 116,104,97,116,32,40,109,97,121,41,32,104,97,118,101,32,
+ 115,117,98,109,111,100,117,108,101,115,46,32,32,73,102,32,
+ 97,32,115,112,101,99,10,32,32,32,32,104,97,115,32,97,
+ 32,110,111,110,45,78,111,110,101,32,118,97,108,117,101,32,
+ 105,110,32,96,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,96,44,
+ 32,116,104,101,32,105,109,112,111,114,116,10,32,32,32,32,
+ 115,121,115,116,101,109,32,119,105,108,108,32,99,111,110,115,
+ 105,100,101,114,32,109,111,100,117,108,101,115,32,108,111,97,
+ 100,101,100,32,102,114,111,109,32,116,104,101,32,115,112,101,
+ 99,32,97,115,32,112,97,99,107,97,103,101,115,46,10,10,
+ 32,32,32,32,79,110,108,121,32,102,105,110,100,101,114,115,
+ 32,40,115,101,101,32,105,109,112,111,114,116,108,105,98,46,
+ 97,98,99,46,77,101,116,97,80,97,116,104,70,105,110,100,
+ 101,114,32,97,110,100,10,32,32,32,32,105,109,112,111,114,
+ 116,108,105,98,46,97,98,99,46,80,97,116,104,69,110,116,
+ 114,121,70,105,110,100,101,114,41,32,115,104,111,117,108,100,
+ 32,109,111,100,105,102,121,32,77,111,100,117,108,101,83,112,
+ 101,99,32,105,110,115,116,97,110,99,101,115,46,10,10,32,
+ 32,32,32,78,41,3,218,6,111,114,105,103,105,110,218,12,
+ 108,111,97,100,101,114,95,115,116,97,116,101,218,10,105,115,
+ 95,112,97,99,107,97,103,101,99,3,0,0,0,0,0,0,
+ 0,3,0,0,0,2,0,0,0,3,0,0,0,243,124,0,
+ 0,0,151,0,124,1,124,0,95,0,0,0,0,0,0,0,
+ 0,0,124,2,124,0,95,1,0,0,0,0,0,0,0,0,
+ 124,3,124,0,95,2,0,0,0,0,0,0,0,0,124,4,
+ 124,0,95,3,0,0,0,0,0,0,0,0,124,5,114,2,
+ 103,0,110,1,100,0,124,0,95,4,0,0,0,0,0,0,
+ 0,0,103,0,124,0,95,5,0,0,0,0,0,0,0,0,
+ 100,1,124,0,95,6,0,0,0,0,0,0,0,0,100,0,
+ 124,0,95,7,0,0,0,0,0,0,0,0,121,0,169,2,
+ 78,70,41,8,114,26,0,0,0,114,213,0,0,0,114,218,
+ 0,0,0,114,219,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,218,25,95,117,110,105,110,105,116,105,97,108,
+ 105,122,101,100,95,115,117,98,109,111,100,117,108,101,115,218,
+ 13,95,115,101,116,95,102,105,108,101,97,116,116,114,218,7,
+ 95,99,97,99,104,101,100,41,6,114,44,0,0,0,114,26,
+ 0,0,0,114,213,0,0,0,114,218,0,0,0,114,219,0,
+ 0,0,114,220,0,0,0,115,6,0,0,0,32,32,32,32,
+ 32,32,114,7,0,0,0,114,47,0,0,0,122,19,77,111,
+ 100,117,108,101,83,112,101,99,46,95,95,105,110,105,116,95,
+ 95,87,2,0,0,115,68,0,0,0,128,0,224,20,24,136,
+ 4,140,9,216,22,28,136,4,140,11,216,22,28,136,4,140,
+ 11,216,28,40,136,4,212,8,25,217,48,58,169,34,192,4,
+ 136,4,212,8,39,216,41,43,136,4,212,8,38,240,6,0,
+ 30,35,136,4,212,8,26,216,23,27,136,4,141,12,114,22,
+ 0,0,0,99,1,0,0,0,0,0,0,0,0,0,0,0,
+ 5,0,0,0,3,0,0,0,243,60,1,0,0,151,0,100,
+ 1,124,0,106,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,155,2,157,2,100,2,124,0,106,
+ 2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,155,2,157,2,103,2,125,1,124,0,106,4,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,129,30,124,1,106,7,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,100,3,124,0,106,4,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,155,2,157,2,171,1,0,0,0,0,0,0,1,0,124,
+ 0,106,8,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,129,30,124,1,106,7,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,100,4,124,
+ 0,106,8,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,155,0,157,2,171,1,0,0,0,0,0,
+ 0,1,0,124,0,106,10,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,106,12,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,155,0,100,
+ 5,100,6,106,15,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,124,1,171,1,0,0,0,0,0,
+ 0,155,0,100,7,157,4,83,0,41,8,78,122,5,110,97,
+ 109,101,61,122,7,108,111,97,100,101,114,61,122,7,111,114,
+ 105,103,105,110,61,122,27,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,61,250,1,40,122,2,44,32,250,1,41,41,8,114,26,
+ 0,0,0,114,213,0,0,0,114,218,0,0,0,114,51,0,
+ 0,0,114,223,0,0,0,114,45,0,0,0,114,11,0,0,
+ 0,218,4,106,111,105,110,41,2,114,44,0,0,0,114,90,
+ 0,0,0,115,2,0,0,0,32,32,114,7,0,0,0,114,
+ 132,0,0,0,122,19,77,111,100,117,108,101,83,112,101,99,
+ 46,95,95,114,101,112,114,95,95,100,2,0,0,115,145,0,
+ 0,0,128,0,216,18,23,152,4,159,9,153,9,144,125,208,
+ 16,37,168,23,176,20,183,27,177,27,176,15,208,39,64,208,
+ 15,65,136,4,216,11,15,143,59,137,59,208,11,34,216,12,
+ 16,143,75,137,75,152,39,160,36,167,43,161,43,160,31,208,
+ 24,49,212,12,50,216,11,15,215,11,42,209,11,42,208,11,
+ 54,216,12,16,143,75,137,75,208,26,53,176,100,215,54,85,
+ 209,54,85,208,53,86,208,24,87,212,12,88,216,18,22,151,
+ 46,145,46,215,18,41,209,18,41,208,17,42,168,33,168,68,
+ 175,73,169,73,176,100,171,79,208,43,60,184,65,208,15,62,
+ 208,8,62,114,22,0,0,0,99,2,0,0,0,0,0,0,
+ 0,0,0,0,0,4,0,0,0,3,0,0,0,243,114,1,
+ 0,0,151,0,124,0,106,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,125,2,9,0,124,0,
+ 106,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,124,1,106,2,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,107,40,0,0,120,1,
+ 114,123,1,0,124,0,106,4,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,124,1,106,4,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 107,40,0,0,120,1,114,96,1,0,124,0,106,6,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 124,1,106,6,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,107,40,0,0,120,1,114,69,1,0,
+ 124,2,124,1,106,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,107,40,0,0,120,1,114,52,
+ 1,0,124,0,106,8,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,124,1,106,8,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,40,
+ 0,0,120,1,114,25,1,0,124,0,106,10,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,1,
+ 106,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,107,40,0,0,83,0,35,0,116,12,0,0,
+ 0,0,0,0,0,0,36,0,114,9,1,0,116,14,0,0,
+ 0,0,0,0,0,0,99,2,89,0,83,0,119,0,120,3,
+ 89,0,119,1,114,2,0,0,0,41,8,114,223,0,0,0,
+ 114,26,0,0,0,114,213,0,0,0,114,218,0,0,0,218,
+ 6,99,97,99,104,101,100,218,12,104,97,115,95,108,111,99,
+ 97,116,105,111,110,114,4,0,0,0,218,14,78,111,116,73,
+ 109,112,108,101,109,101,110,116,101,100,41,3,114,44,0,0,
+ 0,218,5,111,116,104,101,114,218,4,115,109,115,108,115,3,
+ 0,0,0,32,32,32,114,7,0,0,0,218,6,95,95,101,
+ 113,95,95,122,17,77,111,100,117,108,101,83,112,101,99,46,
+ 95,95,101,113,95,95,108,2,0,0,115,175,0,0,0,128,
+ 0,216,15,19,215,15,46,209,15,46,136,4,240,2,8,9,
+ 34,216,20,24,151,73,145,73,160,21,167,26,161,26,209,20,
+ 43,242,0,5,21,60,216,20,24,151,75,145,75,160,53,167,
+ 60,161,60,209,20,47,242,3,5,21,60,224,20,24,151,75,
+ 145,75,160,53,167,60,161,60,209,20,47,242,5,5,21,60,
+ 240,6,0,21,25,152,69,215,28,60,209,28,60,209,20,60,
+ 242,7,5,21,60,240,8,0,21,25,151,75,145,75,160,53,
+ 167,60,161,60,209,20,47,242,9,5,21,60,240,10,0,21,
+ 25,215,20,37,209,20,37,168,21,215,41,59,209,41,59,209,
+ 20,59,240,11,5,13,61,248,244,12,0,16,30,242,0,1,
+ 9,34,220,19,33,210,12,33,240,3,1,9,34,250,115,18,
+ 0,0,0,142,66,21,66,36,0,194,36,15,66,54,3,194,
+ 53,1,66,54,3,99,1,0,0,0,0,0,0,0,0,0,
+ 0,0,3,0,0,0,3,0,0,0,243,194,0,0,0,151,
+ 0,124,0,106,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,128,72,124,0,106,2,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,
+ 60,124,0,106,4,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,114,48,116,6,0,0,0,0,0,
+ 0,0,0,128,6,116,8,0,0,0,0,0,0,0,0,130,
+ 1,116,6,0,0,0,0,0,0,0,0,106,11,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,
+ 0,106,2,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,171,1,0,0,0,0,0,0,124,0,95,
+ 0,0,0,0,0,0,0,0,0,124,0,106,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,
+ 0,114,2,0,0,0,41,6,114,226,0,0,0,114,218,0,
+ 0,0,114,225,0,0,0,218,19,95,98,111,111,116,115,116,
+ 114,97,112,95,101,120,116,101,114,110,97,108,218,19,78,111,
+ 116,73,109,112,108,101,109,101,110,116,101,100,69,114,114,111,
+ 114,218,11,95,103,101,116,95,99,97,99,104,101,100,114,66,
+ 0,0,0,115,1,0,0,0,32,114,7,0,0,0,114,232,
+ 0,0,0,122,17,77,111,100,117,108,101,83,112,101,99,46,
+ 99,97,99,104,101,100,120,2,0,0,115,74,0,0,0,128,
+ 0,224,11,15,143,60,137,60,208,11,31,216,15,19,143,123,
+ 137,123,208,15,38,168,52,215,43,61,210,43,61,220,19,38,
+ 208,19,46,220,26,45,208,20,45,220,31,50,215,31,62,209,
+ 31,62,184,116,191,123,185,123,211,31,75,144,4,148,12,216,
+ 15,19,143,124,137,124,208,8,27,114,22,0,0,0,99,2,
+ 0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,3,
+ 0,0,0,243,18,0,0,0,151,0,124,1,124,0,95,0,
+ 0,0,0,0,0,0,0,0,121,0,114,2,0,0,0,41,
+ 1,114,226,0,0,0,41,2,114,44,0,0,0,114,232,0,
+ 0,0,115,2,0,0,0,32,32,114,7,0,0,0,114,232,
+ 0,0,0,122,17,77,111,100,117,108,101,83,112,101,99,46,
+ 99,97,99,104,101,100,129,2,0,0,115,9,0,0,0,128,
+ 0,224,23,29,136,4,141,12,114,22,0,0,0,99,1,0,
+ 0,0,0,0,0,0,0,0,0,0,3,0,0,0,3,0,
+ 0,0,243,110,0,0,0,151,0,124,0,106,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,
+ 30,124,0,106,2,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,106,5,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,100,1,171,1,0,
+ 0,0,0,0,0,100,2,25,0,0,0,83,0,124,0,106,
+ 2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,83,0,41,3,122,32,84,104,101,32,110,97,109,
+ 101,32,111,102,32,116,104,101,32,109,111,100,117,108,101,39,
+ 115,32,112,97,114,101,110,116,46,250,1,46,114,125,0,0,
+ 0,41,3,114,223,0,0,0,114,26,0,0,0,218,10,114,
+ 112,97,114,116,105,116,105,111,110,114,66,0,0,0,115,1,
+ 0,0,0,32,114,7,0,0,0,218,6,112,97,114,101,110,
+ 116,122,17,77,111,100,117,108,101,83,112,101,99,46,112,97,
+ 114,101,110,116,133,2,0,0,115,52,0,0,0,128,0,240,
+ 6,0,12,16,215,11,42,209,11,42,208,11,50,216,19,23,
+ 151,57,145,57,215,19,39,209,19,39,168,3,211,19,44,168,
+ 81,209,19,47,208,12,47,224,19,23,151,57,145,57,208,12,
+ 28,114,22,0,0,0,99,1,0,0,0,0,0,0,0,0,
+ 0,0,0,1,0,0,0,3,0,0,0,243,26,0,0,0,
+ 151,0,124,0,106,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,83,0,114,2,0,0,0,41,
+ 1,114,225,0,0,0,114,66,0,0,0,115,1,0,0,0,
+ 32,114,7,0,0,0,114,233,0,0,0,122,23,77,111,100,
+ 117,108,101,83,112,101,99,46,104,97,115,95,108,111,99,97,
+ 116,105,111,110,141,2,0,0,115,14,0,0,0,128,0,224,
+ 15,19,215,15,33,209,15,33,208,8,33,114,22,0,0,0,
+ 99,2,0,0,0,0,0,0,0,0,0,0,0,3,0,0,
+ 0,3,0,0,0,243,36,0,0,0,151,0,116,1,0,0,
+ 0,0,0,0,0,0,124,1,171,1,0,0,0,0,0,0,
+ 124,0,95,1,0,0,0,0,0,0,0,0,121,0,114,2,
+ 0,0,0,41,2,218,4,98,111,111,108,114,225,0,0,0,
+ 41,2,114,44,0,0,0,218,5,118,97,108,117,101,115,2,
+ 0,0,0,32,32,114,7,0,0,0,114,233,0,0,0,122,
+ 23,77,111,100,117,108,101,83,112,101,99,46,104,97,115,95,
+ 108,111,99,97,116,105,111,110,145,2,0,0,115,14,0,0,
+ 0,128,0,228,29,33,160,37,155,91,136,4,213,8,26,114,
+ 22,0,0,0,41,12,114,11,0,0,0,114,10,0,0,0,
+ 114,3,0,0,0,114,12,0,0,0,114,47,0,0,0,114,
+ 132,0,0,0,114,237,0,0,0,218,8,112,114,111,112,101,
+ 114,116,121,114,232,0,0,0,218,6,115,101,116,116,101,114,
+ 114,246,0,0,0,114,233,0,0,0,114,31,0,0,0,114,
+ 22,0,0,0,114,7,0,0,0,114,217,0,0,0,114,217,
+ 0,0,0,50,2,0,0,115,143,0,0,0,132,0,241,2,
+ 34,5,8,240,72,1,0,48,52,192,36,216,28,32,244,3,
+ 11,5,28,242,26,6,5,63,242,16,10,5,34,240,24,0,
+ 6,14,241,2,6,5,28,243,3,0,6,14,240,2,6,5,
+ 28,240,16,0,6,12,135,93,129,93,241,2,1,5,30,243,
+ 3,0,6,19,240,2,1,5,30,240,6,0,6,14,241,2,
+ 5,5,29,243,3,0,6,14,240,2,5,5,29,240,14,0,
+ 6,14,241,2,1,5,34,243,3,0,6,14,240,2,1,5,
+ 34,240,6,0,6,18,215,5,24,209,5,24,241,2,1,5,
+ 41,243,3,0,6,25,241,2,1,5,41,114,22,0,0,0,
+ 114,217,0,0,0,169,2,114,218,0,0,0,114,220,0,0,
+ 0,99,2,0,0,0,0,0,0,0,2,0,0,0,6,0,
+ 0,0,3,0,0,0,243,52,1,0,0,151,0,124,2,128,
+ 13,116,1,0,0,0,0,0,0,0,0,124,1,100,2,100,
+ 1,171,3,0,0,0,0,0,0,125,2,124,2,115,69,116,
+ 3,0,0,0,0,0,0,0,0,124,1,100,3,171,2,0,
+ 0,0,0,0,0,114,57,116,4,0,0,0,0,0,0,0,
+ 0,128,6,116,6,0,0,0,0,0,0,0,0,130,1,116,
+ 4,0,0,0,0,0,0,0,0,106,8,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,125,4,124,
+ 3,128,10,2,0,124,4,124,0,124,1,172,4,171,2,0,
+ 0,0,0,0,0,83,0,124,3,114,2,103,0,110,1,100,
+ 1,125,5,2,0,124,4,124,0,124,1,124,5,172,5,171,
+ 3,0,0,0,0,0,0,83,0,124,3,128,33,116,3,0,
+ 0,0,0,0,0,0,0,124,1,100,6,171,2,0,0,0,
+ 0,0,0,114,19,9,0,124,1,106,11,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,124,0,171,
+ 1,0,0,0,0,0,0,125,3,110,2,100,7,125,3,116,
+ 15,0,0,0,0,0,0,0,0,124,0,124,1,124,2,124,
+ 3,172,8,171,4,0,0,0,0,0,0,83,0,35,0,116,
+ 12,0,0,0,0,0,0,0,0,36,0,114,5,1,0,100,
+ 1,125,3,89,0,140,28,119,0,120,3,89,0,119,1,41,
+ 9,122,53,82,101,116,117,114,110,32,97,32,109,111,100,117,
+ 108,101,32,115,112,101,99,32,98,97,115,101,100,32,111,110,
+ 32,118,97,114,105,111,117,115,32,108,111,97,100,101,114,32,
+ 109,101,116,104,111,100,115,46,78,218,7,95,79,82,73,71,
+ 73,78,218,12,103,101,116,95,102,105,108,101,110,97,109,101,
+ 41,1,114,213,0,0,0,41,2,114,213,0,0,0,114,223,
+ 0,0,0,114,220,0,0,0,70,114,253,0,0,0,41,8,
+ 114,15,0,0,0,114,13,0,0,0,114,239,0,0,0,114,
+ 240,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,114,220,0,
+ 0,0,114,178,0,0,0,114,217,0,0,0,41,6,114,26,
+ 0,0,0,114,213,0,0,0,114,218,0,0,0,114,220,0,
+ 0,0,114,1,1,0,0,218,6,115,101,97,114,99,104,115,
+ 6,0,0,0,32,32,32,32,32,32,114,7,0,0,0,114,
+ 194,0,0,0,114,194,0,0,0,150,2,0,0,115,192,0,
+ 0,0,128,0,224,7,13,128,126,220,17,24,152,22,160,25,
+ 168,68,211,17,49,136,6,225,11,17,148,103,152,102,160,110,
+ 212,22,53,220,11,30,208,11,38,220,18,37,208,12,37,220,
+ 34,53,215,34,77,209,34,77,208,8,31,224,11,21,208,11,
+ 29,217,19,42,168,52,184,6,212,19,63,208,12,63,217,23,
+ 33,145,18,160,116,136,6,217,15,38,160,116,176,70,216,66,
+ 72,244,3,1,16,74,1,240,0,1,9,74,1,240,6,0,
+ 8,18,208,7,25,220,11,18,144,54,152,60,212,11,40,240,
+ 2,3,13,34,216,29,35,215,29,46,209,29,46,168,116,211,
+ 29,52,145,10,240,10,0,26,31,136,74,228,11,21,144,100,
+ 152,70,168,54,184,106,212,11,73,208,4,73,248,244,13,0,
+ 20,31,242,0,1,13,34,216,29,33,146,10,240,3,1,13,
+ 34,250,115,18,0,0,0,193,38,17,66,9,0,194,9,11,
+ 66,23,3,194,22,1,66,23,3,99,3,0,0,0,0,0,
+ 0,0,0,0,0,0,5,0,0,0,3,0,0,0,243,226,
+ 1,0,0,151,0,9,0,124,0,106,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,125,3,124,
+ 3,129,2,124,3,83,0,124,0,106,4,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,125,4,124,
+ 1,128,13,9,0,124,0,106,6,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,125,1,9,0,124,
+ 0,106,8,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,125,5,124,2,128,21,124,1,129,13,116,
+ 11,0,0,0,0,0,0,0,0,124,1,100,1,100,0,171,
+ 3,0,0,0,0,0,0,125,2,124,2,115,4,124,5,129,
+ 2,124,5,125,2,9,0,124,0,106,12,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,125,6,9,
+ 0,116,15,0,0,0,0,0,0,0,0,124,0,106,16,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,171,1,0,0,0,0,0,0,125,7,116,19,0,0,0,
+ 0,0,0,0,0,124,4,124,1,124,2,172,2,171,3,0,
+ 0,0,0,0,0,125,3,124,5,128,2,100,3,110,4,124,
+ 2,124,5,107,40,0,0,124,3,95,10,0,0,0,0,0,
+ 0,0,0,124,6,124,3,95,11,0,0,0,0,0,0,0,
+ 0,124,7,124,3,95,12,0,0,0,0,0,0,0,0,124,
+ 3,83,0,35,0,116,2,0,0,0,0,0,0,0,0,36,
+ 0,114,3,1,0,89,0,140,153,119,0,120,3,89,0,119,
+ 1,35,0,116,2,0,0,0,0,0,0,0,0,36,0,114,
+ 3,1,0,89,0,140,141,119,0,120,3,89,0,119,1,35,
+ 0,116,2,0,0,0,0,0,0,0,0,36,0,114,5,1,
+ 0,100,0,125,5,89,0,140,145,119,0,120,3,89,0,119,
+ 1,35,0,116,2,0,0,0,0,0,0,0,0,36,0,114,
+ 5,1,0,100,0,125,6,89,0,140,126,119,0,120,3,89,
+ 0,119,1,35,0,116,2,0,0,0,0,0,0,0,0,36,
+ 0,114,5,1,0,100,0,125,7,89,0,140,121,119,0,120,
+ 3,89,0,119,1,41,4,78,114,255,0,0,0,169,1,114,
+ 218,0,0,0,70,41,13,114,204,0,0,0,114,4,0,0,
+ 0,114,11,0,0,0,114,203,0,0,0,114,212,0,0,0,
+ 114,15,0,0,0,218,10,95,95,99,97,99,104,101,100,95,
+ 95,218,4,108,105,115,116,218,8,95,95,112,97,116,104,95,
+ 95,114,217,0,0,0,114,225,0,0,0,114,232,0,0,0,
+ 114,223,0,0,0,41,8,114,200,0,0,0,114,213,0,0,
+ 0,114,218,0,0,0,114,199,0,0,0,114,26,0,0,0,
+ 218,8,108,111,99,97,116,105,111,110,114,232,0,0,0,114,
+ 223,0,0,0,115,8,0,0,0,32,32,32,32,32,32,32,
+ 32,114,7,0,0,0,218,17,95,115,112,101,99,95,102,114,
+ 111,109,95,109,111,100,117,108,101,114,9,1,0,0,179,2,
+ 0,0,115,53,1,0,0,128,0,240,4,6,5,24,216,15,
+ 21,143,127,137,127,136,4,240,8,0,12,16,208,11,27,216,
+ 19,23,136,75,224,11,17,143,63,137,63,128,68,216,7,13,
+ 128,126,240,2,4,9,17,216,21,27,215,21,38,209,21,38,
+ 136,70,240,8,3,5,24,216,19,25,151,63,145,63,136,8,
+ 240,6,0,8,14,128,126,216,11,17,208,11,29,220,21,28,
+ 152,86,160,89,176,4,211,21,53,136,70,217,15,21,152,40,
+ 208,26,46,216,21,29,136,70,240,2,3,5,22,216,17,23,
+ 215,17,34,209,17,34,136,6,240,6,3,5,42,220,37,41,
+ 168,38,175,47,169,47,211,37,58,208,8,34,244,8,0,12,
+ 22,144,100,152,70,168,54,212,11,50,128,68,216,34,42,208,
+ 34,50,153,21,184,22,192,56,209,57,75,128,68,212,4,22,
+ 216,18,24,128,68,132,75,216,38,64,128,68,212,4,35,216,
+ 11,15,128,75,248,244,71,1,0,12,26,242,0,1,5,13,
+ 217,8,12,240,3,1,5,13,251,244,20,0,16,30,242,0,
+ 2,9,17,225,12,16,240,5,2,9,17,251,244,10,0,12,
+ 26,242,0,1,5,24,216,19,23,138,8,240,3,1,5,24,
+ 251,244,18,0,12,26,242,0,1,5,22,216,17,21,138,6,
+ 240,3,1,5,22,251,244,8,0,12,26,242,0,1,5,42,
+ 216,37,41,210,8,34,240,3,1,5,42,250,115,87,0,0,
+ 0,130,12,66,32,0,161,12,66,47,0,174,12,66,62,0,
+ 193,18,12,67,15,0,193,31,21,67,32,0,194,32,9,66,
+ 44,3,194,43,1,66,44,3,194,47,9,66,59,3,194,58,
+ 1,66,59,3,194,62,11,67,12,3,195,11,1,67,12,3,
+ 195,15,11,67,29,3,195,28,1,67,29,3,195,32,11,67,
+ 46,3,195,45,1,67,46,3,70,169,1,218,8,111,118,101,
+ 114,114,105,100,101,99,2,0,0,0,0,0,0,0,1,0,
+ 0,0,5,0,0,0,3,0,0,0,243,124,3,0,0,151,
+ 0,124,2,115,13,116,1,0,0,0,0,0,0,0,0,124,
+ 1,100,1,100,0,171,3,0,0,0,0,0,0,128,18,9,
+ 0,124,0,106,2,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,124,1,95,2,0,0,0,0,0,
+ 0,0,0,124,2,115,13,116,1,0,0,0,0,0,0,0,
+ 0,124,1,100,2,100,0,171,3,0,0,0,0,0,0,128,
+ 110,124,0,106,8,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,125,3,124,3,128,88,124,0,106,
+ 10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,129,76,116,12,0,0,0,0,0,0,0,0,128,
+ 6,116,14,0,0,0,0,0,0,0,0,130,1,116,12,0,
+ 0,0,0,0,0,0,0,106,16,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,125,4,124,4,106,
+ 19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,124,4,171,1,0,0,0,0,0,0,125,3,124,
+ 0,106,10,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,124,3,95,10,0,0,0,0,0,0,0,
+ 0,124,3,124,0,95,4,0,0,0,0,0,0,0,0,100,
+ 0,124,1,95,11,0,0,0,0,0,0,0,0,9,0,124,
+ 3,124,1,95,12,0,0,0,0,0,0,0,0,124,2,115,
+ 13,116,1,0,0,0,0,0,0,0,0,124,1,100,3,100,
+ 0,171,3,0,0,0,0,0,0,128,18,9,0,124,0,106,
+ 26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,124,1,95,14,0,0,0,0,0,0,0,0,9,
+ 0,124,0,124,1,95,15,0,0,0,0,0,0,0,0,124,
+ 2,115,13,116,1,0,0,0,0,0,0,0,0,124,1,100,
+ 4,100,0,171,3,0,0,0,0,0,0,128,30,124,0,106,
+ 10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,129,18,9,0,124,0,106,10,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,124,1,95,
+ 16,0,0,0,0,0,0,0,0,124,0,106,34,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,
+ 80,124,2,115,13,116,1,0,0,0,0,0,0,0,0,124,
+ 1,100,5,100,0,171,3,0,0,0,0,0,0,128,18,9,
+ 0,124,0,106,36,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,124,1,95,11,0,0,0,0,0,
+ 0,0,0,124,2,115,13,116,1,0,0,0,0,0,0,0,
+ 0,124,1,100,6,100,0,171,3,0,0,0,0,0,0,128,
+ 32,124,0,106,38,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,129,20,9,0,124,0,106,38,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,124,1,95,20,0,0,0,0,0,0,0,0,124,1,83,
+ 0,124,1,83,0,35,0,116,6,0,0,0,0,0,0,0,
+ 0,36,0,114,4,1,0,89,0,144,1,140,61,119,0,120,
+ 3,89,0,119,1,35,0,116,6,0,0,0,0,0,0,0,
+ 0,36,0,114,3,1,0,89,0,140,207,119,0,120,3,89,
+ 0,119,1,35,0,116,6,0,0,0,0,0,0,0,0,36,
+ 0,114,3,1,0,89,0,140,189,119,0,120,3,89,0,119,
+ 1,35,0,116,6,0,0,0,0,0,0,0,0,36,0,114,
+ 3,1,0,89,0,140,196,119,0,120,3,89,0,119,1,35,
+ 0,116,6,0,0,0,0,0,0,0,0,36,0,114,3,1,
+ 0,89,0,140,166,119,0,120,3,89,0,119,1,35,0,116,
+ 6,0,0,0,0,0,0,0,0,36,0,114,3,1,0,89,
+ 0,140,136,119,0,120,3,89,0,119,1,35,0,116,6,0,
+ 0,0,0,0,0,0,0,36,0,114,4,1,0,89,0,124,
+ 1,83,0,119,0,120,3,89,0,119,1,41,7,78,114,11,
+ 0,0,0,114,203,0,0,0,218,11,95,95,112,97,99,107,
+ 97,103,101,95,95,114,7,1,0,0,114,212,0,0,0,114,
+ 5,1,0,0,41,21,114,15,0,0,0,114,26,0,0,0,
+ 114,11,0,0,0,114,4,0,0,0,114,213,0,0,0,114,
+ 223,0,0,0,114,239,0,0,0,114,240,0,0,0,218,15,
+ 78,97,109,101,115,112,97,99,101,76,111,97,100,101,114,114,
+ 41,0,0,0,218,5,95,112,97,116,104,114,212,0,0,0,
+ 114,203,0,0,0,114,246,0,0,0,114,13,1,0,0,114,
+ 204,0,0,0,114,7,1,0,0,114,233,0,0,0,114,218,
+ 0,0,0,114,232,0,0,0,114,5,1,0,0,41,5,114,
+ 199,0,0,0,114,200,0,0,0,114,11,1,0,0,114,213,
+ 0,0,0,114,14,1,0,0,115,5,0,0,0,32,32,32,
+ 32,32,114,7,0,0,0,218,18,95,105,110,105,116,95,109,
+ 111,100,117,108,101,95,97,116,116,114,115,114,16,1,0,0,
+ 221,2,0,0,115,245,1,0,0,128,0,241,8,0,9,17,
+ 148,71,152,70,160,74,176,4,211,20,53,208,20,61,240,2,
+ 3,9,17,216,30,34,159,105,153,105,136,70,140,79,241,8,
+ 0,8,16,148,55,152,54,160,60,176,20,211,19,54,208,19,
+ 62,216,17,21,151,27,145,27,136,6,216,11,17,136,62,224,
+ 15,19,215,15,46,209,15,46,208,15,58,220,19,38,208,19,
+ 46,220,26,45,208,20,45,220,34,53,215,34,69,209,34,69,
+ 144,15,224,25,40,215,25,48,209,25,48,176,31,211,25,65,
+ 144,6,216,31,35,215,31,62,209,31,62,144,6,148,12,216,
+ 30,36,144,4,148,11,240,22,0,35,39,144,6,148,15,240,
+ 2,3,9,17,216,32,38,136,70,212,12,29,241,8,0,8,
+ 16,148,55,152,54,160,61,176,36,211,19,55,208,19,63,240,
+ 2,3,9,17,216,33,37,167,27,161,27,136,70,212,12,30,
+ 240,8,3,5,13,216,26,30,136,6,140,15,241,8,0,8,
+ 16,148,55,152,54,160,58,168,116,211,19,52,208,19,60,216,
+ 11,15,215,11,42,209,11,42,208,11,54,240,4,3,13,21,
+ 216,34,38,215,34,65,209,34,65,144,6,148,15,240,8,0,
+ 8,12,215,7,24,210,7,24,217,11,19,148,119,152,118,160,
+ 122,176,52,211,23,56,208,23,64,240,2,3,13,21,216,34,
+ 38,167,43,161,43,144,6,148,15,241,8,0,12,20,148,119,
+ 152,118,160,124,176,84,211,23,58,208,23,66,216,15,19,143,
+ 123,137,123,208,15,38,240,2,3,17,25,216,40,44,175,11,
+ 169,11,144,70,212,20,37,240,6,0,12,18,128,77,136,54,
+ 128,77,248,244,127,1,0,16,30,242,0,1,9,17,218,12,
+ 16,240,3,1,9,17,251,244,56,0,16,30,242,0,1,9,
+ 17,217,12,16,240,3,1,9,17,251,244,12,0,16,30,242,
+ 0,1,9,17,217,12,16,240,3,1,9,17,251,244,10,0,
+ 12,26,242,0,1,5,13,217,8,12,240,3,1,5,13,251,
+ 244,16,0,20,34,242,0,1,13,21,217,16,20,240,3,1,
+ 13,21,251,244,14,0,20,34,242,0,1,13,21,217,16,20,
+ 240,3,1,13,21,251,244,14,0,24,38,242,0,1,17,25,
+ 216,20,24,216,11,17,128,77,240,5,1,17,25,250,115,125,
+ 0,0,0,145,17,69,19,0,194,24,7,69,35,0,194,47,
+ 17,69,50,0,195,1,7,70,1,0,195,36,17,70,16,0,
+ 196,17,17,70,31,0,196,62,17,70,46,0,197,19,9,69,
+ 32,3,197,31,1,69,32,3,197,35,9,69,47,3,197,46,
+ 1,69,47,3,197,50,9,69,62,3,197,61,1,69,62,3,
+ 198,1,9,70,13,3,198,12,1,70,13,3,198,16,9,70,
+ 28,3,198,27,1,70,28,3,198,31,9,70,43,3,198,42,
+ 1,70,43,3,198,46,9,70,59,3,198,58,1,70,59,3,
+ 99,1,0,0,0,0,0,0,0,0,0,0,0,4,0,0,
+ 0,3,0,0,0,243,246,0,0,0,151,0,100,1,125,1,
+ 116,1,0,0,0,0,0,0,0,0,124,0,106,2,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 100,2,171,2,0,0,0,0,0,0,114,28,124,0,106,2,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,106,5,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,124,0,171,1,0,0,0,0,0,0,
+ 125,1,110,33,116,1,0,0,0,0,0,0,0,0,124,0,
+ 106,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,100,3,171,2,0,0,0,0,0,0,114,11,
+ 116,7,0,0,0,0,0,0,0,0,100,4,171,1,0,0,
+ 0,0,0,0,130,1,124,1,128,21,116,9,0,0,0,0,
+ 0,0,0,0,124,0,106,10,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,171,1,0,0,0,0,
+ 0,0,125,1,116,13,0,0,0,0,0,0,0,0,124,0,
+ 124,1,171,2,0,0,0,0,0,0,1,0,124,1,83,0,
+ 41,5,122,43,67,114,101,97,116,101,32,97,32,109,111,100,
+ 117,108,101,32,98,97,115,101,100,32,111,110,32,116,104,101,
+ 32,112,114,111,118,105,100,101,100,32,115,112,101,99,46,78,
+ 218,13,99,114,101,97,116,101,95,109,111,100,117,108,101,218,
+ 11,101,120,101,99,95,109,111,100,117,108,101,122,66,108,111,
+ 97,100,101,114,115,32,116,104,97,116,32,100,101,102,105,110,
+ 101,32,101,120,101,99,95,109,111,100,117,108,101,40,41,32,
+ 109,117,115,116,32,97,108,115,111,32,100,101,102,105,110,101,
+ 32,99,114,101,97,116,101,95,109,111,100,117,108,101,40,41,
+ 41,7,114,13,0,0,0,114,213,0,0,0,114,18,1,0,
+ 0,114,178,0,0,0,114,27,0,0,0,114,26,0,0,0,
+ 114,16,1,0,0,169,2,114,199,0,0,0,114,200,0,0,
+ 0,115,2,0,0,0,32,32,114,7,0,0,0,218,16,109,
+ 111,100,117,108,101,95,102,114,111,109,95,115,112,101,99,114,
+ 21,1,0,0,38,3,0,0,115,111,0,0,0,128,0,240,
+ 6,0,14,18,128,70,220,7,14,136,116,143,123,137,123,152,
+ 79,212,7,44,240,6,0,18,22,151,27,145,27,215,17,42,
+ 209,17,42,168,52,211,17,48,137,6,220,9,16,144,20,151,
+ 27,145,27,152,109,212,9,44,220,14,25,240,0,1,27,61,
+ 243,0,1,15,62,240,0,1,9,62,224,7,13,128,126,220,
+ 17,28,152,84,159,89,153,89,211,17,39,136,6,220,4,22,
+ 144,116,152,86,212,4,36,216,11,17,128,77,114,22,0,0,
+ 0,99,1,0,0,0,0,0,0,0,0,0,0,0,6,0,
+ 0,0,3,0,0,0,243,120,1,0,0,151,0,124,0,106,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,128,2,100,1,110,11,124,0,106,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,
+ 1,124,0,106,2,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,128,89,124,0,106,4,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,
+ 2,124,2,128,6,100,2,124,1,155,2,100,3,157,3,83,
+ 0,116,6,0,0,0,0,0,0,0,0,129,54,116,9,0,
+ 0,0,0,0,0,0,0,124,2,116,6,0,0,0,0,0,
+ 0,0,0,106,10,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,171,2,0,0,0,0,0,0,114,
+ 28,100,2,124,1,155,2,100,4,116,13,0,0,0,0,0,
+ 0,0,0,124,2,106,14,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,171,1,0,0,0,0,0,
+ 0,155,0,100,3,157,5,83,0,100,2,124,1,155,2,100,
+ 5,124,2,155,2,100,6,157,5,83,0,124,0,106,16,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,114,19,100,2,124,1,155,2,100,7,124,0,106,2,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,155,2,100,3,157,5,83,0,100,2,124,0,106,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,155,2,100,5,124,0,106,2,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,155,0,100,6,157,
+ 5,83,0,41,8,122,38,82,101,116,117,114,110,32,116,104,
+ 101,32,114,101,112,114,32,116,111,32,117,115,101,32,102,111,
+ 114,32,116,104,101,32,109,111,100,117,108,101,46,114,205,0,
+ 0,0,114,206,0,0,0,114,208,0,0,0,122,18,32,40,
+ 110,97,109,101,115,112,97,99,101,41,32,102,114,111,109,32,
+ 114,209,0,0,0,114,210,0,0,0,114,207,0,0,0,41,
+ 9,114,26,0,0,0,114,218,0,0,0,114,213,0,0,0,
+ 114,239,0,0,0,218,10,105,115,105,110,115,116,97,110,99,
+ 101,114,14,1,0,0,114,6,1,0,0,114,15,1,0,0,
+ 114,233,0,0,0,41,3,114,199,0,0,0,114,26,0,0,
+ 0,114,213,0,0,0,115,3,0,0,0,32,32,32,114,7,
+ 0,0,0,114,211,0,0,0,114,211,0,0,0,55,3,0,
+ 0,115,200,0,0,0,128,0,224,18,22,151,41,145,41,208,
+ 18,35,137,51,168,20,175,25,169,25,128,68,216,7,11,135,
+ 123,129,123,208,7,26,216,17,21,151,27,145,27,136,6,216,
+ 11,17,136,62,216,21,29,152,100,152,88,160,81,208,19,39,
+ 208,12,39,228,12,31,208,12,43,220,16,26,152,54,212,35,
+ 54,215,35,70,209,35,70,212,16,71,224,21,29,152,100,152,
+ 88,208,37,55,188,4,184,86,191,92,185,92,211,56,74,208,
+ 55,75,200,49,208,19,77,208,12,77,224,21,29,152,100,152,
+ 88,160,82,168,6,160,122,176,18,208,19,52,208,12,52,224,
+ 11,15,215,11,28,210,11,28,216,21,29,152,100,152,88,160,
+ 86,168,68,175,75,169,75,168,63,184,33,208,19,60,208,12,
+ 60,224,21,29,152,100,159,105,153,105,152,93,168,34,168,84,
+ 175,91,169,91,168,77,184,18,208,19,60,208,12,60,114,22,
+ 0,0,0,99,2,0,0,0,0,0,0,0,0,0,0,0,
+ 6,0,0,0,3,0,0,0,243,132,3,0,0,151,0,124,
+ 0,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,125,2,116,3,0,0,0,0,0,0,0,
+ 0,124,2,171,1,0,0,0,0,0,0,53,0,1,0,116,
+ 4,0,0,0,0,0,0,0,0,106,6,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,106,9,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,124,2,171,1,0,0,0,0,0,0,124,1,117,1,114,
+ 19,100,1,124,2,155,2,100,2,157,3,125,3,116,11,0,
+ 0,0,0,0,0,0,0,124,3,124,2,172,3,171,2,0,
+ 0,0,0,0,0,130,1,9,0,124,0,106,12,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,
+ 50,124,0,106,14,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,128,23,116,11,0,0,0,0,0,
+ 0,0,0,100,5,124,0,106,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,172,3,171,2,0,
+ 0,0,0,0,0,130,1,116,17,0,0,0,0,0,0,0,
+ 0,124,0,124,1,100,6,172,7,171,3,0,0,0,0,0,
+ 0,1,0,110,141,116,17,0,0,0,0,0,0,0,0,124,
+ 0,124,1,100,6,172,7,171,3,0,0,0,0,0,0,1,
+ 0,116,19,0,0,0,0,0,0,0,0,124,0,106,12,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,100,8,171,2,0,0,0,0,0,0,115,78,116,21,0,
+ 0,0,0,0,0,0,0,124,0,106,12,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,171,1,0,
+ 0,0,0,0,0,155,0,100,9,157,2,125,3,116,22,0,
+ 0,0,0,0,0,0,0,106,25,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,124,3,116,26,0,
+ 0,0,0,0,0,0,0,171,2,0,0,0,0,0,0,1,
+ 0,124,0,106,12,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,106,29,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,124,2,171,1,0,
+ 0,0,0,0,0,1,0,110,27,124,0,106,12,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,
+ 31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,124,1,171,1,0,0,0,0,0,0,1,0,116,
+ 4,0,0,0,0,0,0,0,0,106,6,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,106,33,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,124,0,106,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,171,1,0,0,0,0,0,0,125,
+ 1,124,1,116,4,0,0,0,0,0,0,0,0,106,6,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,124,0,106,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,60,0,0,0,9,0,100,4,100,
+ 4,100,4,171,2,0,0,0,0,0,0,1,0,124,1,83,
+ 0,35,0,116,4,0,0,0,0,0,0,0,0,106,6,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,106,33,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,124,0,106,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,171,1,0,0,0,
+ 0,0,0,125,1,124,1,116,4,0,0,0,0,0,0,0,
+ 0,106,6,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,124,0,106,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,60,0,0,0,119,
+ 0,120,3,89,0,119,1,35,0,49,0,115,1,119,2,1,
+ 0,89,0,1,0,1,0,124,1,83,0,120,3,89,0,119,
+ 1,41,10,122,70,69,120,101,99,117,116,101,32,116,104,101,
+ 32,115,112,101,99,39,115,32,115,112,101,99,105,102,105,101,
+ 100,32,109,111,100,117,108,101,32,105,110,32,97,110,32,101,
+ 120,105,115,116,105,110,103,32,109,111,100,117,108,101,39,115,
+ 32,110,97,109,101,115,112,97,99,101,46,122,7,109,111,100,
+ 117,108,101,32,122,19,32,110,111,116,32,105,110,32,115,121,
+ 115,46,109,111,100,117,108,101,115,114,25,0,0,0,78,250,
+ 14,109,105,115,115,105,110,103,32,108,111,97,100,101,114,84,
+ 114,10,1,0,0,114,19,1,0,0,250,55,46,101,120,101,
+ 99,95,109,111,100,117,108,101,40,41,32,110,111,116,32,102,
+ 111,117,110,100,59,32,102,97,108,108,105,110,103,32,98,97,
+ 99,107,32,116,111,32,108,111,97,100,95,109,111,100,117,108,
+ 101,40,41,41,17,114,26,0,0,0,114,142,0,0,0,114,
+ 24,0,0,0,114,195,0,0,0,114,76,0,0,0,114,178,
+ 0,0,0,114,213,0,0,0,114,223,0,0,0,114,16,1,
+ 0,0,114,13,0,0,0,114,8,0,0,0,114,191,0,0,
+ 0,114,192,0,0,0,218,13,73,109,112,111,114,116,87,97,
+ 114,110,105,110,103,218,11,108,111,97,100,95,109,111,100,117,
+ 108,101,114,19,1,0,0,114,68,0,0,0,41,4,114,199,
+ 0,0,0,114,200,0,0,0,114,26,0,0,0,114,198,0,
+ 0,0,115,4,0,0,0,32,32,32,32,114,7,0,0,0,
+ 114,196,0,0,0,114,196,0,0,0,77,3,0,0,115,88,
+ 1,0,0,128,0,224,11,15,143,57,137,57,128,68,220,9,
+ 27,152,68,211,9,33,241,0,23,5,44,220,11,14,143,59,
+ 137,59,143,63,137,63,152,52,211,11,32,168,6,209,11,46,
+ 216,20,27,152,68,152,56,208,35,54,208,18,55,136,67,220,
+ 18,29,152,99,168,4,212,18,45,208,12,45,240,2,19,9,
+ 44,216,15,19,143,123,137,123,208,15,34,216,19,23,215,19,
+ 50,209,19,50,208,19,58,220,26,37,208,38,54,184,84,191,
+ 89,185,89,212,26,71,208,20,71,228,16,34,160,52,168,22,
+ 184,36,214,16,63,228,16,34,160,52,168,22,184,36,213,16,
+ 63,220,23,30,152,116,159,123,153,123,168,77,212,23,58,220,
+ 30,42,168,52,175,59,169,59,211,30,55,208,29,56,240,0,
+ 1,57,59,240,0,1,28,59,144,67,228,20,29,151,78,145,
+ 78,160,51,172,13,212,20,54,216,20,24,151,75,145,75,215,
+ 20,43,209,20,43,168,68,213,20,49,224,20,24,151,75,145,
+ 75,215,20,43,209,20,43,168,70,212,20,51,244,8,0,22,
+ 25,151,91,145,91,151,95,145,95,160,84,167,89,161,89,211,
+ 21,47,136,70,216,37,43,140,67,143,75,137,75,152,4,159,
+ 9,153,9,210,12,34,247,47,23,5,44,240,48,0,12,18,
+ 128,77,248,244,5,0,22,25,151,91,145,91,151,95,145,95,
+ 160,84,167,89,161,89,211,21,47,136,70,216,37,43,140,67,
+ 143,75,137,75,152,4,159,9,153,9,210,12,34,250,247,47,
+ 23,5,44,240,48,0,12,18,128,77,250,115,38,0,0,0,
+ 152,53,70,53,3,193,14,67,11,69,42,2,196,25,65,6,
+ 70,53,3,197,42,65,8,70,50,5,198,50,3,70,53,3,
+ 198,53,5,70,63,7,99,1,0,0,0,0,0,0,0,0,
+ 0,0,0,5,0,0,0,3,0,0,0,243,18,3,0,0,
+ 151,0,9,0,124,0,106,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,106,3,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,0,
+ 106,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,171,1,0,0,0,0,0,0,1,0,116,6,
+ 0,0,0,0,0,0,0,0,106,8,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,106,11,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 124,0,106,4,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,171,1,0,0,0,0,0,0,125,1,
+ 124,1,116,6,0,0,0,0,0,0,0,0,106,8,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 124,0,106,4,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,60,0,0,0,116,13,0,0,0,0,
+ 0,0,0,0,124,1,100,1,100,0,171,3,0,0,0,0,
+ 0,0,128,18,9,0,124,0,106,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,124,1,95,7,
+ 0,0,0,0,0,0,0,0,116,13,0,0,0,0,0,0,
+ 0,0,124,1,100,2,100,0,171,3,0,0,0,0,0,0,
+ 128,65,9,0,124,1,106,18,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,124,1,95,10,0,0,
+ 0,0,0,0,0,0,116,23,0,0,0,0,0,0,0,0,
+ 124,1,100,3,171,2,0,0,0,0,0,0,115,35,124,0,
+ 106,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,106,25,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,100,4,171,1,0,0,0,0,
+ 0,0,100,5,25,0,0,0,124,1,95,10,0,0,0,0,
+ 0,0,0,0,116,13,0,0,0,0,0,0,0,0,124,1,
+ 100,6,100,0,171,3,0,0,0,0,0,0,128,10,9,0,
+ 124,0,124,1,95,13,0,0,0,0,0,0,0,0,124,1,
+ 83,0,124,1,83,0,35,0,1,0,124,0,106,4,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 116,6,0,0,0,0,0,0,0,0,106,8,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,0,
+ 114,70,116,6,0,0,0,0,0,0,0,0,106,8,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 106,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,124,0,106,4,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,171,1,0,0,0,0,
+ 0,0,125,1,124,1,116,6,0,0,0,0,0,0,0,0,
+ 106,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,124,0,106,4,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,60,0,0,0,130,0,
+ 120,3,89,0,119,1,35,0,116,16,0,0,0,0,0,0,
+ 0,0,36,0,114,3,1,0,89,0,140,218,119,0,120,3,
+ 89,0,119,1,35,0,116,16,0,0,0,0,0,0,0,0,
+ 36,0,114,3,1,0,89,0,140,155,119,0,120,3,89,0,
+ 119,1,35,0,116,16,0,0,0,0,0,0,0,0,36,0,
+ 114,4,1,0,89,0,124,1,83,0,119,0,120,3,89,0,
+ 119,1,41,7,78,114,203,0,0,0,114,13,1,0,0,114,
+ 7,1,0,0,114,244,0,0,0,114,125,0,0,0,114,204,
+ 0,0,0,41,14,114,213,0,0,0,114,28,1,0,0,114,
+ 26,0,0,0,114,24,0,0,0,114,195,0,0,0,114,68,
+ 0,0,0,114,15,0,0,0,114,203,0,0,0,114,4,0,
+ 0,0,114,11,0,0,0,114,13,1,0,0,114,13,0,0,
+ 0,114,245,0,0,0,114,204,0,0,0,114,20,1,0,0,
+ 115,2,0,0,0,32,32,114,7,0,0,0,218,25,95,108,
+ 111,97,100,95,98,97,99,107,119,97,114,100,95,99,111,109,
+ 112,97,116,105,98,108,101,114,30,1,0,0,107,3,0,0,
+ 115,89,1,0,0,128,0,240,6,6,5,14,216,8,12,143,
+ 11,137,11,215,8,31,209,8,31,160,4,167,9,161,9,212,
+ 8,42,244,16,0,14,17,143,91,137,91,143,95,137,95,152,
+ 84,159,89,153,89,211,13,39,128,70,216,29,35,132,67,135,
+ 75,129,75,144,4,151,9,145,9,209,4,26,220,7,14,136,
+ 118,144,124,160,84,211,7,42,208,7,50,240,2,3,9,17,
+ 216,32,36,167,11,161,11,136,70,212,12,29,244,6,0,8,
+ 15,136,118,144,125,160,100,211,7,43,208,7,51,240,2,8,
+ 9,17,240,8,0,34,40,167,31,161,31,136,70,212,12,30,
+ 220,19,26,152,54,160,58,212,19,46,216,37,41,167,89,161,
+ 89,215,37,57,209,37,57,184,35,211,37,62,184,113,209,37,
+ 65,144,6,212,16,34,244,6,0,8,15,136,118,144,122,160,
+ 52,211,7,40,208,7,48,240,2,3,9,17,216,30,34,136,
+ 70,140,79,240,6,0,12,18,128,77,136,54,128,77,248,240,
+ 59,4,5,14,216,11,15,143,57,137,57,156,3,159,11,153,
+ 11,209,11,35,220,21,24,151,91,145,91,151,95,145,95,160,
+ 84,167,89,161,89,211,21,47,136,70,216,37,43,140,67,143,
+ 75,137,75,152,4,159,9,153,9,209,12,34,216,8,13,251,
+ 244,16,0,16,30,242,0,1,9,17,217,12,16,240,3,1,
+ 9,17,251,244,20,0,16,30,242,0,1,9,17,217,12,16,
+ 240,3,1,9,17,251,244,10,0,16,30,242,0,1,9,17,
+ 216,12,16,216,11,17,128,77,240,5,1,9,17,250,115,67,
+ 0,0,0,130,37,67,51,0,193,59,17,69,27,0,194,26,
+ 65,0,69,42,0,195,40,7,69,57,0,195,51,65,37,69,
+ 24,3,197,27,9,69,39,3,197,38,1,69,39,3,197,42,
+ 9,69,54,3,197,53,1,69,54,3,197,57,9,70,6,3,
+ 198,5,1,70,6,3,99,1,0,0,0,0,0,0,0,0,
+ 0,0,0,5,0,0,0,3,0,0,0,243,16,3,0,0,
+ 151,0,124,0,106,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,129,83,116,3,0,0,0,0,
+ 0,0,0,0,124,0,106,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,100,1,171,2,0,0,
+ 0,0,0,0,115,61,116,5,0,0,0,0,0,0,0,0,
+ 124,0,106,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,171,1,0,0,0,0,0,0,155,0,
+ 100,2,157,2,125,1,116,6,0,0,0,0,0,0,0,0,
+ 106,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,124,1,116,10,0,0,0,0,0,0,0,0,
+ 171,2,0,0,0,0,0,0,1,0,116,13,0,0,0,0,
+ 0,0,0,0,124,0,171,1,0,0,0,0,0,0,83,0,
+ 116,15,0,0,0,0,0,0,0,0,124,0,171,1,0,0,
+ 0,0,0,0,125,2,100,3,124,0,95,8,0,0,0,0,
+ 0,0,0,0,9,0,124,2,116,18,0,0,0,0,0,0,
+ 0,0,106,20,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,124,0,106,22,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,60,0,0,0,
+ 9,0,124,0,106,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,128,35,124,0,106,24,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 128,50,116,27,0,0,0,0,0,0,0,0,100,4,124,0,
+ 106,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,172,5,171,2,0,0,0,0,0,0,130,1,
+ 124,0,106,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,106,29,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,124,2,171,1,0,0,
+ 0,0,0,0,1,0,116,18,0,0,0,0,0,0,0,0,
+ 106,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,106,33,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,124,0,106,22,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,1,
+ 0,0,0,0,0,0,125,2,124,2,116,18,0,0,0,0,
+ 0,0,0,0,106,20,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,124,0,106,22,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,0,
+ 0,0,116,35,0,0,0,0,0,0,0,0,100,6,124,0,
+ 106,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,124,0,106,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,171,3,0,0,0,0,
+ 0,0,1,0,100,7,124,0,95,8,0,0,0,0,0,0,
+ 0,0,124,2,83,0,35,0,1,0,9,0,116,18,0,0,
+ 0,0,0,0,0,0,106,20,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,124,0,106,22,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 61,0,130,0,35,0,116,30,0,0,0,0,0,0,0,0,
+ 36,0,114,3,1,0,89,0,130,0,119,0,120,3,89,0,
+ 119,1,120,3,89,0,119,1,35,0,100,7,124,0,95,8,
+ 0,0,0,0,0,0,0,0,119,0,120,3,89,0,119,1,
+ 41,8,78,114,19,1,0,0,114,26,1,0,0,84,114,25,
+ 1,0,0,114,25,0,0,0,122,18,105,109,112,111,114,116,
+ 32,123,33,114,125,32,35,32,123,33,114,125,70,41,18,114,
+ 213,0,0,0,114,13,0,0,0,114,8,0,0,0,114,191,
+ 0,0,0,114,192,0,0,0,114,27,1,0,0,114,30,1,
+ 0,0,114,21,1,0,0,218,13,95,105,110,105,116,105,97,
+ 108,105,122,105,110,103,114,24,0,0,0,114,195,0,0,0,
+ 114,26,0,0,0,114,223,0,0,0,114,178,0,0,0,114,
+ 19,1,0,0,114,73,0,0,0,114,68,0,0,0,114,173,
+ 0,0,0,41,3,114,199,0,0,0,114,198,0,0,0,114,
+ 200,0,0,0,115,3,0,0,0,32,32,32,114,7,0,0,
+ 0,218,14,95,108,111,97,100,95,117,110,108,111,99,107,101,
+ 100,114,33,1,0,0,143,3,0,0,115,72,1,0,0,128,
+ 0,224,7,11,135,123,129,123,208,7,30,228,15,22,144,116,
+ 151,123,145,123,160,77,212,15,50,220,22,34,160,52,167,59,
+ 161,59,211,22,47,208,21,48,240,0,1,49,52,240,0,1,
+ 20,52,136,67,228,12,21,143,78,137,78,152,51,164,13,212,
+ 12,46,220,19,44,168,84,211,19,50,208,12,50,228,13,29,
+ 152,100,211,13,35,128,70,240,10,0,26,30,128,68,212,4,
+ 22,240,2,23,5,35,216,33,39,140,3,143,11,137,11,144,
+ 68,151,73,145,73,209,8,30,240,2,12,9,18,216,15,19,
+ 143,123,137,123,208,15,34,216,19,23,215,19,50,209,19,50,
+ 208,19,58,220,26,37,208,38,54,184,84,191,89,185,89,212,
+ 26,71,208,20,71,240,6,0,17,21,151,11,145,11,215,16,
+ 39,209,16,39,168,6,212,16,47,244,22,0,18,21,151,27,
+ 145,27,151,31,145,31,160,20,167,25,161,25,211,17,43,136,
+ 6,216,33,39,140,3,143,11,137,11,144,68,151,73,145,73,
+ 209,8,30,220,8,24,208,25,45,168,116,175,121,169,121,184,
+ 36,191,43,185,43,212,8,70,224,29,34,136,4,212,8,26,
+ 224,11,17,128,77,248,240,33,5,9,18,240,2,3,13,21,
+ 220,20,23,151,75,145,75,160,4,167,9,161,9,208,20,42,
+ 240,6,0,13,18,248,244,5,0,20,28,242,0,1,13,21,
+ 216,16,20,216,12,17,240,5,1,13,21,254,240,22,0,30,
+ 35,136,4,213,8,26,250,115,74,0,0,0,193,51,29,69,
+ 60,0,194,17,65,10,69,11,0,195,27,65,39,69,60,0,
+ 197,11,2,69,57,3,197,14,27,69,42,2,197,41,1,69,
+ 57,3,197,42,9,69,54,5,197,51,2,69,57,3,197,53,
+ 1,69,54,5,197,54,3,69,57,3,197,57,3,69,60,0,
+ 197,60,9,70,5,3,99,1,0,0,0,0,0,0,0,0,
+ 0,0,0,6,0,0,0,3,0,0,0,243,110,0,0,0,
+ 151,0,116,1,0,0,0,0,0,0,0,0,124,0,106,2,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,171,1,0,0,0,0,0,0,53,0,1,0,116,5,
+ 0,0,0,0,0,0,0,0,124,0,171,1,0,0,0,0,
+ 0,0,99,2,100,1,100,1,100,1,171,2,0,0,0,0,
+ 0,0,1,0,83,0,35,0,49,0,115,1,119,2,1,0,
+ 89,0,1,0,1,0,121,1,120,3,89,0,119,1,41,2,
+ 122,191,82,101,116,117,114,110,32,97,32,110,101,119,32,109,
+ 111,100,117,108,101,32,111,98,106,101,99,116,44,32,108,111,
+ 97,100,101,100,32,98,121,32,116,104,101,32,115,112,101,99,
+ 39,115,32,108,111,97,100,101,114,46,10,10,32,32,32,32,
+ 84,104,101,32,109,111,100,117,108,101,32,105,115,32,110,111,
+ 116,32,97,100,100,101,100,32,116,111,32,105,116,115,32,112,
+ 97,114,101,110,116,46,10,10,32,32,32,32,73,102,32,97,
+ 32,109,111,100,117,108,101,32,105,115,32,97,108,114,101,97,
+ 100,121,32,105,110,32,115,121,115,46,109,111,100,117,108,101,
+ 115,44,32,116,104,97,116,32,101,120,105,115,116,105,110,103,
+ 32,109,111,100,117,108,101,32,103,101,116,115,10,32,32,32,
+ 32,99,108,111,98,98,101,114,101,100,46,10,10,32,32,32,
+ 32,78,41,3,114,142,0,0,0,114,26,0,0,0,114,33,
+ 1,0,0,169,1,114,199,0,0,0,115,1,0,0,0,32,
+ 114,7,0,0,0,114,197,0,0,0,114,197,0,0,0,188,
+ 3,0,0,115,45,0,0,0,128,0,244,18,0,10,28,152,
+ 68,159,73,153,73,211,9,38,241,0,1,5,36,220,15,29,
+ 152,100,211,15,35,247,3,1,5,36,247,0,1,5,36,242,
+ 0,1,5,36,250,115,8,0,0,0,150,11,43,3,171,5,
+ 52,7,99,0,0,0,0,0,0,0,0,0,0,0,0,3,
+ 0,0,0,0,0,0,0,243,164,0,0,0,151,0,101,0,
+ 90,1,100,0,90,2,100,1,90,3,100,2,90,4,101,5,
+ 100,10,100,4,132,1,171,0,0,0,0,0,0,0,90,6,
+ 101,7,100,5,132,0,171,0,0,0,0,0,0,0,90,8,
+ 101,7,100,6,132,0,171,0,0,0,0,0,0,0,90,9,
+ 101,5,101,10,100,7,132,0,171,0,0,0,0,0,0,0,
+ 171,0,0,0,0,0,0,0,90,11,101,5,101,10,100,8,
+ 132,0,171,0,0,0,0,0,0,0,171,0,0,0,0,0,
+ 0,0,90,12,101,5,101,10,100,9,132,0,171,0,0,0,
+ 0,0,0,0,171,0,0,0,0,0,0,0,90,13,2,0,
+ 101,5,101,14,171,1,0,0,0,0,0,0,90,15,121,3,
+ 41,11,218,15,66,117,105,108,116,105,110,73,109,112,111,114,
+ 116,101,114,122,144,77,101,116,97,32,112,97,116,104,32,105,
+ 109,112,111,114,116,32,102,111,114,32,98,117,105,108,116,45,
+ 105,110,32,109,111,100,117,108,101,115,46,10,10,32,32,32,
+ 32,65,108,108,32,109,101,116,104,111,100,115,32,97,114,101,
+ 32,101,105,116,104,101,114,32,99,108,97,115,115,32,111,114,
+ 32,115,116,97,116,105,99,32,109,101,116,104,111,100,115,32,
+ 116,111,32,97,118,111,105,100,32,116,104,101,32,110,101,101,
+ 100,32,116,111,10,32,32,32,32,105,110,115,116,97,110,116,
+ 105,97,116,101,32,116,104,101,32,99,108,97,115,115,46,10,
+ 10,32,32,32,32,122,8,98,117,105,108,116,45,105,110,78,
+ 99,4,0,0,0,0,0,0,0,0,0,0,0,5,0,0,
+ 0,3,0,0,0,243,94,0,0,0,151,0,116,0,0,0,
+ 0,0,0,0,0,0,106,3,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,124,1,171,1,0,0,
+ 0,0,0,0,114,24,116,5,0,0,0,0,0,0,0,0,
+ 124,1,124,0,124,0,106,6,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,172,1,171,3,0,0,
+ 0,0,0,0,83,0,121,0,41,2,78,114,4,1,0,0,
+ 41,4,114,151,0,0,0,218,10,105,115,95,98,117,105,108,
+ 116,105,110,114,194,0,0,0,114,255,0,0,0,41,4,218,
+ 3,99,108,115,114,180,0,0,0,218,4,112,97,116,104,218,
+ 6,116,97,114,103,101,116,115,4,0,0,0,32,32,32,32,
+ 114,7,0,0,0,218,9,102,105,110,100,95,115,112,101,99,
+ 122,25,66,117,105,108,116,105,110,73,109,112,111,114,116,101,
+ 114,46,102,105,110,100,95,115,112,101,99,214,3,0,0,115,
+ 36,0,0,0,128,0,228,11,15,143,63,137,63,152,56,212,
+ 11,36,220,19,35,160,72,168,99,184,35,191,43,185,43,212,
+ 19,70,208,12,70,224,19,23,114,22,0,0,0,99,1,0,
+ 0,0,0,0,0,0,0,0,0,0,4,0,0,0,3,0,
+ 0,0,243,182,0,0,0,151,0,124,0,106,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,
+ 2,0,0,0,0,0,0,0,0,106,4,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,118,1,114,
+ 36,116,7,0,0,0,0,0,0,0,0,124,0,106,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,155,2,100,1,157,2,124,0,106,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,172,2,171,
+ 2,0,0,0,0,0,0,130,1,116,9,0,0,0,0,0,
+ 0,0,0,116,10,0,0,0,0,0,0,0,0,106,12,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,124,0,171,2,0,0,0,0,0,0,83,0,41,3,122,
+ 24,67,114,101,97,116,101,32,97,32,98,117,105,108,116,45,
+ 105,110,32,109,111,100,117,108,101,114,176,0,0,0,114,25,
+ 0,0,0,41,7,114,26,0,0,0,114,24,0,0,0,114,
+ 177,0,0,0,114,178,0,0,0,114,161,0,0,0,114,151,
+ 0,0,0,218,14,99,114,101,97,116,101,95,98,117,105,108,
+ 116,105,110,114,35,1,0,0,115,1,0,0,0,32,114,7,
+ 0,0,0,114,18,1,0,0,122,29,66,117,105,108,116,105,
+ 110,73,109,112,111,114,116,101,114,46,99,114,101,97,116,101,
+ 95,109,111,100,117,108,101,221,3,0,0,115,75,0,0,0,
+ 128,0,240,6,0,12,16,143,57,137,57,156,67,215,28,52,
+ 209,28,52,209,11,52,220,18,29,160,20,167,25,161,25,160,
+ 13,208,45,70,208,30,71,216,35,39,167,57,161,57,244,3,
+ 1,19,46,240,0,1,13,46,228,15,40,172,20,215,41,60,
+ 209,41,60,184,100,211,15,67,208,8,67,114,22,0,0,0,
+ 99,1,0,0,0,0,0,0,0,0,0,0,0,4,0,0,
+ 0,3,0,0,0,243,56,0,0,0,151,0,116,1,0,0,
+ 0,0,0,0,0,0,116,2,0,0,0,0,0,0,0,0,
+ 106,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,124,0,171,2,0,0,0,0,0,0,1,0,
+ 121,1,41,2,122,22,69,120,101,99,32,97,32,98,117,105,
+ 108,116,45,105,110,32,109,111,100,117,108,101,78,41,3,114,
+ 161,0,0,0,114,151,0,0,0,218,12,101,120,101,99,95,
+ 98,117,105,108,116,105,110,41,1,114,200,0,0,0,115,1,
+ 0,0,0,32,114,7,0,0,0,114,19,1,0,0,122,27,
+ 66,117,105,108,116,105,110,73,109,112,111,114,116,101,114,46,
+ 101,120,101,99,95,109,111,100,117,108,101,229,3,0,0,115,
+ 20,0,0,0,128,0,244,6,0,9,34,164,36,215,34,51,
+ 209,34,51,176,86,213,8,60,114,22,0,0,0,99,2,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,
+ 0,0,243,4,0,0,0,151,0,121,1,41,2,122,57,82,
+ 101,116,117,114,110,32,78,111,110,101,32,97,115,32,98,117,
+ 105,108,116,45,105,110,32,109,111,100,117,108,101,115,32,100,
+ 111,32,110,111,116,32,104,97,118,101,32,99,111,100,101,32,
+ 111,98,106,101,99,116,115,46,78,114,31,0,0,0,169,2,
+ 114,40,1,0,0,114,180,0,0,0,115,2,0,0,0,32,
+ 32,114,7,0,0,0,218,8,103,101,116,95,99,111,100,101,
+ 122,24,66,117,105,108,116,105,110,73,109,112,111,114,116,101,
+ 114,46,103,101,116,95,99,111,100,101,234,3,0,0,243,7,
+ 0,0,0,128,0,240,8,0,16,20,114,22,0,0,0,99,
+ 2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 3,0,0,0,243,4,0,0,0,151,0,121,1,41,2,122,
+ 56,82,101,116,117,114,110,32,78,111,110,101,32,97,115,32,
+ 98,117,105,108,116,45,105,110,32,109,111,100,117,108,101,115,
+ 32,100,111,32,110,111,116,32,104,97,118,101,32,115,111,117,
+ 114,99,101,32,99,111,100,101,46,78,114,31,0,0,0,114,
+ 49,1,0,0,115,2,0,0,0,32,32,114,7,0,0,0,
+ 218,10,103,101,116,95,115,111,117,114,99,101,122,26,66,117,
+ 105,108,116,105,110,73,109,112,111,114,116,101,114,46,103,101,
+ 116,95,115,111,117,114,99,101,240,3,0,0,114,51,1,0,
+ 0,114,22,0,0,0,99,2,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,3,0,0,0,243,4,0,0,0,
+ 151,0,121,1,41,2,122,52,82,101,116,117,114,110,32,70,
+ 97,108,115,101,32,97,115,32,98,117,105,108,116,45,105,110,
+ 32,109,111,100,117,108,101,115,32,97,114,101,32,110,101,118,
+ 101,114,32,112,97,99,107,97,103,101,115,46,70,114,31,0,
+ 0,0,114,49,1,0,0,115,2,0,0,0,32,32,114,7,
+ 0,0,0,114,220,0,0,0,122,26,66,117,105,108,116,105,
+ 110,73,109,112,111,114,116,101,114,46,105,115,95,112,97,99,
+ 107,97,103,101,246,3,0,0,115,7,0,0,0,128,0,240,
+ 8,0,16,21,114,22,0,0,0,169,2,78,78,41,16,114,
+ 11,0,0,0,114,10,0,0,0,114,3,0,0,0,114,12,
+ 0,0,0,114,255,0,0,0,218,11,99,108,97,115,115,109,
+ 101,116,104,111,100,114,43,1,0,0,114,58,0,0,0,114,
+ 18,1,0,0,114,19,1,0,0,114,184,0,0,0,114,50,
+ 1,0,0,114,53,1,0,0,114,220,0,0,0,114,201,0,
+ 0,0,114,28,1,0,0,114,31,0,0,0,114,22,0,0,
+ 0,114,7,0,0,0,114,37,1,0,0,114,37,1,0,0,
+ 203,3,0,0,115,171,0,0,0,132,0,241,4,5,5,8,
+ 240,14,0,15,25,128,71,224,5,16,242,2,4,5,24,243,
+ 3,0,6,17,240,2,4,5,24,240,12,0,6,18,241,2,
+ 5,5,68,1,243,3,0,6,18,240,2,5,5,68,1,240,
+ 14,0,6,18,241,2,2,5,61,243,3,0,6,18,240,2,
+ 2,5,61,240,8,0,6,17,216,5,22,241,2,2,5,20,
+ 243,3,0,6,23,243,3,0,6,17,240,4,2,5,20,240,
+ 8,0,6,17,216,5,22,241,2,2,5,20,243,3,0,6,
+ 23,243,3,0,6,17,240,4,2,5,20,240,8,0,6,17,
+ 216,5,22,241,2,2,5,21,243,3,0,6,23,243,3,0,
+ 6,17,240,4,2,5,21,241,8,0,19,30,208,30,47,211,
+ 18,48,129,75,114,22,0,0,0,114,37,1,0,0,99,0,
+ 0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,
+ 0,0,0,243,198,0,0,0,151,0,101,0,90,1,100,0,
+ 90,2,100,1,90,3,100,2,90,4,101,5,100,3,132,0,
+ 171,0,0,0,0,0,0,0,90,6,101,5,100,13,100,5,
+ 132,1,171,0,0,0,0,0,0,0,90,7,101,5,100,14,
+ 100,6,132,1,171,0,0,0,0,0,0,0,90,8,101,9,
+ 100,7,132,0,171,0,0,0,0,0,0,0,90,10,101,9,
+ 100,8,132,0,171,0,0,0,0,0,0,0,90,11,101,5,
+ 100,9,132,0,171,0,0,0,0,0,0,0,90,12,101,5,
+ 101,13,100,10,132,0,171,0,0,0,0,0,0,0,171,0,
+ 0,0,0,0,0,0,90,14,101,5,101,13,100,11,132,0,
+ 171,0,0,0,0,0,0,0,171,0,0,0,0,0,0,0,
+ 90,15,101,5,101,13,100,12,132,0,171,0,0,0,0,0,
+ 0,0,171,0,0,0,0,0,0,0,90,16,121,4,41,15,
+ 218,14,70,114,111,122,101,110,73,109,112,111,114,116,101,114,
+ 122,142,77,101,116,97,32,112,97,116,104,32,105,109,112,111,
+ 114,116,32,102,111,114,32,102,114,111,122,101,110,32,109,111,
+ 100,117,108,101,115,46,10,10,32,32,32,32,65,108,108,32,
+ 109,101,116,104,111,100,115,32,97,114,101,32,101,105,116,104,
+ 101,114,32,99,108,97,115,115,32,111,114,32,115,116,97,116,
+ 105,99,32,109,101,116,104,111,100,115,32,116,111,32,97,118,
+ 111,105,100,32,116,104,101,32,110,101,101,100,32,116,111,10,
+ 32,32,32,32,105,110,115,116,97,110,116,105,97,116,101,32,
+ 116,104,101,32,99,108,97,115,115,46,10,10,32,32,32,32,
+ 218,6,102,114,111,122,101,110,99,2,0,0,0,0,0,0,
+ 0,0,0,0,0,5,0,0,0,3,0,0,0,243,18,6,
+ 0,0,151,0,124,1,106,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,125,2,124,2,106,2,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,125,3,124,3,144,1,128,88,116,5,0,0,0,0,
+ 0,0,0,0,124,1,171,1,0,0,0,0,0,0,106,7,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,100,1,100,0,171,2,0,0,0,0,0,0,125,4,
+ 124,4,115,7,74,0,100,2,171,0,0,0,0,0,0,0,
+ 130,1,116,9,0,0,0,0,0,0,0,0,124,1,100,3,
+ 171,2,0,0,0,0,0,0,125,5,116,10,0,0,0,0,
+ 0,0,0,0,106,13,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,124,1,106,14,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,1,
+ 0,0,0,0,0,0,124,5,107,40,0,0,115,7,74,0,
+ 124,5,171,0,0,0,0,0,0,0,130,1,124,0,106,17,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,124,4,124,2,106,18,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,124,5,171,3,0,0,
+ 0,0,0,0,92,2,0,0,125,6,125,7,2,0,116,21,
+ 0,0,0,0,0,0,0,0,116,22,0,0,0,0,0,0,
+ 0,0,106,24,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,171,1,0,0,0,0,0,0,124,6,
+ 124,4,172,4,171,2,0,0,0,0,0,0,124,2,95,1,
+ 0,0,0,0,0,0,0,0,124,2,106,26,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,8,
+ 124,5,114,43,124,8,103,0,107,40,0,0,115,7,74,0,
+ 124,8,171,0,0,0,0,0,0,0,130,1,124,7,114,38,
+ 124,2,106,26,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,106,29,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,100,5,124,7,171,2,
+ 0,0,0,0,0,0,1,0,110,9,124,8,129,7,74,0,
+ 124,8,171,0,0,0,0,0,0,0,130,1,116,9,0,0,
+ 0,0,0,0,0,0,124,1,100,6,171,2,0,0,0,0,
+ 0,0,114,17,74,0,124,1,106,30,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,171,0,0,0,
+ 0,0,0,0,130,1,124,6,114,8,9,0,124,6,124,1,
+ 95,15,0,0,0,0,0,0,0,0,124,5,144,1,114,195,
+ 124,1,106,34,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,124,8,107,55,0,0,144,1,114,179,
+ 124,1,106,34,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,103,0,107,40,0,0,115,17,74,0,
+ 124,1,106,34,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,171,0,0,0,0,0,0,0,130,1,
+ 124,1,106,34,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,106,37,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,124,8,171,1,0,0,
+ 0,0,0,0,1,0,144,1,110,118,124,2,106,26,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 125,8,124,8,100,0,117,1,125,5,116,39,0,0,0,0,
+ 0,0,0,0,116,5,0,0,0,0,0,0,0,0,124,3,
+ 171,1,0,0,0,0,0,0,171,1,0,0,0,0,0,0,
+ 100,7,100,8,103,2,107,40,0,0,115,7,74,0,124,3,
+ 171,0,0,0,0,0,0,0,130,1,124,3,106,40,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 114,109,124,0,106,17,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,124,3,106,40,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,2,
+ 106,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,124,5,171,3,0,0,0,0,0,0,92,2,
+ 0,0,125,9,125,7,124,3,106,42,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,124,9,107,40,
+ 0,0,115,19,74,0,124,3,106,42,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,124,9,102,2,
+ 171,0,0,0,0,0,0,0,130,1,124,7,114,15,124,8,
+ 124,7,103,1,107,40,0,0,115,72,74,0,124,8,124,7,
+ 102,2,171,0,0,0,0,0,0,0,130,1,124,8,124,5,
+ 114,2,103,0,110,1,100,0,107,40,0,0,115,54,74,0,
+ 124,8,171,0,0,0,0,0,0,0,130,1,100,0,125,9,
+ 124,3,106,42,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,129,17,74,0,124,3,106,42,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 171,0,0,0,0,0,0,0,130,1,124,8,124,5,114,2,
+ 103,0,110,1,100,0,107,40,0,0,115,7,74,0,124,8,
+ 171,0,0,0,0,0,0,0,130,1,124,9,114,48,116,9,
+ 0,0,0,0,0,0,0,0,124,1,100,6,171,2,0,0,
+ 0,0,0,0,115,2,74,0,130,1,124,1,106,30,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 124,9,107,40,0,0,115,48,74,0,124,1,106,30,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 124,9,102,2,171,0,0,0,0,0,0,0,130,1,116,9,
+ 0,0,0,0,0,0,0,0,124,1,100,6,171,2,0,0,
+ 0,0,0,0,114,17,74,0,124,1,106,30,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,0,
+ 0,0,0,0,0,0,130,1,124,5,114,48,116,9,0,0,
+ 0,0,0,0,0,0,124,1,100,3,171,2,0,0,0,0,
+ 0,0,115,2,74,0,130,1,124,1,106,34,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,8,
+ 107,40,0,0,115,48,74,0,124,1,106,34,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,8,
+ 102,2,171,0,0,0,0,0,0,0,130,1,116,9,0,0,
+ 0,0,0,0,0,0,124,1,100,3,171,2,0,0,0,0,
+ 0,0,114,17,74,0,124,1,106,34,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,171,0,0,0,
+ 0,0,0,0,130,1,124,2,106,44,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,114,2,74,0,
+ 130,1,121,0,35,0,116,32,0,0,0,0,0,0,0,0,
+ 36,0,114,4,1,0,89,0,144,1,140,225,119,0,120,3,
+ 89,0,119,1,41,9,78,218,12,95,95,111,114,105,103,110,
+ 97,109,101,95,95,122,39,115,101,101,32,80,121,73,109,112,
+ 111,114,116,95,73,109,112,111,114,116,70,114,111,122,101,110,
+ 77,111,100,117,108,101,79,98,106,101,99,116,40,41,114,7,
+ 1,0,0,169,2,114,214,0,0,0,218,8,111,114,105,103,
+ 110,97,109,101,114,125,0,0,0,114,212,0,0,0,114,214,
+ 0,0,0,114,63,1,0,0,41,23,114,204,0,0,0,114,
+ 219,0,0,0,218,4,118,97,114,115,114,68,0,0,0,114,
+ 13,0,0,0,114,151,0,0,0,218,17,105,115,95,102,114,
+ 111,122,101,110,95,112,97,99,107,97,103,101,114,11,0,0,
+ 0,218,17,95,114,101,115,111,108,118,101,95,102,105,108,101,
+ 110,97,109,101,114,26,0,0,0,114,5,0,0,0,114,24,
+ 0,0,0,218,14,105,109,112,108,101,109,101,110,116,97,116,
+ 105,111,110,114,223,0,0,0,218,6,105,110,115,101,114,116,
+ 114,212,0,0,0,114,4,0,0,0,114,7,1,0,0,218,
+ 6,101,120,116,101,110,100,218,6,115,111,114,116,101,100,114,
+ 63,1,0,0,114,214,0,0,0,114,233,0,0,0,41,10,
+ 114,40,1,0,0,114,200,0,0,0,114,199,0,0,0,218,
+ 5,115,116,97,116,101,114,63,1,0,0,218,5,105,115,112,
+ 107,103,114,214,0,0,0,218,6,112,107,103,100,105,114,114,
+ 7,1,0,0,114,212,0,0,0,115,10,0,0,0,32,32,
+ 32,32,32,32,32,32,32,32,114,7,0,0,0,218,14,95,
+ 102,105,120,95,117,112,95,109,111,100,117,108,101,122,29,70,
+ 114,111,122,101,110,73,109,112,111,114,116,101,114,46,95,102,
+ 105,120,95,117,112,95,109,111,100,117,108,101,10,4,0,0,
+ 115,212,2,0,0,128,0,224,15,21,143,127,137,127,136,4,
+ 216,16,20,215,16,33,209,16,33,136,5,216,11,16,137,61,
+ 244,8,0,24,28,152,70,147,124,215,23,39,209,23,39,168,
+ 14,184,4,211,23,61,136,72,217,19,27,208,12,70,208,29,
+ 70,212,12,70,220,20,27,152,70,160,74,211,20,47,136,69,
+ 220,19,23,215,19,41,209,19,41,168,38,175,47,169,47,211,
+ 19,58,184,101,210,19,67,208,12,74,192,85,212,12,74,216,
+ 31,34,215,31,52,209,31,52,176,88,184,116,191,121,185,121,
+ 200,37,211,31,80,209,12,28,136,72,144,102,216,32,56,164,
+ 4,164,83,215,37,55,209,37,55,211,32,56,216,25,33,216,
+ 25,33,244,5,3,33,14,136,68,212,12,29,240,8,0,24,
+ 28,215,23,54,209,23,54,136,72,217,15,20,216,23,31,160,
+ 50,146,126,208,16,47,160,120,212,16,47,217,19,25,216,20,
+ 24,215,20,51,209,20,51,215,20,58,209,20,58,184,49,184,
+ 102,213,20,69,224,23,31,208,23,39,208,16,49,168,24,212,
+ 16,49,244,6,0,24,31,152,118,160,122,212,23,50,208,12,
+ 67,176,70,183,79,177,79,212,12,67,217,15,23,240,2,3,
+ 17,25,216,38,46,144,70,148,79,242,6,0,16,21,216,19,
+ 25,151,63,145,63,160,104,211,19,46,216,27,33,159,63,153,
+ 63,168,98,210,27,48,208,20,65,176,38,183,47,177,47,212,
+ 20,65,216,20,26,151,79,145,79,215,20,42,209,20,42,168,
+ 56,214,20,52,240,8,0,24,28,215,23,54,209,23,54,136,
+ 72,216,20,28,160,68,208,20,40,136,69,228,19,25,156,36,
+ 152,117,155,43,211,19,38,168,58,176,122,208,42,66,210,19,
+ 66,208,12,73,192,69,212,12,73,216,15,20,143,126,138,126,
+ 240,6,0,22,25,215,21,42,209,21,42,168,53,175,62,169,
+ 62,184,52,191,57,185,57,192,101,211,21,76,241,3,1,17,
+ 19,144,24,152,54,224,23,28,151,126,145,126,168,24,210,23,
+ 49,208,16,77,176,69,183,78,177,78,192,72,208,51,77,212,
+ 16,77,217,19,25,216,27,35,168,6,160,120,210,27,47,208,
+ 20,67,176,40,184,70,208,49,67,212,20,67,224,27,35,169,
+ 101,169,2,184,20,210,27,62,208,20,72,192,8,212,20,72,
+ 224,27,31,144,8,216,23,28,151,126,145,126,208,23,45,208,
+ 16,61,168,117,175,126,169,126,212,16,61,216,23,31,169,37,
+ 161,66,176,84,210,23,58,208,16,68,184,72,212,16,68,225,
+ 15,23,220,23,30,152,118,160,122,212,23,50,209,16,50,216,
+ 23,29,151,127,145,127,168,40,210,23,50,208,16,79,176,86,
+ 183,95,177,95,192,104,208,52,79,212,16,79,228,27,34,160,
+ 54,168,58,212,27,54,208,16,71,184,6,191,15,185,15,212,
+ 16,71,217,15,20,220,23,30,152,118,160,122,212,23,50,209,
+ 16,50,216,23,29,151,127,145,127,168,40,210,23,50,208,16,
+ 79,176,86,183,95,177,95,192,104,208,52,79,212,16,79,228,
+ 27,34,160,54,168,58,212,27,54,208,16,71,184,6,191,15,
+ 185,15,212,16,71,216,19,23,215,19,36,210,19,36,209,8,
+ 36,208,19,36,248,244,75,1,0,24,38,242,0,1,17,25,
+ 218,20,24,240,3,1,17,25,250,115,18,0,0,0,196,29,
+ 7,75,57,0,203,57,9,76,6,3,204,5,1,76,6,3,
+ 78,99,4,0,0,0,0,0,0,0,0,0,0,0,5,0,
+ 0,0,3,0,0,0,243,140,1,0,0,151,0,124,1,114,
+ 17,116,1,0,0,0,0,0,0,0,0,116,2,0,0,0,
+ 0,0,0,0,0,100,1,100,0,171,3,0,0,0,0,0,
+ 0,115,1,121,2,9,0,124,0,106,4,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,125,4,124,
+ 1,124,2,107,55,0,0,114,32,124,1,106,11,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,
+ 6,171,1,0,0,0,0,0,0,114,13,124,1,100,7,100,
+ 0,26,0,125,1,124,3,115,8,124,1,155,0,100,8,157,
+ 2,125,1,110,2,100,9,125,3,124,1,106,13,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,
+ 10,124,4,171,2,0,0,0,0,0,0,125,5,124,3,114,
+ 33,116,2,0,0,0,0,0,0,0,0,106,14,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155,
+ 0,124,4,155,0,124,5,155,0,157,3,125,6,124,6,155,
+ 0,124,4,155,0,100,11,157,3,125,7,124,7,124,6,102,
+ 2,83,0,100,0,125,6,116,2,0,0,0,0,0,0,0,
+ 0,106,14,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,155,0,124,4,155,0,124,5,155,0,100,
+ 12,157,4,125,7,124,7,124,6,102,2,83,0,35,0,116,
+ 6,0,0,0,0,0,0,0,0,36,0,114,33,1,0,116,
+ 2,0,0,0,0,0,0,0,0,106,8,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,100,3,107,
+ 40,0,0,114,2,100,4,110,1,100,5,120,1,125,4,124,
+ 0,95,2,0,0,0,0,0,0,0,0,89,0,140,160,119,
+ 0,120,3,89,0,119,1,41,13,78,218,11,95,115,116,100,
+ 108,105,98,95,100,105,114,114,55,1,0,0,218,5,119,105,
+ 110,51,50,250,1,92,250,1,47,250,1,60,114,138,0,0,
+ 0,122,9,46,95,95,105,110,105,116,95,95,70,114,244,0,
+ 0,0,122,11,95,95,105,110,105,116,95,95,46,112,121,122,
+ 3,46,112,121,41,8,114,15,0,0,0,114,24,0,0,0,
+ 218,4,95,83,69,80,114,4,0,0,0,218,8,112,108,97,
+ 116,102,111,114,109,114,168,0,0,0,114,20,0,0,0,114,
+ 76,1,0,0,41,8,114,40,1,0,0,114,180,0,0,0,
+ 218,5,97,108,105,97,115,114,72,1,0,0,218,3,115,101,
+ 112,218,7,114,101,108,102,105,108,101,114,73,1,0,0,114,
+ 214,0,0,0,115,8,0,0,0,32,32,32,32,32,32,32,
+ 32,114,7,0,0,0,114,66,1,0,0,122,32,70,114,111,
+ 122,101,110,73,109,112,111,114,116,101,114,46,95,114,101,115,
+ 111,108,118,101,95,102,105,108,101,110,97,109,101,79,4,0,
+ 0,115,249,0,0,0,128,0,225,15,23,156,119,164,115,168,
+ 77,184,52,212,31,64,216,19,29,240,2,3,9,70,1,216,
+ 18,21,151,40,145,40,136,67,240,8,0,12,20,144,117,210,
+ 11,28,216,15,23,215,15,34,209,15,34,160,51,212,15,39,
+ 216,27,35,160,65,160,66,152,60,144,8,217,23,28,216,34,
+ 42,160,26,168,57,208,31,53,145,72,224,24,29,144,5,216,
+ 18,26,215,18,34,209,18,34,160,51,168,3,211,18,44,136,
+ 7,217,11,16,220,24,27,159,15,153,15,208,23,40,168,19,
+ 168,5,168,103,168,89,208,21,55,136,70,216,26,32,152,24,
+ 160,35,160,21,160,107,208,23,50,136,72,240,8,0,16,24,
+ 152,22,208,15,31,208,8,31,240,5,0,22,26,136,70,220,
+ 26,29,159,47,153,47,208,25,42,168,51,168,37,176,7,168,
+ 121,184,3,208,23,60,136,72,216,15,23,152,22,208,15,31,
+ 208,8,31,248,244,35,0,16,30,242,0,1,9,70,1,220,
+ 37,40,167,92,161,92,176,87,210,37,60,153,84,192,35,208,
+ 12,69,136,67,144,35,150,40,240,3,1,9,70,1,250,115,
+ 17,0,0,0,150,12,66,25,0,194,25,39,67,3,3,195,
+ 2,1,67,3,3,99,4,0,0,0,0,0,0,0,0,0,
+ 0,0,6,0,0,0,3,0,0,0,243,50,1,0,0,151,
+ 0,116,1,0,0,0,0,0,0,0,0,116,2,0,0,0,
+ 0,0,0,0,0,106,4,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,124,1,171,2,0,0,0,
+ 0,0,0,125,4,124,4,128,1,121,0,124,4,92,3,0,
+ 0,125,5,125,6,125,7,116,7,0,0,0,0,0,0,0,
+ 0,124,1,124,0,124,0,106,8,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,124,6,172,1,171,
+ 4,0,0,0,0,0,0,125,8,124,0,106,11,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,
+ 7,124,1,124,6,171,3,0,0,0,0,0,0,92,2,0,
+ 0,125,9,125,10,2,0,116,13,0,0,0,0,0,0,0,
+ 0,116,14,0,0,0,0,0,0,0,0,106,16,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,
+ 1,0,0,0,0,0,0,124,9,124,7,172,2,171,2,0,
+ 0,0,0,0,0,124,8,95,9,0,0,0,0,0,0,0,
+ 0,124,10,114,28,124,8,106,20,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,106,23,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,
+ 3,124,10,171,2,0,0,0,0,0,0,1,0,124,8,83,
+ 0,41,4,78,114,253,0,0,0,114,62,1,0,0,114,125,
+ 0,0,0,41,12,114,161,0,0,0,114,151,0,0,0,218,
+ 11,102,105,110,100,95,102,114,111,122,101,110,114,194,0,0,
+ 0,114,255,0,0,0,114,66,1,0,0,114,5,0,0,0,
+ 114,24,0,0,0,114,67,1,0,0,114,219,0,0,0,114,
+ 223,0,0,0,114,68,1,0,0,41,11,114,40,1,0,0,
+ 114,180,0,0,0,114,41,1,0,0,114,42,1,0,0,218,
+ 4,105,110,102,111,218,1,95,114,72,1,0,0,114,63,1,
+ 0,0,114,199,0,0,0,114,214,0,0,0,114,73,1,0,
+ 0,115,11,0,0,0,32,32,32,32,32,32,32,32,32,32,
+ 32,114,7,0,0,0,114,43,1,0,0,122,24,70,114,111,
+ 122,101,110,73,109,112,111,114,116,101,114,46,102,105,110,100,
+ 95,115,112,101,99,104,4,0,0,115,157,0,0,0,128,0,
+ 228,15,40,172,20,215,41,57,209,41,57,184,56,211,15,68,
+ 136,4,216,11,15,136,60,216,19,23,240,26,0,30,34,209,
+ 8,26,136,1,136,53,144,40,220,15,31,160,8,168,35,216,
+ 39,42,167,123,161,123,216,43,48,244,5,2,16,50,136,4,
+ 240,6,0,28,31,215,27,48,209,27,48,176,24,184,56,192,
+ 85,211,27,75,209,8,24,136,8,144,38,216,28,52,156,68,
+ 164,19,215,33,51,209,33,51,211,28,52,216,21,29,216,21,
+ 29,244,5,3,29,10,136,4,212,8,25,241,8,0,12,18,
+ 216,12,16,215,12,43,209,12,43,215,12,50,209,12,50,176,
+ 49,176,102,212,12,61,216,15,19,136,11,114,22,0,0,0,
+ 99,1,0,0,0,0,0,0,0,0,0,0,0,4,0,0,
+ 0,3,0,0,0,243,144,0,0,0,151,0,116,1,0,0,
+ 0,0,0,0,0,0,124,0,106,2,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,171,1,0,0,
+ 0,0,0,0,125,1,9,0,124,0,106,4,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,6,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,125,2,124,2,114,7,124,2,124,1,95,4,0,0,
+ 0,0,0,0,0,0,124,1,83,0,35,0,116,10,0,0,
+ 0,0,0,0,0,0,36,0,114,4,1,0,89,0,124,1,
+ 83,0,119,0,120,3,89,0,119,1,41,1,122,22,83,101,
+ 116,32,95,95,102,105,108,101,95,95,44,32,105,102,32,97,
+ 98,108,101,46,41,6,114,27,0,0,0,114,26,0,0,0,
+ 114,219,0,0,0,114,214,0,0,0,114,212,0,0,0,114,
+ 4,0,0,0,41,3,114,199,0,0,0,114,200,0,0,0,
+ 114,214,0,0,0,115,3,0,0,0,32,32,32,114,7,0,
+ 0,0,114,18,1,0,0,122,28,70,114,111,122,101,110,73,
+ 109,112,111,114,116,101,114,46,99,114,101,97,116,101,95,109,
+ 111,100,117,108,101,134,4,0,0,115,84,0,0,0,128,0,
+ 244,6,0,18,29,152,84,159,89,153,89,211,17,39,136,6,
+ 240,2,6,9,43,216,23,27,215,23,40,209,23,40,215,23,
+ 49,209,23,49,136,72,241,8,0,16,24,216,34,42,144,6,
+ 148,15,216,15,21,136,13,248,244,11,0,16,30,242,0,1,
+ 9,17,216,12,16,240,8,0,16,22,136,13,240,11,1,9,
+ 17,250,115,15,0,0,0,151,22,56,0,184,9,65,5,3,
+ 193,4,1,65,5,3,99,1,0,0,0,0,0,0,0,0,
+ 0,0,0,4,0,0,0,3,0,0,0,243,148,0,0,0,
+ 151,0,124,0,106,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,125,1,124,1,106,2,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 125,2,116,5,0,0,0,0,0,0,0,0,116,6,0,0,
+ 0,0,0,0,0,0,106,8,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,124,2,171,2,0,0,
+ 0,0,0,0,125,3,116,11,0,0,0,0,0,0,0,0,
+ 124,3,124,0,106,12,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,171,2,0,0,0,0,0,0,
+ 1,0,121,0,114,2,0,0,0,41,7,114,204,0,0,0,
+ 114,26,0,0,0,114,161,0,0,0,114,151,0,0,0,218,
+ 17,103,101,116,95,102,114,111,122,101,110,95,111,98,106,101,
+ 99,116,218,4,101,120,101,99,114,16,0,0,0,41,4,114,
+ 200,0,0,0,114,199,0,0,0,114,26,0,0,0,218,4,
+ 99,111,100,101,115,4,0,0,0,32,32,32,32,114,7,0,
+ 0,0,114,19,1,0,0,122,26,70,114,111,122,101,110,73,
+ 109,112,111,114,116,101,114,46,101,120,101,99,95,109,111,100,
+ 117,108,101,147,4,0,0,115,52,0,0,0,128,0,224,15,
+ 21,143,127,137,127,136,4,216,15,19,143,121,137,121,136,4,
+ 220,15,40,172,20,215,41,63,209,41,63,192,20,211,15,70,
+ 136,4,220,8,12,136,84,144,54,151,63,145,63,213,8,35,
+ 114,22,0,0,0,99,2,0,0,0,0,0,0,0,0,0,
+ 0,0,4,0,0,0,3,0,0,0,243,212,0,0,0,151,
+ 0,116,1,0,0,0,0,0,0,0,0,124,0,124,1,171,
+ 2,0,0,0,0,0,0,125,2,116,2,0,0,0,0,0,
+ 0,0,0,106,5,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,124,1,171,1,0,0,0,0,0,
+ 0,125,3,124,3,128,2,74,0,130,1,124,3,92,3,0,
+ 0,125,4,125,5,125,6,124,6,124,2,95,3,0,0,0,
+ 0,0,0,0,0,116,9,0,0,0,0,0,0,0,0,124,
+ 2,171,1,0,0,0,0,0,0,106,11,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,100,2,100,
+ 1,171,2,0,0,0,0,0,0,1,0,124,5,114,7,103,
+ 0,124,2,95,6,0,0,0,0,0,0,0,0,124,0,106,
+ 15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,124,2,171,1,0,0,0,0,0,0,1,0,124,
+ 2,83,0,41,3,122,95,76,111,97,100,32,97,32,102,114,
+ 111,122,101,110,32,109,111,100,117,108,101,46,10,10,32,32,
+ 32,32,32,32,32,32,84,104,105,115,32,109,101,116,104,111,
+ 100,32,105,115,32,100,101,112,114,101,99,97,116,101,100,46,
+ 32,32,85,115,101,32,101,120,101,99,95,109,111,100,117,108,
+ 101,40,41,32,105,110,115,116,101,97,100,46,10,10,32,32,
+ 32,32,32,32,32,32,78,114,212,0,0,0,41,8,114,201,
+ 0,0,0,114,151,0,0,0,114,87,1,0,0,114,61,1,
+ 0,0,114,64,1,0,0,114,68,0,0,0,114,7,1,0,
+ 0,114,74,1,0,0,41,7,114,40,1,0,0,114,180,0,
+ 0,0,114,200,0,0,0,114,88,1,0,0,114,89,1,0,
+ 0,114,72,1,0,0,114,63,1,0,0,115,7,0,0,0,
+ 32,32,32,32,32,32,32,114,7,0,0,0,114,28,1,0,
+ 0,122,26,70,114,111,122,101,110,73,109,112,111,114,116,101,
+ 114,46,108,111,97,100,95,109,111,100,117,108,101,154,4,0,
+ 0,115,110,0,0,0,128,0,244,16,0,18,35,160,51,168,
+ 8,211,17,49,136,6,220,15,19,215,15,31,209,15,31,160,
+ 8,211,15,41,136,4,216,15,19,208,15,31,209,8,31,216,
+ 29,33,209,8,26,136,1,136,53,144,40,216,30,38,136,6,
+ 212,8,27,220,8,12,136,86,139,12,215,8,24,209,8,24,
+ 152,26,160,84,212,8,42,217,11,16,216,30,32,136,70,140,
+ 79,216,8,11,215,8,26,209,8,26,152,54,212,8,34,216,
+ 15,21,136,13,114,22,0,0,0,99,2,0,0,0,0,0,
+ 0,0,0,0,0,0,3,0,0,0,3,0,0,0,243,44,
+ 0,0,0,151,0,116,0,0,0,0,0,0,0,0,0,106,
+ 3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,124,1,171,1,0,0,0,0,0,0,83,0,41,
+ 1,122,45,82,101,116,117,114,110,32,116,104,101,32,99,111,
+ 100,101,32,111,98,106,101,99,116,32,102,111,114,32,116,104,
+ 101,32,102,114,111,122,101,110,32,109,111,100,117,108,101,46,
+ 41,2,114,151,0,0,0,114,92,1,0,0,114,49,1,0,
+ 0,115,2,0,0,0,32,32,114,7,0,0,0,114,50,1,
+ 0,0,122,23,70,114,111,122,101,110,73,109,112,111,114,116,
+ 101,114,46,103,101,116,95,99,111,100,101,173,4,0,0,243,
+ 21,0,0,0,128,0,244,8,0,16,20,215,15,37,209,15,
+ 37,160,104,211,15,47,208,8,47,114,22,0,0,0,99,2,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,
+ 0,0,0,243,4,0,0,0,151,0,121,1,41,2,122,54,
+ 82,101,116,117,114,110,32,78,111,110,101,32,97,115,32,102,
+ 114,111,122,101,110,32,109,111,100,117,108,101,115,32,100,111,
+ 32,110,111,116,32,104,97,118,101,32,115,111,117,114,99,101,
+ 32,99,111,100,101,46,78,114,31,0,0,0,114,49,1,0,
+ 0,115,2,0,0,0,32,32,114,7,0,0,0,114,53,1,
+ 0,0,122,25,70,114,111,122,101,110,73,109,112,111,114,116,
+ 101,114,46,103,101,116,95,115,111,117,114,99,101,179,4,0,
+ 0,114,51,1,0,0,114,22,0,0,0,99,2,0,0,0,
+ 0,0,0,0,0,0,0,0,3,0,0,0,3,0,0,0,
+ 243,44,0,0,0,151,0,116,0,0,0,0,0,0,0,0,
+ 0,106,3,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,124,1,171,1,0,0,0,0,0,0,83,
+ 0,41,1,122,46,82,101,116,117,114,110,32,84,114,117,101,
+ 32,105,102,32,116,104,101,32,102,114,111,122,101,110,32,109,
+ 111,100,117,108,101,32,105,115,32,97,32,112,97,99,107,97,
+ 103,101,46,41,2,114,151,0,0,0,114,65,1,0,0,114,
+ 49,1,0,0,115,2,0,0,0,32,32,114,7,0,0,0,
+ 114,220,0,0,0,122,25,70,114,111,122,101,110,73,109,112,
+ 111,114,116,101,114,46,105,115,95,112,97,99,107,97,103,101,
+ 185,4,0,0,114,97,1,0,0,114,22,0,0,0,114,222,
+ 0,0,0,114,55,1,0,0,41,17,114,11,0,0,0,114,
+ 10,0,0,0,114,3,0,0,0,114,12,0,0,0,114,255,
+ 0,0,0,114,56,1,0,0,114,74,1,0,0,114,66,1,
+ 0,0,114,43,1,0,0,114,58,0,0,0,114,18,1,0,
+ 0,114,19,1,0,0,114,28,1,0,0,114,189,0,0,0,
+ 114,50,1,0,0,114,53,1,0,0,114,220,0,0,0,114,
+ 31,0,0,0,114,22,0,0,0,114,7,0,0,0,114,58,
+ 1,0,0,114,58,1,0,0,255,3,0,0,115,219,0,0,
+ 0,132,0,241,4,5,5,8,240,14,0,15,23,128,71,224,
+ 5,16,241,2,66,1,5,37,243,3,0,6,17,240,2,66,
+ 1,5,37,240,72,2,0,6,17,242,2,22,5,32,243,3,
+ 0,6,17,240,2,22,5,32,240,48,0,6,17,242,2,27,
+ 5,20,243,3,0,6,17,240,2,27,5,20,240,58,0,6,
+ 18,241,2,10,5,22,243,3,0,6,18,240,2,10,5,22,
+ 240,24,0,6,18,241,2,4,5,36,243,3,0,6,18,240,
+ 2,4,5,36,240,12,0,6,17,241,2,16,5,22,243,3,
+ 0,6,17,240,2,16,5,22,240,36,0,6,17,216,5,21,
+ 241,2,2,5,48,243,3,0,6,22,243,3,0,6,17,240,
+ 4,2,5,48,240,8,0,6,17,216,5,21,241,2,2,5,
+ 20,243,3,0,6,22,243,3,0,6,17,240,4,2,5,20,
+ 240,8,0,6,17,216,5,21,241,2,2,5,48,243,3,0,
+ 6,22,243,3,0,6,17,241,4,2,5,48,114,22,0,0,
+ 0,114,58,1,0,0,99,0,0,0,0,0,0,0,0,0,
+ 0,0,0,1,0,0,0,0,0,0,0,243,28,0,0,0,
+ 151,0,101,0,90,1,100,0,90,2,100,1,90,3,100,2,
+ 132,0,90,4,100,3,132,0,90,5,121,4,41,5,218,18,
+ 95,73,109,112,111,114,116,76,111,99,107,67,111,110,116,101,
+ 120,116,122,36,67,111,110,116,101,120,116,32,109,97,110,97,
+ 103,101,114,32,102,111,114,32,116,104,101,32,105,109,112,111,
+ 114,116,32,108,111,99,107,46,99,1,0,0,0,0,0,0,
+ 0,0,0,0,0,2,0,0,0,3,0,0,0,243,44,0,
+ 0,0,151,0,116,0,0,0,0,0,0,0,0,0,106,3,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,171,0,0,0,0,0,0,0,1,0,121,1,41,2,
+ 122,24,65,99,113,117,105,114,101,32,116,104,101,32,105,109,
+ 112,111,114,116,32,108,111,99,107,46,78,41,2,114,151,0,
+ 0,0,114,152,0,0,0,114,66,0,0,0,115,1,0,0,
+ 0,32,114,7,0,0,0,114,87,0,0,0,122,28,95,73,
+ 109,112,111,114,116,76,111,99,107,67,111,110,116,101,120,116,
+ 46,95,95,101,110,116,101,114,95,95,198,4,0,0,243,14,
+ 0,0,0,128,0,228,8,12,215,8,25,209,8,25,213,8,
+ 27,114,22,0,0,0,99,4,0,0,0,0,0,0,0,0,
+ 0,0,0,2,0,0,0,3,0,0,0,243,44,0,0,0,
+ 151,0,116,0,0,0,0,0,0,0,0,0,106,3,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 171,0,0,0,0,0,0,0,1,0,121,1,41,2,122,60,
+ 82,101,108,101,97,115,101,32,116,104,101,32,105,109,112,111,
+ 114,116,32,108,111,99,107,32,114,101,103,97,114,100,108,101,
+ 115,115,32,111,102,32,97,110,121,32,114,97,105,115,101,100,
+ 32,101,120,99,101,112,116,105,111,110,115,46,78,41,2,114,
+ 151,0,0,0,114,154,0,0,0,41,4,114,44,0,0,0,
+ 218,8,101,120,99,95,116,121,112,101,218,9,101,120,99,95,
+ 118,97,108,117,101,218,13,101,120,99,95,116,114,97,99,101,
+ 98,97,99,107,115,4,0,0,0,32,32,32,32,114,7,0,
+ 0,0,114,92,0,0,0,122,27,95,73,109,112,111,114,116,
+ 76,111,99,107,67,111,110,116,101,120,116,46,95,95,101,120,
+ 105,116,95,95,202,4,0,0,114,103,1,0,0,114,22,0,
+ 0,0,78,41,6,114,11,0,0,0,114,10,0,0,0,114,
+ 3,0,0,0,114,12,0,0,0,114,87,0,0,0,114,92,
+ 0,0,0,114,31,0,0,0,114,22,0,0,0,114,7,0,
+ 0,0,114,101,1,0,0,114,101,1,0,0,194,4,0,0,
+ 115,15,0,0,0,132,0,225,4,46,242,4,2,5,28,243,
+ 8,2,5,28,114,22,0,0,0,114,101,1,0,0,99,3,
+ 0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,3,
+ 0,0,0,243,126,0,0,0,151,0,124,1,106,1,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 100,1,124,2,100,2,122,10,0,0,171,2,0,0,0,0,
+ 0,0,125,3,116,3,0,0,0,0,0,0,0,0,124,3,
+ 171,1,0,0,0,0,0,0,124,2,107,2,0,0,114,11,
+ 116,5,0,0,0,0,0,0,0,0,100,3,171,1,0,0,
+ 0,0,0,0,130,1,124,3,100,4,25,0,0,0,125,4,
+ 124,0,114,7,124,4,155,0,100,1,124,0,155,0,157,3,
+ 83,0,124,4,83,0,41,5,122,50,82,101,115,111,108,118,
+ 101,32,97,32,114,101,108,97,116,105,118,101,32,109,111,100,
+ 117,108,101,32,110,97,109,101,32,116,111,32,97,110,32,97,
+ 98,115,111,108,117,116,101,32,111,110,101,46,114,244,0,0,
+ 0,114,138,0,0,0,122,50,97,116,116,101,109,112,116,101,
+ 100,32,114,101,108,97,116,105,118,101,32,105,109,112,111,114,
+ 116,32,98,101,121,111,110,100,32,116,111,112,45,108,101,118,
+ 101,108,32,112,97,99,107,97,103,101,114,125,0,0,0,41,
+ 3,218,6,114,115,112,108,105,116,114,127,0,0,0,114,178,
+ 0,0,0,41,5,114,26,0,0,0,218,7,112,97,99,107,
+ 97,103,101,218,5,108,101,118,101,108,218,4,98,105,116,115,
+ 218,4,98,97,115,101,115,5,0,0,0,32,32,32,32,32,
+ 114,7,0,0,0,218,13,95,114,101,115,111,108,118,101,95,
+ 110,97,109,101,114,114,1,0,0,207,4,0,0,115,79,0,
+ 0,0,128,0,224,11,18,143,62,137,62,152,35,152,117,160,
+ 113,153,121,211,11,41,128,68,220,7,10,136,52,131,121,144,
+ 53,210,7,24,220,14,25,208,26,78,211,14,79,208,8,79,
+ 216,11,15,144,1,137,55,128,68,217,31,35,136,100,136,86,
+ 144,49,144,84,144,70,208,11,27,208,4,45,168,20,208,4,
+ 45,114,22,0,0,0,99,3,0,0,0,0,0,0,0,0,
+ 0,0,0,7,0,0,0,3,0,0,0,243,242,1,0,0,
+ 151,0,116,0,0,0,0,0,0,0,0,0,106,2,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 125,3,124,3,128,11,116,5,0,0,0,0,0,0,0,0,
+ 100,2,171,1,0,0,0,0,0,0,130,1,124,3,115,26,
+ 116,6,0,0,0,0,0,0,0,0,106,9,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,3,
+ 116,10,0,0,0,0,0,0,0,0,171,2,0,0,0,0,
+ 0,0,1,0,124,0,116,0,0,0,0,0,0,0,0,0,
+ 106,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,118,0,125,4,124,3,68,0,93,113,0,0,
+ 125,5,116,15,0,0,0,0,0,0,0,0,171,0,0,0,
+ 0,0,0,0,53,0,1,0,9,0,124,5,106,16,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 125,6,2,0,124,6,124,0,124,1,124,2,171,3,0,0,
+ 0,0,0,0,125,7,9,0,100,1,100,1,100,1,171,2,
+ 0,0,0,0,0,0,1,0,127,7,128,1,140,49,124,4,
+ 115,60,124,0,116,0,0,0,0,0,0,0,0,0,106,12,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,118,0,114,42,116,0,0,0,0,0,0,0,0,0,
+ 106,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,124,0,25,0,0,0,125,8,9,0,124,8,
+ 106,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,125,9,124,9,128,4,124,7,99,2,1,0,
+ 83,0,124,9,99,2,1,0,83,0,124,7,99,2,1,0,
+ 83,0,4,0,121,1,35,0,116,18,0,0,0,0,0,0,
+ 0,0,36,0,114,11,1,0,89,0,100,1,100,1,100,1,
+ 171,2,0,0,0,0,0,0,1,0,140,136,119,0,120,3,
+ 89,0,119,1,35,0,49,0,115,1,119,2,1,0,89,0,
+ 1,0,1,0,140,103,120,3,89,0,119,1,35,0,116,18,
+ 0,0,0,0,0,0,0,0,36,0,114,7,1,0,124,7,
+ 99,2,89,0,99,2,1,0,83,0,119,0,120,3,89,0,
+ 119,1,41,4,122,21,70,105,110,100,32,97,32,109,111,100,
+ 117,108,101,39,115,32,115,112,101,99,46,78,122,53,115,121,
+ 115,46,109,101,116,97,95,112,97,116,104,32,105,115,32,78,
+ 111,110,101,44,32,80,121,116,104,111,110,32,105,115,32,108,
+ 105,107,101,108,121,32,115,104,117,116,116,105,110,103,32,100,
+ 111,119,110,122,22,115,121,115,46,109,101,116,97,95,112,97,
+ 116,104,32,105,115,32,101,109,112,116,121,41,11,114,24,0,
+ 0,0,218,9,109,101,116,97,95,112,97,116,104,114,178,0,
+ 0,0,114,191,0,0,0,114,192,0,0,0,114,27,1,0,
+ 0,114,195,0,0,0,114,101,1,0,0,114,43,1,0,0,
+ 114,4,0,0,0,114,204,0,0,0,41,10,114,26,0,0,
+ 0,114,41,1,0,0,114,42,1,0,0,114,116,1,0,0,
+ 218,9,105,115,95,114,101,108,111,97,100,218,6,102,105,110,
+ 100,101,114,114,43,1,0,0,114,199,0,0,0,114,200,0,
+ 0,0,114,204,0,0,0,115,10,0,0,0,32,32,32,32,
+ 32,32,32,32,32,32,114,7,0,0,0,218,10,95,102,105,
+ 110,100,95,115,112,101,99,114,119,1,0,0,216,4,0,0,
+ 115,20,1,0,0,128,0,228,16,19,151,13,145,13,128,73,
+ 216,7,16,208,7,24,228,14,25,240,0,1,27,42,243,0,
+ 1,15,43,240,0,1,9,43,241,6,0,12,21,220,8,17,
+ 143,14,137,14,208,23,47,180,29,212,8,63,240,10,0,17,
+ 21,156,3,159,11,153,11,208,16,35,128,73,216,18,27,242,
+ 0,27,5,20,136,6,220,13,31,211,13,33,241,0,6,9,
+ 53,240,2,5,13,53,216,28,34,215,28,44,209,28,44,144,
+ 9,241,8,0,24,33,160,20,160,116,168,86,211,23,52,145,
+ 4,247,13,6,9,53,240,14,0,12,16,209,11,27,225,19,
+ 28,160,20,172,19,175,27,169,27,209,33,52,220,25,28,159,
+ 27,153,27,160,84,209,25,42,144,6,240,2,11,17,40,216,
+ 31,37,159,127,153,127,144,72,240,14,0,24,32,208,23,39,
+ 216,31,35,154,11,224,31,39,154,15,224,23,27,146,11,240,
+ 51,27,5,20,240,54,0,16,20,248,244,47,0,20,34,242,
+ 0,1,13,25,216,16,24,247,9,6,9,53,240,0,6,9,
+ 53,240,6,1,13,25,250,247,7,6,9,53,240,0,6,9,
+ 53,251,244,26,0,24,38,242,0,4,17,32,240,8,0,28,
+ 32,148,75,240,9,4,17,32,250,115,66,0,0,0,193,27,
+ 1,67,26,5,193,29,12,67,3,4,193,41,10,67,26,5,
+ 194,39,12,67,38,2,195,3,9,67,23,7,195,12,1,67,
+ 26,5,195,22,1,67,23,7,195,23,3,67,26,5,195,26,
+ 5,67,35,9,195,38,11,67,54,5,195,53,1,67,54,5,
+ 99,3,0,0,0,0,0,0,0,0,0,0,0,6,0,0,
+ 0,3,0,0,0,243,242,0,0,0,151,0,116,1,0,0,
+ 0,0,0,0,0,0,124,0,116,2,0,0,0,0,0,0,
+ 0,0,171,2,0,0,0,0,0,0,115,23,116,5,0,0,
+ 0,0,0,0,0,0,100,1,116,7,0,0,0,0,0,0,
+ 0,0,124,0,171,1,0,0,0,0,0,0,155,0,157,2,
+ 171,1,0,0,0,0,0,0,130,1,124,2,100,2,107,2,
+ 0,0,114,11,116,9,0,0,0,0,0,0,0,0,100,3,
+ 171,1,0,0,0,0,0,0,130,1,124,2,100,2,107,68,
+ 0,0,114,40,116,1,0,0,0,0,0,0,0,0,124,1,
+ 116,2,0,0,0,0,0,0,0,0,171,2,0,0,0,0,
+ 0,0,115,11,116,5,0,0,0,0,0,0,0,0,100,4,
+ 171,1,0,0,0,0,0,0,130,1,124,1,115,11,116,11,
+ 0,0,0,0,0,0,0,0,100,5,171,1,0,0,0,0,
+ 0,0,130,1,124,0,115,17,124,2,100,2,107,40,0,0,
+ 114,11,116,9,0,0,0,0,0,0,0,0,100,6,171,1,
+ 0,0,0,0,0,0,130,1,121,7,121,7,41,8,122,28,
+ 86,101,114,105,102,121,32,97,114,103,117,109,101,110,116,115,
+ 32,97,114,101,32,34,115,97,110,101,34,46,122,29,109,111,
+ 100,117,108,101,32,110,97,109,101,32,109,117,115,116,32,98,
+ 101,32,115,116,114,44,32,110,111,116,32,114,125,0,0,0,
+ 122,18,108,101,118,101,108,32,109,117,115,116,32,98,101,32,
+ 62,61,32,48,122,31,95,95,112,97,99,107,97,103,101,95,
+ 95,32,110,111,116,32,115,101,116,32,116,111,32,97,32,115,
+ 116,114,105,110,103,122,54,97,116,116,101,109,112,116,101,100,
+ 32,114,101,108,97,116,105,118,101,32,105,109,112,111,114,116,
+ 32,119,105,116,104,32,110,111,32,107,110,111,119,110,32,112,
+ 97,114,101,110,116,32,112,97,99,107,97,103,101,122,17,69,
+ 109,112,116,121,32,109,111,100,117,108,101,32,110,97,109,101,
+ 78,41,6,114,23,1,0,0,218,3,115,116,114,218,9,84,
+ 121,112,101,69,114,114,111,114,114,5,0,0,0,218,10,86,
+ 97,108,117,101,69,114,114,111,114,114,178,0,0,0,169,3,
+ 114,26,0,0,0,114,110,1,0,0,114,111,1,0,0,115,
+ 3,0,0,0,32,32,32,114,7,0,0,0,218,13,95,115,
+ 97,110,105,116,121,95,99,104,101,99,107,114,125,1,0,0,
+ 5,5,0,0,115,132,0,0,0,128,0,228,11,21,144,100,
+ 156,67,212,11,32,220,14,23,208,26,55,188,4,184,84,187,
+ 10,176,124,208,24,68,211,14,69,208,8,69,216,7,12,136,
+ 113,130,121,220,14,24,208,25,45,211,14,46,208,8,46,216,
+ 7,12,136,113,130,121,220,15,25,152,39,164,51,212,15,39,
+ 220,18,27,208,28,61,211,18,62,208,12,62,217,17,24,220,
+ 18,29,240,0,1,31,40,243,0,1,19,41,240,0,1,13,
+ 41,225,11,15,144,69,152,81,146,74,220,14,24,208,25,44,
+ 211,14,45,208,8,45,240,3,0,21,31,136,52,114,22,0,
+ 0,0,122,16,78,111,32,109,111,100,117,108,101,32,110,97,
+ 109,101,100,32,122,4,123,33,114,125,99,2,0,0,0,0,
+ 0,0,0,0,0,0,0,6,0,0,0,3,0,0,0,243,
+ 86,3,0,0,151,0,100,0,125,2,124,0,106,1,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 100,1,171,1,0,0,0,0,0,0,100,2,25,0,0,0,
+ 125,3,100,0,125,4,124,3,114,131,124,3,116,2,0,0,
+ 0,0,0,0,0,0,106,4,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,118,1,114,12,116,7,
+ 0,0,0,0,0,0,0,0,124,1,124,3,171,2,0,0,
+ 0,0,0,0,1,0,124,0,116,2,0,0,0,0,0,0,
+ 0,0,106,4,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,118,0,114,19,116,2,0,0,0,0,
+ 0,0,0,0,106,4,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,124,0,25,0,0,0,83,0,
+ 116,2,0,0,0,0,0,0,0,0,106,4,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,3,
+ 25,0,0,0,125,5,9,0,124,5,106,8,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,2,
+ 124,5,106,16,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,125,4,124,0,106,1,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,1,
+ 171,1,0,0,0,0,0,0,100,6,25,0,0,0,125,7,
+ 116,19,0,0,0,0,0,0,0,0,124,0,124,2,171,2,
+ 0,0,0,0,0,0,125,8,124,8,128,21,116,15,0,0,
+ 0,0,0,0,0,0,116,12,0,0,0,0,0,0,0,0,
+ 155,0,124,0,155,2,157,2,124,0,172,5,171,2,0,0,
+ 0,0,0,0,130,1,124,4,114,27,124,4,106,20,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 106,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,127,7,171,1,0,0,0,0,0,0,1,0,
+ 9,0,116,25,0,0,0,0,0,0,0,0,124,8,171,1,
+ 0,0,0,0,0,0,125,9,124,4,114,27,124,4,106,20,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,106,27,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,171,0,0,0,0,0,0,0,1,0,
+ 9,0,124,3,114,35,116,2,0,0,0,0,0,0,0,0,
+ 106,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,124,3,25,0,0,0,125,5,9,0,116,29,
+ 0,0,0,0,0,0,0,0,124,5,127,7,124,9,171,3,
+ 0,0,0,0,0,0,1,0,124,9,83,0,124,9,83,0,
+ 35,0,116,10,0,0,0,0,0,0,0,0,36,0,114,29,
+ 1,0,116,12,0,0,0,0,0,0,0,0,155,0,124,0,
+ 155,2,100,3,124,3,155,2,100,4,157,5,125,6,116,15,
+ 0,0,0,0,0,0,0,0,124,6,124,0,172,5,171,2,
+ 0,0,0,0,0,0,100,0,130,2,119,0,120,3,89,0,
+ 119,1,35,0,124,4,114,27,124,4,106,20,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,27,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,171,0,0,0,0,0,0,0,1,0,119,0,119,0,
+ 120,3,89,0,119,1,35,0,116,10,0,0,0,0,0,0,
+ 0,0,36,0,114,38,1,0,100,7,124,3,155,2,100,8,
+ 127,7,155,2,157,4,125,6,116,30,0,0,0,0,0,0,
+ 0,0,106,33,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,124,6,116,34,0,0,0,0,0,0,
+ 0,0,171,2,0,0,0,0,0,0,1,0,89,0,124,9,
+ 83,0,119,0,120,3,89,0,119,1,41,9,78,114,244,0,
+ 0,0,114,125,0,0,0,122,2,59,32,122,17,32,105,115,
+ 32,110,111,116,32,97,32,112,97,99,107,97,103,101,114,25,
+ 0,0,0,233,2,0,0,0,122,27,67,97,110,110,111,116,
+ 32,115,101,116,32,97,110,32,97,116,116,114,105,98,117,116,
+ 101,32,111,110,32,122,18,32,102,111,114,32,99,104,105,108,
+ 100,32,109,111,100,117,108,101,32,41,18,114,245,0,0,0,
+ 114,24,0,0,0,114,195,0,0,0,114,161,0,0,0,114,
+ 7,1,0,0,114,4,0,0,0,218,15,95,69,82,82,95,
+ 77,83,71,95,80,82,69,70,73,88,218,19,77,111,100,117,
+ 108,101,78,111,116,70,111,117,110,100,69,114,114,111,114,114,
+ 204,0,0,0,114,119,1,0,0,114,224,0,0,0,114,51,
+ 0,0,0,114,33,1,0,0,114,68,0,0,0,114,14,0,
+ 0,0,114,191,0,0,0,114,192,0,0,0,114,27,1,0,
+ 0,41,10,114,26,0,0,0,218,7,105,109,112,111,114,116,
+ 95,114,41,1,0,0,114,246,0,0,0,218,11,112,97,114,
+ 101,110,116,95,115,112,101,99,218,13,112,97,114,101,110,116,
+ 95,109,111,100,117,108,101,114,198,0,0,0,218,5,99,104,
+ 105,108,100,114,199,0,0,0,114,200,0,0,0,115,10,0,
+ 0,0,32,32,32,32,32,32,32,32,32,32,114,7,0,0,
+ 0,218,23,95,102,105,110,100,95,97,110,100,95,108,111,97,
+ 100,95,117,110,108,111,99,107,101,100,114,134,1,0,0,24,
+ 5,0,0,115,177,1,0,0,128,0,216,11,15,128,68,216,
+ 13,17,143,95,137,95,152,83,211,13,33,160,33,209,13,36,
+ 128,70,216,18,22,128,75,217,7,13,216,11,17,156,19,159,
+ 27,153,27,209,11,36,220,12,37,160,103,168,118,212,12,54,
+ 224,11,15,148,51,151,59,145,59,209,11,30,220,19,22,151,
+ 59,145,59,152,116,209,19,36,208,12,36,220,24,27,159,11,
+ 153,11,160,70,209,24,43,136,13,240,2,4,9,64,1,216,
+ 19,32,215,19,41,209,19,41,136,68,240,8,0,23,36,215,
+ 22,44,209,22,44,136,11,216,16,20,151,15,145,15,160,3,
+ 211,16,36,160,81,209,16,39,136,5,220,11,21,144,100,152,
+ 68,211,11,33,128,68,216,7,11,128,124,220,14,33,164,95,
+ 208,36,53,176,100,176,88,208,34,62,192,84,212,14,74,208,
+ 8,74,225,11,22,240,6,0,13,24,215,12,49,209,12,49,
+ 215,12,56,209,12,56,184,21,212,12,63,240,2,4,9,60,
+ 220,21,35,160,68,211,21,41,136,70,225,15,26,216,16,27,
+ 215,16,53,209,16,53,215,16,57,209,16,57,213,16,59,217,
+ 7,13,228,24,27,159,11,153,11,160,70,209,24,43,136,13,
+ 240,2,4,9,47,220,12,19,144,77,160,53,168,38,212,12,
+ 49,240,8,0,12,18,128,77,136,54,128,77,248,244,53,0,
+ 16,30,242,0,2,9,64,1,220,21,36,208,20,37,160,100,
+ 160,88,168,82,176,6,168,122,208,57,74,208,18,75,136,67,
+ 220,18,37,160,99,176,4,212,18,53,184,52,208,12,63,240,
+ 5,2,9,64,1,251,241,32,0,16,27,216,16,27,215,16,
+ 53,209,16,53,215,16,57,209,16,57,213,16,59,240,3,0,
+ 16,27,251,244,14,0,16,30,242,0,2,9,47,216,20,47,
+ 176,6,168,122,208,57,75,200,69,200,57,208,18,85,136,67,
+ 220,12,21,143,78,137,78,152,51,164,13,213,12,46,216,11,
+ 17,128,77,240,7,2,9,47,250,115,42,0,0,0,193,50,
+ 12,68,46,0,195,31,11,69,23,0,196,29,13,69,57,0,
+ 196,46,38,69,20,3,197,23,31,69,54,3,197,57,43,70,
+ 40,3,198,39,1,70,40,3,99,2,0,0,0,0,0,0,
+ 0,0,0,0,0,7,0,0,0,3,0,0,0,243,146,1,
+ 0,0,151,0,116,0,0,0,0,0,0,0,0,0,106,2,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,106,5,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,124,0,116,6,0,0,0,0,0,0,
+ 0,0,171,2,0,0,0,0,0,0,125,2,124,2,116,6,
+ 0,0,0,0,0,0,0,0,117,0,115,24,116,9,0,0,
+ 0,0,0,0,0,0,116,9,0,0,0,0,0,0,0,0,
+ 124,2,100,1,100,2,171,3,0,0,0,0,0,0,100,3,
+ 100,4,171,3,0,0,0,0,0,0,114,97,116,11,0,0,
+ 0,0,0,0,0,0,124,0,171,1,0,0,0,0,0,0,
+ 53,0,1,0,116,0,0,0,0,0,0,0,0,0,106,2,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,106,5,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,124,0,116,6,0,0,0,0,0,0,
+ 0,0,171,2,0,0,0,0,0,0,125,2,124,2,116,6,
+ 0,0,0,0,0,0,0,0,117,0,114,21,116,13,0,0,
+ 0,0,0,0,0,0,124,0,124,1,171,2,0,0,0,0,
+ 0,0,99,2,100,2,100,2,100,2,171,2,0,0,0,0,
+ 0,0,1,0,83,0,9,0,100,2,100,2,100,2,171,2,
+ 0,0,0,0,0,0,1,0,116,15,0,0,0,0,0,0,
+ 0,0,124,0,171,1,0,0,0,0,0,0,1,0,124,2,
+ 128,19,100,5,124,0,155,0,100,6,157,3,125,3,116,17,
+ 0,0,0,0,0,0,0,0,124,3,124,0,172,7,171,2,
+ 0,0,0,0,0,0,130,1,124,2,83,0,35,0,49,0,
+ 115,1,119,2,1,0,89,0,1,0,1,0,140,43,120,3,
+ 89,0,119,1,41,8,122,25,70,105,110,100,32,97,110,100,
+ 32,108,111,97,100,32,116,104,101,32,109,111,100,117,108,101,
+ 46,114,204,0,0,0,78,114,32,1,0,0,70,122,10,105,
+ 109,112,111,114,116,32,111,102,32,122,28,32,104,97,108,116,
+ 101,100,59,32,78,111,110,101,32,105,110,32,115,121,115,46,
+ 109,111,100,117,108,101,115,114,25,0,0,0,41,9,114,24,
+ 0,0,0,114,195,0,0,0,114,76,0,0,0,218,14,95,
+ 78,69,69,68,83,95,76,79,65,68,73,78,71,114,15,0,
+ 0,0,114,142,0,0,0,114,134,1,0,0,114,157,0,0,
+ 0,114,129,1,0,0,41,4,114,26,0,0,0,114,130,1,
+ 0,0,114,200,0,0,0,114,172,0,0,0,115,4,0,0,
+ 0,32,32,32,32,114,7,0,0,0,218,14,95,102,105,110,
+ 100,95,97,110,100,95,108,111,97,100,114,137,1,0,0,69,
+ 5,0,0,115,181,0,0,0,128,0,244,10,0,14,17,143,
+ 91,137,91,143,95,137,95,152,84,164,62,211,13,50,128,70,
+ 216,8,14,148,46,209,8,32,220,8,15,148,7,152,6,160,
+ 10,168,68,211,16,49,176,63,192,69,212,8,74,220,13,31,
+ 160,4,211,13,37,241,0,3,9,62,220,21,24,151,91,145,
+ 91,151,95,145,95,160,84,172,62,211,21,58,136,70,216,15,
+ 21,156,30,209,15,39,220,23,46,168,116,176,87,211,23,61,
+ 247,7,3,9,62,241,0,3,9,62,224,15,39,247,5,3,
+ 9,62,244,18,0,9,28,152,68,212,8,33,224,7,13,128,
+ 126,216,20,30,152,116,152,102,208,36,64,208,18,65,136,7,
+ 220,14,33,160,39,176,4,212,14,53,208,8,53,224,11,17,
+ 128,77,247,31,3,9,62,240,0,3,9,62,250,115,12,0,
+ 0,0,193,16,56,66,61,3,194,61,5,67,6,7,99,3,
+ 0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,3,
+ 0,0,0,243,96,0,0,0,151,0,116,1,0,0,0,0,
+ 0,0,0,0,124,0,124,1,124,2,171,3,0,0,0,0,
+ 0,0,1,0,124,2,100,1,107,68,0,0,114,13,116,3,
+ 0,0,0,0,0,0,0,0,124,0,124,1,124,2,171,3,
+ 0,0,0,0,0,0,125,0,116,5,0,0,0,0,0,0,
+ 0,0,124,0,116,6,0,0,0,0,0,0,0,0,171,2,
+ 0,0,0,0,0,0,83,0,41,2,97,50,1,0,0,73,
+ 109,112,111,114,116,32,97,110,100,32,114,101,116,117,114,110,
+ 32,116,104,101,32,109,111,100,117,108,101,32,98,97,115,101,
+ 100,32,111,110,32,105,116,115,32,110,97,109,101,44,32,116,
+ 104,101,32,112,97,99,107,97,103,101,32,116,104,101,32,99,
+ 97,108,108,32,105,115,10,32,32,32,32,98,101,105,110,103,
+ 32,109,97,100,101,32,102,114,111,109,44,32,97,110,100,32,
+ 116,104,101,32,108,101,118,101,108,32,97,100,106,117,115,116,
+ 109,101,110,116,46,10,10,32,32,32,32,84,104,105,115,32,
+ 102,117,110,99,116,105,111,110,32,114,101,112,114,101,115,101,
+ 110,116,115,32,116,104,101,32,103,114,101,97,116,101,115,116,
+ 32,99,111,109,109,111,110,32,100,101,110,111,109,105,110,97,
+ 116,111,114,32,111,102,32,102,117,110,99,116,105,111,110,97,
+ 108,105,116,121,10,32,32,32,32,98,101,116,119,101,101,110,
+ 32,105,109,112,111,114,116,95,109,111,100,117,108,101,32,97,
+ 110,100,32,95,95,105,109,112,111,114,116,95,95,46,32,84,
+ 104,105,115,32,105,110,99,108,117,100,101,115,32,115,101,116,
+ 116,105,110,103,32,95,95,112,97,99,107,97,103,101,95,95,
+ 32,105,102,10,32,32,32,32,116,104,101,32,108,111,97,100,
+ 101,114,32,100,105,100,32,110,111,116,46,10,10,32,32,32,
+ 32,114,125,0,0,0,41,4,114,125,1,0,0,114,114,1,
+ 0,0,114,137,1,0,0,218,11,95,103,99,100,95,105,109,
+ 112,111,114,116,114,124,1,0,0,115,3,0,0,0,32,32,
+ 32,114,7,0,0,0,114,139,1,0,0,114,139,1,0,0,
+ 95,5,0,0,115,50,0,0,0,128,0,244,18,0,5,18,
+ 144,36,152,7,160,21,212,4,39,216,7,12,136,113,130,121,
+ 220,15,28,152,84,160,55,168,69,211,15,50,136,4,220,11,
+ 25,152,36,164,11,211,11,44,208,4,44,114,22,0,0,0,
+ 169,1,218,9,114,101,99,117,114,115,105,118,101,99,3,0,
+ 0,0,0,0,0,0,1,0,0,0,9,0,0,0,3,0,
+ 0,0,243,236,1,0,0,151,0,124,1,68,0,93,164,0,
+ 0,125,4,116,1,0,0,0,0,0,0,0,0,124,4,116,
+ 2,0,0,0,0,0,0,0,0,171,2,0,0,0,0,0,
+ 0,115,56,124,3,114,16,124,0,106,4,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,100,1,122,
+ 0,0,0,125,5,110,2,100,2,125,5,116,7,0,0,0,
+ 0,0,0,0,0,100,3,124,5,155,0,100,4,116,9,0,
+ 0,0,0,0,0,0,0,124,4,171,1,0,0,0,0,0,
+ 0,106,4,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,155,0,157,4,171,1,0,0,0,0,0,
+ 0,130,1,124,4,100,5,107,40,0,0,114,42,124,3,114,
+ 1,140,83,116,11,0,0,0,0,0,0,0,0,124,0,100,
+ 6,171,2,0,0,0,0,0,0,115,1,140,96,116,13,0,
+ 0,0,0,0,0,0,0,124,0,124,0,106,14,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,
+ 2,100,7,172,8,171,4,0,0,0,0,0,0,1,0,140,
+ 122,116,11,0,0,0,0,0,0,0,0,124,0,124,4,171,
+ 2,0,0,0,0,0,0,114,1,140,135,124,0,106,4,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,155,0,100,9,124,4,155,0,157,3,125,6,9,0,116,
+ 17,0,0,0,0,0,0,0,0,124,2,124,6,171,2,0,
+ 0,0,0,0,0,1,0,140,166,4,0,124,0,83,0,35,
+ 0,116,18,0,0,0,0,0,0,0,0,36,0,114,62,125,
+ 7,124,7,106,20,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,124,6,107,40,0,0,114,41,116,
+ 22,0,0,0,0,0,0,0,0,106,24,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,106,27,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,124,6,116,28,0,0,0,0,0,0,0,0,171,2,0,
+ 0,0,0,0,0,129,5,89,0,100,10,125,7,126,7,140,
+ 234,130,0,100,10,125,7,126,7,119,1,119,0,120,3,89,
+ 0,119,1,41,11,122,238,70,105,103,117,114,101,32,111,117,
+ 116,32,119,104,97,116,32,95,95,105,109,112,111,114,116,95,
+ 95,32,115,104,111,117,108,100,32,114,101,116,117,114,110,46,
+ 10,10,32,32,32,32,84,104,101,32,105,109,112,111,114,116,
+ 95,32,112,97,114,97,109,101,116,101,114,32,105,115,32,97,
+ 32,99,97,108,108,97,98,108,101,32,119,104,105,99,104,32,
+ 116,97,107,101,115,32,116,104,101,32,110,97,109,101,32,111,
+ 102,32,109,111,100,117,108,101,32,116,111,10,32,32,32,32,
+ 105,109,112,111,114,116,46,32,73,116,32,105,115,32,114,101,
+ 113,117,105,114,101,100,32,116,111,32,100,101,99,111,117,112,
+ 108,101,32,116,104,101,32,102,117,110,99,116,105,111,110,32,
+ 102,114,111,109,32,97,115,115,117,109,105,110,103,32,105,109,
+ 112,111,114,116,108,105,98,39,115,10,32,32,32,32,105,109,
+ 112,111,114,116,32,105,109,112,108,101,109,101,110,116,97,116,
+ 105,111,110,32,105,115,32,100,101,115,105,114,101,100,46,10,
+ 10,32,32,32,32,122,8,46,95,95,97,108,108,95,95,122,
+ 13,96,96,102,114,111,109,32,108,105,115,116,39,39,122,8,
+ 73,116,101,109,32,105,110,32,122,18,32,109,117,115,116,32,
+ 98,101,32,115,116,114,44,32,110,111,116,32,250,1,42,218,
+ 7,95,95,97,108,108,95,95,84,114,140,1,0,0,114,244,
+ 0,0,0,78,41,15,114,23,1,0,0,114,121,1,0,0,
+ 114,11,0,0,0,114,122,1,0,0,114,5,0,0,0,114,
+ 13,0,0,0,218,16,95,104,97,110,100,108,101,95,102,114,
+ 111,109,108,105,115,116,114,144,1,0,0,114,161,0,0,0,
+ 114,129,1,0,0,114,26,0,0,0,114,24,0,0,0,114,
+ 195,0,0,0,114,76,0,0,0,114,136,1,0,0,41,8,
+ 114,200,0,0,0,218,8,102,114,111,109,108,105,115,116,114,
+ 130,1,0,0,114,141,1,0,0,218,1,120,218,5,119,104,
+ 101,114,101,218,9,102,114,111,109,95,110,97,109,101,218,3,
+ 101,120,99,115,8,0,0,0,32,32,32,32,32,32,32,32,
+ 114,7,0,0,0,114,145,1,0,0,114,145,1,0,0,110,
+ 5,0,0,115,248,0,0,0,128,0,240,20,0,14,22,242,
+ 0,23,5,22,136,1,220,15,25,152,33,156,83,212,15,33,
+ 217,15,24,216,24,30,159,15,153,15,168,42,209,24,52,145,
+ 5,224,24,39,144,5,220,18,27,152,104,160,117,160,103,240,
+ 0,1,46,35,220,35,39,168,1,163,55,215,35,51,209,35,
+ 51,208,34,52,240,3,1,29,54,243,0,1,19,55,240,0,
+ 1,13,55,224,13,14,144,35,138,88,218,19,28,164,23,168,
+ 22,176,25,213,33,59,220,16,32,160,22,168,22,175,30,169,
+ 30,184,23,216,43,47,246,3,1,17,49,228,17,24,152,22,
+ 160,17,213,17,35,216,27,33,159,63,153,63,208,26,43,168,
+ 49,168,81,168,67,208,24,48,136,73,240,2,9,13,22,220,
+ 16,41,168,39,176,57,213,16,61,240,31,23,5,22,240,48,
+ 0,12,18,128,77,248,244,17,0,20,39,242,0,7,13,22,
+ 240,8,0,21,24,151,72,145,72,160,9,210,20,41,220,20,
+ 23,151,75,145,75,151,79,145,79,160,73,172,126,211,20,62,
+ 208,20,74,220,20,28,216,16,21,251,240,15,7,13,22,250,
+ 115,30,0,0,0,194,28,12,66,44,2,194,44,9,67,51,
+ 5,194,53,51,67,46,5,195,45,1,67,46,5,195,46,5,
+ 67,51,5,99,1,0,0,0,0,0,0,0,0,0,0,0,
+ 7,0,0,0,3,0,0,0,243,92,1,0,0,151,0,124,
+ 0,106,1,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,100,1,171,1,0,0,0,0,0,0,125,
+ 1,124,0,106,1,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,100,2,171,1,0,0,0,0,0,
+ 0,125,2,124,1,129,64,124,2,129,60,124,1,124,2,106,
+ 2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,107,55,0,0,114,45,116,4,0,0,0,0,0,
+ 0,0,0,106,7,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,100,3,124,1,155,2,100,4,124,
+ 2,106,2,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,155,2,100,5,157,5,116,8,0,0,0,
+ 0,0,0,0,0,100,6,172,7,171,3,0,0,0,0,0,
+ 0,1,0,124,1,83,0,124,2,129,12,124,2,106,2,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,83,0,116,4,0,0,0,0,0,0,0,0,106,7,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,100,8,116,10,0,0,0,0,0,0,0,0,100,6,172,
+ 7,171,3,0,0,0,0,0,0,1,0,124,0,100,9,25,
+ 0,0,0,125,1,100,10,124,0,118,1,114,20,124,1,106,
+ 13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,100,11,171,1,0,0,0,0,0,0,100,12,25,
+ 0,0,0,125,1,124,1,83,0,41,13,122,167,67,97,108,
+ 99,117,108,97,116,101,32,119,104,97,116,32,95,95,112,97,
+ 99,107,97,103,101,95,95,32,115,104,111,117,108,100,32,98,
+ 101,46,10,10,32,32,32,32,95,95,112,97,99,107,97,103,
+ 101,95,95,32,105,115,32,110,111,116,32,103,117,97,114,97,
+ 110,116,101,101,100,32,116,111,32,98,101,32,100,101,102,105,
+ 110,101,100,32,111,114,32,99,111,117,108,100,32,98,101,32,
+ 115,101,116,32,116,111,32,78,111,110,101,10,32,32,32,32,
+ 116,111,32,114,101,112,114,101,115,101,110,116,32,116,104,97,
+ 116,32,105,116,115,32,112,114,111,112,101,114,32,118,97,108,
+ 117,101,32,105,115,32,117,110,107,110,111,119,110,46,10,10,
+ 32,32,32,32,114,13,1,0,0,114,204,0,0,0,122,32,
+ 95,95,112,97,99,107,97,103,101,95,95,32,33,61,32,95,
+ 95,115,112,101,99,95,95,46,112,97,114,101,110,116,32,40,
+ 122,4,32,33,61,32,114,229,0,0,0,233,3,0,0,0,
+ 41,1,218,10,115,116,97,99,107,108,101,118,101,108,122,89,
+ 99,97,110,39,116,32,114,101,115,111,108,118,101,32,112,97,
+ 99,107,97,103,101,32,102,114,111,109,32,95,95,115,112,101,
+ 99,95,95,32,111,114,32,95,95,112,97,99,107,97,103,101,
+ 95,95,44,32,102,97,108,108,105,110,103,32,98,97,99,107,
+ 32,111,110,32,95,95,110,97,109,101,95,95,32,97,110,100,
+ 32,95,95,112,97,116,104,95,95,114,11,0,0,0,114,7,
+ 1,0,0,114,244,0,0,0,114,125,0,0,0,41,7,114,
+ 76,0,0,0,114,246,0,0,0,114,191,0,0,0,114,192,
+ 0,0,0,114,193,0,0,0,114,27,1,0,0,114,245,0,
+ 0,0,41,3,218,7,103,108,111,98,97,108,115,114,110,1,
+ 0,0,114,199,0,0,0,115,3,0,0,0,32,32,32,114,
+ 7,0,0,0,218,17,95,99,97,108,99,95,95,95,112,97,
+ 99,107,97,103,101,95,95,114,155,1,0,0,147,5,0,0,
+ 115,200,0,0,0,128,0,240,14,0,15,22,143,107,137,107,
+ 152,45,211,14,40,128,71,216,11,18,143,59,137,59,144,122,
+ 211,11,34,128,68,216,7,14,208,7,26,216,11,15,208,11,
+ 27,160,7,168,52,175,59,169,59,210,32,54,220,12,21,143,
+ 78,137,78,240,0,1,28,31,216,31,38,152,107,168,20,168,
+ 100,175,107,169,107,168,95,184,65,240,3,1,28,63,228,27,
+ 45,184,33,240,5,0,13,27,244,0,2,13,61,240,6,0,
+ 16,23,136,14,216,9,13,208,9,25,216,15,19,143,123,137,
+ 123,208,8,26,228,8,17,143,14,137,14,240,0,1,24,63,
+ 228,23,36,176,17,240,5,0,9,23,244,0,2,9,52,240,
+ 6,0,19,26,152,42,209,18,37,136,7,216,11,21,152,87,
+ 209,11,36,216,22,29,215,22,40,209,22,40,168,19,211,22,
+ 45,168,97,209,22,48,136,71,216,11,18,128,78,114,22,0,
+ 0,0,99,5,0,0,0,0,0,0,0,0,0,0,0,6,
+ 0,0,0,3,0,0,0,243,172,1,0,0,151,0,124,4,
+ 100,1,107,40,0,0,114,12,116,1,0,0,0,0,0,0,
+ 0,0,124,0,171,1,0,0,0,0,0,0,125,5,110,30,
+ 124,1,129,2,124,1,110,1,105,0,125,6,116,3,0,0,
+ 0,0,0,0,0,0,124,6,171,1,0,0,0,0,0,0,
+ 125,7,116,1,0,0,0,0,0,0,0,0,124,0,124,7,
+ 124,4,171,3,0,0,0,0,0,0,125,5,124,3,115,133,
+ 124,4,100,1,107,40,0,0,114,29,116,1,0,0,0,0,
+ 0,0,0,0,124,0,106,5,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,100,3,171,1,0,0,
+ 0,0,0,0,100,1,25,0,0,0,171,1,0,0,0,0,
+ 0,0,83,0,124,0,115,2,124,5,83,0,116,7,0,0,
+ 0,0,0,0,0,0,124,0,171,1,0,0,0,0,0,0,
+ 116,7,0,0,0,0,0,0,0,0,124,0,106,5,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 100,3,171,1,0,0,0,0,0,0,100,1,25,0,0,0,
+ 171,1,0,0,0,0,0,0,122,10,0,0,125,8,116,8,
+ 0,0,0,0,0,0,0,0,106,10,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,124,5,106,12,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,100,2,116,7,0,0,0,0,0,0,0,0,124,5,
+ 106,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,171,1,0,0,0,0,0,0,124,8,122,10,
+ 0,0,26,0,25,0,0,0,83,0,116,15,0,0,0,0,
+ 0,0,0,0,124,5,100,4,171,2,0,0,0,0,0,0,
+ 114,17,116,17,0,0,0,0,0,0,0,0,124,5,124,3,
+ 116,0,0,0,0,0,0,0,0,0,171,3,0,0,0,0,
+ 0,0,83,0,124,5,83,0,41,5,97,215,1,0,0,73,
+ 109,112,111,114,116,32,97,32,109,111,100,117,108,101,46,10,
+ 10,32,32,32,32,84,104,101,32,39,103,108,111,98,97,108,
+ 115,39,32,97,114,103,117,109,101,110,116,32,105,115,32,117,
+ 115,101,100,32,116,111,32,105,110,102,101,114,32,119,104,101,
+ 114,101,32,116,104,101,32,105,109,112,111,114,116,32,105,115,
+ 32,111,99,99,117,114,114,105,110,103,32,102,114,111,109,10,
+ 32,32,32,32,116,111,32,104,97,110,100,108,101,32,114,101,
+ 108,97,116,105,118,101,32,105,109,112,111,114,116,115,46,32,
+ 84,104,101,32,39,108,111,99,97,108,115,39,32,97,114,103,
+ 117,109,101,110,116,32,105,115,32,105,103,110,111,114,101,100,
+ 46,32,84,104,101,10,32,32,32,32,39,102,114,111,109,108,
+ 105,115,116,39,32,97,114,103,117,109,101,110,116,32,115,112,
+ 101,99,105,102,105,101,115,32,119,104,97,116,32,115,104,111,
+ 117,108,100,32,101,120,105,115,116,32,97,115,32,97,116,116,
+ 114,105,98,117,116,101,115,32,111,110,32,116,104,101,32,109,
+ 111,100,117,108,101,10,32,32,32,32,98,101,105,110,103,32,
+ 105,109,112,111,114,116,101,100,32,40,101,46,103,46,32,96,
+ 96,102,114,111,109,32,109,111,100,117,108,101,32,105,109,112,
+ 111,114,116,32,60,102,114,111,109,108,105,115,116,62,96,96,
+ 41,46,32,32,84,104,101,32,39,108,101,118,101,108,39,10,
+ 32,32,32,32,97,114,103,117,109,101,110,116,32,114,101,112,
+ 114,101,115,101,110,116,115,32,116,104,101,32,112,97,99,107,
+ 97,103,101,32,108,111,99,97,116,105,111,110,32,116,111,32,
+ 105,109,112,111,114,116,32,102,114,111,109,32,105,110,32,97,
+ 32,114,101,108,97,116,105,118,101,10,32,32,32,32,105,109,
+ 112,111,114,116,32,40,101,46,103,46,32,96,96,102,114,111,
+ 109,32,46,46,112,107,103,32,105,109,112,111,114,116,32,109,
+ 111,100,96,96,32,119,111,117,108,100,32,104,97,118,101,32,
+ 97,32,39,108,101,118,101,108,39,32,111,102,32,50,41,46,
+ 10,10,32,32,32,32,114,125,0,0,0,78,114,244,0,0,
+ 0,114,7,1,0,0,41,9,114,139,1,0,0,114,155,1,
+ 0,0,218,9,112,97,114,116,105,116,105,111,110,114,127,0,
+ 0,0,114,24,0,0,0,114,195,0,0,0,114,11,0,0,
+ 0,114,13,0,0,0,114,145,1,0,0,41,9,114,26,0,
+ 0,0,114,154,1,0,0,218,6,108,111,99,97,108,115,114,
+ 146,1,0,0,114,111,1,0,0,114,200,0,0,0,218,8,
+ 103,108,111,98,97,108,115,95,114,110,1,0,0,218,7,99,
+ 117,116,95,111,102,102,115,9,0,0,0,32,32,32,32,32,
+ 32,32,32,32,114,7,0,0,0,218,10,95,95,105,109,112,
+ 111,114,116,95,95,114,161,1,0,0,174,5,0,0,115,210,
+ 0,0,0,128,0,240,22,0,8,13,144,1,130,122,220,17,
+ 28,152,84,211,17,34,137,6,224,30,37,208,30,49,145,55,
+ 176,114,136,8,220,18,35,160,72,211,18,45,136,7,220,17,
+ 28,152,84,160,55,168,69,211,17,50,136,6,217,11,19,240,
+ 6,0,12,17,144,65,138,58,220,19,30,152,116,159,126,153,
+ 126,168,99,211,31,50,176,49,209,31,53,211,19,54,208,12,
+ 54,217,17,21,216,19,25,136,77,244,8,0,23,26,152,36,
+ 147,105,164,35,160,100,167,110,161,110,176,83,211,38,57,184,
+ 33,209,38,60,211,34,61,209,22,61,136,71,244,6,0,20,
+ 23,151,59,145,59,152,118,159,127,153,127,208,47,76,180,3,
+ 176,70,183,79,177,79,211,48,68,192,87,209,48,76,208,31,
+ 77,209,19,78,208,12,78,220,9,16,144,22,152,26,212,9,
+ 36,220,15,31,160,6,168,8,180,43,211,15,62,208,8,62,
+ 224,15,21,136,13,114,22,0,0,0,99,1,0,0,0,0,
+ 0,0,0,0,0,0,0,4,0,0,0,3,0,0,0,243,
+ 98,0,0,0,151,0,116,0,0,0,0,0,0,0,0,0,
+ 106,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,124,0,171,1,0,0,0,0,0,0,125,1,
+ 124,1,128,14,116,5,0,0,0,0,0,0,0,0,100,1,
+ 124,0,122,0,0,0,171,1,0,0,0,0,0,0,130,1,
+ 116,7,0,0,0,0,0,0,0,0,124,1,171,1,0,0,
+ 0,0,0,0,83,0,41,2,78,122,25,110,111,32,98,117,
+ 105,108,116,45,105,110,32,109,111,100,117,108,101,32,110,97,
+ 109,101,100,32,41,4,114,37,1,0,0,114,43,1,0,0,
+ 114,178,0,0,0,114,33,1,0,0,41,2,114,26,0,0,
+ 0,114,199,0,0,0,115,2,0,0,0,32,32,114,7,0,
+ 0,0,218,18,95,98,117,105,108,116,105,110,95,102,114,111,
+ 109,95,110,97,109,101,114,163,1,0,0,211,5,0,0,115,
+ 51,0,0,0,128,0,220,11,26,215,11,36,209,11,36,160,
+ 84,211,11,42,128,68,216,7,11,128,124,220,14,25,208,26,
+ 53,184,4,209,26,60,211,14,61,208,8,61,220,11,25,152,
+ 36,211,11,31,208,4,31,114,22,0,0,0,99,2,0,0,
+ 0,0,0,0,0,0,0,0,0,6,0,0,0,3,0,0,
+ 0,243,44,2,0,0,151,0,124,1,97,0,124,0,97,1,
+ 116,5,0,0,0,0,0,0,0,0,116,2,0,0,0,0,
+ 0,0,0,0,171,1,0,0,0,0,0,0,125,2,116,2,
+ 0,0,0,0,0,0,0,0,106,6,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,106,9,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 171,0,0,0,0,0,0,0,68,0,93,122,0,0,92,2,
+ 0,0,125,3,125,4,116,11,0,0,0,0,0,0,0,0,
+ 124,4,124,2,171,2,0,0,0,0,0,0,115,1,140,19,
+ 124,3,116,2,0,0,0,0,0,0,0,0,106,12,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 118,0,114,7,116,14,0,0,0,0,0,0,0,0,125,5,
+ 110,29,116,0,0,0,0,0,0,0,0,0,106,17,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 124,3,171,1,0,0,0,0,0,0,114,7,116,18,0,0,
+ 0,0,0,0,0,0,125,5,110,1,140,73,116,21,0,0,
+ 0,0,0,0,0,0,124,4,124,5,171,2,0,0,0,0,
+ 0,0,125,6,116,23,0,0,0,0,0,0,0,0,124,6,
+ 124,4,171,2,0,0,0,0,0,0,1,0,124,5,116,18,
+ 0,0,0,0,0,0,0,0,117,0,115,1,140,106,124,5,
+ 106,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,124,4,171,1,0,0,0,0,0,0,1,0,
+ 140,124,4,0,116,2,0,0,0,0,0,0,0,0,106,6,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,116,26,0,0,0,0,0,0,0,0,25,0,0,0,
+ 125,7,100,1,68,0,93,64,0,0,125,8,124,8,116,2,
+ 0,0,0,0,0,0,0,0,106,6,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,118,1,114,12,
+ 116,29,0,0,0,0,0,0,0,0,124,8,171,1,0,0,
+ 0,0,0,0,125,9,110,19,116,2,0,0,0,0,0,0,
+ 0,0,106,6,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,124,8,25,0,0,0,125,9,116,31,
+ 0,0,0,0,0,0,0,0,124,7,124,8,124,9,171,3,
+ 0,0,0,0,0,0,1,0,140,66,4,0,116,33,0,0,
+ 0,0,0,0,0,0,171,0,0,0,0,0,0,0,97,17,
+ 121,2,41,3,122,250,83,101,116,117,112,32,105,109,112,111,
+ 114,116,108,105,98,32,98,121,32,105,109,112,111,114,116,105,
+ 110,103,32,110,101,101,100,101,100,32,98,117,105,108,116,45,
+ 105,110,32,109,111,100,117,108,101,115,32,97,110,100,32,105,
+ 110,106,101,99,116,105,110,103,32,116,104,101,109,10,32,32,
+ 32,32,105,110,116,111,32,116,104,101,32,103,108,111,98,97,
+ 108,32,110,97,109,101,115,112,97,99,101,46,10,10,32,32,
+ 32,32,65,115,32,115,121,115,32,105,115,32,110,101,101,100,
+ 101,100,32,102,111,114,32,115,121,115,46,109,111,100,117,108,
+ 101,115,32,97,99,99,101,115,115,32,97,110,100,32,95,105,
+ 109,112,32,105,115,32,110,101,101,100,101,100,32,116,111,32,
+ 108,111,97,100,32,98,117,105,108,116,45,105,110,10,32,32,
+ 32,32,109,111,100,117,108,101,115,44,32,116,104,111,115,101,
+ 32,116,119,111,32,109,111,100,117,108,101,115,32,109,117,115,
+ 116,32,98,101,32,101,120,112,108,105,99,105,116,108,121,32,
+ 112,97,115,115,101,100,32,105,110,46,10,10,32,32,32,32,
+ 41,3,114,109,0,0,0,114,191,0,0,0,114,52,0,0,
+ 0,78,41,18,114,151,0,0,0,114,24,0,0,0,114,5,
+ 0,0,0,114,195,0,0,0,218,5,105,116,101,109,115,114,
+ 23,1,0,0,114,177,0,0,0,114,37,1,0,0,114,187,
+ 0,0,0,114,58,1,0,0,114,9,1,0,0,114,16,1,
+ 0,0,114,74,1,0,0,114,11,0,0,0,114,163,1,0,
+ 0,114,14,0,0,0,114,34,0,0,0,114,85,0,0,0,
+ 41,10,218,10,115,121,115,95,109,111,100,117,108,101,218,11,
+ 95,105,109,112,95,109,111,100,117,108,101,218,11,109,111,100,
+ 117,108,101,95,116,121,112,101,114,26,0,0,0,114,200,0,
+ 0,0,114,213,0,0,0,114,199,0,0,0,218,11,115,101,
+ 108,102,95,109,111,100,117,108,101,218,12,98,117,105,108,116,
+ 105,110,95,110,97,109,101,218,14,98,117,105,108,116,105,110,
+ 95,109,111,100,117,108,101,115,10,0,0,0,32,32,32,32,
+ 32,32,32,32,32,32,114,7,0,0,0,218,6,95,115,101,
+ 116,117,112,114,172,1,0,0,218,5,0,0,115,239,0,0,
+ 0,128,0,240,18,0,12,23,128,68,216,10,20,128,67,244,
+ 6,0,19,23,148,115,147,41,128,75,220,24,27,159,11,153,
+ 11,215,24,41,209,24,41,211,24,43,242,0,11,5,46,137,
+ 12,136,4,136,102,220,11,21,144,102,152,107,213,11,42,216,
+ 15,19,148,115,215,23,47,209,23,47,209,15,47,220,25,40,
+ 145,6,220,17,21,151,30,145,30,160,4,212,17,37,220,25,
+ 39,145,6,224,16,24,220,19,36,160,86,168,86,211,19,52,
+ 136,68,220,12,30,152,116,160,86,212,12,44,216,15,21,156,
+ 30,210,15,39,216,16,22,215,16,37,209,16,37,160,102,213,
+ 16,45,240,23,11,5,46,244,28,0,19,22,151,43,145,43,
+ 156,104,209,18,39,128,75,216,24,60,242,0,5,5,59,136,
+ 12,216,11,23,156,115,159,123,153,123,209,11,42,220,29,47,
+ 176,12,211,29,61,137,78,228,29,32,159,91,153,91,168,28,
+ 209,29,54,136,78,220,8,15,144,11,152,92,168,62,213,8,
+ 58,240,11,5,5,59,244,16,0,20,40,211,19,41,129,76,
+ 114,22,0,0,0,99,2,0,0,0,0,0,0,0,0,0,
+ 0,0,4,0,0,0,3,0,0,0,243,168,0,0,0,151,
+ 0,116,1,0,0,0,0,0,0,0,0,124,0,124,1,171,
+ 2,0,0,0,0,0,0,1,0,116,2,0,0,0,0,0,
+ 0,0,0,106,4,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,106,7,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,116,8,0,0,0,
+ 0,0,0,0,0,171,1,0,0,0,0,0,0,1,0,116,
+ 2,0,0,0,0,0,0,0,0,106,4,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,106,7,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,116,10,0,0,0,0,0,0,0,0,171,1,0,0,0,
+ 0,0,0,1,0,121,1,41,2,122,48,73,110,115,116,97,
+ 108,108,32,105,109,112,111,114,116,101,114,115,32,102,111,114,
+ 32,98,117,105,108,116,105,110,32,97,110,100,32,102,114,111,
+ 122,101,110,32,109,111,100,117,108,101,115,78,41,6,114,172,
+ 1,0,0,114,24,0,0,0,114,116,1,0,0,114,51,0,
+ 0,0,114,37,1,0,0,114,58,1,0,0,41,2,114,166,
+ 1,0,0,114,167,1,0,0,115,2,0,0,0,32,32,114,
+ 7,0,0,0,218,8,95,105,110,115,116,97,108,108,114,174,
+ 1,0,0,2,6,0,0,115,48,0,0,0,128,0,228,4,
+ 10,136,58,144,123,212,4,35,228,4,7,135,77,129,77,215,
+ 4,24,209,4,24,156,31,212,4,41,220,4,7,135,77,129,
+ 77,215,4,24,209,4,24,156,30,213,4,40,114,22,0,0,
+ 0,99,0,0,0,0,0,0,0,0,0,0,0,0,4,0,
+ 0,0,3,0,0,0,243,92,0,0,0,151,0,100,1,100,
+ 2,108,0,125,0,124,0,97,1,124,0,106,5,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,
+ 6,0,0,0,0,0,0,0,0,106,8,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,116,10,0,
+ 0,0,0,0,0,0,0,25,0,0,0,171,1,0,0,0,
+ 0,0,0,1,0,121,2,41,3,122,57,73,110,115,116,97,
+ 108,108,32,105,109,112,111,114,116,101,114,115,32,116,104,97,
+ 116,32,114,101,113,117,105,114,101,32,101,120,116,101,114,110,
+ 97,108,32,102,105,108,101,115,121,115,116,101,109,32,97,99,
+ 99,101,115,115,114,125,0,0,0,78,41,6,218,26,95,102,
+ 114,111,122,101,110,95,105,109,112,111,114,116,108,105,98,95,
+ 101,120,116,101,114,110,97,108,114,239,0,0,0,114,174,1,
+ 0,0,114,24,0,0,0,114,195,0,0,0,114,11,0,0,
+ 0,41,1,114,176,1,0,0,115,1,0,0,0,32,114,7,
+ 0,0,0,218,27,95,105,110,115,116,97,108,108,95,101,120,
+ 116,101,114,110,97,108,95,105,109,112,111,114,116,101,114,115,
+ 114,177,1,0,0,10,6,0,0,115,36,0,0,0,128,0,
+ 243,6,0,5,38,216,26,52,208,4,23,216,4,30,215,4,
+ 39,209,4,39,172,3,175,11,169,11,180,72,209,40,61,213,
+ 4,62,114,22,0,0,0,114,55,1,0,0,114,2,0,0,
+ 0,114,136,0,0,0,41,4,78,78,114,31,0,0,0,114,
+ 125,0,0,0,41,58,114,12,0,0,0,114,8,0,0,0,
+ 114,109,0,0,0,114,191,0,0,0,114,52,0,0,0,114,
+ 239,0,0,0,114,21,0,0,0,114,27,0,0,0,114,6,
+ 1,0,0,114,29,0,0,0,114,34,0,0,0,114,153,0,
+ 0,0,114,85,0,0,0,114,80,0,0,0,114,126,0,0,
+ 0,114,94,0,0,0,114,101,0,0,0,114,107,0,0,0,
+ 114,134,0,0,0,114,142,0,0,0,114,147,0,0,0,114,
+ 157,0,0,0,114,161,0,0,0,114,173,0,0,0,114,184,
+ 0,0,0,114,189,0,0,0,114,201,0,0,0,114,215,0,
+ 0,0,114,217,0,0,0,114,194,0,0,0,114,9,1,0,
+ 0,114,16,1,0,0,114,21,1,0,0,114,211,0,0,0,
+ 114,196,0,0,0,114,30,1,0,0,114,33,1,0,0,114,
+ 197,0,0,0,114,37,1,0,0,114,58,1,0,0,114,101,
+ 1,0,0,114,114,1,0,0,114,119,1,0,0,114,125,1,
+ 0,0,114,128,1,0,0,218,8,95,69,82,82,95,77,83,
+ 71,114,134,1,0,0,218,6,111,98,106,101,99,116,114,136,
+ 1,0,0,114,137,1,0,0,114,139,1,0,0,114,145,1,
+ 0,0,114,155,1,0,0,114,161,1,0,0,114,163,1,0,
+ 0,114,172,1,0,0,114,174,1,0,0,114,177,1,0,0,
+ 114,31,0,0,0,114,22,0,0,0,114,7,0,0,0,250,
+ 8,60,109,111,100,117,108,101,62,114,180,1,0,0,1,0,
+ 0,0,115,154,1,0,0,240,3,1,1,1,241,2,7,1,
+ 4,242,44,4,1,38,240,18,0,11,15,128,7,216,12,16,
+ 128,9,216,11,15,128,8,240,6,0,23,27,208,0,19,242,
+ 6,5,1,38,242,16,1,1,27,244,14,1,1,9,136,68,
+ 244,0,1,1,9,247,14,73,1,1,21,241,0,73,1,1,
+ 21,240,92,2,0,17,19,128,13,240,26,0,16,20,128,12,
+ 247,6,19,1,42,241,0,19,1,42,244,44,1,1,9,144,
+ 92,244,0,1,1,9,242,10,40,1,17,247,86,1,96,2,
+ 1,59,241,0,96,2,1,59,247,70,5,18,1,64,1,241,
+ 0,18,1,64,1,247,42,11,1,29,241,0,11,1,29,242,
+ 32,34,1,16,242,74,1,14,1,23,242,34,8,1,28,240,
+ 22,0,48,49,244,0,5,1,54,242,16,8,1,37,242,22,
+ 8,1,36,242,24,15,1,27,242,38,18,1,54,247,42,97,
+ 1,1,41,241,0,97,1,1,41,240,72,3,0,46,50,184,
+ 100,244,0,26,1,74,1,243,58,39,1,16,240,84,1,0,
+ 50,55,244,0,70,1,1,18,242,82,2,14,1,18,242,34,
+ 18,1,61,242,44,27,1,18,242,60,34,1,18,242,72,1,
+ 41,1,18,242,90,1,10,1,36,247,30,49,1,49,241,0,
+ 49,1,49,247,104,1,126,2,1,48,241,0,126,2,1,48,
+ 247,70,6,10,1,28,241,0,10,1,28,242,26,6,1,46,
+ 243,18,42,1,20,242,90,1,13,1,46,240,32,0,19,37,
+ 128,15,216,11,26,152,86,209,11,35,128,8,242,4,39,1,
+ 18,241,84,1,0,18,24,147,24,128,14,242,6,23,1,18,
+ 243,52,12,1,45,240,30,0,62,67,1,244,0,34,1,18,
+ 242,74,1,24,1,19,243,54,34,1,22,242,74,1,4,1,
+ 32,242,14,37,1,42,242,80,1,5,1,41,243,16,5,1,
+ 63,114,22,0,0,0,
+};
diff --git a/contrib/tools/python3/Python/frozen_modules/importlib._bootstrap_external.h b/contrib/tools/python3/Python/frozen_modules/importlib._bootstrap_external.h
new file mode 100644
index 00000000000..0fa4dc9016e
--- /dev/null
+++ b/contrib/tools/python3/Python/frozen_modules/importlib._bootstrap_external.h
@@ -0,0 +1,3845 @@
+/* Auto-generated by Programs/_freeze_module.c */
+const unsigned char _Py_M__importlib__bootstrap_external[] = {
+ 99,0,0,0,0,0,0,0,0,0,0,0,0,6,0,0,
+ 0,0,0,0,0,243,248,3,0,0,151,0,100,0,90,0,
+ 100,1,97,1,100,2,100,1,108,2,90,2,100,2,100,1,
+ 108,3,90,3,100,2,100,1,108,4,90,4,100,2,100,1,
+ 108,5,90,5,100,2,100,1,108,6,90,6,101,4,106,14,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,100,3,107,40,0,0,90,8,101,8,114,9,100,2,
+ 100,1,108,9,90,10,100,2,100,1,108,11,90,11,110,4,
+ 100,2,100,1,108,12,90,10,101,8,114,5,100,4,100,5,
+ 103,2,90,13,110,3,100,5,103,1,90,13,2,0,101,14,
+ 100,6,132,0,101,13,68,0,171,0,0,0,0,0,0,0,
+ 171,1,0,0,0,0,0,0,115,2,74,0,130,1,101,13,
+ 100,2,25,0,0,0,90,15,2,0,101,16,101,13,171,1,
+ 0,0,0,0,0,0,90,17,100,7,106,37,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,13,
+ 171,1,0,0,0,0,0,0,90,13,101,13,68,0,143,0,
+ 99,2,104,0,99,2,93,7,0,0,125,0,100,8,124,0,
+ 155,0,157,2,146,2,140,9,4,0,99,2,125,0,90,19,
+ 100,9,90,20,100,10,90,21,101,21,101,20,122,0,0,0,
+ 90,22,100,11,132,0,90,23,2,0,101,23,171,0,0,0,
+ 0,0,0,0,90,24,100,12,132,0,90,25,100,13,132,0,
+ 90,26,100,14,132,0,90,27,101,8,114,4,100,15,132,0,
+ 90,28,110,3,100,16,132,0,90,28,100,17,132,0,90,29,
+ 100,18,132,0,90,30,100,19,132,0,90,31,100,20,132,0,
+ 90,32,100,21,132,0,90,33,101,8,114,4,100,22,132,0,
+ 90,34,110,3,100,23,132,0,90,34,100,24,132,0,90,35,
+ 100,78,100,25,132,1,90,36,2,0,101,37,101,36,106,76,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,171,1,0,0,0,0,0,0,90,39,100,26,106,81,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,100,27,100,28,171,2,0,0,0,0,0,0,100,29,
+ 122,0,0,0,90,41,101,42,106,87,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,101,41,100,28,
+ 171,2,0,0,0,0,0,0,90,44,100,30,90,45,100,31,
+ 90,46,100,32,103,1,90,47,101,8,114,17,101,47,106,97,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,100,33,171,1,0,0,0,0,0,0,1,0,2,0,
+ 101,2,106,98,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,171,0,0,0,0,0,0,0,90,50,
+ 100,34,103,1,90,51,101,51,120,1,90,52,90,53,100,79,
+ 100,1,100,35,156,1,100,36,132,3,90,54,100,37,132,0,
+ 90,55,100,38,132,0,90,56,100,39,132,0,90,57,100,40,
+ 132,0,90,58,100,41,132,0,90,59,100,42,132,0,90,60,
+ 100,43,132,0,90,61,100,44,132,0,90,62,100,80,100,45,
+ 132,1,90,63,100,81,100,46,132,1,90,64,100,82,100,47,
+ 132,1,90,65,100,48,132,0,90,66,2,0,101,67,171,0,
+ 0,0,0,0,0,0,90,68,100,79,100,1,101,68,100,49,
+ 156,2,100,50,132,3,90,69,100,51,132,0,90,70,2,0,
+ 71,0,100,52,132,0,100,53,171,2,0,0,0,0,0,0,
+ 90,71,2,0,71,0,100,54,132,0,100,55,171,2,0,0,
+ 0,0,0,0,90,72,2,0,71,0,100,56,132,0,100,57,
+ 101,72,171,3,0,0,0,0,0,0,90,73,2,0,71,0,
+ 100,58,132,0,100,59,171,2,0,0,0,0,0,0,90,74,
+ 2,0,71,0,100,60,132,0,100,61,101,74,101,73,171,4,
+ 0,0,0,0,0,0,90,75,2,0,71,0,100,62,132,0,
+ 100,63,101,74,101,72,171,4,0,0,0,0,0,0,90,76,
+ 2,0,71,0,100,64,132,0,100,65,101,74,101,72,171,4,
+ 0,0,0,0,0,0,90,77,2,0,71,0,100,66,132,0,
+ 100,67,171,2,0,0,0,0,0,0,90,78,2,0,71,0,
+ 100,68,132,0,100,69,171,2,0,0,0,0,0,0,90,79,
+ 101,79,90,80,2,0,71,0,100,70,132,0,100,71,171,2,
+ 0,0,0,0,0,0,90,81,2,0,71,0,100,72,132,0,
+ 100,73,171,2,0,0,0,0,0,0,90,82,100,79,100,74,
+ 132,1,90,83,100,75,132,0,90,84,100,76,132,0,90,85,
+ 100,77,132,0,90,86,121,1,99,2,1,0,99,2,125,0,
+ 119,0,41,83,97,94,1,0,0,67,111,114,101,32,105,109,
+ 112,108,101,109,101,110,116,97,116,105,111,110,32,111,102,32,
+ 112,97,116,104,45,98,97,115,101,100,32,105,109,112,111,114,
+ 116,46,10,10,84,104,105,115,32,109,111,100,117,108,101,32,
+ 105,115,32,78,79,84,32,109,101,97,110,116,32,116,111,32,
+ 98,101,32,100,105,114,101,99,116,108,121,32,105,109,112,111,
+ 114,116,101,100,33,32,73,116,32,104,97,115,32,98,101,101,
+ 110,32,100,101,115,105,103,110,101,100,32,115,117,99,104,10,
+ 116,104,97,116,32,105,116,32,99,97,110,32,98,101,32,98,
+ 111,111,116,115,116,114,97,112,112,101,100,32,105,110,116,111,
+ 32,80,121,116,104,111,110,32,97,115,32,116,104,101,32,105,
+ 109,112,108,101,109,101,110,116,97,116,105,111,110,32,111,102,
+ 32,105,109,112,111,114,116,46,32,65,115,10,115,117,99,104,
+ 32,105,116,32,114,101,113,117,105,114,101,115,32,116,104,101,
+ 32,105,110,106,101,99,116,105,111,110,32,111,102,32,115,112,
+ 101,99,105,102,105,99,32,109,111,100,117,108,101,115,32,97,
+ 110,100,32,97,116,116,114,105,98,117,116,101,115,32,105,110,
+ 32,111,114,100,101,114,32,116,111,10,119,111,114,107,46,32,
+ 79,110,101,32,115,104,111,117,108,100,32,117,115,101,32,105,
+ 109,112,111,114,116,108,105,98,32,97,115,32,116,104,101,32,
+ 112,117,98,108,105,99,45,102,97,99,105,110,103,32,118,101,
+ 114,115,105,111,110,32,111,102,32,116,104,105,115,32,109,111,
+ 100,117,108,101,46,10,10,78,233,0,0,0,0,218,5,119,
+ 105,110,51,50,250,1,92,250,1,47,99,1,0,0,0,0,
+ 0,0,0,0,0,0,0,4,0,0,0,35,0,0,0,243,
+ 56,0,0,0,75,0,1,0,151,0,124,0,93,18,0,0,
+ 125,1,116,1,0,0,0,0,0,0,0,0,124,1,171,1,
+ 0,0,0,0,0,0,100,0,107,40,0,0,150,1,151,1,
+ 1,0,140,20,4,0,121,1,173,3,119,1,41,2,233,1,
+ 0,0,0,78,41,1,218,3,108,101,110,41,2,218,2,46,
+ 48,218,3,115,101,112,115,2,0,0,0,32,32,250,38,60,
+ 102,114,111,122,101,110,32,105,109,112,111,114,116,108,105,98,
+ 46,95,98,111,111,116,115,116,114,97,112,95,101,120,116,101,
+ 114,110,97,108,62,250,9,60,103,101,110,101,120,112,114,62,
+ 114,11,0,0,0,46,0,0,0,115,24,0,0,0,232,0,
+ 248,128,0,210,10,52,152,83,140,51,136,115,139,56,144,113,
+ 141,61,209,10,52,249,115,4,0,0,0,130,24,26,1,218,
+ 0,250,1,58,41,1,218,3,119,105,110,41,2,218,6,99,
+ 121,103,119,105,110,218,6,100,97,114,119,105,110,99,0,0,
+ 0,0,0,0,0,0,0,0,0,0,3,0,0,0,3,0,
+ 0,0,243,178,0,0,0,135,1,151,0,116,0,0,0,0,
+ 0,0,0,0,0,106,2,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,106,5,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,116,6,0,
+ 0,0,0,0,0,0,0,171,1,0,0,0,0,0,0,114,
+ 47,116,0,0,0,0,0,0,0,0,0,106,2,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,
+ 5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,116,8,0,0,0,0,0,0,0,0,171,1,0,
+ 0,0,0,0,0,114,3,100,1,138,1,110,2,100,2,138,
+ 1,136,1,102,1,100,3,132,8,125,0,124,0,83,0,100,
+ 4,132,0,125,0,124,0,83,0,41,5,78,218,12,80,89,
+ 84,72,79,78,67,65,83,69,79,75,115,12,0,0,0,80,
+ 89,84,72,79,78,67,65,83,69,79,75,99,0,0,0,0,
+ 0,0,0,0,0,0,0,0,2,0,0,0,19,0,0,0,
+ 243,98,0,0,0,149,1,151,0,116,0,0,0,0,0,0,
+ 0,0,0,106,2,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,106,4,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,12,0,120,1,114,
+ 18,1,0,137,0,116,6,0,0,0,0,0,0,0,0,106,
+ 8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,118,0,83,0,41,1,122,94,84,114,117,101,32,
+ 105,102,32,102,105,108,101,110,97,109,101,115,32,109,117,115,
+ 116,32,98,101,32,99,104,101,99,107,101,100,32,99,97,115,
+ 101,45,105,110,115,101,110,115,105,116,105,118,101,108,121,32,
+ 97,110,100,32,105,103,110,111,114,101,32,101,110,118,105,114,
+ 111,110,109,101,110,116,32,102,108,97,103,115,32,97,114,101,
+ 32,110,111,116,32,115,101,116,46,41,5,218,3,115,121,115,
+ 218,5,102,108,97,103,115,218,18,105,103,110,111,114,101,95,
+ 101,110,118,105,114,111,110,109,101,110,116,218,3,95,111,115,
+ 218,7,101,110,118,105,114,111,110,169,1,218,3,107,101,121,
+ 115,1,0,0,0,128,114,10,0,0,0,218,11,95,114,101,
+ 108,97,120,95,99,97,115,101,122,37,95,109,97,107,101,95,
+ 114,101,108,97,120,95,99,97,115,101,46,60,108,111,99,97,
+ 108,115,62,46,95,114,101,108,97,120,95,99,97,115,101,67,
+ 0,0,0,115,36,0,0,0,248,128,0,228,23,26,151,121,
+ 145,121,215,23,51,209,23,51,208,19,51,210,19,74,184,3,
+ 188,115,191,123,185,123,208,56,74,208,12,74,243,0,0,0,
+ 0,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,19,0,0,0,243,4,0,0,0,151,0,121,1,41,
+ 2,122,53,84,114,117,101,32,105,102,32,102,105,108,101,110,
+ 97,109,101,115,32,109,117,115,116,32,98,101,32,99,104,101,
+ 99,107,101,100,32,99,97,115,101,45,105,110,115,101,110,115,
+ 105,116,105,118,101,108,121,46,70,169,0,114,30,0,0,0,
+ 114,28,0,0,0,114,10,0,0,0,114,27,0,0,0,122,
+ 37,95,109,97,107,101,95,114,101,108,97,120,95,99,97,115,
+ 101,46,60,108,111,99,97,108,115,62,46,95,114,101,108,97,
+ 120,95,99,97,115,101,71,0,0,0,115,5,0,0,0,128,
+ 0,224,19,24,114,28,0,0,0,41,5,114,20,0,0,0,
+ 218,8,112,108,97,116,102,111,114,109,218,10,115,116,97,114,
+ 116,115,119,105,116,104,218,27,95,67,65,83,69,95,73,78,
+ 83,69,78,83,73,84,73,86,69,95,80,76,65,84,70,79,
+ 82,77,83,218,35,95,67,65,83,69,95,73,78,83,69,78,
+ 83,73,84,73,86,69,95,80,76,65,84,70,79,82,77,83,
+ 95,83,84,82,95,75,69,89,41,2,114,27,0,0,0,114,
+ 26,0,0,0,115,2,0,0,0,32,64,114,10,0,0,0,
+ 218,16,95,109,97,107,101,95,114,101,108,97,120,95,99,97,
+ 115,101,114,35,0,0,0,60,0,0,0,115,78,0,0,0,
+ 248,128,0,220,7,10,135,124,129,124,215,7,30,209,7,30,
+ 212,31,58,212,7,59,220,11,14,143,60,137,60,215,11,34,
+ 209,11,34,212,35,70,212,11,71,216,18,32,137,67,224,18,
+ 33,136,67,244,4,2,9,75,1,240,14,0,12,23,208,4,
+ 22,242,7,2,9,25,240,6,0,12,23,208,4,22,114,28,
+ 0,0,0,99,1,0,0,0,0,0,0,0,0,0,0,0,
+ 4,0,0,0,3,0,0,0,243,62,0,0,0,151,0,116,
+ 1,0,0,0,0,0,0,0,0,124,0,171,1,0,0,0,
+ 0,0,0,100,1,122,1,0,0,106,3,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,100,2,100,
+ 3,171,2,0,0,0,0,0,0,83,0,41,4,122,42,67,
+ 111,110,118,101,114,116,32,97,32,51,50,45,98,105,116,32,
+ 105,110,116,101,103,101,114,32,116,111,32,108,105,116,116,108,
+ 101,45,101,110,100,105,97,110,46,236,3,0,0,0,255,127,
+ 255,127,3,0,233,4,0,0,0,218,6,108,105,116,116,108,
+ 101,41,2,218,3,105,110,116,218,8,116,111,95,98,121,116,
+ 101,115,41,1,218,1,120,115,1,0,0,0,32,114,10,0,
+ 0,0,218,12,95,112,97,99,107,95,117,105,110,116,51,50,
+ 114,43,0,0,0,79,0,0,0,115,30,0,0,0,128,0,
+ 228,12,15,144,1,139,70,144,90,209,12,31,215,11,41,209,
+ 11,41,168,33,168,88,211,11,54,208,4,54,114,28,0,0,
+ 0,99,1,0,0,0,0,0,0,0,0,0,0,0,4,0,
+ 0,0,3,0,0,0,243,78,0,0,0,151,0,116,1,0,
+ 0,0,0,0,0,0,0,124,0,171,1,0,0,0,0,0,
+ 0,100,1,107,40,0,0,115,2,74,0,130,1,116,2,0,
+ 0,0,0,0,0,0,0,106,5,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,124,0,100,2,171,
+ 2,0,0,0,0,0,0,83,0,41,3,122,47,67,111,110,
+ 118,101,114,116,32,52,32,98,121,116,101,115,32,105,110,32,
+ 108,105,116,116,108,101,45,101,110,100,105,97,110,32,116,111,
+ 32,97,110,32,105,110,116,101,103,101,114,46,114,38,0,0,
+ 0,114,39,0,0,0,169,3,114,7,0,0,0,114,40,0,
+ 0,0,218,10,102,114,111,109,95,98,121,116,101,115,169,1,
+ 218,4,100,97,116,97,115,1,0,0,0,32,114,10,0,0,
+ 0,218,14,95,117,110,112,97,99,107,95,117,105,110,116,51,
+ 50,114,49,0,0,0,84,0,0,0,243,33,0,0,0,128,
+ 0,228,11,14,136,116,139,57,152,1,138,62,209,4,25,220,
+ 11,14,143,62,137,62,152,36,160,8,211,11,41,208,4,41,
+ 114,28,0,0,0,99,1,0,0,0,0,0,0,0,0,0,
+ 0,0,4,0,0,0,3,0,0,0,243,78,0,0,0,151,
+ 0,116,1,0,0,0,0,0,0,0,0,124,0,171,1,0,
+ 0,0,0,0,0,100,1,107,40,0,0,115,2,74,0,130,
+ 1,116,2,0,0,0,0,0,0,0,0,106,5,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,
+ 0,100,2,171,2,0,0,0,0,0,0,83,0,41,3,122,
+ 47,67,111,110,118,101,114,116,32,50,32,98,121,116,101,115,
+ 32,105,110,32,108,105,116,116,108,101,45,101,110,100,105,97,
+ 110,32,116,111,32,97,110,32,105,110,116,101,103,101,114,46,
+ 233,2,0,0,0,114,39,0,0,0,114,45,0,0,0,114,
+ 47,0,0,0,115,1,0,0,0,32,114,10,0,0,0,218,
+ 14,95,117,110,112,97,99,107,95,117,105,110,116,49,54,114,
+ 53,0,0,0,89,0,0,0,114,50,0,0,0,114,28,0,
+ 0,0,99,0,0,0,0,0,0,0,0,0,0,0,0,6,
+ 0,0,0,7,0,0,0,243,148,2,0,0,151,0,124,0,
+ 115,1,121,1,116,1,0,0,0,0,0,0,0,0,124,0,
+ 171,1,0,0,0,0,0,0,100,2,107,40,0,0,114,5,
+ 124,0,100,3,25,0,0,0,83,0,100,1,125,1,103,0,
+ 125,2,116,3,0,0,0,0,0,0,0,0,116,4,0,0,
+ 0,0,0,0,0,0,106,6,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,124,0,171,2,0,0,
+ 0,0,0,0,68,0,93,180,0,0,92,2,0,0,125,3,
+ 125,4,124,3,106,9,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,116,10,0,0,0,0,0,0,
+ 0,0,171,1,0,0,0,0,0,0,115,21,124,3,106,13,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,116,10,0,0,0,0,0,0,0,0,171,1,0,0,
+ 0,0,0,0,114,36,124,3,106,15,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,116,16,0,0,
+ 0,0,0,0,0,0,171,1,0,0,0,0,0,0,120,1,
+ 115,2,1,0,124,1,125,1,116,18,0,0,0,0,0,0,
+ 0,0,124,4,122,0,0,0,103,1,125,2,140,84,124,3,
+ 106,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,100,4,171,1,0,0,0,0,0,0,114,57,
+ 124,1,106,21,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,171,0,0,0,0,0,0,0,124,3,
+ 106,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,171,0,0,0,0,0,0,0,107,55,0,0,
+ 114,6,124,3,125,1,124,4,103,1,125,2,140,140,124,2,
+ 106,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,124,4,171,1,0,0,0,0,0,0,1,0,
+ 140,158,124,3,120,1,115,2,1,0,124,1,125,1,124,2,
+ 106,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,124,4,171,1,0,0,0,0,0,0,1,0,
+ 140,182,4,0,124,2,68,0,143,5,99,2,103,0,99,2,
+ 93,26,0,0,125,5,124,5,115,1,140,6,124,5,106,15,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,116,16,0,0,0,0,0,0,0,0,171,1,0,0,
+ 0,0,0,0,145,2,140,28,4,0,125,2,125,5,116,1,
+ 0,0,0,0,0,0,0,0,124,2,171,1,0,0,0,0,
+ 0,0,100,2,107,40,0,0,114,14,124,2,100,3,25,0,
+ 0,0,115,9,124,1,116,18,0,0,0,0,0,0,0,0,
+ 122,0,0,0,83,0,124,1,116,18,0,0,0,0,0,0,
+ 0,0,106,25,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,124,2,171,1,0,0,0,0,0,0,
+ 122,0,0,0,83,0,99,2,1,0,99,2,125,5,119,0,
+ 41,5,250,31,82,101,112,108,97,99,101,109,101,110,116,32,
+ 102,111,114,32,111,115,46,112,97,116,104,46,106,111,105,110,
+ 40,41,46,114,12,0,0,0,114,6,0,0,0,114,1,0,
+ 0,0,114,13,0,0,0,41,13,114,7,0,0,0,218,3,
+ 109,97,112,114,23,0,0,0,218,15,95,112,97,116,104,95,
+ 115,112,108,105,116,114,111,111,116,114,32,0,0,0,218,14,
+ 112,97,116,104,95,115,101,112,95,116,117,112,108,101,218,8,
+ 101,110,100,115,119,105,116,104,218,6,114,115,116,114,105,112,
+ 218,15,112,97,116,104,95,115,101,112,97,114,97,116,111,114,
+ 115,218,8,112,97,116,104,95,115,101,112,218,8,99,97,115,
+ 101,102,111,108,100,218,6,97,112,112,101,110,100,218,4,106,
+ 111,105,110,41,6,218,10,112,97,116,104,95,112,97,114,116,
+ 115,218,4,114,111,111,116,218,4,112,97,116,104,218,8,110,
+ 101,119,95,114,111,111,116,218,4,116,97,105,108,218,1,112,
+ 115,6,0,0,0,32,32,32,32,32,32,114,10,0,0,0,
+ 218,10,95,112,97,116,104,95,106,111,105,110,114,72,0,0,
+ 0,96,0,0,0,115,43,1,0,0,128,0,225,15,25,216,
+ 19,21,220,11,14,136,122,139,63,152,97,210,11,31,216,19,
+ 29,152,97,145,61,208,12,32,216,15,17,136,4,216,15,17,
+ 136,4,220,30,33,164,35,215,34,53,209,34,53,176,122,211,
+ 30,66,242,0,14,9,34,137,78,136,72,144,100,216,15,23,
+ 215,15,34,209,15,34,164,62,212,15,50,176,104,215,54,71,
+ 209,54,71,204,14,212,54,87,216,23,31,151,127,145,127,164,
+ 127,211,23,55,210,23,63,184,52,144,4,220,24,32,160,52,
+ 153,15,208,23,40,145,4,216,17,25,215,17,34,209,17,34,
+ 160,51,212,17,39,216,19,23,151,61,145,61,147,63,160,104,
+ 215,38,55,209,38,55,211,38,57,210,19,57,240,6,0,28,
+ 36,144,68,216,28,32,152,54,145,68,224,20,24,151,75,145,
+ 75,160,4,213,20,37,224,23,31,210,23,39,160,52,144,4,
+ 216,16,20,151,11,145,11,152,68,213,16,33,240,29,14,9,
+ 34,240,30,0,52,56,214,15,61,168,97,186,49,144,1,151,
+ 8,145,8,156,31,213,16,41,208,15,61,136,4,208,15,61,
+ 220,11,14,136,116,139,57,152,1,138,62,160,36,160,113,162,
+ 39,224,19,23,156,40,145,63,208,12,34,216,15,19,148,104,
+ 151,109,145,109,160,68,211,22,41,209,15,41,208,8,41,249,
+ 242,9,0,16,62,115,12,0,0,0,195,48,7,69,5,4,
+ 195,56,23,69,5,4,99,0,0,0,0,0,0,0,0,0,
+ 0,0,0,8,0,0,0,7,0,0,0,243,124,0,0,0,
+ 151,0,116,0,0,0,0,0,0,0,0,0,106,3,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 124,0,68,0,143,1,99,2,103,0,99,2,93,25,0,0,
+ 125,1,124,1,114,21,124,1,106,5,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,116,6,0,0,
+ 0,0,0,0,0,0,171,1,0,0,0,0,0,0,145,2,
+ 140,27,4,0,99,2,125,1,171,1,0,0,0,0,0,0,
+ 83,0,99,2,1,0,99,2,125,1,119,0,41,1,114,55,
+ 0,0,0,41,4,114,62,0,0,0,114,65,0,0,0,114,
+ 60,0,0,0,114,61,0,0,0,41,2,114,66,0,0,0,
+ 218,4,112,97,114,116,115,2,0,0,0,32,32,114,10,0,
+ 0,0,114,72,0,0,0,114,72,0,0,0,126,0,0,0,
+ 115,57,0,0,0,128,0,228,15,23,143,125,137,125,216,42,
+ 52,246,3,1,30,62,216,34,38,185,4,240,3,0,31,35,
+ 159,107,153,107,172,47,213,30,58,242,0,1,30,62,243,0,
+ 1,16,63,240,0,1,9,63,249,242,0,1,30,62,115,4,
+ 0,0,0,148,30,57,8,99,1,0,0,0,0,0,0,0,
+ 0,0,0,0,4,0,0,0,3,0,0,0,243,96,0,0,
+ 0,135,0,151,0,116,1,0,0,0,0,0,0,0,0,136,
+ 0,102,1,100,1,132,8,116,2,0,0,0,0,0,0,0,
+ 0,68,0,171,0,0,0,0,0,0,0,171,1,0,0,0,
+ 0,0,0,125,1,124,1,100,2,107,2,0,0,114,4,100,
+ 3,137,0,102,2,83,0,137,0,100,4,124,1,26,0,137,
+ 0,124,1,100,5,122,0,0,0,100,4,26,0,102,2,83,
+ 0,41,6,122,32,82,101,112,108,97,99,101,109,101,110,116,
+ 32,102,111,114,32,111,115,46,112,97,116,104,46,115,112,108,
+ 105,116,40,41,46,99,1,0,0,0,0,0,0,0,0,0,
+ 0,0,4,0,0,0,51,0,0,0,243,64,0,0,0,149,
+ 1,75,0,1,0,151,0,124,0,93,21,0,0,125,1,137,
+ 2,106,1,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,124,1,171,1,0,0,0,0,0,0,150,
+ 1,151,1,1,0,140,23,4,0,121,0,173,3,119,1,169,
+ 1,78,41,1,218,5,114,102,105,110,100,41,3,114,8,0,
+ 0,0,114,71,0,0,0,114,68,0,0,0,115,3,0,0,
+ 0,32,32,128,114,10,0,0,0,114,11,0,0,0,122,30,
+ 95,112,97,116,104,95,115,112,108,105,116,46,60,108,111,99,
+ 97,108,115,62,46,60,103,101,110,101,120,112,114,62,134,0,
+ 0,0,115,25,0,0,0,248,232,0,248,128,0,210,11,51,
+ 152,97,136,68,143,74,137,74,144,113,143,77,209,11,51,249,
+ 115,4,0,0,0,131,27,30,1,114,1,0,0,0,114,12,
+ 0,0,0,78,114,6,0,0,0,41,2,218,3,109,97,120,
+ 114,61,0,0,0,41,2,114,68,0,0,0,218,1,105,115,
+ 2,0,0,0,96,32,114,10,0,0,0,218,11,95,112,97,
+ 116,104,95,115,112,108,105,116,114,81,0,0,0,132,0,0,
+ 0,115,62,0,0,0,248,128,0,228,8,11,211,11,51,164,
+ 63,212,11,51,211,8,51,128,65,216,7,8,136,49,130,117,
+ 216,15,17,144,52,136,120,136,15,216,11,15,144,2,144,17,
+ 136,56,144,84,152,33,152,97,153,37,152,38,144,92,208,11,
+ 33,208,4,33,114,28,0,0,0,99,1,0,0,0,0,0,
+ 0,0,0,0,0,0,3,0,0,0,3,0,0,0,243,44,
+ 0,0,0,151,0,116,1,0,0,0,0,0,0,0,0,106,
+ 2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,124,0,171,1,0,0,0,0,0,0,83,0,41,
+ 1,122,126,83,116,97,116,32,116,104,101,32,112,97,116,104,
+ 46,10,10,32,32,32,32,77,97,100,101,32,97,32,115,101,
+ 112,97,114,97,116,101,32,102,117,110,99,116,105,111,110,32,
+ 116,111,32,109,97,107,101,32,105,116,32,101,97,115,105,101,
+ 114,32,116,111,32,111,118,101,114,114,105,100,101,32,105,110,
+ 32,101,120,112,101,114,105,109,101,110,116,115,10,32,32,32,
+ 32,40,101,46,103,46,32,99,97,99,104,101,32,115,116,97,
+ 116,32,114,101,115,117,108,116,115,41,46,10,10,32,32,32,
+ 32,41,2,114,23,0,0,0,218,4,115,116,97,116,169,1,
+ 114,68,0,0,0,115,1,0,0,0,32,114,10,0,0,0,
+ 218,10,95,112,97,116,104,95,115,116,97,116,114,85,0,0,
+ 0,140,0,0,0,115,18,0,0,0,128,0,244,14,0,12,
+ 15,143,56,137,56,144,68,139,62,208,4,25,114,28,0,0,
+ 0,99,2,0,0,0,0,0,0,0,0,0,0,0,4,0,
+ 0,0,3,0,0,0,243,92,0,0,0,151,0,9,0,116,
+ 1,0,0,0,0,0,0,0,0,124,0,171,1,0,0,0,
+ 0,0,0,125,2,124,2,106,4,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,100,2,122,1,0,
+ 0,124,1,107,40,0,0,83,0,35,0,116,2,0,0,0,
+ 0,0,0,0,0,36,0,114,3,1,0,89,0,121,1,119,
+ 0,120,3,89,0,119,1,41,3,122,49,84,101,115,116,32,
+ 119,104,101,116,104,101,114,32,116,104,101,32,112,97,116,104,
+ 32,105,115,32,116,104,101,32,115,112,101,99,105,102,105,101,
+ 100,32,109,111,100,101,32,116,121,112,101,46,70,105,0,240,
+ 0,0,41,3,114,85,0,0,0,218,7,79,83,69,114,114,
+ 111,114,218,7,115,116,95,109,111,100,101,41,3,114,68,0,
+ 0,0,218,4,109,111,100,101,218,9,115,116,97,116,95,105,
+ 110,102,111,115,3,0,0,0,32,32,32,114,10,0,0,0,
+ 218,18,95,112,97,116,104,95,105,115,95,109,111,100,101,95,
+ 116,121,112,101,114,91,0,0,0,150,0,0,0,115,61,0,
+ 0,0,128,0,240,4,3,5,21,220,20,30,152,116,211,20,
+ 36,136,9,240,6,0,13,22,215,12,29,209,12,29,160,8,
+ 209,12,40,168,84,209,11,49,208,4,49,248,244,5,0,12,
+ 19,242,0,1,5,21,217,15,20,240,3,1,5,21,250,115,
+ 12,0,0,0,130,11,31,0,159,9,43,3,170,1,43,3,
+ 99,1,0,0,0,0,0,0,0,0,0,0,0,4,0,0,
+ 0,3,0,0,0,243,26,0,0,0,151,0,116,1,0,0,
+ 0,0,0,0,0,0,124,0,100,1,171,2,0,0,0,0,
+ 0,0,83,0,41,2,122,31,82,101,112,108,97,99,101,109,
+ 101,110,116,32,102,111,114,32,111,115,46,112,97,116,104,46,
+ 105,115,102,105,108,101,46,105,0,128,0,0,41,1,114,91,
+ 0,0,0,114,84,0,0,0,115,1,0,0,0,32,114,10,
+ 0,0,0,218,12,95,112,97,116,104,95,105,115,102,105,108,
+ 101,114,93,0,0,0,159,0,0,0,115,15,0,0,0,128,
+ 0,228,11,29,152,100,160,72,211,11,45,208,4,45,114,28,
+ 0,0,0,99,1,0,0,0,0,0,0,0,0,0,0,0,
+ 4,0,0,0,3,0,0,0,243,70,0,0,0,151,0,124,
+ 0,115,20,116,1,0,0,0,0,0,0,0,0,106,2,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,171,0,0,0,0,0,0,0,125,0,116,5,0,0,0,
+ 0,0,0,0,0,124,0,100,1,171,2,0,0,0,0,0,
+ 0,83,0,41,2,122,30,82,101,112,108,97,99,101,109,101,
+ 110,116,32,102,111,114,32,111,115,46,112,97,116,104,46,105,
+ 115,100,105,114,46,105,0,64,0,0,41,3,114,23,0,0,
+ 0,218,6,103,101,116,99,119,100,114,91,0,0,0,114,84,
+ 0,0,0,115,1,0,0,0,32,114,10,0,0,0,218,11,
+ 95,112,97,116,104,95,105,115,100,105,114,114,96,0,0,0,
+ 164,0,0,0,115,29,0,0,0,128,0,225,11,15,220,15,
+ 18,143,122,137,122,139,124,136,4,220,11,29,152,100,160,72,
+ 211,11,45,208,4,45,114,28,0,0,0,99,1,0,0,0,
+ 0,0,0,0,0,0,0,0,4,0,0,0,3,0,0,0,
+ 243,192,0,0,0,151,0,124,0,115,1,121,1,116,1,0,
+ 0,0,0,0,0,0,0,106,2,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,124,0,171,1,0,
+ 0,0,0,0,0,100,2,25,0,0,0,106,5,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,
+ 3,100,4,171,2,0,0,0,0,0,0,125,1,116,7,0,
+ 0,0,0,0,0,0,0,124,1,171,1,0,0,0,0,0,
+ 0,100,5,107,68,0,0,120,1,114,36,1,0,124,1,106,
+ 9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,100,6,171,1,0,0,0,0,0,0,120,1,115,
+ 17,1,0,124,1,106,11,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,100,4,171,1,0,0,0,
+ 0,0,0,83,0,41,7,250,30,82,101,112,108,97,99,101,
+ 109,101,110,116,32,102,111,114,32,111,115,46,112,97,116,104,
+ 46,105,115,97,98,115,46,70,114,1,0,0,0,114,4,0,
+ 0,0,114,3,0,0,0,114,6,0,0,0,122,2,92,92,
+ 41,6,114,23,0,0,0,114,57,0,0,0,218,7,114,101,
+ 112,108,97,99,101,114,7,0,0,0,114,32,0,0,0,114,
+ 59,0,0,0,41,2,114,68,0,0,0,114,67,0,0,0,
+ 115,2,0,0,0,32,32,114,10,0,0,0,218,11,95,112,
+ 97,116,104,95,105,115,97,98,115,114,100,0,0,0,172,0,
+ 0,0,115,84,0,0,0,128,0,225,15,19,216,19,24,220,
+ 15,18,215,15,34,209,15,34,160,52,211,15,40,168,17,209,
+ 15,43,215,15,51,209,15,51,176,67,184,20,211,15,62,136,
+ 4,220,15,18,144,52,139,121,152,49,137,125,210,15,81,160,
+ 36,167,47,161,47,176,38,211,34,57,210,34,80,184,84,191,
+ 93,185,93,200,52,211,61,80,208,8,81,114,28,0,0,0,
+ 99,1,0,0,0,0,0,0,0,0,0,0,0,3,0,0,
+ 0,3,0,0,0,243,44,0,0,0,151,0,124,0,106,1,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,116,2,0,0,0,0,0,0,0,0,171,1,0,0,
+ 0,0,0,0,83,0,41,1,114,98,0,0,0,41,2,114,
+ 32,0,0,0,114,61,0,0,0,114,84,0,0,0,115,1,
+ 0,0,0,32,114,10,0,0,0,114,100,0,0,0,114,100,
+ 0,0,0,180,0,0,0,115,17,0,0,0,128,0,224,15,
+ 19,143,127,137,127,156,127,211,15,47,208,8,47,114,28,0,
+ 0,0,99,1,0,0,0,0,0,0,0,0,0,0,0,5,
+ 0,0,0,3,0,0,0,243,150,0,0,0,151,0,116,1,
+ 0,0,0,0,0,0,0,0,124,0,171,1,0,0,0,0,
+ 0,0,115,61,116,2,0,0,0,0,0,0,0,0,68,0,
+ 93,22,0,0,125,1,124,0,106,5,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,100,1,124,1,
+ 155,0,157,2,171,1,0,0,0,0,0,0,125,0,140,24,
+ 4,0,116,7,0,0,0,0,0,0,0,0,116,9,0,0,
+ 0,0,0,0,0,0,106,10,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,171,0,0,0,0,0,
+ 0,0,124,0,171,2,0,0,0,0,0,0,83,0,124,0,
+ 83,0,41,2,122,32,82,101,112,108,97,99,101,109,101,110,
+ 116,32,102,111,114,32,111,115,46,112,97,116,104,46,97,98,
+ 115,112,97,116,104,46,250,1,46,41,6,114,100,0,0,0,
+ 114,61,0,0,0,218,12,114,101,109,111,118,101,112,114,101,
+ 102,105,120,114,72,0,0,0,114,23,0,0,0,114,95,0,
+ 0,0,41,2,114,68,0,0,0,114,9,0,0,0,115,2,
+ 0,0,0,32,32,114,10,0,0,0,218,13,95,112,97,116,
+ 104,95,97,98,115,112,97,116,104,114,105,0,0,0,185,0,
+ 0,0,115,71,0,0,0,128,0,228,11,22,144,116,212,11,
+ 28,220,19,34,242,0,1,9,48,136,67,216,19,23,215,19,
+ 36,209,19,36,160,113,168,19,168,5,160,89,211,19,47,137,
+ 68,240,3,1,9,48,228,15,25,156,35,159,42,153,42,155,
+ 44,168,4,211,15,45,208,8,45,224,15,19,136,11,114,28,
+ 0,0,0,99,3,0,0,0,0,0,0,0,0,0,0,0,
+ 6,0,0,0,3,0,0,0,243,196,1,0,0,151,0,124,
+ 0,155,0,100,1,116,1,0,0,0,0,0,0,0,0,124,
+ 0,171,1,0,0,0,0,0,0,155,0,157,3,125,3,116,
+ 3,0,0,0,0,0,0,0,0,106,4,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,124,3,116,
+ 2,0,0,0,0,0,0,0,0,106,6,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,116,2,0,
+ 0,0,0,0,0,0,0,106,8,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,122,7,0,0,116,
+ 2,0,0,0,0,0,0,0,0,106,10,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,122,7,0,
+ 0,124,2,100,2,122,1,0,0,171,3,0,0,0,0,0,
+ 0,125,4,9,0,116,13,0,0,0,0,0,0,0,0,106,
+ 14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,124,4,100,3,171,2,0,0,0,0,0,0,53,
+ 0,125,5,124,5,106,17,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,124,1,171,1,0,0,0,
+ 0,0,0,1,0,100,4,100,4,100,4,171,2,0,0,0,
+ 0,0,0,1,0,116,3,0,0,0,0,0,0,0,0,106,
+ 18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,124,3,124,0,171,2,0,0,0,0,0,0,1,
+ 0,121,4,35,0,49,0,115,1,119,2,1,0,89,0,1,
+ 0,1,0,140,32,120,3,89,0,119,1,35,0,116,20,0,
+ 0,0,0,0,0,0,0,36,0,114,39,1,0,9,0,116,
+ 3,0,0,0,0,0,0,0,0,106,22,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,124,3,171,
+ 1,0,0,0,0,0,0,1,0,130,0,35,0,116,20,0,
+ 0,0,0,0,0,0,0,36,0,114,3,1,0,89,0,130,
+ 0,119,0,120,3,89,0,119,1,119,0,120,3,89,0,119,
+ 1,41,5,122,162,66,101,115,116,45,101,102,102,111,114,116,
+ 32,102,117,110,99,116,105,111,110,32,116,111,32,119,114,105,
+ 116,101,32,100,97,116,97,32,116,111,32,97,32,112,97,116,
+ 104,32,97,116,111,109,105,99,97,108,108,121,46,10,32,32,
+ 32,32,66,101,32,112,114,101,112,97,114,101,100,32,116,111,
+ 32,104,97,110,100,108,101,32,97,32,70,105,108,101,69,120,
+ 105,115,116,115,69,114,114,111,114,32,105,102,32,99,111,110,
+ 99,117,114,114,101,110,116,32,119,114,105,116,105,110,103,32,
+ 111,102,32,116,104,101,10,32,32,32,32,116,101,109,112,111,
+ 114,97,114,121,32,102,105,108,101,32,105,115,32,97,116,116,
+ 101,109,112,116,101,100,46,114,103,0,0,0,233,182,1,0,
+ 0,218,2,119,98,78,41,12,218,2,105,100,114,23,0,0,
+ 0,218,4,111,112,101,110,218,6,79,95,69,88,67,76,218,
+ 7,79,95,67,82,69,65,84,218,8,79,95,87,82,79,78,
+ 76,89,218,3,95,105,111,218,6,70,105,108,101,73,79,218,
+ 5,119,114,105,116,101,114,99,0,0,0,114,87,0,0,0,
+ 218,6,117,110,108,105,110,107,41,6,114,68,0,0,0,114,
+ 48,0,0,0,114,89,0,0,0,218,8,112,97,116,104,95,
+ 116,109,112,218,2,102,100,218,4,102,105,108,101,115,6,0,
+ 0,0,32,32,32,32,32,32,114,10,0,0,0,218,13,95,
+ 119,114,105,116,101,95,97,116,111,109,105,99,114,121,0,0,
+ 0,195,0,0,0,115,203,0,0,0,128,0,240,10,0,19,
+ 23,144,22,144,113,156,18,152,68,155,24,152,10,208,15,35,
+ 128,72,220,9,12,143,24,137,24,144,40,220,18,21,151,42,
+ 145,42,156,115,159,123,153,123,209,18,42,172,83,175,92,169,
+ 92,209,18,57,184,52,192,37,185,60,243,3,1,10,73,1,
+ 128,66,240,4,11,5,14,244,6,0,14,17,143,90,137,90,
+ 152,2,152,68,211,13,33,240,0,1,9,29,160,84,216,12,
+ 16,143,74,137,74,144,116,212,12,28,247,3,1,9,29,228,
+ 8,11,143,11,137,11,144,72,152,100,213,8,35,247,5,1,
+ 9,29,240,0,1,9,29,251,244,6,0,12,19,242,0,5,
+ 5,14,240,2,3,9,17,220,12,15,143,74,137,74,144,120,
+ 212,12,32,240,6,0,9,14,248,244,5,0,16,23,242,0,
+ 1,9,17,216,12,16,216,8,13,240,5,1,9,17,250,240,
+ 7,5,5,14,250,115,72,0,0,0,193,28,22,66,47,0,
+ 193,50,18,66,35,3,194,4,30,66,47,0,194,35,5,66,
+ 44,7,194,40,7,66,47,0,194,47,9,67,31,3,194,57,
+ 21,67,15,2,195,14,1,67,31,3,195,15,9,67,27,5,
+ 195,24,2,67,31,3,195,26,1,67,27,5,195,27,4,67,
+ 31,3,105,203,13,0,0,114,52,0,0,0,114,39,0,0,
+ 0,115,2,0,0,0,13,10,218,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,112,116,105,109,105,122,97,116,105,111,110,99,2,0,0,
+ 0,0,0,0,0,1,0,0,0,6,0,0,0,3,0,0,
+ 0,243,60,3,0,0,151,0,124,1,129,47,116,1,0,0,
+ 0,0,0,0,0,0,106,2,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,100,2,116,4,0,0,
+ 0,0,0,0,0,0,171,2,0,0,0,0,0,0,1,0,
+ 124,2,129,13,100,3,125,3,116,7,0,0,0,0,0,0,
+ 0,0,124,3,171,1,0,0,0,0,0,0,130,1,124,1,
+ 114,2,100,4,110,1,100,5,125,2,116,9,0,0,0,0,
+ 0,0,0,0,106,10,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,124,0,171,1,0,0,0,0,
+ 0,0,125,0,116,13,0,0,0,0,0,0,0,0,124,0,
+ 171,1,0,0,0,0,0,0,92,2,0,0,125,4,125,5,
+ 124,5,106,15,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,100,6,171,1,0,0,0,0,0,0,
+ 92,3,0,0,125,6,125,7,125,8,116,16,0,0,0,0,
+ 0,0,0,0,106,18,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,106,20,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,125,9,124,9,
+ 128,11,116,23,0,0,0,0,0,0,0,0,100,7,171,1,
+ 0,0,0,0,0,0,130,1,100,4,106,25,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,6,
+ 114,2,124,6,110,1,124,8,124,7,124,9,103,3,171,1,
+ 0,0,0,0,0,0,125,10,124,2,128,58,116,16,0,0,
+ 0,0,0,0,0,0,106,26,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,106,28,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,8,
+ 107,40,0,0,114,3,100,4,125,2,110,26,116,16,0,0,
+ 0,0,0,0,0,0,106,26,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,106,28,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,2,
+ 116,31,0,0,0,0,0,0,0,0,124,2,171,1,0,0,
+ 0,0,0,0,125,2,124,2,100,4,107,55,0,0,114,43,
+ 124,2,106,33,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,171,0,0,0,0,0,0,0,115,14,
+ 116,35,0,0,0,0,0,0,0,0,124,2,155,2,100,9,
+ 157,2,171,1,0,0,0,0,0,0,130,1,124,10,155,0,
+ 100,6,116,36,0,0,0,0,0,0,0,0,155,0,124,2,
+ 155,0,157,4,125,10,124,10,116,38,0,0,0,0,0,0,
+ 0,0,100,8,25,0,0,0,122,0,0,0,125,11,116,16,
+ 0,0,0,0,0,0,0,0,106,40,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,129,81,116,43,
+ 0,0,0,0,0,0,0,0,124,4,171,1,0,0,0,0,
+ 0,0,125,4,124,4,100,5,25,0,0,0,100,10,107,40,
+ 0,0,114,16,124,4,100,8,25,0,0,0,116,44,0,0,
+ 0,0,0,0,0,0,118,1,114,5,124,4,100,11,100,1,
+ 26,0,125,4,116,47,0,0,0,0,0,0,0,0,116,16,
+ 0,0,0,0,0,0,0,0,106,40,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,124,4,106,49,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,116,44,0,0,0,0,0,0,0,0,171,1,0,0,
+ 0,0,0,0,124,11,171,3,0,0,0,0,0,0,83,0,
+ 116,47,0,0,0,0,0,0,0,0,124,4,116,50,0,0,
+ 0,0,0,0,0,0,124,11,171,3,0,0,0,0,0,0,
+ 83,0,41,12,97,254,2,0,0,71,105,118,101,110,32,116,
+ 104,101,32,112,97,116,104,32,116,111,32,97,32,46,112,121,
+ 32,102,105,108,101,44,32,114,101,116,117,114,110,32,116,104,
+ 101,32,112,97,116,104,32,116,111,32,105,116,115,32,46,112,
+ 121,99,32,102,105,108,101,46,10,10,32,32,32,32,84,104,
+ 101,32,46,112,121,32,102,105,108,101,32,100,111,101,115,32,
+ 110,111,116,32,110,101,101,100,32,116,111,32,101,120,105,115,
+ 116,59,32,116,104,105,115,32,115,105,109,112,108,121,32,114,
+ 101,116,117,114,110,115,32,116,104,101,32,112,97,116,104,32,
+ 116,111,32,116,104,101,10,32,32,32,32,46,112,121,99,32,
+ 102,105,108,101,32,99,97,108,99,117,108,97,116,101,100,32,
+ 97,115,32,105,102,32,116,104,101,32,46,112,121,32,102,105,
+ 108,101,32,119,101,114,101,32,105,109,112,111,114,116,101,100,
+ 46,10,10,32,32,32,32,84,104,101,32,39,111,112,116,105,
+ 109,105,122,97,116,105,111,110,39,32,112,97,114,97,109,101,
+ 116,101,114,32,99,111,110,116,114,111,108,115,32,116,104,101,
+ 32,112,114,101,115,117,109,101,100,32,111,112,116,105,109,105,
+ 122,97,116,105,111,110,32,108,101,118,101,108,32,111,102,10,
+ 32,32,32,32,116,104,101,32,98,121,116,101,99,111,100,101,
+ 32,102,105,108,101,46,32,73,102,32,39,111,112,116,105,109,
+ 105,122,97,116,105,111,110,39,32,105,115,32,110,111,116,32,
+ 78,111,110,101,44,32,116,104,101,32,115,116,114,105,110,103,
+ 32,114,101,112,114,101,115,101,110,116,97,116,105,111,110,10,
+ 32,32,32,32,111,102,32,116,104,101,32,97,114,103,117,109,
+ 101,110,116,32,105,115,32,116,97,107,101,110,32,97,110,100,
+ 32,118,101,114,105,102,105,101,100,32,116,111,32,98,101,32,
+ 97,108,112,104,97,110,117,109,101,114,105,99,32,40,101,108,
+ 115,101,32,86,97,108,117,101,69,114,114,111,114,10,32,32,
+ 32,32,105,115,32,114,97,105,115,101,100,41,46,10,10,32,
+ 32,32,32,84,104,101,32,100,101,98,117,103,95,111,118,101,
+ 114,114,105,100,101,32,112,97,114,97,109,101,116,101,114,32,
+ 105,115,32,100,101,112,114,101,99,97,116,101,100,46,32,73,
+ 102,32,100,101,98,117,103,95,111,118,101,114,114,105,100,101,
+ 32,105,115,32,110,111,116,32,78,111,110,101,44,10,32,32,
+ 32,32,97,32,84,114,117,101,32,118,97,108,117,101,32,105,
+ 115,32,116,104,101,32,115,97,109,101,32,97,115,32,115,101,
+ 116,116,105,110,103,32,39,111,112,116,105,109,105,122,97,116,
+ 105,111,110,39,32,116,111,32,116,104,101,32,101,109,112,116,
+ 121,32,115,116,114,105,110,103,10,32,32,32,32,119,104,105,
+ 108,101,32,97,32,70,97,108,115,101,32,118,97,108,117,101,
+ 32,105,115,32,101,113,117,105,118,97,108,101,110,116,32,116,
+ 111,32,115,101,116,116,105,110,103,32,39,111,112,116,105,109,
+ 105,122,97,116,105,111,110,39,32,116,111,32,39,49,39,46,
+ 10,10,32,32,32,32,73,102,32,115,121,115,46,105,109,112,
+ 108,101,109,101,110,116,97,116,105,111,110,46,99,97,99,104,
+ 101,95,116,97,103,32,105,115,32,78,111,110,101,32,116,104,
+ 101,110,32,78,111,116,73,109,112,108,101,109,101,110,116,101,
+ 100,69,114,114,111,114,32,105,115,32,114,97,105,115,101,100,
+ 46,10,10,32,32,32,32,78,122,70,116,104,101,32,100,101,
+ 98,117,103,95,111,118,101,114,114,105,100,101,32,112,97,114,
+ 97,109,101,116,101,114,32,105,115,32,100,101,112,114,101,99,
+ 97,116,101,100,59,32,117,115,101,32,39,111,112,116,105,109,
+ 105,122,97,116,105,111,110,39,32,105,110,115,116,101,97,100,
+ 122,50,100,101,98,117,103,95,111,118,101,114,114,105,100,101,
+ 32,111,114,32,111,112,116,105,109,105,122,97,116,105,111,110,
+ 32,109,117,115,116,32,98,101,32,115,101,116,32,116,111,32,
+ 78,111,110,101,114,12,0,0,0,114,6,0,0,0,114,103,
+ 0,0,0,250,36,115,121,115,46,105,109,112,108,101,109,101,
+ 110,116,97,116,105,111,110,46,99,97,99,104,101,95,116,97,
+ 103,32,105,115,32,78,111,110,101,114,1,0,0,0,122,20,
+ 32,105,115,32,110,111,116,32,97,108,112,104,97,110,117,109,
+ 101,114,105,99,114,13,0,0,0,114,52,0,0,0,41,26,
+ 218,9,95,119,97,114,110,105,110,103,115,218,4,119,97,114,
+ 110,218,18,68,101,112,114,101,99,97,116,105,111,110,87,97,
+ 114,110,105,110,103,218,9,84,121,112,101,69,114,114,111,114,
+ 114,23,0,0,0,218,6,102,115,112,97,116,104,114,81,0,
+ 0,0,218,10,114,112,97,114,116,105,116,105,111,110,114,20,
+ 0,0,0,218,14,105,109,112,108,101,109,101,110,116,97,116,
+ 105,111,110,218,9,99,97,99,104,101,95,116,97,103,218,19,
+ 78,111,116,73,109,112,108,101,109,101,110,116,101,100,69,114,
+ 114,111,114,114,65,0,0,0,114,21,0,0,0,218,8,111,
+ 112,116,105,109,105,122,101,218,3,115,116,114,218,7,105,115,
+ 97,108,110,117,109,218,10,86,97,108,117,101,69,114,114,111,
+ 114,218,4,95,79,80,84,218,17,66,89,84,69,67,79,68,
+ 69,95,83,85,70,70,73,88,69,83,218,14,112,121,99,97,
+ 99,104,101,95,112,114,101,102,105,120,114,105,0,0,0,114,
+ 61,0,0,0,114,72,0,0,0,218,6,108,115,116,114,105,
+ 112,218,8,95,80,89,67,65,67,72,69,41,12,114,68,0,
+ 0,0,218,14,100,101,98,117,103,95,111,118,101,114,114,105,
+ 100,101,114,123,0,0,0,218,7,109,101,115,115,97,103,101,
+ 218,4,104,101,97,100,114,70,0,0,0,218,4,98,97,115,
+ 101,114,9,0,0,0,218,4,114,101,115,116,218,3,116,97,
+ 103,218,15,97,108,109,111,115,116,95,102,105,108,101,110,97,
+ 109,101,218,8,102,105,108,101,110,97,109,101,115,12,0,0,
+ 0,32,32,32,32,32,32,32,32,32,32,32,32,114,10,0,
+ 0,0,218,17,99,97,99,104,101,95,102,114,111,109,95,115,
+ 111,117,114,99,101,114,152,0,0,0,226,1,0,0,115,159,
+ 1,0,0,128,0,240,36,0,8,22,208,7,33,220,8,17,
+ 143,14,137,14,240,0,1,24,48,220,49,67,244,3,1,9,
+ 69,1,224,11,23,208,11,35,216,22,74,136,71,220,18,27,
+ 152,71,211,18,36,208,12,36,217,29,43,145,114,176,17,136,
+ 12,220,11,14,143,58,137,58,144,100,211,11,27,128,68,220,
+ 17,28,152,84,211,17,34,129,74,128,68,136,36,216,22,26,
+ 151,111,145,111,160,99,211,22,42,129,79,128,68,136,35,136,
+ 116,220,10,13,215,10,28,209,10,28,215,10,38,209,10,38,
+ 128,67,216,7,10,128,123,220,14,33,208,34,72,211,14,73,
+ 208,8,73,216,22,24,151,103,145,103,169,4,161,4,176,36,
+ 184,19,184,99,208,30,66,211,22,67,128,79,216,7,19,208,
+ 7,27,220,11,14,143,57,137,57,215,11,29,209,11,29,160,
+ 17,210,11,34,216,27,29,137,76,228,27,30,159,57,153,57,
+ 215,27,45,209,27,45,136,76,220,19,22,144,124,211,19,36,
+ 128,76,216,7,19,144,114,210,7,25,216,15,27,215,15,35,
+ 209,15,35,212,15,37,220,18,28,160,12,208,31,47,208,47,
+ 67,208,29,68,211,18,69,208,12,69,216,29,44,208,28,45,
+ 168,81,172,116,168,102,176,92,176,78,208,26,67,136,15,216,
+ 15,30,212,33,50,176,49,209,33,53,209,15,53,128,72,220,
+ 7,10,215,7,25,209,7,25,208,7,37,244,18,0,16,29,
+ 152,84,211,15,34,136,4,240,10,0,12,16,144,1,137,55,
+ 144,99,138,62,152,100,160,49,153,103,172,95,209,30,60,216,
+ 19,23,152,1,152,2,144,56,136,68,244,8,0,16,26,220,
+ 12,15,215,12,30,209,12,30,216,12,16,143,75,137,75,156,
+ 15,211,12,40,216,12,20,243,7,4,16,10,240,0,4,9,
+ 10,244,10,0,12,22,144,100,156,72,160,104,211,11,47,208,
+ 4,47,114,28,0,0,0,99,1,0,0,0,0,0,0,0,
+ 0,0,0,0,6,0,0,0,3,0,0,0,243,36,3,0,
+ 0,151,0,116,0,0,0,0,0,0,0,0,0,106,2,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,106,4,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,128,11,116,7,0,0,0,0,0,0,0,
+ 0,100,2,171,1,0,0,0,0,0,0,130,1,116,9,0,
+ 0,0,0,0,0,0,0,106,10,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,124,0,171,1,0,
+ 0,0,0,0,0,125,0,116,13,0,0,0,0,0,0,0,
+ 0,124,0,171,1,0,0,0,0,0,0,92,2,0,0,125,
+ 1,125,2,100,3,125,3,116,0,0,0,0,0,0,0,0,
+ 0,106,14,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,129,75,116,0,0,0,0,0,0,0,0,
+ 0,106,14,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,106,17,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,116,18,0,0,0,0,0,
+ 0,0,0,171,1,0,0,0,0,0,0,125,4,124,1,106,
+ 21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,124,4,116,22,0,0,0,0,0,0,0,0,122,
+ 0,0,0,171,1,0,0,0,0,0,0,114,16,124,1,116,
+ 25,0,0,0,0,0,0,0,0,124,4,171,1,0,0,0,
+ 0,0,0,100,1,26,0,125,1,100,4,125,3,124,3,115,
+ 43,116,13,0,0,0,0,0,0,0,0,124,1,171,1,0,
+ 0,0,0,0,0,92,2,0,0,125,1,125,5,124,5,116,
+ 26,0,0,0,0,0,0,0,0,107,55,0,0,114,20,116,
+ 29,0,0,0,0,0,0,0,0,116,26,0,0,0,0,0,
+ 0,0,0,155,0,100,5,124,0,155,2,157,3,171,1,0,
+ 0,0,0,0,0,130,1,124,2,106,31,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,100,6,171,
+ 1,0,0,0,0,0,0,125,6,124,6,100,7,118,1,114,
+ 14,116,29,0,0,0,0,0,0,0,0,100,8,124,2,155,
+ 2,157,2,171,1,0,0,0,0,0,0,130,1,124,6,100,
+ 9,107,40,0,0,114,109,124,2,106,33,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,100,6,100,
+ 10,171,2,0,0,0,0,0,0,100,11,25,0,0,0,125,
+ 7,124,7,106,21,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,116,34,0,0,0,0,0,0,0,
+ 0,171,1,0,0,0,0,0,0,115,18,116,29,0,0,0,
+ 0,0,0,0,0,100,12,116,34,0,0,0,0,0,0,0,
+ 0,155,2,157,2,171,1,0,0,0,0,0,0,130,1,124,
+ 7,116,25,0,0,0,0,0,0,0,0,116,34,0,0,0,
+ 0,0,0,0,0,171,1,0,0,0,0,0,0,100,1,26,
+ 0,125,8,124,8,106,37,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,171,0,0,0,0,0,0,
+ 0,115,15,116,29,0,0,0,0,0,0,0,0,100,13,124,
+ 7,155,2,100,14,157,3,171,1,0,0,0,0,0,0,130,
+ 1,124,2,106,39,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,100,6,171,1,0,0,0,0,0,
+ 0,100,15,25,0,0,0,125,9,116,41,0,0,0,0,0,
+ 0,0,0,124,1,124,9,116,42,0,0,0,0,0,0,0,
+ 0,100,15,25,0,0,0,122,0,0,0,171,2,0,0,0,
+ 0,0,0,83,0,41,16,97,110,1,0,0,71,105,118,101,
+ 110,32,116,104,101,32,112,97,116,104,32,116,111,32,97,32,
+ 46,112,121,99,46,32,102,105,108,101,44,32,114,101,116,117,
+ 114,110,32,116,104,101,32,112,97,116,104,32,116,111,32,105,
+ 116,115,32,46,112,121,32,102,105,108,101,46,10,10,32,32,
+ 32,32,84,104,101,32,46,112,121,99,32,102,105,108,101,32,
+ 100,111,101,115,32,110,111,116,32,110,101,101,100,32,116,111,
+ 32,101,120,105,115,116,59,32,116,104,105,115,32,115,105,109,
+ 112,108,121,32,114,101,116,117,114,110,115,32,116,104,101,32,
+ 112,97,116,104,32,116,111,10,32,32,32,32,116,104,101,32,
+ 46,112,121,32,102,105,108,101,32,99,97,108,99,117,108,97,
+ 116,101,100,32,116,111,32,99,111,114,114,101,115,112,111,110,
+ 100,32,116,111,32,116,104,101,32,46,112,121,99,32,102,105,
+ 108,101,46,32,32,73,102,32,112,97,116,104,32,100,111,101,
+ 115,10,32,32,32,32,110,111,116,32,99,111,110,102,111,114,
+ 109,32,116,111,32,80,69,80,32,51,49,52,55,47,52,56,
+ 56,32,102,111,114,109,97,116,44,32,86,97,108,117,101,69,
+ 114,114,111,114,32,119,105,108,108,32,98,101,32,114,97,105,
+ 115,101,100,46,32,73,102,10,32,32,32,32,115,121,115,46,
+ 105,109,112,108,101,109,101,110,116,97,116,105,111,110,46,99,
+ 97,99,104,101,95,116,97,103,32,105,115,32,78,111,110,101,
+ 32,116,104,101,110,32,78,111,116,73,109,112,108,101,109,101,
+ 110,116,101,100,69,114,114,111,114,32,105,115,32,114,97,105,
+ 115,101,100,46,10,10,32,32,32,32,78,114,125,0,0,0,
+ 70,84,122,31,32,110,111,116,32,98,111,116,116,111,109,45,
+ 108,101,118,101,108,32,100,105,114,101,99,116,111,114,121,32,
+ 105,110,32,114,103,0,0,0,62,2,0,0,0,114,52,0,
+ 0,0,233,3,0,0,0,122,29,101,120,112,101,99,116,101,
+ 100,32,111,110,108,121,32,50,32,111,114,32,51,32,100,111,
+ 116,115,32,105,110,32,114,154,0,0,0,114,52,0,0,0,
+ 233,254,255,255,255,122,53,111,112,116,105,109,105,122,97,116,
+ 105,111,110,32,112,111,114,116,105,111,110,32,111,102,32,102,
+ 105,108,101,110,97,109,101,32,100,111,101,115,32,110,111,116,
+ 32,115,116,97,114,116,32,119,105,116,104,32,122,19,111,112,
+ 116,105,109,105,122,97,116,105,111,110,32,108,101,118,101,108,
+ 32,122,29,32,105,115,32,110,111,116,32,97,110,32,97,108,
+ 112,104,97,110,117,109,101,114,105,99,32,118,97,108,117,101,
+ 114,1,0,0,0,41,22,114,20,0,0,0,114,132,0,0,
+ 0,114,133,0,0,0,114,134,0,0,0,114,23,0,0,0,
+ 114,130,0,0,0,114,81,0,0,0,114,141,0,0,0,114,
+ 60,0,0,0,114,61,0,0,0,114,32,0,0,0,114,62,
+ 0,0,0,114,7,0,0,0,114,143,0,0,0,114,138,0,
+ 0,0,218,5,99,111,117,110,116,218,6,114,115,112,108,105,
+ 116,114,139,0,0,0,114,137,0,0,0,218,9,112,97,114,
+ 116,105,116,105,111,110,114,72,0,0,0,218,15,83,79,85,
+ 82,67,69,95,83,85,70,70,73,88,69,83,41,10,114,68,
+ 0,0,0,114,146,0,0,0,218,16,112,121,99,97,99,104,
+ 101,95,102,105,108,101,110,97,109,101,218,23,102,111,117,110,
+ 100,95,105,110,95,112,121,99,97,99,104,101,95,112,114,101,
+ 102,105,120,218,13,115,116,114,105,112,112,101,100,95,112,97,
+ 116,104,218,7,112,121,99,97,99,104,101,218,9,100,111,116,
+ 95,99,111,117,110,116,114,123,0,0,0,218,9,111,112,116,
+ 95,108,101,118,101,108,218,13,98,97,115,101,95,102,105,108,
+ 101,110,97,109,101,115,10,0,0,0,32,32,32,32,32,32,
+ 32,32,32,32,114,10,0,0,0,218,17,115,111,117,114,99,
+ 101,95,102,114,111,109,95,99,97,99,104,101,114,167,0,0,
+ 0,40,2,0,0,115,165,1,0,0,128,0,244,18,0,8,
+ 11,215,7,25,209,7,25,215,7,35,209,7,35,208,7,43,
+ 220,14,33,208,34,72,211,14,73,208,8,73,220,11,14,143,
+ 58,137,58,144,100,211,11,27,128,68,220,29,40,168,20,211,
+ 29,46,209,4,26,128,68,208,10,26,216,30,35,208,4,27,
+ 220,7,10,215,7,25,209,7,25,208,7,37,220,24,27,215,
+ 24,42,209,24,42,215,24,49,209,24,49,180,47,211,24,66,
+ 136,13,216,11,15,143,63,137,63,152,61,172,56,209,27,51,
+ 212,11,52,216,19,23,156,3,152,77,211,24,42,208,24,43,
+ 208,19,44,136,68,216,38,42,208,12,35,217,11,34,220,24,
+ 35,160,68,211,24,41,137,13,136,4,136,103,216,11,18,148,
+ 104,210,11,30,220,18,28,164,8,152,122,208,41,72,216,32,
+ 36,152,120,240,3,1,30,41,243,0,1,19,42,240,0,1,
+ 13,42,224,16,32,215,16,38,209,16,38,160,115,211,16,43,
+ 128,73,216,7,16,152,6,209,7,30,220,14,24,208,27,56,
+ 208,57,73,208,56,76,208,25,77,211,14,78,208,8,78,216,
+ 9,18,144,97,138,30,216,23,39,215,23,46,209,23,46,168,
+ 115,176,65,211,23,54,176,114,209,23,58,136,12,216,15,27,
+ 215,15,38,209,15,38,164,116,212,15,44,220,18,28,240,0,
+ 1,30,37,220,37,41,160,72,240,3,1,30,46,243,0,1,
+ 19,47,240,0,1,13,47,224,20,32,164,19,164,84,163,25,
+ 160,26,208,20,44,136,9,216,15,24,215,15,32,209,15,32,
+ 212,15,34,220,18,28,208,31,50,176,60,208,50,66,240,0,
+ 1,67,1,50,240,0,1,30,50,243,0,1,19,51,240,0,
+ 1,13,51,224,20,36,215,20,46,209,20,46,168,115,211,20,
+ 51,176,65,209,20,54,128,77,220,11,21,144,100,152,77,172,
+ 79,184,65,209,44,62,209,28,62,211,11,63,208,4,63,114,
+ 28,0,0,0,99,1,0,0,0,0,0,0,0,0,0,0,
+ 0,4,0,0,0,3,0,0,0,243,232,0,0,0,151,0,
+ 116,1,0,0,0,0,0,0,0,0,124,0,171,1,0,0,
+ 0,0,0,0,100,1,107,40,0,0,114,1,121,2,124,0,
+ 106,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,100,3,171,1,0,0,0,0,0,0,92,3,
+ 0,0,125,1,125,2,125,3,124,1,114,22,124,3,106,5,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,171,0,0,0,0,0,0,0,100,4,100,5,26,0,
+ 100,6,107,55,0,0,114,2,124,0,83,0,9,0,116,7,
+ 0,0,0,0,0,0,0,0,124,0,171,1,0,0,0,0,
+ 0,0,125,4,116,13,0,0,0,0,0,0,0,0,124,4,
+ 171,1,0,0,0,0,0,0,114,2,124,4,83,0,124,0,
+ 83,0,35,0,116,8,0,0,0,0,0,0,0,0,116,10,
+ 0,0,0,0,0,0,0,0,102,2,36,0,114,8,1,0,
+ 124,0,100,2,100,5,26,0,125,4,89,0,140,37,119,0,
+ 120,3,89,0,119,1,41,7,122,188,67,111,110,118,101,114,
+ 116,32,97,32,98,121,116,101,99,111,100,101,32,102,105,108,
+ 101,32,112,97,116,104,32,116,111,32,97,32,115,111,117,114,
+ 99,101,32,112,97,116,104,32,40,105,102,32,112,111,115,115,
+ 105,98,108,101,41,46,10,10,32,32,32,32,84,104,105,115,
+ 32,102,117,110,99,116,105,111,110,32,101,120,105,115,116,115,
+ 32,112,117,114,101,108,121,32,102,111,114,32,98,97,99,107,
+ 119,97,114,100,115,45,99,111,109,112,97,116,105,98,105,108,
+ 105,116,121,32,102,111,114,10,32,32,32,32,80,121,73,109,
+ 112,111,114,116,95,69,120,101,99,67,111,100,101,77,111,100,
+ 117,108,101,87,105,116,104,70,105,108,101,110,97,109,101,115,
+ 40,41,32,105,110,32,116,104,101,32,67,32,65,80,73,46,
+ 10,10,32,32,32,32,114,1,0,0,0,78,114,103,0,0,
+ 0,233,253,255,255,255,233,255,255,255,255,218,2,112,121,41,
+ 7,114,7,0,0,0,114,131,0,0,0,218,5,108,111,119,
+ 101,114,114,167,0,0,0,114,134,0,0,0,114,138,0,0,
+ 0,114,93,0,0,0,41,5,218,13,98,121,116,101,99,111,
+ 100,101,95,112,97,116,104,114,148,0,0,0,218,1,95,218,
+ 9,101,120,116,101,110,115,105,111,110,218,11,115,111,117,114,
+ 99,101,95,112,97,116,104,115,5,0,0,0,32,32,32,32,
+ 32,114,10,0,0,0,218,15,95,103,101,116,95,115,111,117,
+ 114,99,101,102,105,108,101,114,177,0,0,0,80,2,0,0,
+ 115,142,0,0,0,128,0,244,14,0,8,11,136,61,211,7,
+ 25,152,81,210,7,30,216,15,19,216,25,38,215,25,49,209,
+ 25,49,176,35,211,25,54,209,4,22,128,68,136,33,136,89,
+ 217,11,15,144,57,151,63,145,63,211,19,36,160,82,168,2,
+ 208,19,43,168,116,210,19,51,216,15,28,208,8,28,240,2,
+ 3,5,41,220,22,39,168,13,211,22,54,136,11,244,6,0,
+ 27,39,160,123,212,26,51,136,59,208,4,70,184,29,208,4,
+ 70,248,244,5,0,13,32,164,26,208,11,44,242,0,1,5,
+ 41,216,22,35,160,67,160,82,208,22,40,138,11,240,3,1,
+ 5,41,250,115,18,0,0,0,193,0,11,65,26,0,193,26,
+ 20,65,49,3,193,48,1,65,49,3,99,1,0,0,0,0,
+ 0,0,0,0,0,0,0,5,0,0,0,3,0,0,0,243,
+ 182,0,0,0,151,0,124,0,106,1,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,116,3,0,0,
+ 0,0,0,0,0,0,116,4,0,0,0,0,0,0,0,0,
+ 171,1,0,0,0,0,0,0,171,1,0,0,0,0,0,0,
+ 114,12,9,0,116,7,0,0,0,0,0,0,0,0,124,0,
+ 171,1,0,0,0,0,0,0,83,0,124,0,106,1,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 116,3,0,0,0,0,0,0,0,0,116,10,0,0,0,0,
+ 0,0,0,0,171,1,0,0,0,0,0,0,171,1,0,0,
+ 0,0,0,0,114,2,124,0,83,0,121,0,35,0,116,8,
+ 0,0,0,0,0,0,0,0,36,0,114,3,1,0,89,0,
+ 121,0,119,0,120,3,89,0,119,1,114,77,0,0,0,41,
+ 6,114,59,0,0,0,218,5,116,117,112,108,101,114,159,0,
+ 0,0,114,152,0,0,0,114,134,0,0,0,114,140,0,0,
+ 0,41,1,114,151,0,0,0,115,1,0,0,0,32,114,10,
+ 0,0,0,218,11,95,103,101,116,95,99,97,99,104,101,100,
+ 114,180,0,0,0,99,2,0,0,115,87,0,0,0,128,0,
+ 216,7,15,215,7,24,209,7,24,156,21,156,127,211,25,47,
+ 212,7,48,240,2,3,9,17,220,19,36,160,88,211,19,46,
+ 208,12,46,240,6,0,10,18,215,9,26,209,9,26,156,53,
+ 212,33,50,211,27,51,212,9,52,216,15,23,136,15,224,15,
+ 19,248,244,11,0,16,35,242,0,1,9,17,217,12,16,240,
+ 3,1,9,17,250,115,17,0,0,0,160,10,65,12,0,193,
+ 12,9,65,24,3,193,23,1,65,24,3,99,1,0,0,0,
+ 0,0,0,0,0,0,0,0,4,0,0,0,3,0,0,0,
+ 243,94,0,0,0,151,0,9,0,116,1,0,0,0,0,0,
+ 0,0,0,124,0,171,1,0,0,0,0,0,0,106,2,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,125,1,124,1,100,2,122,20,0,0,125,1,124,1,83,
+ 0,35,0,116,4,0,0,0,0,0,0,0,0,36,0,114,
+ 5,1,0,100,1,125,1,89,0,140,20,119,0,120,3,89,
+ 0,119,1,41,3,122,51,67,97,108,99,117,108,97,116,101,
+ 32,116,104,101,32,109,111,100,101,32,112,101,114,109,105,115,
+ 115,105,111,110,115,32,102,111,114,32,97,32,98,121,116,101,
+ 99,111,100,101,32,102,105,108,101,46,114,107,0,0,0,233,
+ 128,0,0,0,41,3,114,85,0,0,0,114,88,0,0,0,
+ 114,87,0,0,0,41,2,114,68,0,0,0,114,89,0,0,
+ 0,115,2,0,0,0,32,32,114,10,0,0,0,218,10,95,
+ 99,97,108,99,95,109,111,100,101,114,183,0,0,0,111,2,
+ 0,0,115,61,0,0,0,128,0,240,4,3,5,21,220,15,
+ 25,152,36,211,15,31,215,15,39,209,15,39,136,4,240,10,
+ 0,5,9,136,69,129,77,128,68,216,11,15,128,75,248,244,
+ 11,0,12,19,242,0,1,5,21,216,15,20,138,4,240,3,
+ 1,5,21,250,115,12,0,0,0,130,21,30,0,158,11,44,
+ 3,171,1,44,3,99,1,0,0,0,0,0,0,0,0,0,
+ 0,0,4,0,0,0,3,0,0,0,243,90,0,0,0,135,
+ 0,151,0,100,3,136,0,102,1,100,1,132,9,125,1,116,
+ 0,0,0,0,0,0,0,0,0,129,17,116,0,0,0,0,
+ 0,0,0,0,0,106,2,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,125,2,110,3,100,2,132,
+ 0,125,2,2,0,124,2,124,1,137,0,171,2,0,0,0,
+ 0,0,0,1,0,124,1,83,0,41,4,122,252,68,101,99,
+ 111,114,97,116,111,114,32,116,111,32,118,101,114,105,102,121,
+ 32,116,104,97,116,32,116,104,101,32,109,111,100,117,108,101,
+ 32,98,101,105,110,103,32,114,101,113,117,101,115,116,101,100,
+ 32,109,97,116,99,104,101,115,32,116,104,101,32,111,110,101,
+ 32,116,104,101,10,32,32,32,32,108,111,97,100,101,114,32,
+ 99,97,110,32,104,97,110,100,108,101,46,10,10,32,32,32,
+ 32,84,104,101,32,102,105,114,115,116,32,97,114,103,117,109,
+ 101,110,116,32,40,115,101,108,102,41,32,109,117,115,116,32,
+ 100,101,102,105,110,101,32,95,110,97,109,101,32,119,104,105,
+ 99,104,32,116,104,101,32,115,101,99,111,110,100,32,97,114,
+ 103,117,109,101,110,116,32,105,115,10,32,32,32,32,99,111,
+ 109,112,97,114,101,100,32,97,103,97,105,110,115,116,46,32,
+ 73,102,32,116,104,101,32,99,111,109,112,97,114,105,115,111,
+ 110,32,102,97,105,108,115,32,116,104,101,110,32,73,109,112,
+ 111,114,116,69,114,114,111,114,32,105,115,32,114,97,105,115,
+ 101,100,46,10,10,32,32,32,32,99,2,0,0,0,0,0,
+ 0,0,0,0,0,0,6,0,0,0,31,0,0,0,243,148,
+ 0,0,0,149,1,151,0,124,1,128,13,124,0,106,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,125,1,110,44,124,0,106,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,124,1,107,55,0,
+ 0,114,29,116,3,0,0,0,0,0,0,0,0,100,1,124,
+ 0,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,155,1,100,2,124,1,155,1,157,4,124,
+ 1,172,3,171,2,0,0,0,0,0,0,130,1,2,0,137,
+ 4,124,0,124,1,103,2,124,2,162,1,173,6,105,0,124,
+ 3,164,1,142,1,83,0,41,4,78,122,11,108,111,97,100,
+ 101,114,32,102,111,114,32,122,15,32,99,97,110,110,111,116,
+ 32,104,97,110,100,108,101,32,169,1,218,4,110,97,109,101,
+ 41,2,114,187,0,0,0,218,11,73,109,112,111,114,116,69,
+ 114,114,111,114,41,5,218,4,115,101,108,102,114,187,0,0,
+ 0,218,4,97,114,103,115,218,6,107,119,97,114,103,115,218,
+ 6,109,101,116,104,111,100,115,5,0,0,0,32,32,32,32,
+ 128,114,10,0,0,0,218,19,95,99,104,101,99,107,95,110,
+ 97,109,101,95,119,114,97,112,112,101,114,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,101,99,107,95,110,97,109,101,95,119,114,
+ 97,112,112,101,114,131,2,0,0,115,82,0,0,0,248,128,
+ 0,216,11,15,136,60,216,19,23,151,57,145,57,137,68,216,
+ 13,17,143,89,137,89,152,36,210,13,30,221,18,29,216,33,
+ 37,167,25,163,25,169,68,240,3,1,31,50,216,56,60,244,
+ 3,1,19,62,240,0,1,13,62,225,15,21,144,100,152,68,
+ 208,15,50,160,52,210,15,50,168,54,209,15,50,208,8,50,
+ 114,28,0,0,0,99,2,0,0,0,0,0,0,0,0,0,
+ 0,0,9,0,0,0,19,0,0,0,243,164,0,0,0,151,
+ 0,100,1,68,0,93,38,0,0,125,2,116,1,0,0,0,
+ 0,0,0,0,0,124,1,124,2,171,2,0,0,0,0,0,
+ 0,115,1,140,16,116,3,0,0,0,0,0,0,0,0,124,
+ 0,124,2,116,5,0,0,0,0,0,0,0,0,124,1,124,
+ 2,171,2,0,0,0,0,0,0,171,3,0,0,0,0,0,
+ 0,1,0,140,40,4,0,124,0,106,6,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,106,9,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,124,1,106,6,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,171,1,0,0,0,0,0,0,1,
+ 0,121,0,41,2,78,41,4,218,10,95,95,109,111,100,117,
+ 108,101,95,95,218,8,95,95,110,97,109,101,95,95,218,12,
+ 95,95,113,117,97,108,110,97,109,101,95,95,218,7,95,95,
+ 100,111,99,95,95,41,5,218,7,104,97,115,97,116,116,114,
+ 218,7,115,101,116,97,116,116,114,218,7,103,101,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,218,3,110,101,119,218,3,111,108,100,
+ 114,99,0,0,0,115,3,0,0,0,32,32,32,114,10,0,
+ 0,0,218,5,95,119,114,97,112,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,144,2,0,0,115,72,0,0,0,128,0,
+ 216,27,80,242,0,2,13,65,1,144,7,220,19,26,152,51,
+ 160,7,213,19,40,220,20,27,152,67,160,23,172,39,176,35,
+ 176,119,211,42,63,213,20,64,240,5,2,13,65,1,240,6,
+ 0,13,16,143,76,137,76,215,12,31,209,12,31,160,3,167,
+ 12,161,12,213,12,45,114,28,0,0,0,114,77,0,0,0,
+ 41,2,218,10,95,98,111,111,116,115,116,114,97,112,114,206,
+ 0,0,0,41,3,114,192,0,0,0,114,193,0,0,0,114,
+ 206,0,0,0,115,3,0,0,0,96,32,32,114,10,0,0,
+ 0,218,11,95,99,104,101,99,107,95,110,97,109,101,114,208,
+ 0,0,0,123,2,0,0,115,51,0,0,0,248,128,0,245,
+ 16,6,5,51,244,20,0,8,18,208,7,29,220,16,26,215,
+ 16,32,209,16,32,137,5,242,4,4,9,46,241,12,0,5,
+ 10,208,10,29,152,118,212,4,38,216,11,30,208,4,30,114,
+ 28,0,0,0,99,3,0,0,0,0,0,0,0,0,0,0,
+ 0,5,0,0,0,3,0,0,0,243,44,1,0,0,151,0,
+ 124,0,100,1,100,2,26,0,125,3,124,3,116,0,0,0,
+ 0,0,0,0,0,0,107,55,0,0,114,42,100,3,124,1,
+ 155,2,100,4,124,3,155,2,157,4,125,4,116,2,0,0,
+ 0,0,0,0,0,0,106,5,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,100,5,124,4,171,2,
+ 0,0,0,0,0,0,1,0,116,7,0,0,0,0,0,0,
+ 0,0,124,4,102,1,105,0,124,2,164,1,142,1,130,1,
+ 116,9,0,0,0,0,0,0,0,0,124,0,171,1,0,0,
+ 0,0,0,0,100,6,107,2,0,0,114,38,100,7,124,1,
+ 155,2,157,2,125,4,116,2,0,0,0,0,0,0,0,0,
+ 106,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,100,5,124,4,171,2,0,0,0,0,0,0,
+ 1,0,116,11,0,0,0,0,0,0,0,0,124,4,171,1,
+ 0,0,0,0,0,0,130,1,116,13,0,0,0,0,0,0,
+ 0,0,124,0,100,2,100,8,26,0,171,1,0,0,0,0,
+ 0,0,125,5,124,5,100,9,122,1,0,0,114,20,100,10,
+ 124,5,155,2,100,11,124,1,155,2,157,4,125,4,116,7,
+ 0,0,0,0,0,0,0,0,124,4,102,1,105,0,124,2,
+ 164,1,142,1,130,1,124,5,83,0,41,12,97,84,2,0,
+ 0,80,101,114,102,111,114,109,32,98,97,115,105,99,32,118,
+ 97,108,105,100,105,116,121,32,99,104,101,99,107,105,110,103,
+ 32,111,102,32,97,32,112,121,99,32,104,101,97,100,101,114,
+ 32,97,110,100,32,114,101,116,117,114,110,32,116,104,101,32,
+ 102,108,97,103,115,32,102,105,101,108,100,44,10,32,32,32,
+ 32,119,104,105,99,104,32,100,101,116,101,114,109,105,110,101,
+ 115,32,104,111,119,32,116,104,101,32,112,121,99,32,115,104,
+ 111,117,108,100,32,98,101,32,102,117,114,116,104,101,114,32,
+ 118,97,108,105,100,97,116,101,100,32,97,103,97,105,110,115,
+ 116,32,116,104,101,32,115,111,117,114,99,101,46,10,10,32,
+ 32,32,32,42,100,97,116,97,42,32,105,115,32,116,104,101,
+ 32,99,111,110,116,101,110,116,115,32,111,102,32,116,104,101,
+ 32,112,121,99,32,102,105,108,101,46,32,40,79,110,108,121,
+ 32,116,104,101,32,102,105,114,115,116,32,49,54,32,98,121,
+ 116,101,115,32,97,114,101,10,32,32,32,32,114,101,113,117,
+ 105,114,101,100,44,32,116,104,111,117,103,104,46,41,10,10,
+ 32,32,32,32,42,110,97,109,101,42,32,105,115,32,116,104,
+ 101,32,110,97,109,101,32,111,102,32,116,104,101,32,109,111,
+ 100,117,108,101,32,98,101,105,110,103,32,105,109,112,111,114,
+ 116,101,100,46,32,73,116,32,105,115,32,117,115,101,100,32,
+ 102,111,114,32,108,111,103,103,105,110,103,46,10,10,32,32,
+ 32,32,42,101,120,99,95,100,101,116,97,105,108,115,42,32,
+ 105,115,32,97,32,100,105,99,116,105,111,110,97,114,121,32,
+ 112,97,115,115,101,100,32,116,111,32,73,109,112,111,114,116,
+ 69,114,114,111,114,32,105,102,32,105,116,32,114,97,105,115,
+ 101,100,32,102,111,114,10,32,32,32,32,105,109,112,114,111,
+ 118,101,100,32,100,101,98,117,103,103,105,110,103,46,10,10,
+ 32,32,32,32,73,109,112,111,114,116,69,114,114,111,114,32,
+ 105,115,32,114,97,105,115,101,100,32,119,104,101,110,32,116,
+ 104,101,32,109,97,103,105,99,32,110,117,109,98,101,114,32,
+ 105,115,32,105,110,99,111,114,114,101,99,116,32,111,114,32,
+ 119,104,101,110,32,116,104,101,32,102,108,97,103,115,10,32,
+ 32,32,32,102,105,101,108,100,32,105,115,32,105,110,118,97,
+ 108,105,100,46,32,69,79,70,69,114,114,111,114,32,105,115,
+ 32,114,97,105,115,101,100,32,119,104,101,110,32,116,104,101,
+ 32,100,97,116,97,32,105,115,32,102,111,117,110,100,32,116,
+ 111,32,98,101,32,116,114,117,110,99,97,116,101,100,46,10,
+ 10,32,32,32,32,78,114,38,0,0,0,122,20,98,97,100,
+ 32,109,97,103,105,99,32,110,117,109,98,101,114,32,105,110,
+ 32,122,2,58,32,250,2,123,125,233,16,0,0,0,122,40,
+ 114,101,97,99,104,101,100,32,69,79,70,32,119,104,105,108,
+ 101,32,114,101,97,100,105,110,103,32,112,121,99,32,104,101,
+ 97,100,101,114,32,111,102,32,233,8,0,0,0,233,252,255,
+ 255,255,122,14,105,110,118,97,108,105,100,32,102,108,97,103,
+ 115,32,122,4,32,105,110,32,41,7,218,12,77,65,71,73,
+ 67,95,78,85,77,66,69,82,114,207,0,0,0,218,16,95,
+ 118,101,114,98,111,115,101,95,109,101,115,115,97,103,101,114,
+ 188,0,0,0,114,7,0,0,0,218,8,69,79,70,69,114,
+ 114,111,114,114,49,0,0,0,41,6,114,48,0,0,0,114,
+ 187,0,0,0,218,11,101,120,99,95,100,101,116,97,105,108,
+ 115,218,5,109,97,103,105,99,114,145,0,0,0,114,21,0,
+ 0,0,115,6,0,0,0,32,32,32,32,32,32,114,10,0,
+ 0,0,218,13,95,99,108,97,115,115,105,102,121,95,112,121,
+ 99,114,219,0,0,0,154,2,0,0,115,185,0,0,0,128,
+ 0,240,32,0,13,17,144,18,144,33,136,72,128,69,216,7,
+ 12,148,12,210,7,28,216,20,40,168,20,168,8,176,2,176,
+ 53,176,41,208,18,60,136,7,220,8,18,215,8,35,209,8,
+ 35,160,68,168,39,212,8,50,220,14,25,152,39,209,14,49,
+ 160,91,209,14,49,208,8,49,220,7,10,136,52,131,121,144,
+ 50,130,126,216,20,60,184,84,184,72,208,18,69,136,7,220,
+ 8,18,215,8,35,209,8,35,160,68,168,39,212,8,50,220,
+ 14,22,144,119,211,14,31,208,8,31,220,12,26,152,52,160,
+ 1,160,33,152,57,211,12,37,128,69,224,7,12,136,117,130,
+ 125,216,20,34,160,53,160,41,168,52,176,4,168,120,208,18,
+ 56,136,7,220,14,25,152,39,209,14,49,160,91,209,14,49,
+ 208,8,49,216,11,16,128,76,114,28,0,0,0,99,5,0,
+ 0,0,0,0,0,0,0,0,0,0,5,0,0,0,3,0,
+ 0,0,243,198,0,0,0,151,0,116,1,0,0,0,0,0,
+ 0,0,0,124,0,100,1,100,2,26,0,171,1,0,0,0,
+ 0,0,0,124,1,100,3,122,1,0,0,107,55,0,0,114,
+ 39,100,4,124,3,155,2,157,2,125,5,116,2,0,0,0,
+ 0,0,0,0,0,106,5,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,100,5,124,5,171,2,0,
+ 0,0,0,0,0,1,0,116,7,0,0,0,0,0,0,0,
+ 0,124,5,102,1,105,0,124,4,164,1,142,1,130,1,124,
+ 2,129,36,116,1,0,0,0,0,0,0,0,0,124,0,100,
+ 2,100,7,26,0,171,1,0,0,0,0,0,0,124,2,100,
+ 3,122,1,0,0,107,55,0,0,114,15,116,7,0,0,0,
+ 0,0,0,0,0,100,4,124,3,155,2,157,2,102,1,105,
+ 0,124,4,164,1,142,1,130,1,121,6,121,6,41,8,97,
+ 7,2,0,0,86,97,108,105,100,97,116,101,32,97,32,112,
+ 121,99,32,97,103,97,105,110,115,116,32,116,104,101,32,115,
+ 111,117,114,99,101,32,108,97,115,116,45,109,111,100,105,102,
+ 105,101,100,32,116,105,109,101,46,10,10,32,32,32,32,42,
+ 100,97,116,97,42,32,105,115,32,116,104,101,32,99,111,110,
+ 116,101,110,116,115,32,111,102,32,116,104,101,32,112,121,99,
+ 32,102,105,108,101,46,32,40,79,110,108,121,32,116,104,101,
+ 32,102,105,114,115,116,32,49,54,32,98,121,116,101,115,32,
+ 97,114,101,10,32,32,32,32,114,101,113,117,105,114,101,100,
+ 46,41,10,10,32,32,32,32,42,115,111,117,114,99,101,95,
+ 109,116,105,109,101,42,32,105,115,32,116,104,101,32,108,97,
+ 115,116,32,109,111,100,105,102,105,101,100,32,116,105,109,101,
+ 115,116,97,109,112,32,111,102,32,116,104,101,32,115,111,117,
+ 114,99,101,32,102,105,108,101,46,10,10,32,32,32,32,42,
+ 115,111,117,114,99,101,95,115,105,122,101,42,32,105,115,32,
+ 78,111,110,101,32,111,114,32,116,104,101,32,115,105,122,101,
+ 32,111,102,32,116,104,101,32,115,111,117,114,99,101,32,102,
+ 105,108,101,32,105,110,32,98,121,116,101,115,46,10,10,32,
+ 32,32,32,42,110,97,109,101,42,32,105,115,32,116,104,101,
+ 32,110,97,109,101,32,111,102,32,116,104,101,32,109,111,100,
+ 117,108,101,32,98,101,105,110,103,32,105,109,112,111,114,116,
+ 101,100,46,32,73,116,32,105,115,32,117,115,101,100,32,102,
+ 111,114,32,108,111,103,103,105,110,103,46,10,10,32,32,32,
+ 32,42,101,120,99,95,100,101,116,97,105,108,115,42,32,105,
+ 115,32,97,32,100,105,99,116,105,111,110,97,114,121,32,112,
+ 97,115,115,101,100,32,116,111,32,73,109,112,111,114,116,69,
+ 114,114,111,114,32,105,102,32,105,116,32,114,97,105,115,101,
+ 100,32,102,111,114,10,32,32,32,32,105,109,112,114,111,118,
+ 101,100,32,100,101,98,117,103,103,105,110,103,46,10,10,32,
+ 32,32,32,65,110,32,73,109,112,111,114,116,69,114,114,111,
+ 114,32,105,115,32,114,97,105,115,101,100,32,105,102,32,116,
+ 104,101,32,98,121,116,101,99,111,100,101,32,105,115,32,115,
+ 116,97,108,101,46,10,10,32,32,32,32,114,212,0,0,0,
+ 233,12,0,0,0,114,37,0,0,0,122,22,98,121,116,101,
+ 99,111,100,101,32,105,115,32,115,116,97,108,101,32,102,111,
+ 114,32,114,210,0,0,0,78,114,211,0,0,0,41,4,114,
+ 49,0,0,0,114,207,0,0,0,114,215,0,0,0,114,188,
+ 0,0,0,41,6,114,48,0,0,0,218,12,115,111,117,114,
+ 99,101,95,109,116,105,109,101,218,11,115,111,117,114,99,101,
+ 95,115,105,122,101,114,187,0,0,0,114,217,0,0,0,114,
+ 145,0,0,0,115,6,0,0,0,32,32,32,32,32,32,114,
+ 10,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,114,224,0,
+ 0,0,187,2,0,0,115,137,0,0,0,128,0,244,38,0,
+ 8,22,144,100,152,49,152,82,144,106,211,7,33,160,108,176,
+ 90,209,38,63,210,7,64,216,20,42,168,52,168,40,208,18,
+ 51,136,7,220,8,18,215,8,35,209,8,35,160,68,168,39,
+ 212,8,50,220,14,25,152,39,209,14,49,160,91,209,14,49,
+ 208,8,49,216,8,19,208,8,31,220,8,22,144,116,152,66,
+ 152,114,144,123,211,8,35,168,11,176,106,209,40,64,210,8,
+ 65,220,14,25,208,28,50,176,52,176,40,208,26,59,209,14,
+ 75,184,123,209,14,75,208,8,75,240,3,0,9,66,1,240,
+ 3,0,9,32,114,28,0,0,0,99,4,0,0,0,0,0,
+ 0,0,0,0,0,0,5,0,0,0,3,0,0,0,243,50,
+ 0,0,0,151,0,124,0,100,1,100,2,26,0,124,1,107,
+ 55,0,0,114,15,116,1,0,0,0,0,0,0,0,0,100,
+ 3,124,2,155,2,157,2,102,1,105,0,124,3,164,1,142,
+ 1,130,1,121,4,41,5,97,243,1,0,0,86,97,108,105,
+ 100,97,116,101,32,97,32,104,97,115,104,45,98,97,115,101,
+ 100,32,112,121,99,32,98,121,32,99,104,101,99,107,105,110,
+ 103,32,116,104,101,32,114,101,97,108,32,115,111,117,114,99,
+ 101,32,104,97,115,104,32,97,103,97,105,110,115,116,32,116,
+ 104,101,32,111,110,101,32,105,110,10,32,32,32,32,116,104,
+ 101,32,112,121,99,32,104,101,97,100,101,114,46,10,10,32,
+ 32,32,32,42,100,97,116,97,42,32,105,115,32,116,104,101,
+ 32,99,111,110,116,101,110,116,115,32,111,102,32,116,104,101,
+ 32,112,121,99,32,102,105,108,101,46,32,40,79,110,108,121,
+ 32,116,104,101,32,102,105,114,115,116,32,49,54,32,98,121,
+ 116,101,115,32,97,114,101,10,32,32,32,32,114,101,113,117,
+ 105,114,101,100,46,41,10,10,32,32,32,32,42,115,111,117,
+ 114,99,101,95,104,97,115,104,42,32,105,115,32,116,104,101,
+ 32,105,109,112,111,114,116,108,105,98,46,117,116,105,108,46,
+ 115,111,117,114,99,101,95,104,97,115,104,40,41,32,111,102,
+ 32,116,104,101,32,115,111,117,114,99,101,32,102,105,108,101,
+ 46,10,10,32,32,32,32,42,110,97,109,101,42,32,105,115,
+ 32,116,104,101,32,110,97,109,101,32,111,102,32,116,104,101,
+ 32,109,111,100,117,108,101,32,98,101,105,110,103,32,105,109,
+ 112,111,114,116,101,100,46,32,73,116,32,105,115,32,117,115,
+ 101,100,32,102,111,114,32,108,111,103,103,105,110,103,46,10,
+ 10,32,32,32,32,42,101,120,99,95,100,101,116,97,105,108,
+ 115,42,32,105,115,32,97,32,100,105,99,116,105,111,110,97,
+ 114,121,32,112,97,115,115,101,100,32,116,111,32,73,109,112,
+ 111,114,116,69,114,114,111,114,32,105,102,32,105,116,32,114,
+ 97,105,115,101,100,32,102,111,114,10,32,32,32,32,105,109,
+ 112,114,111,118,101,100,32,100,101,98,117,103,103,105,110,103,
+ 46,10,10,32,32,32,32,65,110,32,73,109,112,111,114,116,
+ 69,114,114,111,114,32,105,115,32,114,97,105,115,101,100,32,
+ 105,102,32,116,104,101,32,98,121,116,101,99,111,100,101,32,
+ 105,115,32,115,116,97,108,101,46,10,10,32,32,32,32,114,
+ 212,0,0,0,114,211,0,0,0,122,46,104,97,115,104,32,
+ 105,110,32,98,121,116,101,99,111,100,101,32,100,111,101,115,
+ 110,39,116,32,109,97,116,99,104,32,104,97,115,104,32,111,
+ 102,32,115,111,117,114,99,101,32,78,41,1,114,188,0,0,
+ 0,41,4,114,48,0,0,0,218,11,115,111,117,114,99,101,
+ 95,104,97,115,104,114,187,0,0,0,114,217,0,0,0,115,
+ 4,0,0,0,32,32,32,32,114,10,0,0,0,218,18,95,
+ 118,97,108,105,100,97,116,101,95,104,97,115,104,95,112,121,
+ 99,114,227,0,0,0,215,2,0,0,115,54,0,0,0,128,
+ 0,240,34,0,8,12,136,65,136,98,128,122,144,91,210,7,
+ 32,220,14,25,216,14,61,184,100,184,88,208,12,70,241,3,
+ 3,15,10,224,14,25,241,5,3,15,10,240,0,3,9,10,
+ 240,3,0,8,33,114,28,0,0,0,99,4,0,0,0,0,
+ 0,0,0,0,0,0,0,5,0,0,0,3,0,0,0,243,
+ 206,0,0,0,151,0,116,1,0,0,0,0,0,0,0,0,
+ 106,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,124,0,171,1,0,0,0,0,0,0,125,4,
+ 116,5,0,0,0,0,0,0,0,0,124,4,116,6,0,0,
+ 0,0,0,0,0,0,171,2,0,0,0,0,0,0,114,48,
+ 116,8,0,0,0,0,0,0,0,0,106,11,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,1,
+ 124,2,171,2,0,0,0,0,0,0,1,0,124,3,129,22,
+ 116,13,0,0,0,0,0,0,0,0,106,14,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,4,
+ 124,3,171,2,0,0,0,0,0,0,1,0,124,4,83,0,
+ 116,17,0,0,0,0,0,0,0,0,100,2,124,2,155,2,
+ 157,2,124,1,124,2,172,3,171,3,0,0,0,0,0,0,
+ 130,1,41,4,122,35,67,111,109,112,105,108,101,32,98,121,
+ 116,101,99,111,100,101,32,97,115,32,102,111,117,110,100,32,
+ 105,110,32,97,32,112,121,99,46,122,21,99,111,100,101,32,
+ 111,98,106,101,99,116,32,102,114,111,109,32,123,33,114,125,
+ 122,19,78,111,110,45,99,111,100,101,32,111,98,106,101,99,
+ 116,32,105,110,32,169,2,114,187,0,0,0,114,68,0,0,
+ 0,41,9,218,7,109,97,114,115,104,97,108,218,5,108,111,
+ 97,100,115,218,10,105,115,105,110,115,116,97,110,99,101,218,
+ 10,95,99,111,100,101,95,116,121,112,101,114,207,0,0,0,
+ 114,215,0,0,0,218,4,95,105,109,112,218,16,95,102,105,
+ 120,95,99,111,95,102,105,108,101,110,97,109,101,114,188,0,
+ 0,0,41,5,114,48,0,0,0,114,187,0,0,0,114,173,
+ 0,0,0,114,176,0,0,0,218,4,99,111,100,101,115,5,
+ 0,0,0,32,32,32,32,32,114,10,0,0,0,218,17,95,
+ 99,111,109,112,105,108,101,95,98,121,116,101,99,111,100,101,
+ 114,237,0,0,0,239,2,0,0,115,99,0,0,0,128,0,
+ 228,11,18,143,61,137,61,152,20,211,11,30,128,68,220,7,
+ 17,144,36,156,10,212,7,35,220,8,18,215,8,35,209,8,
+ 35,208,36,59,184,93,212,8,75,216,11,22,208,11,34,220,
+ 12,16,215,12,33,209,12,33,160,36,168,11,212,12,52,216,
+ 15,19,136,11,228,14,25,208,28,47,176,13,208,47,64,208,
+ 26,65,216,31,35,168,45,244,3,1,15,57,240,0,1,9,
+ 57,114,28,0,0,0,99,3,0,0,0,0,0,0,0,0,
+ 0,0,0,5,0,0,0,3,0,0,0,243,8,1,0,0,
+ 151,0,116,1,0,0,0,0,0,0,0,0,116,2,0,0,
+ 0,0,0,0,0,0,171,1,0,0,0,0,0,0,125,3,
+ 124,3,106,5,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,116,7,0,0,0,0,0,0,0,0,
+ 100,1,171,1,0,0,0,0,0,0,171,1,0,0,0,0,
+ 0,0,1,0,124,3,106,5,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,116,7,0,0,0,0,
+ 0,0,0,0,124,1,171,1,0,0,0,0,0,0,171,1,
+ 0,0,0,0,0,0,1,0,124,3,106,5,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,7,
+ 0,0,0,0,0,0,0,0,124,2,171,1,0,0,0,0,
+ 0,0,171,1,0,0,0,0,0,0,1,0,124,3,106,5,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,116,9,0,0,0,0,0,0,0,0,106,10,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 124,0,171,1,0,0,0,0,0,0,171,1,0,0,0,0,
+ 0,0,1,0,124,3,83,0,41,2,122,43,80,114,111,100,
+ 117,99,101,32,116,104,101,32,100,97,116,97,32,102,111,114,
+ 32,97,32,116,105,109,101,115,116,97,109,112,45,98,97,115,
+ 101,100,32,112,121,99,46,114,1,0,0,0,41,6,218,9,
+ 98,121,116,101,97,114,114,97,121,114,214,0,0,0,218,6,
+ 101,120,116,101,110,100,114,43,0,0,0,114,230,0,0,0,
+ 218,5,100,117,109,112,115,41,4,114,236,0,0,0,218,5,
+ 109,116,105,109,101,114,223,0,0,0,114,48,0,0,0,115,
+ 4,0,0,0,32,32,32,32,114,10,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,114,243,0,0,0,252,2,0,0,115,88,
+ 0,0,0,128,0,228,11,20,148,92,211,11,34,128,68,216,
+ 4,8,135,75,129,75,148,12,152,81,147,15,212,4,32,216,
+ 4,8,135,75,129,75,148,12,152,85,211,16,35,212,4,36,
+ 216,4,8,135,75,129,75,148,12,152,91,211,16,41,212,4,
+ 42,216,4,8,135,75,129,75,148,7,151,13,145,13,152,100,
+ 211,16,35,212,4,36,216,11,15,128,75,114,28,0,0,0,
+ 99,3,0,0,0,0,0,0,0,0,0,0,0,5,0,0,
+ 0,3,0,0,0,243,242,0,0,0,151,0,116,1,0,0,
+ 0,0,0,0,0,0,116,2,0,0,0,0,0,0,0,0,
+ 171,1,0,0,0,0,0,0,125,3,100,1,124,2,100,1,
+ 122,3,0,0,122,7,0,0,125,4,124,3,106,5,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 116,7,0,0,0,0,0,0,0,0,124,4,171,1,0,0,
+ 0,0,0,0,171,1,0,0,0,0,0,0,1,0,116,9,
+ 0,0,0,0,0,0,0,0,124,1,171,1,0,0,0,0,
+ 0,0,100,2,107,40,0,0,115,2,74,0,130,1,124,3,
+ 106,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,124,1,171,1,0,0,0,0,0,0,1,0,
+ 124,3,106,5,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,116,11,0,0,0,0,0,0,0,0,
+ 106,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,124,0,171,1,0,0,0,0,0,0,171,1,
+ 0,0,0,0,0,0,1,0,124,3,83,0,41,3,122,38,
+ 80,114,111,100,117,99,101,32,116,104,101,32,100,97,116,97,
+ 32,102,111,114,32,97,32,104,97,115,104,45,98,97,115,101,
+ 100,32,112,121,99,46,114,6,0,0,0,114,212,0,0,0,
+ 41,7,114,239,0,0,0,114,214,0,0,0,114,240,0,0,
+ 0,114,43,0,0,0,114,7,0,0,0,114,230,0,0,0,
+ 114,241,0,0,0,41,5,114,236,0,0,0,114,226,0,0,
+ 0,218,7,99,104,101,99,107,101,100,114,48,0,0,0,114,
+ 21,0,0,0,115,5,0,0,0,32,32,32,32,32,114,10,
+ 0,0,0,218,17,95,99,111,100,101,95,116,111,95,104,97,
+ 115,104,95,112,121,99,114,246,0,0,0,6,3,0,0,115,
+ 97,0,0,0,128,0,228,11,20,148,92,211,11,34,128,68,
+ 216,12,15,144,39,152,81,145,44,209,12,30,128,69,216,4,
+ 8,135,75,129,75,148,12,152,85,211,16,35,212,4,36,220,
+ 11,14,136,123,211,11,27,152,113,210,11,32,209,4,32,216,
+ 4,8,135,75,129,75,144,11,212,4,28,216,4,8,135,75,
+ 129,75,148,7,151,13,145,13,152,100,211,16,35,212,4,36,
+ 216,11,15,128,75,114,28,0,0,0,99,1,0,0,0,0,
+ 0,0,0,0,0,0,0,6,0,0,0,3,0,0,0,243,
+ 220,0,0,0,151,0,100,1,100,2,108,0,125,1,116,3,
+ 0,0,0,0,0,0,0,0,106,4,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,124,0,171,1,
+ 0,0,0,0,0,0,106,6,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,125,2,124,1,106,9,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,124,2,171,1,0,0,0,0,0,0,125,3,116,3,
+ 0,0,0,0,0,0,0,0,106,10,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,100,2,100,3,
+ 171,2,0,0,0,0,0,0,125,4,124,4,106,13,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 124,0,106,13,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,124,3,100,1,25,0,0,0,171,1,
+ 0,0,0,0,0,0,171,1,0,0,0,0,0,0,83,0,
+ 41,4,122,121,68,101,99,111,100,101,32,98,121,116,101,115,
+ 32,114,101,112,114,101,115,101,110,116,105,110,103,32,115,111,
+ 117,114,99,101,32,99,111,100,101,32,97,110,100,32,114,101,
+ 116,117,114,110,32,116,104,101,32,115,116,114,105,110,103,46,
+ 10,10,32,32,32,32,85,110,105,118,101,114,115,97,108,32,
+ 110,101,119,108,105,110,101,32,115,117,112,112,111,114,116,32,
+ 105,115,32,117,115,101,100,32,105,110,32,116,104,101,32,100,
+ 101,99,111,100,105,110,103,46,10,32,32,32,32,114,1,0,
+ 0,0,78,84,41,7,218,8,116,111,107,101,110,105,122,101,
+ 114,114,0,0,0,218,7,66,121,116,101,115,73,79,218,8,
+ 114,101,97,100,108,105,110,101,218,15,100,101,116,101,99,116,
+ 95,101,110,99,111,100,105,110,103,218,25,73,110,99,114,101,
+ 109,101,110,116,97,108,78,101,119,108,105,110,101,68,101,99,
+ 111,100,101,114,218,6,100,101,99,111,100,101,41,5,218,12,
+ 115,111,117,114,99,101,95,98,121,116,101,115,114,248,0,0,
+ 0,218,21,115,111,117,114,99,101,95,98,121,116,101,115,95,
+ 114,101,97,100,108,105,110,101,218,8,101,110,99,111,100,105,
+ 110,103,218,15,110,101,119,108,105,110,101,95,100,101,99,111,
+ 100,101,114,115,5,0,0,0,32,32,32,32,32,114,10,0,
+ 0,0,218,13,100,101,99,111,100,101,95,115,111,117,114,99,
+ 101,114,2,1,0,0,17,3,0,0,115,95,0,0,0,128,
+ 0,243,10,0,5,20,220,28,31,159,75,153,75,168,12,211,
+ 28,53,215,28,62,209,28,62,208,4,25,216,15,23,215,15,
+ 39,209,15,39,208,40,61,211,15,62,128,72,220,22,25,215,
+ 22,51,209,22,51,176,68,184,36,211,22,63,128,79,216,11,
+ 26,215,11,33,209,11,33,160,44,215,34,53,209,34,53,176,
+ 104,184,113,177,107,211,34,66,211,11,67,208,4,67,114,28,
+ 0,0,0,169,2,218,6,108,111,97,100,101,114,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,0,0,
+ 0,0,2,0,0,0,6,0,0,0,3,0,0,0,243,138,
+ 2,0,0,151,0,124,1,128,33,100,2,125,1,116,1,0,
+ 0,0,0,0,0,0,0,124,2,100,3,171,2,0,0,0,
+ 0,0,0,114,52,9,0,124,2,106,3,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,124,0,171,
+ 1,0,0,0,0,0,0,125,1,110,33,116,7,0,0,0,
+ 0,0,0,0,0,106,8,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,124,1,171,1,0,0,0,
+ 0,0,0,125,1,9,0,116,11,0,0,0,0,0,0,0,
+ 0,124,1,171,1,0,0,0,0,0,0,125,1,116,14,0,
+ 0,0,0,0,0,0,0,106,17,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,124,0,124,2,124,
+ 1,172,4,171,3,0,0,0,0,0,0,125,4,100,5,124,
+ 4,95,9,0,0,0,0,0,0,0,0,124,2,128,63,116,
+ 21,0,0,0,0,0,0,0,0,171,0,0,0,0,0,0,
+ 0,68,0,93,49,0,0,92,2,0,0,125,5,125,6,124,
+ 1,106,23,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,116,25,0,0,0,0,0,0,0,0,124,
+ 6,171,1,0,0,0,0,0,0,171,1,0,0,0,0,0,
+ 0,115,1,140,33,2,0,124,5,124,0,124,1,171,2,0,
+ 0,0,0,0,0,125,2,124,2,124,4,95,13,0,0,0,
+ 0,0,0,0,0,1,0,110,2,4,0,121,1,124,3,116,
+ 28,0,0,0,0,0,0,0,0,117,0,114,40,116,1,0,
+ 0,0,0,0,0,0,0,124,2,100,6,171,2,0,0,0,
+ 0,0,0,114,35,9,0,124,2,106,31,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,124,0,171,
+ 1,0,0,0,0,0,0,125,7,124,7,114,15,103,0,124,
+ 4,95,16,0,0,0,0,0,0,0,0,110,7,124,3,124,
+ 4,95,16,0,0,0,0,0,0,0,0,124,4,106,32,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,103,0,107,40,0,0,114,43,124,1,114,41,116,35,0,
+ 0,0,0,0,0,0,0,124,1,171,1,0,0,0,0,0,
+ 0,100,7,25,0,0,0,125,8,124,4,106,32,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,
+ 37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,124,8,171,1,0,0,0,0,0,0,1,0,124,
+ 4,83,0,35,0,116,4,0,0,0,0,0,0,0,0,36,
+ 0,114,3,1,0,89,0,140,222,119,0,120,3,89,0,119,
+ 1,35,0,116,12,0,0,0,0,0,0,0,0,36,0,114,
+ 3,1,0,89,0,140,237,119,0,120,3,89,0,119,1,35,
+ 0,116,4,0,0,0,0,0,0,0,0,36,0,114,3,1,
+ 0,89,0,140,101,119,0,120,3,89,0,119,1,41,8,97,
+ 61,1,0,0,82,101,116,117,114,110,32,97,32,109,111,100,
+ 117,108,101,32,115,112,101,99,32,98,97,115,101,100,32,111,
+ 110,32,97,32,102,105,108,101,32,108,111,99,97,116,105,111,
+ 110,46,10,10,32,32,32,32,84,111,32,105,110,100,105,99,
+ 97,116,101,32,116,104,97,116,32,116,104,101,32,109,111,100,
+ 117,108,101,32,105,115,32,97,32,112,97,99,107,97,103,101,
+ 44,32,115,101,116,10,32,32,32,32,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,32,116,111,32,97,32,108,105,115,116,32,111,
+ 102,32,100,105,114,101,99,116,111,114,121,32,112,97,116,104,
+ 115,46,32,32,65,110,10,32,32,32,32,101,109,112,116,121,
+ 32,108,105,115,116,32,105,115,32,115,117,102,102,105,99,105,
+ 101,110,116,44,32,116,104,111,117,103,104,32,105,116,115,32,
+ 110,111,116,32,111,116,104,101,114,119,105,115,101,32,117,115,
+ 101,102,117,108,32,116,111,32,116,104,101,10,32,32,32,32,
+ 105,109,112,111,114,116,32,115,121,115,116,101,109,46,10,10,
+ 32,32,32,32,84,104,101,32,108,111,97,100,101,114,32,109,
+ 117,115,116,32,116,97,107,101,32,97,32,115,112,101,99,32,
+ 97,115,32,105,116,115,32,111,110,108,121,32,95,95,105,110,
+ 105,116,95,95,40,41,32,97,114,103,46,10,10,32,32,32,
+ 32,78,122,9,60,117,110,107,110,111,119,110,62,218,12,103,
+ 101,116,95,102,105,108,101,110,97,109,101,169,1,218,6,111,
+ 114,105,103,105,110,84,218,10,105,115,95,112,97,99,107,97,
+ 103,101,114,1,0,0,0,41,19,114,199,0,0,0,114,7,
+ 1,0,0,114,188,0,0,0,114,23,0,0,0,114,130,0,
+ 0,0,114,105,0,0,0,114,87,0,0,0,114,207,0,0,
+ 0,218,10,77,111,100,117,108,101,83,112,101,99,218,13,95,
+ 115,101,116,95,102,105,108,101,97,116,116,114,218,27,95,103,
+ 101,116,95,115,117,112,112,111,114,116,101,100,95,102,105,108,
+ 101,95,108,111,97,100,101,114,115,114,59,0,0,0,114,179,
+ 0,0,0,114,4,1,0,0,218,9,95,80,79,80,85,76,
+ 65,84,69,114,10,1,0,0,114,5,1,0,0,114,81,0,
+ 0,0,114,64,0,0,0,41,9,114,187,0,0,0,218,8,
+ 108,111,99,97,116,105,111,110,114,4,1,0,0,114,5,1,
+ 0,0,218,4,115,112,101,99,218,12,108,111,97,100,101,114,
+ 95,99,108,97,115,115,218,8,115,117,102,102,105,120,101,115,
+ 114,10,1,0,0,218,7,100,105,114,110,97,109,101,115,9,
+ 0,0,0,32,32,32,32,32,32,32,32,32,114,10,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,114,20,1,0,0,34,
+ 3,0,0,115,109,1,0,0,128,0,240,24,0,8,16,208,
+ 7,23,240,8,0,20,31,136,8,220,11,18,144,54,152,62,
+ 212,11,42,240,4,3,13,21,216,27,33,215,27,46,209,27,
+ 46,168,116,211,27,52,145,8,244,8,0,20,23,151,58,145,
+ 58,152,104,211,19,39,136,8,240,2,3,9,17,220,23,36,
+ 160,88,211,23,46,136,72,244,20,0,12,22,215,11,32,209,
+ 11,32,160,20,160,118,176,104,208,11,32,211,11,63,128,68,
+ 216,25,29,128,68,212,4,22,240,6,0,8,14,128,126,220,
+ 38,65,211,38,67,242,0,6,9,24,209,12,34,136,76,152,
+ 40,216,15,23,215,15,32,209,15,32,164,21,160,120,163,31,
+ 213,15,49,217,25,37,160,100,168,72,211,25,53,144,6,216,
+ 30,36,144,4,148,11,217,16,21,240,9,6,9,24,240,12,
+ 0,20,24,240,6,0,8,34,164,89,209,7,46,228,11,18,
+ 144,54,152,60,212,11,40,240,2,6,13,57,216,29,35,215,
+ 29,46,209,29,46,168,116,211,29,52,144,10,241,8,0,20,
+ 30,216,54,56,144,68,213,20,51,224,42,68,136,4,212,8,
+ 39,216,7,11,215,7,38,209,7,38,168,34,210,7,44,217,
+ 11,19,220,22,33,160,40,211,22,43,168,65,209,22,46,136,
+ 71,216,12,16,215,12,43,209,12,43,215,12,50,209,12,50,
+ 176,55,212,12,59,224,11,15,128,75,248,244,93,1,0,20,
+ 31,242,0,1,13,21,217,16,20,240,3,1,13,21,251,244,
+ 12,0,16,23,242,0,1,9,17,217,12,16,240,3,1,9,
+ 17,251,244,56,0,20,31,242,0,1,13,21,217,16,20,240,
+ 3,1,13,21,250,115,52,0,0,0,146,17,68,24,0,186,
+ 11,68,39,0,194,58,17,68,54,0,196,24,9,68,36,3,
+ 196,35,1,68,36,3,196,39,9,68,51,3,196,50,1,68,
+ 51,3,196,54,9,69,2,3,197,1,1,69,2,3,99,1,
+ 0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,3,
+ 0,0,0,243,140,1,0,0,151,0,116,1,0,0,0,0,
+ 0,0,0,0,124,0,116,2,0,0,0,0,0,0,0,0,
+ 171,2,0,0,0,0,0,0,115,1,121,1,116,5,0,0,
+ 0,0,0,0,0,0,171,0,0,0,0,0,0,0,125,1,
+ 124,0,106,7,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,100,2,100,1,171,2,0,0,0,0,
+ 0,0,125,2,124,0,106,7,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,100,3,124,1,171,2,
+ 0,0,0,0,0,0,125,3,124,2,128,18,124,3,124,1,
+ 117,0,114,1,121,1,124,3,128,11,116,9,0,0,0,0,
+ 0,0,0,0,100,4,171,1,0,0,0,0,0,0,130,1,
+ 116,11,0,0,0,0,0,0,0,0,124,3,100,5,124,1,
+ 171,3,0,0,0,0,0,0,125,4,124,4,124,1,100,1,
+ 102,2,118,0,114,54,124,2,128,24,124,4,124,1,117,0,
+ 114,6,116,12,0,0,0,0,0,0,0,0,110,5,116,8,
+ 0,0,0,0,0,0,0,0,125,5,2,0,124,5,100,4,
+ 171,1,0,0,0,0,0,0,130,1,116,15,0,0,0,0,
+ 0,0,0,0,106,16,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,100,4,116,18,0,0,0,0,
+ 0,0,0,0,171,2,0,0,0,0,0,0,1,0,124,2,
+ 125,4,124,4,128,2,74,0,130,1,124,2,129,33,124,2,
+ 124,4,107,55,0,0,114,28,116,15,0,0,0,0,0,0,
+ 0,0,106,16,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,100,6,116,18,0,0,0,0,0,0,
+ 0,0,171,2,0,0,0,0,0,0,1,0,124,2,83,0,
+ 124,4,83,0,41,7,122,67,72,101,108,112,101,114,32,102,
+ 117,110,99,116,105,111,110,32,102,111,114,32,95,119,97,114,
+ 110,105,110,103,115,46,99,10,10,32,32,32,32,83,101,101,
+ 32,71,72,35,57,55,56,53,48,32,102,111,114,32,100,101,
+ 116,97,105,108,115,46,10,32,32,32,32,78,218,10,95,95,
+ 108,111,97,100,101,114,95,95,218,8,95,95,115,112,101,99,
+ 95,95,122,43,77,111,100,117,108,101,32,103,108,111,98,97,
+ 108,115,32,105,115,32,109,105,115,115,105,110,103,32,97,32,
+ 95,95,115,112,101,99,95,95,46,108,111,97,100,101,114,114,
+ 4,1,0,0,122,45,77,111,100,117,108,101,32,103,108,111,
+ 98,97,108,115,59,32,95,95,108,111,97,100,101,114,95,95,
+ 32,33,61,32,95,95,115,112,101,99,95,95,46,108,111,97,
+ 100,101,114,41,10,114,232,0,0,0,218,4,100,105,99,116,
+ 218,6,111,98,106,101,99,116,218,3,103,101,116,114,138,0,
+ 0,0,114,201,0,0,0,218,14,65,116,116,114,105,98,117,
+ 116,101,69,114,114,111,114,114,126,0,0,0,114,127,0,0,
+ 0,114,128,0,0,0,41,6,218,14,109,111,100,117,108,101,
+ 95,103,108,111,98,97,108,115,218,7,109,105,115,115,105,110,
+ 103,114,4,1,0,0,114,16,1,0,0,218,11,115,112,101,
+ 99,95,108,111,97,100,101,114,218,3,101,120,99,115,6,0,
+ 0,0,32,32,32,32,32,32,114,10,0,0,0,218,16,95,
+ 98,108,101,115,115,95,109,121,95,108,111,97,100,101,114,114,
+ 32,1,0,0,104,3,0,0,115,229,0,0,0,128,0,244,
+ 24,0,12,22,144,110,164,100,212,11,43,216,15,19,228,14,
+ 20,139,104,128,71,216,13,27,215,13,31,209,13,31,160,12,
+ 168,100,211,13,51,128,70,216,11,25,215,11,29,209,11,29,
+ 152,106,168,39,211,11,50,128,68,224,7,13,128,126,216,11,
+ 15,144,55,137,63,240,6,0,20,24,216,13,17,136,92,220,
+ 18,28,208,29,74,211,18,75,208,12,75,228,18,25,152,36,
+ 160,8,168,39,211,18,50,128,75,224,7,18,144,119,160,4,
+ 144,111,209,7,37,216,11,17,136,62,216,36,47,176,55,209,
+ 36,58,149,46,196,10,136,67,217,18,21,208,22,67,211,18,
+ 68,208,12,68,220,8,17,143,14,137,14,216,12,57,220,12,
+ 30,244,5,2,9,32,240,6,0,23,29,136,11,224,11,22,
+ 208,11,34,209,4,34,216,7,13,208,7,25,152,102,168,11,
+ 210,30,51,220,8,17,143,14,137,14,216,12,59,220,12,30,
+ 244,5,2,9,32,240,6,0,16,22,136,13,224,11,22,208,
+ 4,22,114,28,0,0,0,99,0,0,0,0,0,0,0,0,
+ 0,0,0,0,3,0,0,0,0,0,0,0,243,90,0,0,
+ 0,151,0,101,0,90,1,100,0,90,2,100,1,90,3,100,
+ 2,90,4,100,3,90,5,101,6,120,1,114,4,1,0,100,
+ 4,101,7,118,0,90,8,101,9,100,5,132,0,171,0,0,
+ 0,0,0,0,0,90,10,101,11,100,6,132,0,171,0,0,
+ 0,0,0,0,0,90,12,101,11,100,9,100,8,132,1,171,
+ 0,0,0,0,0,0,0,90,13,121,7,41,10,218,21,87,
+ 105,110,100,111,119,115,82,101,103,105,115,116,114,121,70,105,
+ 110,100,101,114,122,62,77,101,116,97,32,112,97,116,104,32,
+ 102,105,110,100,101,114,32,102,111,114,32,109,111,100,117,108,
+ 101,115,32,100,101,99,108,97,114,101,100,32,105,110,32,116,
+ 104,101,32,87,105,110,100,111,119,115,32,114,101,103,105,115,
+ 116,114,121,46,122,59,83,111,102,116,119,97,114,101,92,80,
+ 121,116,104,111,110,92,80,121,116,104,111,110,67,111,114,101,
+ 92,123,115,121,115,95,118,101,114,115,105,111,110,125,92,77,
+ 111,100,117,108,101,115,92,123,102,117,108,108,110,97,109,101,
+ 125,122,65,83,111,102,116,119,97,114,101,92,80,121,116,104,
+ 111,110,92,80,121,116,104,111,110,67,111,114,101,92,123,115,
+ 121,115,95,118,101,114,115,105,111,110,125,92,77,111,100,117,
+ 108,101,115,92,123,102,117,108,108,110,97,109,101,125,92,68,
+ 101,98,117,103,122,6,95,100,46,112,121,100,99,1,0,0,
+ 0,0,0,0,0,0,0,0,0,5,0,0,0,3,0,0,
+ 0,243,178,0,0,0,151,0,9,0,116,1,0,0,0,0,
+ 0,0,0,0,106,2,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,116,0,0,0,0,0,0,0,
+ 0,0,106,4,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,124,0,171,2,0,0,0,0,0,0,
+ 83,0,35,0,116,6,0,0,0,0,0,0,0,0,36,0,
+ 114,39,1,0,116,1,0,0,0,0,0,0,0,0,106,2,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,116,0,0,0,0,0,0,0,0,0,106,8,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 124,0,171,2,0,0,0,0,0,0,99,2,89,0,83,0,
+ 119,0,120,3,89,0,119,1,114,77,0,0,0,41,5,218,
+ 6,119,105,110,114,101,103,218,7,79,112,101,110,75,101,121,
+ 218,17,72,75,69,89,95,67,85,82,82,69,78,84,95,85,
+ 83,69,82,114,87,0,0,0,218,18,72,75,69,89,95,76,
+ 79,67,65,76,95,77,65,67,72,73,78,69,114,25,0,0,
+ 0,115,1,0,0,0,32,114,10,0,0,0,218,14,95,111,
+ 112,101,110,95,114,101,103,105,115,116,114,121,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,166,3,0,0,115,71,0,0,0,128,0,240,4,3,
+ 9,66,1,220,19,25,151,62,145,62,164,38,215,34,58,209,
+ 34,58,184,67,211,19,64,208,12,64,248,220,15,22,242,0,
+ 1,9,66,1,220,19,25,151,62,145,62,164,38,215,34,59,
+ 209,34,59,184,83,211,19,65,210,12,65,240,3,1,9,66,
+ 1,250,115,15,0,0,0,130,35,38,0,166,45,65,22,3,
+ 193,21,1,65,22,3,99,2,0,0,0,0,0,0,0,0,
+ 0,0,0,7,0,0,0,3,0,0,0,243,56,1,0,0,
+ 151,0,124,0,106,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,114,13,124,0,106,2,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 125,2,110,12,124,0,106,4,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,125,2,124,2,106,7,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,124,1,100,1,116,8,0,0,0,0,0,0,0,0,
+ 106,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,100,0,100,2,26,0,122,6,0,0,172,3,
+ 171,2,0,0,0,0,0,0,125,3,9,0,124,0,106,13,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,124,3,171,1,0,0,0,0,0,0,53,0,125,4,
+ 116,15,0,0,0,0,0,0,0,0,106,16,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,4,
+ 100,4,171,2,0,0,0,0,0,0,125,5,100,0,100,0,
+ 100,0,171,2,0,0,0,0,0,0,1,0,124,5,83,0,
+ 35,0,49,0,115,1,119,2,1,0,89,0,1,0,1,0,
+ 127,5,83,0,120,3,89,0,119,1,35,0,116,18,0,0,
+ 0,0,0,0,0,0,36,0,114,3,1,0,89,0,121,0,
+ 119,0,120,3,89,0,119,1,41,5,78,122,5,37,100,46,
+ 37,100,114,52,0,0,0,41,2,218,8,102,117,108,108,110,
+ 97,109,101,218,11,115,121,115,95,118,101,114,115,105,111,110,
+ 114,12,0,0,0,41,10,218,11,68,69,66,85,71,95,66,
+ 85,73,76,68,218,18,82,69,71,73,83,84,82,89,95,75,
+ 69,89,95,68,69,66,85,71,218,12,82,69,71,73,83,84,
+ 82,89,95,75,69,89,218,6,102,111,114,109,97,116,114,20,
+ 0,0,0,218,12,118,101,114,115,105,111,110,95,105,110,102,
+ 111,114,40,1,0,0,114,36,1,0,0,218,10,81,117,101,
+ 114,121,86,97,108,117,101,114,87,0,0,0,41,6,218,3,
+ 99,108,115,114,42,1,0,0,218,12,114,101,103,105,115,116,
+ 114,121,95,107,101,121,114,26,0,0,0,218,4,104,107,101,
+ 121,218,8,102,105,108,101,112,97,116,104,115,6,0,0,0,
+ 32,32,32,32,32,32,114,10,0,0,0,218,16,95,115,101,
+ 97,114,99,104,95,114,101,103,105,115,116,114,121,122,38,87,
+ 105,110,100,111,119,115,82,101,103,105,115,116,114,121,70,105,
+ 110,100,101,114,46,95,115,101,97,114,99,104,95,114,101,103,
+ 105,115,116,114,121,173,3,0,0,115,164,0,0,0,128,0,
+ 224,11,14,143,63,138,63,216,27,30,215,27,49,209,27,49,
+ 137,76,224,27,30,215,27,43,209,27,43,136,76,216,14,26,
+ 215,14,33,209,14,33,168,56,216,46,53,188,3,215,56,72,
+ 209,56,72,200,18,200,33,208,56,76,209,46,76,240,3,0,
+ 15,34,243,0,1,15,78,1,136,3,240,4,4,9,24,216,
+ 17,20,215,17,35,209,17,35,160,67,211,17,40,240,0,1,
+ 13,55,168,68,220,27,33,215,27,44,209,27,44,168,84,176,
+ 50,211,27,54,144,8,247,3,1,13,55,240,8,0,16,24,
+ 136,15,247,9,1,13,55,240,8,0,16,24,136,15,251,244,
+ 5,0,16,23,242,0,1,9,24,217,19,23,240,3,1,9,
+ 24,250,115,48,0,0,0,193,14,17,66,13,0,193,31,23,
+ 66,0,3,193,54,8,66,13,0,194,0,5,66,10,7,194,
+ 5,3,66,13,0,194,10,3,66,13,0,194,13,9,66,25,
+ 3,194,24,1,66,25,3,78,99,4,0,0,0,0,0,0,
+ 0,0,0,0,0,8,0,0,0,3,0,0,0,243,0,1,
+ 0,0,151,0,124,0,106,1,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,124,1,171,1,0,0,
+ 0,0,0,0,125,4,124,4,128,1,121,0,9,0,116,3,
+ 0,0,0,0,0,0,0,0,124,4,171,1,0,0,0,0,
+ 0,0,1,0,116,7,0,0,0,0,0,0,0,0,171,0,
+ 0,0,0,0,0,0,68,0,93,66,0,0,92,2,0,0,
+ 125,5,125,6,124,4,106,9,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,116,11,0,0,0,0,
+ 0,0,0,0,124,6,171,1,0,0,0,0,0,0,171,1,
+ 0,0,0,0,0,0,115,1,140,33,116,12,0,0,0,0,
+ 0,0,0,0,106,15,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,124,1,2,0,124,5,124,1,
+ 124,4,171,2,0,0,0,0,0,0,124,4,172,1,171,3,
+ 0,0,0,0,0,0,125,7,124,7,99,2,1,0,83,0,
+ 4,0,121,0,35,0,116,4,0,0,0,0,0,0,0,0,
+ 36,0,114,3,1,0,89,0,121,0,119,0,120,3,89,0,
+ 119,1,41,2,78,114,8,1,0,0,41,8,114,54,1,0,
+ 0,114,85,0,0,0,114,87,0,0,0,114,13,1,0,0,
+ 114,59,0,0,0,114,179,0,0,0,114,207,0,0,0,218,
+ 16,115,112,101,99,95,102,114,111,109,95,108,111,97,100,101,
+ 114,41,8,114,50,1,0,0,114,42,1,0,0,114,68,0,
+ 0,0,218,6,116,97,114,103,101,116,114,53,1,0,0,114,
+ 4,1,0,0,114,18,1,0,0,114,16,1,0,0,115,8,
+ 0,0,0,32,32,32,32,32,32,32,32,114,10,0,0,0,
+ 218,9,102,105,110,100,95,115,112,101,99,122,31,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,115,112,101,99,188,3,0,0,
+ 115,147,0,0,0,128,0,224,19,22,215,19,39,209,19,39,
+ 168,8,211,19,49,136,8,216,11,19,208,11,27,216,19,23,
+ 240,2,3,9,24,220,12,22,144,120,212,12,32,244,6,0,
+ 33,60,211,32,61,242,0,5,9,28,209,12,28,136,70,144,
+ 72,216,15,23,215,15,32,209,15,32,164,21,160,120,163,31,
+ 213,15,49,220,23,33,215,23,50,209,23,50,176,56,217,51,
+ 57,184,40,192,72,211,51,77,216,58,66,240,5,0,24,51,
+ 243,0,2,24,68,1,144,4,240,6,0,24,28,146,11,241,
+ 11,5,9,28,248,244,5,0,16,23,242,0,1,9,24,217,
+ 19,23,240,3,1,9,24,250,115,17,0,0,0,150,11,65,
+ 49,0,193,49,9,65,61,3,193,60,1,65,61,3,169,2,
+ 78,78,41,14,114,196,0,0,0,114,195,0,0,0,114,197,
+ 0,0,0,114,198,0,0,0,114,46,1,0,0,114,45,1,
+ 0,0,218,11,95,77,83,95,87,73,78,68,79,87,83,218,
+ 18,69,88,84,69,78,83,73,79,78,95,83,85,70,70,73,
+ 88,69,83,114,44,1,0,0,218,12,115,116,97,116,105,99,
+ 109,101,116,104,111,100,114,40,1,0,0,218,11,99,108,97,
+ 115,115,109,101,116,104,111,100,114,54,1,0,0,114,58,1,
+ 0,0,114,30,0,0,0,114,28,0,0,0,114,10,0,0,
+ 0,114,34,1,0,0,114,34,1,0,0,154,3,0,0,115,
+ 103,0,0,0,132,0,225,4,72,240,6,1,9,32,240,3,
+ 0,5,17,240,8,1,9,39,240,3,0,5,23,240,6,0,
+ 20,31,210,19,65,160,56,208,47,65,208,35,65,128,75,224,
+ 5,17,241,2,4,5,66,1,243,3,0,6,18,240,2,4,
+ 5,66,1,240,12,0,6,17,241,2,12,5,24,243,3,0,
+ 6,17,240,2,12,5,24,240,28,0,6,17,242,2,13,5,
+ 28,243,3,0,6,17,241,2,13,5,28,114,28,0,0,0,
+ 114,34,1,0,0,99,0,0,0,0,0,0,0,0,0,0,
+ 0,0,1,0,0,0,0,0,0,0,243,40,0,0,0,151,
+ 0,101,0,90,1,100,0,90,2,100,1,90,3,100,2,132,
+ 0,90,4,100,3,132,0,90,5,100,4,132,0,90,6,100,
+ 5,132,0,90,7,121,6,41,7,218,13,95,76,111,97,100,
+ 101,114,66,97,115,105,99,115,122,83,66,97,115,101,32,99,
+ 108,97,115,115,32,111,102,32,99,111,109,109,111,110,32,99,
+ 111,100,101,32,110,101,101,100,101,100,32,98,121,32,98,111,
+ 116,104,32,83,111,117,114,99,101,76,111,97,100,101,114,32,
+ 97,110,100,10,32,32,32,32,83,111,117,114,99,101,108,101,
+ 115,115,70,105,108,101,76,111,97,100,101,114,46,99,2,0,
+ 0,0,0,0,0,0,0,0,0,0,5,0,0,0,3,0,
+ 0,0,243,166,0,0,0,151,0,116,1,0,0,0,0,0,
+ 0,0,0,124,0,106,3,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,124,1,171,1,0,0,0,
+ 0,0,0,171,1,0,0,0,0,0,0,100,1,25,0,0,
+ 0,125,2,124,2,106,5,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,100,2,100,1,171,2,0,
+ 0,0,0,0,0,100,3,25,0,0,0,125,3,124,1,106,
+ 7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,100,2,171,1,0,0,0,0,0,0,100,4,25,
+ 0,0,0,125,4,124,3,100,5,107,40,0,0,120,1,114,
+ 5,1,0,124,4,100,5,107,55,0,0,83,0,41,6,122,
+ 141,67,111,110,99,114,101,116,101,32,105,109,112,108,101,109,
+ 101,110,116,97,116,105,111,110,32,111,102,32,73,110,115,112,
+ 101,99,116,76,111,97,100,101,114,46,105,115,95,112,97,99,
+ 107,97,103,101,32,98,121,32,99,104,101,99,107,105,110,103,
+ 32,105,102,10,32,32,32,32,32,32,32,32,116,104,101,32,
+ 112,97,116,104,32,114,101,116,117,114,110,101,100,32,98,121,
+ 32,103,101,116,95,102,105,108,101,110,97,109,101,32,104,97,
+ 115,32,97,32,102,105,108,101,110,97,109,101,32,111,102,32,
+ 39,95,95,105,110,105,116,95,95,46,112,121,39,46,114,6,
+ 0,0,0,114,103,0,0,0,114,1,0,0,0,114,52,0,
+ 0,0,218,8,95,95,105,110,105,116,95,95,41,4,114,81,
+ 0,0,0,114,7,1,0,0,114,157,0,0,0,114,131,0,
+ 0,0,41,5,114,189,0,0,0,114,42,1,0,0,114,151,
+ 0,0,0,218,13,102,105,108,101,110,97,109,101,95,98,97,
+ 115,101,218,9,116,97,105,108,95,110,97,109,101,115,5,0,
+ 0,0,32,32,32,32,32,114,10,0,0,0,114,10,1,0,
+ 0,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,210,3,0,0,115,
+ 93,0,0,0,128,0,244,6,0,20,31,152,116,215,31,48,
+ 209,31,48,176,24,211,31,58,211,19,59,184,65,209,19,62,
+ 136,8,216,24,32,159,15,153,15,168,3,168,81,211,24,47,
+ 176,1,209,24,50,136,13,216,20,28,215,20,39,209,20,39,
+ 168,3,211,20,44,168,81,209,20,47,136,9,216,15,28,160,
+ 10,209,15,42,210,15,70,168,121,184,74,209,47,70,208,8,
+ 70,114,28,0,0,0,99,2,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,3,0,0,0,243,4,0,0,0,
+ 151,0,121,1,169,2,122,42,85,115,101,32,100,101,102,97,
+ 117,108,116,32,115,101,109,97,110,116,105,99,115,32,102,111,
+ 114,32,109,111,100,117,108,101,32,99,114,101,97,116,105,111,
+ 110,46,78,114,30,0,0,0,169,2,114,189,0,0,0,114,
+ 16,1,0,0,115,2,0,0,0,32,32,114,10,0,0,0,
+ 218,13,99,114,101,97,116,101,95,109,111,100,117,108,101,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,218,3,0,0,
+ 243,2,0,0,0,129,0,114,28,0,0,0,99,2,0,0,
+ 0,0,0,0,0,0,0,0,0,5,0,0,0,3,0,0,
+ 0,243,186,0,0,0,151,0,124,0,106,1,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,1,
+ 106,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,171,1,0,0,0,0,0,0,125,2,124,2,
+ 128,25,116,5,0,0,0,0,0,0,0,0,100,2,124,1,
+ 106,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,155,2,100,3,157,3,171,1,0,0,0,0,
+ 0,0,130,1,116,6,0,0,0,0,0,0,0,0,106,9,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,116,10,0,0,0,0,0,0,0,0,124,2,124,1,
+ 106,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,171,3,0,0,0,0,0,0,1,0,121,1,
+ 41,4,122,19,69,120,101,99,117,116,101,32,116,104,101,32,
+ 109,111,100,117,108,101,46,78,122,19,99,97,110,110,111,116,
+ 32,108,111,97,100,32,109,111,100,117,108,101,32,122,29,32,
+ 119,104,101,110,32,103,101,116,95,99,111,100,101,40,41,32,
+ 114,101,116,117,114,110,115,32,78,111,110,101,41,7,218,8,
+ 103,101,116,95,99,111,100,101,114,196,0,0,0,114,188,0,
+ 0,0,114,207,0,0,0,218,25,95,99,97,108,108,95,119,
+ 105,116,104,95,102,114,97,109,101,115,95,114,101,109,111,118,
+ 101,100,218,4,101,120,101,99,114,202,0,0,0,41,3,114,
+ 189,0,0,0,218,6,109,111,100,117,108,101,114,236,0,0,
+ 0,115,3,0,0,0,32,32,32,114,10,0,0,0,218,11,
+ 101,120,101,99,95,109,111,100,117,108,101,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,221,3,0,0,115,83,0,0,0,128,
+ 0,224,15,19,143,125,137,125,152,86,159,95,153,95,211,15,
+ 45,136,4,216,11,15,136,60,220,18,29,208,32,51,176,70,
+ 183,79,177,79,208,51,70,240,0,1,71,1,56,240,0,1,
+ 31,56,243,0,1,19,57,240,0,1,13,57,228,8,18,215,
+ 8,44,209,8,44,172,84,176,52,184,22,191,31,185,31,213,
+ 8,73,114,28,0,0,0,99,2,0,0,0,0,0,0,0,
+ 0,0,0,0,4,0,0,0,3,0,0,0,243,46,0,0,
+ 0,151,0,116,0,0,0,0,0,0,0,0,0,106,3,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,124,0,124,1,171,2,0,0,0,0,0,0,83,0,41,
+ 1,122,26,84,104,105,115,32,109,101,116,104,111,100,32,105,
+ 115,32,100,101,112,114,101,99,97,116,101,100,46,41,2,114,
+ 207,0,0,0,218,17,95,108,111,97,100,95,109,111,100,117,
+ 108,101,95,115,104,105,109,169,2,114,189,0,0,0,114,42,
+ 1,0,0,115,2,0,0,0,32,32,114,10,0,0,0,218,
+ 11,108,111,97,100,95,109,111,100,117,108,101,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,229,3,0,0,115,23,0,0,0,
+ 128,0,244,6,0,16,26,215,15,43,209,15,43,168,68,176,
+ 40,211,15,59,208,8,59,114,28,0,0,0,78,41,8,114,
+ 196,0,0,0,114,195,0,0,0,114,197,0,0,0,114,198,
+ 0,0,0,114,10,1,0,0,114,73,1,0,0,114,80,1,
+ 0,0,114,84,1,0,0,114,30,0,0,0,114,28,0,0,
+ 0,114,10,0,0,0,114,65,1,0,0,114,65,1,0,0,
+ 205,3,0,0,115,29,0,0,0,132,0,241,4,1,5,29,
+ 242,6,6,5,71,1,242,16,1,5,57,242,6,6,5,74,
+ 1,243,16,3,5,60,114,28,0,0,0,114,65,1,0,0,
+ 99,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,
+ 0,0,0,0,0,243,60,0,0,0,151,0,101,0,90,1,
+ 100,0,90,2,100,1,132,0,90,3,100,2,132,0,90,4,
+ 100,3,132,0,90,5,100,4,132,0,90,6,100,5,132,0,
+ 90,7,100,6,100,7,156,1,100,8,132,2,90,8,100,9,
+ 132,0,90,9,121,10,41,11,218,12,83,111,117,114,99,101,
+ 76,111,97,100,101,114,99,2,0,0,0,0,0,0,0,0,
+ 0,0,0,1,0,0,0,3,0,0,0,243,14,0,0,0,
+ 151,0,116,0,0,0,0,0,0,0,0,0,130,1,41,1,
+ 122,165,79,112,116,105,111,110,97,108,32,109,101,116,104,111,
+ 100,32,116,104,97,116,32,114,101,116,117,114,110,115,32,116,
+ 104,101,32,109,111,100,105,102,105,99,97,116,105,111,110,32,
+ 116,105,109,101,32,40,97,110,32,105,110,116,41,32,102,111,
+ 114,32,116,104,101,10,32,32,32,32,32,32,32,32,115,112,
+ 101,99,105,102,105,101,100,32,112,97,116,104,32,40,97,32,
+ 115,116,114,41,46,10,10,32,32,32,32,32,32,32,32,82,
+ 97,105,115,101,115,32,79,83,69,114,114,111,114,32,119,104,
+ 101,110,32,116,104,101,32,112,97,116,104,32,99,97,110,110,
+ 111,116,32,98,101,32,104,97,110,100,108,101,100,46,10,32,
+ 32,32,32,32,32,32,32,41,1,114,87,0,0,0,169,2,
+ 114,189,0,0,0,114,68,0,0,0,115,2,0,0,0,32,
+ 32,114,10,0,0,0,218,10,112,97,116,104,95,109,116,105,
+ 109,101,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,237,3,0,0,115,
+ 9,0,0,0,128,0,244,12,0,15,22,136,13,114,28,0,
+ 0,0,99,2,0,0,0,0,0,0,0,0,0,0,0,4,
+ 0,0,0,3,0,0,0,243,40,0,0,0,151,0,100,1,
+ 124,0,106,1,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,124,1,171,1,0,0,0,0,0,0,
+ 105,1,83,0,41,2,97,158,1,0,0,79,112,116,105,111,
+ 110,97,108,32,109,101,116,104,111,100,32,114,101,116,117,114,
+ 110,105,110,103,32,97,32,109,101,116,97,100,97,116,97,32,
+ 100,105,99,116,32,102,111,114,32,116,104,101,32,115,112,101,
+ 99,105,102,105,101,100,10,32,32,32,32,32,32,32,32,112,
+ 97,116,104,32,40,97,32,115,116,114,41,46,10,10,32,32,
+ 32,32,32,32,32,32,80,111,115,115,105,98,108,101,32,107,
+ 101,121,115,58,10,32,32,32,32,32,32,32,32,45,32,39,
+ 109,116,105,109,101,39,32,40,109,97,110,100,97,116,111,114,
+ 121,41,32,105,115,32,116,104,101,32,110,117,109,101,114,105,
+ 99,32,116,105,109,101,115,116,97,109,112,32,111,102,32,108,
+ 97,115,116,32,115,111,117,114,99,101,10,32,32,32,32,32,
+ 32,32,32,32,32,99,111,100,101,32,109,111,100,105,102,105,
+ 99,97,116,105,111,110,59,10,32,32,32,32,32,32,32,32,
+ 45,32,39,115,105,122,101,39,32,40,111,112,116,105,111,110,
+ 97,108,41,32,105,115,32,116,104,101,32,115,105,122,101,32,
+ 105,110,32,98,121,116,101,115,32,111,102,32,116,104,101,32,
+ 115,111,117,114,99,101,32,99,111,100,101,46,10,10,32,32,
+ 32,32,32,32,32,32,73,109,112,108,101,109,101,110,116,105,
+ 110,103,32,116,104,105,115,32,109,101,116,104,111,100,32,97,
+ 108,108,111,119,115,32,116,104,101,32,108,111,97,100,101,114,
+ 32,116,111,32,114,101,97,100,32,98,121,116,101,99,111,100,
+ 101,32,102,105,108,101,115,46,10,32,32,32,32,32,32,32,
+ 32,82,97,105,115,101,115,32,79,83,69,114,114,111,114,32,
+ 119,104,101,110,32,116,104,101,32,112,97,116,104,32,99,97,
+ 110,110,111,116,32,98,101,32,104,97,110,100,108,101,100,46,
+ 10,32,32,32,32,32,32,32,32,114,242,0,0,0,41,1,
+ 114,89,1,0,0,114,88,1,0,0,115,2,0,0,0,32,
+ 32,114,10,0,0,0,218,10,112,97,116,104,95,115,116,97,
+ 116,115,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,245,3,0,0,115,
+ 24,0,0,0,128,0,240,24,0,17,24,152,20,159,31,153,
+ 31,168,20,211,25,46,208,15,47,208,8,47,114,28,0,0,
+ 0,99,4,0,0,0,0,0,0,0,0,0,0,0,4,0,
+ 0,0,3,0,0,0,243,38,0,0,0,151,0,124,0,106,
+ 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,124,2,124,3,171,2,0,0,0,0,0,0,83,
+ 0,41,1,122,228,79,112,116,105,111,110,97,108,32,109,101,
+ 116,104,111,100,32,119,104,105,99,104,32,119,114,105,116,101,
+ 115,32,100,97,116,97,32,40,98,121,116,101,115,41,32,116,
+ 111,32,97,32,102,105,108,101,32,112,97,116,104,32,40,97,
+ 32,115,116,114,41,46,10,10,32,32,32,32,32,32,32,32,
+ 73,109,112,108,101,109,101,110,116,105,110,103,32,116,104,105,
+ 115,32,109,101,116,104,111,100,32,97,108,108,111,119,115,32,
+ 102,111,114,32,116,104,101,32,119,114,105,116,105,110,103,32,
+ 111,102,32,98,121,116,101,99,111,100,101,32,102,105,108,101,
+ 115,46,10,10,32,32,32,32,32,32,32,32,84,104,101,32,
+ 115,111,117,114,99,101,32,112,97,116,104,32,105,115,32,110,
+ 101,101,100,101,100,32,105,110,32,111,114,100,101,114,32,116,
+ 111,32,99,111,114,114,101,99,116,108,121,32,116,114,97,110,
+ 115,102,101,114,32,112,101,114,109,105,115,115,105,111,110,115,
+ 10,32,32,32,32,32,32,32,32,41,1,218,8,115,101,116,
+ 95,100,97,116,97,41,4,114,189,0,0,0,114,176,0,0,
+ 0,218,10,99,97,99,104,101,95,112,97,116,104,114,48,0,
+ 0,0,115,4,0,0,0,32,32,32,32,114,10,0,0,0,
+ 218,15,95,99,97,99,104,101,95,98,121,116,101,99,111,100,
+ 101,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,3,
+ 4,0,0,115,21,0,0,0,128,0,240,16,0,16,20,143,
+ 125,137,125,152,90,168,20,211,15,46,208,8,46,114,28,0,
+ 0,0,99,3,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,3,0,0,0,243,4,0,0,0,151,0,121,1,
+ 41,2,122,150,79,112,116,105,111,110,97,108,32,109,101,116,
+ 104,111,100,32,119,104,105,99,104,32,119,114,105,116,101,115,
+ 32,100,97,116,97,32,40,98,121,116,101,115,41,32,116,111,
+ 32,97,32,102,105,108,101,32,112,97,116,104,32,40,97,32,
+ 115,116,114,41,46,10,10,32,32,32,32,32,32,32,32,73,
+ 109,112,108,101,109,101,110,116,105,110,103,32,116,104,105,115,
+ 32,109,101,116,104,111,100,32,97,108,108,111,119,115,32,102,
+ 111,114,32,116,104,101,32,119,114,105,116,105,110,103,32,111,
+ 102,32,98,121,116,101,99,111,100,101,32,102,105,108,101,115,
+ 46,10,32,32,32,32,32,32,32,32,78,114,30,0,0,0,
+ 41,3,114,189,0,0,0,114,68,0,0,0,114,48,0,0,
+ 0,115,3,0,0,0,32,32,32,114,10,0,0,0,114,93,
+ 1,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,13,4,0,0,114,74,
+ 1,0,0,114,28,0,0,0,99,2,0,0,0,0,0,0,
+ 0,0,0,0,0,5,0,0,0,3,0,0,0,243,156,0,
+ 0,0,151,0,124,0,106,1,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,124,1,171,1,0,0,
+ 0,0,0,0,125,2,9,0,124,0,106,3,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,2,
+ 171,1,0,0,0,0,0,0,125,3,116,9,0,0,0,0,
+ 0,0,0,0,124,3,171,1,0,0,0,0,0,0,83,0,
+ 35,0,116,4,0,0,0,0,0,0,0,0,36,0,114,19,
+ 125,4,116,7,0,0,0,0,0,0,0,0,100,1,124,1,
+ 172,2,171,2,0,0,0,0,0,0,124,4,130,2,100,3,
+ 125,4,126,4,119,1,119,0,120,3,89,0,119,1,41,4,
+ 122,52,67,111,110,99,114,101,116,101,32,105,109,112,108,101,
+ 109,101,110,116,97,116,105,111,110,32,111,102,32,73,110,115,
+ 112,101,99,116,76,111,97,100,101,114,46,103,101,116,95,115,
+ 111,117,114,99,101,46,122,39,115,111,117,114,99,101,32,110,
+ 111,116,32,97,118,97,105,108,97,98,108,101,32,116,104,114,
+ 111,117,103,104,32,103,101,116,95,100,97,116,97,40,41,114,
+ 186,0,0,0,78,41,5,114,7,1,0,0,218,8,103,101,
+ 116,95,100,97,116,97,114,87,0,0,0,114,188,0,0,0,
+ 114,2,1,0,0,41,5,114,189,0,0,0,114,42,1,0,
+ 0,114,68,0,0,0,114,254,0,0,0,114,31,1,0,0,
+ 115,5,0,0,0,32,32,32,32,32,114,10,0,0,0,218,
+ 10,103,101,116,95,115,111,117,114,99,101,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,20,4,0,0,115,90,0,0,0,128,0,224,
+ 15,19,215,15,32,209,15,32,160,24,211,15,42,136,4,240,
+ 2,4,9,54,216,27,31,159,61,153,61,168,20,211,27,46,
+ 136,76,244,8,0,16,29,152,92,211,15,42,208,8,42,248,
+ 244,7,0,16,23,242,0,2,9,54,220,18,29,208,30,71,
+ 216,35,43,244,3,1,19,45,216,50,53,240,3,1,13,54,
+ 251,240,3,2,9,54,250,115,20,0,0,0,147,17,47,0,
+ 175,9,65,11,3,184,14,65,6,3,193,6,5,65,11,3,
+ 114,170,0,0,0,41,1,218,9,95,111,112,116,105,109,105,
+ 122,101,99,3,0,0,0,0,0,0,0,1,0,0,0,8,
+ 0,0,0,3,0,0,0,243,64,0,0,0,151,0,116,0,
+ 0,0,0,0,0,0,0,0,106,3,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,116,4,0,0,
+ 0,0,0,0,0,0,124,1,124,2,100,1,100,2,124,3,
+ 172,3,171,6,0,0,0,0,0,0,83,0,41,4,122,130,
+ 82,101,116,117,114,110,32,116,104,101,32,99,111,100,101,32,
+ 111,98,106,101,99,116,32,99,111,109,112,105,108,101,100,32,
+ 102,114,111,109,32,115,111,117,114,99,101,46,10,10,32,32,
+ 32,32,32,32,32,32,84,104,101,32,39,100,97,116,97,39,
+ 32,97,114,103,117,109,101,110,116,32,99,97,110,32,98,101,
+ 32,97,110,121,32,111,98,106,101,99,116,32,116,121,112,101,
+ 32,116,104,97,116,32,99,111,109,112,105,108,101,40,41,32,
+ 115,117,112,112,111,114,116,115,46,10,32,32,32,32,32,32,
+ 32,32,114,78,1,0,0,84,41,2,218,12,100,111,110,116,
+ 95,105,110,104,101,114,105,116,114,135,0,0,0,41,3,114,
+ 207,0,0,0,114,77,1,0,0,218,7,99,111,109,112,105,
+ 108,101,41,4,114,189,0,0,0,114,48,0,0,0,114,68,
+ 0,0,0,114,100,1,0,0,115,4,0,0,0,32,32,32,
+ 32,114,10,0,0,0,218,14,115,111,117,114,99,101,95,116,
+ 111,95,99,111,100,101,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,30,4,0,0,115,43,0,0,0,128,0,244,10,
+ 0,16,26,215,15,51,209,15,51,180,71,184,84,192,52,200,
+ 22,216,53,57,192,73,240,3,0,16,52,243,0,1,16,79,
+ 1,240,0,1,9,79,1,114,28,0,0,0,99,2,0,0,
+ 0,0,0,0,0,0,0,0,0,7,0,0,0,3,0,0,
+ 0,243,72,4,0,0,151,0,124,0,106,1,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,1,
+ 171,1,0,0,0,0,0,0,125,2,100,1,125,3,100,1,
+ 125,4,100,1,125,5,100,2,125,6,100,3,125,7,9,0,
+ 116,3,0,0,0,0,0,0,0,0,124,2,171,1,0,0,
+ 0,0,0,0,125,8,9,0,124,0,106,5,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,2,
+ 171,1,0,0,0,0,0,0,125,9,116,7,0,0,0,0,
+ 0,0,0,0,124,9,100,4,25,0,0,0,171,1,0,0,
+ 0,0,0,0,125,3,9,0,124,0,106,9,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,8,
+ 171,1,0,0,0,0,0,0,125,10,124,1,124,8,100,5,
+ 156,2,125,11,9,0,116,11,0,0,0,0,0,0,0,0,
+ 124,10,124,1,124,11,171,3,0,0,0,0,0,0,125,12,
+ 116,13,0,0,0,0,0,0,0,0,124,10,171,1,0,0,
+ 0,0,0,0,100,6,100,1,26,0,125,13,124,12,100,7,
+ 122,1,0,0,100,8,107,55,0,0,125,6,124,6,114,106,
+ 124,12,100,9,122,1,0,0,100,8,107,55,0,0,125,7,
+ 116,14,0,0,0,0,0,0,0,0,106,16,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,10,
+ 107,55,0,0,114,97,124,7,115,19,116,14,0,0,0,0,
+ 0,0,0,0,106,16,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,100,11,107,40,0,0,114,76,
+ 124,0,106,9,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,124,2,171,1,0,0,0,0,0,0,
+ 125,4,116,15,0,0,0,0,0,0,0,0,106,18,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 116,20,0,0,0,0,0,0,0,0,124,4,171,2,0,0,
+ 0,0,0,0,125,5,116,23,0,0,0,0,0,0,0,0,
+ 124,10,124,5,124,1,124,11,171,4,0,0,0,0,0,0,
+ 1,0,110,18,116,25,0,0,0,0,0,0,0,0,124,10,
+ 124,3,124,9,100,12,25,0,0,0,124,1,124,11,171,5,
+ 0,0,0,0,0,0,1,0,116,26,0,0,0,0,0,0,
+ 0,0,106,29,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,100,13,124,8,124,2,171,3,0,0,
+ 0,0,0,0,1,0,116,31,0,0,0,0,0,0,0,0,
+ 124,13,124,1,124,8,124,2,172,14,171,4,0,0,0,0,
+ 0,0,83,0,35,0,116,32,0,0,0,0,0,0,0,0,
+ 116,34,0,0,0,0,0,0,0,0,102,2,36,0,114,3,
+ 1,0,89,0,110,51,119,0,120,3,89,0,119,1,35,0,
+ 116,36,0,0,0,0,0,0,0,0,36,0,114,3,1,0,
+ 89,0,110,36,119,0,120,3,89,0,119,1,35,0,116,36,
+ 0,0,0,0,0,0,0,0,36,0,114,3,1,0,89,0,
+ 110,21,119,0,120,3,89,0,119,1,35,0,116,38,0,0,
+ 0,0,0,0,0,0,36,0,114,5,1,0,100,1,125,8,
+ 89,0,110,4,119,0,120,3,89,0,119,1,124,4,128,17,
+ 124,0,106,9,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,124,2,171,1,0,0,0,0,0,0,
+ 125,4,124,0,106,41,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,124,4,124,2,171,2,0,0,
+ 0,0,0,0,125,14,116,26,0,0,0,0,0,0,0,0,
+ 106,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,100,15,124,2,171,2,0,0,0,0,0,0,
+ 1,0,116,42,0,0,0,0,0,0,0,0,106,44,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 115,108,124,8,129,106,124,3,129,104,124,6,114,42,124,5,
+ 128,26,116,15,0,0,0,0,0,0,0,0,106,18,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 116,20,0,0,0,0,0,0,0,0,124,4,171,2,0,0,
+ 0,0,0,0,125,5,116,47,0,0,0,0,0,0,0,0,
+ 124,14,124,5,124,7,171,3,0,0,0,0,0,0,125,10,
+ 110,22,116,49,0,0,0,0,0,0,0,0,124,14,124,3,
+ 116,51,0,0,0,0,0,0,0,0,124,4,171,1,0,0,
+ 0,0,0,0,171,3,0,0,0,0,0,0,125,10,9,0,
+ 124,0,106,53,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,124,2,124,8,124,10,171,3,0,0,
+ 0,0,0,0,1,0,124,14,83,0,35,0,116,38,0,0,
+ 0,0,0,0,0,0,36,0,114,4,1,0,89,0,124,14,
+ 83,0,119,0,120,3,89,0,119,1,124,14,83,0,41,16,
+ 122,190,67,111,110,99,114,101,116,101,32,105,109,112,108,101,
+ 109,101,110,116,97,116,105,111,110,32,111,102,32,73,110,115,
+ 112,101,99,116,76,111,97,100,101,114,46,103,101,116,95,99,
+ 111,100,101,46,10,10,32,32,32,32,32,32,32,32,82,101,
+ 97,100,105,110,103,32,111,102,32,98,121,116,101,99,111,100,
+ 101,32,114,101,113,117,105,114,101,115,32,112,97,116,104,95,
+ 115,116,97,116,115,32,116,111,32,98,101,32,105,109,112,108,
+ 101,109,101,110,116,101,100,46,32,84,111,32,119,114,105,116,
+ 101,10,32,32,32,32,32,32,32,32,98,121,116,101,99,111,
+ 100,101,44,32,115,101,116,95,100,97,116,97,32,109,117,115,
+ 116,32,97,108,115,111,32,98,101,32,105,109,112,108,101,109,
+ 101,110,116,101,100,46,10,10,32,32,32,32,32,32,32,32,
+ 78,70,84,114,242,0,0,0,114,229,0,0,0,114,211,0,
+ 0,0,114,6,0,0,0,114,1,0,0,0,114,52,0,0,
+ 0,218,5,110,101,118,101,114,218,6,97,108,119,97,121,115,
+ 218,4,115,105,122,101,122,13,123,125,32,109,97,116,99,104,
+ 101,115,32,123,125,41,3,114,187,0,0,0,114,173,0,0,
+ 0,114,176,0,0,0,122,19,99,111,100,101,32,111,98,106,
+ 101,99,116,32,102,114,111,109,32,123,125,41,27,114,7,1,
+ 0,0,114,152,0,0,0,114,91,1,0,0,114,40,0,0,
+ 0,114,98,1,0,0,114,219,0,0,0,218,10,109,101,109,
+ 111,114,121,118,105,101,119,114,234,0,0,0,218,21,99,104,
+ 101,99,107,95,104,97,115,104,95,98,97,115,101,100,95,112,
+ 121,99,115,114,226,0,0,0,218,17,95,82,65,87,95,77,
+ 65,71,73,67,95,78,85,77,66,69,82,114,227,0,0,0,
+ 114,224,0,0,0,114,207,0,0,0,114,215,0,0,0,114,
+ 237,0,0,0,114,188,0,0,0,114,216,0,0,0,114,87,
+ 0,0,0,114,134,0,0,0,114,104,1,0,0,114,20,0,
+ 0,0,218,19,100,111,110,116,95,119,114,105,116,101,95,98,
+ 121,116,101,99,111,100,101,114,246,0,0,0,114,243,0,0,
+ 0,114,7,0,0,0,114,95,1,0,0,41,15,114,189,0,
+ 0,0,114,42,1,0,0,114,176,0,0,0,114,222,0,0,
+ 0,114,254,0,0,0,114,226,0,0,0,218,10,104,97,115,
+ 104,95,98,97,115,101,100,218,12,99,104,101,99,107,95,115,
+ 111,117,114,99,101,114,173,0,0,0,218,2,115,116,114,48,
+ 0,0,0,114,217,0,0,0,114,21,0,0,0,218,10,98,
+ 121,116,101,115,95,100,97,116,97,218,11,99,111,100,101,95,
+ 111,98,106,101,99,116,115,15,0,0,0,32,32,32,32,32,
+ 32,32,32,32,32,32,32,32,32,32,114,10,0,0,0,114,
+ 76,1,0,0,122,21,83,111,117,114,99,101,76,111,97,100,
+ 101,114,46,103,101,116,95,99,111,100,101,38,4,0,0,115,
+ 147,2,0,0,128,0,240,14,0,23,27,215,22,39,209,22,
+ 39,168,8,211,22,49,136,11,216,23,27,136,12,216,23,27,
+ 136,12,216,22,26,136,11,216,21,26,136,10,216,23,27,136,
+ 12,240,2,51,9,74,1,220,28,45,168,107,211,28,58,136,
+ 77,240,8,46,13,74,1,216,21,25,151,95,145,95,160,91,
+ 211,21,49,144,2,244,8,0,32,35,160,50,160,103,161,59,
+ 211,31,47,144,12,240,2,40,17,74,1,216,27,31,159,61,
+ 153,61,168,29,211,27,55,144,68,240,10,0,33,41,216,32,
+ 45,241,5,3,35,22,144,75,240,8,31,21,74,1,220,32,
+ 45,168,100,176,72,184,107,211,32,74,152,5,220,37,47,176,
+ 4,211,37,53,176,98,176,99,208,37,58,152,10,216,37,42,
+ 168,83,161,91,176,65,209,37,53,152,10,217,27,37,216,43,
+ 48,176,52,169,60,184,49,209,43,60,152,76,220,32,36,215,
+ 32,58,209,32,58,184,103,210,32,69,217,33,45,220,33,37,
+ 215,33,59,209,33,59,184,120,210,33,71,216,47,51,175,125,
+ 169,125,184,91,211,47,73,160,12,220,46,50,215,46,62,209,
+ 46,62,220,36,53,216,36,48,243,5,3,47,34,160,11,244,
+ 8,0,33,51,176,52,184,27,192,104,216,51,62,245,3,1,
+ 33,64,1,244,6,0,29,52,216,32,36,216,32,44,216,32,
+ 34,160,54,161,10,216,32,40,216,32,43,244,11,6,29,30,
+ 244,20,0,25,35,215,24,51,209,24,51,176,79,192,93,216,
+ 52,63,244,3,1,25,65,1,228,31,48,176,26,192,40,216,
+ 63,76,216,61,72,244,5,2,32,74,1,240,0,2,25,74,
+ 1,248,244,11,0,29,40,172,24,208,27,50,242,0,1,21,
+ 29,217,24,28,240,3,1,21,29,251,244,63,0,24,31,242,
+ 0,1,17,25,217,20,24,240,3,1,17,25,251,244,13,0,
+ 20,27,242,0,1,13,21,217,16,20,240,3,1,13,21,251,
+ 244,11,0,16,35,242,0,1,9,33,216,28,32,138,77,240,
+ 3,1,9,33,250,240,100,1,0,12,24,208,11,31,216,27,
+ 31,159,61,153,61,168,27,211,27,53,136,76,216,22,26,215,
+ 22,41,209,22,41,168,44,184,11,211,22,68,136,11,220,8,
+ 18,215,8,35,209,8,35,208,36,57,184,59,212,8,71,220,
+ 16,19,215,16,39,210,16,39,168,77,208,44,69,216,16,28,
+ 208,16,40,217,15,25,216,19,30,208,19,38,220,34,38,215,
+ 34,50,209,34,50,212,51,68,216,51,63,243,3,1,35,65,
+ 1,144,75,228,23,40,168,27,176,107,192,60,211,23,80,145,
+ 4,228,23,45,168,107,184,60,220,46,49,176,44,211,46,63,
+ 243,3,1,24,65,1,144,4,240,4,3,13,21,216,16,20,
+ 215,16,36,209,16,36,160,91,176,45,192,20,212,16,70,240,
+ 6,0,16,27,208,8,26,248,244,5,0,20,39,242,0,1,
+ 13,21,216,16,20,216,15,26,208,8,26,240,5,1,13,21,
+ 250,224,15,26,208,8,26,115,89,0,0,0,157,11,69,26,
+ 0,169,17,69,11,0,193,9,17,68,60,0,193,32,66,33,
+ 68,39,0,196,39,15,68,57,3,196,56,1,68,57,3,196,
+ 60,9,69,8,3,197,7,1,69,8,3,197,11,9,69,23,
+ 3,197,22,1,69,23,3,197,26,11,69,40,3,197,39,1,
+ 69,40,3,199,61,19,72,18,0,200,18,9,72,31,3,200,
+ 30,1,72,31,3,78,41,10,114,196,0,0,0,114,195,0,
+ 0,0,114,197,0,0,0,114,89,1,0,0,114,91,1,0,
+ 0,114,95,1,0,0,114,93,1,0,0,114,99,1,0,0,
+ 114,104,1,0,0,114,76,1,0,0,114,30,0,0,0,114,
+ 28,0,0,0,114,10,0,0,0,114,86,1,0,0,114,86,
+ 1,0,0,235,3,0,0,115,44,0,0,0,132,0,242,4,
+ 6,5,22,242,16,12,5,48,242,28,8,5,47,242,20,4,
+ 5,12,242,14,8,5,43,240,20,0,55,57,244,0,6,5,
+ 79,1,243,16,83,1,5,27,114,28,0,0,0,114,86,1,
+ 0,0,99,0,0,0,0,0,0,0,0,0,0,0,0,3,
+ 0,0,0,0,0,0,0,243,100,0,0,0,135,0,151,0,
+ 101,0,90,1,100,0,90,2,100,1,90,3,100,2,132,0,
+ 90,4,100,3,132,0,90,5,100,4,132,0,90,6,101,7,
+ 136,0,102,1,100,5,132,8,171,0,0,0,0,0,0,0,
+ 90,8,101,7,100,6,132,0,171,0,0,0,0,0,0,0,
+ 90,9,100,7,132,0,90,10,101,7,100,8,132,0,171,0,
+ 0,0,0,0,0,0,90,11,136,0,120,1,90,12,83,0,
+ 41,9,218,10,70,105,108,101,76,111,97,100,101,114,122,103,
+ 66,97,115,101,32,102,105,108,101,32,108,111,97,100,101,114,
+ 32,99,108,97,115,115,32,119,104,105,99,104,32,105,109,112,
+ 108,101,109,101,110,116,115,32,116,104,101,32,108,111,97,100,
+ 101,114,32,112,114,111,116,111,99,111,108,32,109,101,116,104,
+ 111,100,115,32,116,104,97,116,10,32,32,32,32,114,101,113,
+ 117,105,114,101,32,102,105,108,101,32,115,121,115,116,101,109,
+ 32,117,115,97,103,101,46,99,3,0,0,0,0,0,0,0,
+ 0,0,0,0,2,0,0,0,3,0,0,0,243,32,0,0,
+ 0,151,0,124,1,124,0,95,0,0,0,0,0,0,0,0,
+ 0,124,2,124,0,95,1,0,0,0,0,0,0,0,0,121,
+ 1,41,2,122,75,67,97,99,104,101,32,116,104,101,32,109,
+ 111,100,117,108,101,32,110,97,109,101,32,97,110,100,32,116,
+ 104,101,32,112,97,116,104,32,116,111,32,116,104,101,32,102,
+ 105,108,101,32,102,111,117,110,100,32,98,121,32,116,104,101,
+ 10,32,32,32,32,32,32,32,32,102,105,110,100,101,114,46,
+ 78,114,229,0,0,0,41,3,114,189,0,0,0,114,42,1,
+ 0,0,114,68,0,0,0,115,3,0,0,0,32,32,32,114,
+ 10,0,0,0,114,67,1,0,0,122,19,70,105,108,101,76,
+ 111,97,100,101,114,46,95,95,105,110,105,116,95,95,129,4,
+ 0,0,115,18,0,0,0,128,0,240,6,0,21,29,136,4,
+ 140,9,216,20,24,136,4,141,9,114,28,0,0,0,99,2,
+ 0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,3,
+ 0,0,0,243,106,0,0,0,151,0,124,0,106,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 124,1,106,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,107,40,0,0,120,1,114,25,1,0,
+ 124,0,106,2,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,124,1,106,2,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,107,40,0,0,
+ 83,0,114,77,0,0,0,169,2,218,9,95,95,99,108,97,
+ 115,115,95,95,114,202,0,0,0,169,2,114,189,0,0,0,
+ 218,5,111,116,104,101,114,115,2,0,0,0,32,32,114,10,
+ 0,0,0,218,6,95,95,101,113,95,95,122,17,70,105,108,
+ 101,76,111,97,100,101,114,46,95,95,101,113,95,95,135,4,
+ 0,0,243,44,0,0,0,128,0,216,16,20,151,14,145,14,
+ 160,37,167,47,161,47,209,16,49,242,0,1,17,48,216,16,
+ 20,151,13,145,13,160,21,167,30,161,30,209,16,47,240,3,
+ 1,9,49,114,28,0,0,0,99,1,0,0,0,0,0,0,
+ 0,0,0,0,0,4,0,0,0,3,0,0,0,243,88,0,
+ 0,0,151,0,116,1,0,0,0,0,0,0,0,0,124,0,
+ 106,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,171,1,0,0,0,0,0,0,116,1,0,0,
+ 0,0,0,0,0,0,124,0,106,4,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,171,1,0,0,
+ 0,0,0,0,122,12,0,0,83,0,114,77,0,0,0,169,
+ 3,218,4,104,97,115,104,114,187,0,0,0,114,68,0,0,
+ 0,169,1,114,189,0,0,0,115,1,0,0,0,32,114,10,
+ 0,0,0,218,8,95,95,104,97,115,104,95,95,122,19,70,
+ 105,108,101,76,111,97,100,101,114,46,95,95,104,97,115,104,
+ 95,95,139,4,0,0,243,29,0,0,0,128,0,220,15,19,
+ 144,68,151,73,145,73,139,127,164,20,160,100,167,105,161,105,
+ 163,31,209,15,48,208,8,48,114,28,0,0,0,99,2,0,
+ 0,0,0,0,0,0,0,0,0,0,3,0,0,0,3,0,
+ 0,0,243,42,0,0,0,149,1,151,0,116,0,0,0,0,
+ 0,0,0,0,0,116,2,0,0,0,0,0,0,0,0,124,
+ 0,141,11,0,0,124,1,171,1,0,0,0,0,0,0,83,
+ 0,41,1,122,100,76,111,97,100,32,97,32,109,111,100,117,
+ 108,101,32,102,114,111,109,32,97,32,102,105,108,101,46,10,
+ 10,32,32,32,32,32,32,32,32,84,104,105,115,32,109,101,
+ 116,104,111,100,32,105,115,32,100,101,112,114,101,99,97,116,
+ 101,100,46,32,32,85,115,101,32,101,120,101,99,95,109,111,
+ 100,117,108,101,40,41,32,105,110,115,116,101,97,100,46,10,
+ 10,32,32,32,32,32,32,32,32,41,3,218,5,115,117,112,
+ 101,114,114,119,1,0,0,114,84,1,0,0,41,3,114,189,
+ 0,0,0,114,42,1,0,0,114,123,1,0,0,115,3,0,
+ 0,0,32,32,128,114,10,0,0,0,114,84,1,0,0,122,
+ 22,70,105,108,101,76,111,97,100,101,114,46,108,111,97,100,
+ 95,109,111,100,117,108,101,142,4,0,0,115,23,0,0,0,
+ 248,128,0,244,20,0,16,21,148,90,160,20,209,15,50,176,
+ 56,211,15,60,208,8,60,114,28,0,0,0,99,2,0,0,
+ 0,0,0,0,0,0,0,0,0,1,0,0,0,3,0,0,
+ 0,243,26,0,0,0,151,0,124,0,106,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,0,
+ 169,1,122,58,82,101,116,117,114,110,32,116,104,101,32,112,
+ 97,116,104,32,116,111,32,116,104,101,32,115,111,117,114,99,
+ 101,32,102,105,108,101,32,97,115,32,102,111,117,110,100,32,
+ 98,121,32,116,104,101,32,102,105,110,100,101,114,46,114,84,
+ 0,0,0,114,83,1,0,0,115,2,0,0,0,32,32,114,
+ 10,0,0,0,114,7,1,0,0,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,154,4,0,0,243,14,0,0,0,128,0,240,6,0,
+ 16,20,143,121,137,121,208,8,24,114,28,0,0,0,99,2,
+ 0,0,0,0,0,0,0,0,0,0,0,6,0,0,0,3,
+ 0,0,0,243,46,1,0,0,151,0,116,1,0,0,0,0,
+ 0,0,0,0,124,0,116,2,0,0,0,0,0,0,0,0,
+ 116,4,0,0,0,0,0,0,0,0,102,2,171,2,0,0,
+ 0,0,0,0,114,56,116,7,0,0,0,0,0,0,0,0,
+ 106,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,116,11,0,0,0,0,0,0,0,0,124,1,
+ 171,1,0,0,0,0,0,0,171,1,0,0,0,0,0,0,
+ 53,0,125,2,124,2,106,13,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,171,0,0,0,0,0,
+ 0,0,99,2,100,1,100,1,100,1,171,2,0,0,0,0,
+ 0,0,1,0,83,0,116,7,0,0,0,0,0,0,0,0,
+ 106,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,124,1,100,2,171,2,0,0,0,0,0,0,
+ 53,0,125,2,124,2,106,13,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,171,0,0,0,0,0,
+ 0,0,99,2,100,1,100,1,100,1,171,2,0,0,0,0,
+ 0,0,1,0,83,0,35,0,49,0,115,1,119,2,1,0,
+ 89,0,1,0,1,0,121,1,120,3,89,0,119,1,35,0,
+ 49,0,115,1,119,2,1,0,89,0,1,0,1,0,121,1,
+ 120,3,89,0,119,1,41,3,122,39,82,101,116,117,114,110,
+ 32,116,104,101,32,100,97,116,97,32,102,114,111,109,32,112,
+ 97,116,104,32,97,115,32,114,97,119,32,98,121,116,101,115,
+ 46,78,218,1,114,41,8,114,232,0,0,0,114,86,1,0,
+ 0,218,19,69,120,116,101,110,115,105,111,110,70,105,108,101,
+ 76,111,97,100,101,114,114,114,0,0,0,218,9,111,112,101,
+ 110,95,99,111,100,101,114,136,0,0,0,218,4,114,101,97,
+ 100,114,115,0,0,0,41,3,114,189,0,0,0,114,68,0,
+ 0,0,114,120,0,0,0,115,3,0,0,0,32,32,32,114,
+ 10,0,0,0,114,98,1,0,0,122,19,70,105,108,101,76,
+ 111,97,100,101,114,46,103,101,116,95,100,97,116,97,159,4,
+ 0,0,115,124,0,0,0,128,0,228,11,21,144,100,156,92,
+ 212,43,62,208,28,63,212,11,64,220,17,20,151,29,145,29,
+ 156,115,160,52,155,121,211,17,41,240,0,1,13,35,168,84,
+ 216,23,27,151,121,145,121,147,123,247,3,1,13,35,241,0,
+ 1,13,35,244,6,0,18,21,151,26,145,26,152,68,160,35,
+ 211,17,38,240,0,1,13,35,168,36,216,23,27,151,121,145,
+ 121,147,123,247,3,1,13,35,241,0,1,13,35,247,7,1,
+ 13,35,240,0,1,13,35,250,247,6,1,13,35,240,0,1,
+ 13,35,250,115,23,0,0,0,181,16,65,63,3,193,37,16,
+ 66,11,3,193,63,5,66,8,7,194,11,5,66,20,7,99,
+ 2,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,
+ 3,0,0,0,243,30,0,0,0,151,0,100,1,100,2,108,
+ 0,109,1,125,2,1,0,2,0,124,2,124,0,171,1,0,
+ 0,0,0,0,0,83,0,41,3,78,114,1,0,0,0,41,
+ 1,218,10,70,105,108,101,82,101,97,100,101,114,41,2,218,
+ 17,105,109,112,111,114,116,108,105,98,46,114,101,97,100,101,
+ 114,115,114,145,1,0,0,41,3,114,189,0,0,0,114,79,
+ 1,0,0,114,145,1,0,0,115,3,0,0,0,32,32,32,
+ 114,10,0,0,0,218,19,103,101,116,95,114,101,115,111,117,
+ 114,99,101,95,114,101,97,100,101,114,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,168,4,0,0,115,16,
+ 0,0,0,128,0,229,8,48,217,15,25,152,36,211,15,31,
+ 208,8,31,114,28,0,0,0,41,13,114,196,0,0,0,114,
+ 195,0,0,0,114,197,0,0,0,114,198,0,0,0,114,67,
+ 1,0,0,114,126,1,0,0,114,132,1,0,0,114,208,0,
+ 0,0,114,84,1,0,0,114,7,1,0,0,114,98,1,0,
+ 0,114,147,1,0,0,218,13,95,95,99,108,97,115,115,99,
+ 101,108,108,95,95,41,1,114,123,1,0,0,115,1,0,0,
+ 0,64,114,10,0,0,0,114,119,1,0,0,114,119,1,0,
+ 0,124,4,0,0,115,88,0,0,0,248,132,0,241,4,1,
+ 5,34,242,6,4,5,25,242,12,2,5,49,242,8,1,5,
+ 49,240,6,0,6,17,243,2,9,5,61,243,3,0,6,17,
+ 240,2,9,5,61,240,22,0,6,17,241,2,2,5,25,243,
+ 3,0,6,17,240,2,2,5,25,242,8,7,5,35,240,18,
+ 0,6,17,241,2,2,5,32,243,3,0,6,17,244,2,2,
+ 5,32,114,28,0,0,0,114,119,1,0,0,99,0,0,0,
+ 0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,
+ 0,243,40,0,0,0,151,0,101,0,90,1,100,0,90,2,
+ 100,1,90,3,100,2,132,0,90,4,100,3,132,0,90,5,
+ 100,4,100,5,156,1,100,6,132,2,90,6,121,7,41,8,
+ 218,16,83,111,117,114,99,101,70,105,108,101,76,111,97,100,
+ 101,114,122,62,67,111,110,99,114,101,116,101,32,105,109,112,
+ 108,101,109,101,110,116,97,116,105,111,110,32,111,102,32,83,
+ 111,117,114,99,101,76,111,97,100,101,114,32,117,115,105,110,
+ 103,32,116,104,101,32,102,105,108,101,32,115,121,115,116,101,
+ 109,46,99,2,0,0,0,0,0,0,0,0,0,0,0,3,
+ 0,0,0,3,0,0,0,243,74,0,0,0,151,0,116,1,
+ 0,0,0,0,0,0,0,0,124,1,171,1,0,0,0,0,
+ 0,0,125,2,124,2,106,2,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,124,2,106,4,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 100,1,156,2,83,0,41,2,122,33,82,101,116,117,114,110,
+ 32,116,104,101,32,109,101,116,97,100,97,116,97,32,102,111,
+ 114,32,116,104,101,32,112,97,116,104,46,41,2,114,242,0,
+ 0,0,114,108,1,0,0,41,3,114,85,0,0,0,218,8,
+ 115,116,95,109,116,105,109,101,218,7,115,116,95,115,105,122,
+ 101,41,3,114,189,0,0,0,114,68,0,0,0,114,115,1,
+ 0,0,115,3,0,0,0,32,32,32,114,10,0,0,0,114,
+ 91,1,0,0,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,178,4,0,0,115,31,0,0,0,128,0,228,13,23,152,
+ 4,211,13,29,136,2,216,25,27,159,27,153,27,168,98,175,
+ 106,169,106,209,15,57,208,8,57,114,28,0,0,0,99,4,
+ 0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,3,
+ 0,0,0,243,64,0,0,0,151,0,116,1,0,0,0,0,
+ 0,0,0,0,124,1,171,1,0,0,0,0,0,0,125,4,
+ 124,0,106,3,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,124,2,124,3,124,4,172,1,171,3,
+ 0,0,0,0,0,0,83,0,41,2,78,169,1,218,5,95,
+ 109,111,100,101,41,2,114,183,0,0,0,114,93,1,0,0,
+ 41,5,114,189,0,0,0,114,176,0,0,0,114,173,0,0,
+ 0,114,48,0,0,0,114,89,0,0,0,115,5,0,0,0,
+ 32,32,32,32,32,114,10,0,0,0,114,95,1,0,0,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,183,4,0,0,115,33,0,0,0,128,0,228,15,25,152,
+ 43,211,15,38,136,4,216,15,19,143,125,137,125,152,93,168,
+ 68,184,4,136,125,211,15,61,208,8,61,114,28,0,0,0,
+ 114,107,0,0,0,114,155,1,0,0,99,3,0,0,0,0,
+ 0,0,0,1,0,0,0,7,0,0,0,3,0,0,0,243,
+ 14,2,0,0,151,0,116,1,0,0,0,0,0,0,0,0,
+ 124,1,171,1,0,0,0,0,0,0,92,2,0,0,125,4,
+ 125,5,103,0,125,6,124,4,114,56,116,3,0,0,0,0,
+ 0,0,0,0,124,4,171,1,0,0,0,0,0,0,115,45,
+ 116,1,0,0,0,0,0,0,0,0,124,4,171,1,0,0,
+ 0,0,0,0,92,2,0,0,125,4,125,7,124,6,106,5,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,124,7,171,1,0,0,0,0,0,0,1,0,124,4,
+ 114,12,116,3,0,0,0,0,0,0,0,0,124,4,171,1,
+ 0,0,0,0,0,0,115,1,140,45,116,7,0,0,0,0,
+ 0,0,0,0,124,6,171,1,0,0,0,0,0,0,68,0,
+ 93,36,0,0,125,7,116,9,0,0,0,0,0,0,0,0,
+ 124,4,124,7,171,2,0,0,0,0,0,0,125,4,9,0,
+ 116,11,0,0,0,0,0,0,0,0,106,12,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,4,
+ 171,1,0,0,0,0,0,0,1,0,140,38,4,0,9,0,
+ 116,23,0,0,0,0,0,0,0,0,124,1,124,2,124,3,
+ 171,3,0,0,0,0,0,0,1,0,116,18,0,0,0,0,
+ 0,0,0,0,106,21,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,100,3,124,1,171,2,0,0,
+ 0,0,0,0,1,0,121,2,35,0,116,14,0,0,0,0,
+ 0,0,0,0,36,0,114,3,1,0,89,0,140,87,116,16,
+ 0,0,0,0,0,0,0,0,36,0,114,34,125,8,116,18,
+ 0,0,0,0,0,0,0,0,106,21,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,100,1,124,4,
+ 124,8,171,3,0,0,0,0,0,0,1,0,89,0,100,2,
+ 125,8,126,8,1,0,121,2,100,2,125,8,126,8,119,1,
+ 119,0,120,3,89,0,119,1,35,0,116,16,0,0,0,0,
+ 0,0,0,0,36,0,114,33,125,8,116,18,0,0,0,0,
+ 0,0,0,0,106,21,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,100,1,124,1,124,8,171,3,
+ 0,0,0,0,0,0,1,0,89,0,100,2,125,8,126,8,
+ 121,2,100,2,125,8,126,8,119,1,119,0,120,3,89,0,
+ 119,1,41,4,122,27,87,114,105,116,101,32,98,121,116,101,
+ 115,32,100,97,116,97,32,116,111,32,97,32,102,105,108,101,
+ 46,122,27,99,111,117,108,100,32,110,111,116,32,99,114,101,
+ 97,116,101,32,123,33,114,125,58,32,123,33,114,125,78,122,
+ 12,99,114,101,97,116,101,100,32,123,33,114,125,41,12,114,
+ 81,0,0,0,114,96,0,0,0,114,64,0,0,0,218,8,
+ 114,101,118,101,114,115,101,100,114,72,0,0,0,114,23,0,
+ 0,0,218,5,109,107,100,105,114,218,15,70,105,108,101,69,
+ 120,105,115,116,115,69,114,114,111,114,114,87,0,0,0,114,
+ 207,0,0,0,114,215,0,0,0,114,121,0,0,0,41,9,
+ 114,189,0,0,0,114,68,0,0,0,114,48,0,0,0,114,
+ 156,1,0,0,218,6,112,97,114,101,110,116,114,151,0,0,
+ 0,114,66,0,0,0,114,74,0,0,0,114,31,1,0,0,
+ 115,9,0,0,0,32,32,32,32,32,32,32,32,32,114,10,
+ 0,0,0,114,93,1,0,0,122,25,83,111,117,114,99,101,
+ 70,105,108,101,76,111,97,100,101,114,46,115,101,116,95,100,
+ 97,116,97,188,4,0,0,115,0,1,0,0,128,0,228,27,
+ 38,160,116,211,27,44,209,8,24,136,6,144,8,216,21,23,
+ 136,10,225,14,20,156,91,168,22,212,29,48,220,27,38,160,
+ 118,211,27,46,137,76,136,70,144,68,216,12,22,215,12,29,
+ 209,12,29,152,100,212,12,35,241,5,0,15,21,156,91,168,
+ 22,213,29,48,244,8,0,21,29,152,90,211,20,40,242,0,
+ 12,9,23,136,68,220,21,31,160,6,168,4,211,21,45,136,
+ 70,240,2,10,13,23,220,16,19,151,9,145,9,152,38,213,
+ 16,33,240,7,12,9,23,240,26,6,9,45,220,12,25,152,
+ 36,160,4,160,101,212,12,44,220,12,22,215,12,39,209,12,
+ 39,168,14,184,4,213,12,61,248,244,23,0,20,35,242,0,
+ 2,13,25,225,16,24,220,19,26,242,0,5,13,23,244,6,
+ 0,17,27,215,16,43,209,16,43,208,44,73,216,44,50,176,
+ 67,244,3,1,17,57,229,16,22,251,240,11,5,13,23,251,
+ 244,18,0,16,23,242,0,3,9,45,228,12,22,215,12,39,
+ 209,12,39,208,40,69,192,116,216,40,43,247,3,1,13,45,
+ 241,0,1,13,45,251,240,5,3,9,45,250,115,54,0,0,
+ 0,193,38,21,66,34,2,193,62,35,67,26,0,194,34,9,
+ 67,23,5,194,45,8,67,23,5,194,53,23,67,18,5,195,
+ 18,5,67,23,5,195,26,9,68,4,3,195,35,23,67,63,
+ 3,195,63,5,68,4,3,78,41,7,114,196,0,0,0,114,
+ 195,0,0,0,114,197,0,0,0,114,198,0,0,0,114,91,
+ 1,0,0,114,95,1,0,0,114,93,1,0,0,114,30,0,
+ 0,0,114,28,0,0,0,114,10,0,0,0,114,150,1,0,
+ 0,114,150,1,0,0,174,4,0,0,115,25,0,0,0,132,
+ 0,225,4,72,242,4,3,5,58,242,10,3,5,62,240,10,
+ 0,45,50,245,0,28,5,45,114,28,0,0,0,114,150,1,
+ 0,0,99,0,0,0,0,0,0,0,0,0,0,0,0,1,
+ 0,0,0,0,0,0,0,243,28,0,0,0,151,0,101,0,
+ 90,1,100,0,90,2,100,1,90,3,100,2,132,0,90,4,
+ 100,3,132,0,90,5,121,4,41,5,218,20,83,111,117,114,
+ 99,101,108,101,115,115,70,105,108,101,76,111,97,100,101,114,
+ 122,45,76,111,97,100,101,114,32,119,104,105,99,104,32,104,
+ 97,110,100,108,101,115,32,115,111,117,114,99,101,108,101,115,
+ 115,32,102,105,108,101,32,105,109,112,111,114,116,115,46,99,
+ 2,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,
+ 3,0,0,0,243,158,0,0,0,151,0,124,0,106,1,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,124,1,171,1,0,0,0,0,0,0,125,2,124,0,106,
+ 3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,124,2,171,1,0,0,0,0,0,0,125,3,124,
+ 1,124,2,100,1,156,2,125,4,116,5,0,0,0,0,0,
+ 0,0,0,124,3,124,1,124,4,171,3,0,0,0,0,0,
+ 0,1,0,116,7,0,0,0,0,0,0,0,0,116,9,0,
+ 0,0,0,0,0,0,0,124,3,171,1,0,0,0,0,0,
+ 0,100,2,100,0,26,0,124,1,124,2,172,3,171,3,0,
+ 0,0,0,0,0,83,0,41,4,78,114,229,0,0,0,114,
+ 211,0,0,0,41,2,114,187,0,0,0,114,173,0,0,0,
+ 41,5,114,7,1,0,0,114,98,1,0,0,114,219,0,0,
+ 0,114,237,0,0,0,114,109,1,0,0,41,5,114,189,0,
+ 0,0,114,42,1,0,0,114,68,0,0,0,114,48,0,0,
+ 0,114,217,0,0,0,115,5,0,0,0,32,32,32,32,32,
+ 114,10,0,0,0,114,76,1,0,0,122,29,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,99,111,100,101,223,4,0,0,115,95,0,
+ 0,0,128,0,216,15,19,215,15,32,209,15,32,160,24,211,
+ 15,42,136,4,216,15,19,143,125,137,125,152,84,211,15,34,
+ 136,4,240,8,0,21,29,216,20,24,241,5,3,23,10,136,
+ 11,244,8,0,9,22,144,100,152,72,160,107,212,8,50,220,
+ 15,32,220,12,22,144,116,211,12,28,152,82,152,83,208,12,
+ 33,216,17,25,216,26,30,244,7,4,16,10,240,0,4,9,
+ 10,114,28,0,0,0,99,2,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,3,0,0,0,243,4,0,0,0,
+ 151,0,121,1,41,2,122,39,82,101,116,117,114,110,32,78,
+ 111,110,101,32,97,115,32,116,104,101,114,101,32,105,115,32,
+ 110,111,32,115,111,117,114,99,101,32,99,111,100,101,46,78,
+ 114,30,0,0,0,114,83,1,0,0,115,2,0,0,0,32,
+ 32,114,10,0,0,0,114,99,1,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,239,4,0,0,
+ 243,5,0,0,0,128,0,224,15,19,114,28,0,0,0,78,
+ 41,6,114,196,0,0,0,114,195,0,0,0,114,197,0,0,
+ 0,114,198,0,0,0,114,76,1,0,0,114,99,1,0,0,
+ 114,30,0,0,0,114,28,0,0,0,114,10,0,0,0,114,
+ 163,1,0,0,114,163,1,0,0,219,4,0,0,115,15,0,
+ 0,0,132,0,225,4,55,242,4,14,5,10,243,32,2,5,
+ 20,114,28,0,0,0,114,163,1,0,0,99,0,0,0,0,
+ 0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,
+ 243,80,0,0,0,151,0,101,0,90,1,100,0,90,2,100,
+ 1,90,3,100,2,132,0,90,4,100,3,132,0,90,5,100,
+ 4,132,0,90,6,100,5,132,0,90,7,100,6,132,0,90,
+ 8,100,7,132,0,90,9,100,8,132,0,90,10,100,9,132,
+ 0,90,11,101,12,100,10,132,0,171,0,0,0,0,0,0,
+ 0,90,13,121,11,41,12,114,141,1,0,0,122,93,76,111,
+ 97,100,101,114,32,102,111,114,32,101,120,116,101,110,115,105,
+ 111,110,32,109,111,100,117,108,101,115,46,10,10,32,32,32,
+ 32,84,104,101,32,99,111,110,115,116,114,117,99,116,111,114,
+ 32,105,115,32,100,101,115,105,103,110,101,100,32,116,111,32,
+ 119,111,114,107,32,119,105,116,104,32,70,105,108,101,70,105,
+ 110,100,101,114,46,10,10,32,32,32,32,99,3,0,0,0,
+ 0,0,0,0,0,0,0,0,2,0,0,0,3,0,0,0,
+ 243,32,0,0,0,151,0,124,1,124,0,95,0,0,0,0,
+ 0,0,0,0,0,124,2,124,0,95,1,0,0,0,0,0,
+ 0,0,0,121,0,114,77,0,0,0,114,229,0,0,0,41,
+ 3,114,189,0,0,0,114,187,0,0,0,114,68,0,0,0,
+ 115,3,0,0,0,32,32,32,114,10,0,0,0,114,67,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,105,110,105,116,95,95,
+ 252,4,0,0,115,16,0,0,0,128,0,216,20,24,136,4,
+ 140,9,216,20,24,136,4,141,9,114,28,0,0,0,99,2,
+ 0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,3,
+ 0,0,0,243,106,0,0,0,151,0,124,0,106,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 124,1,106,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,107,40,0,0,120,1,114,25,1,0,
+ 124,0,106,2,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,124,1,106,2,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,107,40,0,0,
+ 83,0,114,77,0,0,0,114,122,1,0,0,114,124,1,0,
+ 0,115,2,0,0,0,32,32,114,10,0,0,0,114,126,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,0,5,
+ 0,0,114,127,1,0,0,114,28,0,0,0,99,1,0,0,
+ 0,0,0,0,0,0,0,0,0,4,0,0,0,3,0,0,
+ 0,243,88,0,0,0,151,0,116,1,0,0,0,0,0,0,
+ 0,0,124,0,106,2,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,171,1,0,0,0,0,0,0,
+ 116,1,0,0,0,0,0,0,0,0,124,0,106,4,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 171,1,0,0,0,0,0,0,122,12,0,0,83,0,114,77,
+ 0,0,0,114,129,1,0,0,114,131,1,0,0,115,1,0,
+ 0,0,32,114,10,0,0,0,114,132,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,4,5,0,0,114,
+ 133,1,0,0,114,28,0,0,0,99,2,0,0,0,0,0,
+ 0,0,0,0,0,0,5,0,0,0,3,0,0,0,243,164,
+ 0,0,0,151,0,116,0,0,0,0,0,0,0,0,0,106,
+ 3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,116,4,0,0,0,0,0,0,0,0,106,6,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,124,1,171,2,0,0,0,0,0,0,125,2,116,0,0,
+ 0,0,0,0,0,0,0,106,9,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,100,1,124,1,106,
+ 10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,124,0,106,12,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,171,3,0,0,0,0,0,
+ 0,1,0,124,2,83,0,41,2,122,40,67,114,101,97,116,
+ 101,32,97,110,32,117,110,105,110,105,116,105,97,108,105,122,
+ 101,100,32,101,120,116,101,110,115,105,111,110,32,109,111,100,
+ 117,108,101,122,38,101,120,116,101,110,115,105,111,110,32,109,
+ 111,100,117,108,101,32,123,33,114,125,32,108,111,97,100,101,
+ 100,32,102,114,111,109,32,123,33,114,125,41,7,114,207,0,
+ 0,0,114,77,1,0,0,114,234,0,0,0,218,14,99,114,
+ 101,97,116,101,95,100,121,110,97,109,105,99,114,215,0,0,
+ 0,114,187,0,0,0,114,68,0,0,0,41,3,114,189,0,
+ 0,0,114,16,1,0,0,114,79,1,0,0,115,3,0,0,
+ 0,32,32,32,114,10,0,0,0,114,73,1,0,0,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,116,101,95,109,111,100,117,108,
+ 101,7,5,0,0,115,64,0,0,0,128,0,228,17,27,215,
+ 17,53,209,17,53,220,12,16,215,12,31,209,12,31,160,20,
+ 243,3,1,18,39,136,6,228,8,18,215,8,35,209,8,35,
+ 208,36,76,216,25,29,159,25,153,25,160,68,167,73,161,73,
+ 244,3,1,9,47,224,15,21,136,13,114,28,0,0,0,99,
+ 2,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,
+ 3,0,0,0,243,162,0,0,0,151,0,116,0,0,0,0,
+ 0,0,0,0,0,106,3,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,116,4,0,0,0,0,0,
+ 0,0,0,106,6,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,124,1,171,2,0,0,0,0,0,
+ 0,1,0,116,0,0,0,0,0,0,0,0,0,106,9,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,100,1,124,0,106,10,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,124,0,106,12,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,
+ 3,0,0,0,0,0,0,1,0,121,2,41,3,122,30,73,
+ 110,105,116,105,97,108,105,122,101,32,97,110,32,101,120,116,
+ 101,110,115,105,111,110,32,109,111,100,117,108,101,122,40,101,
+ 120,116,101,110,115,105,111,110,32,109,111,100,117,108,101,32,
+ 123,33,114,125,32,101,120,101,99,117,116,101,100,32,102,114,
+ 111,109,32,123,33,114,125,78,41,7,114,207,0,0,0,114,
+ 77,1,0,0,114,234,0,0,0,218,12,101,120,101,99,95,
+ 100,121,110,97,109,105,99,114,215,0,0,0,114,187,0,0,
+ 0,114,68,0,0,0,169,2,114,189,0,0,0,114,79,1,
+ 0,0,115,2,0,0,0,32,32,114,10,0,0,0,114,80,
+ 1,0,0,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,15,5,0,0,115,54,0,0,0,128,0,228,
+ 8,18,215,8,44,209,8,44,172,84,215,45,62,209,45,62,
+ 192,6,212,8,71,220,8,18,215,8,35,209,8,35,208,36,
+ 78,216,25,29,159,25,153,25,160,68,167,73,161,73,245,3,
+ 1,9,47,114,28,0,0,0,99,2,0,0,0,0,0,0,
+ 0,0,0,0,0,4,0,0,0,3,0,0,0,243,100,0,
+ 0,0,135,2,151,0,116,1,0,0,0,0,0,0,0,0,
+ 124,0,106,2,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,171,1,0,0,0,0,0,0,100,1,
+ 25,0,0,0,138,2,116,5,0,0,0,0,0,0,0,0,
+ 136,2,102,1,100,2,132,8,116,6,0,0,0,0,0,0,
+ 0,0,68,0,171,0,0,0,0,0,0,0,171,1,0,0,
+ 0,0,0,0,83,0,41,3,122,49,82,101,116,117,114,110,
+ 32,84,114,117,101,32,105,102,32,116,104,101,32,101,120,116,
+ 101,110,115,105,111,110,32,109,111,100,117,108,101,32,105,115,
+ 32,97,32,112,97,99,107,97,103,101,46,114,6,0,0,0,
+ 99,1,0,0,0,0,0,0,0,0,0,0,0,4,0,0,
+ 0,51,0,0,0,243,46,0,0,0,149,1,75,0,1,0,
+ 151,0,124,0,93,12,0,0,125,1,137,2,100,0,124,1,
+ 122,0,0,0,107,40,0,0,150,1,151,1,1,0,140,14,
+ 4,0,121,1,173,3,119,1,41,2,114,67,1,0,0,78,
+ 114,30,0,0,0,41,3,114,8,0,0,0,218,6,115,117,
+ 102,102,105,120,218,9,102,105,108,101,95,110,97,109,101,115,
+ 3,0,0,0,32,32,128,114,10,0,0,0,114,11,0,0,
+ 0,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,24,5,0,0,115,35,0,0,0,248,232,0,
+ 248,128,0,242,0,1,19,53,216,23,29,240,3,0,20,29,
+ 160,10,168,86,209,32,51,213,19,51,241,0,1,19,53,249,
+ 115,4,0,0,0,131,18,21,1,41,4,114,81,0,0,0,
+ 114,68,0,0,0,218,3,97,110,121,114,61,1,0,0,41,
+ 3,114,189,0,0,0,114,42,1,0,0,114,179,1,0,0,
+ 115,3,0,0,0,32,32,64,114,10,0,0,0,114,10,1,
+ 0,0,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,21,5,0,0,115,48,0,0,0,248,128,0,228,20,
+ 31,160,4,167,9,161,9,211,20,42,168,49,209,20,45,136,
+ 9,220,15,18,243,0,1,19,53,220,33,51,244,3,1,19,
+ 53,243,0,1,16,53,240,0,1,9,53,114,28,0,0,0,
+ 99,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,3,0,0,0,243,4,0,0,0,151,0,121,1,41,2,
+ 122,63,82,101,116,117,114,110,32,78,111,110,101,32,97,115,
+ 32,97,110,32,101,120,116,101,110,115,105,111,110,32,109,111,
+ 100,117,108,101,32,99,97,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,30,0,0,0,114,83,1,0,0,115,2,0,0,
+ 0,32,32,114,10,0,0,0,114,76,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,103,101,116,95,99,111,100,101,27,5,0,0,114,
+ 166,1,0,0,114,28,0,0,0,99,2,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,3,0,0,0,243,4,
+ 0,0,0,151,0,121,1,41,2,122,53,82,101,116,117,114,
+ 110,32,78,111,110,101,32,97,115,32,101,120,116,101,110,115,
+ 105,111,110,32,109,111,100,117,108,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,30,0,0,0,114,83,1,0,0,115,2,0,0,0,
+ 32,32,114,10,0,0,0,114,99,1,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,31,5,0,0,
+ 114,166,1,0,0,114,28,0,0,0,99,2,0,0,0,0,
+ 0,0,0,0,0,0,0,1,0,0,0,3,0,0,0,243,
+ 26,0,0,0,151,0,124,0,106,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,83,0,114,137,
+ 1,0,0,114,84,0,0,0,114,83,1,0,0,115,2,0,
+ 0,0,32,32,114,10,0,0,0,114,7,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,
+ 35,5,0,0,114,138,1,0,0,114,28,0,0,0,78,41,
+ 14,114,196,0,0,0,114,195,0,0,0,114,197,0,0,0,
+ 114,198,0,0,0,114,67,1,0,0,114,126,1,0,0,114,
+ 132,1,0,0,114,73,1,0,0,114,80,1,0,0,114,10,
+ 1,0,0,114,76,1,0,0,114,99,1,0,0,114,208,0,
+ 0,0,114,7,1,0,0,114,30,0,0,0,114,28,0,0,
+ 0,114,10,0,0,0,114,141,1,0,0,114,141,1,0,0,
+ 244,4,0,0,115,67,0,0,0,132,0,241,4,4,5,8,
+ 242,12,2,5,25,242,8,2,5,49,242,8,1,5,49,242,
+ 6,6,5,22,242,16,4,5,47,242,12,4,5,53,242,12,
+ 2,5,20,242,8,2,5,20,240,8,0,6,17,241,2,2,
+ 5,25,243,3,0,6,17,241,2,2,5,25,114,28,0,0,
+ 0,114,141,1,0,0,99,0,0,0,0,0,0,0,0,0,
+ 0,0,0,1,0,0,0,0,0,0,0,243,86,0,0,0,
+ 151,0,101,0,90,1,100,0,90,2,100,1,90,3,100,2,
+ 90,4,100,3,132,0,90,5,100,4,132,0,90,6,100,5,
+ 132,0,90,7,100,6,132,0,90,8,100,7,132,0,90,9,
+ 100,8,132,0,90,10,100,9,132,0,90,11,100,10,132,0,
+ 90,12,100,11,132,0,90,13,100,12,132,0,90,14,100,13,
+ 132,0,90,15,121,14,41,15,218,14,95,78,97,109,101,115,
+ 112,97,99,101,80,97,116,104,97,38,1,0,0,82,101,112,
+ 114,101,115,101,110,116,115,32,97,32,110,97,109,101,115,112,
+ 97,99,101,32,112,97,99,107,97,103,101,39,115,32,112,97,
+ 116,104,46,32,32,73,116,32,117,115,101,115,32,116,104,101,
+ 32,109,111,100,117,108,101,32,110,97,109,101,10,32,32,32,
+ 32,116,111,32,102,105,110,100,32,105,116,115,32,112,97,114,
+ 101,110,116,32,109,111,100,117,108,101,44,32,97,110,100,32,
+ 102,114,111,109,32,116,104,101,114,101,32,105,116,32,108,111,
+ 111,107,115,32,117,112,32,116,104,101,32,112,97,114,101,110,
+ 116,39,115,10,32,32,32,32,95,95,112,97,116,104,95,95,
+ 46,32,32,87,104,101,110,32,116,104,105,115,32,99,104,97,
+ 110,103,101,115,44,32,116,104,101,32,109,111,100,117,108,101,
+ 39,115,32,111,119,110,32,112,97,116,104,32,105,115,32,114,
+ 101,99,111,109,112,117,116,101,100,44,10,32,32,32,32,117,
+ 115,105,110,103,32,112,97,116,104,95,102,105,110,100,101,114,
+ 46,32,32,70,111,114,32,116,111,112,45,108,101,118,101,108,
+ 32,109,111,100,117,108,101,115,44,32,116,104,101,32,112,97,
+ 114,101,110,116,32,109,111,100,117,108,101,39,115,32,112,97,
+ 116,104,10,32,32,32,32,105,115,32,115,121,115,46,112,97,
+ 116,104,46,114,1,0,0,0,99,4,0,0,0,0,0,0,
+ 0,0,0,0,0,4,0,0,0,3,0,0,0,243,140,0,
+ 0,0,151,0,124,1,124,0,95,0,0,0,0,0,0,0,
+ 0,0,124,2,124,0,95,1,0,0,0,0,0,0,0,0,
+ 116,5,0,0,0,0,0,0,0,0,124,0,106,7,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 171,0,0,0,0,0,0,0,171,1,0,0,0,0,0,0,
+ 124,0,95,4,0,0,0,0,0,0,0,0,124,0,106,10,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,124,0,95,6,0,0,0,0,0,0,0,0,124,3,
+ 124,0,95,7,0,0,0,0,0,0,0,0,121,0,114,77,
+ 0,0,0,41,8,218,5,95,110,97,109,101,218,5,95,112,
+ 97,116,104,114,179,0,0,0,218,16,95,103,101,116,95,112,
+ 97,114,101,110,116,95,112,97,116,104,218,17,95,108,97,115,
+ 116,95,112,97,114,101,110,116,95,112,97,116,104,218,6,95,
+ 101,112,111,99,104,218,11,95,108,97,115,116,95,101,112,111,
+ 99,104,218,12,95,112,97,116,104,95,102,105,110,100,101,114,
+ 169,4,114,189,0,0,0,114,187,0,0,0,114,68,0,0,
+ 0,218,11,112,97,116,104,95,102,105,110,100,101,114,115,4,
+ 0,0,0,32,32,32,32,114,10,0,0,0,114,67,1,0,
+ 0,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,52,5,0,0,115,58,
+ 0,0,0,128,0,216,21,25,136,4,140,10,216,21,25,136,
+ 4,140,10,220,33,38,160,116,215,39,60,209,39,60,211,39,
+ 62,211,33,63,136,4,212,8,30,216,27,31,159,59,153,59,
+ 136,4,212,8,24,216,28,39,136,4,213,8,25,114,28,0,
+ 0,0,99,1,0,0,0,0,0,0,0,0,0,0,0,3,
+ 0,0,0,3,0,0,0,243,84,0,0,0,151,0,124,0,
+ 106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,106,3,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,100,1,171,1,0,0,0,0,
+ 0,0,92,3,0,0,125,1,125,2,125,3,124,2,100,2,
+ 107,40,0,0,114,1,121,3,124,1,100,4,102,2,83,0,
+ 41,5,122,62,82,101,116,117,114,110,115,32,97,32,116,117,
+ 112,108,101,32,111,102,32,40,112,97,114,101,110,116,45,109,
+ 111,100,117,108,101,45,110,97,109,101,44,32,112,97,114,101,
+ 110,116,45,112,97,116,104,45,97,116,116,114,45,110,97,109,
+ 101,41,114,103,0,0,0,114,12,0,0,0,41,2,114,20,
+ 0,0,0,114,68,0,0,0,218,8,95,95,112,97,116,104,
+ 95,95,41,2,114,187,1,0,0,114,131,0,0,0,41,4,
+ 114,189,0,0,0,114,161,1,0,0,218,3,100,111,116,218,
+ 2,109,101,115,4,0,0,0,32,32,32,32,114,10,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,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,59,5,0,0,115,51,0,0,0,128,0,224,26,30,
+ 159,42,153,42,215,26,47,209,26,47,176,3,211,26,52,137,
+ 15,136,6,144,3,144,82,216,11,14,144,34,138,57,224,19,
+ 32,240,6,0,16,22,144,122,208,15,33,208,8,33,114,28,
+ 0,0,0,99,1,0,0,0,0,0,0,0,0,0,0,0,
+ 4,0,0,0,3,0,0,0,243,98,0,0,0,151,0,124,
+ 0,106,1,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,171,0,0,0,0,0,0,0,92,2,0,
+ 0,125,1,125,2,116,3,0,0,0,0,0,0,0,0,116,
+ 4,0,0,0,0,0,0,0,0,106,6,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,124,1,25,
+ 0,0,0,124,2,171,2,0,0,0,0,0,0,83,0,114,
+ 77,0,0,0,41,4,114,200,1,0,0,114,201,0,0,0,
+ 114,20,0,0,0,218,7,109,111,100,117,108,101,115,41,3,
+ 114,189,0,0,0,218,18,112,97,114,101,110,116,95,109,111,
+ 100,117,108,101,95,110,97,109,101,218,14,112,97,116,104,95,
+ 97,116,116,114,95,110,97,109,101,115,3,0,0,0,32,32,
+ 32,114,10,0,0,0,114,189,1,0,0,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,69,5,0,0,
+ 115,45,0,0,0,128,0,216,45,49,215,45,73,209,45,73,
+ 211,45,75,209,8,42,208,8,26,152,78,220,15,22,148,115,
+ 151,123,145,123,208,35,53,209,23,54,184,14,211,15,71,208,
+ 8,71,114,28,0,0,0,99,1,0,0,0,0,0,0,0,
+ 0,0,0,0,4,0,0,0,3,0,0,0,243,90,1,0,
+ 0,151,0,116,1,0,0,0,0,0,0,0,0,124,0,106,
+ 3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,171,0,0,0,0,0,0,0,171,1,0,0,0,
+ 0,0,0,125,1,124,1,124,0,106,4,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,107,55,0,
+ 0,115,25,124,0,106,6,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,124,0,106,8,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,
+ 55,0,0,114,95,124,0,106,11,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,124,0,106,12,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,124,1,171,2,0,0,0,0,0,0,125,2,124,2,129,
+ 41,124,2,106,14,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,128,29,124,2,106,16,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,
+ 17,124,2,106,16,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,124,0,95,9,0,0,0,0,0,
+ 0,0,0,124,1,124,0,95,2,0,0,0,0,0,0,0,
+ 0,124,0,106,6,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,124,0,95,4,0,0,0,0,0,
+ 0,0,0,124,0,106,18,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,83,0,114,77,0,0,0,
+ 41,10,114,179,0,0,0,114,189,1,0,0,114,190,1,0,
+ 0,114,191,1,0,0,114,192,1,0,0,114,193,1,0,0,
+ 114,187,1,0,0,114,4,1,0,0,114,5,1,0,0,114,
+ 188,1,0,0,41,3,114,189,0,0,0,218,11,112,97,114,
+ 101,110,116,95,112,97,116,104,114,16,1,0,0,115,3,0,
+ 0,0,32,32,32,114,10,0,0,0,218,12,95,114,101,99,
+ 97,108,99,117,108,97,116,101,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,73,5,0,0,115,143,0,0,0,128,0,
+ 228,22,27,152,68,215,28,49,209,28,49,211,28,51,211,22,
+ 52,136,11,216,11,22,152,36,215,26,48,209,26,48,210,11,
+ 48,176,68,183,75,177,75,192,52,215,67,83,209,67,83,210,
+ 52,83,216,19,23,215,19,36,209,19,36,160,84,167,90,161,
+ 90,176,27,211,19,61,136,68,240,6,0,16,20,208,15,31,
+ 160,68,167,75,161,75,208,36,55,216,19,23,215,19,50,210,
+ 19,50,216,33,37,215,33,64,209,33,64,144,68,148,74,216,
+ 37,48,136,68,212,12,34,216,31,35,159,123,153,123,136,68,
+ 212,12,28,216,15,19,143,122,137,122,208,8,25,114,28,0,
+ 0,0,99,1,0,0,0,0,0,0,0,0,0,0,0,4,
+ 0,0,0,3,0,0,0,243,52,0,0,0,151,0,116,1,
+ 0,0,0,0,0,0,0,0,124,0,106,3,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,0,
+ 0,0,0,0,0,0,171,1,0,0,0,0,0,0,83,0,
+ 114,77,0,0,0,41,2,218,4,105,116,101,114,114,207,1,
+ 0,0,114,131,1,0,0,115,1,0,0,0,32,114,10,0,
+ 0,0,218,8,95,95,105,116,101,114,95,95,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,87,5,0,0,115,22,0,0,0,128,0,
+ 220,15,19,144,68,215,20,37,209,20,37,211,20,39,211,15,
+ 40,208,8,40,114,28,0,0,0,99,2,0,0,0,0,0,
+ 0,0,0,0,0,0,2,0,0,0,3,0,0,0,243,40,
+ 0,0,0,151,0,124,0,106,1,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,171,0,0,0,0,
+ 0,0,0,124,1,25,0,0,0,83,0,114,77,0,0,0,
+ 169,1,114,207,1,0,0,41,2,114,189,0,0,0,218,5,
+ 105,110,100,101,120,115,2,0,0,0,32,32,114,10,0,0,
+ 0,218,11,95,95,103,101,116,105,116,101,109,95,95,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,90,5,0,0,115,22,
+ 0,0,0,128,0,216,15,19,215,15,32,209,15,32,211,15,
+ 34,160,53,209,15,41,208,8,41,114,28,0,0,0,99,3,
+ 0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,3,
+ 0,0,0,243,34,0,0,0,151,0,124,2,124,0,106,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,124,1,60,0,0,0,121,0,114,77,0,0,0,169,
+ 1,114,188,1,0,0,41,3,114,189,0,0,0,114,213,1,
+ 0,0,114,68,0,0,0,115,3,0,0,0,32,32,32,114,
+ 10,0,0,0,218,11,95,95,115,101,116,105,116,101,109,95,
+ 95,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,93,5,0,
+ 0,115,16,0,0,0,128,0,216,28,32,136,4,143,10,137,
+ 10,144,53,210,8,25,114,28,0,0,0,99,1,0,0,0,
+ 0,0,0,0,0,0,0,0,4,0,0,0,3,0,0,0,
+ 243,52,0,0,0,151,0,116,1,0,0,0,0,0,0,0,
+ 0,124,0,106,3,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,171,0,0,0,0,0,0,0,171,
+ 1,0,0,0,0,0,0,83,0,114,77,0,0,0,41,2,
+ 114,7,0,0,0,114,207,1,0,0,114,131,1,0,0,115,
+ 1,0,0,0,32,114,10,0,0,0,218,7,95,95,108,101,
+ 110,95,95,122,22,95,78,97,109,101,115,112,97,99,101,80,
+ 97,116,104,46,95,95,108,101,110,95,95,96,5,0,0,115,
+ 22,0,0,0,128,0,220,15,18,144,52,215,19,36,209,19,
+ 36,211,19,38,211,15,39,208,8,39,114,28,0,0,0,99,
+ 1,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,
+ 3,0,0,0,243,34,0,0,0,151,0,100,1,124,0,106,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,155,2,100,2,157,3,83,0,41,3,78,122,15,
+ 95,78,97,109,101,115,112,97,99,101,80,97,116,104,40,250,
+ 1,41,114,216,1,0,0,114,131,1,0,0,115,1,0,0,
+ 0,32,114,10,0,0,0,218,8,95,95,114,101,112,114,95,
+ 95,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,5,0,0,115,21,
+ 0,0,0,128,0,216,17,32,160,20,167,26,161,26,160,14,
+ 168,97,208,15,48,208,8,48,114,28,0,0,0,99,2,0,
+ 0,0,0,0,0,0,0,0,0,0,3,0,0,0,3,0,
+ 0,0,243,38,0,0,0,151,0,124,1,124,0,106,1,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,171,0,0,0,0,0,0,0,118,0,83,0,114,77,0,
+ 0,0,114,212,1,0,0,169,2,114,189,0,0,0,218,4,
+ 105,116,101,109,115,2,0,0,0,32,32,114,10,0,0,0,
+ 218,12,95,95,99,111,110,116,97,105,110,115,95,95,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,102,5,0,0,115,
+ 22,0,0,0,128,0,216,15,19,144,116,215,23,40,209,23,
+ 40,211,23,42,208,15,42,208,8,42,114,28,0,0,0,99,
+ 2,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,
+ 3,0,0,0,243,58,0,0,0,151,0,124,0,106,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,106,3,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,124,1,171,1,0,0,0,0,0,0,1,
+ 0,121,0,114,77,0,0,0,41,2,114,188,1,0,0,114,
+ 64,0,0,0,114,224,1,0,0,115,2,0,0,0,32,32,
+ 114,10,0,0,0,114,64,0,0,0,122,21,95,78,97,109,
+ 101,115,112,97,99,101,80,97,116,104,46,97,112,112,101,110,
+ 100,105,5,0,0,115,20,0,0,0,128,0,216,8,12,143,
+ 10,137,10,215,8,25,209,8,25,152,36,213,8,31,114,28,
+ 0,0,0,78,41,16,114,196,0,0,0,114,195,0,0,0,
+ 114,197,0,0,0,114,198,0,0,0,114,191,1,0,0,114,
+ 67,1,0,0,114,200,1,0,0,114,189,1,0,0,114,207,
+ 1,0,0,114,210,1,0,0,114,214,1,0,0,114,217,1,
+ 0,0,114,219,1,0,0,114,222,1,0,0,114,226,1,0,
+ 0,114,64,0,0,0,114,30,0,0,0,114,28,0,0,0,
+ 114,10,0,0,0,114,185,1,0,0,114,185,1,0,0,41,
+ 5,0,0,115,70,0,0,0,132,0,241,2,4,5,20,240,
+ 16,0,14,15,128,70,242,4,5,5,40,242,14,8,5,34,
+ 242,20,2,5,72,1,242,8,12,5,26,242,28,1,5,41,
+ 242,6,1,5,42,242,6,1,5,33,242,6,1,5,40,242,
+ 6,1,5,49,242,6,1,5,43,243,6,1,5,32,114,28,
+ 0,0,0,114,185,1,0,0,99,0,0,0,0,0,0,0,
+ 0,0,0,0,0,1,0,0,0,0,0,0,0,243,60,0,
+ 0,0,151,0,101,0,90,1,100,0,90,2,100,1,132,0,
+ 90,3,100,2,132,0,90,4,100,3,132,0,90,5,100,4,
+ 132,0,90,6,100,5,132,0,90,7,100,6,132,0,90,8,
+ 100,7,132,0,90,9,100,8,132,0,90,10,121,9,41,10,
+ 218,15,78,97,109,101,115,112,97,99,101,76,111,97,100,101,
+ 114,99,4,0,0,0,0,0,0,0,0,0,0,0,5,0,
+ 0,0,3,0,0,0,243,40,0,0,0,151,0,116,1,0,
+ 0,0,0,0,0,0,0,124,1,124,2,124,3,171,3,0,
+ 0,0,0,0,0,124,0,95,1,0,0,0,0,0,0,0,
+ 0,121,0,114,77,0,0,0,41,2,114,185,1,0,0,114,
+ 188,1,0,0,114,194,1,0,0,115,4,0,0,0,32,32,
+ 32,32,114,10,0,0,0,114,67,1,0,0,122,24,78,97,
+ 109,101,115,112,97,99,101,76,111,97,100,101,114,46,95,95,
+ 105,110,105,116,95,95,113,5,0,0,115,18,0,0,0,128,
+ 0,220,21,35,160,68,168,36,176,11,211,21,60,136,4,141,
+ 10,114,28,0,0,0,99,2,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,3,0,0,0,243,4,0,0,0,
+ 151,0,121,1,41,2,78,84,114,30,0,0,0,114,83,1,
+ 0,0,115,2,0,0,0,32,32,114,10,0,0,0,114,10,
+ 1,0,0,122,26,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,116,
+ 5,0,0,115,5,0,0,0,128,0,216,15,19,114,28,0,
+ 0,0,99,2,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,3,0,0,0,243,4,0,0,0,151,0,121,1,
+ 41,2,78,114,12,0,0,0,114,30,0,0,0,114,83,1,
+ 0,0,115,2,0,0,0,32,32,114,10,0,0,0,114,99,
+ 1,0,0,122,26,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,119,
+ 5,0,0,115,5,0,0,0,128,0,216,15,17,114,28,0,
+ 0,0,99,2,0,0,0,0,0,0,0,0,0,0,0,6,
+ 0,0,0,3,0,0,0,243,32,0,0,0,151,0,116,1,
+ 0,0,0,0,0,0,0,0,100,1,100,2,100,3,100,4,
+ 172,5,171,4,0,0,0,0,0,0,83,0,41,6,78,114,
+ 12,0,0,0,122,8,60,115,116,114,105,110,103,62,114,78,
+ 1,0,0,84,41,1,114,102,1,0,0,41,1,114,103,1,
+ 0,0,114,83,1,0,0,115,2,0,0,0,32,32,114,10,
+ 0,0,0,114,76,1,0,0,122,24,78,97,109,101,115,112,
+ 97,99,101,76,111,97,100,101,114,46,103,101,116,95,99,111,
+ 100,101,122,5,0,0,115,19,0,0,0,128,0,220,15,22,
+ 144,114,152,58,160,118,184,68,212,15,65,208,8,65,114,28,
+ 0,0,0,99,2,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,3,0,0,0,243,4,0,0,0,151,0,121,
+ 1,114,71,1,0,0,114,30,0,0,0,114,72,1,0,0,
+ 115,2,0,0,0,32,32,114,10,0,0,0,114,73,1,0,
+ 0,122,29,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,
+ 125,5,0,0,114,74,1,0,0,114,28,0,0,0,99,2,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,
+ 0,0,0,243,4,0,0,0,151,0,121,0,114,77,0,0,
+ 0,114,30,0,0,0,114,175,1,0,0,115,2,0,0,0,
+ 32,32,114,10,0,0,0,114,80,1,0,0,122,27,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,128,5,0,0,115,5,0,
+ 0,0,128,0,216,8,12,114,28,0,0,0,99,2,0,0,
+ 0,0,0,0,0,0,0,0,0,4,0,0,0,3,0,0,
+ 0,243,110,0,0,0,151,0,116,0,0,0,0,0,0,0,
+ 0,0,106,3,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,100,1,124,0,106,4,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,2,
+ 0,0,0,0,0,0,1,0,116,0,0,0,0,0,0,0,
+ 0,0,106,7,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,124,0,124,1,171,2,0,0,0,0,
+ 0,0,83,0,41,2,122,98,76,111,97,100,32,97,32,110,
+ 97,109,101,115,112,97,99,101,32,109,111,100,117,108,101,46,
+ 10,10,32,32,32,32,32,32,32,32,84,104,105,115,32,109,
+ 101,116,104,111,100,32,105,115,32,100,101,112,114,101,99,97,
+ 116,101,100,46,32,32,85,115,101,32,101,120,101,99,95,109,
+ 111,100,117,108,101,40,41,32,105,110,115,116,101,97,100,46,
+ 10,10,32,32,32,32,32,32,32,32,122,38,110,97,109,101,
+ 115,112,97,99,101,32,109,111,100,117,108,101,32,108,111,97,
+ 100,101,100,32,119,105,116,104,32,112,97,116,104,32,123,33,
+ 114,125,41,4,114,207,0,0,0,114,215,0,0,0,114,188,
+ 1,0,0,114,82,1,0,0,114,83,1,0,0,115,2,0,
+ 0,0,32,32,114,10,0,0,0,114,84,1,0,0,122,27,
+ 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,131,5,0,0,115,
+ 49,0,0,0,128,0,244,14,0,9,19,215,8,35,209,8,
+ 35,208,36,76,216,36,40,167,74,161,74,244,3,1,9,48,
+ 244,6,0,16,26,215,15,43,209,15,43,168,68,176,40,211,
+ 15,59,208,8,59,114,28,0,0,0,99,2,0,0,0,0,
+ 0,0,0,0,0,0,0,3,0,0,0,3,0,0,0,243,
+ 50,0,0,0,151,0,100,1,100,2,108,0,109,1,125,2,
+ 1,0,2,0,124,2,124,0,106,4,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,171,1,0,0,
+ 0,0,0,0,83,0,41,3,78,114,1,0,0,0,41,1,
+ 218,15,78,97,109,101,115,112,97,99,101,82,101,97,100,101,
+ 114,41,3,114,146,1,0,0,114,238,1,0,0,114,188,1,
+ 0,0,41,3,114,189,0,0,0,114,79,1,0,0,114,238,
+ 1,0,0,115,3,0,0,0,32,32,32,114,10,0,0,0,
+ 114,147,1,0,0,122,35,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,143,5,0,0,115,20,
+ 0,0,0,128,0,221,8,53,217,15,30,152,116,159,122,153,
+ 122,211,15,42,208,8,42,114,28,0,0,0,78,41,11,114,
+ 196,0,0,0,114,195,0,0,0,114,197,0,0,0,114,67,
+ 1,0,0,114,10,1,0,0,114,99,1,0,0,114,76,1,
+ 0,0,114,73,1,0,0,114,80,1,0,0,114,84,1,0,
+ 0,114,147,1,0,0,114,30,0,0,0,114,28,0,0,0,
+ 114,10,0,0,0,114,229,1,0,0,114,229,1,0,0,112,
+ 5,0,0,115,43,0,0,0,132,0,242,2,1,5,61,242,
+ 6,1,5,20,242,6,1,5,18,242,6,1,5,66,1,242,
+ 6,1,5,57,242,6,1,5,13,242,6,10,5,60,243,24,
+ 2,5,43,114,28,0,0,0,114,229,1,0,0,99,0,0,
+ 0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,
+ 0,0,243,116,0,0,0,151,0,101,0,90,1,100,0,90,
+ 2,100,1,90,3,101,4,100,2,132,0,171,0,0,0,0,
+ 0,0,0,90,5,101,4,100,3,132,0,171,0,0,0,0,
+ 0,0,0,90,6,101,7,100,4,132,0,171,0,0,0,0,
+ 0,0,0,90,8,101,7,100,9,100,6,132,1,171,0,0,
+ 0,0,0,0,0,90,9,101,7,100,10,100,7,132,1,171,
+ 0,0,0,0,0,0,0,90,10,101,4,100,8,132,0,171,
+ 0,0,0,0,0,0,0,90,11,121,5,41,11,218,10,80,
+ 97,116,104,70,105,110,100,101,114,122,62,77,101,116,97,32,
+ 112,97,116,104,32,102,105,110,100,101,114,32,102,111,114,32,
+ 115,121,115,46,112,97,116,104,32,97,110,100,32,112,97,99,
+ 107,97,103,101,32,95,95,112,97,116,104,95,95,32,97,116,
+ 116,114,105,98,117,116,101,115,46,99,0,0,0,0,0,0,
+ 0,0,0,0,0,0,5,0,0,0,3,0,0,0,243,12,
+ 1,0,0,151,0,116,1,0,0,0,0,0,0,0,0,116,
+ 2,0,0,0,0,0,0,0,0,106,4,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,106,7,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,171,0,0,0,0,0,0,0,171,1,0,0,0,0,0,
+ 0,68,0,93,65,0,0,92,2,0,0,125,0,125,1,124,
+ 1,129,11,116,9,0,0,0,0,0,0,0,0,124,0,171,
+ 1,0,0,0,0,0,0,115,18,116,2,0,0,0,0,0,
+ 0,0,0,106,4,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,124,0,61,0,140,37,116,11,0,
+ 0,0,0,0,0,0,0,124,1,100,2,171,2,0,0,0,
+ 0,0,0,115,1,140,50,124,1,106,13,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,171,0,0,
+ 0,0,0,0,0,1,0,140,67,4,0,116,14,0,0,0,
+ 0,0,0,0,0,120,1,106,16,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,100,3,122,13,0,
+ 0,99,2,95,8,0,0,0,0,0,0,0,0,121,1,41,
+ 4,122,125,67,97,108,108,32,116,104,101,32,105,110,118,97,
+ 108,105,100,97,116,101,95,99,97,99,104,101,115,40,41,32,
+ 109,101,116,104,111,100,32,111,110,32,97,108,108,32,112,97,
+ 116,104,32,101,110,116,114,121,32,102,105,110,100,101,114,115,
+ 10,32,32,32,32,32,32,32,32,115,116,111,114,101,100,32,
+ 105,110,32,115,121,115,46,112,97,116,104,95,105,109,112,111,
+ 114,116,101,114,95,99,97,99,104,101,115,32,40,119,104,101,
+ 114,101,32,105,109,112,108,101,109,101,110,116,101,100,41,46,
+ 78,218,17,105,110,118,97,108,105,100,97,116,101,95,99,97,
+ 99,104,101,115,114,6,0,0,0,41,9,218,4,108,105,115,
+ 116,114,20,0,0,0,218,19,112,97,116,104,95,105,109,112,
+ 111,114,116,101,114,95,99,97,99,104,101,218,5,105,116,101,
+ 109,115,114,100,0,0,0,114,199,0,0,0,114,242,1,0,
+ 0,114,185,1,0,0,114,191,1,0,0,41,2,114,187,0,
+ 0,0,218,6,102,105,110,100,101,114,115,2,0,0,0,32,
+ 32,114,10,0,0,0,114,242,1,0,0,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,158,5,0,0,115,113,0,
+ 0,0,128,0,244,8,0,29,33,164,19,215,33,56,209,33,
+ 56,215,33,62,209,33,62,211,33,64,211,28,65,242,0,6,
+ 9,43,137,76,136,68,144,38,240,6,0,16,22,136,126,164,
+ 91,176,20,212,37,54,220,20,23,215,20,43,209,20,43,168,
+ 68,209,20,49,220,17,24,152,22,208,33,52,213,17,53,216,
+ 16,22,215,16,40,209,16,40,213,16,42,240,13,6,9,43,
+ 244,18,0,9,23,215,8,29,210,8,29,160,17,209,8,34,
+ 214,8,29,114,28,0,0,0,99,1,0,0,0,0,0,0,
+ 0,0,0,0,0,5,0,0,0,3,0,0,0,243,212,0,
+ 0,0,151,0,116,0,0,0,0,0,0,0,0,0,106,2,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,129,42,116,0,0,0,0,0,0,0,0,0,106,2,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,115,26,116,5,0,0,0,0,0,0,0,0,106,6,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,100,2,116,8,0,0,0,0,0,0,0,0,171,2,
+ 0,0,0,0,0,0,1,0,116,0,0,0,0,0,0,0,
+ 0,0,106,2,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,68,0,93,12,0,0,125,1,9,0,
+ 2,0,124,1,124,0,171,1,0,0,0,0,0,0,99,2,
+ 1,0,83,0,4,0,121,1,35,0,116,10,0,0,0,0,
+ 0,0,0,0,36,0,114,3,1,0,89,0,140,27,119,0,
+ 120,3,89,0,119,1,41,3,122,46,83,101,97,114,99,104,
+ 32,115,121,115,46,112,97,116,104,95,104,111,111,107,115,32,
+ 102,111,114,32,97,32,102,105,110,100,101,114,32,102,111,114,
+ 32,39,112,97,116,104,39,46,78,122,23,115,121,115,46,112,
+ 97,116,104,95,104,111,111,107,115,32,105,115,32,101,109,112,
+ 116,121,41,6,114,20,0,0,0,218,10,112,97,116,104,95,
+ 104,111,111,107,115,114,126,0,0,0,114,127,0,0,0,218,
+ 13,73,109,112,111,114,116,87,97,114,110,105,110,103,114,188,
+ 0,0,0,41,2,114,68,0,0,0,218,4,104,111,111,107,
+ 115,2,0,0,0,32,32,114,10,0,0,0,218,11,95,112,
+ 97,116,104,95,104,111,111,107,115,122,22,80,97,116,104,70,
+ 105,110,100,101,114,46,95,112,97,116,104,95,104,111,111,107,
+ 115,173,5,0,0,115,94,0,0,0,128,0,244,6,0,12,
+ 15,143,62,137,62,208,11,37,172,99,175,110,170,110,220,12,
+ 21,143,78,137,78,208,27,52,180,109,212,12,68,220,20,23,
+ 151,78,145,78,242,0,6,9,24,136,68,240,2,3,13,25,
+ 217,23,27,152,68,147,122,210,16,33,240,5,6,9,24,240,
+ 12,0,20,24,248,244,7,0,20,31,242,0,1,13,25,217,
+ 16,24,240,3,1,13,25,250,115,18,0,0,0,193,15,7,
+ 65,27,2,193,27,9,65,39,5,193,38,1,65,39,5,99,
+ 2,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,
+ 3,0,0,0,243,232,0,0,0,151,0,124,1,100,1,107,
+ 40,0,0,114,21,9,0,116,1,0,0,0,0,0,0,0,
+ 0,106,2,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,171,0,0,0,0,0,0,0,125,1,9,
+ 0,116,6,0,0,0,0,0,0,0,0,106,8,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,
+ 1,25,0,0,0,125,2,124,2,83,0,35,0,116,4,0,
+ 0,0,0,0,0,0,0,36,0,114,3,1,0,89,0,121,
+ 2,119,0,120,3,89,0,119,1,35,0,116,10,0,0,0,
+ 0,0,0,0,0,36,0,114,40,1,0,124,0,106,13,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,124,1,171,1,0,0,0,0,0,0,125,2,124,2,116,
+ 6,0,0,0,0,0,0,0,0,106,8,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,124,1,60,
+ 0,0,0,89,0,124,2,83,0,119,0,120,3,89,0,119,
+ 1,41,3,122,210,71,101,116,32,116,104,101,32,102,105,110,
+ 100,101,114,32,102,111,114,32,116,104,101,32,112,97,116,104,
+ 32,101,110,116,114,121,32,102,114,111,109,32,115,121,115,46,
+ 112,97,116,104,95,105,109,112,111,114,116,101,114,95,99,97,
+ 99,104,101,46,10,10,32,32,32,32,32,32,32,32,73,102,
+ 32,116,104,101,32,112,97,116,104,32,101,110,116,114,121,32,
+ 105,115,32,110,111,116,32,105,110,32,116,104,101,32,99,97,
+ 99,104,101,44,32,102,105,110,100,32,116,104,101,32,97,112,
+ 112,114,111,112,114,105,97,116,101,32,102,105,110,100,101,114,
+ 10,32,32,32,32,32,32,32,32,97,110,100,32,99,97,99,
+ 104,101,32,105,116,46,32,73,102,32,110,111,32,102,105,110,
+ 100,101,114,32,105,115,32,97,118,97,105,108,97,98,108,101,
+ 44,32,115,116,111,114,101,32,78,111,110,101,46,10,10,32,
+ 32,32,32,32,32,32,32,114,12,0,0,0,78,41,7,114,
+ 23,0,0,0,114,95,0,0,0,218,17,70,105,108,101,78,
+ 111,116,70,111,117,110,100,69,114,114,111,114,114,20,0,0,
+ 0,114,244,1,0,0,218,8,75,101,121,69,114,114,111,114,
+ 114,251,1,0,0,41,3,114,50,1,0,0,114,68,0,0,
+ 0,114,246,1,0,0,115,3,0,0,0,32,32,32,114,10,
+ 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,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,114,95,99,97,99,104,101,186,5,0,0,115,128,
+ 0,0,0,128,0,240,16,0,12,16,144,50,138,58,240,2,
+ 5,13,28,220,23,26,151,122,145,122,147,124,144,4,240,10,
+ 4,9,51,220,21,24,215,21,44,209,21,44,168,84,209,21,
+ 50,136,70,240,8,0,16,22,136,13,248,244,19,0,20,37,
+ 242,0,3,13,28,241,6,0,24,28,240,7,3,13,28,251,
+ 244,12,0,16,24,242,0,2,9,51,216,21,24,151,95,145,
+ 95,160,84,211,21,42,136,70,216,44,50,140,67,215,12,35,
+ 209,12,35,160,68,210,12,41,216,15,21,136,13,240,7,2,
+ 9,51,250,115,29,0,0,0,135,20,49,0,156,19,65,0,
+ 0,177,9,61,3,188,1,61,3,193,0,45,65,49,3,193,
+ 48,1,65,49,3,78,99,4,0,0,0,0,0,0,0,0,
+ 0,0,0,5,0,0,0,3,0,0,0,243,58,1,0,0,
+ 151,0,103,0,125,4,124,2,68,0,93,118,0,0,125,5,
+ 116,1,0,0,0,0,0,0,0,0,124,5,116,2,0,0,
+ 0,0,0,0,0,0,171,2,0,0,0,0,0,0,115,1,
+ 140,20,124,0,106,5,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,124,5,171,1,0,0,0,0,
+ 0,0,125,6,124,6,128,1,140,40,124,6,106,7,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 124,1,124,3,171,2,0,0,0,0,0,0,125,7,124,7,
+ 128,1,140,61,124,7,106,8,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,129,4,124,7,99,2,
+ 1,0,83,0,124,7,106,10,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,125,8,124,8,128,11,
+ 116,13,0,0,0,0,0,0,0,0,100,2,171,1,0,0,
+ 0,0,0,0,130,1,124,4,106,15,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,124,8,171,1,
+ 0,0,0,0,0,0,1,0,140,120,4,0,116,16,0,0,
+ 0,0,0,0,0,0,106,19,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,124,1,100,1,171,2,
+ 0,0,0,0,0,0,125,7,124,4,124,7,95,5,0,0,
+ 0,0,0,0,0,0,124,7,83,0,41,3,122,63,70,105,
+ 110,100,32,116,104,101,32,108,111,97,100,101,114,32,111,114,
+ 32,110,97,109,101,115,112,97,99,101,95,112,97,116,104,32,
+ 102,111,114,32,116,104,105,115,32,109,111,100,117,108,101,47,
+ 112,97,99,107,97,103,101,32,110,97,109,101,46,78,122,19,
+ 115,112,101,99,32,109,105,115,115,105,110,103,32,108,111,97,
+ 100,101,114,41,10,114,232,0,0,0,114,136,0,0,0,114,
+ 255,1,0,0,114,58,1,0,0,114,4,1,0,0,114,5,
+ 1,0,0,114,188,0,0,0,114,240,0,0,0,114,207,0,
+ 0,0,114,11,1,0,0,41,9,114,50,1,0,0,114,42,
+ 1,0,0,114,68,0,0,0,114,57,1,0,0,218,14,110,
+ 97,109,101,115,112,97,99,101,95,112,97,116,104,218,5,101,
+ 110,116,114,121,114,246,1,0,0,114,16,1,0,0,218,8,
+ 112,111,114,116,105,111,110,115,115,9,0,0,0,32,32,32,
+ 32,32,32,32,32,32,114,10,0,0,0,218,9,95,103,101,
+ 116,95,115,112,101,99,122,20,80,97,116,104,70,105,110,100,
+ 101,114,46,95,103,101,116,95,115,112,101,99,208,5,0,0,
+ 115,178,0,0,0,128,0,240,10,0,26,28,136,14,216,21,
+ 25,242,0,21,9,24,136,69,220,19,29,152,101,164,83,212,
+ 19,41,216,16,24,216,21,24,215,21,45,209,21,45,168,101,
+ 211,21,52,136,70,216,15,21,209,15,33,216,23,29,215,23,
+ 39,209,23,39,168,8,176,38,211,23,57,144,4,216,19,23,
+ 144,60,216,20,28,216,19,23,151,59,145,59,208,19,42,216,
+ 27,31,146,75,216,27,31,215,27,58,209,27,58,144,8,216,
+ 19,27,208,19,35,220,26,37,208,38,59,211,26,60,208,20,
+ 60,240,10,0,17,31,215,16,37,209,16,37,160,104,213,16,
+ 47,240,35,21,9,24,244,38,0,20,30,215,19,40,209,19,
+ 40,168,24,176,52,211,19,56,136,68,216,46,60,136,68,212,
+ 12,43,216,19,23,136,75,114,28,0,0,0,99,4,0,0,
+ 0,0,0,0,0,0,0,0,0,5,0,0,0,3,0,0,
+ 0,243,214,0,0,0,151,0,124,2,128,16,116,0,0,0,
+ 0,0,0,0,0,0,106,2,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,125,2,124,0,106,5,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,124,1,124,2,124,3,171,3,0,0,0,0,0,0,
+ 125,4,124,4,128,1,121,1,124,4,106,6,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,52,
+ 124,4,106,8,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,125,5,124,5,114,37,100,1,124,4,
+ 95,5,0,0,0,0,0,0,0,0,116,13,0,0,0,0,
+ 0,0,0,0,124,1,124,5,124,0,106,4,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,3,
+ 0,0,0,0,0,0,124,4,95,4,0,0,0,0,0,0,
+ 0,0,124,4,83,0,121,1,124,4,83,0,41,2,122,141,
+ 84,114,121,32,116,111,32,102,105,110,100,32,97,32,115,112,
+ 101,99,32,102,111,114,32,39,102,117,108,108,110,97,109,101,
+ 39,32,111,110,32,115,121,115,46,112,97,116,104,32,111,114,
+ 32,39,112,97,116,104,39,46,10,10,32,32,32,32,32,32,
+ 32,32,84,104,101,32,115,101,97,114,99,104,32,105,115,32,
+ 98,97,115,101,100,32,111,110,32,115,121,115,46,112,97,116,
+ 104,95,104,111,111,107,115,32,97,110,100,32,115,121,115,46,
+ 112,97,116,104,95,105,109,112,111,114,116,101,114,95,99,97,
+ 99,104,101,46,10,32,32,32,32,32,32,32,32,78,41,7,
+ 114,20,0,0,0,114,68,0,0,0,114,4,2,0,0,114,
+ 4,1,0,0,114,5,1,0,0,114,9,1,0,0,114,185,
+ 1,0,0,41,6,114,50,1,0,0,114,42,1,0,0,114,
+ 68,0,0,0,114,57,1,0,0,114,16,1,0,0,114,1,
+ 2,0,0,115,6,0,0,0,32,32,32,32,32,32,114,10,
+ 0,0,0,114,58,1,0,0,122,20,80,97,116,104,70,105,
+ 110,100,101,114,46,102,105,110,100,95,115,112,101,99,237,5,
+ 0,0,115,114,0,0,0,128,0,240,12,0,12,16,136,60,
+ 220,19,22,151,56,145,56,136,68,216,15,18,143,125,137,125,
+ 152,88,160,116,168,86,211,15,52,136,4,216,11,15,136,60,
+ 216,19,23,216,13,17,143,91,137,91,208,13,32,216,29,33,
+ 215,29,60,209,29,60,136,78,217,15,29,240,6,0,31,35,
+ 144,4,148,11,220,50,64,192,24,200,62,208,91,94,215,91,
+ 104,209,91,104,211,50,105,144,4,212,16,47,216,23,27,144,
+ 11,224,23,27,224,19,23,136,75,114,28,0,0,0,99,0,
+ 0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,15,
+ 0,0,0,243,50,0,0,0,151,0,100,1,100,2,108,0,
+ 109,1,125,2,1,0,2,0,124,2,106,4,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,0,
+ 105,0,124,1,164,1,142,1,83,0,41,3,97,32,1,0,
+ 0,10,32,32,32,32,32,32,32,32,70,105,110,100,32,100,
+ 105,115,116,114,105,98,117,116,105,111,110,115,46,10,10,32,
+ 32,32,32,32,32,32,32,82,101,116,117,114,110,32,97,110,
+ 32,105,116,101,114,97,98,108,101,32,111,102,32,97,108,108,
+ 32,68,105,115,116,114,105,98,117,116,105,111,110,32,105,110,
+ 115,116,97,110,99,101,115,32,99,97,112,97,98,108,101,32,
+ 111,102,10,32,32,32,32,32,32,32,32,108,111,97,100,105,
+ 110,103,32,116,104,101,32,109,101,116,97,100,97,116,97,32,
+ 102,111,114,32,112,97,99,107,97,103,101,115,32,109,97,116,
+ 99,104,105,110,103,32,96,96,99,111,110,116,101,120,116,46,
+ 110,97,109,101,96,96,10,32,32,32,32,32,32,32,32,40,
+ 111,114,32,97,108,108,32,110,97,109,101,115,32,105,102,32,
+ 96,96,78,111,110,101,96,96,32,105,110,100,105,99,97,116,
+ 101,100,41,32,97,108,111,110,103,32,116,104,101,32,112,97,
+ 116,104,115,32,105,110,32,116,104,101,32,108,105,115,116,10,
+ 32,32,32,32,32,32,32,32,111,102,32,100,105,114,101,99,
+ 116,111,114,105,101,115,32,96,96,99,111,110,116,101,120,116,
+ 46,112,97,116,104,96,96,46,10,32,32,32,32,32,32,32,
+ 32,114,1,0,0,0,41,1,218,18,77,101,116,97,100,97,
+ 116,97,80,97,116,104,70,105,110,100,101,114,41,3,218,18,
+ 105,109,112,111,114,116,108,105,98,46,109,101,116,97,100,97,
+ 116,97,114,7,2,0,0,218,18,102,105,110,100,95,100,105,
+ 115,116,114,105,98,117,116,105,111,110,115,41,3,114,190,0,
+ 0,0,114,191,0,0,0,114,7,2,0,0,115,3,0,0,
+ 0,32,32,32,114,10,0,0,0,114,9,2,0,0,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,5,6,0,
+ 0,115,32,0,0,0,128,0,245,20,0,9,58,216,15,52,
+ 208,15,33,215,15,52,209,15,52,176,100,208,15,69,184,102,
+ 209,15,69,208,8,69,114,28,0,0,0,114,77,0,0,0,
+ 114,59,1,0,0,41,12,114,196,0,0,0,114,195,0,0,
+ 0,114,197,0,0,0,114,198,0,0,0,114,62,1,0,0,
+ 114,242,1,0,0,114,251,1,0,0,114,63,1,0,0,114,
+ 255,1,0,0,114,4,2,0,0,114,58,1,0,0,114,9,
+ 2,0,0,114,30,0,0,0,114,28,0,0,0,114,10,0,
+ 0,0,114,240,1,0,0,114,240,1,0,0,154,5,0,0,
+ 115,125,0,0,0,132,0,225,4,72,224,5,17,241,2,12,
+ 5,35,243,3,0,6,18,240,2,12,5,35,240,28,0,6,
+ 18,241,2,10,5,24,243,3,0,6,18,240,2,10,5,24,
+ 240,24,0,6,17,241,2,19,5,22,243,3,0,6,17,240,
+ 2,19,5,22,240,42,0,6,17,242,2,26,5,24,243,3,
+ 0,6,17,240,2,26,5,24,240,56,0,6,17,242,2,21,
+ 5,24,243,3,0,6,17,240,2,21,5,24,240,46,0,6,
+ 18,241,2,10,5,70,1,243,3,0,6,18,241,2,10,5,
+ 70,1,114,28,0,0,0,114,240,1,0,0,99,0,0,0,
+ 0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,
+ 0,243,70,0,0,0,151,0,101,0,90,1,100,0,90,2,
+ 100,1,90,3,100,2,132,0,90,4,100,3,132,0,90,5,
+ 100,4,132,0,90,6,100,10,100,6,132,1,90,7,100,7,
+ 132,0,90,8,101,9,100,8,132,0,171,0,0,0,0,0,
+ 0,0,90,10,100,9,132,0,90,11,121,5,41,11,218,10,
+ 70,105,108,101,70,105,110,100,101,114,122,172,70,105,108,101,
+ 45,98,97,115,101,100,32,102,105,110,100,101,114,46,10,10,
+ 32,32,32,32,73,110,116,101,114,97,99,116,105,111,110,115,
+ 32,119,105,116,104,32,116,104,101,32,102,105,108,101,32,115,
+ 121,115,116,101,109,32,97,114,101,32,99,97,99,104,101,100,
+ 32,102,111,114,32,112,101,114,102,111,114,109,97,110,99,101,
+ 44,32,98,101,105,110,103,10,32,32,32,32,114,101,102,114,
+ 101,115,104,101,100,32,119,104,101,110,32,116,104,101,32,100,
+ 105,114,101,99,116,111,114,121,32,116,104,101,32,102,105,110,
+ 100,101,114,32,105,115,32,104,97,110,100,108,105,110,103,32,
+ 104,97,115,32,98,101,101,110,32,109,111,100,105,102,105,101,
+ 100,46,10,10,32,32,32,32,99,2,0,0,0,0,0,0,
+ 0,0,0,0,0,5,0,0,0,7,0,0,0,243,12,1,
+ 0,0,135,5,151,0,103,0,125,3,124,2,68,0,93,31,
+ 0,0,92,2,0,0,138,5,125,4,124,3,106,1,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 136,5,102,1,100,1,132,8,124,4,68,0,171,0,0,0,
+ 0,0,0,0,171,1,0,0,0,0,0,0,1,0,140,33,
+ 4,0,124,3,124,0,95,1,0,0,0,0,0,0,0,0,
+ 124,1,114,5,124,1,100,2,107,40,0,0,114,26,116,5,
+ 0,0,0,0,0,0,0,0,106,6,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,171,0,0,0,
+ 0,0,0,0,124,0,95,4,0,0,0,0,0,0,0,0,
+ 110,16,116,11,0,0,0,0,0,0,0,0,124,1,171,1,
+ 0,0,0,0,0,0,124,0,95,4,0,0,0,0,0,0,
+ 0,0,100,3,124,0,95,6,0,0,0,0,0,0,0,0,
+ 116,15,0,0,0,0,0,0,0,0,171,0,0,0,0,0,
+ 0,0,124,0,95,8,0,0,0,0,0,0,0,0,116,15,
+ 0,0,0,0,0,0,0,0,171,0,0,0,0,0,0,0,
+ 124,0,95,9,0,0,0,0,0,0,0,0,121,4,41,5,
+ 122,154,73,110,105,116,105,97,108,105,122,101,32,119,105,116,
+ 104,32,116,104,101,32,112,97,116,104,32,116,111,32,115,101,
+ 97,114,99,104,32,111,110,32,97,110,100,32,97,32,118,97,
+ 114,105,97,98,108,101,32,110,117,109,98,101,114,32,111,102,
+ 10,32,32,32,32,32,32,32,32,50,45,116,117,112,108,101,
+ 115,32,99,111,110,116,97,105,110,105,110,103,32,116,104,101,
+ 32,108,111,97,100,101,114,32,97,110,100,32,116,104,101,32,
+ 102,105,108,101,32,115,117,102,102,105,120,101,115,32,116,104,
+ 101,32,108,111,97,100,101,114,10,32,32,32,32,32,32,32,
+ 32,114,101,99,111,103,110,105,122,101,115,46,99,1,0,0,
+ 0,0,0,0,0,0,0,0,0,3,0,0,0,51,0,0,
+ 0,243,38,0,0,0,149,1,75,0,1,0,151,0,124,0,
+ 93,8,0,0,125,1,124,1,137,2,102,2,150,1,151,1,
+ 1,0,140,10,4,0,121,0,173,3,119,1,114,77,0,0,
+ 0,114,30,0,0,0,41,3,114,8,0,0,0,114,178,1,
+ 0,0,114,4,1,0,0,115,3,0,0,0,32,32,128,114,
+ 10,0,0,0,114,11,0,0,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,34,6,0,0,115,22,0,0,0,248,232,0,248,128,0,
+ 210,26,67,176,6,152,70,160,70,212,27,43,209,26,67,249,
+ 115,4,0,0,0,131,14,17,1,114,103,0,0,0,114,170,
+ 0,0,0,78,41,10,114,240,0,0,0,218,8,95,108,111,
+ 97,100,101,114,115,114,23,0,0,0,114,95,0,0,0,114,
+ 68,0,0,0,114,105,0,0,0,218,11,95,112,97,116,104,
+ 95,109,116,105,109,101,218,3,115,101,116,218,11,95,112,97,
+ 116,104,95,99,97,99,104,101,218,19,95,114,101,108,97,120,
+ 101,100,95,112,97,116,104,95,99,97,99,104,101,41,6,114,
+ 189,0,0,0,114,68,0,0,0,218,14,108,111,97,100,101,
+ 114,95,100,101,116,97,105,108,115,218,7,108,111,97,100,101,
+ 114,115,114,18,1,0,0,114,4,1,0,0,115,6,0,0,
+ 0,32,32,32,32,32,64,114,10,0,0,0,114,67,1,0,
+ 0,122,19,70,105,108,101,70,105,110,100,101,114,46,95,95,
+ 105,110,105,116,95,95,28,6,0,0,115,119,0,0,0,248,
+ 128,0,240,8,0,19,21,136,7,216,32,46,242,0,1,9,
+ 68,1,209,12,28,136,70,144,72,216,12,19,143,78,137,78,
+ 211,26,67,184,40,212,26,67,213,12,67,240,3,1,9,68,
+ 1,224,24,31,136,4,140,13,225,15,19,144,116,152,115,146,
+ 123,220,24,27,159,10,153,10,155,12,136,68,141,73,228,24,
+ 37,160,100,211,24,43,136,68,140,73,216,27,29,136,4,212,
+ 8,24,220,27,30,155,53,136,4,212,8,24,220,35,38,163,
+ 53,136,4,213,8,32,114,28,0,0,0,99,1,0,0,0,
+ 0,0,0,0,0,0,0,0,2,0,0,0,3,0,0,0,
+ 243,18,0,0,0,151,0,100,1,124,0,95,0,0,0,0,
+ 0,0,0,0,0,121,2,41,3,122,31,73,110,118,97,108,
+ 105,100,97,116,101,32,116,104,101,32,100,105,114,101,99,116,
+ 111,114,121,32,109,116,105,109,101,46,114,170,0,0,0,78,
+ 41,1,114,15,2,0,0,114,131,1,0,0,115,1,0,0,
+ 0,32,114,10,0,0,0,114,242,1,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,45,6,0,0,115,10,
+ 0,0,0,128,0,224,27,29,136,4,213,8,24,114,28,0,
+ 0,0,99,6,0,0,0,0,0,0,0,0,0,0,0,6,
+ 0,0,0,3,0,0,0,243,50,0,0,0,151,0,2,0,
+ 124,1,124,2,124,3,171,2,0,0,0,0,0,0,125,6,
+ 116,1,0,0,0,0,0,0,0,0,124,2,124,3,124,6,
+ 124,4,172,1,171,4,0,0,0,0,0,0,83,0,41,2,
+ 78,114,3,1,0,0,41,1,114,20,1,0,0,41,7,114,
+ 189,0,0,0,114,17,1,0,0,114,42,1,0,0,114,68,
+ 0,0,0,218,4,115,109,115,108,114,57,1,0,0,114,4,
+ 1,0,0,115,7,0,0,0,32,32,32,32,32,32,32,114,
+ 10,0,0,0,114,4,2,0,0,122,20,70,105,108,101,70,
+ 105,110,100,101,114,46,95,103,101,116,95,115,112,101,99,49,
+ 6,0,0,115,38,0,0,0,128,0,217,17,29,152,104,168,
+ 4,211,17,45,136,6,220,15,38,160,120,176,20,184,102,216,
+ 66,70,244,3,1,16,72,1,240,0,1,9,72,1,114,28,
+ 0,0,0,78,99,3,0,0,0,0,0,0,0,0,0,0,
+ 0,8,0,0,0,3,0,0,0,243,192,3,0,0,151,0,
+ 100,1,125,3,124,1,106,1,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,100,2,171,1,0,0,
+ 0,0,0,0,100,3,25,0,0,0,125,4,9,0,116,3,
+ 0,0,0,0,0,0,0,0,124,0,106,4,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,1,
+ 115,20,1,0,116,7,0,0,0,0,0,0,0,0,106,8,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,171,0,0,0,0,0,0,0,171,1,0,0,0,0,
+ 0,0,106,10,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,125,5,124,5,124,0,106,14,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 107,55,0,0,114,23,124,0,106,17,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,171,0,0,0,
+ 0,0,0,0,1,0,124,5,124,0,95,7,0,0,0,0,
+ 0,0,0,0,116,19,0,0,0,0,0,0,0,0,171,0,
+ 0,0,0,0,0,0,114,29,124,0,106,20,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,6,
+ 124,4,106,23,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,171,0,0,0,0,0,0,0,125,7,
+ 110,14,124,0,106,24,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,125,6,124,4,125,7,124,7,
+ 124,6,118,0,114,105,116,27,0,0,0,0,0,0,0,0,
+ 124,0,106,4,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,124,4,171,2,0,0,0,0,0,0,
+ 125,8,124,0,106,28,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,68,0,93,57,0,0,92,2,
+ 0,0,125,9,125,10,100,5,124,9,122,0,0,0,125,11,
+ 116,27,0,0,0,0,0,0,0,0,124,8,124,11,171,2,
+ 0,0,0,0,0,0,125,12,116,31,0,0,0,0,0,0,
+ 0,0,124,12,171,1,0,0,0,0,0,0,115,1,140,35,
+ 124,0,106,33,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,124,10,124,1,124,12,124,8,103,1,
+ 124,2,171,5,0,0,0,0,0,0,99,2,1,0,83,0,
+ 4,0,116,35,0,0,0,0,0,0,0,0,124,8,171,1,
+ 0,0,0,0,0,0,125,3,124,0,106,28,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,0,
+ 93,97,0,0,92,2,0,0,125,9,125,10,9,0,116,27,
+ 0,0,0,0,0,0,0,0,124,0,106,4,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,4,
+ 124,9,122,0,0,0,171,2,0,0,0,0,0,0,125,12,
+ 116,38,0,0,0,0,0,0,0,0,106,41,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,7,
+ 124,12,100,3,172,8,171,3,0,0,0,0,0,0,1,0,
+ 124,7,124,9,122,0,0,0,124,6,118,0,115,1,140,64,
+ 116,31,0,0,0,0,0,0,0,0,124,12,171,1,0,0,
+ 0,0,0,0,115,1,140,76,124,0,106,33,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,10,
+ 124,1,124,12,100,6,124,2,171,5,0,0,0,0,0,0,
+ 99,2,1,0,83,0,4,0,124,3,114,54,116,38,0,0,
+ 0,0,0,0,0,0,106,41,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,100,9,127,8,171,2,
+ 0,0,0,0,0,0,1,0,116,38,0,0,0,0,0,0,
+ 0,0,106,43,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,124,1,100,6,171,2,0,0,0,0,
+ 0,0,125,13,124,8,103,1,124,13,95,22,0,0,0,0,
+ 0,0,0,0,124,13,83,0,121,6,35,0,116,12,0,0,
+ 0,0,0,0,0,0,36,0,114,6,1,0,100,4,125,5,
+ 89,0,144,1,140,127,119,0,120,3,89,0,119,1,35,0,
+ 116,36,0,0,0,0,0,0,0,0,36,0,114,4,1,0,
+ 89,0,1,0,121,6,119,0,120,3,89,0,119,1,41,10,
+ 122,111,84,114,121,32,116,111,32,102,105,110,100,32,97,32,
+ 115,112,101,99,32,102,111,114,32,116,104,101,32,115,112,101,
+ 99,105,102,105,101,100,32,109,111,100,117,108,101,46,10,10,
+ 32,32,32,32,32,32,32,32,82,101,116,117,114,110,115,32,
+ 116,104,101,32,109,97,116,99,104,105,110,103,32,115,112,101,
+ 99,44,32,111,114,32,78,111,110,101,32,105,102,32,110,111,
+ 116,32,102,111,117,110,100,46,10,32,32,32,32,32,32,32,
+ 32,70,114,103,0,0,0,114,52,0,0,0,114,170,0,0,
+ 0,114,67,1,0,0,78,122,9,116,114,121,105,110,103,32,
+ 123,125,41,1,218,9,118,101,114,98,111,115,105,116,121,122,
+ 25,112,111,115,115,105,98,108,101,32,110,97,109,101,115,112,
+ 97,99,101,32,102,111,114,32,123,125,41,23,114,131,0,0,
+ 0,114,85,0,0,0,114,68,0,0,0,114,23,0,0,0,
+ 114,95,0,0,0,114,152,1,0,0,114,87,0,0,0,114,
+ 15,2,0,0,218,11,95,102,105,108,108,95,99,97,99,104,
+ 101,114,27,0,0,0,114,18,2,0,0,114,172,0,0,0,
+ 114,17,2,0,0,114,72,0,0,0,114,14,2,0,0,114,
+ 93,0,0,0,114,4,2,0,0,114,96,0,0,0,114,138,
+ 0,0,0,114,207,0,0,0,114,215,0,0,0,114,11,1,
+ 0,0,114,5,1,0,0,41,14,114,189,0,0,0,114,42,
+ 1,0,0,114,57,1,0,0,218,12,105,115,95,110,97,109,
+ 101,115,112,97,99,101,218,11,116,97,105,108,95,109,111,100,
+ 117,108,101,114,242,0,0,0,218,5,99,97,99,104,101,218,
+ 12,99,97,99,104,101,95,109,111,100,117,108,101,218,9,98,
+ 97,115,101,95,112,97,116,104,114,178,1,0,0,114,17,1,
+ 0,0,218,13,105,110,105,116,95,102,105,108,101,110,97,109,
+ 101,218,9,102,117,108,108,95,112,97,116,104,114,16,1,0,
+ 0,115,14,0,0,0,32,32,32,32,32,32,32,32,32,32,
+ 32,32,32,32,114,10,0,0,0,114,58,1,0,0,122,20,
+ 70,105,108,101,70,105,110,100,101,114,46,102,105,110,100,95,
+ 115,112,101,99,54,6,0,0,115,230,1,0,0,128,0,240,
+ 10,0,24,29,136,12,216,22,30,215,22,41,209,22,41,168,
+ 35,211,22,46,168,113,209,22,49,136,11,240,2,3,9,23,
+ 220,20,30,152,116,159,121,153,121,210,31,56,172,67,175,74,
+ 169,74,171,76,211,20,57,215,20,66,209,20,66,136,69,240,
+ 6,0,12,17,144,68,215,20,36,209,20,36,210,11,36,216,
+ 12,16,215,12,28,209,12,28,212,12,30,216,31,36,136,68,
+ 212,12,28,228,11,22,140,61,216,20,24,215,20,44,209,20,
+ 44,136,69,216,27,38,215,27,44,209,27,44,211,27,46,137,
+ 76,224,20,24,215,20,36,209,20,36,136,69,216,27,38,136,
+ 76,224,11,23,152,53,209,11,32,220,24,34,160,52,167,57,
+ 161,57,168,107,211,24,58,136,73,216,40,44,175,13,169,13,
+ 242,0,8,13,54,209,16,36,144,6,152,12,216,32,42,168,
+ 86,209,32,51,144,13,220,28,38,160,121,176,45,211,28,64,
+ 144,9,220,19,31,160,9,213,19,42,216,27,31,159,62,153,
+ 62,168,44,184,8,192,41,200,105,200,91,208,90,96,211,27,
+ 97,210,20,97,240,9,8,13,54,244,16,0,32,43,168,57,
+ 211,31,53,144,12,224,36,40,167,77,161,77,242,0,9,9,
+ 56,209,12,32,136,70,144,76,240,2,3,13,28,220,28,38,
+ 160,116,167,121,161,121,176,43,192,6,209,50,70,211,28,71,
+ 144,9,244,6,0,13,23,215,12,39,209,12,39,168,11,176,
+ 89,200,33,208,12,39,212,12,76,216,15,27,152,102,209,15,
+ 36,168,5,210,15,45,220,19,31,160,9,213,19,42,216,27,
+ 31,159,62,153,62,168,44,184,8,192,41,216,42,46,176,6,
+ 243,3,1,28,56,242,0,1,21,56,240,17,9,9,56,241,
+ 20,0,12,24,220,12,22,215,12,39,209,12,39,208,40,67,
+ 192,89,212,12,79,220,19,29,215,19,40,209,19,40,168,24,
+ 176,52,211,19,56,136,68,216,47,56,168,107,136,68,212,12,
+ 43,216,19,23,136,75,216,15,19,248,244,81,1,0,16,23,
+ 242,0,1,9,23,216,20,22,139,69,240,3,1,9,23,251,
+ 244,56,0,20,30,242,0,1,13,28,218,23,27,240,3,1,
+ 13,28,250,115,35,0,0,0,152,53,70,62,0,196,40,25,
+ 71,16,2,198,62,11,71,13,3,199,12,1,71,13,3,199,
+ 16,9,71,29,5,199,28,1,71,29,5,99,1,0,0,0,
+ 0,0,0,0,0,0,0,0,5,0,0,0,3,0,0,0,
+ 243,84,2,0,0,151,0,124,0,106,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,125,1,9,
+ 0,116,3,0,0,0,0,0,0,0,0,106,4,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,
+ 1,120,1,115,20,1,0,116,3,0,0,0,0,0,0,0,
+ 0,106,6,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,171,0,0,0,0,0,0,0,171,1,0,
+ 0,0,0,0,0,125,2,116,14,0,0,0,0,0,0,0,
+ 0,106,16,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,106,19,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,100,1,171,1,0,0,0,
+ 0,0,0,115,17,116,21,0,0,0,0,0,0,0,0,124,
+ 2,171,1,0,0,0,0,0,0,124,0,95,11,0,0,0,
+ 0,0,0,0,0,110,88,116,21,0,0,0,0,0,0,0,
+ 0,171,0,0,0,0,0,0,0,125,3,124,2,68,0,93,
+ 66,0,0,125,4,124,4,106,25,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,100,2,171,1,0,
+ 0,0,0,0,0,92,3,0,0,125,5,125,6,125,7,124,
+ 6,114,22,124,5,155,0,100,2,124,7,106,27,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,
+ 0,0,0,0,0,0,0,155,0,157,3,125,8,110,2,124,
+ 5,125,8,124,3,106,29,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,124,8,171,1,0,0,0,
+ 0,0,0,1,0,140,68,4,0,124,3,124,0,95,11,0,
+ 0,0,0,0,0,0,0,116,14,0,0,0,0,0,0,0,
+ 0,106,16,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,106,19,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,116,30,0,0,0,0,0,
+ 0,0,0,171,1,0,0,0,0,0,0,114,36,124,2,68,
+ 0,143,9,99,2,104,0,99,2,93,18,0,0,125,9,124,
+ 9,106,27,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,171,0,0,0,0,0,0,0,146,2,140,
+ 20,4,0,99,2,125,9,124,0,95,16,0,0,0,0,0,
+ 0,0,0,121,3,121,3,35,0,116,8,0,0,0,0,0,
+ 0,0,0,116,10,0,0,0,0,0,0,0,0,116,12,0,
+ 0,0,0,0,0,0,0,102,3,36,0,114,5,1,0,103,
+ 0,125,2,89,0,140,232,119,0,120,3,89,0,119,1,99,
+ 2,1,0,99,2,125,9,119,0,41,4,122,68,70,105,108,
+ 108,32,116,104,101,32,99,97,99,104,101,32,111,102,32,112,
+ 111,116,101,110,116,105,97,108,32,109,111,100,117,108,101,115,
+ 32,97,110,100,32,112,97,99,107,97,103,101,115,32,102,111,
+ 114,32,116,104,105,115,32,100,105,114,101,99,116,111,114,121,
+ 46,114,14,0,0,0,114,103,0,0,0,78,41,17,114,68,
+ 0,0,0,114,23,0,0,0,218,7,108,105,115,116,100,105,
+ 114,114,95,0,0,0,114,253,1,0,0,218,15,80,101,114,
+ 109,105,115,115,105,111,110,69,114,114,111,114,218,18,78,111,
+ 116,65,68,105,114,101,99,116,111,114,121,69,114,114,111,114,
+ 114,20,0,0,0,114,31,0,0,0,114,32,0,0,0,114,
+ 16,2,0,0,114,17,2,0,0,114,158,0,0,0,114,172,
+ 0,0,0,218,3,97,100,100,114,33,0,0,0,114,18,2,
+ 0,0,41,10,114,189,0,0,0,114,68,0,0,0,218,8,
+ 99,111,110,116,101,110,116,115,218,21,108,111,119,101,114,95,
+ 115,117,102,102,105,120,95,99,111,110,116,101,110,116,115,114,
+ 225,1,0,0,114,187,0,0,0,114,198,1,0,0,114,178,
+ 1,0,0,218,8,110,101,119,95,110,97,109,101,218,2,102,
+ 110,115,10,0,0,0,32,32,32,32,32,32,32,32,32,32,
+ 114,10,0,0,0,114,26,2,0,0,122,22,70,105,108,101,
+ 70,105,110,100,101,114,46,95,102,105,108,108,95,99,97,99,
+ 104,101,105,6,0,0,115,5,1,0,0,128,0,224,15,19,
+ 143,121,137,121,136,4,240,2,5,9,26,220,23,26,151,123,
+ 145,123,160,52,210,35,55,172,51,175,58,169,58,171,60,211,
+ 23,56,136,72,244,14,0,16,19,143,124,137,124,215,15,38,
+ 209,15,38,160,117,212,15,45,220,31,34,160,56,155,125,136,
+ 68,213,12,28,244,14,0,37,40,163,69,208,12,33,216,24,
+ 32,242,0,6,13,52,144,4,216,36,40,167,78,161,78,176,
+ 51,211,36,55,209,16,33,144,4,144,99,152,54,217,19,22,
+ 216,34,38,160,22,160,113,168,22,175,28,169,28,171,30,208,
+ 40,56,208,31,57,145,72,224,31,35,144,72,216,16,37,215,
+ 16,41,209,16,41,168,40,213,16,51,240,13,6,13,52,240,
+ 14,0,32,53,136,68,212,12,28,220,11,14,143,60,137,60,
+ 215,11,34,209,11,34,212,35,62,212,11,63,216,61,69,214,
+ 39,70,176,114,168,2,175,8,169,8,173,10,210,39,70,136,
+ 68,213,12,36,240,3,0,12,64,1,248,244,47,0,17,34,
+ 164,63,212,52,70,208,15,71,242,0,3,9,26,240,6,0,
+ 24,26,138,72,240,7,3,9,26,252,242,48,0,40,71,1,
+ 115,23,0,0,0,142,43,68,9,0,195,40,23,68,37,4,
+ 196,9,22,68,34,3,196,33,1,68,34,3,99,1,0,0,
+ 0,0,0,0,0,0,0,0,0,2,0,0,0,7,0,0,
+ 0,243,22,0,0,0,135,0,135,1,151,0,136,0,136,1,
+ 102,2,100,1,132,8,125,2,124,2,83,0,41,2,97,20,
+ 1,0,0,65,32,99,108,97,115,115,32,109,101,116,104,111,
+ 100,32,119,104,105,99,104,32,114,101,116,117,114,110,115,32,
+ 97,32,99,108,111,115,117,114,101,32,116,111,32,117,115,101,
+ 32,111,110,32,115,121,115,46,112,97,116,104,95,104,111,111,
+ 107,10,32,32,32,32,32,32,32,32,119,104,105,99,104,32,
+ 119,105,108,108,32,114,101,116,117,114,110,32,97,110,32,105,
+ 110,115,116,97,110,99,101,32,117,115,105,110,103,32,116,104,
+ 101,32,115,112,101,99,105,102,105,101,100,32,108,111,97,100,
+ 101,114,115,32,97,110,100,32,116,104,101,32,112,97,116,104,
+ 10,32,32,32,32,32,32,32,32,99,97,108,108,101,100,32,
+ 111,110,32,116,104,101,32,99,108,111,115,117,114,101,46,10,
+ 10,32,32,32,32,32,32,32,32,73,102,32,116,104,101,32,
+ 112,97,116,104,32,99,97,108,108,101,100,32,111,110,32,116,
+ 104,101,32,99,108,111,115,117,114,101,32,105,115,32,110,111,
+ 116,32,97,32,100,105,114,101,99,116,111,114,121,44,32,73,
+ 109,112,111,114,116,69,114,114,111,114,32,105,115,10,32,32,
+ 32,32,32,32,32,32,114,97,105,115,101,100,46,10,10,32,
+ 32,32,32,32,32,32,32,99,1,0,0,0,0,0,0,0,
+ 0,0,0,0,4,0,0,0,19,0,0,0,243,70,0,0,
+ 0,149,2,151,0,116,1,0,0,0,0,0,0,0,0,124,
+ 0,171,1,0,0,0,0,0,0,115,13,116,3,0,0,0,
+ 0,0,0,0,0,100,1,124,0,172,2,171,2,0,0,0,
+ 0,0,0,130,1,2,0,137,1,124,0,103,1,137,2,162,
+ 1,173,6,142,0,83,0,41,3,122,45,80,97,116,104,32,
+ 104,111,111,107,32,102,111,114,32,105,109,112,111,114,116,108,
+ 105,98,46,109,97,99,104,105,110,101,114,121,46,70,105,108,
+ 101,70,105,110,100,101,114,46,122,30,111,110,108,121,32,100,
+ 105,114,101,99,116,111,114,105,101,115,32,97,114,101,32,115,
+ 117,112,112,111,114,116,101,100,114,84,0,0,0,41,2,114,
+ 96,0,0,0,114,188,0,0,0,41,3,114,68,0,0,0,
+ 114,50,1,0,0,114,19,2,0,0,115,3,0,0,0,32,
+ 128,128,114,10,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,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,111,111,107,95,102,111,114,95,70,
+ 105,108,101,70,105,110,100,101,114,146,6,0,0,115,41,0,
+ 0,0,248,128,0,228,19,30,152,116,212,19,36,220,22,33,
+ 208,34,66,200,20,212,22,78,208,16,78,217,19,22,144,116,
+ 208,19,45,152,110,210,19,45,208,12,45,114,28,0,0,0,
+ 114,30,0,0,0,41,3,114,50,1,0,0,114,19,2,0,
+ 0,114,45,2,0,0,115,3,0,0,0,96,96,32,114,10,
+ 0,0,0,218,9,112,97,116,104,95,104,111,111,107,122,20,
+ 70,105,108,101,70,105,110,100,101,114,46,112,97,116,104,95,
+ 104,111,111,107,136,6,0,0,115,16,0,0,0,249,128,0,
+ 245,20,4,9,46,240,12,0,16,40,208,8,39,114,28,0,
+ 0,0,99,1,0,0,0,0,0,0,0,0,0,0,0,3,
+ 0,0,0,3,0,0,0,243,34,0,0,0,151,0,100,1,
+ 124,0,106,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,155,2,100,2,157,3,83,0,41,3,
+ 78,122,11,70,105,108,101,70,105,110,100,101,114,40,114,221,
+ 1,0,0,114,84,0,0,0,114,131,1,0,0,115,1,0,
+ 0,0,32,114,10,0,0,0,114,222,1,0,0,122,19,70,
+ 105,108,101,70,105,110,100,101,114,46,95,95,114,101,112,114,
+ 95,95,154,6,0,0,115,21,0,0,0,128,0,216,17,28,
+ 152,84,159,89,153,89,152,77,168,17,208,15,43,208,8,43,
+ 114,28,0,0,0,114,77,0,0,0,41,12,114,196,0,0,
+ 0,114,195,0,0,0,114,197,0,0,0,114,198,0,0,0,
+ 114,67,1,0,0,114,242,1,0,0,114,4,2,0,0,114,
+ 58,1,0,0,114,26,2,0,0,114,63,1,0,0,114,46,
+ 2,0,0,114,222,1,0,0,114,30,0,0,0,114,28,0,
+ 0,0,114,10,0,0,0,114,11,2,0,0,114,11,2,0,
+ 0,19,6,0,0,115,60,0,0,0,132,0,241,4,5,5,
+ 8,242,14,15,5,41,242,34,2,5,30,242,8,3,5,72,
+ 1,243,10,49,5,20,242,102,1,29,5,71,1,240,62,0,
+ 6,17,241,2,15,5,40,243,3,0,6,17,240,2,15,5,
+ 40,243,34,1,5,44,114,28,0,0,0,114,11,2,0,0,
+ 99,4,0,0,0,0,0,0,0,0,0,0,0,5,0,0,
+ 0,3,0,0,0,243,50,1,0,0,151,0,124,0,106,1,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,100,1,171,1,0,0,0,0,0,0,125,4,124,0,
+ 106,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,100,2,171,1,0,0,0,0,0,0,125,5,
+ 124,4,115,45,124,5,114,13,124,5,106,2,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,4,
+ 110,30,124,2,124,3,107,40,0,0,114,13,116,5,0,0,
+ 0,0,0,0,0,0,124,1,124,2,171,2,0,0,0,0,
+ 0,0,125,4,110,12,116,7,0,0,0,0,0,0,0,0,
+ 124,1,124,2,171,2,0,0,0,0,0,0,125,4,124,5,
+ 115,32,116,9,0,0,0,0,0,0,0,0,124,1,124,2,
+ 124,4,172,3,171,3,0,0,0,0,0,0,125,5,124,3,
+ 114,16,116,11,0,0,0,0,0,0,0,0,124,3,171,1,
+ 0,0,0,0,0,0,124,5,95,6,0,0,0,0,0,0,
+ 0,0,9,0,124,5,124,0,100,2,60,0,0,0,124,4,
+ 124,0,100,1,60,0,0,0,124,2,124,0,100,4,60,0,
+ 0,0,124,3,124,0,100,5,60,0,0,0,121,0,35,0,
+ 116,14,0,0,0,0,0,0,0,0,36,0,114,3,1,0,
+ 89,0,121,0,119,0,120,3,89,0,119,1,41,6,78,114,
+ 22,1,0,0,114,23,1,0,0,41,1,114,4,1,0,0,
+ 218,8,95,95,102,105,108,101,95,95,218,10,95,95,99,97,
+ 99,104,101,100,95,95,41,8,114,26,1,0,0,114,4,1,
+ 0,0,114,163,1,0,0,114,150,1,0,0,114,20,1,0,
+ 0,114,105,0,0,0,218,6,99,97,99,104,101,100,218,9,
+ 69,120,99,101,112,116,105,111,110,41,6,218,2,110,115,114,
+ 187,0,0,0,218,8,112,97,116,104,110,97,109,101,218,9,
+ 99,112,97,116,104,110,97,109,101,114,4,1,0,0,114,16,
+ 1,0,0,115,6,0,0,0,32,32,32,32,32,32,114,10,
+ 0,0,0,218,14,95,102,105,120,95,117,112,95,109,111,100,
+ 117,108,101,114,56,2,0,0,160,6,0,0,115,170,0,0,
+ 0,128,0,224,13,15,143,86,137,86,144,76,211,13,33,128,
+ 70,216,11,13,143,54,137,54,144,42,211,11,29,128,68,217,
+ 11,17,217,11,15,216,21,25,151,91,145,91,137,70,216,13,
+ 21,152,25,210,13,34,220,21,41,168,36,176,8,211,21,57,
+ 137,70,228,21,37,160,100,168,72,211,21,53,136,70,217,11,
+ 15,220,15,38,160,116,168,88,184,102,212,15,69,136,4,217,
+ 11,20,220,26,39,168,9,211,26,50,136,68,140,75,240,2,
+ 7,5,13,216,25,29,136,2,136,58,137,14,216,27,33,136,
+ 2,136,60,209,8,24,216,25,33,136,2,136,58,137,14,216,
+ 27,36,136,2,136,60,210,8,24,248,220,11,20,242,0,2,
+ 5,13,225,8,12,240,5,2,5,13,250,115,18,0,0,0,
+ 193,53,20,66,10,0,194,10,9,66,22,3,194,21,1,66,
+ 22,3,99,0,0,0,0,0,0,0,0,0,0,0,0,3,
+ 0,0,0,3,0,0,0,243,112,0,0,0,151,0,116,0,
+ 0,0,0,0,0,0,0,0,116,3,0,0,0,0,0,0,
+ 0,0,106,4,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,171,0,0,0,0,0,0,0,102,2,
+ 125,0,116,6,0,0,0,0,0,0,0,0,116,8,0,0,
+ 0,0,0,0,0,0,102,2,125,1,116,10,0,0,0,0,
+ 0,0,0,0,116,12,0,0,0,0,0,0,0,0,102,2,
+ 125,2,124,0,124,1,124,2,103,3,83,0,41,1,122,95,
+ 82,101,116,117,114,110,115,32,97,32,108,105,115,116,32,111,
+ 102,32,102,105,108,101,45,98,97,115,101,100,32,109,111,100,
+ 117,108,101,32,108,111,97,100,101,114,115,46,10,10,32,32,
+ 32,32,69,97,99,104,32,105,116,101,109,32,105,115,32,97,
+ 32,116,117,112,108,101,32,40,108,111,97,100,101,114,44,32,
+ 115,117,102,102,105,120,101,115,41,46,10,32,32,32,32,41,
+ 7,114,141,1,0,0,114,234,0,0,0,218,18,101,120,116,
+ 101,110,115,105,111,110,95,115,117,102,102,105,120,101,115,114,
+ 150,1,0,0,114,159,0,0,0,114,163,1,0,0,114,140,
+ 0,0,0,41,3,218,10,101,120,116,101,110,115,105,111,110,
+ 115,218,6,115,111,117,114,99,101,218,8,98,121,116,101,99,
+ 111,100,101,115,3,0,0,0,32,32,32,114,10,0,0,0,
+ 114,13,1,0,0,114,13,1,0,0,185,6,0,0,115,57,
+ 0,0,0,128,0,244,10,0,18,37,164,100,215,38,61,209,
+ 38,61,211,38,63,208,17,63,128,74,220,13,29,156,127,208,
+ 13,46,128,70,220,15,35,212,37,54,208,15,54,128,72,216,
+ 12,22,152,6,160,8,208,11,41,208,4,41,114,28,0,0,
+ 0,99,1,0,0,0,0,0,0,0,0,0,0,0,1,0,
+ 0,0,3,0,0,0,243,8,0,0,0,151,0,124,0,97,
+ 0,121,0,114,77,0,0,0,41,1,114,207,0,0,0,41,
+ 1,218,17,95,98,111,111,116,115,116,114,97,112,95,109,111,
+ 100,117,108,101,115,1,0,0,0,32,114,10,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,114,64,2,0,0,196,6,0,0,115,
+ 7,0,0,0,128,0,224,17,34,129,74,114,28,0,0,0,
+ 99,1,0,0,0,0,0,0,0,0,0,0,0,5,0,0,
+ 0,3,0,0,0,243,212,0,0,0,151,0,116,1,0,0,
+ 0,0,0,0,0,0,124,0,171,1,0,0,0,0,0,0,
+ 1,0,116,3,0,0,0,0,0,0,0,0,171,0,0,0,
+ 0,0,0,0,125,1,116,4,0,0,0,0,0,0,0,0,
+ 106,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,106,9,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,116,11,0,0,0,0,0,0,
+ 0,0,106,12,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,124,1,142,0,103,1,171,1,0,0,
+ 0,0,0,0,1,0,116,4,0,0,0,0,0,0,0,0,
+ 106,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,106,17,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,116,18,0,0,0,0,0,0,
+ 0,0,171,1,0,0,0,0,0,0,1,0,121,1,41,2,
+ 122,41,73,110,115,116,97,108,108,32,116,104,101,32,112,97,
+ 116,104,45,98,97,115,101,100,32,105,109,112,111,114,116,32,
+ 99,111,109,112,111,110,101,110,116,115,46,78,41,10,114,64,
+ 2,0,0,114,13,1,0,0,114,20,0,0,0,114,248,1,
+ 0,0,114,240,0,0,0,114,11,2,0,0,114,46,2,0,
+ 0,218,9,109,101,116,97,95,112,97,116,104,114,64,0,0,
+ 0,114,240,1,0,0,41,2,114,63,2,0,0,218,17,115,
+ 117,112,112,111,114,116,101,100,95,108,111,97,100,101,114,115,
+ 115,2,0,0,0,32,32,114,10,0,0,0,218,8,95,105,
+ 110,115,116,97,108,108,114,68,2,0,0,201,6,0,0,115,
+ 71,0,0,0,128,0,228,4,25,208,26,43,212,4,44,220,
+ 24,51,211,24,53,208,4,21,220,4,7,135,78,129,78,215,
+ 4,25,209,4,25,156,58,215,27,47,209,27,47,208,49,66,
+ 208,27,67,208,26,68,212,4,69,220,4,7,135,77,129,77,
+ 215,4,24,209,4,24,156,26,213,4,36,114,28,0,0,0,
+ 41,1,114,107,0,0,0,114,77,0,0,0,41,3,78,78,
+ 78,41,2,114,1,0,0,0,114,1,0,0,0,41,1,84,
+ 41,87,114,198,0,0,0,114,207,0,0,0,114,234,0,0,
+ 0,114,114,0,0,0,114,20,0,0,0,114,126,0,0,0,
+ 114,230,0,0,0,114,31,0,0,0,114,60,1,0,0,218,
+ 2,110,116,114,23,0,0,0,114,36,1,0,0,218,5,112,
+ 111,115,105,120,114,61,0,0,0,218,3,97,108,108,114,62,
+ 0,0,0,114,179,0,0,0,114,58,0,0,0,114,65,0,
+ 0,0,218,20,95,112,97,116,104,115,101,112,115,95,119,105,
+ 116,104,95,99,111,108,111,110,114,34,0,0,0,218,37,95,
+ 67,65,83,69,95,73,78,83,69,78,83,73,84,73,86,69,
+ 95,80,76,65,84,70,79,82,77,83,95,66,89,84,69,83,
+ 95,75,69,89,114,33,0,0,0,114,35,0,0,0,114,27,
+ 0,0,0,114,43,0,0,0,114,49,0,0,0,114,53,0,
+ 0,0,114,72,0,0,0,114,81,0,0,0,114,85,0,0,
+ 0,114,91,0,0,0,114,93,0,0,0,114,96,0,0,0,
+ 114,100,0,0,0,114,105,0,0,0,114,121,0,0,0,218,
+ 4,116,121,112,101,218,8,95,95,99,111,100,101,95,95,114,
+ 233,0,0,0,114,41,0,0,0,114,214,0,0,0,114,40,
+ 0,0,0,114,46,0,0,0,114,111,1,0,0,114,143,0,
+ 0,0,114,139,0,0,0,114,159,0,0,0,114,64,0,0,
+ 0,114,58,2,0,0,114,61,1,0,0,114,140,0,0,0,
+ 218,23,68,69,66,85,71,95,66,89,84,69,67,79,68,69,
+ 95,83,85,70,70,73,88,69,83,218,27,79,80,84,73,77,
+ 73,90,69,68,95,66,89,84,69,67,79,68,69,95,83,85,
+ 70,70,73,88,69,83,114,152,0,0,0,114,167,0,0,0,
+ 114,177,0,0,0,114,180,0,0,0,114,183,0,0,0,114,
+ 208,0,0,0,114,219,0,0,0,114,224,0,0,0,114,227,
+ 0,0,0,114,237,0,0,0,114,243,0,0,0,114,246,0,
+ 0,0,114,2,1,0,0,114,25,1,0,0,114,14,1,0,
+ 0,114,20,1,0,0,114,32,1,0,0,114,34,1,0,0,
+ 114,65,1,0,0,114,86,1,0,0,114,119,1,0,0,114,
+ 150,1,0,0,114,163,1,0,0,114,141,1,0,0,114,185,
+ 1,0,0,114,229,1,0,0,218,16,95,78,97,109,101,115,
+ 112,97,99,101,76,111,97,100,101,114,114,240,1,0,0,114,
+ 11,2,0,0,114,56,2,0,0,114,13,1,0,0,114,64,
+ 2,0,0,114,68,2,0,0,41,1,218,1,115,115,1,0,
+ 0,0,48,114,10,0,0,0,250,8,60,109,111,100,117,108,
+ 101,62,114,80,2,0,0,1,0,0,0,115,191,2,0,0,
+ 240,3,1,1,1,241,2,7,1,4,240,44,0,14,18,128,
+ 10,243,6,0,1,12,219,0,10,219,0,10,219,0,16,219,
+ 0,14,240,6,0,16,19,143,124,137,124,152,119,209,15,38,
+ 128,11,217,3,14,219,4,20,220,4,17,227,4,23,241,6,
+ 0,4,15,216,23,27,152,83,144,107,129,79,224,23,26,144,
+ 101,128,79,225,7,10,209,10,52,160,79,212,10,52,212,7,
+ 52,209,0,52,216,11,26,152,49,209,11,29,128,8,217,17,
+ 22,144,127,211,17,39,128,14,216,18,20,151,39,145,39,152,
+ 47,211,18,42,128,15,216,41,56,214,23,57,160,65,152,33,
+ 152,65,152,51,154,7,210,23,57,208,0,20,240,8,0,39,
+ 45,208,0,35,216,40,58,208,0,37,216,32,69,216,34,69,
+ 241,3,1,33,70,1,208,0,27,242,8,14,1,23,241,32,
+ 0,15,31,211,14,32,128,11,242,6,2,1,55,242,10,3,
+ 1,42,242,10,3,1,42,241,12,0,4,15,243,2,27,5,
+ 42,242,60,3,5,63,242,12,5,1,34,242,16,7,1,26,
+ 242,20,6,1,50,242,18,2,1,46,242,10,4,1,46,241,
+ 14,0,4,15,243,2,5,5,82,1,242,16,2,5,48,242,
+ 10,7,1,20,243,20,19,1,14,241,44,0,14,18,144,45,
+ 215,18,40,209,18,40,211,13,41,128,10,240,112,7,0,17,
+ 21,143,127,137,127,152,113,160,40,211,15,43,168,103,209,15,
+ 53,128,12,224,20,23,151,78,145,78,160,60,176,24,211,20,
+ 58,208,0,17,224,11,24,128,8,216,7,13,128,4,224,19,
+ 24,144,39,128,15,217,3,14,216,4,19,215,4,26,209,4,
+ 26,152,54,212,4,34,224,21,44,144,84,215,21,44,209,21,
+ 44,211,21,46,208,0,18,224,21,27,144,72,208,0,17,224,
+ 56,73,208,0,73,208,0,23,208,26,53,240,4,67,1,1,
+ 48,192,20,244,0,67,1,1,48,242,76,2,37,1,64,1,
+ 242,80,1,16,1,71,1,242,38,9,1,20,242,24,9,1,
+ 16,242,24,28,1,31,242,62,30,1,17,242,66,1,25,1,
+ 76,1,242,56,21,1,10,243,48,10,1,57,243,26,7,1,
+ 16,243,20,8,1,16,242,22,9,1,68,1,241,28,0,13,
+ 19,139,72,128,9,240,6,67,1,1,16,184,52,216,55,64,
+ 244,3,67,1,1,16,242,76,2,45,1,23,247,100,1,48,
+ 1,28,241,0,48,1,28,247,102,1,27,1,60,241,0,27,
+ 1,60,244,60,78,2,1,27,144,61,244,0,78,2,1,27,
+ 247,98,4,47,1,32,241,0,47,1,32,244,100,1,42,1,
+ 45,144,122,160,60,244,0,42,1,45,244,90,1,22,1,20,
+ 152,58,160,125,244,0,22,1,20,244,50,50,1,25,152,42,
+ 160,109,244,0,50,1,25,247,106,1,65,1,1,32,241,0,
+ 65,1,1,32,247,78,2,33,1,43,241,0,33,1,43,240,
+ 74,1,0,20,35,208,0,16,247,10,118,1,1,70,1,241,
+ 0,118,1,1,70,1,247,114,3,72,2,1,44,241,0,72,
+ 2,1,44,243,90,4,22,1,13,242,50,8,1,42,242,22,
+ 2,1,35,243,10,5,1,37,249,242,111,52,0,24,58,115,
+ 6,0,0,0,193,52,12,71,55,4,
+};
diff --git a/contrib/tools/python3/Python/frozen_modules/importlib.machinery.h b/contrib/tools/python3/Python/frozen_modules/importlib.machinery.h
new file mode 100644
index 00000000000..e655b7ae5ec
--- /dev/null
+++ b/contrib/tools/python3/Python/frozen_modules/importlib.machinery.h
@@ -0,0 +1,68 @@
+/* Auto-generated by Programs/_freeze_module.py */
+const unsigned char _Py_M__importlib_machinery[] = {
+ 227,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,
+ 0,0,0,0,0,243,162,0,0,0,151,0,100,0,90,0,
+ 100,1,100,2,108,1,109,2,90,2,1,0,100,1,100,3,
+ 108,1,109,3,90,3,1,0,100,1,100,4,108,1,109,4,
+ 90,4,1,0,100,1,100,5,108,5,109,6,90,6,109,7,
+ 90,7,109,8,90,8,109,9,90,9,109,10,90,10,1,0,
+ 100,1,100,6,108,5,109,11,90,11,1,0,100,1,100,7,
+ 108,5,109,12,90,12,1,0,100,1,100,8,108,5,109,13,
+ 90,13,1,0,100,1,100,9,108,5,109,14,90,14,1,0,
+ 100,1,100,10,108,5,109,15,90,15,1,0,100,1,100,11,
+ 108,5,109,16,90,16,1,0,100,1,100,12,108,5,109,17,
+ 90,17,1,0,100,13,132,0,90,18,121,14,41,15,122,57,
+ 84,104,101,32,109,97,99,104,105,110,101,114,121,32,111,102,
+ 32,105,109,112,111,114,116,108,105,98,58,32,102,105,110,100,
+ 101,114,115,44,32,108,111,97,100,101,114,115,44,32,104,111,
+ 111,107,115,44,32,101,116,99,46,233,1,0,0,0,41,1,
+ 218,10,77,111,100,117,108,101,83,112,101,99,41,1,218,15,
+ 66,117,105,108,116,105,110,73,109,112,111,114,116,101,114,41,
+ 1,218,14,70,114,111,122,101,110,73,109,112,111,114,116,101,
+ 114,41,5,218,15,83,79,85,82,67,69,95,83,85,70,70,
+ 73,88,69,83,218,23,68,69,66,85,71,95,66,89,84,69,
+ 67,79,68,69,95,83,85,70,70,73,88,69,83,218,27,79,
+ 80,84,73,77,73,90,69,68,95,66,89,84,69,67,79,68,
+ 69,95,83,85,70,70,73,88,69,83,218,17,66,89,84,69,
+ 67,79,68,69,95,83,85,70,70,73,88,69,83,218,18,69,
+ 88,84,69,78,83,73,79,78,95,83,85,70,70,73,88,69,
+ 83,41,1,218,21,87,105,110,100,111,119,115,82,101,103,105,
+ 115,116,114,121,70,105,110,100,101,114,41,1,218,10,80,97,
+ 116,104,70,105,110,100,101,114,41,1,218,10,70,105,108,101,
+ 70,105,110,100,101,114,41,1,218,16,83,111,117,114,99,101,
+ 70,105,108,101,76,111,97,100,101,114,41,1,218,20,83,111,
+ 117,114,99,101,108,101,115,115,70,105,108,101,76,111,97,100,
+ 101,114,41,1,218,19,69,120,116,101,110,115,105,111,110,70,
+ 105,108,101,76,111,97,100,101,114,41,1,218,15,78,97,109,
+ 101,115,112,97,99,101,76,111,97,100,101,114,99,0,0,0,
+ 0,0,0,0,0,0,0,0,0,2,0,0,0,3,0,0,
+ 0,243,42,0,0,0,151,0,116,0,0,0,0,0,0,0,
+ 0,0,116,2,0,0,0,0,0,0,0,0,122,0,0,0,
+ 116,4,0,0,0,0,0,0,0,0,122,0,0,0,83,0,
+ 41,1,122,65,82,101,116,117,114,110,115,32,97,32,108,105,
+ 115,116,32,111,102,32,97,108,108,32,114,101,99,111,103,110,
+ 105,122,101,100,32,109,111,100,117,108,101,32,115,117,102,102,
+ 105,120,101,115,32,102,111,114,32,116,104,105,115,32,112,114,
+ 111,99,101,115,115,41,3,114,6,0,0,0,114,9,0,0,
+ 0,114,10,0,0,0,169,0,243,0,0,0,0,250,28,60,
+ 102,114,111,122,101,110,32,105,109,112,111,114,116,108,105,98,
+ 46,109,97,99,104,105,110,101,114,121,62,218,12,97,108,108,
+ 95,115,117,102,102,105,120,101,115,114,22,0,0,0,18,0,
+ 0,0,115,20,0,0,0,128,0,228,11,26,212,29,46,209,
+ 11,46,212,49,67,209,11,67,208,4,67,114,20,0,0,0,
+ 78,41,19,218,7,95,95,100,111,99,95,95,218,10,95,98,
+ 111,111,116,115,116,114,97,112,114,3,0,0,0,114,4,0,
+ 0,0,114,5,0,0,0,218,19,95,98,111,111,116,115,116,
+ 114,97,112,95,101,120,116,101,114,110,97,108,114,6,0,0,
+ 0,114,7,0,0,0,114,8,0,0,0,114,9,0,0,0,
+ 114,10,0,0,0,114,11,0,0,0,114,12,0,0,0,114,
+ 13,0,0,0,114,14,0,0,0,114,15,0,0,0,114,16,
+ 0,0,0,114,17,0,0,0,114,22,0,0,0,114,19,0,
+ 0,0,114,20,0,0,0,114,21,0,0,0,250,8,60,109,
+ 111,100,117,108,101,62,114,26,0,0,0,1,0,0,0,115,
+ 56,0,0,0,240,3,1,1,1,217,0,63,229,0,34,221,
+ 0,39,221,0,38,247,2,2,1,41,245,0,2,1,41,245,
+ 6,0,1,55,221,0,43,221,0,43,221,0,49,221,0,53,
+ 221,0,52,221,0,48,243,6,2,1,68,1,114,20,0,0,
+ 0,
+};
diff --git a/contrib/tools/python3/Python/frozen_modules/importlib.util.h b/contrib/tools/python3/Python/frozen_modules/importlib.util.h
new file mode 100644
index 00000000000..22663178b90
--- /dev/null
+++ b/contrib/tools/python3/Python/frozen_modules/importlib.util.h
@@ -0,0 +1,705 @@
+/* Auto-generated by Programs/_freeze_module.py */
+const unsigned char _Py_M__importlib_util[] = {
+ 227,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,
+ 0,0,0,0,0,243,20,1,0,0,151,0,100,0,90,0,
+ 100,1,100,2,108,1,109,2,90,2,1,0,100,1,100,3,
+ 108,3,109,4,90,4,1,0,100,1,100,4,108,3,109,5,
+ 90,5,1,0,100,1,100,5,108,3,109,6,90,6,1,0,
+ 100,1,100,6,108,3,109,7,90,7,1,0,100,1,100,7,
+ 108,8,109,9,90,9,1,0,100,1,100,8,108,8,109,10,
+ 90,10,1,0,100,1,100,9,108,8,109,11,90,11,1,0,
+ 100,1,100,10,108,8,109,12,90,12,1,0,100,1,100,11,
+ 108,8,109,13,90,13,1,0,100,1,100,12,108,8,109,14,
+ 90,14,1,0,100,13,100,14,108,15,90,15,100,13,100,14,
+ 108,16,90,16,100,13,100,14,108,17,90,17,100,15,132,0,
+ 90,18,100,16,132,0,90,19,100,25,100,17,132,1,90,20,
+ 100,25,100,18,132,1,90,21,2,0,71,0,100,19,132,0,
+ 100,20,171,2,0,0,0,0,0,0,90,22,2,0,71,0,
+ 100,21,132,0,100,22,101,17,106,46,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,171,3,0,0,
+ 0,0,0,0,90,24,2,0,71,0,100,23,132,0,100,24,
+ 101,2,171,3,0,0,0,0,0,0,90,25,121,14,41,26,
+ 122,45,85,116,105,108,105,116,121,32,99,111,100,101,32,102,
+ 111,114,32,99,111,110,115,116,114,117,99,116,105,110,103,32,
+ 105,109,112,111,114,116,101,114,115,44,32,101,116,99,46,233,
+ 1,0,0,0,41,1,218,6,76,111,97,100,101,114,41,1,
+ 218,16,109,111,100,117,108,101,95,102,114,111,109,95,115,112,
+ 101,99,41,1,218,13,95,114,101,115,111,108,118,101,95,110,
+ 97,109,101,41,1,218,16,115,112,101,99,95,102,114,111,109,
+ 95,108,111,97,100,101,114,41,1,218,10,95,102,105,110,100,
+ 95,115,112,101,99,41,1,218,12,77,65,71,73,67,95,78,
+ 85,77,66,69,82,41,1,218,17,95,82,65,87,95,77,65,
+ 71,73,67,95,78,85,77,66,69,82,41,1,218,17,99,97,
+ 99,104,101,95,102,114,111,109,95,115,111,117,114,99,101,41,
+ 1,218,13,100,101,99,111,100,101,95,115,111,117,114,99,101,
+ 41,1,218,17,115,111,117,114,99,101,95,102,114,111,109,95,
+ 99,97,99,104,101,41,1,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,
+ 233,0,0,0,0,78,99,1,0,0,0,0,0,0,0,0,
+ 0,0,0,4,0,0,0,3,0,0,0,243,54,0,0,0,
+ 151,0,116,1,0,0,0,0,0,0,0,0,106,2,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 116,4,0,0,0,0,0,0,0,0,124,0,171,2,0,0,
+ 0,0,0,0,83,0,41,1,122,66,82,101,116,117,114,110,
+ 32,116,104,101,32,104,97,115,104,32,111,102,32,42,115,111,
+ 117,114,99,101,95,98,121,116,101,115,42,32,97,115,32,117,
+ 115,101,100,32,105,110,32,104,97,115,104,45,98,97,115,101,
+ 100,32,112,121,99,32,102,105,108,101,115,46,41,3,218,4,
+ 95,105,109,112,218,11,115,111,117,114,99,101,95,104,97,115,
+ 104,114,9,0,0,0,41,1,218,12,115,111,117,114,99,101,
+ 95,98,121,116,101,115,115,1,0,0,0,32,250,23,60,102,
+ 114,111,122,101,110,32,105,109,112,111,114,116,108,105,98,46,
+ 117,116,105,108,62,114,17,0,0,0,114,17,0,0,0,19,
+ 0,0,0,115,22,0,0,0,128,0,228,11,15,215,11,27,
+ 209,11,27,212,28,45,168,124,211,11,60,208,4,60,243,0,
+ 0,0,0,99,2,0,0,0,0,0,0,0,0,0,0,0,
+ 6,0,0,0,3,0,0,0,243,166,0,0,0,151,0,124,
+ 0,106,1,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,100,1,171,1,0,0,0,0,0,0,115,
+ 2,124,0,83,0,124,1,115,24,116,3,0,0,0,0,0,
+ 0,0,0,100,2,116,5,0,0,0,0,0,0,0,0,124,
+ 0,171,1,0,0,0,0,0,0,155,0,100,3,157,3,171,
+ 1,0,0,0,0,0,0,130,1,100,4,125,2,124,0,68,
+ 0,93,14,0,0,125,3,124,3,100,1,107,55,0,0,114,
+ 2,1,0,110,7,124,2,100,5,122,13,0,0,125,2,140,
+ 16,4,0,116,7,0,0,0,0,0,0,0,0,124,0,124,
+ 2,100,6,26,0,124,1,124,2,171,3,0,0,0,0,0,
+ 0,83,0,41,7,122,50,82,101,115,111,108,118,101,32,97,
+ 32,114,101,108,97,116,105,118,101,32,109,111,100,117,108,101,
+ 32,110,97,109,101,32,116,111,32,97,110,32,97,98,115,111,
+ 108,117,116,101,32,111,110,101,46,250,1,46,122,25,110,111,
+ 32,112,97,99,107,97,103,101,32,115,112,101,99,105,102,105,
+ 101,100,32,102,111,114,32,122,37,32,40,114,101,113,117,105,
+ 114,101,100,32,102,111,114,32,114,101,108,97,116,105,118,101,
+ 32,109,111,100,117,108,101,32,110,97,109,101,115,41,114,14,
+ 0,0,0,114,2,0,0,0,78,41,4,218,10,115,116,97,
+ 114,116,115,119,105,116,104,218,11,73,109,112,111,114,116,69,
+ 114,114,111,114,218,4,114,101,112,114,114,5,0,0,0,41,
+ 4,218,4,110,97,109,101,218,7,112,97,99,107,97,103,101,
+ 218,5,108,101,118,101,108,218,9,99,104,97,114,97,99,116,
+ 101,114,115,4,0,0,0,32,32,32,32,114,19,0,0,0,
+ 218,12,114,101,115,111,108,118,101,95,110,97,109,101,114,30,
+ 0,0,0,24,0,0,0,115,124,0,0,0,128,0,224,11,
+ 15,143,63,137,63,152,51,212,11,31,216,15,19,136,11,217,
+ 13,20,220,14,25,208,28,53,180,100,184,52,179,106,176,92,
+ 240,0,1,66,1,65,1,240,0,1,27,65,1,243,0,1,
+ 15,66,1,240,0,1,9,66,1,224,12,13,128,69,216,21,
+ 25,242,0,3,5,19,136,9,216,11,20,152,3,210,11,27,
+ 217,12,17,216,8,13,144,17,137,10,137,5,240,7,3,5,
+ 19,244,8,0,12,25,152,20,152,101,152,102,152,28,160,119,
+ 176,5,211,11,54,208,4,54,114,20,0,0,0,99,2,0,
+ 0,0,0,0,0,0,0,0,0,0,5,0,0,0,3,0,
+ 0,0,243,224,0,0,0,151,0,124,0,116,0,0,0,0,
+ 0,0,0,0,0,106,2,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,118,1,114,12,116,5,0,
+ 0,0,0,0,0,0,0,124,0,124,1,171,2,0,0,0,
+ 0,0,0,83,0,116,0,0,0,0,0,0,0,0,0,106,
+ 2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,124,0,25,0,0,0,125,2,124,2,128,1,121,
+ 1,9,0,124,2,106,6,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,125,3,124,3,128,14,116,
+ 9,0,0,0,0,0,0,0,0,124,0,155,0,100,2,157,
+ 2,171,1,0,0,0,0,0,0,130,1,124,3,83,0,35,
+ 0,116,10,0,0,0,0,0,0,0,0,36,0,114,16,1,
+ 0,116,9,0,0,0,0,0,0,0,0,124,0,155,0,100,
+ 3,157,2,171,1,0,0,0,0,0,0,100,1,130,2,119,
+ 0,120,3,89,0,119,1,41,4,97,135,2,0,0,82,101,
+ 116,117,114,110,32,116,104,101,32,115,112,101,99,32,102,111,
+ 114,32,116,104,101,32,115,112,101,99,105,102,105,101,100,32,
+ 109,111,100,117,108,101,46,10,10,32,32,32,32,70,105,114,
+ 115,116,44,32,115,121,115,46,109,111,100,117,108,101,115,32,
+ 105,115,32,99,104,101,99,107,101,100,32,116,111,32,115,101,
+ 101,32,105,102,32,116,104,101,32,109,111,100,117,108,101,32,
+ 119,97,115,32,97,108,114,101,97,100,121,32,105,109,112,111,
+ 114,116,101,100,46,32,73,102,10,32,32,32,32,115,111,44,
+ 32,116,104,101,110,32,115,121,115,46,109,111,100,117,108,101,
+ 115,91,110,97,109,101,93,46,95,95,115,112,101,99,95,95,
+ 32,105,115,32,114,101,116,117,114,110,101,100,46,32,73,102,
+ 32,116,104,97,116,32,104,97,112,112,101,110,115,32,116,111,
+ 32,98,101,10,32,32,32,32,115,101,116,32,116,111,32,78,
+ 111,110,101,44,32,116,104,101,110,32,86,97,108,117,101,69,
+ 114,114,111,114,32,105,115,32,114,97,105,115,101,100,46,32,
+ 73,102,32,116,104,101,32,109,111,100,117,108,101,32,105,115,
+ 32,110,111,116,32,105,110,10,32,32,32,32,115,121,115,46,
+ 109,111,100,117,108,101,115,44,32,116,104,101,110,32,115,121,
+ 115,46,109,101,116,97,95,112,97,116,104,32,105,115,32,115,
+ 101,97,114,99,104,101,100,32,102,111,114,32,97,32,115,117,
+ 105,116,97,98,108,101,32,115,112,101,99,32,119,105,116,104,
+ 32,116,104,101,10,32,32,32,32,118,97,108,117,101,32,111,
+ 102,32,39,112,97,116,104,39,32,103,105,118,101,110,32,116,
+ 111,32,116,104,101,32,102,105,110,100,101,114,115,46,32,78,
+ 111,110,101,32,105,115,32,114,101,116,117,114,110,101,100,32,
+ 105,102,32,110,111,32,115,112,101,99,32,99,111,117,108,100,
+ 10,32,32,32,32,98,101,32,102,111,117,110,100,46,10,10,
+ 32,32,32,32,68,111,116,116,101,100,32,110,97,109,101,115,
+ 32,100,111,32,110,111,116,32,104,97,118,101,32,116,104,101,
+ 105,114,32,112,97,114,101,110,116,32,112,97,99,107,97,103,
+ 101,115,32,105,109,112,108,105,99,105,116,108,121,32,105,109,
+ 112,111,114,116,101,100,46,32,89,111,117,32,119,105,108,108,
+ 10,32,32,32,32,109,111,115,116,32,108,105,107,101,108,121,
+ 32,110,101,101,100,32,116,111,32,101,120,112,108,105,99,105,
+ 116,108,121,32,105,109,112,111,114,116,32,97,108,108,32,112,
+ 97,114,101,110,116,32,112,97,99,107,97,103,101,115,32,105,
+ 110,32,116,104,101,32,112,114,111,112,101,114,10,32,32,32,
+ 32,111,114,100,101,114,32,102,111,114,32,97,32,115,117,98,
+ 109,111,100,117,108,101,32,116,111,32,103,101,116,32,116,104,
+ 101,32,99,111,114,114,101,99,116,32,115,112,101,99,46,10,
+ 10,32,32,32,32,78,250,17,46,95,95,115,112,101,99,95,
+ 95,32,105,115,32,78,111,110,101,250,20,46,95,95,115,112,
+ 101,99,95,95,32,105,115,32,110,111,116,32,115,101,116,41,
+ 6,218,3,115,121,115,218,7,109,111,100,117,108,101,115,114,
+ 7,0,0,0,218,8,95,95,115,112,101,99,95,95,218,10,
+ 86,97,108,117,101,69,114,114,111,114,218,14,65,116,116,114,
+ 105,98,117,116,101,69,114,114,111,114,41,4,114,26,0,0,
+ 0,218,4,112,97,116,104,218,6,109,111,100,117,108,101,218,
+ 4,115,112,101,99,115,4,0,0,0,32,32,32,32,114,19,
+ 0,0,0,218,20,95,102,105,110,100,95,115,112,101,99,95,
+ 102,114,111,109,95,112,97,116,104,114,42,0,0,0,39,0,
+ 0,0,115,136,0,0,0,128,0,240,30,0,8,12,148,51,
+ 151,59,145,59,209,7,30,220,15,25,152,36,160,4,211,15,
+ 37,208,8,37,228,17,20,151,27,145,27,152,84,209,17,34,
+ 136,6,216,11,17,136,62,216,19,23,240,2,7,9,24,216,
+ 19,25,151,63,145,63,136,68,240,8,0,16,20,136,124,220,
+ 22,32,160,68,160,54,208,41,58,208,33,59,211,22,60,208,
+ 16,60,216,19,23,136,75,248,244,11,0,16,30,242,0,1,
+ 9,70,1,220,18,28,160,4,152,118,208,37,57,208,29,58,
+ 211,18,59,192,20,208,12,69,240,3,1,9,70,1,250,115,
+ 11,0,0,0,182,12,65,20,0,193,20,25,65,45,3,99,
+ 2,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,
+ 3,0,0,0,243,208,1,0,0,151,0,124,0,106,1,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,100,1,171,1,0,0,0,0,0,0,114,12,116,3,0,
+ 0,0,0,0,0,0,0,124,0,124,1,171,2,0,0,0,
+ 0,0,0,110,1,124,0,125,2,124,2,116,4,0,0,0,
+ 0,0,0,0,0,106,6,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,118,1,114,64,124,2,106,
+ 9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,100,1,171,1,0,0,0,0,0,0,100,2,25,
+ 0,0,0,125,3,124,3,114,28,116,11,0,0,0,0,0,
+ 0,0,0,124,3,100,3,103,1,172,4,171,2,0,0,0,
+ 0,0,0,125,4,9,0,124,4,106,12,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,125,5,110,
+ 2,100,8,125,5,116,19,0,0,0,0,0,0,0,0,124,
+ 2,124,5,171,2,0,0,0,0,0,0,83,0,116,4,0,
+ 0,0,0,0,0,0,0,106,6,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,124,2,25,0,0,
+ 0,125,7,124,7,128,1,121,8,9,0,124,7,106,20,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,125,8,124,8,128,14,116,23,0,0,0,0,0,0,0,
+ 0,124,0,155,0,100,9,157,2,171,1,0,0,0,0,0,
+ 0,130,1,124,8,83,0,35,0,116,14,0,0,0,0,0,
+ 0,0,0,36,0,114,25,125,6,116,17,0,0,0,0,0,
+ 0,0,0,100,5,124,3,155,2,100,6,124,2,155,2,157,
+ 4,124,2,172,7,171,2,0,0,0,0,0,0,124,6,130,
+ 2,100,8,125,6,126,6,119,1,119,0,120,3,89,0,119,
+ 1,35,0,116,14,0,0,0,0,0,0,0,0,36,0,114,
+ 16,1,0,116,23,0,0,0,0,0,0,0,0,124,0,155,
+ 0,100,10,157,2,171,1,0,0,0,0,0,0,100,8,130,
+ 2,119,0,120,3,89,0,119,1,41,11,97,175,2,0,0,
+ 82,101,116,117,114,110,32,116,104,101,32,115,112,101,99,32,
+ 102,111,114,32,116,104,101,32,115,112,101,99,105,102,105,101,
+ 100,32,109,111,100,117,108,101,46,10,10,32,32,32,32,70,
+ 105,114,115,116,44,32,115,121,115,46,109,111,100,117,108,101,
+ 115,32,105,115,32,99,104,101,99,107,101,100,32,116,111,32,
+ 115,101,101,32,105,102,32,116,104,101,32,109,111,100,117,108,
+ 101,32,119,97,115,32,97,108,114,101,97,100,121,32,105,109,
+ 112,111,114,116,101,100,46,32,73,102,10,32,32,32,32,115,
+ 111,44,32,116,104,101,110,32,115,121,115,46,109,111,100,117,
+ 108,101,115,91,110,97,109,101,93,46,95,95,115,112,101,99,
+ 95,95,32,105,115,32,114,101,116,117,114,110,101,100,46,32,
+ 73,102,32,116,104,97,116,32,104,97,112,112,101,110,115,32,
+ 116,111,32,98,101,10,32,32,32,32,115,101,116,32,116,111,
+ 32,78,111,110,101,44,32,116,104,101,110,32,86,97,108,117,
+ 101,69,114,114,111,114,32,105,115,32,114,97,105,115,101,100,
+ 46,32,73,102,32,116,104,101,32,109,111,100,117,108,101,32,
+ 105,115,32,110,111,116,32,105,110,10,32,32,32,32,115,121,
+ 115,46,109,111,100,117,108,101,115,44,32,116,104,101,110,32,
+ 115,121,115,46,109,101,116,97,95,112,97,116,104,32,105,115,
+ 32,115,101,97,114,99,104,101,100,32,102,111,114,32,97,32,
+ 115,117,105,116,97,98,108,101,32,115,112,101,99,32,119,105,
+ 116,104,32,116,104,101,10,32,32,32,32,118,97,108,117,101,
+ 32,111,102,32,39,112,97,116,104,39,32,103,105,118,101,110,
+ 32,116,111,32,116,104,101,32,102,105,110,100,101,114,115,46,
+ 32,78,111,110,101,32,105,115,32,114,101,116,117,114,110,101,
+ 100,32,105,102,32,110,111,32,115,112,101,99,32,99,111,117,
+ 108,100,10,32,32,32,32,98,101,32,102,111,117,110,100,46,
+ 10,10,32,32,32,32,73,102,32,116,104,101,32,110,97,109,
+ 101,32,105,115,32,102,111,114,32,115,117,98,109,111,100,117,
+ 108,101,32,40,99,111,110,116,97,105,110,115,32,97,32,100,
+ 111,116,41,44,32,116,104,101,32,112,97,114,101,110,116,32,
+ 109,111,100,117,108,101,32,105,115,10,32,32,32,32,97,117,
+ 116,111,109,97,116,105,99,97,108,108,121,32,105,109,112,111,
+ 114,116,101,100,46,10,10,32,32,32,32,84,104,101,32,110,
+ 97,109,101,32,97,110,100,32,112,97,99,107,97,103,101,32,
+ 97,114,103,117,109,101,110,116,115,32,119,111,114,107,32,116,
+ 104,101,32,115,97,109,101,32,97,115,32,105,109,112,111,114,
+ 116,108,105,98,46,105,109,112,111,114,116,95,109,111,100,117,
+ 108,101,40,41,46,10,32,32,32,32,73,110,32,111,116,104,
+ 101,114,32,119,111,114,100,115,44,32,114,101,108,97,116,105,
+ 118,101,32,109,111,100,117,108,101,32,110,97,109,101,115,32,
+ 40,119,105,116,104,32,108,101,97,100,105,110,103,32,100,111,
+ 116,115,41,32,119,111,114,107,46,10,10,32,32,32,32,114,
+ 22,0,0,0,114,14,0,0,0,218,8,95,95,112,97,116,
+ 104,95,95,41,1,218,8,102,114,111,109,108,105,115,116,122,
+ 32,95,95,112,97,116,104,95,95,32,97,116,116,114,105,98,
+ 117,116,101,32,110,111,116,32,102,111,117,110,100,32,111,110,
+ 32,122,22,32,119,104,105,108,101,32,116,114,121,105,110,103,
+ 32,116,111,32,102,105,110,100,32,41,1,114,26,0,0,0,
+ 78,114,32,0,0,0,114,33,0,0,0,41,12,114,23,0,
+ 0,0,114,30,0,0,0,114,34,0,0,0,114,35,0,0,
+ 0,218,10,114,112,97,114,116,105,116,105,111,110,218,10,95,
+ 95,105,109,112,111,114,116,95,95,114,44,0,0,0,114,38,
+ 0,0,0,218,19,77,111,100,117,108,101,78,111,116,70,111,
+ 117,110,100,69,114,114,111,114,114,7,0,0,0,114,36,0,
+ 0,0,114,37,0,0,0,41,9,114,26,0,0,0,114,27,
+ 0,0,0,218,8,102,117,108,108,110,97,109,101,218,11,112,
+ 97,114,101,110,116,95,110,97,109,101,218,6,112,97,114,101,
+ 110,116,218,11,112,97,114,101,110,116,95,112,97,116,104,218,
+ 1,101,114,40,0,0,0,114,41,0,0,0,115,9,0,0,
+ 0,32,32,32,32,32,32,32,32,32,114,19,0,0,0,218,
+ 9,102,105,110,100,95,115,112,101,99,114,54,0,0,0,70,
+ 0,0,0,115,28,1,0,0,128,0,240,34,0,47,51,175,
+ 111,169,111,184,99,212,46,66,140,124,152,68,160,39,212,15,
+ 42,200,4,128,72,216,7,15,148,115,151,123,145,123,209,7,
+ 34,216,22,30,215,22,41,209,22,41,168,35,211,22,46,168,
+ 113,209,22,49,136,11,217,11,22,220,21,31,160,11,176,122,
+ 176,108,212,21,67,136,70,240,2,5,13,80,1,216,30,36,
+ 159,111,153,111,145,11,240,12,0,27,31,136,75,220,15,25,
+ 152,40,160,75,211,15,48,208,8,48,228,17,20,151,27,145,
+ 27,152,88,209,17,38,136,6,216,11,17,136,62,216,19,23,
+ 240,2,7,9,24,216,19,25,151,63,145,63,136,68,240,8,
+ 0,16,20,136,124,220,22,32,160,68,160,54,208,41,58,208,
+ 33,59,211,22,60,208,16,60,216,19,23,136,75,248,244,37,
+ 0,20,34,242,0,3,13,80,1,220,22,41,216,22,54,176,
+ 123,176,111,240,0,1,70,1,44,216,44,52,168,60,240,3,
+ 1,21,57,216,63,71,244,5,2,23,73,1,224,78,79,240,
+ 5,2,17,80,1,251,240,3,3,13,80,1,251,244,26,0,
+ 16,30,242,0,1,9,70,1,220,18,28,160,4,152,118,208,
+ 37,57,208,29,58,211,18,59,192,20,208,12,69,240,3,1,
+ 9,70,1,250,115,36,0,0,0,193,23,12,66,39,0,194,
+ 9,12,67,12,0,194,39,9,67,9,3,194,48,20,67,4,
+ 3,195,4,5,67,9,3,195,12,25,67,37,3,99,0,0,
+ 0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,
+ 0,0,243,50,0,0,0,151,0,101,0,90,1,100,0,90,
+ 2,100,1,90,3,100,2,132,0,90,4,100,3,132,0,90,
+ 5,100,4,132,0,90,6,101,7,100,5,132,0,171,0,0,
+ 0,0,0,0,0,90,8,121,6,41,7,218,43,95,105,110,
+ 99,111,109,112,97,116,105,98,108,101,95,101,120,116,101,110,
+ 115,105,111,110,95,109,111,100,117,108,101,95,114,101,115,116,
+ 114,105,99,116,105,111,110,115,97,103,5,0,0,65,32,99,
+ 111,110,116,101,120,116,32,109,97,110,97,103,101,114,32,116,
+ 104,97,116,32,99,97,110,32,116,101,109,112,111,114,97,114,
+ 105,108,121,32,115,107,105,112,32,116,104,101,32,99,111,109,
+ 112,97,116,105,98,105,108,105,116,121,32,99,104,101,99,107,
+ 46,10,10,32,32,32,32,78,79,84,69,58,32,84,104,105,
+ 115,32,102,117,110,99,116,105,111,110,32,105,115,32,109,101,
+ 97,110,116,32,116,111,32,97,99,99,111,109,109,111,100,97,
+ 116,101,32,97,110,32,117,110,117,115,117,97,108,32,99,97,
+ 115,101,59,32,111,110,101,10,32,32,32,32,119,104,105,99,
+ 104,32,105,115,32,108,105,107,101,108,121,32,116,111,32,101,
+ 118,101,110,116,117,97,108,108,121,32,103,111,32,97,119,97,
+ 121,46,32,32,84,104,101,114,101,39,115,32,105,115,32,97,
+ 32,112,114,101,116,116,121,32,103,111,111,100,10,32,32,32,
+ 32,99,104,97,110,99,101,32,116,104,105,115,32,105,115,32,
+ 110,111,116,32,119,104,97,116,32,121,111,117,32,119,101,114,
+ 101,32,108,111,111,107,105,110,103,32,102,111,114,46,10,10,
+ 32,32,32,32,87,65,82,78,73,78,71,58,32,85,115,105,
+ 110,103,32,116,104,105,115,32,102,117,110,99,116,105,111,110,
+ 32,116,111,32,100,105,115,97,98,108,101,32,116,104,101,32,
+ 99,104,101,99,107,32,99,97,110,32,108,101,97,100,32,116,
+ 111,10,32,32,32,32,117,110,101,120,112,101,99,116,101,100,
+ 32,98,101,104,97,118,105,111,114,32,97,110,100,32,101,118,
+ 101,110,32,99,114,97,115,104,101,115,46,32,32,73,116,32,
+ 115,104,111,117,108,100,32,111,110,108,121,32,98,101,32,117,
+ 115,101,100,32,100,117,114,105,110,103,10,32,32,32,32,101,
+ 120,116,101,110,115,105,111,110,32,109,111,100,117,108,101,32,
+ 100,101,118,101,108,111,112,109,101,110,116,46,10,10,32,32,
+ 32,32,73,102,32,34,100,105,115,97,98,108,101,95,99,104,
+ 101,99,107,34,32,105,115,32,84,114,117,101,32,116,104,101,
+ 110,32,116,104,101,32,99,111,109,112,97,116,105,98,105,108,
+ 105,116,121,32,99,104,101,99,107,32,119,105,108,108,32,110,
+ 111,116,10,32,32,32,32,104,97,112,112,101,110,32,119,104,
+ 105,108,101,32,116,104,101,32,99,111,110,116,101,120,116,32,
+ 109,97,110,97,103,101,114,32,105,115,32,97,99,116,105,118,
+ 101,46,32,32,79,116,104,101,114,119,105,115,101,32,116,104,
+ 101,32,99,104,101,99,107,10,32,32,32,32,42,119,105,108,
+ 108,42,32,104,97,112,112,101,110,46,10,10,32,32,32,32,
+ 78,111,114,109,97,108,108,121,44,32,101,120,116,101,110,115,
+ 105,111,110,115,32,116,104,97,116,32,100,111,32,110,111,116,
+ 32,115,117,112,112,111,114,116,32,109,117,108,116,105,112,108,
+ 101,32,105,110,116,101,114,112,114,101,116,101,114,115,10,32,
+ 32,32,32,109,97,121,32,110,111,116,32,98,101,32,105,109,
+ 112,111,114,116,101,100,32,105,110,32,97,32,115,117,98,105,
+ 110,116,101,114,112,114,101,116,101,114,46,32,32,84,104,97,
+ 116,32,105,109,112,108,105,101,115,32,109,111,100,117,108,101,
+ 115,10,32,32,32,32,116,104,97,116,32,100,111,32,110,111,
+ 116,32,105,109,112,108,101,109,101,110,116,32,109,117,108,116,
+ 105,45,112,104,97,115,101,32,105,110,105,116,32,111,114,32,
+ 116,104,97,116,32,101,120,112,108,105,99,105,116,108,121,32,
+ 111,102,32,111,117,116,46,10,10,32,32,32,32,76,105,107,
+ 101,119,105,115,101,32,102,111,114,32,109,111,100,117,108,101,
+ 115,32,105,109,112,111,114,116,32,105,110,32,97,32,115,117,
+ 98,105,110,116,101,114,112,101,116,101,114,32,119,105,116,104,
+ 32,105,116,115,32,111,119,110,32,71,73,76,10,32,32,32,
+ 32,119,104,101,110,32,116,104,101,32,101,120,116,101,110,115,
+ 105,111,110,32,100,111,101,115,32,110,111,116,32,115,117,112,
+ 112,111,114,116,32,97,32,112,101,114,45,105,110,116,101,114,
+ 112,114,101,116,101,114,32,71,73,76,46,32,32,84,104,105,
+ 115,10,32,32,32,32,105,109,112,108,105,101,115,32,116,104,
+ 101,32,109,111,100,117,108,101,32,100,111,101,115,32,110,111,
+ 116,32,104,97,118,101,32,97,32,80,121,95,109,111,100,95,
+ 109,117,108,116,105,112,108,101,95,105,110,116,101,114,112,114,
+ 101,116,101,114,115,32,115,108,111,116,10,32,32,32,32,115,
+ 101,116,32,116,111,32,80,121,95,77,79,68,95,80,69,82,
+ 95,73,78,84,69,82,80,82,69,84,69,82,95,71,73,76,
+ 95,83,85,80,80,79,82,84,69,68,46,10,10,32,32,32,
+ 32,73,110,32,98,111,116,104,32,99,97,115,101,115,44,32,
+ 116,104,105,115,32,99,111,110,116,101,120,116,32,109,97,110,
+ 97,103,101,114,32,109,97,121,32,98,101,32,117,115,101,100,
+ 32,116,111,32,116,101,109,112,111,114,97,114,105,108,121,10,
+ 32,32,32,32,100,105,115,97,98,108,101,32,116,104,101,32,
+ 99,104,101,99,107,32,102,111,114,32,99,111,109,112,97,116,
+ 105,98,108,101,32,101,120,116,101,110,115,105,111,110,32,109,
+ 111,100,117,108,101,115,46,10,10,32,32,32,32,89,111,117,
+ 32,99,97,110,32,103,101,116,32,116,104,101,32,115,97,109,
+ 101,32,101,102,102,101,99,116,32,97,115,32,116,104,105,115,
+ 32,102,117,110,99,116,105,111,110,32,98,121,32,105,109,112,
+ 108,101,109,101,110,116,105,110,103,32,116,104,101,10,32,32,
+ 32,32,98,97,115,105,99,32,105,110,116,101,114,102,97,99,
+ 101,32,111,102,32,109,117,108,116,105,45,112,104,97,115,101,
+ 32,105,110,105,116,32,40,80,69,80,32,52,56,57,41,32,
+ 97,110,100,32,108,121,105,110,103,32,97,98,111,117,116,10,
+ 32,32,32,32,115,117,112,112,111,114,116,32,102,111,114,32,
+ 109,117,108,105,116,112,108,101,32,105,110,116,101,114,112,114,
+ 101,116,101,114,115,32,40,111,114,32,112,101,114,45,105,110,
+ 116,101,114,112,114,101,116,101,114,32,71,73,76,41,46,10,
+ 32,32,32,32,99,1,0,0,0,0,0,0,0,1,0,0,
+ 0,3,0,0,0,3,0,0,0,243,36,0,0,0,151,0,
+ 116,1,0,0,0,0,0,0,0,0,124,1,171,1,0,0,
+ 0,0,0,0,124,0,95,1,0,0,0,0,0,0,0,0,
+ 121,0,169,1,78,41,2,218,4,98,111,111,108,218,13,100,
+ 105,115,97,98,108,101,95,99,104,101,99,107,41,2,218,4,
+ 115,101,108,102,114,60,0,0,0,115,2,0,0,0,32,32,
+ 114,19,0,0,0,218,8,95,95,105,110,105,116,95,95,122,
+ 52,95,105,110,99,111,109,112,97,116,105,98,108,101,95,101,
+ 120,116,101,110,115,105,111,110,95,109,111,100,117,108,101,95,
+ 114,101,115,116,114,105,99,116,105,111,110,115,46,95,95,105,
+ 110,105,116,95,95,151,0,0,0,115,15,0,0,0,128,0,
+ 220,29,33,160,45,211,29,48,136,4,213,8,26,114,20,0,
+ 0,0,99,1,0,0,0,0,0,0,0,0,0,0,0,3,
+ 0,0,0,3,0,0,0,243,78,0,0,0,151,0,116,1,
+ 0,0,0,0,0,0,0,0,106,2,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,124,0,106,4,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,171,1,0,0,0,0,0,0,124,0,95,3,0,0,
+ 0,0,0,0,0,0,124,0,83,0,114,58,0,0,0,41,
+ 4,114,16,0,0,0,218,39,95,111,118,101,114,114,105,100,
+ 101,95,109,117,108,116,105,95,105,110,116,101,114,112,95,101,
+ 120,116,101,110,115,105,111,110,115,95,99,104,101,99,107,218,
+ 8,111,118,101,114,114,105,100,101,218,3,111,108,100,169,1,
+ 114,61,0,0,0,115,1,0,0,0,32,114,19,0,0,0,
+ 218,9,95,95,101,110,116,101,114,95,95,122,53,95,105,110,
+ 99,111,109,112,97,116,105,98,108,101,95,101,120,116,101,110,
+ 115,105,111,110,95,109,111,100,117,108,101,95,114,101,115,116,
+ 114,105,99,116,105,111,110,115,46,95,95,101,110,116,101,114,
+ 95,95,154,0,0,0,115,29,0,0,0,128,0,220,19,23,
+ 215,19,63,209,19,63,192,4,199,13,193,13,211,19,78,136,
+ 4,140,8,216,15,19,136,11,114,20,0,0,0,99,1,0,
+ 0,0,0,0,0,0,0,0,0,0,3,0,0,0,7,0,
+ 0,0,243,74,0,0,0,151,0,124,0,106,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,
+ 2,124,0,96,0,116,3,0,0,0,0,0,0,0,0,106,
+ 4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,124,2,171,1,0,0,0,0,0,0,1,0,121,
+ 0,114,58,0,0,0,41,3,114,66,0,0,0,114,16,0,
+ 0,0,114,64,0,0,0,41,3,114,61,0,0,0,218,4,
+ 97,114,103,115,114,66,0,0,0,115,3,0,0,0,32,32,
+ 32,114,19,0,0,0,218,8,95,95,101,120,105,116,95,95,
+ 122,52,95,105,110,99,111,109,112,97,116,105,98,108,101,95,
+ 101,120,116,101,110,115,105,111,110,95,109,111,100,117,108,101,
+ 95,114,101,115,116,114,105,99,116,105,111,110,115,46,95,95,
+ 101,120,105,116,95,95,158,0,0,0,115,30,0,0,0,128,
+ 0,216,14,18,143,104,137,104,136,3,216,12,16,136,72,220,
+ 8,12,215,8,52,209,8,52,176,83,213,8,57,114,20,0,
+ 0,0,99,1,0,0,0,0,0,0,0,0,0,0,0,1,
+ 0,0,0,3,0,0,0,243,34,0,0,0,151,0,124,0,
+ 106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,114,2,100,1,83,0,100,2,83,0,41,3,
+ 78,233,255,255,255,255,114,2,0,0,0,41,1,114,60,0,
+ 0,0,114,67,0,0,0,115,1,0,0,0,32,114,19,0,
+ 0,0,114,65,0,0,0,122,52,95,105,110,99,111,109,112,
+ 97,116,105,98,108,101,95,101,120,116,101,110,115,105,111,110,
+ 95,109,111,100,117,108,101,95,114,101,115,116,114,105,99,116,
+ 105,111,110,115,46,111,118,101,114,114,105,100,101,163,0,0,
+ 0,115,21,0,0,0,128,0,224,21,25,215,21,39,210,21,
+ 39,136,114,208,8,46,168,81,208,8,46,114,20,0,0,0,
+ 78,41,9,218,8,95,95,110,97,109,101,95,95,218,10,95,
+ 95,109,111,100,117,108,101,95,95,218,12,95,95,113,117,97,
+ 108,110,97,109,101,95,95,218,7,95,95,100,111,99,95,95,
+ 114,62,0,0,0,114,68,0,0,0,114,71,0,0,0,218,
+ 8,112,114,111,112,101,114,116,121,114,65,0,0,0,169,0,
+ 114,20,0,0,0,114,19,0,0,0,114,56,0,0,0,114,
+ 56,0,0,0,119,0,0,0,115,42,0,0,0,132,0,241,
+ 2,29,5,8,242,62,1,5,49,242,6,2,5,20,242,8,
+ 3,5,58,240,10,0,6,14,241,2,1,5,47,243,3,0,
+ 6,14,241,2,1,5,47,114,20,0,0,0,114,56,0,0,
+ 0,99,0,0,0,0,0,0,0,0,0,0,0,0,1,0,
+ 0,0,0,0,0,0,243,28,0,0,0,151,0,101,0,90,
+ 1,100,0,90,2,100,1,90,3,100,2,132,0,90,4,100,
+ 3,132,0,90,5,121,4,41,5,218,11,95,76,97,122,121,
+ 77,111,100,117,108,101,122,75,65,32,115,117,98,99,108,97,
+ 115,115,32,111,102,32,116,104,101,32,109,111,100,117,108,101,
+ 32,116,121,112,101,32,119,104,105,99,104,32,116,114,105,103,
+ 103,101,114,115,32,108,111,97,100,105,110,103,32,117,112,111,
+ 110,32,97,116,116,114,105,98,117,116,101,32,97,99,99,101,
+ 115,115,46,99,2,0,0,0,0,0,0,0,0,0,0,0,
+ 6,0,0,0,3,0,0,0,243,90,2,0,0,151,0,116,
+ 0,0,0,0,0,0,0,0,0,106,2,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,124,0,95,
+ 2,0,0,0,0,0,0,0,0,124,0,106,6,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,
+ 8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,125,2,124,0,106,6,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,106,10,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,
+ 1,25,0,0,0,125,3,124,0,106,12,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,125,4,105,
+ 0,125,5,124,4,106,15,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,171,0,0,0,0,0,0,
+ 0,68,0,93,50,0,0,92,2,0,0,125,6,125,7,124,
+ 6,124,3,118,1,114,6,124,7,124,5,124,6,60,0,0,
+ 0,140,16,116,17,0,0,0,0,0,0,0,0,124,4,124,
+ 6,25,0,0,0,171,1,0,0,0,0,0,0,116,17,0,
+ 0,0,0,0,0,0,0,124,3,124,6,25,0,0,0,171,
+ 1,0,0,0,0,0,0,107,55,0,0,115,1,140,46,124,
+ 7,124,5,124,6,60,0,0,0,140,52,4,0,124,0,106,
+ 6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,106,18,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,106,21,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,124,0,171,1,0,
+ 0,0,0,0,0,1,0,124,2,116,22,0,0,0,0,0,
+ 0,0,0,106,24,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,118,0,114,55,116,17,0,0,0,
+ 0,0,0,0,0,124,0,171,1,0,0,0,0,0,0,116,
+ 17,0,0,0,0,0,0,0,0,116,22,0,0,0,0,0,
+ 0,0,0,106,24,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,124,2,25,0,0,0,171,1,0,
+ 0,0,0,0,0,107,55,0,0,114,15,116,27,0,0,0,
+ 0,0,0,0,0,100,2,124,2,155,2,100,3,157,3,171,
+ 1,0,0,0,0,0,0,130,1,124,0,106,12,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,
+ 29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,124,5,171,1,0,0,0,0,0,0,1,0,116,
+ 31,0,0,0,0,0,0,0,0,124,0,124,1,171,2,0,
+ 0,0,0,0,0,83,0,41,4,122,56,84,114,105,103,103,
+ 101,114,32,116,104,101,32,108,111,97,100,32,111,102,32,116,
+ 104,101,32,109,111,100,117,108,101,32,97,110,100,32,114,101,
+ 116,117,114,110,32,116,104,101,32,97,116,116,114,105,98,117,
+ 116,101,46,218,8,95,95,100,105,99,116,95,95,122,18,109,
+ 111,100,117,108,101,32,111,98,106,101,99,116,32,102,111,114,
+ 32,122,46,32,115,117,98,115,116,105,116,117,116,101,100,32,
+ 105,110,32,115,121,115,46,109,111,100,117,108,101,115,32,100,
+ 117,114,105,110,103,32,97,32,108,97,122,121,32,108,111,97,
+ 100,41,16,218,5,116,121,112,101,115,218,10,77,111,100,117,
+ 108,101,84,121,112,101,218,9,95,95,99,108,97,115,115,95,
+ 95,114,36,0,0,0,114,26,0,0,0,218,12,108,111,97,
+ 100,101,114,95,115,116,97,116,101,114,83,0,0,0,218,5,
+ 105,116,101,109,115,218,2,105,100,218,6,108,111,97,100,101,
+ 114,218,11,101,120,101,99,95,109,111,100,117,108,101,114,34,
+ 0,0,0,114,35,0,0,0,114,37,0,0,0,218,6,117,
+ 112,100,97,116,101,218,7,103,101,116,97,116,116,114,41,8,
+ 114,61,0,0,0,218,4,97,116,116,114,218,13,111,114,105,
+ 103,105,110,97,108,95,110,97,109,101,218,10,97,116,116,114,
+ 115,95,116,104,101,110,218,9,97,116,116,114,115,95,110,111,
+ 119,218,13,97,116,116,114,115,95,117,112,100,97,116,101,100,
+ 218,3,107,101,121,218,5,118,97,108,117,101,115,8,0,0,
+ 0,32,32,32,32,32,32,32,32,114,19,0,0,0,218,16,
+ 95,95,103,101,116,97,116,116,114,105,98,117,116,101,95,95,
+ 122,28,95,76,97,122,121,77,111,100,117,108,101,46,95,95,
+ 103,101,116,97,116,116,114,105,98,117,116,101,95,95,172,0,
+ 0,0,115,27,1,0,0,128,0,244,10,0,26,31,215,25,
+ 41,209,25,41,136,4,140,14,240,6,0,25,29,159,13,153,
+ 13,215,24,42,209,24,42,136,13,240,6,0,22,26,151,93,
+ 145,93,215,21,47,209,21,47,176,10,209,21,59,136,10,216,
+ 20,24,151,77,145,77,136,9,216,24,26,136,13,216,26,35,
+ 159,47,153,47,211,26,43,242,0,6,9,43,137,74,136,67,
+ 144,21,240,6,0,16,19,152,42,209,15,36,216,37,42,144,
+ 13,152,99,210,16,34,220,17,19,144,73,152,99,145,78,211,
+ 17,35,164,114,168,42,176,83,169,47,211,39,58,211,17,58,
+ 216,37,42,144,13,152,99,210,16,34,240,13,6,9,43,240,
+ 14,0,9,13,143,13,137,13,215,8,28,209,8,28,215,8,
+ 40,209,8,40,168,20,212,8,46,240,6,0,12,25,156,67,
+ 159,75,153,75,209,11,39,220,15,17,144,36,139,120,156,50,
+ 156,99,159,107,153,107,168,45,209,30,56,211,27,57,210,15,
+ 57,220,22,32,208,35,53,176,109,208,53,70,240,0,2,71,
+ 1,41,240,0,2,34,41,243,0,2,23,42,240,0,2,17,
+ 42,240,10,0,9,13,143,13,137,13,215,8,28,209,8,28,
+ 152,93,212,8,43,220,15,22,144,116,152,84,211,15,34,208,
+ 8,34,114,20,0,0,0,99,2,0,0,0,0,0,0,0,
+ 0,0,0,0,4,0,0,0,3,0,0,0,243,62,0,0,
+ 0,151,0,124,0,106,1,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,124,1,171,1,0,0,0,
+ 0,0,0,1,0,116,3,0,0,0,0,0,0,0,0,124,
+ 0,124,1,171,2,0,0,0,0,0,0,1,0,121,1,41,
+ 2,122,47,84,114,105,103,103,101,114,32,116,104,101,32,108,
+ 111,97,100,32,97,110,100,32,116,104,101,110,32,112,101,114,
+ 102,111,114,109,32,116,104,101,32,100,101,108,101,116,105,111,
+ 110,46,78,41,2,114,101,0,0,0,218,7,100,101,108,97,
+ 116,116,114,41,2,114,61,0,0,0,114,94,0,0,0,115,
+ 2,0,0,0,32,32,114,19,0,0,0,218,11,95,95,100,
+ 101,108,97,116,116,114,95,95,122,23,95,76,97,122,121,77,
+ 111,100,117,108,101,46,95,95,100,101,108,97,116,116,114,95,
+ 95,206,0,0,0,115,28,0,0,0,128,0,240,8,0,9,
+ 13,215,8,29,209,8,29,152,100,212,8,35,220,8,15,144,
+ 4,144,100,213,8,27,114,20,0,0,0,78,41,6,114,74,
+ 0,0,0,114,75,0,0,0,114,76,0,0,0,114,77,0,
+ 0,0,114,101,0,0,0,114,104,0,0,0,114,79,0,0,
+ 0,114,20,0,0,0,114,19,0,0,0,114,81,0,0,0,
+ 114,81,0,0,0,168,0,0,0,115,16,0,0,0,132,0,
+ 225,4,85,242,4,32,5,35,243,68,1,5,5,28,114,20,
+ 0,0,0,114,81,0,0,0,99,0,0,0,0,0,0,0,
+ 0,0,0,0,0,2,0,0,0,0,0,0,0,243,66,0,
+ 0,0,151,0,101,0,90,1,100,0,90,2,100,1,90,3,
+ 101,4,100,2,132,0,171,0,0,0,0,0,0,0,90,5,
+ 101,6,100,3,132,0,171,0,0,0,0,0,0,0,90,7,
+ 100,4,132,0,90,8,100,5,132,0,90,9,100,6,132,0,
+ 90,10,121,7,41,8,218,10,76,97,122,121,76,111,97,100,
+ 101,114,122,75,65,32,108,111,97,100,101,114,32,116,104,97,
+ 116,32,99,114,101,97,116,101,115,32,97,32,109,111,100,117,
+ 108,101,32,119,104,105,99,104,32,100,101,102,101,114,115,32,
+ 108,111,97,100,105,110,103,32,117,110,116,105,108,32,97,116,
+ 116,114,105,98,117,116,101,32,97,99,99,101,115,115,46,99,
+ 1,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,
+ 3,0,0,0,243,50,0,0,0,151,0,116,1,0,0,0,
+ 0,0,0,0,0,124,0,100,1,171,2,0,0,0,0,0,
+ 0,115,11,116,3,0,0,0,0,0,0,0,0,100,2,171,
+ 1,0,0,0,0,0,0,130,1,121,0,41,3,78,114,91,
+ 0,0,0,122,32,108,111,97,100,101,114,32,109,117,115,116,
+ 32,100,101,102,105,110,101,32,101,120,101,99,95,109,111,100,
+ 117,108,101,40,41,41,2,218,7,104,97,115,97,116,116,114,
+ 218,9,84,121,112,101,69,114,114,111,114,41,1,114,90,0,
+ 0,0,115,1,0,0,0,32,114,19,0,0,0,218,20,95,
+ 95,99,104,101,99,107,95,101,97,103,101,114,95,108,111,97,
+ 100,101,114,122,31,76,97,122,121,76,111,97,100,101,114,46,
+ 95,95,99,104,101,99,107,95,101,97,103,101,114,95,108,111,
+ 97,100,101,114,218,0,0,0,115,29,0,0,0,128,0,228,
+ 15,22,144,118,152,125,212,15,45,220,18,27,208,28,62,211,
+ 18,63,208,12,63,240,3,0,16,46,114,20,0,0,0,99,
+ 2,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,
+ 3,0,0,0,243,52,0,0,0,135,0,135,1,151,0,137,
+ 0,106,1,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,137,1,171,1,0,0,0,0,0,0,1,
+ 0,136,0,136,1,102,2,100,1,132,8,83,0,41,2,122,
+ 62,67,111,110,115,116,114,117,99,116,32,97,32,99,97,108,
+ 108,97,98,108,101,32,119,104,105,99,104,32,114,101,116,117,
+ 114,110,115,32,116,104,101,32,101,97,103,101,114,32,108,111,
+ 97,100,101,114,32,109,97,100,101,32,108,97,122,121,46,99,
+ 0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,
+ 31,0,0,0,243,32,0,0,0,149,2,151,0,2,0,137,
+ 2,2,0,137,3,124,0,105,0,124,1,164,1,142,1,171,
+ 1,0,0,0,0,0,0,83,0,114,58,0,0,0,114,79,
+ 0,0,0,41,4,114,70,0,0,0,218,6,107,119,97,114,
+ 103,115,218,3,99,108,115,114,90,0,0,0,115,4,0,0,
+ 0,32,32,128,128,114,19,0,0,0,250,8,60,108,97,109,
+ 98,100,97,62,122,36,76,97,122,121,76,111,97,100,101,114,
+ 46,102,97,99,116,111,114,121,46,60,108,111,99,97,108,115,
+ 62,46,60,108,97,109,98,100,97,62,227,0,0,0,115,22,
+ 0,0,0,248,128,0,161,115,169,54,176,52,208,43,66,184,
+ 54,209,43,66,211,39,67,128,0,114,20,0,0,0,41,1,
+ 218,31,95,76,97,122,121,76,111,97,100,101,114,95,95,99,
+ 104,101,99,107,95,101,97,103,101,114,95,108,111,97,100,101,
+ 114,41,2,114,114,0,0,0,114,90,0,0,0,115,2,0,
+ 0,0,96,96,114,19,0,0,0,218,7,102,97,99,116,111,
+ 114,121,122,18,76,97,122,121,76,111,97,100,101,114,46,102,
+ 97,99,116,111,114,121,223,0,0,0,115,25,0,0,0,249,
+ 128,0,240,6,0,9,12,215,8,32,209,8,32,160,22,212,
+ 8,40,220,15,67,208,8,67,114,20,0,0,0,99,2,0,
+ 0,0,0,0,0,0,0,0,0,0,3,0,0,0,3,0,
+ 0,0,243,52,0,0,0,151,0,124,0,106,1,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,
+ 1,171,1,0,0,0,0,0,0,1,0,124,1,124,0,95,
+ 1,0,0,0,0,0,0,0,0,121,0,114,58,0,0,0,
+ 41,2,114,116,0,0,0,114,90,0,0,0,41,2,114,61,
+ 0,0,0,114,90,0,0,0,115,2,0,0,0,32,32,114,
+ 19,0,0,0,114,62,0,0,0,122,19,76,97,122,121,76,
+ 111,97,100,101,114,46,95,95,105,110,105,116,95,95,229,0,
+ 0,0,115,23,0,0,0,128,0,216,8,12,215,8,33,209,
+ 8,33,160,38,212,8,41,216,22,28,136,4,141,11,114,20,
+ 0,0,0,99,2,0,0,0,0,0,0,0,0,0,0,0,
+ 3,0,0,0,3,0,0,0,243,56,0,0,0,151,0,124,
+ 0,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,106,3,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,124,1,171,1,0,0,0,
+ 0,0,0,83,0,114,58,0,0,0,41,2,114,90,0,0,
+ 0,218,13,99,114,101,97,116,101,95,109,111,100,117,108,101,
+ 41,2,114,61,0,0,0,114,41,0,0,0,115,2,0,0,
+ 0,32,32,114,19,0,0,0,114,120,0,0,0,122,24,76,
+ 97,122,121,76,111,97,100,101,114,46,99,114,101,97,116,101,
+ 95,109,111,100,117,108,101,233,0,0,0,115,23,0,0,0,
+ 128,0,216,15,19,143,123,137,123,215,15,40,209,15,40,168,
+ 20,211,15,46,208,8,46,114,20,0,0,0,99,2,0,0,
+ 0,0,0,0,0,0,0,0,0,3,0,0,0,3,0,0,
+ 0,243,240,0,0,0,151,0,124,0,106,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,1,
+ 106,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,95,0,0,0,0,0,0,0,0,0,124,0,
+ 106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,124,1,95,2,0,0,0,0,0,0,0,0,
+ 105,0,125,2,124,1,106,6,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,106,9,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,0,
+ 0,0,0,0,0,0,124,2,100,1,60,0,0,0,124,1,
+ 106,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,124,2,100,2,60,0,0,0,124,2,124,1,
+ 106,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,95,6,0,0,0,0,0,0,0,0,116,14,
+ 0,0,0,0,0,0,0,0,124,1,95,5,0,0,0,0,
+ 0,0,0,0,121,3,41,4,122,28,77,97,107,101,32,116,
+ 104,101,32,109,111,100,117,108,101,32,108,111,97,100,32,108,
+ 97,122,105,108,121,46,114,83,0,0,0,114,86,0,0,0,
+ 78,41,8,114,90,0,0,0,114,36,0,0,0,218,10,95,
+ 95,108,111,97,100,101,114,95,95,114,83,0,0,0,218,4,
+ 99,111,112,121,114,86,0,0,0,114,87,0,0,0,114,81,
+ 0,0,0,41,3,114,61,0,0,0,114,40,0,0,0,114,
+ 87,0,0,0,115,3,0,0,0,32,32,32,114,19,0,0,
+ 0,114,91,0,0,0,122,22,76,97,122,121,76,111,97,100,
+ 101,114,46,101,120,101,99,95,109,111,100,117,108,101,236,0,
+ 0,0,115,96,0,0,0,128,0,224,33,37,167,27,161,27,
+ 136,6,143,15,137,15,212,8,30,216,28,32,159,75,153,75,
+ 136,6,212,8,25,240,10,0,24,26,136,12,216,35,41,167,
+ 63,161,63,215,35,55,209,35,55,211,35,57,136,12,144,90,
+ 209,8,32,216,36,42,215,36,52,209,36,52,136,12,144,91,
+ 209,8,33,216,39,51,136,6,143,15,137,15,212,8,36,220,
+ 27,38,136,6,213,8,24,114,20,0,0,0,78,41,11,114,
+ 74,0,0,0,114,75,0,0,0,114,76,0,0,0,114,77,
+ 0,0,0,218,12,115,116,97,116,105,99,109,101,116,104,111,
+ 100,114,116,0,0,0,218,11,99,108,97,115,115,109,101,116,
+ 104,111,100,114,117,0,0,0,114,62,0,0,0,114,120,0,
+ 0,0,114,91,0,0,0,114,79,0,0,0,114,20,0,0,
+ 0,114,19,0,0,0,114,106,0,0,0,114,106,0,0,0,
+ 214,0,0,0,115,62,0,0,0,132,0,225,4,85,224,5,
+ 17,241,2,2,5,64,1,243,3,0,6,18,240,2,2,5,
+ 64,1,240,8,0,6,17,241,2,3,5,68,1,243,3,0,
+ 6,17,240,2,3,5,68,1,242,10,2,5,29,242,8,1,
+ 5,47,243,6,12,5,39,114,20,0,0,0,114,106,0,0,
+ 0,114,58,0,0,0,41,26,114,77,0,0,0,218,4,95,
+ 97,98,99,114,3,0,0,0,218,10,95,98,111,111,116,115,
+ 116,114,97,112,114,4,0,0,0,114,5,0,0,0,114,6,
+ 0,0,0,114,7,0,0,0,218,19,95,98,111,111,116,115,
+ 116,114,97,112,95,101,120,116,101,114,110,97,108,114,8,0,
+ 0,0,114,9,0,0,0,114,10,0,0,0,114,11,0,0,
+ 0,114,12,0,0,0,114,13,0,0,0,114,16,0,0,0,
+ 114,34,0,0,0,114,84,0,0,0,114,17,0,0,0,114,
+ 30,0,0,0,114,42,0,0,0,114,54,0,0,0,114,56,
+ 0,0,0,114,85,0,0,0,114,81,0,0,0,114,106,0,
+ 0,0,114,79,0,0,0,114,20,0,0,0,114,19,0,0,
+ 0,250,8,60,109,111,100,117,108,101,62,114,129,0,0,0,
+ 1,0,0,0,115,113,0,0,0,240,3,1,1,1,217,0,
+ 51,221,0,24,221,0,40,221,0,37,221,0,40,221,0,34,
+ 221,0,45,221,0,50,221,0,50,221,0,46,221,0,50,221,
+ 0,56,227,0,11,219,0,10,219,0,12,242,6,2,1,61,
+ 242,10,12,1,55,243,30,28,1,24,243,62,42,1,24,247,
+ 98,1,46,1,47,241,0,46,1,47,244,98,1,43,1,28,
+ 144,37,215,18,34,209,18,34,244,0,43,1,28,244,92,1,
+ 34,1,39,144,22,245,0,34,1,39,114,20,0,0,0,
+};
diff --git a/contrib/tools/python3/Python/frozen_modules/io.h b/contrib/tools/python3/Python/frozen_modules/io.h
new file mode 100644
index 00000000000..a0c9f67c889
--- /dev/null
+++ b/contrib/tools/python3/Python/frozen_modules/io.h
@@ -0,0 +1,260 @@
+/* Auto-generated by Programs/_freeze_module.py */
+const unsigned char _Py_M__io[] = {
+ 227,0,0,0,0,0,0,0,0,0,0,0,0,6,0,0,
+ 0,0,0,0,0,243,32,2,0,0,151,0,100,0,90,0,
+ 100,1,90,1,103,0,100,2,162,1,90,2,100,3,100,4,
+ 108,3,90,3,100,3,100,4,108,4,90,4,100,3,100,5,
+ 108,3,109,5,90,5,109,6,90,6,109,7,90,7,109,8,
+ 90,8,109,9,90,9,109,10,90,10,109,11,90,11,109,12,
+ 90,12,109,13,90,13,109,14,90,14,109,15,90,15,109,16,
+ 90,16,109,17,90,17,109,18,90,18,109,19,90,19,1,0,
+ 100,6,101,7,95,20,0,0,0,0,0,0,0,0,100,3,
+ 90,21,100,7,90,22,100,8,90,23,2,0,71,0,100,9,
+ 132,0,100,10,101,3,106,48,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,101,4,106,50,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 172,11,171,4,0,0,0,0,0,0,90,26,2,0,71,0,
+ 100,12,132,0,100,13,101,3,106,54,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,101,26,171,4,
+ 0,0,0,0,0,0,90,28,2,0,71,0,100,14,132,0,
+ 100,15,101,3,106,58,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,101,26,171,4,0,0,0,0,
+ 0,0,90,30,2,0,71,0,100,16,132,0,100,17,101,3,
+ 106,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,101,26,171,4,0,0,0,0,0,0,90,32,
+ 101,28,106,67,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,101,10,171,1,0,0,0,0,0,0,
+ 1,0,101,11,101,13,101,14,101,16,101,15,102,5,68,0,
+ 93,19,0,0,90,34,101,30,106,67,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,101,34,171,1,
+ 0,0,0,0,0,0,1,0,140,21,4,0,101,12,101,19,
+ 102,2,68,0,93,19,0,0,90,34,101,32,106,67,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 101,34,171,1,0,0,0,0,0,0,1,0,140,21,4,0,
+ 91,34,9,0,100,3,100,18,108,3,109,35,90,35,1,0,
+ 101,28,106,67,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,101,35,171,1,0,0,0,0,0,0,
+ 1,0,121,4,35,0,101,36,36,0,114,3,1,0,89,0,
+ 121,4,119,0,120,3,89,0,119,1,41,19,97,193,5,0,
+ 0,84,104,101,32,105,111,32,109,111,100,117,108,101,32,112,
+ 114,111,118,105,100,101,115,32,116,104,101,32,80,121,116,104,
+ 111,110,32,105,110,116,101,114,102,97,99,101,115,32,116,111,
+ 32,115,116,114,101,97,109,32,104,97,110,100,108,105,110,103,
+ 46,32,84,104,101,10,98,117,105,108,116,105,110,32,111,112,
+ 101,110,32,102,117,110,99,116,105,111,110,32,105,115,32,100,
+ 101,102,105,110,101,100,32,105,110,32,116,104,105,115,32,109,
+ 111,100,117,108,101,46,10,10,65,116,32,116,104,101,32,116,
+ 111,112,32,111,102,32,116,104,101,32,73,47,79,32,104,105,
+ 101,114,97,114,99,104,121,32,105,115,32,116,104,101,32,97,
+ 98,115,116,114,97,99,116,32,98,97,115,101,32,99,108,97,
+ 115,115,32,73,79,66,97,115,101,46,32,73,116,10,100,101,
+ 102,105,110,101,115,32,116,104,101,32,98,97,115,105,99,32,
+ 105,110,116,101,114,102,97,99,101,32,116,111,32,97,32,115,
+ 116,114,101,97,109,46,32,78,111,116,101,44,32,104,111,119,
+ 101,118,101,114,44,32,116,104,97,116,32,116,104,101,114,101,
+ 32,105,115,32,110,111,10,115,101,112,97,114,97,116,105,111,
+ 110,32,98,101,116,119,101,101,110,32,114,101,97,100,105,110,
+ 103,32,97,110,100,32,119,114,105,116,105,110,103,32,116,111,
+ 32,115,116,114,101,97,109,115,59,32,105,109,112,108,101,109,
+ 101,110,116,97,116,105,111,110,115,32,97,114,101,10,97,108,
+ 108,111,119,101,100,32,116,111,32,114,97,105,115,101,32,97,
+ 110,32,79,83,69,114,114,111,114,32,105,102,32,116,104,101,
+ 121,32,100,111,32,110,111,116,32,115,117,112,112,111,114,116,
+ 32,97,32,103,105,118,101,110,32,111,112,101,114,97,116,105,
+ 111,110,46,10,10,69,120,116,101,110,100,105,110,103,32,73,
+ 79,66,97,115,101,32,105,115,32,82,97,119,73,79,66,97,
+ 115,101,32,119,104,105,99,104,32,100,101,97,108,115,32,115,
+ 105,109,112,108,121,32,119,105,116,104,32,116,104,101,32,114,
+ 101,97,100,105,110,103,32,97,110,100,10,119,114,105,116,105,
+ 110,103,32,111,102,32,114,97,119,32,98,121,116,101,115,32,
+ 116,111,32,97,32,115,116,114,101,97,109,46,32,70,105,108,
+ 101,73,79,32,115,117,98,99,108,97,115,115,101,115,32,82,
+ 97,119,73,79,66,97,115,101,32,116,111,32,112,114,111,118,
+ 105,100,101,10,97,110,32,105,110,116,101,114,102,97,99,101,
+ 32,116,111,32,79,83,32,102,105,108,101,115,46,10,10,66,
+ 117,102,102,101,114,101,100,73,79,66,97,115,101,32,100,101,
+ 97,108,115,32,119,105,116,104,32,98,117,102,102,101,114,105,
+ 110,103,32,111,110,32,97,32,114,97,119,32,98,121,116,101,
+ 32,115,116,114,101,97,109,32,40,82,97,119,73,79,66,97,
+ 115,101,41,46,32,73,116,115,10,115,117,98,99,108,97,115,
+ 115,101,115,44,32,66,117,102,102,101,114,101,100,87,114,105,
+ 116,101,114,44,32,66,117,102,102,101,114,101,100,82,101,97,
+ 100,101,114,44,32,97,110,100,32,66,117,102,102,101,114,101,
+ 100,82,87,80,97,105,114,32,98,117,102,102,101,114,10,115,
+ 116,114,101,97,109,115,32,116,104,97,116,32,97,114,101,32,
+ 114,101,97,100,97,98,108,101,44,32,119,114,105,116,97,98,
+ 108,101,44,32,97,110,100,32,98,111,116,104,32,114,101,115,
+ 112,101,99,116,105,118,101,108,121,46,10,66,117,102,102,101,
+ 114,101,100,82,97,110,100,111,109,32,112,114,111,118,105,100,
+ 101,115,32,97,32,98,117,102,102,101,114,101,100,32,105,110,
+ 116,101,114,102,97,99,101,32,116,111,32,114,97,110,100,111,
+ 109,32,97,99,99,101,115,115,10,115,116,114,101,97,109,115,
+ 46,32,66,121,116,101,115,73,79,32,105,115,32,97,32,115,
+ 105,109,112,108,101,32,115,116,114,101,97,109,32,111,102,32,
+ 105,110,45,109,101,109,111,114,121,32,98,121,116,101,115,46,
+ 10,10,65,110,111,116,104,101,114,32,73,79,66,97,115,101,
+ 32,115,117,98,99,108,97,115,115,44,32,84,101,120,116,73,
+ 79,66,97,115,101,44,32,100,101,97,108,115,32,119,105,116,
+ 104,32,116,104,101,32,101,110,99,111,100,105,110,103,32,97,
+ 110,100,32,100,101,99,111,100,105,110,103,10,111,102,32,115,
+ 116,114,101,97,109,115,32,105,110,116,111,32,116,101,120,116,
+ 46,32,84,101,120,116,73,79,87,114,97,112,112,101,114,44,
+ 32,119,104,105,99,104,32,101,120,116,101,110,100,115,32,105,
+ 116,44,32,105,115,32,97,32,98,117,102,102,101,114,101,100,
+ 32,116,101,120,116,10,105,110,116,101,114,102,97,99,101,32,
+ 116,111,32,97,32,98,117,102,102,101,114,101,100,32,114,97,
+ 119,32,115,116,114,101,97,109,32,40,96,66,117,102,102,101,
+ 114,101,100,73,79,66,97,115,101,96,41,46,32,70,105,110,
+ 97,108,108,121,44,32,83,116,114,105,110,103,73,79,10,105,
+ 115,32,97,110,32,105,110,45,109,101,109,111,114,121,32,115,
+ 116,114,101,97,109,32,102,111,114,32,116,101,120,116,46,10,
+ 10,65,114,103,117,109,101,110,116,32,110,97,109,101,115,32,
+ 97,114,101,32,110,111,116,32,112,97,114,116,32,111,102,32,
+ 116,104,101,32,115,112,101,99,105,102,105,99,97,116,105,111,
+ 110,44,32,97,110,100,32,111,110,108,121,32,116,104,101,32,
+ 97,114,103,117,109,101,110,116,115,10,111,102,32,111,112,101,
+ 110,40,41,32,97,114,101,32,105,110,116,101,110,100,101,100,
+ 32,116,111,32,98,101,32,117,115,101,100,32,97,115,32,107,
+ 101,121,119,111,114,100,32,97,114,103,117,109,101,110,116,115,
+ 46,10,10,100,97,116,97,58,10,10,68,69,70,65,85,76,
+ 84,95,66,85,70,70,69,82,95,83,73,90,69,10,10,32,
+ 32,32,65,110,32,105,110,116,32,99,111,110,116,97,105,110,
+ 105,110,103,32,116,104,101,32,100,101,102,97,117,108,116,32,
+ 98,117,102,102,101,114,32,115,105,122,101,32,117,115,101,100,
+ 32,98,121,32,116,104,101,32,109,111,100,117,108,101,39,115,
+ 32,98,117,102,102,101,114,101,100,10,32,32,32,73,47,79,
+ 32,99,108,97,115,115,101,115,46,32,111,112,101,110,40,41,
+ 32,117,115,101,115,32,116,104,101,32,102,105,108,101,39,115,
+ 32,98,108,107,115,105,122,101,32,40,97,115,32,111,98,116,
+ 97,105,110,101,100,32,98,121,32,111,115,46,115,116,97,116,
+ 41,32,105,102,10,32,32,32,112,111,115,115,105,98,108,101,
+ 46,10,122,235,71,117,105,100,111,32,118,97,110,32,82,111,
+ 115,115,117,109,32,60,103,117,105,100,111,64,112,121,116,104,
+ 111,110,46,111,114,103,62,44,32,77,105,107,101,32,86,101,
+ 114,100,111,110,101,32,60,109,105,107,101,46,118,101,114,100,
+ 111,110,101,64,103,109,97,105,108,46,99,111,109,62,44,32,
+ 77,97,114,107,32,82,117,115,115,101,108,108,32,60,109,97,
+ 114,107,46,114,117,115,115,101,108,108,64,122,101,110,46,99,
+ 111,46,117,107,62,44,32,65,110,116,111,105,110,101,32,80,
+ 105,116,114,111,117,32,60,115,111,108,105,112,115,105,115,64,
+ 112,105,116,114,111,117,46,110,101,116,62,44,32,65,109,97,
+ 117,114,121,32,70,111,114,103,101,111,116,32,100,39,65,114,
+ 99,32,60,97,109,97,117,114,121,102,97,64,103,109,97,105,
+ 108,46,99,111,109,62,44,32,66,101,110,106,97,109,105,110,
+ 32,80,101,116,101,114,115,111,110,32,60,98,101,110,106,97,
+ 109,105,110,64,112,121,116,104,111,110,46,111,114,103,62,41,
+ 22,218,15,66,108,111,99,107,105,110,103,73,79,69,114,114,
+ 111,114,218,4,111,112,101,110,218,9,111,112,101,110,95,99,
+ 111,100,101,218,6,73,79,66,97,115,101,218,9,82,97,119,
+ 73,79,66,97,115,101,218,6,70,105,108,101,73,79,218,7,
+ 66,121,116,101,115,73,79,218,8,83,116,114,105,110,103,73,
+ 79,218,14,66,117,102,102,101,114,101,100,73,79,66,97,115,
+ 101,218,14,66,117,102,102,101,114,101,100,82,101,97,100,101,
+ 114,218,14,66,117,102,102,101,114,101,100,87,114,105,116,101,
+ 114,218,14,66,117,102,102,101,114,101,100,82,87,80,97,105,
+ 114,218,14,66,117,102,102,101,114,101,100,82,97,110,100,111,
+ 109,218,10,84,101,120,116,73,79,66,97,115,101,218,13,84,
+ 101,120,116,73,79,87,114,97,112,112,101,114,218,20,85,110,
+ 115,117,112,112,111,114,116,101,100,79,112,101,114,97,116,105,
+ 111,110,218,8,83,69,69,75,95,83,69,84,218,8,83,69,
+ 69,75,95,67,85,82,218,8,83,69,69,75,95,69,78,68,
+ 218,19,68,69,70,65,85,76,84,95,66,85,70,70,69,82,
+ 95,83,73,90,69,218,13,116,101,120,116,95,101,110,99,111,
+ 100,105,110,103,218,25,73,110,99,114,101,109,101,110,116,97,
+ 108,78,101,119,108,105,110,101,68,101,99,111,100,101,114,233,
+ 0,0,0,0,78,41,15,114,21,0,0,0,114,2,0,0,
+ 0,114,17,0,0,0,114,3,0,0,0,114,4,0,0,0,
+ 114,7,0,0,0,114,8,0,0,0,114,9,0,0,0,114,
+ 11,0,0,0,114,12,0,0,0,114,13,0,0,0,114,14,
+ 0,0,0,114,23,0,0,0,114,22,0,0,0,114,16,0,
+ 0,0,218,2,105,111,233,1,0,0,0,233,2,0,0,0,
+ 99,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,
+ 0,0,0,0,0,243,56,0,0,0,151,0,101,0,90,1,
+ 100,0,90,2,101,3,106,8,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,106,10,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,5,
+ 121,1,41,2,114,5,0,0,0,78,41,6,218,8,95,95,
+ 110,97,109,101,95,95,218,10,95,95,109,111,100,117,108,101,
+ 95,95,218,12,95,95,113,117,97,108,110,97,109,101,95,95,
+ 218,3,95,105,111,218,7,95,73,79,66,97,115,101,218,7,
+ 95,95,100,111,99,95,95,169,0,243,0,0,0,0,250,11,
+ 60,102,114,111,122,101,110,32,105,111,62,114,5,0,0,0,
+ 114,5,0,0,0,72,0,0,0,115,17,0,0,0,132,0,
+ 216,14,17,143,107,137,107,215,14,33,209,14,33,129,71,114,
+ 36,0,0,0,114,5,0,0,0,41,1,218,9,109,101,116,
+ 97,99,108,97,115,115,99,0,0,0,0,0,0,0,0,0,
+ 0,0,0,1,0,0,0,0,0,0,0,243,56,0,0,0,
+ 151,0,101,0,90,1,100,0,90,2,101,3,106,8,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 106,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,90,5,121,1,41,2,114,6,0,0,0,78,
+ 41,6,114,29,0,0,0,114,30,0,0,0,114,31,0,0,
+ 0,114,32,0,0,0,218,10,95,82,97,119,73,79,66,97,
+ 115,101,114,34,0,0,0,114,35,0,0,0,114,36,0,0,
+ 0,114,37,0,0,0,114,6,0,0,0,114,6,0,0,0,
+ 75,0,0,0,115,17,0,0,0,132,0,216,14,17,143,110,
+ 137,110,215,14,36,209,14,36,129,71,114,36,0,0,0,114,
+ 6,0,0,0,99,0,0,0,0,0,0,0,0,0,0,0,
+ 0,1,0,0,0,0,0,0,0,243,56,0,0,0,151,0,
+ 101,0,90,1,100,0,90,2,101,3,106,8,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,10,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,90,5,121,1,41,2,114,10,0,0,0,78,41,6,
+ 114,29,0,0,0,114,30,0,0,0,114,31,0,0,0,114,
+ 32,0,0,0,218,15,95,66,117,102,102,101,114,101,100,73,
+ 79,66,97,115,101,114,34,0,0,0,114,35,0,0,0,114,
+ 36,0,0,0,114,37,0,0,0,114,10,0,0,0,114,10,
+ 0,0,0,78,0,0,0,115,19,0,0,0,132,0,216,14,
+ 17,215,14,33,209,14,33,215,14,41,209,14,41,129,71,114,
+ 36,0,0,0,114,10,0,0,0,99,0,0,0,0,0,0,
+ 0,0,0,0,0,0,1,0,0,0,0,0,0,0,243,56,
+ 0,0,0,151,0,101,0,90,1,100,0,90,2,101,3,106,
+ 8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,106,10,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,90,5,121,1,41,2,114,15,0,
+ 0,0,78,41,6,114,29,0,0,0,114,30,0,0,0,114,
+ 31,0,0,0,114,32,0,0,0,218,11,95,84,101,120,116,
+ 73,79,66,97,115,101,114,34,0,0,0,114,35,0,0,0,
+ 114,36,0,0,0,114,37,0,0,0,114,15,0,0,0,114,
+ 15,0,0,0,81,0,0,0,115,17,0,0,0,132,0,216,
+ 14,17,143,111,137,111,215,14,37,209,14,37,129,71,114,36,
+ 0,0,0,114,15,0,0,0,41,1,218,17,95,87,105,110,
+ 100,111,119,115,67,111,110,115,111,108,101,73,79,41,37,114,
+ 34,0,0,0,218,10,95,95,97,117,116,104,111,114,95,95,
+ 218,7,95,95,97,108,108,95,95,114,32,0,0,0,218,3,
+ 97,98,99,114,21,0,0,0,114,2,0,0,0,114,17,0,
+ 0,0,114,3,0,0,0,114,4,0,0,0,114,7,0,0,
+ 0,114,8,0,0,0,114,9,0,0,0,114,11,0,0,0,
+ 114,12,0,0,0,114,13,0,0,0,114,14,0,0,0,114,
+ 23,0,0,0,114,22,0,0,0,114,16,0,0,0,114,30,
+ 0,0,0,114,18,0,0,0,114,19,0,0,0,114,20,0,
+ 0,0,114,33,0,0,0,218,7,65,66,67,77,101,116,97,
+ 114,5,0,0,0,114,40,0,0,0,114,6,0,0,0,114,
+ 42,0,0,0,114,10,0,0,0,114,44,0,0,0,114,15,
+ 0,0,0,218,8,114,101,103,105,115,116,101,114,218,5,107,
+ 108,97,115,115,114,45,0,0,0,218,11,73,109,112,111,114,
+ 116,69,114,114,111,114,114,35,0,0,0,114,36,0,0,0,
+ 114,37,0,0,0,250,8,60,109,111,100,117,108,101,62,114,
+ 53,0,0,0,1,0,0,0,115,57,1,0,0,240,3,1,
+ 1,1,241,2,33,1,4,240,72,1,5,15,56,128,10,242,
+ 14,5,11,80,1,128,7,243,16,0,1,11,219,0,10,247,
+ 4,3,1,74,1,247,0,3,1,74,1,247,0,3,1,74,
+ 1,247,0,3,1,74,1,241,0,3,1,74,1,240,14,0,
+ 35,39,208,0,20,212,0,31,240,6,0,12,13,128,8,216,
+ 11,12,128,8,216,11,12,128,8,244,10,1,1,34,136,83,
+ 143,91,137,91,160,67,167,75,161,75,245,0,1,1,34,244,
+ 6,1,1,37,144,3,151,14,145,14,160,6,244,0,1,1,
+ 37,244,6,1,1,42,144,83,215,21,40,209,21,40,168,38,
+ 244,0,1,1,42,244,6,1,1,38,144,19,151,31,145,31,
+ 160,38,244,0,1,1,38,240,6,0,1,10,215,0,18,209,
+ 0,18,144,54,212,0,26,224,14,21,144,126,160,126,176,126,
+ 216,14,28,240,3,1,14,30,242,0,2,1,35,128,69,224,
+ 4,18,215,4,27,209,4,27,152,69,213,4,34,240,5,2,
+ 1,35,240,8,0,15,23,152,13,208,13,38,242,0,1,1,
+ 31,128,69,216,4,14,215,4,23,209,4,23,152,5,213,4,
+ 30,240,3,1,1,31,224,4,9,240,4,5,1,42,221,4,
+ 37,240,8,0,5,14,215,4,22,209,4,22,208,23,40,213,
+ 4,41,248,240,7,0,8,19,242,0,1,1,9,217,4,8,
+ 240,3,1,1,9,250,115,18,0,0,0,195,45,6,68,5,
+ 0,196,5,5,68,13,3,196,12,1,68,13,3,
+};
diff --git a/contrib/tools/python3/Python/frozen_modules/ntpath.h b/contrib/tools/python3/Python/frozen_modules/ntpath.h
new file mode 100644
index 00000000000..ce208ace9e1
--- /dev/null
+++ b/contrib/tools/python3/Python/frozen_modules/ntpath.h
@@ -0,0 +1,1695 @@
+/* Auto-generated by Programs/_freeze_module.py */
+const unsigned char _Py_M__ntpath[] = {
+ 227,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,
+ 0,0,0,0,0,243,164,2,0,0,151,0,100,0,90,0,
+ 100,1,90,1,100,2,90,2,100,1,90,3,100,3,90,4,
+ 100,4,90,5,100,5,90,6,100,6,90,7,100,7,90,8,
+ 100,8,100,9,108,9,90,9,100,8,100,9,108,10,90,10,
+ 100,8,100,9,108,11,90,11,100,8,100,9,108,12,90,12,
+ 100,8,100,10,108,12,173,2,1,0,103,0,100,11,162,1,
+ 90,13,100,12,132,0,90,14,9,0,100,8,100,13,108,15,
+ 109,16,90,17,109,18,90,19,109,20,90,21,1,0,100,14,
+ 132,0,90,22,100,16,132,0,90,24,100,17,132,0,90,25,
+ 100,18,132,0,90,26,100,19,132,0,90,27,100,20,132,0,
+ 90,28,100,21,132,0,90,29,101,12,106,60,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,101,29,95,0,0,0,0,0,0,0,0,0,100,22,
+ 132,0,90,31,100,23,132,0,90,32,2,0,101,33,101,9,
+ 106,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,100,24,171,2,0,0,0,0,0,0,114,4,
+ 100,25,132,0,90,35,110,3,100,26,132,0,90,35,100,27,
+ 132,0,90,36,9,0,100,8,100,28,108,37,109,38,90,38,
+ 1,0,100,29,132,0,90,39,100,30,132,0,90,40,100,31,
+ 132,0,90,41,9,0,100,8,100,32,108,37,109,42,90,42,
+ 1,0,100,33,132,0,90,43,100,35,132,0,90,44,9,0,
+ 100,8,100,36,108,37,109,45,90,45,1,0,100,37,132,0,
+ 90,46,9,0,100,8,100,38,108,37,109,47,90,47,109,48,
+ 90,49,1,0,100,39,132,0,90,50,100,40,132,0,90,51,
+ 100,41,100,42,156,1,100,43,132,2,90,52,100,44,90,53,
+ 100,54,100,45,132,1,90,54,100,46,132,0,90,55,9,0,
+ 100,8,100,47,108,37,109,56,90,57,1,0,100,8,100,48,
+ 108,37,109,58,90,59,1,0,100,8,100,49,108,37,109,60,
+ 90,61,1,0,100,8,100,50,108,37,109,62,90,63,1,0,
+ 9,0,100,8,100,51,108,37,109,64,90,64,1,0,100,52,
+ 132,0,90,65,121,9,35,0,101,23,36,0,114,6,1,0,
+ 100,15,132,0,90,22,89,0,140,195,119,0,120,3,89,0,
+ 119,1,35,0,101,23,36,0,114,5,1,0,100,9,90,38,
+ 89,0,140,121,119,0,120,3,89,0,119,1,35,0,101,23,
+ 36,0,114,6,1,0,100,34,132,0,90,43,89,0,140,116,
+ 119,0,120,3,89,0,119,1,35,0,101,23,36,0,114,5,
+ 1,0,101,44,90,46,89,0,140,116,119,0,120,3,89,0,
+ 119,1,35,0,101,23,36,0,114,5,1,0,101,46,90,52,
+ 89,0,140,108,119,0,120,3,89,0,119,1,35,0,101,23,
+ 36,0,114,3,1,0,89,0,140,85,119,0,120,3,89,0,
+ 119,1,35,0,101,23,36,0,114,6,1,0,100,53,132,0,
+ 90,65,89,0,121,9,119,0,120,3,89,0,119,1,41,55,
+ 122,144,67,111,109,109,111,110,32,112,97,116,104,110,97,109,
+ 101,32,109,97,110,105,112,117,108,97,116,105,111,110,115,44,
+ 32,87,105,110,100,111,119,115,78,84,47,57,53,32,118,101,
+ 114,115,105,111,110,46,10,10,73,110,115,116,101,97,100,32,
+ 111,102,32,105,109,112,111,114,116,105,110,103,32,116,104,105,
+ 115,32,109,111,100,117,108,101,32,100,105,114,101,99,116,108,
+ 121,44,32,105,109,112,111,114,116,32,111,115,32,97,110,100,
+ 32,114,101,102,101,114,32,116,111,32,116,104,105,115,10,109,
+ 111,100,117,108,101,32,97,115,32,111,115,46,112,97,116,104,
+ 46,10,250,1,46,250,2,46,46,250,1,92,250,1,59,250,
+ 1,47,122,8,46,59,67,58,92,98,105,110,218,3,110,117,
+ 108,233,0,0,0,0,78,41,1,218,1,42,41,40,218,8,
+ 110,111,114,109,99,97,115,101,218,5,105,115,97,98,115,218,
+ 4,106,111,105,110,218,10,115,112,108,105,116,100,114,105,118,
+ 101,218,9,115,112,108,105,116,114,111,111,116,218,5,115,112,
+ 108,105,116,218,8,115,112,108,105,116,101,120,116,218,8,98,
+ 97,115,101,110,97,109,101,218,7,100,105,114,110,97,109,101,
+ 218,12,99,111,109,109,111,110,112,114,101,102,105,120,218,7,
+ 103,101,116,115,105,122,101,218,8,103,101,116,109,116,105,109,
+ 101,218,8,103,101,116,97,116,105,109,101,218,8,103,101,116,
+ 99,116,105,109,101,218,6,105,115,108,105,110,107,218,6,101,
+ 120,105,115,116,115,218,7,108,101,120,105,115,116,115,218,5,
+ 105,115,100,105,114,218,6,105,115,102,105,108,101,218,7,105,
+ 115,109,111,117,110,116,218,10,101,120,112,97,110,100,117,115,
+ 101,114,218,10,101,120,112,97,110,100,118,97,114,115,218,8,
+ 110,111,114,109,112,97,116,104,218,7,97,98,115,112,97,116,
+ 104,218,6,99,117,114,100,105,114,218,6,112,97,114,100,105,
+ 114,218,3,115,101,112,218,7,112,97,116,104,115,101,112,218,
+ 7,100,101,102,112,97,116,104,218,6,97,108,116,115,101,112,
+ 218,6,101,120,116,115,101,112,218,7,100,101,118,110,117,108,
+ 108,218,8,114,101,97,108,112,97,116,104,218,26,115,117,112,
+ 112,111,114,116,115,95,117,110,105,99,111,100,101,95,102,105,
+ 108,101,110,97,109,101,115,218,7,114,101,108,112,97,116,104,
+ 218,8,115,97,109,101,102,105,108,101,218,12,115,97,109,101,
+ 111,112,101,110,102,105,108,101,218,8,115,97,109,101,115,116,
+ 97,116,218,10,99,111,109,109,111,110,112,97,116,104,218,10,
+ 105,115,106,117,110,99,116,105,111,110,99,1,0,0,0,0,
+ 0,0,0,0,0,0,0,4,0,0,0,3,0,0,0,243,
+ 38,0,0,0,151,0,116,1,0,0,0,0,0,0,0,0,
+ 124,0,116,2,0,0,0,0,0,0,0,0,171,2,0,0,
+ 0,0,0,0,114,1,121,1,121,2,41,3,78,243,2,0,
+ 0,0,92,47,250,2,92,47,41,2,218,10,105,115,105,110,
+ 115,116,97,110,99,101,218,5,98,121,116,101,115,169,1,218,
+ 4,112,97,116,104,115,1,0,0,0,32,250,15,60,102,114,
+ 111,122,101,110,32,110,116,112,97,116,104,62,218,13,95,103,
+ 101,116,95,98,111,116,104,115,101,112,115,114,58,0,0,0,
+ 35,0,0,0,115,18,0,0,0,128,0,220,7,17,144,36,
+ 156,5,212,7,30,216,15,21,224,15,20,243,0,0,0,0,
+ 41,3,218,13,76,67,77,97,112,83,116,114,105,110,103,69,
+ 120,218,21,76,79,67,65,76,69,95,78,65,77,69,95,73,
+ 78,86,65,82,73,65,78,84,218,15,76,67,77,65,80,95,
+ 76,79,87,69,82,67,65,83,69,99,1,0,0,0,0,0,
+ 0,0,0,0,0,0,8,0,0,0,3,0,0,0,243,88,
+ 1,0,0,151,0,116,1,0,0,0,0,0,0,0,0,106,
+ 2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,124,0,171,1,0,0,0,0,0,0,125,0,124,
+ 0,115,2,124,0,83,0,116,5,0,0,0,0,0,0,0,
+ 0,124,0,116,6,0,0,0,0,0,0,0,0,171,2,0,
+ 0,0,0,0,0,114,93,116,9,0,0,0,0,0,0,0,
+ 0,106,10,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,171,0,0,0,0,0,0,0,125,1,124,
+ 0,106,13,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,124,1,100,1,171,2,0,0,0,0,0,
+ 0,106,15,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,100,2,100,3,171,2,0,0,0,0,0,
+ 0,125,0,116,17,0,0,0,0,0,0,0,0,116,18,0,
+ 0,0,0,0,0,0,0,116,20,0,0,0,0,0,0,0,
+ 0,124,0,171,3,0,0,0,0,0,0,125,0,124,0,106,
+ 23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,124,1,100,1,171,2,0,0,0,0,0,0,83,
+ 0,116,17,0,0,0,0,0,0,0,0,116,18,0,0,0,
+ 0,0,0,0,0,116,20,0,0,0,0,0,0,0,0,124,
+ 0,106,15,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,100,2,100,3,171,2,0,0,0,0,0,
+ 0,171,3,0,0,0,0,0,0,83,0,41,4,250,110,78,
+ 111,114,109,97,108,105,122,101,32,99,97,115,101,32,111,102,
+ 32,112,97,116,104,110,97,109,101,46,10,10,32,32,32,32,
+ 32,32,32,32,77,97,107,101,115,32,97,108,108,32,99,104,
+ 97,114,97,99,116,101,114,115,32,108,111,119,101,114,99,97,
+ 115,101,32,97,110,100,32,97,108,108,32,115,108,97,115,104,
+ 101,115,32,105,110,116,111,32,98,97,99,107,115,108,97,115,
+ 104,101,115,46,10,32,32,32,32,32,32,32,32,218,15,115,
+ 117,114,114,111,103,97,116,101,101,115,99,97,112,101,114,6,
+ 0,0,0,114,4,0,0,0,41,12,218,2,111,115,218,6,
+ 102,115,112,97,116,104,114,53,0,0,0,114,54,0,0,0,
+ 218,3,115,121,115,218,21,103,101,116,102,105,108,101,115,121,
+ 115,116,101,109,101,110,99,111,100,105,110,103,218,6,100,101,
+ 99,111,100,101,218,7,114,101,112,108,97,99,101,218,14,95,
+ 76,67,77,97,112,83,116,114,105,110,103,69,120,218,22,95,
+ 76,79,67,65,76,69,95,78,65,77,69,95,73,78,86,65,
+ 82,73,65,78,84,218,16,95,76,67,77,65,80,95,76,79,
+ 87,69,82,67,65,83,69,218,6,101,110,99,111,100,101,41,
+ 2,218,1,115,218,8,101,110,99,111,100,105,110,103,115,2,
+ 0,0,0,32,32,114,57,0,0,0,114,10,0,0,0,114,
+ 10,0,0,0,51,0,0,0,115,148,0,0,0,128,0,244,
+ 10,0,13,15,143,73,137,73,144,97,139,76,136,1,217,15,
+ 16,216,19,20,136,72,220,11,21,144,97,156,21,212,11,31,
+ 220,23,26,215,23,48,209,23,48,211,23,50,136,72,216,16,
+ 17,151,8,145,8,152,24,208,35,52,211,16,53,215,16,61,
+ 209,16,61,184,99,192,52,211,16,72,136,65,220,16,30,212,
+ 31,53,220,31,47,176,17,243,3,1,17,52,136,65,224,19,
+ 20,151,56,145,56,152,72,208,38,55,211,19,56,208,12,56,
+ 228,19,33,212,34,56,220,34,50,216,34,35,167,41,161,41,
+ 168,67,176,20,211,34,54,243,5,2,20,56,240,0,2,13,
+ 56,114,59,0,0,0,99,1,0,0,0,0,0,0,0,0,
+ 0,0,0,6,0,0,0,3,0,0,0,243,24,1,0,0,
+ 151,0,116,1,0,0,0,0,0,0,0,0,106,2,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 124,0,171,1,0,0,0,0,0,0,125,0,116,5,0,0,
+ 0,0,0,0,0,0,124,0,116,6,0,0,0,0,0,0,
+ 0,0,171,2,0,0,0,0,0,0,114,70,116,1,0,0,
+ 0,0,0,0,0,0,106,8,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,116,1,0,0,0,0,
+ 0,0,0,0,106,10,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,124,0,171,1,0,0,0,0,
+ 0,0,106,13,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,100,1,100,2,171,2,0,0,0,0,
+ 0,0,106,15,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,171,0,0,0,0,0,0,0,171,1,
+ 0,0,0,0,0,0,83,0,124,0,106,13,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,1,
+ 100,2,171,2,0,0,0,0,0,0,106,15,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,0,
+ 0,0,0,0,0,0,83,0,41,3,114,64,0,0,0,114,
+ 6,0,0,0,114,4,0,0,0,41,8,114,66,0,0,0,
+ 114,67,0,0,0,114,53,0,0,0,114,54,0,0,0,218,
+ 8,102,115,101,110,99,111,100,101,218,8,102,115,100,101,99,
+ 111,100,101,114,71,0,0,0,218,5,108,111,119,101,114,41,
+ 1,114,76,0,0,0,115,1,0,0,0,32,114,57,0,0,
+ 0,114,10,0,0,0,114,10,0,0,0,70,0,0,0,115,
+ 98,0,0,0,128,0,244,10,0,13,15,143,73,137,73,144,
+ 97,139,76,136,1,220,11,21,144,97,156,21,212,11,31,220,
+ 19,21,151,59,145,59,156,114,159,123,153,123,168,49,155,126,
+ 215,31,53,209,31,53,176,99,184,52,211,31,64,215,31,70,
+ 209,31,70,211,31,72,211,19,73,208,12,73,216,15,16,143,
+ 121,137,121,152,19,152,100,211,15,35,215,15,41,209,15,41,
+ 211,15,43,208,8,43,114,59,0,0,0,99,1,0,0,0,
+ 0,0,0,0,0,0,0,0,4,0,0,0,3,0,0,0,
+ 243,218,0,0,0,151,0,116,1,0,0,0,0,0,0,0,
+ 0,106,2,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,124,0,171,1,0,0,0,0,0,0,125,
+ 0,116,5,0,0,0,0,0,0,0,0,124,0,116,6,0,
+ 0,0,0,0,0,0,0,171,2,0,0,0,0,0,0,114,
+ 7,100,1,125,1,100,2,125,2,100,3,125,3,110,6,100,
+ 4,125,1,100,5,125,2,100,6,125,3,124,0,100,7,100,
+ 8,26,0,106,9,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,124,2,124,1,171,2,0,0,0,
+ 0,0,0,125,0,124,0,106,11,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,124,1,171,1,0,
+ 0,0,0,0,0,115,18,124,0,106,11,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,124,3,100,
+ 9,171,2,0,0,0,0,0,0,114,1,121,10,121,11,41,
+ 12,122,31,84,101,115,116,32,119,104,101,116,104,101,114,32,
+ 97,32,112,97,116,104,32,105,115,32,97,98,115,111,108,117,
+ 116,101,243,1,0,0,0,92,243,1,0,0,0,47,115,2,
+ 0,0,0,58,92,114,4,0,0,0,114,6,0,0,0,122,
+ 2,58,92,78,233,3,0,0,0,233,1,0,0,0,84,70,
+ 41,6,114,66,0,0,0,114,67,0,0,0,114,53,0,0,
+ 0,114,54,0,0,0,114,71,0,0,0,218,10,115,116,97,
+ 114,116,115,119,105,116,104,41,4,114,76,0,0,0,114,36,
+ 0,0,0,114,39,0,0,0,218,9,99,111,108,111,110,95,
+ 115,101,112,115,4,0,0,0,32,32,32,32,114,57,0,0,
+ 0,114,11,0,0,0,114,11,0,0,0,87,0,0,0,115,
+ 110,0,0,0,128,0,228,8,10,143,9,137,9,144,33,139,
+ 12,128,65,220,7,17,144,33,148,85,212,7,27,216,14,19,
+ 136,3,216,17,21,136,6,216,20,26,137,9,224,14,18,136,
+ 3,216,17,20,136,6,216,20,25,136,9,216,8,9,136,34,
+ 136,49,136,5,143,13,137,13,144,102,152,99,211,8,34,128,
+ 65,240,6,0,8,9,135,124,129,124,144,67,212,7,24,152,
+ 65,159,76,153,76,168,25,176,65,212,28,54,216,15,19,216,
+ 11,16,114,59,0,0,0,99,1,0,0,0,0,0,0,0,
+ 0,0,0,0,5,0,0,0,7,0,0,0,243,56,2,0,
+ 0,151,0,116,1,0,0,0,0,0,0,0,0,106,2,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,124,0,171,1,0,0,0,0,0,0,125,0,116,5,0,
+ 0,0,0,0,0,0,0,124,0,116,6,0,0,0,0,0,
+ 0,0,0,171,2,0,0,0,0,0,0,114,7,100,1,125,
+ 2,100,2,125,3,100,3,125,4,110,6,100,4,125,2,100,
+ 5,125,3,100,6,125,4,9,0,124,1,115,8,124,0,100,
+ 0,100,7,26,0,124,2,122,0,0,0,1,0,116,9,0,
+ 0,0,0,0,0,0,0,124,0,171,1,0,0,0,0,0,
+ 0,92,3,0,0,125,5,125,6,125,7,116,11,0,0,0,
+ 0,0,0,0,0,116,0,0,0,0,0,0,0,0,0,106,
+ 2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,124,1,171,2,0,0,0,0,0,0,68,0,93,
+ 98,0,0,125,8,116,9,0,0,0,0,0,0,0,0,124,
+ 8,171,1,0,0,0,0,0,0,92,3,0,0,125,9,125,
+ 10,125,11,124,10,114,11,124,9,115,2,124,5,115,2,124,
+ 9,125,5,124,10,125,6,124,11,125,7,140,31,124,9,114,
+ 47,124,9,124,5,107,55,0,0,114,42,124,9,106,13,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,171,0,0,0,0,0,0,0,124,5,106,13,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,
+ 0,0,0,0,0,0,0,107,55,0,0,114,7,124,9,125,
+ 5,124,10,125,6,124,11,125,7,140,78,124,9,125,5,124,
+ 7,114,12,124,7,100,8,25,0,0,0,124,3,118,1,114,
+ 5,124,7,124,2,122,0,0,0,125,7,124,7,124,11,122,
+ 0,0,0,125,7,140,100,4,0,124,7,114,22,124,6,115,
+ 20,124,5,114,18,124,5,100,8,100,0,26,0,124,4,124,
+ 3,122,0,0,0,118,1,114,8,124,5,124,2,122,0,0,
+ 0,124,7,122,0,0,0,83,0,124,5,124,6,122,0,0,
+ 0,124,7,122,0,0,0,83,0,35,0,116,14,0,0,0,
+ 0,0,0,0,0,116,16,0,0,0,0,0,0,0,0,116,
+ 18,0,0,0,0,0,0,0,0,102,3,36,0,114,25,1,
+ 0,116,21,0,0,0,0,0,0,0,0,106,22,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,
+ 9,124,0,103,2,124,1,162,1,173,6,142,0,1,0,130,
+ 0,119,0,120,3,89,0,119,1,41,10,78,114,83,0,0,
+ 0,114,51,0,0,0,243,1,0,0,0,58,114,4,0,0,
+ 0,114,52,0,0,0,250,1,58,114,8,0,0,0,233,255,
+ 255,255,255,114,12,0,0,0,41,12,114,66,0,0,0,114,
+ 67,0,0,0,114,53,0,0,0,114,54,0,0,0,114,14,
+ 0,0,0,218,3,109,97,112,114,81,0,0,0,218,9,84,
+ 121,112,101,69,114,114,111,114,218,14,65,116,116,114,105,98,
+ 117,116,101,69,114,114,111,114,218,12,66,121,116,101,115,87,
+ 97,114,110,105,110,103,218,11,103,101,110,101,114,105,99,112,
+ 97,116,104,218,16,95,99,104,101,99,107,95,97,114,103,95,
+ 116,121,112,101,115,41,12,114,56,0,0,0,218,5,112,97,
+ 116,104,115,114,36,0,0,0,218,4,115,101,112,115,218,5,
+ 99,111,108,111,110,218,12,114,101,115,117,108,116,95,100,114,
+ 105,118,101,218,11,114,101,115,117,108,116,95,114,111,111,116,
+ 218,11,114,101,115,117,108,116,95,112,97,116,104,218,1,112,
+ 218,7,112,95,100,114,105,118,101,218,6,112,95,114,111,111,
+ 116,218,6,112,95,112,97,116,104,115,12,0,0,0,32,32,
+ 32,32,32,32,32,32,32,32,32,32,114,57,0,0,0,114,
+ 12,0,0,0,114,12,0,0,0,107,0,0,0,115,100,1,
+ 0,0,128,0,220,11,13,143,57,137,57,144,84,139,63,128,
+ 68,220,7,17,144,36,156,5,212,7,30,216,14,19,136,3,
+ 216,15,21,136,4,216,16,20,137,5,224,14,18,136,3,216,
+ 15,20,136,4,216,16,19,136,5,240,2,33,5,14,217,15,
+ 20,216,12,16,144,18,144,33,136,72,144,115,138,78,220,49,
+ 58,184,52,179,31,209,8,46,136,12,144,107,160,59,220,17,
+ 20,148,82,151,89,145,89,160,5,211,17,38,242,0,21,9,
+ 47,136,65,220,38,47,176,1,163,108,209,12,35,136,71,144,
+ 86,152,86,217,15,21,225,19,26,161,44,216,35,42,144,76,
+ 216,30,36,144,11,216,30,36,144,11,216,16,24,217,17,24,
+ 152,87,168,12,210,29,52,216,19,26,151,61,145,61,147,63,
+ 160,108,215,38,56,209,38,56,211,38,58,210,19,58,224,35,
+ 42,144,76,216,34,40,144,75,216,34,40,144,75,216,20,28,
+ 224,31,38,144,12,225,15,26,152,123,168,50,153,127,176,100,
+ 209,31,58,216,30,41,168,67,209,30,47,144,11,216,26,37,
+ 168,6,209,26,46,137,75,240,43,21,9,47,241,46,0,13,
+ 24,161,11,217,12,24,152,92,168,34,168,35,208,29,46,176,
+ 101,184,100,177,108,209,29,66,216,19,31,160,35,209,19,37,
+ 168,11,209,19,51,208,12,51,216,15,27,152,107,209,15,41,
+ 168,75,209,15,55,208,8,55,248,220,12,21,148,126,164,124,
+ 208,11,52,242,0,2,5,14,220,8,19,215,8,36,209,8,
+ 36,160,86,168,84,208,8,58,176,69,211,8,58,216,8,13,
+ 240,5,2,5,14,250,115,18,0,0,0,180,66,47,67,44,
+ 0,195,36,7,67,44,0,195,44,45,68,25,3,99,1,0,
+ 0,0,0,0,0,0,0,0,0,0,3,0,0,0,3,0,
+ 0,0,243,46,0,0,0,151,0,116,1,0,0,0,0,0,
+ 0,0,0,124,0,171,1,0,0,0,0,0,0,92,3,0,
+ 0,125,1,125,2,125,3,124,1,124,2,124,3,122,0,0,
+ 0,102,2,83,0,41,1,97,218,2,0,0,83,112,108,105,
+ 116,32,97,32,112,97,116,104,110,97,109,101,32,105,110,116,
+ 111,32,100,114,105,118,101,47,85,78,67,32,115,104,97,114,
+ 101,112,111,105,110,116,32,97,110,100,32,114,101,108,97,116,
+ 105,118,101,32,112,97,116,104,32,115,112,101,99,105,102,105,
+ 101,114,115,46,10,32,32,32,32,82,101,116,117,114,110,115,
+ 32,97,32,50,45,116,117,112,108,101,32,40,100,114,105,118,
+ 101,95,111,114,95,117,110,99,44,32,112,97,116,104,41,59,
+ 32,101,105,116,104,101,114,32,112,97,114,116,32,109,97,121,
+ 32,98,101,32,101,109,112,116,121,46,10,10,32,32,32,32,
+ 73,102,32,121,111,117,32,97,115,115,105,103,110,10,32,32,
+ 32,32,32,32,32,32,114,101,115,117,108,116,32,61,32,115,
+ 112,108,105,116,100,114,105,118,101,40,112,41,10,32,32,32,
+ 32,73,116,32,105,115,32,97,108,119,97,121,115,32,116,114,
+ 117,101,32,116,104,97,116,58,10,32,32,32,32,32,32,32,
+ 32,114,101,115,117,108,116,91,48,93,32,43,32,114,101,115,
+ 117,108,116,91,49,93,32,61,61,32,112,10,10,32,32,32,
+ 32,73,102,32,116,104,101,32,112,97,116,104,32,99,111,110,
+ 116,97,105,110,101,100,32,97,32,100,114,105,118,101,32,108,
+ 101,116,116,101,114,44,32,100,114,105,118,101,95,111,114,95,
+ 117,110,99,32,119,105,108,108,32,99,111,110,116,97,105,110,
+ 32,101,118,101,114,121,116,104,105,110,103,10,32,32,32,32,
+ 117,112,32,116,111,32,97,110,100,32,105,110,99,108,117,100,
+ 105,110,103,32,116,104,101,32,99,111,108,111,110,46,32,32,
+ 101,46,103,46,32,115,112,108,105,116,100,114,105,118,101,40,
+ 34,99,58,47,100,105,114,34,41,32,114,101,116,117,114,110,
+ 115,32,40,34,99,58,34,44,32,34,47,100,105,114,34,41,
+ 10,10,32,32,32,32,73,102,32,116,104,101,32,112,97,116,
+ 104,32,99,111,110,116,97,105,110,101,100,32,97,32,85,78,
+ 67,32,112,97,116,104,44,32,116,104,101,32,100,114,105,118,
+ 101,95,111,114,95,117,110,99,32,119,105,108,108,32,99,111,
+ 110,116,97,105,110,32,116,104,101,32,104,111,115,116,32,110,
+ 97,109,101,10,32,32,32,32,97,110,100,32,115,104,97,114,
+ 101,32,117,112,32,116,111,32,98,117,116,32,110,111,116,32,
+ 105,110,99,108,117,100,105,110,103,32,116,104,101,32,102,111,
+ 117,114,116,104,32,100,105,114,101,99,116,111,114,121,32,115,
+ 101,112,97,114,97,116,111,114,32,99,104,97,114,97,99,116,
+ 101,114,46,10,32,32,32,32,101,46,103,46,32,115,112,108,
+ 105,116,100,114,105,118,101,40,34,47,47,104,111,115,116,47,
+ 99,111,109,112,117,116,101,114,47,100,105,114,34,41,32,114,
+ 101,116,117,114,110,115,32,40,34,47,47,104,111,115,116,47,
+ 99,111,109,112,117,116,101,114,34,44,32,34,47,100,105,114,
+ 34,41,10,10,32,32,32,32,80,97,116,104,115,32,99,97,
+ 110,110,111,116,32,99,111,110,116,97,105,110,32,98,111,116,
+ 104,32,97,32,100,114,105,118,101,32,108,101,116,116,101,114,
+ 32,97,110,100,32,97,32,85,78,67,32,112,97,116,104,46,
+ 10,10,32,32,32,32,41,1,114,14,0,0,0,41,4,114,
+ 105,0,0,0,218,5,100,114,105,118,101,218,4,114,111,111,
+ 116,218,4,116,97,105,108,115,4,0,0,0,32,32,32,32,
+ 114,57,0,0,0,114,13,0,0,0,114,13,0,0,0,156,
+ 0,0,0,115,35,0,0,0,128,0,244,38,0,25,34,160,
+ 33,155,12,209,4,21,128,69,136,52,144,20,216,11,16,144,
+ 36,152,20,145,43,208,11,29,208,4,29,114,59,0,0,0,
+ 99,1,0,0,0,0,0,0,0,0,0,0,0,5,0,0,
+ 0,3,0,0,0,243,254,1,0,0,151,0,116,1,0,0,
+ 0,0,0,0,0,0,106,2,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,124,0,171,1,0,0,
+ 0,0,0,0,125,0,116,5,0,0,0,0,0,0,0,0,
+ 124,0,116,6,0,0,0,0,0,0,0,0,171,2,0,0,
+ 0,0,0,0,114,11,100,1,125,1,100,2,125,2,100,3,
+ 125,3,100,4,125,4,100,5,125,5,110,10,100,6,125,1,
+ 100,7,125,2,100,8,125,3,100,9,125,4,100,10,125,5,
+ 124,0,106,9,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,124,2,124,1,171,2,0,0,0,0,
+ 0,0,125,6,124,6,100,11,100,12,26,0,124,1,107,40,
+ 0,0,114,124,124,6,100,12,100,13,26,0,124,1,107,40,
+ 0,0,114,105,124,6,100,11,100,14,26,0,106,11,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 171,0,0,0,0,0,0,0,124,4,107,40,0,0,114,2,
+ 100,14,110,1,100,13,125,7,124,6,106,13,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,1,
+ 124,7,171,2,0,0,0,0,0,0,125,8,124,8,100,15,
+ 107,40,0,0,114,5,124,0,124,5,124,5,102,3,83,0,
+ 124,6,106,13,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,124,1,124,8,100,12,122,0,0,0,
+ 171,2,0,0,0,0,0,0,125,9,124,9,100,15,107,40,
+ 0,0,114,5,124,0,124,5,124,5,102,3,83,0,124,0,
+ 100,11,124,9,26,0,124,0,124,9,124,9,100,12,122,0,
+ 0,0,26,0,124,0,124,9,100,12,122,0,0,0,100,11,
+ 26,0,102,3,83,0,124,5,124,0,100,11,100,12,26,0,
+ 124,0,100,12,100,11,26,0,102,3,83,0,124,6,100,12,
+ 100,13,26,0,124,3,107,40,0,0,114,33,124,6,100,13,
+ 100,16,26,0,124,1,107,40,0,0,114,14,124,0,100,11,
+ 100,13,26,0,124,0,100,13,100,16,26,0,124,0,100,16,
+ 100,11,26,0,102,3,83,0,124,0,100,11,100,13,26,0,
+ 124,5,124,0,100,13,100,11,26,0,102,3,83,0,124,5,
+ 124,5,124,0,102,3,83,0,41,17,97,254,1,0,0,83,
+ 112,108,105,116,32,97,32,112,97,116,104,110,97,109,101,32,
+ 105,110,116,111,32,100,114,105,118,101,44,32,114,111,111,116,
+ 32,97,110,100,32,116,97,105,108,46,32,84,104,101,32,100,
+ 114,105,118,101,32,105,115,32,100,101,102,105,110,101,100,10,
+ 32,32,32,32,101,120,97,99,116,108,121,32,97,115,32,105,
+ 110,32,115,112,108,105,116,100,114,105,118,101,40,41,46,32,
+ 79,110,32,87,105,110,100,111,119,115,44,32,116,104,101,32,
+ 114,111,111,116,32,109,97,121,32,98,101,32,97,32,115,105,
+ 110,103,108,101,32,112,97,116,104,10,32,32,32,32,115,101,
+ 112,97,114,97,116,111,114,32,111,114,32,97,110,32,101,109,
+ 112,116,121,32,115,116,114,105,110,103,46,32,84,104,101,32,
+ 116,97,105,108,32,99,111,110,116,97,105,110,115,32,97,110,
+ 121,116,104,105,110,103,32,97,102,116,101,114,32,116,104,101,
+ 32,114,111,111,116,46,10,32,32,32,32,70,111,114,32,101,
+ 120,97,109,112,108,101,58,10,10,32,32,32,32,32,32,32,
+ 32,115,112,108,105,116,114,111,111,116,40,39,47,47,115,101,
+ 114,118,101,114,47,115,104,97,114,101,47,39,41,32,61,61,
+ 32,40,39,47,47,115,101,114,118,101,114,47,115,104,97,114,
+ 101,39,44,32,39,47,39,44,32,39,39,41,10,32,32,32,
+ 32,32,32,32,32,115,112,108,105,116,114,111,111,116,40,39,
+ 67,58,47,85,115,101,114,115,47,66,97,114,110,101,121,39,
+ 41,32,61,61,32,40,39,67,58,39,44,32,39,47,39,44,
+ 32,39,85,115,101,114,115,47,66,97,114,110,101,121,39,41,
+ 10,32,32,32,32,32,32,32,32,115,112,108,105,116,114,111,
+ 111,116,40,39,67,58,47,47,47,115,112,97,109,47,47,47,
+ 104,97,109,39,41,32,61,61,32,40,39,67,58,39,44,32,
+ 39,47,39,44,32,39,47,47,115,112,97,109,47,47,47,104,
+ 97,109,39,41,10,32,32,32,32,32,32,32,32,115,112,108,
+ 105,116,114,111,111,116,40,39,87,105,110,100,111,119,115,47,
+ 110,111,116,101,112,97,100,39,41,32,61,61,32,40,39,39,
+ 44,32,39,39,44,32,39,87,105,110,100,111,119,115,47,110,
+ 111,116,101,112,97,100,39,41,10,32,32,32,32,114,83,0,
+ 0,0,114,84,0,0,0,114,90,0,0,0,243,8,0,0,
+ 0,92,92,63,92,85,78,67,92,114,59,0,0,0,114,4,
+ 0,0,0,114,6,0,0,0,114,91,0,0,0,250,8,92,
+ 92,63,92,85,78,67,92,218,0,78,114,86,0,0,0,233,
+ 2,0,0,0,233,8,0,0,0,114,92,0,0,0,114,85,
+ 0,0,0,41,7,114,66,0,0,0,114,67,0,0,0,114,
+ 53,0,0,0,114,54,0,0,0,114,71,0,0,0,218,5,
+ 117,112,112,101,114,218,4,102,105,110,100,41,10,114,105,0,
+ 0,0,114,36,0,0,0,114,39,0,0,0,114,101,0,0,
+ 0,218,10,117,110,99,95,112,114,101,102,105,120,218,5,101,
+ 109,112,116,121,218,5,110,111,114,109,112,218,5,115,116,97,
+ 114,116,218,5,105,110,100,101,120,218,6,105,110,100,101,120,
+ 50,115,10,0,0,0,32,32,32,32,32,32,32,32,32,32,
+ 114,57,0,0,0,114,14,0,0,0,114,14,0,0,0,179,
+ 0,0,0,115,135,1,0,0,128,0,244,22,0,9,11,143,
+ 9,137,9,144,33,139,12,128,65,220,7,17,144,33,148,85,
+ 212,7,27,216,14,19,136,3,216,17,21,136,6,216,16,20,
+ 136,5,216,21,36,136,10,216,16,19,137,5,224,14,18,136,
+ 3,216,17,20,136,6,216,16,19,136,5,216,21,35,136,10,
+ 216,16,18,136,5,216,12,13,143,73,137,73,144,102,152,99,
+ 211,12,34,128,69,216,7,12,136,82,136,97,128,121,144,67,
+ 210,7,23,216,11,16,144,17,144,49,136,58,152,19,210,11,
+ 28,240,6,0,26,31,152,114,160,1,152,25,159,31,153,31,
+ 211,25,42,168,106,210,25,56,145,65,184,97,136,69,216,20,
+ 25,151,74,145,74,152,115,160,69,211,20,42,136,69,216,15,
+ 20,152,2,138,123,216,23,24,152,37,160,21,144,127,208,16,
+ 38,216,21,26,151,90,145,90,160,3,160,85,168,81,161,89,
+ 211,21,47,136,70,216,15,21,152,18,138,124,216,23,24,152,
+ 37,160,21,144,127,208,16,38,216,19,20,144,87,144,102,144,
+ 58,152,113,160,22,168,6,176,17,169,10,208,31,51,176,81,
+ 176,118,192,1,177,122,176,123,176,94,208,19,67,208,12,67,
+ 240,6,0,20,25,152,33,152,66,152,81,152,37,160,17,160,
+ 49,160,50,160,21,208,19,38,208,12,38,216,9,14,136,113,
+ 144,17,136,26,144,117,210,9,28,216,11,16,144,17,144,49,
+ 136,58,152,19,210,11,28,224,19,20,144,82,144,97,144,53,
+ 152,33,152,65,152,97,152,38,160,33,160,65,160,66,160,37,
+ 208,19,39,208,12,39,240,6,0,20,21,144,82,144,97,144,
+ 53,152,37,160,17,160,49,160,50,160,21,208,19,38,208,12,
+ 38,240,6,0,16,21,144,101,152,81,136,127,208,8,30,114,
+ 59,0,0,0,99,1,0,0,0,0,0,0,0,0,0,0,
+ 0,4,0,0,0,3,0,0,0,243,248,0,0,0,151,0,
+ 116,1,0,0,0,0,0,0,0,0,106,2,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,0,
+ 171,1,0,0,0,0,0,0,125,0,116,5,0,0,0,0,
+ 0,0,0,0,124,0,171,1,0,0,0,0,0,0,125,1,
+ 116,7,0,0,0,0,0,0,0,0,124,0,171,1,0,0,
+ 0,0,0,0,92,3,0,0,125,2,125,3,125,0,116,9,
+ 0,0,0,0,0,0,0,0,124,0,171,1,0,0,0,0,
+ 0,0,125,4,124,4,114,28,124,0,124,4,100,1,122,10,
+ 0,0,25,0,0,0,124,1,118,1,114,18,124,4,100,1,
+ 122,23,0,0,125,4,124,4,114,11,124,0,124,4,100,1,
+ 122,10,0,0,25,0,0,0,124,1,118,1,114,1,140,18,
+ 124,0,100,2,124,4,26,0,124,0,124,4,100,2,26,0,
+ 125,6,125,5,124,2,124,3,122,0,0,0,124,5,106,11,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,124,1,171,1,0,0,0,0,0,0,122,0,0,0,
+ 124,6,102,2,83,0,41,3,122,126,83,112,108,105,116,32,
+ 97,32,112,97,116,104,110,97,109,101,46,10,10,32,32,32,
+ 32,82,101,116,117,114,110,32,116,117,112,108,101,32,40,104,
+ 101,97,100,44,32,116,97,105,108,41,32,119,104,101,114,101,
+ 32,116,97,105,108,32,105,115,32,101,118,101,114,121,116,104,
+ 105,110,103,32,97,102,116,101,114,32,116,104,101,32,102,105,
+ 110,97,108,32,115,108,97,115,104,46,10,32,32,32,32,69,
+ 105,116,104,101,114,32,112,97,114,116,32,109,97,121,32,98,
+ 101,32,101,109,112,116,121,46,114,86,0,0,0,78,41,6,
+ 114,66,0,0,0,114,67,0,0,0,114,58,0,0,0,114,
+ 14,0,0,0,218,3,108,101,110,218,6,114,115,116,114,105,
+ 112,41,7,114,105,0,0,0,114,100,0,0,0,218,1,100,
+ 218,1,114,218,1,105,218,4,104,101,97,100,114,112,0,0,
+ 0,115,7,0,0,0,32,32,32,32,32,32,32,114,57,0,
+ 0,0,114,15,0,0,0,114,15,0,0,0,236,0,0,0,
+ 115,148,0,0,0,128,0,244,10,0,9,11,143,9,137,9,
+ 144,33,139,12,128,65,220,11,24,152,17,211,11,27,128,68,
+ 220,14,23,152,1,139,108,129,71,128,65,128,113,136,33,228,
+ 8,11,136,65,139,6,128,65,217,10,11,144,1,144,33,144,
+ 65,145,35,145,6,152,100,209,16,34,216,8,9,136,81,137,
+ 6,136,1,241,3,0,11,12,144,1,144,33,144,65,145,35,
+ 145,6,152,100,210,16,34,224,17,18,144,50,144,65,144,21,
+ 152,1,152,33,152,34,152,5,136,36,128,68,216,11,12,136,
+ 113,137,53,144,52,151,59,145,59,152,116,211,19,36,209,11,
+ 36,160,100,208,11,42,208,4,42,114,59,0,0,0,99,1,
+ 0,0,0,0,0,0,0,0,0,0,0,6,0,0,0,3,
+ 0,0,0,243,172,0,0,0,151,0,116,1,0,0,0,0,
+ 0,0,0,0,106,2,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,124,0,171,1,0,0,0,0,
+ 0,0,125,0,116,5,0,0,0,0,0,0,0,0,124,0,
+ 116,6,0,0,0,0,0,0,0,0,171,2,0,0,0,0,
+ 0,0,114,24,116,9,0,0,0,0,0,0,0,0,106,10,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,124,0,100,1,100,2,100,3,171,4,0,0,0,0,
+ 0,0,83,0,116,9,0,0,0,0,0,0,0,0,106,10,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,124,0,100,4,100,5,100,6,171,4,0,0,0,0,
+ 0,0,83,0,41,7,78,114,83,0,0,0,114,84,0,0,
+ 0,243,1,0,0,0,46,114,4,0,0,0,114,6,0,0,
+ 0,114,2,0,0,0,41,6,114,66,0,0,0,114,67,0,
+ 0,0,114,53,0,0,0,114,54,0,0,0,114,97,0,0,
+ 0,218,9,95,115,112,108,105,116,101,120,116,169,1,114,105,
+ 0,0,0,115,1,0,0,0,32,114,57,0,0,0,114,16,
+ 0,0,0,114,16,0,0,0,1,1,0,0,115,71,0,0,
+ 0,128,0,220,8,10,143,9,137,9,144,33,139,12,128,65,
+ 220,7,17,144,33,148,85,212,7,27,220,15,26,215,15,36,
+ 209,15,36,160,81,168,5,168,116,176,84,211,15,58,208,8,
+ 58,228,15,26,215,15,36,209,15,36,160,81,168,4,168,99,
+ 176,51,211,15,55,208,8,55,114,59,0,0,0,99,1,0,
+ 0,0,0,0,0,0,0,0,0,0,3,0,0,0,3,0,
+ 0,0,243,30,0,0,0,151,0,116,1,0,0,0,0,0,
+ 0,0,0,124,0,171,1,0,0,0,0,0,0,100,1,25,
+ 0,0,0,83,0,41,2,122,41,82,101,116,117,114,110,115,
+ 32,116,104,101,32,102,105,110,97,108,32,99,111,109,112,111,
+ 110,101,110,116,32,111,102,32,97,32,112,97,116,104,110,97,
+ 109,101,114,86,0,0,0,169,1,114,15,0,0,0,114,137,
+ 0,0,0,115,1,0,0,0,32,114,57,0,0,0,114,17,
+ 0,0,0,114,17,0,0,0,12,1,0,0,243,16,0,0,
+ 0,128,0,228,11,16,144,17,139,56,144,65,137,59,208,4,
+ 22,114,59,0,0,0,99,1,0,0,0,0,0,0,0,0,
+ 0,0,0,3,0,0,0,3,0,0,0,243,30,0,0,0,
+ 151,0,116,1,0,0,0,0,0,0,0,0,124,0,171,1,
+ 0,0,0,0,0,0,100,1,25,0,0,0,83,0,41,2,
+ 122,45,82,101,116,117,114,110,115,32,116,104,101,32,100,105,
+ 114,101,99,116,111,114,121,32,99,111,109,112,111,110,101,110,
+ 116,32,111,102,32,97,32,112,97,116,104,110,97,109,101,114,
+ 8,0,0,0,114,139,0,0,0,114,137,0,0,0,115,1,
+ 0,0,0,32,114,57,0,0,0,114,18,0,0,0,114,18,
+ 0,0,0,19,1,0,0,114,140,0,0,0,114,59,0,0,
+ 0,218,14,115,116,95,114,101,112,97,114,115,101,95,116,97,
+ 103,99,1,0,0,0,0,0,0,0,0,0,0,0,5,0,
+ 0,0,3,0,0,0,243,174,0,0,0,151,0,9,0,116,
+ 1,0,0,0,0,0,0,0,0,106,2,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,124,0,171,
+ 1,0,0,0,0,0,0,125,1,116,11,0,0,0,0,0,
+ 0,0,0,124,1,106,12,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,116,14,0,0,0,0,0,
+ 0,0,0,106,16,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,107,40,0,0,171,1,0,0,0,
+ 0,0,0,83,0,35,0,116,4,0,0,0,0,0,0,0,
+ 0,116,6,0,0,0,0,0,0,0,0,116,8,0,0,0,
+ 0,0,0,0,0,102,3,36,0,114,3,1,0,89,0,121,
+ 1,119,0,120,3,89,0,119,1,169,2,122,33,84,101,115,
+ 116,32,119,104,101,116,104,101,114,32,97,32,112,97,116,104,
+ 32,105,115,32,97,32,106,117,110,99,116,105,111,110,70,41,
+ 9,114,66,0,0,0,218,5,108,115,116,97,116,218,7,79,
+ 83,69,114,114,111,114,218,10,86,97,108,117,101,69,114,114,
+ 111,114,114,95,0,0,0,218,4,98,111,111,108,114,142,0,
+ 0,0,218,4,115,116,97,116,218,26,73,79,95,82,69,80,
+ 65,82,83,69,95,84,65,71,95,77,79,85,78,84,95,80,
+ 79,73,78,84,169,2,114,56,0,0,0,218,2,115,116,115,
+ 2,0,0,0,32,32,114,57,0,0,0,114,49,0,0,0,
+ 114,49,0,0,0,27,1,0,0,115,77,0,0,0,128,0,
+ 240,4,3,9,25,220,17,19,151,24,145,24,152,36,147,30,
+ 136,66,244,6,0,16,20,144,66,215,20,37,209,20,37,172,
+ 20,215,41,72,209,41,72,209,20,72,211,15,73,208,8,73,
+ 248,244,5,0,17,24,156,26,164,94,208,15,52,242,0,1,
+ 9,25,217,19,24,240,3,1,9,25,250,115,15,0,0,0,
+ 130,21,61,0,189,20,65,20,3,193,19,1,65,20,3,99,
+ 1,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,
+ 3,0,0,0,243,46,0,0,0,151,0,116,1,0,0,0,
+ 0,0,0,0,0,106,2,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,124,0,171,1,0,0,0,
+ 0,0,0,1,0,121,1,114,144,0,0,0,41,2,114,66,
+ 0,0,0,114,67,0,0,0,114,55,0,0,0,115,1,0,
+ 0,0,32,114,57,0,0,0,114,49,0,0,0,114,49,0,
+ 0,0,35,1,0,0,115,16,0,0,0,128,0,228,8,10,
+ 143,9,137,9,144,36,140,15,216,15,20,114,59,0,0,0,
+ 99,1,0,0,0,0,0,0,0,0,0,0,0,4,0,0,
+ 0,3,0,0,0,243,90,0,0,0,151,0,9,0,116,1,
+ 0,0,0,0,0,0,0,0,106,2,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,124,0,171,1,
+ 0,0,0,0,0,0,125,1,121,2,35,0,116,4,0,0,
+ 0,0,0,0,0,0,116,6,0,0,0,0,0,0,0,0,
+ 102,2,36,0,114,3,1,0,89,0,121,1,119,0,120,3,
+ 89,0,119,1,41,3,122,67,84,101,115,116,32,119,104,101,
+ 116,104,101,114,32,97,32,112,97,116,104,32,101,120,105,115,
+ 116,115,46,32,32,82,101,116,117,114,110,115,32,84,114,117,
+ 101,32,102,111,114,32,98,114,111,107,101,110,32,115,121,109,
+ 98,111,108,105,99,32,108,105,110,107,115,70,84,41,4,114,
+ 66,0,0,0,114,145,0,0,0,114,146,0,0,0,114,147,
+ 0,0,0,114,151,0,0,0,115,2,0,0,0,32,32,114,
+ 57,0,0,0,114,26,0,0,0,114,26,0,0,0,43,1,
+ 0,0,115,50,0,0,0,128,0,240,4,3,5,21,220,13,
+ 15,143,88,137,88,144,100,139,94,136,2,240,6,0,12,16,
+ 248,244,5,0,13,20,148,90,208,11,32,242,0,1,5,21,
+ 217,15,20,240,3,1,5,21,250,115,12,0,0,0,130,21,
+ 24,0,152,15,42,3,169,1,42,3,41,1,218,18,95,103,
+ 101,116,118,111,108,117,109,101,112,97,116,104,110,97,109,101,
+ 99,1,0,0,0,0,0,0,0,0,0,0,0,3,0,0,
+ 0,3,0,0,0,243,62,1,0,0,151,0,116,1,0,0,
+ 0,0,0,0,0,0,106,2,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,124,0,171,1,0,0,
+ 0,0,0,0,125,0,116,5,0,0,0,0,0,0,0,0,
+ 124,0,171,1,0,0,0,0,0,0,125,1,116,7,0,0,
+ 0,0,0,0,0,0,124,0,171,1,0,0,0,0,0,0,
+ 125,0,116,9,0,0,0,0,0,0,0,0,124,0,171,1,
+ 0,0,0,0,0,0,92,3,0,0,125,2,125,3,125,4,
+ 124,2,114,10,124,2,100,1,25,0,0,0,124,1,118,0,
+ 114,3,124,4,12,0,83,0,124,3,114,3,124,4,115,1,
+ 121,2,116,10,0,0,0,0,0,0,0,0,114,76,124,0,
+ 106,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,124,1,171,1,0,0,0,0,0,0,125,5,
+ 116,11,0,0,0,0,0,0,0,0,124,0,171,1,0,0,
+ 0,0,0,0,106,13,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,124,1,171,1,0,0,0,0,
+ 0,0,125,6,124,5,106,15,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,171,0,0,0,0,0,
+ 0,0,124,6,106,15,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,171,0,0,0,0,0,0,0,
+ 107,40,0,0,83,0,121,3,41,4,122,97,84,101,115,116,
+ 32,119,104,101,116,104,101,114,32,97,32,112,97,116,104,32,
+ 105,115,32,97,32,109,111,117,110,116,32,112,111,105,110,116,
+ 32,40,97,32,100,114,105,118,101,32,114,111,111,116,44,32,
+ 116,104,101,32,114,111,111,116,32,111,102,32,97,10,32,32,
+ 32,32,115,104,97,114,101,44,32,111,114,32,97,32,109,111,
+ 117,110,116,101,100,32,118,111,108,117,109,101,41,114,8,0,
+ 0,0,84,70,41,8,114,66,0,0,0,114,67,0,0,0,
+ 114,58,0,0,0,114,33,0,0,0,114,14,0,0,0,114,
+ 155,0,0,0,114,129,0,0,0,218,8,99,97,115,101,102,
+ 111,108,100,41,7,114,56,0,0,0,114,100,0,0,0,114,
+ 110,0,0,0,114,111,0,0,0,218,4,114,101,115,116,218,
+ 1,120,218,1,121,115,7,0,0,0,32,32,32,32,32,32,
+ 32,114,57,0,0,0,114,29,0,0,0,114,29,0,0,0,
+ 65,1,0,0,115,145,0,0,0,128,0,244,6,0,12,14,
+ 143,57,137,57,144,84,139,63,128,68,220,11,24,152,20,211,
+ 11,30,128,68,220,11,18,144,52,139,61,128,68,220,24,33,
+ 160,36,155,15,209,4,21,128,69,136,52,144,20,217,7,12,
+ 144,21,144,113,145,24,152,84,209,17,33,216,19,23,136,120,
+ 136,15,217,7,11,145,68,216,15,19,229,7,25,216,12,16,
+ 143,75,137,75,152,4,211,12,29,136,1,220,11,29,152,100,
+ 211,11,35,215,11,42,209,11,42,168,52,211,11,48,136,1,
+ 216,15,16,143,122,137,122,139,124,152,113,159,122,153,122,155,
+ 124,209,15,43,208,8,43,224,15,20,114,59,0,0,0,99,
+ 1,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,
+ 3,0,0,0,243,56,3,0,0,151,0,116,1,0,0,0,
+ 0,0,0,0,0,106,2,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,124,0,171,1,0,0,0,
+ 0,0,0,125,0,116,5,0,0,0,0,0,0,0,0,124,
+ 0,116,6,0,0,0,0,0,0,0,0,171,2,0,0,0,
+ 0,0,0,114,3,100,1,125,1,110,2,100,2,125,1,124,
+ 0,106,9,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,124,1,171,1,0,0,0,0,0,0,115,
+ 2,124,0,83,0,100,3,116,11,0,0,0,0,0,0,0,
+ 0,124,0,171,1,0,0,0,0,0,0,125,3,125,2,124,
+ 2,124,3,107,2,0,0,114,43,124,0,124,2,25,0,0,
+ 0,116,13,0,0,0,0,0,0,0,0,124,0,171,1,0,
+ 0,0,0,0,0,118,1,114,27,124,2,100,3,122,13,0,
+ 0,125,2,124,2,124,3,107,2,0,0,114,17,124,0,124,
+ 2,25,0,0,0,116,13,0,0,0,0,0,0,0,0,124,
+ 0,171,1,0,0,0,0,0,0,118,1,114,1,140,27,100,
+ 4,116,0,0,0,0,0,0,0,0,0,106,14,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,
+ 0,114,20,116,0,0,0,0,0,0,0,0,0,106,14,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,100,4,25,0,0,0,125,4,110,69,100,5,116,0,0,
+ 0,0,0,0,0,0,0,106,14,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,118,1,114,2,124,
+ 0,83,0,9,0,116,0,0,0,0,0,0,0,0,0,106,
+ 14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,100,6,25,0,0,0,125,5,116,19,0,0,0,
+ 0,0,0,0,0,124,5,116,0,0,0,0,0,0,0,0,
+ 0,106,14,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,100,5,25,0,0,0,171,2,0,0,0,
+ 0,0,0,125,4,124,2,100,3,107,55,0,0,114,115,124,
+ 0,100,3,124,2,26,0,125,6,116,5,0,0,0,0,0,
+ 0,0,0,124,6,116,6,0,0,0,0,0,0,0,0,171,
+ 2,0,0,0,0,0,0,114,21,116,1,0,0,0,0,0,
+ 0,0,0,106,20,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,124,6,171,1,0,0,0,0,0,
+ 0,125,6,116,0,0,0,0,0,0,0,0,0,106,14,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,106,23,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,100,8,171,1,0,0,0,0,0,0,125,
+ 7,124,6,124,7,107,55,0,0,114,37,124,7,116,25,0,
+ 0,0,0,0,0,0,0,124,4,171,1,0,0,0,0,0,
+ 0,107,55,0,0,114,2,124,0,83,0,116,19,0,0,0,
+ 0,0,0,0,0,116,27,0,0,0,0,0,0,0,0,124,
+ 4,171,1,0,0,0,0,0,0,124,6,171,2,0,0,0,
+ 0,0,0,125,4,116,5,0,0,0,0,0,0,0,0,124,
+ 0,116,6,0,0,0,0,0,0,0,0,171,2,0,0,0,
+ 0,0,0,114,21,116,1,0,0,0,0,0,0,0,0,106,
+ 28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,124,4,171,1,0,0,0,0,0,0,125,4,124,
+ 4,124,0,124,2,100,9,26,0,122,0,0,0,83,0,35,
+ 0,116,16,0,0,0,0,0,0,0,0,36,0,114,5,1,
+ 0,100,7,125,5,89,0,140,207,119,0,120,3,89,0,119,
+ 1,41,10,122,76,69,120,112,97,110,100,32,126,32,97,110,
+ 100,32,126,117,115,101,114,32,99,111,110,115,116,114,117,99,
+ 116,115,46,10,10,32,32,32,32,73,102,32,117,115,101,114,
+ 32,111,114,32,36,72,79,77,69,32,105,115,32,117,110,107,
+ 110,111,119,110,44,32,100,111,32,110,111,116,104,105,110,103,
+ 46,243,1,0,0,0,126,250,1,126,114,86,0,0,0,218,
+ 11,85,83,69,82,80,82,79,70,73,76,69,218,8,72,79,
+ 77,69,80,65,84,72,218,9,72,79,77,69,68,82,73,86,
+ 69,114,116,0,0,0,218,8,85,83,69,82,78,65,77,69,
+ 78,41,15,114,66,0,0,0,114,67,0,0,0,114,53,0,
+ 0,0,114,54,0,0,0,114,87,0,0,0,114,128,0,0,
+ 0,114,58,0,0,0,218,7,101,110,118,105,114,111,110,218,
+ 8,75,101,121,69,114,114,111,114,114,12,0,0,0,114,80,
+ 0,0,0,218,3,103,101,116,114,17,0,0,0,114,18,0,
+ 0,0,114,79,0,0,0,41,8,114,56,0,0,0,218,5,
+ 116,105,108,100,101,114,132,0,0,0,218,1,110,218,8,117,
+ 115,101,114,104,111,109,101,114,110,0,0,0,218,11,116,97,
+ 114,103,101,116,95,117,115,101,114,218,12,99,117,114,114,101,
+ 110,116,95,117,115,101,114,115,8,0,0,0,32,32,32,32,
+ 32,32,32,32,114,57,0,0,0,114,30,0,0,0,114,30,
+ 0,0,0,94,1,0,0,115,123,1,0,0,128,0,244,8,
+ 0,12,14,143,57,137,57,144,84,139,63,128,68,220,7,17,
+ 144,36,156,5,212,7,30,216,16,20,137,5,224,16,19,136,
+ 5,216,11,15,143,63,137,63,152,53,212,11,33,216,15,19,
+ 136,11,216,11,12,140,99,144,36,139,105,128,113,128,65,216,
+ 10,11,136,97,138,37,144,68,152,17,145,71,164,61,176,20,
+ 211,35,54,209,20,54,216,8,9,136,81,137,6,136,1,240,
+ 3,0,11,12,136,97,138,37,144,68,152,17,145,71,164,61,
+ 176,20,211,35,54,210,20,54,240,6,0,8,21,156,2,159,
+ 10,153,10,209,7,34,220,19,21,151,58,145,58,152,109,209,
+ 19,44,137,8,216,13,23,156,50,159,58,153,58,209,13,37,
+ 216,15,19,136,11,240,4,3,9,23,220,20,22,151,74,145,
+ 74,152,123,209,20,43,136,69,244,6,0,20,24,152,5,156,
+ 114,159,122,153,122,168,42,209,31,53,211,19,54,136,8,224,
+ 7,8,136,65,130,118,216,22,26,152,49,152,81,144,105,136,
+ 11,220,11,21,144,107,164,53,212,11,41,220,26,28,159,43,
+ 153,43,160,107,211,26,50,136,75,220,23,25,151,122,145,122,
+ 151,126,145,126,160,106,211,23,49,136,12,224,11,22,152,44,
+ 210,11,38,240,12,0,16,28,156,120,168,8,211,31,49,210,
+ 15,49,216,23,27,144,11,220,23,27,156,71,160,72,211,28,
+ 45,168,123,211,23,59,136,72,228,7,17,144,36,156,5,212,
+ 7,30,220,19,21,151,59,145,59,152,120,211,19,40,136,8,
+ 224,11,19,144,100,152,49,152,50,144,104,209,11,30,208,4,
+ 30,248,244,47,0,16,24,242,0,1,9,23,216,20,22,138,
+ 69,240,3,1,9,23,250,115,18,0,0,0,194,54,19,70,
+ 11,0,198,11,11,70,25,3,198,24,1,70,25,3,99,1,
+ 0,0,0,0,0,0,0,0,0,0,0,6,0,0,0,3,
+ 0,0,0,243,236,6,0,0,151,0,116,1,0,0,0,0,
+ 0,0,0,0,106,2,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,124,0,171,1,0,0,0,0,
+ 0,0,125,0,116,5,0,0,0,0,0,0,0,0,124,0,
+ 116,6,0,0,0,0,0,0,0,0,171,2,0,0,0,0,
+ 0,0,114,80,100,1,124,0,118,1,114,6,100,2,124,0,
+ 118,1,114,2,124,0,83,0,100,3,100,4,108,4,125,1,
+ 116,7,0,0,0,0,0,0,0,0,124,1,106,10,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 124,1,106,12,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,122,0,0,0,100,5,122,0,0,0,
+ 100,6,171,2,0,0,0,0,0,0,125,2,100,7,125,3,
+ 100,2,125,4,100,8,125,5,100,9,125,6,100,1,125,7,
+ 116,15,0,0,0,0,0,0,0,0,116,0,0,0,0,0,
+ 0,0,0,0,100,10,100,4,171,3,0,0,0,0,0,0,
+ 125,8,110,68,100,11,124,0,118,1,114,6,100,12,124,0,
+ 118,1,114,2,124,0,83,0,100,3,100,4,108,4,125,1,
+ 124,1,106,10,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,124,1,106,12,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,122,0,0,0,
+ 100,5,122,0,0,0,125,2,100,13,125,3,100,12,125,4,
+ 100,14,125,5,100,15,125,6,100,11,125,7,116,0,0,0,
+ 0,0,0,0,0,0,106,16,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,125,8,124,0,100,4,
+ 100,3,26,0,125,9,100,3,125,10,116,19,0,0,0,0,
+ 0,0,0,0,124,0,171,1,0,0,0,0,0,0,125,11,
+ 124,10,124,11,107,2,0,0,144,2,114,5,124,0,124,10,
+ 124,10,100,16,122,0,0,0,26,0,125,12,124,12,124,3,
+ 107,40,0,0,114,53,124,0,124,10,100,16,122,0,0,0,
+ 100,4,26,0,125,0,116,19,0,0,0,0,0,0,0,0,
+ 124,0,171,1,0,0,0,0,0,0,125,11,9,0,124,0,
+ 106,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,124,12,171,1,0,0,0,0,0,0,125,10,
+ 124,9,124,12,124,0,100,4,124,10,100,16,122,0,0,0,
+ 26,0,122,0,0,0,122,13,0,0,125,9,144,1,110,183,
+ 124,12,124,4,107,40,0,0,114,141,124,0,124,10,100,16,
+ 122,0,0,0,124,10,100,17,122,0,0,0,26,0,124,4,
+ 107,40,0,0,114,12,124,9,124,12,122,13,0,0,125,9,
+ 124,10,100,16,122,13,0,0,125,10,144,1,110,152,124,0,
+ 124,10,100,16,122,0,0,0,100,4,26,0,125,0,116,19,
+ 0,0,0,0,0,0,0,0,124,0,171,1,0,0,0,0,
+ 0,0,125,11,9,0,124,0,106,21,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,124,4,171,1,
+ 0,0,0,0,0,0,125,10,124,0,100,4,124,10,26,0,
+ 125,13,9,0,124,8,128,58,116,1,0,0,0,0,0,0,
+ 0,0,106,24,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,116,0,0,0,0,0,0,0,0,0,
+ 106,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,116,1,0,0,0,0,0,0,0,0,106,26,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,124,13,171,1,0,0,0,0,0,0,25,0,0,0,
+ 171,1,0,0,0,0,0,0,125,14,110,5,124,8,124,13,
+ 25,0,0,0,125,14,124,9,124,14,122,13,0,0,125,9,
+ 144,1,110,37,124,12,124,7,107,40,0,0,144,1,114,26,
+ 124,0,124,10,100,16,122,0,0,0,124,10,100,17,122,0,
+ 0,0,26,0,124,7,107,40,0,0,114,12,124,9,124,12,
+ 122,13,0,0,125,9,124,10,100,16,122,13,0,0,125,10,
+ 144,1,110,5,124,0,124,10,100,16,122,0,0,0,124,10,
+ 100,17,122,0,0,0,26,0,124,5,107,40,0,0,114,114,
+ 124,0,124,10,100,17,122,0,0,0,100,4,26,0,125,0,
+ 116,19,0,0,0,0,0,0,0,0,124,0,171,1,0,0,
+ 0,0,0,0,125,11,9,0,124,0,106,21,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,6,
+ 171,1,0,0,0,0,0,0,125,10,124,0,100,4,124,10,
+ 26,0,125,13,9,0,124,8,128,58,116,1,0,0,0,0,
+ 0,0,0,0,106,24,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,116,0,0,0,0,0,0,0,
+ 0,0,106,16,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,116,1,0,0,0,0,0,0,0,0,
+ 106,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,124,13,171,1,0,0,0,0,0,0,25,0,
+ 0,0,171,1,0,0,0,0,0,0,125,14,110,5,124,8,
+ 124,13,25,0,0,0,125,14,124,9,124,14,122,13,0,0,
+ 125,9,110,133,124,0,100,4,100,3,26,0,125,13,124,10,
+ 100,16,122,13,0,0,125,10,124,0,124,10,124,10,100,16,
+ 122,0,0,0,26,0,125,12,124,12,114,29,124,12,124,2,
+ 118,0,114,25,124,13,124,12,122,13,0,0,125,13,124,10,
+ 100,16,122,13,0,0,125,10,124,0,124,10,124,10,100,16,
+ 122,0,0,0,26,0,125,12,124,12,114,5,124,12,124,2,
+ 118,0,114,1,140,25,9,0,124,8,128,58,116,1,0,0,
+ 0,0,0,0,0,0,106,24,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,116,0,0,0,0,0,
+ 0,0,0,0,106,16,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,116,1,0,0,0,0,0,0,
+ 0,0,106,26,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,124,13,171,1,0,0,0,0,0,0,
+ 25,0,0,0,171,1,0,0,0,0,0,0,125,14,110,5,
+ 124,8,124,13,25,0,0,0,125,14,124,9,124,14,122,13,
+ 0,0,125,9,124,12,114,11,124,10,100,16,122,23,0,0,
+ 125,10,110,5,124,9,124,12,122,13,0,0,125,9,124,10,
+ 100,16,122,13,0,0,125,10,124,10,124,11,107,2,0,0,
+ 114,2,144,2,140,5,124,9,83,0,35,0,116,22,0,0,
+ 0,0,0,0,0,0,36,0,114,16,1,0,124,9,124,12,
+ 124,0,122,0,0,0,122,13,0,0,125,9,124,11,100,16,
+ 122,10,0,0,125,10,89,0,140,38,119,0,120,3,89,0,
+ 119,1,35,0,116,28,0,0,0,0,0,0,0,0,36,0,
+ 114,12,1,0,124,4,124,13,122,0,0,0,124,4,122,0,
+ 0,0,125,14,89,0,144,1,140,106,119,0,120,3,89,0,
+ 119,1,35,0,116,22,0,0,0,0,0,0,0,0,36,0,
+ 114,16,1,0,124,9,124,4,124,0,122,0,0,0,122,13,
+ 0,0,125,9,124,11,100,16,122,10,0,0,125,10,89,0,
+ 140,90,119,0,120,3,89,0,119,1,35,0,116,28,0,0,
+ 0,0,0,0,0,0,36,0,114,14,1,0,124,7,124,5,
+ 122,0,0,0,124,13,122,0,0,0,124,6,122,0,0,0,
+ 125,14,89,0,140,255,119,0,120,3,89,0,119,1,35,0,
+ 116,22,0,0,0,0,0,0,0,0,36,0,114,19,1,0,
+ 124,9,124,7,124,5,122,0,0,0,124,0,122,0,0,0,
+ 122,13,0,0,125,9,124,11,100,16,122,10,0,0,125,10,
+ 89,0,140,147,119,0,120,3,89,0,119,1,35,0,116,28,
+ 0,0,0,0,0,0,0,0,36,0,114,8,1,0,124,7,
+ 124,13,122,0,0,0,125,14,89,0,140,185,119,0,120,3,
+ 89,0,119,1,41,18,122,102,69,120,112,97,110,100,32,115,
+ 104,101,108,108,32,118,97,114,105,97,98,108,101,115,32,111,
+ 102,32,116,104,101,32,102,111,114,109,115,32,36,118,97,114,
+ 44,32,36,123,118,97,114,125,32,97,110,100,32,37,118,97,
+ 114,37,46,10,10,32,32,32,32,85,110,107,110,111,119,110,
+ 32,118,97,114,105,97,98,108,101,115,32,97,114,101,32,108,
+ 101,102,116,32,117,110,99,104,97,110,103,101,100,46,243,1,
+ 0,0,0,36,243,1,0,0,0,37,114,8,0,0,0,78,
+ 122,2,95,45,218,5,97,115,99,105,105,243,1,0,0,0,
+ 39,243,1,0,0,0,123,243,1,0,0,0,125,218,8,101,
+ 110,118,105,114,111,110,98,250,1,36,250,1,37,250,1,39,
+ 250,1,123,250,1,125,114,86,0,0,0,114,117,0,0,0,
+ 41,15,114,66,0,0,0,114,67,0,0,0,114,53,0,0,
+ 0,114,54,0,0,0,218,6,115,116,114,105,110,103,218,13,
+ 97,115,99,105,105,95,108,101,116,116,101,114,115,218,6,100,
+ 105,103,105,116,115,218,7,103,101,116,97,116,116,114,114,168,
+ 0,0,0,114,128,0,0,0,114,125,0,0,0,114,147,0,
+ 0,0,114,79,0,0,0,114,80,0,0,0,114,169,0,0,
+ 0,41,15,114,56,0,0,0,114,189,0,0,0,218,8,118,
+ 97,114,99,104,97,114,115,218,5,113,117,111,116,101,218,7,
+ 112,101,114,99,101,110,116,218,5,98,114,97,99,101,218,6,
+ 114,98,114,97,99,101,218,6,100,111,108,108,97,114,114,168,
+ 0,0,0,218,3,114,101,115,114,125,0,0,0,218,7,112,
+ 97,116,104,108,101,110,218,1,99,218,3,118,97,114,218,5,
+ 118,97,108,117,101,115,15,0,0,0,32,32,32,32,32,32,
+ 32,32,32,32,32,32,32,32,32,114,57,0,0,0,114,31,
+ 0,0,0,114,31,0,0,0,155,1,0,0,115,72,4,0,
+ 0,128,0,244,8,0,12,14,143,57,137,57,144,84,139,63,
+ 128,68,220,7,17,144,36,156,5,212,7,30,216,11,15,144,
+ 116,209,11,27,160,4,168,68,209,32,48,216,19,23,136,75,
+ 219,8,21,220,19,24,152,22,215,25,45,209,25,45,176,6,
+ 183,13,177,13,209,25,61,192,4,209,25,68,192,103,211,19,
+ 78,136,8,216,16,21,136,5,216,18,22,136,7,216,16,20,
+ 136,5,216,17,21,136,6,216,17,21,136,6,220,18,25,156,
+ 34,152,106,168,36,211,18,47,137,7,224,11,14,144,100,137,
+ 63,152,115,168,36,153,127,216,19,23,136,75,219,8,21,216,
+ 19,25,215,19,39,209,19,39,168,38,175,45,169,45,209,19,
+ 55,184,36,209,19,62,136,8,216,16,20,136,5,216,18,21,
+ 136,7,216,16,19,136,5,216,17,20,136,6,216,17,20,136,
+ 6,220,18,20,151,42,145,42,136,7,216,10,14,136,114,144,
+ 1,136,40,128,67,216,12,13,128,69,220,14,17,144,36,139,
+ 105,128,71,216,10,15,144,39,139,47,216,12,16,144,21,144,
+ 117,152,81,145,119,208,12,31,136,1,216,11,12,144,5,138,
+ 58,216,19,23,152,5,160,1,153,9,152,10,208,19,35,136,
+ 68,220,22,25,152,36,147,105,136,71,240,2,5,13,36,216,
+ 24,28,159,10,153,10,160,49,155,13,144,5,216,16,19,144,
+ 113,152,52,160,10,160,21,168,17,161,25,208,27,43,209,23,
+ 43,209,16,43,146,3,240,8,0,14,15,144,39,138,92,216,
+ 15,19,144,69,152,65,145,73,152,101,160,97,153,105,208,15,
+ 40,168,71,210,15,51,216,16,19,144,113,145,8,144,3,216,
+ 16,21,152,17,145,10,146,5,224,23,27,152,69,160,33,153,
+ 71,152,72,144,126,144,4,220,26,29,152,100,155,41,144,7,
+ 240,2,14,17,33,216,28,32,159,74,153,74,160,119,211,28,
+ 47,144,69,240,10,0,27,31,152,118,160,5,152,44,144,67,
+ 240,2,6,21,56,216,27,34,152,63,220,36,38,167,75,161,
+ 75,180,2,183,10,177,10,188,50,191,59,185,59,192,115,211,
+ 59,75,209,48,76,211,36,77,153,69,224,36,43,168,67,161,
+ 76,152,69,240,6,0,21,24,152,53,145,76,146,67,216,13,
+ 14,144,38,139,91,216,15,19,144,69,152,65,145,73,152,101,
+ 160,97,153,105,208,15,40,168,70,210,15,50,216,16,19,144,
+ 113,145,8,144,3,216,16,21,152,17,145,10,146,5,216,17,
+ 21,144,101,152,97,145,105,160,5,168,1,161,9,208,17,42,
+ 168,101,210,17,51,216,23,27,152,69,160,33,153,71,152,72,
+ 144,126,144,4,220,26,29,152,100,155,41,144,7,240,2,14,
+ 17,33,216,28,32,159,74,153,74,160,118,211,28,46,144,69,
+ 240,10,0,27,31,152,118,160,5,152,44,144,67,240,2,6,
+ 21,62,216,27,34,152,63,220,36,38,167,75,161,75,180,2,
+ 183,10,177,10,188,50,191,59,185,59,192,115,211,59,75,209,
+ 48,76,211,36,77,153,69,224,36,43,168,67,161,76,152,69,
+ 240,6,0,21,24,152,53,145,76,145,67,224,22,26,152,50,
+ 152,65,144,104,144,3,216,16,21,152,17,145,10,144,5,216,
+ 20,24,152,21,152,117,160,113,153,121,208,20,41,144,1,217,
+ 22,23,152,65,160,24,153,77,216,20,23,152,49,145,72,144,
+ 67,216,20,25,152,81,145,74,144,69,216,24,28,152,85,160,
+ 53,168,49,161,57,208,24,45,144,65,241,7,0,23,24,152,
+ 65,160,24,154,77,240,8,6,17,41,216,23,30,144,127,220,
+ 32,34,167,11,161,11,172,66,175,74,169,74,180,114,183,123,
+ 177,123,192,51,211,55,71,209,44,72,211,32,73,153,5,224,
+ 32,39,168,3,161,12,152,5,240,6,0,17,20,144,117,145,
+ 12,144,3,217,19,20,216,20,25,152,81,145,74,145,69,224,
+ 12,15,144,49,137,72,136,67,216,8,13,144,17,137,10,136,
+ 5,240,87,2,0,11,16,144,39,140,47,240,88,2,0,12,
+ 15,128,74,248,244,73,2,0,20,30,242,0,2,13,36,216,
+ 16,19,144,113,152,52,145,120,145,15,144,3,216,24,31,160,
+ 33,153,11,146,5,240,5,2,13,36,251,244,44,0,28,36,
+ 242,0,1,21,56,216,32,39,168,35,161,13,176,7,209,32,
+ 55,155,5,240,3,1,21,56,251,244,21,0,24,34,242,0,
+ 2,17,40,216,20,23,152,55,160,84,153,62,209,20,41,144,
+ 67,216,28,35,160,97,153,75,146,69,240,5,2,17,40,251,
+ 244,64,1,0,28,36,242,0,1,21,62,216,32,38,168,21,
+ 161,14,176,19,209,32,52,176,118,209,32,61,154,5,240,3,
+ 1,21,62,251,244,21,0,24,34,242,0,2,17,40,216,20,
+ 23,152,54,160,69,153,62,168,68,209,27,48,209,20,48,144,
+ 67,216,28,35,160,97,153,75,146,69,240,5,2,17,40,251,
+ 244,52,0,24,32,242,0,1,17,41,216,28,34,160,83,153,
+ 76,146,69,240,3,1,17,41,250,115,111,0,0,0,195,51,
+ 31,75,25,0,197,7,17,76,13,0,197,30,65,1,75,53,
+ 0,199,40,17,77,3,0,199,63,65,1,76,41,0,201,56,
+ 65,1,77,34,0,203,25,22,75,50,3,203,49,1,75,50,
+ 3,203,53,17,76,10,3,204,9,1,76,10,3,204,13,22,
+ 76,38,3,204,37,1,76,38,3,204,41,20,77,0,3,204,
+ 63,1,77,0,3,205,3,25,77,31,3,205,30,1,77,31,
+ 3,205,34,14,77,51,3,205,50,1,77,51,3,41,1,218,
+ 14,95,112,97,116,104,95,110,111,114,109,112,97,116,104,99,
+ 1,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,
+ 3,0,0,0,243,212,0,0,0,151,0,116,1,0,0,0,
+ 0,0,0,0,0,106,2,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,124,0,171,1,0,0,0,
+ 0,0,0,125,0,116,5,0,0,0,0,0,0,0,0,124,
+ 0,116,6,0,0,0,0,0,0,0,0,171,2,0,0,0,
+ 0,0,0,114,53,116,1,0,0,0,0,0,0,0,0,106,
+ 8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,116,11,0,0,0,0,0,0,0,0,116,1,0,
+ 0,0,0,0,0,0,0,106,12,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,124,0,171,1,0,
+ 0,0,0,0,0,171,1,0,0,0,0,0,0,171,1,0,
+ 0,0,0,0,0,120,1,115,2,1,0,100,1,83,0,116,
+ 11,0,0,0,0,0,0,0,0,124,0,171,1,0,0,0,
+ 0,0,0,120,1,115,2,1,0,100,2,83,0,41,3,250,
+ 48,78,111,114,109,97,108,105,122,101,32,112,97,116,104,44,
+ 32,101,108,105,109,105,110,97,116,105,110,103,32,100,111,117,
+ 98,108,101,32,115,108,97,115,104,101,115,44,32,101,116,99,
+ 46,114,135,0,0,0,114,2,0,0,0,41,7,114,66,0,
+ 0,0,114,67,0,0,0,114,53,0,0,0,114,54,0,0,
+ 0,114,79,0,0,0,114,204,0,0,0,114,80,0,0,0,
+ 114,55,0,0,0,115,1,0,0,0,32,114,57,0,0,0,
+ 114,32,0,0,0,114,32,0,0,0,52,2,0,0,115,75,
+ 0,0,0,128,0,228,15,17,143,121,137,121,152,20,139,127,
+ 136,4,220,11,21,144,100,156,69,212,11,34,220,19,21,151,
+ 59,145,59,156,126,172,98,175,107,169,107,184,36,211,46,63,
+ 211,31,64,211,19,65,210,19,73,192,84,208,12,73,220,15,
+ 29,152,100,211,15,35,210,15,42,160,115,208,8,42,114,59,
+ 0,0,0,99,1,0,0,0,0,0,0,0,0,0,0,0,
+ 4,0,0,0,3,0,0,0,243,12,2,0,0,151,0,116,
+ 1,0,0,0,0,0,0,0,0,106,2,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,124,0,171,
+ 1,0,0,0,0,0,0,125,0,116,5,0,0,0,0,0,
+ 0,0,0,124,0,116,6,0,0,0,0,0,0,0,0,171,
+ 2,0,0,0,0,0,0,114,9,100,1,125,1,100,2,125,
+ 2,100,3,125,3,100,4,125,4,110,8,100,5,125,1,100,
+ 6,125,2,100,7,125,3,100,8,125,4,124,0,106,9,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,124,2,124,1,171,2,0,0,0,0,0,0,125,0,116,
+ 11,0,0,0,0,0,0,0,0,124,0,171,1,0,0,0,
+ 0,0,0,92,3,0,0,125,5,125,6,125,0,124,5,124,
+ 6,122,0,0,0,125,7,124,0,106,13,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,124,1,171,
+ 1,0,0,0,0,0,0,125,8,100,9,125,9,124,9,116,
+ 15,0,0,0,0,0,0,0,0,124,8,171,1,0,0,0,
+ 0,0,0,107,2,0,0,114,95,124,8,124,9,25,0,0,
+ 0,114,8,124,8,124,9,25,0,0,0,124,3,107,40,0,
+ 0,114,4,124,8,124,9,61,0,110,63,124,8,124,9,25,
+ 0,0,0,124,4,107,40,0,0,114,50,124,9,100,9,107,
+ 68,0,0,114,28,124,8,124,9,100,10,122,10,0,0,25,
+ 0,0,0,124,4,107,55,0,0,114,17,124,8,124,9,100,
+ 10,122,10,0,0,124,9,100,10,122,0,0,0,133,2,61,
+ 0,124,9,100,10,122,23,0,0,125,9,110,22,124,9,100,
+ 9,107,40,0,0,114,6,124,6,114,4,124,8,124,9,61,
+ 0,110,11,124,9,100,10,122,13,0,0,125,9,110,5,124,
+ 9,100,10,122,13,0,0,125,9,124,9,116,15,0,0,0,
+ 0,0,0,0,0,124,8,171,1,0,0,0,0,0,0,107,
+ 2,0,0,114,1,140,95,124,7,115,19,124,8,115,17,124,
+ 8,106,17,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,124,3,171,1,0,0,0,0,0,0,1,
+ 0,124,7,124,1,106,19,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,124,8,171,1,0,0,0,
+ 0,0,0,122,0,0,0,83,0,41,11,114,206,0,0,0,
+ 114,83,0,0,0,114,84,0,0,0,114,135,0,0,0,243,
+ 2,0,0,0,46,46,114,4,0,0,0,114,6,0,0,0,
+ 114,2,0,0,0,114,3,0,0,0,114,8,0,0,0,114,
+ 86,0,0,0,41,10,114,66,0,0,0,114,67,0,0,0,
+ 114,53,0,0,0,114,54,0,0,0,114,71,0,0,0,114,
+ 14,0,0,0,114,15,0,0,0,114,128,0,0,0,218,6,
+ 97,112,112,101,110,100,114,12,0,0,0,41,10,114,56,0,
+ 0,0,114,36,0,0,0,114,39,0,0,0,114,34,0,0,
+ 0,114,35,0,0,0,114,110,0,0,0,114,111,0,0,0,
+ 218,6,112,114,101,102,105,120,218,5,99,111,109,112,115,114,
+ 132,0,0,0,115,10,0,0,0,32,32,32,32,32,32,32,
+ 32,32,32,114,57,0,0,0,114,32,0,0,0,114,32,0,
+ 0,0,15,2,0,0,115,51,1,0,0,128,0,228,15,17,
+ 143,121,137,121,152,20,139,127,136,4,220,11,21,144,100,156,
+ 69,212,11,34,216,18,23,136,67,216,21,25,136,70,216,21,
+ 25,136,70,216,21,26,137,70,224,18,22,136,67,216,21,24,
+ 136,70,216,21,24,136,70,216,21,25,136,70,216,15,19,143,
+ 124,137,124,152,70,160,67,211,15,40,136,4,220,28,37,160,
+ 100,155,79,209,8,25,136,5,136,116,144,84,216,17,22,152,
+ 20,145,28,136,6,216,16,20,151,10,145,10,152,51,147,15,
+ 136,5,216,12,13,136,1,216,14,15,148,35,144,101,147,42,
+ 138,110,216,19,24,152,17,146,56,152,117,160,81,153,120,168,
+ 54,210,31,49,216,20,25,152,33,145,72,216,17,22,144,113,
+ 145,24,152,86,210,17,35,216,19,20,144,113,146,53,152,85,
+ 160,49,160,81,161,51,153,90,168,54,210,29,49,216,24,29,
+ 152,97,160,1,153,99,160,33,160,65,161,35,152,103,152,14,
+ 216,20,21,152,17,145,70,145,65,216,21,22,152,33,146,86,
+ 161,4,216,24,29,152,97,153,8,224,20,21,152,17,145,70,
+ 145,65,224,16,17,144,81,145,6,144,1,240,25,0,15,16,
+ 148,35,144,101,147,42,139,110,241,28,0,16,22,153,101,216,
+ 12,17,143,76,137,76,152,22,212,12,32,216,15,21,152,3,
+ 159,8,153,8,160,21,155,15,209,15,39,208,8,39,114,59,
+ 0,0,0,99,1,0,0,0,0,0,0,0,0,0,0,0,
+ 4,0,0,0,3,0,0,0,243,226,0,0,0,151,0,116,
+ 1,0,0,0,0,0,0,0,0,106,2,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,124,0,171,
+ 1,0,0,0,0,0,0,125,0,116,5,0,0,0,0,0,
+ 0,0,0,124,0,171,1,0,0,0,0,0,0,115,69,116,
+ 7,0,0,0,0,0,0,0,0,124,0,116,8,0,0,0,
+ 0,0,0,0,0,171,2,0,0,0,0,0,0,114,21,116,
+ 1,0,0,0,0,0,0,0,0,106,10,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,171,0,0,
+ 0,0,0,0,0,125,1,110,20,116,1,0,0,0,0,0,
+ 0,0,0,106,12,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,171,0,0,0,0,0,0,0,125,
+ 1,116,15,0,0,0,0,0,0,0,0,124,1,124,0,171,
+ 2,0,0,0,0,0,0,125,0,116,17,0,0,0,0,0,
+ 0,0,0,124,0,171,1,0,0,0,0,0,0,83,0,41,
+ 1,122,164,82,101,116,117,114,110,32,116,104,101,32,97,98,
+ 115,111,108,117,116,101,32,118,101,114,115,105,111,110,32,111,
+ 102,32,97,32,112,97,116,104,32,97,115,32,97,32,102,97,
+ 108,108,98,97,99,107,32,102,117,110,99,116,105,111,110,32,
+ 105,110,32,99,97,115,101,10,32,32,32,32,96,110,116,46,
+ 95,103,101,116,102,117,108,108,112,97,116,104,110,97,109,101,
+ 96,32,105,115,32,110,111,116,32,97,118,97,105,108,97,98,
+ 108,101,32,111,114,32,114,97,105,115,101,115,32,79,83,69,
+ 114,114,111,114,46,32,83,101,101,32,98,112,111,45,51,49,
+ 48,52,55,32,102,111,114,10,32,32,32,32,109,111,114,101,
+ 46,10,10,32,32,32,32,41,9,114,66,0,0,0,114,67,
+ 0,0,0,114,11,0,0,0,114,53,0,0,0,114,54,0,
+ 0,0,218,7,103,101,116,99,119,100,98,218,6,103,101,116,
+ 99,119,100,114,12,0,0,0,114,32,0,0,0,41,2,114,
+ 56,0,0,0,218,3,99,119,100,115,2,0,0,0,32,32,
+ 114,57,0,0,0,218,17,95,97,98,115,112,97,116,104,95,
+ 102,97,108,108,98,97,99,107,114,216,0,0,0,60,2,0,
+ 0,115,77,0,0,0,128,0,244,14,0,12,14,143,57,137,
+ 57,144,84,139,63,128,68,220,11,16,144,20,140,59,220,11,
+ 21,144,100,156,69,212,11,34,220,18,20,151,42,145,42,147,
+ 44,137,67,228,18,20,151,41,145,41,147,43,136,67,220,15,
+ 19,144,67,152,20,139,127,136,4,220,11,19,144,68,139,62,
+ 208,4,25,114,59,0,0,0,41,1,218,16,95,103,101,116,
+ 102,117,108,108,112,97,116,104,110,97,109,101,99,1,0,0,
+ 0,0,0,0,0,0,0,0,0,5,0,0,0,3,0,0,
+ 0,243,108,0,0,0,151,0,9,0,116,1,0,0,0,0,
+ 0,0,0,0,116,3,0,0,0,0,0,0,0,0,124,0,
+ 171,1,0,0,0,0,0,0,171,1,0,0,0,0,0,0,
+ 83,0,35,0,116,4,0,0,0,0,0,0,0,0,116,6,
+ 0,0,0,0,0,0,0,0,102,2,36,0,114,14,1,0,
+ 116,9,0,0,0,0,0,0,0,0,124,0,171,1,0,0,
+ 0,0,0,0,99,2,89,0,83,0,119,0,120,3,89,0,
+ 119,1,41,1,122,38,82,101,116,117,114,110,32,116,104,101,
+ 32,97,98,115,111,108,117,116,101,32,118,101,114,115,105,111,
+ 110,32,111,102,32,97,32,112,97,116,104,46,41,5,114,217,
+ 0,0,0,114,32,0,0,0,114,146,0,0,0,114,147,0,
+ 0,0,114,216,0,0,0,114,55,0,0,0,115,1,0,0,
+ 0,32,114,57,0,0,0,114,33,0,0,0,114,33,0,0,
+ 0,84,2,0,0,115,53,0,0,0,128,0,240,4,3,9,
+ 43,220,19,35,164,72,168,84,163,78,211,19,51,208,12,51,
+ 248,220,16,23,156,26,208,15,36,242,0,1,9,43,220,19,
+ 36,160,84,211,19,42,210,12,42,240,3,1,9,43,250,115,
+ 12,0,0,0,130,19,22,0,150,26,51,3,178,1,51,3,
+ 41,2,218,17,95,103,101,116,102,105,110,97,108,112,97,116,
+ 104,110,97,109,101,218,8,114,101,97,100,108,105,110,107,99,
+ 1,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,
+ 3,0,0,0,243,120,1,0,0,151,0,100,1,125,1,116,
+ 1,0,0,0,0,0,0,0,0,171,0,0,0,0,0,0,
+ 0,125,2,116,3,0,0,0,0,0,0,0,0,124,0,171,
+ 1,0,0,0,0,0,0,124,2,118,1,114,111,124,2,106,
+ 5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,116,3,0,0,0,0,0,0,0,0,124,0,171,
+ 1,0,0,0,0,0,0,171,1,0,0,0,0,0,0,1,
+ 0,9,0,124,0,125,3,116,7,0,0,0,0,0,0,0,
+ 0,124,0,171,1,0,0,0,0,0,0,125,0,116,9,0,
+ 0,0,0,0,0,0,0,124,0,171,1,0,0,0,0,0,
+ 0,115,46,116,11,0,0,0,0,0,0,0,0,124,3,171,
+ 1,0,0,0,0,0,0,115,5,124,3,125,0,9,0,124,
+ 0,83,0,116,13,0,0,0,0,0,0,0,0,116,15,0,
+ 0,0,0,0,0,0,0,116,17,0,0,0,0,0,0,0,
+ 0,124,3,171,1,0,0,0,0,0,0,124,0,171,2,0,
+ 0,0,0,0,0,171,1,0,0,0,0,0,0,125,0,116,
+ 3,0,0,0,0,0,0,0,0,124,0,171,1,0,0,0,
+ 0,0,0,124,2,118,1,114,1,140,111,124,0,83,0,35,
+ 0,116,18,0,0,0,0,0,0,0,0,36,0,114,26,125,
+ 4,124,4,106,20,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,124,1,118,0,114,6,89,0,100,
+ 0,125,4,126,4,124,0,83,0,130,0,100,0,125,4,126,
+ 4,119,1,116,22,0,0,0,0,0,0,0,0,36,0,114,
+ 4,1,0,89,0,124,0,83,0,119,0,120,3,89,0,119,
+ 1,41,2,78,41,12,114,86,0,0,0,114,117,0,0,0,
+ 114,85,0,0,0,233,5,0,0,0,233,21,0,0,0,233,
+ 32,0,0,0,233,50,0,0,0,233,67,0,0,0,233,87,
+ 0,0,0,105,38,17,0,0,105,40,17,0,0,105,41,17,
+ 0,0,41,12,218,3,115,101,116,114,10,0,0,0,218,3,
+ 97,100,100,218,12,95,110,116,95,114,101,97,100,108,105,110,
+ 107,114,11,0,0,0,114,24,0,0,0,114,32,0,0,0,
+ 114,12,0,0,0,114,18,0,0,0,114,146,0,0,0,218,
+ 8,119,105,110,101,114,114,111,114,114,147,0,0,0,41,5,
+ 114,56,0,0,0,218,16,97,108,108,111,119,101,100,95,119,
+ 105,110,101,114,114,111,114,218,4,115,101,101,110,218,8,111,
+ 108,100,95,112,97,116,104,218,2,101,120,115,5,0,0,0,
+ 32,32,32,32,32,114,57,0,0,0,218,14,95,114,101,97,
+ 100,108,105,110,107,95,100,101,101,112,114,236,0,0,0,97,
+ 2,0,0,115,207,0,0,0,128,0,240,30,0,28,76,1,
+ 208,8,24,228,15,18,139,117,136,4,220,14,22,144,116,139,
+ 110,160,68,209,14,40,216,12,16,143,72,137,72,148,88,152,
+ 100,147,94,212,12,36,240,2,19,13,22,216,27,31,144,8,
+ 220,23,35,160,68,211,23,41,144,4,244,6,0,24,29,152,
+ 84,148,123,244,8,0,28,34,160,40,212,27,43,216,31,39,
+ 152,4,216,24,29,240,18,0,16,20,136,11,244,17,0,28,
+ 36,164,68,172,23,176,24,211,41,58,184,68,211,36,65,211,
+ 27,66,144,68,244,29,0,15,23,144,116,139,110,160,68,210,
+ 14,40,240,44,0,16,20,136,11,248,244,15,0,20,27,242,
+ 0,3,13,22,216,19,21,151,59,145,59,208,34,50,209,19,
+ 50,219,20,25,240,10,0,16,20,136,11,240,9,0,17,22,
+ 251,220,19,29,242,0,2,13,22,224,16,21,216,15,19,136,
+ 11,240,7,2,13,22,250,115,41,0,0,0,181,37,66,11,
+ 0,193,29,30,66,11,0,194,11,9,66,57,3,194,20,14,
+ 66,41,3,194,40,1,66,41,3,194,41,12,66,57,3,194,
+ 56,1,66,57,3,99,1,0,0,0,0,0,0,0,0,0,
+ 0,0,5,0,0,0,3,0,0,0,243,102,1,0,0,151,
+ 0,100,1,125,1,124,0,100,0,100,2,26,0,125,2,124,
+ 0,114,28,9,0,116,1,0,0,0,0,0,0,0,0,124,
+ 0,171,1,0,0,0,0,0,0,125,0,124,2,114,12,116,
+ 3,0,0,0,0,0,0,0,0,124,0,124,2,171,2,0,
+ 0,0,0,0,0,83,0,124,0,83,0,124,2,83,0,35,
+ 0,116,4,0,0,0,0,0,0,0,0,36,0,114,123,125,
+ 3,124,3,106,6,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,124,1,118,1,114,1,130,0,9,
+ 0,116,9,0,0,0,0,0,0,0,0,124,0,171,1,0,
+ 0,0,0,0,0,125,4,124,4,124,0,107,55,0,0,114,
+ 21,124,2,114,12,116,3,0,0,0,0,0,0,0,0,124,
+ 4,124,2,171,2,0,0,0,0,0,0,110,1,124,4,99,
+ 2,89,0,100,0,125,3,126,3,83,0,110,15,35,0,116,
+ 4,0,0,0,0,0,0,0,0,36,0,114,3,1,0,89,
+ 0,110,4,119,0,120,3,89,0,119,1,116,11,0,0,0,
+ 0,0,0,0,0,124,0,171,1,0,0,0,0,0,0,92,
+ 2,0,0,125,0,125,5,124,0,114,12,124,5,115,10,124,
+ 0,124,2,122,0,0,0,99,2,89,0,100,0,125,3,126,
+ 3,83,0,124,2,114,12,116,3,0,0,0,0,0,0,0,
+ 0,124,5,124,2,171,2,0,0,0,0,0,0,110,1,124,
+ 5,125,2,89,0,100,0,125,3,126,3,110,8,100,0,125,
+ 3,126,3,119,1,119,0,120,3,89,0,119,1,124,0,114,
+ 1,140,168,140,141,41,3,78,41,15,114,86,0,0,0,114,
+ 117,0,0,0,114,85,0,0,0,114,222,0,0,0,114,223,
+ 0,0,0,114,224,0,0,0,114,225,0,0,0,233,53,0,
+ 0,0,233,65,0,0,0,114,226,0,0,0,114,227,0,0,
+ 0,233,123,0,0,0,233,161,0,0,0,105,128,7,0,0,
+ 105,129,7,0,0,114,8,0,0,0,41,6,114,219,0,0,
+ 0,114,12,0,0,0,114,146,0,0,0,114,231,0,0,0,
+ 114,236,0,0,0,114,15,0,0,0,41,6,114,56,0,0,
+ 0,114,232,0,0,0,114,112,0,0,0,114,235,0,0,0,
+ 218,8,110,101,119,95,112,97,116,104,218,4,110,97,109,101,
+ 115,6,0,0,0,32,32,32,32,32,32,114,57,0,0,0,
+ 218,27,95,103,101,116,102,105,110,97,108,112,97,116,104,110,
+ 97,109,101,95,110,111,110,115,116,114,105,99,116,114,244,0,
+ 0,0,139,2,0,0,115,222,0,0,0,128,0,240,36,0,
+ 28,88,1,208,8,24,240,8,0,16,20,144,66,144,81,136,
+ 120,136,4,217,14,18,240,2,22,13,58,220,23,40,168,20,
+ 211,23,46,144,4,217,43,47,148,116,152,68,160,36,211,23,
+ 39,208,16,57,176,84,208,16,57,240,42,0,16,20,136,11,
+ 248,244,41,0,20,27,242,0,19,13,58,216,19,21,151,59,
+ 145,59,208,38,54,209,19,54,216,20,25,240,2,9,17,25,
+ 244,8,0,32,46,168,100,211,31,51,144,72,216,23,31,160,
+ 52,210,23,39,217,55,59,156,116,160,72,168,100,212,31,51,
+ 192,24,213,24,73,240,3,0,24,40,248,228,23,30,242,0,
+ 2,17,25,225,20,24,240,5,2,17,25,250,244,6,0,30,
+ 35,160,52,155,91,145,10,144,4,144,100,241,8,0,20,24,
+ 161,4,216,27,31,160,36,153,59,213,20,38,217,43,47,148,
+ 116,152,68,160,36,212,23,39,176,84,149,4,251,240,39,19,
+ 13,58,250,242,9,0,15,19,248,115,78,0,0,0,139,24,
+ 40,0,164,1,40,0,168,9,66,44,3,177,15,66,39,3,
+ 193,1,31,65,39,2,193,32,1,66,44,3,193,38,1,66,
+ 39,3,193,39,9,65,51,5,193,48,2,66,39,3,193,50,
+ 1,65,51,5,193,51,25,66,39,3,194,12,1,66,44,3,
+ 194,18,16,66,39,3,194,39,5,66,44,3,70,41,1,218,
+ 6,115,116,114,105,99,116,99,1,0,0,0,0,0,0,0,
+ 1,0,0,0,6,0,0,0,3,0,0,0,243,146,3,0,
+ 0,151,0,116,1,0,0,0,0,0,0,0,0,124,0,171,
+ 1,0,0,0,0,0,0,125,0,116,3,0,0,0,0,0,
+ 0,0,0,124,0,116,4,0,0,0,0,0,0,0,0,171,
+ 2,0,0,0,0,0,0,114,73,100,1,125,2,100,2,125,
+ 3,100,3,125,4,116,7,0,0,0,0,0,0,0,0,106,
+ 8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,171,0,0,0,0,0,0,0,125,5,116,11,0,
+ 0,0,0,0,0,0,0,124,0,171,1,0,0,0,0,0,
+ 0,116,11,0,0,0,0,0,0,0,0,116,7,0,0,0,
+ 0,0,0,0,0,106,12,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,116,14,0,0,0,0,0,
+ 0,0,0,171,1,0,0,0,0,0,0,171,1,0,0,0,
+ 0,0,0,107,40,0,0,114,55,121,4,100,5,125,2,100,
+ 6,125,3,100,7,125,4,116,7,0,0,0,0,0,0,0,
+ 0,106,16,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,171,0,0,0,0,0,0,0,125,5,116,
+ 11,0,0,0,0,0,0,0,0,124,0,171,1,0,0,0,
+ 0,0,0,116,11,0,0,0,0,0,0,0,0,116,14,0,
+ 0,0,0,0,0,0,0,171,1,0,0,0,0,0,0,107,
+ 40,0,0,114,1,121,8,124,0,106,19,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,124,2,171,
+ 1,0,0,0,0,0,0,125,6,124,6,115,23,116,21,0,
+ 0,0,0,0,0,0,0,124,0,171,1,0,0,0,0,0,
+ 0,115,12,116,23,0,0,0,0,0,0,0,0,124,5,124,
+ 0,171,2,0,0,0,0,0,0,125,0,9,0,116,25,0,
+ 0,0,0,0,0,0,0,124,0,171,1,0,0,0,0,0,
+ 0,125,0,100,9,125,7,124,6,115,85,124,0,106,19,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,124,2,171,1,0,0,0,0,0,0,114,68,124,0,106,
+ 19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,124,3,171,1,0,0,0,0,0,0,114,18,124,
+ 4,124,0,116,37,0,0,0,0,0,0,0,0,124,3,171,
+ 1,0,0,0,0,0,0,100,0,26,0,122,0,0,0,125,
+ 9,110,14,124,0,116,37,0,0,0,0,0,0,0,0,124,
+ 2,171,1,0,0,0,0,0,0,100,0,26,0,125,9,9,
+ 0,116,25,0,0,0,0,0,0,0,0,124,9,171,1,0,
+ 0,0,0,0,0,124,0,107,40,0,0,114,2,124,9,125,
+ 0,124,0,83,0,124,0,83,0,35,0,116,26,0,0,0,
+ 0,0,0,0,0,36,0,114,44,125,8,124,1,114,21,116,
+ 29,0,0,0,0,0,0,0,0,116,31,0,0,0,0,0,
+ 0,0,0,124,8,171,1,0,0,0,0,0,0,171,1,0,
+ 0,0,0,0,0,100,0,130,2,116,1,0,0,0,0,0,
+ 0,0,0,124,0,171,1,0,0,0,0,0,0,125,0,89,
+ 0,100,0,125,8,126,8,140,137,100,0,125,8,126,8,119,
+ 1,116,28,0,0,0,0,0,0,0,0,36,0,114,36,125,
+ 8,124,1,114,1,130,0,124,8,106,32,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,125,7,116,
+ 35,0,0,0,0,0,0,0,0,124,0,171,1,0,0,0,
+ 0,0,0,125,0,89,0,100,0,125,8,126,8,140,180,100,
+ 0,125,8,126,8,119,1,119,0,120,3,89,0,119,1,35,
+ 0,116,26,0,0,0,0,0,0,0,0,36,0,114,11,125,
+ 8,89,0,100,0,125,8,126,8,124,0,83,0,100,0,125,
+ 8,126,8,119,1,116,28,0,0,0,0,0,0,0,0,36,
+ 0,114,28,125,8,124,8,106,32,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,127,7,107,40,0,
+ 0,114,2,124,9,125,0,89,0,100,0,125,8,126,8,124,
+ 0,83,0,100,0,125,8,126,8,119,1,119,0,120,3,89,
+ 0,119,1,41,10,78,115,4,0,0,0,92,92,63,92,114,
+ 114,0,0,0,115,2,0,0,0,92,92,115,7,0,0,0,
+ 92,92,46,92,78,85,76,122,4,92,92,63,92,114,115,0,
+ 0,0,122,2,92,92,122,7,92,92,46,92,78,85,76,114,
+ 8,0,0,0,41,19,114,32,0,0,0,114,53,0,0,0,
+ 114,54,0,0,0,114,66,0,0,0,114,213,0,0,0,114,
+ 10,0,0,0,114,79,0,0,0,114,41,0,0,0,114,214,
+ 0,0,0,114,87,0,0,0,114,11,0,0,0,114,12,0,
+ 0,0,114,219,0,0,0,114,147,0,0,0,114,146,0,0,
+ 0,218,3,115,116,114,114,231,0,0,0,114,244,0,0,0,
+ 114,128,0,0,0,41,10,114,56,0,0,0,114,245,0,0,
+ 0,114,210,0,0,0,114,121,0,0,0,218,14,110,101,119,
+ 95,117,110,99,95,112,114,101,102,105,120,114,215,0,0,0,
+ 218,10,104,97,100,95,112,114,101,102,105,120,218,16,105,110,
+ 105,116,105,97,108,95,119,105,110,101,114,114,111,114,114,235,
+ 0,0,0,218,5,115,112,97,116,104,115,10,0,0,0,32,
+ 32,32,32,32,32,32,32,32,32,114,57,0,0,0,114,42,
+ 0,0,0,114,42,0,0,0,188,2,0,0,115,174,1,0,
+ 0,128,0,220,15,23,152,4,139,126,136,4,220,11,21,144,
+ 100,156,69,212,11,34,216,21,31,136,70,216,25,40,136,74,
+ 216,29,36,136,78,220,18,20,151,42,145,42,147,44,136,67,
+ 228,15,23,152,4,139,126,164,24,172,34,175,43,169,43,180,
+ 103,211,42,62,211,33,63,210,15,63,216,23,36,224,21,30,
+ 136,70,216,25,39,136,74,216,29,35,136,78,220,18,20,151,
+ 41,145,41,147,43,136,67,228,15,23,152,4,139,126,164,24,
+ 172,39,211,33,50,210,15,50,216,23,35,216,21,25,151,95,
+ 145,95,160,86,211,21,44,136,10,217,15,25,164,37,168,4,
+ 164,43,220,19,23,152,3,152,84,147,63,136,68,240,2,15,
+ 9,53,220,19,36,160,84,211,19,42,136,68,216,31,32,208,
+ 12,28,241,34,0,16,26,152,100,159,111,153,111,168,102,212,
+ 30,53,240,6,0,16,20,143,127,137,127,152,122,212,15,42,
+ 216,24,38,168,20,172,99,176,42,171,111,208,46,62,208,41,
+ 63,209,24,63,145,5,224,24,28,156,83,160,22,155,91,152,
+ 92,208,24,42,144,5,240,4,11,13,33,220,19,36,160,85,
+ 211,19,43,168,116,210,19,51,216,27,32,144,68,240,20,0,
+ 16,20,136,11,136,116,136,11,248,244,73,1,0,16,26,242,
+ 0,7,9,34,241,10,0,16,22,220,22,29,156,99,160,34,
+ 155,103,211,22,38,168,68,208,16,48,220,19,27,152,68,147,
+ 62,141,68,251,220,15,22,242,0,4,9,53,217,15,21,216,
+ 16,21,216,31,33,159,123,153,123,208,12,28,220,19,46,168,
+ 116,211,19,52,141,68,251,240,9,4,9,53,251,244,38,0,
+ 20,30,242,0,3,13,21,243,6,0,17,21,240,12,0,16,
+ 20,136,11,251,244,11,0,20,27,242,0,4,13,33,240,6,
+ 0,20,22,151,59,145,59,208,34,50,210,19,50,216,27,32,
+ 144,68,251,216,15,19,136,11,251,240,11,4,13,33,250,115,
+ 66,0,0,0,195,6,13,68,44,0,196,24,16,70,15,0,
+ 196,44,9,70,12,3,196,53,34,69,28,3,197,28,12,70,
+ 12,3,197,40,26,70,7,3,198,7,5,70,12,3,198,15,
+ 9,71,6,3,198,30,12,71,6,3,198,42,17,71,1,3,
+ 199,1,5,71,6,3,84,99,2,0,0,0,0,0,0,0,
+ 0,0,0,0,7,0,0,0,3,0,0,0,243,76,3,0,
+ 0,151,0,116,1,0,0,0,0,0,0,0,0,106,2,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,124,0,171,1,0,0,0,0,0,0,125,0,116,5,0,
+ 0,0,0,0,0,0,0,124,0,116,6,0,0,0,0,0,
+ 0,0,0,171,2,0,0,0,0,0,0,114,7,100,1,125,
+ 2,100,2,125,3,100,3,125,4,110,6,100,4,125,2,100,
+ 5,125,3,100,6,125,4,124,1,128,2,124,3,125,1,124,
+ 0,115,11,116,9,0,0,0,0,0,0,0,0,100,8,171,
+ 1,0,0,0,0,0,0,130,1,116,1,0,0,0,0,0,
+ 0,0,0,106,2,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,124,1,171,1,0,0,0,0,0,
+ 0,125,1,9,0,116,11,0,0,0,0,0,0,0,0,116,
+ 13,0,0,0,0,0,0,0,0,124,1,171,1,0,0,0,
+ 0,0,0,171,1,0,0,0,0,0,0,125,5,116,11,0,
+ 0,0,0,0,0,0,0,116,13,0,0,0,0,0,0,0,
+ 0,124,0,171,1,0,0,0,0,0,0,171,1,0,0,0,
+ 0,0,0,125,6,116,15,0,0,0,0,0,0,0,0,124,
+ 5,171,1,0,0,0,0,0,0,92,3,0,0,125,7,125,
+ 8,125,9,116,15,0,0,0,0,0,0,0,0,124,6,171,
+ 1,0,0,0,0,0,0,92,3,0,0,125,10,125,8,125,
+ 11,116,17,0,0,0,0,0,0,0,0,124,7,171,1,0,
+ 0,0,0,0,0,116,17,0,0,0,0,0,0,0,0,124,
+ 10,171,1,0,0,0,0,0,0,107,55,0,0,114,17,116,
+ 9,0,0,0,0,0,0,0,0,100,9,124,10,155,2,100,
+ 10,124,7,155,2,157,4,171,1,0,0,0,0,0,0,130,
+ 1,124,9,106,19,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,124,2,171,1,0,0,0,0,0,
+ 0,68,0,143,12,99,2,103,0,99,2,93,7,0,0,125,
+ 12,124,12,115,1,140,6,124,12,145,2,140,9,4,0,125,
+ 13,125,12,124,11,106,19,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,124,2,171,1,0,0,0,
+ 0,0,0,68,0,143,12,99,2,103,0,99,2,93,7,0,
+ 0,125,12,124,12,115,1,140,6,124,12,145,2,140,9,4,
+ 0,125,14,125,12,100,11,125,15,116,21,0,0,0,0,0,
+ 0,0,0,124,13,124,14,171,2,0,0,0,0,0,0,68,
+ 0,93,35,0,0,92,2,0,0,125,16,125,17,116,17,0,
+ 0,0,0,0,0,0,0,124,16,171,1,0,0,0,0,0,
+ 0,116,17,0,0,0,0,0,0,0,0,124,17,171,1,0,
+ 0,0,0,0,0,107,55,0,0,114,2,1,0,110,7,124,
+ 15,100,12,122,13,0,0,125,15,140,37,4,0,124,4,103,
+ 1,116,23,0,0,0,0,0,0,0,0,124,13,171,1,0,
+ 0,0,0,0,0,124,15,122,10,0,0,122,5,0,0,124,
+ 14,124,15,100,7,26,0,122,0,0,0,125,18,124,18,115,
+ 2,124,3,83,0,116,25,0,0,0,0,0,0,0,0,124,
+ 18,142,0,83,0,99,2,1,0,99,2,125,12,119,0,99,
+ 2,1,0,99,2,125,12,119,0,35,0,116,26,0,0,0,
+ 0,0,0,0,0,116,8,0,0,0,0,0,0,0,0,116,
+ 28,0,0,0,0,0,0,0,0,116,30,0,0,0,0,0,
+ 0,0,0,116,32,0,0,0,0,0,0,0,0,102,5,36,
+ 0,114,25,1,0,116,35,0,0,0,0,0,0,0,0,106,
+ 36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,100,13,124,0,124,1,171,3,0,0,0,0,0,
+ 0,1,0,130,0,119,0,120,3,89,0,119,1,41,14,122,
+ 35,82,101,116,117,114,110,32,97,32,114,101,108,97,116,105,
+ 118,101,32,118,101,114,115,105,111,110,32,111,102,32,97,32,
+ 112,97,116,104,114,83,0,0,0,114,135,0,0,0,114,208,
+ 0,0,0,114,4,0,0,0,114,2,0,0,0,114,3,0,
+ 0,0,78,122,17,110,111,32,112,97,116,104,32,115,112,101,
+ 99,105,102,105,101,100,122,17,112,97,116,104,32,105,115,32,
+ 111,110,32,109,111,117,110,116,32,122,17,44,32,115,116,97,
+ 114,116,32,111,110,32,109,111,117,110,116,32,114,8,0,0,
+ 0,114,86,0,0,0,114,44,0,0,0,41,19,114,66,0,
+ 0,0,114,67,0,0,0,114,53,0,0,0,114,54,0,0,
+ 0,114,147,0,0,0,114,33,0,0,0,114,32,0,0,0,
+ 114,14,0,0,0,114,10,0,0,0,114,15,0,0,0,218,
+ 3,122,105,112,114,128,0,0,0,114,12,0,0,0,114,94,
+ 0,0,0,114,95,0,0,0,114,96,0,0,0,218,18,68,
+ 101,112,114,101,99,97,116,105,111,110,87,97,114,110,105,110,
+ 103,114,97,0,0,0,114,98,0,0,0,41,19,114,56,0,
+ 0,0,114,124,0,0,0,114,36,0,0,0,114,34,0,0,
+ 0,114,35,0,0,0,218,9,115,116,97,114,116,95,97,98,
+ 115,218,8,112,97,116,104,95,97,98,115,218,11,115,116,97,
+ 114,116,95,100,114,105,118,101,218,1,95,218,10,115,116,97,
+ 114,116,95,114,101,115,116,218,10,112,97,116,104,95,100,114,
+ 105,118,101,218,9,112,97,116,104,95,114,101,115,116,114,159,
+ 0,0,0,218,10,115,116,97,114,116,95,108,105,115,116,218,
+ 9,112,97,116,104,95,108,105,115,116,114,132,0,0,0,218,
+ 2,101,49,218,2,101,50,218,8,114,101,108,95,108,105,115,
+ 116,115,19,0,0,0,32,32,32,32,32,32,32,32,32,32,
+ 32,32,32,32,32,32,32,32,32,114,57,0,0,0,114,44,
+ 0,0,0,114,44,0,0,0,254,2,0,0,115,179,1,0,
+ 0,128,0,228,11,13,143,57,137,57,144,84,139,63,128,68,
+ 220,7,17,144,36,156,5,212,7,30,216,14,19,136,3,216,
+ 17,21,136,6,216,17,22,137,6,224,14,18,136,3,216,17,
+ 20,136,6,216,17,21,136,6,224,7,12,128,125,216,16,22,
+ 136,5,225,11,15,220,14,24,208,25,44,211,14,45,208,8,
+ 45,228,12,14,143,73,137,73,144,101,211,12,28,128,69,240,
+ 2,24,5,14,220,20,27,156,72,160,85,155,79,211,20,44,
+ 136,9,220,19,26,156,56,160,68,155,62,211,19,42,136,8,
+ 220,37,46,168,121,211,37,57,209,8,34,136,11,144,81,152,
+ 10,220,35,44,168,88,211,35,54,209,8,32,136,10,144,65,
+ 144,121,220,11,19,144,75,211,11,32,164,72,168,90,211,36,
+ 56,210,11,56,221,18,28,218,16,26,153,75,240,3,1,30,
+ 41,243,0,1,19,42,240,0,1,13,42,240,6,0,34,44,
+ 215,33,49,209,33,49,176,35,211,33,54,214,21,60,152,65,
+ 186,33,146,97,208,21,60,136,10,208,21,60,216,32,41,167,
+ 15,161,15,176,3,211,32,52,214,20,58,152,49,186,1,146,
+ 81,208,20,58,136,9,208,20,58,224,12,13,136,1,220,22,
+ 25,152,42,160,105,211,22,48,242,0,3,9,19,137,70,136,
+ 66,144,2,220,15,23,152,2,139,124,156,120,168,2,155,124,
+ 210,15,43,217,16,21,216,12,13,144,17,137,70,137,65,240,
+ 7,3,9,19,240,10,0,21,27,144,56,156,115,160,58,155,
+ 127,168,113,209,31,48,209,19,49,176,73,184,97,184,98,176,
+ 77,209,19,65,136,8,217,15,23,216,19,25,136,77,220,15,
+ 19,144,88,136,127,208,8,30,249,242,25,0,22,61,249,218,
+ 20,58,248,244,24,0,13,22,148,122,164,62,180,60,212,65,
+ 83,208,11,84,242,0,2,5,14,220,8,19,215,8,36,209,
+ 8,36,160,89,176,4,176,101,212,8,60,216,8,13,240,5,
+ 2,5,14,250,115,62,0,0,0,193,26,66,1,69,44,0,
+ 195,27,7,69,34,4,195,35,4,69,34,4,195,39,21,69,
+ 44,0,195,60,7,69,39,4,196,4,4,69,39,4,196,8,
+ 65,17,69,44,0,197,26,7,69,44,0,197,34,10,69,44,
+ 0,197,44,55,70,35,3,99,1,0,0,0,0,0,0,0,
+ 0,0,0,0,10,0,0,0,3,0,0,0,243,96,4,0,
+ 0,151,0,124,0,115,11,116,1,0,0,0,0,0,0,0,
+ 0,100,1,171,1,0,0,0,0,0,0,130,1,116,3,0,
+ 0,0,0,0,0,0,0,116,5,0,0,0,0,0,0,0,
+ 0,116,6,0,0,0,0,0,0,0,0,106,8,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,
+ 0,171,2,0,0,0,0,0,0,171,1,0,0,0,0,0,
+ 0,125,0,116,11,0,0,0,0,0,0,0,0,124,0,100,
+ 2,25,0,0,0,116,12,0,0,0,0,0,0,0,0,171,
+ 2,0,0,0,0,0,0,114,7,100,3,125,1,100,4,125,
+ 2,100,5,125,3,110,6,100,6,125,1,100,7,125,2,100,
+ 8,125,3,9,0,124,0,68,0,143,4,99,2,103,0,99,
+ 2,93,43,0,0,125,4,116,15,0,0,0,0,0,0,0,
+ 0,124,4,106,17,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,124,2,124,1,171,2,0,0,0,
+ 0,0,0,106,19,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,171,0,0,0,0,0,0,0,171,
+ 1,0,0,0,0,0,0,145,2,140,45,4,0,125,5,125,
+ 4,124,5,68,0,143,6,143,7,143,4,99,4,103,0,99,
+ 2,93,23,0,0,92,3,0,0,125,6,125,7,125,4,124,
+ 4,106,21,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,124,1,171,1,0,0,0,0,0,0,145,
+ 2,140,25,4,0,125,8,125,7,125,6,125,4,116,23,0,
+ 0,0,0,0,0,0,0,124,5,68,0,143,6,143,7,143,
+ 4,99,4,104,0,99,2,93,8,0,0,92,3,0,0,125,
+ 6,125,7,125,4,124,7,146,2,140,10,4,0,99,4,125,
+ 4,125,7,125,6,171,1,0,0,0,0,0,0,100,9,107,
+ 55,0,0,114,11,116,1,0,0,0,0,0,0,0,0,100,
+ 10,171,1,0,0,0,0,0,0,130,1,116,23,0,0,0,
+ 0,0,0,0,0,124,5,68,0,143,6,143,7,143,4,99,
+ 4,104,0,99,2,93,8,0,0,92,3,0,0,125,6,125,
+ 7,125,4,124,6,146,2,140,10,4,0,99,4,125,4,125,
+ 7,125,6,171,1,0,0,0,0,0,0,100,9,107,55,0,
+ 0,114,11,116,1,0,0,0,0,0,0,0,0,100,11,171,
+ 1,0,0,0,0,0,0,130,1,116,15,0,0,0,0,0,
+ 0,0,0,124,0,100,2,25,0,0,0,106,17,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,
+ 2,124,1,171,2,0,0,0,0,0,0,171,1,0,0,0,
+ 0,0,0,92,3,0,0,125,9,125,10,125,11,124,11,106,
+ 21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,124,1,171,1,0,0,0,0,0,0,125,12,124,
+ 12,68,0,143,13,99,2,103,0,99,2,93,13,0,0,125,
+ 13,124,13,115,1,140,6,124,13,124,3,107,55,0,0,115,
+ 1,140,12,124,13,145,2,140,15,4,0,125,12,125,13,124,
+ 8,68,0,143,14,143,13,99,3,103,0,99,2,93,27,0,
+ 0,125,14,124,14,68,0,143,13,99,2,103,0,99,2,93,
+ 13,0,0,125,13,124,13,115,1,140,6,124,13,124,3,107,
+ 55,0,0,115,1,140,12,124,13,145,2,140,15,4,0,99,
+ 2,125,13,145,2,140,29,4,0,125,8,125,14,125,13,116,
+ 25,0,0,0,0,0,0,0,0,124,8,171,1,0,0,0,
+ 0,0,0,125,15,116,27,0,0,0,0,0,0,0,0,124,
+ 8,171,1,0,0,0,0,0,0,125,16,116,29,0,0,0,
+ 0,0,0,0,0,124,15,171,1,0,0,0,0,0,0,68,
+ 0,93,20,0,0,92,2,0,0,125,17,125,13,124,13,124,
+ 16,124,17,25,0,0,0,107,55,0,0,115,1,140,15,124,
+ 12,100,12,124,17,26,0,125,12,1,0,110,15,4,0,124,
+ 12,100,12,116,23,0,0,0,0,0,0,0,0,124,15,171,
+ 1,0,0,0,0,0,0,26,0,125,12,124,9,124,10,122,
+ 0,0,0,124,1,106,31,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,124,12,171,1,0,0,0,
+ 0,0,0,122,0,0,0,83,0,99,2,1,0,99,2,125,
+ 4,119,0,99,2,1,0,99,4,125,4,125,7,125,6,119,
+ 0,99,2,1,0,99,4,125,4,125,7,125,6,119,0,99,
+ 2,1,0,99,4,125,4,125,7,125,6,119,0,99,2,1,
+ 0,99,2,125,13,119,0,99,2,1,0,99,2,125,13,119,
+ 0,99,2,1,0,99,3,125,13,125,14,119,0,35,0,116,
+ 32,0,0,0,0,0,0,0,0,116,34,0,0,0,0,0,
+ 0,0,0,102,2,36,0,114,24,1,0,116,37,0,0,0,
+ 0,0,0,0,0,106,38,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,100,13,103,1,124,0,162,
+ 1,173,6,142,0,1,0,130,0,119,0,120,3,89,0,119,
+ 1,41,14,122,68,71,105,118,101,110,32,97,32,115,101,113,
+ 117,101,110,99,101,32,111,102,32,112,97,116,104,32,110,97,
+ 109,101,115,44,32,114,101,116,117,114,110,115,32,116,104,101,
+ 32,108,111,110,103,101,115,116,32,99,111,109,109,111,110,32,
+ 115,117,98,45,112,97,116,104,46,122,37,99,111,109,109,111,
+ 110,112,97,116,104,40,41,32,97,114,103,32,105,115,32,97,
+ 110,32,101,109,112,116,121,32,115,101,113,117,101,110,99,101,
+ 114,8,0,0,0,114,83,0,0,0,114,84,0,0,0,114,
+ 135,0,0,0,114,4,0,0,0,114,6,0,0,0,114,2,
+ 0,0,0,114,86,0,0,0,122,37,67,97,110,39,116,32,
+ 109,105,120,32,97,98,115,111,108,117,116,101,32,97,110,100,
+ 32,114,101,108,97,116,105,118,101,32,112,97,116,104,115,122,
+ 31,80,97,116,104,115,32,100,111,110,39,116,32,104,97,118,
+ 101,32,116,104,101,32,115,97,109,101,32,100,114,105,118,101,
+ 78,114,48,0,0,0,41,20,114,147,0,0,0,218,5,116,
+ 117,112,108,101,114,93,0,0,0,114,66,0,0,0,114,67,
+ 0,0,0,114,53,0,0,0,114,54,0,0,0,114,14,0,
+ 0,0,114,71,0,0,0,114,81,0,0,0,114,15,0,0,
+ 0,114,128,0,0,0,218,3,109,105,110,218,3,109,97,120,
+ 218,9,101,110,117,109,101,114,97,116,101,114,12,0,0,0,
+ 114,94,0,0,0,114,95,0,0,0,114,97,0,0,0,114,
+ 98,0,0,0,41,18,114,99,0,0,0,114,36,0,0,0,
+ 114,39,0,0,0,114,34,0,0,0,114,105,0,0,0,218,
+ 11,100,114,105,118,101,115,112,108,105,116,115,114,130,0,0,
+ 0,114,131,0,0,0,218,11,115,112,108,105,116,95,112,97,
+ 116,104,115,114,110,0,0,0,114,111,0,0,0,114,56,0,
+ 0,0,218,6,99,111,109,109,111,110,114,201,0,0,0,114,
+ 76,0,0,0,218,2,115,49,218,2,115,50,114,132,0,0,
+ 0,115,18,0,0,0,32,32,32,32,32,32,32,32,32,32,
+ 32,32,32,32,32,32,32,32,114,57,0,0,0,114,48,0,
+ 0,0,114,48,0,0,0,54,3,0,0,115,43,2,0,0,
+ 128,0,241,6,0,12,17,220,14,24,208,25,64,211,14,65,
+ 208,8,65,228,12,17,148,35,148,98,151,105,145,105,160,21,
+ 211,18,39,211,12,40,128,69,220,7,17,144,37,152,1,145,
+ 40,156,69,212,7,34,216,14,19,136,3,216,17,21,136,6,
+ 216,17,21,137,6,224,14,18,136,3,216,17,20,136,6,216,
+ 17,20,136,6,240,4,30,5,14,216,74,79,214,22,80,192,
+ 81,148,121,160,17,167,25,161,25,168,54,176,51,211,33,55,
+ 215,33,61,209,33,61,211,33,63,213,23,64,208,22,80,136,
+ 11,208,22,80,216,51,62,215,22,63,208,22,63,169,7,168,
+ 1,168,49,168,97,144,113,151,119,145,119,152,115,149,124,208,
+ 22,63,136,11,210,22,63,228,11,14,160,27,215,15,45,208,
+ 15,45,145,103,144,97,152,17,152,65,146,1,212,15,45,211,
+ 11,46,176,33,210,11,51,220,18,28,208,29,68,211,18,69,
+ 208,12,69,244,10,0,12,15,160,27,215,15,45,208,15,45,
+ 145,103,144,97,152,17,152,65,146,1,212,15,45,211,11,46,
+ 176,33,210,11,51,220,18,28,208,29,62,211,18,63,208,12,
+ 63,228,28,37,160,101,168,65,161,104,215,38,54,209,38,54,
+ 176,118,184,115,211,38,67,211,28,68,209,8,25,136,5,136,
+ 116,144,84,216,17,21,151,26,145,26,152,67,147,31,136,6,
+ 216,29,35,214,17,57,152,1,162,113,168,81,176,38,171,91,
+ 146,33,208,17,57,136,6,208,17,57,224,68,79,215,22,80,
+ 184,113,160,49,214,23,58,152,97,170,1,168,97,176,54,171,
+ 107,154,1,212,23,58,208,22,80,136,11,209,22,80,220,13,
+ 16,144,27,211,13,29,136,2,220,13,16,144,27,211,13,29,
+ 136,2,220,20,29,152,98,147,77,242,0,5,9,38,137,68,
+ 136,65,136,113,216,15,16,144,66,144,113,145,69,139,122,216,
+ 25,31,160,2,160,17,152,26,144,6,217,16,21,240,7,5,
+ 9,38,240,10,0,22,28,152,72,156,83,160,18,155,87,208,
+ 21,37,136,70,224,15,20,144,116,137,124,152,99,159,104,153,
+ 104,160,118,211,30,46,209,15,46,208,8,46,249,242,53,0,
+ 23,81,1,249,220,22,63,249,228,15,45,249,244,12,0,16,
+ 46,249,242,10,0,18,58,249,226,23,58,249,211,22,80,248,
+ 244,22,0,13,22,148,126,208,11,38,242,0,2,5,14,220,
+ 8,19,215,8,36,209,8,36,160,92,208,8,58,176,69,211,
+ 8,58,216,8,13,240,5,2,5,14,250,115,145,0,0,0,
+ 193,18,4,72,6,0,193,22,48,71,28,4,194,6,8,72,
+ 6,0,194,14,28,71,33,8,194,42,15,72,6,0,194,57,
+ 13,71,40,12,195,6,34,72,6,0,195,40,13,71,47,12,
+ 195,53,65,14,72,6,0,197,3,7,71,54,4,197,11,5,
+ 71,54,4,197,17,4,71,54,4,197,21,7,72,6,0,197,
+ 28,9,72,0,6,197,37,7,71,59,12,197,45,5,71,59,
+ 12,197,51,4,71,59,12,197,55,5,72,0,6,197,60,50,
+ 72,6,0,198,47,44,72,6,0,199,28,31,72,6,0,199,
+ 59,5,72,0,6,200,0,6,72,6,0,200,6,39,72,45,
+ 3,41,1,218,11,95,112,97,116,104,95,105,115,100,105,114,
+ 41,1,218,12,95,112,97,116,104,95,105,115,102,105,108,101,
+ 41,1,218,12,95,112,97,116,104,95,105,115,108,105,110,107,
+ 41,1,218,12,95,112,97,116,104,95,101,120,105,115,116,115,
+ 41,1,218,16,95,112,97,116,104,95,105,115,100,101,118,100,
+ 114,105,118,101,99,1,0,0,0,0,0,0,0,0,0,0,
+ 0,5,0,0,0,3,0,0,0,243,74,0,0,0,151,0,
+ 9,0,116,1,0,0,0,0,0,0,0,0,116,3,0,0,
+ 0,0,0,0,0,0,124,0,171,1,0,0,0,0,0,0,
+ 171,1,0,0,0,0,0,0,83,0,35,0,116,4,0,0,
+ 0,0,0,0,0,0,36,0,114,3,1,0,89,0,121,1,
+ 119,0,120,3,89,0,119,1,169,2,122,64,68,101,116,101,
+ 114,109,105,110,101,115,32,119,104,101,116,104,101,114,32,116,
+ 104,101,32,115,112,101,99,105,102,105,101,100,32,112,97,116,
+ 104,32,105,115,32,111,110,32,97,32,87,105,110,100,111,119,
+ 115,32,68,101,118,32,68,114,105,118,101,46,70,41,3,114,
+ 25,1,0,0,114,33,0,0,0,114,146,0,0,0,114,55,
+ 0,0,0,115,1,0,0,0,32,114,57,0,0,0,218,10,
+ 105,115,100,101,118,100,114,105,118,101,114,28,1,0,0,124,
+ 3,0,0,115,40,0,0,0,128,0,240,4,3,9,25,220,
+ 19,35,164,71,168,68,163,77,211,19,50,208,12,50,248,220,
+ 15,22,242,0,1,9,25,217,19,24,240,3,1,9,25,250,
+ 115,12,0,0,0,130,19,22,0,150,9,34,3,161,1,34,
+ 3,99,1,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,3,0,0,0,243,4,0,0,0,151,0,121,1,114,
+ 27,1,0,0,169,0,114,55,0,0,0,115,1,0,0,0,
+ 32,114,57,0,0,0,114,28,1,0,0,114,28,1,0,0,
+ 119,3,0,0,115,7,0,0,0,128,0,240,6,0,16,21,
+ 114,59,0,0,0,41,1,78,41,66,218,7,95,95,100,111,
+ 99,95,95,114,34,0,0,0,114,35,0,0,0,114,40,0,
+ 0,0,114,36,0,0,0,114,37,0,0,0,114,39,0,0,
+ 0,114,38,0,0,0,114,41,0,0,0,114,66,0,0,0,
+ 114,68,0,0,0,114,149,0,0,0,114,97,0,0,0,218,
+ 7,95,95,97,108,108,95,95,114,58,0,0,0,218,7,95,
+ 119,105,110,97,112,105,114,60,0,0,0,114,72,0,0,0,
+ 114,61,0,0,0,114,73,0,0,0,114,62,0,0,0,114,
+ 74,0,0,0,114,10,0,0,0,218,11,73,109,112,111,114,
+ 116,69,114,114,111,114,114,11,0,0,0,114,12,0,0,0,
+ 114,13,0,0,0,114,14,0,0,0,114,15,0,0,0,114,
+ 16,0,0,0,114,136,0,0,0,114,17,0,0,0,114,18,
+ 0,0,0,218,7,104,97,115,97,116,116,114,218,11,115,116,
+ 97,116,95,114,101,115,117,108,116,114,49,0,0,0,114,26,
+ 0,0,0,218,2,110,116,114,155,0,0,0,114,29,0,0,
+ 0,114,30,0,0,0,114,31,0,0,0,114,204,0,0,0,
+ 114,32,0,0,0,114,216,0,0,0,114,217,0,0,0,114,
+ 33,0,0,0,114,219,0,0,0,114,220,0,0,0,114,230,
+ 0,0,0,114,236,0,0,0,114,244,0,0,0,114,42,0,
+ 0,0,114,43,0,0,0,114,44,0,0,0,114,48,0,0,
+ 0,114,21,1,0,0,114,27,0,0,0,114,22,1,0,0,
+ 114,28,0,0,0,114,23,1,0,0,114,24,0,0,0,114,
+ 24,1,0,0,114,25,0,0,0,114,25,1,0,0,114,28,
+ 1,0,0,114,30,1,0,0,114,59,0,0,0,114,57,0,
+ 0,0,250,8,60,109,111,100,117,108,101,62,114,38,1,0,
+ 0,1,0,0,0,115,236,1,0,0,240,3,1,1,1,241,
+ 4,4,1,4,240,18,0,10,13,128,6,216,9,13,128,6,
+ 216,9,12,128,6,216,6,10,128,3,216,10,13,128,7,216,
+ 9,12,128,6,216,10,21,128,7,216,10,15,128,7,227,0,
+ 9,219,0,10,219,0,11,219,0,18,220,0,25,242,6,6,
+ 11,79,1,128,7,242,16,4,1,21,240,20,33,1,44,247,
+ 2,3,5,45,241,0,3,5,45,242,10,17,5,56,242,72,
+ 1,16,1,17,242,40,43,1,14,242,98,1,20,1,30,242,
+ 46,49,1,31,242,114,1,13,1,43,242,42,5,1,56,240,
+ 12,0,20,31,215,19,40,209,19,40,215,19,48,209,19,48,
+ 128,8,212,0,16,242,10,2,1,23,242,14,2,1,23,241,
+ 14,0,4,11,136,50,143,62,137,62,208,27,43,212,3,44,
+ 243,2,6,5,74,1,242,16,3,5,21,242,16,6,1,16,
+ 240,36,3,1,30,221,4,37,242,6,17,1,21,242,58,45,
+ 1,31,242,122,1,106,1,1,15,240,96,3,46,1,43,221,
+ 4,33,242,80,1,5,5,43,242,16,14,1,26,240,34,12,
+ 1,43,221,4,35,242,12,5,5,43,240,14,93,2,1,20,
+ 223,4,62,242,10,40,5,20,242,84,1,47,5,20,240,98,
+ 1,0,34,39,244,0,60,5,20,240,64,2,0,30,34,208,
+ 0,26,243,4,43,1,14,242,112,1,46,1,14,240,98,1,
+ 10,1,9,245,8,0,5,40,221,4,41,221,4,41,221,4,
+ 41,240,12,13,1,25,221,4,35,243,14,5,5,25,248,240,
+ 111,25,0,8,19,242,0,9,1,44,244,2,8,5,44,240,
+ 3,9,1,44,251,240,116,7,0,8,19,242,0,1,1,30,
+ 216,25,29,210,4,22,240,3,1,1,30,251,240,94,6,0,
+ 8,19,242,0,35,1,40,244,2,34,5,40,240,3,35,1,
+ 40,251,240,68,2,0,8,19,242,0,1,1,32,216,14,31,
+ 130,71,240,3,1,1,32,251,240,26,0,8,19,242,0,2,
+ 1,23,224,15,22,130,72,240,5,2,1,23,251,240,100,8,
+ 0,8,19,242,0,2,1,9,225,4,8,240,5,2,1,9,
+ 251,240,14,0,8,19,242,0,4,1,21,244,2,3,5,21,
+ 240,3,4,1,21,250,115,125,0,0,0,176,13,67,54,0,
+ 194,14,6,68,4,0,194,30,6,68,17,0,194,43,6,68,
+ 31,0,194,53,8,68,44,0,195,19,24,68,57,0,195,44,
+ 6,69,4,0,195,54,8,68,1,3,196,0,1,68,1,3,
+ 196,4,7,68,14,3,196,13,1,68,14,3,196,17,8,68,
+ 28,3,196,27,1,68,28,3,196,31,7,68,41,3,196,40,
+ 1,68,41,3,196,44,7,68,54,3,196,53,1,68,54,3,
+ 196,57,5,69,1,3,197,0,1,69,1,3,197,4,8,69,
+ 15,3,197,14,1,69,15,3,
+};
diff --git a/contrib/tools/python3/Python/frozen_modules/os.h b/contrib/tools/python3/Python/frozen_modules/os.h
new file mode 100644
index 00000000000..455e9a35749
--- /dev/null
+++ b/contrib/tools/python3/Python/frozen_modules/os.h
@@ -0,0 +1,2715 @@
+/* Auto-generated by Programs/_freeze_module.py */
+const unsigned char _Py_M__os[] = {
+ 227,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,
+ 0,0,0,0,0,243,4,10,0,0,151,0,100,0,90,0,
+ 100,1,100,2,108,1,90,1,100,1,100,2,108,2,90,2,
+ 100,1,100,2,108,3,90,4,100,1,100,3,108,5,109,6,
+ 90,6,1,0,2,0,101,7,101,8,101,9,25,0,0,0,
+ 171,1,0,0,0,0,0,0,90,10,101,2,106,22,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 90,12,103,0,100,4,162,1,90,13,100,5,132,0,90,14,
+ 100,6,132,0,90,15,100,7,101,12,118,0,114,73,100,7,
+ 90,16,100,8,90,17,100,1,100,9,108,18,173,2,1,0,
+ 9,0,100,1,100,10,108,18,109,19,90,19,1,0,101,13,
+ 106,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,100,11,171,1,0,0,0,0,0,0,1,0,
+ 100,1,100,2,108,22,90,23,9,0,100,1,100,12,108,18,
+ 109,24,90,24,1,0,100,1,100,2,108,18,90,18,101,13,
+ 106,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,2,0,101,15,101,18,171,1,0,0,0,0,
+ 0,0,171,1,0,0,0,0,0,0,1,0,91,18,110,85,
+ 100,13,101,12,118,0,114,73,100,13,90,16,100,14,90,17,
+ 100,1,100,9,108,26,173,2,1,0,9,0,100,1,100,10,
+ 108,26,109,19,90,19,1,0,101,13,106,41,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,11,
+ 171,1,0,0,0,0,0,0,1,0,100,1,100,2,108,27,
+ 90,23,100,1,100,2,108,26,90,26,101,13,106,51,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 2,0,101,15,101,26,171,1,0,0,0,0,0,0,171,1,
+ 0,0,0,0,0,0,1,0,91,26,9,0,100,1,100,12,
+ 108,26,109,24,90,24,1,0,110,8,2,0,101,21,100,15,
+ 171,1,0,0,0,0,0,0,130,1,101,23,101,2,106,56,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,100,16,60,0,0,0,100,1,100,17,108,29,109,30,
+ 90,30,109,31,90,31,109,32,90,32,109,33,90,33,109,34,
+ 90,34,109,35,90,35,109,36,90,36,109,37,90,37,1,0,
+ 91,12,2,0,101,14,100,18,171,1,0,0,0,0,0,0,
+ 144,1,114,195,2,0,101,38,171,0,0,0,0,0,0,0,
+ 90,39,100,19,132,0,90,40,2,0,101,41,171,0,0,0,
+ 0,0,0,0,90,42,2,0,101,40,100,20,100,21,171,2,
+ 0,0,0,0,0,0,1,0,2,0,101,40,100,22,100,23,
+ 171,2,0,0,0,0,0,0,1,0,2,0,101,40,100,24,
+ 100,25,171,2,0,0,0,0,0,0,1,0,2,0,101,40,
+ 100,26,100,27,171,2,0,0,0,0,0,0,1,0,2,0,
+ 101,40,100,28,100,29,171,2,0,0,0,0,0,0,1,0,
+ 2,0,101,40,100,30,100,31,171,2,0,0,0,0,0,0,
+ 1,0,2,0,101,40,100,32,100,33,171,2,0,0,0,0,
+ 0,0,1,0,2,0,101,40,100,34,100,35,171,2,0,0,
+ 0,0,0,0,1,0,2,0,101,40,100,36,100,37,171,2,
+ 0,0,0,0,0,0,1,0,2,0,101,40,100,38,100,39,
+ 171,2,0,0,0,0,0,0,1,0,2,0,101,40,100,40,
+ 100,41,171,2,0,0,0,0,0,0,1,0,2,0,101,40,
+ 100,42,100,43,171,2,0,0,0,0,0,0,1,0,2,0,
+ 101,40,100,44,100,45,171,2,0,0,0,0,0,0,1,0,
+ 2,0,101,40,100,46,100,47,171,2,0,0,0,0,0,0,
+ 1,0,2,0,101,40,100,46,100,48,171,2,0,0,0,0,
+ 0,0,1,0,2,0,101,40,100,49,100,29,171,2,0,0,
+ 0,0,0,0,1,0,101,42,90,43,2,0,101,41,171,0,
+ 0,0,0,0,0,0,90,42,2,0,101,40,100,20,100,21,
+ 171,2,0,0,0,0,0,0,1,0,101,42,90,44,2,0,
+ 101,41,171,0,0,0,0,0,0,0,90,42,2,0,101,40,
+ 100,50,100,51,171,2,0,0,0,0,0,0,1,0,2,0,
+ 101,40,100,52,100,23,171,2,0,0,0,0,0,0,1,0,
+ 2,0,101,40,100,53,100,25,171,2,0,0,0,0,0,0,
+ 1,0,2,0,101,40,100,54,100,55,171,2,0,0,0,0,
+ 0,0,1,0,2,0,101,40,100,54,100,56,171,2,0,0,
+ 0,0,0,0,1,0,2,0,101,40,100,57,100,58,171,2,
+ 0,0,0,0,0,0,1,0,101,42,106,91,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,3,
+ 171,1,0,0,0,0,0,0,1,0,2,0,101,40,100,59,
+ 100,60,171,2,0,0,0,0,0,0,1,0,2,0,101,40,
+ 100,61,100,29,171,2,0,0,0,0,0,0,1,0,2,0,
+ 101,40,100,62,100,29,171,2,0,0,0,0,0,0,1,0,
+ 2,0,101,40,100,63,100,64,171,2,0,0,0,0,0,0,
+ 1,0,2,0,101,14,100,65,171,1,0,0,0,0,0,0,
+ 114,17,2,0,101,14,100,66,171,1,0,0,0,0,0,0,
+ 114,9,2,0,101,40,100,67,100,65,171,2,0,0,0,0,
+ 0,0,1,0,101,42,90,46,2,0,101,41,171,0,0,0,
+ 0,0,0,0,90,42,2,0,101,40,100,20,100,21,171,2,
+ 0,0,0,0,0,0,1,0,2,0,101,40,100,24,100,25,
+ 171,2,0,0,0,0,0,0,1,0,2,0,101,40,100,26,
+ 100,27,171,2,0,0,0,0,0,0,1,0,2,0,101,40,
+ 100,68,100,69,171,2,0,0,0,0,0,0,1,0,2,0,
+ 101,40,100,70,100,23,171,2,0,0,0,0,0,0,1,0,
+ 2,0,101,14,100,71,171,1,0,0,0,0,0,0,114,9,
+ 2,0,101,40,100,72,100,25,171,2,0,0,0,0,0,0,
+ 1,0,2,0,101,40,100,30,100,31,171,2,0,0,0,0,
+ 0,0,1,0,2,0,101,40,100,73,100,29,171,2,0,0,
+ 0,0,0,0,1,0,2,0,101,40,100,74,100,27,171,2,
+ 0,0,0,0,0,0,1,0,2,0,101,40,100,26,100,27,
+ 171,2,0,0,0,0,0,0,1,0,2,0,101,40,100,49,
+ 100,29,171,2,0,0,0,0,0,0,1,0,2,0,101,40,
+ 100,75,100,27,171,2,0,0,0,0,0,0,1,0,101,42,
+ 90,47,91,42,91,24,91,39,91,40,100,1,90,48,100,76,
+ 90,49,100,77,90,50,100,140,100,79,132,1,90,51,100,80,
+ 132,0,90,52,100,81,132,0,90,53,101,13,106,51,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 103,0,100,82,162,1,171,1,0,0,0,0,0,0,1,0,
+ 100,141,100,83,132,1,90,54,101,13,106,41,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,84,
+ 171,1,0,0,0,0,0,0,1,0,101,55,101,3,104,2,
+ 101,43,107,26,0,0,114,35,101,56,101,3,104,2,101,46,
+ 107,26,0,0,114,28,100,142,100,78,100,2,100,85,156,2,
+ 100,86,132,3,90,57,100,87,132,0,90,58,101,13,106,41,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,100,88,171,1,0,0,0,0,0,0,1,0,100,89,
+ 132,0,90,59,100,90,132,0,90,60,100,91,132,0,90,61,
+ 100,92,132,0,90,62,100,93,132,0,90,63,100,94,132,0,
+ 90,64,101,13,106,51,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,103,0,100,95,162,1,171,1,
+ 0,0,0,0,0,0,1,0,100,143,100,96,132,1,90,65,
+ 100,143,100,97,132,1,90,66,100,1,100,98,108,5,109,67,
+ 90,67,109,68,90,68,1,0,2,0,71,0,100,99,132,0,
+ 100,100,101,67,171,3,0,0,0,0,0,0,90,69,100,101,
+ 132,0,90,70,2,0,101,70,171,0,0,0,0,0,0,0,
+ 90,71,91,70,100,143,100,102,132,1,90,72,101,16,100,13,
+ 107,55,0,0,90,73,101,13,106,51,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,100,103,171,1,
+ 0,0,0,0,0,0,1,0,101,73,114,47,100,104,132,0,
+ 90,74,2,0,101,69,101,71,106,150,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,101,74,101,76,
+ 101,74,101,76,171,5,0,0,0,0,0,0,90,77,91,74,
+ 100,143,100,105,132,1,90,78,101,13,106,51,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,106,
+ 171,1,0,0,0,0,0,0,1,0,100,107,132,0,90,79,
+ 2,0,101,79,171,0,0,0,0,0,0,0,92,2,0,0,
+ 90,80,90,81,91,79,2,0,101,14,100,108,171,1,0,0,
+ 0,0,0,0,114,75,2,0,101,14,100,109,171,1,0,0,
+ 0,0,0,0,115,67,2,0,101,14,100,110,171,1,0,0,
+ 0,0,0,0,114,59,100,1,90,82,100,76,120,1,90,83,
+ 90,84,101,13,106,51,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,103,0,100,111,162,1,171,1,
+ 0,0,0,0,0,0,1,0,100,112,132,0,90,85,100,113,
+ 132,0,90,86,100,114,132,0,90,87,100,115,132,0,90,88,
+ 100,116,132,0,90,89,101,13,106,51,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,103,0,100,117,
+ 162,1,171,1,0,0,0,0,0,0,1,0,2,0,101,14,
+ 100,109,171,1,0,0,0,0,0,0,114,25,100,118,132,0,
+ 90,90,100,119,132,0,90,91,101,13,106,51,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,120,
+ 100,121,103,2,171,1,0,0,0,0,0,0,1,0,2,0,
+ 101,14,100,122,171,1,0,0,0,0,0,0,114,25,100,123,
+ 132,0,90,92,100,124,132,0,90,93,101,13,106,51,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 100,125,100,126,103,2,171,1,0,0,0,0,0,0,1,0,
+ 101,2,106,188,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,100,127,107,55,0,0,114,31,100,144,
+ 100,128,132,1,90,95,2,0,71,0,100,129,132,0,100,130,
+ 171,2,0,0,0,0,0,0,90,96,101,13,106,41,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 100,131,171,1,0,0,0,0,0,0,1,0,100,145,100,132,
+ 132,1,90,97,100,133,132,0,90,98,2,0,101,14,100,134,
+ 171,1,0,0,0,0,0,0,115,9,101,98,90,99,100,134,
+ 101,99,95,100,0,0,0,0,0,0,0,0,2,0,71,0,
+ 100,135,132,0,100,136,101,1,106,202,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,171,3,0,0,
+ 0,0,0,0,90,102,101,16,100,13,107,40,0,0,114,14,
+ 2,0,71,0,100,137,132,0,100,138,171,2,0,0,0,0,
+ 0,0,90,103,100,139,132,0,90,104,121,2,121,2,35,0,
+ 101,21,36,0,114,4,1,0,89,0,144,4,140,127,119,0,
+ 120,3,89,0,119,1,35,0,101,21,36,0,114,4,1,0,
+ 89,0,144,4,140,128,119,0,120,3,89,0,119,1,35,0,
+ 101,21,36,0,114,4,1,0,89,0,144,4,140,74,119,0,
+ 120,3,89,0,119,1,35,0,101,21,36,0,114,4,1,0,
+ 89,0,144,4,140,38,119,0,120,3,89,0,119,1,41,146,
+ 97,78,4,0,0,79,83,32,114,111,117,116,105,110,101,115,
+ 32,102,111,114,32,78,84,32,111,114,32,80,111,115,105,120,
+ 32,100,101,112,101,110,100,105,110,103,32,111,110,32,119,104,
+ 97,116,32,115,121,115,116,101,109,32,119,101,39,114,101,32,
+ 111,110,46,10,10,84,104,105,115,32,101,120,112,111,114,116,
+ 115,58,10,32,32,45,32,97,108,108,32,102,117,110,99,116,
+ 105,111,110,115,32,102,114,111,109,32,112,111,115,105,120,32,
+ 111,114,32,110,116,44,32,101,46,103,46,32,117,110,108,105,
+ 110,107,44,32,115,116,97,116,44,32,101,116,99,46,10,32,
+ 32,45,32,111,115,46,112,97,116,104,32,105,115,32,101,105,
+ 116,104,101,114,32,112,111,115,105,120,112,97,116,104,32,111,
+ 114,32,110,116,112,97,116,104,10,32,32,45,32,111,115,46,
+ 110,97,109,101,32,105,115,32,101,105,116,104,101,114,32,39,
+ 112,111,115,105,120,39,32,111,114,32,39,110,116,39,10,32,
+ 32,45,32,111,115,46,99,117,114,100,105,114,32,105,115,32,
+ 97,32,115,116,114,105,110,103,32,114,101,112,114,101,115,101,
+ 110,116,105,110,103,32,116,104,101,32,99,117,114,114,101,110,
+ 116,32,100,105,114,101,99,116,111,114,121,32,40,97,108,119,
+ 97,121,115,32,39,46,39,41,10,32,32,45,32,111,115,46,
+ 112,97,114,100,105,114,32,105,115,32,97,32,115,116,114,105,
+ 110,103,32,114,101,112,114,101,115,101,110,116,105,110,103,32,
+ 116,104,101,32,112,97,114,101,110,116,32,100,105,114,101,99,
+ 116,111,114,121,32,40,97,108,119,97,121,115,32,39,46,46,
+ 39,41,10,32,32,45,32,111,115,46,115,101,112,32,105,115,
+ 32,116,104,101,32,40,111,114,32,97,32,109,111,115,116,32,
+ 99,111,109,109,111,110,41,32,112,97,116,104,110,97,109,101,
+ 32,115,101,112,97,114,97,116,111,114,32,40,39,47,39,32,
+ 111,114,32,39,92,92,39,41,10,32,32,45,32,111,115,46,
+ 101,120,116,115,101,112,32,105,115,32,116,104,101,32,101,120,
+ 116,101,110,115,105,111,110,32,115,101,112,97,114,97,116,111,
+ 114,32,40,97,108,119,97,121,115,32,39,46,39,41,10,32,
+ 32,45,32,111,115,46,97,108,116,115,101,112,32,105,115,32,
+ 116,104,101,32,97,108,116,101,114,110,97,116,101,32,112,97,
+ 116,104,110,97,109,101,32,115,101,112,97,114,97,116,111,114,
+ 32,40,78,111,110,101,32,111,114,32,39,47,39,41,10,32,
+ 32,45,32,111,115,46,112,97,116,104,115,101,112,32,105,115,
+ 32,116,104,101,32,99,111,109,112,111,110,101,110,116,32,115,
+ 101,112,97,114,97,116,111,114,32,117,115,101,100,32,105,110,
+ 32,36,80,65,84,72,32,101,116,99,10,32,32,45,32,111,
+ 115,46,108,105,110,101,115,101,112,32,105,115,32,116,104,101,
+ 32,108,105,110,101,32,115,101,112,97,114,97,116,111,114,32,
+ 105,110,32,116,101,120,116,32,102,105,108,101,115,32,40,39,
+ 92,114,39,32,111,114,32,39,92,110,39,32,111,114,32,39,
+ 92,114,92,110,39,41,10,32,32,45,32,111,115,46,100,101,
+ 102,112,97,116,104,32,105,115,32,116,104,101,32,100,101,102,
+ 97,117,108,116,32,115,101,97,114,99,104,32,112,97,116,104,
+ 32,102,111,114,32,101,120,101,99,117,116,97,98,108,101,115,
+ 10,32,32,45,32,111,115,46,100,101,118,110,117,108,108,32,
+ 105,115,32,116,104,101,32,102,105,108,101,32,112,97,116,104,
+ 32,111,102,32,116,104,101,32,110,117,108,108,32,100,101,118,
+ 105,99,101,32,40,39,47,100,101,118,47,110,117,108,108,39,
+ 44,32,101,116,99,46,41,10,10,80,114,111,103,114,97,109,
+ 115,32,116,104,97,116,32,105,109,112,111,114,116,32,97,110,
+ 100,32,117,115,101,32,39,111,115,39,32,115,116,97,110,100,
+ 32,97,32,98,101,116,116,101,114,32,99,104,97,110,99,101,
+ 32,111,102,32,98,101,105,110,103,10,112,111,114,116,97,98,
+ 108,101,32,98,101,116,119,101,101,110,32,100,105,102,102,101,
+ 114,101,110,116,32,112,108,97,116,102,111,114,109,115,46,32,
+ 32,79,102,32,99,111,117,114,115,101,44,32,116,104,101,121,
+ 32,109,117,115,116,32,116,104,101,110,10,111,110,108,121,32,
+ 117,115,101,32,102,117,110,99,116,105,111,110,115,32,116,104,
+ 97,116,32,97,114,101,32,100,101,102,105,110,101,100,32,98,
+ 121,32,97,108,108,32,112,108,97,116,102,111,114,109,115,32,
+ 40,101,46,103,46,44,32,117,110,108,105,110,107,10,97,110,
+ 100,32,111,112,101,110,100,105,114,41,44,32,97,110,100,32,
+ 108,101,97,118,101,32,97,108,108,32,112,97,116,104,110,97,
+ 109,101,32,109,97,110,105,112,117,108,97,116,105,111,110,32,
+ 116,111,32,111,115,46,112,97,116,104,10,40,101,46,103,46,
+ 44,32,115,112,108,105,116,32,97,110,100,32,106,111,105,110,
+ 41,46,10,233,0,0,0,0,78,41,1,218,14,95,99,104,
+ 101,99,107,95,109,101,116,104,111,100,115,41,18,218,6,97,
+ 108,116,115,101,112,218,6,99,117,114,100,105,114,218,6,112,
+ 97,114,100,105,114,218,3,115,101,112,218,7,112,97,116,104,
+ 115,101,112,218,7,108,105,110,101,115,101,112,218,7,100,101,
+ 102,112,97,116,104,218,4,110,97,109,101,218,4,112,97,116,
+ 104,218,7,100,101,118,110,117,108,108,218,8,83,69,69,75,
+ 95,83,69,84,218,8,83,69,69,75,95,67,85,82,218,8,
+ 83,69,69,75,95,69,78,68,218,8,102,115,101,110,99,111,
+ 100,101,218,8,102,115,100,101,99,111,100,101,218,13,103,101,
+ 116,95,101,120,101,99,95,112,97,116,104,218,6,102,100,111,
+ 112,101,110,218,6,101,120,116,115,101,112,99,1,0,0,0,
+ 0,0,0,0,0,0,0,0,3,0,0,0,3,0,0,0,
+ 243,26,0,0,0,151,0,124,0,116,1,0,0,0,0,0,
+ 0,0,0,171,0,0,0,0,0,0,0,118,0,83,0,169,
+ 1,78,41,1,218,7,103,108,111,98,97,108,115,41,1,114,
+ 11,0,0,0,115,1,0,0,0,32,250,11,60,102,114,111,
+ 122,101,110,32,111,115,62,218,7,95,101,120,105,115,116,115,
+ 114,26,0,0,0,41,0,0,0,115,15,0,0,0,128,0,
+ 216,11,15,148,55,147,57,208,11,28,208,4,28,243,0,0,
+ 0,0,99,1,0,0,0,0,0,0,0,0,0,0,0,6,
+ 0,0,0,3,0,0,0,243,156,0,0,0,151,0,9,0,
+ 116,1,0,0,0,0,0,0,0,0,124,0,106,2,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 171,1,0,0,0,0,0,0,83,0,35,0,116,4,0,0,
+ 0,0,0,0,0,0,36,0,114,43,1,0,116,7,0,0,
+ 0,0,0,0,0,0,124,0,171,1,0,0,0,0,0,0,
+ 68,0,143,1,99,2,103,0,99,2,93,13,0,0,125,1,
+ 124,1,100,1,25,0,0,0,100,2,107,55,0,0,115,1,
+ 140,12,124,1,145,2,140,15,4,0,110,5,99,2,1,0,
+ 99,2,125,1,119,0,99,2,125,1,99,2,89,0,83,0,
+ 119,0,120,3,89,0,119,1,41,3,78,114,2,0,0,0,
+ 218,1,95,41,4,218,4,108,105,115,116,218,7,95,95,97,
+ 108,108,95,95,218,14,65,116,116,114,105,98,117,116,101,69,
+ 114,114,111,114,218,3,100,105,114,41,2,218,6,109,111,100,
+ 117,108,101,218,1,110,115,2,0,0,0,32,32,114,25,0,
+ 0,0,218,17,95,103,101,116,95,101,120,112,111,114,116,115,
+ 95,108,105,115,116,114,36,0,0,0,44,0,0,0,115,71,
+ 0,0,0,128,0,240,2,3,5,55,220,15,19,144,70,151,
+ 78,145,78,211,15,35,208,8,35,248,220,11,25,242,0,1,
+ 5,55,220,27,30,152,118,155,59,214,15,54,144,97,168,33,
+ 168,65,169,36,176,35,171,43,146,1,209,15,54,249,212,15,
+ 54,210,8,54,240,3,1,5,55,250,115,30,0,0,0,130,
+ 20,23,0,151,22,65,11,3,173,13,65,0,6,187,4,65,
+ 0,6,191,9,65,11,3,193,10,1,65,11,3,218,5,112,
+ 111,115,105,120,250,1,10,41,1,218,1,42,41,1,218,5,
+ 95,101,120,105,116,114,40,0,0,0,41,1,218,15,95,104,
+ 97,118,101,95,102,117,110,99,116,105,111,110,115,218,2,110,
+ 116,122,2,13,10,122,27,110,111,32,111,115,32,115,112,101,
+ 99,105,102,105,99,32,109,111,100,117,108,101,32,102,111,117,
+ 110,100,122,7,111,115,46,112,97,116,104,41,8,114,5,0,
+ 0,0,114,6,0,0,0,114,7,0,0,0,114,8,0,0,
+ 0,114,10,0,0,0,114,21,0,0,0,114,4,0,0,0,
+ 114,13,0,0,0,114,41,0,0,0,99,2,0,0,0,0,
+ 0,0,0,0,0,0,0,4,0,0,0,3,0,0,0,243,
+ 96,0,0,0,151,0,124,1,116,0,0,0,0,0,0,0,
+ 0,0,118,0,114,38,124,0,116,2,0,0,0,0,0,0,
+ 0,0,118,0,114,29,116,4,0,0,0,0,0,0,0,0,
+ 106,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,116,0,0,0,0,0,0,0,0,0,124,1,
+ 25,0,0,0,171,1,0,0,0,0,0,0,1,0,121,0,
+ 121,0,121,0,114,23,0,0,0,41,4,218,8,95,103,108,
+ 111,98,97,108,115,114,41,0,0,0,218,4,95,115,101,116,
+ 218,3,97,100,100,41,2,218,3,115,116,114,218,2,102,110,
+ 115,2,0,0,0,32,32,114,25,0,0,0,218,4,95,97,
+ 100,100,114,49,0,0,0,104,0,0,0,115,39,0,0,0,
+ 128,0,216,12,14,148,40,137,78,160,19,172,15,209,33,55,
+ 220,12,16,143,72,137,72,148,88,152,98,145,92,213,12,34,
+ 240,3,0,34,56,136,78,114,27,0,0,0,218,14,72,65,
+ 86,69,95,70,65,67,67,69,83,83,65,84,218,6,97,99,
+ 99,101,115,115,218,13,72,65,86,69,95,70,67,72,77,79,
+ 68,65,84,218,5,99,104,109,111,100,218,13,72,65,86,69,
+ 95,70,67,72,79,87,78,65,84,218,5,99,104,111,119,110,
+ 218,12,72,65,86,69,95,70,83,84,65,84,65,84,218,4,
+ 115,116,97,116,218,14,72,65,86,69,95,70,85,84,73,77,
+ 69,83,65,84,218,5,117,116,105,109,101,218,11,72,65,86,
+ 69,95,76,73,78,75,65,84,218,4,108,105,110,107,218,12,
+ 72,65,86,69,95,77,75,68,73,82,65,84,218,5,109,107,
+ 100,105,114,218,13,72,65,86,69,95,77,75,70,73,70,79,
+ 65,84,218,6,109,107,102,105,102,111,218,12,72,65,86,69,
+ 95,77,75,78,79,68,65,84,218,5,109,107,110,111,100,218,
+ 11,72,65,86,69,95,79,80,69,78,65,84,218,4,111,112,
+ 101,110,218,15,72,65,86,69,95,82,69,65,68,76,73,78,
+ 75,65,84,218,8,114,101,97,100,108,105,110,107,218,13,72,
+ 65,86,69,95,82,69,78,65,77,69,65,84,218,6,114,101,
+ 110,97,109,101,218,14,72,65,86,69,95,83,89,77,76,73,
+ 78,75,65,84,218,7,115,121,109,108,105,110,107,218,13,72,
+ 65,86,69,95,85,78,76,73,78,75,65,84,218,6,117,110,
+ 108,105,110,107,218,5,114,109,100,105,114,218,14,72,65,86,
+ 69,95,85,84,73,77,69,78,83,65,84,218,11,72,65,86,
+ 69,95,70,67,72,68,73,82,218,5,99,104,100,105,114,218,
+ 11,72,65,86,69,95,70,67,72,77,79,68,218,11,72,65,
+ 86,69,95,70,67,72,79,87,78,218,14,72,65,86,69,95,
+ 70,68,79,80,69,78,68,73,82,218,7,108,105,115,116,100,
+ 105,114,218,7,115,99,97,110,100,105,114,218,12,72,65,86,
+ 69,95,70,69,88,69,67,86,69,218,6,101,120,101,99,118,
+ 101,218,14,72,65,86,69,95,70,84,82,85,78,67,65,84,
+ 69,218,8,116,114,117,110,99,97,116,101,218,13,72,65,86,
+ 69,95,70,85,84,73,77,69,78,83,218,12,72,65,86,69,
+ 95,70,85,84,73,77,69,83,218,14,72,65,86,69,95,70,
+ 80,65,84,72,67,79,78,70,218,8,112,97,116,104,99,111,
+ 110,102,218,7,115,116,97,116,118,102,115,218,8,102,115,116,
+ 97,116,118,102,115,218,13,72,65,86,69,95,70,83,84,65,
+ 84,86,70,83,218,13,72,65,86,69,95,76,67,72,70,76,
+ 65,71,83,218,7,99,104,102,108,97,103,115,218,11,72,65,
+ 86,69,95,76,67,72,77,79,68,218,6,108,99,104,111,119,
+ 110,218,11,72,65,86,69,95,76,67,72,79,87,78,218,12,
+ 72,65,86,69,95,76,85,84,73,77,69,83,218,10,72,65,
+ 86,69,95,76,83,84,65,84,218,10,77,83,95,87,73,78,
+ 68,79,87,83,233,1,0,0,0,233,2,0,0,0,70,99,
+ 3,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,
+ 3,0,0,0,243,148,1,0,0,151,0,116,1,0,0,0,
+ 0,0,0,0,0,106,2,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,124,0,171,1,0,0,0,
+ 0,0,0,92,2,0,0,125,3,125,4,124,4,115,24,116,
+ 1,0,0,0,0,0,0,0,0,106,2,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,124,3,171,
+ 1,0,0,0,0,0,0,92,2,0,0,125,3,125,4,124,
+ 3,114,81,124,4,114,79,116,1,0,0,0,0,0,0,0,
+ 0,106,4,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,124,3,171,1,0,0,0,0,0,0,115,
+ 58,9,0,116,7,0,0,0,0,0,0,0,0,124,3,124,
+ 2,172,1,171,2,0,0,0,0,0,0,1,0,116,10,0,
+ 0,0,0,0,0,0,0,125,5,116,13,0,0,0,0,0,
+ 0,0,0,124,4,116,14,0,0,0,0,0,0,0,0,171,
+ 2,0,0,0,0,0,0,114,16,116,15,0,0,0,0,0,
+ 0,0,0,116,10,0,0,0,0,0,0,0,0,100,2,171,
+ 2,0,0,0,0,0,0,125,5,124,4,124,5,107,40,0,
+ 0,114,1,121,3,9,0,116,17,0,0,0,0,0,0,0,
+ 0,124,0,124,1,171,2,0,0,0,0,0,0,1,0,121,
+ 3,35,0,116,8,0,0,0,0,0,0,0,0,36,0,114,
+ 3,1,0,89,0,140,69,119,0,120,3,89,0,119,1,35,
+ 0,116,18,0,0,0,0,0,0,0,0,36,0,114,27,1,
+ 0,124,2,114,21,116,1,0,0,0,0,0,0,0,0,106,
+ 20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,124,0,171,1,0,0,0,0,0,0,115,1,130,
+ 0,89,0,121,3,119,0,120,3,89,0,119,1,41,4,97,
+ 139,1,0,0,109,97,107,101,100,105,114,115,40,110,97,109,
+ 101,32,91,44,32,109,111,100,101,61,48,111,55,55,55,93,
+ 91,44,32,101,120,105,115,116,95,111,107,61,70,97,108,115,
+ 101,93,41,10,10,32,32,32,32,83,117,112,101,114,45,109,
+ 107,100,105,114,59,32,99,114,101,97,116,101,32,97,32,108,
+ 101,97,102,32,100,105,114,101,99,116,111,114,121,32,97,110,
+ 100,32,97,108,108,32,105,110,116,101,114,109,101,100,105,97,
+ 116,101,32,111,110,101,115,46,32,32,87,111,114,107,115,32,
+ 108,105,107,101,10,32,32,32,32,109,107,100,105,114,44,32,
+ 101,120,99,101,112,116,32,116,104,97,116,32,97,110,121,32,
+ 105,110,116,101,114,109,101,100,105,97,116,101,32,112,97,116,
+ 104,32,115,101,103,109,101,110,116,32,40,110,111,116,32,106,
+ 117,115,116,32,116,104,101,32,114,105,103,104,116,109,111,115,
+ 116,41,10,32,32,32,32,119,105,108,108,32,98,101,32,99,
+ 114,101,97,116,101,100,32,105,102,32,105,116,32,100,111,101,
+ 115,32,110,111,116,32,101,120,105,115,116,46,32,73,102,32,
+ 116,104,101,32,116,97,114,103,101,116,32,100,105,114,101,99,
+ 116,111,114,121,32,97,108,114,101,97,100,121,10,32,32,32,
+ 32,101,120,105,115,116,115,44,32,114,97,105,115,101,32,97,
+ 110,32,79,83,69,114,114,111,114,32,105,102,32,101,120,105,
+ 115,116,95,111,107,32,105,115,32,70,97,108,115,101,46,32,
+ 79,116,104,101,114,119,105,115,101,32,110,111,32,101,120,99,
+ 101,112,116,105,111,110,32,105,115,10,32,32,32,32,114,97,
+ 105,115,101,100,46,32,32,84,104,105,115,32,105,115,32,114,
+ 101,99,117,114,115,105,118,101,46,10,10,32,32,32,32,41,
+ 1,218,8,101,120,105,115,116,95,111,107,218,5,65,83,67,
+ 73,73,78,41,11,114,12,0,0,0,218,5,115,112,108,105,
+ 116,218,6,101,120,105,115,116,115,218,8,109,97,107,101,100,
+ 105,114,115,218,15,70,105,108,101,69,120,105,115,116,115,69,
+ 114,114,111,114,114,5,0,0,0,218,10,105,115,105,110,115,
+ 116,97,110,99,101,218,5,98,121,116,101,115,114,63,0,0,
+ 0,218,7,79,83,69,114,114,111,114,218,5,105,115,100,105,
+ 114,41,6,114,11,0,0,0,218,4,109,111,100,101,114,109,
+ 0,0,0,218,4,104,101,97,100,218,4,116,97,105,108,218,
+ 4,99,100,105,114,115,6,0,0,0,32,32,32,32,32,32,
+ 114,25,0,0,0,114,113,0,0,0,114,113,0,0,0,200,
+ 0,0,0,115,188,0,0,0,128,0,244,20,0,18,22,151,
+ 26,145,26,152,68,211,17,33,129,74,128,68,136,36,217,11,
+ 15,220,21,25,151,90,145,90,160,4,211,21,37,137,10,136,
+ 4,136,100,217,7,11,145,4,156,84,159,91,153,91,168,20,
+ 212,29,46,240,2,4,9,17,220,12,20,144,84,160,72,213,
+ 12,45,244,8,0,16,22,136,4,220,11,21,144,100,156,69,
+ 212,11,34,220,19,24,156,22,160,23,211,19,41,136,68,216,
+ 11,15,144,52,138,60,216,12,18,240,2,6,5,18,220,8,
+ 13,136,100,144,68,213,8,25,248,244,19,0,16,31,242,0,
+ 2,9,17,225,12,16,240,5,2,9,17,251,244,20,0,12,
+ 19,242,0,4,5,18,241,6,0,16,24,156,116,159,122,153,
+ 122,168,36,212,31,47,216,12,17,241,3,0,32,48,240,7,
+ 4,5,18,250,115,36,0,0,0,193,13,13,66,20,0,194,
+ 7,12,66,35,0,194,20,9,66,32,3,194,31,1,66,32,
+ 3,194,35,33,67,7,3,195,6,1,67,7,3,99,1,0,
+ 0,0,0,0,0,0,0,0,0,0,4,0,0,0,3,0,
+ 0,0,243,252,0,0,0,151,0,116,1,0,0,0,0,0,
+ 0,0,0,124,0,171,1,0,0,0,0,0,0,1,0,116,
+ 3,0,0,0,0,0,0,0,0,106,4,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,124,0,171,
+ 1,0,0,0,0,0,0,92,2,0,0,125,1,125,2,124,
+ 2,115,24,116,3,0,0,0,0,0,0,0,0,106,4,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,124,1,171,1,0,0,0,0,0,0,92,2,0,0,125,
+ 1,125,2,124,1,114,46,124,2,114,43,9,0,116,1,0,
+ 0,0,0,0,0,0,0,124,1,171,1,0,0,0,0,0,
+ 0,1,0,116,3,0,0,0,0,0,0,0,0,106,4,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,124,1,171,1,0,0,0,0,0,0,92,2,0,0,125,
+ 1,125,2,124,1,114,4,124,2,114,1,140,41,121,1,121,
+ 1,121,1,121,1,35,0,116,6,0,0,0,0,0,0,0,
+ 0,36,0,114,3,1,0,89,0,121,1,119,0,120,3,89,
+ 0,119,1,41,2,97,172,1,0,0,114,101,109,111,118,101,
+ 100,105,114,115,40,110,97,109,101,41,10,10,32,32,32,32,
+ 83,117,112,101,114,45,114,109,100,105,114,59,32,114,101,109,
+ 111,118,101,32,97,32,108,101,97,102,32,100,105,114,101,99,
+ 116,111,114,121,32,97,110,100,32,97,108,108,32,101,109,112,
+ 116,121,32,105,110,116,101,114,109,101,100,105,97,116,101,10,
+ 32,32,32,32,111,110,101,115,46,32,32,87,111,114,107,115,
+ 32,108,105,107,101,32,114,109,100,105,114,32,101,120,99,101,
+ 112,116,32,116,104,97,116,44,32,105,102,32,116,104,101,32,
+ 108,101,97,102,32,100,105,114,101,99,116,111,114,121,32,105,
+ 115,10,32,32,32,32,115,117,99,99,101,115,115,102,117,108,
+ 108,121,32,114,101,109,111,118,101,100,44,32,100,105,114,101,
+ 99,116,111,114,105,101,115,32,99,111,114,114,101,115,112,111,
+ 110,100,105,110,103,32,116,111,32,114,105,103,104,116,109,111,
+ 115,116,32,112,97,116,104,10,32,32,32,32,115,101,103,109,
+ 101,110,116,115,32,119,105,108,108,32,98,101,32,112,114,117,
+ 110,101,100,32,97,119,97,121,32,117,110,116,105,108,32,101,
+ 105,116,104,101,114,32,116,104,101,32,119,104,111,108,101,32,
+ 112,97,116,104,32,105,115,10,32,32,32,32,99,111,110,115,
+ 117,109,101,100,32,111,114,32,97,110,32,101,114,114,111,114,
+ 32,111,99,99,117,114,115,46,32,32,69,114,114,111,114,115,
+ 32,100,117,114,105,110,103,32,116,104,105,115,32,108,97,116,
+ 116,101,114,32,112,104,97,115,101,32,97,114,101,10,32,32,
+ 32,32,105,103,110,111,114,101,100,32,45,45,32,116,104,101,
+ 121,32,103,101,110,101,114,97,108,108,121,32,109,101,97,110,
+ 32,116,104,97,116,32,97,32,100,105,114,101,99,116,111,114,
+ 121,32,119,97,115,32,110,111,116,32,101,109,112,116,121,46,
+ 10,10,32,32,32,32,78,41,4,114,78,0,0,0,114,12,
+ 0,0,0,114,111,0,0,0,114,117,0,0,0,41,3,114,
+ 11,0,0,0,114,120,0,0,0,114,121,0,0,0,115,3,
+ 0,0,0,32,32,32,114,25,0,0,0,218,10,114,101,109,
+ 111,118,101,100,105,114,115,114,124,0,0,0,232,0,0,0,
+ 115,120,0,0,0,128,0,244,22,0,5,10,136,36,132,75,
+ 220,17,21,151,26,145,26,152,68,211,17,33,129,74,128,68,
+ 136,36,217,11,15,220,21,25,151,90,145,90,160,4,211,21,
+ 37,137,10,136,4,136,100,217,10,14,145,52,240,2,3,9,
+ 18,220,12,17,144,36,140,75,244,6,0,22,26,151,90,145,
+ 90,160,4,211,21,37,137,10,136,4,136,100,241,11,0,11,
+ 15,147,52,136,36,144,52,136,36,248,244,6,0,16,23,242,
+ 0,1,9,18,217,12,17,240,3,1,9,18,250,115,18,0,
+ 0,0,193,3,11,65,47,0,193,47,9,65,59,3,193,58,
+ 1,65,59,3,99,2,0,0,0,0,0,0,0,0,0,0,
+ 0,4,0,0,0,3,0,0,0,243,6,1,0,0,151,0,
+ 116,1,0,0,0,0,0,0,0,0,106,2,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,1,
+ 171,1,0,0,0,0,0,0,92,2,0,0,125,2,125,3,
+ 124,2,114,34,124,3,114,32,116,1,0,0,0,0,0,0,
+ 0,0,106,4,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,124,2,171,1,0,0,0,0,0,0,
+ 115,11,116,7,0,0,0,0,0,0,0,0,124,2,171,1,
+ 0,0,0,0,0,0,1,0,116,9,0,0,0,0,0,0,
+ 0,0,124,0,124,1,171,2,0,0,0,0,0,0,1,0,
+ 116,1,0,0,0,0,0,0,0,0,106,2,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,0,
+ 171,1,0,0,0,0,0,0,92,2,0,0,125,2,125,3,
+ 124,2,114,16,124,3,114,13,9,0,116,11,0,0,0,0,
+ 0,0,0,0,124,2,171,1,0,0,0,0,0,0,1,0,
+ 121,1,121,1,121,1,35,0,116,12,0,0,0,0,0,0,
+ 0,0,36,0,114,3,1,0,89,0,121,1,119,0,120,3,
+ 89,0,119,1,41,2,97,60,2,0,0,114,101,110,97,109,
+ 101,115,40,111,108,100,44,32,110,101,119,41,10,10,32,32,
+ 32,32,83,117,112,101,114,45,114,101,110,97,109,101,59,32,
+ 99,114,101,97,116,101,32,100,105,114,101,99,116,111,114,105,
+ 101,115,32,97,115,32,110,101,99,101,115,115,97,114,121,32,
+ 97,110,100,32,100,101,108,101,116,101,32,97,110,121,32,108,
+ 101,102,116,10,32,32,32,32,101,109,112,116,121,46,32,32,
+ 87,111,114,107,115,32,108,105,107,101,32,114,101,110,97,109,
+ 101,44,32,101,120,99,101,112,116,32,99,114,101,97,116,105,
+ 111,110,32,111,102,32,97,110,121,32,105,110,116,101,114,109,
+ 101,100,105,97,116,101,10,32,32,32,32,100,105,114,101,99,
+ 116,111,114,105,101,115,32,110,101,101,100,101,100,32,116,111,
+ 32,109,97,107,101,32,116,104,101,32,110,101,119,32,112,97,
+ 116,104,110,97,109,101,32,103,111,111,100,32,105,115,32,97,
+ 116,116,101,109,112,116,101,100,10,32,32,32,32,102,105,114,
+ 115,116,46,32,32,65,102,116,101,114,32,116,104,101,32,114,
+ 101,110,97,109,101,44,32,100,105,114,101,99,116,111,114,105,
+ 101,115,32,99,111,114,114,101,115,112,111,110,100,105,110,103,
+ 32,116,111,32,114,105,103,104,116,109,111,115,116,10,32,32,
+ 32,32,112,97,116,104,32,115,101,103,109,101,110,116,115,32,
+ 111,102,32,116,104,101,32,111,108,100,32,110,97,109,101,32,
+ 119,105,108,108,32,98,101,32,112,114,117,110,101,100,32,117,
+ 110,116,105,108,32,101,105,116,104,101,114,32,116,104,101,10,
+ 32,32,32,32,119,104,111,108,101,32,112,97,116,104,32,105,
+ 115,32,99,111,110,115,117,109,101,100,32,111,114,32,97,32,
+ 110,111,110,101,109,112,116,121,32,100,105,114,101,99,116,111,
+ 114,121,32,105,115,32,102,111,117,110,100,46,10,10,32,32,
+ 32,32,78,111,116,101,58,32,116,104,105,115,32,102,117,110,
+ 99,116,105,111,110,32,99,97,110,32,102,97,105,108,32,119,
+ 105,116,104,32,116,104,101,32,110,101,119,32,100,105,114,101,
+ 99,116,111,114,121,32,115,116,114,117,99,116,117,114,101,32,
+ 109,97,100,101,10,32,32,32,32,105,102,32,121,111,117,32,
+ 108,97,99,107,32,112,101,114,109,105,115,115,105,111,110,115,
+ 32,110,101,101,100,101,100,32,116,111,32,117,110,108,105,110,
+ 107,32,116,104,101,32,108,101,97,102,32,100,105,114,101,99,
+ 116,111,114,121,32,111,114,10,32,32,32,32,102,105,108,101,
+ 46,10,10,32,32,32,32,78,41,7,114,12,0,0,0,114,
+ 111,0,0,0,114,112,0,0,0,114,113,0,0,0,114,73,
+ 0,0,0,114,124,0,0,0,114,117,0,0,0,41,4,218,
+ 3,111,108,100,218,3,110,101,119,114,120,0,0,0,114,121,
+ 0,0,0,115,4,0,0,0,32,32,32,32,114,25,0,0,
+ 0,218,7,114,101,110,97,109,101,115,114,128,0,0,0,254,
+ 0,0,0,115,116,0,0,0,128,0,244,30,0,18,22,151,
+ 26,145,26,152,67,147,31,129,74,128,68,136,36,217,7,11,
+ 145,4,156,84,159,91,153,91,168,20,212,29,46,220,8,16,
+ 144,20,140,14,220,4,10,136,51,144,3,212,4,20,220,17,
+ 21,151,26,145,26,152,67,147,31,129,74,128,68,136,36,217,
+ 7,11,145,4,240,2,3,9,17,220,12,22,144,116,213,12,
+ 28,240,5,0,17,21,128,116,248,244,6,0,16,23,242,0,
+ 1,9,17,217,12,16,240,3,1,9,17,250,115,18,0,0,
+ 0,193,38,11,65,52,0,193,52,9,66,0,3,193,63,1,
+ 66,0,3,41,3,114,113,0,0,0,114,124,0,0,0,114,
+ 128,0,0,0,99,4,0,0,0,0,0,0,0,0,0,0,
+ 0,7,0,0,0,35,0,0,0,243,72,4,0,0,75,0,
+ 1,0,151,0,116,1,0,0,0,0,0,0,0,0,106,2,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,100,1,124,0,124,1,124,2,124,3,171,5,0,0,
+ 0,0,0,0,1,0,116,5,0,0,0,0,0,0,0,0,
+ 124,0,171,1,0,0,0,0,0,0,103,1,125,4,116,6,
+ 0,0,0,0,0,0,0,0,106,8,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,116,6,0,0,
+ 0,0,0,0,0,0,106,10,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,125,6,125,5,124,4,
+ 114,209,124,4,106,13,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,171,0,0,0,0,0,0,0,
+ 125,0,116,15,0,0,0,0,0,0,0,0,124,0,116,16,
+ 0,0,0,0,0,0,0,0,171,2,0,0,0,0,0,0,
+ 114,5,124,0,150,1,151,1,1,0,140,39,103,0,125,7,
+ 103,0,125,8,103,0,125,9,9,0,116,19,0,0,0,0,
+ 0,0,0,0,124,0,171,1,0,0,0,0,0,0,125,10,
+ 100,3,125,12,124,10,53,0,1,0,9,0,9,0,9,0,
+ 116,23,0,0,0,0,0,0,0,0,124,10,171,1,0,0,
+ 0,0,0,0,125,13,9,0,9,0,124,13,106,27,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 171,0,0,0,0,0,0,0,125,14,124,14,114,28,124,7,
+ 106,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,124,13,106,30,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,171,1,0,0,0,0,
+ 0,0,1,0,110,27,124,8,106,29,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,124,13,106,30,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,171,1,0,0,0,0,0,0,1,0,124,1,115,56,
+ 124,14,114,54,124,3,114,3,100,4,125,15,110,20,9,0,
+ 124,13,106,33,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,171,0,0,0,0,0,0,0,125,16,
+ 124,16,12,0,125,15,124,15,114,27,124,9,106,29,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 124,13,106,6,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,171,1,0,0,0,0,0,0,1,0,
+ 140,147,121,2,121,2,35,0,116,20,0,0,0,0,0,0,
+ 0,0,36,0,114,20,125,11,124,2,129,8,2,0,124,2,
+ 124,11,171,1,0,0,0,0,0,0,1,0,89,0,100,2,
+ 125,11,126,11,140,236,100,2,125,11,126,11,119,1,119,0,
+ 120,3,89,0,119,1,35,0,116,24,0,0,0,0,0,0,
+ 0,0,36,0,114,3,1,0,89,0,110,72,119,0,120,3,
+ 89,0,119,1,35,0,116,20,0,0,0,0,0,0,0,0,
+ 36,0,114,22,125,11,124,2,129,8,2,0,124,2,124,11,
+ 171,1,0,0,0,0,0,0,1,0,100,4,125,12,89,0,
+ 100,2,125,11,126,11,110,42,100,2,125,11,126,11,119,1,
+ 119,0,120,3,89,0,119,1,35,0,116,20,0,0,0,0,
+ 0,0,0,0,36,0,114,5,1,0,100,3,125,14,89,0,
+ 140,212,119,0,120,3,89,0,119,1,35,0,116,20,0,0,
+ 0,0,0,0,0,0,36,0,114,5,1,0,100,3,125,16,
+ 89,0,140,146,119,0,120,3,89,0,119,1,100,2,100,2,
+ 100,2,171,2,0,0,0,0,0,0,1,0,110,12,35,0,
+ 49,0,115,1,119,2,1,0,89,0,1,0,1,0,110,3,
+ 120,3,89,0,119,1,124,12,114,2,144,1,140,96,124,1,
+ 114,61,124,0,124,7,124,8,102,3,150,1,151,1,1,0,
+ 116,35,0,0,0,0,0,0,0,0,124,7,171,1,0,0,
+ 0,0,0,0,68,0,93,39,0,0,125,17,2,0,124,6,
+ 124,0,124,17,171,2,0,0,0,0,0,0,125,18,124,3,
+ 115,9,2,0,124,5,124,18,171,1,0,0,0,0,0,0,
+ 114,1,140,23,124,4,106,29,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,124,18,171,1,0,0,
+ 0,0,0,0,1,0,140,41,4,0,110,53,124,4,106,29,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,124,0,124,7,124,8,102,3,171,1,0,0,0,0,
+ 0,0,1,0,116,35,0,0,0,0,0,0,0,0,124,9,
+ 171,1,0,0,0,0,0,0,68,0,93,19,0,0,125,18,
+ 124,4,106,29,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,124,18,171,1,0,0,0,0,0,0,
+ 1,0,140,21,4,0,124,4,114,2,144,1,140,214,144,1,
+ 140,8,173,3,119,1,41,5,97,38,11,0,0,68,105,114,
+ 101,99,116,111,114,121,32,116,114,101,101,32,103,101,110,101,
+ 114,97,116,111,114,46,10,10,32,32,32,32,70,111,114,32,
+ 101,97,99,104,32,100,105,114,101,99,116,111,114,121,32,105,
+ 110,32,116,104,101,32,100,105,114,101,99,116,111,114,121,32,
+ 116,114,101,101,32,114,111,111,116,101,100,32,97,116,32,116,
+ 111,112,32,40,105,110,99,108,117,100,105,110,103,32,116,111,
+ 112,10,32,32,32,32,105,116,115,101,108,102,44,32,98,117,
+ 116,32,101,120,99,108,117,100,105,110,103,32,39,46,39,32,
+ 97,110,100,32,39,46,46,39,41,44,32,121,105,101,108,100,
+ 115,32,97,32,51,45,116,117,112,108,101,10,10,32,32,32,
+ 32,32,32,32,32,100,105,114,112,97,116,104,44,32,100,105,
+ 114,110,97,109,101,115,44,32,102,105,108,101,110,97,109,101,
+ 115,10,10,32,32,32,32,100,105,114,112,97,116,104,32,105,
+ 115,32,97,32,115,116,114,105,110,103,44,32,116,104,101,32,
+ 112,97,116,104,32,116,111,32,116,104,101,32,100,105,114,101,
+ 99,116,111,114,121,46,32,32,100,105,114,110,97,109,101,115,
+ 32,105,115,32,97,32,108,105,115,116,32,111,102,10,32,32,
+ 32,32,116,104,101,32,110,97,109,101,115,32,111,102,32,116,
+ 104,101,32,115,117,98,100,105,114,101,99,116,111,114,105,101,
+ 115,32,105,110,32,100,105,114,112,97,116,104,32,40,105,110,
+ 99,108,117,100,105,110,103,32,115,121,109,108,105,110,107,115,
+ 32,116,111,32,100,105,114,101,99,116,111,114,105,101,115,44,
+ 10,32,32,32,32,97,110,100,32,101,120,99,108,117,100,105,
+ 110,103,32,39,46,39,32,97,110,100,32,39,46,46,39,41,
+ 46,10,32,32,32,32,102,105,108,101,110,97,109,101,115,32,
+ 105,115,32,97,32,108,105,115,116,32,111,102,32,116,104,101,
+ 32,110,97,109,101,115,32,111,102,32,116,104,101,32,110,111,
+ 110,45,100,105,114,101,99,116,111,114,121,32,102,105,108,101,
+ 115,32,105,110,32,100,105,114,112,97,116,104,46,10,32,32,
+ 32,32,78,111,116,101,32,116,104,97,116,32,116,104,101,32,
+ 110,97,109,101,115,32,105,110,32,116,104,101,32,108,105,115,
+ 116,115,32,97,114,101,32,106,117,115,116,32,110,97,109,101,
+ 115,44,32,119,105,116,104,32,110,111,32,112,97,116,104,32,
+ 99,111,109,112,111,110,101,110,116,115,46,10,32,32,32,32,
+ 84,111,32,103,101,116,32,97,32,102,117,108,108,32,112,97,
+ 116,104,32,40,119,104,105,99,104,32,98,101,103,105,110,115,
+ 32,119,105,116,104,32,116,111,112,41,32,116,111,32,97,32,
+ 102,105,108,101,32,111,114,32,100,105,114,101,99,116,111,114,
+ 121,32,105,110,10,32,32,32,32,100,105,114,112,97,116,104,
+ 44,32,100,111,32,111,115,46,112,97,116,104,46,106,111,105,
+ 110,40,100,105,114,112,97,116,104,44,32,110,97,109,101,41,
+ 46,10,10,32,32,32,32,73,102,32,111,112,116,105,111,110,
+ 97,108,32,97,114,103,32,39,116,111,112,100,111,119,110,39,
+ 32,105,115,32,116,114,117,101,32,111,114,32,110,111,116,32,
+ 115,112,101,99,105,102,105,101,100,44,32,116,104,101,32,116,
+ 114,105,112,108,101,32,102,111,114,32,97,10,32,32,32,32,
+ 100,105,114,101,99,116,111,114,121,32,105,115,32,103,101,110,
+ 101,114,97,116,101,100,32,98,101,102,111,114,101,32,116,104,
+ 101,32,116,114,105,112,108,101,115,32,102,111,114,32,97,110,
+ 121,32,111,102,32,105,116,115,32,115,117,98,100,105,114,101,
+ 99,116,111,114,105,101,115,10,32,32,32,32,40,100,105,114,
+ 101,99,116,111,114,105,101,115,32,97,114,101,32,103,101,110,
+ 101,114,97,116,101,100,32,116,111,112,32,100,111,119,110,41,
+ 46,32,32,73,102,32,116,111,112,100,111,119,110,32,105,115,
+ 32,102,97,108,115,101,44,32,116,104,101,32,116,114,105,112,
+ 108,101,10,32,32,32,32,102,111,114,32,97,32,100,105,114,
+ 101,99,116,111,114,121,32,105,115,32,103,101,110,101,114,97,
+ 116,101,100,32,97,102,116,101,114,32,116,104,101,32,116,114,
+ 105,112,108,101,115,32,102,111,114,32,97,108,108,32,111,102,
+ 32,105,116,115,10,32,32,32,32,115,117,98,100,105,114,101,
+ 99,116,111,114,105,101,115,32,40,100,105,114,101,99,116,111,
+ 114,105,101,115,32,97,114,101,32,103,101,110,101,114,97,116,
+ 101,100,32,98,111,116,116,111,109,32,117,112,41,46,10,10,
+ 32,32,32,32,87,104,101,110,32,116,111,112,100,111,119,110,
+ 32,105,115,32,116,114,117,101,44,32,116,104,101,32,99,97,
+ 108,108,101,114,32,99,97,110,32,109,111,100,105,102,121,32,
+ 116,104,101,32,100,105,114,110,97,109,101,115,32,108,105,115,
+ 116,32,105,110,45,112,108,97,99,101,10,32,32,32,32,40,
+ 101,46,103,46,44,32,118,105,97,32,100,101,108,32,111,114,
+ 32,115,108,105,99,101,32,97,115,115,105,103,110,109,101,110,
+ 116,41,44,32,97,110,100,32,119,97,108,107,32,119,105,108,
+ 108,32,111,110,108,121,32,114,101,99,117,114,115,101,32,105,
+ 110,116,111,32,116,104,101,10,32,32,32,32,115,117,98,100,
+ 105,114,101,99,116,111,114,105,101,115,32,119,104,111,115,101,
+ 32,110,97,109,101,115,32,114,101,109,97,105,110,32,105,110,
+ 32,100,105,114,110,97,109,101,115,59,32,116,104,105,115,32,
+ 99,97,110,32,98,101,32,117,115,101,100,32,116,111,32,112,
+ 114,117,110,101,32,116,104,101,10,32,32,32,32,115,101,97,
+ 114,99,104,44,32,111,114,32,116,111,32,105,109,112,111,115,
+ 101,32,97,32,115,112,101,99,105,102,105,99,32,111,114,100,
+ 101,114,32,111,102,32,118,105,115,105,116,105,110,103,46,32,
+ 32,77,111,100,105,102,121,105,110,103,32,100,105,114,110,97,
+ 109,101,115,32,119,104,101,110,10,32,32,32,32,116,111,112,
+ 100,111,119,110,32,105,115,32,102,97,108,115,101,32,104,97,
+ 115,32,110,111,32,101,102,102,101,99,116,32,111,110,32,116,
+ 104,101,32,98,101,104,97,118,105,111,114,32,111,102,32,111,
+ 115,46,119,97,108,107,40,41,44,32,115,105,110,99,101,32,
+ 116,104,101,10,32,32,32,32,100,105,114,101,99,116,111,114,
+ 105,101,115,32,105,110,32,100,105,114,110,97,109,101,115,32,
+ 104,97,118,101,32,97,108,114,101,97,100,121,32,98,101,101,
+ 110,32,103,101,110,101,114,97,116,101,100,32,98,121,32,116,
+ 104,101,32,116,105,109,101,32,100,105,114,110,97,109,101,115,
+ 10,32,32,32,32,105,116,115,101,108,102,32,105,115,32,103,
+ 101,110,101,114,97,116,101,100,46,32,78,111,32,109,97,116,
+ 116,101,114,32,116,104,101,32,118,97,108,117,101,32,111,102,
+ 32,116,111,112,100,111,119,110,44,32,116,104,101,32,108,105,
+ 115,116,32,111,102,10,32,32,32,32,115,117,98,100,105,114,
+ 101,99,116,111,114,105,101,115,32,105,115,32,114,101,116,114,
+ 105,101,118,101,100,32,98,101,102,111,114,101,32,116,104,101,
+ 32,116,117,112,108,101,115,32,102,111,114,32,116,104,101,32,
+ 100,105,114,101,99,116,111,114,121,32,97,110,100,32,105,116,
+ 115,10,32,32,32,32,115,117,98,100,105,114,101,99,116,111,
+ 114,105,101,115,32,97,114,101,32,103,101,110,101,114,97,116,
+ 101,100,46,10,10,32,32,32,32,66,121,32,100,101,102,97,
+ 117,108,116,32,101,114,114,111,114,115,32,102,114,111,109,32,
+ 116,104,101,32,111,115,46,115,99,97,110,100,105,114,40,41,
+ 32,99,97,108,108,32,97,114,101,32,105,103,110,111,114,101,
+ 100,46,32,32,73,102,10,32,32,32,32,111,112,116,105,111,
+ 110,97,108,32,97,114,103,32,39,111,110,101,114,114,111,114,
+ 39,32,105,115,32,115,112,101,99,105,102,105,101,100,44,32,
+ 105,116,32,115,104,111,117,108,100,32,98,101,32,97,32,102,
+ 117,110,99,116,105,111,110,59,32,105,116,10,32,32,32,32,
+ 119,105,108,108,32,98,101,32,99,97,108,108,101,100,32,119,
+ 105,116,104,32,111,110,101,32,97,114,103,117,109,101,110,116,
+ 44,32,97,110,32,79,83,69,114,114,111,114,32,105,110,115,
+ 116,97,110,99,101,46,32,32,73,116,32,99,97,110,10,32,
+ 32,32,32,114,101,112,111,114,116,32,116,104,101,32,101,114,
+ 114,111,114,32,116,111,32,99,111,110,116,105,110,117,101,32,
+ 119,105,116,104,32,116,104,101,32,119,97,108,107,44,32,111,
+ 114,32,114,97,105,115,101,32,116,104,101,32,101,120,99,101,
+ 112,116,105,111,110,10,32,32,32,32,116,111,32,97,98,111,
+ 114,116,32,116,104,101,32,119,97,108,107,46,32,32,78,111,
+ 116,101,32,116,104,97,116,32,116,104,101,32,102,105,108,101,
+ 110,97,109,101,32,105,115,32,97,118,97,105,108,97,98,108,
+ 101,32,97,115,32,116,104,101,10,32,32,32,32,102,105,108,
+ 101,110,97,109,101,32,97,116,116,114,105,98,117,116,101,32,
+ 111,102,32,116,104,101,32,101,120,99,101,112,116,105,111,110,
+ 32,111,98,106,101,99,116,46,10,10,32,32,32,32,66,121,
+ 32,100,101,102,97,117,108,116,44,32,111,115,46,119,97,108,
+ 107,32,100,111,101,115,32,110,111,116,32,102,111,108,108,111,
+ 119,32,115,121,109,98,111,108,105,99,32,108,105,110,107,115,
+ 32,116,111,32,115,117,98,100,105,114,101,99,116,111,114,105,
+ 101,115,32,111,110,10,32,32,32,32,115,121,115,116,101,109,
+ 115,32,116,104,97,116,32,115,117,112,112,111,114,116,32,116,
+ 104,101,109,46,32,32,73,110,32,111,114,100,101,114,32,116,
+ 111,32,103,101,116,32,116,104,105,115,32,102,117,110,99,116,
+ 105,111,110,97,108,105,116,121,44,32,115,101,116,32,116,104,
+ 101,10,32,32,32,32,111,112,116,105,111,110,97,108,32,97,
+ 114,103,117,109,101,110,116,32,39,102,111,108,108,111,119,108,
+ 105,110,107,115,39,32,116,111,32,116,114,117,101,46,10,10,
+ 32,32,32,32,67,97,117,116,105,111,110,58,32,32,105,102,
+ 32,121,111,117,32,112,97,115,115,32,97,32,114,101,108,97,
+ 116,105,118,101,32,112,97,116,104,110,97,109,101,32,102,111,
+ 114,32,116,111,112,44,32,100,111,110,39,116,32,99,104,97,
+ 110,103,101,32,116,104,101,10,32,32,32,32,99,117,114,114,
+ 101,110,116,32,119,111,114,107,105,110,103,32,100,105,114,101,
+ 99,116,111,114,121,32,98,101,116,119,101,101,110,32,114,101,
+ 115,117,109,112,116,105,111,110,115,32,111,102,32,119,97,108,
+ 107,46,32,32,119,97,108,107,32,110,101,118,101,114,10,32,
+ 32,32,32,99,104,97,110,103,101,115,32,116,104,101,32,99,
+ 117,114,114,101,110,116,32,100,105,114,101,99,116,111,114,121,
+ 44,32,97,110,100,32,97,115,115,117,109,101,115,32,116,104,
+ 97,116,32,116,104,101,32,99,108,105,101,110,116,32,100,111,
+ 101,115,110,39,116,10,32,32,32,32,101,105,116,104,101,114,
+ 46,10,10,32,32,32,32,69,120,97,109,112,108,101,58,10,
+ 10,32,32,32,32,105,109,112,111,114,116,32,111,115,10,32,
+ 32,32,32,102,114,111,109,32,111,115,46,112,97,116,104,32,
+ 105,109,112,111,114,116,32,106,111,105,110,44,32,103,101,116,
+ 115,105,122,101,10,32,32,32,32,102,111,114,32,114,111,111,
+ 116,44,32,100,105,114,115,44,32,102,105,108,101,115,32,105,
+ 110,32,111,115,46,119,97,108,107,40,39,112,121,116,104,111,
+ 110,47,76,105,98,47,101,109,97,105,108,39,41,58,10,32,
+ 32,32,32,32,32,32,32,112,114,105,110,116,40,114,111,111,
+ 116,44,32,34,99,111,110,115,117,109,101,115,32,34,41,10,
+ 32,32,32,32,32,32,32,32,112,114,105,110,116,40,115,117,
+ 109,40,103,101,116,115,105,122,101,40,106,111,105,110,40,114,
+ 111,111,116,44,32,110,97,109,101,41,41,32,102,111,114,32,
+ 110,97,109,101,32,105,110,32,102,105,108,101,115,41,44,32,
+ 101,110,100,61,34,32,34,41,10,32,32,32,32,32,32,32,
+ 32,112,114,105,110,116,40,34,98,121,116,101,115,32,105,110,
+ 34,44,32,108,101,110,40,102,105,108,101,115,41,44,32,34,
+ 110,111,110,45,100,105,114,101,99,116,111,114,121,32,102,105,
+ 108,101,115,34,41,10,32,32,32,32,32,32,32,32,105,102,
+ 32,39,67,86,83,39,32,105,110,32,100,105,114,115,58,10,
+ 32,32,32,32,32,32,32,32,32,32,32,32,100,105,114,115,
+ 46,114,101,109,111,118,101,40,39,67,86,83,39,41,32,32,
+ 35,32,100,111,110,39,116,32,118,105,115,105,116,32,67,86,
+ 83,32,100,105,114,101,99,116,111,114,105,101,115,10,10,32,
+ 32,32,32,122,7,111,115,46,119,97,108,107,78,70,84,41,
+ 18,218,3,115,121,115,218,5,97,117,100,105,116,218,6,102,
+ 115,112,97,116,104,114,12,0,0,0,218,6,105,115,108,105,
+ 110,107,218,4,106,111,105,110,218,3,112,111,112,114,115,0,
+ 0,0,218,5,116,117,112,108,101,114,86,0,0,0,114,117,
+ 0,0,0,218,4,110,101,120,116,218,13,83,116,111,112,73,
+ 116,101,114,97,116,105,111,110,218,6,105,115,95,100,105,114,
+ 218,6,97,112,112,101,110,100,114,11,0,0,0,218,10,105,
+ 115,95,115,121,109,108,105,110,107,218,8,114,101,118,101,114,
+ 115,101,100,41,19,218,3,116,111,112,218,7,116,111,112,100,
+ 111,119,110,218,7,111,110,101,114,114,111,114,218,11,102,111,
+ 108,108,111,119,108,105,110,107,115,218,5,115,116,97,99,107,
+ 114,133,0,0,0,114,134,0,0,0,218,4,100,105,114,115,
+ 218,7,110,111,110,100,105,114,115,218,9,119,97,108,107,95,
+ 100,105,114,115,218,10,115,99,97,110,100,105,114,95,105,116,
+ 218,5,101,114,114,111,114,218,4,99,111,110,116,218,5,101,
+ 110,116,114,121,114,139,0,0,0,218,9,119,97,108,107,95,
+ 105,110,116,111,114,141,0,0,0,218,7,100,105,114,110,97,
+ 109,101,218,8,110,101,119,95,112,97,116,104,115,19,0,0,
+ 0,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,
+ 32,32,32,32,114,25,0,0,0,218,4,119,97,108,107,114,
+ 158,0,0,0,26,1,0,0,115,64,2,0,0,232,0,248,
+ 128,0,244,120,1,0,5,8,135,73,129,73,136,105,152,19,
+ 152,103,160,119,176,11,212,4,60,228,13,19,144,67,139,91,
+ 136,77,128,69,220,19,23,151,59,145,59,164,4,167,9,161,
+ 9,136,68,128,70,217,10,15,216,14,19,143,105,137,105,139,
+ 107,136,3,220,11,21,144,99,156,53,212,11,33,216,18,21,
+ 138,73,216,12,20,224,15,17,136,4,216,18,20,136,7,216,
+ 20,22,136,9,240,14,5,9,21,220,25,32,160,19,155,28,
+ 136,74,240,12,0,16,21,136,4,216,13,23,241,0,41,9,
+ 53,216,18,22,240,2,9,17,26,240,2,3,21,30,220,32,
+ 36,160,90,211,32,48,153,5,240,18,5,17,35,216,29,34,
+ 159,92,153,92,155,94,144,70,241,12,0,20,26,216,20,24,
+ 151,75,145,75,160,5,167,10,161,10,213,20,43,224,20,27,
+ 151,78,145,78,160,53,167,58,161,58,212,20,46,225,23,30,
+ 161,54,241,6,0,24,35,216,36,40,153,9,240,4,6,25,
+ 47,216,41,46,215,41,57,209,41,57,211,41,59,152,74,240,
+ 12,0,41,51,160,78,152,9,225,23,32,216,24,33,215,24,
+ 40,209,24,40,168,21,175,26,169,26,212,24,52,240,81,1,
+ 0,19,23,248,240,49,0,11,16,248,244,34,0,16,23,242,
+ 0,3,9,21,216,15,22,208,15,34,217,16,23,152,5,148,
+ 14,220,12,20,251,240,7,3,9,21,251,244,22,0,28,41,
+ 242,0,1,21,30,217,24,29,240,3,1,21,30,251,228,23,
+ 30,242,0,4,17,26,216,23,30,208,23,42,217,24,31,160,
+ 5,156,14,216,27,31,144,68,220,20,25,251,240,9,4,17,
+ 26,251,244,16,0,24,31,242,0,3,17,35,240,6,0,30,
+ 35,146,70,240,7,3,17,35,251,244,36,0,32,39,242,0,
+ 4,25,47,240,8,0,42,47,154,74,240,9,4,25,47,250,
+ 247,67,1,41,9,53,247,0,41,9,53,241,0,41,9,53,
+ 250,241,84,1,0,12,16,217,12,20,225,11,18,224,18,21,
+ 144,116,152,87,208,18,36,210,12,36,228,27,35,160,68,155,
+ 62,242,0,7,13,43,144,7,217,27,31,160,3,160,87,211,
+ 27,45,144,8,241,10,0,20,31,161,102,168,88,213,38,54,
+ 216,20,25,151,76,145,76,160,24,213,20,42,241,15,7,13,
+ 43,240,20,0,13,18,143,76,137,76,152,35,152,116,160,87,
+ 208,25,45,212,12,46,228,28,36,160,89,211,28,47,242,0,
+ 1,13,39,144,8,216,16,21,151,12,145,12,152,88,213,16,
+ 38,240,3,1,13,39,243,105,2,0,11,16,251,115,230,0,
+ 0,0,130,65,51,72,34,1,193,54,11,68,28,0,194,1,
+ 4,72,34,1,194,5,2,70,24,3,194,9,11,68,60,2,
+ 194,20,1,70,24,3,194,22,16,69,45,2,194,38,65,2,
+ 70,24,3,195,41,16,69,62,2,195,57,33,70,24,3,196,
+ 26,2,72,34,1,196,28,9,68,57,3,196,37,10,68,52,
+ 3,196,47,5,72,34,1,196,52,5,68,57,3,196,57,3,
+ 72,34,1,196,60,9,69,8,5,197,5,1,69,11,2,197,
+ 6,1,70,24,3,197,7,1,69,8,5,197,8,3,69,11,
+ 2,197,11,9,69,42,5,197,20,12,69,37,5,197,32,5,
+ 70,24,3,197,37,5,69,42,5,197,42,3,70,24,3,197,
+ 45,11,69,59,5,197,56,2,70,24,3,197,58,1,69,59,
+ 5,197,59,3,70,24,3,197,62,11,70,12,5,198,9,2,
+ 70,24,3,198,11,1,70,12,5,198,12,3,70,24,3,198,
+ 15,9,72,34,1,198,24,5,70,33,7,198,29,53,72,34,
+ 1,199,19,65,11,72,34,1,114,158,0,0,0,169,2,218,
+ 15,102,111,108,108,111,119,95,115,121,109,108,105,110,107,115,
+ 218,6,100,105,114,95,102,100,99,3,0,0,0,0,0,0,
+ 0,2,0,0,0,8,0,0,0,35,0,0,0,243,162,1,
+ 0,0,75,0,1,0,151,0,116,1,0,0,0,0,0,0,
+ 0,0,106,2,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,100,1,124,0,124,1,124,2,124,3,
+ 124,4,171,6,0,0,0,0,0,0,1,0,116,5,0,0,
+ 0,0,0,0,0,0,124,0,171,1,0,0,0,0,0,0,
+ 125,0,124,3,115,14,116,7,0,0,0,0,0,0,0,0,
+ 124,0,100,2,124,4,172,3,171,3,0,0,0,0,0,0,
+ 125,5,116,9,0,0,0,0,0,0,0,0,124,0,116,10,
+ 0,0,0,0,0,0,0,0,124,4,172,4,171,3,0,0,
+ 0,0,0,0,125,6,9,0,124,3,115,62,116,13,0,0,
+ 0,0,0,0,0,0,106,14,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,127,5,106,16,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 171,1,0,0,0,0,0,0,114,69,116,19,0,0,0,0,
+ 0,0,0,0,106,20,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,124,5,116,7,0,0,0,0,
+ 0,0,0,0,124,6,171,1,0,0,0,0,0,0,171,2,
+ 0,0,0,0,0,0,114,38,116,23,0,0,0,0,0,0,
+ 0,0,124,6,124,0,116,25,0,0,0,0,0,0,0,0,
+ 124,0,116,26,0,0,0,0,0,0,0,0,171,2,0,0,
+ 0,0,0,0,124,1,124,2,124,3,171,6,0,0,0,0,
+ 0,0,69,0,100,5,123,3,0,0,150,3,151,2,134,5,
+ 5,0,1,0,116,29,0,0,0,0,0,0,0,0,124,6,
+ 171,1,0,0,0,0,0,0,1,0,121,5,55,0,140,16,
+ 35,0,116,29,0,0,0,0,0,0,0,0,124,6,171,1,
+ 0,0,0,0,0,0,1,0,119,0,120,3,89,0,119,1,
+ 173,3,119,1,41,6,97,2,5,0,0,68,105,114,101,99,
+ 116,111,114,121,32,116,114,101,101,32,103,101,110,101,114,97,
+ 116,111,114,46,10,10,32,32,32,32,32,32,32,32,84,104,
+ 105,115,32,98,101,104,97,118,101,115,32,101,120,97,99,116,
+ 108,121,32,108,105,107,101,32,119,97,108,107,40,41,44,32,
+ 101,120,99,101,112,116,32,116,104,97,116,32,105,116,32,121,
+ 105,101,108,100,115,32,97,32,52,45,116,117,112,108,101,10,
+ 10,32,32,32,32,32,32,32,32,32,32,32,32,100,105,114,
+ 112,97,116,104,44,32,100,105,114,110,97,109,101,115,44,32,
+ 102,105,108,101,110,97,109,101,115,44,32,100,105,114,102,100,
+ 10,10,32,32,32,32,32,32,32,32,96,100,105,114,112,97,
+ 116,104,96,44,32,96,100,105,114,110,97,109,101,115,96,32,
+ 97,110,100,32,96,102,105,108,101,110,97,109,101,115,96,32,
+ 97,114,101,32,105,100,101,110,116,105,99,97,108,32,116,111,
+ 32,119,97,108,107,40,41,32,111,117,116,112,117,116,44,10,
+ 32,32,32,32,32,32,32,32,97,110,100,32,96,100,105,114,
+ 102,100,96,32,105,115,32,97,32,102,105,108,101,32,100,101,
+ 115,99,114,105,112,116,111,114,32,114,101,102,101,114,114,105,
+ 110,103,32,116,111,32,116,104,101,32,100,105,114,101,99,116,
+ 111,114,121,32,96,100,105,114,112,97,116,104,96,46,10,10,
+ 32,32,32,32,32,32,32,32,84,104,101,32,97,100,118,97,
+ 110,116,97,103,101,32,111,102,32,102,119,97,108,107,40,41,
+ 32,111,118,101,114,32,119,97,108,107,40,41,32,105,115,32,
+ 116,104,97,116,32,105,116,39,115,32,115,97,102,101,32,97,
+ 103,97,105,110,115,116,32,115,121,109,108,105,110,107,10,32,
+ 32,32,32,32,32,32,32,114,97,99,101,115,32,40,119,104,
+ 101,110,32,102,111,108,108,111,119,95,115,121,109,108,105,110,
+ 107,115,32,105,115,32,70,97,108,115,101,41,46,10,10,32,
+ 32,32,32,32,32,32,32,73,102,32,100,105,114,95,102,100,
+ 32,105,115,32,110,111,116,32,78,111,110,101,44,32,105,116,
+ 32,115,104,111,117,108,100,32,98,101,32,97,32,102,105,108,
+ 101,32,100,101,115,99,114,105,112,116,111,114,32,111,112,101,
+ 110,32,116,111,32,97,32,100,105,114,101,99,116,111,114,121,
+ 44,10,32,32,32,32,32,32,32,32,32,32,97,110,100,32,
+ 116,111,112,32,115,104,111,117,108,100,32,98,101,32,114,101,
+ 108,97,116,105,118,101,59,32,116,111,112,32,119,105,108,108,
+ 32,116,104,101,110,32,98,101,32,114,101,108,97,116,105,118,
+ 101,32,116,111,32,116,104,97,116,32,100,105,114,101,99,116,
+ 111,114,121,46,10,32,32,32,32,32,32,32,32,32,32,40,
+ 100,105,114,95,102,100,32,105,115,32,97,108,119,97,121,115,
+ 32,115,117,112,112,111,114,116,101,100,32,102,111,114,32,102,
+ 119,97,108,107,46,41,10,10,32,32,32,32,32,32,32,32,
+ 67,97,117,116,105,111,110,58,10,32,32,32,32,32,32,32,
+ 32,83,105,110,99,101,32,102,119,97,108,107,40,41,32,121,
+ 105,101,108,100,115,32,102,105,108,101,32,100,101,115,99,114,
+ 105,112,116,111,114,115,44,32,116,104,111,115,101,32,97,114,
+ 101,32,111,110,108,121,32,118,97,108,105,100,32,117,110,116,
+ 105,108,32,116,104,101,10,32,32,32,32,32,32,32,32,110,
+ 101,120,116,32,105,116,101,114,97,116,105,111,110,32,115,116,
+ 101,112,44,32,115,111,32,121,111,117,32,115,104,111,117,108,
+ 100,32,100,117,112,40,41,32,116,104,101,109,32,105,102,32,
+ 121,111,117,32,119,97,110,116,32,116,111,32,107,101,101,112,
+ 32,116,104,101,109,10,32,32,32,32,32,32,32,32,102,111,
+ 114,32,97,32,108,111,110,103,101,114,32,112,101,114,105,111,
+ 100,46,10,10,32,32,32,32,32,32,32,32,69,120,97,109,
+ 112,108,101,58,10,10,32,32,32,32,32,32,32,32,105,109,
+ 112,111,114,116,32,111,115,10,32,32,32,32,32,32,32,32,
+ 102,111,114,32,114,111,111,116,44,32,100,105,114,115,44,32,
+ 102,105,108,101,115,44,32,114,111,111,116,102,100,32,105,110,
+ 32,111,115,46,102,119,97,108,107,40,39,112,121,116,104,111,
+ 110,47,76,105,98,47,101,109,97,105,108,39,41,58,10,32,
+ 32,32,32,32,32,32,32,32,32,32,32,112,114,105,110,116,
+ 40,114,111,111,116,44,32,34,99,111,110,115,117,109,101,115,
+ 34,44,32,101,110,100,61,34,34,41,10,32,32,32,32,32,
+ 32,32,32,32,32,32,32,112,114,105,110,116,40,115,117,109,
+ 40,111,115,46,115,116,97,116,40,110,97,109,101,44,32,100,
+ 105,114,95,102,100,61,114,111,111,116,102,100,41,46,115,116,
+ 95,115,105,122,101,32,102,111,114,32,110,97,109,101,32,105,
+ 110,32,102,105,108,101,115,41,44,10,32,32,32,32,32,32,
+ 32,32,32,32,32,32,32,32,32,32,32,32,101,110,100,61,
+ 34,34,41,10,32,32,32,32,32,32,32,32,32,32,32,32,
+ 112,114,105,110,116,40,34,98,121,116,101,115,32,105,110,34,
+ 44,32,108,101,110,40,102,105,108,101,115,41,44,32,34,110,
+ 111,110,45,100,105,114,101,99,116,111,114,121,32,102,105,108,
+ 101,115,34,41,10,32,32,32,32,32,32,32,32,32,32,32,
+ 32,105,102,32,39,67,86,83,39,32,105,110,32,100,105,114,
+ 115,58,10,32,32,32,32,32,32,32,32,32,32,32,32,32,
+ 32,32,32,100,105,114,115,46,114,101,109,111,118,101,40,39,
+ 67,86,83,39,41,32,32,35,32,100,111,110,39,116,32,118,
+ 105,115,105,116,32,67,86,83,32,100,105,114,101,99,116,111,
+ 114,105,101,115,10,32,32,32,32,32,32,32,32,122,8,111,
+ 115,46,102,119,97,108,107,70,114,159,0,0,0,169,1,114,
+ 161,0,0,0,78,41,15,114,130,0,0,0,114,131,0,0,
+ 0,114,132,0,0,0,114,57,0,0,0,114,69,0,0,0,
+ 218,8,79,95,82,68,79,78,76,89,218,2,115,116,218,7,
+ 83,95,73,83,68,73,82,218,7,115,116,95,109,111,100,101,
+ 114,12,0,0,0,218,8,115,97,109,101,115,116,97,116,218,
+ 6,95,102,119,97,108,107,114,115,0,0,0,114,116,0,0,
+ 0,218,5,99,108,111,115,101,41,7,114,143,0,0,0,114,
+ 144,0,0,0,114,145,0,0,0,114,160,0,0,0,114,161,
+ 0,0,0,218,7,111,114,105,103,95,115,116,218,5,116,111,
+ 112,102,100,115,7,0,0,0,32,32,32,32,32,32,32,114,
+ 25,0,0,0,218,5,102,119,97,108,107,114,173,0,0,0,
+ 181,1,0,0,115,180,0,0,0,232,0,248,128,0,244,66,
+ 1,0,9,12,143,9,137,9,144,42,152,99,160,55,168,71,
+ 176,95,192,102,212,8,77,220,14,20,144,83,139,107,136,3,
+ 241,6,0,16,31,220,22,26,152,51,176,5,184,102,212,22,
+ 69,136,71,220,16,20,144,83,156,40,168,54,212,16,50,136,
+ 5,240,2,6,9,25,217,16,31,164,66,167,74,161,74,168,
+ 119,175,127,169,127,212,36,63,220,36,40,167,77,161,77,176,
+ 39,188,52,192,5,187,59,212,36,71,220,27,33,160,37,168,
+ 19,172,106,184,19,188,101,211,46,68,216,34,41,168,55,176,
+ 79,243,3,1,28,69,1,247,0,1,17,69,1,240,0,1,
+ 17,69,1,244,6,0,13,18,144,37,141,76,240,7,1,17,
+ 69,1,249,244,6,0,13,18,144,37,141,76,252,115,49,0,
+ 0,0,130,65,8,67,15,1,193,11,65,33,66,63,0,194,
+ 44,1,66,61,4,194,45,4,66,63,0,194,49,12,67,15,
+ 1,194,61,1,66,63,0,194,63,13,67,12,3,195,12,3,
+ 67,15,1,99,6,0,0,0,0,0,0,0,0,0,0,0,
+ 9,0,0,0,35,0,0,0,243,126,3,0,0,75,0,1,
+ 0,151,0,116,1,0,0,0,0,0,0,0,0,124,0,171,
+ 1,0,0,0,0,0,0,125,6,103,0,125,7,103,0,125,
+ 8,124,3,115,2,124,5,114,2,100,0,110,1,103,0,125,
+ 9,124,6,68,0,93,98,0,0,125,10,124,10,106,2,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,125,11,124,2,114,11,116,5,0,0,0,0,0,0,0,
+ 0,124,11,171,1,0,0,0,0,0,0,125,11,9,0,124,
+ 10,106,7,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,171,0,0,0,0,0,0,0,114,37,124,
+ 7,106,9,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,124,11,171,1,0,0,0,0,0,0,1,
+ 0,124,9,129,35,124,9,106,9,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,124,10,171,1,0,
+ 0,0,0,0,0,1,0,110,17,124,8,106,9,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,
+ 11,171,1,0,0,0,0,0,0,1,0,140,100,4,0,124,
+ 3,114,8,124,1,124,7,124,8,124,0,102,4,150,1,151,
+ 1,1,0,124,9,128,2,124,7,110,11,116,15,0,0,0,
+ 0,0,0,0,0,124,7,124,9,171,2,0,0,0,0,0,
+ 0,68,0,93,158,0,0,125,11,9,0,124,5,115,44,124,
+ 3,114,15,116,17,0,0,0,0,0,0,0,0,124,11,124,
+ 0,100,1,172,2,171,3,0,0,0,0,0,0,125,12,110,
+ 27,124,9,128,2,74,0,130,1,124,11,92,2,0,0,125,
+ 11,125,10,124,10,106,17,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,100,1,172,3,171,1,0,
+ 0,0,0,0,0,125,12,116,19,0,0,0,0,0,0,0,
+ 0,124,11,116,20,0,0,0,0,0,0,0,0,124,0,172,
+ 4,171,3,0,0,0,0,0,0,125,13,9,0,124,5,115,
+ 31,116,23,0,0,0,0,0,0,0,0,106,24,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,
+ 12,116,17,0,0,0,0,0,0,0,0,124,13,171,1,0,
+ 0,0,0,0,0,171,2,0,0,0,0,0,0,114,46,116,
+ 23,0,0,0,0,0,0,0,0,106,26,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,124,1,124,
+ 11,171,2,0,0,0,0,0,0,125,15,116,29,0,0,0,
+ 0,0,0,0,0,124,13,124,15,124,2,124,3,124,4,124,
+ 5,171,6,0,0,0,0,0,0,69,0,100,0,123,3,0,
+ 0,150,3,151,2,134,5,5,0,1,0,116,31,0,0,0,
+ 0,0,0,0,0,124,13,171,1,0,0,0,0,0,0,1,
+ 0,140,160,4,0,124,3,115,9,124,1,124,7,124,8,124,
+ 0,102,4,150,1,151,1,1,0,121,0,121,0,35,0,116,
+ 10,0,0,0,0,0,0,0,0,36,0,114,54,1,0,9,
+ 0,124,10,106,13,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,171,0,0,0,0,0,0,0,114,
+ 17,124,8,106,9,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,124,11,171,1,0,0,0,0,0,
+ 0,1,0,110,15,35,0,116,10,0,0,0,0,0,0,0,
+ 0,36,0,114,3,1,0,89,0,110,4,119,0,120,3,89,
+ 0,119,1,89,0,144,1,140,106,119,0,120,3,89,0,119,
+ 1,35,0,116,10,0,0,0,0,0,0,0,0,36,0,114,
+ 21,125,14,124,4,129,8,2,0,124,4,124,14,171,1,0,
+ 0,0,0,0,0,1,0,89,0,100,0,125,14,126,14,144,
+ 1,140,8,100,0,125,14,126,14,119,1,119,0,120,3,89,
+ 0,119,1,55,0,140,128,35,0,116,31,0,0,0,0,0,
+ 0,0,0,124,13,171,1,0,0,0,0,0,0,1,0,119,
+ 0,120,3,89,0,119,1,173,3,119,1,41,5,78,70,41,
+ 2,114,161,0,0,0,114,160,0,0,0,41,1,114,160,0,
+ 0,0,114,163,0,0,0,41,16,114,86,0,0,0,114,11,
+ 0,0,0,114,17,0,0,0,114,139,0,0,0,114,140,0,
+ 0,0,114,117,0,0,0,114,141,0,0,0,218,3,122,105,
+ 112,114,57,0,0,0,114,69,0,0,0,114,164,0,0,0,
+ 114,12,0,0,0,114,168,0,0,0,114,134,0,0,0,114,
+ 169,0,0,0,114,170,0,0,0,41,16,114,172,0,0,0,
+ 218,7,116,111,112,112,97,116,104,218,7,105,115,98,121,116,
+ 101,115,114,144,0,0,0,114,145,0,0,0,114,160,0,0,
+ 0,114,151,0,0,0,114,148,0,0,0,114,149,0,0,0,
+ 218,7,101,110,116,114,105,101,115,114,154,0,0,0,114,11,
+ 0,0,0,114,171,0,0,0,218,5,100,105,114,102,100,218,
+ 3,101,114,114,218,7,100,105,114,112,97,116,104,115,16,0,
+ 0,0,32,32,32,32,32,32,32,32,32,32,32,32,32,32,
+ 32,32,114,25,0,0,0,114,169,0,0,0,114,169,0,0,
+ 0,229,1,0,0,115,219,1,0,0,232,0,248,128,0,244,
+ 10,0,22,29,152,85,147,94,136,10,216,15,17,136,4,216,
+ 18,20,136,7,217,26,33,161,95,145,36,184,34,136,7,216,
+ 21,31,242,0,17,9,25,136,69,216,19,24,151,58,145,58,
+ 136,68,217,15,22,220,23,31,160,4,147,126,144,4,240,2,
+ 13,13,25,216,19,24,151,60,145,60,148,62,216,20,24,151,
+ 75,145,75,160,4,212,20,37,216,23,30,208,23,42,216,24,
+ 31,159,14,153,14,160,117,213,24,45,224,20,27,151,78,145,
+ 78,160,52,212,20,40,248,240,21,17,9,25,241,38,0,12,
+ 19,216,18,25,152,52,160,23,168,37,208,18,47,210,12,47,
+ 224,28,35,152,79,145,68,180,19,176,84,184,55,211,49,67,
+ 242,0,20,9,29,136,68,240,2,12,13,25,217,23,38,217,
+ 23,30,220,34,38,160,116,176,69,200,53,212,34,81,153,7,
+ 224,31,38,208,31,50,209,24,50,216,38,42,153,11,152,4,
+ 152,101,216,34,39,167,42,161,42,184,85,160,42,211,34,67,
+ 152,7,220,24,28,152,84,164,56,176,69,212,24,58,144,5,
+ 240,10,6,13,29,217,19,34,164,100,167,109,161,109,176,71,
+ 188,84,192,37,187,91,212,38,73,220,30,34,159,105,153,105,
+ 168,7,176,20,211,30,54,144,71,220,31,37,160,101,168,87,
+ 176,103,216,38,45,168,119,184,15,243,3,1,32,73,1,247,
+ 0,1,21,73,1,240,0,1,21,73,1,244,6,0,17,22,
+ 144,101,149,12,240,41,20,9,29,241,44,0,16,23,216,18,
+ 25,152,52,160,23,168,37,208,18,47,211,12,47,240,3,0,
+ 16,23,248,244,67,1,0,20,27,242,0,6,13,25,240,2,
+ 5,17,25,224,23,28,215,23,39,209,23,39,212,23,41,216,
+ 24,31,159,14,153,14,160,116,212,24,44,249,220,23,30,242,
+ 0,1,17,25,217,20,24,240,3,1,17,25,253,240,11,6,
+ 13,25,251,244,42,0,20,27,242,0,3,13,25,216,19,26,
+ 208,19,38,217,20,27,152,67,148,76,221,16,24,251,240,7,
+ 3,13,25,250,240,14,1,21,73,1,249,244,6,0,17,22,
+ 144,101,149,12,252,115,157,0,0,0,130,54,70,61,1,185,
+ 65,6,69,8,2,193,63,31,70,61,1,194,31,65,0,70,
+ 10,2,195,32,65,10,70,45,2,196,42,1,70,43,6,196,
+ 43,4,70,45,2,196,47,25,70,61,1,197,8,9,70,7,
+ 5,197,18,33,69,52,4,197,51,1,70,7,5,197,52,9,
+ 70,0,7,197,61,2,70,7,5,197,63,1,70,0,7,198,
+ 0,3,70,7,5,198,3,3,70,61,1,198,6,1,70,7,
+ 5,198,7,3,70,61,1,198,10,9,70,40,5,198,19,10,
+ 70,35,5,198,29,6,70,61,1,198,35,5,70,40,5,198,
+ 40,3,70,61,1,198,43,1,70,45,2,198,45,13,70,58,
+ 5,198,58,3,70,61,1,114,173,0,0,0,99,1,0,0,
+ 0,0,0,0,0,0,0,0,0,4,0,0,0,7,0,0,
+ 0,243,28,0,0,0,151,0,116,1,0,0,0,0,0,0,
+ 0,0,124,0,124,1,171,2,0,0,0,0,0,0,1,0,
+ 121,1,41,2,122,112,101,120,101,99,108,40,102,105,108,101,
+ 44,32,42,97,114,103,115,41,10,10,32,32,32,32,69,120,
+ 101,99,117,116,101,32,116,104,101,32,101,120,101,99,117,116,
+ 97,98,108,101,32,102,105,108,101,32,119,105,116,104,32,97,
+ 114,103,117,109,101,110,116,32,108,105,115,116,32,97,114,103,
+ 115,44,32,114,101,112,108,97,99,105,110,103,32,116,104,101,
+ 10,32,32,32,32,99,117,114,114,101,110,116,32,112,114,111,
+ 99,101,115,115,46,32,78,41,1,218,5,101,120,101,99,118,
+ 169,2,218,4,102,105,108,101,218,4,97,114,103,115,115,2,
+ 0,0,0,32,32,114,25,0,0,0,218,5,101,120,101,99,
+ 108,114,187,0,0,0,31,2,0,0,115,14,0,0,0,128,
+ 0,244,10,0,5,10,136,36,144,4,213,4,21,114,27,0,
+ 0,0,99,1,0,0,0,0,0,0,0,0,0,0,0,6,
+ 0,0,0,7,0,0,0,243,46,0,0,0,151,0,124,1,
+ 100,1,25,0,0,0,125,2,116,1,0,0,0,0,0,0,
+ 0,0,124,0,124,1,100,2,100,1,26,0,124,2,171,3,
+ 0,0,0,0,0,0,1,0,121,2,41,3,122,138,101,120,
+ 101,99,108,101,40,102,105,108,101,44,32,42,97,114,103,115,
+ 44,32,101,110,118,41,10,10,32,32,32,32,69,120,101,99,
+ 117,116,101,32,116,104,101,32,101,120,101,99,117,116,97,98,
+ 108,101,32,102,105,108,101,32,119,105,116,104,32,97,114,103,
+ 117,109,101,110,116,32,108,105,115,116,32,97,114,103,115,32,
+ 97,110,100,10,32,32,32,32,101,110,118,105,114,111,110,109,
+ 101,110,116,32,101,110,118,44,32,114,101,112,108,97,99,105,
+ 110,103,32,116,104,101,32,99,117,114,114,101,110,116,32,112,
+ 114,111,99,101,115,115,46,32,233,255,255,255,255,78,41,1,
+ 114,88,0,0,0,169,3,114,185,0,0,0,114,186,0,0,
+ 0,218,3,101,110,118,115,3,0,0,0,32,32,32,114,25,
+ 0,0,0,218,6,101,120,101,99,108,101,114,192,0,0,0,
+ 38,2,0,0,115,31,0,0,0,128,0,240,10,0,11,15,
+ 136,114,137,40,128,67,220,4,10,136,52,144,20,144,99,144,
+ 114,144,25,152,67,213,4,32,114,27,0,0,0,99,1,0,
+ 0,0,0,0,0,0,0,0,0,0,4,0,0,0,7,0,
+ 0,0,243,28,0,0,0,151,0,116,1,0,0,0,0,0,
+ 0,0,0,124,0,124,1,171,2,0,0,0,0,0,0,1,
+ 0,121,1,41,2,122,149,101,120,101,99,108,112,40,102,105,
+ 108,101,44,32,42,97,114,103,115,41,10,10,32,32,32,32,
+ 69,120,101,99,117,116,101,32,116,104,101,32,101,120,101,99,
+ 117,116,97,98,108,101,32,102,105,108,101,32,40,119,104,105,
+ 99,104,32,105,115,32,115,101,97,114,99,104,101,100,32,102,
+ 111,114,32,97,108,111,110,103,32,36,80,65,84,72,41,10,
+ 32,32,32,32,119,105,116,104,32,97,114,103,117,109,101,110,
+ 116,32,108,105,115,116,32,97,114,103,115,44,32,114,101,112,
+ 108,97,99,105,110,103,32,116,104,101,32,99,117,114,114,101,
+ 110,116,32,112,114,111,99,101,115,115,46,32,78,41,1,218,
+ 6,101,120,101,99,118,112,114,184,0,0,0,115,2,0,0,
+ 0,32,32,114,25,0,0,0,218,6,101,120,101,99,108,112,
+ 114,195,0,0,0,46,2,0,0,115,14,0,0,0,128,0,
+ 244,10,0,5,11,136,52,144,20,213,4,22,114,27,0,0,
+ 0,99,1,0,0,0,0,0,0,0,0,0,0,0,6,0,
+ 0,0,7,0,0,0,243,46,0,0,0,151,0,124,1,100,
+ 1,25,0,0,0,125,2,116,1,0,0,0,0,0,0,0,
+ 0,124,0,124,1,100,2,100,1,26,0,124,2,171,3,0,
+ 0,0,0,0,0,1,0,121,2,41,3,122,179,101,120,101,
+ 99,108,112,101,40,102,105,108,101,44,32,42,97,114,103,115,
+ 44,32,101,110,118,41,10,10,32,32,32,32,69,120,101,99,
+ 117,116,101,32,116,104,101,32,101,120,101,99,117,116,97,98,
+ 108,101,32,102,105,108,101,32,40,119,104,105,99,104,32,105,
+ 115,32,115,101,97,114,99,104,101,100,32,102,111,114,32,97,
+ 108,111,110,103,32,36,80,65,84,72,41,10,32,32,32,32,
+ 119,105,116,104,32,97,114,103,117,109,101,110,116,32,108,105,
+ 115,116,32,97,114,103,115,32,97,110,100,32,101,110,118,105,
+ 114,111,110,109,101,110,116,32,101,110,118,44,32,114,101,112,
+ 108,97,99,105,110,103,32,116,104,101,32,99,117,114,114,101,
+ 110,116,10,32,32,32,32,112,114,111,99,101,115,115,46,32,
+ 114,189,0,0,0,78,41,1,218,7,101,120,101,99,118,112,
+ 101,114,190,0,0,0,115,3,0,0,0,32,32,32,114,25,
+ 0,0,0,218,7,101,120,101,99,108,112,101,114,198,0,0,
+ 0,53,2,0,0,115,31,0,0,0,128,0,240,12,0,11,
+ 15,136,114,137,40,128,67,220,4,11,136,68,144,36,144,115,
+ 152,2,144,41,152,83,213,4,33,114,27,0,0,0,99,2,
+ 0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,3,
+ 0,0,0,243,28,0,0,0,151,0,116,1,0,0,0,0,
+ 0,0,0,0,124,0,124,1,171,2,0,0,0,0,0,0,
+ 1,0,121,1,41,2,122,192,101,120,101,99,118,112,40,102,
+ 105,108,101,44,32,97,114,103,115,41,10,10,32,32,32,32,
+ 69,120,101,99,117,116,101,32,116,104,101,32,101,120,101,99,
+ 117,116,97,98,108,101,32,102,105,108,101,32,40,119,104,105,
+ 99,104,32,105,115,32,115,101,97,114,99,104,101,100,32,102,
+ 111,114,32,97,108,111,110,103,32,36,80,65,84,72,41,10,
+ 32,32,32,32,119,105,116,104,32,97,114,103,117,109,101,110,
+ 116,32,108,105,115,116,32,97,114,103,115,44,32,114,101,112,
+ 108,97,99,105,110,103,32,116,104,101,32,99,117,114,114,101,
+ 110,116,32,112,114,111,99,101,115,115,46,10,32,32,32,32,
+ 97,114,103,115,32,109,97,121,32,98,101,32,97,32,108,105,
+ 115,116,32,111,114,32,116,117,112,108,101,32,111,102,32,115,
+ 116,114,105,110,103,115,46,32,78,169,1,218,8,95,101,120,
+ 101,99,118,112,101,114,184,0,0,0,115,2,0,0,0,32,
+ 32,114,25,0,0,0,114,194,0,0,0,114,194,0,0,0,
+ 62,2,0,0,115,14,0,0,0,128,0,244,12,0,5,13,
+ 136,84,144,52,213,4,24,114,27,0,0,0,99,3,0,0,
+ 0,0,0,0,0,0,0,0,0,5,0,0,0,3,0,0,
+ 0,243,30,0,0,0,151,0,116,1,0,0,0,0,0,0,
+ 0,0,124,0,124,1,124,2,171,3,0,0,0,0,0,0,
+ 1,0,121,1,41,2,122,222,101,120,101,99,118,112,101,40,
+ 102,105,108,101,44,32,97,114,103,115,44,32,101,110,118,41,
+ 10,10,32,32,32,32,69,120,101,99,117,116,101,32,116,104,
+ 101,32,101,120,101,99,117,116,97,98,108,101,32,102,105,108,
+ 101,32,40,119,104,105,99,104,32,105,115,32,115,101,97,114,
+ 99,104,101,100,32,102,111,114,32,97,108,111,110,103,32,36,
+ 80,65,84,72,41,10,32,32,32,32,119,105,116,104,32,97,
+ 114,103,117,109,101,110,116,32,108,105,115,116,32,97,114,103,
+ 115,32,97,110,100,32,101,110,118,105,114,111,110,109,101,110,
+ 116,32,101,110,118,44,32,114,101,112,108,97,99,105,110,103,
+ 32,116,104,101,10,32,32,32,32,99,117,114,114,101,110,116,
+ 32,112,114,111,99,101,115,115,46,10,32,32,32,32,97,114,
+ 103,115,32,109,97,121,32,98,101,32,97,32,108,105,115,116,
+ 32,111,114,32,116,117,112,108,101,32,111,102,32,115,116,114,
+ 105,110,103,115,46,32,78,114,200,0,0,0,114,190,0,0,
+ 0,115,3,0,0,0,32,32,32,114,25,0,0,0,114,197,
+ 0,0,0,114,197,0,0,0,70,2,0,0,115,16,0,0,
+ 0,128,0,244,14,0,5,13,136,84,144,52,152,19,213,4,
+ 29,114,27,0,0,0,41,6,114,187,0,0,0,114,192,0,
+ 0,0,114,195,0,0,0,114,198,0,0,0,114,194,0,0,
+ 0,114,197,0,0,0,99,3,0,0,0,0,0,0,0,0,
+ 0,0,0,5,0,0,0,3,0,0,0,243,158,1,0,0,
+ 151,0,124,2,129,11,116,0,0,0,0,0,0,0,0,0,
+ 125,3,124,1,124,2,102,2,125,4,110,15,116,2,0,0,
+ 0,0,0,0,0,0,125,3,124,1,102,1,125,4,116,4,
+ 0,0,0,0,0,0,0,0,125,2,116,7,0,0,0,0,
+ 0,0,0,0,106,8,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,124,0,171,1,0,0,0,0,
+ 0,0,114,10,2,0,124,3,124,0,103,1,124,4,162,1,
+ 173,6,142,0,1,0,121,0,100,0,125,5,116,11,0,0,
+ 0,0,0,0,0,0,124,2,171,1,0,0,0,0,0,0,
+ 125,6,116,12,0,0,0,0,0,0,0,0,100,1,107,55,
+ 0,0,114,27,116,15,0,0,0,0,0,0,0,0,124,0,
+ 171,1,0,0,0,0,0,0,125,0,116,17,0,0,0,0,
+ 0,0,0,0,116,14,0,0,0,0,0,0,0,0,124,6,
+ 171,2,0,0,0,0,0,0,125,6,124,6,68,0,93,34,
+ 0,0,125,7,116,7,0,0,0,0,0,0,0,0,106,18,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,124,7,124,0,171,2,0,0,0,0,0,0,125,8,
+ 9,0,2,0,124,3,124,8,103,1,124,4,162,1,173,6,
+ 142,0,1,0,140,36,4,0,124,5,129,2,124,5,130,1,
+ 127,10,130,1,35,0,116,20,0,0,0,0,0,0,0,0,
+ 116,22,0,0,0,0,0,0,0,0,102,2,36,0,114,12,
+ 125,9,124,9,125,10,89,0,100,0,125,9,126,9,140,65,
+ 100,0,125,9,126,9,119,1,116,24,0,0,0,0,0,0,
+ 0,0,36,0,114,16,125,9,124,9,125,10,124,5,128,2,
+ 124,9,125,5,89,0,100,0,125,9,126,9,140,88,100,0,
+ 125,9,126,9,119,1,119,0,120,3,89,0,119,1,41,2,
+ 78,114,42,0,0,0,41,13,114,88,0,0,0,114,183,0,
+ 0,0,218,7,101,110,118,105,114,111,110,114,12,0,0,0,
+ 114,156,0,0,0,114,19,0,0,0,114,11,0,0,0,114,
+ 17,0,0,0,218,3,109,97,112,114,134,0,0,0,218,17,
+ 70,105,108,101,78,111,116,70,111,117,110,100,69,114,114,111,
+ 114,218,18,78,111,116,65,68,105,114,101,99,116,111,114,121,
+ 69,114,114,111,114,114,117,0,0,0,41,11,114,185,0,0,
+ 0,114,186,0,0,0,114,191,0,0,0,218,9,101,120,101,
+ 99,95,102,117,110,99,218,7,97,114,103,114,101,115,116,218,
+ 9,115,97,118,101,100,95,101,120,99,218,9,112,97,116,104,
+ 95,108,105,115,116,114,33,0,0,0,218,8,102,117,108,108,
+ 110,97,109,101,218,1,101,218,8,108,97,115,116,95,101,120,
+ 99,115,11,0,0,0,32,32,32,32,32,32,32,32,32,32,
+ 32,114,25,0,0,0,114,201,0,0,0,114,201,0,0,0,
+ 81,2,0,0,115,231,0,0,0,128,0,216,7,10,128,127,
+ 220,20,26,136,9,216,19,23,152,19,144,43,137,7,228,20,
+ 25,136,9,216,19,23,144,39,136,7,220,14,21,136,3,228,
+ 7,11,135,124,129,124,144,68,212,7,25,217,8,17,144,36,
+ 208,8,33,152,23,211,8,33,216,8,14,216,16,20,128,73,
+ 220,16,29,152,99,211,16,34,128,73,220,7,11,136,116,130,
+ 124,220,15,23,152,4,139,126,136,4,220,20,23,156,8,160,
+ 41,211,20,44,136,9,216,15,24,242,0,9,5,30,136,3,
+ 220,19,23,151,57,145,57,152,83,160,36,211,19,39,136,8,
+ 240,2,7,9,30,217,12,21,144,104,208,12,41,160,23,212,
+ 12,41,240,7,9,5,30,240,20,0,8,17,208,7,28,216,
+ 14,23,136,15,216,10,18,128,78,248,244,17,0,17,34,212,
+ 35,53,208,15,54,242,0,1,9,25,216,23,24,141,72,251,
+ 220,15,22,242,0,3,9,30,216,23,24,136,72,216,15,24,
+ 208,15,32,216,28,29,144,9,255,248,240,7,3,9,30,250,
+ 115,36,0,0,0,194,9,9,66,26,2,194,26,15,67,12,
+ 5,194,41,2,66,48,5,194,48,12,67,12,5,194,60,6,
+ 67,7,5,195,7,5,67,12,5,99,1,0,0,0,0,0,
+ 0,0,0,0,0,0,6,0,0,0,3,0,0,0,243,170,
+ 1,0,0,151,0,100,1,100,2,108,0,125,1,124,0,128,
+ 6,116,2,0,0,0,0,0,0,0,0,125,0,124,1,106,
+ 5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,171,0,0,0,0,0,0,0,53,0,1,0,124,
+ 1,106,7,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,100,3,116,8,0,0,0,0,0,0,0,
+ 0,171,2,0,0,0,0,0,0,1,0,9,0,124,0,106,
+ 11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,100,4,171,1,0,0,0,0,0,0,125,2,116,
+ 14,0,0,0,0,0,0,0,0,114,50,9,0,124,0,100,
+ 5,25,0,0,0,125,3,124,2,129,11,116,17,0,0,0,
+ 0,0,0,0,0,100,6,171,1,0,0,0,0,0,0,130,
+ 1,124,3,125,2,124,2,129,27,116,21,0,0,0,0,0,
+ 0,0,0,124,2,116,22,0,0,0,0,0,0,0,0,171,
+ 2,0,0,0,0,0,0,114,11,116,25,0,0,0,0,0,
+ 0,0,0,124,2,171,1,0,0,0,0,0,0,125,2,100,
+ 2,100,2,100,2,171,2,0,0,0,0,0,0,1,0,127,
+ 2,128,6,116,26,0,0,0,0,0,0,0,0,125,2,124,
+ 2,106,29,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,116,30,0,0,0,0,0,0,0,0,171,
+ 1,0,0,0,0,0,0,83,0,35,0,116,12,0,0,0,
+ 0,0,0,0,0,36,0,114,5,1,0,100,2,125,2,89,
+ 0,140,106,119,0,120,3,89,0,119,1,35,0,116,18,0,
+ 0,0,0,0,0,0,0,116,12,0,0,0,0,0,0,0,
+ 0,102,2,36,0,114,3,1,0,89,0,140,100,119,0,120,
+ 3,89,0,119,1,35,0,49,0,115,1,119,2,1,0,89,
+ 0,1,0,1,0,140,76,120,3,89,0,119,1,41,7,122,
+ 243,82,101,116,117,114,110,115,32,116,104,101,32,115,101,113,
+ 117,101,110,99,101,32,111,102,32,100,105,114,101,99,116,111,
+ 114,105,101,115,32,116,104,97,116,32,119,105,108,108,32,98,
+ 101,32,115,101,97,114,99,104,101,100,32,102,111,114,32,116,
+ 104,101,10,32,32,32,32,110,97,109,101,100,32,101,120,101,
+ 99,117,116,97,98,108,101,32,40,115,105,109,105,108,97,114,
+ 32,116,111,32,97,32,115,104,101,108,108,41,32,119,104,101,
+ 110,32,108,97,117,110,99,104,105,110,103,32,97,32,112,114,
+ 111,99,101,115,115,46,10,10,32,32,32,32,42,101,110,118,
+ 42,32,109,117,115,116,32,98,101,32,97,110,32,101,110,118,
+ 105,114,111,110,109,101,110,116,32,118,97,114,105,97,98,108,
+ 101,32,100,105,99,116,32,111,114,32,78,111,110,101,46,32,
+ 32,73,102,32,42,101,110,118,42,32,105,115,32,78,111,110,
+ 101,44,10,32,32,32,32,111,115,46,101,110,118,105,114,111,
+ 110,32,119,105,108,108,32,98,101,32,117,115,101,100,46,10,
+ 32,32,32,32,114,2,0,0,0,78,218,6,105,103,110,111,
+ 114,101,218,4,80,65,84,72,115,4,0,0,0,80,65,84,
+ 72,122,42,101,110,118,32,99,97,110,110,111,116,32,99,111,
+ 110,116,97,105,110,32,39,80,65,84,72,39,32,97,110,100,
+ 32,98,39,80,65,84,72,39,32,107,101,121,115,41,16,218,
+ 8,119,97,114,110,105,110,103,115,114,204,0,0,0,218,14,
+ 99,97,116,99,104,95,119,97,114,110,105,110,103,115,218,12,
+ 115,105,109,112,108,101,102,105,108,116,101,114,218,12,66,121,
+ 116,101,115,87,97,114,110,105,110,103,218,3,103,101,116,218,
+ 9,84,121,112,101,69,114,114,111,114,218,22,115,117,112,112,
+ 111,114,116,115,95,98,121,116,101,115,95,101,110,118,105,114,
+ 111,110,218,10,86,97,108,117,101,69,114,114,111,114,218,8,
+ 75,101,121,69,114,114,111,114,114,115,0,0,0,114,116,0,
+ 0,0,114,18,0,0,0,114,10,0,0,0,114,111,0,0,
+ 0,114,8,0,0,0,41,4,114,191,0,0,0,114,218,0,
+ 0,0,114,211,0,0,0,218,10,112,97,116,104,95,108,105,
+ 115,116,98,115,4,0,0,0,32,32,32,32,114,25,0,0,
+ 0,114,19,0,0,0,114,19,0,0,0,113,2,0,0,115,
+ 235,0,0,0,128,0,243,20,0,5,20,224,7,10,128,123,
+ 220,14,21,136,3,240,8,0,10,18,215,9,32,209,9,32,
+ 211,9,34,241,0,20,5,48,216,8,16,215,8,29,209,8,
+ 29,152,104,172,12,212,8,53,240,4,3,9,29,216,24,27,
+ 159,7,153,7,160,6,155,15,136,73,245,8,0,12,34,240,
+ 2,8,13,39,216,29,32,160,23,153,92,144,10,240,8,0,
+ 20,29,208,19,40,220,26,36,216,24,68,243,3,1,27,70,
+ 1,240,0,1,21,70,1,224,28,38,144,9,224,15,24,208,
+ 15,36,172,26,176,73,188,117,212,41,69,220,28,36,160,89,
+ 211,28,47,144,9,247,41,20,5,48,240,44,0,8,17,208,
+ 7,24,220,20,27,136,9,216,11,20,143,63,137,63,156,55,
+ 211,11,35,208,4,35,248,244,39,0,16,25,242,0,1,9,
+ 29,216,24,28,138,73,240,3,1,9,29,251,244,12,0,21,
+ 29,156,105,208,19,40,242,0,1,13,21,217,16,20,240,3,
+ 1,13,21,250,247,23,20,5,48,240,0,20,5,48,250,115,
+ 82,0,0,0,157,23,67,9,3,181,17,66,35,2,193,6,
+ 6,67,9,3,193,13,5,66,52,2,193,18,44,67,9,3,
+ 194,35,11,66,49,5,194,46,2,67,9,3,194,48,1,66,
+ 49,5,194,49,3,67,9,3,194,52,15,67,6,5,195,3,
+ 2,67,9,3,195,5,1,67,6,5,195,6,3,67,9,3,
+ 195,9,5,67,18,7,41,2,218,14,77,117,116,97,98,108,
+ 101,77,97,112,112,105,110,103,218,7,77,97,112,112,105,110,
+ 103,99,0,0,0,0,0,0,0,0,0,0,0,0,1,0,
+ 0,0,0,0,0,0,243,84,0,0,0,151,0,101,0,90,
+ 1,100,0,90,2,100,1,132,0,90,3,100,2,132,0,90,
+ 4,100,3,132,0,90,5,100,4,132,0,90,6,100,5,132,
+ 0,90,7,100,6,132,0,90,8,100,7,132,0,90,9,100,
+ 8,132,0,90,10,100,9,132,0,90,11,100,10,132,0,90,
+ 12,100,11,132,0,90,13,100,12,132,0,90,14,121,13,41,
+ 14,218,8,95,69,110,118,105,114,111,110,99,6,0,0,0,
+ 0,0,0,0,0,0,0,0,2,0,0,0,3,0,0,0,
+ 243,74,0,0,0,151,0,124,2,124,0,95,0,0,0,0,
+ 0,0,0,0,0,124,3,124,0,95,1,0,0,0,0,0,
+ 0,0,0,124,4,124,0,95,2,0,0,0,0,0,0,0,
+ 0,124,5,124,0,95,3,0,0,0,0,0,0,0,0,124,
+ 1,124,0,95,4,0,0,0,0,0,0,0,0,121,0,114,
+ 23,0,0,0,41,5,218,9,101,110,99,111,100,101,107,101,
+ 121,218,9,100,101,99,111,100,101,107,101,121,218,11,101,110,
+ 99,111,100,101,118,97,108,117,101,218,11,100,101,99,111,100,
+ 101,118,97,108,117,101,218,5,95,100,97,116,97,41,6,218,
+ 4,115,101,108,102,218,4,100,97,116,97,114,233,0,0,0,
+ 114,234,0,0,0,114,235,0,0,0,114,236,0,0,0,115,
+ 6,0,0,0,32,32,32,32,32,32,114,25,0,0,0,218,
+ 8,95,95,105,110,105,116,95,95,122,17,95,69,110,118,105,
+ 114,111,110,46,95,95,105,110,105,116,95,95,161,2,0,0,
+ 115,39,0,0,0,128,0,216,25,34,136,4,140,14,216,25,
+ 34,136,4,140,14,216,27,38,136,4,212,8,24,216,27,38,
+ 136,4,212,8,24,216,21,25,136,4,141,10,114,27,0,0,
+ 0,99,2,0,0,0,0,0,0,0,0,0,0,0,4,0,
+ 0,0,3,0,0,0,243,148,0,0,0,151,0,9,0,124,
+ 0,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,124,0,106,3,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,124,1,171,1,0,
+ 0,0,0,0,0,25,0,0,0,125,2,124,0,106,7,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,124,2,171,1,0,0,0,0,0,0,83,0,35,0,116,
+ 4,0,0,0,0,0,0,0,0,36,0,114,13,1,0,116,
+ 5,0,0,0,0,0,0,0,0,124,1,171,1,0,0,0,
+ 0,0,0,100,0,130,2,119,0,120,3,89,0,119,1,114,
+ 23,0,0,0,41,4,114,237,0,0,0,114,233,0,0,0,
+ 114,226,0,0,0,114,236,0,0,0,169,3,114,238,0,0,
+ 0,218,3,107,101,121,218,5,118,97,108,117,101,115,3,0,
+ 0,0,32,32,32,114,25,0,0,0,218,11,95,95,103,101,
+ 116,105,116,101,109,95,95,122,20,95,69,110,118,105,114,111,
+ 110,46,95,95,103,101,116,105,116,101,109,95,95,168,2,0,
+ 0,115,78,0,0,0,128,0,240,2,4,9,42,216,20,24,
+ 151,74,145,74,152,116,159,126,153,126,168,99,211,31,50,209,
+ 20,51,136,69,240,8,0,16,20,215,15,31,209,15,31,160,
+ 5,211,15,38,208,8,38,248,244,7,0,16,24,242,0,2,
+ 9,42,228,18,26,152,51,147,45,160,84,208,12,41,240,5,
+ 2,9,42,250,115,9,0,0,0,130,30,49,0,177,22,65,
+ 7,3,99,3,0,0,0,0,0,0,0,0,0,0,0,4,
+ 0,0,0,3,0,0,0,243,126,0,0,0,151,0,124,0,
+ 106,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,124,1,171,1,0,0,0,0,0,0,125,1,
+ 124,0,106,3,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,124,2,171,1,0,0,0,0,0,0,
+ 125,2,116,5,0,0,0,0,0,0,0,0,124,1,124,2,
+ 171,2,0,0,0,0,0,0,1,0,124,2,124,0,106,6,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,124,1,60,0,0,0,121,0,114,23,0,0,0,41,
+ 4,114,233,0,0,0,114,235,0,0,0,218,6,112,117,116,
+ 101,110,118,114,237,0,0,0,114,242,0,0,0,115,3,0,
+ 0,0,32,32,32,114,25,0,0,0,218,11,95,95,115,101,
+ 116,105,116,101,109,95,95,122,20,95,69,110,118,105,114,111,
+ 110,46,95,95,115,101,116,105,116,101,109,95,95,176,2,0,
+ 0,115,55,0,0,0,128,0,216,14,18,143,110,137,110,152,
+ 83,211,14,33,136,3,216,16,20,215,16,32,209,16,32,160,
+ 21,211,16,39,136,5,220,8,14,136,115,144,69,212,8,26,
+ 216,26,31,136,4,143,10,137,10,144,51,138,15,114,27,0,
+ 0,0,99,2,0,0,0,0,0,0,0,0,0,0,0,4,
+ 0,0,0,3,0,0,0,243,138,0,0,0,151,0,124,0,
+ 106,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,124,1,171,1,0,0,0,0,0,0,125,2,
+ 116,3,0,0,0,0,0,0,0,0,124,2,171,1,0,0,
+ 0,0,0,0,1,0,9,0,124,0,106,4,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,2,
+ 61,0,121,0,35,0,116,6,0,0,0,0,0,0,0,0,
+ 36,0,114,13,1,0,116,7,0,0,0,0,0,0,0,0,
+ 124,1,171,1,0,0,0,0,0,0,100,0,130,2,119,0,
+ 120,3,89,0,119,1,114,23,0,0,0,41,4,114,233,0,
+ 0,0,218,8,117,110,115,101,116,101,110,118,114,237,0,0,
+ 0,114,226,0,0,0,41,3,114,238,0,0,0,114,243,0,
+ 0,0,218,10,101,110,99,111,100,101,100,107,101,121,115,3,
+ 0,0,0,32,32,32,114,25,0,0,0,218,11,95,95,100,
+ 101,108,105,116,101,109,95,95,122,20,95,69,110,118,105,114,
+ 111,110,46,95,95,100,101,108,105,116,101,109,95,95,182,2,
+ 0,0,115,68,0,0,0,128,0,216,21,25,151,94,145,94,
+ 160,67,211,21,40,136,10,220,8,16,144,26,212,8,28,240,
+ 2,4,9,42,216,16,20,151,10,145,10,152,58,209,16,38,
+ 248,220,15,23,242,0,2,9,42,228,18,26,152,51,147,45,
+ 160,84,208,12,41,240,5,2,9,42,250,115,9,0,0,0,
+ 158,13,44,0,172,22,65,2,3,99,1,0,0,0,0,0,
+ 0,0,0,0,0,0,4,0,0,0,35,0,0,0,243,106,
+ 0,0,0,75,0,1,0,151,0,116,1,0,0,0,0,0,
+ 0,0,0,124,0,106,2,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,171,1,0,0,0,0,0,
+ 0,125,1,124,1,68,0,93,21,0,0,125,2,124,0,106,
+ 5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,124,2,171,1,0,0,0,0,0,0,150,1,151,
+ 1,1,0,140,23,4,0,121,0,173,3,119,1,114,23,0,
+ 0,0,41,3,114,30,0,0,0,114,237,0,0,0,114,234,
+ 0,0,0,41,3,114,238,0,0,0,218,4,107,101,121,115,
+ 114,243,0,0,0,115,3,0,0,0,32,32,32,114,25,0,
+ 0,0,218,8,95,95,105,116,101,114,95,95,122,17,95,69,
+ 110,118,105,114,111,110,46,95,95,105,116,101,114,95,95,191,
+ 2,0,0,115,50,0,0,0,232,0,248,128,0,228,15,19,
+ 144,68,151,74,145,74,211,15,31,136,4,216,19,23,242,0,
+ 1,9,38,136,67,216,18,22,151,46,145,46,160,19,211,18,
+ 37,211,12,37,241,3,1,9,38,249,115,4,0,0,0,130,
+ 49,51,1,99,1,0,0,0,0,0,0,0,0,0,0,0,
+ 3,0,0,0,3,0,0,0,243,44,0,0,0,151,0,116,
+ 1,0,0,0,0,0,0,0,0,124,0,106,2,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,
+ 1,0,0,0,0,0,0,83,0,114,23,0,0,0,41,2,
+ 218,3,108,101,110,114,237,0,0,0,169,1,114,238,0,0,
+ 0,115,1,0,0,0,32,114,25,0,0,0,218,7,95,95,
+ 108,101,110,95,95,122,16,95,69,110,118,105,114,111,110,46,
+ 95,95,108,101,110,95,95,197,2,0,0,115,16,0,0,0,
+ 128,0,220,15,18,144,52,151,58,145,58,139,127,208,8,30,
+ 114,27,0,0,0,99,1,0,0,0,0,0,0,0,0,0,
+ 0,0,5,0,0,0,3,0,0,0,243,116,0,0,0,135,
+ 0,151,0,100,1,106,1,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,136,0,102,1,100,2,132,
+ 8,137,0,106,2,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,106,5,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,171,0,0,0,0,
+ 0,0,0,68,0,171,0,0,0,0,0,0,0,171,1,0,
+ 0,0,0,0,0,125,1,100,3,124,1,155,0,100,4,157,
+ 3,83,0,41,5,78,122,2,44,32,99,1,0,0,0,0,
+ 0,0,0,0,0,0,0,6,0,0,0,51,0,0,0,243,
+ 110,0,0,0,149,1,75,0,1,0,151,0,124,0,93,44,
+ 0,0,92,2,0,0,125,1,125,2,137,3,106,1,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 124,1,171,1,0,0,0,0,0,0,155,2,100,0,137,3,
+ 106,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,124,2,171,1,0,0,0,0,0,0,155,2,
+ 157,3,150,1,151,1,1,0,140,46,4,0,121,1,173,3,
+ 119,1,41,2,122,2,58,32,78,41,2,114,234,0,0,0,
+ 114,236,0,0,0,41,4,218,2,46,48,114,243,0,0,0,
+ 114,244,0,0,0,114,238,0,0,0,115,4,0,0,0,32,
+ 32,32,128,114,25,0,0,0,250,9,60,103,101,110,101,120,
+ 112,114,62,122,36,95,69,110,118,105,114,111,110,46,95,95,
+ 114,101,112,114,95,95,46,60,108,111,99,97,108,115,62,46,
+ 60,103,101,110,101,120,112,114,62,201,2,0,0,115,62,0,
+ 0,0,248,232,0,248,128,0,242,0,3,36,10,225,16,26,
+ 144,3,144,85,240,3,0,16,20,143,126,137,126,152,99,211,
+ 15,34,208,14,37,160,82,168,4,215,40,56,209,40,56,184,
+ 21,211,40,63,208,39,66,212,12,67,241,3,3,36,10,249,
+ 115,4,0,0,0,131,50,53,1,122,9,101,110,118,105,114,
+ 111,110,40,123,122,2,125,41,41,3,114,134,0,0,0,114,
+ 237,0,0,0,218,5,105,116,101,109,115,41,2,114,238,0,
+ 0,0,218,15,102,111,114,109,97,116,116,101,100,95,105,116,
+ 101,109,115,115,2,0,0,0,96,32,114,25,0,0,0,218,
+ 8,95,95,114,101,112,114,95,95,122,17,95,69,110,118,105,
+ 114,111,110,46,95,95,114,101,112,114,95,95,200,2,0,0,
+ 115,61,0,0,0,248,128,0,216,26,30,159,41,153,41,243,
+ 0,3,36,10,224,30,34,159,106,153,106,215,30,46,209,30,
+ 46,211,30,48,244,5,3,36,10,243,0,3,27,10,136,15,
+ 240,8,0,18,28,152,79,208,27,44,168,67,208,15,48,208,
+ 8,48,114,27,0,0,0,99,1,0,0,0,0,0,0,0,
+ 0,0,0,0,3,0,0,0,3,0,0,0,243,24,0,0,
+ 0,151,0,116,1,0,0,0,0,0,0,0,0,124,0,171,
+ 1,0,0,0,0,0,0,83,0,114,23,0,0,0,41,1,
+ 218,4,100,105,99,116,114,2,1,0,0,115,1,0,0,0,
+ 32,114,25,0,0,0,218,4,99,111,112,121,122,13,95,69,
+ 110,118,105,114,111,110,46,99,111,112,121,207,2,0,0,115,
+ 12,0,0,0,128,0,220,15,19,144,68,139,122,208,8,25,
+ 114,27,0,0,0,99,3,0,0,0,0,0,0,0,0,0,
+ 0,0,3,0,0,0,3,0,0,0,243,30,0,0,0,151,
+ 0,124,1,124,0,118,1,114,5,124,2,124,0,124,1,60,
+ 0,0,0,124,0,124,1,25,0,0,0,83,0,114,23,0,
+ 0,0,169,0,114,242,0,0,0,115,3,0,0,0,32,32,
+ 32,114,25,0,0,0,218,10,115,101,116,100,101,102,97,117,
+ 108,116,122,19,95,69,110,118,105,114,111,110,46,115,101,116,
+ 100,101,102,97,117,108,116,210,2,0,0,115,28,0,0,0,
+ 128,0,216,11,14,144,100,137,63,216,24,29,136,68,144,19,
+ 137,73,216,15,19,144,67,137,121,208,8,24,114,27,0,0,
+ 0,99,2,0,0,0,0,0,0,0,0,0,0,0,3,0,
+ 0,0,3,0,0,0,243,40,0,0,0,151,0,124,0,106,
+ 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,124,1,171,1,0,0,0,0,0,0,1,0,124,
+ 0,83,0,114,23,0,0,0,41,1,218,6,117,112,100,97,
+ 116,101,41,2,114,238,0,0,0,218,5,111,116,104,101,114,
+ 115,2,0,0,0,32,32,114,25,0,0,0,218,7,95,95,
+ 105,111,114,95,95,122,16,95,69,110,118,105,114,111,110,46,
+ 95,95,105,111,114,95,95,215,2,0,0,115,19,0,0,0,
+ 128,0,216,8,12,143,11,137,11,144,69,212,8,26,216,15,
+ 19,136,11,114,27,0,0,0,99,2,0,0,0,0,0,0,
+ 0,0,0,0,0,4,0,0,0,3,0,0,0,243,106,0,
+ 0,0,151,0,116,1,0,0,0,0,0,0,0,0,124,1,
+ 116,2,0,0,0,0,0,0,0,0,171,2,0,0,0,0,
+ 0,0,115,6,116,4,0,0,0,0,0,0,0,0,83,0,
+ 116,7,0,0,0,0,0,0,0,0,124,0,171,1,0,0,
+ 0,0,0,0,125,2,124,2,106,9,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,124,1,171,1,
+ 0,0,0,0,0,0,1,0,124,2,83,0,114,23,0,0,
+ 0,169,5,114,115,0,0,0,114,229,0,0,0,218,14,78,
+ 111,116,73,109,112,108,101,109,101,110,116,101,100,114,12,1,
+ 0,0,114,18,1,0,0,169,3,114,238,0,0,0,114,19,
+ 1,0,0,114,127,0,0,0,115,3,0,0,0,32,32,32,
+ 114,25,0,0,0,218,6,95,95,111,114,95,95,122,15,95,
+ 69,110,118,105,114,111,110,46,95,95,111,114,95,95,219,2,
+ 0,0,115,44,0,0,0,128,0,220,15,25,152,37,164,23,
+ 212,15,41,220,19,33,208,12,33,220,14,18,144,52,139,106,
+ 136,3,216,8,11,143,10,137,10,144,53,212,8,25,216,15,
+ 18,136,10,114,27,0,0,0,99,2,0,0,0,0,0,0,
+ 0,0,0,0,0,4,0,0,0,3,0,0,0,243,106,0,
+ 0,0,151,0,116,1,0,0,0,0,0,0,0,0,124,1,
+ 116,2,0,0,0,0,0,0,0,0,171,2,0,0,0,0,
+ 0,0,115,6,116,4,0,0,0,0,0,0,0,0,83,0,
+ 116,7,0,0,0,0,0,0,0,0,124,1,171,1,0,0,
+ 0,0,0,0,125,2,124,2,106,9,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,124,0,171,1,
+ 0,0,0,0,0,0,1,0,124,2,83,0,114,23,0,0,
+ 0,114,22,1,0,0,114,24,1,0,0,115,3,0,0,0,
+ 32,32,32,114,25,0,0,0,218,7,95,95,114,111,114,95,
+ 95,122,16,95,69,110,118,105,114,111,110,46,95,95,114,111,
+ 114,95,95,226,2,0,0,115,44,0,0,0,128,0,220,15,
+ 25,152,37,164,23,212,15,41,220,19,33,208,12,33,220,14,
+ 18,144,53,139,107,136,3,216,8,11,143,10,137,10,144,52,
+ 212,8,24,216,15,18,136,10,114,27,0,0,0,78,41,15,
+ 218,8,95,95,110,97,109,101,95,95,218,10,95,95,109,111,
+ 100,117,108,101,95,95,218,12,95,95,113,117,97,108,110,97,
+ 109,101,95,95,114,240,0,0,0,114,245,0,0,0,114,248,
+ 0,0,0,114,252,0,0,0,114,255,0,0,0,114,3,1,
+ 0,0,114,10,1,0,0,114,13,1,0,0,114,16,1,0,
+ 0,114,20,1,0,0,114,25,1,0,0,114,27,1,0,0,
+ 114,15,1,0,0,114,27,0,0,0,114,25,0,0,0,114,
+ 231,0,0,0,114,231,0,0,0,160,2,0,0,115,62,0,
+ 0,0,132,0,242,2,5,5,26,242,14,6,5,39,242,16,
+ 4,5,32,242,12,7,5,42,242,18,4,5,38,242,12,1,
+ 5,31,242,6,5,5,49,242,14,1,5,26,242,6,3,5,
+ 25,242,10,2,5,20,242,8,5,5,19,243,14,5,5,19,
+ 114,27,0,0,0,114,231,0,0,0,99,0,0,0,0,0,
+ 0,0,0,0,0,0,0,7,0,0,0,3,0,0,0,243,
+ 246,0,0,0,135,6,135,7,151,0,116,0,0,0,0,0,
+ 0,0,0,0,100,1,107,40,0,0,114,58,100,2,132,0,
+ 125,0,124,0,138,6,116,2,0,0,0,0,0,0,0,0,
+ 125,1,136,6,102,1,100,3,132,8,125,2,105,0,125,3,
+ 116,4,0,0,0,0,0,0,0,0,106,7,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,0,
+ 0,0,0,0,0,0,68,0,93,16,0,0,92,2,0,0,
+ 125,4,125,5,124,5,124,3,2,0,124,2,124,4,171,1,
+ 0,0,0,0,0,0,60,0,0,0,140,18,4,0,110,38,
+ 116,9,0,0,0,0,0,0,0,0,106,10,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,0,
+ 0,0,0,0,0,0,138,7,136,7,102,1,100,4,132,8,
+ 138,6,136,7,102,1,100,5,132,8,125,1,137,6,125,2,
+ 116,4,0,0,0,0,0,0,0,0,125,3,116,13,0,0,
+ 0,0,0,0,0,0,124,3,124,2,124,1,137,6,124,1,
+ 171,5,0,0,0,0,0,0,83,0,41,6,78,114,42,0,
+ 0,0,99,1,0,0,0,0,0,0,0,0,0,0,0,6,
+ 0,0,0,19,0,0,0,243,104,0,0,0,151,0,116,1,
+ 0,0,0,0,0,0,0,0,124,0,116,2,0,0,0,0,
+ 0,0,0,0,171,2,0,0,0,0,0,0,115,33,116,5,
+ 0,0,0,0,0,0,0,0,100,1,116,7,0,0,0,0,
+ 0,0,0,0,124,0,171,1,0,0,0,0,0,0,106,8,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,122,6,0,0,171,1,0,0,0,0,0,0,130,1,
+ 124,0,83,0,41,2,78,250,20,115,116,114,32,101,120,112,
+ 101,99,116,101,100,44,32,110,111,116,32,37,115,41,5,114,
+ 115,0,0,0,114,47,0,0,0,114,223,0,0,0,218,4,
+ 116,121,112,101,114,28,1,0,0,169,1,114,244,0,0,0,
+ 115,1,0,0,0,32,114,25,0,0,0,218,9,99,104,101,
+ 99,107,95,115,116,114,122,33,95,99,114,101,97,116,101,101,
+ 110,118,105,114,111,110,46,60,108,111,99,97,108,115,62,46,
+ 99,104,101,99,107,95,115,116,114,236,2,0,0,115,44,0,
+ 0,0,128,0,220,19,29,152,101,164,83,212,19,41,220,22,
+ 31,208,32,54,188,20,184,101,187,27,215,57,77,209,57,77,
+ 209,32,77,211,22,78,208,16,78,216,19,24,136,76,114,27,
+ 0,0,0,99,1,0,0,0,0,0,0,0,0,0,0,0,
+ 3,0,0,0,19,0,0,0,243,48,0,0,0,149,1,151,
+ 0,2,0,137,1,124,0,171,1,0,0,0,0,0,0,106,
+ 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,171,0,0,0,0,0,0,0,83,0,114,23,0,
+ 0,0,41,1,218,5,117,112,112,101,114,41,2,114,243,0,
+ 0,0,218,6,101,110,99,111,100,101,115,2,0,0,0,32,
+ 128,114,25,0,0,0,114,233,0,0,0,122,33,95,99,114,
+ 101,97,116,101,101,110,118,105,114,111,110,46,60,108,111,99,
+ 97,108,115,62,46,101,110,99,111,100,101,107,101,121,242,2,
+ 0,0,115,22,0,0,0,248,128,0,217,19,25,152,35,147,
+ 59,215,19,36,209,19,36,211,19,38,208,12,38,114,27,0,
+ 0,0,99,1,0,0,0,0,0,0,0,0,0,0,0,6,
+ 0,0,0,19,0,0,0,243,138,0,0,0,149,1,151,0,
+ 116,1,0,0,0,0,0,0,0,0,124,0,116,2,0,0,
+ 0,0,0,0,0,0,171,2,0,0,0,0,0,0,115,33,
+ 116,5,0,0,0,0,0,0,0,0,100,1,116,7,0,0,
+ 0,0,0,0,0,0,124,0,171,1,0,0,0,0,0,0,
+ 106,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,122,6,0,0,171,1,0,0,0,0,0,0,
+ 130,1,124,0,106,11,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,137,1,100,2,171,2,0,0,
+ 0,0,0,0,83,0,41,3,78,114,33,1,0,0,218,15,
+ 115,117,114,114,111,103,97,116,101,101,115,99,97,112,101,41,
+ 6,114,115,0,0,0,114,47,0,0,0,114,223,0,0,0,
+ 114,34,1,0,0,114,28,1,0,0,114,39,1,0,0,169,
+ 2,114,244,0,0,0,218,8,101,110,99,111,100,105,110,103,
+ 115,2,0,0,0,32,128,114,25,0,0,0,114,39,1,0,
+ 0,122,30,95,99,114,101,97,116,101,101,110,118,105,114,111,
+ 110,46,60,108,111,99,97,108,115,62,46,101,110,99,111,100,
+ 101,250,2,0,0,115,58,0,0,0,248,128,0,220,19,29,
+ 152,101,164,83,212,19,41,220,22,31,208,32,54,188,20,184,
+ 101,187,27,215,57,77,209,57,77,209,32,77,211,22,78,208,
+ 16,78,216,19,24,151,60,145,60,160,8,208,42,59,211,19,
+ 60,208,12,60,114,27,0,0,0,99,1,0,0,0,0,0,
+ 0,0,0,0,0,0,4,0,0,0,19,0,0,0,243,40,
+ 0,0,0,149,1,151,0,124,0,106,1,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,137,1,100,
+ 1,171,2,0,0,0,0,0,0,83,0,41,2,78,114,41,
+ 1,0,0,41,1,218,6,100,101,99,111,100,101,114,42,1,
+ 0,0,115,2,0,0,0,32,128,114,25,0,0,0,114,45,
+ 1,0,0,122,30,95,99,114,101,97,116,101,101,110,118,105,
+ 114,111,110,46,60,108,111,99,97,108,115,62,46,100,101,99,
+ 111,100,101,254,2,0,0,115,21,0,0,0,248,128,0,216,
+ 19,24,151,60,145,60,160,8,208,42,59,211,19,60,208,12,
+ 60,114,27,0,0,0,41,7,114,11,0,0,0,114,47,0,
+ 0,0,114,204,0,0,0,114,8,1,0,0,114,130,0,0,
+ 0,218,21,103,101,116,102,105,108,101,115,121,115,116,101,109,
+ 101,110,99,111,100,105,110,103,114,231,0,0,0,41,8,114,
+ 36,1,0,0,114,45,1,0,0,114,233,0,0,0,114,239,
+ 0,0,0,114,243,0,0,0,114,244,0,0,0,114,39,1,
+ 0,0,114,43,1,0,0,115,8,0,0,0,32,32,32,32,
+ 32,32,64,64,114,25,0,0,0,218,14,95,99,114,101,97,
+ 116,101,101,110,118,105,114,111,110,114,47,1,0,0,233,2,
+ 0,0,115,137,0,0,0,249,128,0,220,7,11,136,116,130,
+ 124,242,4,3,9,25,240,8,0,18,27,136,6,220,17,20,
+ 136,6,244,2,1,9,39,224,15,17,136,4,220,26,33,159,
+ 45,153,45,155,47,242,0,1,9,41,137,74,136,67,144,21,
+ 216,35,40,136,68,145,25,152,51,147,30,210,12,32,241,3,
+ 1,9,41,244,8,0,20,23,215,19,44,209,19,44,211,19,
+ 46,136,8,244,2,3,9,61,244,8,1,9,61,224,20,26,
+ 136,9,220,15,22,136,4,220,11,19,144,68,216,8,17,144,
+ 54,216,8,14,144,6,243,5,2,12,24,240,0,2,5,24,
+ 114,27,0,0,0,99,2,0,0,0,0,0,0,0,0,0,
+ 0,0,4,0,0,0,3,0,0,0,243,46,0,0,0,151,
+ 0,116,0,0,0,0,0,0,0,0,0,106,3,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,
+ 0,124,1,171,2,0,0,0,0,0,0,83,0,41,1,122,
+ 169,71,101,116,32,97,110,32,101,110,118,105,114,111,110,109,
+ 101,110,116,32,118,97,114,105,97,98,108,101,44,32,114,101,
+ 116,117,114,110,32,78,111,110,101,32,105,102,32,105,116,32,
+ 100,111,101,115,110,39,116,32,101,120,105,115,116,46,10,32,
+ 32,32,32,84,104,101,32,111,112,116,105,111,110,97,108,32,
+ 115,101,99,111,110,100,32,97,114,103,117,109,101,110,116,32,
+ 99,97,110,32,115,112,101,99,105,102,121,32,97,110,32,97,
+ 108,116,101,114,110,97,116,101,32,100,101,102,97,117,108,116,
+ 46,10,32,32,32,32,107,101,121,44,32,100,101,102,97,117,
+ 108,116,32,97,110,100,32,116,104,101,32,114,101,115,117,108,
+ 116,32,97,114,101,32,115,116,114,46,41,2,114,204,0,0,
+ 0,114,222,0,0,0,169,2,114,243,0,0,0,218,7,100,
+ 101,102,97,117,108,116,115,2,0,0,0,32,32,114,25,0,
+ 0,0,218,6,103,101,116,101,110,118,114,51,1,0,0,11,
+ 3,0,0,115,21,0,0,0,128,0,244,8,0,12,19,143,
+ 59,137,59,144,115,152,71,211,11,36,208,4,36,114,27,0,
+ 0,0,41,2,114,51,1,0,0,114,224,0,0,0,99,1,
+ 0,0,0,0,0,0,0,0,0,0,0,6,0,0,0,3,
+ 0,0,0,243,104,0,0,0,151,0,116,1,0,0,0,0,
+ 0,0,0,0,124,0,116,2,0,0,0,0,0,0,0,0,
+ 171,2,0,0,0,0,0,0,115,33,116,5,0,0,0,0,
+ 0,0,0,0,100,1,116,7,0,0,0,0,0,0,0,0,
+ 124,0,171,1,0,0,0,0,0,0,106,8,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,6,
+ 0,0,171,1,0,0,0,0,0,0,130,1,124,0,83,0,
+ 41,2,78,122,22,98,121,116,101,115,32,101,120,112,101,99,
+ 116,101,100,44,32,110,111,116,32,37,115,41,5,114,115,0,
+ 0,0,114,116,0,0,0,114,223,0,0,0,114,34,1,0,
+ 0,114,28,1,0,0,114,35,1,0,0,115,1,0,0,0,
+ 32,114,25,0,0,0,218,12,95,99,104,101,99,107,95,98,
+ 121,116,101,115,114,53,1,0,0,21,3,0,0,115,44,0,
+ 0,0,128,0,220,15,25,152,37,164,21,212,15,39,220,18,
+ 27,208,28,52,180,116,184,69,179,123,215,55,75,209,55,75,
+ 209,28,75,211,18,76,208,12,76,216,15,20,136,12,114,27,
+ 0,0,0,99,2,0,0,0,0,0,0,0,0,0,0,0,
+ 4,0,0,0,3,0,0,0,243,46,0,0,0,151,0,116,
+ 0,0,0,0,0,0,0,0,0,106,3,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,124,0,124,
+ 1,171,2,0,0,0,0,0,0,83,0,41,1,122,179,71,
+ 101,116,32,97,110,32,101,110,118,105,114,111,110,109,101,110,
+ 116,32,118,97,114,105,97,98,108,101,44,32,114,101,116,117,
+ 114,110,32,78,111,110,101,32,105,102,32,105,116,32,100,111,
+ 101,115,110,39,116,32,101,120,105,115,116,46,10,32,32,32,
+ 32,32,32,32,32,84,104,101,32,111,112,116,105,111,110,97,
+ 108,32,115,101,99,111,110,100,32,97,114,103,117,109,101,110,
+ 116,32,99,97,110,32,115,112,101,99,105,102,121,32,97,110,
+ 32,97,108,116,101,114,110,97,116,101,32,100,101,102,97,117,
+ 108,116,46,10,32,32,32,32,32,32,32,32,107,101,121,44,
+ 32,100,101,102,97,117,108,116,32,97,110,100,32,116,104,101,
+ 32,114,101,115,117,108,116,32,97,114,101,32,98,121,116,101,
+ 115,46,41,2,218,8,101,110,118,105,114,111,110,98,114,222,
+ 0,0,0,114,49,1,0,0,115,2,0,0,0,32,32,114,
+ 25,0,0,0,218,7,103,101,116,101,110,118,98,114,56,1,
+ 0,0,32,3,0,0,115,21,0,0,0,128,0,244,8,0,
+ 16,24,143,124,137,124,152,67,160,23,211,15,41,208,8,41,
+ 114,27,0,0,0,41,2,114,55,1,0,0,114,56,1,0,
+ 0,99,0,0,0,0,0,0,0,0,0,0,0,0,2,0,
+ 0,0,3,0,0,0,243,118,0,0,0,135,2,135,3,151,
+ 0,116,1,0,0,0,0,0,0,0,0,106,2,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,
+ 0,0,0,0,0,0,0,138,2,116,1,0,0,0,0,0,
+ 0,0,0,106,4,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,171,0,0,0,0,0,0,0,138,
+ 3,136,2,136,3,102,2,100,1,132,8,125,0,136,2,136,
+ 3,102,2,100,2,132,8,125,1,124,0,124,1,102,2,83,
+ 0,41,3,78,99,1,0,0,0,0,0,0,0,0,0,0,
+ 0,4,0,0,0,19,0,0,0,243,98,0,0,0,149,2,
+ 151,0,116,1,0,0,0,0,0,0,0,0,124,0,171,1,
+ 0,0,0,0,0,0,125,0,116,3,0,0,0,0,0,0,
+ 0,0,124,0,116,4,0,0,0,0,0,0,0,0,171,2,
+ 0,0,0,0,0,0,114,18,124,0,106,7,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,1,
+ 137,2,171,2,0,0,0,0,0,0,83,0,124,0,83,0,
+ 41,1,97,23,1,0,0,69,110,99,111,100,101,32,102,105,
+ 108,101,110,97,109,101,32,40,97,110,32,111,115,46,80,97,
+ 116,104,76,105,107,101,44,32,98,121,116,101,115,44,32,111,
+ 114,32,115,116,114,41,32,116,111,32,116,104,101,32,102,105,
+ 108,101,115,121,115,116,101,109,10,32,32,32,32,32,32,32,
+ 32,101,110,99,111,100,105,110,103,32,119,105,116,104,32,39,
+ 115,117,114,114,111,103,97,116,101,101,115,99,97,112,101,39,
+ 32,101,114,114,111,114,32,104,97,110,100,108,101,114,44,32,
+ 114,101,116,117,114,110,32,98,121,116,101,115,32,117,110,99,
+ 104,97,110,103,101,100,46,10,32,32,32,32,32,32,32,32,
+ 79,110,32,87,105,110,100,111,119,115,44,32,117,115,101,32,
+ 39,115,116,114,105,99,116,39,32,101,114,114,111,114,32,104,
+ 97,110,100,108,101,114,32,105,102,32,116,104,101,32,102,105,
+ 108,101,32,115,121,115,116,101,109,32,101,110,99,111,100,105,
+ 110,103,32,105,115,10,32,32,32,32,32,32,32,32,39,109,
+ 98,99,115,39,32,40,119,104,105,99,104,32,105,115,32,116,
+ 104,101,32,100,101,102,97,117,108,116,32,101,110,99,111,100,
+ 105,110,103,41,46,10,32,32,32,32,32,32,32,32,41,4,
+ 114,132,0,0,0,114,115,0,0,0,114,47,0,0,0,114,
+ 39,1,0,0,169,3,218,8,102,105,108,101,110,97,109,101,
+ 114,43,1,0,0,218,6,101,114,114,111,114,115,115,3,0,
+ 0,0,32,128,128,114,25,0,0,0,114,17,0,0,0,122,
+ 26,95,102,115,99,111,100,101,99,46,60,108,111,99,97,108,
+ 115,62,46,102,115,101,110,99,111,100,101,44,3,0,0,115,
+ 47,0,0,0,248,128,0,244,12,0,20,26,152,40,211,19,
+ 35,136,8,220,11,21,144,104,164,3,212,11,36,216,19,27,
+ 151,63,145,63,160,56,168,86,211,19,52,208,12,52,224,19,
+ 27,136,79,114,27,0,0,0,99,1,0,0,0,0,0,0,
+ 0,0,0,0,0,4,0,0,0,19,0,0,0,243,98,0,
+ 0,0,149,2,151,0,116,1,0,0,0,0,0,0,0,0,
+ 124,0,171,1,0,0,0,0,0,0,125,0,116,3,0,0,
+ 0,0,0,0,0,0,124,0,116,4,0,0,0,0,0,0,
+ 0,0,171,2,0,0,0,0,0,0,114,18,124,0,106,7,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,137,1,137,2,171,2,0,0,0,0,0,0,83,0,
+ 124,0,83,0,41,1,97,23,1,0,0,68,101,99,111,100,
+ 101,32,102,105,108,101,110,97,109,101,32,40,97,110,32,111,
+ 115,46,80,97,116,104,76,105,107,101,44,32,98,121,116,101,
+ 115,44,32,111,114,32,115,116,114,41,32,102,114,111,109,32,
+ 116,104,101,32,102,105,108,101,115,121,115,116,101,109,10,32,
+ 32,32,32,32,32,32,32,101,110,99,111,100,105,110,103,32,
+ 119,105,116,104,32,39,115,117,114,114,111,103,97,116,101,101,
+ 115,99,97,112,101,39,32,101,114,114,111,114,32,104,97,110,
+ 100,108,101,114,44,32,114,101,116,117,114,110,32,115,116,114,
+ 32,117,110,99,104,97,110,103,101,100,46,32,79,110,10,32,
+ 32,32,32,32,32,32,32,87,105,110,100,111,119,115,44,32,
+ 117,115,101,32,39,115,116,114,105,99,116,39,32,101,114,114,
+ 111,114,32,104,97,110,100,108,101,114,32,105,102,32,116,104,
+ 101,32,102,105,108,101,32,115,121,115,116,101,109,32,101,110,
+ 99,111,100,105,110,103,32,105,115,10,32,32,32,32,32,32,
+ 32,32,39,109,98,99,115,39,32,40,119,104,105,99,104,32,
+ 105,115,32,116,104,101,32,100,101,102,97,117,108,116,32,101,
+ 110,99,111,100,105,110,103,41,46,10,32,32,32,32,32,32,
+ 32,32,41,4,114,132,0,0,0,114,115,0,0,0,114,116,
+ 0,0,0,114,45,1,0,0,114,59,1,0,0,115,3,0,
+ 0,0,32,128,128,114,25,0,0,0,114,18,0,0,0,122,
+ 26,95,102,115,99,111,100,101,99,46,60,108,111,99,97,108,
+ 115,62,46,102,115,100,101,99,111,100,101,56,3,0,0,115,
+ 47,0,0,0,248,128,0,244,12,0,20,26,152,40,211,19,
+ 35,136,8,220,11,21,144,104,164,5,212,11,38,216,19,27,
+ 151,63,145,63,160,56,168,86,211,19,52,208,12,52,224,19,
+ 27,136,79,114,27,0,0,0,41,3,114,130,0,0,0,114,
+ 46,1,0,0,218,25,103,101,116,102,105,108,101,115,121,115,
+ 116,101,109,101,110,99,111,100,101,101,114,114,111,114,115,41,
+ 4,114,17,0,0,0,114,18,0,0,0,114,43,1,0,0,
+ 114,61,1,0,0,115,4,0,0,0,32,32,64,64,114,25,
+ 0,0,0,218,8,95,102,115,99,111,100,101,99,114,64,1,
+ 0,0,40,3,0,0,115,54,0,0,0,249,128,0,220,15,
+ 18,215,15,40,209,15,40,211,15,42,128,72,220,13,16,215,
+ 13,42,209,13,42,211,13,44,128,70,245,4,10,5,28,245,
+ 24,10,5,28,240,24,0,12,20,144,88,208,11,29,208,4,
+ 29,114,27,0,0,0,218,4,102,111,114,107,218,6,115,112,
+ 97,119,110,118,114,183,0,0,0,41,3,218,6,80,95,87,
+ 65,73,84,218,8,80,95,78,79,87,65,73,84,218,9,80,
+ 95,78,79,87,65,73,84,79,99,5,0,0,0,0,0,0,
+ 0,0,0,0,0,5,0,0,0,3,0,0,0,243,58,1,
+ 0,0,151,0,116,1,0,0,0,0,0,0,0,0,124,2,
+ 116,2,0,0,0,0,0,0,0,0,116,4,0,0,0,0,
+ 0,0,0,0,102,2,171,2,0,0,0,0,0,0,115,11,
+ 116,7,0,0,0,0,0,0,0,0,100,1,171,1,0,0,
+ 0,0,0,0,130,1,124,2,114,5,124,2,100,2,25,0,
+ 0,0,115,11,116,9,0,0,0,0,0,0,0,0,100,3,
+ 171,1,0,0,0,0,0,0,130,1,116,11,0,0,0,0,
+ 0,0,0,0,171,0,0,0,0,0,0,0,125,5,124,5,
+ 115,25,9,0,124,3,128,10,2,0,124,4,124,1,124,2,
+ 171,2,0,0,0,0,0,0,1,0,110,11,2,0,124,4,
+ 124,1,124,2,124,3,171,3,0,0,0,0,0,0,1,0,
+ 121,0,121,0,124,0,116,14,0,0,0,0,0,0,0,0,
+ 107,40,0,0,114,2,124,5,83,0,9,0,116,17,0,0,
+ 0,0,0,0,0,0,124,5,100,2,171,2,0,0,0,0,
+ 0,0,92,2,0,0,125,6,125,7,116,19,0,0,0,0,
+ 0,0,0,0,124,7,171,1,0,0,0,0,0,0,114,1,
+ 140,28,116,21,0,0,0,0,0,0,0,0,124,7,171,1,
+ 0,0,0,0,0,0,83,0,35,0,1,0,116,13,0,0,
+ 0,0,0,0,0,0,100,4,171,1,0,0,0,0,0,0,
+ 1,0,89,0,121,0,120,3,89,0,119,1,41,5,78,122,
+ 30,97,114,103,118,32,109,117,115,116,32,98,101,32,97,32,
+ 116,117,112,108,101,32,111,114,32,97,32,108,105,115,116,114,
+ 2,0,0,0,122,34,97,114,103,118,32,102,105,114,115,116,
+ 32,101,108,101,109,101,110,116,32,99,97,110,110,111,116,32,
+ 98,101,32,101,109,112,116,121,233,127,0,0,0,41,11,114,
+ 115,0,0,0,114,136,0,0,0,114,30,0,0,0,114,223,
+ 0,0,0,114,225,0,0,0,114,65,1,0,0,114,40,0,
+ 0,0,114,68,1,0,0,218,7,119,97,105,116,112,105,100,
+ 218,10,87,73,70,83,84,79,80,80,69,68,218,22,119,97,
+ 105,116,115,116,97,116,117,115,95,116,111,95,101,120,105,116,
+ 99,111,100,101,41,8,114,119,0,0,0,114,185,0,0,0,
+ 114,186,0,0,0,114,191,0,0,0,218,4,102,117,110,99,
+ 218,3,112,105,100,218,4,119,112,105,100,218,3,115,116,115,
+ 115,8,0,0,0,32,32,32,32,32,32,32,32,114,25,0,
+ 0,0,218,9,95,115,112,97,119,110,118,101,102,114,79,1,
+ 0,0,85,3,0,0,115,164,0,0,0,128,0,228,15,25,
+ 152,36,164,21,172,4,160,13,212,15,46,220,18,27,208,28,
+ 60,211,18,61,208,12,61,217,15,19,152,52,160,1,154,55,
+ 220,18,28,208,29,65,211,18,66,208,12,66,220,14,18,139,
+ 102,136,3,217,15,18,240,4,6,13,27,216,19,22,144,59,
+ 217,20,24,152,20,152,116,213,20,36,225,20,24,152,20,152,
+ 116,160,83,213,20,41,240,5,0,21,37,240,14,0,16,20,
+ 148,120,210,15,31,216,23,26,144,10,216,18,19,220,28,35,
+ 160,67,168,17,155,79,145,9,144,4,144,99,220,19,29,152,
+ 99,148,63,216,20,28,228,23,45,168,99,211,23,50,208,16,
+ 50,248,240,23,1,13,27,220,16,21,144,99,150,10,250,115,
+ 12,0,0,0,193,1,22,66,11,0,194,11,13,66,26,3,
+ 99,3,0,0,0,0,0,0,0,0,0,0,0,7,0,0,
+ 0,3,0,0,0,243,40,0,0,0,151,0,116,1,0,0,
+ 0,0,0,0,0,0,124,0,124,1,124,2,100,1,116,2,
+ 0,0,0,0,0,0,0,0,171,5,0,0,0,0,0,0,
+ 83,0,41,2,97,21,1,0,0,115,112,97,119,110,118,40,
+ 109,111,100,101,44,32,102,105,108,101,44,32,97,114,103,115,
+ 41,32,45,62,32,105,110,116,101,103,101,114,10,10,69,120,
+ 101,99,117,116,101,32,102,105,108,101,32,119,105,116,104,32,
+ 97,114,103,117,109,101,110,116,115,32,102,114,111,109,32,97,
+ 114,103,115,32,105,110,32,97,32,115,117,98,112,114,111,99,
+ 101,115,115,46,10,73,102,32,109,111,100,101,32,61,61,32,
+ 80,95,78,79,87,65,73,84,32,114,101,116,117,114,110,32,
+ 116,104,101,32,112,105,100,32,111,102,32,116,104,101,32,112,
+ 114,111,99,101,115,115,46,10,73,102,32,109,111,100,101,32,
+ 61,61,32,80,95,87,65,73,84,32,114,101,116,117,114,110,
+ 32,116,104,101,32,112,114,111,99,101,115,115,39,115,32,101,
+ 120,105,116,32,99,111,100,101,32,105,102,32,105,116,32,101,
+ 120,105,116,115,32,110,111,114,109,97,108,108,121,59,10,111,
+ 116,104,101,114,119,105,115,101,32,114,101,116,117,114,110,32,
+ 45,83,73,71,44,32,119,104,101,114,101,32,83,73,71,32,
+ 105,115,32,116,104,101,32,115,105,103,110,97,108,32,116,104,
+ 97,116,32,107,105,108,108,101,100,32,105,116,46,32,78,41,
+ 2,114,79,1,0,0,114,183,0,0,0,169,3,114,119,0,
+ 0,0,114,185,0,0,0,114,186,0,0,0,115,3,0,0,
+ 0,32,32,32,114,25,0,0,0,114,66,1,0,0,114,66,
+ 1,0,0,112,3,0,0,115,23,0,0,0,128,0,244,14,
+ 0,16,25,152,20,152,116,160,84,168,52,180,21,211,15,55,
+ 208,8,55,114,27,0,0,0,99,4,0,0,0,0,0,0,
+ 0,0,0,0,0,7,0,0,0,3,0,0,0,243,40,0,
+ 0,0,151,0,116,1,0,0,0,0,0,0,0,0,124,0,
+ 124,1,124,2,124,3,116,2,0,0,0,0,0,0,0,0,
+ 171,5,0,0,0,0,0,0,83,0,41,1,97,58,1,0,
+ 0,115,112,97,119,110,118,101,40,109,111,100,101,44,32,102,
+ 105,108,101,44,32,97,114,103,115,44,32,101,110,118,41,32,
+ 45,62,32,105,110,116,101,103,101,114,10,10,69,120,101,99,
+ 117,116,101,32,102,105,108,101,32,119,105,116,104,32,97,114,
+ 103,117,109,101,110,116,115,32,102,114,111,109,32,97,114,103,
+ 115,32,105,110,32,97,32,115,117,98,112,114,111,99,101,115,
+ 115,32,119,105,116,104,32,116,104,101,10,115,112,101,99,105,
+ 102,105,101,100,32,101,110,118,105,114,111,110,109,101,110,116,
+ 46,10,73,102,32,109,111,100,101,32,61,61,32,80,95,78,
+ 79,87,65,73,84,32,114,101,116,117,114,110,32,116,104,101,
+ 32,112,105,100,32,111,102,32,116,104,101,32,112,114,111,99,
+ 101,115,115,46,10,73,102,32,109,111,100,101,32,61,61,32,
+ 80,95,87,65,73,84,32,114,101,116,117,114,110,32,116,104,
+ 101,32,112,114,111,99,101,115,115,39,115,32,101,120,105,116,
+ 32,99,111,100,101,32,105,102,32,105,116,32,101,120,105,116,
+ 115,32,110,111,114,109,97,108,108,121,59,10,111,116,104,101,
+ 114,119,105,115,101,32,114,101,116,117,114,110,32,45,83,73,
+ 71,44,32,119,104,101,114,101,32,83,73,71,32,105,115,32,
+ 116,104,101,32,115,105,103,110,97,108,32,116,104,97,116,32,
+ 107,105,108,108,101,100,32,105,116,46,32,41,2,114,79,1,
+ 0,0,114,88,0,0,0,169,4,114,119,0,0,0,114,185,
+ 0,0,0,114,186,0,0,0,114,191,0,0,0,115,4,0,
+ 0,0,32,32,32,32,114,25,0,0,0,218,7,115,112,97,
+ 119,110,118,101,114,84,1,0,0,121,3,0,0,115,23,0,
+ 0,0,128,0,244,16,0,16,25,152,20,152,116,160,84,168,
+ 51,180,6,211,15,55,208,8,55,114,27,0,0,0,99,3,
+ 0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,3,
+ 0,0,0,243,40,0,0,0,151,0,116,1,0,0,0,0,
+ 0,0,0,0,124,0,124,1,124,2,100,1,116,2,0,0,
+ 0,0,0,0,0,0,171,5,0,0,0,0,0,0,83,0,
+ 41,2,97,56,1,0,0,115,112,97,119,110,118,112,40,109,
+ 111,100,101,44,32,102,105,108,101,44,32,97,114,103,115,41,
+ 32,45,62,32,105,110,116,101,103,101,114,10,10,69,120,101,
+ 99,117,116,101,32,102,105,108,101,32,40,119,104,105,99,104,
+ 32,105,115,32,108,111,111,107,101,100,32,102,111,114,32,97,
+ 108,111,110,103,32,36,80,65,84,72,41,32,119,105,116,104,
+ 32,97,114,103,117,109,101,110,116,115,32,102,114,111,109,10,
+ 97,114,103,115,32,105,110,32,97,32,115,117,98,112,114,111,
+ 99,101,115,115,46,10,73,102,32,109,111,100,101,32,61,61,
+ 32,80,95,78,79,87,65,73,84,32,114,101,116,117,114,110,
+ 32,116,104,101,32,112,105,100,32,111,102,32,116,104,101,32,
+ 112,114,111,99,101,115,115,46,10,73,102,32,109,111,100,101,
+ 32,61,61,32,80,95,87,65,73,84,32,114,101,116,117,114,
+ 110,32,116,104,101,32,112,114,111,99,101,115,115,39,115,32,
+ 101,120,105,116,32,99,111,100,101,32,105,102,32,105,116,32,
+ 101,120,105,116,115,32,110,111,114,109,97,108,108,121,59,10,
+ 111,116,104,101,114,119,105,115,101,32,114,101,116,117,114,110,
+ 32,45,83,73,71,44,32,119,104,101,114,101,32,83,73,71,
+ 32,105,115,32,116,104,101,32,115,105,103,110,97,108,32,116,
+ 104,97,116,32,107,105,108,108,101,100,32,105,116,46,32,78,
+ 41,2,114,79,1,0,0,114,194,0,0,0,114,81,1,0,
+ 0,115,3,0,0,0,32,32,32,114,25,0,0,0,218,7,
+ 115,112,97,119,110,118,112,114,86,1,0,0,133,3,0,0,
+ 115,23,0,0,0,128,0,244,16,0,16,25,152,20,152,116,
+ 160,84,168,52,180,22,211,15,56,208,8,56,114,27,0,0,
+ 0,99,4,0,0,0,0,0,0,0,0,0,0,0,7,0,
+ 0,0,3,0,0,0,243,40,0,0,0,151,0,116,1,0,
+ 0,0,0,0,0,0,0,124,0,124,1,124,2,124,3,116,
+ 2,0,0,0,0,0,0,0,0,171,5,0,0,0,0,0,
+ 0,83,0,41,1,97,92,1,0,0,115,112,97,119,110,118,
+ 112,101,40,109,111,100,101,44,32,102,105,108,101,44,32,97,
+ 114,103,115,44,32,101,110,118,41,32,45,62,32,105,110,116,
+ 101,103,101,114,10,10,69,120,101,99,117,116,101,32,102,105,
+ 108,101,32,40,119,104,105,99,104,32,105,115,32,108,111,111,
+ 107,101,100,32,102,111,114,32,97,108,111,110,103,32,36,80,
+ 65,84,72,41,32,119,105,116,104,32,97,114,103,117,109,101,
+ 110,116,115,32,102,114,111,109,10,97,114,103,115,32,105,110,
+ 32,97,32,115,117,98,112,114,111,99,101,115,115,32,119,105,
+ 116,104,32,116,104,101,32,115,117,112,112,108,105,101,100,32,
+ 101,110,118,105,114,111,110,109,101,110,116,46,10,73,102,32,
+ 109,111,100,101,32,61,61,32,80,95,78,79,87,65,73,84,
+ 32,114,101,116,117,114,110,32,116,104,101,32,112,105,100,32,
+ 111,102,32,116,104,101,32,112,114,111,99,101,115,115,46,10,
+ 73,102,32,109,111,100,101,32,61,61,32,80,95,87,65,73,
+ 84,32,114,101,116,117,114,110,32,116,104,101,32,112,114,111,
+ 99,101,115,115,39,115,32,101,120,105,116,32,99,111,100,101,
+ 32,105,102,32,105,116,32,101,120,105,116,115,32,110,111,114,
+ 109,97,108,108,121,59,10,111,116,104,101,114,119,105,115,101,
+ 32,114,101,116,117,114,110,32,45,83,73,71,44,32,119,104,
+ 101,114,101,32,83,73,71,32,105,115,32,116,104,101,32,115,
+ 105,103,110,97,108,32,116,104,97,116,32,107,105,108,108,101,
+ 100,32,105,116,46,32,41,2,114,79,1,0,0,114,197,0,
+ 0,0,114,83,1,0,0,115,4,0,0,0,32,32,32,32,
+ 114,25,0,0,0,218,8,115,112,97,119,110,118,112,101,114,
+ 88,1,0,0,143,3,0,0,115,23,0,0,0,128,0,244,
+ 16,0,16,25,152,20,152,116,160,84,168,51,180,7,211,15,
+ 56,208,8,56,114,27,0,0,0,41,4,114,66,1,0,0,
+ 114,84,1,0,0,114,86,1,0,0,114,88,1,0,0,99,
+ 2,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,
+ 7,0,0,0,243,28,0,0,0,151,0,116,1,0,0,0,
+ 0,0,0,0,0,124,0,124,1,124,2,171,3,0,0,0,
+ 0,0,0,83,0,41,1,97,22,1,0,0,115,112,97,119,
+ 110,108,40,109,111,100,101,44,32,102,105,108,101,44,32,42,
+ 97,114,103,115,41,32,45,62,32,105,110,116,101,103,101,114,
+ 10,10,69,120,101,99,117,116,101,32,102,105,108,101,32,119,
+ 105,116,104,32,97,114,103,117,109,101,110,116,115,32,102,114,
+ 111,109,32,97,114,103,115,32,105,110,32,97,32,115,117,98,
+ 112,114,111,99,101,115,115,46,10,73,102,32,109,111,100,101,
+ 32,61,61,32,80,95,78,79,87,65,73,84,32,114,101,116,
+ 117,114,110,32,116,104,101,32,112,105,100,32,111,102,32,116,
+ 104,101,32,112,114,111,99,101,115,115,46,10,73,102,32,109,
+ 111,100,101,32,61,61,32,80,95,87,65,73,84,32,114,101,
+ 116,117,114,110,32,116,104,101,32,112,114,111,99,101,115,115,
+ 39,115,32,101,120,105,116,32,99,111,100,101,32,105,102,32,
+ 105,116,32,101,120,105,116,115,32,110,111,114,109,97,108,108,
+ 121,59,10,111,116,104,101,114,119,105,115,101,32,114,101,116,
+ 117,114,110,32,45,83,73,71,44,32,119,104,101,114,101,32,
+ 83,73,71,32,105,115,32,116,104,101,32,115,105,103,110,97,
+ 108,32,116,104,97,116,32,107,105,108,108,101,100,32,105,116,
+ 46,32,41,1,114,66,1,0,0,114,81,1,0,0,115,3,
+ 0,0,0,32,32,32,114,25,0,0,0,218,6,115,112,97,
+ 119,110,108,114,90,1,0,0,161,3,0,0,115,19,0,0,
+ 0,128,0,244,14,0,16,22,144,100,152,68,160,36,211,15,
+ 39,208,8,39,114,27,0,0,0,99,2,0,0,0,0,0,
+ 0,0,0,0,0,0,7,0,0,0,7,0,0,0,243,46,
+ 0,0,0,151,0,124,2,100,1,25,0,0,0,125,3,116,
+ 1,0,0,0,0,0,0,0,0,124,0,124,1,124,2,100,
+ 2,100,1,26,0,124,3,171,4,0,0,0,0,0,0,83,
+ 0,41,3,97,58,1,0,0,115,112,97,119,110,108,101,40,
+ 109,111,100,101,44,32,102,105,108,101,44,32,42,97,114,103,
+ 115,44,32,101,110,118,41,32,45,62,32,105,110,116,101,103,
+ 101,114,10,10,69,120,101,99,117,116,101,32,102,105,108,101,
+ 32,119,105,116,104,32,97,114,103,117,109,101,110,116,115,32,
+ 102,114,111,109,32,97,114,103,115,32,105,110,32,97,32,115,
+ 117,98,112,114,111,99,101,115,115,32,119,105,116,104,32,116,
+ 104,101,10,115,117,112,112,108,105,101,100,32,101,110,118,105,
+ 114,111,110,109,101,110,116,46,10,73,102,32,109,111,100,101,
+ 32,61,61,32,80,95,78,79,87,65,73,84,32,114,101,116,
+ 117,114,110,32,116,104,101,32,112,105,100,32,111,102,32,116,
+ 104,101,32,112,114,111,99,101,115,115,46,10,73,102,32,109,
+ 111,100,101,32,61,61,32,80,95,87,65,73,84,32,114,101,
+ 116,117,114,110,32,116,104,101,32,112,114,111,99,101,115,115,
+ 39,115,32,101,120,105,116,32,99,111,100,101,32,105,102,32,
+ 105,116,32,101,120,105,116,115,32,110,111,114,109,97,108,108,
+ 121,59,10,111,116,104,101,114,119,105,115,101,32,114,101,116,
+ 117,114,110,32,45,83,73,71,44,32,119,104,101,114,101,32,
+ 83,73,71,32,105,115,32,116,104,101,32,115,105,103,110,97,
+ 108,32,116,104,97,116,32,107,105,108,108,101,100,32,105,116,
+ 46,32,114,189,0,0,0,78,41,1,114,84,1,0,0,114,
+ 83,1,0,0,115,4,0,0,0,32,32,32,32,114,25,0,
+ 0,0,218,7,115,112,97,119,110,108,101,114,92,1,0,0,
+ 170,3,0,0,115,36,0,0,0,128,0,240,16,0,15,19,
+ 144,50,137,104,136,3,220,15,22,144,116,152,84,160,52,168,
+ 3,168,18,160,57,168,99,211,15,50,208,8,50,114,27,0,
+ 0,0,114,90,1,0,0,114,92,1,0,0,114,86,1,0,
+ 0,99,2,0,0,0,0,0,0,0,0,0,0,0,5,0,
+ 0,0,7,0,0,0,243,28,0,0,0,151,0,116,1,0,
+ 0,0,0,0,0,0,0,124,0,124,1,124,2,171,3,0,
+ 0,0,0,0,0,83,0,41,1,97,87,1,0,0,115,112,
+ 97,119,110,108,112,40,109,111,100,101,44,32,102,105,108,101,
+ 44,32,42,97,114,103,115,41,32,45,62,32,105,110,116,101,
+ 103,101,114,10,10,69,120,101,99,117,116,101,32,102,105,108,
+ 101,32,40,119,104,105,99,104,32,105,115,32,108,111,111,107,
+ 101,100,32,102,111,114,32,97,108,111,110,103,32,36,80,65,
+ 84,72,41,32,119,105,116,104,32,97,114,103,117,109,101,110,
+ 116,115,32,102,114,111,109,10,97,114,103,115,32,105,110,32,
+ 97,32,115,117,98,112,114,111,99,101,115,115,32,119,105,116,
+ 104,32,116,104,101,32,115,117,112,112,108,105,101,100,32,101,
+ 110,118,105,114,111,110,109,101,110,116,46,10,73,102,32,109,
+ 111,100,101,32,61,61,32,80,95,78,79,87,65,73,84,32,
+ 114,101,116,117,114,110,32,116,104,101,32,112,105,100,32,111,
+ 102,32,116,104,101,32,112,114,111,99,101,115,115,46,10,73,
+ 102,32,109,111,100,101,32,61,61,32,80,95,87,65,73,84,
+ 32,114,101,116,117,114,110,32,116,104,101,32,112,114,111,99,
+ 101,115,115,39,115,32,101,120,105,116,32,99,111,100,101,32,
+ 105,102,32,105,116,32,101,120,105,116,115,32,110,111,114,109,
+ 97,108,108,121,59,10,111,116,104,101,114,119,105,115,101,32,
+ 114,101,116,117,114,110,32,45,83,73,71,44,32,119,104,101,
+ 114,101,32,83,73,71,32,105,115,32,116,104,101,32,115,105,
+ 103,110,97,108,32,116,104,97,116,32,107,105,108,108,101,100,
+ 32,105,116,46,32,41,1,114,86,1,0,0,114,81,1,0,
+ 0,115,3,0,0,0,32,32,32,114,25,0,0,0,218,7,
+ 115,112,97,119,110,108,112,114,94,1,0,0,188,3,0,0,
+ 115,19,0,0,0,128,0,244,16,0,16,23,144,116,152,84,
+ 160,52,211,15,40,208,8,40,114,27,0,0,0,99,2,0,
+ 0,0,0,0,0,0,0,0,0,0,7,0,0,0,7,0,
+ 0,0,243,46,0,0,0,151,0,124,2,100,1,25,0,0,
+ 0,125,3,116,1,0,0,0,0,0,0,0,0,124,0,124,
+ 1,124,2,100,2,100,1,26,0,124,3,171,4,0,0,0,
+ 0,0,0,83,0,41,3,97,93,1,0,0,115,112,97,119,
+ 110,108,112,101,40,109,111,100,101,44,32,102,105,108,101,44,
+ 32,42,97,114,103,115,44,32,101,110,118,41,32,45,62,32,
+ 105,110,116,101,103,101,114,10,10,69,120,101,99,117,116,101,
+ 32,102,105,108,101,32,40,119,104,105,99,104,32,105,115,32,
+ 108,111,111,107,101,100,32,102,111,114,32,97,108,111,110,103,
+ 32,36,80,65,84,72,41,32,119,105,116,104,32,97,114,103,
+ 117,109,101,110,116,115,32,102,114,111,109,10,97,114,103,115,
+ 32,105,110,32,97,32,115,117,98,112,114,111,99,101,115,115,
+ 32,119,105,116,104,32,116,104,101,32,115,117,112,112,108,105,
+ 101,100,32,101,110,118,105,114,111,110,109,101,110,116,46,10,
+ 73,102,32,109,111,100,101,32,61,61,32,80,95,78,79,87,
+ 65,73,84,32,114,101,116,117,114,110,32,116,104,101,32,112,
+ 105,100,32,111,102,32,116,104,101,32,112,114,111,99,101,115,
+ 115,46,10,73,102,32,109,111,100,101,32,61,61,32,80,95,
+ 87,65,73,84,32,114,101,116,117,114,110,32,116,104,101,32,
+ 112,114,111,99,101,115,115,39,115,32,101,120,105,116,32,99,
+ 111,100,101,32,105,102,32,105,116,32,101,120,105,116,115,32,
+ 110,111,114,109,97,108,108,121,59,10,111,116,104,101,114,119,
+ 105,115,101,32,114,101,116,117,114,110,32,45,83,73,71,44,
+ 32,119,104,101,114,101,32,83,73,71,32,105,115,32,116,104,
+ 101,32,115,105,103,110,97,108,32,116,104,97,116,32,107,105,
+ 108,108,101,100,32,105,116,46,32,114,189,0,0,0,78,41,
+ 1,114,88,1,0,0,114,83,1,0,0,115,4,0,0,0,
+ 32,32,32,32,114,25,0,0,0,218,8,115,112,97,119,110,
+ 108,112,101,114,96,1,0,0,198,3,0,0,115,36,0,0,
+ 0,128,0,240,16,0,15,19,144,50,137,104,136,3,220,15,
+ 23,152,4,152,100,160,68,168,19,168,34,160,73,168,115,211,
+ 15,51,208,8,51,114,27,0,0,0,114,94,1,0,0,114,
+ 96,1,0,0,218,7,118,120,119,111,114,107,115,99,3,0,
+ 0,0,0,0,0,0,0,0,0,0,7,0,0,0,3,0,
+ 0,0,243,130,1,0,0,151,0,116,1,0,0,0,0,0,
+ 0,0,0,124,0,116,2,0,0,0,0,0,0,0,0,171,
+ 2,0,0,0,0,0,0,115,23,116,5,0,0,0,0,0,
+ 0,0,0,100,1,116,7,0,0,0,0,0,0,0,0,124,
+ 0,171,1,0,0,0,0,0,0,122,6,0,0,171,1,0,
+ 0,0,0,0,0,130,1,124,1,100,2,118,1,114,14,116,
+ 9,0,0,0,0,0,0,0,0,100,3,124,1,122,6,0,
+ 0,171,1,0,0,0,0,0,0,130,1,124,2,100,4,107,
+ 40,0,0,115,2,124,2,128,11,116,9,0,0,0,0,0,
+ 0,0,0,100,5,171,1,0,0,0,0,0,0,130,1,100,
+ 4,100,0,108,5,125,3,124,1,100,6,107,40,0,0,114,
+ 54,124,3,106,13,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,124,0,100,7,100,7,124,3,106,
+ 14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,124,2,172,8,171,5,0,0,0,0,0,0,125,
+ 4,116,17,0,0,0,0,0,0,0,0,124,4,106,18,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,124,4,171,2,0,0,0,0,0,0,83,0,124,3,106,
+ 13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,124,0,100,7,100,7,124,3,106,14,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,
+ 2,172,9,171,5,0,0,0,0,0,0,125,4,116,17,0,
+ 0,0,0,0,0,0,0,124,4,106,20,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,124,4,171,
+ 2,0,0,0,0,0,0,83,0,41,10,78,122,38,105,110,
+ 118,97,108,105,100,32,99,109,100,32,116,121,112,101,32,40,
+ 37,115,44,32,101,120,112,101,99,116,101,100,32,115,116,114,
+ 105,110,103,41,41,2,218,1,114,218,1,119,122,15,105,110,
+ 118,97,108,105,100,32,109,111,100,101,32,37,114,114,2,0,
+ 0,0,122,43,112,111,112,101,110,40,41,32,100,111,101,115,
+ 32,110,111,116,32,115,117,112,112,111,114,116,32,117,110,98,
+ 117,102,102,101,114,101,100,32,115,116,114,101,97,109,115,114,
+ 99,1,0,0,84,41,4,218,5,115,104,101,108,108,218,4,
+ 116,101,120,116,218,6,115,116,100,111,117,116,218,7,98,117,
+ 102,115,105,122,101,41,4,114,101,1,0,0,114,102,1,0,
+ 0,218,5,115,116,100,105,110,114,104,1,0,0,41,11,114,
+ 115,0,0,0,114,47,0,0,0,114,223,0,0,0,114,34,
+ 1,0,0,114,225,0,0,0,218,10,115,117,98,112,114,111,
+ 99,101,115,115,218,5,80,111,112,101,110,218,4,80,73,80,
+ 69,218,11,95,119,114,97,112,95,99,108,111,115,101,114,103,
+ 1,0,0,114,105,1,0,0,41,5,218,3,99,109,100,114,
+ 119,0,0,0,218,9,98,117,102,102,101,114,105,110,103,114,
+ 106,1,0,0,218,4,112,114,111,99,115,5,0,0,0,32,
+ 32,32,32,32,114,25,0,0,0,218,5,112,111,112,101,110,
+ 114,113,1,0,0,216,3,0,0,115,206,0,0,0,128,0,
+ 220,15,25,152,35,156,115,212,15,35,220,18,27,208,28,68,
+ 196,116,200,67,195,121,209,28,80,211,18,81,208,12,81,216,
+ 11,15,144,122,209,11,33,220,18,28,208,29,46,176,20,209,
+ 29,53,211,18,54,208,12,54,216,11,20,152,1,138,62,152,
+ 89,208,29,46,220,18,28,208,29,74,211,18,75,208,12,75,
+ 219,8,25,216,11,15,144,51,138,59,216,19,29,215,19,35,
+ 209,19,35,160,67,216,42,46,176,84,216,43,53,175,63,169,
+ 63,216,44,53,240,7,0,20,36,243,0,3,20,55,136,68,
+ 244,8,0,20,31,152,116,159,123,153,123,168,68,211,19,49,
+ 208,12,49,224,19,29,215,19,35,209,19,35,160,67,216,42,
+ 46,176,84,216,42,52,175,47,169,47,216,44,53,240,7,0,
+ 20,36,243,0,3,20,55,136,68,244,8,0,20,31,152,116,
+ 159,122,153,122,168,52,211,19,48,208,12,48,114,27,0,0,
+ 0,99,0,0,0,0,0,0,0,0,0,0,0,0,1,0,
+ 0,0,0,0,0,0,243,48,0,0,0,151,0,101,0,90,
+ 1,100,0,90,2,100,1,132,0,90,3,100,2,132,0,90,
+ 4,100,3,132,0,90,5,100,4,132,0,90,6,100,5,132,
+ 0,90,7,100,6,132,0,90,8,121,7,41,8,114,109,1,
+ 0,0,99,3,0,0,0,0,0,0,0,0,0,0,0,2,
+ 0,0,0,3,0,0,0,243,32,0,0,0,151,0,124,1,
+ 124,0,95,0,0,0,0,0,0,0,0,0,124,2,124,0,
+ 95,1,0,0,0,0,0,0,0,0,121,0,114,23,0,0,
+ 0,41,2,218,7,95,115,116,114,101,97,109,218,5,95,112,
+ 114,111,99,41,3,114,238,0,0,0,218,6,115,116,114,101,
+ 97,109,114,112,1,0,0,115,3,0,0,0,32,32,32,114,
+ 25,0,0,0,114,240,0,0,0,122,20,95,119,114,97,112,
+ 95,99,108,111,115,101,46,95,95,105,110,105,116,95,95,239,
+ 3,0,0,115,16,0,0,0,128,0,216,27,33,136,68,140,
+ 76,216,25,29,136,68,141,74,114,27,0,0,0,99,1,0,
+ 0,0,0,0,0,0,0,0,0,0,2,0,0,0,3,0,
+ 0,0,243,150,0,0,0,151,0,124,0,106,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,
+ 3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,171,0,0,0,0,0,0,0,1,0,124,0,106,
+ 4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,106,7,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,171,0,0,0,0,0,0,0,125,
+ 1,124,1,100,1,107,40,0,0,114,1,121,0,116,8,0,
+ 0,0,0,0,0,0,0,100,2,107,40,0,0,114,2,124,
+ 1,83,0,124,1,100,3,122,3,0,0,83,0,41,4,78,
+ 114,2,0,0,0,114,42,0,0,0,233,8,0,0,0,41,
+ 5,114,116,1,0,0,114,170,0,0,0,114,117,1,0,0,
+ 218,4,119,97,105,116,114,11,0,0,0,41,2,114,238,0,
+ 0,0,218,10,114,101,116,117,114,110,99,111,100,101,115,2,
+ 0,0,0,32,32,114,25,0,0,0,114,170,0,0,0,122,
+ 17,95,119,114,97,112,95,99,108,111,115,101,46,99,108,111,
+ 115,101,242,3,0,0,115,67,0,0,0,128,0,216,12,16,
+ 143,76,137,76,215,12,30,209,12,30,212,12,32,216,25,29,
+ 159,26,153,26,159,31,153,31,211,25,42,136,74,216,15,25,
+ 152,81,138,127,216,23,27,220,15,19,144,116,138,124,216,23,
+ 33,208,16,33,224,23,33,160,81,145,127,208,16,38,114,27,
+ 0,0,0,99,1,0,0,0,0,0,0,0,0,0,0,0,
+ 1,0,0,0,3,0,0,0,243,6,0,0,0,151,0,124,
+ 0,83,0,114,23,0,0,0,114,15,1,0,0,114,2,1,
+ 0,0,115,1,0,0,0,32,114,25,0,0,0,218,9,95,
+ 95,101,110,116,101,114,95,95,122,21,95,119,114,97,112,95,
+ 99,108,111,115,101,46,95,95,101,110,116,101,114,95,95,251,
+ 3,0,0,243,7,0,0,0,128,0,216,19,23,136,75,114,
+ 27,0,0,0,99,1,0,0,0,0,0,0,0,0,0,0,
+ 0,2,0,0,0,7,0,0,0,243,36,0,0,0,151,0,
+ 124,0,106,1,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,171,0,0,0,0,0,0,0,1,0,
+ 121,0,114,23,0,0,0,169,1,114,170,0,0,0,169,2,
+ 114,238,0,0,0,114,186,0,0,0,115,2,0,0,0,32,
+ 32,114,25,0,0,0,218,8,95,95,101,120,105,116,95,95,
+ 122,20,95,119,114,97,112,95,99,108,111,115,101,46,95,95,
+ 101,120,105,116,95,95,253,3,0,0,243,11,0,0,0,128,
+ 0,216,12,16,143,74,137,74,141,76,114,27,0,0,0,99,
+ 2,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,
+ 3,0,0,0,243,46,0,0,0,151,0,116,1,0,0,0,
+ 0,0,0,0,0,124,0,106,2,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,124,1,171,2,0,
+ 0,0,0,0,0,83,0,114,23,0,0,0,41,2,218,7,
+ 103,101,116,97,116,116,114,114,116,1,0,0,41,2,114,238,
+ 0,0,0,114,11,0,0,0,115,2,0,0,0,32,32,114,
+ 25,0,0,0,218,11,95,95,103,101,116,97,116,116,114,95,
+ 95,122,23,95,119,114,97,112,95,99,108,111,115,101,46,95,
+ 95,103,101,116,97,116,116,114,95,95,255,3,0,0,115,19,
+ 0,0,0,128,0,220,19,26,152,52,159,60,153,60,168,20,
+ 211,19,46,208,12,46,114,27,0,0,0,99,1,0,0,0,
+ 0,0,0,0,0,0,0,0,3,0,0,0,3,0,0,0,
+ 243,44,0,0,0,151,0,116,1,0,0,0,0,0,0,0,
+ 0,124,0,106,2,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,171,1,0,0,0,0,0,0,83,
+ 0,114,23,0,0,0,41,2,218,4,105,116,101,114,114,116,
+ 1,0,0,114,2,1,0,0,115,1,0,0,0,32,114,25,
+ 0,0,0,114,255,0,0,0,122,20,95,119,114,97,112,95,
+ 99,108,111,115,101,46,95,95,105,116,101,114,95,95,1,4,
+ 0,0,115,17,0,0,0,128,0,220,19,23,152,4,159,12,
+ 153,12,211,19,37,208,12,37,114,27,0,0,0,78,41,9,
+ 114,28,1,0,0,114,29,1,0,0,114,30,1,0,0,114,
+ 240,0,0,0,114,170,0,0,0,114,124,1,0,0,114,129,
+ 1,0,0,114,133,1,0,0,114,255,0,0,0,114,15,1,
+ 0,0,114,27,0,0,0,114,25,0,0,0,114,109,1,0,
+ 0,114,109,1,0,0,238,3,0,0,115,32,0,0,0,132,
+ 0,242,2,2,9,30,242,6,8,9,39,242,18,1,9,24,
+ 242,4,1,9,25,242,4,1,9,47,243,4,1,9,38,114,
+ 27,0,0,0,114,109,1,0,0,114,113,1,0,0,99,4,
+ 0,0,0,0,0,0,0,0,0,0,0,6,0,0,0,15,
+ 0,0,0,243,180,0,0,0,151,0,116,1,0,0,0,0,
+ 0,0,0,0,124,0,116,2,0,0,0,0,0,0,0,0,
+ 171,2,0,0,0,0,0,0,115,23,116,5,0,0,0,0,
+ 0,0,0,0,100,1,116,7,0,0,0,0,0,0,0,0,
+ 124,0,171,1,0,0,0,0,0,0,122,6,0,0,171,1,
+ 0,0,0,0,0,0,130,1,100,2,100,0,108,4,125,6,
+ 100,3,124,1,118,1,114,17,124,6,106,11,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,3,
+ 171,1,0,0,0,0,0,0,125,3,2,0,124,6,106,12,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,124,0,124,1,124,2,124,3,103,4,124,4,162,1,
+ 173,6,105,0,124,5,164,1,142,1,83,0,41,4,78,122,
+ 38,105,110,118,97,108,105,100,32,102,100,32,116,121,112,101,
+ 32,40,37,115,44,32,101,120,112,101,99,116,101,100,32,105,
+ 110,116,101,103,101,114,41,114,2,0,0,0,218,1,98,41,
+ 7,114,115,0,0,0,218,3,105,110,116,114,223,0,0,0,
+ 114,34,1,0,0,218,2,105,111,218,13,116,101,120,116,95,
+ 101,110,99,111,100,105,110,103,114,69,0,0,0,41,7,218,
+ 2,102,100,114,119,0,0,0,114,111,1,0,0,114,43,1,
+ 0,0,114,186,0,0,0,218,6,107,119,97,114,103,115,114,
+ 139,1,0,0,115,7,0,0,0,32,32,32,32,32,32,32,
+ 114,25,0,0,0,114,20,0,0,0,114,20,0,0,0,7,
+ 4,0,0,115,92,0,0,0,128,0,220,11,21,144,98,156,
+ 35,212,11,30,220,14,23,208,24,64,196,52,200,2,195,56,
+ 209,24,75,211,14,76,208,8,76,219,4,13,216,7,10,144,
+ 36,129,127,216,19,21,215,19,35,209,19,35,160,72,211,19,
+ 45,136,8,216,11,18,136,50,143,55,137,55,144,50,144,116,
+ 152,89,168,8,208,11,66,176,52,210,11,66,184,54,209,11,
+ 66,208,4,66,114,27,0,0,0,99,1,0,0,0,0,0,
+ 0,0,0,0,0,0,8,0,0,0,3,0,0,0,243,112,
+ 1,0,0,151,0,116,1,0,0,0,0,0,0,0,0,124,
+ 0,116,2,0,0,0,0,0,0,0,0,116,4,0,0,0,
+ 0,0,0,0,0,102,2,171,2,0,0,0,0,0,0,114,
+ 2,124,0,83,0,116,7,0,0,0,0,0,0,0,0,124,
+ 0,171,1,0,0,0,0,0,0,125,1,9,0,124,1,106,
+ 9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,124,0,171,1,0,0,0,0,0,0,125,2,116,
+ 1,0,0,0,0,0,0,0,0,124,2,116,2,0,0,0,
+ 0,0,0,0,0,116,4,0,0,0,0,0,0,0,0,102,
+ 2,171,2,0,0,0,0,0,0,114,2,124,2,83,0,116,
+ 15,0,0,0,0,0,0,0,0,100,3,106,19,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,
+ 1,106,16,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,116,7,0,0,0,0,0,0,0,0,124,
+ 2,171,1,0,0,0,0,0,0,106,16,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,171,2,0,
+ 0,0,0,0,0,171,1,0,0,0,0,0,0,130,1,35,
+ 0,116,10,0,0,0,0,0,0,0,0,36,0,114,38,1,
+ 0,116,13,0,0,0,0,0,0,0,0,124,1,100,1,171,
+ 2,0,0,0,0,0,0,114,1,130,0,116,15,0,0,0,
+ 0,0,0,0,0,100,2,124,1,106,16,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,122,0,0,
+ 0,171,1,0,0,0,0,0,0,130,1,119,0,120,3,89,
+ 0,119,1,41,4,97,97,1,0,0,82,101,116,117,114,110,
+ 32,116,104,101,32,112,97,116,104,32,114,101,112,114,101,115,
+ 101,110,116,97,116,105,111,110,32,111,102,32,97,32,112,97,
+ 116,104,45,108,105,107,101,32,111,98,106,101,99,116,46,10,
+ 10,32,32,32,32,73,102,32,115,116,114,32,111,114,32,98,
+ 121,116,101,115,32,105,115,32,112,97,115,115,101,100,32,105,
+ 110,44,32,105,116,32,105,115,32,114,101,116,117,114,110,101,
+ 100,32,117,110,99,104,97,110,103,101,100,46,32,79,116,104,
+ 101,114,119,105,115,101,32,116,104,101,10,32,32,32,32,111,
+ 115,46,80,97,116,104,76,105,107,101,32,105,110,116,101,114,
+ 102,97,99,101,32,105,115,32,117,115,101,100,32,116,111,32,
+ 103,101,116,32,116,104,101,32,112,97,116,104,32,114,101,112,
+ 114,101,115,101,110,116,97,116,105,111,110,46,32,73,102,32,
+ 116,104,101,10,32,32,32,32,112,97,116,104,32,114,101,112,
+ 114,101,115,101,110,116,97,116,105,111,110,32,105,115,32,110,
+ 111,116,32,115,116,114,32,111,114,32,98,121,116,101,115,44,
+ 32,84,121,112,101,69,114,114,111,114,32,105,115,32,114,97,
+ 105,115,101,100,46,32,73,102,32,116,104,101,10,32,32,32,
+ 32,112,114,111,118,105,100,101,100,32,112,97,116,104,32,105,
+ 115,32,110,111,116,32,115,116,114,44,32,98,121,116,101,115,
+ 44,32,111,114,32,111,115,46,80,97,116,104,76,105,107,101,
+ 44,32,84,121,112,101,69,114,114,111,114,32,105,115,32,114,
+ 97,105,115,101,100,46,10,32,32,32,32,218,10,95,95,102,
+ 115,112,97,116,104,95,95,122,47,101,120,112,101,99,116,101,
+ 100,32,115,116,114,44,32,98,121,116,101,115,32,111,114,32,
+ 111,115,46,80,97,116,104,76,105,107,101,32,111,98,106,101,
+ 99,116,44,32,110,111,116,32,122,55,101,120,112,101,99,116,
+ 101,100,32,123,125,46,95,95,102,115,112,97,116,104,95,95,
+ 40,41,32,116,111,32,114,101,116,117,114,110,32,115,116,114,
+ 32,111,114,32,98,121,116,101,115,44,32,110,111,116,32,123,
+ 125,41,10,114,115,0,0,0,114,47,0,0,0,114,116,0,
+ 0,0,114,34,1,0,0,114,144,1,0,0,114,32,0,0,
+ 0,218,7,104,97,115,97,116,116,114,114,223,0,0,0,114,
+ 28,1,0,0,218,6,102,111,114,109,97,116,41,3,114,12,
+ 0,0,0,218,9,112,97,116,104,95,116,121,112,101,218,9,
+ 112,97,116,104,95,114,101,112,114,115,3,0,0,0,32,32,
+ 32,114,25,0,0,0,218,7,95,102,115,112,97,116,104,114,
+ 149,1,0,0,18,4,0,0,115,191,0,0,0,128,0,244,
+ 16,0,8,18,144,36,156,19,156,101,152,12,212,7,37,216,
+ 15,19,136,11,244,8,0,17,21,144,84,147,10,128,73,240,
+ 2,7,5,57,216,20,29,215,20,40,209,20,40,168,20,211,
+ 20,46,136,9,244,14,0,8,18,144,41,156,99,164,53,152,
+ 92,212,7,42,216,15,24,208,8,24,228,14,23,240,0,1,
+ 25,33,223,33,39,161,22,168,9,215,40,58,209,40,58,220,
+ 40,44,168,89,171,15,215,40,64,209,40,64,243,3,1,34,
+ 66,1,243,3,2,15,67,1,240,0,2,9,67,1,248,244,
+ 19,0,12,26,242,0,5,5,57,220,11,18,144,57,152,108,
+ 212,11,43,216,12,17,228,18,27,240,0,1,29,35,216,37,
+ 46,215,37,55,209,37,55,241,3,1,29,56,243,0,1,19,
+ 57,240,0,1,13,57,240,9,5,5,57,250,115,11,0,0,
+ 0,165,17,66,6,0,194,6,47,66,53,3,114,132,0,0,
+ 0,99,0,0,0,0,0,0,0,0,0,0,0,0,3,0,
+ 0,0,0,0,0,0,243,84,0,0,0,151,0,101,0,90,
+ 1,100,0,90,2,100,1,90,3,101,4,106,10,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,
+ 2,132,0,171,0,0,0,0,0,0,0,90,6,101,7,100,
+ 3,132,0,171,0,0,0,0,0,0,0,90,8,2,0,101,
+ 7,101,9,171,1,0,0,0,0,0,0,90,10,121,4,41,
+ 5,218,8,80,97,116,104,76,105,107,101,122,67,65,98,115,
+ 116,114,97,99,116,32,98,97,115,101,32,99,108,97,115,115,
+ 32,102,111,114,32,105,109,112,108,101,109,101,110,116,105,110,
+ 103,32,116,104,101,32,102,105,108,101,32,115,121,115,116,101,
+ 109,32,112,97,116,104,32,112,114,111,116,111,99,111,108,46,
+ 99,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,
+ 0,3,0,0,0,243,14,0,0,0,151,0,116,0,0,0,
+ 0,0,0,0,0,0,130,1,41,1,122,57,82,101,116,117,
+ 114,110,32,116,104,101,32,102,105,108,101,32,115,121,115,116,
+ 101,109,32,112,97,116,104,32,114,101,112,114,101,115,101,110,
+ 116,97,116,105,111,110,32,111,102,32,116,104,101,32,111,98,
+ 106,101,99,116,46,41,1,218,19,78,111,116,73,109,112,108,
+ 101,109,101,110,116,101,100,69,114,114,111,114,114,2,1,0,
+ 0,115,1,0,0,0,32,114,25,0,0,0,114,144,1,0,
+ 0,122,19,80,97,116,104,76,105,107,101,46,95,95,102,115,
+ 112,97,116,104,95,95,58,4,0,0,115,10,0,0,0,128,
+ 0,244,6,0,15,34,208,8,33,114,27,0,0,0,99,2,
+ 0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,3,
+ 0,0,0,243,54,0,0,0,151,0,124,0,116,0,0,0,
+ 0,0,0,0,0,0,117,0,114,12,116,3,0,0,0,0,
+ 0,0,0,0,124,1,100,1,171,2,0,0,0,0,0,0,
+ 83,0,116,4,0,0,0,0,0,0,0,0,83,0,41,2,
+ 78,114,144,1,0,0,41,3,114,151,1,0,0,114,3,0,
+ 0,0,114,23,1,0,0,41,2,218,3,99,108,115,218,8,
+ 115,117,98,99,108,97,115,115,115,2,0,0,0,32,32,114,
+ 25,0,0,0,218,16,95,95,115,117,98,99,108,97,115,115,
+ 104,111,111,107,95,95,122,25,80,97,116,104,76,105,107,101,
+ 46,95,95,115,117,98,99,108,97,115,115,104,111,111,107,95,
+ 95,63,4,0,0,115,28,0,0,0,128,0,224,11,14,148,
+ 40,137,63,220,19,33,160,40,168,76,211,19,57,208,12,57,
+ 220,15,29,208,8,29,114,27,0,0,0,78,41,11,114,28,
+ 1,0,0,114,29,1,0,0,114,30,1,0,0,218,7,95,
+ 95,100,111,99,95,95,218,3,97,98,99,218,14,97,98,115,
+ 116,114,97,99,116,109,101,116,104,111,100,114,144,1,0,0,
+ 218,11,99,108,97,115,115,109,101,116,104,111,100,114,157,1,
+ 0,0,218,12,71,101,110,101,114,105,99,65,108,105,97,115,
+ 218,17,95,95,99,108,97,115,115,95,103,101,116,105,116,101,
+ 109,95,95,114,15,1,0,0,114,27,0,0,0,114,25,0,
+ 0,0,114,151,1,0,0,114,151,1,0,0,54,4,0,0,
+ 115,62,0,0,0,132,0,225,4,77,224,5,8,215,5,23,
+ 209,5,23,241,2,2,5,34,243,3,0,6,24,240,2,2,
+ 5,34,240,8,0,6,17,241,2,3,5,30,243,3,0,6,
+ 17,240,2,3,5,30,241,10,0,25,36,160,76,211,24,49,
+ 209,4,21,114,27,0,0,0,114,151,1,0,0,99,0,0,
+ 0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,
+ 0,0,243,42,0,0,0,151,0,101,0,90,1,100,0,90,
+ 2,100,1,132,0,90,3,100,2,132,0,90,4,100,3,132,
+ 0,90,5,100,4,132,0,90,6,100,5,132,0,90,7,121,
+ 6,41,7,218,18,95,65,100,100,101,100,68,108,108,68,105,
+ 114,101,99,116,111,114,121,99,4,0,0,0,0,0,0,0,
+ 0,0,0,0,2,0,0,0,3,0,0,0,243,46,0,0,
+ 0,151,0,124,1,124,0,95,0,0,0,0,0,0,0,0,
+ 0,124,2,124,0,95,1,0,0,0,0,0,0,0,0,124,
+ 3,124,0,95,2,0,0,0,0,0,0,0,0,121,0,114,
+ 23,0,0,0,41,3,114,12,0,0,0,218,7,95,99,111,
+ 111,107,105,101,218,21,95,114,101,109,111,118,101,95,100,108,
+ 108,95,100,105,114,101,99,116,111,114,121,41,4,114,238,0,
+ 0,0,114,12,0,0,0,218,6,99,111,111,107,105,101,218,
+ 20,114,101,109,111,118,101,95,100,108,108,95,100,105,114,101,
+ 99,116,111,114,121,115,4,0,0,0,32,32,32,32,114,25,
+ 0,0,0,114,240,0,0,0,122,27,95,65,100,100,101,100,
+ 68,108,108,68,105,114,101,99,116,111,114,121,46,95,95,105,
+ 110,105,116,95,95,74,4,0,0,115,24,0,0,0,128,0,
+ 216,24,28,136,68,140,73,216,27,33,136,68,140,76,216,41,
+ 61,136,68,213,12,38,114,27,0,0,0,99,1,0,0,0,
+ 0,0,0,0,0,0,0,0,3,0,0,0,3,0,0,0,
+ 243,72,0,0,0,151,0,124,0,106,1,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,124,0,106,
+ 2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,171,1,0,0,0,0,0,0,1,0,100,0,124,
+ 0,95,2,0,0,0,0,0,0,0,0,121,0,114,23,0,
+ 0,0,41,3,114,168,1,0,0,114,167,1,0,0,114,12,
+ 0,0,0,114,2,1,0,0,115,1,0,0,0,32,114,25,
+ 0,0,0,114,170,0,0,0,122,24,95,65,100,100,101,100,
+ 68,108,108,68,105,114,101,99,116,111,114,121,46,99,108,111,
+ 115,101,78,4,0,0,115,27,0,0,0,128,0,216,12,16,
+ 215,12,38,209,12,38,160,116,167,124,161,124,212,12,52,216,
+ 24,28,136,68,141,73,114,27,0,0,0,99,1,0,0,0,
+ 0,0,0,0,0,0,0,0,1,0,0,0,3,0,0,0,
+ 243,6,0,0,0,151,0,124,0,83,0,114,23,0,0,0,
+ 114,15,1,0,0,114,2,1,0,0,115,1,0,0,0,32,
+ 114,25,0,0,0,114,124,1,0,0,122,28,95,65,100,100,
+ 101,100,68,108,108,68,105,114,101,99,116,111,114,121,46,95,
+ 95,101,110,116,101,114,95,95,81,4,0,0,114,125,1,0,
+ 0,114,27,0,0,0,99,1,0,0,0,0,0,0,0,0,
+ 0,0,0,2,0,0,0,7,0,0,0,243,36,0,0,0,
+ 151,0,124,0,106,1,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,171,0,0,0,0,0,0,0,
+ 1,0,121,0,114,23,0,0,0,114,127,1,0,0,114,128,
+ 1,0,0,115,2,0,0,0,32,32,114,25,0,0,0,114,
+ 129,1,0,0,122,27,95,65,100,100,101,100,68,108,108,68,
+ 105,114,101,99,116,111,114,121,46,95,95,101,120,105,116,95,
+ 95,83,4,0,0,114,130,1,0,0,114,27,0,0,0,99,
+ 1,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,
+ 3,0,0,0,243,82,0,0,0,151,0,124,0,106,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,114,27,100,1,106,3,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,124,0,106,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,
+ 1,0,0,0,0,0,0,83,0,121,2,41,3,78,122,25,
+ 60,65,100,100,101,100,68,108,108,68,105,114,101,99,116,111,
+ 114,121,40,123,33,114,125,41,62,122,21,60,65,100,100,101,
+ 100,68,108,108,68,105,114,101,99,116,111,114,121,40,41,62,
+ 41,2,114,12,0,0,0,114,146,1,0,0,114,2,1,0,
+ 0,115,1,0,0,0,32,114,25,0,0,0,114,10,1,0,
+ 0,122,27,95,65,100,100,101,100,68,108,108,68,105,114,101,
+ 99,116,111,114,121,46,95,95,114,101,112,114,95,95,85,4,
+ 0,0,115,33,0,0,0,128,0,216,15,19,143,121,138,121,
+ 216,23,50,215,23,57,209,23,57,184,36,191,41,185,41,211,
+ 23,68,208,16,68,216,19,42,114,27,0,0,0,78,41,8,
+ 114,28,1,0,0,114,29,1,0,0,114,30,1,0,0,114,
+ 240,0,0,0,114,170,0,0,0,114,124,1,0,0,114,129,
+ 1,0,0,114,10,1,0,0,114,15,1,0,0,114,27,0,
+ 0,0,114,25,0,0,0,114,165,1,0,0,114,165,1,0,
+ 0,73,4,0,0,115,27,0,0,0,132,0,242,2,3,9,
+ 62,242,8,2,9,29,242,6,1,9,24,242,4,1,9,25,
+ 243,4,3,9,43,114,27,0,0,0,114,165,1,0,0,99,
+ 1,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,
+ 3,0,0,0,243,92,0,0,0,151,0,100,1,100,2,108,
+ 0,125,1,2,0,124,1,106,2,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,124,0,171,1,0,
+ 0,0,0,0,0,125,2,116,5,0,0,0,0,0,0,0,
+ 0,124,0,124,2,124,1,106,6,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,171,3,0,0,0,
+ 0,0,0,83,0,41,3,97,79,1,0,0,65,100,100,32,
+ 97,32,112,97,116,104,32,116,111,32,116,104,101,32,68,76,
+ 76,32,115,101,97,114,99,104,32,112,97,116,104,46,10,10,
+ 32,32,32,32,32,32,32,32,84,104,105,115,32,115,101,97,
+ 114,99,104,32,112,97,116,104,32,105,115,32,117,115,101,100,
+ 32,119,104,101,110,32,114,101,115,111,108,118,105,110,103,32,
+ 100,101,112,101,110,100,101,110,99,105,101,115,32,102,111,114,
+ 32,105,109,112,111,114,116,101,100,10,32,32,32,32,32,32,
+ 32,32,101,120,116,101,110,115,105,111,110,32,109,111,100,117,
+ 108,101,115,32,40,116,104,101,32,109,111,100,117,108,101,32,
+ 105,116,115,101,108,102,32,105,115,32,114,101,115,111,108,118,
+ 101,100,32,116,104,114,111,117,103,104,32,115,121,115,46,112,
+ 97,116,104,41,44,10,32,32,32,32,32,32,32,32,97,110,
+ 100,32,97,108,115,111,32,98,121,32,99,116,121,112,101,115,
+ 46,10,10,32,32,32,32,32,32,32,32,82,101,109,111,118,
+ 101,32,116,104,101,32,100,105,114,101,99,116,111,114,121,32,
+ 98,121,32,99,97,108,108,105,110,103,32,99,108,111,115,101,
+ 40,41,32,111,110,32,116,104,101,32,114,101,116,117,114,110,
+ 101,100,32,111,98,106,101,99,116,32,111,114,10,32,32,32,
+ 32,32,32,32,32,117,115,105,110,103,32,105,116,32,105,110,
+ 32,97,32,119,105,116,104,32,115,116,97,116,101,109,101,110,
+ 116,46,10,32,32,32,32,32,32,32,32,114,2,0,0,0,
+ 78,41,4,114,42,0,0,0,218,18,95,97,100,100,95,100,
+ 108,108,95,100,105,114,101,99,116,111,114,121,114,165,1,0,
+ 0,114,168,1,0,0,41,3,114,12,0,0,0,114,42,0,
+ 0,0,114,169,1,0,0,115,3,0,0,0,32,32,32,114,
+ 25,0,0,0,218,17,97,100,100,95,100,108,108,95,100,105,
+ 114,101,99,116,111,114,121,114,177,1,0,0,90,4,0,0,
+ 115,53,0,0,0,128,0,243,20,0,9,18,216,17,38,144,
+ 18,215,17,38,209,17,38,160,116,211,17,44,136,6,220,15,
+ 33,216,12,16,216,12,18,216,12,14,215,12,36,209,12,36,
+ 243,7,4,16,10,240,0,4,9,10,114,27,0,0,0,41,
+ 2,105,255,1,0,0,70,41,3,84,78,70,41,3,250,1,
+ 46,84,78,114,23,0,0,0,41,2,114,99,1,0,0,114,
+ 189,0,0,0,41,3,114,99,1,0,0,114,189,0,0,0,
+ 78,41,105,114,158,1,0,0,114,159,1,0,0,114,130,0,
+ 0,0,114,57,0,0,0,114,165,0,0,0,218,16,95,99,
+ 111,108,108,101,99,116,105,111,110,115,95,97,98,99,114,3,
+ 0,0,0,114,34,1,0,0,114,30,0,0,0,114,138,1,
+ 0,0,114,162,1,0,0,218,20,98,117,105,108,116,105,110,
+ 95,109,111,100,117,108,101,95,110,97,109,101,115,218,6,95,
+ 110,97,109,101,115,114,31,0,0,0,114,26,0,0,0,114,
+ 36,0,0,0,114,11,0,0,0,114,9,0,0,0,114,37,
+ 0,0,0,114,40,0,0,0,114,140,0,0,0,218,11,73,
+ 109,112,111,114,116,69,114,114,111,114,218,9,112,111,115,105,
+ 120,112,97,116,104,114,12,0,0,0,114,41,0,0,0,218,
+ 6,101,120,116,101,110,100,114,42,0,0,0,218,6,110,116,
+ 112,97,116,104,218,7,109,111,100,117,108,101,115,218,7,111,
+ 115,46,112,97,116,104,114,5,0,0,0,114,6,0,0,0,
+ 114,7,0,0,0,114,8,0,0,0,114,10,0,0,0,114,
+ 21,0,0,0,114,4,0,0,0,114,13,0,0,0,114,24,
+ 0,0,0,114,44,0,0,0,114,49,0,0,0,218,3,115,
+ 101,116,114,45,0,0,0,218,15,115,117,112,112,111,114,116,
+ 115,95,100,105,114,95,102,100,218,22,115,117,112,112,111,114,
+ 116,115,95,101,102,102,101,99,116,105,118,101,95,105,100,115,
+ 114,46,0,0,0,218,11,115,117,112,112,111,114,116,115,95,
+ 102,100,218,24,115,117,112,112,111,114,116,115,95,102,111,108,
+ 108,111,119,95,115,121,109,108,105,110,107,115,114,14,0,0,
+ 0,114,15,0,0,0,114,16,0,0,0,114,113,0,0,0,
+ 114,124,0,0,0,114,128,0,0,0,114,158,0,0,0,114,
+ 69,0,0,0,114,86,0,0,0,114,173,0,0,0,114,169,
+ 0,0,0,114,187,0,0,0,114,192,0,0,0,114,195,0,
+ 0,0,114,198,0,0,0,114,194,0,0,0,114,197,0,0,
+ 0,114,201,0,0,0,114,19,0,0,0,114,228,0,0,0,
+ 114,229,0,0,0,114,231,0,0,0,114,47,1,0,0,114,
+ 204,0,0,0,114,51,1,0,0,114,224,0,0,0,114,53,
+ 1,0,0,114,237,0,0,0,114,116,0,0,0,114,55,1,
+ 0,0,114,56,1,0,0,114,64,1,0,0,114,17,0,0,
+ 0,114,18,0,0,0,114,67,1,0,0,114,68,1,0,0,
+ 114,69,1,0,0,114,79,1,0,0,114,66,1,0,0,114,
+ 84,1,0,0,114,86,1,0,0,114,88,1,0,0,114,90,
+ 1,0,0,114,92,1,0,0,114,94,1,0,0,114,96,1,
+ 0,0,218,8,112,108,97,116,102,111,114,109,114,113,1,0,
+ 0,114,109,1,0,0,114,20,0,0,0,114,149,1,0,0,
+ 114,132,0,0,0,114,28,1,0,0,218,3,65,66,67,114,
+ 151,1,0,0,114,165,1,0,0,114,177,1,0,0,114,15,
+ 1,0,0,114,27,0,0,0,114,25,0,0,0,250,8,60,
+ 109,111,100,117,108,101,62,114,195,1,0,0,1,0,0,0,
+ 115,232,5,0,0,240,3,1,1,1,241,2,21,1,4,243,
+ 48,0,1,11,219,0,10,219,0,17,229,0,43,225,15,19,
+ 144,68,152,19,145,73,139,127,128,12,224,9,12,215,9,33,
+ 209,9,33,128,6,242,6,3,11,21,128,7,242,10,1,1,
+ 29,242,6,4,1,55,240,16,0,4,11,136,102,209,3,20,
+ 216,11,18,128,68,216,14,18,128,71,220,4,23,240,2,4,
+ 5,13,221,8,31,216,8,15,143,14,137,14,144,119,212,8,
+ 31,243,6,0,5,29,240,4,3,5,13,221,8,41,243,8,
+ 0,5,17,216,4,11,135,78,129,78,209,19,36,160,85,211,
+ 19,43,212,4,44,217,8,13,224,5,9,136,86,129,94,216,
+ 11,15,128,68,216,14,20,128,71,220,4,20,240,2,4,5,
+ 13,221,8,28,216,8,15,143,14,137,14,144,119,212,8,31,
+ 243,6,0,5,26,227,4,13,216,4,11,135,78,129,78,209,
+ 19,36,160,82,211,19,40,212,4,41,216,8,10,240,4,3,
+ 5,13,222,8,38,241,10,0,11,22,208,22,51,211,10,52,
+ 208,4,52,224,25,29,128,3,135,11,129,11,136,73,209,0,
+ 22,247,2,1,1,13,247,0,1,1,13,243,0,1,1,13,
+ 240,6,0,5,11,241,6,0,4,11,208,11,28,213,3,29,
+ 217,15,22,139,121,128,72,242,2,2,5,35,241,8,0,12,
+ 15,139,53,128,68,217,4,8,208,9,25,152,72,212,4,37,
+ 217,4,8,136,31,152,71,212,4,36,217,4,8,136,31,152,
+ 71,212,4,36,217,4,8,136,30,152,70,212,4,35,217,4,
+ 8,208,9,25,152,71,212,4,36,217,4,8,136,29,152,70,
+ 212,4,35,217,4,8,136,30,152,71,212,4,36,217,4,8,
+ 136,31,152,72,212,4,37,217,4,8,136,30,152,71,212,4,
+ 36,217,4,8,136,29,152,70,212,4,35,217,4,8,208,9,
+ 26,152,74,212,4,39,217,4,8,136,31,152,72,212,4,37,
+ 217,4,8,208,9,25,152,73,212,4,38,217,4,8,136,31,
+ 152,72,212,4,37,217,4,8,136,31,152,71,212,4,36,217,
+ 4,8,208,9,25,152,71,212,4,36,216,22,26,128,79,225,
+ 11,14,139,53,128,68,217,4,8,208,9,25,152,72,212,4,
+ 37,216,29,33,208,4,26,225,11,14,139,53,128,68,217,4,
+ 8,136,29,152,71,212,4,36,217,4,8,136,29,152,71,212,
+ 4,36,217,4,8,136,29,152,71,212,4,36,217,4,8,208,
+ 9,25,152,73,212,4,38,217,4,8,208,9,25,152,73,212,
+ 4,38,217,4,8,136,30,152,72,212,4,37,216,4,8,135,
+ 72,129,72,136,84,132,78,217,4,8,208,9,25,152,74,212,
+ 4,39,217,4,8,136,31,152,71,212,4,36,217,4,8,136,
+ 30,152,71,212,4,36,217,4,8,208,9,25,152,74,212,4,
+ 39,217,7,14,136,121,212,7,25,153,103,160,106,212,30,49,
+ 217,8,12,136,95,152,105,212,8,40,216,18,22,128,75,225,
+ 11,14,139,53,128,68,217,4,8,208,9,25,152,72,212,4,
+ 37,241,44,0,5,9,136,31,152,71,212,4,36,217,4,8,
+ 136,30,152,70,212,4,35,217,4,8,136,31,152,73,212,4,
+ 38,217,4,8,136,29,152,71,212,4,36,217,7,14,136,120,
+ 212,7,24,217,8,12,136,93,152,71,212,8,36,217,4,8,
+ 136,29,152,70,212,4,35,217,4,8,136,30,152,71,212,4,
+ 36,217,4,8,136,28,152,70,212,4,35,217,4,8,136,30,
+ 152,70,212,4,35,217,4,8,208,9,25,152,71,212,4,36,
+ 217,4,8,136,28,152,70,212,4,35,216,31,35,208,4,28,
+ 224,8,12,216,8,23,216,8,16,216,8,12,240,12,0,12,
+ 13,128,8,216,11,12,128,8,216,11,12,128,8,243,10,30,
+ 1,18,242,64,1,20,1,38,242,44,24,1,17,240,52,0,
+ 1,8,135,14,129,14,210,15,52,212,0,53,243,4,85,2,
+ 1,39,240,110,4,0,1,8,135,14,129,14,136,118,212,0,
+ 22,224,4,8,136,36,128,60,144,63,210,3,34,168,7,176,
+ 20,160,127,184,43,210,39,69,240,4,46,5,25,192,101,208,
+ 84,88,244,0,46,5,25,242,96,1,54,5,48,240,112,1,
+ 0,5,12,135,78,129,78,144,55,212,4,27,242,4,5,1,
+ 22,242,14,6,1,33,242,16,5,1,23,242,14,7,1,34,
+ 242,18,6,1,25,242,16,7,1,30,240,18,0,1,8,135,
+ 14,129,14,210,15,71,212,0,72,243,4,29,1,19,243,64,
+ 1,41,1,36,247,90,1,0,1,53,244,4,71,1,1,19,
+ 136,126,244,0,71,1,1,19,242,82,2,27,1,24,241,60,
+ 0,11,25,211,10,26,128,7,216,4,18,243,6,4,1,37,
+ 240,12,0,27,31,160,36,153,44,208,0,22,216,0,7,135,
+ 14,129,14,208,15,51,212,0,52,225,3,25,242,2,3,5,
+ 21,241,12,0,16,24,152,7,159,13,153,13,216,8,20,144,
+ 101,216,8,20,144,101,243,5,2,16,29,128,72,240,6,0,
+ 9,21,243,4,4,5,42,240,12,0,5,12,135,78,129,78,
+ 208,19,42,212,4,43,242,4,28,1,30,241,60,0,22,30,
+ 147,90,209,0,18,128,8,136,40,216,4,12,241,6,0,4,
+ 11,136,54,132,63,153,55,160,56,212,27,44,177,23,184,23,
+ 212,49,65,224,13,14,128,70,216,27,28,208,4,28,128,72,
+ 136,121,224,4,11,135,78,129,78,210,19,54,212,4,55,242,
+ 12,25,5,51,242,54,7,5,56,242,18,8,5,56,242,24,
+ 8,5,57,242,20,8,5,57,240,22,0,5,12,135,78,129,
+ 78,210,19,63,212,4,64,241,6,0,4,11,136,56,212,3,
+ 20,242,8,7,5,40,242,18,9,5,51,240,24,0,5,12,
+ 135,78,129,78,144,72,152,105,208,19,40,212,4,41,241,6,
+ 0,4,11,136,57,212,3,21,242,6,8,5,41,242,20,9,
+ 5,52,240,24,0,5,12,135,78,129,78,144,73,152,122,208,
+ 19,42,212,4,43,240,8,0,4,7,135,60,129,60,144,57,
+ 210,3,28,243,4,19,5,49,247,44,20,5,38,241,0,20,
+ 5,38,240,44,0,5,12,135,78,129,78,144,55,212,4,27,
+ 243,6,6,1,67,1,242,22,27,1,67,1,241,62,0,8,
+ 15,136,120,212,7,24,216,13,20,128,70,216,22,30,128,70,
+ 132,79,244,6,15,1,50,136,115,143,119,137,119,244,0,15,
+ 1,50,240,36,0,4,8,136,52,130,60,247,2,15,5,43,
+ 241,0,15,5,43,243,34,16,5,10,240,37,0,4,16,248,
+ 240,91,32,0,12,23,242,0,1,5,13,218,8,12,240,3,
+ 1,5,13,251,240,12,0,12,23,242,0,1,5,13,218,8,
+ 12,240,3,1,5,13,251,240,28,0,12,23,242,0,1,5,
+ 13,218,8,12,240,3,1,5,13,251,240,20,0,12,23,242,
+ 0,1,5,13,218,8,12,240,3,1,5,13,250,115,72,0,
+ 0,0,193,4,23,83,18,0,193,32,6,83,30,0,194,17,
+ 23,83,42,0,195,9,6,83,54,0,211,18,5,83,27,3,
+ 211,26,1,83,27,3,211,30,5,83,39,3,211,38,1,83,
+ 39,3,211,42,5,83,51,3,211,50,1,83,51,3,211,54,
+ 5,83,63,3,211,62,1,83,63,3,
+};
diff --git a/contrib/tools/python3/Python/frozen_modules/posixpath.h b/contrib/tools/python3/Python/frozen_modules/posixpath.h
new file mode 100644
index 00000000000..76f4e739ffa
--- /dev/null
+++ b/contrib/tools/python3/Python/frozen_modules/posixpath.h
@@ -0,0 +1,1129 @@
+/* Auto-generated by Programs/_freeze_module.py */
+const unsigned char _Py_M__posixpath[] = {
+ 227,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,
+ 0,0,0,0,0,243,102,1,0,0,151,0,100,0,90,0,
+ 100,1,90,1,100,2,90,2,100,1,90,3,100,3,90,4,
+ 100,4,90,5,100,5,90,6,100,6,90,7,100,7,90,8,
+ 100,8,100,6,108,9,90,9,100,8,100,6,108,10,90,10,
+ 100,8,100,6,108,11,90,11,100,8,100,6,108,12,90,12,
+ 100,8,100,9,108,12,173,2,1,0,103,0,100,10,162,1,
+ 90,13,100,11,132,0,90,14,100,12,132,0,90,15,100,13,
+ 132,0,90,16,100,14,132,0,90,17,100,15,132,0,90,18,
+ 100,16,132,0,90,19,101,12,106,40,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,106,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 101,19,95,0,0,0,0,0,0,0,0,0,100,17,132,0,
+ 90,21,100,18,132,0,90,22,100,19,132,0,90,23,100,20,
+ 132,0,90,24,100,21,132,0,90,25,100,22,132,0,90,26,
+ 100,23,132,0,90,27,100,24,132,0,90,28,100,6,97,29,
+ 100,6,97,30,100,25,132,0,90,31,9,0,100,8,100,26,
+ 108,32,109,33,90,33,1,0,100,27,132,0,90,34,100,29,
+ 132,0,90,36,100,30,100,31,156,1,100,32,132,2,90,37,
+ 100,33,132,0,90,38,101,10,106,78,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,100,34,107,40,
+ 0,0,90,40,100,37,100,35,132,1,90,41,100,36,132,0,
+ 90,42,121,6,35,0,101,35,36,0,114,6,1,0,100,28,
+ 132,0,90,34,89,0,140,45,119,0,120,3,89,0,119,1,
+ 41,38,97,217,1,0,0,67,111,109,109,111,110,32,111,112,
+ 101,114,97,116,105,111,110,115,32,111,110,32,80,111,115,105,
+ 120,32,112,97,116,104,110,97,109,101,115,46,10,10,73,110,
+ 115,116,101,97,100,32,111,102,32,105,109,112,111,114,116,105,
+ 110,103,32,116,104,105,115,32,109,111,100,117,108,101,32,100,
+ 105,114,101,99,116,108,121,44,32,105,109,112,111,114,116,32,
+ 111,115,32,97,110,100,32,114,101,102,101,114,32,116,111,10,
+ 116,104,105,115,32,109,111,100,117,108,101,32,97,115,32,111,
+ 115,46,112,97,116,104,46,32,32,84,104,101,32,34,111,115,
+ 46,112,97,116,104,34,32,110,97,109,101,32,105,115,32,97,
+ 110,32,97,108,105,97,115,32,102,111,114,32,116,104,105,115,
+ 10,109,111,100,117,108,101,32,111,110,32,80,111,115,105,120,
+ 32,115,121,115,116,101,109,115,59,32,111,110,32,111,116,104,
+ 101,114,32,115,121,115,116,101,109,115,32,40,101,46,103,46,
+ 32,87,105,110,100,111,119,115,41,44,10,111,115,46,112,97,
+ 116,104,32,112,114,111,118,105,100,101,115,32,116,104,101,32,
+ 115,97,109,101,32,111,112,101,114,97,116,105,111,110,115,32,
+ 105,110,32,97,32,109,97,110,110,101,114,32,115,112,101,99,
+ 105,102,105,99,32,116,111,32,116,104,97,116,10,112,108,97,
+ 116,102,111,114,109,44,32,97,110,100,32,105,115,32,97,110,
+ 32,97,108,105,97,115,32,116,111,32,97,110,111,116,104,101,
+ 114,32,109,111,100,117,108,101,32,40,101,46,103,46,32,110,
+ 116,112,97,116,104,41,46,10,10,83,111,109,101,32,111,102,
+ 32,116,104,105,115,32,99,97,110,32,97,99,116,117,97,108,
+ 108,121,32,98,101,32,117,115,101,102,117,108,32,111,110,32,
+ 110,111,110,45,80,111,115,105,120,32,115,121,115,116,101,109,
+ 115,32,116,111,111,44,32,101,46,103,46,10,102,111,114,32,
+ 109,97,110,105,112,117,108,97,116,105,111,110,32,111,102,32,
+ 116,104,101,32,112,97,116,104,110,97,109,101,32,99,111,109,
+ 112,111,110,101,110,116,32,111,102,32,85,82,76,115,46,10,
+ 250,1,46,250,2,46,46,250,1,47,250,1,58,122,13,47,
+ 98,105,110,58,47,117,115,114,47,98,105,110,78,122,9,47,
+ 100,101,118,47,110,117,108,108,233,0,0,0,0,41,1,218,
+ 1,42,41,40,218,8,110,111,114,109,99,97,115,101,218,5,
+ 105,115,97,98,115,218,4,106,111,105,110,218,10,115,112,108,
+ 105,116,100,114,105,118,101,218,9,115,112,108,105,116,114,111,
+ 111,116,218,5,115,112,108,105,116,218,8,115,112,108,105,116,
+ 101,120,116,218,8,98,97,115,101,110,97,109,101,218,7,100,
+ 105,114,110,97,109,101,218,12,99,111,109,109,111,110,112,114,
+ 101,102,105,120,218,7,103,101,116,115,105,122,101,218,8,103,
+ 101,116,109,116,105,109,101,218,8,103,101,116,97,116,105,109,
+ 101,218,8,103,101,116,99,116,105,109,101,218,6,105,115,108,
+ 105,110,107,218,6,101,120,105,115,116,115,218,7,108,101,120,
+ 105,115,116,115,218,5,105,115,100,105,114,218,6,105,115,102,
+ 105,108,101,218,7,105,115,109,111,117,110,116,218,10,101,120,
+ 112,97,110,100,117,115,101,114,218,10,101,120,112,97,110,100,
+ 118,97,114,115,218,8,110,111,114,109,112,97,116,104,218,7,
+ 97,98,115,112,97,116,104,218,8,115,97,109,101,102,105,108,
+ 101,218,12,115,97,109,101,111,112,101,110,102,105,108,101,218,
+ 8,115,97,109,101,115,116,97,116,218,6,99,117,114,100,105,
+ 114,218,6,112,97,114,100,105,114,218,3,115,101,112,218,7,
+ 112,97,116,104,115,101,112,218,7,100,101,102,112,97,116,104,
+ 218,6,97,108,116,115,101,112,218,6,101,120,116,115,101,112,
+ 218,7,100,101,118,110,117,108,108,218,8,114,101,97,108,112,
+ 97,116,104,218,26,115,117,112,112,111,114,116,115,95,117,110,
+ 105,99,111,100,101,95,102,105,108,101,110,97,109,101,115,218,
+ 7,114,101,108,112,97,116,104,218,10,99,111,109,109,111,110,
+ 112,97,116,104,218,10,105,115,106,117,110,99,116,105,111,110,
+ 99,1,0,0,0,0,0,0,0,0,0,0,0,4,0,0,
+ 0,3,0,0,0,243,38,0,0,0,151,0,116,1,0,0,
+ 0,0,0,0,0,0,124,0,116,2,0,0,0,0,0,0,
+ 0,0,171,2,0,0,0,0,0,0,114,1,121,1,121,2,
+ 41,3,78,243,1,0,0,0,47,114,4,0,0,0,41,2,
+ 218,10,105,115,105,110,115,116,97,110,99,101,218,5,98,121,
+ 116,101,115,169,1,218,4,112,97,116,104,115,1,0,0,0,
+ 32,250,18,60,102,114,111,122,101,110,32,112,111,115,105,120,
+ 112,97,116,104,62,218,8,95,103,101,116,95,115,101,112,114,
+ 55,0,0,0,41,0,0,0,115,18,0,0,0,128,0,220,
+ 7,17,144,36,156,5,212,7,30,216,15,19,224,15,18,243,
+ 0,0,0,0,99,1,0,0,0,0,0,0,0,0,0,0,
+ 0,3,0,0,0,3,0,0,0,243,44,0,0,0,151,0,
+ 116,1,0,0,0,0,0,0,0,0,106,2,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,0,
+ 171,1,0,0,0,0,0,0,83,0,41,1,122,54,78,111,
+ 114,109,97,108,105,122,101,32,99,97,115,101,32,111,102,32,
+ 112,97,116,104,110,97,109,101,46,32,32,72,97,115,32,110,
+ 111,32,101,102,102,101,99,116,32,117,110,100,101,114,32,80,
+ 111,115,105,120,169,2,218,2,111,115,218,6,102,115,112,97,
+ 116,104,41,1,218,1,115,115,1,0,0,0,32,114,54,0,
+ 0,0,114,8,0,0,0,114,8,0,0,0,52,0,0,0,
+ 115,16,0,0,0,128,0,228,11,13,143,57,137,57,144,81,
+ 139,60,208,4,23,114,56,0,0,0,99,1,0,0,0,0,
+ 0,0,0,0,0,0,0,3,0,0,0,3,0,0,0,243,
+ 100,0,0,0,151,0,116,1,0,0,0,0,0,0,0,0,
+ 106,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,124,0,171,1,0,0,0,0,0,0,125,0,
+ 116,5,0,0,0,0,0,0,0,0,124,0,171,1,0,0,
+ 0,0,0,0,125,1,124,0,106,7,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,124,1,171,1,
+ 0,0,0,0,0,0,83,0,41,1,122,31,84,101,115,116,
+ 32,119,104,101,116,104,101,114,32,97,32,112,97,116,104,32,
+ 105,115,32,97,98,115,111,108,117,116,101,41,4,114,59,0,
+ 0,0,114,60,0,0,0,114,55,0,0,0,218,10,115,116,
+ 97,114,116,115,119,105,116,104,41,2,114,61,0,0,0,114,
+ 37,0,0,0,115,2,0,0,0,32,32,114,54,0,0,0,
+ 114,9,0,0,0,114,9,0,0,0,60,0,0,0,115,39,
+ 0,0,0,128,0,228,8,10,143,9,137,9,144,33,139,12,
+ 128,65,220,10,18,144,49,139,43,128,67,216,11,12,143,60,
+ 137,60,152,3,211,11,28,208,4,28,114,56,0,0,0,99,
+ 1,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,
+ 7,0,0,0,243,106,1,0,0,151,0,116,1,0,0,0,
+ 0,0,0,0,0,106,2,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,124,0,171,1,0,0,0,
+ 0,0,0,125,0,116,5,0,0,0,0,0,0,0,0,124,
+ 0,171,1,0,0,0,0,0,0,125,2,124,0,125,3,9,
+ 0,124,1,115,8,124,3,100,1,100,2,26,0,124,2,122,
+ 0,0,0,1,0,116,7,0,0,0,0,0,0,0,0,116,
+ 0,0,0,0,0,0,0,0,0,106,2,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,124,1,171,
+ 2,0,0,0,0,0,0,68,0,93,55,0,0,125,4,124,
+ 4,106,9,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,124,2,171,1,0,0,0,0,0,0,114,
+ 3,124,4,125,3,140,23,124,3,114,17,124,3,106,11,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,124,2,171,1,0,0,0,0,0,0,114,6,124,3,124,
+ 4,122,13,0,0,125,3,140,48,124,3,124,2,124,4,122,
+ 0,0,0,122,13,0,0,125,3,140,57,4,0,9,0,124,
+ 3,83,0,35,0,116,12,0,0,0,0,0,0,0,0,116,
+ 14,0,0,0,0,0,0,0,0,116,16,0,0,0,0,0,
+ 0,0,0,102,3,36,0,114,25,1,0,116,19,0,0,0,
+ 0,0,0,0,0,106,20,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,100,3,124,0,103,2,124,
+ 1,162,1,173,6,142,0,1,0,130,0,119,0,120,3,89,
+ 0,119,1,41,4,122,230,74,111,105,110,32,116,119,111,32,
+ 111,114,32,109,111,114,101,32,112,97,116,104,110,97,109,101,
+ 32,99,111,109,112,111,110,101,110,116,115,44,32,105,110,115,
+ 101,114,116,105,110,103,32,39,47,39,32,97,115,32,110,101,
+ 101,100,101,100,46,10,32,32,32,32,73,102,32,97,110,121,
+ 32,99,111,109,112,111,110,101,110,116,32,105,115,32,97,110,
+ 32,97,98,115,111,108,117,116,101,32,112,97,116,104,44,32,
+ 97,108,108,32,112,114,101,118,105,111,117,115,32,112,97,116,
+ 104,32,99,111,109,112,111,110,101,110,116,115,10,32,32,32,
+ 32,119,105,108,108,32,98,101,32,100,105,115,99,97,114,100,
+ 101,100,46,32,32,65,110,32,101,109,112,116,121,32,108,97,
+ 115,116,32,112,97,114,116,32,119,105,108,108,32,114,101,115,
+ 117,108,116,32,105,110,32,97,32,112,97,116,104,32,116,104,
+ 97,116,10,32,32,32,32,101,110,100,115,32,119,105,116,104,
+ 32,97,32,115,101,112,97,114,97,116,111,114,46,78,114,6,
+ 0,0,0,114,10,0,0,0,41,11,114,59,0,0,0,114,
+ 60,0,0,0,114,55,0,0,0,218,3,109,97,112,114,63,
+ 0,0,0,218,8,101,110,100,115,119,105,116,104,218,9,84,
+ 121,112,101,69,114,114,111,114,218,14,65,116,116,114,105,98,
+ 117,116,101,69,114,114,111,114,218,12,66,121,116,101,115,87,
+ 97,114,110,105,110,103,218,11,103,101,110,101,114,105,99,112,
+ 97,116,104,218,16,95,99,104,101,99,107,95,97,114,103,95,
+ 116,121,112,101,115,41,5,218,1,97,218,1,112,114,37,0,
+ 0,0,114,53,0,0,0,218,1,98,115,5,0,0,0,32,
+ 32,32,32,32,114,54,0,0,0,114,10,0,0,0,114,10,
+ 0,0,0,71,0,0,0,115,186,0,0,0,128,0,244,10,
+ 0,9,11,143,9,137,9,144,33,139,12,128,65,220,10,18,
+ 144,49,139,43,128,67,216,11,12,128,68,240,2,12,5,14,
+ 217,15,16,216,12,16,144,18,144,33,136,72,144,115,138,78,
+ 220,17,20,148,82,151,89,145,89,160,1,211,17,34,242,0,
+ 6,9,32,136,65,216,15,16,143,124,137,124,152,67,212,15,
+ 32,216,23,24,145,4,217,21,25,152,84,159,93,153,93,168,
+ 51,212,29,47,216,16,20,152,1,145,9,145,4,224,16,20,
+ 152,3,152,97,153,7,145,15,145,4,241,13,6,9,32,240,
+ 20,0,12,16,128,75,248,244,7,0,13,22,148,126,164,124,
+ 208,11,52,242,0,2,5,14,220,8,19,215,8,36,209,8,
+ 36,160,86,168,81,208,8,51,176,17,211,8,51,216,8,13,
+ 240,5,2,5,14,250,115,12,0,0,0,164,65,30,66,5,
+ 0,194,5,45,66,50,3,99,1,0,0,0,0,0,0,0,
+ 0,0,0,0,5,0,0,0,3,0,0,0,243,206,0,0,
+ 0,151,0,116,1,0,0,0,0,0,0,0,0,106,2,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,124,0,171,1,0,0,0,0,0,0,125,0,116,5,0,
+ 0,0,0,0,0,0,0,124,0,171,1,0,0,0,0,0,
+ 0,125,1,124,0,106,7,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,124,1,171,1,0,0,0,
+ 0,0,0,100,1,122,0,0,0,125,2,124,0,100,2,124,
+ 2,26,0,124,0,124,2,100,2,26,0,125,4,125,3,124,
+ 3,114,34,124,3,124,1,116,9,0,0,0,0,0,0,0,
+ 0,124,3,171,1,0,0,0,0,0,0,122,5,0,0,107,
+ 55,0,0,114,17,124,3,106,11,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,124,1,171,1,0,
+ 0,0,0,0,0,125,3,124,3,124,4,102,2,83,0,41,
+ 3,122,128,83,112,108,105,116,32,97,32,112,97,116,104,110,
+ 97,109,101,46,32,32,82,101,116,117,114,110,115,32,116,117,
+ 112,108,101,32,34,40,104,101,97,100,44,32,116,97,105,108,
+ 41,34,32,119,104,101,114,101,32,34,116,97,105,108,34,32,
+ 105,115,10,32,32,32,32,101,118,101,114,121,116,104,105,110,
+ 103,32,97,102,116,101,114,32,116,104,101,32,102,105,110,97,
+ 108,32,115,108,97,115,104,46,32,32,69,105,116,104,101,114,
+ 32,112,97,114,116,32,109,97,121,32,98,101,32,101,109,112,
+ 116,121,46,233,1,0,0,0,78,169,6,114,59,0,0,0,
+ 114,60,0,0,0,114,55,0,0,0,218,5,114,102,105,110,
+ 100,218,3,108,101,110,218,6,114,115,116,114,105,112,41,5,
+ 114,73,0,0,0,114,37,0,0,0,218,1,105,218,4,104,
+ 101,97,100,218,4,116,97,105,108,115,5,0,0,0,32,32,
+ 32,32,32,114,54,0,0,0,114,13,0,0,0,114,13,0,
+ 0,0,100,0,0,0,115,107,0,0,0,128,0,244,6,0,
+ 9,11,143,9,137,9,144,33,139,12,128,65,220,10,18,144,
+ 49,139,43,128,67,216,8,9,143,7,137,7,144,3,139,12,
+ 144,113,209,8,24,128,65,216,17,18,144,50,144,65,144,21,
+ 152,1,152,33,152,34,152,5,136,36,128,68,217,7,11,144,
+ 4,152,3,156,67,160,4,155,73,153,13,210,16,37,216,15,
+ 19,143,123,137,123,152,51,211,15,31,136,4,216,11,15,144,
+ 20,136,58,208,4,21,114,56,0,0,0,99,1,0,0,0,
+ 0,0,0,0,0,0,0,0,6,0,0,0,3,0,0,0,
+ 243,142,0,0,0,151,0,116,1,0,0,0,0,0,0,0,
+ 0,106,2,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,124,0,171,1,0,0,0,0,0,0,125,
+ 0,116,5,0,0,0,0,0,0,0,0,124,0,116,6,0,
+ 0,0,0,0,0,0,0,171,2,0,0,0,0,0,0,114,
+ 5,100,1,125,1,100,2,125,2,110,4,100,3,125,1,100,
+ 4,125,2,116,9,0,0,0,0,0,0,0,0,106,10,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,124,0,124,1,100,0,124,2,171,4,0,0,0,0,0,
+ 0,83,0,41,5,78,114,49,0,0,0,243,1,0,0,0,
+ 46,114,4,0,0,0,114,2,0,0,0,41,6,114,59,0,
+ 0,0,114,60,0,0,0,114,50,0,0,0,114,51,0,0,
+ 0,114,70,0,0,0,218,9,95,115,112,108,105,116,101,120,
+ 116,41,3,114,73,0,0,0,114,37,0,0,0,114,41,0,
+ 0,0,115,3,0,0,0,32,32,32,114,54,0,0,0,114,
+ 14,0,0,0,114,14,0,0,0,117,0,0,0,115,68,0,
+ 0,0,128,0,220,8,10,143,9,137,9,144,33,139,12,128,
+ 65,220,7,17,144,33,148,85,212,7,27,216,14,18,136,3,
+ 216,17,21,137,6,224,14,17,136,3,216,17,20,136,6,220,
+ 11,22,215,11,32,209,11,32,160,17,160,67,168,20,168,118,
+ 211,11,54,208,4,54,114,56,0,0,0,99,1,0,0,0,
+ 0,0,0,0,0,0,0,0,3,0,0,0,3,0,0,0,
+ 243,58,0,0,0,151,0,116,1,0,0,0,0,0,0,0,
+ 0,106,2,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,124,0,171,1,0,0,0,0,0,0,125,
+ 0,124,0,100,1,100,2,26,0,124,0,102,2,83,0,41,
+ 3,122,74,83,112,108,105,116,32,97,32,112,97,116,104,110,
+ 97,109,101,32,105,110,116,111,32,100,114,105,118,101,32,97,
+ 110,100,32,112,97,116,104,46,32,79,110,32,80,111,115,105,
+ 120,44,32,100,114,105,118,101,32,105,115,32,97,108,119,97,
+ 121,115,10,32,32,32,32,101,109,112,116,121,46,78,114,6,
+ 0,0,0,114,58,0,0,0,41,1,114,73,0,0,0,115,
+ 1,0,0,0,32,114,54,0,0,0,114,11,0,0,0,114,
+ 11,0,0,0,131,0,0,0,115,32,0,0,0,128,0,244,
+ 6,0,9,11,143,9,137,9,144,33,139,12,128,65,216,11,
+ 12,136,82,136,97,136,53,144,33,136,56,128,79,114,56,0,
+ 0,0,99,1,0,0,0,0,0,0,0,0,0,0,0,5,
+ 0,0,0,3,0,0,0,243,190,0,0,0,151,0,116,1,
+ 0,0,0,0,0,0,0,0,106,2,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,124,0,171,1,
+ 0,0,0,0,0,0,125,0,116,5,0,0,0,0,0,0,
+ 0,0,124,0,116,6,0,0,0,0,0,0,0,0,171,2,
+ 0,0,0,0,0,0,114,5,100,1,125,1,100,2,125,2,
+ 110,4,100,3,125,1,100,4,125,2,124,0,100,5,100,6,
+ 26,0,124,1,107,55,0,0,114,5,124,2,124,2,124,0,
+ 102,3,83,0,124,0,100,6,100,7,26,0,124,1,107,55,
+ 0,0,115,8,124,0,100,7,100,8,26,0,124,1,107,40,
+ 0,0,114,8,124,2,124,1,124,0,100,6,100,5,26,0,
+ 102,3,83,0,124,2,124,0,100,5,100,7,26,0,124,0,
+ 100,7,100,5,26,0,102,3,83,0,41,9,97,165,1,0,
+ 0,83,112,108,105,116,32,97,32,112,97,116,104,110,97,109,
+ 101,32,105,110,116,111,32,100,114,105,118,101,44,32,114,111,
+ 111,116,32,97,110,100,32,116,97,105,108,46,32,79,110,32,
+ 80,111,115,105,120,44,32,100,114,105,118,101,32,105,115,32,
+ 97,108,119,97,121,115,10,32,32,32,32,101,109,112,116,121,
+ 59,32,116,104,101,32,114,111,111,116,32,109,97,121,32,98,
+ 101,32,101,109,112,116,121,44,32,97,32,115,105,110,103,108,
+ 101,32,115,108,97,115,104,44,32,111,114,32,116,119,111,32,
+ 115,108,97,115,104,101,115,46,32,84,104,101,32,116,97,105,
+ 108,10,32,32,32,32,99,111,110,116,97,105,110,115,32,97,
+ 110,121,116,104,105,110,103,32,97,102,116,101,114,32,116,104,
+ 101,32,114,111,111,116,46,32,70,111,114,32,101,120,97,109,
+ 112,108,101,58,10,10,32,32,32,32,32,32,32,32,115,112,
+ 108,105,116,114,111,111,116,40,39,102,111,111,47,98,97,114,
+ 39,41,32,61,61,32,40,39,39,44,32,39,39,44,32,39,
+ 102,111,111,47,98,97,114,39,41,10,32,32,32,32,32,32,
+ 32,32,115,112,108,105,116,114,111,111,116,40,39,47,102,111,
+ 111,47,98,97,114,39,41,32,61,61,32,40,39,39,44,32,
+ 39,47,39,44,32,39,102,111,111,47,98,97,114,39,41,10,
+ 32,32,32,32,32,32,32,32,115,112,108,105,116,114,111,111,
+ 116,40,39,47,47,102,111,111,47,98,97,114,39,41,32,61,
+ 61,32,40,39,39,44,32,39,47,47,39,44,32,39,102,111,
+ 111,47,98,97,114,39,41,10,32,32,32,32,32,32,32,32,
+ 115,112,108,105,116,114,111,111,116,40,39,47,47,47,102,111,
+ 111,47,98,97,114,39,41,32,61,61,32,40,39,39,44,32,
+ 39,47,39,44,32,39,47,47,102,111,111,47,98,97,114,39,
+ 41,10,32,32,32,32,114,49,0,0,0,114,56,0,0,0,
+ 114,4,0,0,0,218,0,78,114,76,0,0,0,233,2,0,
+ 0,0,233,3,0,0,0,41,4,114,59,0,0,0,114,60,
+ 0,0,0,114,50,0,0,0,114,51,0,0,0,41,3,114,
+ 73,0,0,0,114,37,0,0,0,218,5,101,109,112,116,121,
+ 115,3,0,0,0,32,32,32,114,54,0,0,0,114,12,0,
+ 0,0,114,12,0,0,0,138,0,0,0,115,143,0,0,0,
+ 128,0,244,20,0,9,11,143,9,137,9,144,33,139,12,128,
+ 65,220,7,17,144,33,148,85,212,7,27,216,14,18,136,3,
+ 216,16,19,137,5,224,14,17,136,3,216,16,18,136,5,216,
+ 7,8,136,18,136,33,128,117,144,3,130,124,224,15,20,144,
+ 101,152,81,136,127,208,8,30,216,9,10,136,49,136,81,136,
+ 22,144,51,138,29,152,33,152,65,152,97,152,38,160,67,154,
+ 45,224,15,20,144,99,152,49,152,81,152,82,152,53,208,15,
+ 32,208,8,32,240,8,0,16,21,144,97,152,2,152,17,144,
+ 101,152,81,152,113,152,114,152,85,208,15,34,208,8,34,114,
+ 56,0,0,0,99,1,0,0,0,0,0,0,0,0,0,0,
+ 0,3,0,0,0,3,0,0,0,243,116,0,0,0,151,0,
+ 116,1,0,0,0,0,0,0,0,0,106,2,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,0,
+ 171,1,0,0,0,0,0,0,125,0,116,5,0,0,0,0,
+ 0,0,0,0,124,0,171,1,0,0,0,0,0,0,125,1,
+ 124,0,106,7,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,124,1,171,1,0,0,0,0,0,0,
+ 100,1,122,0,0,0,125,2,124,0,124,2,100,2,26,0,
+ 83,0,41,3,122,41,82,101,116,117,114,110,115,32,116,104,
+ 101,32,102,105,110,97,108,32,99,111,109,112,111,110,101,110,
+ 116,32,111,102,32,97,32,112,97,116,104,110,97,109,101,114,
+ 76,0,0,0,78,41,4,114,59,0,0,0,114,60,0,0,
+ 0,114,55,0,0,0,114,78,0,0,0,41,3,114,73,0,
+ 0,0,114,37,0,0,0,114,81,0,0,0,115,3,0,0,
+ 0,32,32,32,114,54,0,0,0,114,15,0,0,0,114,15,
+ 0,0,0,169,0,0,0,115,53,0,0,0,128,0,228,8,
+ 10,143,9,137,9,144,33,139,12,128,65,220,10,18,144,49,
+ 139,43,128,67,216,8,9,143,7,137,7,144,3,139,12,144,
+ 113,209,8,24,128,65,216,11,12,136,81,136,82,136,53,128,
+ 76,114,56,0,0,0,99,1,0,0,0,0,0,0,0,0,
+ 0,0,0,5,0,0,0,3,0,0,0,243,192,0,0,0,
+ 151,0,116,1,0,0,0,0,0,0,0,0,106,2,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 124,0,171,1,0,0,0,0,0,0,125,0,116,5,0,0,
+ 0,0,0,0,0,0,124,0,171,1,0,0,0,0,0,0,
+ 125,1,124,0,106,7,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,124,1,171,1,0,0,0,0,
+ 0,0,100,1,122,0,0,0,125,2,124,0,100,2,124,2,
+ 26,0,125,3,124,3,114,34,124,3,124,1,116,9,0,0,
+ 0,0,0,0,0,0,124,3,171,1,0,0,0,0,0,0,
+ 122,5,0,0,107,55,0,0,114,17,124,3,106,11,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 124,1,171,1,0,0,0,0,0,0,125,3,124,3,83,0,
+ 41,3,122,45,82,101,116,117,114,110,115,32,116,104,101,32,
+ 100,105,114,101,99,116,111,114,121,32,99,111,109,112,111,110,
+ 101,110,116,32,111,102,32,97,32,112,97,116,104,110,97,109,
+ 101,114,76,0,0,0,78,114,77,0,0,0,41,4,114,73,
+ 0,0,0,114,37,0,0,0,114,81,0,0,0,114,82,0,
+ 0,0,115,4,0,0,0,32,32,32,32,114,54,0,0,0,
+ 114,16,0,0,0,114,16,0,0,0,179,0,0,0,115,90,
+ 0,0,0,128,0,228,8,10,143,9,137,9,144,33,139,12,
+ 128,65,220,10,18,144,49,139,43,128,67,216,8,9,143,7,
+ 137,7,144,3,139,12,144,113,209,8,24,128,65,216,11,12,
+ 136,82,136,97,136,53,128,68,217,7,11,144,4,152,3,156,
+ 67,160,4,155,73,153,13,210,16,37,216,15,19,143,123,137,
+ 123,152,51,211,15,31,136,4,216,11,15,128,75,114,56,0,
+ 0,0,99,1,0,0,0,0,0,0,0,0,0,0,0,3,
+ 0,0,0,3,0,0,0,243,46,0,0,0,151,0,116,1,
+ 0,0,0,0,0,0,0,0,106,2,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,124,0,171,1,
+ 0,0,0,0,0,0,1,0,121,1,41,2,122,81,84,101,
+ 115,116,32,119,104,101,116,104,101,114,32,97,32,112,97,116,
+ 104,32,105,115,32,97,32,106,117,110,99,116,105,111,110,10,
+ 32,32,32,32,74,117,110,99,116,105,111,110,115,32,97,114,
+ 101,32,110,111,116,32,97,32,112,97,114,116,32,111,102,32,
+ 112,111,115,105,120,32,115,101,109,97,110,116,105,99,115,70,
+ 114,58,0,0,0,114,52,0,0,0,115,1,0,0,0,32,
+ 114,54,0,0,0,114,47,0,0,0,114,47,0,0,0,192,
+ 0,0,0,115,18,0,0,0,128,0,244,6,0,5,7,135,
+ 73,129,73,136,100,132,79,216,11,16,114,56,0,0,0,99,
+ 1,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,
+ 3,0,0,0,243,90,0,0,0,151,0,9,0,116,1,0,
+ 0,0,0,0,0,0,0,106,2,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,124,0,171,1,0,
+ 0,0,0,0,0,1,0,121,2,35,0,116,4,0,0,0,
+ 0,0,0,0,0,116,6,0,0,0,0,0,0,0,0,102,
+ 2,36,0,114,3,1,0,89,0,121,1,119,0,120,3,89,
+ 0,119,1,41,3,122,67,84,101,115,116,32,119,104,101,116,
+ 104,101,114,32,97,32,112,97,116,104,32,101,120,105,115,116,
+ 115,46,32,32,82,101,116,117,114,110,115,32,84,114,117,101,
+ 32,102,111,114,32,98,114,111,107,101,110,32,115,121,109,98,
+ 111,108,105,99,32,108,105,110,107,115,70,84,41,4,114,59,
+ 0,0,0,218,5,108,115,116,97,116,218,7,79,83,69,114,
+ 114,111,114,218,10,86,97,108,117,101,69,114,114,111,114,114,
+ 52,0,0,0,115,1,0,0,0,32,114,54,0,0,0,114,
+ 24,0,0,0,114,24,0,0,0,201,0,0,0,115,48,0,
+ 0,0,128,0,240,4,3,5,21,220,8,10,143,8,137,8,
+ 144,20,140,14,240,6,0,12,16,248,244,5,0,13,20,148,
+ 90,208,11,32,242,0,1,5,21,217,15,20,240,3,1,5,
+ 21,250,115,12,0,0,0,130,21,24,0,152,15,42,3,169,
+ 1,42,3,99,1,0,0,0,0,0,0,0,0,0,0,0,
+ 4,0,0,0,3,0,0,0,243,250,1,0,0,151,0,9,
+ 0,116,1,0,0,0,0,0,0,0,0,106,2,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,
+ 0,171,1,0,0,0,0,0,0,125,1,116,5,0,0,0,
+ 0,0,0,0,0,106,6,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,124,1,106,8,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,
+ 1,0,0,0,0,0,0,114,1,121,1,116,1,0,0,0,
+ 0,0,0,0,0,106,14,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,124,0,171,1,0,0,0,
+ 0,0,0,125,0,116,17,0,0,0,0,0,0,0,0,124,
+ 0,116,18,0,0,0,0,0,0,0,0,171,2,0,0,0,
+ 0,0,0,114,13,116,21,0,0,0,0,0,0,0,0,124,
+ 0,100,2,171,2,0,0,0,0,0,0,125,2,110,12,116,
+ 21,0,0,0,0,0,0,0,0,124,0,100,3,171,2,0,
+ 0,0,0,0,0,125,2,116,23,0,0,0,0,0,0,0,
+ 0,124,2,171,1,0,0,0,0,0,0,125,2,9,0,116,
+ 1,0,0,0,0,0,0,0,0,106,2,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,124,2,171,
+ 1,0,0,0,0,0,0,125,3,124,1,106,24,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,
+ 4,124,3,106,24,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,125,5,124,4,124,5,107,55,0,
+ 0,114,1,121,4,124,1,106,26,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,125,6,124,3,106,
+ 26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,125,7,124,6,124,7,107,40,0,0,114,1,121,
+ 4,121,1,35,0,116,10,0,0,0,0,0,0,0,0,116,
+ 12,0,0,0,0,0,0,0,0,102,2,36,0,114,3,1,
+ 0,89,0,121,1,119,0,120,3,89,0,119,1,35,0,116,
+ 10,0,0,0,0,0,0,0,0,116,12,0,0,0,0,0,
+ 0,0,0,102,2,36,0,114,3,1,0,89,0,121,1,119,
+ 0,120,3,89,0,119,1,41,5,122,36,84,101,115,116,32,
+ 119,104,101,116,104,101,114,32,97,32,112,97,116,104,32,105,
+ 115,32,97,32,109,111,117,110,116,32,112,111,105,110,116,70,
+ 243,2,0,0,0,46,46,114,3,0,0,0,84,41,14,114,
+ 59,0,0,0,114,97,0,0,0,218,4,115,116,97,116,218,
+ 7,83,95,73,83,76,78,75,218,7,115,116,95,109,111,100,
+ 101,114,98,0,0,0,114,99,0,0,0,114,60,0,0,0,
+ 114,50,0,0,0,114,51,0,0,0,114,10,0,0,0,114,
+ 43,0,0,0,218,6,115,116,95,100,101,118,218,6,115,116,
+ 95,105,110,111,41,8,114,53,0,0,0,218,2,115,49,218,
+ 6,112,97,114,101,110,116,218,2,115,50,218,4,100,101,118,
+ 49,218,4,100,101,118,50,218,4,105,110,111,49,218,4,105,
+ 110,111,50,115,8,0,0,0,32,32,32,32,32,32,32,32,
+ 114,54,0,0,0,114,27,0,0,0,114,27,0,0,0,213,
+ 0,0,0,115,227,0,0,0,128,0,240,4,8,5,25,220,
+ 13,15,143,88,137,88,144,100,139,94,136,2,244,12,0,12,
+ 16,143,60,137,60,152,2,159,10,153,10,212,11,35,216,19,
+ 24,228,11,13,143,57,137,57,144,84,139,63,128,68,220,7,
+ 17,144,36,156,5,212,7,30,220,17,21,144,100,152,69,211,
+ 17,34,137,6,228,17,21,144,100,152,68,211,17,33,136,6,
+ 220,13,21,144,102,211,13,29,128,70,240,2,3,5,21,220,
+ 13,15,143,88,137,88,144,102,211,13,29,136,2,240,8,0,
+ 12,14,143,57,137,57,128,68,216,11,13,143,57,137,57,128,
+ 68,216,7,11,136,116,130,124,216,15,19,216,11,13,143,57,
+ 137,57,128,68,216,11,13,143,57,137,57,128,68,216,7,11,
+ 136,116,130,124,216,15,19,216,11,16,248,244,55,0,13,20,
+ 148,90,208,11,32,242,0,2,5,21,225,15,20,240,5,2,
+ 5,21,251,244,32,0,13,20,148,90,208,11,32,242,0,1,
+ 5,21,217,15,20,240,3,1,5,21,250,115,35,0,0,0,
+ 130,21,67,19,0,194,1,21,67,40,0,195,19,15,67,37,
+ 3,195,36,1,67,37,3,195,40,15,67,58,3,195,57,1,
+ 67,58,3,99,1,0,0,0,0,0,0,0,0,0,0,0,
+ 4,0,0,0,3,0,0,0,243,96,3,0,0,151,0,116,
+ 1,0,0,0,0,0,0,0,0,106,2,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,124,0,171,
+ 1,0,0,0,0,0,0,125,0,116,5,0,0,0,0,0,
+ 0,0,0,124,0,116,6,0,0,0,0,0,0,0,0,171,
+ 2,0,0,0,0,0,0,114,3,100,1,125,1,110,2,100,
+ 2,125,1,124,0,106,9,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,124,1,171,1,0,0,0,
+ 0,0,0,115,2,124,0,83,0,116,11,0,0,0,0,0,
+ 0,0,0,124,0,171,1,0,0,0,0,0,0,125,2,124,
+ 0,106,13,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,124,2,100,3,171,2,0,0,0,0,0,
+ 0,125,3,124,3,100,4,107,2,0,0,114,11,116,15,0,
+ 0,0,0,0,0,0,0,124,0,171,1,0,0,0,0,0,
+ 0,125,3,124,3,100,3,107,40,0,0,114,90,100,5,116,
+ 0,0,0,0,0,0,0,0,0,106,16,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,118,1,114,
+ 52,9,0,100,4,100,6,108,9,125,4,9,0,124,4,106,
+ 23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,116,1,0,0,0,0,0,0,0,0,106,24,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,171,0,0,0,0,0,0,0,171,1,0,0,0,0,0,
+ 0,106,26,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,125,5,110,88,116,0,0,0,0,0,0,
+ 0,0,0,106,16,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,100,5,25,0,0,0,125,5,110,
+ 68,9,0,100,4,100,6,108,9,125,4,124,0,100,3,124,
+ 3,26,0,125,6,116,5,0,0,0,0,0,0,0,0,124,
+ 6,116,6,0,0,0,0,0,0,0,0,171,2,0,0,0,
+ 0,0,0,114,12,116,31,0,0,0,0,0,0,0,0,124,
+ 6,100,7,171,2,0,0,0,0,0,0,125,6,9,0,124,
+ 4,106,33,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,124,6,171,1,0,0,0,0,0,0,125,
+ 7,124,7,106,26,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,125,5,124,5,128,21,116,34,0,
+ 0,0,0,0,0,0,0,106,36,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,100,8,107,40,0,
+ 0,114,2,124,0,83,0,116,5,0,0,0,0,0,0,0,
+ 0,124,0,116,6,0,0,0,0,0,0,0,0,171,2,0,
+ 0,0,0,0,0,114,24,116,1,0,0,0,0,0,0,0,
+ 0,106,38,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,124,5,171,1,0,0,0,0,0,0,125,
+ 5,100,9,125,8,110,2,100,10,125,8,124,5,106,41,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,124,8,171,1,0,0,0,0,0,0,125,5,124,5,124,
+ 0,124,3,100,6,26,0,122,0,0,0,120,1,115,2,1,
+ 0,124,8,83,0,35,0,116,20,0,0,0,0,0,0,0,
+ 0,36,0,114,5,1,0,124,0,99,2,89,0,83,0,119,
+ 0,120,3,89,0,119,1,35,0,116,28,0,0,0,0,0,
+ 0,0,0,36,0,114,5,1,0,124,0,99,2,89,0,83,
+ 0,119,0,120,3,89,0,119,1,35,0,116,20,0,0,0,
+ 0,0,0,0,0,36,0,114,5,1,0,124,0,99,2,89,
+ 0,83,0,119,0,120,3,89,0,119,1,35,0,116,28,0,
+ 0,0,0,0,0,0,0,36,0,114,5,1,0,124,0,99,
+ 2,89,0,83,0,119,0,120,3,89,0,119,1,41,11,122,
+ 79,69,120,112,97,110,100,32,126,32,97,110,100,32,126,117,
+ 115,101,114,32,99,111,110,115,116,114,117,99,116,105,111,110,
+ 115,46,32,32,73,102,32,117,115,101,114,32,111,114,32,36,
+ 72,79,77,69,32,105,115,32,117,110,107,110,111,119,110,44,
+ 10,32,32,32,32,100,111,32,110,111,116,104,105,110,103,46,
+ 243,1,0,0,0,126,250,1,126,114,76,0,0,0,114,6,
+ 0,0,0,218,4,72,79,77,69,78,218,5,65,83,67,73,
+ 73,218,7,118,120,119,111,114,107,115,114,49,0,0,0,114,
+ 4,0,0,0,41,21,114,59,0,0,0,114,60,0,0,0,
+ 114,50,0,0,0,114,51,0,0,0,114,63,0,0,0,114,
+ 55,0,0,0,218,4,102,105,110,100,114,79,0,0,0,218,
+ 7,101,110,118,105,114,111,110,218,3,112,119,100,218,11,73,
+ 109,112,111,114,116,69,114,114,111,114,218,8,103,101,116,112,
+ 119,117,105,100,218,6,103,101,116,117,105,100,218,6,112,119,
+ 95,100,105,114,218,8,75,101,121,69,114,114,111,114,218,3,
+ 115,116,114,218,8,103,101,116,112,119,110,97,109,218,3,115,
+ 121,115,218,8,112,108,97,116,102,111,114,109,218,8,102,115,
+ 101,110,99,111,100,101,114,80,0,0,0,41,9,114,53,0,
+ 0,0,218,5,116,105,108,100,101,114,37,0,0,0,114,81,
+ 0,0,0,114,122,0,0,0,218,8,117,115,101,114,104,111,
+ 109,101,218,4,110,97,109,101,218,5,112,119,101,110,116,218,
+ 4,114,111,111,116,115,9,0,0,0,32,32,32,32,32,32,
+ 32,32,32,114,54,0,0,0,114,28,0,0,0,114,28,0,
+ 0,0,0,1,0,0,115,168,1,0,0,128,0,244,6,0,
+ 12,14,143,57,137,57,144,84,139,63,128,68,220,7,17,144,
+ 36,156,5,212,7,30,216,16,20,137,5,224,16,19,136,5,
+ 216,11,15,143,63,137,63,152,53,212,11,33,216,15,19,136,
+ 11,220,10,18,144,52,139,46,128,67,216,8,12,143,9,137,
+ 9,144,35,144,113,211,8,25,128,65,216,7,8,136,49,130,
+ 117,220,12,15,144,4,139,73,136,1,216,7,8,136,65,130,
+ 118,216,11,17,156,18,159,26,153,26,209,11,35,240,2,4,
+ 13,28,219,16,26,240,8,5,13,28,216,27,30,159,60,153,
+ 60,172,2,175,9,169,9,171,11,211,27,52,215,27,59,209,
+ 27,59,145,8,244,12,0,24,26,151,122,145,122,160,38,209,
+ 23,41,137,72,240,4,4,9,24,219,12,22,240,8,0,16,
+ 20,144,65,144,97,136,121,136,4,220,11,21,144,100,156,69,
+ 212,11,34,220,19,22,144,116,152,87,211,19,37,136,68,240,
+ 2,5,9,24,216,20,23,151,76,145,76,160,20,211,20,38,
+ 136,69,240,10,0,20,25,151,60,145,60,136,8,224,7,15,
+ 208,7,23,156,67,159,76,153,76,168,73,210,28,53,216,15,
+ 19,136,11,220,7,17,144,36,156,5,212,7,30,220,19,21,
+ 151,59,145,59,152,120,211,19,40,136,8,216,15,19,137,4,
+ 224,15,18,136,4,216,15,23,143,127,137,127,152,116,211,15,
+ 36,128,72,216,12,20,144,116,152,65,152,66,144,120,209,12,
+ 31,210,11,40,160,68,208,4,40,248,244,73,1,0,20,31,
+ 242,0,2,13,28,224,23,27,146,11,240,5,2,13,28,251,
+ 244,10,0,20,28,242,0,3,13,28,240,6,0,24,28,146,
+ 11,240,7,3,13,28,251,244,18,0,16,27,242,0,2,9,
+ 24,224,19,23,138,75,240,5,2,9,24,251,244,16,0,16,
+ 24,242,0,3,9,24,240,6,0,20,24,138,75,240,7,3,
+ 9,24,250,115,72,0,0,0,194,3,4,69,44,0,194,8,
+ 45,69,61,0,195,11,4,70,14,0,195,49,17,70,31,0,
+ 197,44,11,69,58,3,197,57,1,69,58,3,197,61,11,70,
+ 11,3,198,10,1,70,11,3,198,14,11,70,28,3,198,27,
+ 1,70,28,3,198,31,11,70,45,3,198,44,1,70,45,3,
+ 99,1,0,0,0,0,0,0,0,0,0,0,0,6,0,0,
+ 0,3,0,0,0,243,44,3,0,0,151,0,116,1,0,0,
+ 0,0,0,0,0,0,106,2,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,124,0,171,1,0,0,
+ 0,0,0,0,125,0,116,5,0,0,0,0,0,0,0,0,
+ 124,0,116,6,0,0,0,0,0,0,0,0,171,2,0,0,
+ 0,0,0,0,114,82,100,1,124,0,118,1,114,2,124,0,
+ 83,0,116,8,0,0,0,0,0,0,0,0,115,32,100,2,
+ 100,3,108,5,125,1,124,1,106,13,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,100,4,124,1,
+ 106,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,171,2,0,0,0,0,0,0,97,4,116,8,
+ 0,0,0,0,0,0,0,0,106,16,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,125,2,100,5,
+ 125,3,100,6,125,4,116,19,0,0,0,0,0,0,0,0,
+ 116,0,0,0,0,0,0,0,0,0,100,7,100,3,171,3,
+ 0,0,0,0,0,0,125,5,110,80,100,8,124,0,118,1,
+ 114,2,124,0,83,0,116,20,0,0,0,0,0,0,0,0,
+ 115,32,100,2,100,3,108,5,125,1,124,1,106,13,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 100,9,124,1,106,14,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,171,2,0,0,0,0,0,0,
+ 97,10,116,20,0,0,0,0,0,0,0,0,106,16,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 125,2,100,10,125,3,100,11,125,4,116,0,0,0,0,0,
+ 0,0,0,0,106,22,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,125,5,100,2,125,6,9,0,
+ 2,0,124,2,124,0,124,6,171,2,0,0,0,0,0,0,
+ 125,7,124,7,115,3,9,0,124,0,83,0,124,7,106,25,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,100,2,171,1,0,0,0,0,0,0,92,2,0,0,
+ 125,6,125,8,124,7,106,27,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,100,12,171,1,0,0,
+ 0,0,0,0,125,9,124,9,106,29,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,124,3,171,1,
+ 0,0,0,0,0,0,114,22,124,9,106,31,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,4,
+ 171,1,0,0,0,0,0,0,114,5,124,9,100,12,100,13,
+ 26,0,125,9,9,0,124,5,128,58,116,1,0,0,0,0,
+ 0,0,0,0,106,32,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,116,0,0,0,0,0,0,0,
+ 0,0,106,22,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,116,1,0,0,0,0,0,0,0,0,
+ 106,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,124,9,171,1,0,0,0,0,0,0,25,0,
+ 0,0,171,1,0,0,0,0,0,0,125,10,110,5,124,5,
+ 124,9,25,0,0,0,125,10,124,0,124,8,100,3,26,0,
+ 125,11,124,0,100,3,124,6,26,0,124,10,122,0,0,0,
+ 125,0,116,37,0,0,0,0,0,0,0,0,124,0,171,1,
+ 0,0,0,0,0,0,125,6,124,0,124,11,122,13,0,0,
+ 125,0,140,186,35,0,116,38,0,0,0,0,0,0,0,0,
+ 36,0,114,5,1,0,124,8,125,6,89,0,140,14,119,0,
+ 120,3,89,0,119,1,41,14,122,90,69,120,112,97,110,100,
+ 32,115,104,101,108,108,32,118,97,114,105,97,98,108,101,115,
+ 32,111,102,32,102,111,114,109,32,36,118,97,114,32,97,110,
+ 100,32,36,123,118,97,114,125,46,32,32,85,110,107,110,111,
+ 119,110,32,118,97,114,105,97,98,108,101,115,10,32,32,32,
+ 32,97,114,101,32,108,101,102,116,32,117,110,99,104,97,110,
+ 103,101,100,46,243,1,0,0,0,36,114,6,0,0,0,78,
+ 115,17,0,0,0,92,36,40,92,119,43,124,92,123,91,94,
+ 125,93,42,92,125,41,243,1,0,0,0,123,243,1,0,0,
+ 0,125,218,8,101,110,118,105,114,111,110,98,250,1,36,122,
+ 17,92,36,40,92,119,43,124,92,123,91,94,125,93,42,92,
+ 125,41,250,1,123,250,1,125,114,76,0,0,0,233,255,255,
+ 255,255,41,20,114,59,0,0,0,114,60,0,0,0,114,50,
+ 0,0,0,114,51,0,0,0,218,9,95,118,97,114,112,114,
+ 111,103,98,218,2,114,101,218,7,99,111,109,112,105,108,101,
+ 114,118,0,0,0,218,6,115,101,97,114,99,104,218,7,103,
+ 101,116,97,116,116,114,218,8,95,118,97,114,112,114,111,103,
+ 114,121,0,0,0,218,4,115,112,97,110,218,5,103,114,111,
+ 117,112,114,63,0,0,0,114,66,0,0,0,114,132,0,0,
+ 0,218,8,102,115,100,101,99,111,100,101,114,79,0,0,0,
+ 114,127,0,0,0,41,12,114,53,0,0,0,114,148,0,0,
+ 0,114,150,0,0,0,218,5,115,116,97,114,116,218,3,101,
+ 110,100,114,121,0,0,0,114,81,0,0,0,218,1,109,218,
+ 1,106,114,135,0,0,0,218,5,118,97,108,117,101,114,83,
+ 0,0,0,115,12,0,0,0,32,32,32,32,32,32,32,32,
+ 32,32,32,32,114,54,0,0,0,114,29,0,0,0,114,29,
+ 0,0,0,64,1,0,0,115,136,1,0,0,128,0,244,6,
+ 0,12,14,143,57,137,57,144,84,139,63,128,68,228,7,17,
+ 144,36,156,5,212,7,30,216,11,15,144,116,209,11,27,216,
+ 19,23,136,75,221,15,24,219,12,21,216,24,26,159,10,153,
+ 10,208,35,56,184,34,191,40,185,40,211,24,67,136,73,220,
+ 17,26,215,17,33,209,17,33,136,6,216,16,20,136,5,216,
+ 14,18,136,3,220,18,25,156,34,152,106,168,36,211,18,47,
+ 137,7,224,11,14,144,100,137,63,216,19,23,136,75,221,15,
+ 23,219,12,21,216,23,25,151,122,145,122,208,34,54,184,2,
+ 191,8,185,8,211,23,65,136,72,220,17,25,151,31,145,31,
+ 136,6,216,16,19,136,5,216,14,17,136,3,220,18,20,151,
+ 42,145,42,136,7,216,8,9,128,65,216,10,14,217,12,18,
+ 144,52,152,17,139,79,136,1,217,15,16,216,12,17,240,34,
+ 0,12,16,128,75,240,33,0,16,17,143,118,137,118,144,97,
+ 139,121,137,4,136,1,136,49,216,15,16,143,119,137,119,144,
+ 113,139,122,136,4,216,11,15,143,63,137,63,152,53,212,11,
+ 33,160,100,167,109,161,109,176,67,212,38,56,216,19,23,152,
+ 1,152,34,144,58,136,68,240,2,11,9,25,216,15,22,136,
+ 127,220,24,26,159,11,153,11,164,66,167,74,161,74,172,114,
+ 175,123,169,123,184,52,211,47,64,209,36,65,211,24,66,145,
+ 5,224,24,31,160,4,153,13,144,5,240,8,0,20,24,152,
+ 1,152,2,144,56,136,68,216,19,23,152,2,152,17,144,56,
+ 152,101,209,19,35,136,68,220,16,19,144,68,147,9,136,65,
+ 216,12,16,144,68,137,76,136,68,240,39,0,11,15,248,244,
+ 26,0,16,24,242,0,1,9,18,216,16,17,138,65,240,3,
+ 1,9,18,250,115,19,0,0,0,196,38,65,1,70,5,0,
+ 198,5,11,70,19,3,198,18,1,70,19,3,41,1,218,14,
+ 95,112,97,116,104,95,110,111,114,109,112,97,116,104,99,1,
+ 0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,3,
+ 0,0,0,243,212,0,0,0,151,0,116,1,0,0,0,0,
+ 0,0,0,0,106,2,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,124,0,171,1,0,0,0,0,
+ 0,0,125,0,116,5,0,0,0,0,0,0,0,0,124,0,
+ 116,6,0,0,0,0,0,0,0,0,171,2,0,0,0,0,
+ 0,0,114,53,116,1,0,0,0,0,0,0,0,0,106,8,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,116,11,0,0,0,0,0,0,0,0,116,1,0,0,
+ 0,0,0,0,0,0,106,12,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,124,0,171,1,0,0,
+ 0,0,0,0,171,1,0,0,0,0,0,0,171,1,0,0,
+ 0,0,0,0,120,1,115,2,1,0,100,1,83,0,116,11,
+ 0,0,0,0,0,0,0,0,124,0,171,1,0,0,0,0,
+ 0,0,120,1,115,2,1,0,100,2,83,0,41,3,250,48,
+ 78,111,114,109,97,108,105,122,101,32,112,97,116,104,44,32,
+ 101,108,105,109,105,110,97,116,105,110,103,32,100,111,117,98,
+ 108,101,32,115,108,97,115,104,101,115,44,32,101,116,99,46,
+ 114,85,0,0,0,114,2,0,0,0,41,7,114,59,0,0,
+ 0,114,60,0,0,0,114,50,0,0,0,114,51,0,0,0,
+ 114,132,0,0,0,114,161,0,0,0,114,155,0,0,0,114,
+ 52,0,0,0,115,1,0,0,0,32,114,54,0,0,0,114,
+ 30,0,0,0,114,30,0,0,0,152,1,0,0,115,75,0,
+ 0,0,128,0,228,15,17,143,121,137,121,152,20,139,127,136,
+ 4,220,11,21,144,100,156,69,212,11,34,220,19,21,151,59,
+ 145,59,156,126,172,98,175,107,169,107,184,36,211,46,63,211,
+ 31,64,211,19,65,210,19,73,192,84,208,12,73,220,15,29,
+ 152,100,211,15,35,210,15,42,160,115,208,8,42,114,56,0,
+ 0,0,99,1,0,0,0,0,0,0,0,0,0,0,0,4,
+ 0,0,0,3,0,0,0,243,132,1,0,0,151,0,116,1,
+ 0,0,0,0,0,0,0,0,106,2,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,124,0,171,1,
+ 0,0,0,0,0,0,125,0,116,5,0,0,0,0,0,0,
+ 0,0,124,0,116,6,0,0,0,0,0,0,0,0,171,2,
+ 0,0,0,0,0,0,114,9,100,1,125,1,100,2,125,2,
+ 100,3,125,3,100,4,125,4,110,8,100,5,125,1,100,6,
+ 125,2,100,7,125,3,100,8,125,4,124,0,124,2,107,40,
+ 0,0,114,2,124,3,83,0,116,9,0,0,0,0,0,0,
+ 0,0,124,0,171,1,0,0,0,0,0,0,92,3,0,0,
+ 125,5,125,6,125,0,124,0,106,11,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,124,1,171,1,
+ 0,0,0,0,0,0,125,7,103,0,125,8,124,7,68,0,
+ 93,65,0,0,125,9,124,9,124,2,124,3,102,2,118,0,
+ 114,1,140,10,124,9,124,4,107,55,0,0,115,14,124,6,
+ 115,2,124,8,114,10,124,8,114,26,124,8,100,9,25,0,
+ 0,0,124,4,107,40,0,0,114,18,124,8,106,13,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 124,9,171,1,0,0,0,0,0,0,1,0,140,47,124,8,
+ 115,1,140,50,124,8,106,15,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,171,0,0,0,0,0,
+ 0,0,1,0,140,67,4,0,124,8,125,7,124,6,124,1,
+ 106,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,124,7,171,1,0,0,0,0,0,0,122,0,
+ 0,0,125,0,124,0,120,1,115,2,1,0,124,3,83,0,
+ 41,10,114,163,0,0,0,114,49,0,0,0,114,56,0,0,
+ 0,114,85,0,0,0,114,101,0,0,0,114,4,0,0,0,
+ 114,89,0,0,0,114,2,0,0,0,114,3,0,0,0,114,
+ 146,0,0,0,41,9,114,59,0,0,0,114,60,0,0,0,
+ 114,50,0,0,0,114,51,0,0,0,114,12,0,0,0,114,
+ 13,0,0,0,218,6,97,112,112,101,110,100,218,3,112,111,
+ 112,114,10,0,0,0,41,10,114,53,0,0,0,114,37,0,
+ 0,0,114,92,0,0,0,218,3,100,111,116,218,6,100,111,
+ 116,100,111,116,218,1,95,218,15,105,110,105,116,105,97,108,
+ 95,115,108,97,115,104,101,115,218,5,99,111,109,112,115,218,
+ 9,110,101,119,95,99,111,109,112,115,218,4,99,111,109,112,
+ 115,10,0,0,0,32,32,32,32,32,32,32,32,32,32,114,
+ 54,0,0,0,114,30,0,0,0,114,30,0,0,0,121,1,
+ 0,0,115,227,0,0,0,128,0,228,15,17,143,121,137,121,
+ 152,20,139,127,136,4,220,11,21,144,100,156,69,212,11,34,
+ 216,18,22,136,67,216,20,23,136,69,216,18,22,136,67,216,
+ 21,26,137,70,224,18,21,136,67,216,20,22,136,69,216,18,
+ 21,136,67,216,21,25,136,70,216,11,15,144,53,138,61,216,
+ 19,22,136,74,220,35,44,168,84,163,63,209,8,32,136,1,
+ 136,63,152,68,216,16,20,151,10,145,10,152,51,147,15,136,
+ 5,216,20,22,136,9,216,20,25,242,0,7,9,32,136,68,
+ 216,15,19,152,5,152,115,144,124,209,15,35,216,16,24,216,
+ 16,20,152,6,146,14,161,127,185,121,217,18,27,160,9,168,
+ 34,161,13,176,22,210,32,55,216,16,25,215,16,32,209,16,
+ 32,160,20,213,16,38,218,17,26,216,16,25,151,13,145,13,
+ 149,15,240,15,7,9,32,240,16,0,17,26,136,5,216,15,
+ 30,160,19,167,24,161,24,168,37,163,31,209,15,48,136,4,
+ 216,15,19,138,123,144,115,208,8,26,114,56,0,0,0,99,
+ 1,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,
+ 3,0,0,0,243,226,0,0,0,151,0,116,1,0,0,0,
+ 0,0,0,0,0,106,2,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,124,0,171,1,0,0,0,
+ 0,0,0,125,0,116,5,0,0,0,0,0,0,0,0,124,
+ 0,171,1,0,0,0,0,0,0,115,69,116,7,0,0,0,
+ 0,0,0,0,0,124,0,116,8,0,0,0,0,0,0,0,
+ 0,171,2,0,0,0,0,0,0,114,21,116,1,0,0,0,
+ 0,0,0,0,0,106,10,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,171,0,0,0,0,0,0,
+ 0,125,1,110,20,116,1,0,0,0,0,0,0,0,0,106,
+ 12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,171,0,0,0,0,0,0,0,125,1,116,15,0,
+ 0,0,0,0,0,0,0,124,1,124,0,171,2,0,0,0,
+ 0,0,0,125,0,116,17,0,0,0,0,0,0,0,0,124,
+ 0,171,1,0,0,0,0,0,0,83,0,41,1,122,24,82,
+ 101,116,117,114,110,32,97,110,32,97,98,115,111,108,117,116,
+ 101,32,112,97,116,104,46,41,9,114,59,0,0,0,114,60,
+ 0,0,0,114,9,0,0,0,114,50,0,0,0,114,51,0,
+ 0,0,218,7,103,101,116,99,119,100,98,218,6,103,101,116,
+ 99,119,100,114,10,0,0,0,114,30,0,0,0,41,2,114,
+ 53,0,0,0,218,3,99,119,100,115,2,0,0,0,32,32,
+ 114,54,0,0,0,114,31,0,0,0,114,31,0,0,0,160,
+ 1,0,0,115,75,0,0,0,128,0,228,11,13,143,57,137,
+ 57,144,84,139,63,128,68,220,11,16,144,20,140,59,220,11,
+ 21,144,100,156,69,212,11,34,220,18,20,151,42,145,42,147,
+ 44,137,67,228,18,20,151,41,145,41,147,43,136,67,220,15,
+ 19,144,67,152,20,139,127,136,4,220,11,19,144,68,139,62,
+ 208,4,25,114,56,0,0,0,70,41,1,218,6,115,116,114,
+ 105,99,116,99,1,0,0,0,0,0,0,0,1,0,0,0,
+ 6,0,0,0,3,0,0,0,243,106,0,0,0,151,0,116,
+ 1,0,0,0,0,0,0,0,0,106,2,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,124,0,171,
+ 1,0,0,0,0,0,0,125,0,116,5,0,0,0,0,0,
+ 0,0,0,124,0,100,1,100,2,26,0,124,0,124,1,105,
+ 0,171,4,0,0,0,0,0,0,92,2,0,0,125,2,125,
+ 3,116,7,0,0,0,0,0,0,0,0,124,2,171,1,0,
+ 0,0,0,0,0,83,0,41,3,122,108,82,101,116,117,114,
+ 110,32,116,104,101,32,99,97,110,111,110,105,99,97,108,32,
+ 112,97,116,104,32,111,102,32,116,104,101,32,115,112,101,99,
+ 105,102,105,101,100,32,102,105,108,101,110,97,109,101,44,32,
+ 101,108,105,109,105,110,97,116,105,110,103,32,97,110,121,10,
+ 115,121,109,98,111,108,105,99,32,108,105,110,107,115,32,101,
+ 110,99,111,117,110,116,101,114,101,100,32,105,110,32,116,104,
+ 101,32,112,97,116,104,46,78,114,6,0,0,0,41,4,114,
+ 59,0,0,0,114,60,0,0,0,218,13,95,106,111,105,110,
+ 114,101,97,108,112,97,116,104,114,31,0,0,0,41,4,218,
+ 8,102,105,108,101,110,97,109,101,114,178,0,0,0,114,53,
+ 0,0,0,218,2,111,107,115,4,0,0,0,32,32,32,32,
+ 114,54,0,0,0,114,43,0,0,0,114,43,0,0,0,175,
+ 1,0,0,115,54,0,0,0,128,0,244,6,0,16,18,143,
+ 121,137,121,152,24,211,15,34,128,72,220,15,28,152,88,160,
+ 98,160,113,152,92,168,56,176,86,184,82,211,15,64,129,72,
+ 128,68,136,34,220,11,18,144,52,139,61,208,4,24,114,56,
+ 0,0,0,99,4,0,0,0,0,0,0,0,0,0,0,0,
+ 6,0,0,0,3,0,0,0,243,154,2,0,0,151,0,116,
+ 1,0,0,0,0,0,0,0,0,124,0,116,2,0,0,0,
+ 0,0,0,0,0,171,2,0,0,0,0,0,0,114,7,100,
+ 1,125,4,100,2,125,5,100,3,125,6,110,6,100,4,125,
+ 4,100,5,125,5,100,6,125,6,116,5,0,0,0,0,0,
+ 0,0,0,124,1,171,1,0,0,0,0,0,0,114,7,124,
+ 1,100,7,100,0,26,0,125,1,124,4,125,0,124,1,144,
+ 1,114,2,124,1,106,7,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,124,4,171,1,0,0,0,
+ 0,0,0,92,3,0,0,125,7,125,8,125,1,124,7,114,
+ 5,124,7,124,5,107,40,0,0,114,1,140,32,124,7,124,
+ 6,107,40,0,0,114,38,124,0,114,33,116,9,0,0,0,
+ 0,0,0,0,0,124,0,171,1,0,0,0,0,0,0,92,
+ 2,0,0,125,0,125,7,124,7,124,6,107,40,0,0,114,
+ 16,116,11,0,0,0,0,0,0,0,0,124,0,124,6,124,
+ 6,171,3,0,0,0,0,0,0,125,0,110,2,124,6,125,
+ 0,140,75,116,11,0,0,0,0,0,0,0,0,124,0,124,
+ 7,171,2,0,0,0,0,0,0,125,9,9,0,116,13,0,
+ 0,0,0,0,0,0,0,106,14,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,124,9,171,1,0,
+ 0,0,0,0,0,125,10,116,17,0,0,0,0,0,0,0,
+ 0,106,18,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,124,10,106,20,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,171,1,0,0,0,
+ 0,0,0,125,11,124,11,115,3,124,9,125,0,140,145,124,
+ 9,124,3,118,0,114,46,124,3,124,9,25,0,0,0,125,
+ 0,124,0,129,1,140,157,124,2,114,22,116,13,0,0,0,
+ 0,0,0,0,0,106,16,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,124,9,171,1,0,0,0,
+ 0,0,0,1,0,110,14,116,11,0,0,0,0,0,0,0,
+ 0,124,9,124,1,171,2,0,0,0,0,0,0,100,8,102,
+ 2,83,0,100,0,124,3,124,9,60,0,0,0,116,25,0,
+ 0,0,0,0,0,0,0,124,0,116,13,0,0,0,0,0,
+ 0,0,0,106,26,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,124,9,171,1,0,0,0,0,0,
+ 0,124,2,124,3,171,4,0,0,0,0,0,0,92,2,0,
+ 0,125,0,125,12,124,12,115,14,116,11,0,0,0,0,0,
+ 0,0,0,124,0,124,1,171,2,0,0,0,0,0,0,100,
+ 8,102,2,83,0,124,0,124,3,124,9,60,0,0,0,124,
+ 1,114,2,144,1,140,2,124,0,100,9,102,2,83,0,35,
+ 0,116,22,0,0,0,0,0,0,0,0,36,0,114,8,1,
+ 0,124,2,114,1,130,0,100,8,125,11,89,0,140,141,119,
+ 0,120,3,89,0,119,1,41,10,78,114,49,0,0,0,114,
+ 85,0,0,0,114,101,0,0,0,114,4,0,0,0,114,2,
+ 0,0,0,114,3,0,0,0,114,76,0,0,0,70,84,41,
+ 14,114,50,0,0,0,114,51,0,0,0,114,9,0,0,0,
+ 218,9,112,97,114,116,105,116,105,111,110,114,13,0,0,0,
+ 114,10,0,0,0,114,59,0,0,0,114,97,0,0,0,114,
+ 102,0,0,0,114,103,0,0,0,114,104,0,0,0,114,98,
+ 0,0,0,114,180,0,0,0,218,8,114,101,97,100,108,105,
+ 110,107,41,13,114,53,0,0,0,218,4,114,101,115,116,114,
+ 178,0,0,0,218,4,115,101,101,110,114,37,0,0,0,114,
+ 35,0,0,0,114,36,0,0,0,114,135,0,0,0,114,169,
+ 0,0,0,218,7,110,101,119,112,97,116,104,218,2,115,116,
+ 218,7,105,115,95,108,105,110,107,114,182,0,0,0,115,13,
+ 0,0,0,32,32,32,32,32,32,32,32,32,32,32,32,32,
+ 114,54,0,0,0,114,180,0,0,0,114,180,0,0,0,184,
+ 1,0,0,115,133,1,0,0,128,0,220,7,17,144,36,156,
+ 5,212,7,30,216,14,18,136,3,216,17,21,136,6,216,17,
+ 22,137,6,224,14,17,136,3,216,17,20,136,6,216,17,21,
+ 136,6,228,7,12,136,84,132,123,216,15,19,144,65,144,66,
+ 136,120,136,4,216,15,18,136,4,226,10,14,216,24,28,159,
+ 14,153,14,160,115,211,24,43,137,13,136,4,136,97,144,20,
+ 217,15,19,144,116,152,118,146,126,224,12,20,216,11,15,144,
+ 54,138,62,225,15,19,220,29,34,160,52,155,91,145,10,144,
+ 4,144,100,216,19,23,152,54,146,62,220,27,31,160,4,160,
+ 102,168,102,211,27,53,145,68,224,23,29,144,4,216,12,20,
+ 220,18,22,144,116,152,84,211,18,34,136,7,240,2,7,9,
+ 47,220,17,19,151,24,145,24,152,39,211,17,34,136,66,244,
+ 12,0,23,27,151,108,145,108,160,50,167,58,161,58,211,22,
+ 46,136,71,217,15,22,216,19,26,136,68,216,12,20,224,11,
+ 18,144,100,137,63,224,19,23,152,7,145,61,136,68,216,15,
+ 19,208,15,31,224,16,24,225,15,21,228,16,18,151,7,145,
+ 7,152,7,213,16,32,244,6,0,24,28,152,71,160,84,211,
+ 23,42,168,69,208,23,49,208,16,49,216,24,28,136,4,136,
+ 87,137,13,220,19,32,160,20,164,114,167,123,161,123,176,55,
+ 211,39,59,184,86,192,84,211,19,74,137,8,136,4,136,98,
+ 217,15,17,220,19,23,152,4,152,100,211,19,35,160,85,208,
+ 19,42,208,12,42,216,24,28,136,4,136,87,137,13,243,89,
+ 1,0,11,15,240,92,1,0,12,16,144,20,136,58,208,4,
+ 21,248,244,59,0,16,23,242,0,3,9,28,217,15,21,216,
+ 16,21,216,22,27,138,71,240,7,3,9,28,250,115,18,0,
+ 0,0,194,8,21,68,57,0,196,57,14,69,10,3,197,9,
+ 1,69,10,3,218,6,100,97,114,119,105,110,99,2,0,0,
+ 0,0,0,0,0,0,0,0,0,6,0,0,0,3,0,0,
+ 0,243,80,2,0,0,151,0,124,0,115,11,116,1,0,0,
+ 0,0,0,0,0,0,100,1,171,1,0,0,0,0,0,0,
+ 130,1,116,3,0,0,0,0,0,0,0,0,106,4,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 124,0,171,1,0,0,0,0,0,0,125,0,116,7,0,0,
+ 0,0,0,0,0,0,124,0,116,8,0,0,0,0,0,0,
+ 0,0,171,2,0,0,0,0,0,0,114,7,100,2,125,2,
+ 100,3,125,3,100,4,125,4,110,6,100,5,125,2,100,6,
+ 125,3,100,7,125,4,124,1,128,3,124,2,125,1,110,21,
+ 116,3,0,0,0,0,0,0,0,0,106,4,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,1,
+ 171,1,0,0,0,0,0,0,125,1,9,0,116,11,0,0,
+ 0,0,0,0,0,0,124,1,171,1,0,0,0,0,0,0,
+ 106,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,124,3,171,1,0,0,0,0,0,0,68,0,
+ 143,5,99,2,103,0,99,2,93,7,0,0,125,5,124,5,
+ 115,1,140,6,124,5,145,2,140,9,4,0,125,6,125,5,
+ 116,11,0,0,0,0,0,0,0,0,124,0,171,1,0,0,
+ 0,0,0,0,106,13,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,124,3,171,1,0,0,0,0,
+ 0,0,68,0,143,5,99,2,103,0,99,2,93,7,0,0,
+ 125,5,124,5,115,1,140,6,124,5,145,2,140,9,4,0,
+ 125,7,125,5,116,15,0,0,0,0,0,0,0,0,116,17,
+ 0,0,0,0,0,0,0,0,124,6,124,7,103,2,171,1,
+ 0,0,0,0,0,0,171,1,0,0,0,0,0,0,125,8,
+ 124,4,103,1,116,15,0,0,0,0,0,0,0,0,124,6,
+ 171,1,0,0,0,0,0,0,124,8,122,10,0,0,122,5,
+ 0,0,124,7,124,8,100,8,26,0,122,0,0,0,125,9,
+ 124,9,115,2,124,2,83,0,116,19,0,0,0,0,0,0,
+ 0,0,124,9,142,0,83,0,99,2,1,0,99,2,125,5,
+ 119,0,99,2,1,0,99,2,125,5,119,0,35,0,116,20,
+ 0,0,0,0,0,0,0,0,116,22,0,0,0,0,0,0,
+ 0,0,116,24,0,0,0,0,0,0,0,0,116,26,0,0,
+ 0,0,0,0,0,0,102,4,36,0,114,25,1,0,116,29,
+ 0,0,0,0,0,0,0,0,106,30,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,100,9,124,0,
+ 124,1,171,3,0,0,0,0,0,0,1,0,130,0,119,0,
+ 120,3,89,0,119,1,41,10,122,35,82,101,116,117,114,110,
+ 32,97,32,114,101,108,97,116,105,118,101,32,118,101,114,115,
+ 105,111,110,32,111,102,32,97,32,112,97,116,104,122,17,110,
+ 111,32,112,97,116,104,32,115,112,101,99,105,102,105,101,100,
+ 114,85,0,0,0,114,49,0,0,0,114,101,0,0,0,114,
+ 2,0,0,0,114,4,0,0,0,114,3,0,0,0,78,114,
+ 45,0,0,0,41,16,114,99,0,0,0,114,59,0,0,0,
+ 114,60,0,0,0,114,50,0,0,0,114,51,0,0,0,114,
+ 31,0,0,0,114,13,0,0,0,114,79,0,0,0,114,17,
+ 0,0,0,114,10,0,0,0,114,67,0,0,0,114,68,0,
+ 0,0,114,69,0,0,0,218,18,68,101,112,114,101,99,97,
+ 116,105,111,110,87,97,114,110,105,110,103,114,70,0,0,0,
+ 114,71,0,0,0,41,10,114,53,0,0,0,114,156,0,0,
+ 0,114,35,0,0,0,114,37,0,0,0,114,36,0,0,0,
+ 218,1,120,218,10,115,116,97,114,116,95,108,105,115,116,218,
+ 9,112,97,116,104,95,108,105,115,116,114,81,0,0,0,218,
+ 8,114,101,108,95,108,105,115,116,115,10,0,0,0,32,32,
+ 32,32,32,32,32,32,32,32,114,54,0,0,0,114,45,0,
+ 0,0,114,45,0,0,0,249,1,0,0,115,44,1,0,0,
+ 128,0,241,6,0,12,16,220,14,24,208,25,44,211,14,45,
+ 208,8,45,228,11,13,143,57,137,57,144,84,139,63,128,68,
+ 220,7,17,144,36,156,5,212,7,30,216,17,21,136,6,216,
+ 14,18,136,3,216,17,22,137,6,224,17,20,136,6,216,14,
+ 17,136,3,216,17,21,136,6,224,7,12,128,125,216,16,22,
+ 137,5,228,16,18,151,9,145,9,152,37,211,16,32,136,5,
+ 240,4,12,5,14,220,33,40,168,21,163,30,215,33,53,209,
+ 33,53,176,99,211,33,58,214,21,64,152,65,186,97,146,97,
+ 208,21,64,136,10,208,21,64,220,32,39,168,4,163,13,215,
+ 32,51,209,32,51,176,67,211,32,56,214,20,62,152,49,186,
+ 65,146,81,208,20,62,136,9,208,20,62,228,12,15,148,12,
+ 152,106,168,41,208,29,52,211,16,53,211,12,54,136,1,224,
+ 20,26,144,56,156,115,160,58,155,127,168,113,209,31,48,209,
+ 19,49,176,73,184,97,184,98,176,77,209,19,65,136,8,217,
+ 15,23,216,19,25,136,77,220,15,19,144,88,136,127,208,8,
+ 30,249,242,17,0,22,65,1,249,218,20,62,248,244,16,0,
+ 13,22,148,126,164,124,212,53,71,208,11,72,242,0,2,5,
+ 14,220,8,19,215,8,36,209,8,36,160,89,176,4,176,101,
+ 212,8,60,216,8,13,240,5,2,5,14,250,115,60,0,0,
+ 0,193,27,28,67,51,0,193,55,7,67,41,4,193,63,4,
+ 67,41,4,194,3,30,67,51,0,194,33,7,67,46,4,194,
+ 41,4,67,46,4,194,45,51,67,51,0,195,33,7,67,51,
+ 0,195,41,10,67,51,0,195,51,50,68,37,3,99,1,0,
+ 0,0,0,0,0,0,0,0,0,0,9,0,0,0,3,0,
+ 0,0,243,172,2,0,0,135,12,151,0,124,0,115,11,116,
+ 1,0,0,0,0,0,0,0,0,100,1,171,1,0,0,0,
+ 0,0,0,130,1,116,3,0,0,0,0,0,0,0,0,116,
+ 5,0,0,0,0,0,0,0,0,116,6,0,0,0,0,0,
+ 0,0,0,106,8,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,124,0,171,2,0,0,0,0,0,
+ 0,171,1,0,0,0,0,0,0,125,0,116,11,0,0,0,
+ 0,0,0,0,0,124,0,100,2,25,0,0,0,116,12,0,
+ 0,0,0,0,0,0,0,171,2,0,0,0,0,0,0,114,
+ 5,100,3,138,12,100,4,125,1,110,4,100,5,138,12,100,
+ 6,125,1,9,0,124,0,68,0,143,2,99,2,103,0,99,
+ 2,93,19,0,0,125,2,124,2,106,15,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,137,12,171,
+ 1,0,0,0,0,0,0,145,2,140,21,4,0,125,3,125,
+ 2,9,0,116,17,0,0,0,0,0,0,0,0,136,12,102,
+ 1,100,7,132,8,124,0,68,0,171,0,0,0,0,0,0,
+ 0,171,1,0,0,0,0,0,0,92,1,0,0,125,4,124,
+ 3,68,0,143,5,143,6,99,3,103,0,99,2,93,27,0,
+ 0,125,5,124,5,68,0,143,6,99,2,103,0,99,2,93,
+ 13,0,0,125,6,124,6,115,1,140,6,124,6,124,1,107,
+ 55,0,0,115,1,140,12,124,6,145,2,140,15,4,0,99,
+ 2,125,6,145,2,140,29,4,0,125,3,125,5,125,6,116,
+ 19,0,0,0,0,0,0,0,0,124,3,171,1,0,0,0,
+ 0,0,0,125,7,116,21,0,0,0,0,0,0,0,0,124,
+ 3,171,1,0,0,0,0,0,0,125,8,124,7,125,9,116,
+ 23,0,0,0,0,0,0,0,0,124,7,171,1,0,0,0,
+ 0,0,0,68,0,93,20,0,0,92,2,0,0,125,10,125,
+ 6,124,6,124,8,124,10,25,0,0,0,107,55,0,0,115,
+ 1,140,15,124,7,100,9,124,10,26,0,125,9,1,0,110,
+ 1,4,0,124,4,114,2,137,12,110,4,137,12,100,9,100,
+ 2,26,0,125,11,124,11,137,12,106,25,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,124,9,171,
+ 1,0,0,0,0,0,0,122,0,0,0,83,0,99,2,1,
+ 0,99,2,125,2,119,0,35,0,116,0,0,0,0,0,0,
+ 0,0,0,36,0,114,13,1,0,116,1,0,0,0,0,0,
+ 0,0,0,100,8,171,1,0,0,0,0,0,0,100,9,130,
+ 2,119,0,120,3,89,0,119,1,99,2,1,0,99,2,125,
+ 6,119,0,99,2,1,0,99,3,125,6,125,5,119,0,35,
+ 0,116,26,0,0,0,0,0,0,0,0,116,28,0,0,0,
+ 0,0,0,0,0,102,2,36,0,114,24,1,0,116,31,0,
+ 0,0,0,0,0,0,0,106,32,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,100,10,103,1,124,
+ 0,162,1,173,6,142,0,1,0,130,0,119,0,120,3,89,
+ 0,119,1,41,11,122,68,71,105,118,101,110,32,97,32,115,
+ 101,113,117,101,110,99,101,32,111,102,32,112,97,116,104,32,
+ 110,97,109,101,115,44,32,114,101,116,117,114,110,115,32,116,
+ 104,101,32,108,111,110,103,101,115,116,32,99,111,109,109,111,
+ 110,32,115,117,98,45,112,97,116,104,46,122,37,99,111,109,
+ 109,111,110,112,97,116,104,40,41,32,97,114,103,32,105,115,
+ 32,97,110,32,101,109,112,116,121,32,115,101,113,117,101,110,
+ 99,101,114,6,0,0,0,114,49,0,0,0,114,85,0,0,
+ 0,114,4,0,0,0,114,2,0,0,0,99,1,0,0,0,
+ 0,0,0,0,0,0,0,0,4,0,0,0,51,0,0,0,
+ 243,46,0,0,0,149,1,75,0,1,0,151,0,124,0,93,
+ 12,0,0,125,1,124,1,100,0,100,1,26,0,137,2,107,
+ 40,0,0,150,1,151,1,1,0,140,14,4,0,121,0,173,
+ 3,119,1,41,2,78,114,76,0,0,0,169,0,41,3,218,
+ 2,46,48,114,73,0,0,0,114,37,0,0,0,115,3,0,
+ 0,0,32,32,128,114,54,0,0,0,250,9,60,103,101,110,
+ 101,120,112,114,62,122,29,99,111,109,109,111,110,112,97,116,
+ 104,46,60,108,111,99,97,108,115,62,46,60,103,101,110,101,
+ 120,112,114,62,52,2,0,0,115,27,0,0,0,248,232,0,
+ 248,128,0,210,24,53,168,33,152,17,152,50,152,65,152,21,
+ 160,35,157,28,209,24,53,249,115,4,0,0,0,131,18,21,
+ 1,122,37,67,97,110,39,116,32,109,105,120,32,97,98,115,
+ 111,108,117,116,101,32,97,110,100,32,114,101,108,97,116,105,
+ 118,101,32,112,97,116,104,115,78,114,46,0,0,0,41,17,
+ 114,99,0,0,0,218,5,116,117,112,108,101,114,65,0,0,
+ 0,114,59,0,0,0,114,60,0,0,0,114,50,0,0,0,
+ 114,51,0,0,0,114,13,0,0,0,218,3,115,101,116,218,
+ 3,109,105,110,218,3,109,97,120,218,9,101,110,117,109,101,
+ 114,97,116,101,114,10,0,0,0,114,67,0,0,0,114,68,
+ 0,0,0,114,70,0,0,0,114,71,0,0,0,41,13,218,
+ 5,112,97,116,104,115,114,35,0,0,0,114,53,0,0,0,
+ 218,11,115,112,108,105,116,95,112,97,116,104,115,114,9,0,
+ 0,0,114,61,0,0,0,218,1,99,114,107,0,0,0,114,
+ 109,0,0,0,218,6,99,111,109,109,111,110,114,81,0,0,
+ 0,218,6,112,114,101,102,105,120,114,37,0,0,0,115,13,
+ 0,0,0,32,32,32,32,32,32,32,32,32,32,32,32,64,
+ 114,54,0,0,0,114,46,0,0,0,114,46,0,0,0,34,
+ 2,0,0,115,116,1,0,0,248,128,0,241,6,0,12,17,
+ 220,14,24,208,25,64,211,14,65,208,8,65,228,12,17,148,
+ 35,148,98,151,105,145,105,160,21,211,18,39,211,12,40,128,
+ 69,220,7,17,144,37,152,1,145,40,156,69,212,7,34,216,
+ 14,18,136,3,216,17,21,137,6,224,14,17,136,3,216,17,
+ 20,136,6,240,4,21,5,14,216,51,56,214,22,57,168,52,
+ 144,116,151,122,145,122,160,35,149,127,208,22,57,136,11,208,
+ 22,57,240,4,3,9,80,1,220,21,24,211,24,53,168,117,
+ 212,24,53,211,21,53,137,70,136,69,240,8,0,69,1,80,
+ 1,215,22,80,184,113,160,49,214,23,58,152,97,170,1,168,
+ 97,176,54,171,107,154,1,212,23,58,208,22,80,136,11,209,
+ 22,80,220,13,16,144,27,211,13,29,136,2,220,13,16,144,
+ 27,211,13,29,136,2,216,17,19,136,6,220,20,29,152,98,
+ 147,77,242,0,3,9,22,137,68,136,65,136,113,216,15,16,
+ 144,66,144,113,145,69,139,122,216,25,27,152,66,152,81,152,
+ 22,144,6,217,16,21,240,7,3,9,22,241,10,0,25,30,
+ 145,19,160,51,160,114,168,1,160,55,136,6,216,15,21,152,
+ 3,159,8,153,8,160,22,211,24,40,209,15,40,208,8,40,
+ 249,242,35,0,23,58,248,244,8,0,16,26,242,0,1,9,
+ 80,1,220,18,28,208,29,68,211,18,69,200,52,208,12,79,
+ 240,3,1,9,80,1,252,242,6,0,24,59,249,211,22,80,
+ 248,244,22,0,13,22,148,126,208,11,38,242,0,2,5,14,
+ 220,8,19,215,8,36,209,8,36,160,92,208,8,58,176,69,
+ 211,8,58,216,8,13,240,5,2,5,14,250,115,108,0,0,
+ 0,193,15,4,68,44,0,193,19,24,68,3,4,193,43,2,
+ 68,44,0,193,46,22,68,8,0,194,4,5,68,44,0,194,
+ 9,9,68,38,6,194,18,7,68,33,12,194,26,5,68,33,
+ 12,194,32,4,68,33,12,194,36,5,68,38,6,194,41,52,
+ 68,44,0,195,30,36,68,44,0,196,3,5,68,44,0,196,
+ 8,22,68,30,3,196,30,3,68,44,0,196,33,5,68,38,
+ 6,196,38,6,68,44,0,196,44,39,69,19,3,41,1,78,
+ 41,43,218,7,95,95,100,111,99,95,95,114,35,0,0,0,
+ 114,36,0,0,0,114,41,0,0,0,114,37,0,0,0,114,
+ 38,0,0,0,114,39,0,0,0,114,40,0,0,0,114,42,
+ 0,0,0,114,59,0,0,0,114,130,0,0,0,114,102,0,
+ 0,0,114,70,0,0,0,218,7,95,95,97,108,108,95,95,
+ 114,55,0,0,0,114,8,0,0,0,114,9,0,0,0,114,
+ 10,0,0,0,114,13,0,0,0,114,14,0,0,0,114,86,
+ 0,0,0,114,11,0,0,0,114,12,0,0,0,114,15,0,
+ 0,0,114,16,0,0,0,114,47,0,0,0,114,24,0,0,
+ 0,114,27,0,0,0,114,28,0,0,0,114,152,0,0,0,
+ 114,147,0,0,0,114,29,0,0,0,218,5,112,111,115,105,
+ 120,114,161,0,0,0,114,30,0,0,0,114,123,0,0,0,
+ 114,31,0,0,0,114,43,0,0,0,114,180,0,0,0,114,
+ 131,0,0,0,114,44,0,0,0,114,45,0,0,0,114,46,
+ 0,0,0,114,200,0,0,0,114,56,0,0,0,114,54,0,
+ 0,0,250,8,60,109,111,100,117,108,101,62,114,216,0,0,
+ 0,1,0,0,0,115,16,1,0,0,240,3,1,1,1,241,
+ 2,10,1,4,240,30,0,10,13,128,6,216,9,13,128,6,
+ 216,9,12,128,6,216,6,9,128,3,216,10,13,128,7,216,
+ 10,25,128,7,216,9,13,128,6,216,10,21,128,7,227,0,
+ 9,219,0,10,219,0,11,219,0,18,220,0,25,242,4,7,
+ 11,39,128,7,242,20,4,1,19,242,22,2,1,24,242,16,
+ 4,1,29,242,22,21,1,16,242,58,9,1,22,242,34,8,
+ 1,55,240,18,0,20,31,215,19,40,209,19,40,215,19,48,
+ 209,19,48,128,8,212,0,16,242,10,4,1,20,242,14,26,
+ 1,35,242,62,5,1,17,242,20,8,1,16,242,26,4,1,
+ 17,242,18,6,1,16,242,24,31,1,17,242,86,1,54,1,
+ 41,240,122,1,0,12,16,128,8,216,12,16,128,9,242,4,
+ 46,1,16,240,106,1,40,1,43,221,4,36,242,68,1,5,
+ 5,43,242,16,9,1,26,240,30,0,34,39,244,0,5,1,
+ 25,242,18,60,1,22,240,126,1,0,31,34,159,108,153,108,
+ 168,104,209,30,54,208,0,26,243,4,33,1,14,243,82,1,
+ 35,1,14,248,240,85,5,0,8,19,242,0,29,1,27,244,
+ 2,28,5,27,240,3,29,1,27,250,115,18,0,0,0,193,
+ 57,6,66,37,0,194,37,8,66,48,3,194,47,1,66,48,
+ 3,
+};
diff --git a/contrib/tools/python3/Python/frozen_modules/runpy.h b/contrib/tools/python3/Python/frozen_modules/runpy.h
new file mode 100644
index 00000000000..c192f57021d
--- /dev/null
+++ b/contrib/tools/python3/Python/frozen_modules/runpy.h
@@ -0,0 +1,901 @@
+/* Auto-generated by Programs/_freeze_module.py */
+const unsigned char _Py_M__runpy[] = {
+ 227,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,
+ 0,0,0,0,0,243,128,1,0,0,151,0,100,0,90,0,
+ 100,1,100,2,108,1,90,1,100,1,100,2,108,2,90,3,
+ 100,1,100,2,108,4,90,3,100,1,100,2,108,5,90,5,
+ 100,1,100,2,108,6,90,6,100,3,100,4,103,2,90,7,
+ 2,0,101,8,101,1,171,1,0,0,0,0,0,0,90,9,
+ 2,0,71,0,100,5,132,0,100,6,101,10,171,3,0,0,
+ 0,0,0,0,90,11,2,0,71,0,100,7,132,0,100,8,
+ 101,10,171,3,0,0,0,0,0,0,90,12,9,0,9,0,
+ 9,0,100,23,100,9,132,1,90,13,9,0,9,0,9,0,
+ 100,23,100,10,132,1,90,14,101,15,102,1,100,11,132,1,
+ 90,16,2,0,71,0,100,12,132,0,100,13,101,17,171,3,
+ 0,0,0,0,0,0,90,18,100,24,100,14,132,1,90,19,
+ 9,0,9,0,100,25,100,15,132,1,90,20,101,15,102,1,
+ 100,16,132,1,90,21,100,17,132,0,90,22,100,26,100,18,
+ 132,1,90,23,101,24,100,19,107,40,0,0,114,77,2,0,
+ 101,25,101,1,106,52,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,171,1,0,0,0,0,0,0,
+ 100,20,107,2,0,0,114,21,2,0,101,27,100,21,101,1,
+ 106,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,172,22,171,2,0,0,0,0,0,0,1,0,
+ 121,2,101,1,106,52,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,100,1,61,0,2,0,101,19,
+ 101,1,106,52,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,100,1,25,0,0,0,171,1,0,0,
+ 0,0,0,0,1,0,121,2,121,2,41,27,97,90,1,0,
+ 0,114,117,110,112,121,46,112,121,32,45,32,108,111,99,97,
+ 116,105,110,103,32,97,110,100,32,114,117,110,110,105,110,103,
+ 32,80,121,116,104,111,110,32,99,111,100,101,32,117,115,105,
+ 110,103,32,116,104,101,32,109,111,100,117,108,101,32,110,97,
+ 109,101,115,112,97,99,101,10,10,80,114,111,118,105,100,101,
+ 115,32,115,117,112,112,111,114,116,32,102,111,114,32,108,111,
+ 99,97,116,105,110,103,32,97,110,100,32,114,117,110,110,105,
+ 110,103,32,80,121,116,104,111,110,32,115,99,114,105,112,116,
+ 115,32,117,115,105,110,103,32,116,104,101,32,80,121,116,104,
+ 111,110,10,109,111,100,117,108,101,32,110,97,109,101,115,112,
+ 97,99,101,32,105,110,115,116,101,97,100,32,111,102,32,116,
+ 104,101,32,110,97,116,105,118,101,32,102,105,108,101,115,121,
+ 115,116,101,109,46,10,10,84,104,105,115,32,97,108,108,111,
+ 119,115,32,80,121,116,104,111,110,32,99,111,100,101,32,116,
+ 111,32,112,108,97,121,32,110,105,99,101,108,121,32,119,105,
+ 116,104,32,110,111,110,45,102,105,108,101,115,121,115,116,101,
+ 109,32,98,97,115,101,100,32,80,69,80,32,51,48,50,10,
+ 105,109,112,111,114,116,101,114,115,32,119,104,101,110,32,108,
+ 111,99,97,116,105,110,103,32,115,117,112,112,111,114,116,32,
+ 115,99,114,105,112,116,115,32,97,115,32,119,101,108,108,32,
+ 97,115,32,119,104,101,110,32,105,109,112,111,114,116,105,110,
+ 103,32,109,111,100,117,108,101,115,46,10,233,0,0,0,0,
+ 78,218,10,114,117,110,95,109,111,100,117,108,101,218,8,114,
+ 117,110,95,112,97,116,104,99,0,0,0,0,0,0,0,0,
+ 0,0,0,0,1,0,0,0,0,0,0,0,243,34,0,0,
+ 0,151,0,101,0,90,1,100,0,90,2,100,1,90,3,100,
+ 2,132,0,90,4,100,3,132,0,90,5,100,4,132,0,90,
+ 6,121,5,41,6,218,11,95,84,101,109,112,77,111,100,117,
+ 108,101,122,67,84,101,109,112,111,114,97,114,105,108,121,32,
+ 114,101,112,108,97,99,101,32,97,32,109,111,100,117,108,101,
+ 32,105,110,32,115,121,115,46,109,111,100,117,108,101,115,32,
+ 119,105,116,104,32,97,110,32,101,109,112,116,121,32,110,97,
+ 109,101,115,112,97,99,101,99,2,0,0,0,0,0,0,0,
+ 0,0,0,0,3,0,0,0,3,0,0,0,243,64,0,0,
+ 0,151,0,124,1,124,0,95,0,0,0,0,0,0,0,0,
+ 0,116,3,0,0,0,0,0,0,0,0,124,1,171,1,0,
+ 0,0,0,0,0,124,0,95,2,0,0,0,0,0,0,0,
+ 0,103,0,124,0,95,3,0,0,0,0,0,0,0,0,121,
+ 0,169,1,78,41,4,218,8,109,111,100,95,110,97,109,101,
+ 218,10,77,111,100,117,108,101,84,121,112,101,218,6,109,111,
+ 100,117,108,101,218,13,95,115,97,118,101,100,95,109,111,100,
+ 117,108,101,169,2,218,4,115,101,108,102,114,9,0,0,0,
+ 115,2,0,0,0,32,32,250,14,60,102,114,111,122,101,110,
+ 32,114,117,110,112,121,62,218,8,95,95,105,110,105,116,95,
+ 95,122,20,95,84,101,109,112,77,111,100,117,108,101,46,95,
+ 95,105,110,105,116,95,95,28,0,0,0,115,29,0,0,0,
+ 128,0,216,24,32,136,4,140,13,220,22,32,160,24,211,22,
+ 42,136,4,140,11,216,29,31,136,4,213,8,26,243,0,0,
+ 0,0,99,1,0,0,0,0,0,0,0,0,0,0,0,4,
+ 0,0,0,3,0,0,0,243,208,0,0,0,151,0,124,0,
+ 106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,125,1,9,0,124,0,106,2,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,5,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,116,6,0,0,0,0,0,0,0,0,106,8,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 124,1,25,0,0,0,171,1,0,0,0,0,0,0,1,0,
+ 124,0,106,12,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,116,6,0,0,0,0,0,0,0,0,
+ 106,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,124,1,60,0,0,0,124,0,83,0,35,0,
+ 116,10,0,0,0,0,0,0,0,0,36,0,114,3,1,0,
+ 89,0,140,42,119,0,120,3,89,0,119,1,114,8,0,0,
+ 0,41,7,114,9,0,0,0,114,12,0,0,0,218,6,97,
+ 112,112,101,110,100,218,3,115,121,115,218,7,109,111,100,117,
+ 108,101,115,218,8,75,101,121,69,114,114,111,114,114,11,0,
+ 0,0,114,13,0,0,0,115,2,0,0,0,32,32,114,15,
+ 0,0,0,218,9,95,95,101,110,116,101,114,95,95,122,21,
+ 95,84,101,109,112,77,111,100,117,108,101,46,95,95,101,110,
+ 116,101,114,95,95,33,0,0,0,115,90,0,0,0,128,0,
+ 216,19,23,151,61,145,61,136,8,240,2,3,9,17,216,12,
+ 16,215,12,30,209,12,30,215,12,37,209,12,37,164,99,167,
+ 107,161,107,176,40,209,38,59,212,12,60,240,6,0,33,37,
+ 167,11,161,11,140,3,143,11,137,11,144,72,209,8,29,216,
+ 15,19,136,11,248,244,7,0,16,24,242,0,1,9,17,217,
+ 12,16,240,3,1,9,17,250,115,17,0,0,0,142,44,65,
+ 25,0,193,25,9,65,37,3,193,36,1,65,37,3,99,1,
+ 0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,7,
+ 0,0,0,243,196,0,0,0,151,0,124,0,106,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 114,50,124,0,106,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,100,1,25,0,0,0,116,2,
+ 0,0,0,0,0,0,0,0,106,4,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,124,0,106,6,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,60,0,0,0,103,0,124,0,95,0,0,0,0,0,
+ 0,0,0,0,121,0,116,2,0,0,0,0,0,0,0,0,
+ 106,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,124,0,106,6,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,61,0,103,0,124,0,
+ 95,0,0,0,0,0,0,0,0,0,121,0,169,2,78,114,
+ 2,0,0,0,41,4,114,12,0,0,0,114,20,0,0,0,
+ 114,21,0,0,0,114,9,0,0,0,169,2,114,14,0,0,
+ 0,218,4,97,114,103,115,115,2,0,0,0,32,32,114,15,
+ 0,0,0,218,8,95,95,101,120,105,116,95,95,122,20,95,
+ 84,101,109,112,77,111,100,117,108,101,46,95,95,101,120,105,
+ 116,95,95,42,0,0,0,115,76,0,0,0,128,0,216,11,
+ 15,215,11,29,210,11,29,216,41,45,215,41,59,209,41,59,
+ 184,65,209,41,62,140,67,143,75,137,75,152,4,159,13,153,
+ 13,209,12,38,240,6,0,30,32,136,4,213,8,26,244,3,
+ 0,17,20,151,11,145,11,152,68,159,77,153,77,208,16,42,
+ 216,29,31,136,4,213,8,26,114,17,0,0,0,78,41,7,
+ 218,8,95,95,110,97,109,101,95,95,218,10,95,95,109,111,
+ 100,117,108,101,95,95,218,12,95,95,113,117,97,108,110,97,
+ 109,101,95,95,218,7,95,95,100,111,99,95,95,114,16,0,
+ 0,0,114,23,0,0,0,114,28,0,0,0,169,0,114,17,
+ 0,0,0,114,15,0,0,0,114,6,0,0,0,114,6,0,
+ 0,0,26,0,0,0,115,20,0,0,0,132,0,217,4,77,
+ 242,2,3,5,32,242,10,7,5,20,243,18,5,5,32,114,
+ 17,0,0,0,114,6,0,0,0,99,0,0,0,0,0,0,
+ 0,0,0,0,0,0,1,0,0,0,0,0,0,0,243,30,
+ 0,0,0,151,0,101,0,90,1,100,0,90,2,100,1,132,
+ 0,90,3,100,2,132,0,90,4,100,3,132,0,90,5,121,
+ 4,41,5,218,14,95,77,111,100,105,102,105,101,100,65,114,
+ 103,118,48,99,2,0,0,0,0,0,0,0,0,0,0,0,
+ 3,0,0,0,3,0,0,0,243,62,0,0,0,151,0,124,
+ 1,124,0,95,0,0,0,0,0,0,0,0,0,116,3,0,
+ 0,0,0,0,0,0,0,171,0,0,0,0,0,0,0,120,
+ 1,124,0,95,2,0,0,0,0,0,0,0,0,124,0,95,
+ 3,0,0,0,0,0,0,0,0,121,0,114,8,0,0,0,
+ 41,4,218,5,118,97,108,117,101,218,6,111,98,106,101,99,
+ 116,218,12,95,115,97,118,101,100,95,118,97,108,117,101,218,
+ 9,95,115,101,110,116,105,110,101,108,41,2,114,14,0,0,
+ 0,114,37,0,0,0,115,2,0,0,0,32,32,114,15,0,
+ 0,0,114,16,0,0,0,122,23,95,77,111,100,105,102,105,
+ 101,100,65,114,103,118,48,46,95,95,105,110,105,116,95,95,
+ 50,0,0,0,115,26,0,0,0,128,0,216,21,26,136,4,
+ 140,10,220,45,51,171,88,208,8,53,136,4,212,8,25,152,
+ 68,157,78,114,17,0,0,0,99,1,0,0,0,0,0,0,
+ 0,0,0,0,0,3,0,0,0,3,0,0,0,243,180,0,
+ 0,0,151,0,124,0,106,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,124,0,106,2,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 117,1,114,11,116,5,0,0,0,0,0,0,0,0,100,1,
+ 171,1,0,0,0,0,0,0,130,1,116,6,0,0,0,0,
+ 0,0,0,0,106,8,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,100,2,25,0,0,0,124,0,
+ 95,0,0,0,0,0,0,0,0,0,124,0,106,10,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 116,6,0,0,0,0,0,0,0,0,106,8,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,2,
+ 60,0,0,0,121,0,41,3,78,122,30,65,108,114,101,97,
+ 100,121,32,112,114,101,115,101,114,118,105,110,103,32,115,97,
+ 118,101,100,32,118,97,108,117,101,114,2,0,0,0,41,6,
+ 114,39,0,0,0,114,40,0,0,0,218,12,82,117,110,116,
+ 105,109,101,69,114,114,111,114,114,20,0,0,0,218,4,97,
+ 114,103,118,114,37,0,0,0,41,1,114,14,0,0,0,115,
+ 1,0,0,0,32,114,15,0,0,0,114,23,0,0,0,122,
+ 24,95,77,111,100,105,102,105,101,100,65,114,103,118,48,46,
+ 95,95,101,110,116,101,114,95,95,54,0,0,0,115,65,0,
+ 0,0,128,0,216,11,15,215,11,28,209,11,28,160,68,167,
+ 78,161,78,209,11,50,220,18,30,208,31,63,211,18,64,208,
+ 12,64,220,28,31,159,72,153,72,160,81,153,75,136,4,212,
+ 8,25,216,22,26,151,106,145,106,140,3,143,8,137,8,144,
+ 17,138,11,114,17,0,0,0,99,1,0,0,0,0,0,0,
+ 0,0,0,0,0,3,0,0,0,7,0,0,0,243,96,0,
+ 0,0,151,0,124,0,106,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,124,0,95,1,0,0,
+ 0,0,0,0,0,0,124,0,106,4,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,116,6,0,0,
+ 0,0,0,0,0,0,106,8,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,100,1,60,0,0,0,
+ 121,0,114,25,0,0,0,41,5,114,40,0,0,0,114,37,
+ 0,0,0,114,39,0,0,0,114,20,0,0,0,114,43,0,
+ 0,0,114,26,0,0,0,115,2,0,0,0,32,32,114,15,
+ 0,0,0,114,28,0,0,0,122,23,95,77,111,100,105,102,
+ 105,101,100,65,114,103,118,48,46,95,95,101,120,105,116,95,
+ 95,60,0,0,0,115,32,0,0,0,128,0,216,21,25,151,
+ 94,145,94,136,4,140,10,216,22,26,215,22,39,209,22,39,
+ 140,3,143,8,137,8,144,17,138,11,114,17,0,0,0,78,
+ 41,6,114,29,0,0,0,114,30,0,0,0,114,31,0,0,
+ 0,114,16,0,0,0,114,23,0,0,0,114,28,0,0,0,
+ 114,33,0,0,0,114,17,0,0,0,114,15,0,0,0,114,
+ 35,0,0,0,114,35,0,0,0,49,0,0,0,115,17,0,
+ 0,0,132,0,242,2,2,5,54,242,8,4,5,33,243,12,
+ 2,5,40,114,17,0,0,0,114,35,0,0,0,99,7,0,
+ 0,0,0,0,0,0,0,0,0,0,9,0,0,0,3,0,
+ 0,0,243,234,0,0,0,151,0,124,2,129,17,124,1,106,
+ 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,124,2,171,1,0,0,0,0,0,0,1,0,124,
+ 4,128,7,100,1,125,7,124,6,125,8,100,1,125,9,110,
+ 50,124,4,106,2,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,125,7,124,4,106,4,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,
+ 8,124,4,106,6,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,125,9,124,5,128,12,124,4,106,
+ 8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,125,5,124,1,106,1,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,124,3,124,8,124,
+ 9,100,1,124,7,124,5,124,4,172,2,171,7,0,0,0,
+ 0,0,0,1,0,116,11,0,0,0,0,0,0,0,0,124,
+ 0,124,1,171,2,0,0,0,0,0,0,1,0,124,1,83,
+ 0,41,3,122,41,72,101,108,112,101,114,32,116,111,32,114,
+ 117,110,32,99,111,100,101,32,105,110,32,110,111,109,105,110,
+ 97,116,101,100,32,110,97,109,101,115,112,97,99,101,78,41,
+ 7,114,29,0,0,0,218,8,95,95,102,105,108,101,95,95,
+ 218,10,95,95,99,97,99,104,101,100,95,95,114,32,0,0,
+ 0,218,10,95,95,108,111,97,100,101,114,95,95,218,11,95,
+ 95,112,97,99,107,97,103,101,95,95,218,8,95,95,115,112,
+ 101,99,95,95,41,6,218,6,117,112,100,97,116,101,218,6,
+ 108,111,97,100,101,114,218,6,111,114,105,103,105,110,218,6,
+ 99,97,99,104,101,100,218,6,112,97,114,101,110,116,218,4,
+ 101,120,101,99,41,10,218,4,99,111,100,101,218,11,114,117,
+ 110,95,103,108,111,98,97,108,115,218,12,105,110,105,116,95,
+ 103,108,111,98,97,108,115,114,9,0,0,0,218,8,109,111,
+ 100,95,115,112,101,99,218,8,112,107,103,95,110,97,109,101,
+ 218,11,115,99,114,105,112,116,95,110,97,109,101,114,52,0,
+ 0,0,218,5,102,110,97,109,101,114,54,0,0,0,115,10,
+ 0,0,0,32,32,32,32,32,32,32,32,32,32,114,15,0,
+ 0,0,218,9,95,114,117,110,95,99,111,100,101,114,64,0,
+ 0,0,65,0,0,0,115,144,0,0,0,128,0,240,8,0,
+ 8,20,208,7,31,216,8,19,215,8,26,209,8,26,152,60,
+ 212,8,40,216,7,15,208,7,23,216,17,21,136,6,216,16,
+ 27,136,5,216,17,21,137,6,224,17,25,151,31,145,31,136,
+ 6,216,16,24,151,15,145,15,136,5,216,17,25,151,31,145,
+ 31,136,6,216,11,19,208,11,27,216,23,31,151,127,145,127,
+ 136,72,216,4,15,215,4,22,209,4,22,160,40,216,34,39,
+ 216,36,42,216,33,37,216,36,42,216,37,45,216,34,42,240,
+ 13,0,5,23,244,0,6,5,44,244,14,0,5,9,136,20,
+ 136,123,212,4,27,216,11,22,208,4,22,114,17,0,0,0,
+ 99,6,0,0,0,0,0,0,0,0,0,0,0,11,0,0,
+ 0,3,0,0,0,243,46,1,0,0,151,0,124,3,128,2,
+ 124,5,110,11,124,3,106,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,125,6,116,3,0,0,
+ 0,0,0,0,0,0,124,2,171,1,0,0,0,0,0,0,
+ 53,0,125,7,116,5,0,0,0,0,0,0,0,0,124,6,
+ 171,1,0,0,0,0,0,0,53,0,1,0,124,7,106,6,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,106,8,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,125,8,116,11,0,0,0,0,0,0,
+ 0,0,124,0,124,8,124,1,124,2,124,3,124,4,124,5,
+ 171,7,0,0,0,0,0,0,1,0,100,1,100,1,100,1,
+ 171,2,0,0,0,0,0,0,1,0,100,1,100,1,100,1,
+ 171,2,0,0,0,0,0,0,1,0,127,8,106,13,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 171,0,0,0,0,0,0,0,83,0,35,0,49,0,115,1,
+ 119,2,1,0,89,0,1,0,1,0,140,33,120,3,89,0,
+ 119,1,35,0,49,0,115,1,119,2,1,0,89,0,1,0,
+ 1,0,127,8,106,13,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,171,0,0,0,0,0,0,0,
+ 83,0,120,3,89,0,119,1,41,2,122,53,72,101,108,112,
+ 101,114,32,116,111,32,114,117,110,32,99,111,100,101,32,105,
+ 110,32,110,101,119,32,110,97,109,101,115,112,97,99,101,32,
+ 119,105,116,104,32,115,121,115,32,109,111,100,105,102,105,101,
+ 100,78,41,7,114,53,0,0,0,114,6,0,0,0,114,35,
+ 0,0,0,114,11,0,0,0,218,8,95,95,100,105,99,116,
+ 95,95,114,64,0,0,0,218,4,99,111,112,121,41,9,114,
+ 57,0,0,0,114,59,0,0,0,114,9,0,0,0,114,60,
+ 0,0,0,114,61,0,0,0,114,62,0,0,0,114,63,0,
+ 0,0,218,11,116,101,109,112,95,109,111,100,117,108,101,218,
+ 11,109,111,100,95,103,108,111,98,97,108,115,115,9,0,0,
+ 0,32,32,32,32,32,32,32,32,32,114,15,0,0,0,218,
+ 16,95,114,117,110,95,109,111,100,117,108,101,95,99,111,100,
+ 101,114,70,0,0,0,91,0,0,0,115,148,0,0,0,128,
+ 0,240,8,0,28,36,208,27,43,137,75,176,24,183,31,177,
+ 31,128,69,220,9,20,144,88,211,9,30,240,0,3,5,61,
+ 160,43,172,126,184,101,211,47,68,241,0,3,5,61,216,22,
+ 33,215,22,40,209,22,40,215,22,49,209,22,49,136,11,220,
+ 8,17,144,36,152,11,160,92,216,18,26,152,72,160,104,176,
+ 11,244,3,1,9,61,247,5,3,5,61,247,0,3,5,61,
+ 240,12,0,12,23,215,11,27,209,11,27,211,11,29,208,4,
+ 29,247,13,3,5,61,240,0,3,5,61,250,247,0,3,5,
+ 61,240,12,0,12,23,215,11,27,209,11,27,211,11,29,208,
+ 4,29,250,115,34,0,0,0,156,12,65,60,3,168,40,65,
+ 48,5,193,16,8,65,60,3,193,48,5,65,57,9,193,53,
+ 7,65,60,3,193,60,5,66,20,7,99,2,0,0,0,0,
+ 0,0,0,0,0,0,0,9,0,0,0,3,0,0,0,243,
+ 152,4,0,0,151,0,124,0,106,1,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,100,1,171,1,
+ 0,0,0,0,0,0,114,8,2,0,124,1,100,2,171,1,
+ 0,0,0,0,0,0,130,1,124,0,106,3,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,1,
+ 171,1,0,0,0,0,0,0,92,3,0,0,125,2,125,3,
+ 125,3,124,2,114,99,9,0,116,5,0,0,0,0,0,0,
+ 0,0,124,2,171,1,0,0,0,0,0,0,1,0,116,10,
+ 0,0,0,0,0,0,0,0,106,12,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,106,15,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 124,0,171,1,0,0,0,0,0,0,125,5,124,5,129,54,
+ 116,17,0,0,0,0,0,0,0,0,124,5,100,3,171,2,
+ 0,0,0,0,0,0,115,42,100,4,100,5,108,9,109,10,
+ 125,6,1,0,100,6,106,23,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,124,0,124,2,172,7,
+ 171,2,0,0,0,0,0,0,125,7,2,0,124,6,116,25,
+ 0,0,0,0,0,0,0,0,124,7,171,1,0,0,0,0,
+ 0,0,171,1,0,0,0,0,0,0,1,0,9,0,116,26,
+ 0,0,0,0,0,0,0,0,106,28,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,106,31,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 124,0,171,1,0,0,0,0,0,0,125,8,124,8,128,11,
+ 2,0,124,1,100,14,124,0,122,6,0,0,171,1,0,0,
+ 0,0,0,0,130,1,124,8,106,44,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,129,48,124,0,
+ 100,15,107,40,0,0,115,17,124,0,106,39,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,16,
+ 171,1,0,0,0,0,0,0,114,8,2,0,124,1,100,17,
+ 171,1,0,0,0,0,0,0,130,1,9,0,124,0,100,16,
+ 122,0,0,0,125,10,116,47,0,0,0,0,0,0,0,0,
+ 124,10,124,1,171,2,0,0,0,0,0,0,83,0,124,8,
+ 106,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,125,11,124,11,128,11,2,0,124,1,100,20,
+ 124,0,122,6,0,0,171,1,0,0,0,0,0,0,130,1,
+ 9,0,124,11,106,51,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,124,0,171,1,0,0,0,0,
+ 0,0,125,12,124,12,128,11,2,0,124,1,100,21,124,0,
+ 122,6,0,0,171,1,0,0,0,0,0,0,130,1,124,0,
+ 124,8,124,12,102,3,83,0,35,0,116,6,0,0,0,0,
+ 0,0,0,0,36,0,114,69,125,4,124,4,106,8,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 129,45,124,4,106,8,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,124,2,107,55,0,0,114,31,
+ 124,2,106,1,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,124,4,106,8,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,100,1,122,0,
+ 0,0,171,1,0,0,0,0,0,0,115,1,130,0,89,0,
+ 100,0,125,4,126,4,144,1,140,70,100,0,125,4,126,4,
+ 119,1,119,0,120,3,89,0,119,1,35,0,116,6,0,0,
+ 0,0,0,0,0,0,116,32,0,0,0,0,0,0,0,0,
+ 116,34,0,0,0,0,0,0,0,0,116,36,0,0,0,0,
+ 0,0,0,0,102,4,36,0,114,84,125,9,100,8,125,7,
+ 124,0,106,39,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,100,9,171,1,0,0,0,0,0,0,
+ 114,15,124,7,100,10,124,0,100,0,100,11,26,0,155,0,
+ 100,12,124,0,155,0,100,13,157,5,122,13,0,0,125,7,
+ 2,0,124,1,124,7,106,23,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,124,0,116,41,0,0,
+ 0,0,0,0,0,0,124,9,171,1,0,0,0,0,0,0,
+ 106,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,124,9,171,3,0,0,0,0,0,0,171,1,
+ 0,0,0,0,0,0,124,9,130,2,100,0,125,9,126,9,
+ 119,1,119,0,120,3,89,0,119,1,35,0,124,1,36,0,
+ 114,38,125,4,124,0,116,10,0,0,0,0,0,0,0,0,
+ 106,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,118,1,114,1,130,0,2,0,124,1,124,4,
+ 155,1,100,18,124,0,155,2,100,19,157,4,171,1,0,0,
+ 0,0,0,0,130,1,100,0,125,4,126,4,119,1,119,0,
+ 120,3,89,0,119,1,35,0,116,6,0,0,0,0,0,0,
+ 0,0,36,0,114,23,125,4,2,0,124,1,116,23,0,0,
+ 0,0,0,0,0,0,124,4,171,1,0,0,0,0,0,0,
+ 171,1,0,0,0,0,0,0,124,4,130,2,100,0,125,4,
+ 126,4,119,1,119,0,120,3,89,0,119,1,41,22,78,250,
+ 1,46,122,35,82,101,108,97,116,105,118,101,32,109,111,100,
+ 117,108,101,32,110,97,109,101,115,32,110,111,116,32,115,117,
+ 112,112,111,114,116,101,100,218,8,95,95,112,97,116,104,95,
+ 95,114,2,0,0,0,41,1,218,4,119,97,114,110,122,154,
+ 123,109,111,100,95,110,97,109,101,33,114,125,32,102,111,117,
+ 110,100,32,105,110,32,115,121,115,46,109,111,100,117,108,101,
+ 115,32,97,102,116,101,114,32,105,109,112,111,114,116,32,111,
+ 102,32,112,97,99,107,97,103,101,32,123,112,107,103,95,110,
+ 97,109,101,33,114,125,44,32,98,117,116,32,112,114,105,111,
+ 114,32,116,111,32,101,120,101,99,117,116,105,111,110,32,111,
+ 102,32,123,109,111,100,95,110,97,109,101,33,114,125,59,32,
+ 116,104,105,115,32,109,97,121,32,114,101,115,117,108,116,32,
+ 105,110,32,117,110,112,114,101,100,105,99,116,97,98,108,101,
+ 32,98,101,104,97,118,105,111,117,114,41,2,114,9,0,0,
+ 0,114,61,0,0,0,122,58,69,114,114,111,114,32,119,104,
+ 105,108,101,32,102,105,110,100,105,110,103,32,109,111,100,117,
+ 108,101,32,115,112,101,99,105,102,105,99,97,116,105,111,110,
+ 32,102,111,114,32,123,33,114,125,32,40,123,125,58,32,123,
+ 125,41,122,3,46,112,121,122,13,46,32,84,114,121,32,117,
+ 115,105,110,103,32,39,233,253,255,255,255,122,14,39,32,105,
+ 110,115,116,101,97,100,32,111,102,32,39,122,21,39,32,97,
+ 115,32,116,104,101,32,109,111,100,117,108,101,32,110,97,109,
+ 101,46,122,18,78,111,32,109,111,100,117,108,101,32,110,97,
+ 109,101,100,32,37,115,218,8,95,95,109,97,105,110,95,95,
+ 122,9,46,95,95,109,97,105,110,95,95,122,37,67,97,110,
+ 110,111,116,32,117,115,101,32,112,97,99,107,97,103,101,32,
+ 97,115,32,95,95,109,97,105,110,95,95,32,109,111,100,117,
+ 108,101,122,2,59,32,122,45,32,105,115,32,97,32,112,97,
+ 99,107,97,103,101,32,97,110,100,32,99,97,110,110,111,116,
+ 32,98,101,32,100,105,114,101,99,116,108,121,32,101,120,101,
+ 99,117,116,101,100,122,48,37,114,32,105,115,32,97,32,110,
+ 97,109,101,115,112,97,99,101,32,112,97,99,107,97,103,101,
+ 32,97,110,100,32,99,97,110,110,111,116,32,98,101,32,101,
+ 120,101,99,117,116,101,100,122,31,78,111,32,99,111,100,101,
+ 32,111,98,106,101,99,116,32,97,118,97,105,108,97,98,108,
+ 101,32,102,111,114,32,37,115,41,26,218,10,115,116,97,114,
+ 116,115,119,105,116,104,218,10,114,112,97,114,116,105,116,105,
+ 111,110,218,10,95,95,105,109,112,111,114,116,95,95,218,11,
+ 73,109,112,111,114,116,69,114,114,111,114,218,4,110,97,109,
+ 101,114,20,0,0,0,114,21,0,0,0,218,3,103,101,116,
+ 218,7,104,97,115,97,116,116,114,218,8,119,97,114,110,105,
+ 110,103,115,114,74,0,0,0,218,6,102,111,114,109,97,116,
+ 218,14,82,117,110,116,105,109,101,87,97,114,110,105,110,103,
+ 218,9,105,109,112,111,114,116,108,105,98,218,4,117,116,105,
+ 108,218,9,102,105,110,100,95,115,112,101,99,218,14,65,116,
+ 116,114,105,98,117,116,101,69,114,114,111,114,218,9,84,121,
+ 112,101,69,114,114,111,114,218,10,86,97,108,117,101,69,114,
+ 114,111,114,218,8,101,110,100,115,119,105,116,104,218,4,116,
+ 121,112,101,114,29,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,218,19,95,103,101,116,95,109,111,100,117,108,
+ 101,95,100,101,116,97,105,108,115,114,52,0,0,0,218,8,
+ 103,101,116,95,99,111,100,101,41,13,114,9,0,0,0,218,
+ 5,101,114,114,111,114,114,61,0,0,0,218,1,95,218,1,
+ 101,218,8,101,120,105,115,116,105,110,103,114,74,0,0,0,
+ 218,3,109,115,103,218,4,115,112,101,99,218,2,101,120,218,
+ 13,112,107,103,95,109,97,105,110,95,110,97,109,101,114,52,
+ 0,0,0,114,57,0,0,0,115,13,0,0,0,32,32,32,
+ 32,32,32,32,32,32,32,32,32,32,114,15,0,0,0,114,
+ 96,0,0,0,114,96,0,0,0,105,0,0,0,115,143,2,
+ 0,0,128,0,216,7,15,215,7,26,209,7,26,152,51,212,
+ 7,31,217,14,19,208,20,57,211,14,58,208,8,58,216,21,
+ 29,215,21,40,209,21,40,168,19,211,21,45,129,78,128,72,
+ 136,97,144,17,217,7,15,240,4,8,9,22,220,12,22,144,
+ 120,212,12,32,244,18,0,20,23,151,59,145,59,151,63,145,
+ 63,160,56,211,19,44,136,8,216,11,19,208,11,31,172,7,
+ 176,8,184,42,212,40,69,221,12,37,240,2,3,19,28,247,
+ 6,0,29,35,153,70,168,72,184,120,152,70,211,28,72,240,
+ 7,0,13,16,241,8,0,13,17,148,30,160,3,211,17,36,
+ 212,12,37,240,4,10,5,73,1,220,15,24,143,126,137,126,
+ 215,15,39,209,15,39,168,8,211,15,49,136,4,240,20,0,
+ 8,12,128,124,217,14,19,208,20,40,168,56,209,20,51,211,
+ 14,52,208,8,52,216,7,11,215,7,38,209,7,38,208,7,
+ 50,216,11,19,144,122,210,11,33,160,88,215,37,54,209,37,
+ 54,176,123,212,37,67,217,18,23,208,24,63,211,18,64,208,
+ 12,64,240,2,7,9,71,1,216,28,36,160,123,209,28,50,
+ 136,77,220,19,38,160,125,176,101,211,19,60,208,12,60,240,
+ 12,0,14,18,143,91,137,91,128,70,216,7,13,128,126,217,
+ 14,19,208,20,70,216,67,75,241,3,1,21,76,1,243,0,
+ 1,15,77,1,240,0,1,9,77,1,240,4,3,5,38,216,
+ 15,21,143,127,137,127,152,120,211,15,40,136,4,240,6,0,
+ 8,12,128,124,217,14,19,208,20,53,184,8,209,20,64,211,
+ 14,65,208,8,65,216,11,19,144,84,152,52,208,11,31,208,
+ 4,31,248,244,103,1,0,16,27,242,0,6,9,22,240,8,
+ 0,16,17,143,118,137,118,136,126,160,33,167,38,161,38,168,
+ 72,210,34,52,216,24,32,215,24,43,209,24,43,168,65,175,
+ 70,169,70,176,83,169,76,212,24,57,216,16,21,255,249,240,
+ 13,6,9,22,251,244,38,0,13,24,156,30,172,25,180,74,
+ 208,11,63,242,0,8,5,73,1,240,8,0,15,75,1,136,
+ 3,216,11,19,215,11,28,209,11,28,152,85,212,11,35,216,
+ 12,15,144,109,160,72,168,83,168,98,160,77,160,63,240,0,
+ 1,51,24,216,24,32,144,122,208,33,54,240,3,1,21,56,
+ 241,0,1,13,57,136,67,225,14,19,144,67,151,74,145,74,
+ 152,120,172,20,168,98,171,24,215,41,58,209,41,58,184,66,
+ 211,20,63,211,14,64,192,98,208,8,72,251,240,17,8,5,
+ 73,1,251,240,34,0,16,21,242,0,4,9,71,1,216,15,
+ 23,156,115,159,123,153,123,209,15,42,216,16,21,217,18,23,
+ 218,57,58,186,72,240,3,1,25,70,1,243,0,1,19,71,
+ 1,240,0,1,13,71,1,251,240,7,4,9,71,1,251,244,
+ 22,0,12,23,242,0,1,5,38,217,14,19,148,70,152,49,
+ 147,73,211,14,30,160,65,208,8,37,251,240,3,1,5,38,
+ 250,115,96,0,0,0,178,11,68,58,0,194,21,31,70,11,
+ 0,195,44,16,71,59,0,196,23,17,72,41,0,196,58,9,
+ 70,8,3,197,3,58,70,3,3,198,3,5,70,8,3,198,
+ 11,25,71,56,3,198,36,65,15,71,51,3,199,51,5,71,
+ 56,3,199,59,5,72,38,3,200,0,33,72,33,3,200,33,
+ 5,72,38,3,200,41,9,73,9,3,200,50,18,73,4,3,
+ 201,4,5,73,9,3,99,0,0,0,0,0,0,0,0,0,
+ 0,0,0,1,0,0,0,0,0,0,0,243,16,0,0,0,
+ 151,0,101,0,90,1,100,0,90,2,100,1,90,3,121,2,
+ 41,3,218,6,95,69,114,114,111,114,122,66,69,114,114,111,
+ 114,32,116,104,97,116,32,95,114,117,110,95,109,111,100,117,
+ 108,101,95,97,115,95,109,97,105,110,40,41,32,115,104,111,
+ 117,108,100,32,114,101,112,111,114,116,32,119,105,116,104,111,
+ 117,116,32,97,32,116,114,97,99,101,98,97,99,107,78,41,
+ 4,114,29,0,0,0,114,30,0,0,0,114,31,0,0,0,
+ 114,32,0,0,0,114,33,0,0,0,114,17,0,0,0,114,
+ 15,0,0,0,114,107,0,0,0,114,107,0,0,0,166,0,
+ 0,0,115,5,0,0,0,132,0,218,4,76,114,17,0,0,
+ 0,114,107,0,0,0,99,2,0,0,0,0,0,0,0,0,
+ 0,0,0,7,0,0,0,3,0,0,0,243,120,1,0,0,
+ 151,0,9,0,124,1,115,5,124,0,100,1,107,55,0,0,
+ 114,21,116,1,0,0,0,0,0,0,0,0,124,0,116,2,
+ 0,0,0,0,0,0,0,0,171,2,0,0,0,0,0,0,
+ 92,3,0,0,125,0,125,2,125,3,110,19,116,5,0,0,
+ 0,0,0,0,0,0,116,2,0,0,0,0,0,0,0,0,
+ 171,1,0,0,0,0,0,0,92,3,0,0,125,0,125,2,
+ 125,3,116,6,0,0,0,0,0,0,0,0,106,12,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 100,1,25,0,0,0,106,14,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,125,6,124,1,114,29,
+ 127,2,106,16,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,116,6,0,0,0,0,0,0,0,0,
+ 106,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,100,4,60,0,0,0,116,21,0,0,0,0,
+ 0,0,0,0,127,3,124,6,100,3,100,1,127,2,171,5,
+ 0,0,0,0,0,0,83,0,35,0,116,2,0,0,0,0,
+ 0,0,0,0,36,0,114,52,125,4,116,6,0,0,0,0,
+ 0,0,0,0,106,8,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,155,1,100,2,124,4,155,1,
+ 157,3,125,5,116,7,0,0,0,0,0,0,0,0,106,10,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,124,5,171,1,0,0,0,0,0,0,1,0,89,0,
+ 100,3,125,4,126,4,140,131,100,3,125,4,126,4,119,1,
+ 119,0,120,3,89,0,119,1,41,5,97,197,1,0,0,82,
+ 117,110,115,32,116,104,101,32,100,101,115,105,103,110,97,116,
+ 101,100,32,109,111,100,117,108,101,32,105,110,32,116,104,101,
+ 32,95,95,109,97,105,110,95,95,32,110,97,109,101,115,112,
+ 97,99,101,10,10,32,32,32,32,32,32,32,78,111,116,101,
+ 32,116,104,97,116,32,116,104,101,32,101,120,101,99,117,116,
+ 101,100,32,109,111,100,117,108,101,32,119,105,108,108,32,104,
+ 97,118,101,32,102,117,108,108,32,97,99,99,101,115,115,32,
+ 116,111,32,116,104,101,10,32,32,32,32,32,32,32,95,95,
+ 109,97,105,110,95,95,32,110,97,109,101,115,112,97,99,101,
+ 46,32,73,102,32,116,104,105,115,32,105,115,32,110,111,116,
+ 32,100,101,115,105,114,97,98,108,101,44,32,116,104,101,32,
+ 114,117,110,95,109,111,100,117,108,101,40,41,10,32,32,32,
+ 32,32,32,32,102,117,110,99,116,105,111,110,32,115,104,111,
+ 117,108,100,32,98,101,32,117,115,101,100,32,116,111,32,114,
+ 117,110,32,116,104,101,32,109,111,100,117,108,101,32,99,111,
+ 100,101,32,105,110,32,97,32,102,114,101,115,104,32,110,97,
+ 109,101,115,112,97,99,101,46,10,10,32,32,32,32,32,32,
+ 32,65,116,32,116,104,101,32,118,101,114,121,32,108,101,97,
+ 115,116,44,32,116,104,101,115,101,32,118,97,114,105,97,98,
+ 108,101,115,32,105,110,32,95,95,109,97,105,110,95,95,32,
+ 119,105,108,108,32,98,101,32,111,118,101,114,119,114,105,116,
+ 116,101,110,58,10,32,32,32,32,32,32,32,32,32,32,32,
+ 95,95,110,97,109,101,95,95,10,32,32,32,32,32,32,32,
+ 32,32,32,32,95,95,102,105,108,101,95,95,10,32,32,32,
+ 32,32,32,32,32,32,32,32,95,95,99,97,99,104,101,100,
+ 95,95,10,32,32,32,32,32,32,32,32,32,32,32,95,95,
+ 108,111,97,100,101,114,95,95,10,32,32,32,32,32,32,32,
+ 32,32,32,32,95,95,112,97,99,107,97,103,101,95,95,10,
+ 32,32,32,32,114,76,0,0,0,122,2,58,32,78,114,2,
+ 0,0,0,41,11,114,96,0,0,0,114,107,0,0,0,218,
+ 24,95,103,101,116,95,109,97,105,110,95,109,111,100,117,108,
+ 101,95,100,101,116,97,105,108,115,114,20,0,0,0,218,10,
+ 101,120,101,99,117,116,97,98,108,101,218,4,101,120,105,116,
+ 114,21,0,0,0,114,66,0,0,0,114,53,0,0,0,114,
+ 43,0,0,0,114,64,0,0,0,41,7,114,9,0,0,0,
+ 218,10,97,108,116,101,114,95,97,114,103,118,114,60,0,0,
+ 0,114,57,0,0,0,218,3,101,120,99,114,102,0,0,0,
+ 218,12,109,97,105,110,95,103,108,111,98,97,108,115,115,7,
+ 0,0,0,32,32,32,32,32,32,32,114,15,0,0,0,218,
+ 19,95,114,117,110,95,109,111,100,117,108,101,95,97,115,95,
+ 109,97,105,110,114,115,0,0,0,173,0,0,0,115,164,0,
+ 0,0,128,0,240,28,7,5,22,217,11,21,152,24,160,90,
+ 210,25,47,220,39,58,184,56,196,86,211,39,76,209,12,36,
+ 136,72,144,104,161,4,228,39,63,196,6,211,39,71,209,12,
+ 36,136,72,144,104,160,4,244,8,0,20,23,151,59,145,59,
+ 152,122,209,19,42,215,19,51,209,19,51,128,76,217,7,17,
+ 216,22,30,151,111,145,111,140,3,143,8,137,8,144,17,137,
+ 11,220,11,20,144,84,152,60,168,20,216,21,31,160,24,243,
+ 3,1,12,43,240,0,1,5,43,248,244,13,0,12,18,242,
+ 0,2,5,22,220,26,29,159,46,155,46,169,35,208,14,46,
+ 136,3,220,8,11,143,8,137,8,144,19,143,13,137,13,251,
+ 240,5,2,5,22,250,115,23,0,0,0,130,47,65,60,0,
+ 193,60,9,66,57,3,194,5,42,66,52,3,194,52,5,66,
+ 57,3,99,4,0,0,0,0,0,0,0,0,0,0,0,7,
+ 0,0,0,3,0,0,0,243,102,0,0,0,151,0,116,1,
+ 0,0,0,0,0,0,0,0,124,0,171,1,0,0,0,0,
+ 0,0,92,3,0,0,125,0,125,4,125,5,124,2,128,2,
+ 124,0,125,2,124,3,114,14,116,3,0,0,0,0,0,0,
+ 0,0,124,5,124,1,124,2,124,4,171,4,0,0,0,0,
+ 0,0,83,0,116,5,0,0,0,0,0,0,0,0,124,5,
+ 105,0,124,1,124,2,124,4,171,5,0,0,0,0,0,0,
+ 83,0,41,1,117,34,3,0,0,69,120,101,99,117,116,101,
+ 32,97,32,109,111,100,117,108,101,39,115,32,99,111,100,101,
+ 32,119,105,116,104,111,117,116,32,105,109,112,111,114,116,105,
+ 110,103,32,105,116,46,10,10,32,32,32,32,32,32,32,109,
+ 111,100,95,110,97,109,101,32,45,45,32,97,110,32,97,98,
+ 115,111,108,117,116,101,32,109,111,100,117,108,101,32,110,97,
+ 109,101,32,111,114,32,112,97,99,107,97,103,101,32,110,97,
+ 109,101,46,10,10,32,32,32,32,32,32,32,79,112,116,105,
+ 111,110,97,108,32,97,114,103,117,109,101,110,116,115,58,10,
+ 32,32,32,32,32,32,32,105,110,105,116,95,103,108,111,98,
+ 97,108,115,32,45,45,32,100,105,99,116,105,111,110,97,114,
+ 121,32,117,115,101,100,32,116,111,32,112,114,101,45,112,111,
+ 112,117,108,97,116,101,32,116,104,101,32,109,111,100,117,108,
+ 101,226,128,153,115,10,32,32,32,32,32,32,32,103,108,111,
+ 98,97,108,115,32,100,105,99,116,105,111,110,97,114,121,32,
+ 98,101,102,111,114,101,32,116,104,101,32,99,111,100,101,32,
+ 105,115,32,101,120,101,99,117,116,101,100,46,10,10,32,32,
+ 32,32,32,32,32,114,117,110,95,110,97,109,101,32,45,45,
+ 32,105,102,32,110,111,116,32,78,111,110,101,44,32,116,104,
+ 105,115,32,119,105,108,108,32,98,101,32,117,115,101,100,32,
+ 102,111,114,32,115,101,116,116,105,110,103,32,95,95,110,97,
+ 109,101,95,95,59,10,32,32,32,32,32,32,32,111,116,104,
+ 101,114,119,105,115,101,44,32,95,95,110,97,109,101,95,95,
+ 32,119,105,108,108,32,98,101,32,115,101,116,32,116,111,32,
+ 109,111,100,95,110,97,109,101,32,43,32,39,95,95,109,97,
+ 105,110,95,95,39,32,105,102,32,116,104,101,10,32,32,32,
+ 32,32,32,32,110,97,109,101,100,32,109,111,100,117,108,101,
+ 32,105,115,32,97,32,112,97,99,107,97,103,101,32,97,110,
+ 100,32,116,111,32,106,117,115,116,32,109,111,100,95,110,97,
+ 109,101,32,111,116,104,101,114,119,105,115,101,46,10,10,32,
+ 32,32,32,32,32,32,97,108,116,101,114,95,115,121,115,32,
+ 45,45,32,105,102,32,84,114,117,101,44,32,115,121,115,46,
+ 97,114,103,118,91,48,93,32,105,115,32,117,112,100,97,116,
+ 101,100,32,119,105,116,104,32,116,104,101,32,118,97,108,117,
+ 101,32,111,102,10,32,32,32,32,32,32,32,95,95,102,105,
+ 108,101,95,95,32,97,110,100,32,115,121,115,46,109,111,100,
+ 117,108,101,115,91,95,95,110,97,109,101,95,95,93,32,105,
+ 115,32,117,112,100,97,116,101,100,32,119,105,116,104,32,97,
+ 32,116,101,109,112,111,114,97,114,121,10,32,32,32,32,32,
+ 32,32,109,111,100,117,108,101,32,111,98,106,101,99,116,32,
+ 102,111,114,32,116,104,101,32,109,111,100,117,108,101,32,98,
+ 101,105,110,103,32,101,120,101,99,117,116,101,100,46,32,66,
+ 111,116,104,32,97,114,101,10,32,32,32,32,32,32,32,114,
+ 101,115,116,111,114,101,100,32,116,111,32,116,104,101,105,114,
+ 32,111,114,105,103,105,110,97,108,32,118,97,108,117,101,115,
+ 32,98,101,102,111,114,101,32,116,104,101,32,102,117,110,99,
+ 116,105,111,110,32,114,101,116,117,114,110,115,46,10,10,32,
+ 32,32,32,32,32,32,82,101,116,117,114,110,115,32,116,104,
+ 101,32,114,101,115,117,108,116,105,110,103,32,109,111,100,117,
+ 108,101,32,103,108,111,98,97,108,115,32,100,105,99,116,105,
+ 111,110,97,114,121,46,10,32,32,32,32,41,3,114,96,0,
+ 0,0,114,70,0,0,0,114,64,0,0,0,41,6,114,9,
+ 0,0,0,114,59,0,0,0,218,8,114,117,110,95,110,97,
+ 109,101,218,9,97,108,116,101,114,95,115,121,115,114,60,0,
+ 0,0,114,57,0,0,0,115,6,0,0,0,32,32,32,32,
+ 32,32,114,15,0,0,0,114,3,0,0,0,114,3,0,0,
+ 0,201,0,0,0,115,73,0,0,0,128,0,244,42,0,32,
+ 51,176,56,211,31,60,209,4,28,128,72,136,104,152,4,216,
+ 7,15,208,7,23,216,19,27,136,8,217,7,16,220,15,31,
+ 160,4,160,108,176,72,184,104,211,15,71,208,8,71,244,6,
+ 0,16,25,152,20,152,114,160,60,176,24,184,56,211,15,68,
+ 208,8,68,114,17,0,0,0,99,1,0,0,0,0,0,0,
+ 0,0,0,0,0,8,0,0,0,3,0,0,0,243,58,1,
+ 0,0,151,0,100,1,125,1,116,0,0,0,0,0,0,0,
+ 0,0,106,2,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,124,1,25,0,0,0,125,2,116,0,
+ 0,0,0,0,0,0,0,0,106,2,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,124,1,61,0,
+ 9,0,116,5,0,0,0,0,0,0,0,0,124,1,171,1,
+ 0,0,0,0,0,0,124,2,116,0,0,0,0,0,0,0,
+ 0,0,106,2,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,124,1,60,0,0,0,83,0,35,0,
+ 116,6,0,0,0,0,0,0,0,0,36,0,114,51,125,3,
+ 124,1,116,9,0,0,0,0,0,0,0,0,124,3,171,1,
+ 0,0,0,0,0,0,118,0,114,32,2,0,124,0,100,2,
+ 124,1,155,2,100,3,116,0,0,0,0,0,0,0,0,0,
+ 106,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,100,4,25,0,0,0,155,2,157,4,171,1,
+ 0,0,0,0,0,0,124,3,130,2,130,0,100,0,125,3,
+ 126,3,119,1,119,0,120,3,89,0,119,1,35,0,124,2,
+ 116,0,0,0,0,0,0,0,0,0,106,2,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,1,
+ 60,0,0,0,119,0,120,3,89,0,119,1,41,5,78,114,
+ 76,0,0,0,122,11,99,97,110,39,116,32,102,105,110,100,
+ 32,122,11,32,109,111,100,117,108,101,32,105,110,32,114,2,
+ 0,0,0,41,6,114,20,0,0,0,114,21,0,0,0,114,
+ 96,0,0,0,114,80,0,0,0,218,3,115,116,114,218,4,
+ 112,97,116,104,41,4,114,98,0,0,0,218,9,109,97,105,
+ 110,95,110,97,109,101,218,10,115,97,118,101,100,95,109,97,
+ 105,110,114,113,0,0,0,115,4,0,0,0,32,32,32,32,
+ 114,15,0,0,0,114,109,0,0,0,114,109,0,0,0,231,
+ 0,0,0,115,149,0,0,0,128,0,240,10,0,17,27,128,
+ 73,220,17,20,151,27,145,27,152,89,209,17,39,128,74,220,
+ 8,11,143,11,137,11,144,73,208,8,30,240,2,8,5,44,
+ 220,15,34,160,57,211,15,45,240,14,0,34,44,140,3,143,
+ 11,137,11,144,73,210,8,30,248,244,13,0,12,23,242,0,
+ 4,5,14,216,11,20,156,3,152,67,155,8,209,11,32,218,
+ 18,23,218,31,40,172,35,175,40,169,40,176,49,170,43,240,
+ 3,1,25,55,243,0,1,19,56,216,61,64,240,3,1,13,
+ 65,1,224,8,13,251,240,9,4,5,14,251,240,12,0,34,
+ 44,140,3,143,11,137,11,144,73,210,8,30,250,115,35,0,
+ 0,0,168,10,65,6,0,193,6,9,66,2,3,193,15,46,
+ 65,61,3,193,61,5,66,2,3,194,2,3,66,5,0,194,
+ 5,21,66,26,3,99,2,0,0,0,0,0,0,0,0,0,
+ 0,0,6,0,0,0,3,0,0,0,243,122,1,0,0,151,
+ 0,100,1,100,2,108,0,109,1,125,2,1,0,116,4,0,
+ 0,0,0,0,0,0,0,106,6,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,106,9,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,
+ 5,0,0,0,0,0,0,0,0,106,10,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,124,1,171,
+ 1,0,0,0,0,0,0,171,1,0,0,0,0,0,0,125,
+ 3,116,13,0,0,0,0,0,0,0,0,106,14,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,
+ 3,171,1,0,0,0,0,0,0,53,0,125,4,2,0,124,
+ 2,124,4,171,1,0,0,0,0,0,0,125,5,100,0,100,
+ 0,100,0,171,2,0,0,0,0,0,0,1,0,127,5,128,
+ 61,116,13,0,0,0,0,0,0,0,0,106,14,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,
+ 3,171,1,0,0,0,0,0,0,53,0,125,4,116,17,0,
+ 0,0,0,0,0,0,0,124,4,106,19,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,171,0,0,
+ 0,0,0,0,0,124,1,100,3,171,3,0,0,0,0,0,
+ 0,125,5,100,0,100,0,100,0,171,2,0,0,0,0,0,
+ 0,1,0,124,5,124,1,102,2,83,0,124,5,124,1,102,
+ 2,83,0,35,0,49,0,115,1,119,2,1,0,89,0,1,
+ 0,1,0,140,76,120,3,89,0,119,1,35,0,49,0,115,
+ 1,119,2,1,0,89,0,1,0,1,0,124,5,124,1,102,
+ 2,83,0,120,3,89,0,119,1,41,4,78,114,2,0,0,
+ 0,41,1,218,9,114,101,97,100,95,99,111,100,101,114,56,
+ 0,0,0,41,10,218,7,112,107,103,117,116,105,108,114,125,
+ 0,0,0,218,2,111,115,114,121,0,0,0,218,7,97,98,
+ 115,112,97,116,104,218,8,102,115,100,101,99,111,100,101,218,
+ 2,105,111,218,9,111,112,101,110,95,99,111,100,101,218,7,
+ 99,111,109,112,105,108,101,218,4,114,101,97,100,41,6,114,
+ 117,0,0,0,114,63,0,0,0,114,125,0,0,0,218,12,
+ 100,101,99,111,100,101,100,95,112,97,116,104,218,1,102,114,
+ 57,0,0,0,115,6,0,0,0,32,32,32,32,32,32,114,
+ 15,0,0,0,218,19,95,103,101,116,95,99,111,100,101,95,
+ 102,114,111,109,95,102,105,108,101,114,136,0,0,0,250,0,
+ 0,0,115,160,0,0,0,128,0,229,4,33,220,19,21,151,
+ 55,145,55,151,63,145,63,164,50,167,59,161,59,168,117,211,
+ 35,53,211,19,54,128,76,220,9,11,143,28,137,28,144,108,
+ 211,9,35,240,0,1,5,28,160,113,217,15,24,152,17,139,
+ 124,136,4,247,3,1,5,28,224,7,11,128,124,228,13,15,
+ 143,92,137,92,152,44,211,13,39,240,0,1,9,52,168,49,
+ 220,19,26,152,49,159,54,153,54,155,56,160,85,168,70,211,
+ 19,51,136,68,247,3,1,9,52,224,11,15,144,21,136,59,
+ 208,4,22,136,52,144,21,136,59,208,4,22,247,13,1,5,
+ 28,240,0,1,5,28,250,247,8,1,9,52,224,11,15,144,
+ 21,136,59,208,4,22,250,115,24,0,0,0,193,14,9,66,
+ 34,3,193,54,28,66,46,3,194,34,5,66,43,7,194,46,
+ 5,66,58,7,99,3,0,0,0,0,0,0,0,0,0,0,
+ 0,10,0,0,0,3,0,0,0,243,56,3,0,0,151,0,
+ 124,2,128,2,100,2,125,2,124,2,106,1,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,3,
+ 171,1,0,0,0,0,0,0,100,4,25,0,0,0,125,3,
+ 100,4,100,5,108,1,109,2,125,4,1,0,2,0,124,4,
+ 124,0,171,1,0,0,0,0,0,0,125,5,116,7,0,0,
+ 0,0,0,0,0,0,124,5,116,9,0,0,0,0,0,0,
+ 0,0,100,1,171,1,0,0,0,0,0,0,171,2,0,0,
+ 0,0,0,0,114,31,116,11,0,0,0,0,0,0,0,0,
+ 124,2,124,0,171,2,0,0,0,0,0,0,92,2,0,0,
+ 125,6,125,7,116,13,0,0,0,0,0,0,0,0,124,6,
+ 124,1,124,2,124,3,124,7,172,6,171,5,0,0,0,0,
+ 0,0,83,0,116,14,0,0,0,0,0,0,0,0,106,16,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,106,19,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,100,4,124,0,171,2,0,0,0,0,
+ 0,0,1,0,9,0,116,21,0,0,0,0,0,0,0,0,
+ 171,0,0,0,0,0,0,0,92,3,0,0,125,8,125,9,
+ 125,6,116,23,0,0,0,0,0,0,0,0,124,2,171,1,
+ 0,0,0,0,0,0,53,0,125,10,116,25,0,0,0,0,
+ 0,0,0,0,124,0,171,1,0,0,0,0,0,0,53,0,
+ 1,0,124,10,106,26,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,106,28,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,125,11,116,31,
+ 0,0,0,0,0,0,0,0,124,6,124,11,124,1,124,2,
+ 124,9,124,3,171,6,0,0,0,0,0,0,106,33,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 171,0,0,0,0,0,0,0,99,2,100,1,100,1,100,1,
+ 171,2,0,0,0,0,0,0,1,0,99,2,100,1,100,1,
+ 100,1,171,2,0,0,0,0,0,0,1,0,9,0,116,14,
+ 0,0,0,0,0,0,0,0,106,16,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,106,35,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 124,0,171,1,0,0,0,0,0,0,1,0,83,0,35,0,
+ 116,36,0,0,0,0,0,0,0,0,36,0,114,3,1,0,
+ 89,0,83,0,119,0,120,3,89,0,119,1,35,0,49,0,
+ 115,1,119,2,1,0,89,0,1,0,1,0,110,3,120,3,
+ 89,0,119,1,100,1,100,1,100,1,171,2,0,0,0,0,
+ 0,0,1,0,110,12,35,0,49,0,115,1,119,2,1,0,
+ 89,0,1,0,1,0,110,3,120,3,89,0,119,1,9,0,
+ 116,14,0,0,0,0,0,0,0,0,106,16,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,35,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,124,0,171,1,0,0,0,0,0,0,1,0,121,1,
+ 35,0,116,36,0,0,0,0,0,0,0,0,36,0,114,3,
+ 1,0,89,0,121,1,119,0,120,3,89,0,119,1,35,0,
+ 9,0,116,14,0,0,0,0,0,0,0,0,106,16,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 106,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,124,0,171,1,0,0,0,0,0,0,1,0,
+ 119,0,35,0,116,36,0,0,0,0,0,0,0,0,36,0,
+ 114,3,1,0,89,0,119,0,119,0,120,3,89,0,119,1,
+ 120,3,89,0,119,1,41,7,117,20,2,0,0,69,120,101,
+ 99,117,116,101,32,99,111,100,101,32,108,111,99,97,116,101,
+ 100,32,97,116,32,116,104,101,32,115,112,101,99,105,102,105,
+ 101,100,32,102,105,108,101,115,121,115,116,101,109,32,108,111,
+ 99,97,116,105,111,110,46,10,10,32,32,32,32,32,32,32,
+ 112,97,116,104,95,110,97,109,101,32,45,45,32,102,105,108,
+ 101,115,121,115,116,101,109,32,108,111,99,97,116,105,111,110,
+ 32,111,102,32,97,32,80,121,116,104,111,110,32,115,99,114,
+ 105,112,116,44,32,122,105,112,102,105,108,101,44,10,32,32,
+ 32,32,32,32,32,111,114,32,100,105,114,101,99,116,111,114,
+ 121,32,99,111,110,116,97,105,110,105,110,103,32,97,32,116,
+ 111,112,32,108,101,118,101,108,32,95,95,109,97,105,110,95,
+ 95,46,112,121,32,115,99,114,105,112,116,46,10,10,32,32,
+ 32,32,32,32,32,79,112,116,105,111,110,97,108,32,97,114,
+ 103,117,109,101,110,116,115,58,10,32,32,32,32,32,32,32,
+ 105,110,105,116,95,103,108,111,98,97,108,115,32,45,45,32,
+ 100,105,99,116,105,111,110,97,114,121,32,117,115,101,100,32,
+ 116,111,32,112,114,101,45,112,111,112,117,108,97,116,101,32,
+ 116,104,101,32,109,111,100,117,108,101,226,128,153,115,10,32,
+ 32,32,32,32,32,32,103,108,111,98,97,108,115,32,100,105,
+ 99,116,105,111,110,97,114,121,32,98,101,102,111,114,101,32,
+ 116,104,101,32,99,111,100,101,32,105,115,32,101,120,101,99,
+ 117,116,101,100,46,10,10,32,32,32,32,32,32,32,114,117,
+ 110,95,110,97,109,101,32,45,45,32,105,102,32,110,111,116,
+ 32,78,111,110,101,44,32,116,104,105,115,32,119,105,108,108,
+ 32,98,101,32,117,115,101,100,32,116,111,32,115,101,116,32,
+ 95,95,110,97,109,101,95,95,59,10,32,32,32,32,32,32,
+ 32,111,116,104,101,114,119,105,115,101,44,32,39,60,114,117,
+ 110,95,112,97,116,104,62,39,32,119,105,108,108,32,98,101,
+ 32,117,115,101,100,32,102,111,114,32,95,95,110,97,109,101,
+ 95,95,46,10,10,32,32,32,32,32,32,32,82,101,116,117,
+ 114,110,115,32,116,104,101,32,114,101,115,117,108,116,105,110,
+ 103,32,109,111,100,117,108,101,32,103,108,111,98,97,108,115,
+ 32,100,105,99,116,105,111,110,97,114,121,46,10,32,32,32,
+ 32,78,122,10,60,114,117,110,95,112,97,116,104,62,114,72,
+ 0,0,0,114,2,0,0,0,41,1,218,12,103,101,116,95,
+ 105,109,112,111,114,116,101,114,41,2,114,61,0,0,0,114,
+ 62,0,0,0,41,19,114,78,0,0,0,114,126,0,0,0,
+ 114,138,0,0,0,218,10,105,115,105,110,115,116,97,110,99,
+ 101,114,94,0,0,0,114,136,0,0,0,114,70,0,0,0,
+ 114,20,0,0,0,114,121,0,0,0,218,6,105,110,115,101,
+ 114,116,114,109,0,0,0,114,6,0,0,0,114,35,0,0,
+ 0,114,11,0,0,0,114,66,0,0,0,114,64,0,0,0,
+ 114,67,0,0,0,218,6,114,101,109,111,118,101,114,92,0,
+ 0,0,41,12,218,9,112,97,116,104,95,110,97,109,101,114,
+ 59,0,0,0,114,117,0,0,0,114,61,0,0,0,114,138,
+ 0,0,0,218,8,105,109,112,111,114,116,101,114,114,57,0,
+ 0,0,114,63,0,0,0,114,9,0,0,0,114,60,0,0,
+ 0,114,68,0,0,0,114,69,0,0,0,115,12,0,0,0,
+ 32,32,32,32,32,32,32,32,32,32,32,32,114,15,0,0,
+ 0,114,4,0,0,0,114,4,0,0,0,6,1,0,0,115,
+ 137,1,0,0,128,0,240,30,0,8,16,208,7,23,216,19,
+ 31,136,8,216,15,23,215,15,34,209,15,34,160,51,211,15,
+ 39,168,1,209,15,42,128,72,221,4,36,217,15,27,152,73,
+ 211,15,38,128,72,220,7,17,144,40,156,68,160,20,155,74,
+ 212,7,39,244,6,0,23,42,168,40,176,73,211,22,62,137,
+ 11,136,4,136,101,220,15,31,160,4,160,108,176,72,216,41,
+ 49,184,117,244,3,1,16,70,1,240,0,1,9,70,1,244,
+ 10,0,9,12,143,8,137,8,143,15,137,15,152,1,152,57,
+ 212,8,37,240,2,17,9,21,244,14,0,40,64,1,211,39,
+ 65,209,12,36,136,72,144,104,160,4,220,17,28,152,88,211,
+ 17,38,240,0,4,13,73,1,168,43,220,17,31,160,9,211,
+ 17,42,241,3,4,13,73,1,224,30,41,215,30,48,209,30,
+ 48,215,30,57,209,30,57,144,11,220,23,32,160,20,160,123,
+ 176,76,216,36,44,168,104,184,8,243,3,1,24,66,1,223,
+ 66,70,193,36,195,38,247,9,4,13,73,1,247,0,4,13,
+ 73,1,241,0,4,13,73,1,240,12,3,13,21,220,16,19,
+ 151,8,145,8,151,15,145,15,160,9,213,16,42,248,220,19,
+ 29,242,0,1,13,21,217,16,20,240,3,1,13,21,250,247,
+ 17,4,13,73,1,240,0,4,13,73,1,250,247,0,4,13,
+ 73,1,247,0,4,13,73,1,241,0,4,13,73,1,250,240,
+ 12,3,13,21,220,16,19,151,8,145,8,151,15,145,15,160,
+ 9,213,16,42,248,220,19,29,242,0,1,13,21,217,16,20,
+ 240,3,1,13,21,251,240,5,3,13,21,220,16,19,151,8,
+ 145,8,151,15,145,15,160,9,213,16,42,248,220,19,29,242,
+ 0,1,13,21,217,16,20,240,3,1,13,21,253,115,138,0,
+ 0,0,193,60,25,69,40,0,194,21,12,68,44,3,194,33,
+ 52,68,23,5,195,21,9,68,44,3,195,30,9,69,40,0,
+ 195,40,31,68,8,2,196,8,9,68,20,5,196,19,1,68,
+ 20,5,196,23,5,68,32,9,196,28,7,68,44,3,196,35,
+ 9,69,40,0,196,44,5,68,53,7,196,49,7,69,40,0,
+ 196,57,31,69,25,0,197,25,9,69,37,3,197,36,1,69,
+ 37,3,197,40,1,70,25,3,197,42,31,70,10,4,198,9,
+ 1,70,25,3,198,10,9,70,22,7,198,19,2,70,25,3,
+ 198,21,1,70,22,7,198,22,3,70,25,3,114,76,0,0,
+ 0,233,2,0,0,0,122,33,78,111,32,109,111,100,117,108,
+ 101,32,115,112,101,99,105,102,105,101,100,32,102,111,114,32,
+ 101,120,101,99,117,116,105,111,110,41,1,218,4,102,105,108,
+ 101,41,5,78,78,78,78,78,41,1,84,41,3,78,78,70,
+ 41,2,78,78,41,29,114,32,0,0,0,114,20,0,0,0,
+ 218,19,105,109,112,111,114,116,108,105,98,46,109,97,99,104,
+ 105,110,101,114,121,114,87,0,0,0,218,14,105,109,112,111,
+ 114,116,108,105,98,46,117,116,105,108,114,130,0,0,0,114,
+ 127,0,0,0,218,7,95,95,97,108,108,95,95,114,94,0,
+ 0,0,114,10,0,0,0,114,38,0,0,0,114,6,0,0,
+ 0,114,35,0,0,0,114,64,0,0,0,114,70,0,0,0,
+ 114,80,0,0,0,114,96,0,0,0,218,9,69,120,99,101,
+ 112,116,105,111,110,114,107,0,0,0,114,115,0,0,0,114,
+ 3,0,0,0,114,109,0,0,0,114,136,0,0,0,114,4,
+ 0,0,0,114,29,0,0,0,218,3,108,101,110,114,43,0,
+ 0,0,218,5,112,114,105,110,116,218,6,115,116,100,101,114,
+ 114,114,33,0,0,0,114,17,0,0,0,114,15,0,0,0,
+ 250,8,60,109,111,100,117,108,101,62,114,153,0,0,0,1,
+ 0,0,0,115,246,0,0,0,240,3,1,1,1,241,2,7,
+ 1,4,243,24,0,1,11,219,0,26,219,0,21,219,0,9,
+ 219,0,9,240,6,0,5,17,144,42,240,3,2,11,2,128,
+ 7,241,10,0,14,18,144,35,139,89,128,10,244,4,21,1,
+ 32,144,38,244,0,21,1,32,244,46,13,1,40,144,86,244,
+ 0,13,1,40,240,32,0,47,51,216,38,42,216,41,45,243,
+ 5,24,1,23,240,52,0,41,45,216,44,48,216,47,51,243,
+ 5,11,1,30,240,28,0,41,52,243,0,59,1,32,244,122,
+ 1,1,1,77,1,136,89,244,0,1,1,77,1,243,14,26,
+ 1,43,240,56,0,39,43,216,40,45,243,3,28,1,69,1,
+ 240,60,0,36,47,243,0,16,1,44,242,38,10,1,23,243,
+ 24,47,1,21,240,100,1,0,4,12,136,122,210,3,25,225,
+ 7,10,136,51,143,56,137,56,131,125,144,113,210,7,24,217,
+ 8,13,208,14,49,184,3,191,10,185,10,214,8,67,224,12,
+ 15,143,72,137,72,144,81,136,75,217,8,27,152,67,159,72,
+ 153,72,160,81,153,75,213,8,40,240,13,0,4,26,114,17,
+ 0,0,0,
+};
diff --git a/contrib/tools/python3/Python/frozen_modules/site.h b/contrib/tools/python3/Python/frozen_modules/site.h
new file mode 100644
index 00000000000..df8b6f839f6
--- /dev/null
+++ b/contrib/tools/python3/Python/frozen_modules/site.h
@@ -0,0 +1,1751 @@
+/* Auto-generated by Programs/_freeze_module.py */
+const unsigned char _Py_M__site[] = {
+ 227,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,
+ 0,0,0,0,0,243,94,1,0,0,151,0,100,0,90,0,
+ 100,1,100,2,108,1,90,1,100,1,100,2,108,2,90,2,
+ 100,1,100,2,108,3,90,3,100,1,100,2,108,4,90,4,
+ 100,1,100,2,108,5,90,5,100,1,100,2,108,6,90,6,
+ 101,1,106,14,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,101,1,106,16,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,103,2,97,9,
+ 100,2,97,10,100,2,97,11,100,2,97,12,100,3,132,0,
+ 90,13,100,4,132,0,90,14,100,5,132,0,90,15,100,6,
+ 132,0,90,16,100,7,132,0,90,17,100,8,132,0,90,18,
+ 100,28,100,9,132,1,90,19,100,10,132,0,90,20,100,11,
+ 132,0,90,21,100,12,132,0,90,22,100,13,132,0,90,23,
+ 100,14,132,0,90,24,100,15,132,0,90,25,100,28,100,16,
+ 132,1,90,26,100,28,100,17,132,1,90,27,100,18,132,0,
+ 90,28,100,19,132,0,90,29,100,20,132,0,90,30,100,21,
+ 132,0,90,31,100,22,132,0,90,32,100,23,132,0,90,33,
+ 100,24,132,0,90,34,100,25,132,0,90,35,101,1,106,72,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,106,74,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,115,7,2,0,101,35,171,0,0,0,
+ 0,0,0,0,1,0,100,26,132,0,90,38,101,39,100,27,
+ 107,40,0,0,114,8,2,0,101,38,171,0,0,0,0,0,
+ 0,0,1,0,121,2,121,2,41,29,97,182,11,0,0,65,
+ 112,112,101,110,100,32,109,111,100,117,108,101,32,115,101,97,
+ 114,99,104,32,112,97,116,104,115,32,102,111,114,32,116,104,
+ 105,114,100,45,112,97,114,116,121,32,112,97,99,107,97,103,
+ 101,115,32,116,111,32,115,121,115,46,112,97,116,104,46,10,
+ 10,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,
+ 42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,
+ 42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,
+ 42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,
+ 42,10,42,32,84,104,105,115,32,109,111,100,117,108,101,32,
+ 105,115,32,97,117,116,111,109,97,116,105,99,97,108,108,121,
+ 32,105,109,112,111,114,116,101,100,32,100,117,114,105,110,103,
+ 32,105,110,105,116,105,97,108,105,122,97,116,105,111,110,46,
+ 32,42,10,42,42,42,42,42,42,42,42,42,42,42,42,42,
+ 42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,
+ 42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,
+ 42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,
+ 42,42,42,10,10,84,104,105,115,32,119,105,108,108,32,97,
+ 112,112,101,110,100,32,115,105,116,101,45,115,112,101,99,105,
+ 102,105,99,32,112,97,116,104,115,32,116,111,32,116,104,101,
+ 32,109,111,100,117,108,101,32,115,101,97,114,99,104,32,112,
+ 97,116,104,46,32,32,79,110,10,85,110,105,120,32,40,105,
+ 110,99,108,117,100,105,110,103,32,77,97,99,32,79,83,88,
+ 41,44,32,105,116,32,115,116,97,114,116,115,32,119,105,116,
+ 104,32,115,121,115,46,112,114,101,102,105,120,32,97,110,100,
+ 10,115,121,115,46,101,120,101,99,95,112,114,101,102,105,120,
+ 32,40,105,102,32,100,105,102,102,101,114,101,110,116,41,32,
+ 97,110,100,32,97,112,112,101,110,100,115,10,108,105,98,47,
+ 112,121,116,104,111,110,60,118,101,114,115,105,111,110,62,47,
+ 115,105,116,101,45,112,97,99,107,97,103,101,115,46,10,79,
+ 110,32,111,116,104,101,114,32,112,108,97,116,102,111,114,109,
+ 115,32,40,115,117,99,104,32,97,115,32,87,105,110,100,111,
+ 119,115,41,44,32,105,116,32,116,114,105,101,115,32,101,97,
+ 99,104,32,111,102,32,116,104,101,10,112,114,101,102,105,120,
+ 101,115,32,100,105,114,101,99,116,108,121,44,32,97,115,32,
+ 119,101,108,108,32,97,115,32,119,105,116,104,32,108,105,98,
+ 47,115,105,116,101,45,112,97,99,107,97,103,101,115,32,97,
+ 112,112,101,110,100,101,100,46,32,32,84,104,101,10,114,101,
+ 115,117,108,116,105,110,103,32,100,105,114,101,99,116,111,114,
+ 105,101,115,44,32,105,102,32,116,104,101,121,32,101,120,105,
+ 115,116,44,32,97,114,101,32,97,112,112,101,110,100,101,100,
+ 32,116,111,32,115,121,115,46,112,97,116,104,44,32,97,110,
+ 100,10,97,108,115,111,32,105,110,115,112,101,99,116,101,100,
+ 32,102,111,114,32,112,97,116,104,32,99,111,110,102,105,103,
+ 117,114,97,116,105,111,110,32,102,105,108,101,115,46,10,10,
+ 73,102,32,97,32,102,105,108,101,32,110,97,109,101,100,32,
+ 34,112,121,118,101,110,118,46,99,102,103,34,32,101,120,105,
+ 115,116,115,32,111,110,101,32,100,105,114,101,99,116,111,114,
+ 121,32,97,98,111,118,101,32,115,121,115,46,101,120,101,99,
+ 117,116,97,98,108,101,44,10,115,121,115,46,112,114,101,102,
+ 105,120,32,97,110,100,32,115,121,115,46,101,120,101,99,95,
+ 112,114,101,102,105,120,32,97,114,101,32,115,101,116,32,116,
+ 111,32,116,104,97,116,32,100,105,114,101,99,116,111,114,121,
+ 32,97,110,100,10,105,116,32,105,115,32,97,108,115,111,32,
+ 99,104,101,99,107,101,100,32,102,111,114,32,115,105,116,101,
+ 45,112,97,99,107,97,103,101,115,32,40,115,121,115,46,98,
+ 97,115,101,95,112,114,101,102,105,120,32,97,110,100,10,115,
+ 121,115,46,98,97,115,101,95,101,120,101,99,95,112,114,101,
+ 102,105,120,32,119,105,108,108,32,97,108,119,97,121,115,32,
+ 98,101,32,116,104,101,32,34,114,101,97,108,34,32,112,114,
+ 101,102,105,120,101,115,32,111,102,32,116,104,101,32,80,121,
+ 116,104,111,110,10,105,110,115,116,97,108,108,97,116,105,111,
+ 110,41,46,32,73,102,32,34,112,121,118,101,110,118,46,99,
+ 102,103,34,32,40,97,32,98,111,111,116,115,116,114,97,112,
+ 32,99,111,110,102,105,103,117,114,97,116,105,111,110,32,102,
+ 105,108,101,41,32,99,111,110,116,97,105,110,115,10,116,104,
+ 101,32,107,101,121,32,34,105,110,99,108,117,100,101,45,115,
+ 121,115,116,101,109,45,115,105,116,101,45,112,97,99,107,97,
+ 103,101,115,34,32,115,101,116,32,116,111,32,97,110,121,116,
+ 104,105,110,103,32,111,116,104,101,114,32,116,104,97,110,32,
+ 34,102,97,108,115,101,34,10,40,99,97,115,101,45,105,110,
+ 115,101,110,115,105,116,105,118,101,41,44,32,116,104,101,32,
+ 115,121,115,116,101,109,45,108,101,118,101,108,32,112,114,101,
+ 102,105,120,101,115,32,119,105,108,108,32,115,116,105,108,108,
+ 32,97,108,115,111,32,98,101,10,115,101,97,114,99,104,101,
+ 100,32,102,111,114,32,115,105,116,101,45,112,97,99,107,97,
+ 103,101,115,59,32,111,116,104,101,114,119,105,115,101,32,116,
+ 104,101,121,32,119,111,110,39,116,46,10,10,65,108,108,32,
+ 111,102,32,116,104,101,32,114,101,115,117,108,116,105,110,103,
+ 32,115,105,116,101,45,115,112,101,99,105,102,105,99,32,100,
+ 105,114,101,99,116,111,114,105,101,115,44,32,105,102,32,116,
+ 104,101,121,32,101,120,105,115,116,44,32,97,114,101,10,97,
+ 112,112,101,110,100,101,100,32,116,111,32,115,121,115,46,112,
+ 97,116,104,44,32,97,110,100,32,97,108,115,111,32,105,110,
+ 115,112,101,99,116,101,100,32,102,111,114,32,112,97,116,104,
+ 32,99,111,110,102,105,103,117,114,97,116,105,111,110,10,102,
+ 105,108,101,115,46,10,10,65,32,112,97,116,104,32,99,111,
+ 110,102,105,103,117,114,97,116,105,111,110,32,102,105,108,101,
+ 32,105,115,32,97,32,102,105,108,101,32,119,104,111,115,101,
+ 32,110,97,109,101,32,104,97,115,32,116,104,101,32,102,111,
+ 114,109,10,60,112,97,99,107,97,103,101,62,46,112,116,104,
+ 59,32,105,116,115,32,99,111,110,116,101,110,116,115,32,97,
+ 114,101,32,97,100,100,105,116,105,111,110,97,108,32,100,105,
+ 114,101,99,116,111,114,105,101,115,32,40,111,110,101,32,112,
+ 101,114,32,108,105,110,101,41,10,116,111,32,98,101,32,97,
+ 100,100,101,100,32,116,111,32,115,121,115,46,112,97,116,104,
+ 46,32,32,78,111,110,45,101,120,105,115,116,105,110,103,32,
+ 100,105,114,101,99,116,111,114,105,101,115,32,40,111,114,10,
+ 110,111,110,45,100,105,114,101,99,116,111,114,105,101,115,41,
+ 32,97,114,101,32,110,101,118,101,114,32,97,100,100,101,100,
+ 32,116,111,32,115,121,115,46,112,97,116,104,59,32,110,111,
+ 32,100,105,114,101,99,116,111,114,121,32,105,115,32,97,100,
+ 100,101,100,32,116,111,10,115,121,115,46,112,97,116,104,32,
+ 109,111,114,101,32,116,104,97,110,32,111,110,99,101,46,32,
+ 32,66,108,97,110,107,32,108,105,110,101,115,32,97,110,100,
+ 32,108,105,110,101,115,32,98,101,103,105,110,110,105,110,103,
+ 32,119,105,116,104,10,39,35,39,32,97,114,101,32,115,107,
+ 105,112,112,101,100,46,32,76,105,110,101,115,32,115,116,97,
+ 114,116,105,110,103,32,119,105,116,104,32,39,105,109,112,111,
+ 114,116,39,32,97,114,101,32,101,120,101,99,117,116,101,100,
+ 46,10,10,70,111,114,32,101,120,97,109,112,108,101,44,32,
+ 115,117,112,112,111,115,101,32,115,121,115,46,112,114,101,102,
+ 105,120,32,97,110,100,32,115,121,115,46,101,120,101,99,95,
+ 112,114,101,102,105,120,32,97,114,101,32,115,101,116,32,116,
+ 111,10,47,117,115,114,47,108,111,99,97,108,32,97,110,100,
+ 32,116,104,101,114,101,32,105,115,32,97,32,100,105,114,101,
+ 99,116,111,114,121,32,47,117,115,114,47,108,111,99,97,108,
+ 47,108,105,98,47,112,121,116,104,111,110,50,46,53,47,115,
+ 105,116,101,45,112,97,99,107,97,103,101,115,10,119,105,116,
+ 104,32,116,104,114,101,101,32,115,117,98,100,105,114,101,99,
+ 116,111,114,105,101,115,44,32,102,111,111,44,32,98,97,114,
+ 32,97,110,100,32,115,112,97,109,44,32,97,110,100,32,116,
+ 119,111,32,112,97,116,104,10,99,111,110,102,105,103,117,114,
+ 97,116,105,111,110,32,102,105,108,101,115,44,32,102,111,111,
+ 46,112,116,104,32,97,110,100,32,98,97,114,46,112,116,104,
+ 46,32,32,65,115,115,117,109,101,32,102,111,111,46,112,116,
+ 104,32,99,111,110,116,97,105,110,115,32,116,104,101,10,102,
+ 111,108,108,111,119,105,110,103,58,10,10,32,32,35,32,102,
+ 111,111,32,112,97,99,107,97,103,101,32,99,111,110,102,105,
+ 103,117,114,97,116,105,111,110,10,32,32,102,111,111,10,32,
+ 32,98,97,114,10,32,32,98,108,101,116,99,104,10,10,97,
+ 110,100,32,98,97,114,46,112,116,104,32,99,111,110,116,97,
+ 105,110,115,58,10,10,32,32,35,32,98,97,114,32,112,97,
+ 99,107,97,103,101,32,99,111,110,102,105,103,117,114,97,116,
+ 105,111,110,10,32,32,98,97,114,10,10,84,104,101,110,32,
+ 116,104,101,32,102,111,108,108,111,119,105,110,103,32,100,105,
+ 114,101,99,116,111,114,105,101,115,32,97,114,101,32,97,100,
+ 100,101,100,32,116,111,32,115,121,115,46,112,97,116,104,44,
+ 32,105,110,32,116,104,105,115,32,111,114,100,101,114,58,10,
+ 10,32,32,47,117,115,114,47,108,111,99,97,108,47,108,105,
+ 98,47,112,121,116,104,111,110,50,46,53,47,115,105,116,101,
+ 45,112,97,99,107,97,103,101,115,47,98,97,114,10,32,32,
+ 47,117,115,114,47,108,111,99,97,108,47,108,105,98,47,112,
+ 121,116,104,111,110,50,46,53,47,115,105,116,101,45,112,97,
+ 99,107,97,103,101,115,47,102,111,111,10,10,78,111,116,101,
+ 32,116,104,97,116,32,98,108,101,116,99,104,32,105,115,32,
+ 111,109,105,116,116,101,100,32,98,101,99,97,117,115,101,32,
+ 105,116,32,100,111,101,115,110,39,116,32,101,120,105,115,116,
+ 59,32,98,97,114,32,112,114,101,99,101,100,101,115,32,102,
+ 111,111,10,98,101,99,97,117,115,101,32,98,97,114,46,112,
+ 116,104,32,99,111,109,101,115,32,97,108,112,104,97,98,101,
+ 116,105,99,97,108,108,121,32,98,101,102,111,114,101,32,102,
+ 111,111,46,112,116,104,59,32,97,110,100,32,115,112,97,109,
+ 32,105,115,10,111,109,105,116,116,101,100,32,98,101,99,97,
+ 117,115,101,32,105,116,32,105,115,32,110,111,116,32,109,101,
+ 110,116,105,111,110,101,100,32,105,110,32,101,105,116,104,101,
+ 114,32,112,97,116,104,32,99,111,110,102,105,103,117,114,97,
+ 116,105,111,110,32,102,105,108,101,46,10,10,84,104,101,32,
+ 114,101,97,100,108,105,110,101,32,109,111,100,117,108,101,32,
+ 105,115,32,97,108,115,111,32,97,117,116,111,109,97,116,105,
+ 99,97,108,108,121,32,99,111,110,102,105,103,117,114,101,100,
+ 32,116,111,32,101,110,97,98,108,101,10,99,111,109,112,108,
+ 101,116,105,111,110,32,102,111,114,32,115,121,115,116,101,109,
+ 115,32,116,104,97,116,32,115,117,112,112,111,114,116,32,105,
+ 116,46,32,32,84,104,105,115,32,99,97,110,32,98,101,32,
+ 111,118,101,114,114,105,100,100,101,110,32,105,110,10,115,105,
+ 116,101,99,117,115,116,111,109,105,122,101,44,32,117,115,101,
+ 114,99,117,115,116,111,109,105,122,101,32,111,114,32,80,89,
+ 84,72,79,78,83,84,65,82,84,85,80,46,32,32,83,116,
+ 97,114,116,105,110,103,32,80,121,116,104,111,110,32,105,110,
+ 10,105,115,111,108,97,116,101,100,32,109,111,100,101,32,40,
+ 45,73,41,32,100,105,115,97,98,108,101,115,32,97,117,116,
+ 111,109,97,116,105,99,32,114,101,97,100,108,105,110,101,32,
+ 99,111,110,102,105,103,117,114,97,116,105,111,110,46,10,10,
+ 65,102,116,101,114,32,116,104,101,115,101,32,111,112,101,114,
+ 97,116,105,111,110,115,44,32,97,110,32,97,116,116,101,109,
+ 112,116,32,105,115,32,109,97,100,101,32,116,111,32,105,109,
+ 112,111,114,116,32,97,32,109,111,100,117,108,101,10,110,97,
+ 109,101,100,32,115,105,116,101,99,117,115,116,111,109,105,122,
+ 101,44,32,119,104,105,99,104,32,99,97,110,32,112,101,114,
+ 102,111,114,109,32,97,114,98,105,116,114,97,114,121,32,97,
+ 100,100,105,116,105,111,110,97,108,10,115,105,116,101,45,115,
+ 112,101,99,105,102,105,99,32,99,117,115,116,111,109,105,122,
+ 97,116,105,111,110,115,46,32,32,73,102,32,116,104,105,115,
+ 32,105,109,112,111,114,116,32,102,97,105,108,115,32,119,105,
+ 116,104,32,97,110,10,73,109,112,111,114,116,69,114,114,111,
+ 114,32,101,120,99,101,112,116,105,111,110,44,32,105,116,32,
+ 105,115,32,115,105,108,101,110,116,108,121,32,105,103,110,111,
+ 114,101,100,46,10,233,0,0,0,0,78,99,1,0,0,0,
+ 0,0,0,0,0,0,0,0,4,0,0,0,3,0,0,0,
+ 243,112,0,0,0,151,0,116,0,0,0,0,0,0,0,0,
+ 0,106,2,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,106,4,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,114,28,116,7,0,0,0,
+ 0,0,0,0,0,124,0,116,0,0,0,0,0,0,0,0,
+ 0,106,8,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,172,1,171,2,0,0,0,0,0,0,1,
+ 0,121,0,121,0,41,2,78,169,1,218,4,102,105,108,101,
+ 41,5,218,3,115,121,115,218,5,102,108,97,103,115,218,7,
+ 118,101,114,98,111,115,101,218,5,112,114,105,110,116,218,6,
+ 115,116,100,101,114,114,41,1,218,7,109,101,115,115,97,103,
+ 101,115,1,0,0,0,32,250,13,60,102,114,111,122,101,110,
+ 32,115,105,116,101,62,218,6,95,116,114,97,99,101,114,13,
+ 0,0,0,92,0,0,0,115,34,0,0,0,128,0,220,7,
+ 10,135,121,129,121,215,7,24,210,7,24,220,8,13,136,103,
+ 156,67,159,74,153,74,214,8,39,240,3,0,8,25,243,0,
+ 0,0,0,99,0,0,0,0,0,0,0,0,0,0,0,0,
+ 4,0,0,0,7,0,0,0,243,218,0,0,0,151,0,116,
+ 1,0,0,0,0,0,0,0,0,106,2,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,106,4,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,124,0,142,0,125,1,9,0,116,0,0,0,0,0,0,
+ 0,0,0,106,2,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,106,7,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,124,1,171,1,0,
+ 0,0,0,0,0,125,1,124,1,116,0,0,0,0,0,0,
+ 0,0,0,106,2,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,106,11,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,124,1,171,1,0,
+ 0,0,0,0,0,102,2,83,0,35,0,116,8,0,0,0,
+ 0,0,0,0,0,36,0,114,3,1,0,89,0,140,44,119,
+ 0,120,3,89,0,119,1,169,1,78,41,6,218,2,111,115,
+ 218,4,112,97,116,104,218,4,106,111,105,110,218,7,97,98,
+ 115,112,97,116,104,218,7,79,83,69,114,114,111,114,218,8,
+ 110,111,114,109,99,97,115,101,41,2,218,5,112,97,116,104,
+ 115,218,3,100,105,114,115,2,0,0,0,32,32,114,12,0,
+ 0,0,218,8,109,97,107,101,112,97,116,104,114,25,0,0,
+ 0,97,0,0,0,115,91,0,0,0,128,0,220,10,12,143,
+ 39,137,39,143,44,137,44,152,5,208,10,30,128,67,240,2,
+ 3,5,13,220,14,16,143,103,137,103,143,111,137,111,152,99,
+ 211,14,34,136,3,240,6,0,12,15,148,2,151,7,145,7,
+ 215,16,32,209,16,32,160,19,211,16,37,208,11,37,208,4,
+ 37,248,244,5,0,12,19,242,0,1,5,13,217,8,12,240,
+ 3,1,5,13,250,115,17,0,0,0,158,31,65,30,0,193,
+ 30,9,65,42,3,193,41,1,65,42,3,99,0,0,0,0,
+ 0,0,0,0,0,0,0,0,6,0,0,0,3,0,0,0,
+ 243,60,2,0,0,151,0,116,1,0,0,0,0,0,0,0,
+ 0,116,2,0,0,0,0,0,0,0,0,106,4,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,
+ 7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,171,0,0,0,0,0,0,0,171,1,0,0,0,
+ 0,0,0,68,0,93,126,0,0,125,0,100,1,125,1,9,
+ 0,124,0,106,8,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,106,10,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,125,1,124,1,100,
+ 2,118,1,114,1,140,33,9,0,116,18,0,0,0,0,0,
+ 0,0,0,106,20,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,106,23,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,124,0,106,24,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,171,1,0,0,0,0,0,0,124,0,95,12,0,0,0,
+ 0,0,0,0,0,9,0,116,18,0,0,0,0,0,0,0,
+ 0,106,20,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,106,23,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,124,0,106,30,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,
+ 1,0,0,0,0,0,0,124,0,95,15,0,0,0,0,0,
+ 0,0,0,140,128,4,0,121,1,35,0,116,12,0,0,0,
+ 0,0,0,0,0,36,0,114,52,1,0,9,0,124,0,106,
+ 14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,106,16,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,106,10,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,125,1,110,15,35,
+ 0,116,12,0,0,0,0,0,0,0,0,36,0,114,3,1,
+ 0,89,0,110,4,119,0,120,3,89,0,119,1,89,0,140,
+ 162,119,0,120,3,89,0,119,1,35,0,116,12,0,0,0,
+ 0,0,0,0,0,116,26,0,0,0,0,0,0,0,0,116,
+ 28,0,0,0,0,0,0,0,0,102,3,36,0,114,3,1,
+ 0,89,0,140,136,119,0,120,3,89,0,119,1,35,0,116,
+ 12,0,0,0,0,0,0,0,0,116,26,0,0,0,0,0,
+ 0,0,0,116,28,0,0,0,0,0,0,0,0,102,3,36,
+ 0,114,3,1,0,89,0,140,242,119,0,120,3,89,0,119,
+ 1,41,3,122,69,83,101,116,32,97,108,108,32,109,111,100,
+ 117,108,101,32,95,95,102,105,108,101,95,95,32,97,110,100,
+ 32,95,95,99,97,99,104,101,100,95,95,32,97,116,116,114,
+ 105,98,117,116,101,115,32,116,111,32,97,110,32,97,98,115,
+ 111,108,117,116,101,32,112,97,116,104,78,62,2,0,0,0,
+ 218,17,95,102,114,111,122,101,110,95,105,109,112,111,114,116,
+ 108,105,98,218,26,95,102,114,111,122,101,110,95,105,109,112,
+ 111,114,116,108,105,98,95,101,120,116,101,114,110,97,108,41,
+ 16,218,3,115,101,116,114,6,0,0,0,218,7,109,111,100,
+ 117,108,101,115,218,6,118,97,108,117,101,115,218,10,95,95,
+ 108,111,97,100,101,114,95,95,218,10,95,95,109,111,100,117,
+ 108,101,95,95,218,14,65,116,116,114,105,98,117,116,101,69,
+ 114,114,111,114,218,8,95,95,115,112,101,99,95,95,218,6,
+ 108,111,97,100,101,114,114,17,0,0,0,114,18,0,0,0,
+ 114,20,0,0,0,218,8,95,95,102,105,108,101,95,95,114,
+ 21,0,0,0,218,9,84,121,112,101,69,114,114,111,114,218,
+ 10,95,95,99,97,99,104,101,100,95,95,41,2,218,1,109,
+ 218,13,108,111,97,100,101,114,95,109,111,100,117,108,101,115,
+ 2,0,0,0,32,32,114,12,0,0,0,218,9,97,98,115,
+ 95,112,97,116,104,115,114,42,0,0,0,106,0,0,0,115,
+ 245,0,0,0,128,0,228,13,16,148,19,151,27,145,27,215,
+ 17,35,209,17,35,211,17,37,211,13,38,242,0,18,5,17,
+ 136,1,216,24,28,136,13,240,2,6,9,21,216,28,29,159,
+ 76,153,76,215,28,51,209,28,51,136,77,240,12,0,12,25,
+ 208,32,83,209,11,83,216,12,20,240,2,3,9,17,220,25,
+ 27,159,23,153,23,159,31,153,31,168,17,175,26,169,26,211,
+ 25,52,136,65,140,74,240,6,3,9,17,220,27,29,159,55,
+ 153,55,159,63,153,63,168,49,175,60,169,60,211,27,56,136,
+ 65,141,76,241,33,18,5,17,248,244,8,0,16,30,242,0,
+ 4,9,21,240,2,3,13,21,216,32,33,167,10,161,10,215,
+ 32,49,209,32,49,215,32,60,209,32,60,145,13,248,220,19,
+ 33,242,0,1,13,21,217,16,20,240,3,1,13,21,252,240,
+ 7,4,9,21,251,244,18,0,17,31,164,7,172,25,208,15,
+ 51,242,0,1,9,17,217,12,16,240,3,1,9,17,251,244,
+ 8,0,17,31,164,7,172,25,208,15,51,242,0,1,9,17,
+ 217,12,16,240,3,1,9,17,250,115,89,0,0,0,174,22,
+ 66,42,2,193,10,46,67,42,2,193,57,46,68,4,2,194,
+ 42,9,67,39,5,194,52,32,67,21,4,195,20,1,67,39,
+ 5,195,21,9,67,33,7,195,30,2,67,39,5,195,32,1,
+ 67,33,7,195,33,3,67,39,5,195,38,1,67,39,5,195,
+ 42,20,68,1,5,196,0,1,68,1,5,196,4,20,68,27,
+ 5,196,26,1,68,27,5,99,0,0,0,0,0,0,0,0,
+ 0,0,0,0,4,0,0,0,3,0,0,0,243,216,0,0,
+ 0,151,0,103,0,125,0,116,1,0,0,0,0,0,0,0,
+ 0,171,0,0,0,0,0,0,0,125,1,116,2,0,0,0,
+ 0,0,0,0,0,106,4,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,68,0,93,55,0,0,125,
+ 2,116,7,0,0,0,0,0,0,0,0,124,2,171,1,0,
+ 0,0,0,0,0,92,2,0,0,125,2,125,3,124,3,124,
+ 1,118,1,115,1,140,22,124,0,106,9,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,124,2,171,
+ 1,0,0,0,0,0,0,1,0,124,1,106,11,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,
+ 3,171,1,0,0,0,0,0,0,1,0,140,57,4,0,124,
+ 0,116,2,0,0,0,0,0,0,0,0,106,4,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,
+ 1,100,1,27,0,124,1,83,0,41,2,122,75,32,82,101,
+ 109,111,118,101,32,100,117,112,108,105,99,97,116,101,32,101,
+ 110,116,114,105,101,115,32,102,114,111,109,32,115,121,115,46,
+ 112,97,116,104,32,97,108,111,110,103,32,119,105,116,104,32,
+ 109,97,107,105,110,103,32,116,104,101,109,10,32,32,32,32,
+ 97,98,115,111,108,117,116,101,78,41,6,114,29,0,0,0,
+ 114,6,0,0,0,114,18,0,0,0,114,25,0,0,0,218,
+ 6,97,112,112,101,110,100,218,3,97,100,100,41,4,218,1,
+ 76,218,11,107,110,111,119,110,95,112,97,116,104,115,114,24,
+ 0,0,0,218,7,100,105,114,99,97,115,101,115,4,0,0,
+ 0,32,32,32,32,114,12,0,0,0,218,14,114,101,109,111,
+ 118,101,100,117,112,112,97,116,104,115,114,49,0,0,0,129,
+ 0,0,0,115,102,0,0,0,128,0,240,10,0,9,11,128,
+ 65,220,18,21,147,37,128,75,220,15,18,143,120,137,120,242,
+ 0,7,5,37,136,3,244,8,0,24,32,160,3,147,125,137,
+ 12,136,3,136,87,216,11,18,152,43,210,11,37,216,12,13,
+ 143,72,137,72,144,83,140,77,216,12,23,143,79,137,79,152,
+ 71,213,12,36,240,15,7,5,37,240,16,0,19,20,132,67,
+ 135,72,129,72,137,81,128,75,216,11,22,208,4,22,114,14,
+ 0,0,0,99,0,0,0,0,0,0,0,0,0,0,0,0,
+ 5,0,0,0,3,0,0,0,243,224,0,0,0,151,0,116,
+ 1,0,0,0,0,0,0,0,0,171,0,0,0,0,0,0,
+ 0,125,0,116,2,0,0,0,0,0,0,0,0,106,4,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,68,0,93,65,0,0,125,1,9,0,116,6,0,0,0,
+ 0,0,0,0,0,106,4,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,106,9,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,124,1,171,
+ 1,0,0,0,0,0,0,114,31,116,11,0,0,0,0,0,
+ 0,0,0,124,1,171,1,0,0,0,0,0,0,92,2,0,
+ 0,125,2,125,3,124,0,106,13,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,124,3,171,1,0,
+ 0,0,0,0,0,1,0,140,67,4,0,124,0,83,0,35,
+ 0,116,14,0,0,0,0,0,0,0,0,36,0,114,3,1,
+ 0,89,0,140,81,119,0,120,3,89,0,119,1,41,1,122,
+ 69,82,101,116,117,114,110,32,97,32,115,101,116,32,99,111,
+ 110,116,97,105,110,105,110,103,32,97,108,108,32,101,120,105,
+ 115,116,105,110,103,32,102,105,108,101,32,115,121,115,116,101,
+ 109,32,105,116,101,109,115,32,102,114,111,109,32,115,121,115,
+ 46,112,97,116,104,46,41,8,114,29,0,0,0,114,6,0,
+ 0,0,114,18,0,0,0,114,17,0,0,0,218,6,101,120,
+ 105,115,116,115,114,25,0,0,0,114,45,0,0,0,114,38,
+ 0,0,0,41,4,218,1,100,218,4,105,116,101,109,218,1,
+ 95,218,8,105,116,101,109,99,97,115,101,115,4,0,0,0,
+ 32,32,32,32,114,12,0,0,0,218,14,95,105,110,105,116,
+ 95,112,97,116,104,105,110,102,111,114,56,0,0,0,148,0,
+ 0,0,115,101,0,0,0,128,0,228,8,11,139,5,128,65,
+ 220,16,19,151,8,145,8,242,0,6,5,21,136,4,240,2,
+ 5,9,21,220,15,17,143,119,137,119,143,126,137,126,152,100,
+ 212,15,35,220,30,38,160,116,155,110,145,11,144,1,144,56,
+ 216,16,17,151,5,145,5,144,104,148,15,248,240,9,6,5,
+ 21,240,14,0,12,13,128,72,248,244,5,0,16,25,242,0,
+ 1,9,21,217,12,20,240,3,1,9,21,250,115,17,0,0,
+ 0,159,62,65,33,2,193,33,9,65,45,5,193,44,1,65,
+ 45,5,99,3,0,0,0,0,0,0,0,0,0,0,0,9,
+ 0,0,0,3,0,0,0,243,250,4,0,0,151,0,124,2,
+ 128,13,116,1,0,0,0,0,0,0,0,0,171,0,0,0,
+ 0,0,0,0,125,2,100,2,125,3,110,2,100,3,125,3,
+ 116,2,0,0,0,0,0,0,0,0,106,4,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,7,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,124,0,124,1,171,2,0,0,0,0,0,0,125,4,
+ 9,0,116,3,0,0,0,0,0,0,0,0,106,8,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 124,4,171,1,0,0,0,0,0,0,125,5,116,13,0,0,
+ 0,0,0,0,0,0,124,5,100,4,100,5,171,3,0,0,
+ 0,0,0,0,116,14,0,0,0,0,0,0,0,0,106,16,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,122,1,0,0,115,30,116,13,0,0,0,0,0,0,
+ 0,0,124,5,100,6,100,5,171,3,0,0,0,0,0,0,
+ 116,14,0,0,0,0,0,0,0,0,106,18,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,122,1,
+ 0,0,114,15,116,21,0,0,0,0,0,0,0,0,100,7,
+ 124,4,155,2,157,2,171,1,0,0,0,0,0,0,1,0,
+ 121,1,116,21,0,0,0,0,0,0,0,0,100,8,124,4,
+ 155,2,157,2,171,1,0,0,0,0,0,0,1,0,9,0,
+ 116,23,0,0,0,0,0,0,0,0,106,24,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,23,
+ 0,0,0,0,0,0,0,0,106,26,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,124,4,171,1,
+ 0,0,0,0,0,0,100,9,172,10,171,2,0,0,0,0,
+ 0,0,125,6,124,6,53,0,1,0,116,29,0,0,0,0,
+ 0,0,0,0,124,6,171,1,0,0,0,0,0,0,68,0,
+ 93,187,0,0,92,2,0,0,125,7,125,8,124,8,106,31,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,100,11,171,1,0,0,0,0,0,0,114,1,140,24,
+ 124,8,106,33,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,171,0,0,0,0,0,0,0,100,12,
+ 107,40,0,0,114,1,140,44,9,0,124,8,106,31,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 100,13,171,1,0,0,0,0,0,0,114,12,116,35,0,0,
+ 0,0,0,0,0,0,124,8,171,1,0,0,0,0,0,0,
+ 1,0,140,74,124,8,106,37,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,171,0,0,0,0,0,
+ 0,0,125,8,116,39,0,0,0,0,0,0,0,0,124,0,
+ 124,8,171,2,0,0,0,0,0,0,92,2,0,0,125,9,
+ 125,10,124,10,124,2,118,1,114,79,116,2,0,0,0,0,
+ 0,0,0,0,106,4,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,106,41,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,124,9,171,1,
+ 0,0,0,0,0,0,114,48,116,42,0,0,0,0,0,0,
+ 0,0,106,4,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,106,45,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,124,9,171,1,0,0,
+ 0,0,0,0,1,0,124,2,106,47,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,124,10,171,1,
+ 0,0,0,0,0,0,1,0,140,189,4,0,100,1,100,1,
+ 100,1,171,2,0,0,0,0,0,0,1,0,124,3,114,2,
+ 100,1,125,2,124,2,83,0,35,0,116,10,0,0,0,0,
+ 0,0,0,0,36,0,114,3,1,0,89,0,121,1,119,0,
+ 120,3,89,0,119,1,35,0,116,10,0,0,0,0,0,0,
+ 0,0,36,0,114,3,1,0,89,0,121,1,119,0,120,3,
+ 89,0,119,1,35,0,116,48,0,0,0,0,0,0,0,0,
+ 36,0,114,161,125,11,116,51,0,0,0,0,0,0,0,0,
+ 100,14,106,53,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,124,7,100,15,122,0,0,0,124,4,
+ 171,2,0,0,0,0,0,0,116,42,0,0,0,0,0,0,
+ 0,0,106,54,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,172,16,171,2,0,0,0,0,0,0,
+ 1,0,100,5,100,1,108,28,125,12,124,12,106,59,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 124,11,171,1,0,0,0,0,0,0,68,0,93,53,0,0,
+ 125,13,124,13,106,61,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,171,0,0,0,0,0,0,0,
+ 68,0,93,32,0,0,125,8,116,51,0,0,0,0,0,0,
+ 0,0,100,17,124,8,122,0,0,0,116,42,0,0,0,0,
+ 0,0,0,0,106,54,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,172,16,171,2,0,0,0,0,
+ 0,0,1,0,140,34,4,0,140,55,4,0,116,51,0,0,
+ 0,0,0,0,0,0,100,18,116,42,0,0,0,0,0,0,
+ 0,0,106,54,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,172,16,171,2,0,0,0,0,0,0,
+ 1,0,89,0,100,1,125,11,126,11,1,0,140,209,100,1,
+ 125,11,126,11,119,1,119,0,120,3,89,0,119,1,35,0,
+ 49,0,115,1,119,2,1,0,89,0,1,0,1,0,140,218,
+ 120,3,89,0,119,1,41,19,122,214,80,114,111,99,101,115,
+ 115,32,97,32,46,112,116,104,32,102,105,108,101,32,119,105,
+ 116,104,105,110,32,116,104,101,32,115,105,116,101,45,112,97,
+ 99,107,97,103,101,115,32,100,105,114,101,99,116,111,114,121,
+ 58,10,32,32,32,32,32,32,32,70,111,114,32,101,97,99,
+ 104,32,108,105,110,101,32,105,110,32,116,104,101,32,102,105,
+ 108,101,44,32,101,105,116,104,101,114,32,99,111,109,98,105,
+ 110,101,32,105,116,32,119,105,116,104,32,115,105,116,101,100,
+ 105,114,32,116,111,32,97,32,112,97,116,104,10,32,32,32,
+ 32,32,32,32,97,110,100,32,97,100,100,32,116,104,97,116,
+ 32,116,111,32,107,110,111,119,110,95,112,97,116,104,115,44,
+ 32,111,114,32,101,120,101,99,117,116,101,32,105,116,32,105,
+ 102,32,105,116,32,115,116,97,114,116,115,32,119,105,116,104,
+ 32,39,105,109,112,111,114,116,32,39,46,10,32,32,32,32,
+ 78,84,70,218,8,115,116,95,102,108,97,103,115,114,2,0,
+ 0,0,218,18,115,116,95,102,105,108,101,95,97,116,116,114,
+ 105,98,117,116,101,115,122,27,83,107,105,112,112,105,110,103,
+ 32,104,105,100,100,101,110,32,46,112,116,104,32,102,105,108,
+ 101,58,32,122,22,80,114,111,99,101,115,115,105,110,103,32,
+ 46,112,116,104,32,102,105,108,101,58,32,218,6,108,111,99,
+ 97,108,101,169,1,218,8,101,110,99,111,100,105,110,103,250,
+ 1,35,218,0,41,2,122,7,105,109,112,111,114,116,32,122,
+ 7,105,109,112,111,114,116,9,122,34,69,114,114,111,114,32,
+ 112,114,111,99,101,115,115,105,110,103,32,108,105,110,101,32,
+ 123,58,100,125,32,111,102,32,123,125,58,10,233,1,0,0,
+ 0,114,4,0,0,0,122,2,32,32,122,26,10,82,101,109,
+ 97,105,110,100,101,114,32,111,102,32,102,105,108,101,32,105,
+ 103,110,111,114,101,100,41,31,114,56,0,0,0,114,17,0,
+ 0,0,114,18,0,0,0,114,19,0,0,0,218,5,108,115,
+ 116,97,116,114,21,0,0,0,218,7,103,101,116,97,116,116,
+ 114,218,4,115,116,97,116,218,9,85,70,95,72,73,68,68,
+ 69,78,218,21,70,73,76,69,95,65,84,84,82,73,66,85,
+ 84,69,95,72,73,68,68,69,78,114,13,0,0,0,218,2,
+ 105,111,218,13,84,101,120,116,73,79,87,114,97,112,112,101,
+ 114,218,9,111,112,101,110,95,99,111,100,101,218,9,101,110,
+ 117,109,101,114,97,116,101,218,10,115,116,97,114,116,115,119,
+ 105,116,104,218,5,115,116,114,105,112,218,4,101,120,101,99,
+ 218,6,114,115,116,114,105,112,114,25,0,0,0,114,51,0,
+ 0,0,114,6,0,0,0,114,44,0,0,0,114,45,0,0,
+ 0,218,9,69,120,99,101,112,116,105,111,110,114,9,0,0,
+ 0,218,6,102,111,114,109,97,116,114,10,0,0,0,218,9,
+ 116,114,97,99,101,98,97,99,107,218,16,102,111,114,109,97,
+ 116,95,101,120,99,101,112,116,105,111,110,218,10,115,112,108,
+ 105,116,108,105,110,101,115,41,14,218,7,115,105,116,101,100,
+ 105,114,218,4,110,97,109,101,114,47,0,0,0,218,5,114,
+ 101,115,101,116,218,8,102,117,108,108,110,97,109,101,218,2,
+ 115,116,218,1,102,218,1,110,218,4,108,105,110,101,114,24,
+ 0,0,0,114,48,0,0,0,218,3,101,120,99,114,81,0,
+ 0,0,218,6,114,101,99,111,114,100,115,14,0,0,0,32,
+ 32,32,32,32,32,32,32,32,32,32,32,32,32,114,12,0,
+ 0,0,218,10,97,100,100,112,97,99,107,97,103,101,114,94,
+ 0,0,0,161,0,0,0,115,58,2,0,0,128,0,240,10,
+ 0,8,19,208,7,26,220,22,36,211,22,38,136,11,216,16,
+ 20,137,5,224,16,21,136,5,220,15,17,143,119,137,119,143,
+ 124,137,124,152,71,160,84,211,15,42,128,72,240,2,3,5,
+ 15,220,13,15,143,88,137,88,144,104,211,13,31,136,2,244,
+ 6,0,10,17,144,18,144,90,160,17,211,9,35,164,100,167,
+ 110,161,110,210,9,52,220,9,16,144,18,208,21,41,168,49,
+ 211,9,45,180,4,215,48,74,209,48,74,210,9,74,220,8,
+ 14,208,17,44,168,88,168,76,208,15,57,212,8,58,216,8,
+ 14,220,4,10,208,13,35,160,72,160,60,208,11,48,212,4,
+ 49,240,2,5,5,15,244,6,0,13,15,215,12,28,209,12,
+ 28,156,82,159,92,153,92,168,40,211,29,51,184,104,212,12,
+ 71,136,1,240,6,0,10,11,241,0,23,5,22,220,23,32,
+ 160,17,147,124,242,0,22,9,22,137,71,136,65,136,116,216,
+ 15,19,143,127,137,127,152,115,212,15,35,216,16,24,216,15,
+ 19,143,122,137,122,139,124,152,114,210,15,33,216,16,24,240,
+ 2,17,13,22,216,19,23,151,63,145,63,208,35,58,212,19,
+ 59,220,20,24,152,20,148,74,216,20,28,216,23,27,151,123,
+ 145,123,147,125,144,4,220,31,39,168,7,176,20,211,31,54,
+ 145,12,144,3,144,87,216,23,30,160,43,209,23,45,180,34,
+ 183,39,177,39,183,46,177,46,192,19,212,50,69,220,20,23,
+ 151,72,145,72,151,79,145,79,160,67,212,20,40,216,20,31,
+ 151,79,145,79,160,71,212,20,44,248,240,27,22,9,22,247,
+ 3,23,5,22,241,48,0,8,13,216,22,26,136,11,216,11,
+ 22,208,4,22,248,244,79,1,0,12,19,242,0,1,5,15,
+ 217,8,14,240,3,1,5,15,251,244,22,0,12,19,242,0,
+ 1,5,15,217,8,14,240,3,1,5,15,251,244,34,0,20,
+ 29,242,0,8,13,22,220,16,21,208,22,59,215,22,66,209,
+ 22,66,192,49,192,81,193,51,200,8,211,22,81,220,27,30,
+ 159,58,153,58,245,3,1,17,39,227,16,32,216,30,39,215,
+ 30,56,209,30,56,184,19,211,30,61,242,0,2,17,58,144,
+ 70,216,32,38,215,32,49,209,32,49,211,32,51,242,0,1,
+ 21,58,152,4,220,24,29,152,100,160,52,153,105,172,99,175,
+ 106,169,106,214,24,57,241,3,1,21,58,240,3,2,17,58,
+ 244,6,0,17,22,208,22,51,188,35,191,42,185,42,213,16,
+ 69,221,16,21,251,240,17,8,13,22,250,247,31,23,5,22,
+ 240,0,23,5,22,250,115,103,0,0,0,179,21,70,38,0,
+ 194,34,42,70,53,0,195,14,56,73,49,3,196,7,28,71,
+ 4,4,196,35,1,73,49,3,196,36,65,50,71,4,4,198,
+ 22,2,73,49,3,198,38,9,70,50,3,198,49,1,70,50,
+ 3,198,53,9,71,1,3,199,0,1,71,1,3,199,4,9,
+ 73,46,7,199,13,66,22,73,41,7,201,35,6,73,49,3,
+ 201,41,5,73,46,7,201,46,3,73,49,3,201,49,5,73,
+ 58,7,99,2,0,0,0,0,0,0,0,0,0,0,0,6,
+ 0,0,0,3,0,0,0,243,192,1,0,0,151,0,116,1,
+ 0,0,0,0,0,0,0,0,100,1,124,0,155,2,157,2,
+ 171,1,0,0,0,0,0,0,1,0,124,1,128,13,116,3,
+ 0,0,0,0,0,0,0,0,171,0,0,0,0,0,0,0,
+ 125,1,100,3,125,2,110,2,100,4,125,2,116,5,0,0,
+ 0,0,0,0,0,0,124,0,171,1,0,0,0,0,0,0,
+ 92,2,0,0,125,0,125,3,124,3,124,1,118,1,114,48,
+ 116,6,0,0,0,0,0,0,0,0,106,8,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,11,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,124,0,171,1,0,0,0,0,0,0,1,0,124,1,
+ 106,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,124,3,171,1,0,0,0,0,0,0,1,0,
+ 9,0,116,15,0,0,0,0,0,0,0,0,106,16,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 124,0,171,1,0,0,0,0,0,0,125,4,124,4,68,0,
+ 143,5,99,2,103,0,99,2,93,38,0,0,125,5,124,5,
+ 106,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,100,5,171,1,0,0,0,0,0,0,114,19,
+ 124,5,106,23,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,100,6,171,1,0,0,0,0,0,0,
+ 115,2,124,5,145,2,140,40,4,0,125,4,125,5,116,25,
+ 0,0,0,0,0,0,0,0,124,4,171,1,0,0,0,0,
+ 0,0,68,0,93,15,0,0,125,5,116,27,0,0,0,0,
+ 0,0,0,0,124,0,124,5,124,1,171,3,0,0,0,0,
+ 0,0,1,0,140,17,4,0,124,2,114,2,100,2,125,1,
+ 124,1,83,0,35,0,116,18,0,0,0,0,0,0,0,0,
+ 36,0,114,3,1,0,89,0,121,2,119,0,120,3,89,0,
+ 119,1,99,2,1,0,99,2,125,5,119,0,41,7,122,84,
+ 65,100,100,32,39,115,105,116,101,100,105,114,39,32,97,114,
+ 103,117,109,101,110,116,32,116,111,32,115,121,115,46,112,97,
+ 116,104,32,105,102,32,109,105,115,115,105,110,103,32,97,110,
+ 100,32,104,97,110,100,108,101,32,46,112,116,104,32,102,105,
+ 108,101,115,32,105,110,10,32,32,32,32,39,115,105,116,101,
+ 100,105,114,39,122,18,65,100,100,105,110,103,32,100,105,114,
+ 101,99,116,111,114,121,58,32,78,84,70,122,4,46,112,116,
+ 104,250,1,46,41,14,114,13,0,0,0,114,56,0,0,0,
+ 114,25,0,0,0,114,6,0,0,0,114,18,0,0,0,114,
+ 44,0,0,0,114,45,0,0,0,114,17,0,0,0,218,7,
+ 108,105,115,116,100,105,114,114,21,0,0,0,218,8,101,110,
+ 100,115,119,105,116,104,114,75,0,0,0,218,6,115,111,114,
+ 116,101,100,114,94,0,0,0,41,6,114,84,0,0,0,114,
+ 47,0,0,0,114,86,0,0,0,218,11,115,105,116,101,100,
+ 105,114,99,97,115,101,218,5,110,97,109,101,115,114,85,0,
+ 0,0,115,6,0,0,0,32,32,32,32,32,32,114,12,0,
+ 0,0,218,10,97,100,100,115,105,116,101,100,105,114,114,102,
+ 0,0,0,216,0,0,0,115,240,0,0,0,128,0,244,6,
+ 0,5,11,208,13,31,160,7,152,123,208,11,43,212,4,44,
+ 216,7,18,208,7,26,220,22,36,211,22,38,136,11,216,16,
+ 20,137,5,224,16,21,136,5,220,27,35,160,71,211,27,44,
+ 209,4,24,128,71,136,91,216,11,22,152,43,209,11,37,220,
+ 8,11,143,8,137,8,143,15,137,15,152,7,212,8,32,216,
+ 8,19,143,15,137,15,152,11,212,8,36,240,2,3,5,15,
+ 220,16,18,151,10,145,10,152,55,211,16,35,136,5,240,6,
+ 0,31,36,246,0,1,13,68,1,144,100,216,16,20,151,13,
+ 145,13,152,102,212,16,37,168,100,175,111,169,111,184,99,212,
+ 46,66,242,3,0,14,18,240,0,1,13,68,1,128,69,240,
+ 0,1,13,68,1,228,16,22,144,117,147,13,242,0,1,5,
+ 47,136,4,220,8,18,144,55,152,68,160,43,213,8,46,240,
+ 3,1,5,47,225,7,12,216,22,26,136,11,216,11,22,208,
+ 4,22,248,244,17,0,12,19,242,0,1,5,15,217,8,14,
+ 240,3,1,5,15,252,242,4,1,13,68,1,115,24,0,0,
+ 0,193,35,21,67,12,0,193,60,43,67,27,4,195,12,9,
+ 67,24,3,195,23,1,67,24,3,99,0,0,0,0,0,0,
+ 0,0,0,0,0,0,4,0,0,0,3,0,0,0,243,98,
+ 1,0,0,151,0,116,0,0,0,0,0,0,0,0,0,106,
+ 2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,106,4,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,114,1,121,1,116,7,0,0,0,
+ 0,0,0,0,0,116,8,0,0,0,0,0,0,0,0,100,
+ 2,171,2,0,0,0,0,0,0,114,58,116,7,0,0,0,
+ 0,0,0,0,0,116,8,0,0,0,0,0,0,0,0,100,
+ 3,171,2,0,0,0,0,0,0,114,42,116,9,0,0,0,
+ 0,0,0,0,0,106,10,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,171,0,0,0,0,0,0,
+ 0,116,9,0,0,0,0,0,0,0,0,106,12,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,
+ 0,0,0,0,0,0,0,107,55,0,0,114,1,121,4,116,
+ 7,0,0,0,0,0,0,0,0,116,8,0,0,0,0,0,
+ 0,0,0,100,5,171,2,0,0,0,0,0,0,114,58,116,
+ 7,0,0,0,0,0,0,0,0,116,8,0,0,0,0,0,
+ 0,0,0,100,6,171,2,0,0,0,0,0,0,114,42,116,
+ 9,0,0,0,0,0,0,0,0,106,14,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,171,0,0,
+ 0,0,0,0,0,116,9,0,0,0,0,0,0,0,0,106,
+ 16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,171,0,0,0,0,0,0,0,107,55,0,0,114,
+ 1,121,4,121,7,41,8,97,44,1,0,0,67,104,101,99,
+ 107,32,105,102,32,117,115,101,114,32,115,105,116,101,32,100,
+ 105,114,101,99,116,111,114,121,32,105,115,32,115,97,102,101,
+ 32,102,111,114,32,105,110,99,108,117,115,105,111,110,10,10,
+ 32,32,32,32,84,104,101,32,102,117,110,99,116,105,111,110,
+ 32,116,101,115,116,115,32,102,111,114,32,116,104,101,32,99,
+ 111,109,109,97,110,100,32,108,105,110,101,32,102,108,97,103,
+ 32,40,105,110,99,108,117,100,105,110,103,32,101,110,118,105,
+ 114,111,110,109,101,110,116,32,118,97,114,41,44,10,32,32,
+ 32,32,112,114,111,99,101,115,115,32,117,105,100,47,103,105,
+ 100,32,101,113,117,97,108,32,116,111,32,101,102,102,101,99,
+ 116,105,118,101,32,117,105,100,47,103,105,100,46,10,10,32,
+ 32,32,32,78,111,110,101,58,32,68,105,115,97,98,108,101,
+ 100,32,102,111,114,32,115,101,99,117,114,105,116,121,32,114,
+ 101,97,115,111,110,115,10,32,32,32,32,70,97,108,115,101,
+ 58,32,68,105,115,97,98,108,101,100,32,98,121,32,117,115,
+ 101,114,32,40,99,111,109,109,97,110,100,32,108,105,110,101,
+ 32,111,112,116,105,111,110,41,10,32,32,32,32,84,114,117,
+ 101,58,32,83,97,102,101,32,97,110,100,32,101,110,97,98,
+ 108,101,100,10,32,32,32,32,70,218,6,103,101,116,117,105,
+ 100,218,7,103,101,116,101,117,105,100,78,218,6,103,101,116,
+ 103,105,100,218,7,103,101,116,101,103,105,100,84,41,9,114,
+ 6,0,0,0,114,7,0,0,0,218,12,110,111,95,117,115,
+ 101,114,95,115,105,116,101,218,7,104,97,115,97,116,116,114,
+ 114,17,0,0,0,114,105,0,0,0,114,104,0,0,0,114,
+ 107,0,0,0,114,106,0,0,0,169,0,114,14,0,0,0,
+ 114,12,0,0,0,218,20,99,104,101,99,107,95,101,110,97,
+ 98,108,101,117,115,101,114,115,105,116,101,114,111,0,0,0,
+ 242,0,0,0,115,107,0,0,0,128,0,244,20,0,8,11,
+ 135,121,129,121,215,7,29,210,7,29,216,15,20,228,7,14,
+ 140,114,144,56,212,7,28,164,23,172,18,168,89,212,33,55,
+ 228,11,13,143,58,137,58,139,60,156,50,159,57,153,57,155,
+ 59,210,11,38,216,19,23,220,7,14,140,114,144,56,212,7,
+ 28,164,23,172,18,168,89,212,33,55,228,11,13,143,58,137,
+ 58,139,60,156,50,159,57,153,57,155,59,210,11,38,216,19,
+ 23,224,11,15,114,14,0,0,0,99,0,0,0,0,0,0,
+ 0,0,0,0,0,0,9,0,0,0,3,0,0,0,243,166,
+ 1,0,0,151,0,116,0,0,0,0,0,0,0,0,0,106,
+ 2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,106,5,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,100,1,100,0,171,2,0,0,0,
+ 0,0,0,125,0,124,0,114,2,124,0,83,0,116,6,0,
+ 0,0,0,0,0,0,0,106,8,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,100,2,118,0,114,
+ 1,121,0,100,3,132,0,125,1,116,0,0,0,0,0,0,
+ 0,0,0,106,10,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,100,4,107,40,0,0,114,44,116,
+ 0,0,0,0,0,0,0,0,0,106,2,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,106,5,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,100,5,171,1,0,0,0,0,0,0,120,1,115,2,1,
+ 0,100,6,125,2,2,0,124,1,124,2,100,7,171,2,0,
+ 0,0,0,0,0,83,0,116,6,0,0,0,0,0,0,0,
+ 0,106,8,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,100,8,107,40,0,0,114,61,116,6,0,
+ 0,0,0,0,0,0,0,106,12,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,114,45,2,0,124,
+ 1,100,6,100,9,116,6,0,0,0,0,0,0,0,0,106,
+ 12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,100,10,116,6,0,0,0,0,0,0,0,0,106,
+ 14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,100,0,100,11,26,0,122,6,0,0,171,4,0,
+ 0,0,0,0,0,83,0,2,0,124,1,100,6,100,12,171,
+ 2,0,0,0,0,0,0,83,0,41,13,78,218,14,80,89,
+ 84,72,79,78,85,83,69,82,66,65,83,69,62,3,0,0,
+ 0,218,4,119,97,115,105,218,7,118,120,119,111,114,107,115,
+ 218,10,101,109,115,99,114,105,112,116,101,110,99,0,0,0,
+ 0,0,0,0,0,0,0,0,0,5,0,0,0,23,0,0,
+ 0,243,116,0,0,0,151,0,116,0,0,0,0,0,0,0,
+ 0,0,106,2,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,106,5,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,116,1,0,0,0,0,
+ 0,0,0,0,106,2,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,106,6,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,124,0,142,0,
+ 171,1,0,0,0,0,0,0,83,0,114,16,0,0,0,41,
+ 4,114,17,0,0,0,114,18,0,0,0,218,10,101,120,112,
+ 97,110,100,117,115,101,114,114,19,0,0,0,41,1,218,4,
+ 97,114,103,115,115,1,0,0,0,32,114,12,0,0,0,218,
+ 8,106,111,105,110,117,115,101,114,122,30,95,103,101,116,117,
+ 115,101,114,98,97,115,101,46,60,108,111,99,97,108,115,62,
+ 46,106,111,105,110,117,115,101,114,27,1,0,0,115,36,0,
+ 0,0,128,0,220,15,17,143,119,137,119,215,15,33,209,15,
+ 33,164,34,167,39,161,39,167,44,161,44,176,4,208,34,53,
+ 211,15,54,208,8,54,114,14,0,0,0,218,2,110,116,218,
+ 7,65,80,80,68,65,84,65,250,1,126,218,6,80,121,116,
+ 104,111,110,218,6,100,97,114,119,105,110,218,7,76,105,98,
+ 114,97,114,121,122,5,37,100,46,37,100,233,2,0,0,0,
+ 122,6,46,108,111,99,97,108,41,8,114,17,0,0,0,218,
+ 7,101,110,118,105,114,111,110,218,3,103,101,116,114,6,0,
+ 0,0,218,8,112,108,97,116,102,111,114,109,114,85,0,0,
+ 0,218,10,95,102,114,97,109,101,119,111,114,107,218,12,118,
+ 101,114,115,105,111,110,95,105,110,102,111,41,3,218,8,101,
+ 110,118,95,98,97,115,101,114,120,0,0,0,218,4,98,97,
+ 115,101,115,3,0,0,0,32,32,32,114,12,0,0,0,218,
+ 12,95,103,101,116,117,115,101,114,98,97,115,101,114,135,0,
+ 0,0,18,1,0,0,115,180,0,0,0,128,0,220,15,17,
+ 143,122,137,122,143,126,137,126,208,30,46,176,4,211,15,53,
+ 128,72,217,7,15,216,15,23,136,15,244,6,0,8,11,135,
+ 124,129,124,208,23,56,209,7,56,216,15,19,242,4,1,5,
+ 55,244,6,0,8,10,135,119,129,119,144,36,130,127,220,15,
+ 17,143,122,137,122,143,126,137,126,152,105,211,15,40,210,15,
+ 47,168,67,136,4,217,15,23,152,4,152,104,211,15,39,208,
+ 8,39,228,7,10,135,124,129,124,144,120,210,7,31,164,67,
+ 167,78,162,78,217,15,23,152,3,152,89,172,3,175,14,169,
+ 14,216,24,31,164,35,215,34,50,209,34,50,176,50,176,65,
+ 208,34,54,209,24,54,243,3,1,16,56,240,0,1,9,56,
+ 241,6,0,12,20,144,67,152,24,211,11,34,208,4,34,114,
+ 14,0,0,0,99,1,0,0,0,0,0,0,0,0,0,0,
+ 0,6,0,0,0,3,0,0,0,243,10,1,0,0,151,0,
+ 116,0,0,0,0,0,0,0,0,0,106,2,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,1,
+ 116,4,0,0,0,0,0,0,0,0,106,6,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,1,
+ 107,40,0,0,114,40,116,0,0,0,0,0,0,0,0,0,
+ 106,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,106,11,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,100,2,100,3,171,2,0,0,
+ 0,0,0,0,125,2,124,0,155,0,100,4,124,2,155,0,
+ 100,5,157,4,83,0,116,0,0,0,0,0,0,0,0,0,
+ 106,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,100,6,107,40,0,0,114,21,116,0,0,0,
+ 0,0,0,0,0,0,106,14,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,114,5,124,0,155,0,
+ 100,7,157,2,83,0,124,0,155,0,100,8,124,1,100,9,
+ 25,0,0,0,155,0,100,2,124,1,100,10,25,0,0,0,
+ 155,0,100,11,157,6,83,0,41,12,78,114,121,0,0,0,
+ 114,96,0,0,0,114,64,0,0,0,122,7,92,80,121,116,
+ 104,111,110,122,14,92,115,105,116,101,45,112,97,99,107,97,
+ 103,101,115,114,125,0,0,0,122,25,47,108,105,98,47,112,
+ 121,116,104,111,110,47,115,105,116,101,45,112,97,99,107,97,
+ 103,101,115,122,11,47,108,105,98,47,112,121,116,104,111,110,
+ 114,2,0,0,0,114,65,0,0,0,122,14,47,115,105,116,
+ 101,45,112,97,99,107,97,103,101,115,41,8,114,6,0,0,
+ 0,114,132,0,0,0,114,17,0,0,0,114,85,0,0,0,
+ 218,6,119,105,110,118,101,114,218,7,114,101,112,108,97,99,
+ 101,114,130,0,0,0,114,131,0,0,0,41,3,218,8,117,
+ 115,101,114,98,97,115,101,218,7,118,101,114,115,105,111,110,
+ 218,9,118,101,114,95,110,111,100,111,116,115,3,0,0,0,
+ 32,32,32,114,12,0,0,0,218,9,95,103,101,116,95,112,
+ 97,116,104,114,142,0,0,0,42,1,0,0,115,130,0,0,
+ 0,128,0,220,14,17,215,14,30,209,14,30,128,71,228,7,
+ 9,135,119,129,119,144,36,130,127,220,20,23,151,74,145,74,
+ 215,20,38,209,20,38,160,115,168,66,211,20,47,136,9,216,
+ 18,26,144,26,152,56,160,73,160,59,168,111,208,15,62,208,
+ 8,62,228,7,10,135,124,129,124,144,120,210,7,31,164,67,
+ 167,78,162,78,216,18,26,144,26,208,27,52,208,15,53,208,
+ 8,53,224,14,22,136,90,144,123,160,55,168,49,161,58,160,
+ 44,168,97,176,7,184,1,177,10,168,124,184,62,208,11,74,
+ 208,4,74,114,14,0,0,0,99,0,0,0,0,0,0,0,
+ 0,0,0,0,0,2,0,0,0,3,0,0,0,243,46,0,
+ 0,0,151,0,116,0,0,0,0,0,0,0,0,0,128,10,
+ 116,3,0,0,0,0,0,0,0,0,171,0,0,0,0,0,
+ 0,0,97,0,116,0,0,0,0,0,0,0,0,0,83,0,
+ 41,1,122,203,82,101,116,117,114,110,115,32,116,104,101,32,
+ 96,117,115,101,114,32,98,97,115,101,96,32,100,105,114,101,
+ 99,116,111,114,121,32,112,97,116,104,46,10,10,32,32,32,
+ 32,84,104,101,32,96,117,115,101,114,32,98,97,115,101,96,
+ 32,100,105,114,101,99,116,111,114,121,32,99,97,110,32,98,
+ 101,32,117,115,101,100,32,116,111,32,115,116,111,114,101,32,
+ 100,97,116,97,46,32,73,102,32,116,104,101,32,103,108,111,
+ 98,97,108,10,32,32,32,32,118,97,114,105,97,98,108,101,
+ 32,96,96,85,83,69,82,95,66,65,83,69,96,96,32,105,
+ 115,32,110,111,116,32,105,110,105,116,105,97,108,105,122,101,
+ 100,32,121,101,116,44,32,116,104,105,115,32,102,117,110,99,
+ 116,105,111,110,32,119,105,108,108,32,97,108,115,111,32,115,
+ 101,116,10,32,32,32,32,105,116,46,10,32,32,32,32,41,
+ 2,218,9,85,83,69,82,95,66,65,83,69,114,135,0,0,
+ 0,114,110,0,0,0,114,14,0,0,0,114,12,0,0,0,
+ 218,11,103,101,116,117,115,101,114,98,97,115,101,114,145,0,
+ 0,0,55,1,0,0,115,23,0,0,0,128,0,244,16,0,
+ 8,17,208,7,24,220,20,32,147,78,136,9,220,11,20,208,
+ 4,20,114,14,0,0,0,99,0,0,0,0,0,0,0,0,
+ 0,0,0,0,3,0,0,0,3,0,0,0,243,88,0,0,
+ 0,151,0,116,1,0,0,0,0,0,0,0,0,171,0,0,
+ 0,0,0,0,0,125,0,116,2,0,0,0,0,0,0,0,
+ 0,128,21,124,0,128,8,100,1,97,2,116,2,0,0,0,
+ 0,0,0,0,0,83,0,116,7,0,0,0,0,0,0,0,
+ 0,124,0,171,1,0,0,0,0,0,0,97,1,116,2,0,
+ 0,0,0,0,0,0,0,83,0,41,2,122,162,82,101,116,
+ 117,114,110,115,32,116,104,101,32,117,115,101,114,45,115,112,
+ 101,99,105,102,105,99,32,115,105,116,101,45,112,97,99,107,
+ 97,103,101,115,32,100,105,114,101,99,116,111,114,121,32,112,
+ 97,116,104,46,10,10,32,32,32,32,73,102,32,116,104,101,
+ 32,103,108,111,98,97,108,32,118,97,114,105,97,98,108,101,
+ 32,96,96,85,83,69,82,95,83,73,84,69,96,96,32,105,
+ 115,32,110,111,116,32,105,110,105,116,105,97,108,105,122,101,
+ 100,32,121,101,116,44,32,116,104,105,115,10,32,32,32,32,
+ 102,117,110,99,116,105,111,110,32,119,105,108,108,32,97,108,
+ 115,111,32,115,101,116,32,105,116,46,10,32,32,32,32,70,
+ 41,4,114,145,0,0,0,218,9,85,83,69,82,95,83,73,
+ 84,69,218,16,69,78,65,66,76,69,95,85,83,69,82,95,
+ 83,73,84,69,114,142,0,0,0,41,1,114,139,0,0,0,
+ 115,1,0,0,0,32,114,12,0,0,0,218,19,103,101,116,
+ 117,115,101,114,115,105,116,101,112,97,99,107,97,103,101,115,
+ 114,149,0,0,0,68,1,0,0,115,55,0,0,0,128,0,
+ 244,14,0,16,27,139,125,128,72,228,7,16,208,7,24,216,
+ 11,19,208,11,27,216,31,36,208,12,28,244,8,0,12,21,
+ 208,4,20,244,5,0,25,34,160,40,211,24,43,136,73,228,
+ 11,20,208,4,20,114,14,0,0,0,99,1,0,0,0,0,
+ 0,0,0,0,0,0,0,4,0,0,0,3,0,0,0,243,
+ 146,0,0,0,151,0,116,1,0,0,0,0,0,0,0,0,
+ 100,1,171,1,0,0,0,0,0,0,1,0,116,3,0,0,
+ 0,0,0,0,0,0,171,0,0,0,0,0,0,0,125,1,
+ 116,4,0,0,0,0,0,0,0,0,114,43,116,6,0,0,
+ 0,0,0,0,0,0,106,8,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,106,11,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,1,
+ 171,1,0,0,0,0,0,0,114,12,116,13,0,0,0,0,
+ 0,0,0,0,124,1,124,0,171,2,0,0,0,0,0,0,
+ 1,0,124,0,83,0,41,2,122,134,65,100,100,32,97,32,
+ 112,101,114,32,117,115,101,114,32,115,105,116,101,45,112,97,
+ 99,107,97,103,101,32,116,111,32,115,121,115,46,112,97,116,
+ 104,10,10,32,32,32,32,69,97,99,104,32,117,115,101,114,
+ 32,104,97,115,32,105,116,115,32,111,119,110,32,112,121,116,
+ 104,111,110,32,100,105,114,101,99,116,111,114,121,32,119,105,
+ 116,104,32,115,105,116,101,45,112,97,99,107,97,103,101,115,
+ 32,105,110,32,116,104,101,10,32,32,32,32,104,111,109,101,
+ 32,100,105,114,101,99,116,111,114,121,46,10,32,32,32,32,
+ 122,29,80,114,111,99,101,115,115,105,110,103,32,117,115,101,
+ 114,32,115,105,116,101,45,112,97,99,107,97,103,101,115,41,
+ 7,114,13,0,0,0,114,149,0,0,0,114,148,0,0,0,
+ 114,17,0,0,0,114,18,0,0,0,218,5,105,115,100,105,
+ 114,114,102,0,0,0,41,2,114,47,0,0,0,218,9,117,
+ 115,101,114,95,115,105,116,101,115,2,0,0,0,32,32,114,
+ 12,0,0,0,218,19,97,100,100,117,115,101,114,115,105,116,
+ 101,112,97,99,107,97,103,101,115,114,153,0,0,0,85,1,
+ 0,0,115,55,0,0,0,128,0,244,16,0,5,11,208,11,
+ 42,212,4,43,220,16,35,211,16,37,128,73,229,7,23,156,
+ 66,159,71,153,71,159,77,153,77,168,41,212,28,52,220,8,
+ 18,144,57,152,107,212,8,42,216,11,22,208,4,22,114,14,
+ 0,0,0,99,1,0,0,0,0,0,0,0,0,0,0,0,
+ 10,0,0,0,3,0,0,0,243,28,2,0,0,151,0,103,
+ 0,125,1,116,1,0,0,0,0,0,0,0,0,171,0,0,
+ 0,0,0,0,0,125,2,124,0,128,6,116,2,0,0,0,
+ 0,0,0,0,0,125,0,124,0,68,0,93,242,0,0,125,
+ 3,124,3,114,4,124,3,124,2,118,0,114,1,140,10,124,
+ 2,106,5,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,124,3,171,1,0,0,0,0,0,0,1,
+ 0,116,6,0,0,0,0,0,0,0,0,106,8,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,
+ 2,107,40,0,0,114,132,116,10,0,0,0,0,0,0,0,
+ 0,106,12,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,103,1,125,4,116,10,0,0,0,0,0,
+ 0,0,0,106,12,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,100,3,107,55,0,0,114,17,124,
+ 4,106,15,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,100,3,171,1,0,0,0,0,0,0,1,
+ 0,124,4,68,0,93,73,0,0,125,5,116,6,0,0,0,
+ 0,0,0,0,0,106,16,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,106,19,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,124,3,124,
+ 5,100,4,116,10,0,0,0,0,0,0,0,0,106,20,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,100,1,100,5,26,0,122,6,0,0,100,6,171,4,0,
+ 0,0,0,0,0,125,6,124,1,106,15,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,124,6,171,
+ 1,0,0,0,0,0,0,1,0,140,75,4,0,140,178,124,
+ 1,106,15,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,124,3,171,1,0,0,0,0,0,0,1,
+ 0,124,1,106,15,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,116,6,0,0,0,0,0,0,0,
+ 0,106,16,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,106,19,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,124,3,100,7,100,6,171,
+ 3,0,0,0,0,0,0,171,1,0,0,0,0,0,0,1,
+ 0,140,244,4,0,124,1,83,0,41,8,97,30,1,0,0,
+ 82,101,116,117,114,110,115,32,97,32,108,105,115,116,32,99,
+ 111,110,116,97,105,110,105,110,103,32,97,108,108,32,103,108,
+ 111,98,97,108,32,115,105,116,101,45,112,97,99,107,97,103,
+ 101,115,32,100,105,114,101,99,116,111,114,105,101,115,46,10,
+ 10,32,32,32,32,70,111,114,32,101,97,99,104,32,100,105,
+ 114,101,99,116,111,114,121,32,112,114,101,115,101,110,116,32,
+ 105,110,32,96,96,112,114,101,102,105,120,101,115,96,96,32,
+ 40,111,114,32,116,104,101,32,103,108,111,98,97,108,32,96,
+ 96,80,82,69,70,73,88,69,83,96,96,41,44,10,32,32,
+ 32,32,116,104,105,115,32,102,117,110,99,116,105,111,110,32,
+ 119,105,108,108,32,102,105,110,100,32,105,116,115,32,96,115,
+ 105,116,101,45,112,97,99,107,97,103,101,115,96,32,115,117,
+ 98,100,105,114,101,99,116,111,114,121,32,100,101,112,101,110,
+ 100,105,110,103,32,111,110,32,116,104,101,10,32,32,32,32,
+ 115,121,115,116,101,109,32,101,110,118,105,114,111,110,109,101,
+ 110,116,44,32,97,110,100,32,119,105,108,108,32,114,101,116,
+ 117,114,110,32,97,32,108,105,115,116,32,111,102,32,102,117,
+ 108,108,32,112,97,116,104,115,46,10,32,32,32,32,78,250,
+ 1,47,218,3,108,105,98,122,11,112,121,116,104,111,110,37,
+ 100,46,37,100,114,127,0,0,0,122,13,115,105,116,101,45,
+ 112,97,99,107,97,103,101,115,218,3,76,105,98,41,11,114,
+ 29,0,0,0,218,8,80,82,69,70,73,88,69,83,114,45,
+ 0,0,0,114,17,0,0,0,218,3,115,101,112,114,6,0,
+ 0,0,218,10,112,108,97,116,108,105,98,100,105,114,114,44,
+ 0,0,0,114,18,0,0,0,114,19,0,0,0,114,132,0,
+ 0,0,41,7,218,8,112,114,101,102,105,120,101,115,218,12,
+ 115,105,116,101,112,97,99,107,97,103,101,115,218,4,115,101,
+ 101,110,218,6,112,114,101,102,105,120,218,7,108,105,98,100,
+ 105,114,115,218,6,108,105,98,100,105,114,114,18,0,0,0,
+ 115,7,0,0,0,32,32,32,32,32,32,32,114,12,0,0,
+ 0,218,15,103,101,116,115,105,116,101,112,97,99,107,97,103,
+ 101,115,114,167,0,0,0,100,1,0,0,115,247,0,0,0,
+ 128,0,240,14,0,20,22,128,76,220,11,14,139,53,128,68,
+ 224,7,15,208,7,23,220,19,27,136,8,224,18,26,242,0,
+ 17,5,78,1,136,6,217,15,21,152,22,160,52,153,30,216,
+ 12,20,216,8,12,143,8,137,8,144,22,212,8,24,228,11,
+ 13,143,54,137,54,144,83,138,61,220,23,26,151,126,145,126,
+ 208,22,38,136,71,220,15,18,143,126,137,126,160,21,210,15,
+ 38,216,16,23,151,14,145,14,152,117,212,16,37,224,26,33,
+ 242,0,4,13,42,144,6,220,23,25,151,119,145,119,151,124,
+ 145,124,160,70,168,70,216,36,49,180,67,215,52,68,209,52,
+ 68,192,82,192,97,208,52,72,209,36,72,216,36,51,243,5,
+ 2,24,53,144,4,240,6,0,17,29,215,16,35,209,16,35,
+ 160,68,213,16,41,241,9,4,13,42,240,12,0,13,25,215,
+ 12,31,209,12,31,160,6,212,12,39,216,12,24,215,12,31,
+ 209,12,31,164,2,167,7,161,7,167,12,161,12,168,86,176,
+ 85,184,79,211,32,76,213,12,77,240,35,17,5,78,1,240,
+ 36,0,12,24,208,4,23,114,14,0,0,0,99,2,0,0,
+ 0,0,0,0,0,0,0,0,0,5,0,0,0,3,0,0,
+ 0,243,148,0,0,0,151,0,116,1,0,0,0,0,0,0,
+ 0,0,100,1,171,1,0,0,0,0,0,0,1,0,116,3,
+ 0,0,0,0,0,0,0,0,124,1,171,1,0,0,0,0,
+ 0,0,68,0,93,46,0,0,125,2,116,4,0,0,0,0,
+ 0,0,0,0,106,6,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,106,9,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,124,2,171,1,
+ 0,0,0,0,0,0,115,1,140,35,116,11,0,0,0,0,
+ 0,0,0,0,124,2,124,0,171,2,0,0,0,0,0,0,
+ 1,0,140,48,4,0,124,0,83,0,41,2,122,29,65,100,
+ 100,32,115,105,116,101,45,112,97,99,107,97,103,101,115,32,
+ 116,111,32,115,121,115,46,112,97,116,104,122,31,80,114,111,
+ 99,101,115,115,105,110,103,32,103,108,111,98,97,108,32,115,
+ 105,116,101,45,112,97,99,107,97,103,101,115,41,6,114,13,
+ 0,0,0,114,167,0,0,0,114,17,0,0,0,114,18,0,
+ 0,0,114,151,0,0,0,114,102,0,0,0,41,3,114,47,
+ 0,0,0,114,161,0,0,0,114,84,0,0,0,115,3,0,
+ 0,0,32,32,32,114,12,0,0,0,218,15,97,100,100,115,
+ 105,116,101,112,97,99,107,97,103,101,115,114,169,0,0,0,
+ 133,1,0,0,115,65,0,0,0,128,0,228,4,10,208,11,
+ 44,212,4,45,220,19,34,160,56,211,19,44,242,0,2,5,
+ 45,136,7,220,11,13,143,55,137,55,143,61,137,61,152,23,
+ 213,11,33,220,12,22,144,119,160,11,213,12,44,240,5,2,
+ 5,45,240,8,0,12,23,208,4,22,114,14,0,0,0,99,
+ 0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,
+ 3,0,0,0,243,176,0,0,0,151,0,116,0,0,0,0,
+ 0,0,0,0,0,106,2,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,100,1,107,40,0,0,114,
+ 3,100,2,125,0,110,2,100,3,125,0,116,5,0,0,0,
+ 0,0,0,0,0,106,6,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,100,4,124,0,171,2,0,
+ 0,0,0,0,0,116,8,0,0,0,0,0,0,0,0,95,
+ 5,0,0,0,0,0,0,0,0,116,5,0,0,0,0,0,
+ 0,0,0,106,6,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,100,5,124,0,171,2,0,0,0,
+ 0,0,0,116,8,0,0,0,0,0,0,0,0,95,6,0,
+ 0,0,0,0,0,0,0,121,6,41,7,122,173,68,101,102,
+ 105,110,101,32,110,101,119,32,98,117,105,108,116,105,110,115,
+ 32,39,113,117,105,116,39,32,97,110,100,32,39,101,120,105,
+ 116,39,46,10,10,32,32,32,32,84,104,101,115,101,32,97,
+ 114,101,32,111,98,106,101,99,116,115,32,119,104,105,99,104,
+ 32,109,97,107,101,32,116,104,101,32,105,110,116,101,114,112,
+ 114,101,116,101,114,32,101,120,105,116,32,119,104,101,110,32,
+ 99,97,108,108,101,100,46,10,32,32,32,32,84,104,101,32,
+ 114,101,112,114,32,111,102,32,101,97,99,104,32,111,98,106,
+ 101,99,116,32,99,111,110,116,97,105,110,115,32,97,32,104,
+ 105,110,116,32,97,116,32,104,111,119,32,105,116,32,119,111,
+ 114,107,115,46,10,10,32,32,32,32,250,1,92,122,18,67,
+ 116,114,108,45,90,32,112,108,117,115,32,82,101,116,117,114,
+ 110,122,17,67,116,114,108,45,68,32,40,105,46,101,46,32,
+ 69,79,70,41,218,4,113,117,105,116,218,4,101,120,105,116,
+ 78,41,7,114,17,0,0,0,114,159,0,0,0,218,13,95,
+ 115,105,116,101,98,117,105,108,116,105,110,115,218,7,81,117,
+ 105,116,116,101,114,218,8,98,117,105,108,116,105,110,115,114,
+ 172,0,0,0,114,173,0,0,0,41,1,218,3,101,111,102,
+ 115,1,0,0,0,32,114,12,0,0,0,218,7,115,101,116,
+ 113,117,105,116,114,178,0,0,0,142,1,0,0,115,65,0,
+ 0,0,128,0,244,14,0,8,10,135,118,129,118,144,20,130,
+ 126,216,14,34,137,3,224,14,33,136,3,228,20,33,215,20,
+ 41,209,20,41,168,38,176,35,211,20,54,132,72,132,77,220,
+ 20,33,215,20,41,209,20,41,168,38,176,35,211,20,54,132,
+ 72,133,77,114,14,0,0,0,99,0,0,0,0,0,0,0,
+ 0,0,0,0,0,6,0,0,0,3,0,0,0,243,76,2,
+ 0,0,151,0,116,1,0,0,0,0,0,0,0,0,106,2,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,100,1,116,4,0,0,0,0,0,0,0,0,106,6,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,171,2,0,0,0,0,0,0,116,8,0,0,0,0,
+ 0,0,0,0,95,3,0,0,0,0,0,0,0,0,116,1,
+ 0,0,0,0,0,0,0,0,106,2,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,100,2,100,3,
+ 171,2,0,0,0,0,0,0,116,8,0,0,0,0,0,0,
+ 0,0,95,5,0,0,0,0,0,0,0,0,103,0,103,0,
+ 125,1,125,0,116,13,0,0,0,0,0,0,0,0,116,4,
+ 0,0,0,0,0,0,0,0,100,4,100,5,171,3,0,0,
+ 0,0,0,0,125,2,124,2,115,61,116,15,0,0,0,0,
+ 0,0,0,0,116,16,0,0,0,0,0,0,0,0,100,6,
+ 171,2,0,0,0,0,0,0,114,45,116,16,0,0,0,0,
+ 0,0,0,0,106,18,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,106,21,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,116,16,0,0,
+ 0,0,0,0,0,0,106,22,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,171,1,0,0,0,0,
+ 0,0,125,2,124,2,114,97,124,0,106,25,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,7,
+ 100,8,103,2,171,1,0,0,0,0,0,0,1,0,124,1,
+ 106,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,116,16,0,0,0,0,0,0,0,0,106,18,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,106,27,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,124,2,116,16,0,0,0,0,0,0,
+ 0,0,106,28,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,171,2,0,0,0,0,0,0,124,2,
+ 116,16,0,0,0,0,0,0,0,0,106,30,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,3,
+ 171,1,0,0,0,0,0,0,1,0,116,1,0,0,0,0,
+ 0,0,0,0,106,2,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,100,9,100,10,124,0,124,1,
+ 171,4,0,0,0,0,0,0,116,8,0,0,0,0,0,0,
+ 0,0,95,16,0,0,0,0,0,0,0,0,121,5,41,11,
+ 122,41,83,101,116,32,39,99,111,112,121,114,105,103,104,116,
+ 39,32,97,110,100,32,39,99,114,101,100,105,116,115,39,32,
+ 105,110,32,98,117,105,108,116,105,110,115,218,9,99,111,112,
+ 121,114,105,103,104,116,218,7,99,114,101,100,105,116,115,122,
+ 158,32,32,32,32,84,104,97,110,107,115,32,116,111,32,67,
+ 87,73,44,32,67,78,82,73,44,32,66,101,79,112,101,110,
+ 46,99,111,109,44,32,90,111,112,101,32,67,111,114,112,111,
+ 114,97,116,105,111,110,32,97,110,100,32,97,32,99,97,115,
+ 116,32,111,102,32,116,104,111,117,115,97,110,100,115,10,32,
+ 32,32,32,102,111,114,32,115,117,112,112,111,114,116,105,110,
+ 103,32,80,121,116,104,111,110,32,100,101,118,101,108,111,112,
+ 109,101,110,116,46,32,32,83,101,101,32,119,119,119,46,112,
+ 121,116,104,111,110,46,111,114,103,32,102,111,114,32,109,111,
+ 114,101,32,105,110,102,111,114,109,97,116,105,111,110,46,218,
+ 11,95,115,116,100,108,105,98,95,100,105,114,78,114,37,0,
+ 0,0,122,11,76,73,67,69,78,83,69,46,116,120,116,218,
+ 7,76,73,67,69,78,83,69,218,7,108,105,99,101,110,115,
+ 101,122,39,83,101,101,32,104,116,116,112,115,58,47,47,119,
+ 119,119,46,112,121,116,104,111,110,46,111,114,103,47,112,115,
+ 102,47,108,105,99,101,110,115,101,47,41,17,114,174,0,0,
+ 0,218,8,95,80,114,105,110,116,101,114,114,6,0,0,0,
+ 114,180,0,0,0,114,176,0,0,0,114,181,0,0,0,114,
+ 67,0,0,0,114,109,0,0,0,114,17,0,0,0,114,18,
+ 0,0,0,218,7,100,105,114,110,97,109,101,114,37,0,0,
+ 0,218,6,101,120,116,101,110,100,114,19,0,0,0,218,6,
+ 112,97,114,100,105,114,218,6,99,117,114,100,105,114,114,184,
+ 0,0,0,41,3,218,5,102,105,108,101,115,218,4,100,105,
+ 114,115,218,4,104,101,114,101,115,3,0,0,0,32,32,32,
+ 114,12,0,0,0,218,12,115,101,116,99,111,112,121,114,105,
+ 103,104,116,114,193,0,0,0,158,1,0,0,115,208,0,0,
+ 0,128,0,228,25,38,215,25,47,209,25,47,176,11,188,83,
+ 191,93,185,93,211,25,75,132,72,212,4,22,220,23,36,215,
+ 23,45,209,23,45,168,105,240,0,2,58,84,1,243,0,2,
+ 24,85,1,132,72,212,4,20,240,6,0,19,21,144,98,136,
+ 52,128,69,244,6,0,12,19,148,51,152,13,160,116,211,11,
+ 44,128,68,217,11,15,148,71,156,66,160,10,212,20,43,220,
+ 15,17,143,119,137,119,143,127,137,127,156,114,159,123,153,123,
+ 211,15,43,136,4,217,7,11,216,8,13,143,12,137,12,144,
+ 109,160,89,208,21,47,212,8,48,216,8,12,143,11,137,11,
+ 148,82,151,87,145,87,151,92,145,92,160,36,172,2,175,9,
+ 169,9,211,21,50,176,68,188,34,191,41,185,41,208,20,68,
+ 212,8,69,220,23,36,215,23,45,209,23,45,216,8,17,216,
+ 8,49,216,8,13,136,116,243,7,3,24,21,132,72,213,4,
+ 20,114,14,0,0,0,99,0,0,0,0,0,0,0,0,0,
+ 0,0,0,2,0,0,0,3,0,0,0,243,62,0,0,0,
+ 151,0,116,1,0,0,0,0,0,0,0,0,106,2,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 171,0,0,0,0,0,0,0,116,4,0,0,0,0,0,0,
+ 0,0,95,3,0,0,0,0,0,0,0,0,121,0,114,16,
+ 0,0,0,41,4,114,174,0,0,0,218,7,95,72,101,108,
+ 112,101,114,114,176,0,0,0,218,4,104,101,108,112,114,110,
+ 0,0,0,114,14,0,0,0,114,12,0,0,0,218,9,115,
+ 101,116,104,101,108,112,101,114,114,197,0,0,0,179,1,0,
+ 0,115,18,0,0,0,128,0,220,20,33,215,20,41,209,20,
+ 41,211,20,43,132,72,133,77,114,14,0,0,0,99,0,0,
+ 0,0,0,0,0,0,0,0,0,0,2,0,0,0,3,0,
+ 0,0,243,32,0,0,0,151,0,100,1,132,0,125,0,124,
+ 0,116,0,0,0,0,0,0,0,0,0,95,1,0,0,0,
+ 0,0,0,0,0,121,2,41,3,97,106,1,0,0,69,110,
+ 97,98,108,101,32,100,101,102,97,117,108,116,32,114,101,97,
+ 100,108,105,110,101,32,99,111,110,102,105,103,117,114,97,116,
+ 105,111,110,32,111,110,32,105,110,116,101,114,97,99,116,105,
+ 118,101,32,112,114,111,109,112,116,115,44,32,98,121,10,32,
+ 32,32,32,114,101,103,105,115,116,101,114,105,110,103,32,97,
+ 32,115,121,115,46,95,95,105,110,116,101,114,97,99,116,105,
+ 118,101,104,111,111,107,95,95,46,10,10,32,32,32,32,73,
+ 102,32,116,104,101,32,114,101,97,100,108,105,110,101,32,109,
+ 111,100,117,108,101,32,99,97,110,32,98,101,32,105,109,112,
+ 111,114,116,101,100,44,32,116,104,101,32,104,111,111,107,32,
+ 119,105,108,108,32,115,101,116,32,116,104,101,32,84,97,98,
+ 32,107,101,121,10,32,32,32,32,97,115,32,99,111,109,112,
+ 108,101,116,105,111,110,32,107,101,121,32,97,110,100,32,114,
+ 101,103,105,115,116,101,114,32,126,47,46,112,121,116,104,111,
+ 110,95,104,105,115,116,111,114,121,32,97,115,32,104,105,115,
+ 116,111,114,121,32,102,105,108,101,46,10,32,32,32,32,84,
+ 104,105,115,32,99,97,110,32,98,101,32,111,118,101,114,114,
+ 105,100,100,101,110,32,105,110,32,116,104,101,32,115,105,116,
+ 101,99,117,115,116,111,109,105,122,101,32,111,114,32,117,115,
+ 101,114,99,117,115,116,111,109,105,122,101,32,109,111,100,117,
+ 108,101,44,10,32,32,32,32,111,114,32,105,110,32,97,32,
+ 80,89,84,72,79,78,83,84,65,82,84,85,80,32,102,105,
+ 108,101,46,10,32,32,32,32,99,0,0,0,0,0,0,0,
+ 0,0,0,0,0,5,0,0,0,19,0,0,0,243,254,1,
+ 0,0,135,4,135,5,151,0,100,1,100,0,108,0,125,0,
+ 9,0,100,1,100,0,108,1,138,5,100,1,100,0,108,2,
+ 125,1,116,9,0,0,0,0,0,0,0,0,137,5,100,2,
+ 100,3,171,3,0,0,0,0,0,0,125,2,124,2,129,22,
+ 100,4,124,2,118,0,114,18,137,5,106,11,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,5,
+ 171,1,0,0,0,0,0,0,1,0,110,17,137,5,106,11,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,100,6,171,1,0,0,0,0,0,0,1,0,9,0,
+ 137,5,106,13,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,171,0,0,0,0,0,0,0,1,0,
+ 137,5,106,17,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,171,0,0,0,0,0,0,0,100,1,
+ 107,40,0,0,114,103,116,18,0,0,0,0,0,0,0,0,
+ 106,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,106,23,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,116,18,0,0,0,0,0,0,
+ 0,0,106,20,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,106,25,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,100,7,171,1,0,0,
+ 0,0,0,0,100,8,171,2,0,0,0,0,0,0,138,4,
+ 9,0,137,5,106,27,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,137,4,171,1,0,0,0,0,
+ 0,0,1,0,136,4,136,5,102,2,100,9,132,8,125,3,
+ 124,0,106,29,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,124,3,171,1,0,0,0,0,0,0,
+ 1,0,121,0,121,0,35,0,116,6,0,0,0,0,0,0,
+ 0,0,36,0,114,3,1,0,89,0,121,0,119,0,120,3,
+ 89,0,119,1,35,0,116,14,0,0,0,0,0,0,0,0,
+ 36,0,114,3,1,0,89,0,140,149,119,0,120,3,89,0,
+ 119,1,35,0,116,14,0,0,0,0,0,0,0,0,36,0,
+ 114,3,1,0,89,0,140,66,119,0,120,3,89,0,119,1,
+ 41,10,78,114,2,0,0,0,218,7,95,95,100,111,99,95,
+ 95,114,64,0,0,0,218,7,108,105,98,101,100,105,116,122,
+ 19,98,105,110,100,32,94,73,32,114,108,95,99,111,109,112,
+ 108,101,116,101,122,13,116,97,98,58,32,99,111,109,112,108,
+ 101,116,101,114,123,0,0,0,122,15,46,112,121,116,104,111,
+ 110,95,104,105,115,116,111,114,121,99,0,0,0,0,0,0,
+ 0,0,0,0,0,0,4,0,0,0,19,0,0,0,243,72,
+ 0,0,0,149,2,151,0,9,0,137,1,106,1,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,
+ 0,171,1,0,0,0,0,0,0,1,0,121,0,35,0,116,
+ 2,0,0,0,0,0,0,0,0,36,0,114,3,1,0,89,
+ 0,121,0,119,0,120,3,89,0,119,1,114,16,0,0,0,
+ 41,2,218,18,119,114,105,116,101,95,104,105,115,116,111,114,
+ 121,95,102,105,108,101,114,21,0,0,0,41,2,218,7,104,
+ 105,115,116,111,114,121,218,8,114,101,97,100,108,105,110,101,
+ 115,2,0,0,0,128,128,114,12,0,0,0,218,13,119,114,
+ 105,116,101,95,104,105,115,116,111,114,121,122,67,101,110,97,
+ 98,108,101,114,108,99,111,109,112,108,101,116,101,114,46,60,
+ 108,111,99,97,108,115,62,46,114,101,103,105,115,116,101,114,
+ 95,114,101,97,100,108,105,110,101,46,60,108,111,99,97,108,
+ 115,62,46,119,114,105,116,101,95,104,105,115,116,111,114,121,
+ 229,1,0,0,115,42,0,0,0,248,128,0,240,2,5,17,
+ 25,216,20,28,215,20,47,209,20,47,176,7,213,20,56,248,
+ 220,23,30,242,0,3,17,25,241,6,0,21,25,240,7,3,
+ 17,25,250,115,12,0,0,0,131,17,21,0,149,9,33,3,
+ 160,1,33,3,41,15,218,6,97,116,101,120,105,116,114,205,
+ 0,0,0,218,11,114,108,99,111,109,112,108,101,116,101,114,
+ 218,11,73,109,112,111,114,116,69,114,114,111,114,114,67,0,
+ 0,0,218,14,112,97,114,115,101,95,97,110,100,95,98,105,
+ 110,100,218,14,114,101,97,100,95,105,110,105,116,95,102,105,
+ 108,101,114,21,0,0,0,218,26,103,101,116,95,99,117,114,
+ 114,101,110,116,95,104,105,115,116,111,114,121,95,108,101,110,
+ 103,116,104,114,17,0,0,0,114,18,0,0,0,114,19,0,
+ 0,0,114,118,0,0,0,218,17,114,101,97,100,95,104,105,
+ 115,116,111,114,121,95,102,105,108,101,218,8,114,101,103,105,
+ 115,116,101,114,41,6,114,207,0,0,0,114,208,0,0,0,
+ 218,12,114,101,97,100,108,105,110,101,95,100,111,99,114,206,
+ 0,0,0,114,204,0,0,0,114,205,0,0,0,115,6,0,
+ 0,0,32,32,32,32,64,64,114,12,0,0,0,218,17,114,
+ 101,103,105,115,116,101,114,95,114,101,97,100,108,105,110,101,
+ 122,44,101,110,97,98,108,101,114,108,99,111,109,112,108,101,
+ 116,101,114,46,60,108,111,99,97,108,115,62,46,114,101,103,
+ 105,115,116,101,114,95,114,101,97,100,108,105,110,101,191,1,
+ 0,0,115,254,0,0,0,249,128,0,219,8,21,240,2,4,
+ 9,19,219,12,27,219,12,30,244,12,0,24,31,152,120,168,
+ 25,176,66,211,23,55,136,12,216,11,23,208,11,35,168,9,
+ 176,92,209,40,65,216,12,20,215,12,35,209,12,35,208,36,
+ 57,213,12,58,224,12,20,215,12,35,209,12,35,160,79,212,
+ 12,52,240,4,7,9,17,216,12,20,215,12,35,209,12,35,
+ 212,12,37,240,16,0,12,20,215,11,46,209,11,46,211,11,
+ 48,176,65,210,11,53,244,12,0,23,25,151,103,145,103,151,
+ 108,145,108,164,50,167,55,161,55,215,35,53,209,35,53,176,
+ 99,211,35,58,216,35,52,243,3,1,23,54,136,71,240,4,
+ 3,13,21,216,16,24,215,16,42,209,16,42,168,55,212,16,
+ 51,245,8,6,13,25,240,16,0,13,19,143,79,137,79,152,
+ 77,213,12,42,240,43,0,12,54,248,244,41,0,16,27,242,
+ 0,1,9,19,217,12,18,240,3,1,9,19,251,244,26,0,
+ 16,23,242,0,5,9,17,241,10,0,13,17,240,11,5,9,
+ 17,251,244,34,0,20,27,242,0,1,13,21,217,16,20,240,
+ 3,1,13,21,250,115,53,0,0,0,136,8,67,18,0,193,
+ 7,16,67,33,0,194,40,17,67,48,0,195,18,9,67,30,
+ 3,195,29,1,67,30,3,195,33,9,67,45,3,195,44,1,
+ 67,45,3,195,48,9,67,60,3,195,59,1,67,60,3,78,
+ 41,2,114,6,0,0,0,218,19,95,95,105,110,116,101,114,
+ 97,99,116,105,118,101,104,111,111,107,95,95,41,1,114,216,
+ 0,0,0,115,1,0,0,0,32,114,12,0,0,0,218,17,
+ 101,110,97,98,108,101,114,108,99,111,109,112,108,101,116,101,
+ 114,114,218,0,0,0,182,1,0,0,115,18,0,0,0,128,
+ 0,242,18,46,5,43,240,96,1,0,31,48,132,67,213,4,
+ 27,114,14,0,0,0,99,1,0,0,0,0,0,0,0,0,
+ 0,0,0,8,0,0,0,3,0,0,0,243,66,4,0,0,
+ 151,0,116,0,0,0,0,0,0,0,0,0,106,2,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 125,1,116,4,0,0,0,0,0,0,0,0,106,6,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 100,1,107,40,0,0,114,35,100,2,124,1,118,0,114,31,
+ 116,0,0,0,0,0,0,0,0,0,106,2,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,2,
+ 25,0,0,0,120,1,125,2,116,4,0,0,0,0,0,0,
+ 0,0,95,4,0,0,0,0,0,0,0,0,110,16,116,4,
+ 0,0,0,0,0,0,0,0,106,10,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,125,2,116,0,
+ 0,0,0,0,0,0,0,0,106,12,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,106,15,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 116,0,0,0,0,0,0,0,0,0,106,12,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,17,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,124,2,171,1,0,0,0,0,0,0,171,1,0,0,
+ 0,0,0,0,125,3,116,0,0,0,0,0,0,0,0,0,
+ 106,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,106,15,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,124,3,171,1,0,0,0,0,
+ 0,0,125,4,100,0,116,4,0,0,0,0,0,0,0,0,
+ 95,9,0,0,0,0,0,0,0,0,100,3,125,5,116,21,
+ 0,0,0,0,0,0,0,0,100,4,132,0,116,0,0,0,
+ 0,0,0,0,0,0,106,12,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,106,23,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,3,
+ 124,5,171,2,0,0,0,0,0,0,116,0,0,0,0,0,
+ 0,0,0,0,106,12,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,106,23,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,124,4,124,5,
+ 171,2,0,0,0,0,0,0,102,2,68,0,171,0,0,0,
+ 0,0,0,0,100,0,171,2,0,0,0,0,0,0,125,6,
+ 124,6,144,1,114,0,124,6,125,7,100,5,125,8,116,25,
+ 0,0,0,0,0,0,0,0,124,7,100,6,172,7,171,2,
+ 0,0,0,0,0,0,53,0,125,9,124,9,68,0,93,113,
+ 0,0,125,10,100,8,124,10,118,0,115,1,140,8,124,10,
+ 106,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,100,8,171,1,0,0,0,0,0,0,92,3,
+ 0,0,125,11,125,12,125,13,124,11,106,29,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,0,
+ 0,0,0,0,0,0,106,31,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,171,0,0,0,0,0,
+ 0,0,125,11,124,13,106,29,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,171,0,0,0,0,0,
+ 0,0,125,13,124,11,100,9,107,40,0,0,114,17,124,13,
+ 106,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,171,0,0,0,0,0,0,0,125,8,140,97,
+ 124,11,100,10,107,40,0,0,115,1,140,103,124,13,116,4,
+ 0,0,0,0,0,0,0,0,95,9,0,0,0,0,0,0,
+ 0,0,140,115,4,0,9,0,100,0,100,0,100,0,171,2,
+ 0,0,0,0,0,0,1,0,124,4,120,1,116,4,0,0,
+ 0,0,0,0,0,0,95,16,0,0,0,0,0,0,0,0,
+ 116,4,0,0,0,0,0,0,0,0,95,17,0,0,0,0,
+ 0,0,0,0,116,37,0,0,0,0,0,0,0,0,124,0,
+ 116,4,0,0,0,0,0,0,0,0,106,32,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,1,
+ 171,2,0,0,0,0,0,0,1,0,124,8,100,5,107,40,
+ 0,0,114,38,116,38,0,0,0,0,0,0,0,0,106,41,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,100,11,116,4,0,0,0,0,0,0,0,0,106,32,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,171,2,0,0,0,0,0,0,1,0,124,0,83,0,
+ 116,4,0,0,0,0,0,0,0,0,106,32,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,1,
+ 97,19,100,12,97,21,124,0,83,0,35,0,49,0,115,1,
+ 119,2,1,0,89,0,1,0,1,0,140,122,120,3,89,0,
+ 119,1,41,13,78,114,125,0,0,0,218,19,95,95,80,89,
+ 86,69,78,86,95,76,65,85,78,67,72,69,82,95,95,122,
+ 10,112,121,118,101,110,118,46,99,102,103,99,1,0,0,0,
+ 0,0,0,0,0,0,0,0,4,0,0,0,51,0,0,0,
+ 243,94,0,0,0,75,0,1,0,151,0,124,0,93,37,0,
+ 0,125,1,116,0,0,0,0,0,0,0,0,0,106,2,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,106,5,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,124,1,171,1,0,0,0,0,0,0,114,
+ 4,124,1,150,1,151,1,1,0,140,39,4,0,121,0,173,
+ 3,119,1,114,16,0,0,0,41,3,114,17,0,0,0,114,
+ 18,0,0,0,218,6,105,115,102,105,108,101,41,2,218,2,
+ 46,48,218,8,99,111,110,102,102,105,108,101,115,2,0,0,
+ 0,32,32,114,12,0,0,0,250,9,60,103,101,110,101,120,
+ 112,114,62,122,23,118,101,110,118,46,60,108,111,99,97,108,
+ 115,62,46,60,103,101,110,101,120,112,114,62,254,1,0,0,
+ 115,42,0,0,0,232,0,248,128,0,242,0,6,9,10,216,
+ 25,33,244,8,0,16,18,143,119,137,119,143,126,137,126,152,
+ 104,212,15,39,244,9,0,13,21,241,3,6,9,10,249,115,
+ 4,0,0,0,130,43,45,1,218,4,116,114,117,101,122,5,
+ 117,116,102,45,56,114,61,0,0,0,250,1,61,122,28,105,
+ 110,99,108,117,100,101,45,115,121,115,116,101,109,45,115,105,
+ 116,101,45,112,97,99,107,97,103,101,115,218,4,104,111,109,
+ 101,114,2,0,0,0,70,41,22,114,17,0,0,0,114,128,
+ 0,0,0,114,6,0,0,0,114,130,0,0,0,218,16,95,
+ 98,97,115,101,95,101,120,101,99,117,116,97,98,108,101,218,
+ 10,101,120,101,99,117,116,97,98,108,101,114,18,0,0,0,
+ 114,186,0,0,0,114,20,0,0,0,218,5,95,104,111,109,
+ 101,218,4,110,101,120,116,114,19,0,0,0,218,4,111,112,
+ 101,110,218,9,112,97,114,116,105,116,105,111,110,114,76,0,
+ 0,0,218,5,108,111,119,101,114,114,164,0,0,0,218,11,
+ 101,120,101,99,95,112,114,101,102,105,120,114,169,0,0,0,
+ 114,158,0,0,0,218,6,105,110,115,101,114,116,114,148,0,
+ 0,0,41,14,114,47,0,0,0,218,3,101,110,118,114,230,
+ 0,0,0,218,7,101,120,101,95,100,105,114,218,11,115,105,
+ 116,101,95,112,114,101,102,105,120,218,13,99,111,110,102,95,
+ 98,97,115,101,110,97,109,101,218,14,99,97,110,100,105,100,
+ 97,116,101,95,99,111,110,102,218,12,118,105,114,116,117,97,
+ 108,95,99,111,110,102,218,11,115,121,115,116,101,109,95,115,
+ 105,116,101,114,89,0,0,0,114,91,0,0,0,218,3,107,
+ 101,121,114,54,0,0,0,218,5,118,97,108,117,101,115,14,
+ 0,0,0,32,32,32,32,32,32,32,32,32,32,32,32,32,
+ 32,114,12,0,0,0,218,4,118,101,110,118,114,247,0,0,
+ 0,241,1,0,0,115,188,1,0,0,128,0,244,6,0,11,
+ 13,143,42,137,42,128,67,220,7,10,135,124,129,124,144,120,
+ 210,7,31,208,36,57,184,83,209,36,64,220,44,46,175,74,
+ 169,74,208,55,76,209,44,77,208,8,77,136,10,148,83,213,
+ 21,41,228,21,24,151,94,145,94,136,10,220,14,16,143,103,
+ 137,103,143,111,137,111,156,98,159,103,153,103,159,111,153,111,
+ 168,106,211,30,57,211,14,58,128,71,220,18,20,151,39,145,
+ 39,151,47,145,47,160,39,211,18,42,128,75,216,16,20,132,
+ 67,132,73,216,20,32,128,77,220,21,25,241,2,6,9,10,
+ 228,16,18,151,7,145,7,151,12,145,12,152,87,160,109,211,
+ 16,52,220,16,18,151,7,145,7,151,12,145,12,152,91,168,
+ 45,211,16,56,240,5,3,38,14,244,3,6,9,10,240,14,
+ 0,9,13,243,17,9,22,6,128,78,242,22,0,8,22,216,
+ 23,37,136,12,216,22,28,136,11,244,6,0,14,18,144,44,
+ 168,23,212,13,49,240,0,9,9,42,176,81,216,24,25,242,
+ 0,8,13,42,144,4,216,19,22,152,36,146,59,216,36,40,
+ 167,78,161,78,176,51,211,36,55,145,77,144,67,152,17,152,
+ 69,216,26,29,159,41,153,41,155,43,215,26,43,209,26,43,
+ 211,26,45,144,67,216,28,33,159,75,153,75,155,77,144,69,
+ 216,23,26,208,30,60,210,23,60,216,38,43,167,107,161,107,
+ 163,109,153,11,216,25,28,160,6,155,29,216,36,41,156,3,
+ 157,9,241,17,8,13,42,247,3,9,9,42,240,22,0,40,
+ 51,208,8,50,140,3,140,10,148,83,148,95,244,6,0,9,
+ 24,152,11,164,99,167,106,161,106,160,92,212,8,50,240,8,
+ 0,12,23,152,38,210,11,32,220,12,20,143,79,137,79,152,
+ 65,156,115,159,122,153,122,212,12,42,240,10,0,12,23,208,
+ 4,22,244,7,0,25,28,159,10,153,10,144,124,136,72,216,
+ 31,36,208,12,28,224,11,22,208,4,22,247,49,9,9,42,
+ 240,0,9,9,42,250,115,25,0,0,0,196,36,10,72,21,
+ 3,196,47,65,30,72,21,3,198,14,13,72,21,3,200,21,
+ 5,72,30,7,99,0,0,0,0,0,0,0,0,0,0,0,
+ 0,8,0,0,0,3,0,0,0,243,134,1,0,0,151,0,
+ 9,0,9,0,100,1,100,2,108,0,125,0,121,2,35,0,
+ 116,2,0,0,0,0,0,0,0,0,36,0,114,27,125,1,
+ 124,1,106,4,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,100,3,107,40,0,0,114,1,110,1,
+ 130,0,89,0,100,2,125,1,126,1,121,2,100,2,125,1,
+ 126,1,119,1,119,0,120,3,89,0,119,1,35,0,116,6,
+ 0,0,0,0,0,0,0,0,36,0,114,136,125,2,116,8,
+ 0,0,0,0,0,0,0,0,106,10,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,106,12,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 114,37,116,9,0,0,0,0,0,0,0,0,106,14,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 116,9,0,0,0,0,0,0,0,0,106,16,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,0,
+ 0,0,0,0,0,0,142,0,1,0,110,63,116,8,0,0,
+ 0,0,0,0,0,0,106,18,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,106,21,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,4,
+ 124,2,106,22,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,106,24,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,155,1,100,5,124,2,
+ 155,1,100,6,157,5,171,1,0,0,0,0,0,0,1,0,
+ 89,0,100,2,125,2,126,2,121,2,89,0,100,2,125,2,
+ 126,2,121,2,100,2,125,2,126,2,119,1,119,0,120,3,
+ 89,0,119,1,41,7,122,44,82,117,110,32,99,117,115,116,
+ 111,109,32,115,105,116,101,32,115,112,101,99,105,102,105,99,
+ 32,99,111,100,101,44,32,105,102,32,97,118,97,105,108,97,
+ 98,108,101,46,114,2,0,0,0,78,218,13,115,105,116,101,
+ 99,117,115,116,111,109,105,122,101,122,57,69,114,114,111,114,
+ 32,105,110,32,115,105,116,101,99,117,115,116,111,109,105,122,
+ 101,59,32,115,101,116,32,80,89,84,72,79,78,86,69,82,
+ 66,79,83,69,32,102,111,114,32,116,114,97,99,101,98,97,
+ 99,107,58,10,250,2,58,32,250,1,10,41,13,114,249,0,
+ 0,0,114,209,0,0,0,114,85,0,0,0,114,79,0,0,
+ 0,114,6,0,0,0,114,7,0,0,0,114,8,0,0,0,
+ 218,10,101,120,99,101,112,116,104,111,111,107,218,8,101,120,
+ 99,95,105,110,102,111,114,10,0,0,0,218,5,119,114,105,
+ 116,101,218,9,95,95,99,108,97,115,115,95,95,218,8,95,
+ 95,110,97,109,101,95,95,41,3,114,249,0,0,0,114,92,
+ 0,0,0,218,3,101,114,114,115,3,0,0,0,32,32,32,
+ 114,12,0,0,0,218,17,101,120,101,99,115,105,116,101,99,
+ 117,115,116,111,109,105,122,101,114,2,1,0,0,40,2,0,
+ 0,243,152,0,0,0,128,0,240,4,15,5,47,240,2,6,
+ 9,22,220,12,32,248,220,15,26,242,0,4,9,22,216,15,
+ 18,143,120,137,120,152,63,210,15,42,216,16,20,224,16,21,
+ 244,5,0,17,21,251,240,5,4,9,22,251,244,10,0,12,
+ 21,242,0,7,5,47,220,11,14,143,57,137,57,215,11,28,
+ 210,11,28,220,12,15,143,78,137,78,156,67,159,76,153,76,
+ 155,78,210,12,43,228,12,15,143,74,137,74,215,12,28,210,
+ 12,28,240,6,0,18,21,151,29,145,29,215,17,39,211,17,
+ 39,170,19,240,5,2,17,46,247,3,3,13,47,241,0,3,
+ 13,47,244,5,0,13,44,251,240,5,7,5,47,250,243,41,
+ 0,0,0,131,4,8,0,136,9,44,3,145,17,39,3,162,
+ 4,47,0,167,5,44,3,172,3,47,0,175,9,67,0,3,
+ 184,65,57,66,59,3,194,59,5,67,0,3,99,0,0,0,
+ 0,0,0,0,0,0,0,0,0,8,0,0,0,3,0,0,
+ 0,243,134,1,0,0,151,0,9,0,9,0,100,1,100,2,
+ 108,0,125,0,121,2,35,0,116,2,0,0,0,0,0,0,
+ 0,0,36,0,114,27,125,1,124,1,106,4,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,3,
+ 107,40,0,0,114,1,110,1,130,0,89,0,100,2,125,1,
+ 126,1,121,2,100,2,125,1,126,1,119,1,119,0,120,3,
+ 89,0,119,1,35,0,116,6,0,0,0,0,0,0,0,0,
+ 36,0,114,136,125,2,116,8,0,0,0,0,0,0,0,0,
+ 106,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,106,12,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,114,37,116,9,0,0,0,0,
+ 0,0,0,0,106,14,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,116,9,0,0,0,0,0,0,
+ 0,0,106,16,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,171,0,0,0,0,0,0,0,142,0,
+ 1,0,110,63,116,8,0,0,0,0,0,0,0,0,106,18,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,106,21,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,100,4,124,2,106,22,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,24,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,155,1,100,5,124,2,155,1,100,6,157,5,171,1,
+ 0,0,0,0,0,0,1,0,89,0,100,2,125,2,126,2,
+ 121,2,89,0,100,2,125,2,126,2,121,2,100,2,125,2,
+ 126,2,119,1,119,0,120,3,89,0,119,1,41,7,122,44,
+ 82,117,110,32,99,117,115,116,111,109,32,117,115,101,114,32,
+ 115,112,101,99,105,102,105,99,32,99,111,100,101,44,32,105,
+ 102,32,97,118,97,105,108,97,98,108,101,46,114,2,0,0,
+ 0,78,218,13,117,115,101,114,99,117,115,116,111,109,105,122,
+ 101,122,57,69,114,114,111,114,32,105,110,32,117,115,101,114,
+ 99,117,115,116,111,109,105,122,101,59,32,115,101,116,32,80,
+ 89,84,72,79,78,86,69,82,66,79,83,69,32,102,111,114,
+ 32,116,114,97,99,101,98,97,99,107,58,10,114,250,0,0,
+ 0,114,251,0,0,0,41,13,114,6,1,0,0,114,209,0,
+ 0,0,114,85,0,0,0,114,79,0,0,0,114,6,0,0,
+ 0,114,7,0,0,0,114,8,0,0,0,114,252,0,0,0,
+ 114,253,0,0,0,114,10,0,0,0,114,254,0,0,0,114,
+ 255,0,0,0,114,0,1,0,0,41,3,114,6,1,0,0,
+ 114,92,0,0,0,114,1,1,0,0,115,3,0,0,0,32,
+ 32,32,114,12,0,0,0,218,17,101,120,101,99,117,115,101,
+ 114,99,117,115,116,111,109,105,122,101,114,7,1,0,0,60,
+ 2,0,0,114,3,1,0,0,114,4,1,0,0,99,0,0,
+ 0,0,0,0,0,0,0,0,0,0,3,0,0,0,3,0,
+ 0,0,243,148,1,0,0,151,0,116,0,0,0,0,0,0,
+ 0,0,0,106,2,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,100,1,100,1,26,0,125,0,116,
+ 5,0,0,0,0,0,0,0,0,171,0,0,0,0,0,0,
+ 0,125,1,124,0,116,0,0,0,0,0,0,0,0,0,106,
+ 2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,107,55,0,0,114,10,116,7,0,0,0,0,0,
+ 0,0,0,171,0,0,0,0,0,0,0,1,0,116,9,0,
+ 0,0,0,0,0,0,0,124,1,171,1,0,0,0,0,0,
+ 0,125,1,116,10,0,0,0,0,0,0,0,0,128,10,116,
+ 13,0,0,0,0,0,0,0,0,171,0,0,0,0,0,0,
+ 0,97,5,116,15,0,0,0,0,0,0,0,0,124,1,171,
+ 1,0,0,0,0,0,0,125,1,116,17,0,0,0,0,0,
+ 0,0,0,124,1,171,1,0,0,0,0,0,0,125,1,116,
+ 19,0,0,0,0,0,0,0,0,171,0,0,0,0,0,0,
+ 0,1,0,116,21,0,0,0,0,0,0,0,0,171,0,0,
+ 0,0,0,0,0,1,0,116,23,0,0,0,0,0,0,0,
+ 0,171,0,0,0,0,0,0,0,1,0,116,0,0,0,0,
+ 0,0,0,0,0,106,24,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,106,26,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,115,10,116,
+ 29,0,0,0,0,0,0,0,0,171,0,0,0,0,0,0,
+ 0,1,0,116,31,0,0,0,0,0,0,0,0,171,0,0,
+ 0,0,0,0,0,1,0,116,10,0,0,0,0,0,0,0,
+ 0,114,11,116,33,0,0,0,0,0,0,0,0,171,0,0,
+ 0,0,0,0,0,1,0,121,1,121,1,41,2,122,207,65,
+ 100,100,32,115,116,97,110,100,97,114,100,32,115,105,116,101,
+ 45,115,112,101,99,105,102,105,99,32,100,105,114,101,99,116,
+ 111,114,105,101,115,32,116,111,32,116,104,101,32,109,111,100,
+ 117,108,101,32,115,101,97,114,99,104,32,112,97,116,104,46,
+ 10,10,32,32,32,32,84,104,105,115,32,102,117,110,99,116,
+ 105,111,110,32,105,115,32,99,97,108,108,101,100,32,97,117,
+ 116,111,109,97,116,105,99,97,108,108,121,32,119,104,101,110,
+ 32,116,104,105,115,32,109,111,100,117,108,101,32,105,115,32,
+ 105,109,112,111,114,116,101,100,44,10,32,32,32,32,117,110,
+ 108,101,115,115,32,116,104,101,32,112,121,116,104,111,110,32,
+ 105,110,116,101,114,112,114,101,116,101,114,32,119,97,115,32,
+ 115,116,97,114,116,101,100,32,119,105,116,104,32,116,104,101,
+ 32,45,83,32,102,108,97,103,46,10,32,32,32,32,78,41,
+ 17,114,6,0,0,0,114,18,0,0,0,114,49,0,0,0,
+ 114,42,0,0,0,114,247,0,0,0,114,148,0,0,0,114,
+ 111,0,0,0,114,153,0,0,0,114,169,0,0,0,114,178,
+ 0,0,0,114,193,0,0,0,114,197,0,0,0,114,7,0,
+ 0,0,218,8,105,115,111,108,97,116,101,100,114,218,0,0,
+ 0,114,2,1,0,0,114,7,1,0,0,41,2,218,9,111,
+ 114,105,103,95,112,97,116,104,114,47,0,0,0,115,2,0,
+ 0,0,32,32,114,12,0,0,0,218,4,109,97,105,110,114,
+ 11,1,0,0,80,2,0,0,115,143,0,0,0,128,0,244,
+ 16,0,17,20,151,8,145,8,153,17,144,11,128,73,220,18,
+ 32,211,18,34,128,75,216,7,16,148,67,151,72,145,72,210,
+ 7,28,244,6,0,9,18,140,11,228,18,22,144,123,211,18,
+ 35,128,75,220,7,23,208,7,31,220,27,47,211,27,49,208,
+ 8,24,220,18,37,160,107,211,18,50,128,75,220,18,33,160,
+ 43,211,18,46,128,75,220,4,11,132,73,220,4,16,132,78,
+ 220,4,13,132,75,220,11,14,143,57,137,57,215,11,29,210,
+ 11,29,220,8,25,212,8,27,220,4,21,212,4,23,221,7,
+ 23,220,8,25,213,8,27,240,3,0,8,24,114,14,0,0,
+ 0,99,0,0,0,0,0,0,0,0,0,0,0,0,8,0,
+ 0,0,3,0,0,0,243,196,3,0,0,151,0,100,1,125,
+ 0,116,0,0,0,0,0,0,0,0,0,106,2,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,
+ 2,100,0,26,0,125,1,124,1,115,168,116,5,0,0,0,
+ 0,0,0,0,0,171,0,0,0,0,0,0,0,125,2,116,
+ 7,0,0,0,0,0,0,0,0,171,0,0,0,0,0,0,
+ 0,125,3,116,9,0,0,0,0,0,0,0,0,100,3,171,
+ 1,0,0,0,0,0,0,1,0,116,0,0,0,0,0,0,
+ 0,0,0,106,10,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,68,0,93,17,0,0,125,4,116,
+ 9,0,0,0,0,0,0,0,0,100,4,124,4,155,2,100,
+ 5,157,3,171,1,0,0,0,0,0,0,1,0,140,19,4,
+ 0,116,9,0,0,0,0,0,0,0,0,100,6,171,1,0,
+ 0,0,0,0,0,1,0,100,7,132,0,125,5,116,9,0,
+ 0,0,0,0,0,0,0,100,8,124,2,155,2,100,9,2,
+ 0,124,5,124,2,171,1,0,0,0,0,0,0,155,0,100,
+ 10,157,5,171,1,0,0,0,0,0,0,1,0,116,9,0,
+ 0,0,0,0,0,0,0,100,11,124,3,155,2,100,9,2,
+ 0,124,5,124,3,171,1,0,0,0,0,0,0,155,0,100,
+ 10,157,5,171,1,0,0,0,0,0,0,1,0,116,9,0,
+ 0,0,0,0,0,0,0,100,12,116,12,0,0,0,0,0,
+ 0,0,0,155,2,157,2,171,1,0,0,0,0,0,0,1,
+ 0,116,1,0,0,0,0,0,0,0,0,106,14,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,
+ 13,171,1,0,0,0,0,0,0,1,0,103,0,125,6,100,
+ 14,124,1,118,0,114,21,124,6,106,17,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,116,18,0,
+ 0,0,0,0,0,0,0,171,1,0,0,0,0,0,0,1,
+ 0,100,15,124,1,118,0,114,21,124,6,106,17,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,
+ 20,0,0,0,0,0,0,0,0,171,1,0,0,0,0,0,
+ 0,1,0,124,6,114,148,116,9,0,0,0,0,0,0,0,
+ 0,116,22,0,0,0,0,0,0,0,0,106,24,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,
+ 27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,124,6,171,1,0,0,0,0,0,0,171,1,0,
+ 0,0,0,0,0,1,0,116,12,0,0,0,0,0,0,0,
+ 0,114,22,116,1,0,0,0,0,0,0,0,0,106,14,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,100,13,171,1,0,0,0,0,0,0,1,0,121,0,116,
+ 12,0,0,0,0,0,0,0,0,100,16,117,0,114,22,116,
+ 1,0,0,0,0,0,0,0,0,106,14,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,100,2,171,
+ 1,0,0,0,0,0,0,1,0,121,0,116,12,0,0,0,
+ 0,0,0,0,0,128,22,116,1,0,0,0,0,0,0,0,
+ 0,106,14,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,100,17,171,1,0,0,0,0,0,0,1,
+ 0,121,0,116,1,0,0,0,0,0,0,0,0,106,14,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,100,18,171,1,0,0,0,0,0,0,1,0,121,0,100,
+ 13,100,0,108,14,125,7,116,9,0,0,0,0,0,0,0,
+ 0,124,7,106,31,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,124,0,116,0,0,0,0,0,0,
+ 0,0,0,106,2,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,100,13,25,0,0,0,116,22,0,
+ 0,0,0,0,0,0,0,106,24,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,102,2,122,6,0,
+ 0,171,1,0,0,0,0,0,0,171,1,0,0,0,0,0,
+ 0,1,0,116,1,0,0,0,0,0,0,0,0,106,14,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,100,19,171,1,0,0,0,0,0,0,1,0,121,0,41,
+ 20,78,97,178,1,0,0,32,32,32,32,37,115,32,91,45,
+ 45,117,115,101,114,45,98,97,115,101,93,32,91,45,45,117,
+ 115,101,114,45,115,105,116,101,93,10,10,32,32,32,32,87,
+ 105,116,104,111,117,116,32,97,114,103,117,109,101,110,116,115,
+ 32,112,114,105,110,116,32,115,111,109,101,32,117,115,101,102,
+ 117,108,32,105,110,102,111,114,109,97,116,105,111,110,10,32,
+ 32,32,32,87,105,116,104,32,97,114,103,117,109,101,110,116,
+ 115,32,112,114,105,110,116,32,116,104,101,32,118,97,108,117,
+ 101,32,111,102,32,85,83,69,82,95,66,65,83,69,32,97,
+ 110,100,47,111,114,32,85,83,69,82,95,83,73,84,69,32,
+ 115,101,112,97,114,97,116,101,100,10,32,32,32,32,98,121,
+ 32,39,37,115,39,46,10,10,32,32,32,32,69,120,105,116,
+ 32,99,111,100,101,115,32,119,105,116,104,32,45,45,117,115,
+ 101,114,45,98,97,115,101,32,111,114,32,45,45,117,115,101,
+ 114,45,115,105,116,101,58,10,32,32,32,32,32,32,48,32,
+ 45,32,117,115,101,114,32,115,105,116,101,32,100,105,114,101,
+ 99,116,111,114,121,32,105,115,32,101,110,97,98,108,101,100,
+ 10,32,32,32,32,32,32,49,32,45,32,117,115,101,114,32,
+ 115,105,116,101,32,100,105,114,101,99,116,111,114,121,32,105,
+ 115,32,100,105,115,97,98,108,101,100,32,98,121,32,117,115,
+ 101,114,10,32,32,32,32,32,32,50,32,45,32,117,115,101,
+ 114,32,115,105,116,101,32,100,105,114,101,99,116,111,114,121,
+ 32,105,115,32,100,105,115,97,98,108,101,100,32,98,121,32,
+ 115,117,112,101,114,32,117,115,101,114,10,32,32,32,32,32,
+ 32,32,32,32,32,111,114,32,102,111,114,32,115,101,99,117,
+ 114,105,116,121,32,114,101,97,115,111,110,115,10,32,32,32,
+ 32,32,62,50,32,45,32,117,110,107,110,111,119,110,32,101,
+ 114,114,111,114,10,32,32,32,32,114,65,0,0,0,122,12,
+ 115,121,115,46,112,97,116,104,32,61,32,91,122,4,32,32,
+ 32,32,250,1,44,250,1,93,99,1,0,0,0,0,0,0,
+ 0,0,0,0,0,3,0,0,0,19,0,0,0,243,72,0,
+ 0,0,151,0,124,0,129,32,116,0,0,0,0,0,0,0,
+ 0,0,106,2,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,106,5,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,124,0,171,1,0,0,
+ 0,0,0,0,114,1,121,1,121,2,41,3,78,114,51,0,
+ 0,0,122,13,100,111,101,115,110,39,116,32,101,120,105,115,
+ 116,41,3,114,17,0,0,0,114,18,0,0,0,114,151,0,
+ 0,0,41,1,114,18,0,0,0,115,1,0,0,0,32,114,
+ 12,0,0,0,114,51,0,0,0,122,23,95,115,99,114,105,
+ 112,116,46,60,108,111,99,97,108,115,62,46,101,120,105,115,
+ 116,115,137,2,0,0,115,29,0,0,0,128,0,216,15,19,
+ 208,15,31,164,66,167,71,161,71,167,77,161,77,176,36,212,
+ 36,55,216,23,31,224,23,38,114,14,0,0,0,122,11,85,
+ 83,69,82,95,66,65,83,69,58,32,122,2,32,40,250,1,
+ 41,122,11,85,83,69,82,95,83,73,84,69,58,32,122,18,
+ 69,78,65,66,76,69,95,85,83,69,82,95,83,73,84,69,
+ 58,32,114,2,0,0,0,122,11,45,45,117,115,101,114,45,
+ 98,97,115,101,122,11,45,45,117,115,101,114,45,115,105,116,
+ 101,70,114,127,0,0,0,233,3,0,0,0,233,10,0,0,
+ 0,41,16,114,6,0,0,0,218,4,97,114,103,118,114,145,
+ 0,0,0,114,149,0,0,0,114,9,0,0,0,114,18,0,
+ 0,0,114,148,0,0,0,114,173,0,0,0,114,44,0,0,
+ 0,114,144,0,0,0,114,147,0,0,0,114,17,0,0,0,
+ 218,7,112,97,116,104,115,101,112,114,19,0,0,0,218,8,
+ 116,101,120,116,119,114,97,112,218,6,100,101,100,101,110,116,
+ 41,8,114,196,0,0,0,114,119,0,0,0,218,9,117,115,
+ 101,114,95,98,97,115,101,114,152,0,0,0,114,24,0,0,
+ 0,114,51,0,0,0,218,6,98,117,102,102,101,114,114,21,
+ 1,0,0,115,8,0,0,0,32,32,32,32,32,32,32,32,
+ 114,12,0,0,0,218,7,95,115,99,114,105,112,116,114,25,
+ 1,0,0,114,2,0,0,115,110,1,0,0,128,0,240,2,
+ 13,12,8,128,68,244,28,0,12,15,143,56,137,56,144,65,
+ 144,66,136,60,128,68,217,11,15,220,20,31,147,77,136,9,
+ 220,20,39,211,20,41,136,9,220,8,13,136,110,212,8,29,
+ 220,19,22,151,56,145,56,242,0,1,9,38,136,67,221,12,
+ 17,154,115,208,18,36,213,12,37,240,3,1,9,38,228,8,
+ 13,136,99,140,10,242,2,4,9,39,244,10,0,9,14,144,
+ 11,152,73,152,61,168,2,169,54,176,41,211,43,60,208,42,
+ 61,184,81,208,14,63,212,8,64,220,8,13,144,11,152,73,
+ 152,61,168,2,169,54,176,41,211,43,60,208,42,61,184,81,
+ 208,14,63,212,8,64,220,8,13,208,16,34,212,35,51,208,
+ 34,54,208,14,55,212,8,56,220,8,11,143,8,137,8,144,
+ 17,140,11,224,13,15,128,70,216,7,20,152,4,209,7,28,
+ 216,8,14,143,13,137,13,148,105,212,8,32,216,7,20,152,
+ 4,209,7,28,216,8,14,143,13,137,13,148,105,212,8,32,
+ 225,7,13,220,8,13,140,98,143,106,137,106,143,111,137,111,
+ 152,102,211,14,37,212,8,38,221,11,27,220,12,15,143,72,
+ 137,72,144,81,141,75,220,13,29,160,21,209,13,38,220,12,
+ 15,143,72,137,72,144,81,141,75,220,13,29,208,13,37,220,
+ 12,15,143,72,137,72,144,81,141,75,228,12,15,143,72,137,
+ 72,144,81,141,75,227,8,23,220,8,13,136,104,143,111,137,
+ 111,152,100,164,99,167,104,161,104,168,113,161,107,180,50,183,
+ 58,177,58,208,37,62,209,30,62,211,14,63,212,8,64,220,
+ 8,11,143,8,137,8,144,18,141,12,114,14,0,0,0,218,
+ 8,95,95,109,97,105,110,95,95,114,16,0,0,0,41,40,
+ 114,200,0,0,0,114,6,0,0,0,114,17,0,0,0,114,
+ 176,0,0,0,114,174,0,0,0,114,71,0,0,0,114,68,
+ 0,0,0,114,164,0,0,0,114,236,0,0,0,114,158,0,
+ 0,0,114,148,0,0,0,114,147,0,0,0,114,144,0,0,
+ 0,114,13,0,0,0,114,25,0,0,0,114,42,0,0,0,
+ 114,49,0,0,0,114,56,0,0,0,114,94,0,0,0,114,
+ 102,0,0,0,114,111,0,0,0,114,135,0,0,0,114,142,
+ 0,0,0,114,145,0,0,0,114,149,0,0,0,114,153,0,
+ 0,0,114,167,0,0,0,114,169,0,0,0,114,178,0,0,
+ 0,114,193,0,0,0,114,197,0,0,0,114,218,0,0,0,
+ 114,247,0,0,0,114,2,1,0,0,114,7,1,0,0,114,
+ 11,1,0,0,114,7,0,0,0,218,7,110,111,95,115,105,
+ 116,101,114,25,1,0,0,114,0,1,0,0,114,110,0,0,
+ 0,114,14,0,0,0,114,12,0,0,0,250,8,60,109,111,
+ 100,117,108,101,62,114,28,1,0,0,1,0,0,0,115,239,
+ 0,0,0,240,3,1,1,1,241,2,69,1,1,4,243,78,
+ 2,0,1,11,219,0,9,219,0,15,219,0,20,219,0,9,
+ 219,0,11,240,6,0,13,16,143,74,137,74,152,3,159,15,
+ 153,15,208,11,40,128,8,240,6,0,20,24,208,0,16,240,
+ 10,0,13,17,128,9,216,12,16,128,9,242,6,2,1,40,
+ 242,10,6,1,38,242,18,20,1,17,242,46,16,1,23,242,
+ 38,10,1,13,242,26,52,1,23,243,110,1,23,1,23,242,
+ 52,22,1,16,242,64,1,20,1,35,242,48,10,1,75,1,
+ 242,26,10,1,21,242,26,15,1,21,242,34,13,1,23,243,
+ 30,31,1,24,243,66,1,7,1,23,242,18,13,1,55,242,
+ 32,18,1,21,242,42,1,1,44,242,6,57,1,48,242,118,
+ 1,52,1,23,242,110,1,17,1,47,242,40,17,1,47,242,
+ 40,27,1,28,240,62,0,8,11,135,121,129,121,215,7,24,
+ 210,7,24,217,4,8,132,70,242,4,52,1,21,240,108,1,
+ 0,4,12,136,122,210,3,25,217,4,11,133,73,240,3,0,
+ 4,26,114,14,0,0,0,
+};
diff --git a/contrib/tools/python3/Python/frozen_modules/stat.h b/contrib/tools/python3/Python/frozen_modules/stat.h
new file mode 100644
index 00000000000..ae8573d7b7b
--- /dev/null
+++ b/contrib/tools/python3/Python/frozen_modules/stat.h
@@ -0,0 +1,329 @@
+/* Auto-generated by Programs/_freeze_module.py */
+const unsigned char _Py_M__stat[] = {
+ 227,0,0,0,0,0,0,0,0,0,0,0,0,13,0,0,
+ 0,0,0,0,0,243,54,2,0,0,151,0,100,0,90,0,
+ 100,1,90,1,100,2,90,2,100,3,90,3,100,4,90,4,
+ 100,5,90,5,100,6,90,6,100,7,90,7,100,8,90,8,
+ 100,9,90,9,100,10,90,10,100,11,132,0,90,11,100,12,
+ 132,0,90,12,100,13,90,13,100,14,90,14,100,15,90,15,
+ 100,16,90,16,100,17,90,17,100,18,90,18,100,19,90,19,
+ 100,1,90,20,100,1,90,21,100,1,90,22,100,20,132,0,
+ 90,23,100,21,132,0,90,24,100,22,132,0,90,25,100,23,
+ 132,0,90,26,100,24,132,0,90,27,100,25,132,0,90,28,
+ 100,26,132,0,90,29,100,27,132,0,90,30,100,28,132,0,
+ 90,31,100,29,132,0,90,32,100,30,90,33,100,31,90,34,
+ 101,34,90,35,100,32,90,36,100,33,90,37,100,34,90,38,
+ 100,35,90,39,100,36,90,40,100,33,90,41,100,34,90,42,
+ 100,35,90,43,100,37,90,44,100,38,90,45,100,39,90,46,
+ 100,9,90,47,100,8,90,48,100,5,90,49,100,3,90,50,
+ 100,2,90,51,100,2,90,52,100,3,90,53,100,5,90,54,
+ 100,9,90,55,100,39,90,56,100,38,90,57,100,16,90,58,
+ 100,40,90,59,100,41,90,60,100,42,90,61,100,43,90,62,
+ 100,44,90,63,101,18,100,45,102,2,101,19,100,46,102,2,
+ 101,16,100,47,102,2,101,15,100,48,102,2,101,13,100,49,
+ 102,2,101,14,100,50,102,2,101,17,100,51,102,2,102,7,
+ 101,41,100,52,102,2,102,1,101,42,100,53,102,2,102,1,
+ 101,43,101,33,122,7,0,0,100,46,102,2,101,33,100,54,
+ 102,2,101,43,100,55,102,2,102,3,101,45,100,52,102,2,
+ 102,1,101,46,100,53,102,2,102,1,101,47,101,34,122,7,
+ 0,0,100,46,102,2,101,34,100,54,102,2,101,47,100,55,
+ 102,2,102,3,101,49,100,52,102,2,102,1,101,50,100,53,
+ 102,2,102,1,101,51,101,36,122,7,0,0,100,56,102,2,
+ 101,36,100,57,102,2,101,51,100,55,102,2,102,3,102,10,
+ 90,64,100,58,132,0,90,65,100,38,90,66,100,30,90,67,
+ 100,35,90,68,100,39,90,69,100,13,90,70,100,3,90,71,
+ 100,16,90,72,100,34,90,73,100,14,90,74,100,41,90,75,
+ 100,17,90,76,100,2,90,77,100,31,90,78,100,32,90,79,
+ 100,5,90,80,100,33,90,81,100,40,90,82,9,0,100,1,
+ 100,59,108,83,173,2,1,0,121,60,35,0,101,84,36,0,
+ 114,3,1,0,89,0,121,60,119,0,120,3,89,0,119,1,
+ 41,61,122,111,67,111,110,115,116,97,110,116,115,47,102,117,
+ 110,99,116,105,111,110,115,32,102,111,114,32,105,110,116,101,
+ 114,112,114,101,116,105,110,103,32,114,101,115,117,108,116,115,
+ 32,111,102,32,111,115,46,115,116,97,116,40,41,32,97,110,
+ 100,32,111,115,46,108,115,116,97,116,40,41,46,10,10,83,
+ 117,103,103,101,115,116,101,100,32,117,115,97,103,101,58,32,
+ 102,114,111,109,32,115,116,97,116,32,105,109,112,111,114,116,
+ 32,42,10,233,0,0,0,0,233,1,0,0,0,233,2,0,
+ 0,0,233,3,0,0,0,233,4,0,0,0,233,5,0,0,
+ 0,233,6,0,0,0,233,7,0,0,0,233,8,0,0,0,
+ 233,9,0,0,0,99,1,0,0,0,0,0,0,0,0,0,
+ 0,0,2,0,0,0,3,0,0,0,243,12,0,0,0,151,
+ 0,124,0,100,1,122,1,0,0,83,0,41,2,122,77,82,
+ 101,116,117,114,110,32,116,104,101,32,112,111,114,116,105,111,
+ 110,32,111,102,32,116,104,101,32,102,105,108,101,39,115,32,
+ 109,111,100,101,32,116,104,97,116,32,99,97,110,32,98,101,
+ 32,115,101,116,32,98,121,10,32,32,32,32,111,115,46,99,
+ 104,109,111,100,40,41,46,10,32,32,32,32,105,255,15,0,
+ 0,169,0,169,1,218,4,109,111,100,101,115,1,0,0,0,
+ 32,250,13,60,102,114,111,122,101,110,32,115,116,97,116,62,
+ 218,7,83,95,73,77,79,68,69,114,17,0,0,0,21,0,
+ 0,0,115,14,0,0,0,128,0,240,8,0,12,16,144,38,
+ 137,61,208,4,24,243,0,0,0,0,99,1,0,0,0,0,
+ 0,0,0,0,0,0,0,2,0,0,0,3,0,0,0,243,
+ 12,0,0,0,151,0,124,0,100,1,122,1,0,0,83,0,
+ 41,2,122,76,82,101,116,117,114,110,32,116,104,101,32,112,
+ 111,114,116,105,111,110,32,111,102,32,116,104,101,32,102,105,
+ 108,101,39,115,32,109,111,100,101,32,116,104,97,116,32,100,
+ 101,115,99,114,105,98,101,115,32,116,104,101,10,32,32,32,
+ 32,102,105,108,101,32,116,121,112,101,46,10,32,32,32,32,
+ 105,0,240,0,0,114,13,0,0,0,114,14,0,0,0,115,
+ 1,0,0,0,32,114,16,0,0,0,218,6,83,95,73,70,
+ 77,84,114,20,0,0,0,27,0,0,0,115,14,0,0,0,
+ 128,0,240,8,0,12,16,144,40,137,63,208,4,26,114,18,
+ 0,0,0,105,0,64,0,0,105,0,32,0,0,105,0,96,
+ 0,0,105,0,128,0,0,105,0,16,0,0,105,0,160,0,
+ 0,105,0,192,0,0,99,1,0,0,0,0,0,0,0,0,
+ 0,0,0,3,0,0,0,3,0,0,0,243,38,0,0,0,
+ 151,0,116,1,0,0,0,0,0,0,0,0,124,0,171,1,
+ 0,0,0,0,0,0,116,2,0,0,0,0,0,0,0,0,
+ 107,40,0,0,83,0,41,1,122,40,82,101,116,117,114,110,
+ 32,84,114,117,101,32,105,102,32,109,111,100,101,32,105,115,
+ 32,102,114,111,109,32,97,32,100,105,114,101,99,116,111,114,
+ 121,46,41,2,114,20,0,0,0,218,7,83,95,73,70,68,
+ 73,82,114,14,0,0,0,115,1,0,0,0,32,114,16,0,
+ 0,0,218,7,83,95,73,83,68,73,82,114,23,0,0,0,
+ 50,0,0,0,243,17,0,0,0,128,0,228,11,17,144,36,
+ 139,60,156,55,209,11,34,208,4,34,114,18,0,0,0,99,
+ 1,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,
+ 3,0,0,0,243,38,0,0,0,151,0,116,1,0,0,0,
+ 0,0,0,0,0,124,0,171,1,0,0,0,0,0,0,116,
+ 2,0,0,0,0,0,0,0,0,107,40,0,0,83,0,41,
+ 1,122,60,82,101,116,117,114,110,32,84,114,117,101,32,105,
+ 102,32,109,111,100,101,32,105,115,32,102,114,111,109,32,97,
+ 32,99,104,97,114,97,99,116,101,114,32,115,112,101,99,105,
+ 97,108,32,100,101,118,105,99,101,32,102,105,108,101,46,41,
+ 2,114,20,0,0,0,218,7,83,95,73,70,67,72,82,114,
+ 14,0,0,0,115,1,0,0,0,32,114,16,0,0,0,218,
+ 7,83,95,73,83,67,72,82,114,27,0,0,0,54,0,0,
+ 0,114,24,0,0,0,114,18,0,0,0,99,1,0,0,0,
+ 0,0,0,0,0,0,0,0,3,0,0,0,3,0,0,0,
+ 243,38,0,0,0,151,0,116,1,0,0,0,0,0,0,0,
+ 0,124,0,171,1,0,0,0,0,0,0,116,2,0,0,0,
+ 0,0,0,0,0,107,40,0,0,83,0,41,1,122,56,82,
+ 101,116,117,114,110,32,84,114,117,101,32,105,102,32,109,111,
+ 100,101,32,105,115,32,102,114,111,109,32,97,32,98,108,111,
+ 99,107,32,115,112,101,99,105,97,108,32,100,101,118,105,99,
+ 101,32,102,105,108,101,46,41,2,114,20,0,0,0,218,7,
+ 83,95,73,70,66,76,75,114,14,0,0,0,115,1,0,0,
+ 0,32,114,16,0,0,0,218,7,83,95,73,83,66,76,75,
+ 114,30,0,0,0,58,0,0,0,114,24,0,0,0,114,18,
+ 0,0,0,99,1,0,0,0,0,0,0,0,0,0,0,0,
+ 3,0,0,0,3,0,0,0,243,38,0,0,0,151,0,116,
+ 1,0,0,0,0,0,0,0,0,124,0,171,1,0,0,0,
+ 0,0,0,116,2,0,0,0,0,0,0,0,0,107,40,0,
+ 0,83,0,41,1,122,43,82,101,116,117,114,110,32,84,114,
+ 117,101,32,105,102,32,109,111,100,101,32,105,115,32,102,114,
+ 111,109,32,97,32,114,101,103,117,108,97,114,32,102,105,108,
+ 101,46,41,2,114,20,0,0,0,218,7,83,95,73,70,82,
+ 69,71,114,14,0,0,0,115,1,0,0,0,32,114,16,0,
+ 0,0,218,7,83,95,73,83,82,69,71,114,33,0,0,0,
+ 62,0,0,0,114,24,0,0,0,114,18,0,0,0,99,1,
+ 0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,3,
+ 0,0,0,243,38,0,0,0,151,0,116,1,0,0,0,0,
+ 0,0,0,0,124,0,171,1,0,0,0,0,0,0,116,2,
+ 0,0,0,0,0,0,0,0,107,40,0,0,83,0,41,1,
+ 122,48,82,101,116,117,114,110,32,84,114,117,101,32,105,102,
+ 32,109,111,100,101,32,105,115,32,102,114,111,109,32,97,32,
+ 70,73,70,79,32,40,110,97,109,101,100,32,112,105,112,101,
+ 41,46,41,2,114,20,0,0,0,218,7,83,95,73,70,73,
+ 70,79,114,14,0,0,0,115,1,0,0,0,32,114,16,0,
+ 0,0,218,8,83,95,73,83,70,73,70,79,114,36,0,0,
+ 0,66,0,0,0,114,24,0,0,0,114,18,0,0,0,99,
+ 1,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,
+ 3,0,0,0,243,38,0,0,0,151,0,116,1,0,0,0,
+ 0,0,0,0,0,124,0,171,1,0,0,0,0,0,0,116,
+ 2,0,0,0,0,0,0,0,0,107,40,0,0,83,0,41,
+ 1,122,44,82,101,116,117,114,110,32,84,114,117,101,32,105,
+ 102,32,109,111,100,101,32,105,115,32,102,114,111,109,32,97,
+ 32,115,121,109,98,111,108,105,99,32,108,105,110,107,46,41,
+ 2,114,20,0,0,0,218,7,83,95,73,70,76,78,75,114,
+ 14,0,0,0,115,1,0,0,0,32,114,16,0,0,0,218,
+ 7,83,95,73,83,76,78,75,114,39,0,0,0,70,0,0,
+ 0,114,24,0,0,0,114,18,0,0,0,99,1,0,0,0,
+ 0,0,0,0,0,0,0,0,3,0,0,0,3,0,0,0,
+ 243,38,0,0,0,151,0,116,1,0,0,0,0,0,0,0,
+ 0,124,0,171,1,0,0,0,0,0,0,116,2,0,0,0,
+ 0,0,0,0,0,107,40,0,0,83,0,41,1,122,37,82,
+ 101,116,117,114,110,32,84,114,117,101,32,105,102,32,109,111,
+ 100,101,32,105,115,32,102,114,111,109,32,97,32,115,111,99,
+ 107,101,116,46,41,2,114,20,0,0,0,218,8,83,95,73,
+ 70,83,79,67,75,114,14,0,0,0,115,1,0,0,0,32,
+ 114,16,0,0,0,218,8,83,95,73,83,83,79,67,75,114,
+ 42,0,0,0,74,0,0,0,115,17,0,0,0,128,0,228,
+ 11,17,144,36,139,60,156,56,209,11,35,208,4,35,114,18,
+ 0,0,0,99,1,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,3,0,0,0,243,4,0,0,0,151,0,121,
+ 1,41,2,122,35,82,101,116,117,114,110,32,84,114,117,101,
+ 32,105,102,32,109,111,100,101,32,105,115,32,102,114,111,109,
+ 32,97,32,100,111,111,114,46,70,114,13,0,0,0,114,14,
+ 0,0,0,115,1,0,0,0,32,114,16,0,0,0,218,8,
+ 83,95,73,83,68,79,79,82,114,44,0,0,0,78,0,0,
+ 0,243,5,0,0,0,128,0,224,11,16,114,18,0,0,0,
+ 99,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,3,0,0,0,243,4,0,0,0,151,0,121,1,41,2,
+ 122,42,82,101,116,117,114,110,32,84,114,117,101,32,105,102,
+ 32,109,111,100,101,32,105,115,32,102,114,111,109,32,97,110,
+ 32,101,118,101,110,116,32,112,111,114,116,46,70,114,13,0,
+ 0,0,114,14,0,0,0,115,1,0,0,0,32,114,16,0,
+ 0,0,218,8,83,95,73,83,80,79,82,84,114,47,0,0,
+ 0,82,0,0,0,114,45,0,0,0,114,18,0,0,0,99,
+ 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 3,0,0,0,243,4,0,0,0,151,0,121,1,41,2,122,
+ 39,82,101,116,117,114,110,32,84,114,117,101,32,105,102,32,
+ 109,111,100,101,32,105,115,32,102,114,111,109,32,97,32,119,
+ 104,105,116,101,111,117,116,46,70,114,13,0,0,0,114,14,
+ 0,0,0,115,1,0,0,0,32,114,16,0,0,0,218,7,
+ 83,95,73,83,87,72,84,114,49,0,0,0,86,0,0,0,
+ 114,45,0,0,0,114,18,0,0,0,105,0,8,0,0,105,
+ 0,4,0,0,105,0,2,0,0,233,0,1,0,0,233,128,
+ 0,0,0,233,64,0,0,0,105,192,1,0,0,233,56,0,
+ 0,0,233,32,0,0,0,233,16,0,0,0,105,0,0,1,
+ 0,105,0,0,2,0,105,0,0,4,0,105,0,0,16,0,
+ 105,0,0,32,0,218,1,108,218,1,115,250,1,45,218,1,
+ 98,218,1,100,218,1,99,218,1,112,218,1,114,218,1,119,
+ 218,1,83,218,1,120,218,1,116,218,1,84,99,1,0,0,
+ 0,0,0,0,0,0,0,0,0,5,0,0,0,3,0,0,
+ 0,243,170,0,0,0,151,0,103,0,125,1,116,0,0,0,
+ 0,0,0,0,0,0,68,0,93,56,0,0,125,2,124,2,
+ 68,0,93,32,0,0,92,2,0,0,125,3,125,4,124,0,
+ 124,3,122,1,0,0,124,3,107,40,0,0,115,1,140,15,
+ 124,1,106,3,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,124,4,171,1,0,0,0,0,0,0,
+ 1,0,1,0,140,39,4,0,124,1,106,3,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,1,
+ 171,1,0,0,0,0,0,0,1,0,140,58,4,0,100,2,
+ 106,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,124,1,171,1,0,0,0,0,0,0,83,0,
+ 41,3,122,59,67,111,110,118,101,114,116,32,97,32,102,105,
+ 108,101,39,115,32,109,111,100,101,32,116,111,32,97,32,115,
+ 116,114,105,110,103,32,111,102,32,116,104,101,32,102,111,114,
+ 109,32,39,45,114,119,120,114,119,120,114,119,120,39,46,114,
+ 58,0,0,0,218,0,41,3,218,15,95,102,105,108,101,109,
+ 111,100,101,95,116,97,98,108,101,218,6,97,112,112,101,110,
+ 100,218,4,106,111,105,110,41,5,114,15,0,0,0,218,4,
+ 112,101,114,109,218,5,116,97,98,108,101,218,3,98,105,116,
+ 218,4,99,104,97,114,115,5,0,0,0,32,32,32,32,32,
+ 114,16,0,0,0,218,8,102,105,108,101,109,111,100,101,114,
+ 78,0,0,0,156,0,0,0,115,98,0,0,0,128,0,224,
+ 11,13,128,68,220,17,32,242,0,6,5,29,136,5,216,25,
+ 30,242,0,5,9,29,137,73,136,67,144,20,216,15,19,144,
+ 99,137,122,152,83,211,15,32,216,16,20,151,11,145,11,152,
+ 68,212,16,33,217,16,21,240,7,5,9,29,240,10,0,13,
+ 17,143,75,137,75,152,3,213,12,28,240,13,6,5,29,240,
+ 14,0,12,14,143,55,137,55,144,52,139,61,208,4,24,114,
+ 18,0,0,0,41,1,218,1,42,78,41,85,218,7,95,95,
+ 100,111,99,95,95,218,7,83,84,95,77,79,68,69,218,6,
+ 83,84,95,73,78,79,218,6,83,84,95,68,69,86,218,8,
+ 83,84,95,78,76,73,78,75,218,6,83,84,95,85,73,68,
+ 218,6,83,84,95,71,73,68,218,7,83,84,95,83,73,90,
+ 69,218,8,83,84,95,65,84,73,77,69,218,8,83,84,95,
+ 77,84,73,77,69,218,8,83,84,95,67,84,73,77,69,114,
+ 17,0,0,0,114,20,0,0,0,114,22,0,0,0,114,26,
+ 0,0,0,114,29,0,0,0,114,32,0,0,0,114,35,0,
+ 0,0,114,38,0,0,0,114,41,0,0,0,218,8,83,95,
+ 73,70,68,79,79,82,218,8,83,95,73,70,80,79,82,84,
+ 218,7,83,95,73,70,87,72,84,114,23,0,0,0,114,27,
+ 0,0,0,114,30,0,0,0,114,33,0,0,0,114,36,0,
+ 0,0,114,39,0,0,0,114,42,0,0,0,114,44,0,0,
+ 0,114,47,0,0,0,114,49,0,0,0,218,7,83,95,73,
+ 83,85,73,68,218,7,83,95,73,83,71,73,68,218,7,83,
+ 95,69,78,70,77,84,218,7,83,95,73,83,86,84,88,218,
+ 7,83,95,73,82,69,65,68,218,8,83,95,73,87,82,73,
+ 84,69,218,7,83,95,73,69,88,69,67,218,7,83,95,73,
+ 82,87,88,85,218,7,83,95,73,82,85,83,82,218,7,83,
+ 95,73,87,85,83,82,218,7,83,95,73,88,85,83,82,218,
+ 7,83,95,73,82,87,88,71,218,7,83,95,73,82,71,82,
+ 80,218,7,83,95,73,87,71,82,80,218,7,83,95,73,88,
+ 71,82,80,218,7,83,95,73,82,87,88,79,218,7,83,95,
+ 73,82,79,84,72,218,7,83,95,73,87,79,84,72,218,7,
+ 83,95,73,88,79,84,72,218,9,85,70,95,78,79,68,85,
+ 77,80,218,12,85,70,95,73,77,77,85,84,65,66,76,69,
+ 218,9,85,70,95,65,80,80,69,78,68,218,9,85,70,95,
+ 79,80,65,81,85,69,218,11,85,70,95,78,79,85,78,76,
+ 73,78,75,218,13,85,70,95,67,79,77,80,82,69,83,83,
+ 69,68,218,9,85,70,95,72,73,68,68,69,78,218,11,83,
+ 70,95,65,82,67,72,73,86,69,68,218,12,83,70,95,73,
+ 77,77,85,84,65,66,76,69,218,9,83,70,95,65,80,80,
+ 69,78,68,218,11,83,70,95,78,79,85,78,76,73,78,75,
+ 218,11,83,70,95,83,78,65,80,83,72,79,84,114,71,0,
+ 0,0,114,78,0,0,0,218,22,70,73,76,69,95,65,84,
+ 84,82,73,66,85,84,69,95,65,82,67,72,73,86,69,218,
+ 25,70,73,76,69,95,65,84,84,82,73,66,85,84,69,95,
+ 67,79,77,80,82,69,83,83,69,68,218,21,70,73,76,69,
+ 95,65,84,84,82,73,66,85,84,69,95,68,69,86,73,67,
+ 69,218,24,70,73,76,69,95,65,84,84,82,73,66,85,84,
+ 69,95,68,73,82,69,67,84,79,82,89,218,24,70,73,76,
+ 69,95,65,84,84,82,73,66,85,84,69,95,69,78,67,82,
+ 89,80,84,69,68,218,21,70,73,76,69,95,65,84,84,82,
+ 73,66,85,84,69,95,72,73,68,68,69,78,218,31,70,73,
+ 76,69,95,65,84,84,82,73,66,85,84,69,95,73,78,84,
+ 69,71,82,73,84,89,95,83,84,82,69,65,77,218,21,70,
+ 73,76,69,95,65,84,84,82,73,66,85,84,69,95,78,79,
+ 82,77,65,76,218,34,70,73,76,69,95,65,84,84,82,73,
+ 66,85,84,69,95,78,79,84,95,67,79,78,84,69,78,84,
+ 95,73,78,68,69,88,69,68,218,28,70,73,76,69,95,65,
+ 84,84,82,73,66,85,84,69,95,78,79,95,83,67,82,85,
+ 66,95,68,65,84,65,218,22,70,73,76,69,95,65,84,84,
+ 82,73,66,85,84,69,95,79,70,70,76,73,78,69,218,23,
+ 70,73,76,69,95,65,84,84,82,73,66,85,84,69,95,82,
+ 69,65,68,79,78,76,89,218,28,70,73,76,69,95,65,84,
+ 84,82,73,66,85,84,69,95,82,69,80,65,82,83,69,95,
+ 80,79,73,78,84,218,26,70,73,76,69,95,65,84,84,82,
+ 73,66,85,84,69,95,83,80,65,82,83,69,95,70,73,76,
+ 69,218,21,70,73,76,69,95,65,84,84,82,73,66,85,84,
+ 69,95,83,89,83,84,69,77,218,24,70,73,76,69,95,65,
+ 84,84,82,73,66,85,84,69,95,84,69,77,80,79,82,65,
+ 82,89,218,22,70,73,76,69,95,65,84,84,82,73,66,85,
+ 84,69,95,86,73,82,84,85,65,76,218,5,95,115,116,97,
+ 116,218,11,73,109,112,111,114,116,69,114,114,111,114,114,13,
+ 0,0,0,114,18,0,0,0,114,16,0,0,0,250,8,60,
+ 109,111,100,117,108,101,62,114,144,0,0,0,1,0,0,0,
+ 115,197,2,0,0,240,3,1,1,1,241,2,3,1,4,240,
+ 14,0,12,13,128,7,216,11,12,128,6,216,11,12,128,6,
+ 216,11,12,128,8,216,11,12,128,6,216,11,12,128,6,216,
+ 11,12,128,7,216,11,12,128,8,216,11,12,128,8,216,11,
+ 12,128,8,242,8,4,1,25,242,12,4,1,27,240,18,0,
+ 12,20,128,7,216,11,19,128,7,216,11,19,128,7,216,11,
+ 19,128,7,216,11,19,128,7,216,11,19,128,7,216,11,19,
+ 128,8,224,11,12,128,8,216,11,12,128,8,216,10,11,128,
+ 7,242,8,2,1,35,242,8,2,1,35,242,8,2,1,35,
+ 242,8,2,1,35,242,8,2,1,35,242,8,2,1,35,242,
+ 8,2,1,36,242,8,2,1,17,242,8,2,1,17,242,8,
+ 2,1,17,240,12,0,11,17,128,7,216,10,16,128,7,216,
+ 10,17,128,7,216,10,16,128,7,216,10,16,128,7,216,11,
+ 17,128,8,216,10,16,128,7,216,10,16,128,7,216,10,16,
+ 128,7,216,10,16,128,7,216,10,16,128,7,216,10,16,128,
+ 7,216,10,16,128,7,216,10,16,128,7,216,10,16,128,7,
+ 216,10,16,128,7,216,10,16,128,7,216,10,16,128,7,216,
+ 10,16,128,7,240,8,0,16,26,128,9,216,15,25,128,12,
+ 216,15,25,128,9,216,15,25,128,9,216,15,25,128,11,216,
+ 16,26,128,13,216,15,25,128,9,216,15,25,128,11,216,15,
+ 25,128,12,216,15,25,128,9,216,15,25,128,11,216,15,25,
+ 128,11,240,8,0,7,14,144,115,208,5,27,216,6,14,144,
+ 115,208,5,27,216,6,13,144,115,208,5,27,216,6,13,144,
+ 115,208,5,27,216,6,13,144,115,208,5,27,216,6,13,144,
+ 115,208,5,27,216,6,13,144,115,208,5,27,240,13,6,5,
+ 29,240,16,0,7,14,144,115,208,5,27,208,4,29,216,6,
+ 13,144,115,208,5,27,208,4,29,216,6,13,136,103,129,111,
+ 144,115,208,5,27,216,6,13,144,115,208,5,27,216,6,13,
+ 144,115,208,5,27,240,5,2,5,29,240,8,0,7,14,144,
+ 115,208,5,27,208,4,29,216,6,13,144,115,208,5,27,208,
+ 4,29,216,6,13,136,103,129,111,144,115,208,5,27,216,6,
+ 13,144,115,208,5,27,216,6,13,144,115,208,5,27,240,5,
+ 2,5,29,240,8,0,7,14,144,115,208,5,27,208,4,29,
+ 216,6,13,144,115,208,5,27,208,4,29,216,6,13,136,103,
+ 129,111,144,115,208,5,27,216,6,13,144,115,208,5,27,216,
+ 6,13,144,115,208,5,27,240,5,2,5,29,240,47,26,19,
+ 2,128,15,242,56,10,1,25,240,32,0,26,28,208,0,22,
+ 216,28,32,208,0,25,216,24,26,208,0,21,216,27,29,208,
+ 0,24,216,27,32,208,0,24,216,24,25,208,0,21,216,34,
+ 39,208,0,31,216,24,27,208,0,21,216,37,41,208,0,34,
+ 216,31,37,208,0,28,216,25,29,208,0,22,216,26,27,208,
+ 0,23,216,31,35,208,0,28,216,29,32,208,0,26,216,24,
+ 25,208,0,21,216,27,30,208,0,24,216,25,30,208,0,22,
+ 240,8,3,1,9,221,4,23,248,216,7,18,242,0,1,1,
+ 9,217,4,8,240,3,1,1,9,250,115,18,0,0,0,196,
+ 10,5,68,16,0,196,16,5,68,24,3,196,23,1,68,24,
+ 3,
+};
diff --git a/contrib/tools/python3/Python/frozen_modules/zipimport.h b/contrib/tools/python3/Python/frozen_modules/zipimport.h
new file mode 100644
index 00000000000..5f2f63046dc
--- /dev/null
+++ b/contrib/tools/python3/Python/frozen_modules/zipimport.h
@@ -0,0 +1,1531 @@
+/* Auto-generated by Programs/_freeze_module.c */
+const unsigned char _Py_M__zipimport[] = {
+ 99,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,
+ 0,0,0,0,0,243,154,1,0,0,151,0,100,0,90,0,
+ 100,1,100,2,108,1,90,2,100,1,100,3,108,1,109,3,
+ 90,3,109,4,90,4,1,0,100,1,100,2,108,5,90,6,
+ 100,1,100,2,108,7,90,7,100,1,100,2,108,8,90,8,
+ 100,1,100,2,108,9,90,9,100,1,100,2,108,10,90,10,
+ 100,1,100,2,108,11,90,11,100,1,100,2,108,12,90,12,
+ 100,4,100,5,103,2,90,13,101,2,106,28,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,14,
+ 101,2,106,30,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,100,6,100,2,26,0,90,16,2,0,
+ 71,0,100,7,132,0,100,4,101,17,171,3,0,0,0,0,
+ 0,0,90,18,105,0,90,19,2,0,101,20,101,10,171,1,
+ 0,0,0,0,0,0,90,21,100,8,90,22,100,9,90,23,
+ 100,10,90,24,2,0,71,0,100,11,132,0,100,5,101,2,
+ 106,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,171,3,0,0,0,0,0,0,90,26,101,14,
+ 100,12,122,0,0,0,100,13,100,13,102,3,101,14,100,14,
+ 122,0,0,0,100,15,100,13,102,3,100,16,100,17,102,4,
+ 90,27,100,18,132,0,90,28,100,19,132,0,90,29,100,20,
+ 132,0,90,30,100,21,132,0,90,31,100,22,90,32,100,15,
+ 97,33,100,23,132,0,90,34,100,24,132,0,90,35,100,25,
+ 132,0,90,36,100,26,132,0,90,37,2,0,101,20,101,37,
+ 106,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,171,1,0,0,0,0,0,0,90,39,100,27,
+ 132,0,90,40,100,28,132,0,90,41,100,29,132,0,90,42,
+ 100,30,132,0,90,43,100,31,132,0,90,44,100,32,132,0,
+ 90,45,121,2,41,33,97,80,2,0,0,122,105,112,105,109,
+ 112,111,114,116,32,112,114,111,118,105,100,101,115,32,115,117,
+ 112,112,111,114,116,32,102,111,114,32,105,109,112,111,114,116,
+ 105,110,103,32,80,121,116,104,111,110,32,109,111,100,117,108,
+ 101,115,32,102,114,111,109,32,90,105,112,32,97,114,99,104,
+ 105,118,101,115,46,10,10,84,104,105,115,32,109,111,100,117,
+ 108,101,32,101,120,112,111,114,116,115,32,116,104,114,101,101,
+ 32,111,98,106,101,99,116,115,58,10,45,32,122,105,112,105,
+ 109,112,111,114,116,101,114,58,32,97,32,99,108,97,115,115,
+ 59,32,105,116,115,32,99,111,110,115,116,114,117,99,116,111,
+ 114,32,116,97,107,101,115,32,97,32,112,97,116,104,32,116,
+ 111,32,97,32,90,105,112,32,97,114,99,104,105,118,101,46,
+ 10,45,32,90,105,112,73,109,112,111,114,116,69,114,114,111,
+ 114,58,32,101,120,99,101,112,116,105,111,110,32,114,97,105,
+ 115,101,100,32,98,121,32,122,105,112,105,109,112,111,114,116,
+ 101,114,32,111,98,106,101,99,116,115,46,32,73,116,39,115,
+ 32,97,10,32,32,115,117,98,99,108,97,115,115,32,111,102,
+ 32,73,109,112,111,114,116,69,114,114,111,114,44,32,115,111,
+ 32,105,116,32,99,97,110,32,98,101,32,99,97,117,103,104,
+ 116,32,97,115,32,73,109,112,111,114,116,69,114,114,111,114,
+ 44,32,116,111,111,46,10,45,32,95,122,105,112,95,100,105,
+ 114,101,99,116,111,114,121,95,99,97,99,104,101,58,32,97,
+ 32,100,105,99,116,44,32,109,97,112,112,105,110,103,32,97,
+ 114,99,104,105,118,101,32,112,97,116,104,115,32,116,111,32,
+ 122,105,112,32,100,105,114,101,99,116,111,114,121,10,32,32,
+ 105,110,102,111,32,100,105,99,116,115,44,32,97,115,32,117,
+ 115,101,100,32,105,110,32,122,105,112,105,109,112,111,114,116,
+ 101,114,46,95,102,105,108,101,115,46,10,10,73,116,32,105,
+ 115,32,117,115,117,97,108,108,121,32,110,111,116,32,110,101,
+ 101,100,101,100,32,116,111,32,117,115,101,32,116,104,101,32,
+ 122,105,112,105,109,112,111,114,116,32,109,111,100,117,108,101,
+ 32,101,120,112,108,105,99,105,116,108,121,59,32,105,116,32,
+ 105,115,10,117,115,101,100,32,98,121,32,116,104,101,32,98,
+ 117,105,108,116,105,110,32,105,109,112,111,114,116,32,109,101,
+ 99,104,97,110,105,115,109,32,102,111,114,32,115,121,115,46,
+ 112,97,116,104,32,105,116,101,109,115,32,116,104,97,116,32,
+ 97,114,101,32,112,97,116,104,115,10,116,111,32,90,105,112,
+ 32,97,114,99,104,105,118,101,115,46,10,233,0,0,0,0,
+ 78,41,2,218,14,95,117,110,112,97,99,107,95,117,105,110,
+ 116,49,54,218,14,95,117,110,112,97,99,107,95,117,105,110,
+ 116,51,50,218,14,90,105,112,73,109,112,111,114,116,69,114,
+ 114,111,114,218,11,122,105,112,105,109,112,111,114,116,101,114,
+ 233,1,0,0,0,99,0,0,0,0,0,0,0,0,0,0,
+ 0,0,1,0,0,0,0,0,0,0,243,12,0,0,0,151,
+ 0,101,0,90,1,100,0,90,2,121,1,41,2,114,4,0,
+ 0,0,78,41,3,218,8,95,95,110,97,109,101,95,95,218,
+ 10,95,95,109,111,100,117,108,101,95,95,218,12,95,95,113,
+ 117,97,108,110,97,109,101,95,95,169,0,243,0,0,0,0,
+ 250,18,60,102,114,111,122,101,110,32,122,105,112,105,109,112,
+ 111,114,116,62,114,4,0,0,0,114,4,0,0,0,34,0,
+ 0,0,115,5,0,0,0,132,0,216,4,8,114,12,0,0,
+ 0,233,22,0,0,0,115,4,0,0,0,80,75,5,6,105,
+ 255,255,0,0,99,0,0,0,0,0,0,0,0,0,0,0,
+ 0,2,0,0,0,0,0,0,0,243,84,0,0,0,151,0,
+ 101,0,90,1,100,0,90,2,100,1,90,3,100,2,132,0,
+ 90,4,100,14,100,4,132,1,90,5,100,5,132,0,90,6,
+ 100,6,132,0,90,7,100,7,132,0,90,8,100,8,132,0,
+ 90,9,100,9,132,0,90,10,100,10,132,0,90,11,100,11,
+ 132,0,90,12,100,12,132,0,90,13,100,13,132,0,90,14,
+ 121,3,41,15,114,5,0,0,0,97,255,1,0,0,122,105,
+ 112,105,109,112,111,114,116,101,114,40,97,114,99,104,105,118,
+ 101,112,97,116,104,41,32,45,62,32,122,105,112,105,109,112,
+ 111,114,116,101,114,32,111,98,106,101,99,116,10,10,32,32,
+ 32,32,67,114,101,97,116,101,32,97,32,110,101,119,32,122,
+ 105,112,105,109,112,111,114,116,101,114,32,105,110,115,116,97,
+ 110,99,101,46,32,39,97,114,99,104,105,118,101,112,97,116,
+ 104,39,32,109,117,115,116,32,98,101,32,97,32,112,97,116,
+ 104,32,116,111,10,32,32,32,32,97,32,122,105,112,102,105,
+ 108,101,44,32,111,114,32,116,111,32,97,32,115,112,101,99,
+ 105,102,105,99,32,112,97,116,104,32,105,110,115,105,100,101,
+ 32,97,32,122,105,112,102,105,108,101,46,32,70,111,114,32,
+ 101,120,97,109,112,108,101,44,32,105,116,32,99,97,110,32,
+ 98,101,10,32,32,32,32,39,47,116,109,112,47,109,121,105,
+ 109,112,111,114,116,46,122,105,112,39,44,32,111,114,32,39,
+ 47,116,109,112,47,109,121,105,109,112,111,114,116,46,122,105,
+ 112,47,109,121,100,105,114,101,99,116,111,114,121,39,44,32,
+ 105,102,32,109,121,100,105,114,101,99,116,111,114,121,32,105,
+ 115,32,97,10,32,32,32,32,118,97,108,105,100,32,100,105,
+ 114,101,99,116,111,114,121,32,105,110,115,105,100,101,32,116,
+ 104,101,32,97,114,99,104,105,118,101,46,10,10,32,32,32,
+ 32,39,90,105,112,73,109,112,111,114,116,69,114,114,111,114,
+ 32,105,115,32,114,97,105,115,101,100,32,105,102,32,39,97,
+ 114,99,104,105,118,101,112,97,116,104,39,32,100,111,101,115,
+ 110,39,116,32,112,111,105,110,116,32,116,111,32,97,32,118,
+ 97,108,105,100,32,90,105,112,10,32,32,32,32,97,114,99,
+ 104,105,118,101,46,10,10,32,32,32,32,84,104,101,32,39,
+ 97,114,99,104,105,118,101,39,32,97,116,116,114,105,98,117,
+ 116,101,32,111,102,32,122,105,112,105,109,112,111,114,116,101,
+ 114,32,111,98,106,101,99,116,115,32,99,111,110,116,97,105,
+ 110,115,32,116,104,101,32,110,97,109,101,32,111,102,32,116,
+ 104,101,10,32,32,32,32,122,105,112,102,105,108,101,32,116,
+ 97,114,103,101,116,101,100,46,10,32,32,32,32,99,2,0,
+ 0,0,0,0,0,0,0,0,0,0,6,0,0,0,3,0,
+ 0,0,243,196,2,0,0,151,0,116,1,0,0,0,0,0,
+ 0,0,0,124,1,116,2,0,0,0,0,0,0,0,0,171,
+ 2,0,0,0,0,0,0,115,23,116,5,0,0,0,0,0,
+ 0,0,0,100,1,116,7,0,0,0,0,0,0,0,0,124,
+ 1,171,1,0,0,0,0,0,0,155,2,157,2,171,1,0,
+ 0,0,0,0,0,130,1,124,1,115,13,116,9,0,0,0,
+ 0,0,0,0,0,100,2,124,1,172,3,171,2,0,0,0,
+ 0,0,0,130,1,116,10,0,0,0,0,0,0,0,0,114,
+ 26,124,1,106,13,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,116,10,0,0,0,0,0,0,0,
+ 0,116,14,0,0,0,0,0,0,0,0,171,2,0,0,0,
+ 0,0,0,125,1,103,0,125,2,9,0,9,0,116,17,0,
+ 0,0,0,0,0,0,0,106,18,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,124,1,171,1,0,
+ 0,0,0,0,0,125,3,124,3,106,20,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,100,4,122,
+ 1,0,0,100,5,107,55,0,0,114,13,116,9,0,0,0,
+ 0,0,0,0,0,100,6,124,1,172,3,171,2,0,0,0,
+ 0,0,0,130,1,9,0,9,0,116,30,0,0,0,0,0,
+ 0,0,0,124,1,25,0,0,0,125,6,124,6,124,0,95,
+ 18,0,0,0,0,0,0,0,0,124,1,124,0,95,19,0,
+ 0,0,0,0,0,0,0,116,17,0,0,0,0,0,0,0,
+ 0,106,40,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,124,2,100,0,100,0,100,7,133,3,25,
+ 0,0,0,142,0,124,0,95,21,0,0,0,0,0,0,0,
+ 0,124,0,106,42,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,114,26,124,0,120,1,106,42,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,116,14,0,0,0,0,0,0,0,0,122,13,0,0,99,
+ 2,95,21,0,0,0,0,0,0,0,0,121,0,121,0,35,
+ 0,116,22,0,0,0,0,0,0,0,0,116,24,0,0,0,
+ 0,0,0,0,0,102,2,36,0,114,64,1,0,116,17,0,
+ 0,0,0,0,0,0,0,106,26,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,124,1,171,1,0,
+ 0,0,0,0,0,92,2,0,0,125,4,125,5,124,4,124,
+ 1,107,40,0,0,114,13,116,9,0,0,0,0,0,0,0,
+ 0,100,6,124,1,172,3,171,2,0,0,0,0,0,0,130,
+ 1,124,4,125,1,124,2,106,29,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,124,5,171,1,0,
+ 0,0,0,0,0,1,0,89,0,110,4,119,0,120,3,89,
+ 0,119,1,140,229,35,0,116,32,0,0,0,0,0,0,0,
+ 0,36,0,114,23,1,0,116,35,0,0,0,0,0,0,0,
+ 0,124,1,171,1,0,0,0,0,0,0,125,6,124,6,116,
+ 30,0,0,0,0,0,0,0,0,124,1,60,0,0,0,89,
+ 0,140,196,119,0,120,3,89,0,119,1,41,8,78,122,18,
+ 101,120,112,101,99,116,101,100,32,115,116,114,44,32,110,111,
+ 116,32,122,21,97,114,99,104,105,118,101,32,112,97,116,104,
+ 32,105,115,32,101,109,112,116,121,169,1,218,4,112,97,116,
+ 104,105,0,240,0,0,105,0,128,0,0,122,14,110,111,116,
+ 32,97,32,90,105,112,32,102,105,108,101,233,255,255,255,255,
+ 41,22,218,10,105,115,105,110,115,116,97,110,99,101,218,3,
+ 115,116,114,218,9,84,121,112,101,69,114,114,111,114,218,4,
+ 116,121,112,101,114,4,0,0,0,218,12,97,108,116,95,112,
+ 97,116,104,95,115,101,112,218,7,114,101,112,108,97,99,101,
+ 218,8,112,97,116,104,95,115,101,112,218,19,95,98,111,111,
+ 116,115,116,114,97,112,95,101,120,116,101,114,110,97,108,218,
+ 10,95,112,97,116,104,95,115,116,97,116,218,7,115,116,95,
+ 109,111,100,101,218,7,79,83,69,114,114,111,114,218,10,86,
+ 97,108,117,101,69,114,114,111,114,218,11,95,112,97,116,104,
+ 95,115,112,108,105,116,218,6,97,112,112,101,110,100,218,20,
+ 95,122,105,112,95,100,105,114,101,99,116,111,114,121,95,99,
+ 97,99,104,101,218,8,75,101,121,69,114,114,111,114,218,15,
+ 95,114,101,97,100,95,100,105,114,101,99,116,111,114,121,218,
+ 6,95,102,105,108,101,115,218,7,97,114,99,104,105,118,101,
+ 218,10,95,112,97,116,104,95,106,111,105,110,218,6,112,114,
+ 101,102,105,120,41,7,218,4,115,101,108,102,114,18,0,0,
+ 0,114,40,0,0,0,218,2,115,116,218,7,100,105,114,110,
+ 97,109,101,218,8,98,97,115,101,110,97,109,101,218,5,102,
+ 105,108,101,115,115,7,0,0,0,32,32,32,32,32,32,32,
+ 114,13,0,0,0,218,8,95,95,105,110,105,116,95,95,122,
+ 20,122,105,112,105,109,112,111,114,116,101,114,46,95,95,105,
+ 110,105,116,95,95,64,0,0,0,115,89,1,0,0,128,0,
+ 220,15,25,152,36,164,3,212,15,36,220,18,27,208,30,48,
+ 180,20,176,100,179,26,176,14,208,28,63,211,18,64,208,12,
+ 64,217,15,19,220,18,32,208,33,56,184,116,212,18,68,208,
+ 12,68,221,11,23,216,19,23,151,60,145,60,164,12,172,104,
+ 211,19,55,136,68,224,17,19,136,6,216,14,18,240,2,15,
+ 13,22,220,21,40,215,21,51,209,21,51,176,68,211,21,57,
+ 144,2,240,22,0,21,23,151,74,145,74,160,24,209,20,41,
+ 168,104,210,19,54,228,26,40,208,41,57,192,4,212,26,69,
+ 208,20,69,216,16,21,240,4,4,9,47,220,20,40,168,20,
+ 209,20,46,136,69,240,8,0,23,28,136,4,140,11,216,23,
+ 27,136,4,140,12,228,22,41,215,22,52,209,22,52,176,102,
+ 185,84,184,114,184,84,177,108,208,22,67,136,4,140,11,216,
+ 11,15,143,59,138,59,216,12,16,143,75,138,75,156,56,209,
+ 12,35,142,75,240,3,0,12,23,248,244,49,0,21,28,156,
+ 90,208,19,40,242,0,7,13,40,244,6,0,37,56,215,36,
+ 67,209,36,67,192,68,211,36,73,209,16,33,144,7,152,24,
+ 216,19,26,152,100,146,63,220,26,40,208,41,57,192,4,212,
+ 26,69,208,20,69,216,23,30,144,4,216,16,22,151,13,145,
+ 13,152,104,214,16,39,240,15,7,13,40,250,240,7,0,15,
+ 19,248,244,40,0,16,24,242,0,2,9,47,220,20,35,160,
+ 68,211,20,41,136,69,216,41,46,212,12,32,160,20,211,12,
+ 38,240,5,2,9,47,250,115,37,0,0,0,193,27,21,67,
+ 44,0,194,17,9,68,63,0,195,44,65,12,68,59,3,196,
+ 58,1,68,59,3,196,63,29,69,31,3,197,30,1,69,31,
+ 3,78,99,3,0,0,0,0,0,0,0,0,0,0,0,5,
+ 0,0,0,3,0,0,0,243,22,1,0,0,151,0,116,1,
+ 0,0,0,0,0,0,0,0,124,0,124,1,171,2,0,0,
+ 0,0,0,0,125,3,124,3,129,24,116,3,0,0,0,0,
+ 0,0,0,0,106,4,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,124,1,124,0,124,3,172,2,
+ 171,3,0,0,0,0,0,0,83,0,116,7,0,0,0,0,
+ 0,0,0,0,124,0,124,1,171,2,0,0,0,0,0,0,
+ 125,4,116,9,0,0,0,0,0,0,0,0,124,0,124,4,
+ 171,2,0,0,0,0,0,0,114,75,124,0,106,10,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 155,0,116,12,0,0,0,0,0,0,0,0,155,0,124,4,
+ 155,0,157,3,125,5,116,3,0,0,0,0,0,0,0,0,
+ 106,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,124,1,100,1,100,3,172,4,171,3,0,0,
+ 0,0,0,0,125,6,124,6,106,16,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,106,19,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 124,5,171,1,0,0,0,0,0,0,1,0,124,6,83,0,
+ 121,1,41,5,122,107,67,114,101,97,116,101,32,97,32,77,
+ 111,100,117,108,101,83,112,101,99,32,102,111,114,32,116,104,
+ 101,32,115,112,101,99,105,102,105,101,100,32,109,111,100,117,
+ 108,101,46,10,10,32,32,32,32,32,32,32,32,82,101,116,
+ 117,114,110,115,32,78,111,110,101,32,105,102,32,116,104,101,
+ 32,109,111,100,117,108,101,32,99,97,110,110,111,116,32,98,
+ 101,32,102,111,117,110,100,46,10,32,32,32,32,32,32,32,
+ 32,78,41,1,218,10,105,115,95,112,97,99,107,97,103,101,
+ 84,41,3,218,4,110,97,109,101,218,6,108,111,97,100,101,
+ 114,114,48,0,0,0,41,10,218,16,95,103,101,116,95,109,
+ 111,100,117,108,101,95,105,110,102,111,218,10,95,98,111,111,
+ 116,115,116,114,97,112,218,16,115,112,101,99,95,102,114,111,
+ 109,95,108,111,97,100,101,114,218,16,95,103,101,116,95,109,
+ 111,100,117,108,101,95,112,97,116,104,218,7,95,105,115,95,
+ 100,105,114,114,38,0,0,0,114,26,0,0,0,218,10,77,
+ 111,100,117,108,101,83,112,101,99,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,114,33,0,0,0,41,7,114,41,0,0,
+ 0,218,8,102,117,108,108,110,97,109,101,218,6,116,97,114,
+ 103,101,116,218,11,109,111,100,117,108,101,95,105,110,102,111,
+ 218,7,109,111,100,112,97,116,104,114,18,0,0,0,218,4,
+ 115,112,101,99,115,7,0,0,0,32,32,32,32,32,32,32,
+ 114,13,0,0,0,218,9,102,105,110,100,95,115,112,101,99,
+ 122,21,122,105,112,105,109,112,111,114,116,101,114,46,102,105,
+ 110,100,95,115,112,101,99,104,0,0,0,115,142,0,0,0,
+ 128,0,244,10,0,23,39,160,116,168,88,211,22,54,136,11,
+ 216,11,22,208,11,34,220,19,29,215,19,46,209,19,46,168,
+ 120,184,20,200,43,212,19,86,208,12,86,244,14,0,23,39,
+ 160,116,168,88,211,22,54,136,71,220,15,22,144,116,152,87,
+ 212,15,37,240,8,0,27,31,159,44,153,44,152,30,172,8,
+ 160,122,176,39,176,25,208,23,59,144,4,220,23,33,215,23,
+ 44,209,23,44,176,40,192,52,216,56,60,244,3,1,24,62,
+ 144,4,224,16,20,215,16,47,209,16,47,215,16,54,209,16,
+ 54,176,116,212,16,60,216,23,27,144,11,224,23,27,114,12,
+ 0,0,0,99,2,0,0,0,0,0,0,0,0,0,0,0,
+ 4,0,0,0,3,0,0,0,243,38,0,0,0,151,0,116,
+ 1,0,0,0,0,0,0,0,0,124,0,124,1,171,2,0,
+ 0,0,0,0,0,92,3,0,0,125,2,125,3,125,4,124,
+ 2,83,0,41,1,122,166,103,101,116,95,99,111,100,101,40,
+ 102,117,108,108,110,97,109,101,41,32,45,62,32,99,111,100,
+ 101,32,111,98,106,101,99,116,46,10,10,32,32,32,32,32,
+ 32,32,32,82,101,116,117,114,110,32,116,104,101,32,99,111,
+ 100,101,32,111,98,106,101,99,116,32,102,111,114,32,116,104,
+ 101,32,115,112,101,99,105,102,105,101,100,32,109,111,100,117,
+ 108,101,46,32,82,97,105,115,101,32,90,105,112,73,109,112,
+ 111,114,116,69,114,114,111,114,10,32,32,32,32,32,32,32,
+ 32,105,102,32,116,104,101,32,109,111,100,117,108,101,32,99,
+ 111,117,108,100,110,39,116,32,98,101,32,105,109,112,111,114,
+ 116,101,100,46,10,32,32,32,32,32,32,32,32,169,1,218,
+ 16,95,103,101,116,95,109,111,100,117,108,101,95,99,111,100,
+ 101,169,5,114,41,0,0,0,114,58,0,0,0,218,4,99,
+ 111,100,101,218,9,105,115,112,97,99,107,97,103,101,114,61,
+ 0,0,0,115,5,0,0,0,32,32,32,32,32,114,13,0,
+ 0,0,218,8,103,101,116,95,99,111,100,101,122,20,122,105,
+ 112,105,109,112,111,114,116,101,114,46,103,101,116,95,99,111,
+ 100,101,131,0,0,0,115,28,0,0,0,128,0,244,12,0,
+ 36,52,176,68,184,40,211,35,67,209,8,32,136,4,136,105,
+ 152,23,216,15,19,136,11,114,12,0,0,0,99,2,0,0,
+ 0,0,0,0,0,0,0,0,0,6,0,0,0,3,0,0,
+ 0,243,72,1,0,0,151,0,116,0,0,0,0,0,0,0,
+ 0,0,114,26,124,1,106,3,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,116,0,0,0,0,0,
+ 0,0,0,0,116,4,0,0,0,0,0,0,0,0,171,2,
+ 0,0,0,0,0,0,125,1,124,1,125,2,124,1,106,7,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,124,0,106,8,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,116,4,0,0,0,0,0,0,
+ 0,0,122,0,0,0,171,1,0,0,0,0,0,0,114,31,
+ 124,1,116,11,0,0,0,0,0,0,0,0,124,0,106,8,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,116,4,0,0,0,0,0,0,0,0,122,0,0,0,
+ 171,1,0,0,0,0,0,0,100,1,26,0,125,2,9,0,
+ 124,0,106,12,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,124,2,25,0,0,0,125,3,116,19,
+ 0,0,0,0,0,0,0,0,124,0,106,8,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,3,
+ 171,2,0,0,0,0,0,0,83,0,35,0,116,14,0,0,
+ 0,0,0,0,0,0,36,0,114,14,1,0,116,17,0,0,
+ 0,0,0,0,0,0,100,2,100,3,124,2,171,3,0,0,
+ 0,0,0,0,130,1,119,0,120,3,89,0,119,1,41,4,
+ 122,154,103,101,116,95,100,97,116,97,40,112,97,116,104,110,
+ 97,109,101,41,32,45,62,32,115,116,114,105,110,103,32,119,
+ 105,116,104,32,102,105,108,101,32,100,97,116,97,46,10,10,
+ 32,32,32,32,32,32,32,32,82,101,116,117,114,110,32,116,
+ 104,101,32,100,97,116,97,32,97,115,115,111,99,105,97,116,
+ 101,100,32,119,105,116,104,32,39,112,97,116,104,110,97,109,
+ 101,39,46,32,82,97,105,115,101,32,79,83,69,114,114,111,
+ 114,32,105,102,10,32,32,32,32,32,32,32,32,116,104,101,
+ 32,102,105,108,101,32,119,97,115,110,39,116,32,102,111,117,
+ 110,100,46,10,32,32,32,32,32,32,32,32,78,114,1,0,
+ 0,0,218,0,41,10,114,24,0,0,0,114,25,0,0,0,
+ 114,26,0,0,0,218,10,115,116,97,114,116,115,119,105,116,
+ 104,114,38,0,0,0,218,3,108,101,110,114,37,0,0,0,
+ 114,35,0,0,0,114,30,0,0,0,218,9,95,103,101,116,
+ 95,100,97,116,97,41,4,114,41,0,0,0,218,8,112,97,
+ 116,104,110,97,109,101,218,3,107,101,121,218,9,116,111,99,
+ 95,101,110,116,114,121,115,4,0,0,0,32,32,32,32,114,
+ 13,0,0,0,218,8,103,101,116,95,100,97,116,97,122,20,
+ 122,105,112,105,109,112,111,114,116,101,114,46,103,101,116,95,
+ 100,97,116,97,141,0,0,0,115,150,0,0,0,128,0,245,
+ 12,0,12,24,216,23,31,215,23,39,209,23,39,172,12,180,
+ 104,211,23,63,136,72,224,14,22,136,3,216,11,19,215,11,
+ 30,209,11,30,152,116,159,124,153,124,172,104,209,31,54,212,
+ 11,55,216,18,26,156,51,152,116,159,124,153,124,172,104,209,
+ 31,54,211,27,55,208,27,56,208,18,57,136,67,240,4,3,
+ 9,38,216,24,28,159,11,153,11,160,67,209,24,40,136,73,
+ 244,6,0,16,25,152,20,159,28,153,28,160,121,211,15,49,
+ 208,8,49,248,244,5,0,16,24,242,0,1,9,38,220,18,
+ 25,152,33,152,82,160,19,211,18,37,208,12,37,240,3,1,
+ 9,38,250,115,12,0,0,0,193,37,15,66,10,0,194,10,
+ 23,66,33,3,99,2,0,0,0,0,0,0,0,0,0,0,
+ 0,4,0,0,0,3,0,0,0,243,38,0,0,0,151,0,
+ 116,1,0,0,0,0,0,0,0,0,124,0,124,1,171,2,
+ 0,0,0,0,0,0,92,3,0,0,125,2,125,3,125,4,
+ 124,4,83,0,41,1,122,165,103,101,116,95,102,105,108,101,
+ 110,97,109,101,40,102,117,108,108,110,97,109,101,41,32,45,
+ 62,32,102,105,108,101,110,97,109,101,32,115,116,114,105,110,
+ 103,46,10,10,32,32,32,32,32,32,32,32,82,101,116,117,
+ 114,110,32,116,104,101,32,102,105,108,101,110,97,109,101,32,
+ 102,111,114,32,116,104,101,32,115,112,101,99,105,102,105,101,
+ 100,32,109,111,100,117,108,101,32,111,114,32,114,97,105,115,
+ 101,32,90,105,112,73,109,112,111,114,116,69,114,114,111,114,
+ 10,32,32,32,32,32,32,32,32,105,102,32,105,116,32,99,
+ 111,117,108,100,110,39,116,32,98,101,32,105,109,112,111,114,
+ 116,101,100,46,10,32,32,32,32,32,32,32,32,114,65,0,
+ 0,0,114,67,0,0,0,115,5,0,0,0,32,32,32,32,
+ 32,114,13,0,0,0,218,12,103,101,116,95,102,105,108,101,
+ 110,97,109,101,122,24,122,105,112,105,109,112,111,114,116,101,
+ 114,46,103,101,116,95,102,105,108,101,110,97,109,101,162,0,
+ 0,0,115,28,0,0,0,128,0,244,16,0,36,52,176,68,
+ 184,40,211,35,67,209,8,32,136,4,136,105,152,23,216,15,
+ 22,136,14,114,12,0,0,0,99,2,0,0,0,0,0,0,
+ 0,0,0,0,0,4,0,0,0,3,0,0,0,243,24,1,
+ 0,0,151,0,116,1,0,0,0,0,0,0,0,0,124,0,
+ 124,1,171,2,0,0,0,0,0,0,125,2,124,2,128,16,
+ 116,3,0,0,0,0,0,0,0,0,100,2,124,1,155,2,
+ 157,2,124,1,172,3,171,2,0,0,0,0,0,0,130,1,
+ 116,5,0,0,0,0,0,0,0,0,124,0,124,1,171,2,
+ 0,0,0,0,0,0,125,3,124,2,114,23,116,7,0,0,
+ 0,0,0,0,0,0,106,8,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,124,3,100,4,171,2,
+ 0,0,0,0,0,0,125,4,110,5,124,3,155,0,100,5,
+ 157,2,125,4,9,0,124,0,106,10,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,124,4,25,0,
+ 0,0,125,5,116,15,0,0,0,0,0,0,0,0,124,0,
+ 106,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,124,5,171,2,0,0,0,0,0,0,106,19,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,171,0,0,0,0,0,0,0,83,0,35,0,116,12,
+ 0,0,0,0,0,0,0,0,36,0,114,3,1,0,89,0,
+ 121,1,119,0,120,3,89,0,119,1,41,6,122,253,103,101,
+ 116,95,115,111,117,114,99,101,40,102,117,108,108,110,97,109,
+ 101,41,32,45,62,32,115,111,117,114,99,101,32,115,116,114,
+ 105,110,103,46,10,10,32,32,32,32,32,32,32,32,82,101,
+ 116,117,114,110,32,116,104,101,32,115,111,117,114,99,101,32,
+ 99,111,100,101,32,102,111,114,32,116,104,101,32,115,112,101,
+ 99,105,102,105,101,100,32,109,111,100,117,108,101,46,32,82,
+ 97,105,115,101,32,90,105,112,73,109,112,111,114,116,69,114,
+ 114,111,114,10,32,32,32,32,32,32,32,32,105,102,32,116,
+ 104,101,32,109,111,100,117,108,101,32,99,111,117,108,100,110,
+ 39,116,32,98,101,32,102,111,117,110,100,44,32,114,101,116,
+ 117,114,110,32,78,111,110,101,32,105,102,32,116,104,101,32,
+ 97,114,99,104,105,118,101,32,100,111,101,115,10,32,32,32,
+ 32,32,32,32,32,99,111,110,116,97,105,110,32,116,104,101,
+ 32,109,111,100,117,108,101,44,32,98,117,116,32,104,97,115,
+ 32,110,111,32,115,111,117,114,99,101,32,102,111,114,32,105,
+ 116,46,10,32,32,32,32,32,32,32,32,78,250,18,99,97,
+ 110,39,116,32,102,105,110,100,32,109,111,100,117,108,101,32,
+ 169,1,114,49,0,0,0,250,11,95,95,105,110,105,116,95,
+ 95,46,112,121,250,3,46,112,121,41,10,114,51,0,0,0,
+ 114,4,0,0,0,114,54,0,0,0,114,27,0,0,0,114,
+ 39,0,0,0,114,37,0,0,0,114,35,0,0,0,114,75,
+ 0,0,0,114,38,0,0,0,218,6,100,101,99,111,100,101,
+ 41,6,114,41,0,0,0,114,58,0,0,0,218,2,109,105,
+ 114,18,0,0,0,218,8,102,117,108,108,112,97,116,104,114,
+ 78,0,0,0,115,6,0,0,0,32,32,32,32,32,32,114,
+ 13,0,0,0,218,10,103,101,116,95,115,111,117,114,99,101,
+ 122,22,122,105,112,105,109,112,111,114,116,101,114,46,103,101,
+ 116,95,115,111,117,114,99,101,174,0,0,0,115,153,0,0,
+ 0,128,0,244,14,0,14,30,152,100,160,72,211,13,45,136,
+ 2,216,11,13,136,58,220,18,32,208,35,53,176,104,176,92,
+ 208,33,66,200,24,212,18,82,208,12,82,228,15,31,160,4,
+ 160,104,211,15,47,136,4,217,11,13,220,23,42,215,23,53,
+ 209,23,53,176,100,184,77,211,23,74,137,72,224,26,30,152,
+ 22,152,115,144,124,136,72,240,4,4,9,24,216,24,28,159,
+ 11,153,11,160,72,209,24,45,136,73,244,8,0,16,25,152,
+ 20,159,28,153,28,160,121,211,15,49,215,15,56,209,15,56,
+ 211,15,58,208,8,58,248,244,7,0,16,24,242,0,2,9,
+ 24,225,19,23,240,5,2,9,24,250,115,18,0,0,0,193,
+ 10,15,65,61,0,193,61,9,66,9,3,194,8,1,66,9,
+ 3,99,2,0,0,0,0,0,0,0,0,0,0,0,4,0,
+ 0,0,3,0,0,0,243,66,0,0,0,151,0,116,1,0,
+ 0,0,0,0,0,0,0,124,0,124,1,171,2,0,0,0,
+ 0,0,0,125,2,124,2,128,16,116,3,0,0,0,0,0,
+ 0,0,0,100,1,124,1,155,2,157,2,124,1,172,2,171,
+ 2,0,0,0,0,0,0,130,1,124,2,83,0,41,3,122,
+ 171,105,115,95,112,97,99,107,97,103,101,40,102,117,108,108,
+ 110,97,109,101,41,32,45,62,32,98,111,111,108,46,10,10,
+ 32,32,32,32,32,32,32,32,82,101,116,117,114,110,32,84,
+ 114,117,101,32,105,102,32,116,104,101,32,109,111,100,117,108,
+ 101,32,115,112,101,99,105,102,105,101,100,32,98,121,32,102,
+ 117,108,108,110,97,109,101,32,105,115,32,97,32,112,97,99,
+ 107,97,103,101,46,10,32,32,32,32,32,32,32,32,82,97,
+ 105,115,101,32,90,105,112,73,109,112,111,114,116,69,114,114,
+ 111,114,32,105,102,32,116,104,101,32,109,111,100,117,108,101,
+ 32,99,111,117,108,100,110,39,116,32,98,101,32,102,111,117,
+ 110,100,46,10,32,32,32,32,32,32,32,32,114,83,0,0,
+ 0,114,84,0,0,0,41,2,114,51,0,0,0,114,4,0,
+ 0,0,41,3,114,41,0,0,0,114,58,0,0,0,114,88,
+ 0,0,0,115,3,0,0,0,32,32,32,114,13,0,0,0,
+ 114,48,0,0,0,122,22,122,105,112,105,109,112,111,114,116,
+ 101,114,46,105,115,95,112,97,99,107,97,103,101,200,0,0,
+ 0,115,47,0,0,0,128,0,244,12,0,14,30,152,100,160,
+ 72,211,13,45,136,2,216,11,13,136,58,220,18,32,208,35,
+ 53,176,104,176,92,208,33,66,200,24,212,18,82,208,12,82,
+ 216,15,17,136,9,114,12,0,0,0,99,2,0,0,0,0,
+ 0,0,0,0,0,0,0,6,0,0,0,3,0,0,0,243,
+ 208,2,0,0,151,0,100,1,125,2,116,1,0,0,0,0,
+ 0,0,0,0,106,2,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,124,2,116,4,0,0,0,0,
+ 0,0,0,0,171,2,0,0,0,0,0,0,1,0,116,7,
+ 0,0,0,0,0,0,0,0,124,0,124,1,171,2,0,0,
+ 0,0,0,0,92,3,0,0,125,3,125,4,125,5,116,8,
+ 0,0,0,0,0,0,0,0,106,10,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,106,13,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 124,1,171,1,0,0,0,0,0,0,125,6,124,6,129,16,
+ 116,15,0,0,0,0,0,0,0,0,124,6,116,16,0,0,
+ 0,0,0,0,0,0,171,2,0,0,0,0,0,0,115,30,
+ 116,17,0,0,0,0,0,0,0,0,124,1,171,1,0,0,
+ 0,0,0,0,125,6,124,6,116,8,0,0,0,0,0,0,
+ 0,0,106,10,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,124,1,60,0,0,0,124,0,124,6,
+ 95,9,0,0,0,0,0,0,0,0,9,0,124,4,114,52,
+ 116,21,0,0,0,0,0,0,0,0,124,0,124,1,171,2,
+ 0,0,0,0,0,0,125,7,116,23,0,0,0,0,0,0,
+ 0,0,106,24,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,124,0,106,26,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,124,7,171,2,
+ 0,0,0,0,0,0,125,8,124,8,103,1,124,6,95,14,
+ 0,0,0,0,0,0,0,0,116,31,0,0,0,0,0,0,
+ 0,0,124,6,100,2,171,2,0,0,0,0,0,0,115,11,
+ 116,32,0,0,0,0,0,0,0,0,124,6,95,16,0,0,
+ 0,0,0,0,0,0,116,23,0,0,0,0,0,0,0,0,
+ 106,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,124,6,106,36,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,124,1,124,5,171,3,
+ 0,0,0,0,0,0,1,0,116,39,0,0,0,0,0,0,
+ 0,0,124,3,124,6,106,36,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,171,2,0,0,0,0,
+ 0,0,1,0,9,0,116,8,0,0,0,0,0,0,0,0,
+ 106,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,124,1,25,0,0,0,125,6,116,45,0,0,
+ 0,0,0,0,0,0,106,46,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,100,5,124,1,124,5,
+ 171,3,0,0,0,0,0,0,1,0,124,6,83,0,35,0,
+ 1,0,116,8,0,0,0,0,0,0,0,0,106,10,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 124,1,61,0,130,0,120,3,89,0,119,1,35,0,116,40,
+ 0,0,0,0,0,0,0,0,36,0,114,16,1,0,116,43,
+ 0,0,0,0,0,0,0,0,100,3,124,1,155,2,100,4,
+ 157,3,171,1,0,0,0,0,0,0,130,1,119,0,120,3,
+ 89,0,119,1,41,6,97,64,1,0,0,108,111,97,100,95,
+ 109,111,100,117,108,101,40,102,117,108,108,110,97,109,101,41,
+ 32,45,62,32,109,111,100,117,108,101,46,10,10,32,32,32,
+ 32,32,32,32,32,76,111,97,100,32,116,104,101,32,109,111,
+ 100,117,108,101,32,115,112,101,99,105,102,105,101,100,32,98,
+ 121,32,39,102,117,108,108,110,97,109,101,39,46,32,39,102,
+ 117,108,108,110,97,109,101,39,32,109,117,115,116,32,98,101,
+ 32,116,104,101,10,32,32,32,32,32,32,32,32,102,117,108,
+ 108,121,32,113,117,97,108,105,102,105,101,100,32,40,100,111,
+ 116,116,101,100,41,32,109,111,100,117,108,101,32,110,97,109,
+ 101,46,32,73,116,32,114,101,116,117,114,110,115,32,116,104,
+ 101,32,105,109,112,111,114,116,101,100,10,32,32,32,32,32,
+ 32,32,32,109,111,100,117,108,101,44,32,111,114,32,114,97,
+ 105,115,101,115,32,90,105,112,73,109,112,111,114,116,69,114,
+ 114,111,114,32,105,102,32,105,116,32,99,111,117,108,100,32,
+ 110,111,116,32,98,101,32,105,109,112,111,114,116,101,100,46,
+ 10,10,32,32,32,32,32,32,32,32,68,101,112,114,101,99,
+ 97,116,101,100,32,115,105,110,99,101,32,80,121,116,104,111,
+ 110,32,51,46,49,48,46,32,85,115,101,32,101,120,101,99,
+ 95,109,111,100,117,108,101,40,41,32,105,110,115,116,101,97,
+ 100,46,10,32,32,32,32,32,32,32,32,122,114,122,105,112,
+ 105,109,112,111,114,116,46,122,105,112,105,109,112,111,114,116,
+ 101,114,46,108,111,97,100,95,109,111,100,117,108,101,40,41,
+ 32,105,115,32,100,101,112,114,101,99,97,116,101,100,32,97,
+ 110,100,32,115,108,97,116,101,100,32,102,111,114,32,114,101,
+ 109,111,118,97,108,32,105,110,32,80,121,116,104,111,110,32,
+ 51,46,49,50,59,32,117,115,101,32,101,120,101,99,95,109,
+ 111,100,117,108,101,40,41,32,105,110,115,116,101,97,100,218,
+ 12,95,95,98,117,105,108,116,105,110,115,95,95,122,14,76,
+ 111,97,100,101,100,32,109,111,100,117,108,101,32,122,25,32,
+ 110,111,116,32,102,111,117,110,100,32,105,110,32,115,121,115,
+ 46,109,111,100,117,108,101,115,122,30,105,109,112,111,114,116,
+ 32,123,125,32,35,32,108,111,97,100,101,100,32,102,114,111,
+ 109,32,90,105,112,32,123,125,41,24,218,9,95,119,97,114,
+ 110,105,110,103,115,218,4,119,97,114,110,218,18,68,101,112,
+ 114,101,99,97,116,105,111,110,87,97,114,110,105,110,103,114,
+ 66,0,0,0,218,3,115,121,115,218,7,109,111,100,117,108,
+ 101,115,218,3,103,101,116,114,20,0,0,0,218,12,95,109,
+ 111,100,117,108,101,95,116,121,112,101,218,10,95,95,108,111,
+ 97,100,101,114,95,95,114,54,0,0,0,114,27,0,0,0,
+ 114,39,0,0,0,114,38,0,0,0,218,8,95,95,112,97,
+ 116,104,95,95,218,7,104,97,115,97,116,116,114,114,93,0,
+ 0,0,218,14,95,102,105,120,95,117,112,95,109,111,100,117,
+ 108,101,218,8,95,95,100,105,99,116,95,95,218,4,101,120,
+ 101,99,114,35,0,0,0,218,11,73,109,112,111,114,116,69,
+ 114,114,111,114,114,52,0,0,0,218,16,95,118,101,114,98,
+ 111,115,101,95,109,101,115,115,97,103,101,41,9,114,41,0,
+ 0,0,114,58,0,0,0,218,3,109,115,103,114,68,0,0,
+ 0,114,69,0,0,0,114,61,0,0,0,218,3,109,111,100,
+ 114,18,0,0,0,114,89,0,0,0,115,9,0,0,0,32,
+ 32,32,32,32,32,32,32,32,114,13,0,0,0,218,11,108,
+ 111,97,100,95,109,111,100,117,108,101,122,23,122,105,112,105,
+ 109,112,111,114,116,101,114,46,108,111,97,100,95,109,111,100,
+ 117,108,101,213,0,0,0,115,66,1,0,0,128,0,240,18,
+ 1,16,67,1,136,3,228,8,17,143,14,137,14,144,115,212,
+ 28,46,212,8,47,220,35,51,176,68,184,40,211,35,67,209,
+ 8,32,136,4,136,105,152,23,220,14,17,143,107,137,107,143,
+ 111,137,111,152,104,211,14,39,136,3,216,11,14,136,59,156,
+ 106,168,19,172,108,212,30,59,220,18,30,152,120,211,18,40,
+ 136,67,216,36,39,140,67,143,75,137,75,152,8,209,12,33,
+ 216,25,29,136,3,140,14,240,4,14,9,18,217,15,24,244,
+ 6,0,24,40,168,4,168,104,211,23,55,144,4,220,27,46,
+ 215,27,57,209,27,57,184,36,191,44,185,44,200,4,211,27,
+ 77,144,8,216,32,40,152,122,144,3,148,12,228,19,26,152,
+ 51,160,14,212,19,47,220,35,47,144,3,212,16,32,220,12,
+ 31,215,12,46,209,12,46,168,115,175,124,169,124,184,88,192,
+ 119,212,12,79,220,12,16,144,20,144,115,151,124,145,124,212,
+ 12,36,240,10,3,9,86,1,220,18,21,151,43,145,43,152,
+ 104,209,18,39,136,67,244,6,0,9,19,215,8,35,209,8,
+ 35,208,36,68,192,104,208,80,87,212,8,88,216,15,18,136,
+ 10,248,240,19,2,9,18,220,16,19,151,11,145,11,152,72,
+ 208,16,37,216,12,17,251,244,8,0,16,24,242,0,1,9,
+ 86,1,220,18,29,160,14,168,120,168,108,208,58,83,208,30,
+ 84,211,18,85,208,12,85,240,3,1,9,86,1,250,115,25,
+ 0,0,0,194,4,66,4,68,53,0,196,9,19,69,12,0,
+ 196,53,20,69,9,3,197,12,25,69,37,3,99,2,0,0,
+ 0,0,0,0,0,0,0,0,0,4,0,0,0,3,0,0,
+ 0,243,102,0,0,0,151,0,9,0,124,0,106,1,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 124,1,171,1,0,0,0,0,0,0,115,1,121,1,9,0,
+ 100,2,100,3,108,2,109,3,125,2,1,0,2,0,124,2,
+ 124,0,124,1,171,2,0,0,0,0,0,0,83,0,35,0,
+ 116,2,0,0,0,0,0,0,0,0,36,0,114,3,1,0,
+ 89,0,121,1,119,0,120,3,89,0,119,1,41,4,122,204,
+ 82,101,116,117,114,110,32,116,104,101,32,82,101,115,111,117,
+ 114,99,101,82,101,97,100,101,114,32,102,111,114,32,97,32,
+ 112,97,99,107,97,103,101,32,105,110,32,97,32,122,105,112,
+ 32,102,105,108,101,46,10,10,32,32,32,32,32,32,32,32,
+ 73,102,32,39,102,117,108,108,110,97,109,101,39,32,105,115,
+ 32,97,32,112,97,99,107,97,103,101,32,119,105,116,104,105,
+ 110,32,116,104,101,32,122,105,112,32,102,105,108,101,44,32,
+ 114,101,116,117,114,110,32,116,104,101,10,32,32,32,32,32,
+ 32,32,32,39,82,101,115,111,117,114,99,101,82,101,97,100,
+ 101,114,39,32,111,98,106,101,99,116,32,102,111,114,32,116,
+ 104,101,32,112,97,99,107,97,103,101,46,32,32,79,116,104,
+ 101,114,119,105,115,101,32,114,101,116,117,114,110,32,78,111,
+ 110,101,46,10,32,32,32,32,32,32,32,32,78,114,1,0,
+ 0,0,41,1,218,9,90,105,112,82,101,97,100,101,114,41,
+ 4,114,48,0,0,0,114,4,0,0,0,218,17,105,109,112,
+ 111,114,116,108,105,98,46,114,101,97,100,101,114,115,114,113,
+ 0,0,0,41,3,114,41,0,0,0,114,58,0,0,0,114,
+ 113,0,0,0,115,3,0,0,0,32,32,32,114,13,0,0,
+ 0,218,19,103,101,116,95,114,101,115,111,117,114,99,101,95,
+ 114,101,97,100,101,114,122,31,122,105,112,105,109,112,111,114,
+ 116,101,114,46,103,101,116,95,114,101,115,111,117,114,99,101,
+ 95,114,101,97,100,101,114,0,1,0,0,115,65,0,0,0,
+ 128,0,240,12,4,9,24,216,19,23,151,63,145,63,160,56,
+ 212,19,44,216,23,27,240,3,0,20,45,245,8,0,9,48,
+ 217,15,24,152,20,152,120,211,15,40,208,8,40,248,244,7,
+ 0,16,30,242,0,1,9,24,217,19,23,240,3,1,9,24,
+ 250,115,12,0,0,0,130,17,36,0,164,9,48,3,175,1,
+ 48,3,99,1,0,0,0,0,0,0,0,0,0,0,0,5,
+ 0,0,0,3,0,0,0,243,224,0,0,0,151,0,9,0,
+ 116,1,0,0,0,0,0,0,0,0,124,0,106,2,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 171,1,0,0,0,0,0,0,124,0,95,2,0,0,0,0,
+ 0,0,0,0,124,0,106,4,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,116,6,0,0,0,0,
+ 0,0,0,0,124,0,106,2,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,60,0,0,0,121,1,
+ 35,0,116,8,0,0,0,0,0,0,0,0,36,0,114,42,
+ 1,0,116,6,0,0,0,0,0,0,0,0,106,11,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 124,0,106,2,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,100,1,171,2,0,0,0,0,0,0,
+ 1,0,105,0,124,0,95,2,0,0,0,0,0,0,0,0,
+ 89,0,121,1,119,0,120,3,89,0,119,1,41,2,122,41,
+ 82,101,108,111,97,100,32,116,104,101,32,102,105,108,101,32,
+ 100,97,116,97,32,111,102,32,116,104,101,32,97,114,99,104,
+ 105,118,101,32,112,97,116,104,46,78,41,6,114,36,0,0,
+ 0,114,38,0,0,0,114,37,0,0,0,114,34,0,0,0,
+ 114,4,0,0,0,218,3,112,111,112,169,1,114,41,0,0,
+ 0,115,1,0,0,0,32,114,13,0,0,0,218,17,105,110,
+ 118,97,108,105,100,97,116,101,95,99,97,99,104,101,115,122,
+ 29,122,105,112,105,109,112,111,114,116,101,114,46,105,110,118,
+ 97,108,105,100,97,116,101,95,99,97,99,104,101,115,15,1,
+ 0,0,115,84,0,0,0,128,0,240,4,5,9,29,220,26,
+ 41,168,36,175,44,169,44,211,26,55,136,68,140,75,216,49,
+ 53,183,27,177,27,212,12,32,160,20,167,28,161,28,210,12,
+ 46,248,220,15,29,242,0,2,9,29,220,12,32,215,12,36,
+ 209,12,36,160,84,167,92,161,92,176,52,212,12,56,216,26,
+ 28,136,68,142,75,240,5,2,9,29,250,115,15,0,0,0,
+ 130,55,58,0,186,48,65,45,3,193,44,1,65,45,3,99,
+ 1,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,
+ 3,0,0,0,243,70,0,0,0,151,0,100,1,124,0,106,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,155,0,116,2,0,0,0,0,0,0,0,0,155,
+ 0,124,0,106,4,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,155,0,100,2,157,5,83,0,41,
+ 3,78,122,21,60,122,105,112,105,109,112,111,114,116,101,114,
+ 32,111,98,106,101,99,116,32,34,122,2,34,62,41,3,114,
+ 38,0,0,0,114,26,0,0,0,114,40,0,0,0,114,118,
+ 0,0,0,115,1,0,0,0,32,114,13,0,0,0,218,8,
+ 95,95,114,101,112,114,95,95,122,20,122,105,112,105,109,112,
+ 111,114,116,101,114,46,95,95,114,101,112,114,95,95,25,1,
+ 0,0,115,33,0,0,0,128,0,216,17,38,160,116,167,124,
+ 161,124,160,110,180,88,176,74,184,116,191,123,185,123,184,109,
+ 200,50,208,15,78,208,8,78,114,12,0,0,0,169,1,78,
+ 41,15,114,8,0,0,0,114,9,0,0,0,114,10,0,0,
+ 0,218,7,95,95,100,111,99,95,95,114,46,0,0,0,114,
+ 63,0,0,0,114,70,0,0,0,114,79,0,0,0,114,81,
+ 0,0,0,114,90,0,0,0,114,48,0,0,0,114,111,0,
+ 0,0,114,115,0,0,0,114,119,0,0,0,114,121,0,0,
+ 0,114,11,0,0,0,114,12,0,0,0,114,13,0,0,0,
+ 114,5,0,0,0,114,5,0,0,0,46,0,0,0,115,65,
+ 0,0,0,132,0,241,2,12,5,8,242,34,37,5,36,243,
+ 80,1,25,5,28,242,54,7,5,20,242,20,17,5,50,242,
+ 42,9,5,23,242,24,22,5,59,242,52,9,5,18,242,26,
+ 40,5,19,242,86,1,12,5,41,242,30,7,5,29,243,20,
+ 1,5,79,1,114,12,0,0,0,122,12,95,95,105,110,105,
+ 116,95,95,46,112,121,99,84,114,85,0,0,0,70,41,3,
+ 122,4,46,112,121,99,84,70,41,3,114,86,0,0,0,70,
+ 70,99,2,0,0,0,0,0,0,0,0,0,0,0,4,0,
+ 0,0,3,0,0,0,243,68,0,0,0,151,0,124,0,106,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,124,1,106,3,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,100,1,171,1,0,0,0,
+ 0,0,0,100,2,25,0,0,0,122,0,0,0,83,0,41,
+ 3,78,250,1,46,233,2,0,0,0,41,2,114,40,0,0,
+ 0,218,10,114,112,97,114,116,105,116,105,111,110,41,2,114,
+ 41,0,0,0,114,58,0,0,0,115,2,0,0,0,32,32,
+ 114,13,0,0,0,114,54,0,0,0,114,54,0,0,0,43,
+ 1,0,0,115,33,0,0,0,128,0,216,11,15,143,59,137,
+ 59,152,24,215,25,44,209,25,44,168,83,211,25,49,176,33,
+ 209,25,52,209,11,52,208,4,52,114,12,0,0,0,99,2,
+ 0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,3,
+ 0,0,0,243,48,0,0,0,151,0,124,1,116,0,0,0,
+ 0,0,0,0,0,0,122,0,0,0,125,2,124,2,124,0,
+ 106,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,118,0,83,0,114,122,0,0,0,41,2,114,
+ 26,0,0,0,114,37,0,0,0,41,3,114,41,0,0,0,
+ 114,18,0,0,0,218,7,100,105,114,112,97,116,104,115,3,
+ 0,0,0,32,32,32,114,13,0,0,0,114,55,0,0,0,
+ 114,55,0,0,0,47,1,0,0,115,28,0,0,0,128,0,
+ 240,8,0,15,19,148,88,137,111,128,71,224,11,18,144,100,
+ 151,107,145,107,208,11,33,208,4,33,114,12,0,0,0,99,
+ 2,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,
+ 3,0,0,0,243,104,0,0,0,151,0,116,1,0,0,0,
+ 0,0,0,0,0,124,0,124,1,171,2,0,0,0,0,0,
+ 0,125,2,116,2,0,0,0,0,0,0,0,0,68,0,93,
+ 29,0,0,92,3,0,0,125,3,125,4,125,5,124,2,124,
+ 3,122,0,0,0,125,6,124,6,124,0,106,4,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,
+ 0,115,1,140,27,124,5,99,2,1,0,83,0,4,0,121,
+ 0,114,122,0,0,0,41,3,114,54,0,0,0,218,16,95,
+ 122,105,112,95,115,101,97,114,99,104,111,114,100,101,114,114,
+ 37,0,0,0,41,7,114,41,0,0,0,114,58,0,0,0,
+ 114,18,0,0,0,218,6,115,117,102,102,105,120,218,10,105,
+ 115,98,121,116,101,99,111,100,101,114,69,0,0,0,114,89,
+ 0,0,0,115,7,0,0,0,32,32,32,32,32,32,32,114,
+ 13,0,0,0,114,51,0,0,0,114,51,0,0,0,56,1,
+ 0,0,115,68,0,0,0,128,0,220,11,27,152,68,160,40,
+ 211,11,43,128,68,220,41,57,242,0,3,5,29,209,8,37,
+ 136,6,144,10,152,73,216,19,23,152,38,145,61,136,8,216,
+ 11,19,144,116,151,123,145,123,210,11,34,216,19,28,210,12,
+ 28,240,7,3,5,29,240,8,0,12,16,114,12,0,0,0,
+ 99,1,0,0,0,0,0,0,0,0,0,0,0,9,0,0,
+ 0,3,0,0,0,243,16,10,0,0,151,0,9,0,116,1,
+ 0,0,0,0,0,0,0,0,106,2,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,124,0,171,1,
+ 0,0,0,0,0,0,125,1,124,1,53,0,1,0,124,1,
+ 106,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,171,0,0,0,0,0,0,0,125,2,9,0,
+ 9,0,124,1,106,11,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,116,12,0,0,0,0,0,0,
+ 0,0,11,0,100,3,171,2,0,0,0,0,0,0,1,0,
+ 124,1,106,9,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,171,0,0,0,0,0,0,0,125,3,
+ 124,1,106,15,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,116,12,0,0,0,0,0,0,0,0,
+ 171,1,0,0,0,0,0,0,125,4,116,17,0,0,0,0,
+ 0,0,0,0,124,4,171,1,0,0,0,0,0,0,116,12,
+ 0,0,0,0,0,0,0,0,107,55,0,0,114,16,116,7,
+ 0,0,0,0,0,0,0,0,100,4,124,0,155,2,157,2,
+ 124,0,172,2,171,2,0,0,0,0,0,0,130,1,124,4,
+ 100,0,100,5,26,0,116,18,0,0,0,0,0,0,0,0,
+ 107,55,0,0,114,200,9,0,124,1,106,11,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,6,
+ 100,3,171,2,0,0,0,0,0,0,1,0,124,1,106,9,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,171,0,0,0,0,0,0,0,125,5,116,21,0,0,
+ 0,0,0,0,0,0,124,5,116,22,0,0,0,0,0,0,
+ 0,0,122,10,0,0,116,12,0,0,0,0,0,0,0,0,
+ 122,10,0,0,100,6,171,2,0,0,0,0,0,0,125,6,
+ 9,0,124,1,106,11,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,124,6,171,1,0,0,0,0,
+ 0,0,1,0,124,1,106,15,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,171,0,0,0,0,0,
+ 0,0,125,7,124,7,106,25,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,116,18,0,0,0,0,
+ 0,0,0,0,171,1,0,0,0,0,0,0,125,8,124,8,
+ 100,6,107,2,0,0,114,16,116,7,0,0,0,0,0,0,
+ 0,0,100,7,124,0,155,2,157,2,124,0,172,2,171,2,
+ 0,0,0,0,0,0,130,1,124,7,124,8,124,8,116,12,
+ 0,0,0,0,0,0,0,0,122,0,0,0,26,0,125,4,
+ 116,17,0,0,0,0,0,0,0,0,124,4,171,1,0,0,
+ 0,0,0,0,116,12,0,0,0,0,0,0,0,0,107,55,
+ 0,0,114,16,116,7,0,0,0,0,0,0,0,0,100,8,
+ 124,0,155,2,157,2,124,0,172,2,171,2,0,0,0,0,
+ 0,0,130,1,124,5,116,17,0,0,0,0,0,0,0,0,
+ 124,7,171,1,0,0,0,0,0,0,122,10,0,0,124,8,
+ 122,0,0,0,125,3,116,27,0,0,0,0,0,0,0,0,
+ 124,4,100,9,100,10,26,0,171,1,0,0,0,0,0,0,
+ 125,9,116,27,0,0,0,0,0,0,0,0,124,4,100,10,
+ 100,11,26,0,171,1,0,0,0,0,0,0,125,10,124,3,
+ 124,9,107,2,0,0,114,16,116,7,0,0,0,0,0,0,
+ 0,0,100,12,124,0,155,2,157,2,124,0,172,2,171,2,
+ 0,0,0,0,0,0,130,1,124,3,124,10,107,2,0,0,
+ 114,16,116,7,0,0,0,0,0,0,0,0,100,13,124,0,
+ 155,2,157,2,124,0,172,2,171,2,0,0,0,0,0,0,
+ 130,1,124,3,124,9,122,23,0,0,125,3,124,3,124,10,
+ 122,10,0,0,125,11,124,11,100,6,107,2,0,0,114,16,
+ 116,7,0,0,0,0,0,0,0,0,100,14,124,0,155,2,
+ 157,2,124,0,172,2,171,2,0,0,0,0,0,0,130,1,
+ 105,0,125,12,100,6,125,13,9,0,124,1,106,11,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 124,3,171,1,0,0,0,0,0,0,1,0,9,0,124,1,
+ 106,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,100,15,171,1,0,0,0,0,0,0,125,4,
+ 116,17,0,0,0,0,0,0,0,0,124,4,171,1,0,0,
+ 0,0,0,0,100,5,107,2,0,0,114,11,116,29,0,0,
+ 0,0,0,0,0,0,100,16,171,1,0,0,0,0,0,0,
+ 130,1,124,4,100,0,100,5,26,0,100,17,107,55,0,0,
+ 114,2,144,1,110,164,116,17,0,0,0,0,0,0,0,0,
+ 124,4,171,1,0,0,0,0,0,0,100,15,107,55,0,0,
+ 114,11,116,29,0,0,0,0,0,0,0,0,100,16,171,1,
+ 0,0,0,0,0,0,130,1,116,31,0,0,0,0,0,0,
+ 0,0,124,4,100,18,100,19,26,0,171,1,0,0,0,0,
+ 0,0,125,14,116,31,0,0,0,0,0,0,0,0,124,4,
+ 100,19,100,9,26,0,171,1,0,0,0,0,0,0,125,15,
+ 116,31,0,0,0,0,0,0,0,0,124,4,100,9,100,20,
+ 26,0,171,1,0,0,0,0,0,0,125,16,116,31,0,0,
+ 0,0,0,0,0,0,124,4,100,20,100,10,26,0,171,1,
+ 0,0,0,0,0,0,125,17,116,27,0,0,0,0,0,0,
+ 0,0,124,4,100,10,100,11,26,0,171,1,0,0,0,0,
+ 0,0,125,18,116,27,0,0,0,0,0,0,0,0,124,4,
+ 100,11,100,21,26,0,171,1,0,0,0,0,0,0,125,19,
+ 116,27,0,0,0,0,0,0,0,0,124,4,100,21,100,22,
+ 26,0,171,1,0,0,0,0,0,0,125,5,116,31,0,0,
+ 0,0,0,0,0,0,124,4,100,22,100,23,26,0,171,1,
+ 0,0,0,0,0,0,125,20,116,31,0,0,0,0,0,0,
+ 0,0,124,4,100,23,100,24,26,0,171,1,0,0,0,0,
+ 0,0,125,21,116,31,0,0,0,0,0,0,0,0,124,4,
+ 100,24,100,25,26,0,171,1,0,0,0,0,0,0,125,22,
+ 116,27,0,0,0,0,0,0,0,0,124,4,100,26,100,15,
+ 26,0,171,1,0,0,0,0,0,0,125,23,124,20,124,21,
+ 122,0,0,0,124,22,122,0,0,0,125,9,124,23,124,10,
+ 107,68,0,0,114,16,116,7,0,0,0,0,0,0,0,0,
+ 100,27,124,0,155,2,157,2,124,0,172,2,171,2,0,0,
+ 0,0,0,0,130,1,124,23,124,11,122,13,0,0,125,23,
+ 9,0,124,1,106,15,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,124,20,171,1,0,0,0,0,
+ 0,0,125,24,116,17,0,0,0,0,0,0,0,0,124,24,
+ 171,1,0,0,0,0,0,0,124,20,107,55,0,0,114,16,
+ 116,7,0,0,0,0,0,0,0,0,100,4,124,0,155,2,
+ 157,2,124,0,172,2,171,2,0,0,0,0,0,0,130,1,
+ 9,0,116,17,0,0,0,0,0,0,0,0,124,1,106,15,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,124,9,124,20,122,10,0,0,171,1,0,0,0,0,
+ 0,0,171,1,0,0,0,0,0,0,124,9,124,20,122,10,
+ 0,0,107,55,0,0,114,16,116,7,0,0,0,0,0,0,
+ 0,0,100,4,124,0,155,2,157,2,124,0,172,2,171,2,
+ 0,0,0,0,0,0,130,1,9,0,124,14,100,28,122,1,
+ 0,0,114,17,124,24,106,33,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,171,0,0,0,0,0,
+ 0,0,125,24,110,18,9,0,124,24,106,33,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,29,
+ 171,1,0,0,0,0,0,0,125,24,124,24,106,41,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 100,31,116,42,0,0,0,0,0,0,0,0,171,2,0,0,
+ 0,0,0,0,125,24,116,45,0,0,0,0,0,0,0,0,
+ 106,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,124,0,124,24,171,2,0,0,0,0,0,0,
+ 125,25,124,25,124,15,124,19,124,5,124,23,124,16,124,17,
+ 124,18,102,8,125,26,124,26,124,12,124,24,60,0,0,0,
+ 124,13,100,32,122,13,0,0,125,13,144,1,140,216,9,0,
+ 124,1,106,11,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,124,2,171,1,0,0,0,0,0,0,
+ 1,0,9,0,100,0,100,0,100,0,171,2,0,0,0,0,
+ 0,0,1,0,116,49,0,0,0,0,0,0,0,0,106,50,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,100,33,127,13,124,0,171,3,0,0,0,0,0,0,
+ 1,0,127,12,83,0,35,0,116,4,0,0,0,0,0,0,
+ 0,0,36,0,114,17,1,0,116,7,0,0,0,0,0,0,
+ 0,0,100,1,124,0,155,2,157,2,124,0,172,2,171,2,
+ 0,0,0,0,0,0,130,1,119,0,120,3,89,0,119,1,
+ 35,0,116,4,0,0,0,0,0,0,0,0,36,0,114,17,
+ 1,0,116,7,0,0,0,0,0,0,0,0,100,4,124,0,
+ 155,2,157,2,124,0,172,2,171,2,0,0,0,0,0,0,
+ 130,1,119,0,120,3,89,0,119,1,35,0,116,4,0,0,
+ 0,0,0,0,0,0,36,0,114,17,1,0,116,7,0,0,
+ 0,0,0,0,0,0,100,4,124,0,155,2,157,2,124,0,
+ 172,2,171,2,0,0,0,0,0,0,130,1,119,0,120,3,
+ 89,0,119,1,35,0,116,4,0,0,0,0,0,0,0,0,
+ 36,0,114,17,1,0,116,7,0,0,0,0,0,0,0,0,
+ 100,4,124,0,155,2,157,2,124,0,172,2,171,2,0,0,
+ 0,0,0,0,130,1,119,0,120,3,89,0,119,1,35,0,
+ 116,4,0,0,0,0,0,0,0,0,36,0,114,17,1,0,
+ 116,7,0,0,0,0,0,0,0,0,100,4,124,0,155,2,
+ 157,2,124,0,172,2,171,2,0,0,0,0,0,0,130,1,
+ 119,0,120,3,89,0,119,1,35,0,116,4,0,0,0,0,
+ 0,0,0,0,36,0,114,17,1,0,116,7,0,0,0,0,
+ 0,0,0,0,100,4,124,0,155,2,157,2,124,0,172,2,
+ 171,2,0,0,0,0,0,0,130,1,119,0,120,3,89,0,
+ 119,1,35,0,116,4,0,0,0,0,0,0,0,0,36,0,
+ 114,17,1,0,116,7,0,0,0,0,0,0,0,0,100,4,
+ 124,0,155,2,157,2,124,0,172,2,171,2,0,0,0,0,
+ 0,0,130,1,119,0,120,3,89,0,119,1,35,0,116,34,
+ 0,0,0,0,0,0,0,0,36,0,114,40,1,0,124,24,
+ 106,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,100,30,171,1,0,0,0,0,0,0,106,37,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,116,38,0,0,0,0,0,0,0,0,171,1,0,0,
+ 0,0,0,0,125,24,89,0,144,1,140,113,119,0,120,3,
+ 89,0,119,1,35,0,124,1,106,11,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,124,2,171,1,
+ 0,0,0,0,0,0,1,0,119,0,120,3,89,0,119,1,
+ 35,0,49,0,115,1,119,2,1,0,89,0,1,0,1,0,
+ 144,1,140,56,120,3,89,0,119,1,41,34,78,122,21,99,
+ 97,110,39,116,32,111,112,101,110,32,90,105,112,32,102,105,
+ 108,101,58,32,114,17,0,0,0,114,126,0,0,0,250,21,
+ 99,97,110,39,116,32,114,101,97,100,32,90,105,112,32,102,
+ 105,108,101,58,32,233,4,0,0,0,114,1,0,0,0,122,
+ 16,110,111,116,32,97,32,90,105,112,32,102,105,108,101,58,
+ 32,122,18,99,111,114,114,117,112,116,32,90,105,112,32,102,
+ 105,108,101,58,32,233,12,0,0,0,233,16,0,0,0,233,
+ 20,0,0,0,122,28,98,97,100,32,99,101,110,116,114,97,
+ 108,32,100,105,114,101,99,116,111,114,121,32,115,105,122,101,
+ 58,32,122,30,98,97,100,32,99,101,110,116,114,97,108,32,
+ 100,105,114,101,99,116,111,114,121,32,111,102,102,115,101,116,
+ 58,32,122,38,98,97,100,32,99,101,110,116,114,97,108,32,
+ 100,105,114,101,99,116,111,114,121,32,115,105,122,101,32,111,
+ 114,32,111,102,102,115,101,116,58,32,233,46,0,0,0,250,
+ 27,69,79,70,32,114,101,97,100,32,119,104,101,114,101,32,
+ 110,111,116,32,101,120,112,101,99,116,101,100,115,4,0,0,
+ 0,80,75,1,2,233,8,0,0,0,233,10,0,0,0,233,
+ 14,0,0,0,233,24,0,0,0,233,28,0,0,0,233,30,
+ 0,0,0,233,32,0,0,0,233,34,0,0,0,233,42,0,
+ 0,0,122,25,98,97,100,32,108,111,99,97,108,32,104,101,
+ 97,100,101,114,32,111,102,102,115,101,116,58,32,105,0,8,
+ 0,0,218,5,97,115,99,105,105,218,6,108,97,116,105,110,
+ 49,250,1,47,114,6,0,0,0,122,33,122,105,112,105,109,
+ 112,111,114,116,58,32,102,111,117,110,100,32,123,125,32,110,
+ 97,109,101,115,32,105,110,32,123,33,114,125,41,26,218,3,
+ 95,105,111,218,9,111,112,101,110,95,99,111,100,101,114,30,
+ 0,0,0,114,4,0,0,0,218,4,116,101,108,108,218,4,
+ 115,101,101,107,218,20,69,78,68,95,67,69,78,84,82,65,
+ 76,95,68,73,82,95,83,73,90,69,218,4,114,101,97,100,
+ 114,74,0,0,0,218,18,83,84,82,73,78,71,95,69,78,
+ 68,95,65,82,67,72,73,86,69,218,3,109,97,120,218,15,
+ 77,65,88,95,67,79,77,77,69,78,84,95,76,69,78,218,
+ 5,114,102,105,110,100,114,3,0,0,0,218,8,69,79,70,
+ 69,114,114,111,114,114,2,0,0,0,114,87,0,0,0,218,
+ 18,85,110,105,99,111,100,101,68,101,99,111,100,101,69,114,
+ 114,111,114,218,9,116,114,97,110,115,108,97,116,101,218,11,
+ 99,112,52,51,55,95,116,97,98,108,101,114,25,0,0,0,
+ 114,26,0,0,0,114,27,0,0,0,114,39,0,0,0,114,
+ 52,0,0,0,114,108,0,0,0,41,27,114,38,0,0,0,
+ 218,2,102,112,218,12,115,116,97,114,116,95,111,102,102,115,
+ 101,116,218,15,104,101,97,100,101,114,95,112,111,115,105,116,
+ 105,111,110,218,6,98,117,102,102,101,114,218,9,102,105,108,
+ 101,95,115,105,122,101,218,17,109,97,120,95,99,111,109,109,
+ 101,110,116,95,115,116,97,114,116,218,4,100,97,116,97,218,
+ 3,112,111,115,218,11,104,101,97,100,101,114,95,115,105,122,
+ 101,218,13,104,101,97,100,101,114,95,111,102,102,115,101,116,
+ 218,10,97,114,99,95,111,102,102,115,101,116,114,45,0,0,
+ 0,218,5,99,111,117,110,116,218,5,102,108,97,103,115,218,
+ 8,99,111,109,112,114,101,115,115,218,4,116,105,109,101,218,
+ 4,100,97,116,101,218,3,99,114,99,218,9,100,97,116,97,
+ 95,115,105,122,101,218,9,110,97,109,101,95,115,105,122,101,
+ 218,10,101,120,116,114,97,95,115,105,122,101,218,12,99,111,
+ 109,109,101,110,116,95,115,105,122,101,218,11,102,105,108,101,
+ 95,111,102,102,115,101,116,114,49,0,0,0,114,18,0,0,
+ 0,218,1,116,115,27,0,0,0,32,32,32,32,32,32,32,
+ 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,
+ 32,32,32,32,114,13,0,0,0,114,36,0,0,0,114,36,
+ 0,0,0,87,1,0,0,115,225,5,0,0,128,0,240,2,
+ 3,5,80,1,220,13,16,143,93,137,93,152,55,211,13,35,
+ 136,2,240,8,0,10,12,241,0,115,1,5,34,240,8,0,
+ 24,26,151,119,145,119,147,121,136,12,240,2,110,1,9,34,
+ 240,2,5,13,88,1,216,16,18,151,7,145,7,212,25,45,
+ 208,24,45,168,113,212,16,49,216,34,36,167,39,161,39,163,
+ 41,144,15,216,25,27,159,23,153,23,212,33,53,211,25,54,
+ 144,6,244,6,0,16,19,144,54,139,123,212,30,50,210,15,
+ 50,220,22,36,208,39,60,184,87,184,75,208,37,72,200,119,
+ 212,22,87,208,16,87,216,15,21,144,98,144,113,136,122,212,
+ 29,47,210,15,47,240,6,5,17,55,216,20,22,151,71,145,
+ 71,152,65,152,113,148,77,216,32,34,167,7,161,7,163,9,
+ 144,73,244,8,0,37,40,168,9,180,79,209,40,67,220,40,
+ 60,241,3,1,41,61,216,62,63,243,3,1,37,65,1,208,
+ 16,33,240,4,5,17,55,216,20,22,151,71,145,71,208,28,
+ 45,212,20,46,216,27,29,159,55,153,55,155,57,144,68,240,
+ 8,0,23,27,151,106,145,106,212,33,51,211,22,52,144,3,
+ 216,19,22,152,17,146,55,220,26,40,208,43,59,184,71,184,
+ 59,208,41,71,216,46,53,244,3,1,27,55,240,0,1,21,
+ 55,224,25,29,152,99,160,35,212,38,58,209,34,58,208,25,
+ 59,144,6,220,19,22,144,118,147,59,212,34,54,210,19,54,
+ 220,26,40,208,43,61,184,103,184,91,208,41,73,216,46,53,
+ 244,3,1,27,55,240,0,1,21,55,224,34,43,172,99,176,
+ 36,171,105,209,34,55,184,35,209,34,61,144,15,228,26,40,
+ 168,22,176,2,176,50,168,29,211,26,55,136,75,220,28,42,
+ 168,54,176,34,176,82,168,61,211,28,57,136,77,216,15,30,
+ 160,27,210,15,44,220,22,36,208,39,67,192,71,192,59,208,
+ 37,79,208,86,93,212,22,94,208,16,94,216,15,30,160,29,
+ 210,15,46,220,22,36,208,39,69,192,103,192,91,208,37,81,
+ 208,88,95,212,22,96,208,16,96,216,12,27,152,123,209,12,
+ 42,136,79,216,25,40,168,61,209,25,56,136,74,216,15,25,
+ 152,65,138,126,220,22,36,208,39,77,200,103,200,91,208,37,
+ 89,208,96,103,212,22,104,208,16,104,224,20,22,136,69,224,
+ 20,21,136,69,240,2,3,13,88,1,216,16,18,151,7,145,
+ 7,152,15,212,16,40,240,6,0,19,23,216,25,27,159,23,
+ 153,23,160,18,155,27,144,6,220,19,22,144,118,147,59,160,
+ 17,146,63,220,26,34,208,35,64,211,26,65,208,20,65,224,
+ 19,25,152,34,152,49,144,58,160,29,210,19,46,217,20,25,
+ 220,19,22,144,118,147,59,160,34,210,19,36,220,26,34,208,
+ 35,64,211,26,65,208,20,65,220,24,38,160,118,168,97,176,
+ 2,160,124,211,24,52,144,5,220,27,41,168,38,176,18,176,
+ 66,168,45,211,27,56,144,8,220,23,37,160,102,168,82,176,
+ 2,160,109,211,23,52,144,4,220,23,37,160,102,168,82,176,
+ 2,160,109,211,23,52,144,4,220,22,36,160,86,168,66,168,
+ 114,160,93,211,22,51,144,3,220,28,42,168,54,176,34,176,
+ 82,168,61,211,28,57,144,9,220,28,42,168,54,176,34,176,
+ 82,168,61,211,28,57,144,9,220,28,42,168,54,176,34,176,
+ 82,168,61,211,28,57,144,9,220,29,43,168,70,176,50,176,
+ 98,168,77,211,29,58,144,10,220,31,45,168,102,176,82,184,
+ 2,168,109,211,31,60,144,12,220,30,44,168,86,176,66,176,
+ 114,168,93,211,30,59,144,11,216,30,39,168,42,209,30,52,
+ 176,124,209,30,67,144,11,216,19,30,160,29,210,19,46,220,
+ 26,40,208,43,68,192,87,192,75,208,41,80,208,87,94,212,
+ 26,95,208,20,95,216,16,27,152,122,209,16,41,144,11,240,
+ 4,3,17,92,1,216,27,29,159,55,153,55,160,57,211,27,
+ 45,144,68,244,6,0,20,23,144,116,147,57,160,9,210,19,
+ 41,220,26,40,208,43,64,192,23,192,11,208,41,76,208,83,
+ 90,212,26,91,208,20,91,240,8,4,17,92,1,220,23,26,
+ 152,50,159,55,153,55,160,59,176,25,209,35,58,211,27,59,
+ 211,23,60,192,11,200,105,209,64,87,210,23,87,220,30,44,
+ 208,47,68,192,87,192,75,208,45,80,208,87,94,212,30,95,
+ 208,24,95,240,3,0,24,88,1,240,10,0,20,25,152,53,
+ 146,61,224,27,31,159,59,153,59,155,61,145,68,240,6,3,
+ 21,76,1,216,31,35,159,123,153,123,168,55,211,31,51,152,
+ 4,240,8,0,24,28,151,124,145,124,160,67,172,24,211,23,
+ 50,144,4,220,23,42,215,23,53,209,23,53,176,103,184,116,
+ 211,23,68,144,4,216,21,25,152,56,160,89,176,9,184,59,
+ 200,4,200,100,208,84,87,208,20,88,144,1,216,30,31,144,
+ 5,144,100,145,11,216,16,21,152,17,145,10,144,5,241,109,
+ 1,0,19,23,240,12,0,21,26,240,100,1,0,13,15,143,
+ 71,137,71,144,76,213,12,33,247,103,3,115,1,5,34,244,
+ 104,3,0,5,15,215,4,31,209,4,31,208,32,67,192,85,
+ 200,71,212,4,84,216,11,16,128,76,248,244,113,3,0,12,
+ 19,242,0,1,5,80,1,220,14,28,208,31,52,176,87,176,
+ 75,208,29,64,192,119,212,14,79,208,8,79,240,3,1,5,
+ 80,1,251,244,26,0,20,27,242,0,1,13,88,1,220,22,
+ 36,208,39,60,184,87,184,75,208,37,72,200,119,212,22,87,
+ 208,16,87,240,3,1,13,88,1,251,244,20,0,24,31,242,
+ 0,2,17,55,220,26,40,208,43,64,192,23,192,11,208,41,
+ 76,216,46,53,244,3,1,27,55,240,0,1,21,55,240,3,
+ 2,17,55,251,244,16,0,24,31,242,0,2,17,55,220,26,
+ 40,208,43,64,192,23,192,11,208,41,76,216,46,53,244,3,
+ 1,27,55,240,0,1,21,55,240,3,2,17,55,251,244,58,
+ 0,20,27,242,0,1,13,88,1,220,22,36,208,39,60,184,
+ 87,184,75,208,37,72,200,119,212,22,87,208,16,87,240,3,
+ 1,13,88,1,251,244,58,0,24,31,242,0,1,17,92,1,
+ 220,26,40,208,43,64,192,23,192,11,208,41,76,208,83,90,
+ 212,26,91,208,20,91,240,3,1,17,92,1,251,244,20,0,
+ 24,31,242,0,1,17,92,1,220,26,40,208,43,64,192,23,
+ 192,11,208,41,76,208,83,90,212,26,91,208,20,91,240,3,
+ 1,17,92,1,251,244,20,0,28,46,242,0,1,21,76,1,
+ 216,31,35,159,123,153,123,168,56,211,31,52,215,31,62,209,
+ 31,62,188,123,211,31,75,155,4,240,3,1,21,76,1,251,
+ 240,18,0,13,15,143,71,137,71,144,76,213,12,33,250,247,
+ 103,3,115,1,5,34,241,0,115,1,5,34,250,115,222,0,
+ 0,0,130,21,79,38,0,153,17,83,59,3,172,60,80,3,
+ 2,193,40,46,83,37,2,194,23,34,80,32,2,194,57,26,
+ 83,37,2,195,20,33,80,61,2,195,53,67,18,83,37,2,
+ 199,8,17,81,26,2,199,25,68,10,83,37,2,203,36,17,
+ 81,55,2,203,53,30,83,37,2,204,20,51,82,20,2,205,
+ 7,23,83,37,2,205,31,17,82,49,2,205,48,65,2,83,
+ 37,2,206,51,17,83,59,3,207,38,26,80,0,3,208,3,
+ 26,80,29,5,208,29,3,83,37,2,208,32,26,80,58,5,
+ 208,58,3,83,37,2,208,61,26,81,23,5,209,23,3,83,
+ 37,2,209,26,26,81,52,5,209,52,3,83,37,2,209,55,
+ 26,82,17,5,210,17,3,83,37,2,210,20,26,82,46,5,
+ 210,46,3,83,37,2,210,49,45,83,34,5,211,30,3,83,
+ 37,2,211,33,1,83,34,5,211,34,3,83,37,2,211,37,
+ 19,83,56,5,211,56,3,83,59,3,211,59,5,84,5,7,
+ 117,190,1,0,0,0,1,2,3,4,5,6,7,8,9,10,
+ 11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,
+ 27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,
+ 43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,
+ 59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,
+ 75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,
+ 91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,
+ 107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,
+ 123,124,125,126,127,195,135,195,188,195,169,195,162,195,164,195,
+ 160,195,165,195,167,195,170,195,171,195,168,195,175,195,174,195,
+ 172,195,132,195,133,195,137,195,166,195,134,195,180,195,182,195,
+ 178,195,187,195,185,195,191,195,150,195,156,194,162,194,163,194,
+ 165,226,130,167,198,146,195,161,195,173,195,179,195,186,195,177,
+ 195,145,194,170,194,186,194,191,226,140,144,194,172,194,189,194,
+ 188,194,161,194,171,194,187,226,150,145,226,150,146,226,150,147,
+ 226,148,130,226,148,164,226,149,161,226,149,162,226,149,150,226,
+ 149,149,226,149,163,226,149,145,226,149,151,226,149,157,226,149,
+ 156,226,149,155,226,148,144,226,148,148,226,148,180,226,148,172,
+ 226,148,156,226,148,128,226,148,188,226,149,158,226,149,159,226,
+ 149,154,226,149,148,226,149,169,226,149,166,226,149,160,226,149,
+ 144,226,149,172,226,149,167,226,149,168,226,149,164,226,149,165,
+ 226,149,153,226,149,152,226,149,146,226,149,147,226,149,171,226,
+ 149,170,226,148,152,226,148,140,226,150,136,226,150,132,226,150,
+ 140,226,150,144,226,150,128,206,177,195,159,206,147,207,128,206,
+ 163,207,131,194,181,207,132,206,166,206,152,206,169,206,180,226,
+ 136,158,207,134,206,181,226,136,169,226,137,161,194,177,226,137,
+ 165,226,137,164,226,140,160,226,140,161,195,183,226,137,136,194,
+ 176,226,136,153,194,183,226,136,154,226,129,191,194,178,226,150,
+ 160,194,160,99,0,0,0,0,0,0,0,0,0,0,0,0,
+ 4,0,0,0,3,0,0,0,243,252,0,0,0,151,0,116,
+ 0,0,0,0,0,0,0,0,0,114,32,116,3,0,0,0,
+ 0,0,0,0,0,106,4,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,100,1,171,1,0,0,0,
+ 0,0,0,1,0,116,7,0,0,0,0,0,0,0,0,100,
+ 2,171,1,0,0,0,0,0,0,130,1,100,3,97,0,9,
+ 0,100,4,100,5,108,4,109,5,125,0,1,0,9,0,100,
+ 6,97,0,116,3,0,0,0,0,0,0,0,0,106,4,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,100,7,171,1,0,0,0,0,0,0,1,0,124,0,83,
+ 0,35,0,116,12,0,0,0,0,0,0,0,0,36,0,114,
+ 33,1,0,116,3,0,0,0,0,0,0,0,0,106,4,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,100,1,171,1,0,0,0,0,0,0,1,0,116,7,0,
+ 0,0,0,0,0,0,0,100,2,171,1,0,0,0,0,0,
+ 0,130,1,119,0,120,3,89,0,119,1,35,0,100,6,97,
+ 0,119,0,120,3,89,0,119,1,41,8,78,122,27,122,105,
+ 112,105,109,112,111,114,116,58,32,122,108,105,98,32,85,78,
+ 65,86,65,73,76,65,66,76,69,250,41,99,97,110,39,116,
+ 32,100,101,99,111,109,112,114,101,115,115,32,100,97,116,97,
+ 59,32,122,108,105,98,32,110,111,116,32,97,118,97,105,108,
+ 97,98,108,101,84,114,1,0,0,0,169,1,218,10,100,101,
+ 99,111,109,112,114,101,115,115,70,122,25,122,105,112,105,109,
+ 112,111,114,116,58,32,122,108,105,98,32,97,118,97,105,108,
+ 97,98,108,101,41,7,218,15,95,105,109,112,111,114,116,105,
+ 110,103,95,122,108,105,98,114,52,0,0,0,114,108,0,0,
+ 0,114,4,0,0,0,218,4,122,108,105,98,114,194,0,0,
+ 0,218,9,69,120,99,101,112,116,105,111,110,114,193,0,0,
+ 0,115,1,0,0,0,32,114,13,0,0,0,218,20,95,103,
+ 101,116,95,100,101,99,111,109,112,114,101,115,115,95,102,117,
+ 110,99,114,198,0,0,0,252,1,0,0,115,129,0,0,0,
+ 128,0,229,7,22,244,6,0,9,19,215,8,35,209,8,35,
+ 208,36,65,212,8,66,220,14,28,208,29,72,211,14,73,208,
+ 8,73,224,22,26,128,79,240,2,6,5,32,222,8,35,240,
+ 10,0,27,32,136,15,228,4,14,215,4,31,209,4,31,208,
+ 32,59,212,4,60,216,11,21,208,4,21,248,244,15,0,12,
+ 21,242,0,2,5,74,1,220,8,18,215,8,35,209,8,35,
+ 208,36,65,212,8,66,220,14,28,208,29,72,211,14,73,208,
+ 8,73,240,5,2,5,74,1,251,240,8,0,27,32,137,15,
+ 250,115,23,0,0,0,170,6,65,10,0,193,10,42,65,52,
+ 3,193,52,3,65,55,0,193,55,4,65,59,3,99,2,0,
+ 0,0,0,0,0,0,0,0,0,0,8,0,0,0,3,0,
+ 0,0,243,218,2,0,0,151,0,124,1,92,8,0,0,125,
+ 2,125,3,125,4,125,5,125,6,125,7,125,8,125,9,124,
+ 4,100,1,107,2,0,0,114,11,116,1,0,0,0,0,0,
+ 0,0,0,100,2,171,1,0,0,0,0,0,0,130,1,116,
+ 3,0,0,0,0,0,0,0,0,106,4,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,124,0,171,
+ 1,0,0,0,0,0,0,53,0,125,10,9,0,124,10,106,
+ 7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,124,6,171,1,0,0,0,0,0,0,1,0,124,
+ 10,106,11,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,100,5,171,1,0,0,0,0,0,0,125,
+ 11,116,13,0,0,0,0,0,0,0,0,124,11,171,1,0,
+ 0,0,0,0,0,100,5,107,55,0,0,114,11,116,15,0,
+ 0,0,0,0,0,0,0,100,6,171,1,0,0,0,0,0,
+ 0,130,1,124,11,100,0,100,7,26,0,100,8,107,55,0,
+ 0,114,16,116,1,0,0,0,0,0,0,0,0,100,9,124,
+ 0,155,2,157,2,124,0,172,4,171,2,0,0,0,0,0,
+ 0,130,1,116,17,0,0,0,0,0,0,0,0,124,11,100,
+ 10,100,11,26,0,171,1,0,0,0,0,0,0,125,12,116,
+ 17,0,0,0,0,0,0,0,0,124,11,100,11,100,5,26,
+ 0,171,1,0,0,0,0,0,0,125,13,100,5,124,12,122,
+ 0,0,0,124,13,122,0,0,0,125,14,124,6,124,14,122,
+ 13,0,0,125,6,9,0,124,10,106,7,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,124,6,171,
+ 1,0,0,0,0,0,0,1,0,124,10,106,11,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,
+ 4,171,1,0,0,0,0,0,0,125,15,116,13,0,0,0,
+ 0,0,0,0,0,124,15,171,1,0,0,0,0,0,0,124,
+ 4,107,55,0,0,114,11,116,9,0,0,0,0,0,0,0,
+ 0,100,12,171,1,0,0,0,0,0,0,130,1,9,0,100,
+ 0,100,0,100,0,171,2,0,0,0,0,0,0,1,0,124,
+ 3,100,1,107,40,0,0,114,2,127,15,83,0,9,0,116,
+ 19,0,0,0,0,0,0,0,0,171,0,0,0,0,0,0,
+ 0,125,16,2,0,124,16,127,15,100,14,171,2,0,0,0,
+ 0,0,0,83,0,35,0,116,8,0,0,0,0,0,0,0,
+ 0,36,0,114,17,1,0,116,1,0,0,0,0,0,0,0,
+ 0,100,3,124,0,155,2,157,2,124,0,172,4,171,2,0,
+ 0,0,0,0,0,130,1,119,0,120,3,89,0,119,1,35,
+ 0,116,8,0,0,0,0,0,0,0,0,36,0,114,17,1,
+ 0,116,1,0,0,0,0,0,0,0,0,100,3,124,0,155,
+ 2,157,2,124,0,172,4,171,2,0,0,0,0,0,0,130,
+ 1,119,0,120,3,89,0,119,1,35,0,49,0,115,1,119,
+ 2,1,0,89,0,1,0,1,0,140,94,120,3,89,0,119,
+ 1,35,0,116,20,0,0,0,0,0,0,0,0,36,0,114,
+ 12,1,0,116,1,0,0,0,0,0,0,0,0,100,13,171,
+ 1,0,0,0,0,0,0,130,1,119,0,120,3,89,0,119,
+ 1,41,15,78,114,1,0,0,0,122,18,110,101,103,97,116,
+ 105,118,101,32,100,97,116,97,32,115,105,122,101,114,135,0,
+ 0,0,114,17,0,0,0,114,147,0,0,0,114,141,0,0,
+ 0,114,136,0,0,0,115,4,0,0,0,80,75,3,4,122,
+ 23,98,97,100,32,108,111,99,97,108,32,102,105,108,101,32,
+ 104,101,97,100,101,114,58,32,233,26,0,0,0,114,146,0,
+ 0,0,122,26,122,105,112,105,109,112,111,114,116,58,32,99,
+ 97,110,39,116,32,114,101,97,100,32,100,97,116,97,114,192,
+ 0,0,0,105,241,255,255,255,41,11,114,4,0,0,0,114,
+ 154,0,0,0,114,155,0,0,0,114,157,0,0,0,114,30,
+ 0,0,0,114,159,0,0,0,114,74,0,0,0,114,164,0,
+ 0,0,114,2,0,0,0,114,198,0,0,0,114,197,0,0,
+ 0,41,17,114,38,0,0,0,114,78,0,0,0,218,8,100,
+ 97,116,97,112,97,116,104,114,181,0,0,0,114,185,0,0,
+ 0,114,172,0,0,0,114,189,0,0,0,114,182,0,0,0,
+ 114,183,0,0,0,114,184,0,0,0,114,168,0,0,0,114,
+ 171,0,0,0,114,186,0,0,0,114,187,0,0,0,114,176,
+ 0,0,0,218,8,114,97,119,95,100,97,116,97,114,194,0,
+ 0,0,115,17,0,0,0,32,32,32,32,32,32,32,32,32,
+ 32,32,32,32,32,32,32,32,114,13,0,0,0,114,75,0,
+ 0,0,114,75,0,0,0,17,2,0,0,115,186,1,0,0,
+ 128,0,216,77,86,209,4,74,128,72,136,104,152,9,160,57,
+ 168,107,184,52,192,20,192,115,216,7,16,144,49,130,125,220,
+ 14,28,208,29,49,211,14,50,208,8,50,228,9,12,143,29,
+ 137,29,144,119,211,9,31,240,0,24,5,56,160,50,240,4,
+ 3,9,84,1,216,12,14,143,71,137,71,144,75,212,12,32,
+ 240,6,0,18,20,151,23,145,23,152,18,147,27,136,6,220,
+ 11,14,136,118,139,59,152,34,210,11,28,220,18,26,208,27,
+ 56,211,18,57,208,12,57,224,11,17,144,34,144,49,136,58,
+ 152,29,210,11,38,228,18,32,208,35,58,184,55,184,43,208,
+ 33,70,200,87,212,18,85,208,12,85,228,20,34,160,54,168,
+ 34,168,82,160,61,211,20,49,136,9,220,21,35,160,70,168,
+ 50,168,98,160,77,211,21,50,136,10,216,22,24,152,57,145,
+ 110,160,122,209,22,49,136,11,216,8,19,144,123,209,8,34,
+ 136,11,240,2,3,9,84,1,216,12,14,143,71,137,71,144,
+ 75,212,12,32,240,6,0,20,22,151,55,145,55,152,57,211,
+ 19,37,136,8,220,11,14,136,120,139,61,152,73,210,11,37,
+ 220,18,25,208,26,54,211,18,55,208,12,55,240,3,0,12,
+ 38,247,47,24,5,56,240,52,0,8,16,144,49,130,125,224,
+ 15,23,136,15,240,6,3,5,74,1,220,21,41,211,21,43,
+ 136,10,241,6,0,12,22,144,104,160,3,211,11,36,208,4,
+ 36,248,244,63,0,16,23,242,0,1,9,84,1,220,18,32,
+ 208,35,56,184,23,184,11,208,33,68,200,55,212,18,83,208,
+ 12,83,240,3,1,9,84,1,251,244,32,0,16,23,242,0,
+ 1,9,84,1,220,18,32,208,35,56,184,23,184,11,208,33,
+ 68,200,55,212,18,83,208,12,83,240,3,1,9,84,1,250,
+ 247,41,24,5,56,240,0,24,5,56,251,244,66,1,0,12,
+ 21,242,0,1,5,74,1,220,14,28,208,29,72,211,14,73,
+ 208,8,73,240,3,1,5,74,1,250,115,71,0,0,0,177,
+ 1,69,9,3,179,17,68,15,2,193,4,65,43,69,9,3,
+ 194,48,17,68,44,2,195,1,42,69,9,3,195,60,10,69,
+ 21,0,196,15,26,68,41,5,196,41,3,69,9,3,196,44,
+ 26,69,6,5,197,6,3,69,9,3,197,9,5,69,18,7,
+ 197,21,21,69,42,3,99,2,0,0,0,0,0,0,0,0,
+ 0,0,0,4,0,0,0,3,0,0,0,243,36,0,0,0,
+ 151,0,116,1,0,0,0,0,0,0,0,0,124,0,124,1,
+ 122,10,0,0,171,1,0,0,0,0,0,0,100,1,107,26,
+ 0,0,83,0,41,2,78,114,6,0,0,0,41,1,218,3,
+ 97,98,115,41,2,218,2,116,49,218,2,116,50,115,2,0,
+ 0,0,32,32,114,13,0,0,0,218,9,95,101,113,95,109,
+ 116,105,109,101,114,207,0,0,0,63,2,0,0,115,21,0,
+ 0,0,128,0,228,11,14,136,114,144,66,137,119,139,60,152,
+ 49,209,11,28,208,4,28,114,12,0,0,0,99,5,0,0,
+ 0,0,0,0,0,0,0,0,0,7,0,0,0,3,0,0,
+ 0,243,92,2,0,0,151,0,124,3,124,2,100,1,156,2,
+ 125,5,116,1,0,0,0,0,0,0,0,0,106,2,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 124,4,124,3,124,5,171,3,0,0,0,0,0,0,125,6,
+ 124,6,100,2,122,1,0,0,100,3,107,55,0,0,125,7,
+ 124,7,114,123,124,6,100,4,122,1,0,0,100,3,107,55,
+ 0,0,125,8,116,4,0,0,0,0,0,0,0,0,106,6,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,100,5,107,55,0,0,114,179,124,8,115,19,116,4,
+ 0,0,0,0,0,0,0,0,106,6,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,100,6,107,40,
+ 0,0,114,158,116,9,0,0,0,0,0,0,0,0,124,0,
+ 124,2,171,2,0,0,0,0,0,0,125,9,124,9,129,144,
+ 116,5,0,0,0,0,0,0,0,0,106,10,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,0,
+ 0,0,0,0,0,0,0,0,106,12,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,124,9,171,2,
+ 0,0,0,0,0,0,125,10,116,1,0,0,0,0,0,0,
+ 0,0,106,14,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,124,4,124,10,124,3,124,5,171,4,
+ 0,0,0,0,0,0,1,0,110,83,116,17,0,0,0,0,
+ 0,0,0,0,124,0,124,2,171,2,0,0,0,0,0,0,
+ 92,2,0,0,125,11,125,12,124,11,114,66,116,19,0,0,
+ 0,0,0,0,0,0,116,21,0,0,0,0,0,0,0,0,
+ 124,4,100,7,100,8,26,0,171,1,0,0,0,0,0,0,
+ 124,11,171,2,0,0,0,0,0,0,114,17,116,21,0,0,
+ 0,0,0,0,0,0,124,4,100,8,100,9,26,0,171,1,
+ 0,0,0,0,0,0,124,12,107,55,0,0,114,25,116,23,
+ 0,0,0,0,0,0,0,0,106,24,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,100,10,124,3,
+ 155,2,157,2,171,1,0,0,0,0,0,0,1,0,121,0,
+ 116,27,0,0,0,0,0,0,0,0,106,28,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,4,
+ 100,9,100,0,26,0,171,1,0,0,0,0,0,0,125,13,
+ 116,31,0,0,0,0,0,0,0,0,124,13,116,32,0,0,
+ 0,0,0,0,0,0,171,2,0,0,0,0,0,0,115,15,
+ 116,35,0,0,0,0,0,0,0,0,100,11,124,1,155,2,
+ 100,12,157,3,171,1,0,0,0,0,0,0,130,1,124,13,
+ 83,0,41,13,78,41,2,114,49,0,0,0,114,18,0,0,
+ 0,114,6,0,0,0,114,1,0,0,0,114,126,0,0,0,
+ 218,5,110,101,118,101,114,218,6,97,108,119,97,121,115,114,
+ 142,0,0,0,114,137,0,0,0,114,138,0,0,0,122,22,
+ 98,121,116,101,99,111,100,101,32,105,115,32,115,116,97,108,
+ 101,32,102,111,114,32,122,16,99,111,109,112,105,108,101,100,
+ 32,109,111,100,117,108,101,32,122,21,32,105,115,32,110,111,
+ 116,32,97,32,99,111,100,101,32,111,98,106,101,99,116,41,
+ 18,114,27,0,0,0,218,13,95,99,108,97,115,115,105,102,
+ 121,95,112,121,99,218,4,95,105,109,112,218,21,99,104,101,
+ 99,107,95,104,97,115,104,95,98,97,115,101,100,95,112,121,
+ 99,115,218,15,95,103,101,116,95,112,121,99,95,115,111,117,
+ 114,99,101,218,11,115,111,117,114,99,101,95,104,97,115,104,
+ 218,17,95,82,65,87,95,77,65,71,73,67,95,78,85,77,
+ 66,69,82,218,18,95,118,97,108,105,100,97,116,101,95,104,
+ 97,115,104,95,112,121,99,218,29,95,103,101,116,95,109,116,
+ 105,109,101,95,97,110,100,95,115,105,122,101,95,111,102,95,
+ 115,111,117,114,99,101,114,207,0,0,0,114,3,0,0,0,
+ 114,52,0,0,0,114,108,0,0,0,218,7,109,97,114,115,
+ 104,97,108,218,5,108,111,97,100,115,114,20,0,0,0,218,
+ 10,95,99,111,100,101,95,116,121,112,101,114,22,0,0,0,
+ 41,14,114,41,0,0,0,114,76,0,0,0,114,89,0,0,
+ 0,114,58,0,0,0,114,174,0,0,0,218,11,101,120,99,
+ 95,100,101,116,97,105,108,115,114,180,0,0,0,218,10,104,
+ 97,115,104,95,98,97,115,101,100,218,12,99,104,101,99,107,
+ 95,115,111,117,114,99,101,218,12,115,111,117,114,99,101,95,
+ 98,121,116,101,115,114,215,0,0,0,218,12,115,111,117,114,
+ 99,101,95,109,116,105,109,101,218,11,115,111,117,114,99,101,
+ 95,115,105,122,101,114,68,0,0,0,115,14,0,0,0,32,
+ 32,32,32,32,32,32,32,32,32,32,32,32,32,114,13,0,
+ 0,0,218,15,95,117,110,109,97,114,115,104,97,108,95,99,
+ 111,100,101,114,228,0,0,0,71,2,0,0,115,65,1,0,
+ 0,128,0,224,16,24,216,16,24,241,5,3,19,6,128,75,
+ 244,10,0,13,32,215,12,45,209,12,45,168,100,176,72,184,
+ 107,211,12,74,128,69,224,17,22,152,19,145,27,160,1,209,
+ 17,33,128,74,217,7,17,216,23,28,152,116,145,124,160,113,
+ 209,23,40,136,12,220,12,16,215,12,38,209,12,38,168,39,
+ 210,12,49,217,17,29,164,20,215,33,59,209,33,59,184,120,
+ 210,33,71,220,27,42,168,52,176,24,211,27,58,136,76,216,
+ 15,27,208,15,39,220,30,34,215,30,46,209,30,46,220,20,
+ 39,215,20,57,209,20,57,216,20,32,243,5,3,31,18,144,
+ 11,244,10,0,17,36,215,16,54,209,16,54,216,20,24,152,
+ 43,160,120,176,27,245,3,1,17,62,244,8,0,13,42,168,
+ 36,176,8,211,12,57,241,3,0,9,34,136,12,144,107,241,
+ 6,0,12,24,244,6,0,21,30,156,110,168,84,176,33,176,
+ 66,168,90,211,30,56,184,44,212,20,71,220,20,34,160,52,
+ 168,2,168,50,160,59,211,20,47,176,59,210,20,62,220,16,
+ 26,215,16,43,209,16,43,216,22,44,168,88,168,76,208,20,
+ 57,244,3,1,17,59,224,23,27,228,11,18,143,61,137,61,
+ 152,20,152,98,152,99,152,25,211,11,35,128,68,220,11,21,
+ 144,100,156,74,212,11,39,220,14,23,208,26,42,168,56,168,
+ 44,208,54,75,208,24,76,211,14,77,208,8,77,216,11,15,
+ 128,75,114,12,0,0,0,99,1,0,0,0,0,0,0,0,
+ 0,0,0,0,4,0,0,0,3,0,0,0,243,78,0,0,
+ 0,151,0,124,0,106,1,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,100,1,100,2,171,2,0,
+ 0,0,0,0,0,125,0,124,0,106,1,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,100,3,100,
+ 2,171,2,0,0,0,0,0,0,125,0,124,0,83,0,41,
+ 4,78,115,2,0,0,0,13,10,243,1,0,0,0,10,243,
+ 1,0,0,0,13,41,1,114,25,0,0,0,41,1,218,6,
+ 115,111,117,114,99,101,115,1,0,0,0,32,114,13,0,0,
+ 0,218,23,95,110,111,114,109,97,108,105,122,101,95,108,105,
+ 110,101,95,101,110,100,105,110,103,115,114,233,0,0,0,116,
+ 2,0,0,115,39,0,0,0,128,0,216,13,19,143,94,137,
+ 94,152,71,160,85,211,13,43,128,70,216,13,19,143,94,137,
+ 94,152,69,160,53,211,13,41,128,70,216,11,17,128,77,114,
+ 12,0,0,0,99,2,0,0,0,0,0,0,0,0,0,0,
+ 0,6,0,0,0,3,0,0,0,243,54,0,0,0,151,0,
+ 116,1,0,0,0,0,0,0,0,0,124,1,171,1,0,0,
+ 0,0,0,0,125,1,116,3,0,0,0,0,0,0,0,0,
+ 124,1,124,0,100,1,100,2,172,3,171,4,0,0,0,0,
+ 0,0,83,0,41,4,78,114,106,0,0,0,84,41,1,218,
+ 12,100,111,110,116,95,105,110,104,101,114,105,116,41,2,114,
+ 233,0,0,0,218,7,99,111,109,112,105,108,101,41,2,114,
+ 76,0,0,0,114,232,0,0,0,115,2,0,0,0,32,32,
+ 114,13,0,0,0,218,15,95,99,111,109,112,105,108,101,95,
+ 115,111,117,114,99,101,114,237,0,0,0,123,2,0,0,115,
+ 29,0,0,0,128,0,220,13,36,160,86,211,13,44,128,70,
+ 220,11,18,144,54,152,56,160,86,184,36,212,11,63,208,4,
+ 63,114,12,0,0,0,99,2,0,0,0,0,0,0,0,0,
+ 0,0,0,11,0,0,0,3,0,0,0,243,122,0,0,0,
+ 151,0,116,1,0,0,0,0,0,0,0,0,106,2,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 124,0,100,1,122,9,0,0,100,2,122,0,0,0,124,0,
+ 100,3,122,9,0,0,100,4,122,1,0,0,124,0,100,5,
+ 122,1,0,0,124,1,100,6,122,9,0,0,124,1,100,3,
+ 122,9,0,0,100,7,122,1,0,0,124,1,100,5,122,1,
+ 0,0,100,8,122,5,0,0,100,9,100,9,100,9,102,9,
+ 171,1,0,0,0,0,0,0,83,0,41,10,78,233,9,0,
+ 0,0,105,188,7,0,0,233,5,0,0,0,233,15,0,0,
+ 0,233,31,0,0,0,233,11,0,0,0,233,63,0,0,0,
+ 114,126,0,0,0,114,19,0,0,0,41,2,114,182,0,0,
+ 0,218,6,109,107,116,105,109,101,41,2,218,1,100,114,190,
+ 0,0,0,115,2,0,0,0,32,32,114,13,0,0,0,218,
+ 14,95,112,97,114,115,101,95,100,111,115,116,105,109,101,114,
+ 247,0,0,0,129,2,0,0,115,89,0,0,0,128,0,220,
+ 11,15,143,59,137,59,216,9,10,136,97,137,22,144,52,137,
+ 15,216,9,10,136,97,137,22,144,51,137,14,216,8,9,136,
+ 68,137,8,216,8,9,136,82,137,7,216,9,10,136,97,137,
+ 22,144,52,137,15,216,9,10,136,84,137,24,144,81,137,14,
+ 216,8,10,136,66,144,2,240,15,7,24,20,243,0,7,12,
+ 21,240,0,7,5,21,114,12,0,0,0,99,2,0,0,0,
+ 0,0,0,0,0,0,0,0,5,0,0,0,3,0,0,0,
+ 243,172,0,0,0,151,0,9,0,124,1,100,1,100,0,26,
+ 0,100,2,118,0,115,2,74,0,130,1,124,1,100,0,100,
+ 1,26,0,125,1,124,0,106,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,124,1,25,0,0,
+ 0,125,2,124,2,100,3,25,0,0,0,125,3,124,2,100,
+ 4,25,0,0,0,125,4,124,2,100,5,25,0,0,0,125,
+ 5,116,3,0,0,0,0,0,0,0,0,124,4,124,3,171,
+ 2,0,0,0,0,0,0,124,5,102,2,83,0,35,0,116,
+ 4,0,0,0,0,0,0,0,0,116,6,0,0,0,0,0,
+ 0,0,0,116,8,0,0,0,0,0,0,0,0,102,3,36,
+ 0,114,3,1,0,89,0,121,6,119,0,120,3,89,0,119,
+ 1,41,7,78,114,19,0,0,0,169,2,218,1,99,218,1,
+ 111,114,240,0,0,0,233,6,0,0,0,233,3,0,0,0,
+ 41,2,114,1,0,0,0,114,1,0,0,0,41,5,114,37,
+ 0,0,0,114,247,0,0,0,114,35,0,0,0,218,10,73,
+ 110,100,101,120,69,114,114,111,114,114,22,0,0,0,41,6,
+ 114,41,0,0,0,114,18,0,0,0,114,78,0,0,0,114,
+ 182,0,0,0,114,183,0,0,0,218,17,117,110,99,111,109,
+ 112,114,101,115,115,101,100,95,115,105,122,101,115,6,0,0,
+ 0,32,32,32,32,32,32,114,13,0,0,0,114,218,0,0,
+ 0,114,218,0,0,0,142,2,0,0,115,123,0,0,0,128,
+ 0,240,2,12,5,20,224,15,19,144,66,144,67,136,121,152,
+ 74,209,15,38,209,8,38,216,15,19,144,67,144,82,136,121,
+ 136,4,216,20,24,151,75,145,75,160,4,209,20,37,136,9,
+ 240,6,0,16,25,152,17,137,124,136,4,216,15,24,152,17,
+ 137,124,136,4,216,28,37,160,97,153,76,208,8,25,220,15,
+ 29,152,100,160,68,211,15,41,208,43,60,208,15,60,208,8,
+ 60,248,220,12,20,148,106,164,41,208,11,44,242,0,1,5,
+ 20,217,15,19,240,3,1,5,20,250,115,15,0,0,0,130,
+ 57,60,0,188,20,65,19,3,193,18,1,65,19,3,99,2,
+ 0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,3,
+ 0,0,0,243,136,0,0,0,151,0,124,1,100,1,100,0,
+ 26,0,100,2,118,0,115,2,74,0,130,1,124,1,100,0,
+ 100,1,26,0,125,1,9,0,124,0,106,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,1,
+ 25,0,0,0,125,2,116,3,0,0,0,0,0,0,0,0,
+ 124,0,106,4,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,124,2,171,2,0,0,0,0,0,0,
+ 83,0,35,0,116,6,0,0,0,0,0,0,0,0,36,0,
+ 114,3,1,0,89,0,121,0,119,0,120,3,89,0,119,1,
+ 41,3,78,114,19,0,0,0,114,249,0,0,0,41,4,114,
+ 37,0,0,0,114,75,0,0,0,114,38,0,0,0,114,35,
+ 0,0,0,41,3,114,41,0,0,0,114,18,0,0,0,114,
+ 78,0,0,0,115,3,0,0,0,32,32,32,114,13,0,0,
+ 0,114,214,0,0,0,114,214,0,0,0,161,2,0,0,115,
+ 88,0,0,0,128,0,224,11,15,144,2,144,3,136,57,152,
+ 10,209,11,34,209,4,34,216,11,15,144,3,144,18,136,57,
+ 128,68,240,4,5,5,50,216,20,24,151,75,145,75,160,4,
+ 209,20,37,136,9,244,8,0,16,25,152,20,159,28,153,28,
+ 160,121,211,15,49,208,8,49,248,244,7,0,12,20,242,0,
+ 1,5,20,217,15,19,240,3,1,5,20,250,115,15,0,0,
+ 0,144,15,53,0,181,9,65,1,3,193,0,1,65,1,3,
+ 99,2,0,0,0,0,0,0,0,0,0,0,0,8,0,0,
+ 0,3,0,0,0,243,226,1,0,0,151,0,116,1,0,0,
+ 0,0,0,0,0,0,124,0,124,1,171,2,0,0,0,0,
+ 0,0,125,2,100,0,125,3,116,2,0,0,0,0,0,0,
+ 0,0,68,0,93,141,0,0,92,3,0,0,125,4,125,5,
+ 125,6,124,2,124,4,122,0,0,0,125,7,116,5,0,0,
+ 0,0,0,0,0,0,106,6,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,100,1,124,0,106,8,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,116,10,0,0,0,0,0,0,0,0,124,7,100,2,
+ 172,3,171,5,0,0,0,0,0,0,1,0,9,0,124,0,
+ 106,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,124,7,25,0,0,0,125,8,124,8,100,4,
+ 25,0,0,0,125,9,116,15,0,0,0,0,0,0,0,0,
+ 124,0,106,8,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,124,8,171,2,0,0,0,0,0,0,
+ 125,10,100,0,125,11,124,5,114,17,9,0,116,17,0,0,
+ 0,0,0,0,0,0,124,0,124,9,124,7,124,1,124,10,
+ 171,5,0,0,0,0,0,0,125,11,110,12,116,21,0,0,
+ 0,0,0,0,0,0,124,9,124,10,171,2,0,0,0,0,
+ 0,0,125,11,124,11,128,1,140,131,124,8,100,4,25,0,
+ 0,0,125,9,124,11,124,6,124,9,102,3,99,2,1,0,
+ 83,0,4,0,124,3,114,19,100,5,124,3,155,0,157,2,
+ 125,13,116,25,0,0,0,0,0,0,0,0,124,13,124,1,
+ 172,6,171,2,0,0,0,0,0,0,124,3,130,2,116,25,
+ 0,0,0,0,0,0,0,0,100,7,124,1,155,2,157,2,
+ 124,1,172,6,171,2,0,0,0,0,0,0,130,1,35,0,
+ 116,18,0,0,0,0,0,0,0,0,36,0,114,12,125,12,
+ 124,12,125,3,89,0,100,0,125,12,126,12,140,69,100,0,
+ 125,12,126,12,119,1,119,0,120,3,89,0,119,1,35,0,
+ 116,22,0,0,0,0,0,0,0,0,36,0,114,3,1,0,
+ 89,0,140,216,119,0,120,3,89,0,119,1,41,8,78,122,
+ 13,116,114,121,105,110,103,32,123,125,123,125,123,125,114,126,
+ 0,0,0,41,1,218,9,118,101,114,98,111,115,105,116,121,
+ 114,1,0,0,0,122,20,109,111,100,117,108,101,32,108,111,
+ 97,100,32,102,97,105,108,101,100,58,32,114,84,0,0,0,
+ 114,83,0,0,0,41,13,114,54,0,0,0,114,131,0,0,
+ 0,114,52,0,0,0,114,108,0,0,0,114,38,0,0,0,
+ 114,26,0,0,0,114,37,0,0,0,114,75,0,0,0,114,
+ 228,0,0,0,114,107,0,0,0,114,237,0,0,0,114,35,
+ 0,0,0,114,4,0,0,0,41,14,114,41,0,0,0,114,
+ 58,0,0,0,114,18,0,0,0,218,12,105,109,112,111,114,
+ 116,95,101,114,114,111,114,114,132,0,0,0,114,133,0,0,
+ 0,114,69,0,0,0,114,89,0,0,0,114,78,0,0,0,
+ 114,61,0,0,0,114,174,0,0,0,114,68,0,0,0,218,
+ 3,101,120,99,114,109,0,0,0,115,14,0,0,0,32,32,
+ 32,32,32,32,32,32,32,32,32,32,32,32,114,13,0,0,
+ 0,114,66,0,0,0,114,66,0,0,0,176,2,0,0,115,
+ 41,1,0,0,128,0,220,11,27,152,68,160,40,211,11,43,
+ 128,68,216,19,23,128,76,220,41,57,242,0,29,5,83,1,
+ 209,8,37,136,6,144,10,152,73,216,19,23,152,38,145,61,
+ 136,8,220,8,18,215,8,35,209,8,35,160,79,176,84,183,
+ 92,177,92,196,56,200,88,208,97,98,213,8,99,240,2,20,
+ 9,44,216,24,28,159,11,153,11,160,72,209,24,45,136,73,
+ 240,8,0,23,32,160,1,145,108,136,71,220,19,28,152,84,
+ 159,92,153,92,168,57,211,19,53,136,68,216,19,23,136,68,
+ 217,15,25,240,2,3,17,39,220,27,42,168,52,176,23,184,
+ 40,192,72,200,100,211,27,83,145,68,244,8,0,24,39,160,
+ 119,176,4,211,23,53,144,4,216,15,19,136,124,240,6,0,
+ 17,25,216,22,31,160,1,145,108,136,71,216,19,23,152,25,
+ 160,71,208,19,43,210,12,43,240,47,29,5,83,1,241,50,
+ 0,12,24,216,20,40,168,28,168,14,208,18,55,136,67,220,
+ 18,32,160,19,168,56,212,18,52,184,44,208,12,70,228,18,
+ 32,208,35,53,176,104,176,92,208,33,66,200,24,212,18,82,
+ 208,12,82,248,244,31,0,24,35,242,0,1,17,39,216,35,
+ 38,149,76,251,240,3,1,17,39,251,244,19,0,16,24,242,
+ 0,1,9,17,217,12,16,240,3,1,9,17,250,115,42,0,
+ 0,0,193,10,15,67,34,2,193,57,15,67,10,2,195,10,
+ 9,67,31,5,195,19,2,67,26,5,195,26,5,67,31,5,
+ 195,34,9,67,46,5,195,45,1,67,46,5,41,46,114,123,
+ 0,0,0,218,26,95,102,114,111,122,101,110,95,105,109,112,
+ 111,114,116,108,105,98,95,101,120,116,101,114,110,97,108,114,
+ 27,0,0,0,114,2,0,0,0,114,3,0,0,0,218,17,
+ 95,102,114,111,122,101,110,95,105,109,112,111,114,116,108,105,
+ 98,114,52,0,0,0,114,212,0,0,0,114,154,0,0,0,
+ 114,219,0,0,0,114,97,0,0,0,114,182,0,0,0,114,
+ 94,0,0,0,218,7,95,95,97,108,108,95,95,114,26,0,
+ 0,0,218,15,112,97,116,104,95,115,101,112,97,114,97,116,
+ 111,114,115,114,24,0,0,0,114,107,0,0,0,114,4,0,
+ 0,0,114,34,0,0,0,114,23,0,0,0,114,100,0,0,
+ 0,114,158,0,0,0,114,160,0,0,0,114,162,0,0,0,
+ 218,13,95,76,111,97,100,101,114,66,97,115,105,99,115,114,
+ 5,0,0,0,114,131,0,0,0,114,54,0,0,0,114,55,
+ 0,0,0,114,51,0,0,0,114,36,0,0,0,114,167,0,
+ 0,0,114,195,0,0,0,114,198,0,0,0,114,75,0,0,
+ 0,114,207,0,0,0,114,228,0,0,0,218,8,95,95,99,
+ 111,100,101,95,95,114,221,0,0,0,114,233,0,0,0,114,
+ 237,0,0,0,114,247,0,0,0,114,218,0,0,0,114,214,
+ 0,0,0,114,66,0,0,0,114,11,0,0,0,114,12,0,
+ 0,0,114,13,0,0,0,250,8,60,109,111,100,117,108,101,
+ 62,114,11,1,0,0,1,0,0,0,115,51,1,0,0,240,
+ 3,1,1,1,241,2,12,1,4,243,32,0,1,57,223,0,
+ 69,219,0,38,219,0,11,219,0,10,219,0,14,219,0,10,
+ 219,0,11,219,0,16,224,11,27,152,93,208,10,43,128,7,
+ 240,6,0,12,31,215,11,39,209,11,39,128,8,216,15,34,
+ 215,15,50,209,15,50,176,49,176,50,208,15,54,128,12,244,
+ 6,1,1,9,144,91,244,0,1,1,9,240,8,0,24,26,
+ 208,0,20,225,15,19,144,67,139,121,128,12,224,23,25,208,
+ 0,20,216,21,34,208,0,18,216,18,31,128,15,244,4,108,
+ 3,1,79,1,208,18,37,215,18,51,209,18,51,244,0,108,
+ 3,1,79,1,240,106,7,0,6,14,144,14,209,5,30,160,
+ 4,160,100,208,4,43,216,5,13,144,13,209,5,29,152,117,
+ 160,100,208,4,43,216,4,25,216,4,25,240,9,5,20,2,
+ 208,0,16,242,18,1,1,53,242,8,6,1,34,242,18,6,
+ 1,16,242,62,123,1,1,17,240,74,4,24,5,47,240,5,
+ 0,1,12,240,58,0,19,24,128,15,242,10,18,1,22,242,
+ 42,40,1,37,242,92,1,2,1,29,242,16,38,1,16,241,
+ 80,1,0,14,18,144,47,215,18,42,209,18,42,211,13,43,
+ 128,10,242,10,3,1,18,242,14,2,1,64,1,242,12,8,
+ 1,21,242,26,13,1,20,242,38,10,1,50,243,30,32,1,
+ 83,1,114,12,0,0,0,
+};
diff --git a/contrib/tools/python3/Python/future.c b/contrib/tools/python3/Python/future.c
new file mode 100644
index 00000000000..d56f7330964
--- /dev/null
+++ b/contrib/tools/python3/Python/future.c
@@ -0,0 +1,109 @@
+#include "Python.h"
+#include "pycore_ast.h" // _PyAST_GetDocString()
+
+#define UNDEFINED_FUTURE_FEATURE "future feature %.100s is not defined"
+
+static int
+future_check_features(PyFutureFeatures *ff, stmt_ty s, PyObject *filename)
+{
+ int i;
+
+ assert(s->kind == ImportFrom_kind);
+
+ asdl_alias_seq *names = s->v.ImportFrom.names;
+ for (i = 0; i < asdl_seq_LEN(names); i++) {
+ alias_ty name = (alias_ty)asdl_seq_GET(names, i);
+ const char *feature = PyUnicode_AsUTF8(name->name);
+ if (!feature)
+ return 0;
+ if (strcmp(feature, FUTURE_NESTED_SCOPES) == 0) {
+ continue;
+ } else if (strcmp(feature, FUTURE_GENERATORS) == 0) {
+ continue;
+ } else if (strcmp(feature, FUTURE_DIVISION) == 0) {
+ continue;
+ } else if (strcmp(feature, FUTURE_ABSOLUTE_IMPORT) == 0) {
+ continue;
+ } else if (strcmp(feature, FUTURE_WITH_STATEMENT) == 0) {
+ continue;
+ } else if (strcmp(feature, FUTURE_PRINT_FUNCTION) == 0) {
+ continue;
+ } else if (strcmp(feature, FUTURE_UNICODE_LITERALS) == 0) {
+ continue;
+ } else if (strcmp(feature, FUTURE_BARRY_AS_BDFL) == 0) {
+ ff->ff_features |= CO_FUTURE_BARRY_AS_BDFL;
+ } else if (strcmp(feature, FUTURE_GENERATOR_STOP) == 0) {
+ continue;
+ } else if (strcmp(feature, FUTURE_ANNOTATIONS) == 0) {
+ ff->ff_features |= CO_FUTURE_ANNOTATIONS;
+ } else if (strcmp(feature, "braces") == 0) {
+ PyErr_SetString(PyExc_SyntaxError,
+ "not a chance");
+ PyErr_SyntaxLocationObject(filename, s->lineno, s->col_offset + 1);
+ return 0;
+ } else {
+ PyErr_Format(PyExc_SyntaxError,
+ UNDEFINED_FUTURE_FEATURE, feature);
+ PyErr_SyntaxLocationObject(filename, s->lineno, s->col_offset + 1);
+ return 0;
+ }
+ }
+ return 1;
+}
+
+static int
+future_parse(PyFutureFeatures *ff, mod_ty mod, PyObject *filename)
+{
+ if (!(mod->kind == Module_kind || mod->kind == Interactive_kind)) {
+ return 1;
+ }
+
+ Py_ssize_t n = asdl_seq_LEN(mod->v.Module.body);
+ if (n == 0) {
+ return 1;
+ }
+
+ Py_ssize_t i = 0;
+ if (_PyAST_GetDocString(mod->v.Module.body) != NULL) {
+ i++;
+ }
+
+ for (; i < n; i++) {
+ stmt_ty s = (stmt_ty)asdl_seq_GET(mod->v.Module.body, i);
+
+ /* The only things that can precede a future statement
+ * are another future statement and a doc string.
+ */
+
+ if (s->kind == ImportFrom_kind) {
+ identifier modname = s->v.ImportFrom.module;
+ if (modname &&
+ _PyUnicode_EqualToASCIIString(modname, "__future__")) {
+ if (!future_check_features(ff, s, filename)) {
+ return 0;
+ }
+ ff->ff_location = SRC_LOCATION_FROM_AST(s);
+ }
+ else {
+ return 1;
+ }
+ }
+ else {
+ return 1;
+ }
+ }
+ return 1;
+}
+
+
+int
+_PyFuture_FromAST(mod_ty mod, PyObject *filename, PyFutureFeatures *ff)
+{
+ ff->ff_features = 0;
+ ff->ff_location = (_PyCompilerSrcLocation){-1, -1, -1, -1};
+
+ if (!future_parse(ff, mod, filename)) {
+ return 0;
+ }
+ return 1;
+}
diff --git a/contrib/tools/python3/Python/generated_cases.c.h b/contrib/tools/python3/Python/generated_cases.c.h
new file mode 100644
index 00000000000..ea17c0410bc
--- /dev/null
+++ b/contrib/tools/python3/Python/generated_cases.c.h
@@ -0,0 +1,4800 @@
+// This file is generated by Tools/cases_generator/generate_cases.py
+// from:
+// Python/bytecodes.c
+// Do not edit!
+
+ TARGET(NOP) {
+ DISPATCH();
+ }
+
+ TARGET(RESUME) {
+ #line 137 "Python/bytecodes.c"
+ assert(tstate->cframe == &cframe);
+ assert(frame == cframe.current_frame);
+ /* Possibly combine this with eval breaker */
+ if (frame->f_code->_co_instrumentation_version != tstate->interp->monitoring_version) {
+ int err = _Py_Instrument(frame->f_code, tstate->interp);
+ if (err) goto error;
+ next_instr--;
+ }
+ else if (_Py_atomic_load_relaxed_int32(&tstate->interp->ceval.eval_breaker) && oparg < 2) {
+ goto handle_eval_breaker;
+ }
+ #line 24 "Python/generated_cases.c.h"
+ DISPATCH();
+ }
+
+ TARGET(INSTRUMENTED_RESUME) {
+ #line 151 "Python/bytecodes.c"
+ /* Possible performance enhancement:
+ * We need to check the eval breaker anyway, can we
+ * combine the instrument verison check and the eval breaker test?
+ */
+ if (frame->f_code->_co_instrumentation_version != tstate->interp->monitoring_version) {
+ if (_Py_Instrument(frame->f_code, tstate->interp)) {
+ goto error;
+ }
+ next_instr--;
+ }
+ else {
+ _PyFrame_SetStackPointer(frame, stack_pointer);
+ int err = _Py_call_instrumentation(
+ tstate, oparg > 0, frame, next_instr-1);
+ stack_pointer = _PyFrame_GetStackPointer(frame);
+ if (err) goto error;
+ if (frame->prev_instr != next_instr-1) {
+ /* Instrumentation has jumped */
+ next_instr = frame->prev_instr;
+ DISPATCH();
+ }
+ if (_Py_atomic_load_relaxed_int32(&tstate->interp->ceval.eval_breaker) && oparg < 2) {
+ goto handle_eval_breaker;
+ }
+ }
+ #line 55 "Python/generated_cases.c.h"
+ DISPATCH();
+ }
+
+ TARGET(LOAD_CLOSURE) {
+ PyObject *value;
+ #line 179 "Python/bytecodes.c"
+ /* We keep LOAD_CLOSURE so that the bytecode stays more readable. */
+ value = GETLOCAL(oparg);
+ if (value == NULL) goto unbound_local_error;
+ Py_INCREF(value);
+ #line 66 "Python/generated_cases.c.h"
+ STACK_GROW(1);
+ stack_pointer[-1] = value;
+ DISPATCH();
+ }
+
+ TARGET(LOAD_FAST_CHECK) {
+ PyObject *value;
+ #line 186 "Python/bytecodes.c"
+ value = GETLOCAL(oparg);
+ if (value == NULL) goto unbound_local_error;
+ Py_INCREF(value);
+ #line 78 "Python/generated_cases.c.h"
+ STACK_GROW(1);
+ stack_pointer[-1] = value;
+ DISPATCH();
+ }
+
+ TARGET(LOAD_FAST) {
+ PyObject *value;
+ #line 192 "Python/bytecodes.c"
+ value = GETLOCAL(oparg);
+ assert(value != NULL);
+ Py_INCREF(value);
+ #line 90 "Python/generated_cases.c.h"
+ STACK_GROW(1);
+ stack_pointer[-1] = value;
+ DISPATCH();
+ }
+
+ TARGET(LOAD_FAST_AND_CLEAR) {
+ PyObject *value;
+ #line 198 "Python/bytecodes.c"
+ value = GETLOCAL(oparg);
+ // do not use SETLOCAL here, it decrefs the old value
+ GETLOCAL(oparg) = NULL;
+ #line 102 "Python/generated_cases.c.h"
+ STACK_GROW(1);
+ stack_pointer[-1] = value;
+ DISPATCH();
+ }
+
+ TARGET(LOAD_CONST) {
+ PREDICTED(LOAD_CONST);
+ PyObject *value;
+ #line 204 "Python/bytecodes.c"
+ value = GETITEM(frame->f_code->co_consts, oparg);
+ Py_INCREF(value);
+ #line 114 "Python/generated_cases.c.h"
+ STACK_GROW(1);
+ stack_pointer[-1] = value;
+ DISPATCH();
+ }
+
+ TARGET(STORE_FAST) {
+ PyObject *value = stack_pointer[-1];
+ #line 209 "Python/bytecodes.c"
+ SETLOCAL(oparg, value);
+ #line 124 "Python/generated_cases.c.h"
+ STACK_SHRINK(1);
+ DISPATCH();
+ }
+
+ TARGET(LOAD_FAST__LOAD_FAST) {
+ PyObject *_tmp_1;
+ PyObject *_tmp_2;
+ {
+ PyObject *value;
+ #line 192 "Python/bytecodes.c"
+ value = GETLOCAL(oparg);
+ assert(value != NULL);
+ Py_INCREF(value);
+ #line 138 "Python/generated_cases.c.h"
+ _tmp_2 = value;
+ }
+ oparg = (next_instr++)->op.arg;
+ {
+ PyObject *value;
+ #line 192 "Python/bytecodes.c"
+ value = GETLOCAL(oparg);
+ assert(value != NULL);
+ Py_INCREF(value);
+ #line 148 "Python/generated_cases.c.h"
+ _tmp_1 = value;
+ }
+ STACK_GROW(2);
+ stack_pointer[-1] = _tmp_1;
+ stack_pointer[-2] = _tmp_2;
+ DISPATCH();
+ }
+
+ TARGET(LOAD_FAST__LOAD_CONST) {
+ PyObject *_tmp_1;
+ PyObject *_tmp_2;
+ {
+ PyObject *value;
+ #line 192 "Python/bytecodes.c"
+ value = GETLOCAL(oparg);
+ assert(value != NULL);
+ Py_INCREF(value);
+ #line 166 "Python/generated_cases.c.h"
+ _tmp_2 = value;
+ }
+ oparg = (next_instr++)->op.arg;
+ {
+ PyObject *value;
+ #line 204 "Python/bytecodes.c"
+ value = GETITEM(frame->f_code->co_consts, oparg);
+ Py_INCREF(value);
+ #line 175 "Python/generated_cases.c.h"
+ _tmp_1 = value;
+ }
+ STACK_GROW(2);
+ stack_pointer[-1] = _tmp_1;
+ stack_pointer[-2] = _tmp_2;
+ DISPATCH();
+ }
+
+ TARGET(STORE_FAST__LOAD_FAST) {
+ PyObject *_tmp_1 = stack_pointer[-1];
+ {
+ PyObject *value = _tmp_1;
+ #line 209 "Python/bytecodes.c"
+ SETLOCAL(oparg, value);
+ #line 190 "Python/generated_cases.c.h"
+ }
+ oparg = (next_instr++)->op.arg;
+ {
+ PyObject *value;
+ #line 192 "Python/bytecodes.c"
+ value = GETLOCAL(oparg);
+ assert(value != NULL);
+ Py_INCREF(value);
+ #line 199 "Python/generated_cases.c.h"
+ _tmp_1 = value;
+ }
+ stack_pointer[-1] = _tmp_1;
+ DISPATCH();
+ }
+
+ TARGET(STORE_FAST__STORE_FAST) {
+ PyObject *_tmp_1 = stack_pointer[-1];
+ PyObject *_tmp_2 = stack_pointer[-2];
+ {
+ PyObject *value = _tmp_1;
+ #line 209 "Python/bytecodes.c"
+ SETLOCAL(oparg, value);
+ #line 213 "Python/generated_cases.c.h"
+ }
+ oparg = (next_instr++)->op.arg;
+ {
+ PyObject *value = _tmp_2;
+ #line 209 "Python/bytecodes.c"
+ SETLOCAL(oparg, value);
+ #line 220 "Python/generated_cases.c.h"
+ }
+ STACK_SHRINK(2);
+ DISPATCH();
+ }
+
+ TARGET(LOAD_CONST__LOAD_FAST) {
+ PyObject *_tmp_1;
+ PyObject *_tmp_2;
+ {
+ PyObject *value;
+ #line 204 "Python/bytecodes.c"
+ value = GETITEM(frame->f_code->co_consts, oparg);
+ Py_INCREF(value);
+ #line 234 "Python/generated_cases.c.h"
+ _tmp_2 = value;
+ }
+ oparg = (next_instr++)->op.arg;
+ {
+ PyObject *value;
+ #line 192 "Python/bytecodes.c"
+ value = GETLOCAL(oparg);
+ assert(value != NULL);
+ Py_INCREF(value);
+ #line 244 "Python/generated_cases.c.h"
+ _tmp_1 = value;
+ }
+ STACK_GROW(2);
+ stack_pointer[-1] = _tmp_1;
+ stack_pointer[-2] = _tmp_2;
+ DISPATCH();
+ }
+
+ TARGET(POP_TOP) {
+ PyObject *value = stack_pointer[-1];
+ #line 219 "Python/bytecodes.c"
+ #line 256 "Python/generated_cases.c.h"
+ Py_DECREF(value);
+ STACK_SHRINK(1);
+ DISPATCH();
+ }
+
+ TARGET(PUSH_NULL) {
+ PyObject *res;
+ #line 223 "Python/bytecodes.c"
+ res = NULL;
+ #line 266 "Python/generated_cases.c.h"
+ STACK_GROW(1);
+ stack_pointer[-1] = res;
+ DISPATCH();
+ }
+
+ TARGET(END_FOR) {
+ PyObject *_tmp_1 = stack_pointer[-1];
+ PyObject *_tmp_2 = stack_pointer[-2];
+ {
+ PyObject *value = _tmp_1;
+ #line 219 "Python/bytecodes.c"
+ #line 278 "Python/generated_cases.c.h"
+ Py_DECREF(value);
+ }
+ {
+ PyObject *value = _tmp_2;
+ #line 219 "Python/bytecodes.c"
+ #line 284 "Python/generated_cases.c.h"
+ Py_DECREF(value);
+ }
+ STACK_SHRINK(2);
+ DISPATCH();
+ }
+
+ TARGET(INSTRUMENTED_END_FOR) {
+ PyObject *value = stack_pointer[-1];
+ PyObject *receiver = stack_pointer[-2];
+ #line 229 "Python/bytecodes.c"
+ /* Need to create a fake StopIteration error here,
+ * to conform to PEP 380 */
+ if (PyGen_Check(receiver)) {
+ PyErr_SetObject(PyExc_StopIteration, value);
+ if (monitor_stop_iteration(tstate, frame, next_instr-1)) {
+ goto error;
+ }
+ PyErr_SetRaisedException(NULL);
+ }
+ #line 304 "Python/generated_cases.c.h"
+ Py_DECREF(receiver);
+ Py_DECREF(value);
+ STACK_SHRINK(2);
+ DISPATCH();
+ }
+
+ TARGET(END_SEND) {
+ PyObject *value = stack_pointer[-1];
+ PyObject *receiver = stack_pointer[-2];
+ #line 242 "Python/bytecodes.c"
+ Py_DECREF(receiver);
+ #line 316 "Python/generated_cases.c.h"
+ STACK_SHRINK(1);
+ stack_pointer[-1] = value;
+ DISPATCH();
+ }
+
+ TARGET(INSTRUMENTED_END_SEND) {
+ PyObject *value = stack_pointer[-1];
+ PyObject *receiver = stack_pointer[-2];
+ #line 246 "Python/bytecodes.c"
+ if (PyGen_Check(receiver) || PyCoro_CheckExact(receiver)) {
+ PyErr_SetObject(PyExc_StopIteration, value);
+ if (monitor_stop_iteration(tstate, frame, next_instr-1)) {
+ goto error;
+ }
+ PyErr_SetRaisedException(NULL);
+ }
+ Py_DECREF(receiver);
+ #line 334 "Python/generated_cases.c.h"
+ STACK_SHRINK(1);
+ stack_pointer[-1] = value;
+ DISPATCH();
+ }
+
+ TARGET(UNARY_NEGATIVE) {
+ PyObject *value = stack_pointer[-1];
+ PyObject *res;
+ #line 257 "Python/bytecodes.c"
+ res = PyNumber_Negative(value);
+ #line 345 "Python/generated_cases.c.h"
+ Py_DECREF(value);
+ #line 259 "Python/bytecodes.c"
+ if (res == NULL) goto pop_1_error;
+ #line 349 "Python/generated_cases.c.h"
+ stack_pointer[-1] = res;
+ DISPATCH();
+ }
+
+ TARGET(UNARY_NOT) {
+ PyObject *value = stack_pointer[-1];
+ PyObject *res;
+ #line 263 "Python/bytecodes.c"
+ int err = PyObject_IsTrue(value);
+ #line 359 "Python/generated_cases.c.h"
+ Py_DECREF(value);
+ #line 265 "Python/bytecodes.c"
+ if (err < 0) goto pop_1_error;
+ if (err == 0) {
+ res = Py_True;
+ }
+ else {
+ res = Py_False;
+ }
+ #line 369 "Python/generated_cases.c.h"
+ stack_pointer[-1] = res;
+ DISPATCH();
+ }
+
+ TARGET(UNARY_INVERT) {
+ PyObject *value = stack_pointer[-1];
+ PyObject *res;
+ #line 275 "Python/bytecodes.c"
+ res = PyNumber_Invert(value);
+ #line 379 "Python/generated_cases.c.h"
+ Py_DECREF(value);
+ #line 277 "Python/bytecodes.c"
+ if (res == NULL) goto pop_1_error;
+ #line 383 "Python/generated_cases.c.h"
+ stack_pointer[-1] = res;
+ DISPATCH();
+ }
+
+ TARGET(BINARY_OP_MULTIPLY_INT) {
+ PyObject *right = stack_pointer[-1];
+ PyObject *left = stack_pointer[-2];
+ PyObject *prod;
+ #line 294 "Python/bytecodes.c"
+ DEOPT_IF(!PyLong_CheckExact(left), BINARY_OP);
+ DEOPT_IF(!PyLong_CheckExact(right), BINARY_OP);
+ STAT_INC(BINARY_OP, hit);
+ prod = _PyLong_Multiply((PyLongObject *)left, (PyLongObject *)right);
+ _Py_DECREF_SPECIALIZED(right, (destructor)PyObject_Free);
+ _Py_DECREF_SPECIALIZED(left, (destructor)PyObject_Free);
+ if (prod == NULL) goto pop_2_error;
+ #line 400 "Python/generated_cases.c.h"
+ STACK_SHRINK(1);
+ stack_pointer[-1] = prod;
+ next_instr += 1;
+ DISPATCH();
+ }
+
+ TARGET(BINARY_OP_MULTIPLY_FLOAT) {
+ PyObject *right = stack_pointer[-1];
+ PyObject *left = stack_pointer[-2];
+ PyObject *prod;
+ #line 304 "Python/bytecodes.c"
+ DEOPT_IF(!PyFloat_CheckExact(left), BINARY_OP);
+ DEOPT_IF(!PyFloat_CheckExact(right), BINARY_OP);
+ STAT_INC(BINARY_OP, hit);
+ double dprod = ((PyFloatObject *)left)->ob_fval *
+ ((PyFloatObject *)right)->ob_fval;
+ DECREF_INPUTS_AND_REUSE_FLOAT(left, right, dprod, prod);
+ #line 418 "Python/generated_cases.c.h"
+ STACK_SHRINK(1);
+ stack_pointer[-1] = prod;
+ next_instr += 1;
+ DISPATCH();
+ }
+
+ TARGET(BINARY_OP_SUBTRACT_INT) {
+ PyObject *right = stack_pointer[-1];
+ PyObject *left = stack_pointer[-2];
+ PyObject *sub;
+ #line 313 "Python/bytecodes.c"
+ DEOPT_IF(!PyLong_CheckExact(left), BINARY_OP);
+ DEOPT_IF(!PyLong_CheckExact(right), BINARY_OP);
+ STAT_INC(BINARY_OP, hit);
+ sub = _PyLong_Subtract((PyLongObject *)left, (PyLongObject *)right);
+ _Py_DECREF_SPECIALIZED(right, (destructor)PyObject_Free);
+ _Py_DECREF_SPECIALIZED(left, (destructor)PyObject_Free);
+ if (sub == NULL) goto pop_2_error;
+ #line 437 "Python/generated_cases.c.h"
+ STACK_SHRINK(1);
+ stack_pointer[-1] = sub;
+ next_instr += 1;
+ DISPATCH();
+ }
+
+ TARGET(BINARY_OP_SUBTRACT_FLOAT) {
+ PyObject *right = stack_pointer[-1];
+ PyObject *left = stack_pointer[-2];
+ PyObject *sub;
+ #line 323 "Python/bytecodes.c"
+ DEOPT_IF(!PyFloat_CheckExact(left), BINARY_OP);
+ DEOPT_IF(!PyFloat_CheckExact(right), BINARY_OP);
+ STAT_INC(BINARY_OP, hit);
+ double dsub = ((PyFloatObject *)left)->ob_fval - ((PyFloatObject *)right)->ob_fval;
+ DECREF_INPUTS_AND_REUSE_FLOAT(left, right, dsub, sub);
+ #line 454 "Python/generated_cases.c.h"
+ STACK_SHRINK(1);
+ stack_pointer[-1] = sub;
+ next_instr += 1;
+ DISPATCH();
+ }
+
+ TARGET(BINARY_OP_ADD_UNICODE) {
+ PyObject *right = stack_pointer[-1];
+ PyObject *left = stack_pointer[-2];
+ PyObject *res;
+ #line 331 "Python/bytecodes.c"
+ DEOPT_IF(!PyUnicode_CheckExact(left), BINARY_OP);
+ DEOPT_IF(Py_TYPE(right) != Py_TYPE(left), BINARY_OP);
+ STAT_INC(BINARY_OP, hit);
+ res = PyUnicode_Concat(left, right);
+ _Py_DECREF_SPECIALIZED(left, _PyUnicode_ExactDealloc);
+ _Py_DECREF_SPECIALIZED(right, _PyUnicode_ExactDealloc);
+ if (res == NULL) goto pop_2_error;
+ #line 473 "Python/generated_cases.c.h"
+ STACK_SHRINK(1);
+ stack_pointer[-1] = res;
+ next_instr += 1;
+ DISPATCH();
+ }
+
+ TARGET(BINARY_OP_INPLACE_ADD_UNICODE) {
+ PyObject *right = stack_pointer[-1];
+ PyObject *left = stack_pointer[-2];
+ #line 347 "Python/bytecodes.c"
+ DEOPT_IF(!PyUnicode_CheckExact(left), BINARY_OP);
+ DEOPT_IF(Py_TYPE(right) != Py_TYPE(left), BINARY_OP);
+ _Py_CODEUNIT true_next = next_instr[INLINE_CACHE_ENTRIES_BINARY_OP];
+ assert(true_next.op.code == STORE_FAST ||
+ true_next.op.code == STORE_FAST__LOAD_FAST);
+ PyObject **target_local = &GETLOCAL(true_next.op.arg);
+ DEOPT_IF(*target_local != left, BINARY_OP);
+ STAT_INC(BINARY_OP, hit);
+ /* Handle `left = left + right` or `left += right` for str.
+ *
+ * When possible, extend `left` in place rather than
+ * allocating a new PyUnicodeObject. This attempts to avoid
+ * quadratic behavior when one neglects to use str.join().
+ *
+ * If `left` has only two references remaining (one from
+ * the stack, one in the locals), DECREFing `left` leaves
+ * only the locals reference, so PyUnicode_Append knows
+ * that the string is safe to mutate.
+ */
+ assert(Py_REFCNT(left) >= 2);
+ _Py_DECREF_NO_DEALLOC(left);
+ PyUnicode_Append(target_local, right);
+ _Py_DECREF_SPECIALIZED(right, _PyUnicode_ExactDealloc);
+ if (*target_local == NULL) goto pop_2_error;
+ // The STORE_FAST is already done.
+ JUMPBY(INLINE_CACHE_ENTRIES_BINARY_OP + 1);
+ #line 510 "Python/generated_cases.c.h"
+ STACK_SHRINK(2);
+ DISPATCH();
+ }
+
+ TARGET(BINARY_OP_ADD_FLOAT) {
+ PyObject *right = stack_pointer[-1];
+ PyObject *left = stack_pointer[-2];
+ PyObject *sum;
+ #line 376 "Python/bytecodes.c"
+ DEOPT_IF(!PyFloat_CheckExact(left), BINARY_OP);
+ DEOPT_IF(Py_TYPE(right) != Py_TYPE(left), BINARY_OP);
+ STAT_INC(BINARY_OP, hit);
+ double dsum = ((PyFloatObject *)left)->ob_fval +
+ ((PyFloatObject *)right)->ob_fval;
+ DECREF_INPUTS_AND_REUSE_FLOAT(left, right, dsum, sum);
+ #line 526 "Python/generated_cases.c.h"
+ STACK_SHRINK(1);
+ stack_pointer[-1] = sum;
+ next_instr += 1;
+ DISPATCH();
+ }
+
+ TARGET(BINARY_OP_ADD_INT) {
+ PyObject *right = stack_pointer[-1];
+ PyObject *left = stack_pointer[-2];
+ PyObject *sum;
+ #line 385 "Python/bytecodes.c"
+ DEOPT_IF(!PyLong_CheckExact(left), BINARY_OP);
+ DEOPT_IF(Py_TYPE(right) != Py_TYPE(left), BINARY_OP);
+ STAT_INC(BINARY_OP, hit);
+ sum = _PyLong_Add((PyLongObject *)left, (PyLongObject *)right);
+ _Py_DECREF_SPECIALIZED(right, (destructor)PyObject_Free);
+ _Py_DECREF_SPECIALIZED(left, (destructor)PyObject_Free);
+ if (sum == NULL) goto pop_2_error;
+ #line 545 "Python/generated_cases.c.h"
+ STACK_SHRINK(1);
+ stack_pointer[-1] = sum;
+ next_instr += 1;
+ DISPATCH();
+ }
+
+ TARGET(BINARY_SUBSCR) {
+ PREDICTED(BINARY_SUBSCR);
+ static_assert(INLINE_CACHE_ENTRIES_BINARY_SUBSCR == 1, "incorrect cache size");
+ PyObject *sub = stack_pointer[-1];
+ PyObject *container = stack_pointer[-2];
+ PyObject *res;
+ #line 403 "Python/bytecodes.c"
+ #if ENABLE_SPECIALIZATION
+ _PyBinarySubscrCache *cache = (_PyBinarySubscrCache *)next_instr;
+ if (ADAPTIVE_COUNTER_IS_ZERO(cache->counter)) {
+ next_instr--;
+ _Py_Specialize_BinarySubscr(container, sub, next_instr);
+ DISPATCH_SAME_OPARG();
+ }
+ STAT_INC(BINARY_SUBSCR, deferred);
+ DECREMENT_ADAPTIVE_COUNTER(cache->counter);
+ #endif /* ENABLE_SPECIALIZATION */
+ res = PyObject_GetItem(container, sub);
+ #line 570 "Python/generated_cases.c.h"
+ Py_DECREF(container);
+ Py_DECREF(sub);
+ #line 415 "Python/bytecodes.c"
+ if (res == NULL) goto pop_2_error;
+ #line 575 "Python/generated_cases.c.h"
+ STACK_SHRINK(1);
+ stack_pointer[-1] = res;
+ next_instr += 1;
+ DISPATCH();
+ }
+
+ TARGET(BINARY_SLICE) {
+ PyObject *stop = stack_pointer[-1];
+ PyObject *start = stack_pointer[-2];
+ PyObject *container = stack_pointer[-3];
+ PyObject *res;
+ #line 419 "Python/bytecodes.c"
+ PyObject *slice = _PyBuildSlice_ConsumeRefs(start, stop);
+ // Can't use ERROR_IF() here, because we haven't
+ // DECREF'ed container yet, and we still own slice.
+ if (slice == NULL) {
+ res = NULL;
+ }
+ else {
+ res = PyObject_GetItem(container, slice);
+ Py_DECREF(slice);
+ }
+ Py_DECREF(container);
+ if (res == NULL) goto pop_3_error;
+ #line 600 "Python/generated_cases.c.h"
+ STACK_SHRINK(2);
+ stack_pointer[-1] = res;
+ DISPATCH();
+ }
+
+ TARGET(STORE_SLICE) {
+ PyObject *stop = stack_pointer[-1];
+ PyObject *start = stack_pointer[-2];
+ PyObject *container = stack_pointer[-3];
+ PyObject *v = stack_pointer[-4];
+ #line 434 "Python/bytecodes.c"
+ PyObject *slice = _PyBuildSlice_ConsumeRefs(start, stop);
+ int err;
+ if (slice == NULL) {
+ err = 1;
+ }
+ else {
+ err = PyObject_SetItem(container, slice, v);
+ Py_DECREF(slice);
+ }
+ Py_DECREF(v);
+ Py_DECREF(container);
+ if (err) goto pop_4_error;
+ #line 624 "Python/generated_cases.c.h"
+ STACK_SHRINK(4);
+ DISPATCH();
+ }
+
+ TARGET(BINARY_SUBSCR_LIST_INT) {
+ PyObject *sub = stack_pointer[-1];
+ PyObject *list = stack_pointer[-2];
+ PyObject *res;
+ #line 449 "Python/bytecodes.c"
+ DEOPT_IF(!PyLong_CheckExact(sub), BINARY_SUBSCR);
+ DEOPT_IF(!PyList_CheckExact(list), BINARY_SUBSCR);
+
+ // Deopt unless 0 <= sub < PyList_Size(list)
+ DEOPT_IF(!_PyLong_IsNonNegativeCompact((PyLongObject *)sub), BINARY_SUBSCR);
+ Py_ssize_t index = ((PyLongObject*)sub)->long_value.ob_digit[0];
+ DEOPT_IF(index >= PyList_GET_SIZE(list), BINARY_SUBSCR);
+ STAT_INC(BINARY_SUBSCR, hit);
+ res = PyList_GET_ITEM(list, index);
+ assert(res != NULL);
+ Py_INCREF(res);
+ _Py_DECREF_SPECIALIZED(sub, (destructor)PyObject_Free);
+ Py_DECREF(list);
+ #line 647 "Python/generated_cases.c.h"
+ STACK_SHRINK(1);
+ stack_pointer[-1] = res;
+ next_instr += 1;
+ DISPATCH();
+ }
+
+ TARGET(BINARY_SUBSCR_TUPLE_INT) {
+ PyObject *sub = stack_pointer[-1];
+ PyObject *tuple = stack_pointer[-2];
+ PyObject *res;
+ #line 465 "Python/bytecodes.c"
+ DEOPT_IF(!PyLong_CheckExact(sub), BINARY_SUBSCR);
+ DEOPT_IF(!PyTuple_CheckExact(tuple), BINARY_SUBSCR);
+
+ // Deopt unless 0 <= sub < PyTuple_Size(list)
+ DEOPT_IF(!_PyLong_IsNonNegativeCompact((PyLongObject *)sub), BINARY_SUBSCR);
+ Py_ssize_t index = ((PyLongObject*)sub)->long_value.ob_digit[0];
+ DEOPT_IF(index >= PyTuple_GET_SIZE(tuple), BINARY_SUBSCR);
+ STAT_INC(BINARY_SUBSCR, hit);
+ res = PyTuple_GET_ITEM(tuple, index);
+ assert(res != NULL);
+ Py_INCREF(res);
+ _Py_DECREF_SPECIALIZED(sub, (destructor)PyObject_Free);
+ Py_DECREF(tuple);
+ #line 672 "Python/generated_cases.c.h"
+ STACK_SHRINK(1);
+ stack_pointer[-1] = res;
+ next_instr += 1;
+ DISPATCH();
+ }
+
+ TARGET(BINARY_SUBSCR_DICT) {
+ PyObject *sub = stack_pointer[-1];
+ PyObject *dict = stack_pointer[-2];
+ PyObject *res;
+ #line 481 "Python/bytecodes.c"
+ DEOPT_IF(!PyDict_CheckExact(dict), BINARY_SUBSCR);
+ STAT_INC(BINARY_SUBSCR, hit);
+ res = PyDict_GetItemWithError(dict, sub);
+ if (res == NULL) {
+ if (!_PyErr_Occurred(tstate)) {
+ _PyErr_SetKeyError(sub);
+ }
+ #line 691 "Python/generated_cases.c.h"
+ Py_DECREF(dict);
+ Py_DECREF(sub);
+ #line 489 "Python/bytecodes.c"
+ if (true) goto pop_2_error;
+ }
+ Py_INCREF(res); // Do this before DECREF'ing dict, sub
+ #line 698 "Python/generated_cases.c.h"
+ Py_DECREF(dict);
+ Py_DECREF(sub);
+ STACK_SHRINK(1);
+ stack_pointer[-1] = res;
+ next_instr += 1;
+ DISPATCH();
+ }
+
+ TARGET(BINARY_SUBSCR_GETITEM) {
+ PyObject *sub = stack_pointer[-1];
+ PyObject *container = stack_pointer[-2];
+ #line 496 "Python/bytecodes.c"
+ DEOPT_IF(tstate->interp->eval_frame, BINARY_SUBSCR);
+ PyTypeObject *tp = Py_TYPE(container);
+ DEOPT_IF(!PyType_HasFeature(tp, Py_TPFLAGS_HEAPTYPE), BINARY_SUBSCR);
+ PyHeapTypeObject *ht = (PyHeapTypeObject *)tp;
+ PyObject *cached = ht->_spec_cache.getitem;
+ DEOPT_IF(cached == NULL, BINARY_SUBSCR);
+ assert(PyFunction_Check(cached));
+ PyFunctionObject *getitem = (PyFunctionObject *)cached;
+ uint32_t cached_version = ht->_spec_cache.getitem_version;
+ DEOPT_IF(getitem->func_version != cached_version, BINARY_SUBSCR);
+ PyCodeObject *code = (PyCodeObject *)getitem->func_code;
+ assert(code->co_argcount == 2);
+ DEOPT_IF(!_PyThreadState_HasStackSpace(tstate, code->co_framesize), BINARY_SUBSCR);
+ STAT_INC(BINARY_SUBSCR, hit);
+ Py_INCREF(getitem);
+ _PyInterpreterFrame *new_frame = _PyFrame_PushUnchecked(tstate, getitem, 2);
+ STACK_SHRINK(2);
+ new_frame->localsplus[0] = container;
+ new_frame->localsplus[1] = sub;
+ JUMPBY(INLINE_CACHE_ENTRIES_BINARY_SUBSCR);
+ frame->return_offset = 0;
+ DISPATCH_INLINED(new_frame);
+ #line 733 "Python/generated_cases.c.h"
+ }
+
+ TARGET(LIST_APPEND) {
+ PyObject *v = stack_pointer[-1];
+ PyObject *list = stack_pointer[-(2 + (oparg-1))];
+ #line 521 "Python/bytecodes.c"
+ if (_PyList_AppendTakeRef((PyListObject *)list, v) < 0) goto pop_1_error;
+ #line 741 "Python/generated_cases.c.h"
+ STACK_SHRINK(1);
+ PREDICT(JUMP_BACKWARD);
+ DISPATCH();
+ }
+
+ TARGET(SET_ADD) {
+ PyObject *v = stack_pointer[-1];
+ PyObject *set = stack_pointer[-(2 + (oparg-1))];
+ #line 526 "Python/bytecodes.c"
+ int err = PySet_Add(set, v);
+ #line 752 "Python/generated_cases.c.h"
+ Py_DECREF(v);
+ #line 528 "Python/bytecodes.c"
+ if (err) goto pop_1_error;
+ #line 756 "Python/generated_cases.c.h"
+ STACK_SHRINK(1);
+ PREDICT(JUMP_BACKWARD);
+ DISPATCH();
+ }
+
+ TARGET(STORE_SUBSCR) {
+ PREDICTED(STORE_SUBSCR);
+ static_assert(INLINE_CACHE_ENTRIES_STORE_SUBSCR == 1, "incorrect cache size");
+ PyObject *sub = stack_pointer[-1];
+ PyObject *container = stack_pointer[-2];
+ PyObject *v = stack_pointer[-3];
+ uint16_t counter = read_u16(&next_instr[0].cache);
+ #line 539 "Python/bytecodes.c"
+ #if ENABLE_SPECIALIZATION
+ if (ADAPTIVE_COUNTER_IS_ZERO(counter)) {
+ next_instr--;
+ _Py_Specialize_StoreSubscr(container, sub, next_instr);
+ DISPATCH_SAME_OPARG();
+ }
+ STAT_INC(STORE_SUBSCR, deferred);
+ _PyStoreSubscrCache *cache = (_PyStoreSubscrCache *)next_instr;
+ DECREMENT_ADAPTIVE_COUNTER(cache->counter);
+ #else
+ (void)counter; // Unused.
+ #endif /* ENABLE_SPECIALIZATION */
+ /* container[sub] = v */
+ int err = PyObject_SetItem(container, sub, v);
+ #line 784 "Python/generated_cases.c.h"
+ Py_DECREF(v);
+ Py_DECREF(container);
+ Py_DECREF(sub);
+ #line 554 "Python/bytecodes.c"
+ if (err) goto pop_3_error;
+ #line 790 "Python/generated_cases.c.h"
+ STACK_SHRINK(3);
+ next_instr += 1;
+ DISPATCH();
+ }
+
+ TARGET(STORE_SUBSCR_LIST_INT) {
+ PyObject *sub = stack_pointer[-1];
+ PyObject *list = stack_pointer[-2];
+ PyObject *value = stack_pointer[-3];
+ #line 558 "Python/bytecodes.c"
+ DEOPT_IF(!PyLong_CheckExact(sub), STORE_SUBSCR);
+ DEOPT_IF(!PyList_CheckExact(list), STORE_SUBSCR);
+
+ // Ensure nonnegative, zero-or-one-digit ints.
+ DEOPT_IF(!_PyLong_IsNonNegativeCompact((PyLongObject *)sub), STORE_SUBSCR);
+ Py_ssize_t index = ((PyLongObject*)sub)->long_value.ob_digit[0];
+ // Ensure index < len(list)
+ DEOPT_IF(index >= PyList_GET_SIZE(list), STORE_SUBSCR);
+ STAT_INC(STORE_SUBSCR, hit);
+
+ PyObject *old_value = PyList_GET_ITEM(list, index);
+ PyList_SET_ITEM(list, index, value);
+ assert(old_value != NULL);
+ Py_DECREF(old_value);
+ _Py_DECREF_SPECIALIZED(sub, (destructor)PyObject_Free);
+ Py_DECREF(list);
+ #line 817 "Python/generated_cases.c.h"
+ STACK_SHRINK(3);
+ next_instr += 1;
+ DISPATCH();
+ }
+
+ TARGET(STORE_SUBSCR_DICT) {
+ PyObject *sub = stack_pointer[-1];
+ PyObject *dict = stack_pointer[-2];
+ PyObject *value = stack_pointer[-3];
+ #line 577 "Python/bytecodes.c"
+ DEOPT_IF(!PyDict_CheckExact(dict), STORE_SUBSCR);
+ STAT_INC(STORE_SUBSCR, hit);
+ int err = _PyDict_SetItem_Take2((PyDictObject *)dict, sub, value);
+ Py_DECREF(dict);
+ if (err) goto pop_3_error;
+ #line 833 "Python/generated_cases.c.h"
+ STACK_SHRINK(3);
+ next_instr += 1;
+ DISPATCH();
+ }
+
+ TARGET(DELETE_SUBSCR) {
+ PyObject *sub = stack_pointer[-1];
+ PyObject *container = stack_pointer[-2];
+ #line 585 "Python/bytecodes.c"
+ /* del container[sub] */
+ int err = PyObject_DelItem(container, sub);
+ #line 845 "Python/generated_cases.c.h"
+ Py_DECREF(container);
+ Py_DECREF(sub);
+ #line 588 "Python/bytecodes.c"
+ if (err) goto pop_2_error;
+ #line 850 "Python/generated_cases.c.h"
+ STACK_SHRINK(2);
+ DISPATCH();
+ }
+
+ TARGET(CALL_INTRINSIC_1) {
+ PyObject *value = stack_pointer[-1];
+ PyObject *res;
+ #line 592 "Python/bytecodes.c"
+ assert(oparg <= MAX_INTRINSIC_1);
+ res = _PyIntrinsics_UnaryFunctions[oparg](tstate, value);
+ #line 861 "Python/generated_cases.c.h"
+ Py_DECREF(value);
+ #line 595 "Python/bytecodes.c"
+ if (res == NULL) goto pop_1_error;
+ #line 865 "Python/generated_cases.c.h"
+ stack_pointer[-1] = res;
+ DISPATCH();
+ }
+
+ TARGET(CALL_INTRINSIC_2) {
+ PyObject *value1 = stack_pointer[-1];
+ PyObject *value2 = stack_pointer[-2];
+ PyObject *res;
+ #line 599 "Python/bytecodes.c"
+ assert(oparg <= MAX_INTRINSIC_2);
+ res = _PyIntrinsics_BinaryFunctions[oparg](tstate, value2, value1);
+ #line 877 "Python/generated_cases.c.h"
+ Py_DECREF(value2);
+ Py_DECREF(value1);
+ #line 602 "Python/bytecodes.c"
+ if (res == NULL) goto pop_2_error;
+ #line 882 "Python/generated_cases.c.h"
+ STACK_SHRINK(1);
+ stack_pointer[-1] = res;
+ DISPATCH();
+ }
+
+ TARGET(RAISE_VARARGS) {
+ PyObject **args = (stack_pointer - oparg);
+ #line 606 "Python/bytecodes.c"
+ PyObject *cause = NULL, *exc = NULL;
+ switch (oparg) {
+ case 2:
+ cause = args[1];
+ /* fall through */
+ case 1:
+ exc = args[0];
+ /* fall through */
+ case 0:
+ if (do_raise(tstate, exc, cause)) {
+ assert(oparg == 0);
+ monitor_reraise(tstate, frame, next_instr-1);
+ goto exception_unwind;
+ }
+ break;
+ default:
+ _PyErr_SetString(tstate, PyExc_SystemError,
+ "bad RAISE_VARARGS oparg");
+ break;
+ }
+ if (true) { STACK_SHRINK(oparg); goto error; }
+ #line 912 "Python/generated_cases.c.h"
+ }
+
+ TARGET(INTERPRETER_EXIT) {
+ PyObject *retval = stack_pointer[-1];
+ #line 630 "Python/bytecodes.c"
+ assert(frame == &entry_frame);
+ assert(_PyFrame_IsIncomplete(frame));
+ STACK_SHRINK(1); // Since we're not going to DISPATCH()
+ assert(EMPTY());
+ /* Restore previous cframe and return. */
+ tstate->cframe = cframe.previous;
+ assert(tstate->cframe->current_frame == frame->previous);
+ assert(!_PyErr_Occurred(tstate));
+ tstate->c_recursion_remaining += PY_EVAL_C_STACK_UNITS;
+ return retval;
+ #line 928 "Python/generated_cases.c.h"
+ }
+
+ TARGET(RETURN_VALUE) {
+ PyObject *retval = stack_pointer[-1];
+ #line 643 "Python/bytecodes.c"
+ STACK_SHRINK(1);
+ assert(EMPTY());
+ _PyFrame_SetStackPointer(frame, stack_pointer);
+ _Py_LeaveRecursiveCallPy(tstate);
+ assert(frame != &entry_frame);
+ // GH-99729: We need to unlink the frame *before* clearing it:
+ _PyInterpreterFrame *dying = frame;
+ frame = cframe.current_frame = dying->previous;
+ _PyEvalFrameClearAndPop(tstate, dying);
+ frame->prev_instr += frame->return_offset;
+ _PyFrame_StackPush(frame, retval);
+ goto resume_frame;
+ #line 946 "Python/generated_cases.c.h"
+ }
+
+ TARGET(INSTRUMENTED_RETURN_VALUE) {
+ PyObject *retval = stack_pointer[-1];
+ #line 658 "Python/bytecodes.c"
+ int err = _Py_call_instrumentation_arg(
+ tstate, PY_MONITORING_EVENT_PY_RETURN,
+ frame, next_instr-1, retval);
+ if (err) goto error;
+ STACK_SHRINK(1);
+ assert(EMPTY());
+ _PyFrame_SetStackPointer(frame, stack_pointer);
+ _Py_LeaveRecursiveCallPy(tstate);
+ assert(frame != &entry_frame);
+ // GH-99729: We need to unlink the frame *before* clearing it:
+ _PyInterpreterFrame *dying = frame;
+ frame = cframe.current_frame = dying->previous;
+ _PyEvalFrameClearAndPop(tstate, dying);
+ frame->prev_instr += frame->return_offset;
+ _PyFrame_StackPush(frame, retval);
+ goto resume_frame;
+ #line 968 "Python/generated_cases.c.h"
+ }
+
+ TARGET(RETURN_CONST) {
+ #line 677 "Python/bytecodes.c"
+ PyObject *retval = GETITEM(frame->f_code->co_consts, oparg);
+ Py_INCREF(retval);
+ assert(EMPTY());
+ _PyFrame_SetStackPointer(frame, stack_pointer);
+ _Py_LeaveRecursiveCallPy(tstate);
+ assert(frame != &entry_frame);
+ // GH-99729: We need to unlink the frame *before* clearing it:
+ _PyInterpreterFrame *dying = frame;
+ frame = cframe.current_frame = dying->previous;
+ _PyEvalFrameClearAndPop(tstate, dying);
+ frame->prev_instr += frame->return_offset;
+ _PyFrame_StackPush(frame, retval);
+ goto resume_frame;
+ #line 986 "Python/generated_cases.c.h"
+ }
+
+ TARGET(INSTRUMENTED_RETURN_CONST) {
+ #line 693 "Python/bytecodes.c"
+ PyObject *retval = GETITEM(frame->f_code->co_consts, oparg);
+ int err = _Py_call_instrumentation_arg(
+ tstate, PY_MONITORING_EVENT_PY_RETURN,
+ frame, next_instr-1, retval);
+ if (err) goto error;
+ Py_INCREF(retval);
+ assert(EMPTY());
+ _PyFrame_SetStackPointer(frame, stack_pointer);
+ _Py_LeaveRecursiveCallPy(tstate);
+ assert(frame != &entry_frame);
+ // GH-99729: We need to unlink the frame *before* clearing it:
+ _PyInterpreterFrame *dying = frame;
+ frame = cframe.current_frame = dying->previous;
+ _PyEvalFrameClearAndPop(tstate, dying);
+ frame->prev_instr += frame->return_offset;
+ _PyFrame_StackPush(frame, retval);
+ goto resume_frame;
+ #line 1008 "Python/generated_cases.c.h"
+ }
+
+ TARGET(GET_AITER) {
+ PyObject *obj = stack_pointer[-1];
+ PyObject *iter;
+ #line 713 "Python/bytecodes.c"
+ unaryfunc getter = NULL;
+ PyTypeObject *type = Py_TYPE(obj);
+
+ if (type->tp_as_async != NULL) {
+ getter = type->tp_as_async->am_aiter;
+ }
+
+ if (getter == NULL) {
+ _PyErr_Format(tstate, PyExc_TypeError,
+ "'async for' requires an object with "
+ "__aiter__ method, got %.100s",
+ type->tp_name);
+ #line 1027 "Python/generated_cases.c.h"
+ Py_DECREF(obj);
+ #line 726 "Python/bytecodes.c"
+ if (true) goto pop_1_error;
+ }
+
+ iter = (*getter)(obj);
+ #line 1034 "Python/generated_cases.c.h"
+ Py_DECREF(obj);
+ #line 731 "Python/bytecodes.c"
+ if (iter == NULL) goto pop_1_error;
+
+ if (Py_TYPE(iter)->tp_as_async == NULL ||
+ Py_TYPE(iter)->tp_as_async->am_anext == NULL) {
+
+ _PyErr_Format(tstate, PyExc_TypeError,
+ "'async for' received an object from __aiter__ "
+ "that does not implement __anext__: %.100s",
+ Py_TYPE(iter)->tp_name);
+ Py_DECREF(iter);
+ if (true) goto pop_1_error;
+ }
+ #line 1049 "Python/generated_cases.c.h"
+ stack_pointer[-1] = iter;
+ DISPATCH();
+ }
+
+ TARGET(GET_ANEXT) {
+ PyObject *aiter = stack_pointer[-1];
+ PyObject *awaitable;
+ #line 746 "Python/bytecodes.c"
+ unaryfunc getter = NULL;
+ PyObject *next_iter = NULL;
+ PyTypeObject *type = Py_TYPE(aiter);
+
+ if (PyAsyncGen_CheckExact(aiter)) {
+ awaitable = type->tp_as_async->am_anext(aiter);
+ if (awaitable == NULL) {
+ goto error;
+ }
+ } else {
+ if (type->tp_as_async != NULL){
+ getter = type->tp_as_async->am_anext;
+ }
+
+ if (getter != NULL) {
+ next_iter = (*getter)(aiter);
+ if (next_iter == NULL) {
+ goto error;
+ }
+ }
+ else {
+ _PyErr_Format(tstate, PyExc_TypeError,
+ "'async for' requires an iterator with "
+ "__anext__ method, got %.100s",
+ type->tp_name);
+ goto error;
+ }
+
+ awaitable = _PyCoro_GetAwaitableIter(next_iter);
+ if (awaitable == NULL) {
+ _PyErr_FormatFromCause(
+ PyExc_TypeError,
+ "'async for' received an invalid object "
+ "from __anext__: %.100s",
+ Py_TYPE(next_iter)->tp_name);
+
+ Py_DECREF(next_iter);
+ goto error;
+ } else {
+ Py_DECREF(next_iter);
+ }
+ }
+
+ #line 1101 "Python/generated_cases.c.h"
+ STACK_GROW(1);
+ stack_pointer[-1] = awaitable;
+ PREDICT(LOAD_CONST);
+ DISPATCH();
+ }
+
+ TARGET(GET_AWAITABLE) {
+ PREDICTED(GET_AWAITABLE);
+ PyObject *iterable = stack_pointer[-1];
+ PyObject *iter;
+ #line 793 "Python/bytecodes.c"
+ iter = _PyCoro_GetAwaitableIter(iterable);
+
+ if (iter == NULL) {
+ format_awaitable_error(tstate, Py_TYPE(iterable), oparg);
+ }
+
+ #line 1119 "Python/generated_cases.c.h"
+ Py_DECREF(iterable);
+ #line 800 "Python/bytecodes.c"
+
+ if (iter != NULL && PyCoro_CheckExact(iter)) {
+ PyObject *yf = _PyGen_yf((PyGenObject*)iter);
+ if (yf != NULL) {
+ /* `iter` is a coroutine object that is being
+ awaited, `yf` is a pointer to the current awaitable
+ being awaited on. */
+ Py_DECREF(yf);
+ Py_CLEAR(iter);
+ _PyErr_SetString(tstate, PyExc_RuntimeError,
+ "coroutine is being awaited already");
+ /* The code below jumps to `error` if `iter` is NULL. */
+ }
+ }
+
+ if (iter == NULL) goto pop_1_error;
+
+ #line 1139 "Python/generated_cases.c.h"
+ stack_pointer[-1] = iter;
+ PREDICT(LOAD_CONST);
+ DISPATCH();
+ }
+
+ TARGET(SEND) {
+ PREDICTED(SEND);
+ static_assert(INLINE_CACHE_ENTRIES_SEND == 1, "incorrect cache size");
+ PyObject *v = stack_pointer[-1];
+ PyObject *receiver = stack_pointer[-2];
+ PyObject *retval;
+ #line 826 "Python/bytecodes.c"
+ #if ENABLE_SPECIALIZATION
+ _PySendCache *cache = (_PySendCache *)next_instr;
+ if (ADAPTIVE_COUNTER_IS_ZERO(cache->counter)) {
+ next_instr--;
+ _Py_Specialize_Send(receiver, next_instr);
+ DISPATCH_SAME_OPARG();
+ }
+ STAT_INC(SEND, deferred);
+ DECREMENT_ADAPTIVE_COUNTER(cache->counter);
+ #endif /* ENABLE_SPECIALIZATION */
+ assert(frame != &entry_frame);
+ if ((tstate->interp->eval_frame == NULL) &&
+ (Py_TYPE(receiver) == &PyGen_Type || Py_TYPE(receiver) == &PyCoro_Type) &&
+ ((PyGenObject *)receiver)->gi_frame_state < FRAME_EXECUTING)
+ {
+ PyGenObject *gen = (PyGenObject *)receiver;
+ _PyInterpreterFrame *gen_frame = (_PyInterpreterFrame *)gen->gi_iframe;
+ frame->return_offset = oparg;
+ STACK_SHRINK(1);
+ _PyFrame_StackPush(gen_frame, v);
+ gen->gi_frame_state = FRAME_EXECUTING;
+ gen->gi_exc_state.previous_item = tstate->exc_info;
+ tstate->exc_info = &gen->gi_exc_state;
+ JUMPBY(INLINE_CACHE_ENTRIES_SEND);
+ DISPATCH_INLINED(gen_frame);
+ }
+ if (Py_IsNone(v) && PyIter_Check(receiver)) {
+ retval = Py_TYPE(receiver)->tp_iternext(receiver);
+ }
+ else {
+ retval = PyObject_CallMethodOneArg(receiver, &_Py_ID(send), v);
+ }
+ if (retval == NULL) {
+ if (_PyErr_ExceptionMatches(tstate, PyExc_StopIteration)
+ ) {
+ monitor_raise(tstate, frame, next_instr-1);
+ }
+ if (_PyGen_FetchStopIterationValue(&retval) == 0) {
+ assert(retval != NULL);
+ JUMPBY(oparg);
+ }
+ else {
+ goto error;
+ }
+ }
+ Py_DECREF(v);
+ #line 1198 "Python/generated_cases.c.h"
+ stack_pointer[-1] = retval;
+ next_instr += 1;
+ DISPATCH();
+ }
+
+ TARGET(SEND_GEN) {
+ PyObject *v = stack_pointer[-1];
+ PyObject *receiver = stack_pointer[-2];
+ #line 875 "Python/bytecodes.c"
+ DEOPT_IF(tstate->interp->eval_frame, SEND);
+ PyGenObject *gen = (PyGenObject *)receiver;
+ DEOPT_IF(Py_TYPE(gen) != &PyGen_Type &&
+ Py_TYPE(gen) != &PyCoro_Type, SEND);
+ DEOPT_IF(gen->gi_frame_state >= FRAME_EXECUTING, SEND);
+ STAT_INC(SEND, hit);
+ _PyInterpreterFrame *gen_frame = (_PyInterpreterFrame *)gen->gi_iframe;
+ frame->return_offset = oparg;
+ STACK_SHRINK(1);
+ _PyFrame_StackPush(gen_frame, v);
+ gen->gi_frame_state = FRAME_EXECUTING;
+ gen->gi_exc_state.previous_item = tstate->exc_info;
+ tstate->exc_info = &gen->gi_exc_state;
+ JUMPBY(INLINE_CACHE_ENTRIES_SEND);
+ DISPATCH_INLINED(gen_frame);
+ #line 1223 "Python/generated_cases.c.h"
+ }
+
+ TARGET(INSTRUMENTED_YIELD_VALUE) {
+ PyObject *retval = stack_pointer[-1];
+ #line 893 "Python/bytecodes.c"
+ assert(frame != &entry_frame);
+ PyGenObject *gen = _PyFrame_GetGenerator(frame);
+ gen->gi_frame_state = FRAME_SUSPENDED;
+ _PyFrame_SetStackPointer(frame, stack_pointer - 1);
+ int err = _Py_call_instrumentation_arg(
+ tstate, PY_MONITORING_EVENT_PY_YIELD,
+ frame, next_instr-1, retval);
+ if (err) goto error;
+ tstate->exc_info = gen->gi_exc_state.previous_item;
+ gen->gi_exc_state.previous_item = NULL;
+ _Py_LeaveRecursiveCallPy(tstate);
+ _PyInterpreterFrame *gen_frame = frame;
+ frame = cframe.current_frame = frame->previous;
+ gen_frame->previous = NULL;
+ _PyFrame_StackPush(frame, retval);
+ goto resume_frame;
+ #line 1245 "Python/generated_cases.c.h"
+ }
+
+ TARGET(YIELD_VALUE) {
+ PyObject *retval = stack_pointer[-1];
+ #line 912 "Python/bytecodes.c"
+ // NOTE: It's important that YIELD_VALUE never raises an exception!
+ // The compiler treats any exception raised here as a failed close()
+ // or throw() call.
+ assert(frame != &entry_frame);
+ PyGenObject *gen = _PyFrame_GetGenerator(frame);
+ gen->gi_frame_state = FRAME_SUSPENDED;
+ _PyFrame_SetStackPointer(frame, stack_pointer - 1);
+ tstate->exc_info = gen->gi_exc_state.previous_item;
+ gen->gi_exc_state.previous_item = NULL;
+ _Py_LeaveRecursiveCallPy(tstate);
+ _PyInterpreterFrame *gen_frame = frame;
+ frame = cframe.current_frame = frame->previous;
+ gen_frame->previous = NULL;
+ _PyFrame_StackPush(frame, retval);
+ goto resume_frame;
+ #line 1266 "Python/generated_cases.c.h"
+ }
+
+ TARGET(POP_EXCEPT) {
+ PyObject *exc_value = stack_pointer[-1];
+ #line 930 "Python/bytecodes.c"
+ _PyErr_StackItem *exc_info = tstate->exc_info;
+ Py_XSETREF(exc_info->exc_value, exc_value);
+ #line 1274 "Python/generated_cases.c.h"
+ STACK_SHRINK(1);
+ DISPATCH();
+ }
+
+ TARGET(RERAISE) {
+ PyObject *exc = stack_pointer[-1];
+ PyObject **values = (stack_pointer - (1 + oparg));
+ #line 935 "Python/bytecodes.c"
+ assert(oparg >= 0 && oparg <= 2);
+ if (oparg) {
+ PyObject *lasti = values[0];
+ if (PyLong_Check(lasti)) {
+ frame->prev_instr = _PyCode_CODE(frame->f_code) + PyLong_AsLong(lasti);
+ assert(!_PyErr_Occurred(tstate));
+ }
+ else {
+ assert(PyLong_Check(lasti));
+ _PyErr_SetString(tstate, PyExc_SystemError, "lasti is not an int");
+ goto error;
+ }
+ }
+ assert(exc && PyExceptionInstance_Check(exc));
+ Py_INCREF(exc);
+ _PyErr_SetRaisedException(tstate, exc);
+ monitor_reraise(tstate, frame, next_instr-1);
+ goto exception_unwind;
+ #line 1301 "Python/generated_cases.c.h"
+ }
+
+ TARGET(END_ASYNC_FOR) {
+ PyObject *exc = stack_pointer[-1];
+ PyObject *awaitable = stack_pointer[-2];
+ #line 956 "Python/bytecodes.c"
+ assert(exc && PyExceptionInstance_Check(exc));
+ if (PyErr_GivenExceptionMatches(exc, PyExc_StopAsyncIteration)) {
+ #line 1310 "Python/generated_cases.c.h"
+ Py_DECREF(awaitable);
+ Py_DECREF(exc);
+ #line 959 "Python/bytecodes.c"
+ }
+ else {
+ Py_INCREF(exc);
+ _PyErr_SetRaisedException(tstate, exc);
+ monitor_reraise(tstate, frame, next_instr-1);
+ goto exception_unwind;
+ }
+ #line 1321 "Python/generated_cases.c.h"
+ STACK_SHRINK(2);
+ DISPATCH();
+ }
+
+ TARGET(CLEANUP_THROW) {
+ PyObject *exc_value = stack_pointer[-1];
+ PyObject *last_sent_val = stack_pointer[-2];
+ PyObject *sub_iter = stack_pointer[-3];
+ PyObject *none;
+ PyObject *value;
+ #line 969 "Python/bytecodes.c"
+ assert(throwflag);
+ assert(exc_value && PyExceptionInstance_Check(exc_value));
+ if (PyErr_GivenExceptionMatches(exc_value, PyExc_StopIteration)) {
+ value = Py_NewRef(((PyStopIterationObject *)exc_value)->value);
+ #line 1337 "Python/generated_cases.c.h"
+ Py_DECREF(sub_iter);
+ Py_DECREF(last_sent_val);
+ Py_DECREF(exc_value);
+ #line 974 "Python/bytecodes.c"
+ none = Py_None;
+ }
+ else {
+ _PyErr_SetRaisedException(tstate, Py_NewRef(exc_value));
+ monitor_reraise(tstate, frame, next_instr-1);
+ goto exception_unwind;
+ }
+ #line 1349 "Python/generated_cases.c.h"
+ STACK_SHRINK(1);
+ stack_pointer[-1] = value;
+ stack_pointer[-2] = none;
+ DISPATCH();
+ }
+
+ TARGET(LOAD_ASSERTION_ERROR) {
+ PyObject *value;
+ #line 984 "Python/bytecodes.c"
+ value = Py_NewRef(PyExc_AssertionError);
+ #line 1360 "Python/generated_cases.c.h"
+ STACK_GROW(1);
+ stack_pointer[-1] = value;
+ DISPATCH();
+ }
+
+ TARGET(LOAD_BUILD_CLASS) {
+ PyObject *bc;
+ #line 988 "Python/bytecodes.c"
+ if (PyDict_CheckExact(BUILTINS())) {
+ bc = _PyDict_GetItemWithError(BUILTINS(),
+ &_Py_ID(__build_class__));
+ if (bc == NULL) {
+ if (!_PyErr_Occurred(tstate)) {
+ _PyErr_SetString(tstate, PyExc_NameError,
+ "__build_class__ not found");
+ }
+ if (true) goto error;
+ }
+ Py_INCREF(bc);
+ }
+ else {
+ bc = PyObject_GetItem(BUILTINS(), &_Py_ID(__build_class__));
+ if (bc == NULL) {
+ if (_PyErr_ExceptionMatches(tstate, PyExc_KeyError))
+ _PyErr_SetString(tstate, PyExc_NameError,
+ "__build_class__ not found");
+ if (true) goto error;
+ }
+ }
+ #line 1390 "Python/generated_cases.c.h"
+ STACK_GROW(1);
+ stack_pointer[-1] = bc;
+ DISPATCH();
+ }
+
+ TARGET(STORE_NAME) {
+ PyObject *v = stack_pointer[-1];
+ #line 1013 "Python/bytecodes.c"
+ PyObject *name = GETITEM(frame->f_code->co_names, oparg);
+ PyObject *ns = LOCALS();
+ int err;
+ if (ns == NULL) {
+ _PyErr_Format(tstate, PyExc_SystemError,
+ "no locals found when storing %R", name);
+ #line 1405 "Python/generated_cases.c.h"
+ Py_DECREF(v);
+ #line 1020 "Python/bytecodes.c"
+ if (true) goto pop_1_error;
+ }
+ if (PyDict_CheckExact(ns))
+ err = PyDict_SetItem(ns, name, v);
+ else
+ err = PyObject_SetItem(ns, name, v);
+ #line 1414 "Python/generated_cases.c.h"
+ Py_DECREF(v);
+ #line 1027 "Python/bytecodes.c"
+ if (err) goto pop_1_error;
+ #line 1418 "Python/generated_cases.c.h"
+ STACK_SHRINK(1);
+ DISPATCH();
+ }
+
+ TARGET(DELETE_NAME) {
+ #line 1031 "Python/bytecodes.c"
+ PyObject *name = GETITEM(frame->f_code->co_names, oparg);
+ PyObject *ns = LOCALS();
+ int err;
+ if (ns == NULL) {
+ _PyErr_Format(tstate, PyExc_SystemError,
+ "no locals when deleting %R", name);
+ goto error;
+ }
+ err = PyObject_DelItem(ns, name);
+ // Can't use ERROR_IF here.
+ if (err != 0) {
+ format_exc_check_arg(tstate, PyExc_NameError,
+ NAME_ERROR_MSG,
+ name);
+ goto error;
+ }
+ #line 1441 "Python/generated_cases.c.h"
+ DISPATCH();
+ }
+
+ TARGET(UNPACK_SEQUENCE) {
+ PREDICTED(UNPACK_SEQUENCE);
+ static_assert(INLINE_CACHE_ENTRIES_UNPACK_SEQUENCE == 1, "incorrect cache size");
+ PyObject *seq = stack_pointer[-1];
+ #line 1057 "Python/bytecodes.c"
+ #if ENABLE_SPECIALIZATION
+ _PyUnpackSequenceCache *cache = (_PyUnpackSequenceCache *)next_instr;
+ if (ADAPTIVE_COUNTER_IS_ZERO(cache->counter)) {
+ next_instr--;
+ _Py_Specialize_UnpackSequence(seq, next_instr, oparg);
+ DISPATCH_SAME_OPARG();
+ }
+ STAT_INC(UNPACK_SEQUENCE, deferred);
+ DECREMENT_ADAPTIVE_COUNTER(cache->counter);
+ #endif /* ENABLE_SPECIALIZATION */
+ PyObject **top = stack_pointer + oparg - 1;
+ int res = unpack_iterable(tstate, seq, oparg, -1, top);
+ #line 1462 "Python/generated_cases.c.h"
+ Py_DECREF(seq);
+ #line 1070 "Python/bytecodes.c"
+ if (res == 0) goto pop_1_error;
+ #line 1466 "Python/generated_cases.c.h"
+ STACK_SHRINK(1);
+ STACK_GROW(oparg);
+ next_instr += 1;
+ DISPATCH();
+ }
+
+ TARGET(UNPACK_SEQUENCE_TWO_TUPLE) {
+ PyObject *seq = stack_pointer[-1];
+ PyObject **values = stack_pointer - (1);
+ #line 1074 "Python/bytecodes.c"
+ DEOPT_IF(!PyTuple_CheckExact(seq), UNPACK_SEQUENCE);
+ DEOPT_IF(PyTuple_GET_SIZE(seq) != 2, UNPACK_SEQUENCE);
+ assert(oparg == 2);
+ STAT_INC(UNPACK_SEQUENCE, hit);
+ values[0] = Py_NewRef(PyTuple_GET_ITEM(seq, 1));
+ values[1] = Py_NewRef(PyTuple_GET_ITEM(seq, 0));
+ #line 1483 "Python/generated_cases.c.h"
+ Py_DECREF(seq);
+ STACK_SHRINK(1);
+ STACK_GROW(oparg);
+ next_instr += 1;
+ DISPATCH();
+ }
+
+ TARGET(UNPACK_SEQUENCE_TUPLE) {
+ PyObject *seq = stack_pointer[-1];
+ PyObject **values = stack_pointer - (1);
+ #line 1084 "Python/bytecodes.c"
+ DEOPT_IF(!PyTuple_CheckExact(seq), UNPACK_SEQUENCE);
+ DEOPT_IF(PyTuple_GET_SIZE(seq) != oparg, UNPACK_SEQUENCE);
+ STAT_INC(UNPACK_SEQUENCE, hit);
+ PyObject **items = _PyTuple_ITEMS(seq);
+ for (int i = oparg; --i >= 0; ) {
+ *values++ = Py_NewRef(items[i]);
+ }
+ #line 1502 "Python/generated_cases.c.h"
+ Py_DECREF(seq);
+ STACK_SHRINK(1);
+ STACK_GROW(oparg);
+ next_instr += 1;
+ DISPATCH();
+ }
+
+ TARGET(UNPACK_SEQUENCE_LIST) {
+ PyObject *seq = stack_pointer[-1];
+ PyObject **values = stack_pointer - (1);
+ #line 1095 "Python/bytecodes.c"
+ DEOPT_IF(!PyList_CheckExact(seq), UNPACK_SEQUENCE);
+ DEOPT_IF(PyList_GET_SIZE(seq) != oparg, UNPACK_SEQUENCE);
+ STAT_INC(UNPACK_SEQUENCE, hit);
+ PyObject **items = _PyList_ITEMS(seq);
+ for (int i = oparg; --i >= 0; ) {
+ *values++ = Py_NewRef(items[i]);
+ }
+ #line 1521 "Python/generated_cases.c.h"
+ Py_DECREF(seq);
+ STACK_SHRINK(1);
+ STACK_GROW(oparg);
+ next_instr += 1;
+ DISPATCH();
+ }
+
+ TARGET(UNPACK_EX) {
+ PyObject *seq = stack_pointer[-1];
+ #line 1106 "Python/bytecodes.c"
+ int totalargs = 1 + (oparg & 0xFF) + (oparg >> 8);
+ PyObject **top = stack_pointer + totalargs - 1;
+ int res = unpack_iterable(tstate, seq, oparg & 0xFF, oparg >> 8, top);
+ #line 1535 "Python/generated_cases.c.h"
+ Py_DECREF(seq);
+ #line 1110 "Python/bytecodes.c"
+ if (res == 0) goto pop_1_error;
+ #line 1539 "Python/generated_cases.c.h"
+ STACK_GROW((oparg & 0xFF) + (oparg >> 8));
+ DISPATCH();
+ }
+
+ TARGET(STORE_ATTR) {
+ PREDICTED(STORE_ATTR);
+ static_assert(INLINE_CACHE_ENTRIES_STORE_ATTR == 4, "incorrect cache size");
+ PyObject *owner = stack_pointer[-1];
+ PyObject *v = stack_pointer[-2];
+ uint16_t counter = read_u16(&next_instr[0].cache);
+ #line 1121 "Python/bytecodes.c"
+ #if ENABLE_SPECIALIZATION
+ if (ADAPTIVE_COUNTER_IS_ZERO(counter)) {
+ PyObject *name = GETITEM(frame->f_code->co_names, oparg);
+ next_instr--;
+ _Py_Specialize_StoreAttr(owner, next_instr, name);
+ DISPATCH_SAME_OPARG();
+ }
+ STAT_INC(STORE_ATTR, deferred);
+ _PyAttrCache *cache = (_PyAttrCache *)next_instr;
+ DECREMENT_ADAPTIVE_COUNTER(cache->counter);
+ #else
+ (void)counter; // Unused.
+ #endif /* ENABLE_SPECIALIZATION */
+ PyObject *name = GETITEM(frame->f_code->co_names, oparg);
+ int err = PyObject_SetAttr(owner, name, v);
+ #line 1566 "Python/generated_cases.c.h"
+ Py_DECREF(v);
+ Py_DECREF(owner);
+ #line 1137 "Python/bytecodes.c"
+ if (err) goto pop_2_error;
+ #line 1571 "Python/generated_cases.c.h"
+ STACK_SHRINK(2);
+ next_instr += 4;
+ DISPATCH();
+ }
+
+ TARGET(DELETE_ATTR) {
+ PyObject *owner = stack_pointer[-1];
+ #line 1141 "Python/bytecodes.c"
+ PyObject *name = GETITEM(frame->f_code->co_names, oparg);
+ int err = PyObject_SetAttr(owner, name, (PyObject *)NULL);
+ #line 1582 "Python/generated_cases.c.h"
+ Py_DECREF(owner);
+ #line 1144 "Python/bytecodes.c"
+ if (err) goto pop_1_error;
+ #line 1586 "Python/generated_cases.c.h"
+ STACK_SHRINK(1);
+ DISPATCH();
+ }
+
+ TARGET(STORE_GLOBAL) {
+ PyObject *v = stack_pointer[-1];
+ #line 1148 "Python/bytecodes.c"
+ PyObject *name = GETITEM(frame->f_code->co_names, oparg);
+ int err = PyDict_SetItem(GLOBALS(), name, v);
+ #line 1596 "Python/generated_cases.c.h"
+ Py_DECREF(v);
+ #line 1151 "Python/bytecodes.c"
+ if (err) goto pop_1_error;
+ #line 1600 "Python/generated_cases.c.h"
+ STACK_SHRINK(1);
+ DISPATCH();
+ }
+
+ TARGET(DELETE_GLOBAL) {
+ #line 1155 "Python/bytecodes.c"
+ PyObject *name = GETITEM(frame->f_code->co_names, oparg);
+ int err;
+ err = PyDict_DelItem(GLOBALS(), name);
+ // Can't use ERROR_IF here.
+ if (err != 0) {
+ if (_PyErr_ExceptionMatches(tstate, PyExc_KeyError)) {
+ format_exc_check_arg(tstate, PyExc_NameError,
+ NAME_ERROR_MSG, name);
+ }
+ goto error;
+ }
+ #line 1618 "Python/generated_cases.c.h"
+ DISPATCH();
+ }
+
+ TARGET(LOAD_LOCALS) {
+ PyObject *locals;
+ #line 1169 "Python/bytecodes.c"
+ locals = LOCALS();
+ if (locals == NULL) {
+ _PyErr_SetString(tstate, PyExc_SystemError,
+ "no locals found");
+ if (true) goto error;
+ }
+ Py_INCREF(locals);
+ #line 1632 "Python/generated_cases.c.h"
+ STACK_GROW(1);
+ stack_pointer[-1] = locals;
+ DISPATCH();
+ }
+
+ TARGET(LOAD_FROM_DICT_OR_GLOBALS) {
+ PyObject *mod_or_class_dict = stack_pointer[-1];
+ PyObject *v;
+ #line 1179 "Python/bytecodes.c"
+ PyObject *name = GETITEM(frame->f_code->co_names, oparg);
+ if (PyDict_CheckExact(mod_or_class_dict)) {
+ v = PyDict_GetItemWithError(mod_or_class_dict, name);
+ if (v != NULL) {
+ Py_INCREF(v);
+ }
+ else if (_PyErr_Occurred(tstate)) {
+ goto error;
+ }
+ }
+ else {
+ v = PyObject_GetItem(mod_or_class_dict, name);
+ if (v == NULL) {
+ if (!_PyErr_ExceptionMatches(tstate, PyExc_KeyError)) {
+ goto error;
+ }
+ _PyErr_Clear(tstate);
+ }
+ }
+ if (v == NULL) {
+ v = PyDict_GetItemWithError(GLOBALS(), name);
+ if (v != NULL) {
+ Py_INCREF(v);
+ }
+ else if (_PyErr_Occurred(tstate)) {
+ goto error;
+ }
+ else {
+ if (PyDict_CheckExact(BUILTINS())) {
+ v = PyDict_GetItemWithError(BUILTINS(), name);
+ if (v == NULL) {
+ if (!_PyErr_Occurred(tstate)) {
+ format_exc_check_arg(
+ tstate, PyExc_NameError,
+ NAME_ERROR_MSG, name);
+ }
+ goto error;
+ }
+ Py_INCREF(v);
+ }
+ else {
+ v = PyObject_GetItem(BUILTINS(), name);
+ if (v == NULL) {
+ if (_PyErr_ExceptionMatches(tstate, PyExc_KeyError)) {
+ format_exc_check_arg(
+ tstate, PyExc_NameError,
+ NAME_ERROR_MSG, name);
+ }
+ goto error;
+ }
+ }
+ }
+ }
+ #line 1695 "Python/generated_cases.c.h"
+ Py_DECREF(mod_or_class_dict);
+ stack_pointer[-1] = v;
+ DISPATCH();
+ }
+
+ TARGET(LOAD_NAME) {
+ PyObject *v;
+ #line 1236 "Python/bytecodes.c"
+ PyObject *mod_or_class_dict = LOCALS();
+ if (mod_or_class_dict == NULL) {
+ _PyErr_SetString(tstate, PyExc_SystemError,
+ "no locals found");
+ if (true) goto error;
+ }
+ PyObject *name = GETITEM(frame->f_code->co_names, oparg);
+ if (PyDict_CheckExact(mod_or_class_dict)) {
+ v = PyDict_GetItemWithError(mod_or_class_dict, name);
+ if (v != NULL) {
+ Py_INCREF(v);
+ }
+ else if (_PyErr_Occurred(tstate)) {
+ goto error;
+ }
+ }
+ else {
+ v = PyObject_GetItem(mod_or_class_dict, name);
+ if (v == NULL) {
+ if (!_PyErr_ExceptionMatches(tstate, PyExc_KeyError)) {
+ goto error;
+ }
+ _PyErr_Clear(tstate);
+ }
+ }
+ if (v == NULL) {
+ v = PyDict_GetItemWithError(GLOBALS(), name);
+ if (v != NULL) {
+ Py_INCREF(v);
+ }
+ else if (_PyErr_Occurred(tstate)) {
+ goto error;
+ }
+ else {
+ if (PyDict_CheckExact(BUILTINS())) {
+ v = PyDict_GetItemWithError(BUILTINS(), name);
+ if (v == NULL) {
+ if (!_PyErr_Occurred(tstate)) {
+ format_exc_check_arg(
+ tstate, PyExc_NameError,
+ NAME_ERROR_MSG, name);
+ }
+ goto error;
+ }
+ Py_INCREF(v);
+ }
+ else {
+ v = PyObject_GetItem(BUILTINS(), name);
+ if (v == NULL) {
+ if (_PyErr_ExceptionMatches(tstate, PyExc_KeyError)) {
+ format_exc_check_arg(
+ tstate, PyExc_NameError,
+ NAME_ERROR_MSG, name);
+ }
+ goto error;
+ }
+ }
+ }
+ }
+ #line 1763 "Python/generated_cases.c.h"
+ STACK_GROW(1);
+ stack_pointer[-1] = v;
+ DISPATCH();
+ }
+
+ TARGET(LOAD_GLOBAL) {
+ PREDICTED(LOAD_GLOBAL);
+ static_assert(INLINE_CACHE_ENTRIES_LOAD_GLOBAL == 4, "incorrect cache size");
+ PyObject *null = NULL;
+ PyObject *v;
+ #line 1304 "Python/bytecodes.c"
+ #if ENABLE_SPECIALIZATION
+ _PyLoadGlobalCache *cache = (_PyLoadGlobalCache *)next_instr;
+ if (ADAPTIVE_COUNTER_IS_ZERO(cache->counter)) {
+ PyObject *name = GETITEM(frame->f_code->co_names, oparg>>1);
+ next_instr--;
+ _Py_Specialize_LoadGlobal(GLOBALS(), BUILTINS(), next_instr, name);
+ DISPATCH_SAME_OPARG();
+ }
+ STAT_INC(LOAD_GLOBAL, deferred);
+ DECREMENT_ADAPTIVE_COUNTER(cache->counter);
+ #endif /* ENABLE_SPECIALIZATION */
+ PyObject *name = GETITEM(frame->f_code->co_names, oparg>>1);
+ if (PyDict_CheckExact(GLOBALS())
+ && PyDict_CheckExact(BUILTINS()))
+ {
+ v = _PyDict_LoadGlobal((PyDictObject *)GLOBALS(),
+ (PyDictObject *)BUILTINS(),
+ name);
+ if (v == NULL) {
+ if (!_PyErr_Occurred(tstate)) {
+ /* _PyDict_LoadGlobal() returns NULL without raising
+ * an exception if the key doesn't exist */
+ format_exc_check_arg(tstate, PyExc_NameError,
+ NAME_ERROR_MSG, name);
+ }
+ if (true) goto error;
+ }
+ Py_INCREF(v);
+ }
+ else {
+ /* Slow-path if globals or builtins is not a dict */
+
+ /* namespace 1: globals */
+ v = PyObject_GetItem(GLOBALS(), name);
+ if (v == NULL) {
+ if (!_PyErr_ExceptionMatches(tstate, PyExc_KeyError)) goto error;
+ _PyErr_Clear(tstate);
+
+ /* namespace 2: builtins */
+ v = PyObject_GetItem(BUILTINS(), name);
+ if (v == NULL) {
+ if (_PyErr_ExceptionMatches(tstate, PyExc_KeyError)) {
+ format_exc_check_arg(
+ tstate, PyExc_NameError,
+ NAME_ERROR_MSG, name);
+ }
+ if (true) goto error;
+ }
+ }
+ }
+ null = NULL;
+ #line 1826 "Python/generated_cases.c.h"
+ STACK_GROW(1);
+ STACK_GROW(((oparg & 1) ? 1 : 0));
+ stack_pointer[-1] = v;
+ if (oparg & 1) { stack_pointer[-(1 + ((oparg & 1) ? 1 : 0))] = null; }
+ next_instr += 4;
+ DISPATCH();
+ }
+
+ TARGET(LOAD_GLOBAL_MODULE) {
+ PyObject *null = NULL;
+ PyObject *res;
+ uint16_t index = read_u16(&next_instr[1].cache);
+ uint16_t version = read_u16(&next_instr[2].cache);
+ #line 1358 "Python/bytecodes.c"
+ DEOPT_IF(!PyDict_CheckExact(GLOBALS()), LOAD_GLOBAL);
+ PyDictObject *dict = (PyDictObject *)GLOBALS();
+ DEOPT_IF(dict->ma_keys->dk_version != version, LOAD_GLOBAL);
+ assert(DK_IS_UNICODE(dict->ma_keys));
+ PyDictUnicodeEntry *entries = DK_UNICODE_ENTRIES(dict->ma_keys);
+ res = entries[index].me_value;
+ DEOPT_IF(res == NULL, LOAD_GLOBAL);
+ Py_INCREF(res);
+ STAT_INC(LOAD_GLOBAL, hit);
+ null = NULL;
+ #line 1851 "Python/generated_cases.c.h"
+ STACK_GROW(1);
+ STACK_GROW(((oparg & 1) ? 1 : 0));
+ stack_pointer[-1] = res;
+ if (oparg & 1) { stack_pointer[-(1 + ((oparg & 1) ? 1 : 0))] = null; }
+ next_instr += 4;
+ DISPATCH();
+ }
+
+ TARGET(LOAD_GLOBAL_BUILTIN) {
+ PyObject *null = NULL;
+ PyObject *res;
+ uint16_t index = read_u16(&next_instr[1].cache);
+ uint16_t mod_version = read_u16(&next_instr[2].cache);
+ uint16_t bltn_version = read_u16(&next_instr[3].cache);
+ #line 1371 "Python/bytecodes.c"
+ DEOPT_IF(!PyDict_CheckExact(GLOBALS()), LOAD_GLOBAL);
+ DEOPT_IF(!PyDict_CheckExact(BUILTINS()), LOAD_GLOBAL);
+ PyDictObject *mdict = (PyDictObject *)GLOBALS();
+ PyDictObject *bdict = (PyDictObject *)BUILTINS();
+ assert(opcode == LOAD_GLOBAL_BUILTIN);
+ DEOPT_IF(mdict->ma_keys->dk_version != mod_version, LOAD_GLOBAL);
+ DEOPT_IF(bdict->ma_keys->dk_version != bltn_version, LOAD_GLOBAL);
+ assert(DK_IS_UNICODE(bdict->ma_keys));
+ PyDictUnicodeEntry *entries = DK_UNICODE_ENTRIES(bdict->ma_keys);
+ res = entries[index].me_value;
+ DEOPT_IF(res == NULL, LOAD_GLOBAL);
+ Py_INCREF(res);
+ STAT_INC(LOAD_GLOBAL, hit);
+ null = NULL;
+ #line 1881 "Python/generated_cases.c.h"
+ STACK_GROW(1);
+ STACK_GROW(((oparg & 1) ? 1 : 0));
+ stack_pointer[-1] = res;
+ if (oparg & 1) { stack_pointer[-(1 + ((oparg & 1) ? 1 : 0))] = null; }
+ next_instr += 4;
+ DISPATCH();
+ }
+
+ TARGET(DELETE_FAST) {
+ #line 1388 "Python/bytecodes.c"
+ PyObject *v = GETLOCAL(oparg);
+ if (v == NULL) goto unbound_local_error;
+ SETLOCAL(oparg, NULL);
+ #line 1895 "Python/generated_cases.c.h"
+ DISPATCH();
+ }
+
+ TARGET(MAKE_CELL) {
+ #line 1394 "Python/bytecodes.c"
+ // "initial" is probably NULL but not if it's an arg (or set
+ // via PyFrame_LocalsToFast() before MAKE_CELL has run).
+ PyObject *initial = GETLOCAL(oparg);
+ PyObject *cell = PyCell_New(initial);
+ if (cell == NULL) {
+ goto resume_with_error;
+ }
+ SETLOCAL(oparg, cell);
+ #line 1909 "Python/generated_cases.c.h"
+ DISPATCH();
+ }
+
+ TARGET(DELETE_DEREF) {
+ #line 1405 "Python/bytecodes.c"
+ PyObject *cell = GETLOCAL(oparg);
+ PyObject *oldobj = PyCell_GET(cell);
+ // Can't use ERROR_IF here.
+ // Fortunately we don't need its superpower.
+ if (oldobj == NULL) {
+ format_exc_unbound(tstate, frame->f_code, oparg);
+ goto error;
+ }
+ PyCell_SET(cell, NULL);
+ Py_DECREF(oldobj);
+ #line 1925 "Python/generated_cases.c.h"
+ DISPATCH();
+ }
+
+ TARGET(LOAD_FROM_DICT_OR_DEREF) {
+ PyObject *class_dict = stack_pointer[-1];
+ PyObject *value;
+ #line 1418 "Python/bytecodes.c"
+ PyObject *name;
+ assert(class_dict);
+ assert(oparg >= 0 && oparg < frame->f_code->co_nlocalsplus);
+ name = PyTuple_GET_ITEM(frame->f_code->co_localsplusnames, oparg);
+ if (PyDict_CheckExact(class_dict)) {
+ value = PyDict_GetItemWithError(class_dict, name);
+ if (value != NULL) {
+ Py_INCREF(value);
+ }
+ else if (_PyErr_Occurred(tstate)) {
+ goto error;
+ }
+ }
+ else {
+ value = PyObject_GetItem(class_dict, name);
+ if (value == NULL) {
+ if (!_PyErr_ExceptionMatches(tstate, PyExc_KeyError)) {
+ goto error;
+ }
+ _PyErr_Clear(tstate);
+ }
+ }
+ if (!value) {
+ PyObject *cell = GETLOCAL(oparg);
+ value = PyCell_GET(cell);
+ if (value == NULL) {
+ format_exc_unbound(tstate, frame->f_code, oparg);
+ goto error;
+ }
+ Py_INCREF(value);
+ }
+ Py_DECREF(class_dict);
+ #line 1965 "Python/generated_cases.c.h"
+ stack_pointer[-1] = value;
+ DISPATCH();
+ }
+
+ TARGET(LOAD_DEREF) {
+ PyObject *value;
+ #line 1453 "Python/bytecodes.c"
+ PyObject *cell = GETLOCAL(oparg);
+ value = PyCell_GET(cell);
+ if (value == NULL) {
+ format_exc_unbound(tstate, frame->f_code, oparg);
+ if (true) goto error;
+ }
+ Py_INCREF(value);
+ #line 1980 "Python/generated_cases.c.h"
+ STACK_GROW(1);
+ stack_pointer[-1] = value;
+ DISPATCH();
+ }
+
+ TARGET(STORE_DEREF) {
+ PyObject *v = stack_pointer[-1];
+ #line 1463 "Python/bytecodes.c"
+ PyObject *cell = GETLOCAL(oparg);
+ PyObject *oldobj = PyCell_GET(cell);
+ PyCell_SET(cell, v);
+ Py_XDECREF(oldobj);
+ #line 1993 "Python/generated_cases.c.h"
+ STACK_SHRINK(1);
+ DISPATCH();
+ }
+
+ TARGET(COPY_FREE_VARS) {
+ #line 1470 "Python/bytecodes.c"
+ /* Copy closure variables to free variables */
+ PyCodeObject *co = frame->f_code;
+ assert(PyFunction_Check(frame->f_funcobj));
+ PyObject *closure = ((PyFunctionObject *)frame->f_funcobj)->func_closure;
+ assert(oparg == co->co_nfreevars);
+ int offset = co->co_nlocalsplus - oparg;
+ for (int i = 0; i < oparg; ++i) {
+ PyObject *o = PyTuple_GET_ITEM(closure, i);
+ frame->localsplus[offset + i] = Py_NewRef(o);
+ }
+ #line 2010 "Python/generated_cases.c.h"
+ DISPATCH();
+ }
+
+ TARGET(BUILD_STRING) {
+ PyObject **pieces = (stack_pointer - oparg);
+ PyObject *str;
+ #line 1483 "Python/bytecodes.c"
+ str = _PyUnicode_JoinArray(&_Py_STR(empty), pieces, oparg);
+ #line 2019 "Python/generated_cases.c.h"
+ for (int _i = oparg; --_i >= 0;) {
+ Py_DECREF(pieces[_i]);
+ }
+ #line 1485 "Python/bytecodes.c"
+ if (str == NULL) { STACK_SHRINK(oparg); goto error; }
+ #line 2025 "Python/generated_cases.c.h"
+ STACK_SHRINK(oparg);
+ STACK_GROW(1);
+ stack_pointer[-1] = str;
+ DISPATCH();
+ }
+
+ TARGET(BUILD_TUPLE) {
+ PyObject **values = (stack_pointer - oparg);
+ PyObject *tup;
+ #line 1489 "Python/bytecodes.c"
+ tup = _PyTuple_FromArraySteal(values, oparg);
+ if (tup == NULL) { STACK_SHRINK(oparg); goto error; }
+ #line 2038 "Python/generated_cases.c.h"
+ STACK_SHRINK(oparg);
+ STACK_GROW(1);
+ stack_pointer[-1] = tup;
+ DISPATCH();
+ }
+
+ TARGET(BUILD_LIST) {
+ PyObject **values = (stack_pointer - oparg);
+ PyObject *list;
+ #line 1494 "Python/bytecodes.c"
+ list = _PyList_FromArraySteal(values, oparg);
+ if (list == NULL) { STACK_SHRINK(oparg); goto error; }
+ #line 2051 "Python/generated_cases.c.h"
+ STACK_SHRINK(oparg);
+ STACK_GROW(1);
+ stack_pointer[-1] = list;
+ DISPATCH();
+ }
+
+ TARGET(LIST_EXTEND) {
+ PyObject *iterable = stack_pointer[-1];
+ PyObject *list = stack_pointer[-(2 + (oparg-1))];
+ #line 1499 "Python/bytecodes.c"
+ PyObject *none_val = _PyList_Extend((PyListObject *)list, iterable);
+ if (none_val == NULL) {
+ if (_PyErr_ExceptionMatches(tstate, PyExc_TypeError) &&
+ (Py_TYPE(iterable)->tp_iter == NULL && !PySequence_Check(iterable)))
+ {
+ _PyErr_Clear(tstate);
+ _PyErr_Format(tstate, PyExc_TypeError,
+ "Value after * must be an iterable, not %.200s",
+ Py_TYPE(iterable)->tp_name);
+ }
+ #line 2072 "Python/generated_cases.c.h"
+ Py_DECREF(iterable);
+ #line 1510 "Python/bytecodes.c"
+ if (true) goto pop_1_error;
+ }
+ assert(Py_IsNone(none_val));
+ #line 2078 "Python/generated_cases.c.h"
+ Py_DECREF(iterable);
+ STACK_SHRINK(1);
+ DISPATCH();
+ }
+
+ TARGET(SET_UPDATE) {
+ PyObject *iterable = stack_pointer[-1];
+ PyObject *set = stack_pointer[-(2 + (oparg-1))];
+ #line 1517 "Python/bytecodes.c"
+ int err = _PySet_Update(set, iterable);
+ #line 2089 "Python/generated_cases.c.h"
+ Py_DECREF(iterable);
+ #line 1519 "Python/bytecodes.c"
+ if (err < 0) goto pop_1_error;
+ #line 2093 "Python/generated_cases.c.h"
+ STACK_SHRINK(1);
+ DISPATCH();
+ }
+
+ TARGET(BUILD_SET) {
+ PyObject **values = (stack_pointer - oparg);
+ PyObject *set;
+ #line 1523 "Python/bytecodes.c"
+ set = PySet_New(NULL);
+ if (set == NULL)
+ goto error;
+ int err = 0;
+ for (int i = 0; i < oparg; i++) {
+ PyObject *item = values[i];
+ if (err == 0)
+ err = PySet_Add(set, item);
+ Py_DECREF(item);
+ }
+ if (err != 0) {
+ Py_DECREF(set);
+ if (true) { STACK_SHRINK(oparg); goto error; }
+ }
+ #line 2116 "Python/generated_cases.c.h"
+ STACK_SHRINK(oparg);
+ STACK_GROW(1);
+ stack_pointer[-1] = set;
+ DISPATCH();
+ }
+
+ TARGET(BUILD_MAP) {
+ PyObject **values = (stack_pointer - oparg*2);
+ PyObject *map;
+ #line 1540 "Python/bytecodes.c"
+ map = _PyDict_FromItems(
+ values, 2,
+ values+1, 2,
+ oparg);
+ #line 2131 "Python/generated_cases.c.h"
+ for (int _i = oparg*2; --_i >= 0;) {
+ Py_DECREF(values[_i]);
+ }
+ #line 1545 "Python/bytecodes.c"
+ if (map == NULL) { STACK_SHRINK(oparg*2); goto error; }
+ #line 2137 "Python/generated_cases.c.h"
+ STACK_SHRINK(oparg*2);
+ STACK_GROW(1);
+ stack_pointer[-1] = map;
+ DISPATCH();
+ }
+
+ TARGET(SETUP_ANNOTATIONS) {
+ #line 1549 "Python/bytecodes.c"
+ int err;
+ PyObject *ann_dict;
+ if (LOCALS() == NULL) {
+ _PyErr_Format(tstate, PyExc_SystemError,
+ "no locals found when setting up annotations");
+ if (true) goto error;
+ }
+ /* check if __annotations__ in locals()... */
+ if (PyDict_CheckExact(LOCALS())) {
+ ann_dict = _PyDict_GetItemWithError(LOCALS(),
+ &_Py_ID(__annotations__));
+ if (ann_dict == NULL) {
+ if (_PyErr_Occurred(tstate)) goto error;
+ /* ...if not, create a new one */
+ ann_dict = PyDict_New();
+ if (ann_dict == NULL) goto error;
+ err = PyDict_SetItem(LOCALS(), &_Py_ID(__annotations__),
+ ann_dict);
+ Py_DECREF(ann_dict);
+ if (err) goto error;
+ }
+ }
+ else {
+ /* do the same if locals() is not a dict */
+ ann_dict = PyObject_GetItem(LOCALS(), &_Py_ID(__annotations__));
+ if (ann_dict == NULL) {
+ if (!_PyErr_ExceptionMatches(tstate, PyExc_KeyError)) goto error;
+ _PyErr_Clear(tstate);
+ ann_dict = PyDict_New();
+ if (ann_dict == NULL) goto error;
+ err = PyObject_SetItem(LOCALS(), &_Py_ID(__annotations__),
+ ann_dict);
+ Py_DECREF(ann_dict);
+ if (err) goto error;
+ }
+ else {
+ Py_DECREF(ann_dict);
+ }
+ }
+ #line 2185 "Python/generated_cases.c.h"
+ DISPATCH();
+ }
+
+ TARGET(BUILD_CONST_KEY_MAP) {
+ PyObject *keys = stack_pointer[-1];
+ PyObject **values = (stack_pointer - (1 + oparg));
+ PyObject *map;
+ #line 1591 "Python/bytecodes.c"
+ if (!PyTuple_CheckExact(keys) ||
+ PyTuple_GET_SIZE(keys) != (Py_ssize_t)oparg) {
+ _PyErr_SetString(tstate, PyExc_SystemError,
+ "bad BUILD_CONST_KEY_MAP keys argument");
+ goto error; // Pop the keys and values.
+ }
+ map = _PyDict_FromItems(
+ &PyTuple_GET_ITEM(keys, 0), 1,
+ values, 1, oparg);
+ #line 2203 "Python/generated_cases.c.h"
+ for (int _i = oparg; --_i >= 0;) {
+ Py_DECREF(values[_i]);
+ }
+ Py_DECREF(keys);
+ #line 1601 "Python/bytecodes.c"
+ if (map == NULL) { STACK_SHRINK(oparg); goto pop_1_error; }
+ #line 2210 "Python/generated_cases.c.h"
+ STACK_SHRINK(oparg);
+ stack_pointer[-1] = map;
+ DISPATCH();
+ }
+
+ TARGET(DICT_UPDATE) {
+ PyObject *update = stack_pointer[-1];
+ #line 1605 "Python/bytecodes.c"
+ PyObject *dict = PEEK(oparg + 1); // update is still on the stack
+ if (PyDict_Update(dict, update) < 0) {
+ if (_PyErr_ExceptionMatches(tstate, PyExc_AttributeError)) {
+ _PyErr_Format(tstate, PyExc_TypeError,
+ "'%.200s' object is not a mapping",
+ Py_TYPE(update)->tp_name);
+ }
+ #line 2226 "Python/generated_cases.c.h"
+ Py_DECREF(update);
+ #line 1613 "Python/bytecodes.c"
+ if (true) goto pop_1_error;
+ }
+ #line 2231 "Python/generated_cases.c.h"
+ Py_DECREF(update);
+ STACK_SHRINK(1);
+ DISPATCH();
+ }
+
+ TARGET(DICT_MERGE) {
+ PyObject *update = stack_pointer[-1];
+ #line 1619 "Python/bytecodes.c"
+ PyObject *dict = PEEK(oparg + 1); // update is still on the stack
+
+ if (_PyDict_MergeEx(dict, update, 2) < 0) {
+ format_kwargs_error(tstate, PEEK(3 + oparg), update);
+ #line 2244 "Python/generated_cases.c.h"
+ Py_DECREF(update);
+ #line 1624 "Python/bytecodes.c"
+ if (true) goto pop_1_error;
+ }
+ #line 2249 "Python/generated_cases.c.h"
+ Py_DECREF(update);
+ STACK_SHRINK(1);
+ PREDICT(CALL_FUNCTION_EX);
+ DISPATCH();
+ }
+
+ TARGET(MAP_ADD) {
+ PyObject *value = stack_pointer[-1];
+ PyObject *key = stack_pointer[-2];
+ #line 1631 "Python/bytecodes.c"
+ PyObject *dict = PEEK(oparg + 2); // key, value are still on the stack
+ assert(PyDict_CheckExact(dict));
+ /* dict[key] = value */
+ // Do not DECREF INPUTS because the function steals the references
+ if (_PyDict_SetItem_Take2((PyDictObject *)dict, key, value) != 0) goto pop_2_error;
+ #line 2265 "Python/generated_cases.c.h"
+ STACK_SHRINK(2);
+ PREDICT(JUMP_BACKWARD);
+ DISPATCH();
+ }
+
+ TARGET(INSTRUMENTED_LOAD_SUPER_ATTR) {
+ #line 1640 "Python/bytecodes.c"
+ _PySuperAttrCache *cache = (_PySuperAttrCache *)next_instr;
+ // cancel out the decrement that will happen in LOAD_SUPER_ATTR; we
+ // don't want to specialize instrumented instructions
+ INCREMENT_ADAPTIVE_COUNTER(cache->counter);
+ GO_TO_INSTRUCTION(LOAD_SUPER_ATTR);
+ #line 2278 "Python/generated_cases.c.h"
+ }
+
+ TARGET(LOAD_SUPER_ATTR) {
+ PREDICTED(LOAD_SUPER_ATTR);
+ static_assert(INLINE_CACHE_ENTRIES_LOAD_SUPER_ATTR == 1, "incorrect cache size");
+ PyObject *self = stack_pointer[-1];
+ PyObject *class = stack_pointer[-2];
+ PyObject *global_super = stack_pointer[-3];
+ PyObject *res2 = NULL;
+ PyObject *res;
+ #line 1654 "Python/bytecodes.c"
+ PyObject *name = GETITEM(frame->f_code->co_names, oparg >> 2);
+ int load_method = oparg & 1;
+ #if ENABLE_SPECIALIZATION
+ _PySuperAttrCache *cache = (_PySuperAttrCache *)next_instr;
+ if (ADAPTIVE_COUNTER_IS_ZERO(cache->counter)) {
+ next_instr--;
+ _Py_Specialize_LoadSuperAttr(global_super, class, next_instr, load_method);
+ DISPATCH_SAME_OPARG();
+ }
+ STAT_INC(LOAD_SUPER_ATTR, deferred);
+ DECREMENT_ADAPTIVE_COUNTER(cache->counter);
+ #endif /* ENABLE_SPECIALIZATION */
+
+ if (opcode == INSTRUMENTED_LOAD_SUPER_ATTR) {
+ PyObject *arg = oparg & 2 ? class : &_PyInstrumentation_MISSING;
+ int err = _Py_call_instrumentation_2args(
+ tstate, PY_MONITORING_EVENT_CALL,
+ frame, next_instr-1, global_super, arg);
+ if (err) goto pop_3_error;
+ }
+
+ // we make no attempt to optimize here; specializations should
+ // handle any case whose performance we care about
+ PyObject *stack[] = {class, self};
+ PyObject *super = PyObject_Vectorcall(global_super, stack, oparg & 2, NULL);
+ if (opcode == INSTRUMENTED_LOAD_SUPER_ATTR) {
+ PyObject *arg = oparg & 2 ? class : &_PyInstrumentation_MISSING;
+ if (super == NULL) {
+ _Py_call_instrumentation_exc2(
+ tstate, PY_MONITORING_EVENT_C_RAISE,
+ frame, next_instr-1, global_super, arg);
+ }
+ else {
+ int err = _Py_call_instrumentation_2args(
+ tstate, PY_MONITORING_EVENT_C_RETURN,
+ frame, next_instr-1, global_super, arg);
+ if (err < 0) {
+ Py_CLEAR(super);
+ }
+ }
+ }
+ #line 2331 "Python/generated_cases.c.h"
+ Py_DECREF(global_super);
+ Py_DECREF(class);
+ Py_DECREF(self);
+ #line 1696 "Python/bytecodes.c"
+ if (super == NULL) goto pop_3_error;
+ res = PyObject_GetAttr(super, name);
+ Py_DECREF(super);
+ if (res == NULL) goto pop_3_error;
+ #line 2340 "Python/generated_cases.c.h"
+ STACK_SHRINK(2);
+ STACK_GROW(((oparg & 1) ? 1 : 0));
+ stack_pointer[-1] = res;
+ if (oparg & 1) { stack_pointer[-(1 + ((oparg & 1) ? 1 : 0))] = res2; }
+ next_instr += 1;
+ DISPATCH();
+ }
+
+ TARGET(LOAD_SUPER_ATTR_ATTR) {
+ PyObject *self = stack_pointer[-1];
+ PyObject *class = stack_pointer[-2];
+ PyObject *global_super = stack_pointer[-3];
+ PyObject *res2 = NULL;
+ PyObject *res;
+ #line 1703 "Python/bytecodes.c"
+ assert(!(oparg & 1));
+ DEOPT_IF(global_super != (PyObject *)&PySuper_Type, LOAD_SUPER_ATTR);
+ DEOPT_IF(!PyType_Check(class), LOAD_SUPER_ATTR);
+ STAT_INC(LOAD_SUPER_ATTR, hit);
+ PyObject *name = GETITEM(frame->f_code->co_names, oparg >> 2);
+ res = _PySuper_Lookup((PyTypeObject *)class, self, name, NULL);
+ #line 2362 "Python/generated_cases.c.h"
+ Py_DECREF(global_super);
+ Py_DECREF(class);
+ Py_DECREF(self);
+ #line 1710 "Python/bytecodes.c"
+ if (res == NULL) goto pop_3_error;
+ #line 2368 "Python/generated_cases.c.h"
+ STACK_SHRINK(2);
+ STACK_GROW(((oparg & 1) ? 1 : 0));
+ stack_pointer[-1] = res;
+ if (oparg & 1) { stack_pointer[-(1 + ((oparg & 1) ? 1 : 0))] = res2; }
+ next_instr += 1;
+ DISPATCH();
+ }
+
+ TARGET(LOAD_SUPER_ATTR_METHOD) {
+ PyObject *self = stack_pointer[-1];
+ PyObject *class = stack_pointer[-2];
+ PyObject *global_super = stack_pointer[-3];
+ PyObject *res2;
+ PyObject *res;
+ #line 1714 "Python/bytecodes.c"
+ assert(oparg & 1);
+ DEOPT_IF(global_super != (PyObject *)&PySuper_Type, LOAD_SUPER_ATTR);
+ DEOPT_IF(!PyType_Check(class), LOAD_SUPER_ATTR);
+ STAT_INC(LOAD_SUPER_ATTR, hit);
+ PyObject *name = GETITEM(frame->f_code->co_names, oparg >> 2);
+ PyTypeObject *cls = (PyTypeObject *)class;
+ int method_found = 0;
+ res2 = _PySuper_Lookup(cls, self, name,
+ Py_TYPE(self)->tp_getattro == PyObject_GenericGetAttr ? &method_found : NULL);
+ Py_DECREF(global_super);
+ Py_DECREF(class);
+ if (res2 == NULL) {
+ Py_DECREF(self);
+ if (true) goto pop_3_error;
+ }
+ if (method_found) {
+ res = self; // transfer ownership
+ } else {
+ Py_DECREF(self);
+ res = res2;
+ res2 = NULL;
+ }
+ #line 2406 "Python/generated_cases.c.h"
+ STACK_SHRINK(1);
+ stack_pointer[-1] = res;
+ stack_pointer[-2] = res2;
+ next_instr += 1;
+ DISPATCH();
+ }
+
+ TARGET(LOAD_ATTR) {
+ PREDICTED(LOAD_ATTR);
+ static_assert(INLINE_CACHE_ENTRIES_LOAD_ATTR == 9, "incorrect cache size");
+ PyObject *owner = stack_pointer[-1];
+ PyObject *res2 = NULL;
+ PyObject *res;
+ #line 1753 "Python/bytecodes.c"
+ #if ENABLE_SPECIALIZATION
+ _PyAttrCache *cache = (_PyAttrCache *)next_instr;
+ if (ADAPTIVE_COUNTER_IS_ZERO(cache->counter)) {
+ PyObject *name = GETITEM(frame->f_code->co_names, oparg>>1);
+ next_instr--;
+ _Py_Specialize_LoadAttr(owner, next_instr, name);
+ DISPATCH_SAME_OPARG();
+ }
+ STAT_INC(LOAD_ATTR, deferred);
+ DECREMENT_ADAPTIVE_COUNTER(cache->counter);
+ #endif /* ENABLE_SPECIALIZATION */
+ PyObject *name = GETITEM(frame->f_code->co_names, oparg >> 1);
+ if (oparg & 1) {
+ /* Designed to work in tandem with CALL, pushes two values. */
+ PyObject* meth = NULL;
+ if (_PyObject_GetMethod(owner, name, &meth)) {
+ /* We can bypass temporary bound method object.
+ meth is unbound method and obj is self.
+
+ meth | self | arg1 | ... | argN
+ */
+ assert(meth != NULL); // No errors on this branch
+ res2 = meth;
+ res = owner; // Transfer ownership
+ }
+ else {
+ /* meth is not an unbound method (but a regular attr, or
+ something was returned by a descriptor protocol). Set
+ the second element of the stack to NULL, to signal
+ CALL that it's not a method call.
+
+ NULL | meth | arg1 | ... | argN
+ */
+ #line 2454 "Python/generated_cases.c.h"
+ Py_DECREF(owner);
+ #line 1787 "Python/bytecodes.c"
+ if (meth == NULL) goto pop_1_error;
+ res2 = NULL;
+ res = meth;
+ }
+ }
+ else {
+ /* Classic, pushes one value. */
+ res = PyObject_GetAttr(owner, name);
+ #line 2465 "Python/generated_cases.c.h"
+ Py_DECREF(owner);
+ #line 1796 "Python/bytecodes.c"
+ if (res == NULL) goto pop_1_error;
+ }
+ #line 2470 "Python/generated_cases.c.h"
+ STACK_GROW(((oparg & 1) ? 1 : 0));
+ stack_pointer[-1] = res;
+ if (oparg & 1) { stack_pointer[-(1 + ((oparg & 1) ? 1 : 0))] = res2; }
+ next_instr += 9;
+ DISPATCH();
+ }
+
+ TARGET(LOAD_ATTR_INSTANCE_VALUE) {
+ PyObject *owner = stack_pointer[-1];
+ PyObject *res2 = NULL;
+ PyObject *res;
+ uint32_t type_version = read_u32(&next_instr[1].cache);
+ uint16_t index = read_u16(&next_instr[3].cache);
+ #line 1801 "Python/bytecodes.c"
+ PyTypeObject *tp = Py_TYPE(owner);
+ assert(type_version != 0);
+ DEOPT_IF(tp->tp_version_tag != type_version, LOAD_ATTR);
+ assert(tp->tp_dictoffset < 0);
+ assert(tp->tp_flags & Py_TPFLAGS_MANAGED_DICT);
+ PyDictOrValues dorv = *_PyObject_DictOrValuesPointer(owner);
+ DEOPT_IF(!_PyDictOrValues_IsValues(dorv), LOAD_ATTR);
+ res = _PyDictOrValues_GetValues(dorv)->values[index];
+ DEOPT_IF(res == NULL, LOAD_ATTR);
+ STAT_INC(LOAD_ATTR, hit);
+ Py_INCREF(res);
+ res2 = NULL;
+ #line 2497 "Python/generated_cases.c.h"
+ Py_DECREF(owner);
+ STACK_GROW(((oparg & 1) ? 1 : 0));
+ stack_pointer[-1] = res;
+ if (oparg & 1) { stack_pointer[-(1 + ((oparg & 1) ? 1 : 0))] = res2; }
+ next_instr += 9;
+ DISPATCH();
+ }
+
+ TARGET(LOAD_ATTR_MODULE) {
+ PyObject *owner = stack_pointer[-1];
+ PyObject *res2 = NULL;
+ PyObject *res;
+ uint32_t type_version = read_u32(&next_instr[1].cache);
+ uint16_t index = read_u16(&next_instr[3].cache);
+ #line 1817 "Python/bytecodes.c"
+ DEOPT_IF(!PyModule_CheckExact(owner), LOAD_ATTR);
+ PyDictObject *dict = (PyDictObject *)((PyModuleObject *)owner)->md_dict;
+ assert(dict != NULL);
+ DEOPT_IF(dict->ma_keys->dk_version != type_version, LOAD_ATTR);
+ assert(dict->ma_keys->dk_kind == DICT_KEYS_UNICODE);
+ assert(index < dict->ma_keys->dk_nentries);
+ PyDictUnicodeEntry *ep = DK_UNICODE_ENTRIES(dict->ma_keys) + index;
+ res = ep->me_value;
+ DEOPT_IF(res == NULL, LOAD_ATTR);
+ STAT_INC(LOAD_ATTR, hit);
+ Py_INCREF(res);
+ res2 = NULL;
+ #line 2525 "Python/generated_cases.c.h"
+ Py_DECREF(owner);
+ STACK_GROW(((oparg & 1) ? 1 : 0));
+ stack_pointer[-1] = res;
+ if (oparg & 1) { stack_pointer[-(1 + ((oparg & 1) ? 1 : 0))] = res2; }
+ next_instr += 9;
+ DISPATCH();
+ }
+
+ TARGET(LOAD_ATTR_WITH_HINT) {
+ PyObject *owner = stack_pointer[-1];
+ PyObject *res2 = NULL;
+ PyObject *res;
+ uint32_t type_version = read_u32(&next_instr[1].cache);
+ uint16_t index = read_u16(&next_instr[3].cache);
+ #line 1833 "Python/bytecodes.c"
+ PyTypeObject *tp = Py_TYPE(owner);
+ assert(type_version != 0);
+ DEOPT_IF(tp->tp_version_tag != type_version, LOAD_ATTR);
+ assert(tp->tp_flags & Py_TPFLAGS_MANAGED_DICT);
+ PyDictOrValues dorv = *_PyObject_DictOrValuesPointer(owner);
+ DEOPT_IF(_PyDictOrValues_IsValues(dorv), LOAD_ATTR);
+ PyDictObject *dict = (PyDictObject *)_PyDictOrValues_GetDict(dorv);
+ DEOPT_IF(dict == NULL, LOAD_ATTR);
+ assert(PyDict_CheckExact((PyObject *)dict));
+ PyObject *name = GETITEM(frame->f_code->co_names, oparg>>1);
+ uint16_t hint = index;
+ DEOPT_IF(hint >= (size_t)dict->ma_keys->dk_nentries, LOAD_ATTR);
+ if (DK_IS_UNICODE(dict->ma_keys)) {
+ PyDictUnicodeEntry *ep = DK_UNICODE_ENTRIES(dict->ma_keys) + hint;
+ DEOPT_IF(ep->me_key != name, LOAD_ATTR);
+ res = ep->me_value;
+ }
+ else {
+ PyDictKeyEntry *ep = DK_ENTRIES(dict->ma_keys) + hint;
+ DEOPT_IF(ep->me_key != name, LOAD_ATTR);
+ res = ep->me_value;
+ }
+ DEOPT_IF(res == NULL, LOAD_ATTR);
+ STAT_INC(LOAD_ATTR, hit);
+ Py_INCREF(res);
+ res2 = NULL;
+ #line 2567 "Python/generated_cases.c.h"
+ Py_DECREF(owner);
+ STACK_GROW(((oparg & 1) ? 1 : 0));
+ stack_pointer[-1] = res;
+ if (oparg & 1) { stack_pointer[-(1 + ((oparg & 1) ? 1 : 0))] = res2; }
+ next_instr += 9;
+ DISPATCH();
+ }
+
+ TARGET(LOAD_ATTR_SLOT) {
+ PyObject *owner = stack_pointer[-1];
+ PyObject *res2 = NULL;
+ PyObject *res;
+ uint32_t type_version = read_u32(&next_instr[1].cache);
+ uint16_t index = read_u16(&next_instr[3].cache);
+ #line 1863 "Python/bytecodes.c"
+ PyTypeObject *tp = Py_TYPE(owner);
+ assert(type_version != 0);
+ DEOPT_IF(tp->tp_version_tag != type_version, LOAD_ATTR);
+ char *addr = (char *)owner + index;
+ res = *(PyObject **)addr;
+ DEOPT_IF(res == NULL, LOAD_ATTR);
+ STAT_INC(LOAD_ATTR, hit);
+ Py_INCREF(res);
+ res2 = NULL;
+ #line 2592 "Python/generated_cases.c.h"
+ Py_DECREF(owner);
+ STACK_GROW(((oparg & 1) ? 1 : 0));
+ stack_pointer[-1] = res;
+ if (oparg & 1) { stack_pointer[-(1 + ((oparg & 1) ? 1 : 0))] = res2; }
+ next_instr += 9;
+ DISPATCH();
+ }
+
+ TARGET(LOAD_ATTR_CLASS) {
+ PyObject *cls = stack_pointer[-1];
+ PyObject *res2 = NULL;
+ PyObject *res;
+ uint32_t type_version = read_u32(&next_instr[1].cache);
+ PyObject *descr = read_obj(&next_instr[5].cache);
+ #line 1876 "Python/bytecodes.c"
+
+ DEOPT_IF(!PyType_Check(cls), LOAD_ATTR);
+ DEOPT_IF(((PyTypeObject *)cls)->tp_version_tag != type_version,
+ LOAD_ATTR);
+ assert(type_version != 0);
+
+ STAT_INC(LOAD_ATTR, hit);
+ res2 = NULL;
+ res = descr;
+ assert(res != NULL);
+ Py_INCREF(res);
+ #line 2619 "Python/generated_cases.c.h"
+ Py_DECREF(cls);
+ STACK_GROW(((oparg & 1) ? 1 : 0));
+ stack_pointer[-1] = res;
+ if (oparg & 1) { stack_pointer[-(1 + ((oparg & 1) ? 1 : 0))] = res2; }
+ next_instr += 9;
+ DISPATCH();
+ }
+
+ TARGET(LOAD_ATTR_PROPERTY) {
+ PyObject *owner = stack_pointer[-1];
+ uint32_t type_version = read_u32(&next_instr[1].cache);
+ uint32_t func_version = read_u32(&next_instr[3].cache);
+ PyObject *fget = read_obj(&next_instr[5].cache);
+ #line 1891 "Python/bytecodes.c"
+ DEOPT_IF(tstate->interp->eval_frame, LOAD_ATTR);
+
+ PyTypeObject *cls = Py_TYPE(owner);
+ DEOPT_IF(cls->tp_version_tag != type_version, LOAD_ATTR);
+ assert(type_version != 0);
+ assert(Py_IS_TYPE(fget, &PyFunction_Type));
+ PyFunctionObject *f = (PyFunctionObject *)fget;
+ assert(func_version != 0);
+ DEOPT_IF(f->func_version != func_version, LOAD_ATTR);
+ PyCodeObject *code = (PyCodeObject *)f->func_code;
+ assert(code->co_argcount == 1);
+ DEOPT_IF(!_PyThreadState_HasStackSpace(tstate, code->co_framesize), LOAD_ATTR);
+ STAT_INC(LOAD_ATTR, hit);
+ Py_INCREF(fget);
+ _PyInterpreterFrame *new_frame = _PyFrame_PushUnchecked(tstate, f, 1);
+ // Manipulate stack directly because we exit with DISPATCH_INLINED().
+ SET_TOP(NULL);
+ int shrink_stack = !(oparg & 1);
+ STACK_SHRINK(shrink_stack);
+ new_frame->localsplus[0] = owner;
+ JUMPBY(INLINE_CACHE_ENTRIES_LOAD_ATTR);
+ frame->return_offset = 0;
+ DISPATCH_INLINED(new_frame);
+ #line 2657 "Python/generated_cases.c.h"
+ }
+
+ TARGET(LOAD_ATTR_GETATTRIBUTE_OVERRIDDEN) {
+ PyObject *owner = stack_pointer[-1];
+ uint32_t type_version = read_u32(&next_instr[1].cache);
+ uint32_t func_version = read_u32(&next_instr[3].cache);
+ PyObject *getattribute = read_obj(&next_instr[5].cache);
+ #line 1917 "Python/bytecodes.c"
+ DEOPT_IF(tstate->interp->eval_frame, LOAD_ATTR);
+ PyTypeObject *cls = Py_TYPE(owner);
+ DEOPT_IF(cls->tp_version_tag != type_version, LOAD_ATTR);
+ assert(type_version != 0);
+ assert(Py_IS_TYPE(getattribute, &PyFunction_Type));
+ PyFunctionObject *f = (PyFunctionObject *)getattribute;
+ assert(func_version != 0);
+ DEOPT_IF(f->func_version != func_version, LOAD_ATTR);
+ PyCodeObject *code = (PyCodeObject *)f->func_code;
+ assert(code->co_argcount == 2);
+ DEOPT_IF(!_PyThreadState_HasStackSpace(tstate, code->co_framesize), LOAD_ATTR);
+ STAT_INC(LOAD_ATTR, hit);
+
+ PyObject *name = GETITEM(frame->f_code->co_names, oparg >> 1);
+ Py_INCREF(f);
+ _PyInterpreterFrame *new_frame = _PyFrame_PushUnchecked(tstate, f, 2);
+ // Manipulate stack directly because we exit with DISPATCH_INLINED().
+ SET_TOP(NULL);
+ int shrink_stack = !(oparg & 1);
+ STACK_SHRINK(shrink_stack);
+ new_frame->localsplus[0] = owner;
+ new_frame->localsplus[1] = Py_NewRef(name);
+ JUMPBY(INLINE_CACHE_ENTRIES_LOAD_ATTR);
+ frame->return_offset = 0;
+ DISPATCH_INLINED(new_frame);
+ #line 2691 "Python/generated_cases.c.h"
+ }
+
+ TARGET(STORE_ATTR_INSTANCE_VALUE) {
+ PyObject *owner = stack_pointer[-1];
+ PyObject *value = stack_pointer[-2];
+ uint32_t type_version = read_u32(&next_instr[1].cache);
+ uint16_t index = read_u16(&next_instr[3].cache);
+ #line 1945 "Python/bytecodes.c"
+ PyTypeObject *tp = Py_TYPE(owner);
+ assert(type_version != 0);
+ DEOPT_IF(tp->tp_version_tag != type_version, STORE_ATTR);
+ assert(tp->tp_flags & Py_TPFLAGS_MANAGED_DICT);
+ PyDictOrValues dorv = *_PyObject_DictOrValuesPointer(owner);
+ DEOPT_IF(!_PyDictOrValues_IsValues(dorv), STORE_ATTR);
+ STAT_INC(STORE_ATTR, hit);
+ PyDictValues *values = _PyDictOrValues_GetValues(dorv);
+ PyObject *old_value = values->values[index];
+ values->values[index] = value;
+ if (old_value == NULL) {
+ _PyDictValues_AddToInsertionOrder(values, index);
+ }
+ else {
+ Py_DECREF(old_value);
+ }
+ Py_DECREF(owner);
+ #line 2717 "Python/generated_cases.c.h"
+ STACK_SHRINK(2);
+ next_instr += 4;
+ DISPATCH();
+ }
+
+ TARGET(STORE_ATTR_WITH_HINT) {
+ PyObject *owner = stack_pointer[-1];
+ PyObject *value = stack_pointer[-2];
+ uint32_t type_version = read_u32(&next_instr[1].cache);
+ uint16_t hint = read_u16(&next_instr[3].cache);
+ #line 1965 "Python/bytecodes.c"
+ PyTypeObject *tp = Py_TYPE(owner);
+ assert(type_version != 0);
+ DEOPT_IF(tp->tp_version_tag != type_version, STORE_ATTR);
+ assert(tp->tp_flags & Py_TPFLAGS_MANAGED_DICT);
+ PyDictOrValues dorv = *_PyObject_DictOrValuesPointer(owner);
+ DEOPT_IF(_PyDictOrValues_IsValues(dorv), STORE_ATTR);
+ PyDictObject *dict = (PyDictObject *)_PyDictOrValues_GetDict(dorv);
+ DEOPT_IF(dict == NULL, STORE_ATTR);
+ assert(PyDict_CheckExact((PyObject *)dict));
+ PyObject *name = GETITEM(frame->f_code->co_names, oparg);
+ DEOPT_IF(hint >= (size_t)dict->ma_keys->dk_nentries, STORE_ATTR);
+ PyObject *old_value;
+ uint64_t new_version;
+ if (DK_IS_UNICODE(dict->ma_keys)) {
+ PyDictUnicodeEntry *ep = DK_UNICODE_ENTRIES(dict->ma_keys) + hint;
+ DEOPT_IF(ep->me_key != name, STORE_ATTR);
+ old_value = ep->me_value;
+ DEOPT_IF(old_value == NULL, STORE_ATTR);
+ new_version = _PyDict_NotifyEvent(tstate->interp, PyDict_EVENT_MODIFIED, dict, name, value);
+ ep->me_value = value;
+ }
+ else {
+ PyDictKeyEntry *ep = DK_ENTRIES(dict->ma_keys) + hint;
+ DEOPT_IF(ep->me_key != name, STORE_ATTR);
+ old_value = ep->me_value;
+ DEOPT_IF(old_value == NULL, STORE_ATTR);
+ new_version = _PyDict_NotifyEvent(tstate->interp, PyDict_EVENT_MODIFIED, dict, name, value);
+ ep->me_value = value;
+ }
+ Py_DECREF(old_value);
+ STAT_INC(STORE_ATTR, hit);
+ /* Ensure dict is GC tracked if it needs to be */
+ if (!_PyObject_GC_IS_TRACKED(dict) && _PyObject_GC_MAY_BE_TRACKED(value)) {
+ _PyObject_GC_TRACK(dict);
+ }
+ /* PEP 509 */
+ dict->ma_version_tag = new_version;
+ Py_DECREF(owner);
+ #line 2767 "Python/generated_cases.c.h"
+ STACK_SHRINK(2);
+ next_instr += 4;
+ DISPATCH();
+ }
+
+ TARGET(STORE_ATTR_SLOT) {
+ PyObject *owner = stack_pointer[-1];
+ PyObject *value = stack_pointer[-2];
+ uint32_t type_version = read_u32(&next_instr[1].cache);
+ uint16_t index = read_u16(&next_instr[3].cache);
+ #line 2006 "Python/bytecodes.c"
+ PyTypeObject *tp = Py_TYPE(owner);
+ assert(type_version != 0);
+ DEOPT_IF(tp->tp_version_tag != type_version, STORE_ATTR);
+ char *addr = (char *)owner + index;
+ STAT_INC(STORE_ATTR, hit);
+ PyObject *old_value = *(PyObject **)addr;
+ *(PyObject **)addr = value;
+ Py_XDECREF(old_value);
+ Py_DECREF(owner);
+ #line 2788 "Python/generated_cases.c.h"
+ STACK_SHRINK(2);
+ next_instr += 4;
+ DISPATCH();
+ }
+
+ TARGET(COMPARE_OP) {
+ PREDICTED(COMPARE_OP);
+ static_assert(INLINE_CACHE_ENTRIES_COMPARE_OP == 1, "incorrect cache size");
+ PyObject *right = stack_pointer[-1];
+ PyObject *left = stack_pointer[-2];
+ PyObject *res;
+ #line 2025 "Python/bytecodes.c"
+ #if ENABLE_SPECIALIZATION
+ _PyCompareOpCache *cache = (_PyCompareOpCache *)next_instr;
+ if (ADAPTIVE_COUNTER_IS_ZERO(cache->counter)) {
+ next_instr--;
+ _Py_Specialize_CompareOp(left, right, next_instr, oparg);
+ DISPATCH_SAME_OPARG();
+ }
+ STAT_INC(COMPARE_OP, deferred);
+ DECREMENT_ADAPTIVE_COUNTER(cache->counter);
+ #endif /* ENABLE_SPECIALIZATION */
+ assert((oparg >> 4) <= Py_GE);
+ res = PyObject_RichCompare(left, right, oparg>>4);
+ #line 2813 "Python/generated_cases.c.h"
+ Py_DECREF(left);
+ Py_DECREF(right);
+ #line 2038 "Python/bytecodes.c"
+ if (res == NULL) goto pop_2_error;
+ #line 2818 "Python/generated_cases.c.h"
+ STACK_SHRINK(1);
+ stack_pointer[-1] = res;
+ next_instr += 1;
+ DISPATCH();
+ }
+
+ TARGET(COMPARE_OP_FLOAT) {
+ PyObject *right = stack_pointer[-1];
+ PyObject *left = stack_pointer[-2];
+ PyObject *res;
+ #line 2042 "Python/bytecodes.c"
+ DEOPT_IF(!PyFloat_CheckExact(left), COMPARE_OP);
+ DEOPT_IF(!PyFloat_CheckExact(right), COMPARE_OP);
+ STAT_INC(COMPARE_OP, hit);
+ double dleft = PyFloat_AS_DOUBLE(left);
+ double dright = PyFloat_AS_DOUBLE(right);
+ // 1 if NaN, 2 if <, 4 if >, 8 if ==; this matches low four bits of the oparg
+ int sign_ish = COMPARISON_BIT(dleft, dright);
+ _Py_DECREF_SPECIALIZED(left, _PyFloat_ExactDealloc);
+ _Py_DECREF_SPECIALIZED(right, _PyFloat_ExactDealloc);
+ res = (sign_ish & oparg) ? Py_True : Py_False;
+ #line 2840 "Python/generated_cases.c.h"
+ STACK_SHRINK(1);
+ stack_pointer[-1] = res;
+ next_instr += 1;
+ DISPATCH();
+ }
+
+ TARGET(COMPARE_OP_INT) {
+ PyObject *right = stack_pointer[-1];
+ PyObject *left = stack_pointer[-2];
+ PyObject *res;
+ #line 2056 "Python/bytecodes.c"
+ DEOPT_IF(!PyLong_CheckExact(left), COMPARE_OP);
+ DEOPT_IF(!PyLong_CheckExact(right), COMPARE_OP);
+ DEOPT_IF(!_PyLong_IsCompact((PyLongObject *)left), COMPARE_OP);
+ DEOPT_IF(!_PyLong_IsCompact((PyLongObject *)right), COMPARE_OP);
+ STAT_INC(COMPARE_OP, hit);
+ assert(_PyLong_DigitCount((PyLongObject *)left) <= 1 &&
+ _PyLong_DigitCount((PyLongObject *)right) <= 1);
+ Py_ssize_t ileft = _PyLong_CompactValue((PyLongObject *)left);
+ Py_ssize_t iright = _PyLong_CompactValue((PyLongObject *)right);
+ // 2 if <, 4 if >, 8 if ==; this matches the low 4 bits of the oparg
+ int sign_ish = COMPARISON_BIT(ileft, iright);
+ _Py_DECREF_SPECIALIZED(left, (destructor)PyObject_Free);
+ _Py_DECREF_SPECIALIZED(right, (destructor)PyObject_Free);
+ res = (sign_ish & oparg) ? Py_True : Py_False;
+ #line 2866 "Python/generated_cases.c.h"
+ STACK_SHRINK(1);
+ stack_pointer[-1] = res;
+ next_instr += 1;
+ DISPATCH();
+ }
+
+ TARGET(COMPARE_OP_STR) {
+ PyObject *right = stack_pointer[-1];
+ PyObject *left = stack_pointer[-2];
+ PyObject *res;
+ #line 2074 "Python/bytecodes.c"
+ DEOPT_IF(!PyUnicode_CheckExact(left), COMPARE_OP);
+ DEOPT_IF(!PyUnicode_CheckExact(right), COMPARE_OP);
+ STAT_INC(COMPARE_OP, hit);
+ int eq = _PyUnicode_Equal(left, right);
+ assert((oparg >>4) == Py_EQ || (oparg >>4) == Py_NE);
+ _Py_DECREF_SPECIALIZED(left, _PyUnicode_ExactDealloc);
+ _Py_DECREF_SPECIALIZED(right, _PyUnicode_ExactDealloc);
+ assert(eq == 0 || eq == 1);
+ assert((oparg & 0xf) == COMPARISON_NOT_EQUALS || (oparg & 0xf) == COMPARISON_EQUALS);
+ assert(COMPARISON_NOT_EQUALS + 1 == COMPARISON_EQUALS);
+ res = ((COMPARISON_NOT_EQUALS + eq) & oparg) ? Py_True : Py_False;
+ #line 2889 "Python/generated_cases.c.h"
+ STACK_SHRINK(1);
+ stack_pointer[-1] = res;
+ next_instr += 1;
+ DISPATCH();
+ }
+
+ TARGET(IS_OP) {
+ PyObject *right = stack_pointer[-1];
+ PyObject *left = stack_pointer[-2];
+ PyObject *b;
+ #line 2088 "Python/bytecodes.c"
+ int res = Py_Is(left, right) ^ oparg;
+ #line 2902 "Python/generated_cases.c.h"
+ Py_DECREF(left);
+ Py_DECREF(right);
+ #line 2090 "Python/bytecodes.c"
+ b = res ? Py_True : Py_False;
+ #line 2907 "Python/generated_cases.c.h"
+ STACK_SHRINK(1);
+ stack_pointer[-1] = b;
+ DISPATCH();
+ }
+
+ TARGET(CONTAINS_OP) {
+ PyObject *right = stack_pointer[-1];
+ PyObject *left = stack_pointer[-2];
+ PyObject *b;
+ #line 2094 "Python/bytecodes.c"
+ int res = PySequence_Contains(right, left);
+ #line 2919 "Python/generated_cases.c.h"
+ Py_DECREF(left);
+ Py_DECREF(right);
+ #line 2096 "Python/bytecodes.c"
+ if (res < 0) goto pop_2_error;
+ b = (res ^ oparg) ? Py_True : Py_False;
+ #line 2925 "Python/generated_cases.c.h"
+ STACK_SHRINK(1);
+ stack_pointer[-1] = b;
+ DISPATCH();
+ }
+
+ TARGET(CHECK_EG_MATCH) {
+ PyObject *match_type = stack_pointer[-1];
+ PyObject *exc_value = stack_pointer[-2];
+ PyObject *rest;
+ PyObject *match;
+ #line 2101 "Python/bytecodes.c"
+ if (check_except_star_type_valid(tstate, match_type) < 0) {
+ #line 2938 "Python/generated_cases.c.h"
+ Py_DECREF(exc_value);
+ Py_DECREF(match_type);
+ #line 2103 "Python/bytecodes.c"
+ if (true) goto pop_2_error;
+ }
+
+ match = NULL;
+ rest = NULL;
+ int res = exception_group_match(exc_value, match_type,
+ &match, &rest);
+ #line 2949 "Python/generated_cases.c.h"
+ Py_DECREF(exc_value);
+ Py_DECREF(match_type);
+ #line 2111 "Python/bytecodes.c"
+ if (res < 0) goto pop_2_error;
+
+ assert((match == NULL) == (rest == NULL));
+ if (match == NULL) goto pop_2_error;
+
+ if (!Py_IsNone(match)) {
+ PyErr_SetHandledException(match);
+ }
+ #line 2961 "Python/generated_cases.c.h"
+ stack_pointer[-1] = match;
+ stack_pointer[-2] = rest;
+ DISPATCH();
+ }
+
+ TARGET(CHECK_EXC_MATCH) {
+ PyObject *right = stack_pointer[-1];
+ PyObject *left = stack_pointer[-2];
+ PyObject *b;
+ #line 2122 "Python/bytecodes.c"
+ assert(PyExceptionInstance_Check(left));
+ if (check_except_type_valid(tstate, right) < 0) {
+ #line 2974 "Python/generated_cases.c.h"
+ Py_DECREF(right);
+ #line 2125 "Python/bytecodes.c"
+ if (true) goto pop_1_error;
+ }
+
+ int res = PyErr_GivenExceptionMatches(left, right);
+ #line 2981 "Python/generated_cases.c.h"
+ Py_DECREF(right);
+ #line 2130 "Python/bytecodes.c"
+ b = res ? Py_True : Py_False;
+ #line 2985 "Python/generated_cases.c.h"
+ stack_pointer[-1] = b;
+ DISPATCH();
+ }
+
+ TARGET(IMPORT_NAME) {
+ PyObject *fromlist = stack_pointer[-1];
+ PyObject *level = stack_pointer[-2];
+ PyObject *res;
+ #line 2134 "Python/bytecodes.c"
+ PyObject *name = GETITEM(frame->f_code->co_names, oparg);
+ res = import_name(tstate, frame, name, fromlist, level);
+ #line 2997 "Python/generated_cases.c.h"
+ Py_DECREF(level);
+ Py_DECREF(fromlist);
+ #line 2137 "Python/bytecodes.c"
+ if (res == NULL) goto pop_2_error;
+ #line 3002 "Python/generated_cases.c.h"
+ STACK_SHRINK(1);
+ stack_pointer[-1] = res;
+ DISPATCH();
+ }
+
+ TARGET(IMPORT_FROM) {
+ PyObject *from = stack_pointer[-1];
+ PyObject *res;
+ #line 2141 "Python/bytecodes.c"
+ PyObject *name = GETITEM(frame->f_code->co_names, oparg);
+ res = import_from(tstate, from, name);
+ if (res == NULL) goto error;
+ #line 3015 "Python/generated_cases.c.h"
+ STACK_GROW(1);
+ stack_pointer[-1] = res;
+ DISPATCH();
+ }
+
+ TARGET(JUMP_FORWARD) {
+ #line 2147 "Python/bytecodes.c"
+ JUMPBY(oparg);
+ #line 3024 "Python/generated_cases.c.h"
+ DISPATCH();
+ }
+
+ TARGET(JUMP_BACKWARD) {
+ PREDICTED(JUMP_BACKWARD);
+ #line 2151 "Python/bytecodes.c"
+ assert(oparg < INSTR_OFFSET());
+ JUMPBY(-oparg);
+ #line 3033 "Python/generated_cases.c.h"
+ CHECK_EVAL_BREAKER();
+ DISPATCH();
+ }
+
+ TARGET(POP_JUMP_IF_FALSE) {
+ PREDICTED(POP_JUMP_IF_FALSE);
+ PyObject *cond = stack_pointer[-1];
+ #line 2157 "Python/bytecodes.c"
+ if (Py_IsFalse(cond)) {
+ JUMPBY(oparg);
+ }
+ else if (!Py_IsTrue(cond)) {
+ int err = PyObject_IsTrue(cond);
+ #line 3047 "Python/generated_cases.c.h"
+ Py_DECREF(cond);
+ #line 2163 "Python/bytecodes.c"
+ if (err == 0) {
+ JUMPBY(oparg);
+ }
+ else {
+ if (err < 0) goto pop_1_error;
+ }
+ }
+ #line 3057 "Python/generated_cases.c.h"
+ STACK_SHRINK(1);
+ DISPATCH();
+ }
+
+ TARGET(POP_JUMP_IF_TRUE) {
+ PyObject *cond = stack_pointer[-1];
+ #line 2173 "Python/bytecodes.c"
+ if (Py_IsTrue(cond)) {
+ JUMPBY(oparg);
+ }
+ else if (!Py_IsFalse(cond)) {
+ int err = PyObject_IsTrue(cond);
+ #line 3070 "Python/generated_cases.c.h"
+ Py_DECREF(cond);
+ #line 2179 "Python/bytecodes.c"
+ if (err > 0) {
+ JUMPBY(oparg);
+ }
+ else {
+ if (err < 0) goto pop_1_error;
+ }
+ }
+ #line 3080 "Python/generated_cases.c.h"
+ STACK_SHRINK(1);
+ DISPATCH();
+ }
+
+ TARGET(POP_JUMP_IF_NOT_NONE) {
+ PyObject *value = stack_pointer[-1];
+ #line 2189 "Python/bytecodes.c"
+ if (!Py_IsNone(value)) {
+ #line 3089 "Python/generated_cases.c.h"
+ Py_DECREF(value);
+ #line 2191 "Python/bytecodes.c"
+ JUMPBY(oparg);
+ }
+ #line 3094 "Python/generated_cases.c.h"
+ STACK_SHRINK(1);
+ DISPATCH();
+ }
+
+ TARGET(POP_JUMP_IF_NONE) {
+ PyObject *value = stack_pointer[-1];
+ #line 2196 "Python/bytecodes.c"
+ if (Py_IsNone(value)) {
+ JUMPBY(oparg);
+ }
+ else {
+ #line 3106 "Python/generated_cases.c.h"
+ Py_DECREF(value);
+ #line 2201 "Python/bytecodes.c"
+ }
+ #line 3110 "Python/generated_cases.c.h"
+ STACK_SHRINK(1);
+ DISPATCH();
+ }
+
+ TARGET(JUMP_BACKWARD_NO_INTERRUPT) {
+ #line 2205 "Python/bytecodes.c"
+ /* This bytecode is used in the `yield from` or `await` loop.
+ * If there is an interrupt, we want it handled in the innermost
+ * generator or coroutine, so we deliberately do not check it here.
+ * (see bpo-30039).
+ */
+ JUMPBY(-oparg);
+ #line 3123 "Python/generated_cases.c.h"
+ DISPATCH();
+ }
+
+ TARGET(GET_LEN) {
+ PyObject *obj = stack_pointer[-1];
+ PyObject *len_o;
+ #line 2214 "Python/bytecodes.c"
+ // PUSH(len(TOS))
+ Py_ssize_t len_i = PyObject_Length(obj);
+ if (len_i < 0) goto error;
+ len_o = PyLong_FromSsize_t(len_i);
+ if (len_o == NULL) goto error;
+ #line 3136 "Python/generated_cases.c.h"
+ STACK_GROW(1);
+ stack_pointer[-1] = len_o;
+ DISPATCH();
+ }
+
+ TARGET(MATCH_CLASS) {
+ PyObject *names = stack_pointer[-1];
+ PyObject *type = stack_pointer[-2];
+ PyObject *subject = stack_pointer[-3];
+ PyObject *attrs;
+ #line 2222 "Python/bytecodes.c"
+ // Pop TOS and TOS1. Set TOS to a tuple of attributes on success, or
+ // None on failure.
+ assert(PyTuple_CheckExact(names));
+ attrs = match_class(tstate, subject, type, oparg, names);
+ #line 3152 "Python/generated_cases.c.h"
+ Py_DECREF(subject);
+ Py_DECREF(type);
+ Py_DECREF(names);
+ #line 2227 "Python/bytecodes.c"
+ if (attrs) {
+ assert(PyTuple_CheckExact(attrs)); // Success!
+ }
+ else {
+ if (_PyErr_Occurred(tstate)) goto pop_3_error;
+ attrs = Py_None; // Failure!
+ }
+ #line 3164 "Python/generated_cases.c.h"
+ STACK_SHRINK(2);
+ stack_pointer[-1] = attrs;
+ DISPATCH();
+ }
+
+ TARGET(MATCH_MAPPING) {
+ PyObject *subject = stack_pointer[-1];
+ PyObject *res;
+ #line 2237 "Python/bytecodes.c"
+ int match = Py_TYPE(subject)->tp_flags & Py_TPFLAGS_MAPPING;
+ res = match ? Py_True : Py_False;
+ #line 3176 "Python/generated_cases.c.h"
+ STACK_GROW(1);
+ stack_pointer[-1] = res;
+ PREDICT(POP_JUMP_IF_FALSE);
+ DISPATCH();
+ }
+
+ TARGET(MATCH_SEQUENCE) {
+ PyObject *subject = stack_pointer[-1];
+ PyObject *res;
+ #line 2243 "Python/bytecodes.c"
+ int match = Py_TYPE(subject)->tp_flags & Py_TPFLAGS_SEQUENCE;
+ res = match ? Py_True : Py_False;
+ #line 3189 "Python/generated_cases.c.h"
+ STACK_GROW(1);
+ stack_pointer[-1] = res;
+ PREDICT(POP_JUMP_IF_FALSE);
+ DISPATCH();
+ }
+
+ TARGET(MATCH_KEYS) {
+ PyObject *keys = stack_pointer[-1];
+ PyObject *subject = stack_pointer[-2];
+ PyObject *values_or_none;
+ #line 2249 "Python/bytecodes.c"
+ // On successful match, PUSH(values). Otherwise, PUSH(None).
+ values_or_none = match_keys(tstate, subject, keys);
+ if (values_or_none == NULL) goto error;
+ #line 3204 "Python/generated_cases.c.h"
+ STACK_GROW(1);
+ stack_pointer[-1] = values_or_none;
+ DISPATCH();
+ }
+
+ TARGET(GET_ITER) {
+ PyObject *iterable = stack_pointer[-1];
+ PyObject *iter;
+ #line 2255 "Python/bytecodes.c"
+ /* before: [obj]; after [getiter(obj)] */
+ iter = PyObject_GetIter(iterable);
+ #line 3216 "Python/generated_cases.c.h"
+ Py_DECREF(iterable);
+ #line 2258 "Python/bytecodes.c"
+ if (iter == NULL) goto pop_1_error;
+ #line 3220 "Python/generated_cases.c.h"
+ stack_pointer[-1] = iter;
+ DISPATCH();
+ }
+
+ TARGET(GET_YIELD_FROM_ITER) {
+ PyObject *iterable = stack_pointer[-1];
+ PyObject *iter;
+ #line 2262 "Python/bytecodes.c"
+ /* before: [obj]; after [getiter(obj)] */
+ if (PyCoro_CheckExact(iterable)) {
+ /* `iterable` is a coroutine */
+ if (!(frame->f_code->co_flags & (CO_COROUTINE | CO_ITERABLE_COROUTINE))) {
+ /* and it is used in a 'yield from' expression of a
+ regular generator. */
+ _PyErr_SetString(tstate, PyExc_TypeError,
+ "cannot 'yield from' a coroutine object "
+ "in a non-coroutine generator");
+ goto error;
+ }
+ iter = iterable;
+ }
+ else if (PyGen_CheckExact(iterable)) {
+ iter = iterable;
+ }
+ else {
+ /* `iterable` is not a generator. */
+ iter = PyObject_GetIter(iterable);
+ if (iter == NULL) {
+ goto error;
+ }
+ #line 3251 "Python/generated_cases.c.h"
+ Py_DECREF(iterable);
+ #line 2285 "Python/bytecodes.c"
+ }
+ #line 3255 "Python/generated_cases.c.h"
+ stack_pointer[-1] = iter;
+ PREDICT(LOAD_CONST);
+ DISPATCH();
+ }
+
+ TARGET(FOR_ITER) {
+ PREDICTED(FOR_ITER);
+ static_assert(INLINE_CACHE_ENTRIES_FOR_ITER == 1, "incorrect cache size");
+ PyObject *iter = stack_pointer[-1];
+ PyObject *next;
+ #line 2304 "Python/bytecodes.c"
+ #if ENABLE_SPECIALIZATION
+ _PyForIterCache *cache = (_PyForIterCache *)next_instr;
+ if (ADAPTIVE_COUNTER_IS_ZERO(cache->counter)) {
+ next_instr--;
+ _Py_Specialize_ForIter(iter, next_instr, oparg);
+ DISPATCH_SAME_OPARG();
+ }
+ STAT_INC(FOR_ITER, deferred);
+ DECREMENT_ADAPTIVE_COUNTER(cache->counter);
+ #endif /* ENABLE_SPECIALIZATION */
+ /* before: [iter]; after: [iter, iter()] *or* [] (and jump over END_FOR.) */
+ next = (*Py_TYPE(iter)->tp_iternext)(iter);
+ if (next == NULL) {
+ if (_PyErr_Occurred(tstate)) {
+ if (!_PyErr_ExceptionMatches(tstate, PyExc_StopIteration)) {
+ goto error;
+ }
+ monitor_raise(tstate, frame, next_instr-1);
+ _PyErr_Clear(tstate);
+ }
+ /* iterator ended normally */
+ assert(next_instr[INLINE_CACHE_ENTRIES_FOR_ITER + oparg].op.code == END_FOR ||
+ next_instr[INLINE_CACHE_ENTRIES_FOR_ITER + oparg].op.code == INSTRUMENTED_END_FOR);
+ Py_DECREF(iter);
+ STACK_SHRINK(1);
+ /* Jump forward oparg, then skip following END_FOR instruction */
+ JUMPBY(INLINE_CACHE_ENTRIES_FOR_ITER + oparg + 1);
+ DISPATCH();
+ }
+ // Common case: no jump, leave it to the code generator
+ #line 3297 "Python/generated_cases.c.h"
+ STACK_GROW(1);
+ stack_pointer[-1] = next;
+ next_instr += 1;
+ DISPATCH();
+ }
+
+ TARGET(INSTRUMENTED_FOR_ITER) {
+ #line 2337 "Python/bytecodes.c"
+ _Py_CODEUNIT *here = next_instr-1;
+ _Py_CODEUNIT *target;
+ PyObject *iter = TOP();
+ PyObject *next = (*Py_TYPE(iter)->tp_iternext)(iter);
+ if (next != NULL) {
+ PUSH(next);
+ target = next_instr + INLINE_CACHE_ENTRIES_FOR_ITER;
+ }
+ else {
+ if (_PyErr_Occurred(tstate)) {
+ if (!_PyErr_ExceptionMatches(tstate, PyExc_StopIteration)) {
+ goto error;
+ }
+ monitor_raise(tstate, frame, here);
+ _PyErr_Clear(tstate);
+ }
+ /* iterator ended normally */
+ assert(next_instr[INLINE_CACHE_ENTRIES_FOR_ITER + oparg].op.code == END_FOR ||
+ next_instr[INLINE_CACHE_ENTRIES_FOR_ITER + oparg].op.code == INSTRUMENTED_END_FOR);
+ STACK_SHRINK(1);
+ Py_DECREF(iter);
+ /* Skip END_FOR */
+ target = next_instr + INLINE_CACHE_ENTRIES_FOR_ITER + oparg + 1;
+ }
+ INSTRUMENTED_JUMP(here, target, PY_MONITORING_EVENT_BRANCH);
+ #line 3331 "Python/generated_cases.c.h"
+ DISPATCH();
+ }
+
+ TARGET(FOR_ITER_LIST) {
+ PyObject *iter = stack_pointer[-1];
+ PyObject *next;
+ #line 2365 "Python/bytecodes.c"
+ DEOPT_IF(Py_TYPE(iter) != &PyListIter_Type, FOR_ITER);
+ _PyListIterObject *it = (_PyListIterObject *)iter;
+ STAT_INC(FOR_ITER, hit);
+ PyListObject *seq = it->it_seq;
+ if (seq) {
+ if (it->it_index < PyList_GET_SIZE(seq)) {
+ next = Py_NewRef(PyList_GET_ITEM(seq, it->it_index++));
+ goto end_for_iter_list; // End of this instruction
+ }
+ it->it_seq = NULL;
+ Py_DECREF(seq);
+ }
+ Py_DECREF(iter);
+ STACK_SHRINK(1);
+ /* Jump forward oparg, then skip following END_FOR instruction */
+ JUMPBY(INLINE_CACHE_ENTRIES_FOR_ITER + oparg + 1);
+ DISPATCH();
+ end_for_iter_list:
+ // Common case: no jump, leave it to the code generator
+ #line 3358 "Python/generated_cases.c.h"
+ STACK_GROW(1);
+ stack_pointer[-1] = next;
+ next_instr += 1;
+ DISPATCH();
+ }
+
+ TARGET(FOR_ITER_TUPLE) {
+ PyObject *iter = stack_pointer[-1];
+ PyObject *next;
+ #line 2387 "Python/bytecodes.c"
+ _PyTupleIterObject *it = (_PyTupleIterObject *)iter;
+ DEOPT_IF(Py_TYPE(it) != &PyTupleIter_Type, FOR_ITER);
+ STAT_INC(FOR_ITER, hit);
+ PyTupleObject *seq = it->it_seq;
+ if (seq) {
+ if (it->it_index < PyTuple_GET_SIZE(seq)) {
+ next = Py_NewRef(PyTuple_GET_ITEM(seq, it->it_index++));
+ goto end_for_iter_tuple; // End of this instruction
+ }
+ it->it_seq = NULL;
+ Py_DECREF(seq);
+ }
+ Py_DECREF(iter);
+ STACK_SHRINK(1);
+ /* Jump forward oparg, then skip following END_FOR instruction */
+ JUMPBY(INLINE_CACHE_ENTRIES_FOR_ITER + oparg + 1);
+ DISPATCH();
+ end_for_iter_tuple:
+ // Common case: no jump, leave it to the code generator
+ #line 3388 "Python/generated_cases.c.h"
+ STACK_GROW(1);
+ stack_pointer[-1] = next;
+ next_instr += 1;
+ DISPATCH();
+ }
+
+ TARGET(FOR_ITER_RANGE) {
+ PyObject *iter = stack_pointer[-1];
+ PyObject *next;
+ #line 2409 "Python/bytecodes.c"
+ _PyRangeIterObject *r = (_PyRangeIterObject *)iter;
+ DEOPT_IF(Py_TYPE(r) != &PyRangeIter_Type, FOR_ITER);
+ STAT_INC(FOR_ITER, hit);
+ if (r->len <= 0) {
+ STACK_SHRINK(1);
+ Py_DECREF(r);
+ // Jump over END_FOR instruction.
+ JUMPBY(INLINE_CACHE_ENTRIES_FOR_ITER + oparg + 1);
+ DISPATCH();
+ }
+ long value = r->start;
+ r->start = value + r->step;
+ r->len--;
+ next = PyLong_FromLong(value);
+ if (next == NULL) {
+ goto error;
+ }
+ #line 3416 "Python/generated_cases.c.h"
+ STACK_GROW(1);
+ stack_pointer[-1] = next;
+ next_instr += 1;
+ DISPATCH();
+ }
+
+ TARGET(FOR_ITER_GEN) {
+ PyObject *iter = stack_pointer[-1];
+ #line 2429 "Python/bytecodes.c"
+ DEOPT_IF(tstate->interp->eval_frame, FOR_ITER);
+ PyGenObject *gen = (PyGenObject *)iter;
+ DEOPT_IF(Py_TYPE(gen) != &PyGen_Type, FOR_ITER);
+ DEOPT_IF(gen->gi_frame_state >= FRAME_EXECUTING, FOR_ITER);
+ STAT_INC(FOR_ITER, hit);
+ _PyInterpreterFrame *gen_frame = (_PyInterpreterFrame *)gen->gi_iframe;
+ frame->return_offset = oparg;
+ _PyFrame_StackPush(gen_frame, Py_None);
+ gen->gi_frame_state = FRAME_EXECUTING;
+ gen->gi_exc_state.previous_item = tstate->exc_info;
+ tstate->exc_info = &gen->gi_exc_state;
+ JUMPBY(INLINE_CACHE_ENTRIES_FOR_ITER);
+ assert(next_instr[oparg].op.code == END_FOR ||
+ next_instr[oparg].op.code == INSTRUMENTED_END_FOR);
+ DISPATCH_INLINED(gen_frame);
+ #line 3441 "Python/generated_cases.c.h"
+ }
+
+ TARGET(BEFORE_ASYNC_WITH) {
+ PyObject *mgr = stack_pointer[-1];
+ PyObject *exit;
+ PyObject *res;
+ #line 2447 "Python/bytecodes.c"
+ PyObject *enter = _PyObject_LookupSpecial(mgr, &_Py_ID(__aenter__));
+ if (enter == NULL) {
+ if (!_PyErr_Occurred(tstate)) {
+ _PyErr_Format(tstate, PyExc_TypeError,
+ "'%.200s' object does not support the "
+ "asynchronous context manager protocol",
+ Py_TYPE(mgr)->tp_name);
+ }
+ goto error;
+ }
+ exit = _PyObject_LookupSpecial(mgr, &_Py_ID(__aexit__));
+ if (exit == NULL) {
+ if (!_PyErr_Occurred(tstate)) {
+ _PyErr_Format(tstate, PyExc_TypeError,
+ "'%.200s' object does not support the "
+ "asynchronous context manager protocol "
+ "(missed __aexit__ method)",
+ Py_TYPE(mgr)->tp_name);
+ }
+ Py_DECREF(enter);
+ goto error;
+ }
+ #line 3471 "Python/generated_cases.c.h"
+ Py_DECREF(mgr);
+ #line 2470 "Python/bytecodes.c"
+ res = _PyObject_CallNoArgs(enter);
+ Py_DECREF(enter);
+ if (res == NULL) {
+ Py_DECREF(exit);
+ if (true) goto pop_1_error;
+ }
+ #line 3480 "Python/generated_cases.c.h"
+ STACK_GROW(1);
+ stack_pointer[-1] = res;
+ stack_pointer[-2] = exit;
+ PREDICT(GET_AWAITABLE);
+ DISPATCH();
+ }
+
+ TARGET(BEFORE_WITH) {
+ PyObject *mgr = stack_pointer[-1];
+ PyObject *exit;
+ PyObject *res;
+ #line 2480 "Python/bytecodes.c"
+ /* pop the context manager, push its __exit__ and the
+ * value returned from calling its __enter__
+ */
+ PyObject *enter = _PyObject_LookupSpecial(mgr, &_Py_ID(__enter__));
+ if (enter == NULL) {
+ if (!_PyErr_Occurred(tstate)) {
+ _PyErr_Format(tstate, PyExc_TypeError,
+ "'%.200s' object does not support the "
+ "context manager protocol",
+ Py_TYPE(mgr)->tp_name);
+ }
+ goto error;
+ }
+ exit = _PyObject_LookupSpecial(mgr, &_Py_ID(__exit__));
+ if (exit == NULL) {
+ if (!_PyErr_Occurred(tstate)) {
+ _PyErr_Format(tstate, PyExc_TypeError,
+ "'%.200s' object does not support the "
+ "context manager protocol "
+ "(missed __exit__ method)",
+ Py_TYPE(mgr)->tp_name);
+ }
+ Py_DECREF(enter);
+ goto error;
+ }
+ #line 3518 "Python/generated_cases.c.h"
+ Py_DECREF(mgr);
+ #line 2506 "Python/bytecodes.c"
+ res = _PyObject_CallNoArgs(enter);
+ Py_DECREF(enter);
+ if (res == NULL) {
+ Py_DECREF(exit);
+ if (true) goto pop_1_error;
+ }
+ #line 3527 "Python/generated_cases.c.h"
+ STACK_GROW(1);
+ stack_pointer[-1] = res;
+ stack_pointer[-2] = exit;
+ DISPATCH();
+ }
+
+ TARGET(WITH_EXCEPT_START) {
+ PyObject *val = stack_pointer[-1];
+ PyObject *lasti = stack_pointer[-3];
+ PyObject *exit_func = stack_pointer[-4];
+ PyObject *res;
+ #line 2515 "Python/bytecodes.c"
+ /* At the top of the stack are 4 values:
+ - val: TOP = exc_info()
+ - unused: SECOND = previous exception
+ - lasti: THIRD = lasti of exception in exc_info()
+ - exit_func: FOURTH = the context.__exit__ bound method
+ We call FOURTH(type(TOP), TOP, GetTraceback(TOP)).
+ Then we push the __exit__ return value.
+ */
+ PyObject *exc, *tb;
+
+ assert(val && PyExceptionInstance_Check(val));
+ exc = PyExceptionInstance_Class(val);
+ tb = PyException_GetTraceback(val);
+ if (tb == NULL) {
+ tb = Py_None;
+ }
+ else {
+ Py_DECREF(tb);
+ }
+ assert(PyLong_Check(lasti));
+ (void)lasti; // Shut up compiler warning if asserts are off
+ PyObject *stack[4] = {NULL, exc, val, tb};
+ res = PyObject_Vectorcall(exit_func, stack + 1,
+ 3 | PY_VECTORCALL_ARGUMENTS_OFFSET, NULL);
+ if (res == NULL) goto error;
+ #line 3565 "Python/generated_cases.c.h"
+ STACK_GROW(1);
+ stack_pointer[-1] = res;
+ DISPATCH();
+ }
+
+ TARGET(PUSH_EXC_INFO) {
+ PyObject *new_exc = stack_pointer[-1];
+ PyObject *prev_exc;
+ #line 2543 "Python/bytecodes.c"
+ _PyErr_StackItem *exc_info = tstate->exc_info;
+ if (exc_info->exc_value != NULL) {
+ prev_exc = exc_info->exc_value;
+ }
+ else {
+ prev_exc = Py_None;
+ }
+ assert(PyExceptionInstance_Check(new_exc));
+ exc_info->exc_value = Py_NewRef(new_exc);
+ #line 3584 "Python/generated_cases.c.h"
+ STACK_GROW(1);
+ stack_pointer[-1] = new_exc;
+ stack_pointer[-2] = prev_exc;
+ DISPATCH();
+ }
+
+ TARGET(LOAD_ATTR_METHOD_WITH_VALUES) {
+ PyObject *self = stack_pointer[-1];
+ PyObject *res2 = NULL;
+ PyObject *res;
+ uint32_t type_version = read_u32(&next_instr[1].cache);
+ uint32_t keys_version = read_u32(&next_instr[3].cache);
+ PyObject *descr = read_obj(&next_instr[5].cache);
+ #line 2555 "Python/bytecodes.c"
+ /* Cached method object */
+ PyTypeObject *self_cls = Py_TYPE(self);
+ assert(type_version != 0);
+ DEOPT_IF(self_cls->tp_version_tag != type_version, LOAD_ATTR);
+ assert(self_cls->tp_flags & Py_TPFLAGS_MANAGED_DICT);
+ PyDictOrValues dorv = *_PyObject_DictOrValuesPointer(self);
+ DEOPT_IF(!_PyDictOrValues_IsValues(dorv), LOAD_ATTR);
+ PyHeapTypeObject *self_heap_type = (PyHeapTypeObject *)self_cls;
+ DEOPT_IF(self_heap_type->ht_cached_keys->dk_version !=
+ keys_version, LOAD_ATTR);
+ STAT_INC(LOAD_ATTR, hit);
+ assert(descr != NULL);
+ res2 = Py_NewRef(descr);
+ assert(_PyType_HasFeature(Py_TYPE(res2), Py_TPFLAGS_METHOD_DESCRIPTOR));
+ res = self;
+ assert(oparg & 1);
+ #line 3615 "Python/generated_cases.c.h"
+ STACK_GROW(((oparg & 1) ? 1 : 0));
+ stack_pointer[-1] = res;
+ if (oparg & 1) { stack_pointer[-(1 + ((oparg & 1) ? 1 : 0))] = res2; }
+ next_instr += 9;
+ DISPATCH();
+ }
+
+ TARGET(LOAD_ATTR_METHOD_NO_DICT) {
+ PyObject *self = stack_pointer[-1];
+ PyObject *res2 = NULL;
+ PyObject *res;
+ uint32_t type_version = read_u32(&next_instr[1].cache);
+ PyObject *descr = read_obj(&next_instr[5].cache);
+ #line 2574 "Python/bytecodes.c"
+ PyTypeObject *self_cls = Py_TYPE(self);
+ DEOPT_IF(self_cls->tp_version_tag != type_version, LOAD_ATTR);
+ assert(self_cls->tp_dictoffset == 0);
+ STAT_INC(LOAD_ATTR, hit);
+ assert(descr != NULL);
+ assert(_PyType_HasFeature(Py_TYPE(descr), Py_TPFLAGS_METHOD_DESCRIPTOR));
+ res2 = Py_NewRef(descr);
+ res = self;
+ assert(oparg & 1);
+ #line 3639 "Python/generated_cases.c.h"
+ STACK_GROW(((oparg & 1) ? 1 : 0));
+ stack_pointer[-1] = res;
+ if (oparg & 1) { stack_pointer[-(1 + ((oparg & 1) ? 1 : 0))] = res2; }
+ next_instr += 9;
+ DISPATCH();
+ }
+
+ TARGET(LOAD_ATTR_METHOD_LAZY_DICT) {
+ PyObject *self = stack_pointer[-1];
+ PyObject *res2 = NULL;
+ PyObject *res;
+ uint32_t type_version = read_u32(&next_instr[1].cache);
+ PyObject *descr = read_obj(&next_instr[5].cache);
+ #line 2586 "Python/bytecodes.c"
+ PyTypeObject *self_cls = Py_TYPE(self);
+ DEOPT_IF(self_cls->tp_version_tag != type_version, LOAD_ATTR);
+ Py_ssize_t dictoffset = self_cls->tp_dictoffset;
+ assert(dictoffset > 0);
+ PyObject *dict = *(PyObject **)((char *)self + dictoffset);
+ /* This object has a __dict__, just not yet created */
+ DEOPT_IF(dict != NULL, LOAD_ATTR);
+ STAT_INC(LOAD_ATTR, hit);
+ assert(descr != NULL);
+ assert(_PyType_HasFeature(Py_TYPE(descr), Py_TPFLAGS_METHOD_DESCRIPTOR));
+ res2 = Py_NewRef(descr);
+ res = self;
+ assert(oparg & 1);
+ #line 3667 "Python/generated_cases.c.h"
+ STACK_GROW(((oparg & 1) ? 1 : 0));
+ stack_pointer[-1] = res;
+ if (oparg & 1) { stack_pointer[-(1 + ((oparg & 1) ? 1 : 0))] = res2; }
+ next_instr += 9;
+ DISPATCH();
+ }
+
+ TARGET(KW_NAMES) {
+ #line 2602 "Python/bytecodes.c"
+ assert(kwnames == NULL);
+ assert(oparg < PyTuple_GET_SIZE(frame->f_code->co_consts));
+ kwnames = GETITEM(frame->f_code->co_consts, oparg);
+ #line 3680 "Python/generated_cases.c.h"
+ DISPATCH();
+ }
+
+ TARGET(INSTRUMENTED_CALL) {
+ #line 2608 "Python/bytecodes.c"
+ int is_meth = PEEK(oparg+2) != NULL;
+ int total_args = oparg + is_meth;
+ PyObject *function = PEEK(total_args + 1);
+ PyObject *arg = total_args == 0 ?
+ &_PyInstrumentation_MISSING : PEEK(total_args);
+ int err = _Py_call_instrumentation_2args(
+ tstate, PY_MONITORING_EVENT_CALL,
+ frame, next_instr-1, function, arg);
+ if (err) goto error;
+ _PyCallCache *cache = (_PyCallCache *)next_instr;
+ INCREMENT_ADAPTIVE_COUNTER(cache->counter);
+ GO_TO_INSTRUCTION(CALL);
+ #line 3698 "Python/generated_cases.c.h"
+ }
+
+ TARGET(CALL) {
+ PREDICTED(CALL);
+ static_assert(INLINE_CACHE_ENTRIES_CALL == 3, "incorrect cache size");
+ PyObject **args = (stack_pointer - oparg);
+ PyObject *callable = stack_pointer[-(1 + oparg)];
+ PyObject *method = stack_pointer[-(2 + oparg)];
+ PyObject *res;
+ #line 2653 "Python/bytecodes.c"
+ int is_meth = method != NULL;
+ int total_args = oparg;
+ if (is_meth) {
+ callable = method;
+ args--;
+ total_args++;
+ }
+ #if ENABLE_SPECIALIZATION
+ _PyCallCache *cache = (_PyCallCache *)next_instr;
+ if (ADAPTIVE_COUNTER_IS_ZERO(cache->counter)) {
+ next_instr--;
+ _Py_Specialize_Call(callable, next_instr, total_args, kwnames);
+ DISPATCH_SAME_OPARG();
+ }
+ STAT_INC(CALL, deferred);
+ DECREMENT_ADAPTIVE_COUNTER(cache->counter);
+ #endif /* ENABLE_SPECIALIZATION */
+ if (!is_meth && Py_TYPE(callable) == &PyMethod_Type) {
+ is_meth = 1; // For consistenct; it's dead, though
+ args--;
+ total_args++;
+ PyObject *self = ((PyMethodObject *)callable)->im_self;
+ args[0] = Py_NewRef(self);
+ method = ((PyMethodObject *)callable)->im_func;
+ args[-1] = Py_NewRef(method);
+ Py_DECREF(callable);
+ callable = method;
+ }
+ int positional_args = total_args - KWNAMES_LEN();
+ // Check if the call can be inlined or not
+ if (Py_TYPE(callable) == &PyFunction_Type &&
+ tstate->interp->eval_frame == NULL &&
+ ((PyFunctionObject *)callable)->vectorcall == _PyFunction_Vectorcall)
+ {
+ int code_flags = ((PyCodeObject*)PyFunction_GET_CODE(callable))->co_flags;
+ PyObject *locals = code_flags & CO_OPTIMIZED ? NULL : Py_NewRef(PyFunction_GET_GLOBALS(callable));
+ _PyInterpreterFrame *new_frame = _PyEvalFramePushAndInit(
+ tstate, (PyFunctionObject *)callable, locals,
+ args, positional_args, kwnames
+ );
+ kwnames = NULL;
+ // Manipulate stack directly since we leave using DISPATCH_INLINED().
+ STACK_SHRINK(oparg + 2);
+ // The frame has stolen all the arguments from the stack,
+ // so there is no need to clean them up.
+ if (new_frame == NULL) {
+ goto error;
+ }
+ JUMPBY(INLINE_CACHE_ENTRIES_CALL);
+ frame->return_offset = 0;
+ DISPATCH_INLINED(new_frame);
+ }
+ /* Callable is not a normal Python function */
+ res = PyObject_Vectorcall(
+ callable, args,
+ positional_args | PY_VECTORCALL_ARGUMENTS_OFFSET,
+ kwnames);
+ if (opcode == INSTRUMENTED_CALL) {
+ PyObject *arg = total_args == 0 ?
+ &_PyInstrumentation_MISSING : PEEK(total_args);
+ if (res == NULL) {
+ _Py_call_instrumentation_exc2(
+ tstate, PY_MONITORING_EVENT_C_RAISE,
+ frame, next_instr-1, callable, arg);
+ }
+ else {
+ int err = _Py_call_instrumentation_2args(
+ tstate, PY_MONITORING_EVENT_C_RETURN,
+ frame, next_instr-1, callable, arg);
+ if (err < 0) {
+ Py_CLEAR(res);
+ }
+ }
+ }
+ kwnames = NULL;
+ assert((res != NULL) ^ (_PyErr_Occurred(tstate) != NULL));
+ Py_DECREF(callable);
+ for (int i = 0; i < total_args; i++) {
+ Py_DECREF(args[i]);
+ }
+ if (res == NULL) { STACK_SHRINK(oparg); goto pop_2_error; }
+ #line 3790 "Python/generated_cases.c.h"
+ STACK_SHRINK(oparg);
+ STACK_SHRINK(1);
+ stack_pointer[-1] = res;
+ next_instr += 3;
+ CHECK_EVAL_BREAKER();
+ DISPATCH();
+ }
+
+ TARGET(CALL_BOUND_METHOD_EXACT_ARGS) {
+ PyObject *callable = stack_pointer[-(1 + oparg)];
+ PyObject *method = stack_pointer[-(2 + oparg)];
+ #line 2741 "Python/bytecodes.c"
+ DEOPT_IF(method != NULL, CALL);
+ DEOPT_IF(Py_TYPE(callable) != &PyMethod_Type, CALL);
+ STAT_INC(CALL, hit);
+ PyObject *self = ((PyMethodObject *)callable)->im_self;
+ PEEK(oparg + 1) = Py_NewRef(self); // callable
+ PyObject *meth = ((PyMethodObject *)callable)->im_func;
+ PEEK(oparg + 2) = Py_NewRef(meth); // method
+ Py_DECREF(callable);
+ GO_TO_INSTRUCTION(CALL_PY_EXACT_ARGS);
+ #line 3812 "Python/generated_cases.c.h"
+ }
+
+ TARGET(CALL_PY_EXACT_ARGS) {
+ PREDICTED(CALL_PY_EXACT_ARGS);
+ PyObject **args = (stack_pointer - oparg);
+ PyObject *callable = stack_pointer[-(1 + oparg)];
+ PyObject *method = stack_pointer[-(2 + oparg)];
+ uint32_t func_version = read_u32(&next_instr[1].cache);
+ #line 2753 "Python/bytecodes.c"
+ assert(kwnames == NULL);
+ DEOPT_IF(tstate->interp->eval_frame, CALL);
+ int is_meth = method != NULL;
+ int argcount = oparg;
+ if (is_meth) {
+ callable = method;
+ args--;
+ argcount++;
+ }
+ DEOPT_IF(!PyFunction_Check(callable), CALL);
+ PyFunctionObject *func = (PyFunctionObject *)callable;
+ DEOPT_IF(func->func_version != func_version, CALL);
+ PyCodeObject *code = (PyCodeObject *)func->func_code;
+ DEOPT_IF(code->co_argcount != argcount, CALL);
+ DEOPT_IF(!_PyThreadState_HasStackSpace(tstate, code->co_framesize), CALL);
+ STAT_INC(CALL, hit);
+ _PyInterpreterFrame *new_frame = _PyFrame_PushUnchecked(tstate, func, argcount);
+ for (int i = 0; i < argcount; i++) {
+ new_frame->localsplus[i] = args[i];
+ }
+ // Manipulate stack directly since we leave using DISPATCH_INLINED().
+ STACK_SHRINK(oparg + 2);
+ JUMPBY(INLINE_CACHE_ENTRIES_CALL);
+ frame->return_offset = 0;
+ DISPATCH_INLINED(new_frame);
+ #line 3847 "Python/generated_cases.c.h"
+ }
+
+ TARGET(CALL_PY_WITH_DEFAULTS) {
+ PyObject **args = (stack_pointer - oparg);
+ PyObject *callable = stack_pointer[-(1 + oparg)];
+ PyObject *method = stack_pointer[-(2 + oparg)];
+ uint32_t func_version = read_u32(&next_instr[1].cache);
+ #line 2781 "Python/bytecodes.c"
+ assert(kwnames == NULL);
+ DEOPT_IF(tstate->interp->eval_frame, CALL);
+ int is_meth = method != NULL;
+ int argcount = oparg;
+ if (is_meth) {
+ callable = method;
+ args--;
+ argcount++;
+ }
+ DEOPT_IF(!PyFunction_Check(callable), CALL);
+ PyFunctionObject *func = (PyFunctionObject *)callable;
+ DEOPT_IF(func->func_version != func_version, CALL);
+ PyCodeObject *code = (PyCodeObject *)func->func_code;
+ assert(func->func_defaults);
+ assert(PyTuple_CheckExact(func->func_defaults));
+ int defcount = (int)PyTuple_GET_SIZE(func->func_defaults);
+ assert(defcount <= code->co_argcount);
+ int min_args = code->co_argcount - defcount;
+ DEOPT_IF(argcount > code->co_argcount, CALL);
+ DEOPT_IF(argcount < min_args, CALL);
+ DEOPT_IF(!_PyThreadState_HasStackSpace(tstate, code->co_framesize), CALL);
+ STAT_INC(CALL, hit);
+ _PyInterpreterFrame *new_frame = _PyFrame_PushUnchecked(tstate, func, code->co_argcount);
+ for (int i = 0; i < argcount; i++) {
+ new_frame->localsplus[i] = args[i];
+ }
+ for (int i = argcount; i < code->co_argcount; i++) {
+ PyObject *def = PyTuple_GET_ITEM(func->func_defaults, i - min_args);
+ new_frame->localsplus[i] = Py_NewRef(def);
+ }
+ // Manipulate stack and cache directly since we leave using DISPATCH_INLINED().
+ STACK_SHRINK(oparg + 2);
+ JUMPBY(INLINE_CACHE_ENTRIES_CALL);
+ frame->return_offset = 0;
+ DISPATCH_INLINED(new_frame);
+ #line 3891 "Python/generated_cases.c.h"
+ }
+
+ TARGET(CALL_NO_KW_TYPE_1) {
+ PyObject **args = (stack_pointer - oparg);
+ PyObject *callable = stack_pointer[-(1 + oparg)];
+ PyObject *null = stack_pointer[-(2 + oparg)];
+ PyObject *res;
+ #line 2819 "Python/bytecodes.c"
+ assert(kwnames == NULL);
+ assert(oparg == 1);
+ DEOPT_IF(null != NULL, CALL);
+ PyObject *obj = args[0];
+ DEOPT_IF(callable != (PyObject *)&PyType_Type, CALL);
+ STAT_INC(CALL, hit);
+ res = Py_NewRef(Py_TYPE(obj));
+ Py_DECREF(obj);
+ Py_DECREF(&PyType_Type); // I.e., callable
+ #line 3909 "Python/generated_cases.c.h"
+ STACK_SHRINK(oparg);
+ STACK_SHRINK(1);
+ stack_pointer[-1] = res;
+ next_instr += 3;
+ DISPATCH();
+ }
+
+ TARGET(CALL_NO_KW_STR_1) {
+ PyObject **args = (stack_pointer - oparg);
+ PyObject *callable = stack_pointer[-(1 + oparg)];
+ PyObject *null = stack_pointer[-(2 + oparg)];
+ PyObject *res;
+ #line 2831 "Python/bytecodes.c"
+ assert(kwnames == NULL);
+ assert(oparg == 1);
+ DEOPT_IF(null != NULL, CALL);
+ DEOPT_IF(callable != (PyObject *)&PyUnicode_Type, CALL);
+ STAT_INC(CALL, hit);
+ PyObject *arg = args[0];
+ res = PyObject_Str(arg);
+ Py_DECREF(arg);
+ Py_DECREF(&PyUnicode_Type); // I.e., callable
+ if (res == NULL) { STACK_SHRINK(oparg); goto pop_2_error; }
+ #line 3933 "Python/generated_cases.c.h"
+ STACK_SHRINK(oparg);
+ STACK_SHRINK(1);
+ stack_pointer[-1] = res;
+ next_instr += 3;
+ CHECK_EVAL_BREAKER();
+ DISPATCH();
+ }
+
+ TARGET(CALL_NO_KW_TUPLE_1) {
+ PyObject **args = (stack_pointer - oparg);
+ PyObject *callable = stack_pointer[-(1 + oparg)];
+ PyObject *null = stack_pointer[-(2 + oparg)];
+ PyObject *res;
+ #line 2845 "Python/bytecodes.c"
+ assert(kwnames == NULL);
+ assert(oparg == 1);
+ DEOPT_IF(null != NULL, CALL);
+ DEOPT_IF(callable != (PyObject *)&PyTuple_Type, CALL);
+ STAT_INC(CALL, hit);
+ PyObject *arg = args[0];
+ res = PySequence_Tuple(arg);
+ Py_DECREF(arg);
+ Py_DECREF(&PyTuple_Type); // I.e., tuple
+ if (res == NULL) { STACK_SHRINK(oparg); goto pop_2_error; }
+ #line 3958 "Python/generated_cases.c.h"
+ STACK_SHRINK(oparg);
+ STACK_SHRINK(1);
+ stack_pointer[-1] = res;
+ next_instr += 3;
+ CHECK_EVAL_BREAKER();
+ DISPATCH();
+ }
+
+ TARGET(CALL_BUILTIN_CLASS) {
+ PyObject **args = (stack_pointer - oparg);
+ PyObject *callable = stack_pointer[-(1 + oparg)];
+ PyObject *method = stack_pointer[-(2 + oparg)];
+ PyObject *res;
+ #line 2859 "Python/bytecodes.c"
+ int is_meth = method != NULL;
+ int total_args = oparg;
+ if (is_meth) {
+ callable = method;
+ args--;
+ total_args++;
+ }
+ int kwnames_len = KWNAMES_LEN();
+ DEOPT_IF(!PyType_Check(callable), CALL);
+ PyTypeObject *tp = (PyTypeObject *)callable;
+ DEOPT_IF(tp->tp_vectorcall == NULL, CALL);
+ STAT_INC(CALL, hit);
+ res = tp->tp_vectorcall((PyObject *)tp, args,
+ total_args - kwnames_len, kwnames);
+ kwnames = NULL;
+ /* Free the arguments. */
+ for (int i = 0; i < total_args; i++) {
+ Py_DECREF(args[i]);
+ }
+ Py_DECREF(tp);
+ if (res == NULL) { STACK_SHRINK(oparg); goto pop_2_error; }
+ #line 3994 "Python/generated_cases.c.h"
+ STACK_SHRINK(oparg);
+ STACK_SHRINK(1);
+ stack_pointer[-1] = res;
+ next_instr += 3;
+ CHECK_EVAL_BREAKER();
+ DISPATCH();
+ }
+
+ TARGET(CALL_NO_KW_BUILTIN_O) {
+ PyObject **args = (stack_pointer - oparg);
+ PyObject *callable = stack_pointer[-(1 + oparg)];
+ PyObject *method = stack_pointer[-(2 + oparg)];
+ PyObject *res;
+ #line 2884 "Python/bytecodes.c"
+ /* Builtin METH_O functions */
+ assert(kwnames == NULL);
+ int is_meth = method != NULL;
+ int total_args = oparg;
+ if (is_meth) {
+ callable = method;
+ args--;
+ total_args++;
+ }
+ DEOPT_IF(total_args != 1, CALL);
+ DEOPT_IF(!PyCFunction_CheckExact(callable), CALL);
+ DEOPT_IF(PyCFunction_GET_FLAGS(callable) != METH_O, CALL);
+ STAT_INC(CALL, hit);
+ PyCFunction cfunc = PyCFunction_GET_FUNCTION(callable);
+ // This is slower but CPython promises to check all non-vectorcall
+ // function calls.
+ if (_Py_EnterRecursiveCallTstate(tstate, " while calling a Python object")) {
+ goto error;
+ }
+ PyObject *arg = args[0];
+ res = _PyCFunction_TrampolineCall(cfunc, PyCFunction_GET_SELF(callable), arg);
+ _Py_LeaveRecursiveCallTstate(tstate);
+ assert((res != NULL) ^ (_PyErr_Occurred(tstate) != NULL));
+
+ Py_DECREF(arg);
+ Py_DECREF(callable);
+ if (res == NULL) { STACK_SHRINK(oparg); goto pop_2_error; }
+ #line 4036 "Python/generated_cases.c.h"
+ STACK_SHRINK(oparg);
+ STACK_SHRINK(1);
+ stack_pointer[-1] = res;
+ next_instr += 3;
+ CHECK_EVAL_BREAKER();
+ DISPATCH();
+ }
+
+ TARGET(CALL_NO_KW_BUILTIN_FAST) {
+ PyObject **args = (stack_pointer - oparg);
+ PyObject *callable = stack_pointer[-(1 + oparg)];
+ PyObject *method = stack_pointer[-(2 + oparg)];
+ PyObject *res;
+ #line 2915 "Python/bytecodes.c"
+ /* Builtin METH_FASTCALL functions, without keywords */
+ assert(kwnames == NULL);
+ int is_meth = method != NULL;
+ int total_args = oparg;
+ if (is_meth) {
+ callable = method;
+ args--;
+ total_args++;
+ }
+ DEOPT_IF(!PyCFunction_CheckExact(callable), CALL);
+ DEOPT_IF(PyCFunction_GET_FLAGS(callable) != METH_FASTCALL, CALL);
+ STAT_INC(CALL, hit);
+ PyCFunction cfunc = PyCFunction_GET_FUNCTION(callable);
+ /* res = func(self, args, nargs) */
+ res = ((_PyCFunctionFast)(void(*)(void))cfunc)(
+ PyCFunction_GET_SELF(callable),
+ args,
+ total_args);
+ assert((res != NULL) ^ (_PyErr_Occurred(tstate) != NULL));
+
+ /* Free the arguments. */
+ for (int i = 0; i < total_args; i++) {
+ Py_DECREF(args[i]);
+ }
+ Py_DECREF(callable);
+ if (res == NULL) { STACK_SHRINK(oparg); goto pop_2_error; }
+ /* Not deopting because this doesn't mean our optimization was
+ wrong. `res` can be NULL for valid reasons. Eg. getattr(x,
+ 'invalid'). In those cases an exception is set, so we must
+ handle it.
+ */
+ #line 4082 "Python/generated_cases.c.h"
+ STACK_SHRINK(oparg);
+ STACK_SHRINK(1);
+ stack_pointer[-1] = res;
+ next_instr += 3;
+ CHECK_EVAL_BREAKER();
+ DISPATCH();
+ }
+
+ TARGET(CALL_BUILTIN_FAST_WITH_KEYWORDS) {
+ PyObject **args = (stack_pointer - oparg);
+ PyObject *callable = stack_pointer[-(1 + oparg)];
+ PyObject *method = stack_pointer[-(2 + oparg)];
+ PyObject *res;
+ #line 2950 "Python/bytecodes.c"
+ /* Builtin METH_FASTCALL | METH_KEYWORDS functions */
+ int is_meth = method != NULL;
+ int total_args = oparg;
+ if (is_meth) {
+ callable = method;
+ args--;
+ total_args++;
+ }
+ DEOPT_IF(!PyCFunction_CheckExact(callable), CALL);
+ DEOPT_IF(PyCFunction_GET_FLAGS(callable) !=
+ (METH_FASTCALL | METH_KEYWORDS), CALL);
+ STAT_INC(CALL, hit);
+ /* res = func(self, args, nargs, kwnames) */
+ _PyCFunctionFastWithKeywords cfunc =
+ (_PyCFunctionFastWithKeywords)(void(*)(void))
+ PyCFunction_GET_FUNCTION(callable);
+ res = cfunc(
+ PyCFunction_GET_SELF(callable),
+ args,
+ total_args - KWNAMES_LEN(),
+ kwnames
+ );
+ assert((res != NULL) ^ (_PyErr_Occurred(tstate) != NULL));
+ kwnames = NULL;
+
+ /* Free the arguments. */
+ for (int i = 0; i < total_args; i++) {
+ Py_DECREF(args[i]);
+ }
+ Py_DECREF(callable);
+ if (res == NULL) { STACK_SHRINK(oparg); goto pop_2_error; }
+ #line 4128 "Python/generated_cases.c.h"
+ STACK_SHRINK(oparg);
+ STACK_SHRINK(1);
+ stack_pointer[-1] = res;
+ next_instr += 3;
+ CHECK_EVAL_BREAKER();
+ DISPATCH();
+ }
+
+ TARGET(CALL_NO_KW_LEN) {
+ PyObject **args = (stack_pointer - oparg);
+ PyObject *callable = stack_pointer[-(1 + oparg)];
+ PyObject *method = stack_pointer[-(2 + oparg)];
+ PyObject *res;
+ #line 2985 "Python/bytecodes.c"
+ assert(kwnames == NULL);
+ /* len(o) */
+ int is_meth = method != NULL;
+ int total_args = oparg;
+ if (is_meth) {
+ callable = method;
+ args--;
+ total_args++;
+ }
+ DEOPT_IF(total_args != 1, CALL);
+ PyInterpreterState *interp = _PyInterpreterState_GET();
+ DEOPT_IF(callable != interp->callable_cache.len, CALL);
+ STAT_INC(CALL, hit);
+ PyObject *arg = args[0];
+ Py_ssize_t len_i = PyObject_Length(arg);
+ if (len_i < 0) {
+ goto error;
+ }
+ res = PyLong_FromSsize_t(len_i);
+ assert((res != NULL) ^ (_PyErr_Occurred(tstate) != NULL));
+
+ Py_DECREF(callable);
+ Py_DECREF(arg);
+ if (res == NULL) { STACK_SHRINK(oparg); goto pop_2_error; }
+ #line 4167 "Python/generated_cases.c.h"
+ STACK_SHRINK(oparg);
+ STACK_SHRINK(1);
+ stack_pointer[-1] = res;
+ next_instr += 3;
+ DISPATCH();
+ }
+
+ TARGET(CALL_NO_KW_ISINSTANCE) {
+ PyObject **args = (stack_pointer - oparg);
+ PyObject *callable = stack_pointer[-(1 + oparg)];
+ PyObject *method = stack_pointer[-(2 + oparg)];
+ PyObject *res;
+ #line 3012 "Python/bytecodes.c"
+ assert(kwnames == NULL);
+ /* isinstance(o, o2) */
+ int is_meth = method != NULL;
+ int total_args = oparg;
+ if (is_meth) {
+ callable = method;
+ args--;
+ total_args++;
+ }
+ DEOPT_IF(total_args != 2, CALL);
+ PyInterpreterState *interp = _PyInterpreterState_GET();
+ DEOPT_IF(callable != interp->callable_cache.isinstance, CALL);
+ STAT_INC(CALL, hit);
+ PyObject *cls = args[1];
+ PyObject *inst = args[0];
+ int retval = PyObject_IsInstance(inst, cls);
+ if (retval < 0) {
+ goto error;
+ }
+ res = PyBool_FromLong(retval);
+ assert((res != NULL) ^ (_PyErr_Occurred(tstate) != NULL));
+
+ Py_DECREF(inst);
+ Py_DECREF(cls);
+ Py_DECREF(callable);
+ if (res == NULL) { STACK_SHRINK(oparg); goto pop_2_error; }
+ #line 4207 "Python/generated_cases.c.h"
+ STACK_SHRINK(oparg);
+ STACK_SHRINK(1);
+ stack_pointer[-1] = res;
+ next_instr += 3;
+ DISPATCH();
+ }
+
+ TARGET(CALL_NO_KW_LIST_APPEND) {
+ PyObject **args = (stack_pointer - oparg);
+ PyObject *self = stack_pointer[-(1 + oparg)];
+ PyObject *method = stack_pointer[-(2 + oparg)];
+ #line 3042 "Python/bytecodes.c"
+ assert(kwnames == NULL);
+ assert(oparg == 1);
+ PyInterpreterState *interp = _PyInterpreterState_GET();
+ DEOPT_IF(method != interp->callable_cache.list_append, CALL);
+ assert(self != NULL);
+ DEOPT_IF(!PyList_Check(self), CALL);
+ STAT_INC(CALL, hit);
+ if (_PyList_AppendTakeRef((PyListObject *)self, args[0]) < 0) {
+ goto pop_1_error; // Since arg is DECREF'ed already
+ }
+ Py_DECREF(self);
+ Py_DECREF(method);
+ STACK_SHRINK(3);
+ // CALL + POP_TOP
+ JUMPBY(INLINE_CACHE_ENTRIES_CALL + 1);
+ assert(next_instr[-1].op.code == POP_TOP);
+ DISPATCH();
+ #line 4237 "Python/generated_cases.c.h"
+ }
+
+ TARGET(CALL_NO_KW_METHOD_DESCRIPTOR_O) {
+ PyObject **args = (stack_pointer - oparg);
+ PyObject *method = stack_pointer[-(2 + oparg)];
+ PyObject *res;
+ #line 3062 "Python/bytecodes.c"
+ assert(kwnames == NULL);
+ int is_meth = method != NULL;
+ int total_args = oparg;
+ if (is_meth) {
+ args--;
+ total_args++;
+ }
+ PyMethodDescrObject *callable =
+ (PyMethodDescrObject *)PEEK(total_args + 1);
+ DEOPT_IF(total_args != 2, CALL);
+ DEOPT_IF(!Py_IS_TYPE(callable, &PyMethodDescr_Type), CALL);
+ PyMethodDef *meth = callable->d_method;
+ DEOPT_IF(meth->ml_flags != METH_O, CALL);
+ PyObject *arg = args[1];
+ PyObject *self = args[0];
+ DEOPT_IF(!Py_IS_TYPE(self, callable->d_common.d_type), CALL);
+ STAT_INC(CALL, hit);
+ PyCFunction cfunc = meth->ml_meth;
+ // This is slower but CPython promises to check all non-vectorcall
+ // function calls.
+ if (_Py_EnterRecursiveCallTstate(tstate, " while calling a Python object")) {
+ goto error;
+ }
+ res = _PyCFunction_TrampolineCall(cfunc, self, arg);
+ _Py_LeaveRecursiveCallTstate(tstate);
+ assert((res != NULL) ^ (_PyErr_Occurred(tstate) != NULL));
+ Py_DECREF(self);
+ Py_DECREF(arg);
+ Py_DECREF(callable);
+ if (res == NULL) { STACK_SHRINK(oparg); goto pop_2_error; }
+ #line 4275 "Python/generated_cases.c.h"
+ STACK_SHRINK(oparg);
+ STACK_SHRINK(1);
+ stack_pointer[-1] = res;
+ next_instr += 3;
+ CHECK_EVAL_BREAKER();
+ DISPATCH();
+ }
+
+ TARGET(CALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS) {
+ PyObject **args = (stack_pointer - oparg);
+ PyObject *method = stack_pointer[-(2 + oparg)];
+ PyObject *res;
+ #line 3096 "Python/bytecodes.c"
+ int is_meth = method != NULL;
+ int total_args = oparg;
+ if (is_meth) {
+ args--;
+ total_args++;
+ }
+ PyMethodDescrObject *callable =
+ (PyMethodDescrObject *)PEEK(total_args + 1);
+ DEOPT_IF(!Py_IS_TYPE(callable, &PyMethodDescr_Type), CALL);
+ PyMethodDef *meth = callable->d_method;
+ DEOPT_IF(meth->ml_flags != (METH_FASTCALL|METH_KEYWORDS), CALL);
+ PyTypeObject *d_type = callable->d_common.d_type;
+ PyObject *self = args[0];
+ DEOPT_IF(!Py_IS_TYPE(self, d_type), CALL);
+ STAT_INC(CALL, hit);
+ int nargs = total_args - 1;
+ _PyCFunctionFastWithKeywords cfunc =
+ (_PyCFunctionFastWithKeywords)(void(*)(void))meth->ml_meth;
+ res = cfunc(self, args + 1, nargs - KWNAMES_LEN(), kwnames);
+ assert((res != NULL) ^ (_PyErr_Occurred(tstate) != NULL));
+ kwnames = NULL;
+
+ /* Free the arguments. */
+ for (int i = 0; i < total_args; i++) {
+ Py_DECREF(args[i]);
+ }
+ Py_DECREF(callable);
+ if (res == NULL) { STACK_SHRINK(oparg); goto pop_2_error; }
+ #line 4317 "Python/generated_cases.c.h"
+ STACK_SHRINK(oparg);
+ STACK_SHRINK(1);
+ stack_pointer[-1] = res;
+ next_instr += 3;
+ CHECK_EVAL_BREAKER();
+ DISPATCH();
+ }
+
+ TARGET(CALL_NO_KW_METHOD_DESCRIPTOR_NOARGS) {
+ PyObject **args = (stack_pointer - oparg);
+ PyObject *method = stack_pointer[-(2 + oparg)];
+ PyObject *res;
+ #line 3128 "Python/bytecodes.c"
+ assert(kwnames == NULL);
+ assert(oparg == 0 || oparg == 1);
+ int is_meth = method != NULL;
+ int total_args = oparg;
+ if (is_meth) {
+ args--;
+ total_args++;
+ }
+ DEOPT_IF(total_args != 1, CALL);
+ PyMethodDescrObject *callable = (PyMethodDescrObject *)SECOND();
+ DEOPT_IF(!Py_IS_TYPE(callable, &PyMethodDescr_Type), CALL);
+ PyMethodDef *meth = callable->d_method;
+ PyObject *self = args[0];
+ DEOPT_IF(!Py_IS_TYPE(self, callable->d_common.d_type), CALL);
+ DEOPT_IF(meth->ml_flags != METH_NOARGS, CALL);
+ STAT_INC(CALL, hit);
+ PyCFunction cfunc = meth->ml_meth;
+ // This is slower but CPython promises to check all non-vectorcall
+ // function calls.
+ if (_Py_EnterRecursiveCallTstate(tstate, " while calling a Python object")) {
+ goto error;
+ }
+ res = _PyCFunction_TrampolineCall(cfunc, self, NULL);
+ _Py_LeaveRecursiveCallTstate(tstate);
+ assert((res != NULL) ^ (_PyErr_Occurred(tstate) != NULL));
+ Py_DECREF(self);
+ Py_DECREF(callable);
+ if (res == NULL) { STACK_SHRINK(oparg); goto pop_2_error; }
+ #line 4359 "Python/generated_cases.c.h"
+ STACK_SHRINK(oparg);
+ STACK_SHRINK(1);
+ stack_pointer[-1] = res;
+ next_instr += 3;
+ CHECK_EVAL_BREAKER();
+ DISPATCH();
+ }
+
+ TARGET(CALL_NO_KW_METHOD_DESCRIPTOR_FAST) {
+ PyObject **args = (stack_pointer - oparg);
+ PyObject *method = stack_pointer[-(2 + oparg)];
+ PyObject *res;
+ #line 3160 "Python/bytecodes.c"
+ assert(kwnames == NULL);
+ int is_meth = method != NULL;
+ int total_args = oparg;
+ if (is_meth) {
+ args--;
+ total_args++;
+ }
+ PyMethodDescrObject *callable =
+ (PyMethodDescrObject *)PEEK(total_args + 1);
+ /* Builtin METH_FASTCALL methods, without keywords */
+ DEOPT_IF(!Py_IS_TYPE(callable, &PyMethodDescr_Type), CALL);
+ PyMethodDef *meth = callable->d_method;
+ DEOPT_IF(meth->ml_flags != METH_FASTCALL, CALL);
+ PyObject *self = args[0];
+ DEOPT_IF(!Py_IS_TYPE(self, callable->d_common.d_type), CALL);
+ STAT_INC(CALL, hit);
+ _PyCFunctionFast cfunc =
+ (_PyCFunctionFast)(void(*)(void))meth->ml_meth;
+ int nargs = total_args - 1;
+ res = cfunc(self, args + 1, nargs);
+ assert((res != NULL) ^ (_PyErr_Occurred(tstate) != NULL));
+ /* Clear the stack of the arguments. */
+ for (int i = 0; i < total_args; i++) {
+ Py_DECREF(args[i]);
+ }
+ Py_DECREF(callable);
+ if (res == NULL) { STACK_SHRINK(oparg); goto pop_2_error; }
+ #line 4400 "Python/generated_cases.c.h"
+ STACK_SHRINK(oparg);
+ STACK_SHRINK(1);
+ stack_pointer[-1] = res;
+ next_instr += 3;
+ CHECK_EVAL_BREAKER();
+ DISPATCH();
+ }
+
+ TARGET(INSTRUMENTED_CALL_FUNCTION_EX) {
+ #line 3191 "Python/bytecodes.c"
+ GO_TO_INSTRUCTION(CALL_FUNCTION_EX);
+ #line 4412 "Python/generated_cases.c.h"
+ }
+
+ TARGET(CALL_FUNCTION_EX) {
+ PREDICTED(CALL_FUNCTION_EX);
+ PyObject *kwargs = (oparg & 1) ? stack_pointer[-(((oparg & 1) ? 1 : 0))] : NULL;
+ PyObject *callargs = stack_pointer[-(1 + ((oparg & 1) ? 1 : 0))];
+ PyObject *func = stack_pointer[-(2 + ((oparg & 1) ? 1 : 0))];
+ PyObject *result;
+ #line 3195 "Python/bytecodes.c"
+ // DICT_MERGE is called before this opcode if there are kwargs.
+ // It converts all dict subtypes in kwargs into regular dicts.
+ assert(kwargs == NULL || PyDict_CheckExact(kwargs));
+ if (!PyTuple_CheckExact(callargs)) {
+ if (check_args_iterable(tstate, func, callargs) < 0) {
+ goto error;
+ }
+ PyObject *tuple = PySequence_Tuple(callargs);
+ if (tuple == NULL) {
+ goto error;
+ }
+ Py_SETREF(callargs, tuple);
+ }
+ assert(PyTuple_CheckExact(callargs));
+ EVAL_CALL_STAT_INC_IF_FUNCTION(EVAL_CALL_FUNCTION_EX, func);
+ if (opcode == INSTRUMENTED_CALL_FUNCTION_EX &&
+ !PyFunction_Check(func) && !PyMethod_Check(func)
+ ) {
+ PyObject *arg = PyTuple_GET_SIZE(callargs) > 0 ?
+ PyTuple_GET_ITEM(callargs, 0) : Py_None;
+ int err = _Py_call_instrumentation_2args(
+ tstate, PY_MONITORING_EVENT_CALL,
+ frame, next_instr-1, func, arg);
+ if (err) goto error;
+ result = PyObject_Call(func, callargs, kwargs);
+ if (result == NULL) {
+ _Py_call_instrumentation_exc2(
+ tstate, PY_MONITORING_EVENT_C_RAISE,
+ frame, next_instr-1, func, arg);
+ }
+ else {
+ int err = _Py_call_instrumentation_2args(
+ tstate, PY_MONITORING_EVENT_C_RETURN,
+ frame, next_instr-1, func, arg);
+ if (err < 0) {
+ Py_CLEAR(result);
+ }
+ }
+ }
+ else {
+ if (Py_TYPE(func) == &PyFunction_Type &&
+ tstate->interp->eval_frame == NULL &&
+ ((PyFunctionObject *)func)->vectorcall == _PyFunction_Vectorcall) {
+ assert(PyTuple_CheckExact(callargs));
+ Py_ssize_t nargs = PyTuple_GET_SIZE(callargs);
+ int code_flags = ((PyCodeObject *)PyFunction_GET_CODE(func))->co_flags;
+ PyObject *locals = code_flags & CO_OPTIMIZED ? NULL : Py_NewRef(PyFunction_GET_GLOBALS(func));
+
+ _PyInterpreterFrame *new_frame = _PyEvalFramePushAndInit_Ex(tstate,
+ (PyFunctionObject *)func, locals,
+ nargs, callargs, kwargs);
+ // Need to manually shrink the stack since we exit with DISPATCH_INLINED.
+ STACK_SHRINK(oparg + 3);
+ if (new_frame == NULL) {
+ goto error;
+ }
+ frame->return_offset = 0;
+ DISPATCH_INLINED(new_frame);
+ }
+ result = PyObject_Call(func, callargs, kwargs);
+ }
+ #line 4483 "Python/generated_cases.c.h"
+ Py_DECREF(func);
+ Py_DECREF(callargs);
+ Py_XDECREF(kwargs);
+ #line 3257 "Python/bytecodes.c"
+ assert(PEEK(3 + (oparg & 1)) == NULL);
+ if (result == NULL) { STACK_SHRINK(((oparg & 1) ? 1 : 0)); goto pop_3_error; }
+ #line 4490 "Python/generated_cases.c.h"
+ STACK_SHRINK(((oparg & 1) ? 1 : 0));
+ STACK_SHRINK(2);
+ stack_pointer[-1] = result;
+ CHECK_EVAL_BREAKER();
+ DISPATCH();
+ }
+
+ TARGET(MAKE_FUNCTION) {
+ PyObject *codeobj = stack_pointer[-1];
+ PyObject *closure = (oparg & 0x08) ? stack_pointer[-(1 + ((oparg & 0x08) ? 1 : 0))] : NULL;
+ PyObject *annotations = (oparg & 0x04) ? stack_pointer[-(1 + ((oparg & 0x08) ? 1 : 0) + ((oparg & 0x04) ? 1 : 0))] : NULL;
+ PyObject *kwdefaults = (oparg & 0x02) ? stack_pointer[-(1 + ((oparg & 0x08) ? 1 : 0) + ((oparg & 0x04) ? 1 : 0) + ((oparg & 0x02) ? 1 : 0))] : NULL;
+ PyObject *defaults = (oparg & 0x01) ? stack_pointer[-(1 + ((oparg & 0x08) ? 1 : 0) + ((oparg & 0x04) ? 1 : 0) + ((oparg & 0x02) ? 1 : 0) + ((oparg & 0x01) ? 1 : 0))] : NULL;
+ PyObject *func;
+ #line 3267 "Python/bytecodes.c"
+
+ PyFunctionObject *func_obj = (PyFunctionObject *)
+ PyFunction_New(codeobj, GLOBALS());
+
+ Py_DECREF(codeobj);
+ if (func_obj == NULL) {
+ goto error;
+ }
+
+ if (oparg & 0x08) {
+ assert(PyTuple_CheckExact(closure));
+ func_obj->func_closure = closure;
+ }
+ if (oparg & 0x04) {
+ assert(PyTuple_CheckExact(annotations));
+ func_obj->func_annotations = annotations;
+ }
+ if (oparg & 0x02) {
+ assert(PyDict_CheckExact(kwdefaults));
+ func_obj->func_kwdefaults = kwdefaults;
+ }
+ if (oparg & 0x01) {
+ assert(PyTuple_CheckExact(defaults));
+ func_obj->func_defaults = defaults;
+ }
+
+ func_obj->func_version = ((PyCodeObject *)codeobj)->co_version;
+ func = (PyObject *)func_obj;
+ #line 4534 "Python/generated_cases.c.h"
+ STACK_SHRINK(((oparg & 0x01) ? 1 : 0) + ((oparg & 0x02) ? 1 : 0) + ((oparg & 0x04) ? 1 : 0) + ((oparg & 0x08) ? 1 : 0));
+ stack_pointer[-1] = func;
+ DISPATCH();
+ }
+
+ TARGET(RETURN_GENERATOR) {
+ #line 3298 "Python/bytecodes.c"
+ assert(PyFunction_Check(frame->f_funcobj));
+ PyFunctionObject *func = (PyFunctionObject *)frame->f_funcobj;
+ PyGenObject *gen = (PyGenObject *)_Py_MakeCoro(func);
+ if (gen == NULL) {
+ goto error;
+ }
+ assert(EMPTY());
+ _PyFrame_SetStackPointer(frame, stack_pointer);
+ _PyInterpreterFrame *gen_frame = (_PyInterpreterFrame *)gen->gi_iframe;
+ _PyFrame_Copy(frame, gen_frame);
+ assert(frame->frame_obj == NULL);
+ gen->gi_frame_state = FRAME_CREATED;
+ gen_frame->owner = FRAME_OWNED_BY_GENERATOR;
+ _Py_LeaveRecursiveCallPy(tstate);
+ assert(frame != &entry_frame);
+ _PyInterpreterFrame *prev = frame->previous;
+ _PyThreadState_PopFrame(tstate, frame);
+ frame = cframe.current_frame = prev;
+ _PyFrame_StackPush(frame, (PyObject *)gen);
+ goto resume_frame;
+ #line 4562 "Python/generated_cases.c.h"
+ }
+
+ TARGET(BUILD_SLICE) {
+ PyObject *step = (oparg == 3) ? stack_pointer[-(((oparg == 3) ? 1 : 0))] : NULL;
+ PyObject *stop = stack_pointer[-(1 + ((oparg == 3) ? 1 : 0))];
+ PyObject *start = stack_pointer[-(2 + ((oparg == 3) ? 1 : 0))];
+ PyObject *slice;
+ #line 3321 "Python/bytecodes.c"
+ slice = PySlice_New(start, stop, step);
+ #line 4572 "Python/generated_cases.c.h"
+ Py_DECREF(start);
+ Py_DECREF(stop);
+ Py_XDECREF(step);
+ #line 3323 "Python/bytecodes.c"
+ if (slice == NULL) { STACK_SHRINK(((oparg == 3) ? 1 : 0)); goto pop_2_error; }
+ #line 4578 "Python/generated_cases.c.h"
+ STACK_SHRINK(((oparg == 3) ? 1 : 0));
+ STACK_SHRINK(1);
+ stack_pointer[-1] = slice;
+ DISPATCH();
+ }
+
+ TARGET(FORMAT_VALUE) {
+ PyObject *fmt_spec = ((oparg & FVS_MASK) == FVS_HAVE_SPEC) ? stack_pointer[-((((oparg & FVS_MASK) == FVS_HAVE_SPEC) ? 1 : 0))] : NULL;
+ PyObject *value = stack_pointer[-(1 + (((oparg & FVS_MASK) == FVS_HAVE_SPEC) ? 1 : 0))];
+ PyObject *result;
+ #line 3327 "Python/bytecodes.c"
+ /* Handles f-string value formatting. */
+ PyObject *(*conv_fn)(PyObject *);
+ int which_conversion = oparg & FVC_MASK;
+
+ /* See if any conversion is specified. */
+ switch (which_conversion) {
+ case FVC_NONE: conv_fn = NULL; break;
+ case FVC_STR: conv_fn = PyObject_Str; break;
+ case FVC_REPR: conv_fn = PyObject_Repr; break;
+ case FVC_ASCII: conv_fn = PyObject_ASCII; break;
+ default:
+ _PyErr_Format(tstate, PyExc_SystemError,
+ "unexpected conversion flag %d",
+ which_conversion);
+ goto error;
+ }
+
+ /* If there's a conversion function, call it and replace
+ value with that result. Otherwise, just use value,
+ without conversion. */
+ if (conv_fn != NULL) {
+ result = conv_fn(value);
+ Py_DECREF(value);
+ if (result == NULL) {
+ Py_XDECREF(fmt_spec);
+ if (true) { STACK_SHRINK((((oparg & FVS_MASK) == FVS_HAVE_SPEC) ? 1 : 0)); goto pop_1_error; }
+ }
+ value = result;
+ }
+
+ result = PyObject_Format(value, fmt_spec);
+ Py_DECREF(value);
+ Py_XDECREF(fmt_spec);
+ if (result == NULL) { STACK_SHRINK((((oparg & FVS_MASK) == FVS_HAVE_SPEC) ? 1 : 0)); goto pop_1_error; }
+ #line 4624 "Python/generated_cases.c.h"
+ STACK_SHRINK((((oparg & FVS_MASK) == FVS_HAVE_SPEC) ? 1 : 0));
+ stack_pointer[-1] = result;
+ DISPATCH();
+ }
+
+ TARGET(COPY) {
+ PyObject *bottom = stack_pointer[-(1 + (oparg-1))];
+ PyObject *top;
+ #line 3364 "Python/bytecodes.c"
+ assert(oparg > 0);
+ top = Py_NewRef(bottom);
+ #line 4636 "Python/generated_cases.c.h"
+ STACK_GROW(1);
+ stack_pointer[-1] = top;
+ DISPATCH();
+ }
+
+ TARGET(BINARY_OP) {
+ PREDICTED(BINARY_OP);
+ static_assert(INLINE_CACHE_ENTRIES_BINARY_OP == 1, "incorrect cache size");
+ PyObject *rhs = stack_pointer[-1];
+ PyObject *lhs = stack_pointer[-2];
+ PyObject *res;
+ #line 3369 "Python/bytecodes.c"
+ #if ENABLE_SPECIALIZATION
+ _PyBinaryOpCache *cache = (_PyBinaryOpCache *)next_instr;
+ if (ADAPTIVE_COUNTER_IS_ZERO(cache->counter)) {
+ next_instr--;
+ _Py_Specialize_BinaryOp(lhs, rhs, next_instr, oparg, &GETLOCAL(0));
+ DISPATCH_SAME_OPARG();
+ }
+ STAT_INC(BINARY_OP, deferred);
+ DECREMENT_ADAPTIVE_COUNTER(cache->counter);
+ #endif /* ENABLE_SPECIALIZATION */
+ assert(0 <= oparg);
+ assert((unsigned)oparg < Py_ARRAY_LENGTH(binary_ops));
+ assert(binary_ops[oparg]);
+ res = binary_ops[oparg](lhs, rhs);
+ #line 4663 "Python/generated_cases.c.h"
+ Py_DECREF(lhs);
+ Py_DECREF(rhs);
+ #line 3384 "Python/bytecodes.c"
+ if (res == NULL) goto pop_2_error;
+ #line 4668 "Python/generated_cases.c.h"
+ STACK_SHRINK(1);
+ stack_pointer[-1] = res;
+ next_instr += 1;
+ DISPATCH();
+ }
+
+ TARGET(SWAP) {
+ PyObject *top = stack_pointer[-1];
+ PyObject *bottom = stack_pointer[-(2 + (oparg-2))];
+ #line 3389 "Python/bytecodes.c"
+ assert(oparg >= 2);
+ #line 4680 "Python/generated_cases.c.h"
+ stack_pointer[-1] = bottom;
+ stack_pointer[-(2 + (oparg-2))] = top;
+ DISPATCH();
+ }
+
+ TARGET(INSTRUMENTED_INSTRUCTION) {
+ #line 3393 "Python/bytecodes.c"
+ int next_opcode = _Py_call_instrumentation_instruction(
+ tstate, frame, next_instr-1);
+ if (next_opcode < 0) goto error;
+ next_instr--;
+ if (_PyOpcode_Caches[next_opcode]) {
+ _PyBinaryOpCache *cache = (_PyBinaryOpCache *)(next_instr+1);
+ INCREMENT_ADAPTIVE_COUNTER(cache->counter);
+ }
+ assert(next_opcode > 0 && next_opcode < 256);
+ opcode = next_opcode;
+ DISPATCH_GOTO();
+ #line 4699 "Python/generated_cases.c.h"
+ }
+
+ TARGET(INSTRUMENTED_JUMP_FORWARD) {
+ #line 3407 "Python/bytecodes.c"
+ INSTRUMENTED_JUMP(next_instr-1, next_instr+oparg, PY_MONITORING_EVENT_JUMP);
+ #line 4705 "Python/generated_cases.c.h"
+ DISPATCH();
+ }
+
+ TARGET(INSTRUMENTED_JUMP_BACKWARD) {
+ #line 3411 "Python/bytecodes.c"
+ INSTRUMENTED_JUMP(next_instr-1, next_instr-oparg, PY_MONITORING_EVENT_JUMP);
+ #line 4712 "Python/generated_cases.c.h"
+ CHECK_EVAL_BREAKER();
+ DISPATCH();
+ }
+
+ TARGET(INSTRUMENTED_POP_JUMP_IF_TRUE) {
+ #line 3416 "Python/bytecodes.c"
+ PyObject *cond = POP();
+ int err = PyObject_IsTrue(cond);
+ Py_DECREF(cond);
+ if (err < 0) goto error;
+ _Py_CODEUNIT *here = next_instr-1;
+ assert(err == 0 || err == 1);
+ int offset = err*oparg;
+ INSTRUMENTED_JUMP(here, next_instr + offset, PY_MONITORING_EVENT_BRANCH);
+ #line 4727 "Python/generated_cases.c.h"
+ DISPATCH();
+ }
+
+ TARGET(INSTRUMENTED_POP_JUMP_IF_FALSE) {
+ #line 3427 "Python/bytecodes.c"
+ PyObject *cond = POP();
+ int err = PyObject_IsTrue(cond);
+ Py_DECREF(cond);
+ if (err < 0) goto error;
+ _Py_CODEUNIT *here = next_instr-1;
+ assert(err == 0 || err == 1);
+ int offset = (1-err)*oparg;
+ INSTRUMENTED_JUMP(here, next_instr + offset, PY_MONITORING_EVENT_BRANCH);
+ #line 4741 "Python/generated_cases.c.h"
+ DISPATCH();
+ }
+
+ TARGET(INSTRUMENTED_POP_JUMP_IF_NONE) {
+ #line 3438 "Python/bytecodes.c"
+ PyObject *value = POP();
+ _Py_CODEUNIT *here = next_instr-1;
+ int offset;
+ if (Py_IsNone(value)) {
+ offset = oparg;
+ }
+ else {
+ Py_DECREF(value);
+ offset = 0;
+ }
+ INSTRUMENTED_JUMP(here, next_instr + offset, PY_MONITORING_EVENT_BRANCH);
+ #line 4758 "Python/generated_cases.c.h"
+ DISPATCH();
+ }
+
+ TARGET(INSTRUMENTED_POP_JUMP_IF_NOT_NONE) {
+ #line 3452 "Python/bytecodes.c"
+ PyObject *value = POP();
+ _Py_CODEUNIT *here = next_instr-1;
+ int offset;
+ if (Py_IsNone(value)) {
+ offset = 0;
+ }
+ else {
+ Py_DECREF(value);
+ offset = oparg;
+ }
+ INSTRUMENTED_JUMP(here, next_instr + offset, PY_MONITORING_EVENT_BRANCH);
+ #line 4775 "Python/generated_cases.c.h"
+ DISPATCH();
+ }
+
+ TARGET(EXTENDED_ARG) {
+ #line 3466 "Python/bytecodes.c"
+ assert(oparg);
+ opcode = next_instr->op.code;
+ oparg = oparg << 8 | next_instr->op.arg;
+ PRE_DISPATCH_GOTO();
+ DISPATCH_GOTO();
+ #line 4786 "Python/generated_cases.c.h"
+ }
+
+ TARGET(CACHE) {
+ #line 3474 "Python/bytecodes.c"
+ assert(0 && "Executing a cache.");
+ Py_UNREACHABLE();
+ #line 4793 "Python/generated_cases.c.h"
+ }
+
+ TARGET(RESERVED) {
+ #line 3479 "Python/bytecodes.c"
+ assert(0 && "Executing RESERVED instruction.");
+ Py_UNREACHABLE();
+ #line 4800 "Python/generated_cases.c.h"
+ }
diff --git a/contrib/tools/python3/Python/getargs.c b/contrib/tools/python3/Python/getargs.c
new file mode 100644
index 00000000000..066739f21fc
--- /dev/null
+++ b/contrib/tools/python3/Python/getargs.c
@@ -0,0 +1,2960 @@
+
+/* New getargs implementation */
+
+#include "Python.h"
+#include "pycore_tuple.h" // _PyTuple_ITEMS()
+#include "pycore_pylifecycle.h" // _PyArg_Fini
+
+#include <ctype.h>
+#include <float.h>
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+int PyArg_Parse(PyObject *, const char *, ...);
+int PyArg_ParseTuple(PyObject *, const char *, ...);
+int PyArg_VaParse(PyObject *, const char *, va_list);
+
+int PyArg_ParseTupleAndKeywords(PyObject *, PyObject *,
+ const char *, char **, ...);
+int PyArg_VaParseTupleAndKeywords(PyObject *, PyObject *,
+ const char *, char **, va_list);
+
+int _PyArg_ParseTupleAndKeywordsFast(PyObject *, PyObject *,
+ struct _PyArg_Parser *, ...);
+int _PyArg_VaParseTupleAndKeywordsFast(PyObject *, PyObject *,
+ struct _PyArg_Parser *, va_list);
+
+#ifdef HAVE_DECLSPEC_DLL
+/* Export functions */
+PyAPI_FUNC(int) _PyArg_Parse_SizeT(PyObject *, const char *, ...);
+PyAPI_FUNC(int) _PyArg_ParseStack_SizeT(PyObject *const *args, Py_ssize_t nargs,
+ const char *format, ...);
+PyAPI_FUNC(int) _PyArg_ParseStackAndKeywords_SizeT(PyObject *const *args, Py_ssize_t nargs,
+ PyObject *kwnames,
+ struct _PyArg_Parser *parser, ...);
+PyAPI_FUNC(int) _PyArg_ParseTuple_SizeT(PyObject *, const char *, ...);
+PyAPI_FUNC(int) _PyArg_ParseTupleAndKeywords_SizeT(PyObject *, PyObject *,
+ const char *, char **, ...);
+PyAPI_FUNC(PyObject *) _Py_BuildValue_SizeT(const char *, ...);
+PyAPI_FUNC(int) _PyArg_VaParse_SizeT(PyObject *, const char *, va_list);
+PyAPI_FUNC(int) _PyArg_VaParseTupleAndKeywords_SizeT(PyObject *, PyObject *,
+ const char *, char **, va_list);
+
+PyAPI_FUNC(int) _PyArg_ParseTupleAndKeywordsFast_SizeT(PyObject *, PyObject *,
+ struct _PyArg_Parser *, ...);
+PyAPI_FUNC(int) _PyArg_VaParseTupleAndKeywordsFast_SizeT(PyObject *, PyObject *,
+ struct _PyArg_Parser *, va_list);
+#endif
+
+#define FLAG_COMPAT 1
+#define FLAG_SIZE_T 2
+
+typedef int (*destr_t)(PyObject *, void *);
+
+
+/* Keep track of "objects" that have been allocated or initialized and
+ which will need to be deallocated or cleaned up somehow if overall
+ parsing fails.
+*/
+typedef struct {
+ void *item;
+ destr_t destructor;
+} freelistentry_t;
+
+typedef struct {
+ freelistentry_t *entries;
+ int first_available;
+ int entries_malloced;
+} freelist_t;
+
+#define STATIC_FREELIST_ENTRIES 8
+
+/* Forward */
+static int vgetargs1_impl(PyObject *args, PyObject *const *stack, Py_ssize_t nargs,
+ const char *format, va_list *p_va, int flags);
+static int vgetargs1(PyObject *, const char *, va_list *, int);
+static void seterror(Py_ssize_t, const char *, int *, const char *, const char *);
+static const char *convertitem(PyObject *, const char **, va_list *, int, int *,
+ char *, size_t, freelist_t *);
+static const char *converttuple(PyObject *, const char **, va_list *, int,
+ int *, char *, size_t, int, freelist_t *);
+static const char *convertsimple(PyObject *, const char **, va_list *, int,
+ char *, size_t, freelist_t *);
+static Py_ssize_t convertbuffer(PyObject *, const void **p, const char **);
+static int getbuffer(PyObject *, Py_buffer *, const char**);
+
+static int vgetargskeywords(PyObject *, PyObject *,
+ const char *, char **, va_list *, int);
+static int vgetargskeywordsfast(PyObject *, PyObject *,
+ struct _PyArg_Parser *, va_list *, int);
+static int vgetargskeywordsfast_impl(PyObject *const *args, Py_ssize_t nargs,
+ PyObject *keywords, PyObject *kwnames,
+ struct _PyArg_Parser *parser,
+ va_list *p_va, int flags);
+static const char *skipitem(const char **, va_list *, int);
+
+int
+PyArg_Parse(PyObject *args, const char *format, ...)
+{
+ int retval;
+ va_list va;
+
+ va_start(va, format);
+ retval = vgetargs1(args, format, &va, FLAG_COMPAT);
+ va_end(va);
+ return retval;
+}
+
+PyAPI_FUNC(int)
+_PyArg_Parse_SizeT(PyObject *args, const char *format, ...)
+{
+ int retval;
+ va_list va;
+
+ va_start(va, format);
+ retval = vgetargs1(args, format, &va, FLAG_COMPAT|FLAG_SIZE_T);
+ va_end(va);
+ return retval;
+}
+
+
+int
+PyArg_ParseTuple(PyObject *args, const char *format, ...)
+{
+ int retval;
+ va_list va;
+
+ va_start(va, format);
+ retval = vgetargs1(args, format, &va, 0);
+ va_end(va);
+ return retval;
+}
+
+PyAPI_FUNC(int)
+_PyArg_ParseTuple_SizeT(PyObject *args, const char *format, ...)
+{
+ int retval;
+ va_list va;
+
+ va_start(va, format);
+ retval = vgetargs1(args, format, &va, FLAG_SIZE_T);
+ va_end(va);
+ return retval;
+}
+
+
+int
+_PyArg_ParseStack(PyObject *const *args, Py_ssize_t nargs, const char *format, ...)
+{
+ int retval;
+ va_list va;
+
+ va_start(va, format);
+ retval = vgetargs1_impl(NULL, args, nargs, format, &va, 0);
+ va_end(va);
+ return retval;
+}
+
+PyAPI_FUNC(int)
+_PyArg_ParseStack_SizeT(PyObject *const *args, Py_ssize_t nargs, const char *format, ...)
+{
+ int retval;
+ va_list va;
+
+ va_start(va, format);
+ retval = vgetargs1_impl(NULL, args, nargs, format, &va, FLAG_SIZE_T);
+ va_end(va);
+ return retval;
+}
+
+
+int
+PyArg_VaParse(PyObject *args, const char *format, va_list va)
+{
+ va_list lva;
+ int retval;
+
+ va_copy(lva, va);
+
+ retval = vgetargs1(args, format, &lva, 0);
+ va_end(lva);
+ return retval;
+}
+
+PyAPI_FUNC(int)
+_PyArg_VaParse_SizeT(PyObject *args, const char *format, va_list va)
+{
+ va_list lva;
+ int retval;
+
+ va_copy(lva, va);
+
+ retval = vgetargs1(args, format, &lva, FLAG_SIZE_T);
+ va_end(lva);
+ return retval;
+}
+
+
+/* Handle cleanup of allocated memory in case of exception */
+
+static int
+cleanup_ptr(PyObject *self, void *ptr)
+{
+ void **pptr = (void **)ptr;
+ PyMem_Free(*pptr);
+ *pptr = NULL;
+ return 0;
+}
+
+static int
+cleanup_buffer(PyObject *self, void *ptr)
+{
+ Py_buffer *buf = (Py_buffer *)ptr;
+ if (buf) {
+ PyBuffer_Release(buf);
+ }
+ return 0;
+}
+
+static int
+addcleanup(void *ptr, freelist_t *freelist, destr_t destructor)
+{
+ int index;
+
+ index = freelist->first_available;
+ freelist->first_available += 1;
+
+ freelist->entries[index].item = ptr;
+ freelist->entries[index].destructor = destructor;
+
+ return 0;
+}
+
+static int
+cleanreturn(int retval, freelist_t *freelist)
+{
+ int index;
+
+ if (retval == 0) {
+ /* A failure occurred, therefore execute all of the cleanup
+ functions.
+ */
+ for (index = 0; index < freelist->first_available; ++index) {
+ freelist->entries[index].destructor(NULL,
+ freelist->entries[index].item);
+ }
+ }
+ if (freelist->entries_malloced)
+ PyMem_Free(freelist->entries);
+ return retval;
+}
+
+
+static int
+vgetargs1_impl(PyObject *compat_args, PyObject *const *stack, Py_ssize_t nargs, const char *format,
+ va_list *p_va, int flags)
+{
+ char msgbuf[256];
+ int levels[32];
+ const char *fname = NULL;
+ const char *message = NULL;
+ int min = -1;
+ int max = 0;
+ int level = 0;
+ int endfmt = 0;
+ const char *formatsave = format;
+ Py_ssize_t i;
+ const char *msg;
+ int compat = flags & FLAG_COMPAT;
+ freelistentry_t static_entries[STATIC_FREELIST_ENTRIES];
+ freelist_t freelist;
+
+ assert(nargs == 0 || stack != NULL);
+
+ freelist.entries = static_entries;
+ freelist.first_available = 0;
+ freelist.entries_malloced = 0;
+
+ flags = flags & ~FLAG_COMPAT;
+
+ while (endfmt == 0) {
+ int c = *format++;
+ switch (c) {
+ case '(':
+ if (level == 0)
+ max++;
+ level++;
+ if (level >= 30)
+ Py_FatalError("too many tuple nesting levels "
+ "in argument format string");
+ break;
+ case ')':
+ if (level == 0)
+ Py_FatalError("excess ')' in getargs format");
+ else
+ level--;
+ break;
+ case '\0':
+ endfmt = 1;
+ break;
+ case ':':
+ fname = format;
+ endfmt = 1;
+ break;
+ case ';':
+ message = format;
+ endfmt = 1;
+ break;
+ case '|':
+ if (level == 0)
+ min = max;
+ break;
+ default:
+ if (level == 0) {
+ if (Py_ISALPHA(c))
+ if (c != 'e') /* skip encoded */
+ max++;
+ }
+ break;
+ }
+ }
+
+ if (level != 0)
+ Py_FatalError(/* '(' */ "missing ')' in getargs format");
+
+ if (min < 0)
+ min = max;
+
+ format = formatsave;
+
+ if (max > STATIC_FREELIST_ENTRIES) {
+ freelist.entries = PyMem_NEW(freelistentry_t, max);
+ if (freelist.entries == NULL) {
+ PyErr_NoMemory();
+ return 0;
+ }
+ freelist.entries_malloced = 1;
+ }
+
+ if (compat) {
+ if (max == 0) {
+ if (compat_args == NULL)
+ return 1;
+ PyErr_Format(PyExc_TypeError,
+ "%.200s%s takes no arguments",
+ fname==NULL ? "function" : fname,
+ fname==NULL ? "" : "()");
+ return cleanreturn(0, &freelist);
+ }
+ else if (min == 1 && max == 1) {
+ if (compat_args == NULL) {
+ PyErr_Format(PyExc_TypeError,
+ "%.200s%s takes at least one argument",
+ fname==NULL ? "function" : fname,
+ fname==NULL ? "" : "()");
+ return cleanreturn(0, &freelist);
+ }
+ msg = convertitem(compat_args, &format, p_va, flags, levels,
+ msgbuf, sizeof(msgbuf), &freelist);
+ if (msg == NULL)
+ return cleanreturn(1, &freelist);
+ seterror(levels[0], msg, levels+1, fname, message);
+ return cleanreturn(0, &freelist);
+ }
+ else {
+ PyErr_SetString(PyExc_SystemError,
+ "old style getargs format uses new features");
+ return cleanreturn(0, &freelist);
+ }
+ }
+
+ if (nargs < min || max < nargs) {
+ if (message == NULL)
+ PyErr_Format(PyExc_TypeError,
+ "%.150s%s takes %s %d argument%s (%zd given)",
+ fname==NULL ? "function" : fname,
+ fname==NULL ? "" : "()",
+ min==max ? "exactly"
+ : nargs < min ? "at least" : "at most",
+ nargs < min ? min : max,
+ (nargs < min ? min : max) == 1 ? "" : "s",
+ nargs);
+ else
+ PyErr_SetString(PyExc_TypeError, message);
+ return cleanreturn(0, &freelist);
+ }
+
+ for (i = 0; i < nargs; i++) {
+ if (*format == '|')
+ format++;
+ msg = convertitem(stack[i], &format, p_va,
+ flags, levels, msgbuf,
+ sizeof(msgbuf), &freelist);
+ if (msg) {
+ seterror(i+1, msg, levels, fname, message);
+ return cleanreturn(0, &freelist);
+ }
+ }
+
+ if (*format != '\0' && !Py_ISALPHA(*format) &&
+ *format != '(' &&
+ *format != '|' && *format != ':' && *format != ';') {
+ PyErr_Format(PyExc_SystemError,
+ "bad format string: %.200s", formatsave);
+ return cleanreturn(0, &freelist);
+ }
+
+ return cleanreturn(1, &freelist);
+}
+
+static int
+vgetargs1(PyObject *args, const char *format, va_list *p_va, int flags)
+{
+ PyObject **stack;
+ Py_ssize_t nargs;
+
+ if (!(flags & FLAG_COMPAT)) {
+ assert(args != NULL);
+
+ if (!PyTuple_Check(args)) {
+ PyErr_SetString(PyExc_SystemError,
+ "new style getargs format but argument is not a tuple");
+ return 0;
+ }
+
+ stack = _PyTuple_ITEMS(args);
+ nargs = PyTuple_GET_SIZE(args);
+ }
+ else {
+ stack = NULL;
+ nargs = 0;
+ }
+
+ return vgetargs1_impl(args, stack, nargs, format, p_va, flags);
+}
+
+
+static void
+seterror(Py_ssize_t iarg, const char *msg, int *levels, const char *fname,
+ const char *message)
+{
+ char buf[512];
+ int i;
+ char *p = buf;
+
+ if (PyErr_Occurred())
+ return;
+ else if (message == NULL) {
+ if (fname != NULL) {
+ PyOS_snprintf(p, sizeof(buf), "%.200s() ", fname);
+ p += strlen(p);
+ }
+ if (iarg != 0) {
+ PyOS_snprintf(p, sizeof(buf) - (p - buf),
+ "argument %zd", iarg);
+ i = 0;
+ p += strlen(p);
+ while (i < 32 && levels[i] > 0 && (int)(p-buf) < 220) {
+ PyOS_snprintf(p, sizeof(buf) - (p - buf),
+ ", item %d", levels[i]-1);
+ p += strlen(p);
+ i++;
+ }
+ }
+ else {
+ PyOS_snprintf(p, sizeof(buf) - (p - buf), "argument");
+ p += strlen(p);
+ }
+ PyOS_snprintf(p, sizeof(buf) - (p - buf), " %.256s", msg);
+ message = buf;
+ }
+ if (msg[0] == '(') {
+ PyErr_SetString(PyExc_SystemError, message);
+ }
+ else {
+ PyErr_SetString(PyExc_TypeError, message);
+ }
+}
+
+
+/* Convert a tuple argument.
+ On entry, *p_format points to the character _after_ the opening '('.
+ On successful exit, *p_format points to the closing ')'.
+ If successful:
+ *p_format and *p_va are updated,
+ *levels and *msgbuf are untouched,
+ and NULL is returned.
+ If the argument is invalid:
+ *p_format is unchanged,
+ *p_va is undefined,
+ *levels is a 0-terminated list of item numbers,
+ *msgbuf contains an error message, whose format is:
+ "must be <typename1>, not <typename2>", where:
+ <typename1> is the name of the expected type, and
+ <typename2> is the name of the actual type,
+ and msgbuf is returned.
+*/
+
+static const char *
+converttuple(PyObject *arg, const char **p_format, va_list *p_va, int flags,
+ int *levels, char *msgbuf, size_t bufsize, int toplevel,
+ freelist_t *freelist)
+{
+ int level = 0;
+ int n = 0;
+ const char *format = *p_format;
+ int i;
+ Py_ssize_t len;
+
+ for (;;) {
+ int c = *format++;
+ if (c == '(') {
+ if (level == 0)
+ n++;
+ level++;
+ }
+ else if (c == ')') {
+ if (level == 0)
+ break;
+ level--;
+ }
+ else if (c == ':' || c == ';' || c == '\0')
+ break;
+ else if (level == 0 && Py_ISALPHA(c) && c != 'e')
+ n++;
+ }
+
+ if (!PySequence_Check(arg) || PyBytes_Check(arg)) {
+ levels[0] = 0;
+ PyOS_snprintf(msgbuf, bufsize,
+ toplevel ? "expected %d arguments, not %.50s" :
+ "must be %d-item sequence, not %.50s",
+ n,
+ arg == Py_None ? "None" : Py_TYPE(arg)->tp_name);
+ return msgbuf;
+ }
+
+ len = PySequence_Size(arg);
+ if (len != n) {
+ levels[0] = 0;
+ if (toplevel) {
+ PyOS_snprintf(msgbuf, bufsize,
+ "expected %d argument%s, not %zd",
+ n,
+ n == 1 ? "" : "s",
+ len);
+ }
+ else {
+ PyOS_snprintf(msgbuf, bufsize,
+ "must be sequence of length %d, not %zd",
+ n, len);
+ }
+ return msgbuf;
+ }
+
+ format = *p_format;
+ for (i = 0; i < n; i++) {
+ const char *msg;
+ PyObject *item;
+ item = PySequence_GetItem(arg, i);
+ if (item == NULL) {
+ PyErr_Clear();
+ levels[0] = i+1;
+ levels[1] = 0;
+ strncpy(msgbuf, "is not retrievable", bufsize);
+ return msgbuf;
+ }
+ msg = convertitem(item, &format, p_va, flags, levels+1,
+ msgbuf, bufsize, freelist);
+ /* PySequence_GetItem calls tp->sq_item, which INCREFs */
+ Py_XDECREF(item);
+ if (msg != NULL) {
+ levels[0] = i+1;
+ return msg;
+ }
+ }
+
+ *p_format = format;
+ return NULL;
+}
+
+
+/* Convert a single item. */
+
+static const char *
+convertitem(PyObject *arg, const char **p_format, va_list *p_va, int flags,
+ int *levels, char *msgbuf, size_t bufsize, freelist_t *freelist)
+{
+ const char *msg;
+ const char *format = *p_format;
+
+ if (*format == '(' /* ')' */) {
+ format++;
+ msg = converttuple(arg, &format, p_va, flags, levels, msgbuf,
+ bufsize, 0, freelist);
+ if (msg == NULL)
+ format++;
+ }
+ else {
+ msg = convertsimple(arg, &format, p_va, flags,
+ msgbuf, bufsize, freelist);
+ if (msg != NULL)
+ levels[0] = 0;
+ }
+ if (msg == NULL)
+ *p_format = format;
+ return msg;
+}
+
+
+
+/* Format an error message generated by convertsimple().
+ displayname must be UTF-8 encoded.
+*/
+
+void
+_PyArg_BadArgument(const char *fname, const char *displayname,
+ const char *expected, PyObject *arg)
+{
+ PyErr_Format(PyExc_TypeError,
+ "%.200s() %.200s must be %.50s, not %.50s",
+ fname, displayname, expected,
+ arg == Py_None ? "None" : Py_TYPE(arg)->tp_name);
+}
+
+static const char *
+converterr(const char *expected, PyObject *arg, char *msgbuf, size_t bufsize)
+{
+ assert(expected != NULL);
+ assert(arg != NULL);
+ if (expected[0] == '(') {
+ PyOS_snprintf(msgbuf, bufsize,
+ "%.100s", expected);
+ }
+ else {
+ PyOS_snprintf(msgbuf, bufsize,
+ "must be %.50s, not %.50s", expected,
+ arg == Py_None ? "None" : Py_TYPE(arg)->tp_name);
+ }
+ return msgbuf;
+}
+
+#define CONV_UNICODE "(unicode conversion error)"
+
+/* Convert a non-tuple argument. Return NULL if conversion went OK,
+ or a string with a message describing the failure. The message is
+ formatted as "must be <desired type>, not <actual type>".
+ When failing, an exception may or may not have been raised.
+ Don't call if a tuple is expected.
+
+ When you add new format codes, please don't forget poor skipitem() below.
+*/
+
+static const char *
+convertsimple(PyObject *arg, const char **p_format, va_list *p_va, int flags,
+ char *msgbuf, size_t bufsize, freelist_t *freelist)
+{
+#define RETURN_ERR_OCCURRED return msgbuf
+ /* For # codes */
+#define REQUIRE_PY_SSIZE_T_CLEAN \
+ if (!(flags & FLAG_SIZE_T)) { \
+ PyErr_SetString(PyExc_SystemError, \
+ "PY_SSIZE_T_CLEAN macro must be defined for '#' formats"); \
+ RETURN_ERR_OCCURRED; \
+ }
+
+ const char *format = *p_format;
+ char c = *format++;
+ const char *sarg;
+
+ switch (c) {
+
+ case 'b': { /* unsigned byte -- very short int */
+ char *p = va_arg(*p_va, char *);
+ long ival = PyLong_AsLong(arg);
+ if (ival == -1 && PyErr_Occurred())
+ RETURN_ERR_OCCURRED;
+ else if (ival < 0) {
+ PyErr_SetString(PyExc_OverflowError,
+ "unsigned byte integer is less than minimum");
+ RETURN_ERR_OCCURRED;
+ }
+ else if (ival > UCHAR_MAX) {
+ PyErr_SetString(PyExc_OverflowError,
+ "unsigned byte integer is greater than maximum");
+ RETURN_ERR_OCCURRED;
+ }
+ else
+ *p = (unsigned char) ival;
+ break;
+ }
+
+ case 'B': {/* byte sized bitfield - both signed and unsigned
+ values allowed */
+ char *p = va_arg(*p_va, char *);
+ unsigned long ival = PyLong_AsUnsignedLongMask(arg);
+ if (ival == (unsigned long)-1 && PyErr_Occurred())
+ RETURN_ERR_OCCURRED;
+ else
+ *p = (unsigned char) ival;
+ break;
+ }
+
+ case 'h': {/* signed short int */
+ short *p = va_arg(*p_va, short *);
+ long ival = PyLong_AsLong(arg);
+ if (ival == -1 && PyErr_Occurred())
+ RETURN_ERR_OCCURRED;
+ else if (ival < SHRT_MIN) {
+ PyErr_SetString(PyExc_OverflowError,
+ "signed short integer is less than minimum");
+ RETURN_ERR_OCCURRED;
+ }
+ else if (ival > SHRT_MAX) {
+ PyErr_SetString(PyExc_OverflowError,
+ "signed short integer is greater than maximum");
+ RETURN_ERR_OCCURRED;
+ }
+ else
+ *p = (short) ival;
+ break;
+ }
+
+ case 'H': { /* short int sized bitfield, both signed and
+ unsigned allowed */
+ unsigned short *p = va_arg(*p_va, unsigned short *);
+ unsigned long ival = PyLong_AsUnsignedLongMask(arg);
+ if (ival == (unsigned long)-1 && PyErr_Occurred())
+ RETURN_ERR_OCCURRED;
+ else
+ *p = (unsigned short) ival;
+ break;
+ }
+
+ case 'i': {/* signed int */
+ int *p = va_arg(*p_va, int *);
+ long ival = PyLong_AsLong(arg);
+ if (ival == -1 && PyErr_Occurred())
+ RETURN_ERR_OCCURRED;
+ else if (ival > INT_MAX) {
+ PyErr_SetString(PyExc_OverflowError,
+ "signed integer is greater than maximum");
+ RETURN_ERR_OCCURRED;
+ }
+ else if (ival < INT_MIN) {
+ PyErr_SetString(PyExc_OverflowError,
+ "signed integer is less than minimum");
+ RETURN_ERR_OCCURRED;
+ }
+ else
+ *p = ival;
+ break;
+ }
+
+ case 'I': { /* int sized bitfield, both signed and
+ unsigned allowed */
+ unsigned int *p = va_arg(*p_va, unsigned int *);
+ unsigned long ival = PyLong_AsUnsignedLongMask(arg);
+ if (ival == (unsigned long)-1 && PyErr_Occurred())
+ RETURN_ERR_OCCURRED;
+ else
+ *p = (unsigned int) ival;
+ break;
+ }
+
+ case 'n': /* Py_ssize_t */
+ {
+ PyObject *iobj;
+ Py_ssize_t *p = va_arg(*p_va, Py_ssize_t *);
+ Py_ssize_t ival = -1;
+ iobj = _PyNumber_Index(arg);
+ if (iobj != NULL) {
+ ival = PyLong_AsSsize_t(iobj);
+ Py_DECREF(iobj);
+ }
+ if (ival == -1 && PyErr_Occurred())
+ RETURN_ERR_OCCURRED;
+ *p = ival;
+ break;
+ }
+ case 'l': {/* long int */
+ long *p = va_arg(*p_va, long *);
+ long ival = PyLong_AsLong(arg);
+ if (ival == -1 && PyErr_Occurred())
+ RETURN_ERR_OCCURRED;
+ else
+ *p = ival;
+ break;
+ }
+
+ case 'k': { /* long sized bitfield */
+ unsigned long *p = va_arg(*p_va, unsigned long *);
+ unsigned long ival;
+ if (PyLong_Check(arg))
+ ival = PyLong_AsUnsignedLongMask(arg);
+ else
+ return converterr("int", arg, msgbuf, bufsize);
+ *p = ival;
+ break;
+ }
+
+ case 'L': {/* long long */
+ long long *p = va_arg( *p_va, long long * );
+ long long ival = PyLong_AsLongLong(arg);
+ if (ival == (long long)-1 && PyErr_Occurred())
+ RETURN_ERR_OCCURRED;
+ else
+ *p = ival;
+ break;
+ }
+
+ case 'K': { /* long long sized bitfield */
+ unsigned long long *p = va_arg(*p_va, unsigned long long *);
+ unsigned long long ival;
+ if (PyLong_Check(arg))
+ ival = PyLong_AsUnsignedLongLongMask(arg);
+ else
+ return converterr("int", arg, msgbuf, bufsize);
+ *p = ival;
+ break;
+ }
+
+ case 'f': {/* float */
+ float *p = va_arg(*p_va, float *);
+ double dval = PyFloat_AsDouble(arg);
+ if (dval == -1.0 && PyErr_Occurred())
+ RETURN_ERR_OCCURRED;
+ else
+ *p = (float) dval;
+ break;
+ }
+
+ case 'd': {/* double */
+ double *p = va_arg(*p_va, double *);
+ double dval = PyFloat_AsDouble(arg);
+ if (dval == -1.0 && PyErr_Occurred())
+ RETURN_ERR_OCCURRED;
+ else
+ *p = dval;
+ break;
+ }
+
+ case 'D': {/* complex double */
+ Py_complex *p = va_arg(*p_va, Py_complex *);
+ Py_complex cval;
+ cval = PyComplex_AsCComplex(arg);
+ if (PyErr_Occurred())
+ RETURN_ERR_OCCURRED;
+ else
+ *p = cval;
+ break;
+ }
+
+ case 'c': {/* char */
+ char *p = va_arg(*p_va, char *);
+ if (PyBytes_Check(arg) && PyBytes_Size(arg) == 1)
+ *p = PyBytes_AS_STRING(arg)[0];
+ else if (PyByteArray_Check(arg) && PyByteArray_Size(arg) == 1)
+ *p = PyByteArray_AS_STRING(arg)[0];
+ else
+ return converterr("a byte string of length 1", arg, msgbuf, bufsize);
+ break;
+ }
+
+ case 'C': {/* unicode char */
+ int *p = va_arg(*p_va, int *);
+ int kind;
+ const void *data;
+
+ if (!PyUnicode_Check(arg))
+ return converterr("a unicode character", arg, msgbuf, bufsize);
+
+ if (PyUnicode_READY(arg))
+ RETURN_ERR_OCCURRED;
+
+ if (PyUnicode_GET_LENGTH(arg) != 1)
+ return converterr("a unicode character", arg, msgbuf, bufsize);
+
+ kind = PyUnicode_KIND(arg);
+ data = PyUnicode_DATA(arg);
+ *p = PyUnicode_READ(kind, data, 0);
+ break;
+ }
+
+ case 'p': {/* boolean *p*redicate */
+ int *p = va_arg(*p_va, int *);
+ int val = PyObject_IsTrue(arg);
+ if (val > 0)
+ *p = 1;
+ else if (val == 0)
+ *p = 0;
+ else
+ RETURN_ERR_OCCURRED;
+ break;
+ }
+
+ /* XXX WAAAAH! 's', 'y', 'z', 'u', 'Z', 'e', 'w' codes all
+ need to be cleaned up! */
+
+ case 'y': {/* any bytes-like object */
+ void **p = (void **)va_arg(*p_va, char **);
+ const char *buf;
+ Py_ssize_t count;
+ if (*format == '*') {
+ if (getbuffer(arg, (Py_buffer*)p, &buf) < 0)
+ return converterr(buf, arg, msgbuf, bufsize);
+ format++;
+ if (addcleanup(p, freelist, cleanup_buffer)) {
+ return converterr(
+ "(cleanup problem)",
+ arg, msgbuf, bufsize);
+ }
+ break;
+ }
+ count = convertbuffer(arg, (const void **)p, &buf);
+ if (count < 0)
+ return converterr(buf, arg, msgbuf, bufsize);
+ if (*format == '#') {
+ REQUIRE_PY_SSIZE_T_CLEAN;
+ Py_ssize_t *psize = va_arg(*p_va, Py_ssize_t*);
+ *psize = count;
+ format++;
+ } else {
+ if (strlen(*p) != (size_t)count) {
+ PyErr_SetString(PyExc_ValueError, "embedded null byte");
+ RETURN_ERR_OCCURRED;
+ }
+ }
+ break;
+ }
+
+ case 's': /* text string or bytes-like object */
+ case 'z': /* text string, bytes-like object or None */
+ {
+ if (*format == '*') {
+ /* "s*" or "z*" */
+ Py_buffer *p = (Py_buffer *)va_arg(*p_va, Py_buffer *);
+
+ if (c == 'z' && arg == Py_None)
+ PyBuffer_FillInfo(p, NULL, NULL, 0, 1, 0);
+ else if (PyUnicode_Check(arg)) {
+ Py_ssize_t len;
+ sarg = PyUnicode_AsUTF8AndSize(arg, &len);
+ if (sarg == NULL)
+ return converterr(CONV_UNICODE,
+ arg, msgbuf, bufsize);
+ PyBuffer_FillInfo(p, arg, (void *)sarg, len, 1, 0);
+ }
+ else { /* any bytes-like object */
+ const char *buf;
+ if (getbuffer(arg, p, &buf) < 0)
+ return converterr(buf, arg, msgbuf, bufsize);
+ }
+ if (addcleanup(p, freelist, cleanup_buffer)) {
+ return converterr(
+ "(cleanup problem)",
+ arg, msgbuf, bufsize);
+ }
+ format++;
+ } else if (*format == '#') { /* a string or read-only bytes-like object */
+ /* "s#" or "z#" */
+ const void **p = (const void **)va_arg(*p_va, const char **);
+ REQUIRE_PY_SSIZE_T_CLEAN;
+ Py_ssize_t *psize = va_arg(*p_va, Py_ssize_t*);
+
+ if (c == 'z' && arg == Py_None) {
+ *p = NULL;
+ *psize = 0;
+ }
+ else if (PyUnicode_Check(arg)) {
+ Py_ssize_t len;
+ sarg = PyUnicode_AsUTF8AndSize(arg, &len);
+ if (sarg == NULL)
+ return converterr(CONV_UNICODE,
+ arg, msgbuf, bufsize);
+ *p = sarg;
+ *psize = len;
+ }
+ else { /* read-only bytes-like object */
+ /* XXX Really? */
+ const char *buf;
+ Py_ssize_t count = convertbuffer(arg, p, &buf);
+ if (count < 0)
+ return converterr(buf, arg, msgbuf, bufsize);
+ *psize = count;
+ }
+ format++;
+ } else {
+ /* "s" or "z" */
+ const char **p = va_arg(*p_va, const char **);
+ Py_ssize_t len;
+ sarg = NULL;
+
+ if (c == 'z' && arg == Py_None)
+ *p = NULL;
+ else if (PyUnicode_Check(arg)) {
+ sarg = PyUnicode_AsUTF8AndSize(arg, &len);
+ if (sarg == NULL)
+ return converterr(CONV_UNICODE,
+ arg, msgbuf, bufsize);
+ if (strlen(sarg) != (size_t)len) {
+ PyErr_SetString(PyExc_ValueError, "embedded null character");
+ RETURN_ERR_OCCURRED;
+ }
+ *p = sarg;
+ }
+ else
+ return converterr(c == 'z' ? "str or None" : "str",
+ arg, msgbuf, bufsize);
+ }
+ break;
+ }
+
+ case 'e': {/* encoded string */
+ char **buffer;
+ const char *encoding;
+ PyObject *s;
+ int recode_strings;
+ Py_ssize_t size;
+ const char *ptr;
+
+ /* Get 'e' parameter: the encoding name */
+ encoding = (const char *)va_arg(*p_va, const char *);
+ if (encoding == NULL)
+ encoding = PyUnicode_GetDefaultEncoding();
+
+ /* Get output buffer parameter:
+ 's' (recode all objects via Unicode) or
+ 't' (only recode non-string objects)
+ */
+ if (*format == 's')
+ recode_strings = 1;
+ else if (*format == 't')
+ recode_strings = 0;
+ else
+ return converterr(
+ "(unknown parser marker combination)",
+ arg, msgbuf, bufsize);
+ buffer = (char **)va_arg(*p_va, char **);
+ format++;
+ if (buffer == NULL)
+ return converterr("(buffer is NULL)",
+ arg, msgbuf, bufsize);
+
+ /* Encode object */
+ if (!recode_strings &&
+ (PyBytes_Check(arg) || PyByteArray_Check(arg))) {
+ s = Py_NewRef(arg);
+ if (PyBytes_Check(arg)) {
+ size = PyBytes_GET_SIZE(s);
+ ptr = PyBytes_AS_STRING(s);
+ }
+ else {
+ size = PyByteArray_GET_SIZE(s);
+ ptr = PyByteArray_AS_STRING(s);
+ }
+ }
+ else if (PyUnicode_Check(arg)) {
+ /* Encode object; use default error handling */
+ s = PyUnicode_AsEncodedString(arg,
+ encoding,
+ NULL);
+ if (s == NULL)
+ return converterr("(encoding failed)",
+ arg, msgbuf, bufsize);
+ assert(PyBytes_Check(s));
+ size = PyBytes_GET_SIZE(s);
+ ptr = PyBytes_AS_STRING(s);
+ if (ptr == NULL)
+ ptr = "";
+ }
+ else {
+ return converterr(
+ recode_strings ? "str" : "str, bytes or bytearray",
+ arg, msgbuf, bufsize);
+ }
+
+ /* Write output; output is guaranteed to be 0-terminated */
+ if (*format == '#') {
+ /* Using buffer length parameter '#':
+
+ - if *buffer is NULL, a new buffer of the
+ needed size is allocated and the data
+ copied into it; *buffer is updated to point
+ to the new buffer; the caller is
+ responsible for PyMem_Free()ing it after
+ usage
+
+ - if *buffer is not NULL, the data is
+ copied to *buffer; *buffer_len has to be
+ set to the size of the buffer on input;
+ buffer overflow is signalled with an error;
+ buffer has to provide enough room for the
+ encoded string plus the trailing 0-byte
+
+ - in both cases, *buffer_len is updated to
+ the size of the buffer /excluding/ the
+ trailing 0-byte
+
+ */
+ REQUIRE_PY_SSIZE_T_CLEAN;
+ Py_ssize_t *psize = va_arg(*p_va, Py_ssize_t*);
+
+ format++;
+ if (psize == NULL) {
+ Py_DECREF(s);
+ return converterr(
+ "(buffer_len is NULL)",
+ arg, msgbuf, bufsize);
+ }
+ if (*buffer == NULL) {
+ *buffer = PyMem_NEW(char, size + 1);
+ if (*buffer == NULL) {
+ Py_DECREF(s);
+ PyErr_NoMemory();
+ RETURN_ERR_OCCURRED;
+ }
+ if (addcleanup(buffer, freelist, cleanup_ptr)) {
+ Py_DECREF(s);
+ return converterr(
+ "(cleanup problem)",
+ arg, msgbuf, bufsize);
+ }
+ } else {
+ if (size + 1 > *psize) {
+ Py_DECREF(s);
+ PyErr_Format(PyExc_ValueError,
+ "encoded string too long "
+ "(%zd, maximum length %zd)",
+ (Py_ssize_t)size, (Py_ssize_t)(*psize - 1));
+ RETURN_ERR_OCCURRED;
+ }
+ }
+ memcpy(*buffer, ptr, size+1);
+
+ *psize = size;
+ }
+ else {
+ /* Using a 0-terminated buffer:
+
+ - the encoded string has to be 0-terminated
+ for this variant to work; if it is not, an
+ error raised
+
+ - a new buffer of the needed size is
+ allocated and the data copied into it;
+ *buffer is updated to point to the new
+ buffer; the caller is responsible for
+ PyMem_Free()ing it after usage
+
+ */
+ if ((Py_ssize_t)strlen(ptr) != size) {
+ Py_DECREF(s);
+ return converterr(
+ "encoded string without null bytes",
+ arg, msgbuf, bufsize);
+ }
+ *buffer = PyMem_NEW(char, size + 1);
+ if (*buffer == NULL) {
+ Py_DECREF(s);
+ PyErr_NoMemory();
+ RETURN_ERR_OCCURRED;
+ }
+ if (addcleanup(buffer, freelist, cleanup_ptr)) {
+ Py_DECREF(s);
+ return converterr("(cleanup problem)",
+ arg, msgbuf, bufsize);
+ }
+ memcpy(*buffer, ptr, size+1);
+ }
+ Py_DECREF(s);
+ break;
+ }
+
+ case 'S': { /* PyBytes object */
+ PyObject **p = va_arg(*p_va, PyObject **);
+ if (PyBytes_Check(arg))
+ *p = arg;
+ else
+ return converterr("bytes", arg, msgbuf, bufsize);
+ break;
+ }
+
+ case 'Y': { /* PyByteArray object */
+ PyObject **p = va_arg(*p_va, PyObject **);
+ if (PyByteArray_Check(arg))
+ *p = arg;
+ else
+ return converterr("bytearray", arg, msgbuf, bufsize);
+ break;
+ }
+
+ case 'U': { /* PyUnicode object */
+ PyObject **p = va_arg(*p_va, PyObject **);
+ if (PyUnicode_Check(arg)) {
+ if (PyUnicode_READY(arg) == -1)
+ RETURN_ERR_OCCURRED;
+ *p = arg;
+ }
+ else
+ return converterr("str", arg, msgbuf, bufsize);
+ break;
+ }
+
+ case 'O': { /* object */
+ PyTypeObject *type;
+ PyObject **p;
+ if (*format == '!') {
+ type = va_arg(*p_va, PyTypeObject*);
+ p = va_arg(*p_va, PyObject **);
+ format++;
+ if (PyType_IsSubtype(Py_TYPE(arg), type))
+ *p = arg;
+ else
+ return converterr(type->tp_name, arg, msgbuf, bufsize);
+
+ }
+ else if (*format == '&') {
+ typedef int (*converter)(PyObject *, void *);
+ converter convert = va_arg(*p_va, converter);
+ void *addr = va_arg(*p_va, void *);
+ int res;
+ format++;
+ if (! (res = (*convert)(arg, addr)))
+ return converterr("(unspecified)",
+ arg, msgbuf, bufsize);
+ if (res == Py_CLEANUP_SUPPORTED &&
+ addcleanup(addr, freelist, convert) == -1)
+ return converterr("(cleanup problem)",
+ arg, msgbuf, bufsize);
+ }
+ else {
+ p = va_arg(*p_va, PyObject **);
+ *p = arg;
+ }
+ break;
+ }
+
+
+ case 'w': { /* "w*": memory buffer, read-write access */
+ void **p = va_arg(*p_va, void **);
+
+ if (*format != '*')
+ return converterr(
+ "(invalid use of 'w' format character)",
+ arg, msgbuf, bufsize);
+ format++;
+
+ /* Caller is interested in Py_buffer, and the object
+ supports it directly. */
+ if (PyObject_GetBuffer(arg, (Py_buffer*)p, PyBUF_WRITABLE) < 0) {
+ PyErr_Clear();
+ return converterr("read-write bytes-like object",
+ arg, msgbuf, bufsize);
+ }
+ if (!PyBuffer_IsContiguous((Py_buffer*)p, 'C')) {
+ PyBuffer_Release((Py_buffer*)p);
+ return converterr("contiguous buffer", arg, msgbuf, bufsize);
+ }
+ if (addcleanup(p, freelist, cleanup_buffer)) {
+ return converterr(
+ "(cleanup problem)",
+ arg, msgbuf, bufsize);
+ }
+ break;
+ }
+
+ default:
+ return converterr("(impossible<bad format char>)", arg, msgbuf, bufsize);
+
+ }
+
+ *p_format = format;
+ return NULL;
+
+#undef REQUIRE_PY_SSIZE_T_CLEAN
+#undef RETURN_ERR_OCCURRED
+}
+
+static Py_ssize_t
+convertbuffer(PyObject *arg, const void **p, const char **errmsg)
+{
+ PyBufferProcs *pb = Py_TYPE(arg)->tp_as_buffer;
+ Py_ssize_t count;
+ Py_buffer view;
+
+ *errmsg = NULL;
+ *p = NULL;
+ if (pb != NULL && pb->bf_releasebuffer != NULL) {
+ *errmsg = "read-only bytes-like object";
+ return -1;
+ }
+
+ if (getbuffer(arg, &view, errmsg) < 0)
+ return -1;
+ count = view.len;
+ *p = view.buf;
+ PyBuffer_Release(&view);
+ return count;
+}
+
+static int
+getbuffer(PyObject *arg, Py_buffer *view, const char **errmsg)
+{
+ if (PyObject_GetBuffer(arg, view, PyBUF_SIMPLE) != 0) {
+ *errmsg = "bytes-like object";
+ return -1;
+ }
+ if (!PyBuffer_IsContiguous(view, 'C')) {
+ PyBuffer_Release(view);
+ *errmsg = "contiguous buffer";
+ return -1;
+ }
+ return 0;
+}
+
+/* Support for keyword arguments donated by
+ Geoff Philbrick <philbric@delphi.hks.com> */
+
+/* Return false (0) for error, else true. */
+int
+PyArg_ParseTupleAndKeywords(PyObject *args,
+ PyObject *keywords,
+ const char *format,
+ char **kwlist, ...)
+{
+ int retval;
+ va_list va;
+
+ if ((args == NULL || !PyTuple_Check(args)) ||
+ (keywords != NULL && !PyDict_Check(keywords)) ||
+ format == NULL ||
+ kwlist == NULL)
+ {
+ PyErr_BadInternalCall();
+ return 0;
+ }
+
+ va_start(va, kwlist);
+ retval = vgetargskeywords(args, keywords, format, kwlist, &va, 0);
+ va_end(va);
+ return retval;
+}
+
+PyAPI_FUNC(int)
+_PyArg_ParseTupleAndKeywords_SizeT(PyObject *args,
+ PyObject *keywords,
+ const char *format,
+ char **kwlist, ...)
+{
+ int retval;
+ va_list va;
+
+ if ((args == NULL || !PyTuple_Check(args)) ||
+ (keywords != NULL && !PyDict_Check(keywords)) ||
+ format == NULL ||
+ kwlist == NULL)
+ {
+ PyErr_BadInternalCall();
+ return 0;
+ }
+
+ va_start(va, kwlist);
+ retval = vgetargskeywords(args, keywords, format,
+ kwlist, &va, FLAG_SIZE_T);
+ va_end(va);
+ return retval;
+}
+
+
+int
+PyArg_VaParseTupleAndKeywords(PyObject *args,
+ PyObject *keywords,
+ const char *format,
+ char **kwlist, va_list va)
+{
+ int retval;
+ va_list lva;
+
+ if ((args == NULL || !PyTuple_Check(args)) ||
+ (keywords != NULL && !PyDict_Check(keywords)) ||
+ format == NULL ||
+ kwlist == NULL)
+ {
+ PyErr_BadInternalCall();
+ return 0;
+ }
+
+ va_copy(lva, va);
+
+ retval = vgetargskeywords(args, keywords, format, kwlist, &lva, 0);
+ va_end(lva);
+ return retval;
+}
+
+PyAPI_FUNC(int)
+_PyArg_VaParseTupleAndKeywords_SizeT(PyObject *args,
+ PyObject *keywords,
+ const char *format,
+ char **kwlist, va_list va)
+{
+ int retval;
+ va_list lva;
+
+ if ((args == NULL || !PyTuple_Check(args)) ||
+ (keywords != NULL && !PyDict_Check(keywords)) ||
+ format == NULL ||
+ kwlist == NULL)
+ {
+ PyErr_BadInternalCall();
+ return 0;
+ }
+
+ va_copy(lva, va);
+
+ retval = vgetargskeywords(args, keywords, format,
+ kwlist, &lva, FLAG_SIZE_T);
+ va_end(lva);
+ return retval;
+}
+
+PyAPI_FUNC(int)
+_PyArg_ParseTupleAndKeywordsFast(PyObject *args, PyObject *keywords,
+ struct _PyArg_Parser *parser, ...)
+{
+ int retval;
+ va_list va;
+
+ va_start(va, parser);
+ retval = vgetargskeywordsfast(args, keywords, parser, &va, 0);
+ va_end(va);
+ return retval;
+}
+
+PyAPI_FUNC(int)
+_PyArg_ParseTupleAndKeywordsFast_SizeT(PyObject *args, PyObject *keywords,
+ struct _PyArg_Parser *parser, ...)
+{
+ int retval;
+ va_list va;
+
+ va_start(va, parser);
+ retval = vgetargskeywordsfast(args, keywords, parser, &va, FLAG_SIZE_T);
+ va_end(va);
+ return retval;
+}
+
+PyAPI_FUNC(int)
+_PyArg_ParseStackAndKeywords(PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames,
+ struct _PyArg_Parser *parser, ...)
+{
+ int retval;
+ va_list va;
+
+ va_start(va, parser);
+ retval = vgetargskeywordsfast_impl(args, nargs, NULL, kwnames, parser, &va, 0);
+ va_end(va);
+ return retval;
+}
+
+PyAPI_FUNC(int)
+_PyArg_ParseStackAndKeywords_SizeT(PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames,
+ struct _PyArg_Parser *parser, ...)
+{
+ int retval;
+ va_list va;
+
+ va_start(va, parser);
+ retval = vgetargskeywordsfast_impl(args, nargs, NULL, kwnames, parser, &va, FLAG_SIZE_T);
+ va_end(va);
+ return retval;
+}
+
+
+PyAPI_FUNC(int)
+_PyArg_VaParseTupleAndKeywordsFast(PyObject *args, PyObject *keywords,
+ struct _PyArg_Parser *parser, va_list va)
+{
+ int retval;
+ va_list lva;
+
+ va_copy(lva, va);
+
+ retval = vgetargskeywordsfast(args, keywords, parser, &lva, 0);
+ va_end(lva);
+ return retval;
+}
+
+PyAPI_FUNC(int)
+_PyArg_VaParseTupleAndKeywordsFast_SizeT(PyObject *args, PyObject *keywords,
+ struct _PyArg_Parser *parser, va_list va)
+{
+ int retval;
+ va_list lva;
+
+ va_copy(lva, va);
+
+ retval = vgetargskeywordsfast(args, keywords, parser, &lva, FLAG_SIZE_T);
+ va_end(lva);
+ return retval;
+}
+
+static void
+error_unexpected_keyword_arg(PyObject *kwargs, PyObject *kwnames, PyObject *kwtuple, const char *fname)
+{
+ /* make sure there are no extraneous keyword arguments */
+ Py_ssize_t j = 0;
+ while (1) {
+ PyObject *keyword;
+ if (kwargs != NULL) {
+ if (!PyDict_Next(kwargs, &j, &keyword, NULL))
+ break;
+ }
+ else {
+ if (j >= PyTuple_GET_SIZE(kwnames))
+ break;
+ keyword = PyTuple_GET_ITEM(kwnames, j);
+ j++;
+ }
+ if (!PyUnicode_Check(keyword)) {
+ PyErr_SetString(PyExc_TypeError,
+ "keywords must be strings");
+ return;
+ }
+
+ int match = PySequence_Contains(kwtuple, keyword);
+ if (match <= 0) {
+ if (!match) {
+ PyErr_Format(PyExc_TypeError,
+ "'%S' is an invalid keyword "
+ "argument for %.200s%s",
+ keyword,
+ (fname == NULL) ? "this function" : fname,
+ (fname == NULL) ? "" : "()");
+ }
+ return;
+ }
+ }
+ /* Something wrong happened. There are extraneous keyword arguments,
+ * but we don't know what. And we don't bother. */
+ PyErr_Format(PyExc_TypeError,
+ "invalid keyword argument for %.200s%s",
+ (fname == NULL) ? "this function" : fname,
+ (fname == NULL) ? "" : "()");
+}
+
+int
+PyArg_ValidateKeywordArguments(PyObject *kwargs)
+{
+ if (!PyDict_Check(kwargs)) {
+ PyErr_BadInternalCall();
+ return 0;
+ }
+ if (!_PyDict_HasOnlyStringKeys(kwargs)) {
+ PyErr_SetString(PyExc_TypeError,
+ "keywords must be strings");
+ return 0;
+ }
+ return 1;
+}
+
+#define IS_END_OF_FORMAT(c) (c == '\0' || c == ';' || c == ':')
+
+static int
+vgetargskeywords(PyObject *args, PyObject *kwargs, const char *format,
+ char **kwlist, va_list *p_va, int flags)
+{
+ char msgbuf[512];
+ int levels[32];
+ const char *fname, *msg, *custom_msg;
+ int min = INT_MAX;
+ int max = INT_MAX;
+ int i, pos, len;
+ int skip = 0;
+ Py_ssize_t nargs, nkwargs;
+ PyObject *current_arg;
+ freelistentry_t static_entries[STATIC_FREELIST_ENTRIES];
+ freelist_t freelist;
+
+ freelist.entries = static_entries;
+ freelist.first_available = 0;
+ freelist.entries_malloced = 0;
+
+ assert(args != NULL && PyTuple_Check(args));
+ assert(kwargs == NULL || PyDict_Check(kwargs));
+ assert(format != NULL);
+ assert(kwlist != NULL);
+ assert(p_va != NULL);
+
+ /* grab the function name or custom error msg first (mutually exclusive) */
+ fname = strchr(format, ':');
+ if (fname) {
+ fname++;
+ custom_msg = NULL;
+ }
+ else {
+ custom_msg = strchr(format,';');
+ if (custom_msg)
+ custom_msg++;
+ }
+
+ /* scan kwlist and count the number of positional-only parameters */
+ for (pos = 0; kwlist[pos] && !*kwlist[pos]; pos++) {
+ }
+ /* scan kwlist and get greatest possible nbr of args */
+ for (len = pos; kwlist[len]; len++) {
+ if (!*kwlist[len]) {
+ PyErr_SetString(PyExc_SystemError,
+ "Empty keyword parameter name");
+ return cleanreturn(0, &freelist);
+ }
+ }
+
+ if (len > STATIC_FREELIST_ENTRIES) {
+ freelist.entries = PyMem_NEW(freelistentry_t, len);
+ if (freelist.entries == NULL) {
+ PyErr_NoMemory();
+ return 0;
+ }
+ freelist.entries_malloced = 1;
+ }
+
+ nargs = PyTuple_GET_SIZE(args);
+ nkwargs = (kwargs == NULL) ? 0 : PyDict_GET_SIZE(kwargs);
+ if (nargs + nkwargs > len) {
+ /* Adding "keyword" (when nargs == 0) prevents producing wrong error
+ messages in some special cases (see bpo-31229). */
+ PyErr_Format(PyExc_TypeError,
+ "%.200s%s takes at most %d %sargument%s (%zd given)",
+ (fname == NULL) ? "function" : fname,
+ (fname == NULL) ? "" : "()",
+ len,
+ (nargs == 0) ? "keyword " : "",
+ (len == 1) ? "" : "s",
+ nargs + nkwargs);
+ return cleanreturn(0, &freelist);
+ }
+
+ /* convert tuple args and keyword args in same loop, using kwlist to drive process */
+ for (i = 0; i < len; i++) {
+ if (*format == '|') {
+ if (min != INT_MAX) {
+ PyErr_SetString(PyExc_SystemError,
+ "Invalid format string (| specified twice)");
+ return cleanreturn(0, &freelist);
+ }
+
+ min = i;
+ format++;
+
+ if (max != INT_MAX) {
+ PyErr_SetString(PyExc_SystemError,
+ "Invalid format string ($ before |)");
+ return cleanreturn(0, &freelist);
+ }
+ }
+ if (*format == '$') {
+ if (max != INT_MAX) {
+ PyErr_SetString(PyExc_SystemError,
+ "Invalid format string ($ specified twice)");
+ return cleanreturn(0, &freelist);
+ }
+
+ max = i;
+ format++;
+
+ if (max < pos) {
+ PyErr_SetString(PyExc_SystemError,
+ "Empty parameter name after $");
+ return cleanreturn(0, &freelist);
+ }
+ if (skip) {
+ /* Now we know the minimal and the maximal numbers of
+ * positional arguments and can raise an exception with
+ * informative message (see below). */
+ break;
+ }
+ if (max < nargs) {
+ if (max == 0) {
+ PyErr_Format(PyExc_TypeError,
+ "%.200s%s takes no positional arguments",
+ (fname == NULL) ? "function" : fname,
+ (fname == NULL) ? "" : "()");
+ }
+ else {
+ PyErr_Format(PyExc_TypeError,
+ "%.200s%s takes %s %d positional argument%s"
+ " (%zd given)",
+ (fname == NULL) ? "function" : fname,
+ (fname == NULL) ? "" : "()",
+ (min != INT_MAX) ? "at most" : "exactly",
+ max,
+ max == 1 ? "" : "s",
+ nargs);
+ }
+ return cleanreturn(0, &freelist);
+ }
+ }
+ if (IS_END_OF_FORMAT(*format)) {
+ PyErr_Format(PyExc_SystemError,
+ "More keyword list entries (%d) than "
+ "format specifiers (%d)", len, i);
+ return cleanreturn(0, &freelist);
+ }
+ if (!skip) {
+ if (i < nargs) {
+ current_arg = PyTuple_GET_ITEM(args, i);
+ }
+ else if (nkwargs && i >= pos) {
+ current_arg = _PyDict_GetItemStringWithError(kwargs, kwlist[i]);
+ if (current_arg) {
+ --nkwargs;
+ }
+ else if (PyErr_Occurred()) {
+ return cleanreturn(0, &freelist);
+ }
+ }
+ else {
+ current_arg = NULL;
+ }
+
+ if (current_arg) {
+ msg = convertitem(current_arg, &format, p_va, flags,
+ levels, msgbuf, sizeof(msgbuf), &freelist);
+ if (msg) {
+ seterror(i+1, msg, levels, fname, custom_msg);
+ return cleanreturn(0, &freelist);
+ }
+ continue;
+ }
+
+ if (i < min) {
+ if (i < pos) {
+ assert (min == INT_MAX);
+ assert (max == INT_MAX);
+ skip = 1;
+ /* At that moment we still don't know the minimal and
+ * the maximal numbers of positional arguments. Raising
+ * an exception is deferred until we encounter | and $
+ * or the end of the format. */
+ }
+ else {
+ PyErr_Format(PyExc_TypeError, "%.200s%s missing required "
+ "argument '%s' (pos %d)",
+ (fname == NULL) ? "function" : fname,
+ (fname == NULL) ? "" : "()",
+ kwlist[i], i+1);
+ return cleanreturn(0, &freelist);
+ }
+ }
+ /* current code reports success when all required args
+ * fulfilled and no keyword args left, with no further
+ * validation. XXX Maybe skip this in debug build ?
+ */
+ if (!nkwargs && !skip) {
+ return cleanreturn(1, &freelist);
+ }
+ }
+
+ /* We are into optional args, skip through to any remaining
+ * keyword args */
+ msg = skipitem(&format, p_va, flags);
+ if (msg) {
+ PyErr_Format(PyExc_SystemError, "%s: '%s'", msg,
+ format);
+ return cleanreturn(0, &freelist);
+ }
+ }
+
+ if (skip) {
+ PyErr_Format(PyExc_TypeError,
+ "%.200s%s takes %s %d positional argument%s"
+ " (%zd given)",
+ (fname == NULL) ? "function" : fname,
+ (fname == NULL) ? "" : "()",
+ (Py_MIN(pos, min) < i) ? "at least" : "exactly",
+ Py_MIN(pos, min),
+ Py_MIN(pos, min) == 1 ? "" : "s",
+ nargs);
+ return cleanreturn(0, &freelist);
+ }
+
+ if (!IS_END_OF_FORMAT(*format) && (*format != '|') && (*format != '$')) {
+ PyErr_Format(PyExc_SystemError,
+ "more argument specifiers than keyword list entries "
+ "(remaining format:'%s')", format);
+ return cleanreturn(0, &freelist);
+ }
+
+ if (nkwargs > 0) {
+ PyObject *key;
+ Py_ssize_t j;
+ /* make sure there are no arguments given by name and position */
+ for (i = pos; i < nargs; i++) {
+ current_arg = _PyDict_GetItemStringWithError(kwargs, kwlist[i]);
+ if (current_arg) {
+ /* arg present in tuple and in dict */
+ PyErr_Format(PyExc_TypeError,
+ "argument for %.200s%s given by name ('%s') "
+ "and position (%d)",
+ (fname == NULL) ? "function" : fname,
+ (fname == NULL) ? "" : "()",
+ kwlist[i], i+1);
+ return cleanreturn(0, &freelist);
+ }
+ else if (PyErr_Occurred()) {
+ return cleanreturn(0, &freelist);
+ }
+ }
+ /* make sure there are no extraneous keyword arguments */
+ j = 0;
+ while (PyDict_Next(kwargs, &j, &key, NULL)) {
+ int match = 0;
+ if (!PyUnicode_Check(key)) {
+ PyErr_SetString(PyExc_TypeError,
+ "keywords must be strings");
+ return cleanreturn(0, &freelist);
+ }
+ for (i = pos; i < len; i++) {
+ if (_PyUnicode_EqualToASCIIString(key, kwlist[i])) {
+ match = 1;
+ break;
+ }
+ }
+ if (!match) {
+ PyErr_Format(PyExc_TypeError,
+ "'%U' is an invalid keyword "
+ "argument for %.200s%s",
+ key,
+ (fname == NULL) ? "this function" : fname,
+ (fname == NULL) ? "" : "()");
+ return cleanreturn(0, &freelist);
+ }
+ }
+ /* Something wrong happened. There are extraneous keyword arguments,
+ * but we don't know what. And we don't bother. */
+ PyErr_Format(PyExc_TypeError,
+ "invalid keyword argument for %.200s%s",
+ (fname == NULL) ? "this function" : fname,
+ (fname == NULL) ? "" : "()");
+ return cleanreturn(0, &freelist);
+ }
+
+ return cleanreturn(1, &freelist);
+}
+
+
+static int
+scan_keywords(const char * const *keywords, int *ptotal, int *pposonly)
+{
+ /* scan keywords and count the number of positional-only parameters */
+ int i;
+ for (i = 0; keywords[i] && !*keywords[i]; i++) {
+ }
+ *pposonly = i;
+
+ /* scan keywords and get greatest possible nbr of args */
+ for (; keywords[i]; i++) {
+ if (!*keywords[i]) {
+ PyErr_SetString(PyExc_SystemError,
+ "Empty keyword parameter name");
+ return -1;
+ }
+ }
+ *ptotal = i;
+ return 0;
+}
+
+static int
+parse_format(const char *format, int total, int npos,
+ const char **pfname, const char **pcustommsg,
+ int *pmin, int *pmax)
+{
+ /* grab the function name or custom error msg first (mutually exclusive) */
+ const char *custommsg;
+ const char *fname = strchr(format, ':');
+ if (fname) {
+ fname++;
+ custommsg = NULL;
+ }
+ else {
+ custommsg = strchr(format,';');
+ if (custommsg) {
+ custommsg++;
+ }
+ }
+
+ int min = INT_MAX;
+ int max = INT_MAX;
+ for (int i = 0; i < total; i++) {
+ if (*format == '|') {
+ if (min != INT_MAX) {
+ PyErr_SetString(PyExc_SystemError,
+ "Invalid format string (| specified twice)");
+ return -1;
+ }
+ if (max != INT_MAX) {
+ PyErr_SetString(PyExc_SystemError,
+ "Invalid format string ($ before |)");
+ return -1;
+ }
+ min = i;
+ format++;
+ }
+ if (*format == '$') {
+ if (max != INT_MAX) {
+ PyErr_SetString(PyExc_SystemError,
+ "Invalid format string ($ specified twice)");
+ return -1;
+ }
+ if (i < npos) {
+ PyErr_SetString(PyExc_SystemError,
+ "Empty parameter name after $");
+ return -1;
+ }
+ max = i;
+ format++;
+ }
+ if (IS_END_OF_FORMAT(*format)) {
+ PyErr_Format(PyExc_SystemError,
+ "More keyword list entries (%d) than "
+ "format specifiers (%d)", total, i);
+ return -1;
+ }
+
+ const char *msg = skipitem(&format, NULL, 0);
+ if (msg) {
+ PyErr_Format(PyExc_SystemError, "%s: '%s'", msg,
+ format);
+ return -1;
+ }
+ }
+ min = Py_MIN(min, total);
+ max = Py_MIN(max, total);
+
+ if (!IS_END_OF_FORMAT(*format) && (*format != '|') && (*format != '$')) {
+ PyErr_Format(PyExc_SystemError,
+ "more argument specifiers than keyword list entries "
+ "(remaining format:'%s')", format);
+ return -1;
+ }
+
+ *pfname = fname;
+ *pcustommsg = custommsg;
+ *pmin = min;
+ *pmax = max;
+ return 0;
+}
+
+static PyObject *
+new_kwtuple(const char * const *keywords, int total, int pos)
+{
+ int nkw = total - pos;
+ PyObject *kwtuple = PyTuple_New(nkw);
+ if (kwtuple == NULL) {
+ return NULL;
+ }
+ keywords += pos;
+ for (int i = 0; i < nkw; i++) {
+ PyObject *str = PyUnicode_FromString(keywords[i]);
+ if (str == NULL) {
+ Py_DECREF(kwtuple);
+ return NULL;
+ }
+ PyUnicode_InternInPlace(&str);
+ PyTuple_SET_ITEM(kwtuple, i, str);
+ }
+ return kwtuple;
+}
+
+static int
+_parser_init(struct _PyArg_Parser *parser)
+{
+ const char * const *keywords = parser->keywords;
+ assert(keywords != NULL);
+ assert(parser->pos == 0 &&
+ (parser->format == NULL || parser->fname == NULL) &&
+ parser->custom_msg == NULL &&
+ parser->min == 0 &&
+ parser->max == 0);
+
+ int len, pos;
+ if (scan_keywords(keywords, &len, &pos) < 0) {
+ return 0;
+ }
+
+ const char *fname, *custommsg = NULL;
+ int min = 0, max = 0;
+ if (parser->format) {
+ assert(parser->fname == NULL);
+ if (parse_format(parser->format, len, pos,
+ &fname, &custommsg, &min, &max) < 0) {
+ return 0;
+ }
+ }
+ else {
+ assert(parser->fname != NULL);
+ fname = parser->fname;
+ }
+
+ int owned;
+ PyObject *kwtuple = parser->kwtuple;
+ if (kwtuple == NULL) {
+ kwtuple = new_kwtuple(keywords, len, pos);
+ if (kwtuple == NULL) {
+ return 0;
+ }
+ owned = 1;
+ }
+ else {
+ owned = 0;
+ }
+
+ parser->pos = pos;
+ parser->fname = fname;
+ parser->custom_msg = custommsg;
+ parser->min = min;
+ parser->max = max;
+ parser->kwtuple = kwtuple;
+ parser->initialized = owned ? 1 : -1;
+
+ assert(parser->next == NULL);
+ parser->next = _PyRuntime.getargs.static_parsers;
+ _PyRuntime.getargs.static_parsers = parser;
+ return 1;
+}
+
+static int
+parser_init(struct _PyArg_Parser *parser)
+{
+ // volatile as it can be modified by other threads
+ // and should not be optimized or reordered by compiler
+ if (*((volatile int *)&parser->initialized)) {
+ assert(parser->kwtuple != NULL);
+ return 1;
+ }
+ PyThread_acquire_lock(_PyRuntime.getargs.mutex, WAIT_LOCK);
+ // Check again if another thread initialized the parser
+ // while we were waiting for the lock.
+ if (*((volatile int *)&parser->initialized)) {
+ assert(parser->kwtuple != NULL);
+ PyThread_release_lock(_PyRuntime.getargs.mutex);
+ return 1;
+ }
+ int ret = _parser_init(parser);
+ PyThread_release_lock(_PyRuntime.getargs.mutex);
+ return ret;
+}
+
+static void
+parser_clear(struct _PyArg_Parser *parser)
+{
+ if (parser->initialized == 1) {
+ Py_CLEAR(parser->kwtuple);
+ }
+}
+
+static PyObject*
+find_keyword(PyObject *kwnames, PyObject *const *kwstack, PyObject *key)
+{
+ Py_ssize_t i, nkwargs;
+
+ nkwargs = PyTuple_GET_SIZE(kwnames);
+ for (i = 0; i < nkwargs; i++) {
+ PyObject *kwname = PyTuple_GET_ITEM(kwnames, i);
+
+ /* kwname == key will normally find a match in since keyword keys
+ should be interned strings; if not retry below in a new loop. */
+ if (kwname == key) {
+ return kwstack[i];
+ }
+ }
+
+ for (i = 0; i < nkwargs; i++) {
+ PyObject *kwname = PyTuple_GET_ITEM(kwnames, i);
+ assert(PyUnicode_Check(kwname));
+ if (_PyUnicode_EQ(kwname, key)) {
+ return kwstack[i];
+ }
+ }
+ return NULL;
+}
+
+static int
+vgetargskeywordsfast_impl(PyObject *const *args, Py_ssize_t nargs,
+ PyObject *kwargs, PyObject *kwnames,
+ struct _PyArg_Parser *parser,
+ va_list *p_va, int flags)
+{
+ PyObject *kwtuple;
+ char msgbuf[512];
+ int levels[32];
+ const char *format;
+ const char *msg;
+ PyObject *keyword;
+ int i, pos, len;
+ Py_ssize_t nkwargs;
+ PyObject *current_arg;
+ freelistentry_t static_entries[STATIC_FREELIST_ENTRIES];
+ freelist_t freelist;
+ PyObject *const *kwstack = NULL;
+
+ freelist.entries = static_entries;
+ freelist.first_available = 0;
+ freelist.entries_malloced = 0;
+
+ assert(kwargs == NULL || PyDict_Check(kwargs));
+ assert(kwargs == NULL || kwnames == NULL);
+ assert(p_va != NULL);
+
+ if (parser == NULL) {
+ PyErr_BadInternalCall();
+ return 0;
+ }
+
+ if (kwnames != NULL && !PyTuple_Check(kwnames)) {
+ PyErr_BadInternalCall();
+ return 0;
+ }
+
+ if (!parser_init(parser)) {
+ return 0;
+ }
+
+ kwtuple = parser->kwtuple;
+ pos = parser->pos;
+ len = pos + (int)PyTuple_GET_SIZE(kwtuple);
+
+ if (len > STATIC_FREELIST_ENTRIES) {
+ freelist.entries = PyMem_NEW(freelistentry_t, len);
+ if (freelist.entries == NULL) {
+ PyErr_NoMemory();
+ return 0;
+ }
+ freelist.entries_malloced = 1;
+ }
+
+ if (kwargs != NULL) {
+ nkwargs = PyDict_GET_SIZE(kwargs);
+ }
+ else if (kwnames != NULL) {
+ nkwargs = PyTuple_GET_SIZE(kwnames);
+ kwstack = args + nargs;
+ }
+ else {
+ nkwargs = 0;
+ }
+ if (nargs + nkwargs > len) {
+ /* Adding "keyword" (when nargs == 0) prevents producing wrong error
+ messages in some special cases (see bpo-31229). */
+ PyErr_Format(PyExc_TypeError,
+ "%.200s%s takes at most %d %sargument%s (%zd given)",
+ (parser->fname == NULL) ? "function" : parser->fname,
+ (parser->fname == NULL) ? "" : "()",
+ len,
+ (nargs == 0) ? "keyword " : "",
+ (len == 1) ? "" : "s",
+ nargs + nkwargs);
+ return cleanreturn(0, &freelist);
+ }
+ if (parser->max < nargs) {
+ if (parser->max == 0) {
+ PyErr_Format(PyExc_TypeError,
+ "%.200s%s takes no positional arguments",
+ (parser->fname == NULL) ? "function" : parser->fname,
+ (parser->fname == NULL) ? "" : "()");
+ }
+ else {
+ PyErr_Format(PyExc_TypeError,
+ "%.200s%s takes %s %d positional argument%s (%zd given)",
+ (parser->fname == NULL) ? "function" : parser->fname,
+ (parser->fname == NULL) ? "" : "()",
+ (parser->min < parser->max) ? "at most" : "exactly",
+ parser->max,
+ parser->max == 1 ? "" : "s",
+ nargs);
+ }
+ return cleanreturn(0, &freelist);
+ }
+
+ format = parser->format;
+ assert(format != NULL || len == 0);
+ /* convert tuple args and keyword args in same loop, using kwtuple to drive process */
+ for (i = 0; i < len; i++) {
+ if (*format == '|') {
+ format++;
+ }
+ if (*format == '$') {
+ format++;
+ }
+ assert(!IS_END_OF_FORMAT(*format));
+
+ if (i < nargs) {
+ current_arg = args[i];
+ }
+ else if (nkwargs && i >= pos) {
+ keyword = PyTuple_GET_ITEM(kwtuple, i - pos);
+ if (kwargs != NULL) {
+ current_arg = PyDict_GetItemWithError(kwargs, keyword);
+ if (!current_arg && PyErr_Occurred()) {
+ return cleanreturn(0, &freelist);
+ }
+ }
+ else {
+ current_arg = find_keyword(kwnames, kwstack, keyword);
+ }
+ if (current_arg) {
+ --nkwargs;
+ }
+ }
+ else {
+ current_arg = NULL;
+ }
+
+ if (current_arg) {
+ msg = convertitem(current_arg, &format, p_va, flags,
+ levels, msgbuf, sizeof(msgbuf), &freelist);
+ if (msg) {
+ seterror(i+1, msg, levels, parser->fname, parser->custom_msg);
+ return cleanreturn(0, &freelist);
+ }
+ continue;
+ }
+
+ if (i < parser->min) {
+ /* Less arguments than required */
+ if (i < pos) {
+ Py_ssize_t min = Py_MIN(pos, parser->min);
+ PyErr_Format(PyExc_TypeError,
+ "%.200s%s takes %s %d positional argument%s"
+ " (%zd given)",
+ (parser->fname == NULL) ? "function" : parser->fname,
+ (parser->fname == NULL) ? "" : "()",
+ min < parser->max ? "at least" : "exactly",
+ min,
+ min == 1 ? "" : "s",
+ nargs);
+ }
+ else {
+ keyword = PyTuple_GET_ITEM(kwtuple, i - pos);
+ PyErr_Format(PyExc_TypeError, "%.200s%s missing required "
+ "argument '%U' (pos %d)",
+ (parser->fname == NULL) ? "function" : parser->fname,
+ (parser->fname == NULL) ? "" : "()",
+ keyword, i+1);
+ }
+ return cleanreturn(0, &freelist);
+ }
+ /* current code reports success when all required args
+ * fulfilled and no keyword args left, with no further
+ * validation. XXX Maybe skip this in debug build ?
+ */
+ if (!nkwargs) {
+ return cleanreturn(1, &freelist);
+ }
+
+ /* We are into optional args, skip through to any remaining
+ * keyword args */
+ msg = skipitem(&format, p_va, flags);
+ assert(msg == NULL);
+ }
+
+ assert(IS_END_OF_FORMAT(*format) || (*format == '|') || (*format == '$'));
+
+ if (nkwargs > 0) {
+ /* make sure there are no arguments given by name and position */
+ for (i = pos; i < nargs; i++) {
+ keyword = PyTuple_GET_ITEM(kwtuple, i - pos);
+ if (kwargs != NULL) {
+ current_arg = PyDict_GetItemWithError(kwargs, keyword);
+ if (!current_arg && PyErr_Occurred()) {
+ return cleanreturn(0, &freelist);
+ }
+ }
+ else {
+ current_arg = find_keyword(kwnames, kwstack, keyword);
+ }
+ if (current_arg) {
+ /* arg present in tuple and in dict */
+ PyErr_Format(PyExc_TypeError,
+ "argument for %.200s%s given by name ('%U') "
+ "and position (%d)",
+ (parser->fname == NULL) ? "function" : parser->fname,
+ (parser->fname == NULL) ? "" : "()",
+ keyword, i+1);
+ return cleanreturn(0, &freelist);
+ }
+ }
+
+ error_unexpected_keyword_arg(kwargs, kwnames, kwtuple, parser->fname);
+ return cleanreturn(0, &freelist);
+ }
+
+ return cleanreturn(1, &freelist);
+}
+
+static int
+vgetargskeywordsfast(PyObject *args, PyObject *keywords,
+ struct _PyArg_Parser *parser, va_list *p_va, int flags)
+{
+ PyObject **stack;
+ Py_ssize_t nargs;
+
+ if (args == NULL
+ || !PyTuple_Check(args)
+ || (keywords != NULL && !PyDict_Check(keywords)))
+ {
+ PyErr_BadInternalCall();
+ return 0;
+ }
+
+ stack = _PyTuple_ITEMS(args);
+ nargs = PyTuple_GET_SIZE(args);
+ return vgetargskeywordsfast_impl(stack, nargs, keywords, NULL,
+ parser, p_va, flags);
+}
+
+
+#undef _PyArg_UnpackKeywords
+
+PyObject * const *
+_PyArg_UnpackKeywords(PyObject *const *args, Py_ssize_t nargs,
+ PyObject *kwargs, PyObject *kwnames,
+ struct _PyArg_Parser *parser,
+ int minpos, int maxpos, int minkw,
+ PyObject **buf)
+{
+ PyObject *kwtuple;
+ PyObject *keyword;
+ int i, posonly, minposonly, maxargs;
+ int reqlimit = minkw ? maxpos + minkw : minpos;
+ Py_ssize_t nkwargs;
+ PyObject *current_arg;
+ PyObject * const *kwstack = NULL;
+
+ assert(kwargs == NULL || PyDict_Check(kwargs));
+ assert(kwargs == NULL || kwnames == NULL);
+
+ if (parser == NULL) {
+ PyErr_BadInternalCall();
+ return NULL;
+ }
+
+ if (kwnames != NULL && !PyTuple_Check(kwnames)) {
+ PyErr_BadInternalCall();
+ return NULL;
+ }
+
+ if (args == NULL && nargs == 0) {
+ args = buf;
+ }
+
+ if (!parser_init(parser)) {
+ return NULL;
+ }
+
+ kwtuple = parser->kwtuple;
+ posonly = parser->pos;
+ minposonly = Py_MIN(posonly, minpos);
+ maxargs = posonly + (int)PyTuple_GET_SIZE(kwtuple);
+
+ if (kwargs != NULL) {
+ nkwargs = PyDict_GET_SIZE(kwargs);
+ }
+ else if (kwnames != NULL) {
+ nkwargs = PyTuple_GET_SIZE(kwnames);
+ kwstack = args + nargs;
+ }
+ else {
+ nkwargs = 0;
+ }
+ if (nkwargs == 0 && minkw == 0 && minpos <= nargs && nargs <= maxpos) {
+ /* Fast path. */
+ return args;
+ }
+ if (nargs + nkwargs > maxargs) {
+ /* Adding "keyword" (when nargs == 0) prevents producing wrong error
+ messages in some special cases (see bpo-31229). */
+ PyErr_Format(PyExc_TypeError,
+ "%.200s%s takes at most %d %sargument%s (%zd given)",
+ (parser->fname == NULL) ? "function" : parser->fname,
+ (parser->fname == NULL) ? "" : "()",
+ maxargs,
+ (nargs == 0) ? "keyword " : "",
+ (maxargs == 1) ? "" : "s",
+ nargs + nkwargs);
+ return NULL;
+ }
+ if (nargs > maxpos) {
+ if (maxpos == 0) {
+ PyErr_Format(PyExc_TypeError,
+ "%.200s%s takes no positional arguments",
+ (parser->fname == NULL) ? "function" : parser->fname,
+ (parser->fname == NULL) ? "" : "()");
+ }
+ else {
+ PyErr_Format(PyExc_TypeError,
+ "%.200s%s takes %s %d positional argument%s (%zd given)",
+ (parser->fname == NULL) ? "function" : parser->fname,
+ (parser->fname == NULL) ? "" : "()",
+ (minpos < maxpos) ? "at most" : "exactly",
+ maxpos,
+ (maxpos == 1) ? "" : "s",
+ nargs);
+ }
+ return NULL;
+ }
+ if (nargs < minposonly) {
+ PyErr_Format(PyExc_TypeError,
+ "%.200s%s takes %s %d positional argument%s"
+ " (%zd given)",
+ (parser->fname == NULL) ? "function" : parser->fname,
+ (parser->fname == NULL) ? "" : "()",
+ minposonly < maxpos ? "at least" : "exactly",
+ minposonly,
+ minposonly == 1 ? "" : "s",
+ nargs);
+ return NULL;
+ }
+
+ /* copy tuple args */
+ for (i = 0; i < nargs; i++) {
+ buf[i] = args[i];
+ }
+
+ /* copy keyword args using kwtuple to drive process */
+ for (i = Py_MAX((int)nargs, posonly); i < maxargs; i++) {
+ if (nkwargs) {
+ keyword = PyTuple_GET_ITEM(kwtuple, i - posonly);
+ if (kwargs != NULL) {
+ current_arg = PyDict_GetItemWithError(kwargs, keyword);
+ if (!current_arg && PyErr_Occurred()) {
+ return NULL;
+ }
+ }
+ else {
+ current_arg = find_keyword(kwnames, kwstack, keyword);
+ }
+ }
+ else if (i >= reqlimit) {
+ break;
+ }
+ else {
+ current_arg = NULL;
+ }
+
+ buf[i] = current_arg;
+
+ if (current_arg) {
+ --nkwargs;
+ }
+ else if (i < minpos || (maxpos <= i && i < reqlimit)) {
+ /* Less arguments than required */
+ keyword = PyTuple_GET_ITEM(kwtuple, i - posonly);
+ PyErr_Format(PyExc_TypeError, "%.200s%s missing required "
+ "argument '%U' (pos %d)",
+ (parser->fname == NULL) ? "function" : parser->fname,
+ (parser->fname == NULL) ? "" : "()",
+ keyword, i+1);
+ return NULL;
+ }
+ }
+
+ if (nkwargs > 0) {
+ /* make sure there are no arguments given by name and position */
+ for (i = posonly; i < nargs; i++) {
+ keyword = PyTuple_GET_ITEM(kwtuple, i - posonly);
+ if (kwargs != NULL) {
+ current_arg = PyDict_GetItemWithError(kwargs, keyword);
+ if (!current_arg && PyErr_Occurred()) {
+ return NULL;
+ }
+ }
+ else {
+ current_arg = find_keyword(kwnames, kwstack, keyword);
+ }
+ if (current_arg) {
+ /* arg present in tuple and in dict */
+ PyErr_Format(PyExc_TypeError,
+ "argument for %.200s%s given by name ('%U') "
+ "and position (%d)",
+ (parser->fname == NULL) ? "function" : parser->fname,
+ (parser->fname == NULL) ? "" : "()",
+ keyword, i+1);
+ return NULL;
+ }
+ }
+
+ error_unexpected_keyword_arg(kwargs, kwnames, kwtuple, parser->fname);
+ return NULL;
+ }
+
+ return buf;
+}
+
+PyObject * const *
+_PyArg_UnpackKeywordsWithVararg(PyObject *const *args, Py_ssize_t nargs,
+ PyObject *kwargs, PyObject *kwnames,
+ struct _PyArg_Parser *parser,
+ int minpos, int maxpos, int minkw,
+ int vararg, PyObject **buf)
+{
+ PyObject *kwtuple;
+ PyObject *keyword;
+ Py_ssize_t varargssize = 0;
+ int i, posonly, minposonly, maxargs;
+ int reqlimit = minkw ? maxpos + minkw : minpos;
+ Py_ssize_t nkwargs;
+ PyObject *current_arg;
+ PyObject * const *kwstack = NULL;
+
+ assert(kwargs == NULL || PyDict_Check(kwargs));
+ assert(kwargs == NULL || kwnames == NULL);
+
+ if (parser == NULL) {
+ PyErr_BadInternalCall();
+ return NULL;
+ }
+
+ if (kwnames != NULL && !PyTuple_Check(kwnames)) {
+ PyErr_BadInternalCall();
+ return NULL;
+ }
+
+ if (args == NULL && nargs == 0) {
+ args = buf;
+ }
+
+ if (!parser_init(parser)) {
+ return NULL;
+ }
+
+ kwtuple = parser->kwtuple;
+ posonly = parser->pos;
+ minposonly = Py_MIN(posonly, minpos);
+ maxargs = posonly + (int)PyTuple_GET_SIZE(kwtuple);
+ if (kwargs != NULL) {
+ nkwargs = PyDict_GET_SIZE(kwargs);
+ }
+ else if (kwnames != NULL) {
+ nkwargs = PyTuple_GET_SIZE(kwnames);
+ kwstack = args + nargs;
+ }
+ else {
+ nkwargs = 0;
+ }
+ if (nargs < minposonly) {
+ PyErr_Format(PyExc_TypeError,
+ "%.200s%s takes %s %d positional argument%s"
+ " (%zd given)",
+ (parser->fname == NULL) ? "function" : parser->fname,
+ (parser->fname == NULL) ? "" : "()",
+ minposonly < maxpos ? "at least" : "exactly",
+ minposonly,
+ minposonly == 1 ? "" : "s",
+ nargs);
+ return NULL;
+ }
+
+ /* create varargs tuple */
+ varargssize = nargs - maxpos;
+ if (varargssize < 0) {
+ varargssize = 0;
+ }
+ buf[vararg] = PyTuple_New(varargssize);
+ if (!buf[vararg]) {
+ return NULL;
+ }
+
+ /* copy tuple args */
+ for (i = 0; i < nargs; i++) {
+ if (i >= vararg) {
+ PyTuple_SET_ITEM(buf[vararg], i - vararg, Py_NewRef(args[i]));
+ continue;
+ }
+ else {
+ buf[i] = args[i];
+ }
+ }
+
+ /* copy keyword args using kwtuple to drive process */
+ for (i = Py_MAX((int)nargs, posonly) -
+ Py_SAFE_DOWNCAST(varargssize, Py_ssize_t, int); i < maxargs; i++) {
+ if (nkwargs) {
+ keyword = PyTuple_GET_ITEM(kwtuple, i - posonly);
+ if (kwargs != NULL) {
+ current_arg = PyDict_GetItemWithError(kwargs, keyword);
+ if (!current_arg && PyErr_Occurred()) {
+ goto exit;
+ }
+ }
+ else {
+ current_arg = find_keyword(kwnames, kwstack, keyword);
+ }
+ }
+ else {
+ current_arg = NULL;
+ }
+
+ /* If an arguments is passed in as a keyword argument,
+ * it should be placed before `buf[vararg]`.
+ *
+ * For example:
+ * def f(a, /, b, *args):
+ * pass
+ * f(1, b=2)
+ *
+ * This `buf` array should be: [1, 2, NULL].
+ * In this case, nargs < vararg.
+ *
+ * Otherwise, we leave a place at `buf[vararg]` for vararg tuple
+ * so the index is `i + 1`. */
+ if (nargs < vararg) {
+ buf[i] = current_arg;
+ }
+ else {
+ buf[i + 1] = current_arg;
+ }
+
+ if (current_arg) {
+ --nkwargs;
+ }
+ else if (i < minpos || (maxpos <= i && i < reqlimit)) {
+ /* Less arguments than required */
+ keyword = PyTuple_GET_ITEM(kwtuple, i - posonly);
+ PyErr_Format(PyExc_TypeError, "%.200s%s missing required "
+ "argument '%U' (pos %d)",
+ (parser->fname == NULL) ? "function" : parser->fname,
+ (parser->fname == NULL) ? "" : "()",
+ keyword, i+1);
+ goto exit;
+ }
+ }
+
+ if (nkwargs > 0) {
+ error_unexpected_keyword_arg(kwargs, kwnames, kwtuple, parser->fname);
+ goto exit;
+ }
+
+ return buf;
+
+exit:
+ Py_XDECREF(buf[vararg]);
+ return NULL;
+}
+
+
+static const char *
+skipitem(const char **p_format, va_list *p_va, int flags)
+{
+ const char *format = *p_format;
+ char c = *format++;
+
+ switch (c) {
+
+ /*
+ * codes that take a single data pointer as an argument
+ * (the type of the pointer is irrelevant)
+ */
+
+ case 'b': /* byte -- very short int */
+ case 'B': /* byte as bitfield */
+ case 'h': /* short int */
+ case 'H': /* short int as bitfield */
+ case 'i': /* int */
+ case 'I': /* int sized bitfield */
+ case 'l': /* long int */
+ case 'k': /* long int sized bitfield */
+ case 'L': /* long long */
+ case 'K': /* long long sized bitfield */
+ case 'n': /* Py_ssize_t */
+ case 'f': /* float */
+ case 'd': /* double */
+ case 'D': /* complex double */
+ case 'c': /* char */
+ case 'C': /* unicode char */
+ case 'p': /* boolean predicate */
+ case 'S': /* string object */
+ case 'Y': /* string object */
+ case 'U': /* unicode string object */
+ {
+ if (p_va != NULL) {
+ (void) va_arg(*p_va, void *);
+ }
+ break;
+ }
+
+ /* string codes */
+
+ case 'e': /* string with encoding */
+ {
+ if (p_va != NULL) {
+ (void) va_arg(*p_va, const char *);
+ }
+ if (!(*format == 's' || *format == 't'))
+ /* after 'e', only 's' and 't' is allowed */
+ goto err;
+ format++;
+ }
+ /* fall through */
+
+ case 's': /* string */
+ case 'z': /* string or None */
+ case 'y': /* bytes */
+ case 'w': /* buffer, read-write */
+ {
+ if (p_va != NULL) {
+ (void) va_arg(*p_va, char **);
+ }
+ if (*format == '#') {
+ if (p_va != NULL) {
+ if (!(flags & FLAG_SIZE_T)) {
+ return "PY_SSIZE_T_CLEAN macro must be defined for '#' formats";
+ }
+ (void) va_arg(*p_va, Py_ssize_t *);
+ }
+ format++;
+ } else if ((c == 's' || c == 'z' || c == 'y' || c == 'w')
+ && *format == '*')
+ {
+ format++;
+ }
+ break;
+ }
+
+ case 'O': /* object */
+ {
+ if (*format == '!') {
+ format++;
+ if (p_va != NULL) {
+ (void) va_arg(*p_va, PyTypeObject*);
+ (void) va_arg(*p_va, PyObject **);
+ }
+ }
+ else if (*format == '&') {
+ typedef int (*converter)(PyObject *, void *);
+ if (p_va != NULL) {
+ (void) va_arg(*p_va, converter);
+ (void) va_arg(*p_va, void *);
+ }
+ format++;
+ }
+ else {
+ if (p_va != NULL) {
+ (void) va_arg(*p_va, PyObject **);
+ }
+ }
+ break;
+ }
+
+ case '(': /* bypass tuple, not handled at all previously */
+ {
+ const char *msg;
+ for (;;) {
+ if (*format==')')
+ break;
+ if (IS_END_OF_FORMAT(*format))
+ return "Unmatched left paren in format "
+ "string";
+ msg = skipitem(&format, p_va, flags);
+ if (msg)
+ return msg;
+ }
+ format++;
+ break;
+ }
+
+ case ')':
+ return "Unmatched right paren in format string";
+
+ default:
+err:
+ return "impossible<bad format char>";
+
+ }
+
+ *p_format = format;
+ return NULL;
+}
+
+
+#undef _PyArg_CheckPositional
+
+int
+_PyArg_CheckPositional(const char *name, Py_ssize_t nargs,
+ Py_ssize_t min, Py_ssize_t max)
+{
+ assert(min >= 0);
+ assert(min <= max);
+
+ if (nargs < min) {
+ if (name != NULL)
+ PyErr_Format(
+ PyExc_TypeError,
+ "%.200s expected %s%zd argument%s, got %zd",
+ name, (min == max ? "" : "at least "), min, min == 1 ? "" : "s", nargs);
+ else
+ PyErr_Format(
+ PyExc_TypeError,
+ "unpacked tuple should have %s%zd element%s,"
+ " but has %zd",
+ (min == max ? "" : "at least "), min, min == 1 ? "" : "s", nargs);
+ return 0;
+ }
+
+ if (nargs == 0) {
+ return 1;
+ }
+
+ if (nargs > max) {
+ if (name != NULL)
+ PyErr_Format(
+ PyExc_TypeError,
+ "%.200s expected %s%zd argument%s, got %zd",
+ name, (min == max ? "" : "at most "), max, max == 1 ? "" : "s", nargs);
+ else
+ PyErr_Format(
+ PyExc_TypeError,
+ "unpacked tuple should have %s%zd element%s,"
+ " but has %zd",
+ (min == max ? "" : "at most "), max, max == 1 ? "" : "s", nargs);
+ return 0;
+ }
+
+ return 1;
+}
+
+static int
+unpack_stack(PyObject *const *args, Py_ssize_t nargs, const char *name,
+ Py_ssize_t min, Py_ssize_t max, va_list vargs)
+{
+ Py_ssize_t i;
+ PyObject **o;
+
+ if (!_PyArg_CheckPositional(name, nargs, min, max)) {
+ return 0;
+ }
+
+ for (i = 0; i < nargs; i++) {
+ o = va_arg(vargs, PyObject **);
+ *o = args[i];
+ }
+ return 1;
+}
+
+int
+PyArg_UnpackTuple(PyObject *args, const char *name, Py_ssize_t min, Py_ssize_t max, ...)
+{
+ PyObject **stack;
+ Py_ssize_t nargs;
+ int retval;
+ va_list vargs;
+
+ if (!PyTuple_Check(args)) {
+ PyErr_SetString(PyExc_SystemError,
+ "PyArg_UnpackTuple() argument list is not a tuple");
+ return 0;
+ }
+ stack = _PyTuple_ITEMS(args);
+ nargs = PyTuple_GET_SIZE(args);
+
+ va_start(vargs, max);
+ retval = unpack_stack(stack, nargs, name, min, max, vargs);
+ va_end(vargs);
+ return retval;
+}
+
+int
+_PyArg_UnpackStack(PyObject *const *args, Py_ssize_t nargs, const char *name,
+ Py_ssize_t min, Py_ssize_t max, ...)
+{
+ int retval;
+ va_list vargs;
+
+ va_start(vargs, max);
+ retval = unpack_stack(args, nargs, name, min, max, vargs);
+ va_end(vargs);
+ return retval;
+}
+
+
+#undef _PyArg_NoKeywords
+#undef _PyArg_NoKwnames
+#undef _PyArg_NoPositional
+
+/* For type constructors that don't take keyword args
+ *
+ * Sets a TypeError and returns 0 if the args/kwargs is
+ * not empty, returns 1 otherwise
+ */
+int
+_PyArg_NoKeywords(const char *funcname, PyObject *kwargs)
+{
+ if (kwargs == NULL) {
+ return 1;
+ }
+ if (!PyDict_CheckExact(kwargs)) {
+ PyErr_BadInternalCall();
+ return 0;
+ }
+ if (PyDict_GET_SIZE(kwargs) == 0) {
+ return 1;
+ }
+
+ PyErr_Format(PyExc_TypeError, "%.200s() takes no keyword arguments",
+ funcname);
+ return 0;
+}
+
+int
+_PyArg_NoPositional(const char *funcname, PyObject *args)
+{
+ if (args == NULL)
+ return 1;
+ if (!PyTuple_CheckExact(args)) {
+ PyErr_BadInternalCall();
+ return 0;
+ }
+ if (PyTuple_GET_SIZE(args) == 0)
+ return 1;
+
+ PyErr_Format(PyExc_TypeError, "%.200s() takes no positional arguments",
+ funcname);
+ return 0;
+}
+
+int
+_PyArg_NoKwnames(const char *funcname, PyObject *kwnames)
+{
+ if (kwnames == NULL) {
+ return 1;
+ }
+
+ assert(PyTuple_CheckExact(kwnames));
+
+ if (PyTuple_GET_SIZE(kwnames) == 0) {
+ return 1;
+ }
+
+ PyErr_Format(PyExc_TypeError, "%s() takes no keyword arguments", funcname);
+ return 0;
+}
+
+void
+_PyArg_Fini(void)
+{
+ struct _PyArg_Parser *tmp, *s = _PyRuntime.getargs.static_parsers;
+ while (s) {
+ tmp = s->next;
+ s->next = NULL;
+ parser_clear(s);
+ s = tmp;
+ }
+ _PyRuntime.getargs.static_parsers = NULL;
+}
+
+#ifdef __cplusplus
+};
+#endif
diff --git a/contrib/tools/python3/Python/getcompiler.c b/contrib/tools/python3/Python/getcompiler.c
new file mode 100644
index 00000000000..a5d26239e87
--- /dev/null
+++ b/contrib/tools/python3/Python/getcompiler.c
@@ -0,0 +1,27 @@
+
+/* Return the compiler identification, if possible. */
+
+#include "Python.h"
+
+#ifndef COMPILER
+
+// Note the __clang__ conditional has to come before the __GNUC__ one because
+// clang pretends to be GCC.
+#if defined(__clang__)
+#define COMPILER "[Clang " __clang_version__ "]"
+#elif defined(__GNUC__)
+#define COMPILER "[GCC " __VERSION__ "]"
+// Generic fallbacks.
+#elif defined(__cplusplus)
+#define COMPILER "[C++]"
+#else
+#define COMPILER "[C]"
+#endif
+
+#endif /* !COMPILER */
+
+const char *
+Py_GetCompiler(void)
+{
+ return COMPILER;
+}
diff --git a/contrib/tools/python3/Python/getcopyright.c b/contrib/tools/python3/Python/getcopyright.c
new file mode 100644
index 00000000000..c1f1aad9b84
--- /dev/null
+++ b/contrib/tools/python3/Python/getcopyright.c
@@ -0,0 +1,23 @@
+/* Return the copyright string. This is updated manually. */
+
+#include "Python.h"
+
+static const char cprt[] =
+"\
+Copyright (c) 2001-2023 Python Software Foundation.\n\
+All Rights Reserved.\n\
+\n\
+Copyright (c) 2000 BeOpen.com.\n\
+All Rights Reserved.\n\
+\n\
+Copyright (c) 1995-2001 Corporation for National Research Initiatives.\n\
+All Rights Reserved.\n\
+\n\
+Copyright (c) 1991-1995 Stichting Mathematisch Centrum, Amsterdam.\n\
+All Rights Reserved.";
+
+const char *
+Py_GetCopyright(void)
+{
+ return cprt;
+}
diff --git a/contrib/tools/python3/Python/getopt.c b/contrib/tools/python3/Python/getopt.c
new file mode 100644
index 00000000000..4135bf1446e
--- /dev/null
+++ b/contrib/tools/python3/Python/getopt.c
@@ -0,0 +1,179 @@
+/*---------------------------------------------------------------------------*
+ * <RCS keywords>
+ *
+ * C++ Library
+ *
+ * Copyright 1992-1994, David Gottner
+ *
+ * All Rights Reserved
+ *
+ * Permission to use, copy, modify, and distribute this software and its
+ * documentation for any purpose and without fee is hereby granted,
+ * provided that the above copyright notice, this permission notice and
+ * the following disclaimer notice appear unmodified in all copies.
+ *
+ * I DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL I
+ * BE LIABLE FOR ANY SPECIAL, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY
+ * DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER
+ * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
+ * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ *---------------------------------------------------------------------------*/
+
+/* Modified to support --help and --version, as well as /? on Windows
+ * by Georg Brandl. */
+
+#include <Python.h>
+#include <stdio.h>
+#include <string.h>
+#include <wchar.h>
+#include "pycore_getopt.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+int _PyOS_opterr = 1; /* generate error messages */
+Py_ssize_t _PyOS_optind = 1; /* index into argv array */
+const wchar_t *_PyOS_optarg = NULL; /* optional argument */
+
+static const wchar_t *opt_ptr = L"";
+
+/* Python command line short and long options */
+
+#define SHORT_OPTS L"bBc:dEhiIJm:OPqRsStuvVW:xX:?"
+
+static const _PyOS_LongOption longopts[] = {
+ /* name, has_arg, val (used in switch in initconfig.c) */
+ {L"check-hash-based-pycs", 1, 0},
+ {L"help-all", 0, 1},
+ {L"help-env", 0, 2},
+ {L"help-xoptions", 0, 3},
+ {NULL, 0, -1}, /* sentinel */
+};
+
+
+void _PyOS_ResetGetOpt(void)
+{
+ _PyOS_opterr = 1;
+ _PyOS_optind = 1;
+ _PyOS_optarg = NULL;
+ opt_ptr = L"";
+}
+
+int _PyOS_GetOpt(Py_ssize_t argc, wchar_t * const *argv, int *longindex)
+{
+ wchar_t *ptr;
+ wchar_t option;
+
+ if (*opt_ptr == '\0') {
+
+ if (_PyOS_optind >= argc)
+ return -1;
+#ifdef MS_WINDOWS
+ else if (wcscmp(argv[_PyOS_optind], L"/?") == 0) {
+ ++_PyOS_optind;
+ return 'h';
+ }
+#endif
+
+ else if (argv[_PyOS_optind][0] != L'-' ||
+ argv[_PyOS_optind][1] == L'\0' /* lone dash */ )
+ return -1;
+
+ else if (wcscmp(argv[_PyOS_optind], L"--") == 0) {
+ ++_PyOS_optind;
+ return -1;
+ }
+
+ else if (wcscmp(argv[_PyOS_optind], L"--help") == 0) {
+ ++_PyOS_optind;
+ return 'h';
+ }
+
+ else if (wcscmp(argv[_PyOS_optind], L"--version") == 0) {
+ ++_PyOS_optind;
+ return 'V';
+ }
+
+ opt_ptr = &argv[_PyOS_optind++][1];
+ }
+
+ if ((option = *opt_ptr++) == L'\0')
+ return -1;
+
+ if (option == L'-') {
+ // Parse long option.
+ if (*opt_ptr == L'\0') {
+ if (_PyOS_opterr) {
+ fprintf(stderr, "expected long option\n");
+ }
+ return -1;
+ }
+ *longindex = 0;
+ const _PyOS_LongOption *opt;
+ for (opt = &longopts[*longindex]; opt->name; opt = &longopts[++(*longindex)]) {
+ if (!wcscmp(opt->name, opt_ptr))
+ break;
+ }
+ if (!opt->name) {
+ if (_PyOS_opterr) {
+ fprintf(stderr, "unknown option %ls\n", argv[_PyOS_optind - 1]);
+ }
+ return '_';
+ }
+ opt_ptr = L"";
+ if (!opt->has_arg) {
+ return opt->val;
+ }
+ if (_PyOS_optind >= argc) {
+ if (_PyOS_opterr) {
+ fprintf(stderr, "Argument expected for the %ls options\n",
+ argv[_PyOS_optind - 1]);
+ }
+ return '_';
+ }
+ _PyOS_optarg = argv[_PyOS_optind++];
+ return opt->val;
+ }
+
+ if (option == 'J') {
+ if (_PyOS_opterr) {
+ fprintf(stderr, "-J is reserved for Jython\n");
+ }
+ return '_';
+ }
+
+ if ((ptr = wcschr(SHORT_OPTS, option)) == NULL) {
+ if (_PyOS_opterr) {
+ fprintf(stderr, "Unknown option: -%c\n", (char)option);
+ }
+ return '_';
+ }
+
+ if (*(ptr + 1) == L':') {
+ if (*opt_ptr != L'\0') {
+ _PyOS_optarg = opt_ptr;
+ opt_ptr = L"";
+ }
+
+ else {
+ if (_PyOS_optind >= argc) {
+ if (_PyOS_opterr) {
+ fprintf(stderr,
+ "Argument expected for the -%c option\n", (char)option);
+ }
+ return '_';
+ }
+
+ _PyOS_optarg = argv[_PyOS_optind++];
+ }
+ }
+
+ return option;
+}
+
+#ifdef __cplusplus
+}
+#endif
+
diff --git a/contrib/tools/python3/Python/getplatform.c b/contrib/tools/python3/Python/getplatform.c
new file mode 100644
index 00000000000..81a0f7ac537
--- /dev/null
+++ b/contrib/tools/python3/Python/getplatform.c
@@ -0,0 +1,12 @@
+
+#include "Python.h"
+
+#ifndef PLATFORM
+#define PLATFORM "unknown"
+#endif
+
+const char *
+Py_GetPlatform(void)
+{
+ return PLATFORM;
+}
diff --git a/contrib/tools/python3/Python/getversion.c b/contrib/tools/python3/Python/getversion.c
new file mode 100644
index 00000000000..5db836ab4bf
--- /dev/null
+++ b/contrib/tools/python3/Python/getversion.c
@@ -0,0 +1,29 @@
+
+/* Return the full version string. */
+
+#include "Python.h"
+
+#include "patchlevel.h"
+
+static int initialized = 0;
+static char version[250];
+
+void _Py_InitVersion(void)
+{
+ if (initialized) {
+ return;
+ }
+ initialized = 1;
+ PyOS_snprintf(version, sizeof(version), "%.80s (%.80s) %.80s",
+ PY_VERSION, Py_GetBuildInfo(), Py_GetCompiler());
+}
+
+const char *
+Py_GetVersion(void)
+{
+ _Py_InitVersion();
+ return version;
+}
+
+// Export the Python hex version as a constant.
+const unsigned long Py_Version = PY_VERSION_HEX;
diff --git a/contrib/tools/python3/Python/hamt.c b/contrib/tools/python3/Python/hamt.c
new file mode 100644
index 00000000000..8cb94641bef
--- /dev/null
+++ b/contrib/tools/python3/Python/hamt.c
@@ -0,0 +1,2894 @@
+#include "Python.h"
+
+#include "pycore_bitutils.h" // _Py_popcount32
+#include "pycore_hamt.h"
+#include "pycore_initconfig.h" // _PyStatus_OK()
+#include "pycore_object.h" // _PyObject_GC_TRACK()
+#include <stddef.h> // offsetof()
+
+/*
+This file provides an implementation of an immutable mapping using the
+Hash Array Mapped Trie (or HAMT) datastructure.
+
+This design allows to have:
+
+1. Efficient copy: immutable mappings can be copied by reference,
+ making it an O(1) operation.
+
+2. Efficient mutations: due to structural sharing, only a portion of
+ the trie needs to be copied when the collection is mutated. The
+ cost of set/delete operations is O(log N).
+
+3. Efficient lookups: O(log N).
+
+(where N is number of key/value items in the immutable mapping.)
+
+
+HAMT
+====
+
+The core idea of HAMT is that the shape of the trie is encoded into the
+hashes of keys.
+
+Say we want to store a K/V pair in our mapping. First, we calculate the
+hash of K, let's say it's 19830128, or in binary:
+
+ 0b1001011101001010101110000 = 19830128
+
+Now let's partition this bit representation of the hash into blocks of
+5 bits each:
+
+ 0b00_00000_10010_11101_00101_01011_10000 = 19830128
+ (6) (5) (4) (3) (2) (1)
+
+Each block of 5 bits represents a number between 0 and 31. So if we have
+a tree that consists of nodes, each of which is an array of 32 pointers,
+those 5-bit blocks will encode a position on a single tree level.
+
+For example, storing the key K with hash 19830128, results in the following
+tree structure:
+
+ (array of 32 pointers)
+ +---+ -- +----+----+----+ -- +----+
+ root node | 0 | .. | 15 | 16 | 17 | .. | 31 | 0b10000 = 16 (1)
+ (level 1) +---+ -- +----+----+----+ -- +----+
+ |
+ +---+ -- +----+----+----+ -- +----+
+ a 2nd level node | 0 | .. | 10 | 11 | 12 | .. | 31 | 0b01011 = 11 (2)
+ +---+ -- +----+----+----+ -- +----+
+ |
+ +---+ -- +----+----+----+ -- +----+
+ a 3rd level node | 0 | .. | 04 | 05 | 06 | .. | 31 | 0b00101 = 5 (3)
+ +---+ -- +----+----+----+ -- +----+
+ |
+ +---+ -- +----+----+----+----+
+ a 4th level node | 0 | .. | 04 | 29 | 30 | 31 | 0b11101 = 29 (4)
+ +---+ -- +----+----+----+----+
+ |
+ +---+ -- +----+----+----+ -- +----+
+ a 5th level node | 0 | .. | 17 | 18 | 19 | .. | 31 | 0b10010 = 18 (5)
+ +---+ -- +----+----+----+ -- +----+
+ |
+ +--------------+
+ |
+ +---+ -- +----+----+----+ -- +----+
+ a 6th level node | 0 | .. | 15 | 16 | 17 | .. | 31 | 0b00000 = 0 (6)
+ +---+ -- +----+----+----+ -- +----+
+ |
+ V -- our value (or collision)
+
+To rehash: for a K/V pair, the hash of K encodes where in the tree V will
+be stored.
+
+To optimize memory footprint and handle hash collisions, our implementation
+uses three different types of nodes:
+
+ * A Bitmap node;
+ * An Array node;
+ * A Collision node.
+
+Because we implement an immutable dictionary, our nodes are also
+immutable. Therefore, when we need to modify a node, we copy it, and
+do that modification to the copy.
+
+
+Array Nodes
+-----------
+
+These nodes are very simple. Essentially they are arrays of 32 pointers
+we used to illustrate the high-level idea in the previous section.
+
+We use Array nodes only when we need to store more than 16 pointers
+in a single node.
+
+Array nodes do not store key objects or value objects. They are used
+only as an indirection level - their pointers point to other nodes in
+the tree.
+
+
+Bitmap Node
+-----------
+
+Allocating a new 32-pointers array for every node of our tree would be
+very expensive. Unless we store millions of keys, most of tree nodes would
+be very sparse.
+
+When we have less than 16 elements in a node, we don't want to use the
+Array node, that would mean that we waste a lot of memory. Instead,
+we can use bitmap compression and can have just as many pointers
+as we need!
+
+Bitmap nodes consist of two fields:
+
+1. An array of pointers. If a Bitmap node holds N elements, the
+ array will be of N pointers.
+
+2. A 32bit integer -- a bitmap field. If an N-th bit is set in the
+ bitmap, it means that the node has an N-th element.
+
+For example, say we need to store a 3 elements sparse array:
+
+ +---+ -- +---+ -- +----+ -- +----+
+ | 0 | .. | 4 | .. | 11 | .. | 17 |
+ +---+ -- +---+ -- +----+ -- +----+
+ | | |
+ o1 o2 o3
+
+We allocate a three-pointer Bitmap node. Its bitmap field will be
+then set to:
+
+ 0b_00100_00010_00000_10000 == (1 << 17) | (1 << 11) | (1 << 4)
+
+To check if our Bitmap node has an I-th element we can do:
+
+ bitmap & (1 << I)
+
+
+And here's a formula to calculate a position in our pointer array
+which would correspond to an I-th element:
+
+ popcount(bitmap & ((1 << I) - 1))
+
+
+Let's break it down:
+
+ * `popcount` is a function that returns a number of bits set to 1;
+
+ * `((1 << I) - 1)` is a mask to filter the bitmask to contain bits
+ set to the *right* of our bit.
+
+
+So for our 17, 11, and 4 indexes:
+
+ * bitmap & ((1 << 17) - 1) == 0b100000010000 => 2 bits are set => index is 2.
+
+ * bitmap & ((1 << 11) - 1) == 0b10000 => 1 bit is set => index is 1.
+
+ * bitmap & ((1 << 4) - 1) == 0b0 => 0 bits are set => index is 0.
+
+
+To conclude: Bitmap nodes are just like Array nodes -- they can store
+a number of pointers, but use bitmap compression to eliminate unused
+pointers.
+
+
+Bitmap nodes have two pointers for each item:
+
+ +----+----+----+----+ -- +----+----+
+ | k1 | v1 | k2 | v2 | .. | kN | vN |
+ +----+----+----+----+ -- +----+----+
+
+When kI == NULL, vI points to another tree level.
+
+When kI != NULL, the actual key object is stored in kI, and its
+value is stored in vI.
+
+
+Collision Nodes
+---------------
+
+Collision nodes are simple arrays of pointers -- two pointers per
+key/value. When there's a hash collision, say for k1/v1 and k2/v2
+we have `hash(k1)==hash(k2)`. Then our collision node will be:
+
+ +----+----+----+----+
+ | k1 | v1 | k2 | v2 |
+ +----+----+----+----+
+
+
+Tree Structure
+--------------
+
+All nodes are PyObjects.
+
+The `PyHamtObject` object has a pointer to the root node (h_root),
+and has a length field (h_count).
+
+High-level functions accept a PyHamtObject object and dispatch to
+lower-level functions depending on what kind of node h_root points to.
+
+
+Operations
+==========
+
+There are three fundamental operations on an immutable dictionary:
+
+1. "o.assoc(k, v)" will return a new immutable dictionary, that will be
+ a copy of "o", but with the "k/v" item set.
+
+ Functions in this file:
+
+ hamt_node_assoc, hamt_node_bitmap_assoc,
+ hamt_node_array_assoc, hamt_node_collision_assoc
+
+ `hamt_node_assoc` function accepts a node object, and calls
+ other functions depending on its actual type.
+
+2. "o.find(k)" will lookup key "k" in "o".
+
+ Functions:
+
+ hamt_node_find, hamt_node_bitmap_find,
+ hamt_node_array_find, hamt_node_collision_find
+
+3. "o.without(k)" will return a new immutable dictionary, that will be
+ a copy of "o", buth without the "k" key.
+
+ Functions:
+
+ hamt_node_without, hamt_node_bitmap_without,
+ hamt_node_array_without, hamt_node_collision_without
+
+
+Further Reading
+===============
+
+1. http://blog.higher-order.net/2009/09/08/understanding-clojures-persistenthashmap-deftwice.html
+
+2. http://blog.higher-order.net/2010/08/16/assoc-and-clojures-persistenthashmap-part-ii.html
+
+3. Clojure's PersistentHashMap implementation:
+ https://github.com/clojure/clojure/blob/master/src/jvm/clojure/lang/PersistentHashMap.java
+
+
+Debug
+=====
+
+The HAMT datatype is accessible for testing purposes under the
+`_testcapi` module:
+
+ >>> from _testcapi import hamt
+ >>> h = hamt()
+ >>> h2 = h.set('a', 2)
+ >>> h3 = h2.set('b', 3)
+ >>> list(h3)
+ ['a', 'b']
+
+When CPython is built in debug mode, a '__dump__()' method is available
+to introspect the tree:
+
+ >>> print(h3.__dump__())
+ HAMT(len=2):
+ BitmapNode(size=4 count=2 bitmap=0b110 id=0x10eb9d9e8):
+ 'a': 2
+ 'b': 3
+*/
+
+
+#define IS_ARRAY_NODE(node) Py_IS_TYPE(node, &_PyHamt_ArrayNode_Type)
+#define IS_BITMAP_NODE(node) Py_IS_TYPE(node, &_PyHamt_BitmapNode_Type)
+#define IS_COLLISION_NODE(node) Py_IS_TYPE(node, &_PyHamt_CollisionNode_Type)
+
+
+/* Return type for 'find' (lookup a key) functions.
+
+ * F_ERROR - an error occurred;
+ * F_NOT_FOUND - the key was not found;
+ * F_FOUND - the key was found.
+*/
+typedef enum {F_ERROR, F_NOT_FOUND, F_FOUND} hamt_find_t;
+
+
+/* Return type for 'without' (delete a key) functions.
+
+ * W_ERROR - an error occurred;
+ * W_NOT_FOUND - the key was not found: there's nothing to delete;
+ * W_EMPTY - the key was found: the node/tree would be empty
+ if the key is deleted;
+ * W_NEWNODE - the key was found: a new node/tree is returned
+ without that key.
+*/
+typedef enum {W_ERROR, W_NOT_FOUND, W_EMPTY, W_NEWNODE} hamt_without_t;
+
+
+/* Low-level iterator protocol type.
+
+ * I_ITEM - a new item has been yielded;
+ * I_END - the whole tree was visited (similar to StopIteration).
+*/
+typedef enum {I_ITEM, I_END} hamt_iter_t;
+
+
+#define HAMT_ARRAY_NODE_SIZE 32
+
+
+typedef struct {
+ PyObject_HEAD
+ PyHamtNode *a_array[HAMT_ARRAY_NODE_SIZE];
+ Py_ssize_t a_count;
+} PyHamtNode_Array;
+
+
+typedef struct {
+ PyObject_VAR_HEAD
+ int32_t c_hash;
+ PyObject *c_array[1];
+} PyHamtNode_Collision;
+
+
+static PyHamtObject *
+hamt_alloc(void);
+
+static PyHamtNode *
+hamt_node_assoc(PyHamtNode *node,
+ uint32_t shift, int32_t hash,
+ PyObject *key, PyObject *val, int* added_leaf);
+
+static hamt_without_t
+hamt_node_without(PyHamtNode *node,
+ uint32_t shift, int32_t hash,
+ PyObject *key,
+ PyHamtNode **new_node);
+
+static hamt_find_t
+hamt_node_find(PyHamtNode *node,
+ uint32_t shift, int32_t hash,
+ PyObject *key, PyObject **val);
+
+#ifdef Py_DEBUG
+static int
+hamt_node_dump(PyHamtNode *node,
+ _PyUnicodeWriter *writer, int level);
+#endif
+
+static PyHamtNode *
+hamt_node_array_new(Py_ssize_t);
+
+static PyHamtNode *
+hamt_node_collision_new(int32_t hash, Py_ssize_t size);
+
+static inline Py_ssize_t
+hamt_node_collision_count(PyHamtNode_Collision *node);
+
+
+#ifdef Py_DEBUG
+static void
+_hamt_node_array_validate(void *obj_raw)
+{
+ PyObject *obj = _PyObject_CAST(obj_raw);
+ assert(IS_ARRAY_NODE(obj));
+ PyHamtNode_Array *node = (PyHamtNode_Array*)obj;
+ Py_ssize_t i = 0, count = 0;
+ for (; i < HAMT_ARRAY_NODE_SIZE; i++) {
+ if (node->a_array[i] != NULL) {
+ count++;
+ }
+ }
+ assert(count == node->a_count);
+}
+
+#define VALIDATE_ARRAY_NODE(NODE) \
+ do { _hamt_node_array_validate(NODE); } while (0);
+#else
+#define VALIDATE_ARRAY_NODE(NODE)
+#endif
+
+
+/* Returns -1 on error */
+static inline int32_t
+hamt_hash(PyObject *o)
+{
+ Py_hash_t hash = PyObject_Hash(o);
+
+#if SIZEOF_PY_HASH_T <= 4
+ return hash;
+#else
+ if (hash == -1) {
+ /* exception */
+ return -1;
+ }
+
+ /* While it's somewhat suboptimal to reduce Python's 64 bit hash to
+ 32 bits via XOR, it seems that the resulting hash function
+ is good enough (this is also how Long type is hashed in Java.)
+ Storing 10, 100, 1000 Python strings results in a relatively
+ shallow and uniform tree structure.
+
+ Also it's worth noting that it would be possible to adapt the tree
+ structure to 64 bit hashes, but that would increase memory pressure
+ and provide little to no performance benefits for collections with
+ fewer than billions of key/value pairs.
+
+ Important: do not change this hash reducing function. There are many
+ tests that need an exact tree shape to cover all code paths and
+ we do that by specifying concrete values for test data's `__hash__`.
+ If this function is changed most of the regression tests would
+ become useless.
+ */
+ int32_t xored = (int32_t)(hash & 0xffffffffl) ^ (int32_t)(hash >> 32);
+ return xored == -1 ? -2 : xored;
+#endif
+}
+
+static inline uint32_t
+hamt_mask(int32_t hash, uint32_t shift)
+{
+ return (((uint32_t)hash >> shift) & 0x01f);
+}
+
+static inline uint32_t
+hamt_bitpos(int32_t hash, uint32_t shift)
+{
+ return (uint32_t)1 << hamt_mask(hash, shift);
+}
+
+static inline uint32_t
+hamt_bitindex(uint32_t bitmap, uint32_t bit)
+{
+ return (uint32_t)_Py_popcount32(bitmap & (bit - 1));
+}
+
+
+/////////////////////////////////// Dump Helpers
+#ifdef Py_DEBUG
+
+static int
+_hamt_dump_ident(_PyUnicodeWriter *writer, int level)
+{
+ /* Write `' ' * level` to the `writer` */
+ PyObject *str = NULL;
+ PyObject *num = NULL;
+ PyObject *res = NULL;
+ int ret = -1;
+
+ str = PyUnicode_FromString(" ");
+ if (str == NULL) {
+ goto error;
+ }
+
+ num = PyLong_FromLong((long)level);
+ if (num == NULL) {
+ goto error;
+ }
+
+ res = PyNumber_Multiply(str, num);
+ if (res == NULL) {
+ goto error;
+ }
+
+ ret = _PyUnicodeWriter_WriteStr(writer, res);
+
+error:
+ Py_XDECREF(res);
+ Py_XDECREF(str);
+ Py_XDECREF(num);
+ return ret;
+}
+
+static int
+_hamt_dump_format(_PyUnicodeWriter *writer, const char *format, ...)
+{
+ /* A convenient helper combining _PyUnicodeWriter_WriteStr and
+ PyUnicode_FromFormatV.
+ */
+ PyObject* msg;
+ int ret;
+
+ va_list vargs;
+ va_start(vargs, format);
+ msg = PyUnicode_FromFormatV(format, vargs);
+ va_end(vargs);
+
+ if (msg == NULL) {
+ return -1;
+ }
+
+ ret = _PyUnicodeWriter_WriteStr(writer, msg);
+ Py_DECREF(msg);
+ return ret;
+}
+
+#endif /* Py_DEBUG */
+/////////////////////////////////// Bitmap Node
+
+
+static PyHamtNode *
+hamt_node_bitmap_new(Py_ssize_t size)
+{
+ /* Create a new bitmap node of size 'size' */
+
+ PyHamtNode_Bitmap *node;
+ Py_ssize_t i;
+
+ if (size == 0) {
+ /* Since bitmap nodes are immutable, we can cache the instance
+ for size=0 and reuse it whenever we need an empty bitmap node.
+ */
+ return (PyHamtNode *)Py_NewRef(&_Py_SINGLETON(hamt_bitmap_node_empty));
+ }
+
+ assert(size >= 0);
+ assert(size % 2 == 0);
+
+ /* No freelist; allocate a new bitmap node */
+ node = PyObject_GC_NewVar(
+ PyHamtNode_Bitmap, &_PyHamt_BitmapNode_Type, size);
+ if (node == NULL) {
+ return NULL;
+ }
+
+ Py_SET_SIZE(node, size);
+
+ for (i = 0; i < size; i++) {
+ node->b_array[i] = NULL;
+ }
+
+ node->b_bitmap = 0;
+
+ _PyObject_GC_TRACK(node);
+
+ return (PyHamtNode *)node;
+}
+
+static inline Py_ssize_t
+hamt_node_bitmap_count(PyHamtNode_Bitmap *node)
+{
+ return Py_SIZE(node) / 2;
+}
+
+static PyHamtNode_Bitmap *
+hamt_node_bitmap_clone(PyHamtNode_Bitmap *node)
+{
+ /* Clone a bitmap node; return a new one with the same child notes. */
+
+ PyHamtNode_Bitmap *clone;
+ Py_ssize_t i;
+
+ clone = (PyHamtNode_Bitmap *)hamt_node_bitmap_new(Py_SIZE(node));
+ if (clone == NULL) {
+ return NULL;
+ }
+
+ for (i = 0; i < Py_SIZE(node); i++) {
+ clone->b_array[i] = Py_XNewRef(node->b_array[i]);
+ }
+
+ clone->b_bitmap = node->b_bitmap;
+ return clone;
+}
+
+static PyHamtNode_Bitmap *
+hamt_node_bitmap_clone_without(PyHamtNode_Bitmap *o, uint32_t bit)
+{
+ assert(bit & o->b_bitmap);
+ assert(hamt_node_bitmap_count(o) > 1);
+
+ PyHamtNode_Bitmap *new = (PyHamtNode_Bitmap *)hamt_node_bitmap_new(
+ Py_SIZE(o) - 2);
+ if (new == NULL) {
+ return NULL;
+ }
+
+ uint32_t idx = hamt_bitindex(o->b_bitmap, bit);
+ uint32_t key_idx = 2 * idx;
+ uint32_t val_idx = key_idx + 1;
+ uint32_t i;
+
+ for (i = 0; i < key_idx; i++) {
+ new->b_array[i] = Py_XNewRef(o->b_array[i]);
+ }
+
+ assert(Py_SIZE(o) >= 0 && Py_SIZE(o) <= 32);
+ for (i = val_idx + 1; i < (uint32_t)Py_SIZE(o); i++) {
+ new->b_array[i - 2] = Py_XNewRef(o->b_array[i]);
+ }
+
+ new->b_bitmap = o->b_bitmap & ~bit;
+ return new;
+}
+
+static PyHamtNode *
+hamt_node_new_bitmap_or_collision(uint32_t shift,
+ PyObject *key1, PyObject *val1,
+ int32_t key2_hash,
+ PyObject *key2, PyObject *val2)
+{
+ /* Helper method. Creates a new node for key1/val and key2/val2
+ pairs.
+
+ If key1 hash is equal to the hash of key2, a Collision node
+ will be created. If they are not equal, a Bitmap node is
+ created.
+ */
+
+ int32_t key1_hash = hamt_hash(key1);
+ if (key1_hash == -1) {
+ return NULL;
+ }
+
+ if (key1_hash == key2_hash) {
+ PyHamtNode_Collision *n;
+ n = (PyHamtNode_Collision *)hamt_node_collision_new(key1_hash, 4);
+ if (n == NULL) {
+ return NULL;
+ }
+
+ n->c_array[0] = Py_NewRef(key1);
+ n->c_array[1] = Py_NewRef(val1);
+
+ n->c_array[2] = Py_NewRef(key2);
+ n->c_array[3] = Py_NewRef(val2);
+
+ return (PyHamtNode *)n;
+ }
+ else {
+ int added_leaf = 0;
+ PyHamtNode *n = hamt_node_bitmap_new(0);
+ if (n == NULL) {
+ return NULL;
+ }
+
+ PyHamtNode *n2 = hamt_node_assoc(
+ n, shift, key1_hash, key1, val1, &added_leaf);
+ Py_DECREF(n);
+ if (n2 == NULL) {
+ return NULL;
+ }
+
+ n = hamt_node_assoc(n2, shift, key2_hash, key2, val2, &added_leaf);
+ Py_DECREF(n2);
+ if (n == NULL) {
+ return NULL;
+ }
+
+ return n;
+ }
+}
+
+static PyHamtNode *
+hamt_node_bitmap_assoc(PyHamtNode_Bitmap *self,
+ uint32_t shift, int32_t hash,
+ PyObject *key, PyObject *val, int* added_leaf)
+{
+ /* assoc operation for bitmap nodes.
+
+ Return: a new node, or self if key/val already is in the
+ collection.
+
+ 'added_leaf' is later used in '_PyHamt_Assoc' to determine if
+ `hamt.set(key, val)` increased the size of the collection.
+ */
+
+ uint32_t bit = hamt_bitpos(hash, shift);
+ uint32_t idx = hamt_bitindex(self->b_bitmap, bit);
+
+ /* Bitmap node layout:
+
+ +------+------+------+------+ --- +------+------+
+ | key1 | val1 | key2 | val2 | ... | keyN | valN |
+ +------+------+------+------+ --- +------+------+
+ where `N < Py_SIZE(node)`.
+
+ The `node->b_bitmap` field is a bitmap. For a given
+ `(shift, hash)` pair we can determine:
+
+ - If this node has the corresponding key/val slots.
+ - The index of key/val slots.
+ */
+
+ if (self->b_bitmap & bit) {
+ /* The key is set in this node */
+
+ uint32_t key_idx = 2 * idx;
+ uint32_t val_idx = key_idx + 1;
+
+ assert(val_idx < (size_t)Py_SIZE(self));
+
+ PyObject *key_or_null = self->b_array[key_idx];
+ PyObject *val_or_node = self->b_array[val_idx];
+
+ if (key_or_null == NULL) {
+ /* key is NULL. This means that we have a few keys
+ that have the same (hash, shift) pair. */
+
+ assert(val_or_node != NULL);
+
+ PyHamtNode *sub_node = hamt_node_assoc(
+ (PyHamtNode *)val_or_node,
+ shift + 5, hash, key, val, added_leaf);
+ if (sub_node == NULL) {
+ return NULL;
+ }
+
+ if (val_or_node == (PyObject *)sub_node) {
+ Py_DECREF(sub_node);
+ return (PyHamtNode *)Py_NewRef(self);
+ }
+
+ PyHamtNode_Bitmap *ret = hamt_node_bitmap_clone(self);
+ if (ret == NULL) {
+ return NULL;
+ }
+ Py_SETREF(ret->b_array[val_idx], (PyObject*)sub_node);
+ return (PyHamtNode *)ret;
+ }
+
+ assert(key != NULL);
+ /* key is not NULL. This means that we have only one other
+ key in this collection that matches our hash for this shift. */
+
+ int comp_err = PyObject_RichCompareBool(key, key_or_null, Py_EQ);
+ if (comp_err < 0) { /* exception in __eq__ */
+ return NULL;
+ }
+ if (comp_err == 1) { /* key == key_or_null */
+ if (val == val_or_node) {
+ /* we already have the same key/val pair; return self. */
+ return (PyHamtNode *)Py_NewRef(self);
+ }
+
+ /* We're setting a new value for the key we had before.
+ Make a new bitmap node with a replaced value, and return it. */
+ PyHamtNode_Bitmap *ret = hamt_node_bitmap_clone(self);
+ if (ret == NULL) {
+ return NULL;
+ }
+ Py_SETREF(ret->b_array[val_idx], Py_NewRef(val));
+ return (PyHamtNode *)ret;
+ }
+
+ /* It's a new key, and it has the same index as *one* another key.
+ We have a collision. We need to create a new node which will
+ combine the existing key and the key we're adding.
+
+ `hamt_node_new_bitmap_or_collision` will either create a new
+ Collision node if the keys have identical hashes, or
+ a new Bitmap node.
+ */
+ PyHamtNode *sub_node = hamt_node_new_bitmap_or_collision(
+ shift + 5,
+ key_or_null, val_or_node, /* existing key/val */
+ hash,
+ key, val /* new key/val */
+ );
+ if (sub_node == NULL) {
+ return NULL;
+ }
+
+ PyHamtNode_Bitmap *ret = hamt_node_bitmap_clone(self);
+ if (ret == NULL) {
+ Py_DECREF(sub_node);
+ return NULL;
+ }
+ Py_SETREF(ret->b_array[key_idx], NULL);
+ Py_SETREF(ret->b_array[val_idx], (PyObject *)sub_node);
+
+ *added_leaf = 1;
+ return (PyHamtNode *)ret;
+ }
+ else {
+ /* There was no key before with the same (shift,hash). */
+
+ uint32_t n = (uint32_t)_Py_popcount32(self->b_bitmap);
+
+ if (n >= 16) {
+ /* When we have a situation where we want to store more
+ than 16 nodes at one level of the tree, we no longer
+ want to use the Bitmap node with bitmap encoding.
+
+ Instead we start using an Array node, which has
+ simpler (faster) implementation at the expense of
+ having preallocated 32 pointers for its keys/values
+ pairs.
+
+ Small hamt objects (<30 keys) usually don't have any
+ Array nodes at all. Between ~30 and ~400 keys hamt
+ objects usually have one Array node, and usually it's
+ a root node.
+ */
+
+ uint32_t jdx = hamt_mask(hash, shift);
+ /* 'jdx' is the index of where the new key should be added
+ in the new Array node we're about to create. */
+
+ PyHamtNode *empty = NULL;
+ PyHamtNode_Array *new_node = NULL;
+ PyHamtNode *res = NULL;
+
+ /* Create a new Array node. */
+ new_node = (PyHamtNode_Array *)hamt_node_array_new(n + 1);
+ if (new_node == NULL) {
+ goto fin;
+ }
+
+ /* Create an empty bitmap node for the next
+ hamt_node_assoc call. */
+ empty = hamt_node_bitmap_new(0);
+ if (empty == NULL) {
+ goto fin;
+ }
+
+ /* Make a new bitmap node for the key/val we're adding.
+ Set that bitmap node to new-array-node[jdx]. */
+ new_node->a_array[jdx] = hamt_node_assoc(
+ empty, shift + 5, hash, key, val, added_leaf);
+ if (new_node->a_array[jdx] == NULL) {
+ goto fin;
+ }
+
+ /* Copy existing key/value pairs from the current Bitmap
+ node to the new Array node we've just created. */
+ Py_ssize_t i, j;
+ for (i = 0, j = 0; i < HAMT_ARRAY_NODE_SIZE; i++) {
+ if (((self->b_bitmap >> i) & 1) != 0) {
+ /* Ensure we don't accidentally override `jdx` element
+ we set few lines above.
+ */
+ assert(new_node->a_array[i] == NULL);
+
+ if (self->b_array[j] == NULL) {
+ new_node->a_array[i] =
+ (PyHamtNode *)Py_NewRef(self->b_array[j + 1]);
+ }
+ else {
+ int32_t rehash = hamt_hash(self->b_array[j]);
+ if (rehash == -1) {
+ goto fin;
+ }
+
+ new_node->a_array[i] = hamt_node_assoc(
+ empty, shift + 5,
+ rehash,
+ self->b_array[j],
+ self->b_array[j + 1],
+ added_leaf);
+
+ if (new_node->a_array[i] == NULL) {
+ goto fin;
+ }
+ }
+ j += 2;
+ }
+ }
+
+ VALIDATE_ARRAY_NODE(new_node)
+
+ /* That's it! */
+ res = (PyHamtNode *)new_node;
+
+ fin:
+ Py_XDECREF(empty);
+ if (res == NULL) {
+ Py_XDECREF(new_node);
+ }
+ return res;
+ }
+ else {
+ /* We have less than 16 keys at this level; let's just
+ create a new bitmap node out of this node with the
+ new key/val pair added. */
+
+ uint32_t key_idx = 2 * idx;
+ uint32_t val_idx = key_idx + 1;
+ uint32_t i;
+
+ *added_leaf = 1;
+
+ /* Allocate new Bitmap node which can have one more key/val
+ pair in addition to what we have already. */
+ PyHamtNode_Bitmap *new_node =
+ (PyHamtNode_Bitmap *)hamt_node_bitmap_new(2 * (n + 1));
+ if (new_node == NULL) {
+ return NULL;
+ }
+
+ /* Copy all keys/values that will be before the new key/value
+ we are adding. */
+ for (i = 0; i < key_idx; i++) {
+ new_node->b_array[i] = Py_XNewRef(self->b_array[i]);
+ }
+
+ /* Set the new key/value to the new Bitmap node. */
+ new_node->b_array[key_idx] = Py_NewRef(key);
+ new_node->b_array[val_idx] = Py_NewRef(val);
+
+ /* Copy all keys/values that will be after the new key/value
+ we are adding. */
+ assert(Py_SIZE(self) >= 0 && Py_SIZE(self) <= 32);
+ for (i = key_idx; i < (uint32_t)Py_SIZE(self); i++) {
+ new_node->b_array[i + 2] = Py_XNewRef(self->b_array[i]);
+ }
+
+ new_node->b_bitmap = self->b_bitmap | bit;
+ return (PyHamtNode *)new_node;
+ }
+ }
+}
+
+static hamt_without_t
+hamt_node_bitmap_without(PyHamtNode_Bitmap *self,
+ uint32_t shift, int32_t hash,
+ PyObject *key,
+ PyHamtNode **new_node)
+{
+ uint32_t bit = hamt_bitpos(hash, shift);
+ if ((self->b_bitmap & bit) == 0) {
+ return W_NOT_FOUND;
+ }
+
+ uint32_t idx = hamt_bitindex(self->b_bitmap, bit);
+
+ uint32_t key_idx = 2 * idx;
+ uint32_t val_idx = key_idx + 1;
+
+ PyObject *key_or_null = self->b_array[key_idx];
+ PyObject *val_or_node = self->b_array[val_idx];
+
+ if (key_or_null == NULL) {
+ /* key == NULL means that 'value' is another tree node. */
+
+ PyHamtNode *sub_node = NULL;
+
+ hamt_without_t res = hamt_node_without(
+ (PyHamtNode *)val_or_node,
+ shift + 5, hash, key, &sub_node);
+
+ switch (res) {
+ case W_EMPTY:
+ /* It's impossible for us to receive a W_EMPTY here:
+
+ - Array nodes are converted to Bitmap nodes when
+ we delete 16th item from them;
+
+ - Collision nodes are converted to Bitmap when
+ there is one item in them;
+
+ - Bitmap node's without() inlines single-item
+ sub-nodes.
+
+ So in no situation we can have a single-item
+ Bitmap child of another Bitmap node.
+ */
+ Py_UNREACHABLE();
+
+ case W_NEWNODE: {
+ assert(sub_node != NULL);
+
+ if (IS_BITMAP_NODE(sub_node)) {
+ PyHamtNode_Bitmap *sub_tree = (PyHamtNode_Bitmap *)sub_node;
+ if (hamt_node_bitmap_count(sub_tree) == 1 &&
+ sub_tree->b_array[0] != NULL)
+ {
+ /* A bitmap node with one key/value pair. Just
+ merge it into this node.
+
+ Note that we don't inline Bitmap nodes that
+ have a NULL key -- those nodes point to another
+ tree level, and we cannot simply move tree levels
+ up or down.
+ */
+
+ PyHamtNode_Bitmap *clone = hamt_node_bitmap_clone(self);
+ if (clone == NULL) {
+ Py_DECREF(sub_node);
+ return W_ERROR;
+ }
+
+ PyObject *key = sub_tree->b_array[0];
+ PyObject *val = sub_tree->b_array[1];
+
+ Py_XSETREF(clone->b_array[key_idx], Py_NewRef(key));
+ Py_SETREF(clone->b_array[val_idx], Py_NewRef(val));
+
+ Py_DECREF(sub_tree);
+
+ *new_node = (PyHamtNode *)clone;
+ return W_NEWNODE;
+ }
+ }
+
+#ifdef Py_DEBUG
+ /* Ensure that Collision.without implementation
+ converts to Bitmap nodes itself.
+ */
+ if (IS_COLLISION_NODE(sub_node)) {
+ assert(hamt_node_collision_count(
+ (PyHamtNode_Collision*)sub_node) > 1);
+ }
+#endif
+
+ PyHamtNode_Bitmap *clone = hamt_node_bitmap_clone(self);
+ if (clone == NULL) {
+ return W_ERROR;
+ }
+
+ Py_SETREF(clone->b_array[val_idx],
+ (PyObject *)sub_node); /* borrow */
+
+ *new_node = (PyHamtNode *)clone;
+ return W_NEWNODE;
+ }
+
+ case W_ERROR:
+ case W_NOT_FOUND:
+ assert(sub_node == NULL);
+ return res;
+
+ default:
+ Py_UNREACHABLE();
+ }
+ }
+ else {
+ /* We have a regular key/value pair */
+
+ int cmp = PyObject_RichCompareBool(key_or_null, key, Py_EQ);
+ if (cmp < 0) {
+ return W_ERROR;
+ }
+ if (cmp == 0) {
+ return W_NOT_FOUND;
+ }
+
+ if (hamt_node_bitmap_count(self) == 1) {
+ return W_EMPTY;
+ }
+
+ *new_node = (PyHamtNode *)
+ hamt_node_bitmap_clone_without(self, bit);
+ if (*new_node == NULL) {
+ return W_ERROR;
+ }
+
+ return W_NEWNODE;
+ }
+}
+
+static hamt_find_t
+hamt_node_bitmap_find(PyHamtNode_Bitmap *self,
+ uint32_t shift, int32_t hash,
+ PyObject *key, PyObject **val)
+{
+ /* Lookup a key in a Bitmap node. */
+
+ uint32_t bit = hamt_bitpos(hash, shift);
+ uint32_t idx;
+ uint32_t key_idx;
+ uint32_t val_idx;
+ PyObject *key_or_null;
+ PyObject *val_or_node;
+ int comp_err;
+
+ if ((self->b_bitmap & bit) == 0) {
+ return F_NOT_FOUND;
+ }
+
+ idx = hamt_bitindex(self->b_bitmap, bit);
+ key_idx = idx * 2;
+ val_idx = key_idx + 1;
+
+ assert(val_idx < (size_t)Py_SIZE(self));
+
+ key_or_null = self->b_array[key_idx];
+ val_or_node = self->b_array[val_idx];
+
+ if (key_or_null == NULL) {
+ /* There are a few keys that have the same hash at the current shift
+ that match our key. Dispatch the lookup further down the tree. */
+ assert(val_or_node != NULL);
+ return hamt_node_find((PyHamtNode *)val_or_node,
+ shift + 5, hash, key, val);
+ }
+
+ /* We have only one key -- a potential match. Let's compare if the
+ key we are looking at is equal to the key we are looking for. */
+ assert(key != NULL);
+ comp_err = PyObject_RichCompareBool(key, key_or_null, Py_EQ);
+ if (comp_err < 0) { /* exception in __eq__ */
+ return F_ERROR;
+ }
+ if (comp_err == 1) { /* key == key_or_null */
+ *val = val_or_node;
+ return F_FOUND;
+ }
+
+ return F_NOT_FOUND;
+}
+
+static int
+hamt_node_bitmap_traverse(PyHamtNode_Bitmap *self, visitproc visit, void *arg)
+{
+ /* Bitmap's tp_traverse */
+
+ Py_ssize_t i;
+
+ for (i = Py_SIZE(self); --i >= 0; ) {
+ Py_VISIT(self->b_array[i]);
+ }
+
+ return 0;
+}
+
+static void
+hamt_node_bitmap_dealloc(PyHamtNode_Bitmap *self)
+{
+ /* Bitmap's tp_dealloc */
+
+ Py_ssize_t len = Py_SIZE(self);
+ Py_ssize_t i;
+
+ if (Py_SIZE(self) == 0) {
+ /* The empty node is statically allocated. */
+ assert(self == &_Py_SINGLETON(hamt_bitmap_node_empty));
+#ifdef Py_DEBUG
+ _Py_FatalRefcountError("deallocating the empty hamt node bitmap singleton");
+#else
+ return;
+#endif
+ }
+
+ PyObject_GC_UnTrack(self);
+ Py_TRASHCAN_BEGIN(self, hamt_node_bitmap_dealloc)
+
+ if (len > 0) {
+ i = len;
+ while (--i >= 0) {
+ Py_XDECREF(self->b_array[i]);
+ }
+ }
+
+ Py_TYPE(self)->tp_free((PyObject *)self);
+ Py_TRASHCAN_END
+}
+
+#ifdef Py_DEBUG
+static int
+hamt_node_bitmap_dump(PyHamtNode_Bitmap *node,
+ _PyUnicodeWriter *writer, int level)
+{
+ /* Debug build: __dump__() method implementation for Bitmap nodes. */
+
+ Py_ssize_t i;
+ PyObject *tmp1;
+ PyObject *tmp2;
+
+ if (_hamt_dump_ident(writer, level + 1)) {
+ goto error;
+ }
+
+ if (_hamt_dump_format(writer, "BitmapNode(size=%zd count=%zd ",
+ Py_SIZE(node), Py_SIZE(node) / 2))
+ {
+ goto error;
+ }
+
+ tmp1 = PyLong_FromUnsignedLong(node->b_bitmap);
+ if (tmp1 == NULL) {
+ goto error;
+ }
+ tmp2 = _PyLong_Format(tmp1, 2);
+ Py_DECREF(tmp1);
+ if (tmp2 == NULL) {
+ goto error;
+ }
+ if (_hamt_dump_format(writer, "bitmap=%S id=%p):\n", tmp2, node)) {
+ Py_DECREF(tmp2);
+ goto error;
+ }
+ Py_DECREF(tmp2);
+
+ for (i = 0; i < Py_SIZE(node); i += 2) {
+ PyObject *key_or_null = node->b_array[i];
+ PyObject *val_or_node = node->b_array[i + 1];
+
+ if (_hamt_dump_ident(writer, level + 2)) {
+ goto error;
+ }
+
+ if (key_or_null == NULL) {
+ if (_hamt_dump_format(writer, "NULL:\n")) {
+ goto error;
+ }
+
+ if (hamt_node_dump((PyHamtNode *)val_or_node,
+ writer, level + 2))
+ {
+ goto error;
+ }
+ }
+ else {
+ if (_hamt_dump_format(writer, "%R: %R", key_or_null,
+ val_or_node))
+ {
+ goto error;
+ }
+ }
+
+ if (_hamt_dump_format(writer, "\n")) {
+ goto error;
+ }
+ }
+
+ return 0;
+error:
+ return -1;
+}
+#endif /* Py_DEBUG */
+
+
+/////////////////////////////////// Collision Node
+
+
+static PyHamtNode *
+hamt_node_collision_new(int32_t hash, Py_ssize_t size)
+{
+ /* Create a new Collision node. */
+
+ PyHamtNode_Collision *node;
+ Py_ssize_t i;
+
+ assert(size >= 4);
+ assert(size % 2 == 0);
+
+ node = PyObject_GC_NewVar(
+ PyHamtNode_Collision, &_PyHamt_CollisionNode_Type, size);
+ if (node == NULL) {
+ return NULL;
+ }
+
+ for (i = 0; i < size; i++) {
+ node->c_array[i] = NULL;
+ }
+
+ Py_SET_SIZE(node, size);
+ node->c_hash = hash;
+
+ _PyObject_GC_TRACK(node);
+
+ return (PyHamtNode *)node;
+}
+
+static hamt_find_t
+hamt_node_collision_find_index(PyHamtNode_Collision *self, PyObject *key,
+ Py_ssize_t *idx)
+{
+ /* Lookup `key` in the Collision node `self`. Set the index of the
+ found key to 'idx'. */
+
+ Py_ssize_t i;
+ PyObject *el;
+
+ for (i = 0; i < Py_SIZE(self); i += 2) {
+ el = self->c_array[i];
+
+ assert(el != NULL);
+ int cmp = PyObject_RichCompareBool(key, el, Py_EQ);
+ if (cmp < 0) {
+ return F_ERROR;
+ }
+ if (cmp == 1) {
+ *idx = i;
+ return F_FOUND;
+ }
+ }
+
+ return F_NOT_FOUND;
+}
+
+static PyHamtNode *
+hamt_node_collision_assoc(PyHamtNode_Collision *self,
+ uint32_t shift, int32_t hash,
+ PyObject *key, PyObject *val, int* added_leaf)
+{
+ /* Set a new key to this level (currently a Collision node)
+ of the tree. */
+
+ if (hash == self->c_hash) {
+ /* The hash of the 'key' we are adding matches the hash of
+ other keys in this Collision node. */
+
+ Py_ssize_t key_idx = -1;
+ hamt_find_t found;
+ PyHamtNode_Collision *new_node;
+ Py_ssize_t i;
+
+ /* Let's try to lookup the new 'key', maybe we already have it. */
+ found = hamt_node_collision_find_index(self, key, &key_idx);
+ switch (found) {
+ case F_ERROR:
+ /* Exception. */
+ return NULL;
+
+ case F_NOT_FOUND:
+ /* This is a totally new key. Clone the current node,
+ add a new key/value to the cloned node. */
+
+ new_node = (PyHamtNode_Collision *)hamt_node_collision_new(
+ self->c_hash, Py_SIZE(self) + 2);
+ if (new_node == NULL) {
+ return NULL;
+ }
+
+ for (i = 0; i < Py_SIZE(self); i++) {
+ new_node->c_array[i] = Py_NewRef(self->c_array[i]);
+ }
+
+ new_node->c_array[i] = Py_NewRef(key);
+ new_node->c_array[i + 1] = Py_NewRef(val);
+
+ *added_leaf = 1;
+ return (PyHamtNode *)new_node;
+
+ case F_FOUND:
+ /* There's a key which is equal to the key we are adding. */
+
+ assert(key_idx >= 0);
+ assert(key_idx < Py_SIZE(self));
+ Py_ssize_t val_idx = key_idx + 1;
+
+ if (self->c_array[val_idx] == val) {
+ /* We're setting a key/value pair that's already set. */
+ return (PyHamtNode *)Py_NewRef(self);
+ }
+
+ /* We need to replace old value for the key
+ with a new value. Create a new Collision node.*/
+ new_node = (PyHamtNode_Collision *)hamt_node_collision_new(
+ self->c_hash, Py_SIZE(self));
+ if (new_node == NULL) {
+ return NULL;
+ }
+
+ /* Copy all elements of the old node to the new one. */
+ for (i = 0; i < Py_SIZE(self); i++) {
+ new_node->c_array[i] = Py_NewRef(self->c_array[i]);
+ }
+
+ /* Replace the old value with the new value for the our key. */
+ Py_SETREF(new_node->c_array[val_idx], Py_NewRef(val));
+
+ return (PyHamtNode *)new_node;
+
+ default:
+ Py_UNREACHABLE();
+ }
+ }
+ else {
+ /* The hash of the new key is different from the hash that
+ all keys of this Collision node have.
+
+ Create a Bitmap node inplace with two children:
+ key/value pair that we're adding, and the Collision node
+ we're replacing on this tree level.
+ */
+
+ PyHamtNode_Bitmap *new_node;
+ PyHamtNode *assoc_res;
+
+ new_node = (PyHamtNode_Bitmap *)hamt_node_bitmap_new(2);
+ if (new_node == NULL) {
+ return NULL;
+ }
+ new_node->b_bitmap = hamt_bitpos(self->c_hash, shift);
+ new_node->b_array[1] = Py_NewRef(self);
+
+ assoc_res = hamt_node_bitmap_assoc(
+ new_node, shift, hash, key, val, added_leaf);
+ Py_DECREF(new_node);
+ return assoc_res;
+ }
+}
+
+static inline Py_ssize_t
+hamt_node_collision_count(PyHamtNode_Collision *node)
+{
+ return Py_SIZE(node) / 2;
+}
+
+static hamt_without_t
+hamt_node_collision_without(PyHamtNode_Collision *self,
+ uint32_t shift, int32_t hash,
+ PyObject *key,
+ PyHamtNode **new_node)
+{
+ if (hash != self->c_hash) {
+ return W_NOT_FOUND;
+ }
+
+ Py_ssize_t key_idx = -1;
+ hamt_find_t found = hamt_node_collision_find_index(self, key, &key_idx);
+
+ switch (found) {
+ case F_ERROR:
+ return W_ERROR;
+
+ case F_NOT_FOUND:
+ return W_NOT_FOUND;
+
+ case F_FOUND:
+ assert(key_idx >= 0);
+ assert(key_idx < Py_SIZE(self));
+
+ Py_ssize_t new_count = hamt_node_collision_count(self) - 1;
+
+ if (new_count == 0) {
+ /* The node has only one key/value pair and it's for the
+ key we're trying to delete. So a new node will be empty
+ after the removal.
+ */
+ return W_EMPTY;
+ }
+
+ if (new_count == 1) {
+ /* The node has two keys, and after deletion the
+ new Collision node would have one. Collision nodes
+ with one key shouldn't exist, so convert it to a
+ Bitmap node.
+ */
+ PyHamtNode_Bitmap *node = (PyHamtNode_Bitmap *)
+ hamt_node_bitmap_new(2);
+ if (node == NULL) {
+ return W_ERROR;
+ }
+
+ if (key_idx == 0) {
+ node->b_array[0] = Py_NewRef(self->c_array[2]);
+ node->b_array[1] = Py_NewRef(self->c_array[3]);
+ }
+ else {
+ assert(key_idx == 2);
+ node->b_array[0] = Py_NewRef(self->c_array[0]);
+ node->b_array[1] = Py_NewRef(self->c_array[1]);
+ }
+
+ node->b_bitmap = hamt_bitpos(hash, shift);
+
+ *new_node = (PyHamtNode *)node;
+ return W_NEWNODE;
+ }
+
+ /* Allocate a new Collision node with capacity for one
+ less key/value pair */
+ PyHamtNode_Collision *new = (PyHamtNode_Collision *)
+ hamt_node_collision_new(
+ self->c_hash, Py_SIZE(self) - 2);
+ if (new == NULL) {
+ return W_ERROR;
+ }
+
+ /* Copy all other keys from `self` to `new` */
+ Py_ssize_t i;
+ for (i = 0; i < key_idx; i++) {
+ new->c_array[i] = Py_NewRef(self->c_array[i]);
+ }
+ for (i = key_idx + 2; i < Py_SIZE(self); i++) {
+ new->c_array[i - 2] = Py_NewRef(self->c_array[i]);
+ }
+
+ *new_node = (PyHamtNode*)new;
+ return W_NEWNODE;
+
+ default:
+ Py_UNREACHABLE();
+ }
+}
+
+static hamt_find_t
+hamt_node_collision_find(PyHamtNode_Collision *self,
+ uint32_t shift, int32_t hash,
+ PyObject *key, PyObject **val)
+{
+ /* Lookup `key` in the Collision node `self`. Set the value
+ for the found key to 'val'. */
+
+ Py_ssize_t idx = -1;
+ hamt_find_t res;
+
+ res = hamt_node_collision_find_index(self, key, &idx);
+ if (res == F_ERROR || res == F_NOT_FOUND) {
+ return res;
+ }
+
+ assert(idx >= 0);
+ assert(idx + 1 < Py_SIZE(self));
+
+ *val = self->c_array[idx + 1];
+ assert(*val != NULL);
+
+ return F_FOUND;
+}
+
+
+static int
+hamt_node_collision_traverse(PyHamtNode_Collision *self,
+ visitproc visit, void *arg)
+{
+ /* Collision's tp_traverse */
+
+ Py_ssize_t i;
+
+ for (i = Py_SIZE(self); --i >= 0; ) {
+ Py_VISIT(self->c_array[i]);
+ }
+
+ return 0;
+}
+
+static void
+hamt_node_collision_dealloc(PyHamtNode_Collision *self)
+{
+ /* Collision's tp_dealloc */
+
+ Py_ssize_t len = Py_SIZE(self);
+
+ PyObject_GC_UnTrack(self);
+ Py_TRASHCAN_BEGIN(self, hamt_node_collision_dealloc)
+
+ if (len > 0) {
+
+ while (--len >= 0) {
+ Py_XDECREF(self->c_array[len]);
+ }
+ }
+
+ Py_TYPE(self)->tp_free((PyObject *)self);
+ Py_TRASHCAN_END
+}
+
+#ifdef Py_DEBUG
+static int
+hamt_node_collision_dump(PyHamtNode_Collision *node,
+ _PyUnicodeWriter *writer, int level)
+{
+ /* Debug build: __dump__() method implementation for Collision nodes. */
+
+ Py_ssize_t i;
+
+ if (_hamt_dump_ident(writer, level + 1)) {
+ goto error;
+ }
+
+ if (_hamt_dump_format(writer, "CollisionNode(size=%zd id=%p):\n",
+ Py_SIZE(node), node))
+ {
+ goto error;
+ }
+
+ for (i = 0; i < Py_SIZE(node); i += 2) {
+ PyObject *key = node->c_array[i];
+ PyObject *val = node->c_array[i + 1];
+
+ if (_hamt_dump_ident(writer, level + 2)) {
+ goto error;
+ }
+
+ if (_hamt_dump_format(writer, "%R: %R\n", key, val)) {
+ goto error;
+ }
+ }
+
+ return 0;
+error:
+ return -1;
+}
+#endif /* Py_DEBUG */
+
+
+/////////////////////////////////// Array Node
+
+
+static PyHamtNode *
+hamt_node_array_new(Py_ssize_t count)
+{
+ Py_ssize_t i;
+
+ PyHamtNode_Array *node = PyObject_GC_New(
+ PyHamtNode_Array, &_PyHamt_ArrayNode_Type);
+ if (node == NULL) {
+ return NULL;
+ }
+
+ for (i = 0; i < HAMT_ARRAY_NODE_SIZE; i++) {
+ node->a_array[i] = NULL;
+ }
+
+ node->a_count = count;
+
+ _PyObject_GC_TRACK(node);
+ return (PyHamtNode *)node;
+}
+
+static PyHamtNode_Array *
+hamt_node_array_clone(PyHamtNode_Array *node)
+{
+ PyHamtNode_Array *clone;
+ Py_ssize_t i;
+
+ VALIDATE_ARRAY_NODE(node)
+
+ /* Create a new Array node. */
+ clone = (PyHamtNode_Array *)hamt_node_array_new(node->a_count);
+ if (clone == NULL) {
+ return NULL;
+ }
+
+ /* Copy all elements from the current Array node to the new one. */
+ for (i = 0; i < HAMT_ARRAY_NODE_SIZE; i++) {
+ clone->a_array[i] = (PyHamtNode*)Py_XNewRef(node->a_array[i]);
+ }
+
+ VALIDATE_ARRAY_NODE(clone)
+ return clone;
+}
+
+static PyHamtNode *
+hamt_node_array_assoc(PyHamtNode_Array *self,
+ uint32_t shift, int32_t hash,
+ PyObject *key, PyObject *val, int* added_leaf)
+{
+ /* Set a new key to this level (currently a Collision node)
+ of the tree.
+
+ Array nodes don't store values, they can only point to
+ other nodes. They are simple arrays of 32 BaseNode pointers/
+ */
+
+ uint32_t idx = hamt_mask(hash, shift);
+ PyHamtNode *node = self->a_array[idx];
+ PyHamtNode *child_node;
+ PyHamtNode_Array *new_node;
+ Py_ssize_t i;
+
+ if (node == NULL) {
+ /* There's no child node for the given hash. Create a new
+ Bitmap node for this key. */
+
+ PyHamtNode_Bitmap *empty = NULL;
+
+ /* Get an empty Bitmap node to work with. */
+ empty = (PyHamtNode_Bitmap *)hamt_node_bitmap_new(0);
+ if (empty == NULL) {
+ return NULL;
+ }
+
+ /* Set key/val to the newly created empty Bitmap, thus
+ creating a new Bitmap node with our key/value pair. */
+ child_node = hamt_node_bitmap_assoc(
+ empty,
+ shift + 5, hash, key, val, added_leaf);
+ Py_DECREF(empty);
+ if (child_node == NULL) {
+ return NULL;
+ }
+
+ /* Create a new Array node. */
+ new_node = (PyHamtNode_Array *)hamt_node_array_new(self->a_count + 1);
+ if (new_node == NULL) {
+ Py_DECREF(child_node);
+ return NULL;
+ }
+
+ /* Copy all elements from the current Array node to the
+ new one. */
+ for (i = 0; i < HAMT_ARRAY_NODE_SIZE; i++) {
+ new_node->a_array[i] = (PyHamtNode*)Py_XNewRef(self->a_array[i]);
+ }
+
+ assert(new_node->a_array[idx] == NULL);
+ new_node->a_array[idx] = child_node; /* borrow */
+ VALIDATE_ARRAY_NODE(new_node)
+ }
+ else {
+ /* There's a child node for the given hash.
+ Set the key to it./ */
+ child_node = hamt_node_assoc(
+ node, shift + 5, hash, key, val, added_leaf);
+ if (child_node == NULL) {
+ return NULL;
+ }
+ else if (child_node == (PyHamtNode *)self) {
+ Py_DECREF(child_node);
+ return (PyHamtNode *)self;
+ }
+
+ new_node = hamt_node_array_clone(self);
+ if (new_node == NULL) {
+ Py_DECREF(child_node);
+ return NULL;
+ }
+
+ Py_SETREF(new_node->a_array[idx], child_node); /* borrow */
+ VALIDATE_ARRAY_NODE(new_node)
+ }
+
+ return (PyHamtNode *)new_node;
+}
+
+static hamt_without_t
+hamt_node_array_without(PyHamtNode_Array *self,
+ uint32_t shift, int32_t hash,
+ PyObject *key,
+ PyHamtNode **new_node)
+{
+ uint32_t idx = hamt_mask(hash, shift);
+ PyHamtNode *node = self->a_array[idx];
+
+ if (node == NULL) {
+ return W_NOT_FOUND;
+ }
+
+ PyHamtNode *sub_node = NULL;
+ hamt_without_t res = hamt_node_without(
+ (PyHamtNode *)node,
+ shift + 5, hash, key, &sub_node);
+
+ switch (res) {
+ case W_NOT_FOUND:
+ case W_ERROR:
+ assert(sub_node == NULL);
+ return res;
+
+ case W_NEWNODE: {
+ /* We need to replace a node at the `idx` index.
+ Clone this node and replace.
+ */
+ assert(sub_node != NULL);
+
+ PyHamtNode_Array *clone = hamt_node_array_clone(self);
+ if (clone == NULL) {
+ Py_DECREF(sub_node);
+ return W_ERROR;
+ }
+
+ Py_SETREF(clone->a_array[idx], sub_node); /* borrow */
+ *new_node = (PyHamtNode*)clone; /* borrow */
+ return W_NEWNODE;
+ }
+
+ case W_EMPTY: {
+ assert(sub_node == NULL);
+ /* We need to remove a node at the `idx` index.
+ Calculate the size of the replacement Array node.
+ */
+ Py_ssize_t new_count = self->a_count - 1;
+
+ if (new_count == 0) {
+ return W_EMPTY;
+ }
+
+ if (new_count >= 16) {
+ /* We convert Bitmap nodes to Array nodes, when a
+ Bitmap node needs to store more than 15 key/value
+ pairs. So we will create a new Array node if we
+ the number of key/values after deletion is still
+ greater than 15.
+ */
+
+ PyHamtNode_Array *new = hamt_node_array_clone(self);
+ if (new == NULL) {
+ return W_ERROR;
+ }
+ new->a_count = new_count;
+ Py_CLEAR(new->a_array[idx]);
+
+ *new_node = (PyHamtNode*)new; /* borrow */
+ return W_NEWNODE;
+ }
+
+ /* New Array node would have less than 16 key/value
+ pairs. We need to create a replacement Bitmap node. */
+
+ Py_ssize_t bitmap_size = new_count * 2;
+ uint32_t bitmap = 0;
+
+ PyHamtNode_Bitmap *new = (PyHamtNode_Bitmap *)
+ hamt_node_bitmap_new(bitmap_size);
+ if (new == NULL) {
+ return W_ERROR;
+ }
+
+ Py_ssize_t new_i = 0;
+ for (uint32_t i = 0; i < HAMT_ARRAY_NODE_SIZE; i++) {
+ if (i == idx) {
+ /* Skip the node we are deleting. */
+ continue;
+ }
+
+ PyHamtNode *node = self->a_array[i];
+ if (node == NULL) {
+ /* Skip any missing nodes. */
+ continue;
+ }
+
+ bitmap |= 1U << i;
+
+ if (IS_BITMAP_NODE(node)) {
+ PyHamtNode_Bitmap *child = (PyHamtNode_Bitmap *)node;
+
+ if (hamt_node_bitmap_count(child) == 1 &&
+ child->b_array[0] != NULL)
+ {
+ /* node is a Bitmap with one key/value pair, just
+ merge it into the new Bitmap node we're building.
+
+ Note that we don't inline Bitmap nodes that
+ have a NULL key -- those nodes point to another
+ tree level, and we cannot simply move tree levels
+ up or down.
+ */
+ PyObject *key = child->b_array[0];
+ PyObject *val = child->b_array[1];
+
+ new->b_array[new_i] = Py_NewRef(key);
+ new->b_array[new_i + 1] = Py_NewRef(val);
+ }
+ else {
+ new->b_array[new_i] = NULL;
+ new->b_array[new_i + 1] = Py_NewRef(node);
+ }
+ }
+ else {
+
+#ifdef Py_DEBUG
+ if (IS_COLLISION_NODE(node)) {
+ Py_ssize_t child_count = hamt_node_collision_count(
+ (PyHamtNode_Collision*)node);
+ assert(child_count > 1);
+ }
+ else if (IS_ARRAY_NODE(node)) {
+ assert(((PyHamtNode_Array*)node)->a_count >= 16);
+ }
+#endif
+
+ /* Just copy the node into our new Bitmap */
+ new->b_array[new_i] = NULL;
+ new->b_array[new_i + 1] = Py_NewRef(node);
+ }
+
+ new_i += 2;
+ }
+
+ new->b_bitmap = bitmap;
+ *new_node = (PyHamtNode*)new; /* borrow */
+ return W_NEWNODE;
+ }
+
+ default:
+ Py_UNREACHABLE();
+ }
+}
+
+static hamt_find_t
+hamt_node_array_find(PyHamtNode_Array *self,
+ uint32_t shift, int32_t hash,
+ PyObject *key, PyObject **val)
+{
+ /* Lookup `key` in the Array node `self`. Set the value
+ for the found key to 'val'. */
+
+ uint32_t idx = hamt_mask(hash, shift);
+ PyHamtNode *node;
+
+ node = self->a_array[idx];
+ if (node == NULL) {
+ return F_NOT_FOUND;
+ }
+
+ /* Dispatch to the generic hamt_node_find */
+ return hamt_node_find(node, shift + 5, hash, key, val);
+}
+
+static int
+hamt_node_array_traverse(PyHamtNode_Array *self,
+ visitproc visit, void *arg)
+{
+ /* Array's tp_traverse */
+
+ Py_ssize_t i;
+
+ for (i = 0; i < HAMT_ARRAY_NODE_SIZE; i++) {
+ Py_VISIT(self->a_array[i]);
+ }
+
+ return 0;
+}
+
+static void
+hamt_node_array_dealloc(PyHamtNode_Array *self)
+{
+ /* Array's tp_dealloc */
+
+ Py_ssize_t i;
+
+ PyObject_GC_UnTrack(self);
+ Py_TRASHCAN_BEGIN(self, hamt_node_array_dealloc)
+
+ for (i = 0; i < HAMT_ARRAY_NODE_SIZE; i++) {
+ Py_XDECREF(self->a_array[i]);
+ }
+
+ Py_TYPE(self)->tp_free((PyObject *)self);
+ Py_TRASHCAN_END
+}
+
+#ifdef Py_DEBUG
+static int
+hamt_node_array_dump(PyHamtNode_Array *node,
+ _PyUnicodeWriter *writer, int level)
+{
+ /* Debug build: __dump__() method implementation for Array nodes. */
+
+ Py_ssize_t i;
+
+ if (_hamt_dump_ident(writer, level + 1)) {
+ goto error;
+ }
+
+ if (_hamt_dump_format(writer, "ArrayNode(id=%p):\n", node)) {
+ goto error;
+ }
+
+ for (i = 0; i < HAMT_ARRAY_NODE_SIZE; i++) {
+ if (node->a_array[i] == NULL) {
+ continue;
+ }
+
+ if (_hamt_dump_ident(writer, level + 2)) {
+ goto error;
+ }
+
+ if (_hamt_dump_format(writer, "%zd::\n", i)) {
+ goto error;
+ }
+
+ if (hamt_node_dump(node->a_array[i], writer, level + 1)) {
+ goto error;
+ }
+
+ if (_hamt_dump_format(writer, "\n")) {
+ goto error;
+ }
+ }
+
+ return 0;
+error:
+ return -1;
+}
+#endif /* Py_DEBUG */
+
+
+/////////////////////////////////// Node Dispatch
+
+
+static PyHamtNode *
+hamt_node_assoc(PyHamtNode *node,
+ uint32_t shift, int32_t hash,
+ PyObject *key, PyObject *val, int* added_leaf)
+{
+ /* Set key/value to the 'node' starting with the given shift/hash.
+ Return a new node, or the same node if key/value already
+ set.
+
+ added_leaf will be set to 1 if key/value wasn't in the
+ tree before.
+
+ This method automatically dispatches to the suitable
+ hamt_node_{nodetype}_assoc method.
+ */
+
+ if (IS_BITMAP_NODE(node)) {
+ return hamt_node_bitmap_assoc(
+ (PyHamtNode_Bitmap *)node,
+ shift, hash, key, val, added_leaf);
+ }
+ else if (IS_ARRAY_NODE(node)) {
+ return hamt_node_array_assoc(
+ (PyHamtNode_Array *)node,
+ shift, hash, key, val, added_leaf);
+ }
+ else {
+ assert(IS_COLLISION_NODE(node));
+ return hamt_node_collision_assoc(
+ (PyHamtNode_Collision *)node,
+ shift, hash, key, val, added_leaf);
+ }
+}
+
+static hamt_without_t
+hamt_node_without(PyHamtNode *node,
+ uint32_t shift, int32_t hash,
+ PyObject *key,
+ PyHamtNode **new_node)
+{
+ if (IS_BITMAP_NODE(node)) {
+ return hamt_node_bitmap_without(
+ (PyHamtNode_Bitmap *)node,
+ shift, hash, key,
+ new_node);
+ }
+ else if (IS_ARRAY_NODE(node)) {
+ return hamt_node_array_without(
+ (PyHamtNode_Array *)node,
+ shift, hash, key,
+ new_node);
+ }
+ else {
+ assert(IS_COLLISION_NODE(node));
+ return hamt_node_collision_without(
+ (PyHamtNode_Collision *)node,
+ shift, hash, key,
+ new_node);
+ }
+}
+
+static hamt_find_t
+hamt_node_find(PyHamtNode *node,
+ uint32_t shift, int32_t hash,
+ PyObject *key, PyObject **val)
+{
+ /* Find the key in the node starting with the given shift/hash.
+
+ If a value is found, the result will be set to F_FOUND, and
+ *val will point to the found value object.
+
+ If a value wasn't found, the result will be set to F_NOT_FOUND.
+
+ If an exception occurs during the call, the result will be F_ERROR.
+
+ This method automatically dispatches to the suitable
+ hamt_node_{nodetype}_find method.
+ */
+
+ if (IS_BITMAP_NODE(node)) {
+ return hamt_node_bitmap_find(
+ (PyHamtNode_Bitmap *)node,
+ shift, hash, key, val);
+
+ }
+ else if (IS_ARRAY_NODE(node)) {
+ return hamt_node_array_find(
+ (PyHamtNode_Array *)node,
+ shift, hash, key, val);
+ }
+ else {
+ assert(IS_COLLISION_NODE(node));
+ return hamt_node_collision_find(
+ (PyHamtNode_Collision *)node,
+ shift, hash, key, val);
+ }
+}
+
+#ifdef Py_DEBUG
+static int
+hamt_node_dump(PyHamtNode *node,
+ _PyUnicodeWriter *writer, int level)
+{
+ /* Debug build: __dump__() method implementation for a node.
+
+ This method automatically dispatches to the suitable
+ hamt_node_{nodetype})_dump method.
+ */
+
+ if (IS_BITMAP_NODE(node)) {
+ return hamt_node_bitmap_dump(
+ (PyHamtNode_Bitmap *)node, writer, level);
+ }
+ else if (IS_ARRAY_NODE(node)) {
+ return hamt_node_array_dump(
+ (PyHamtNode_Array *)node, writer, level);
+ }
+ else {
+ assert(IS_COLLISION_NODE(node));
+ return hamt_node_collision_dump(
+ (PyHamtNode_Collision *)node, writer, level);
+ }
+}
+#endif /* Py_DEBUG */
+
+
+/////////////////////////////////// Iterators: Machinery
+
+
+static hamt_iter_t
+hamt_iterator_next(PyHamtIteratorState *iter, PyObject **key, PyObject **val);
+
+
+static void
+hamt_iterator_init(PyHamtIteratorState *iter, PyHamtNode *root)
+{
+ for (uint32_t i = 0; i < _Py_HAMT_MAX_TREE_DEPTH; i++) {
+ iter->i_nodes[i] = NULL;
+ iter->i_pos[i] = 0;
+ }
+
+ iter->i_level = 0;
+
+ /* Note: we don't incref/decref nodes in i_nodes. */
+ iter->i_nodes[0] = root;
+}
+
+static hamt_iter_t
+hamt_iterator_bitmap_next(PyHamtIteratorState *iter,
+ PyObject **key, PyObject **val)
+{
+ int8_t level = iter->i_level;
+
+ PyHamtNode_Bitmap *node = (PyHamtNode_Bitmap *)(iter->i_nodes[level]);
+ Py_ssize_t pos = iter->i_pos[level];
+
+ if (pos + 1 >= Py_SIZE(node)) {
+#ifdef Py_DEBUG
+ assert(iter->i_level >= 0);
+ iter->i_nodes[iter->i_level] = NULL;
+#endif
+ iter->i_level--;
+ return hamt_iterator_next(iter, key, val);
+ }
+
+ if (node->b_array[pos] == NULL) {
+ iter->i_pos[level] = pos + 2;
+
+ int8_t next_level = level + 1;
+ assert(next_level < _Py_HAMT_MAX_TREE_DEPTH);
+ iter->i_level = next_level;
+ iter->i_pos[next_level] = 0;
+ iter->i_nodes[next_level] = (PyHamtNode *)
+ node->b_array[pos + 1];
+
+ return hamt_iterator_next(iter, key, val);
+ }
+
+ *key = node->b_array[pos];
+ *val = node->b_array[pos + 1];
+ iter->i_pos[level] = pos + 2;
+ return I_ITEM;
+}
+
+static hamt_iter_t
+hamt_iterator_collision_next(PyHamtIteratorState *iter,
+ PyObject **key, PyObject **val)
+{
+ int8_t level = iter->i_level;
+
+ PyHamtNode_Collision *node = (PyHamtNode_Collision *)(iter->i_nodes[level]);
+ Py_ssize_t pos = iter->i_pos[level];
+
+ if (pos + 1 >= Py_SIZE(node)) {
+#ifdef Py_DEBUG
+ assert(iter->i_level >= 0);
+ iter->i_nodes[iter->i_level] = NULL;
+#endif
+ iter->i_level--;
+ return hamt_iterator_next(iter, key, val);
+ }
+
+ *key = node->c_array[pos];
+ *val = node->c_array[pos + 1];
+ iter->i_pos[level] = pos + 2;
+ return I_ITEM;
+}
+
+static hamt_iter_t
+hamt_iterator_array_next(PyHamtIteratorState *iter,
+ PyObject **key, PyObject **val)
+{
+ int8_t level = iter->i_level;
+
+ PyHamtNode_Array *node = (PyHamtNode_Array *)(iter->i_nodes[level]);
+ Py_ssize_t pos = iter->i_pos[level];
+
+ if (pos >= HAMT_ARRAY_NODE_SIZE) {
+#ifdef Py_DEBUG
+ assert(iter->i_level >= 0);
+ iter->i_nodes[iter->i_level] = NULL;
+#endif
+ iter->i_level--;
+ return hamt_iterator_next(iter, key, val);
+ }
+
+ for (Py_ssize_t i = pos; i < HAMT_ARRAY_NODE_SIZE; i++) {
+ if (node->a_array[i] != NULL) {
+ iter->i_pos[level] = i + 1;
+
+ int8_t next_level = level + 1;
+ assert(next_level < _Py_HAMT_MAX_TREE_DEPTH);
+ iter->i_pos[next_level] = 0;
+ iter->i_nodes[next_level] = node->a_array[i];
+ iter->i_level = next_level;
+
+ return hamt_iterator_next(iter, key, val);
+ }
+ }
+
+#ifdef Py_DEBUG
+ assert(iter->i_level >= 0);
+ iter->i_nodes[iter->i_level] = NULL;
+#endif
+
+ iter->i_level--;
+ return hamt_iterator_next(iter, key, val);
+}
+
+static hamt_iter_t
+hamt_iterator_next(PyHamtIteratorState *iter, PyObject **key, PyObject **val)
+{
+ if (iter->i_level < 0) {
+ return I_END;
+ }
+
+ assert(iter->i_level < _Py_HAMT_MAX_TREE_DEPTH);
+
+ PyHamtNode *current = iter->i_nodes[iter->i_level];
+
+ if (IS_BITMAP_NODE(current)) {
+ return hamt_iterator_bitmap_next(iter, key, val);
+ }
+ else if (IS_ARRAY_NODE(current)) {
+ return hamt_iterator_array_next(iter, key, val);
+ }
+ else {
+ assert(IS_COLLISION_NODE(current));
+ return hamt_iterator_collision_next(iter, key, val);
+ }
+}
+
+
+/////////////////////////////////// HAMT high-level functions
+
+
+PyHamtObject *
+_PyHamt_Assoc(PyHamtObject *o, PyObject *key, PyObject *val)
+{
+ int32_t key_hash;
+ int added_leaf = 0;
+ PyHamtNode *new_root;
+ PyHamtObject *new_o;
+
+ key_hash = hamt_hash(key);
+ if (key_hash == -1) {
+ return NULL;
+ }
+
+ new_root = hamt_node_assoc(
+ (PyHamtNode *)(o->h_root),
+ 0, key_hash, key, val, &added_leaf);
+ if (new_root == NULL) {
+ return NULL;
+ }
+
+ if (new_root == o->h_root) {
+ Py_DECREF(new_root);
+ return (PyHamtObject*)Py_NewRef(o);
+ }
+
+ new_o = hamt_alloc();
+ if (new_o == NULL) {
+ Py_DECREF(new_root);
+ return NULL;
+ }
+
+ new_o->h_root = new_root; /* borrow */
+ new_o->h_count = added_leaf ? o->h_count + 1 : o->h_count;
+
+ return new_o;
+}
+
+PyHamtObject *
+_PyHamt_Without(PyHamtObject *o, PyObject *key)
+{
+ int32_t key_hash = hamt_hash(key);
+ if (key_hash == -1) {
+ return NULL;
+ }
+
+ PyHamtNode *new_root = NULL;
+
+ hamt_without_t res = hamt_node_without(
+ (PyHamtNode *)(o->h_root),
+ 0, key_hash, key,
+ &new_root);
+
+ switch (res) {
+ case W_ERROR:
+ return NULL;
+ case W_EMPTY:
+ return _PyHamt_New();
+ case W_NOT_FOUND:
+ return (PyHamtObject*)Py_NewRef(o);
+ case W_NEWNODE: {
+ assert(new_root != NULL);
+
+ PyHamtObject *new_o = hamt_alloc();
+ if (new_o == NULL) {
+ Py_DECREF(new_root);
+ return NULL;
+ }
+
+ new_o->h_root = new_root; /* borrow */
+ new_o->h_count = o->h_count - 1;
+ assert(new_o->h_count >= 0);
+ return new_o;
+ }
+ default:
+ Py_UNREACHABLE();
+ }
+}
+
+static hamt_find_t
+hamt_find(PyHamtObject *o, PyObject *key, PyObject **val)
+{
+ if (o->h_count == 0) {
+ return F_NOT_FOUND;
+ }
+
+ int32_t key_hash = hamt_hash(key);
+ if (key_hash == -1) {
+ return F_ERROR;
+ }
+
+ return hamt_node_find(o->h_root, 0, key_hash, key, val);
+}
+
+
+int
+_PyHamt_Find(PyHamtObject *o, PyObject *key, PyObject **val)
+{
+ hamt_find_t res = hamt_find(o, key, val);
+ switch (res) {
+ case F_ERROR:
+ return -1;
+ case F_NOT_FOUND:
+ return 0;
+ case F_FOUND:
+ return 1;
+ default:
+ Py_UNREACHABLE();
+ }
+}
+
+
+int
+_PyHamt_Eq(PyHamtObject *v, PyHamtObject *w)
+{
+ if (v == w) {
+ return 1;
+ }
+
+ if (v->h_count != w->h_count) {
+ return 0;
+ }
+
+ PyHamtIteratorState iter;
+ hamt_iter_t iter_res;
+ hamt_find_t find_res;
+ PyObject *v_key;
+ PyObject *v_val;
+ PyObject *w_val;
+
+ hamt_iterator_init(&iter, v->h_root);
+
+ do {
+ iter_res = hamt_iterator_next(&iter, &v_key, &v_val);
+ if (iter_res == I_ITEM) {
+ find_res = hamt_find(w, v_key, &w_val);
+ switch (find_res) {
+ case F_ERROR:
+ return -1;
+
+ case F_NOT_FOUND:
+ return 0;
+
+ case F_FOUND: {
+ int cmp = PyObject_RichCompareBool(v_val, w_val, Py_EQ);
+ if (cmp < 0) {
+ return -1;
+ }
+ if (cmp == 0) {
+ return 0;
+ }
+ }
+ }
+ }
+ } while (iter_res != I_END);
+
+ return 1;
+}
+
+Py_ssize_t
+_PyHamt_Len(PyHamtObject *o)
+{
+ return o->h_count;
+}
+
+static PyHamtObject *
+hamt_alloc(void)
+{
+ PyHamtObject *o;
+ o = PyObject_GC_New(PyHamtObject, &_PyHamt_Type);
+ if (o == NULL) {
+ return NULL;
+ }
+ o->h_count = 0;
+ o->h_root = NULL;
+ o->h_weakreflist = NULL;
+ PyObject_GC_Track(o);
+ return o;
+}
+
+#define _empty_hamt \
+ (&_Py_INTERP_SINGLETON(_PyInterpreterState_Get(), hamt_empty))
+
+PyHamtObject *
+_PyHamt_New(void)
+{
+ /* HAMT is an immutable object so we can easily cache an
+ empty instance. */
+ return (PyHamtObject*)Py_NewRef(_empty_hamt);
+}
+
+#ifdef Py_DEBUG
+static PyObject *
+hamt_dump(PyHamtObject *self)
+{
+ _PyUnicodeWriter writer;
+
+ _PyUnicodeWriter_Init(&writer);
+
+ if (_hamt_dump_format(&writer, "HAMT(len=%zd):\n", self->h_count)) {
+ goto error;
+ }
+
+ if (hamt_node_dump(self->h_root, &writer, 0)) {
+ goto error;
+ }
+
+ return _PyUnicodeWriter_Finish(&writer);
+
+error:
+ _PyUnicodeWriter_Dealloc(&writer);
+ return NULL;
+}
+#endif /* Py_DEBUG */
+
+
+/////////////////////////////////// Iterators: Shared Iterator Implementation
+
+
+static int
+hamt_baseiter_tp_clear(PyHamtIterator *it)
+{
+ Py_CLEAR(it->hi_obj);
+ return 0;
+}
+
+static void
+hamt_baseiter_tp_dealloc(PyHamtIterator *it)
+{
+ PyObject_GC_UnTrack(it);
+ (void)hamt_baseiter_tp_clear(it);
+ PyObject_GC_Del(it);
+}
+
+static int
+hamt_baseiter_tp_traverse(PyHamtIterator *it, visitproc visit, void *arg)
+{
+ Py_VISIT(it->hi_obj);
+ return 0;
+}
+
+static PyObject *
+hamt_baseiter_tp_iternext(PyHamtIterator *it)
+{
+ PyObject *key;
+ PyObject *val;
+ hamt_iter_t res = hamt_iterator_next(&it->hi_iter, &key, &val);
+
+ switch (res) {
+ case I_END:
+ PyErr_SetNone(PyExc_StopIteration);
+ return NULL;
+
+ case I_ITEM: {
+ return (*(it->hi_yield))(key, val);
+ }
+
+ default: {
+ Py_UNREACHABLE();
+ }
+ }
+}
+
+static Py_ssize_t
+hamt_baseiter_tp_len(PyHamtIterator *it)
+{
+ return it->hi_obj->h_count;
+}
+
+static PyMappingMethods PyHamtIterator_as_mapping = {
+ (lenfunc)hamt_baseiter_tp_len,
+};
+
+static PyObject *
+hamt_baseiter_new(PyTypeObject *type, binaryfunc yield, PyHamtObject *o)
+{
+ PyHamtIterator *it = PyObject_GC_New(PyHamtIterator, type);
+ if (it == NULL) {
+ return NULL;
+ }
+
+ it->hi_obj = (PyHamtObject*)Py_NewRef(o);
+ it->hi_yield = yield;
+
+ hamt_iterator_init(&it->hi_iter, o->h_root);
+
+ return (PyObject*)it;
+}
+
+#define ITERATOR_TYPE_SHARED_SLOTS \
+ .tp_basicsize = sizeof(PyHamtIterator), \
+ .tp_itemsize = 0, \
+ .tp_as_mapping = &PyHamtIterator_as_mapping, \
+ .tp_dealloc = (destructor)hamt_baseiter_tp_dealloc, \
+ .tp_getattro = PyObject_GenericGetAttr, \
+ .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC, \
+ .tp_traverse = (traverseproc)hamt_baseiter_tp_traverse, \
+ .tp_clear = (inquiry)hamt_baseiter_tp_clear, \
+ .tp_iter = PyObject_SelfIter, \
+ .tp_iternext = (iternextfunc)hamt_baseiter_tp_iternext,
+
+
+/////////////////////////////////// _PyHamtItems_Type
+
+
+PyTypeObject _PyHamtItems_Type = {
+ PyVarObject_HEAD_INIT(NULL, 0)
+ "items",
+ ITERATOR_TYPE_SHARED_SLOTS
+};
+
+static PyObject *
+hamt_iter_yield_items(PyObject *key, PyObject *val)
+{
+ return PyTuple_Pack(2, key, val);
+}
+
+PyObject *
+_PyHamt_NewIterItems(PyHamtObject *o)
+{
+ return hamt_baseiter_new(
+ &_PyHamtItems_Type, hamt_iter_yield_items, o);
+}
+
+
+/////////////////////////////////// _PyHamtKeys_Type
+
+
+PyTypeObject _PyHamtKeys_Type = {
+ PyVarObject_HEAD_INIT(NULL, 0)
+ "keys",
+ ITERATOR_TYPE_SHARED_SLOTS
+};
+
+static PyObject *
+hamt_iter_yield_keys(PyObject *key, PyObject *val)
+{
+ return Py_NewRef(key);
+}
+
+PyObject *
+_PyHamt_NewIterKeys(PyHamtObject *o)
+{
+ return hamt_baseiter_new(
+ &_PyHamtKeys_Type, hamt_iter_yield_keys, o);
+}
+
+
+/////////////////////////////////// _PyHamtValues_Type
+
+
+PyTypeObject _PyHamtValues_Type = {
+ PyVarObject_HEAD_INIT(NULL, 0)
+ "values",
+ ITERATOR_TYPE_SHARED_SLOTS
+};
+
+static PyObject *
+hamt_iter_yield_values(PyObject *key, PyObject *val)
+{
+ return Py_NewRef(val);
+}
+
+PyObject *
+_PyHamt_NewIterValues(PyHamtObject *o)
+{
+ return hamt_baseiter_new(
+ &_PyHamtValues_Type, hamt_iter_yield_values, o);
+}
+
+
+/////////////////////////////////// _PyHamt_Type
+
+
+#ifdef Py_DEBUG
+static PyObject *
+hamt_dump(PyHamtObject *self);
+#endif
+
+
+static PyObject *
+hamt_tp_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
+{
+ return (PyObject*)_PyHamt_New();
+}
+
+static int
+hamt_tp_clear(PyHamtObject *self)
+{
+ Py_CLEAR(self->h_root);
+ return 0;
+}
+
+
+static int
+hamt_tp_traverse(PyHamtObject *self, visitproc visit, void *arg)
+{
+ Py_VISIT(self->h_root);
+ return 0;
+}
+
+static void
+hamt_tp_dealloc(PyHamtObject *self)
+{
+ if (self == _empty_hamt) {
+ /* The empty one is statically allocated. */
+#ifdef Py_DEBUG
+ _Py_FatalRefcountError("deallocating the empty hamt singleton");
+#else
+ return;
+#endif
+ }
+
+ PyObject_GC_UnTrack(self);
+ if (self->h_weakreflist != NULL) {
+ PyObject_ClearWeakRefs((PyObject*)self);
+ }
+ (void)hamt_tp_clear(self);
+ Py_TYPE(self)->tp_free(self);
+}
+
+
+static PyObject *
+hamt_tp_richcompare(PyObject *v, PyObject *w, int op)
+{
+ if (!PyHamt_Check(v) || !PyHamt_Check(w) || (op != Py_EQ && op != Py_NE)) {
+ Py_RETURN_NOTIMPLEMENTED;
+ }
+
+ int res = _PyHamt_Eq((PyHamtObject *)v, (PyHamtObject *)w);
+ if (res < 0) {
+ return NULL;
+ }
+
+ if (op == Py_NE) {
+ res = !res;
+ }
+
+ if (res) {
+ Py_RETURN_TRUE;
+ }
+ else {
+ Py_RETURN_FALSE;
+ }
+}
+
+static int
+hamt_tp_contains(PyHamtObject *self, PyObject *key)
+{
+ PyObject *val;
+ return _PyHamt_Find(self, key, &val);
+}
+
+static PyObject *
+hamt_tp_subscript(PyHamtObject *self, PyObject *key)
+{
+ PyObject *val;
+ hamt_find_t res = hamt_find(self, key, &val);
+ switch (res) {
+ case F_ERROR:
+ return NULL;
+ case F_FOUND:
+ return Py_NewRef(val);
+ case F_NOT_FOUND:
+ PyErr_SetObject(PyExc_KeyError, key);
+ return NULL;
+ default:
+ Py_UNREACHABLE();
+ }
+}
+
+static Py_ssize_t
+hamt_tp_len(PyHamtObject *self)
+{
+ return _PyHamt_Len(self);
+}
+
+static PyObject *
+hamt_tp_iter(PyHamtObject *self)
+{
+ return _PyHamt_NewIterKeys(self);
+}
+
+static PyObject *
+hamt_py_set(PyHamtObject *self, PyObject *args)
+{
+ PyObject *key;
+ PyObject *val;
+
+ if (!PyArg_UnpackTuple(args, "set", 2, 2, &key, &val)) {
+ return NULL;
+ }
+
+ return (PyObject *)_PyHamt_Assoc(self, key, val);
+}
+
+static PyObject *
+hamt_py_get(PyHamtObject *self, PyObject *args)
+{
+ PyObject *key;
+ PyObject *def = NULL;
+
+ if (!PyArg_UnpackTuple(args, "get", 1, 2, &key, &def)) {
+ return NULL;
+ }
+
+ PyObject *val = NULL;
+ hamt_find_t res = hamt_find(self, key, &val);
+ switch (res) {
+ case F_ERROR:
+ return NULL;
+ case F_FOUND:
+ return Py_NewRef(val);
+ case F_NOT_FOUND:
+ if (def == NULL) {
+ Py_RETURN_NONE;
+ }
+ return Py_NewRef(def);
+ default:
+ Py_UNREACHABLE();
+ }
+}
+
+static PyObject *
+hamt_py_delete(PyHamtObject *self, PyObject *key)
+{
+ return (PyObject *)_PyHamt_Without(self, key);
+}
+
+static PyObject *
+hamt_py_items(PyHamtObject *self, PyObject *args)
+{
+ return _PyHamt_NewIterItems(self);
+}
+
+static PyObject *
+hamt_py_values(PyHamtObject *self, PyObject *args)
+{
+ return _PyHamt_NewIterValues(self);
+}
+
+static PyObject *
+hamt_py_keys(PyHamtObject *self, PyObject *Py_UNUSED(args))
+{
+ return _PyHamt_NewIterKeys(self);
+}
+
+#ifdef Py_DEBUG
+static PyObject *
+hamt_py_dump(PyHamtObject *self, PyObject *Py_UNUSED(args))
+{
+ return hamt_dump(self);
+}
+#endif
+
+
+static PyMethodDef PyHamt_methods[] = {
+ {"set", _PyCFunction_CAST(hamt_py_set), METH_VARARGS, NULL},
+ {"get", _PyCFunction_CAST(hamt_py_get), METH_VARARGS, NULL},
+ {"delete", _PyCFunction_CAST(hamt_py_delete), METH_O, NULL},
+ {"items", _PyCFunction_CAST(hamt_py_items), METH_NOARGS, NULL},
+ {"keys", _PyCFunction_CAST(hamt_py_keys), METH_NOARGS, NULL},
+ {"values", _PyCFunction_CAST(hamt_py_values), METH_NOARGS, NULL},
+#ifdef Py_DEBUG
+ {"__dump__", _PyCFunction_CAST(hamt_py_dump), METH_NOARGS, NULL},
+#endif
+ {NULL, NULL}
+};
+
+static PySequenceMethods PyHamt_as_sequence = {
+ 0, /* sq_length */
+ 0, /* sq_concat */
+ 0, /* sq_repeat */
+ 0, /* sq_item */
+ 0, /* sq_slice */
+ 0, /* sq_ass_item */
+ 0, /* sq_ass_slice */
+ (objobjproc)hamt_tp_contains, /* sq_contains */
+ 0, /* sq_inplace_concat */
+ 0, /* sq_inplace_repeat */
+};
+
+static PyMappingMethods PyHamt_as_mapping = {
+ (lenfunc)hamt_tp_len, /* mp_length */
+ (binaryfunc)hamt_tp_subscript, /* mp_subscript */
+};
+
+PyTypeObject _PyHamt_Type = {
+ PyVarObject_HEAD_INIT(&PyType_Type, 0)
+ "hamt",
+ sizeof(PyHamtObject),
+ .tp_methods = PyHamt_methods,
+ .tp_as_mapping = &PyHamt_as_mapping,
+ .tp_as_sequence = &PyHamt_as_sequence,
+ .tp_iter = (getiterfunc)hamt_tp_iter,
+ .tp_dealloc = (destructor)hamt_tp_dealloc,
+ .tp_getattro = PyObject_GenericGetAttr,
+ .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC,
+ .tp_richcompare = hamt_tp_richcompare,
+ .tp_traverse = (traverseproc)hamt_tp_traverse,
+ .tp_clear = (inquiry)hamt_tp_clear,
+ .tp_new = hamt_tp_new,
+ .tp_weaklistoffset = offsetof(PyHamtObject, h_weakreflist),
+ .tp_hash = PyObject_HashNotImplemented,
+};
+
+
+/////////////////////////////////// Tree Node Types
+
+
+PyTypeObject _PyHamt_ArrayNode_Type = {
+ PyVarObject_HEAD_INIT(&PyType_Type, 0)
+ "hamt_array_node",
+ sizeof(PyHamtNode_Array),
+ 0,
+ .tp_dealloc = (destructor)hamt_node_array_dealloc,
+ .tp_getattro = PyObject_GenericGetAttr,
+ .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC,
+ .tp_traverse = (traverseproc)hamt_node_array_traverse,
+ .tp_free = PyObject_GC_Del,
+ .tp_hash = PyObject_HashNotImplemented,
+};
+
+PyTypeObject _PyHamt_BitmapNode_Type = {
+ PyVarObject_HEAD_INIT(&PyType_Type, 0)
+ "hamt_bitmap_node",
+ sizeof(PyHamtNode_Bitmap) - sizeof(PyObject *),
+ sizeof(PyObject *),
+ .tp_dealloc = (destructor)hamt_node_bitmap_dealloc,
+ .tp_getattro = PyObject_GenericGetAttr,
+ .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC,
+ .tp_traverse = (traverseproc)hamt_node_bitmap_traverse,
+ .tp_free = PyObject_GC_Del,
+ .tp_hash = PyObject_HashNotImplemented,
+};
+
+PyTypeObject _PyHamt_CollisionNode_Type = {
+ PyVarObject_HEAD_INIT(&PyType_Type, 0)
+ "hamt_collision_node",
+ sizeof(PyHamtNode_Collision) - sizeof(PyObject *),
+ sizeof(PyObject *),
+ .tp_dealloc = (destructor)hamt_node_collision_dealloc,
+ .tp_getattro = PyObject_GenericGetAttr,
+ .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC,
+ .tp_traverse = (traverseproc)hamt_node_collision_traverse,
+ .tp_free = PyObject_GC_Del,
+ .tp_hash = PyObject_HashNotImplemented,
+};
diff --git a/contrib/tools/python3/Python/hashtable.c b/contrib/tools/python3/Python/hashtable.c
new file mode 100644
index 00000000000..9f005c7ad96
--- /dev/null
+++ b/contrib/tools/python3/Python/hashtable.c
@@ -0,0 +1,424 @@
+/* The implementation of the hash table (_Py_hashtable_t) is based on the
+ cfuhash project:
+ http://sourceforge.net/projects/libcfu/
+
+ Copyright of cfuhash:
+ ----------------------------------
+ Creation date: 2005-06-24 21:22:40
+ Authors: Don
+ Change log:
+
+ Copyright (c) 2005 Don Owens
+ All rights reserved.
+
+ This code is released under the BSD license:
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ * Redistributions in binary form must reproduce the above
+ copyright notice, this list of conditions and the following
+ disclaimer in the documentation and/or other materials provided
+ with the distribution.
+
+ * Neither the name of the author nor the names of its
+ contributors may be used to endorse or promote products derived
+ from this software without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
+ OF THE POSSIBILITY OF SUCH DAMAGE.
+ ----------------------------------
+*/
+
+#include "Python.h"
+#include "pycore_hashtable.h"
+
+#define HASHTABLE_MIN_SIZE 16
+#define HASHTABLE_HIGH 0.50
+#define HASHTABLE_LOW 0.10
+#define HASHTABLE_REHASH_FACTOR 2.0 / (HASHTABLE_LOW + HASHTABLE_HIGH)
+
+#define BUCKETS_HEAD(SLIST) \
+ ((_Py_hashtable_entry_t *)_Py_SLIST_HEAD(&(SLIST)))
+#define TABLE_HEAD(HT, BUCKET) \
+ ((_Py_hashtable_entry_t *)_Py_SLIST_HEAD(&(HT)->buckets[BUCKET]))
+#define ENTRY_NEXT(ENTRY) \
+ ((_Py_hashtable_entry_t *)_Py_SLIST_ITEM_NEXT(ENTRY))
+
+/* Forward declaration */
+static int hashtable_rehash(_Py_hashtable_t *ht);
+
+static void
+_Py_slist_init(_Py_slist_t *list)
+{
+ list->head = NULL;
+}
+
+
+static void
+_Py_slist_prepend(_Py_slist_t *list, _Py_slist_item_t *item)
+{
+ item->next = list->head;
+ list->head = item;
+}
+
+
+static void
+_Py_slist_remove(_Py_slist_t *list, _Py_slist_item_t *previous,
+ _Py_slist_item_t *item)
+{
+ if (previous != NULL)
+ previous->next = item->next;
+ else
+ list->head = item->next;
+}
+
+
+Py_uhash_t
+_Py_hashtable_hash_ptr(const void *key)
+{
+ return (Py_uhash_t)_Py_HashPointerRaw(key);
+}
+
+
+int
+_Py_hashtable_compare_direct(const void *key1, const void *key2)
+{
+ return (key1 == key2);
+}
+
+
+/* makes sure the real size of the buckets array is a power of 2 */
+static size_t
+round_size(size_t s)
+{
+ size_t i;
+ if (s < HASHTABLE_MIN_SIZE)
+ return HASHTABLE_MIN_SIZE;
+ i = 1;
+ while (i < s)
+ i <<= 1;
+ return i;
+}
+
+
+size_t
+_Py_hashtable_size(const _Py_hashtable_t *ht)
+{
+ size_t size = sizeof(_Py_hashtable_t);
+ /* buckets */
+ size += ht->nbuckets * sizeof(_Py_hashtable_entry_t *);
+ /* entries */
+ size += ht->nentries * sizeof(_Py_hashtable_entry_t);
+ return size;
+}
+
+
+size_t
+_Py_hashtable_len(const _Py_hashtable_t *ht)
+{
+ return ht->nentries;
+}
+
+
+_Py_hashtable_entry_t *
+_Py_hashtable_get_entry_generic(_Py_hashtable_t *ht, const void *key)
+{
+ Py_uhash_t key_hash = ht->hash_func(key);
+ size_t index = key_hash & (ht->nbuckets - 1);
+ _Py_hashtable_entry_t *entry = TABLE_HEAD(ht, index);
+ while (1) {
+ if (entry == NULL) {
+ return NULL;
+ }
+ if (entry->key_hash == key_hash && ht->compare_func(key, entry->key)) {
+ break;
+ }
+ entry = ENTRY_NEXT(entry);
+ }
+ return entry;
+}
+
+
+// Specialized for:
+// hash_func == _Py_hashtable_hash_ptr
+// compare_func == _Py_hashtable_compare_direct
+static _Py_hashtable_entry_t *
+_Py_hashtable_get_entry_ptr(_Py_hashtable_t *ht, const void *key)
+{
+ Py_uhash_t key_hash = _Py_hashtable_hash_ptr(key);
+ size_t index = key_hash & (ht->nbuckets - 1);
+ _Py_hashtable_entry_t *entry = TABLE_HEAD(ht, index);
+ while (1) {
+ if (entry == NULL) {
+ return NULL;
+ }
+ // Compare directly keys (ignore entry->key_hash)
+ if (entry->key == key) {
+ break;
+ }
+ entry = ENTRY_NEXT(entry);
+ }
+ return entry;
+}
+
+
+void*
+_Py_hashtable_steal(_Py_hashtable_t *ht, const void *key)
+{
+ Py_uhash_t key_hash = ht->hash_func(key);
+ size_t index = key_hash & (ht->nbuckets - 1);
+
+ _Py_hashtable_entry_t *entry = TABLE_HEAD(ht, index);
+ _Py_hashtable_entry_t *previous = NULL;
+ while (1) {
+ if (entry == NULL) {
+ // not found
+ return NULL;
+ }
+ if (entry->key_hash == key_hash && ht->compare_func(key, entry->key)) {
+ break;
+ }
+ previous = entry;
+ entry = ENTRY_NEXT(entry);
+ }
+
+ _Py_slist_remove(&ht->buckets[index], (_Py_slist_item_t *)previous,
+ (_Py_slist_item_t *)entry);
+ ht->nentries--;
+
+ void *value = entry->value;
+ ht->alloc.free(entry);
+
+ if ((float)ht->nentries / (float)ht->nbuckets < HASHTABLE_LOW) {
+ // Ignore failure: error cannot be reported to the caller
+ hashtable_rehash(ht);
+ }
+ return value;
+}
+
+
+int
+_Py_hashtable_set(_Py_hashtable_t *ht, const void *key, void *value)
+{
+ _Py_hashtable_entry_t *entry;
+
+#ifndef NDEBUG
+ /* Don't write the assertion on a single line because it is interesting
+ to know the duplicated entry if the assertion failed. The entry can
+ be read using a debugger. */
+ entry = ht->get_entry_func(ht, key);
+ assert(entry == NULL);
+#endif
+
+
+ entry = ht->alloc.malloc(sizeof(_Py_hashtable_entry_t));
+ if (entry == NULL) {
+ /* memory allocation failed */
+ return -1;
+ }
+
+ entry->key_hash = ht->hash_func(key);
+ entry->key = (void *)key;
+ entry->value = value;
+
+ ht->nentries++;
+ if ((float)ht->nentries / (float)ht->nbuckets > HASHTABLE_HIGH) {
+ if (hashtable_rehash(ht) < 0) {
+ ht->nentries--;
+ ht->alloc.free(entry);
+ return -1;
+ }
+ }
+
+ size_t index = entry->key_hash & (ht->nbuckets - 1);
+ _Py_slist_prepend(&ht->buckets[index], (_Py_slist_item_t*)entry);
+ return 0;
+}
+
+
+void*
+_Py_hashtable_get(_Py_hashtable_t *ht, const void *key)
+{
+ _Py_hashtable_entry_t *entry = ht->get_entry_func(ht, key);
+ if (entry != NULL) {
+ return entry->value;
+ }
+ else {
+ return NULL;
+ }
+}
+
+
+int
+_Py_hashtable_foreach(_Py_hashtable_t *ht,
+ _Py_hashtable_foreach_func func,
+ void *user_data)
+{
+ for (size_t hv = 0; hv < ht->nbuckets; hv++) {
+ _Py_hashtable_entry_t *entry = TABLE_HEAD(ht, hv);
+ while (entry != NULL) {
+ int res = func(ht, entry->key, entry->value, user_data);
+ if (res) {
+ return res;
+ }
+ entry = ENTRY_NEXT(entry);
+ }
+ }
+ return 0;
+}
+
+
+static int
+hashtable_rehash(_Py_hashtable_t *ht)
+{
+ size_t new_size = round_size((size_t)(ht->nentries * HASHTABLE_REHASH_FACTOR));
+ if (new_size == ht->nbuckets) {
+ return 0;
+ }
+
+ size_t buckets_size = new_size * sizeof(ht->buckets[0]);
+ _Py_slist_t *new_buckets = ht->alloc.malloc(buckets_size);
+ if (new_buckets == NULL) {
+ /* memory allocation failed */
+ return -1;
+ }
+ memset(new_buckets, 0, buckets_size);
+
+ for (size_t bucket = 0; bucket < ht->nbuckets; bucket++) {
+ _Py_hashtable_entry_t *entry = BUCKETS_HEAD(ht->buckets[bucket]);
+ while (entry != NULL) {
+ assert(ht->hash_func(entry->key) == entry->key_hash);
+ _Py_hashtable_entry_t *next = ENTRY_NEXT(entry);
+ size_t entry_index = entry->key_hash & (new_size - 1);
+
+ _Py_slist_prepend(&new_buckets[entry_index], (_Py_slist_item_t*)entry);
+
+ entry = next;
+ }
+ }
+
+ ht->alloc.free(ht->buckets);
+ ht->nbuckets = new_size;
+ ht->buckets = new_buckets;
+ return 0;
+}
+
+
+_Py_hashtable_t *
+_Py_hashtable_new_full(_Py_hashtable_hash_func hash_func,
+ _Py_hashtable_compare_func compare_func,
+ _Py_hashtable_destroy_func key_destroy_func,
+ _Py_hashtable_destroy_func value_destroy_func,
+ _Py_hashtable_allocator_t *allocator)
+{
+ _Py_hashtable_allocator_t alloc;
+ if (allocator == NULL) {
+ alloc.malloc = PyMem_Malloc;
+ alloc.free = PyMem_Free;
+ }
+ else {
+ alloc = *allocator;
+ }
+
+ _Py_hashtable_t *ht = (_Py_hashtable_t *)alloc.malloc(sizeof(_Py_hashtable_t));
+ if (ht == NULL) {
+ return ht;
+ }
+
+ ht->nbuckets = HASHTABLE_MIN_SIZE;
+ ht->nentries = 0;
+
+ size_t buckets_size = ht->nbuckets * sizeof(ht->buckets[0]);
+ ht->buckets = alloc.malloc(buckets_size);
+ if (ht->buckets == NULL) {
+ alloc.free(ht);
+ return NULL;
+ }
+ memset(ht->buckets, 0, buckets_size);
+
+ ht->get_entry_func = _Py_hashtable_get_entry_generic;
+ ht->hash_func = hash_func;
+ ht->compare_func = compare_func;
+ ht->key_destroy_func = key_destroy_func;
+ ht->value_destroy_func = value_destroy_func;
+ ht->alloc = alloc;
+ if (ht->hash_func == _Py_hashtable_hash_ptr
+ && ht->compare_func == _Py_hashtable_compare_direct)
+ {
+ ht->get_entry_func = _Py_hashtable_get_entry_ptr;
+ }
+ return ht;
+}
+
+
+_Py_hashtable_t *
+_Py_hashtable_new(_Py_hashtable_hash_func hash_func,
+ _Py_hashtable_compare_func compare_func)
+{
+ return _Py_hashtable_new_full(hash_func, compare_func,
+ NULL, NULL, NULL);
+}
+
+
+static void
+_Py_hashtable_destroy_entry(_Py_hashtable_t *ht, _Py_hashtable_entry_t *entry)
+{
+ if (ht->key_destroy_func) {
+ ht->key_destroy_func(entry->key);
+ }
+ if (ht->value_destroy_func) {
+ ht->value_destroy_func(entry->value);
+ }
+ ht->alloc.free(entry);
+}
+
+
+void
+_Py_hashtable_clear(_Py_hashtable_t *ht)
+{
+ for (size_t i=0; i < ht->nbuckets; i++) {
+ _Py_hashtable_entry_t *entry = TABLE_HEAD(ht, i);
+ while (entry != NULL) {
+ _Py_hashtable_entry_t *next = ENTRY_NEXT(entry);
+ _Py_hashtable_destroy_entry(ht, entry);
+ entry = next;
+ }
+ _Py_slist_init(&ht->buckets[i]);
+ }
+ ht->nentries = 0;
+ // Ignore failure: clear function is not expected to fail
+ // because of a memory allocation failure.
+ (void)hashtable_rehash(ht);
+}
+
+
+void
+_Py_hashtable_destroy(_Py_hashtable_t *ht)
+{
+ for (size_t i = 0; i < ht->nbuckets; i++) {
+ _Py_hashtable_entry_t *entry = TABLE_HEAD(ht, i);
+ while (entry) {
+ _Py_hashtable_entry_t *entry_next = ENTRY_NEXT(entry);
+ _Py_hashtable_destroy_entry(ht, entry);
+ entry = entry_next;
+ }
+ }
+
+ ht->alloc.free(ht->buckets);
+ ht->alloc.free(ht);
+}
diff --git a/contrib/tools/python3/Python/import.c b/contrib/tools/python3/Python/import.c
new file mode 100644
index 00000000000..76b418840e7
--- /dev/null
+++ b/contrib/tools/python3/Python/import.c
@@ -0,0 +1,3928 @@
+/* Module definition and import implementation */
+
+#include "Python.h"
+
+#include "pycore_hashtable.h" // _Py_hashtable_new_full()
+#include "pycore_import.h" // _PyImport_BootstrapImp()
+#include "pycore_initconfig.h" // _PyStatus_OK()
+#include "pycore_interp.h" // struct _import_runtime_state
+#include "pycore_namespace.h" // _PyNamespace_Type
+#include "pycore_object.h" // _Py_SetImmortal()
+#include "pycore_pyerrors.h" // _PyErr_SetString()
+#include "pycore_pyhash.h" // _Py_KeyedHash()
+#include "pycore_pylifecycle.h"
+#include "pycore_pymem.h" // _PyMem_SetDefaultAllocator()
+#include "pycore_pystate.h" // _PyInterpreterState_GET()
+#include "pycore_sysmodule.h" // _PySys_Audit()
+#include "marshal.h" // PyMarshal_ReadObjectFromString()
+#include "importdl.h" // _PyImport_DynLoadFiletab
+#include "pydtrace.h" // PyDTrace_IMPORT_FIND_LOAD_START_ENABLED()
+#include <stdbool.h> // bool
+
+#ifdef HAVE_FCNTL_H
+#include <fcntl.h>
+#endif
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/*[clinic input]
+module _imp
+[clinic start generated code]*/
+/*[clinic end generated code: output=da39a3ee5e6b4b0d input=9c332475d8686284]*/
+
+#include "clinic/import.c.h"
+
+
+/*******************************/
+/* process-global import state */
+/*******************************/
+
+/* This table is defined in config.c: */
+extern struct _inittab _PyImport_Inittab[];
+
+// This is not used after Py_Initialize() is called.
+// (See _PyRuntimeState.imports.inittab.)
+struct _inittab *PyImport_Inittab = _PyImport_Inittab;
+// When we dynamically allocate a larger table for PyImport_ExtendInittab(),
+// we track the pointer here so we can deallocate it during finalization.
+static struct _inittab *inittab_copy = NULL;
+
+
+/*******************************/
+/* runtime-global import state */
+/*******************************/
+
+#define INITTAB _PyRuntime.imports.inittab
+#define LAST_MODULE_INDEX _PyRuntime.imports.last_module_index
+#define EXTENSIONS _PyRuntime.imports.extensions
+
+#define PKGCONTEXT (_PyRuntime.imports.pkgcontext)
+
+
+/*******************************/
+/* interpreter import state */
+/*******************************/
+
+#define MODULES(interp) \
+ (interp)->imports.modules
+#define MODULES_BY_INDEX(interp) \
+ (interp)->imports.modules_by_index
+#define IMPORTLIB(interp) \
+ (interp)->imports.importlib
+#define OVERRIDE_MULTI_INTERP_EXTENSIONS_CHECK(interp) \
+ (interp)->imports.override_multi_interp_extensions_check
+#define OVERRIDE_FROZEN_MODULES(interp) \
+ (interp)->imports.override_frozen_modules
+#ifdef HAVE_DLOPEN
+# define DLOPENFLAGS(interp) \
+ (interp)->imports.dlopenflags
+#endif
+#define IMPORT_FUNC(interp) \
+ (interp)->imports.import_func
+
+#define IMPORT_LOCK(interp) \
+ (interp)->imports.lock.mutex
+#define IMPORT_LOCK_THREAD(interp) \
+ (interp)->imports.lock.thread
+#define IMPORT_LOCK_LEVEL(interp) \
+ (interp)->imports.lock.level
+
+#define FIND_AND_LOAD(interp) \
+ (interp)->imports.find_and_load
+
+
+/*******************/
+/* the import lock */
+/*******************/
+
+/* Locking primitives to prevent parallel imports of the same module
+ in different threads to return with a partially loaded module.
+ These calls are serialized by the global interpreter lock. */
+
+void
+_PyImport_AcquireLock(PyInterpreterState *interp)
+{
+ unsigned long me = PyThread_get_thread_ident();
+ if (me == PYTHREAD_INVALID_THREAD_ID)
+ return; /* Too bad */
+ if (IMPORT_LOCK(interp) == NULL) {
+ IMPORT_LOCK(interp) = PyThread_allocate_lock();
+ if (IMPORT_LOCK(interp) == NULL)
+ return; /* Nothing much we can do. */
+ }
+ if (IMPORT_LOCK_THREAD(interp) == me) {
+ IMPORT_LOCK_LEVEL(interp)++;
+ return;
+ }
+ if (IMPORT_LOCK_THREAD(interp) != PYTHREAD_INVALID_THREAD_ID ||
+ !PyThread_acquire_lock(IMPORT_LOCK(interp), 0))
+ {
+ PyThreadState *tstate = PyEval_SaveThread();
+ PyThread_acquire_lock(IMPORT_LOCK(interp), WAIT_LOCK);
+ PyEval_RestoreThread(tstate);
+ }
+ assert(IMPORT_LOCK_LEVEL(interp) == 0);
+ IMPORT_LOCK_THREAD(interp) = me;
+ IMPORT_LOCK_LEVEL(interp) = 1;
+}
+
+int
+_PyImport_ReleaseLock(PyInterpreterState *interp)
+{
+ unsigned long me = PyThread_get_thread_ident();
+ if (me == PYTHREAD_INVALID_THREAD_ID || IMPORT_LOCK(interp) == NULL)
+ return 0; /* Too bad */
+ if (IMPORT_LOCK_THREAD(interp) != me)
+ return -1;
+ IMPORT_LOCK_LEVEL(interp)--;
+ assert(IMPORT_LOCK_LEVEL(interp) >= 0);
+ if (IMPORT_LOCK_LEVEL(interp) == 0) {
+ IMPORT_LOCK_THREAD(interp) = PYTHREAD_INVALID_THREAD_ID;
+ PyThread_release_lock(IMPORT_LOCK(interp));
+ }
+ return 1;
+}
+
+#ifdef HAVE_FORK
+/* This function is called from PyOS_AfterFork_Child() to ensure that newly
+ created child processes do not share locks with the parent.
+ We now acquire the import lock around fork() calls but on some platforms
+ (Solaris 9 and earlier? see isue7242) that still left us with problems. */
+PyStatus
+_PyImport_ReInitLock(PyInterpreterState *interp)
+{
+ if (IMPORT_LOCK(interp) != NULL) {
+ if (_PyThread_at_fork_reinit(&IMPORT_LOCK(interp)) < 0) {
+ return _PyStatus_ERR("failed to create a new lock");
+ }
+ }
+
+ if (IMPORT_LOCK_LEVEL(interp) > 1) {
+ /* Forked as a side effect of import */
+ unsigned long me = PyThread_get_thread_ident();
+ PyThread_acquire_lock(IMPORT_LOCK(interp), WAIT_LOCK);
+ IMPORT_LOCK_THREAD(interp) = me;
+ IMPORT_LOCK_LEVEL(interp)--;
+ } else {
+ IMPORT_LOCK_THREAD(interp) = PYTHREAD_INVALID_THREAD_ID;
+ IMPORT_LOCK_LEVEL(interp) = 0;
+ }
+ return _PyStatus_OK();
+}
+#endif
+
+
+/***************/
+/* sys.modules */
+/***************/
+
+PyObject *
+_PyImport_InitModules(PyInterpreterState *interp)
+{
+ assert(MODULES(interp) == NULL);
+ MODULES(interp) = PyDict_New();
+ if (MODULES(interp) == NULL) {
+ return NULL;
+ }
+ return MODULES(interp);
+}
+
+PyObject *
+_PyImport_GetModules(PyInterpreterState *interp)
+{
+ return MODULES(interp);
+}
+
+void
+_PyImport_ClearModules(PyInterpreterState *interp)
+{
+ Py_SETREF(MODULES(interp), NULL);
+}
+
+PyObject *
+PyImport_GetModuleDict(void)
+{
+ PyInterpreterState *interp = _PyInterpreterState_GET();
+ if (MODULES(interp) == NULL) {
+ Py_FatalError("interpreter has no modules dictionary");
+ }
+ return MODULES(interp);
+}
+
+// This is only kept around for extensions that use _Py_IDENTIFIER.
+PyObject *
+_PyImport_GetModuleId(_Py_Identifier *nameid)
+{
+ PyObject *name = _PyUnicode_FromId(nameid); /* borrowed */
+ if (name == NULL) {
+ return NULL;
+ }
+ return PyImport_GetModule(name);
+}
+
+int
+_PyImport_SetModule(PyObject *name, PyObject *m)
+{
+ PyInterpreterState *interp = _PyInterpreterState_GET();
+ PyObject *modules = MODULES(interp);
+ return PyObject_SetItem(modules, name, m);
+}
+
+int
+_PyImport_SetModuleString(const char *name, PyObject *m)
+{
+ PyInterpreterState *interp = _PyInterpreterState_GET();
+ PyObject *modules = MODULES(interp);
+ return PyMapping_SetItemString(modules, name, m);
+}
+
+static PyObject *
+import_get_module(PyThreadState *tstate, PyObject *name)
+{
+ PyObject *modules = MODULES(tstate->interp);
+ if (modules == NULL) {
+ _PyErr_SetString(tstate, PyExc_RuntimeError,
+ "unable to get sys.modules");
+ return NULL;
+ }
+
+ PyObject *m;
+ Py_INCREF(modules);
+ if (PyDict_CheckExact(modules)) {
+ m = PyDict_GetItemWithError(modules, name); /* borrowed */
+ Py_XINCREF(m);
+ }
+ else {
+ m = PyObject_GetItem(modules, name);
+ if (m == NULL && _PyErr_ExceptionMatches(tstate, PyExc_KeyError)) {
+ _PyErr_Clear(tstate);
+ }
+ }
+ Py_DECREF(modules);
+ return m;
+}
+
+static int
+import_ensure_initialized(PyInterpreterState *interp, PyObject *mod, PyObject *name)
+{
+ PyObject *spec;
+
+ /* Optimization: only call _bootstrap._lock_unlock_module() if
+ __spec__._initializing is true.
+ NOTE: because of this, initializing must be set *before*
+ stuffing the new module in sys.modules.
+ */
+ spec = PyObject_GetAttr(mod, &_Py_ID(__spec__));
+ int busy = _PyModuleSpec_IsInitializing(spec);
+ Py_XDECREF(spec);
+ if (busy) {
+ /* Wait until module is done importing. */
+ PyObject *value = _PyObject_CallMethodOneArg(
+ IMPORTLIB(interp), &_Py_ID(_lock_unlock_module), name);
+ if (value == NULL) {
+ return -1;
+ }
+ Py_DECREF(value);
+ }
+ return 0;
+}
+
+static void remove_importlib_frames(PyThreadState *tstate);
+
+PyObject *
+PyImport_GetModule(PyObject *name)
+{
+ PyThreadState *tstate = _PyThreadState_GET();
+ PyObject *mod;
+
+ mod = import_get_module(tstate, name);
+ if (mod != NULL && mod != Py_None) {
+ if (import_ensure_initialized(tstate->interp, mod, name) < 0) {
+ Py_DECREF(mod);
+ remove_importlib_frames(tstate);
+ return NULL;
+ }
+ }
+ return mod;
+}
+
+/* Get the module object corresponding to a module name.
+ First check the modules dictionary if there's one there,
+ if not, create a new one and insert it in the modules dictionary. */
+
+static PyObject *
+import_add_module(PyThreadState *tstate, PyObject *name)
+{
+ PyObject *modules = MODULES(tstate->interp);
+ if (modules == NULL) {
+ _PyErr_SetString(tstate, PyExc_RuntimeError,
+ "no import module dictionary");
+ return NULL;
+ }
+
+ PyObject *m;
+ if (PyDict_CheckExact(modules)) {
+ m = Py_XNewRef(PyDict_GetItemWithError(modules, name));
+ }
+ else {
+ m = PyObject_GetItem(modules, name);
+ // For backward-compatibility we copy the behavior
+ // of PyDict_GetItemWithError().
+ if (_PyErr_ExceptionMatches(tstate, PyExc_KeyError)) {
+ _PyErr_Clear(tstate);
+ }
+ }
+ if (_PyErr_Occurred(tstate)) {
+ return NULL;
+ }
+ if (m != NULL && PyModule_Check(m)) {
+ return m;
+ }
+ Py_XDECREF(m);
+ m = PyModule_NewObject(name);
+ if (m == NULL)
+ return NULL;
+ if (PyObject_SetItem(modules, name, m) != 0) {
+ Py_DECREF(m);
+ return NULL;
+ }
+
+ return m;
+}
+
+PyObject *
+PyImport_AddModuleObject(PyObject *name)
+{
+ PyThreadState *tstate = _PyThreadState_GET();
+ PyObject *mod = import_add_module(tstate, name);
+ if (mod) {
+ PyObject *ref = PyWeakref_NewRef(mod, NULL);
+ Py_DECREF(mod);
+ if (ref == NULL) {
+ return NULL;
+ }
+ mod = PyWeakref_GetObject(ref);
+ Py_DECREF(ref);
+ }
+ return mod; /* borrowed reference */
+}
+
+
+PyObject *
+PyImport_AddModule(const char *name)
+{
+ PyObject *nameobj = PyUnicode_FromString(name);
+ if (nameobj == NULL) {
+ return NULL;
+ }
+ PyObject *module = PyImport_AddModuleObject(nameobj);
+ Py_DECREF(nameobj);
+ return module;
+}
+
+
+/* Remove name from sys.modules, if it's there.
+ * Can be called with an exception raised.
+ * If fail to remove name a new exception will be chained with the old
+ * exception, otherwise the old exception is preserved.
+ */
+static void
+remove_module(PyThreadState *tstate, PyObject *name)
+{
+ PyObject *exc = _PyErr_GetRaisedException(tstate);
+
+ PyObject *modules = MODULES(tstate->interp);
+ if (PyDict_CheckExact(modules)) {
+ PyObject *mod = _PyDict_Pop(modules, name, Py_None);
+ Py_XDECREF(mod);
+ }
+ else if (PyMapping_DelItem(modules, name) < 0) {
+ if (_PyErr_ExceptionMatches(tstate, PyExc_KeyError)) {
+ _PyErr_Clear(tstate);
+ }
+ }
+
+ _PyErr_ChainExceptions1(exc);
+}
+
+
+/************************************/
+/* per-interpreter modules-by-index */
+/************************************/
+
+Py_ssize_t
+_PyImport_GetNextModuleIndex(void)
+{
+ PyThread_acquire_lock(EXTENSIONS.mutex, WAIT_LOCK);
+ LAST_MODULE_INDEX++;
+ Py_ssize_t index = LAST_MODULE_INDEX;
+ PyThread_release_lock(EXTENSIONS.mutex);
+ return index;
+}
+
+static const char *
+_modules_by_index_check(PyInterpreterState *interp, Py_ssize_t index)
+{
+ if (index == 0) {
+ return "invalid module index";
+ }
+ if (MODULES_BY_INDEX(interp) == NULL) {
+ return "Interpreters module-list not accessible.";
+ }
+ if (index > PyList_GET_SIZE(MODULES_BY_INDEX(interp))) {
+ return "Module index out of bounds.";
+ }
+ return NULL;
+}
+
+static PyObject *
+_modules_by_index_get(PyInterpreterState *interp, PyModuleDef *def)
+{
+ Py_ssize_t index = def->m_base.m_index;
+ if (_modules_by_index_check(interp, index) != NULL) {
+ return NULL;
+ }
+ PyObject *res = PyList_GET_ITEM(MODULES_BY_INDEX(interp), index);
+ return res==Py_None ? NULL : res;
+}
+
+static int
+_modules_by_index_set(PyInterpreterState *interp,
+ PyModuleDef *def, PyObject *module)
+{
+ assert(def != NULL);
+ assert(def->m_slots == NULL);
+ assert(def->m_base.m_index > 0);
+
+ if (MODULES_BY_INDEX(interp) == NULL) {
+ MODULES_BY_INDEX(interp) = PyList_New(0);
+ if (MODULES_BY_INDEX(interp) == NULL) {
+ return -1;
+ }
+ }
+
+ Py_ssize_t index = def->m_base.m_index;
+ while (PyList_GET_SIZE(MODULES_BY_INDEX(interp)) <= index) {
+ if (PyList_Append(MODULES_BY_INDEX(interp), Py_None) < 0) {
+ return -1;
+ }
+ }
+
+ return PyList_SetItem(MODULES_BY_INDEX(interp), index, Py_NewRef(module));
+}
+
+static int
+_modules_by_index_clear_one(PyInterpreterState *interp, PyModuleDef *def)
+{
+ Py_ssize_t index = def->m_base.m_index;
+ const char *err = _modules_by_index_check(interp, index);
+ if (err != NULL) {
+ Py_FatalError(err);
+ return -1;
+ }
+ return PyList_SetItem(MODULES_BY_INDEX(interp), index, Py_NewRef(Py_None));
+}
+
+
+PyObject*
+PyState_FindModule(PyModuleDef* module)
+{
+ PyInterpreterState *interp = _PyInterpreterState_GET();
+ if (module->m_slots) {
+ return NULL;
+ }
+ return _modules_by_index_get(interp, module);
+}
+
+/* _PyState_AddModule() has been completely removed from the C-API
+ (and was removed from the limited API in 3.6). However, we're
+ playing it safe and keeping it around for any stable ABI extensions
+ built against 3.2-3.5. */
+int
+_PyState_AddModule(PyThreadState *tstate, PyObject* module, PyModuleDef* def)
+{
+ if (!def) {
+ assert(_PyErr_Occurred(tstate));
+ return -1;
+ }
+ if (def->m_slots) {
+ _PyErr_SetString(tstate,
+ PyExc_SystemError,
+ "PyState_AddModule called on module with slots");
+ return -1;
+ }
+ return _modules_by_index_set(tstate->interp, def, module);
+}
+
+int
+PyState_AddModule(PyObject* module, PyModuleDef* def)
+{
+ if (!def) {
+ Py_FatalError("module definition is NULL");
+ return -1;
+ }
+
+ PyThreadState *tstate = _PyThreadState_GET();
+ if (def->m_slots) {
+ _PyErr_SetString(tstate,
+ PyExc_SystemError,
+ "PyState_AddModule called on module with slots");
+ return -1;
+ }
+
+ PyInterpreterState *interp = tstate->interp;
+ Py_ssize_t index = def->m_base.m_index;
+ if (MODULES_BY_INDEX(interp) &&
+ index < PyList_GET_SIZE(MODULES_BY_INDEX(interp)) &&
+ module == PyList_GET_ITEM(MODULES_BY_INDEX(interp), index))
+ {
+ _Py_FatalErrorFormat(__func__, "module %p already added", module);
+ return -1;
+ }
+
+ return _modules_by_index_set(interp, def, module);
+}
+
+int
+PyState_RemoveModule(PyModuleDef* def)
+{
+ PyThreadState *tstate = _PyThreadState_GET();
+ if (def->m_slots) {
+ _PyErr_SetString(tstate,
+ PyExc_SystemError,
+ "PyState_RemoveModule called on module with slots");
+ return -1;
+ }
+ return _modules_by_index_clear_one(tstate->interp, def);
+}
+
+
+// Used by finalize_modules()
+void
+_PyImport_ClearModulesByIndex(PyInterpreterState *interp)
+{
+ if (!MODULES_BY_INDEX(interp)) {
+ return;
+ }
+
+ Py_ssize_t i;
+ for (i = 0; i < PyList_GET_SIZE(MODULES_BY_INDEX(interp)); i++) {
+ PyObject *m = PyList_GET_ITEM(MODULES_BY_INDEX(interp), i);
+ if (PyModule_Check(m)) {
+ /* cleanup the saved copy of module dicts */
+ PyModuleDef *md = PyModule_GetDef(m);
+ if (md) {
+ Py_CLEAR(md->m_base.m_copy);
+ }
+ }
+ }
+
+ /* Setting modules_by_index to NULL could be dangerous, so we
+ clear the list instead. */
+ if (PyList_SetSlice(MODULES_BY_INDEX(interp),
+ 0, PyList_GET_SIZE(MODULES_BY_INDEX(interp)),
+ NULL)) {
+ PyErr_WriteUnraisable(MODULES_BY_INDEX(interp));
+ }
+}
+
+
+/*********************/
+/* extension modules */
+/*********************/
+
+/*
+ It may help to have a big picture view of what happens
+ when an extension is loaded. This includes when it is imported
+ for the first time.
+
+ Here's a summary, using importlib._boostrap._load() as a starting point.
+
+ 1. importlib._bootstrap._load()
+ 2. _load(): acquire import lock
+ 3. _load() -> importlib._bootstrap._load_unlocked()
+ 4. _load_unlocked() -> importlib._bootstrap.module_from_spec()
+ 5. module_from_spec() -> ExtensionFileLoader.create_module()
+ 6. create_module() -> _imp.create_dynamic()
+ (see below)
+ 7. module_from_spec() -> importlib._bootstrap._init_module_attrs()
+ 8. _load_unlocked(): sys.modules[name] = module
+ 9. _load_unlocked() -> ExtensionFileLoader.exec_module()
+ 10. exec_module() -> _imp.exec_dynamic()
+ (see below)
+ 11. _load(): release import lock
+
+
+ ...for single-phase init modules, where m_size == -1:
+
+ (6). first time (not found in _PyRuntime.imports.extensions):
+ 1. _imp_create_dynamic_impl() -> import_find_extension()
+ 2. _imp_create_dynamic_impl() -> _PyImport_LoadDynamicModuleWithSpec()
+ 3. _PyImport_LoadDynamicModuleWithSpec(): load <module init func>
+ 4. _PyImport_LoadDynamicModuleWithSpec(): call <module init func>
+ 5. <module init func> -> PyModule_Create() -> PyModule_Create2() -> PyModule_CreateInitialized()
+ 6. PyModule_CreateInitialized() -> PyModule_New()
+ 7. PyModule_CreateInitialized(): allocate mod->md_state
+ 8. PyModule_CreateInitialized() -> PyModule_AddFunctions()
+ 9. PyModule_CreateInitialized() -> PyModule_SetDocString()
+ 10. PyModule_CreateInitialized(): set mod->md_def
+ 11. <module init func>: initialize the module
+ 12. _PyImport_LoadDynamicModuleWithSpec() -> _PyImport_CheckSubinterpIncompatibleExtensionAllowed()
+ 13. _PyImport_LoadDynamicModuleWithSpec(): set def->m_base.m_init
+ 14. _PyImport_LoadDynamicModuleWithSpec(): set __file__
+ 15. _PyImport_LoadDynamicModuleWithSpec() -> _PyImport_FixupExtensionObject()
+ 16. _PyImport_FixupExtensionObject(): add it to interp->imports.modules_by_index
+ 17. _PyImport_FixupExtensionObject(): copy __dict__ into def->m_base.m_copy
+ 18. _PyImport_FixupExtensionObject(): add it to _PyRuntime.imports.extensions
+
+ (6). subsequent times (found in _PyRuntime.imports.extensions):
+ 1. _imp_create_dynamic_impl() -> import_find_extension()
+ 2. import_find_extension() -> import_add_module()
+ 3. if name in sys.modules: use that module
+ 4. else:
+ 1. import_add_module() -> PyModule_NewObject()
+ 2. import_add_module(): set it on sys.modules
+ 5. import_find_extension(): copy the "m_copy" dict into __dict__
+ 6. _imp_create_dynamic_impl() -> _PyImport_CheckSubinterpIncompatibleExtensionAllowed()
+
+ (10). (every time):
+ 1. noop
+
+
+ ...for single-phase init modules, where m_size >= 0:
+
+ (6). not main interpreter and never loaded there - every time (not found in _PyRuntime.imports.extensions):
+ 1-16. (same as for m_size == -1)
+
+ (6). main interpreter - first time (not found in _PyRuntime.imports.extensions):
+ 1-16. (same as for m_size == -1)
+ 17. _PyImport_FixupExtensionObject(): add it to _PyRuntime.imports.extensions
+
+ (6). previously loaded in main interpreter (found in _PyRuntime.imports.extensions):
+ 1. _imp_create_dynamic_impl() -> import_find_extension()
+ 2. import_find_extension(): call def->m_base.m_init
+ 3. import_find_extension(): add the module to sys.modules
+
+ (10). every time:
+ 1. noop
+
+
+ ...for multi-phase init modules:
+
+ (6). every time:
+ 1. _imp_create_dynamic_impl() -> import_find_extension() (not found)
+ 2. _imp_create_dynamic_impl() -> _PyImport_LoadDynamicModuleWithSpec()
+ 3. _PyImport_LoadDynamicModuleWithSpec(): load module init func
+ 4. _PyImport_LoadDynamicModuleWithSpec(): call module init func
+ 5. _PyImport_LoadDynamicModuleWithSpec() -> PyModule_FromDefAndSpec()
+ 6. PyModule_FromDefAndSpec(): gather/check moduledef slots
+ 7. if there's a Py_mod_create slot:
+ 1. PyModule_FromDefAndSpec(): call its function
+ 8. else:
+ 1. PyModule_FromDefAndSpec() -> PyModule_NewObject()
+ 9: PyModule_FromDefAndSpec(): set mod->md_def
+ 10. PyModule_FromDefAndSpec() -> _add_methods_to_object()
+ 11. PyModule_FromDefAndSpec() -> PyModule_SetDocString()
+
+ (10). every time:
+ 1. _imp_exec_dynamic_impl() -> exec_builtin_or_dynamic()
+ 2. if mod->md_state == NULL (including if m_size == 0):
+ 1. exec_builtin_or_dynamic() -> PyModule_ExecDef()
+ 2. PyModule_ExecDef(): allocate mod->md_state
+ 3. if there's a Py_mod_exec slot:
+ 1. PyModule_ExecDef(): call its function
+ */
+
+
+/* Make sure name is fully qualified.
+
+ This is a bit of a hack: when the shared library is loaded,
+ the module name is "package.module", but the module calls
+ PyModule_Create*() with just "module" for the name. The shared
+ library loader squirrels away the true name of the module in
+ _PyRuntime.imports.pkgcontext, and PyModule_Create*() will
+ substitute this (if the name actually matches).
+*/
+
+#ifdef HAVE_THREAD_LOCAL
+_Py_thread_local const char *pkgcontext = NULL;
+# undef PKGCONTEXT
+# define PKGCONTEXT pkgcontext
+#endif
+
+const char *
+_PyImport_ResolveNameWithPackageContext(const char *name)
+{
+#ifndef HAVE_THREAD_LOCAL
+ PyThread_acquire_lock(EXTENSIONS.mutex, WAIT_LOCK);
+#endif
+ if (PKGCONTEXT != NULL) {
+ const char *p = strrchr(PKGCONTEXT, '.');
+ if (p != NULL && strcmp(name, p+1) == 0) {
+ name = PKGCONTEXT;
+ PKGCONTEXT = NULL;
+ }
+ }
+#ifndef HAVE_THREAD_LOCAL
+ PyThread_release_lock(EXTENSIONS.mutex);
+#endif
+ return name;
+}
+
+const char *
+_PyImport_SwapPackageContext(const char *newcontext)
+{
+#ifndef HAVE_THREAD_LOCAL
+ PyThread_acquire_lock(EXTENSIONS.mutex, WAIT_LOCK);
+#endif
+ const char *oldcontext = PKGCONTEXT;
+ PKGCONTEXT = newcontext;
+#ifndef HAVE_THREAD_LOCAL
+ PyThread_release_lock(EXTENSIONS.mutex);
+#endif
+ return oldcontext;
+}
+
+#ifdef HAVE_DLOPEN
+int
+_PyImport_GetDLOpenFlags(PyInterpreterState *interp)
+{
+ return DLOPENFLAGS(interp);
+}
+
+void
+_PyImport_SetDLOpenFlags(PyInterpreterState *interp, int new_val)
+{
+ DLOPENFLAGS(interp) = new_val;
+}
+#endif // HAVE_DLOPEN
+
+
+/* Common implementation for _imp.exec_dynamic and _imp.exec_builtin */
+static int
+exec_builtin_or_dynamic(PyObject *mod) {
+ PyModuleDef *def;
+ void *state;
+
+ if (!PyModule_Check(mod)) {
+ return 0;
+ }
+
+ def = PyModule_GetDef(mod);
+ if (def == NULL) {
+ return 0;
+ }
+
+ state = PyModule_GetState(mod);
+ if (state) {
+ /* Already initialized; skip reload */
+ return 0;
+ }
+
+ return PyModule_ExecDef(mod, def);
+}
+
+
+static int clear_singlephase_extension(PyInterpreterState *interp,
+ PyObject *name, PyObject *filename);
+
+// Currently, this is only used for testing.
+// (See _testinternalcapi.clear_extension().)
+int
+_PyImport_ClearExtension(PyObject *name, PyObject *filename)
+{
+ PyInterpreterState *interp = _PyInterpreterState_GET();
+
+ /* Clearing a module's C globals is up to the module. */
+ if (clear_singlephase_extension(interp, name, filename) < 0) {
+ return -1;
+ }
+
+ // In the future we'll probably also make sure the extension's
+ // file handle (and DL handle) is closed (requires saving it).
+
+ return 0;
+}
+
+
+/*******************/
+
+#if defined(__EMSCRIPTEN__) && defined(PY_CALL_TRAMPOLINE)
+#error #include <emscripten.h>
+EM_JS(PyObject*, _PyImport_InitFunc_TrampolineCall, (PyModInitFunction func), {
+ return wasmTable.get(func)();
+});
+#endif // __EMSCRIPTEN__ && PY_CALL_TRAMPOLINE
+
+
+/*****************************/
+/* single-phase init modules */
+/*****************************/
+
+/*
+We support a number of kinds of single-phase init builtin/extension modules:
+
+* "basic"
+ * no module state (PyModuleDef.m_size == -1)
+ * does not support repeated init (we use PyModuleDef.m_base.m_copy)
+ * may have process-global state
+ * the module's def is cached in _PyRuntime.imports.extensions,
+ by (name, filename)
+* "reinit"
+ * no module state (PyModuleDef.m_size == 0)
+ * supports repeated init (m_copy is never used)
+ * should not have any process-global state
+ * its def is never cached in _PyRuntime.imports.extensions
+ (except, currently, under the main interpreter, for some reason)
+* "with state" (almost the same as reinit)
+ * has module state (PyModuleDef.m_size > 0)
+ * supports repeated init (m_copy is never used)
+ * should not have any process-global state
+ * its def is never cached in _PyRuntime.imports.extensions
+ (except, currently, under the main interpreter, for some reason)
+
+There are also variants within those classes:
+
+* two or more modules share a PyModuleDef
+ * a module's init func uses another module's PyModuleDef
+ * a module's init func calls another's module's init func
+ * a module's init "func" is actually a variable statically initialized
+ to another module's init func
+* two or modules share "methods"
+ * a module's init func copies another module's PyModuleDef
+ (with a different name)
+* (basic-only) two or modules share process-global state
+
+In the first case, where modules share a PyModuleDef, the following
+notable weirdness happens:
+
+* the module's __name__ matches the def, not the requested name
+* the last module (with the same def) to be imported for the first time wins
+ * returned by PyState_Find_Module() (via interp->modules_by_index)
+ * (non-basic-only) its init func is used when re-loading any of them
+ (via the def's m_init)
+ * (basic-only) the copy of its __dict__ is used when re-loading any of them
+ (via the def's m_copy)
+
+However, the following happens as expected:
+
+* a new module object (with its own __dict__) is created for each request
+* the module's __spec__ has the requested name
+* the loaded module is cached in sys.modules under the requested name
+* the m_index field of the shared def is not changed,
+ so at least PyState_FindModule() will always look in the same place
+
+For "basic" modules there are other quirks:
+
+* (whether sharing a def or not) when loaded the first time,
+ m_copy is set before _init_module_attrs() is called
+ in importlib._bootstrap.module_from_spec(),
+ so when the module is re-loaded, the previous value
+ for __wpec__ (and others) is reset, possibly unexpectedly.
+
+Generally, when multiple interpreters are involved, some of the above
+gets even messier.
+*/
+
+static inline void
+extensions_lock_acquire(void)
+{
+ PyThread_acquire_lock(_PyRuntime.imports.extensions.mutex, WAIT_LOCK);
+}
+
+static inline void
+extensions_lock_release(void)
+{
+ PyThread_release_lock(_PyRuntime.imports.extensions.mutex);
+}
+
+/* Magic for extension modules (built-in as well as dynamically
+ loaded). To prevent initializing an extension module more than
+ once, we keep a static dictionary 'extensions' keyed by the tuple
+ (module name, module name) (for built-in modules) or by
+ (filename, module name) (for dynamically loaded modules), containing these
+ modules. A copy of the module's dictionary is stored by calling
+ _PyImport_FixupExtensionObject() immediately after the module initialization
+ function succeeds. A copy can be retrieved from there by calling
+ import_find_extension().
+
+ Modules which do support multiple initialization set their m_size
+ field to a non-negative number (indicating the size of the
+ module-specific state). They are still recorded in the extensions
+ dictionary, to avoid loading shared libraries twice.
+*/
+
+static void *
+hashtable_key_from_2_strings(PyObject *str1, PyObject *str2, const char sep)
+{
+ Py_ssize_t str1_len, str2_len;
+ const char *str1_data = PyUnicode_AsUTF8AndSize(str1, &str1_len);
+ const char *str2_data = PyUnicode_AsUTF8AndSize(str2, &str2_len);
+ if (str1_data == NULL || str2_data == NULL) {
+ return NULL;
+ }
+ /* Make sure sep and the NULL byte won't cause an overflow. */
+ assert(SIZE_MAX - str1_len - str2_len > 2);
+ size_t size = str1_len + 1 + str2_len + 1;
+
+ char *key = PyMem_RawMalloc(size);
+ if (key == NULL) {
+ PyErr_NoMemory();
+ return NULL;
+ }
+
+ strncpy(key, str1_data, str1_len);
+ key[str1_len] = sep;
+ strncpy(key + str1_len + 1, str2_data, str2_len + 1);
+ assert(strlen(key) == size - 1);
+ return key;
+}
+
+static Py_uhash_t
+hashtable_hash_str(const void *key)
+{
+ return _Py_HashBytes(key, strlen((const char *)key));
+}
+
+static int
+hashtable_compare_str(const void *key1, const void *key2)
+{
+ return strcmp((const char *)key1, (const char *)key2) == 0;
+}
+
+static void
+hashtable_destroy_str(void *ptr)
+{
+ PyMem_RawFree(ptr);
+}
+
+#define HTSEP ':'
+
+static PyModuleDef *
+_extensions_cache_get(PyObject *filename, PyObject *name)
+{
+ PyModuleDef *def = NULL;
+ void *key = NULL;
+ extensions_lock_acquire();
+
+ if (EXTENSIONS.hashtable == NULL) {
+ goto finally;
+ }
+
+ key = hashtable_key_from_2_strings(filename, name, HTSEP);
+ if (key == NULL) {
+ goto finally;
+ }
+ _Py_hashtable_entry_t *entry = _Py_hashtable_get_entry(
+ EXTENSIONS.hashtable, key);
+ if (entry == NULL) {
+ goto finally;
+ }
+ def = (PyModuleDef *)entry->value;
+
+finally:
+ extensions_lock_release();
+ if (key != NULL) {
+ PyMem_RawFree(key);
+ }
+ return def;
+}
+
+static int
+_extensions_cache_set(PyObject *filename, PyObject *name, PyModuleDef *def)
+{
+ int res = -1;
+ extensions_lock_acquire();
+
+ if (EXTENSIONS.hashtable == NULL) {
+ _Py_hashtable_allocator_t alloc = {PyMem_RawMalloc, PyMem_RawFree};
+ EXTENSIONS.hashtable = _Py_hashtable_new_full(
+ hashtable_hash_str,
+ hashtable_compare_str,
+ hashtable_destroy_str, // key
+ /* There's no need to decref the def since it's immortal. */
+ NULL, // value
+ &alloc
+ );
+ if (EXTENSIONS.hashtable == NULL) {
+ PyErr_NoMemory();
+ goto finally;
+ }
+ }
+
+ void *key = hashtable_key_from_2_strings(filename, name, HTSEP);
+ if (key == NULL) {
+ goto finally;
+ }
+
+ int already_set = 0;
+ _Py_hashtable_entry_t *entry = _Py_hashtable_get_entry(
+ EXTENSIONS.hashtable, key);
+ if (entry == NULL) {
+ if (_Py_hashtable_set(EXTENSIONS.hashtable, key, def) < 0) {
+ PyMem_RawFree(key);
+ PyErr_NoMemory();
+ goto finally;
+ }
+ }
+ else {
+ if (entry->value == NULL) {
+ entry->value = def;
+ }
+ else {
+ /* We expect it to be static, so it must be the same pointer. */
+ assert((PyModuleDef *)entry->value == def);
+ already_set = 1;
+ }
+ PyMem_RawFree(key);
+ }
+ if (!already_set) {
+ /* We assume that all module defs are statically allocated
+ and will never be freed. Otherwise, we would incref here. */
+ _Py_SetImmortal(def);
+ }
+ res = 0;
+
+finally:
+ extensions_lock_release();
+ return res;
+}
+
+static void
+_extensions_cache_delete(PyObject *filename, PyObject *name)
+{
+ void *key = NULL;
+ extensions_lock_acquire();
+
+ if (EXTENSIONS.hashtable == NULL) {
+ /* It was never added. */
+ goto finally;
+ }
+
+ key = hashtable_key_from_2_strings(filename, name, HTSEP);
+ if (key == NULL) {
+ goto finally;
+ }
+
+ _Py_hashtable_entry_t *entry = _Py_hashtable_get_entry(
+ EXTENSIONS.hashtable, key);
+ if (entry == NULL) {
+ /* It was never added. */
+ goto finally;
+ }
+ if (entry->value == NULL) {
+ /* It was already removed. */
+ goto finally;
+ }
+ /* If we hadn't made the stored defs immortal, we would decref here.
+ However, this decref would be problematic if the module def were
+ dynamically allocated, it were the last ref, and this function
+ were called with an interpreter other than the def's owner. */
+ assert(_Py_IsImmortal(entry->value));
+ entry->value = NULL;
+
+finally:
+ extensions_lock_release();
+ if (key != NULL) {
+ PyMem_RawFree(key);
+ }
+}
+
+static void
+_extensions_cache_clear_all(void)
+{
+ /* The runtime (i.e. main interpreter) must be finalizing,
+ so we don't need to worry about the lock. */
+ _Py_hashtable_destroy(EXTENSIONS.hashtable);
+ EXTENSIONS.hashtable = NULL;
+}
+
+#undef HTSEP
+
+
+static bool
+check_multi_interp_extensions(PyInterpreterState *interp)
+{
+ int override = OVERRIDE_MULTI_INTERP_EXTENSIONS_CHECK(interp);
+ if (override < 0) {
+ return false;
+ }
+ else if (override > 0) {
+ return true;
+ }
+ else if (_PyInterpreterState_HasFeature(
+ interp, Py_RTFLAGS_MULTI_INTERP_EXTENSIONS)) {
+ return true;
+ }
+ return false;
+}
+
+int
+_PyImport_CheckSubinterpIncompatibleExtensionAllowed(const char *name)
+{
+ PyInterpreterState *interp = _PyInterpreterState_Get();
+ if (check_multi_interp_extensions(interp)) {
+ assert(!_Py_IsMainInterpreter(interp));
+ PyErr_Format(PyExc_ImportError,
+ "module %s does not support loading in subinterpreters",
+ name);
+ return -1;
+ }
+ return 0;
+}
+
+static PyObject *
+get_core_module_dict(PyInterpreterState *interp,
+ PyObject *name, PyObject *filename)
+{
+ /* Only builtin modules are core. */
+ if (filename == name) {
+ assert(!PyErr_Occurred());
+ if (PyUnicode_CompareWithASCIIString(name, "sys") == 0) {
+ return interp->sysdict_copy;
+ }
+ assert(!PyErr_Occurred());
+ if (PyUnicode_CompareWithASCIIString(name, "builtins") == 0) {
+ return interp->builtins_copy;
+ }
+ assert(!PyErr_Occurred());
+ }
+ return NULL;
+}
+
+static inline int
+is_core_module(PyInterpreterState *interp, PyObject *name, PyObject *filename)
+{
+ /* This might be called before the core dict copies are in place,
+ so we can't rely on get_core_module_dict() here. */
+ if (filename == name) {
+ if (PyUnicode_CompareWithASCIIString(name, "sys") == 0) {
+ return 1;
+ }
+ if (PyUnicode_CompareWithASCIIString(name, "builtins") == 0) {
+ return 1;
+ }
+ }
+ return 0;
+}
+
+static int
+fix_up_extension(PyObject *mod, PyObject *name, PyObject *filename)
+{
+ if (mod == NULL || !PyModule_Check(mod)) {
+ PyErr_BadInternalCall();
+ return -1;
+ }
+
+ struct PyModuleDef *def = PyModule_GetDef(mod);
+ if (!def) {
+ PyErr_BadInternalCall();
+ return -1;
+ }
+
+ PyThreadState *tstate = _PyThreadState_GET();
+ if (_modules_by_index_set(tstate->interp, def, mod) < 0) {
+ return -1;
+ }
+
+ // bpo-44050: Extensions and def->m_base.m_copy can be updated
+ // when the extension module doesn't support sub-interpreters.
+ if (def->m_size == -1) {
+ if (!is_core_module(tstate->interp, name, filename)) {
+ assert(PyUnicode_CompareWithASCIIString(name, "sys") != 0);
+ assert(PyUnicode_CompareWithASCIIString(name, "builtins") != 0);
+ if (def->m_base.m_copy) {
+ /* Somebody already imported the module,
+ likely under a different name.
+ XXX this should really not happen. */
+ Py_CLEAR(def->m_base.m_copy);
+ }
+ PyObject *dict = PyModule_GetDict(mod);
+ if (dict == NULL) {
+ return -1;
+ }
+ def->m_base.m_copy = PyDict_Copy(dict);
+ if (def->m_base.m_copy == NULL) {
+ return -1;
+ }
+ }
+ }
+
+ // XXX Why special-case the main interpreter?
+ if (_Py_IsMainInterpreter(tstate->interp) || def->m_size == -1) {
+ if (_extensions_cache_set(filename, name, def) < 0) {
+ return -1;
+ }
+ }
+
+ return 0;
+}
+
+int
+_PyImport_FixupExtensionObject(PyObject *mod, PyObject *name,
+ PyObject *filename, PyObject *modules)
+{
+ if (PyObject_SetItem(modules, name, mod) < 0) {
+ return -1;
+ }
+ if (fix_up_extension(mod, name, filename) < 0) {
+ PyMapping_DelItem(modules, name);
+ return -1;
+ }
+ return 0;
+}
+
+
+static PyObject *
+import_find_extension(PyThreadState *tstate, PyObject *name,
+ PyObject *filename)
+{
+ /* Only single-phase init modules will be in the cache. */
+ PyModuleDef *def = _extensions_cache_get(filename, name);
+ if (def == NULL) {
+ return NULL;
+ }
+
+ /* It may have been successfully imported previously
+ in an interpreter that allows legacy modules
+ but is not allowed in the current interpreter. */
+ const char *name_buf = PyUnicode_AsUTF8(name);
+ assert(name_buf != NULL);
+ if (_PyImport_CheckSubinterpIncompatibleExtensionAllowed(name_buf) < 0) {
+ return NULL;
+ }
+
+ PyObject *mod, *mdict;
+ PyObject *modules = MODULES(tstate->interp);
+
+ if (def->m_size == -1) {
+ PyObject *m_copy = def->m_base.m_copy;
+ /* Module does not support repeated initialization */
+ if (m_copy == NULL) {
+ /* It might be a core module (e.g. sys & builtins),
+ for which we don't set m_copy. */
+ m_copy = get_core_module_dict(tstate->interp, name, filename);
+ if (m_copy == NULL) {
+ return NULL;
+ }
+ }
+ mod = import_add_module(tstate, name);
+ if (mod == NULL) {
+ return NULL;
+ }
+ mdict = PyModule_GetDict(mod);
+ if (mdict == NULL) {
+ Py_DECREF(mod);
+ return NULL;
+ }
+ if (PyDict_Update(mdict, m_copy)) {
+ Py_DECREF(mod);
+ return NULL;
+ }
+ }
+ else {
+ if (def->m_base.m_init == NULL)
+ return NULL;
+ mod = _PyImport_InitFunc_TrampolineCall(def->m_base.m_init);
+ if (mod == NULL)
+ return NULL;
+ if (PyObject_SetItem(modules, name, mod) == -1) {
+ Py_DECREF(mod);
+ return NULL;
+ }
+ }
+ if (_modules_by_index_set(tstate->interp, def, mod) < 0) {
+ PyMapping_DelItem(modules, name);
+ Py_DECREF(mod);
+ return NULL;
+ }
+
+ int verbose = _PyInterpreterState_GetConfig(tstate->interp)->verbose;
+ if (verbose) {
+ PySys_FormatStderr("import %U # previously loaded (%R)\n",
+ name, filename);
+ }
+ return mod;
+}
+
+static int
+clear_singlephase_extension(PyInterpreterState *interp,
+ PyObject *name, PyObject *filename)
+{
+ PyModuleDef *def = _extensions_cache_get(filename, name);
+ if (def == NULL) {
+ if (PyErr_Occurred()) {
+ return -1;
+ }
+ return 0;
+ }
+
+ /* Clear data set when the module was initially loaded. */
+ def->m_base.m_init = NULL;
+ Py_CLEAR(def->m_base.m_copy);
+ // We leave m_index alone since there's no reason to reset it.
+
+ /* Clear the PyState_*Module() cache entry. */
+ if (_modules_by_index_check(interp, def->m_base.m_index) == NULL) {
+ if (_modules_by_index_clear_one(interp, def) < 0) {
+ return -1;
+ }
+ }
+
+ /* Clear the cached module def. */
+ _extensions_cache_delete(filename, name);
+
+ return 0;
+}
+
+
+/*******************/
+/* builtin modules */
+/*******************/
+
+int
+_PyImport_FixupBuiltin(PyObject *mod, const char *name, PyObject *modules)
+{
+ int res = -1;
+ PyObject *nameobj;
+ nameobj = PyUnicode_InternFromString(name);
+ if (nameobj == NULL) {
+ return -1;
+ }
+ if (PyObject_SetItem(modules, nameobj, mod) < 0) {
+ goto finally;
+ }
+ if (fix_up_extension(mod, nameobj, nameobj) < 0) {
+ PyMapping_DelItem(modules, nameobj);
+ goto finally;
+ }
+ res = 0;
+
+finally:
+ Py_DECREF(nameobj);
+ return res;
+}
+
+/* Helper to test for built-in module */
+
+static int
+is_builtin(PyObject *name)
+{
+ int i;
+ struct _inittab *inittab = INITTAB;
+ for (i = 0; inittab[i].name != NULL; i++) {
+ if (_PyUnicode_EqualToASCIIString(name, inittab[i].name)) {
+ if (inittab[i].initfunc == NULL)
+ return -1;
+ else
+ return 1;
+ }
+ }
+ return 0;
+}
+
+static PyObject*
+create_builtin(PyThreadState *tstate, PyObject *name, PyObject *spec)
+{
+ PyObject *mod = import_find_extension(tstate, name, name);
+ if (mod || _PyErr_Occurred(tstate)) {
+ return mod;
+ }
+
+ PyObject *modules = MODULES(tstate->interp);
+ for (struct _inittab *p = INITTAB; p->name != NULL; p++) {
+ if (_PyUnicode_EqualToASCIIString(name, p->name)) {
+ if (p->initfunc == NULL) {
+ /* Cannot re-init internal module ("sys" or "builtins") */
+ mod = PyImport_AddModuleObject(name);
+ return Py_XNewRef(mod);
+ }
+ mod = _PyImport_InitFunc_TrampolineCall(*p->initfunc);
+ if (mod == NULL) {
+ return NULL;
+ }
+
+ if (PyObject_TypeCheck(mod, &PyModuleDef_Type)) {
+ return PyModule_FromDefAndSpec((PyModuleDef*)mod, spec);
+ }
+ else {
+ /* Remember pointer to module init function. */
+ PyModuleDef *def = PyModule_GetDef(mod);
+ if (def == NULL) {
+ return NULL;
+ }
+
+ def->m_base.m_init = p->initfunc;
+ if (_PyImport_FixupExtensionObject(mod, name, name,
+ modules) < 0) {
+ return NULL;
+ }
+ return mod;
+ }
+ }
+ }
+
+ // not found
+ Py_RETURN_NONE;
+}
+
+
+/*****************************/
+/* the builtin modules table */
+/*****************************/
+
+/* API for embedding applications that want to add their own entries
+ to the table of built-in modules. This should normally be called
+ *before* Py_Initialize(). When the table resize fails, -1 is
+ returned and the existing table is unchanged.
+
+ After a similar function by Just van Rossum. */
+
+int
+PyImport_ExtendInittab(struct _inittab *newtab)
+{
+ struct _inittab *p;
+ size_t i, n;
+ int res = 0;
+
+ if (INITTAB != NULL) {
+ Py_FatalError("PyImport_ExtendInittab() may not be called after Py_Initialize()");
+ }
+
+ /* Count the number of entries in both tables */
+ for (n = 0; newtab[n].name != NULL; n++)
+ ;
+ if (n == 0)
+ return 0; /* Nothing to do */
+ for (i = 0; PyImport_Inittab[i].name != NULL; i++)
+ ;
+
+ /* Force default raw memory allocator to get a known allocator to be able
+ to release the memory in _PyImport_Fini2() */
+ PyMemAllocatorEx old_alloc;
+ _PyMem_SetDefaultAllocator(PYMEM_DOMAIN_RAW, &old_alloc);
+
+ /* Allocate new memory for the combined table */
+ p = NULL;
+ if (i + n <= SIZE_MAX / sizeof(struct _inittab) - 1) {
+ size_t size = sizeof(struct _inittab) * (i + n + 1);
+ p = PyMem_RawRealloc(inittab_copy, size);
+ }
+ if (p == NULL) {
+ res = -1;
+ goto done;
+ }
+
+ /* Copy the tables into the new memory at the first call
+ to PyImport_ExtendInittab(). */
+ if (inittab_copy != PyImport_Inittab) {
+ memcpy(p, PyImport_Inittab, (i+1) * sizeof(struct _inittab));
+ }
+ memcpy(p + i, newtab, (n + 1) * sizeof(struct _inittab));
+ PyImport_Inittab = inittab_copy = p;
+
+done:
+ PyMem_SetAllocator(PYMEM_DOMAIN_RAW, &old_alloc);
+ return res;
+}
+
+/* Shorthand to add a single entry given a name and a function */
+
+int
+PyImport_AppendInittab(const char *name, PyObject* (*initfunc)(void))
+{
+ struct _inittab newtab[2];
+
+ if (INITTAB != NULL) {
+ Py_FatalError("PyImport_AppendInittab() may not be called after Py_Initialize()");
+ }
+
+ memset(newtab, '\0', sizeof newtab);
+
+ newtab[0].name = name;
+ newtab[0].initfunc = initfunc;
+
+ return PyImport_ExtendInittab(newtab);
+}
+
+
+/* the internal table */
+
+static int
+init_builtin_modules_table(void)
+{
+ size_t size;
+ for (size = 0; PyImport_Inittab[size].name != NULL; size++)
+ ;
+ size++;
+
+ /* Make the copy. */
+ struct _inittab *copied = PyMem_RawMalloc(size * sizeof(struct _inittab));
+ if (copied == NULL) {
+ return -1;
+ }
+ memcpy(copied, PyImport_Inittab, size * sizeof(struct _inittab));
+ INITTAB = copied;
+ return 0;
+}
+
+static void
+fini_builtin_modules_table(void)
+{
+ struct _inittab *inittab = INITTAB;
+ INITTAB = NULL;
+ PyMem_RawFree(inittab);
+}
+
+PyObject *
+_PyImport_GetBuiltinModuleNames(void)
+{
+ PyObject *list = PyList_New(0);
+ if (list == NULL) {
+ return NULL;
+ }
+ struct _inittab *inittab = INITTAB;
+ for (Py_ssize_t i = 0; inittab[i].name != NULL; i++) {
+ PyObject *name = PyUnicode_FromString(inittab[i].name);
+ if (name == NULL) {
+ Py_DECREF(list);
+ return NULL;
+ }
+ if (PyList_Append(list, name) < 0) {
+ Py_DECREF(name);
+ Py_DECREF(list);
+ return NULL;
+ }
+ Py_DECREF(name);
+ }
+ return list;
+}
+
+
+/********************/
+/* the magic number */
+/********************/
+
+/* Helper for pythonrun.c -- return magic number and tag. */
+
+long
+PyImport_GetMagicNumber(void)
+{
+ long res;
+ PyInterpreterState *interp = _PyInterpreterState_GET();
+ PyObject *external, *pyc_magic;
+
+ external = PyObject_GetAttrString(IMPORTLIB(interp), "_bootstrap_external");
+ if (external == NULL)
+ return -1;
+ pyc_magic = PyObject_GetAttrString(external, "_RAW_MAGIC_NUMBER");
+ Py_DECREF(external);
+ if (pyc_magic == NULL)
+ return -1;
+ res = PyLong_AsLong(pyc_magic);
+ Py_DECREF(pyc_magic);
+ return res;
+}
+
+
+extern const char * _PySys_ImplCacheTag;
+
+const char *
+PyImport_GetMagicTag(void)
+{
+ return _PySys_ImplCacheTag;
+}
+
+
+/*********************************/
+/* a Python module's code object */
+/*********************************/
+
+/* Execute a code object in a module and return the module object
+ * WITH INCREMENTED REFERENCE COUNT. If an error occurs, name is
+ * removed from sys.modules, to avoid leaving damaged module objects
+ * in sys.modules. The caller may wish to restore the original
+ * module object (if any) in this case; PyImport_ReloadModule is an
+ * example.
+ *
+ * Note that PyImport_ExecCodeModuleWithPathnames() is the preferred, richer
+ * interface. The other two exist primarily for backward compatibility.
+ */
+PyObject *
+PyImport_ExecCodeModule(const char *name, PyObject *co)
+{
+ return PyImport_ExecCodeModuleWithPathnames(
+ name, co, (char *)NULL, (char *)NULL);
+}
+
+PyObject *
+PyImport_ExecCodeModuleEx(const char *name, PyObject *co, const char *pathname)
+{
+ return PyImport_ExecCodeModuleWithPathnames(
+ name, co, pathname, (char *)NULL);
+}
+
+PyObject *
+PyImport_ExecCodeModuleWithPathnames(const char *name, PyObject *co,
+ const char *pathname,
+ const char *cpathname)
+{
+ PyObject *m = NULL;
+ PyObject *nameobj, *pathobj = NULL, *cpathobj = NULL, *external= NULL;
+
+ nameobj = PyUnicode_FromString(name);
+ if (nameobj == NULL)
+ return NULL;
+
+ if (cpathname != NULL) {
+ cpathobj = PyUnicode_DecodeFSDefault(cpathname);
+ if (cpathobj == NULL)
+ goto error;
+ }
+ else
+ cpathobj = NULL;
+
+ if (pathname != NULL) {
+ pathobj = PyUnicode_DecodeFSDefault(pathname);
+ if (pathobj == NULL)
+ goto error;
+ }
+ else if (cpathobj != NULL) {
+ PyInterpreterState *interp = _PyInterpreterState_GET();
+
+ if (interp == NULL) {
+ Py_FatalError("no current interpreter");
+ }
+
+ external= PyObject_GetAttrString(IMPORTLIB(interp),
+ "_bootstrap_external");
+ if (external != NULL) {
+ pathobj = _PyObject_CallMethodOneArg(
+ external, &_Py_ID(_get_sourcefile), cpathobj);
+ Py_DECREF(external);
+ }
+ if (pathobj == NULL)
+ PyErr_Clear();
+ }
+ else
+ pathobj = NULL;
+
+ m = PyImport_ExecCodeModuleObject(nameobj, co, pathobj, cpathobj);
+error:
+ Py_DECREF(nameobj);
+ Py_XDECREF(pathobj);
+ Py_XDECREF(cpathobj);
+ return m;
+}
+
+static PyObject *
+module_dict_for_exec(PyThreadState *tstate, PyObject *name)
+{
+ PyObject *m, *d;
+
+ m = import_add_module(tstate, name);
+ if (m == NULL)
+ return NULL;
+ /* If the module is being reloaded, we get the old module back
+ and re-use its dict to exec the new code. */
+ d = PyModule_GetDict(m);
+ int r = PyDict_Contains(d, &_Py_ID(__builtins__));
+ if (r == 0) {
+ r = PyDict_SetItem(d, &_Py_ID(__builtins__), PyEval_GetBuiltins());
+ }
+ if (r < 0) {
+ remove_module(tstate, name);
+ Py_DECREF(m);
+ return NULL;
+ }
+
+ Py_INCREF(d);
+ Py_DECREF(m);
+ return d;
+}
+
+static PyObject *
+exec_code_in_module(PyThreadState *tstate, PyObject *name,
+ PyObject *module_dict, PyObject *code_object)
+{
+ PyObject *v, *m;
+
+ v = PyEval_EvalCode(code_object, module_dict, module_dict);
+ if (v == NULL) {
+ remove_module(tstate, name);
+ return NULL;
+ }
+ Py_DECREF(v);
+
+ m = import_get_module(tstate, name);
+ if (m == NULL && !_PyErr_Occurred(tstate)) {
+ _PyErr_Format(tstate, PyExc_ImportError,
+ "Loaded module %R not found in sys.modules",
+ name);
+ }
+
+ return m;
+}
+
+PyObject*
+PyImport_ExecCodeModuleObject(PyObject *name, PyObject *co, PyObject *pathname,
+ PyObject *cpathname)
+{
+ PyThreadState *tstate = _PyThreadState_GET();
+ PyObject *d, *external, *res;
+
+ d = module_dict_for_exec(tstate, name);
+ if (d == NULL) {
+ return NULL;
+ }
+
+ if (pathname == NULL) {
+ pathname = ((PyCodeObject *)co)->co_filename;
+ }
+ external = PyObject_GetAttrString(IMPORTLIB(tstate->interp),
+ "_bootstrap_external");
+ if (external == NULL) {
+ Py_DECREF(d);
+ return NULL;
+ }
+ res = PyObject_CallMethodObjArgs(external, &_Py_ID(_fix_up_module),
+ d, name, pathname, cpathname, NULL);
+ Py_DECREF(external);
+ if (res != NULL) {
+ Py_DECREF(res);
+ res = exec_code_in_module(tstate, name, d, co);
+ }
+ Py_DECREF(d);
+ return res;
+}
+
+
+static void
+update_code_filenames(PyCodeObject *co, PyObject *oldname, PyObject *newname)
+{
+ PyObject *constants, *tmp;
+ Py_ssize_t i, n;
+
+ if (PyUnicode_Compare(co->co_filename, oldname))
+ return;
+
+ Py_XSETREF(co->co_filename, Py_NewRef(newname));
+
+ constants = co->co_consts;
+ n = PyTuple_GET_SIZE(constants);
+ for (i = 0; i < n; i++) {
+ tmp = PyTuple_GET_ITEM(constants, i);
+ if (PyCode_Check(tmp))
+ update_code_filenames((PyCodeObject *)tmp,
+ oldname, newname);
+ }
+}
+
+static void
+update_compiled_module(PyCodeObject *co, PyObject *newname)
+{
+ PyObject *oldname;
+
+ if (PyUnicode_Compare(co->co_filename, newname) == 0)
+ return;
+
+ oldname = co->co_filename;
+ Py_INCREF(oldname);
+ update_code_filenames(co, oldname, newname);
+ Py_DECREF(oldname);
+}
+
+
+/******************/
+/* frozen modules */
+/******************/
+
+/* Return true if the name is an alias. In that case, "alias" is set
+ to the original module name. If it is an alias but the original
+ module isn't known then "alias" is set to NULL while true is returned. */
+static bool
+resolve_module_alias(const char *name, const struct _module_alias *aliases,
+ const char **alias)
+{
+ const struct _module_alias *entry;
+ for (entry = aliases; ; entry++) {
+ if (entry->name == NULL) {
+ /* It isn't an alias. */
+ return false;
+ }
+ if (strcmp(name, entry->name) == 0) {
+ if (alias != NULL) {
+ *alias = entry->orig;
+ }
+ return true;
+ }
+ }
+}
+
+static bool
+use_frozen(void)
+{
+ PyInterpreterState *interp = _PyInterpreterState_GET();
+ int override = OVERRIDE_FROZEN_MODULES(interp);
+ if (override > 0) {
+ return true;
+ }
+ else if (override < 0) {
+ return false;
+ }
+ else {
+ return interp->config.use_frozen_modules;
+ }
+}
+
+static PyObject *
+list_frozen_module_names(void)
+{
+ PyObject *names = PyList_New(0);
+ if (names == NULL) {
+ return NULL;
+ }
+ bool enabled = use_frozen();
+ const struct _frozen *p;
+#define ADD_MODULE(name) \
+ do { \
+ PyObject *nameobj = PyUnicode_FromString(name); \
+ if (nameobj == NULL) { \
+ goto error; \
+ } \
+ int res = PyList_Append(names, nameobj); \
+ Py_DECREF(nameobj); \
+ if (res != 0) { \
+ goto error; \
+ } \
+ } while(0)
+ // We always use the bootstrap modules.
+ for (p = _PyImport_FrozenBootstrap; ; p++) {
+ if (p->name == NULL) {
+ break;
+ }
+ ADD_MODULE(p->name);
+ }
+ // Frozen stdlib modules may be disabled.
+ for (p = _PyImport_FrozenStdlib; ; p++) {
+ if (p->name == NULL) {
+ break;
+ }
+ if (enabled) {
+ ADD_MODULE(p->name);
+ }
+ }
+ for (p = _PyImport_FrozenTest; ; p++) {
+ if (p->name == NULL) {
+ break;
+ }
+ if (enabled) {
+ ADD_MODULE(p->name);
+ }
+ }
+#undef ADD_MODULE
+ // Add any custom modules.
+ if (PyImport_FrozenModules != NULL) {
+ for (p = PyImport_FrozenModules; ; p++) {
+ if (p->name == NULL) {
+ break;
+ }
+ PyObject *nameobj = PyUnicode_FromString(p->name);
+ if (nameobj == NULL) {
+ goto error;
+ }
+ int found = PySequence_Contains(names, nameobj);
+ if (found < 0) {
+ Py_DECREF(nameobj);
+ goto error;
+ }
+ else if (found) {
+ Py_DECREF(nameobj);
+ }
+ else {
+ int res = PyList_Append(names, nameobj);
+ Py_DECREF(nameobj);
+ if (res != 0) {
+ goto error;
+ }
+ }
+ }
+ }
+ return names;
+
+error:
+ Py_DECREF(names);
+ return NULL;
+}
+
+typedef enum {
+ FROZEN_OKAY,
+ FROZEN_BAD_NAME, // The given module name wasn't valid.
+ FROZEN_NOT_FOUND, // It wasn't in PyImport_FrozenModules.
+ FROZEN_DISABLED, // -X frozen_modules=off (and not essential)
+ FROZEN_EXCLUDED, /* The PyImport_FrozenModules entry has NULL "code"
+ (module is present but marked as unimportable, stops search). */
+ FROZEN_INVALID, /* The PyImport_FrozenModules entry is bogus
+ (eg. does not contain executable code). */
+} frozen_status;
+
+static inline void
+set_frozen_error(frozen_status status, PyObject *modname)
+{
+ const char *err = NULL;
+ switch (status) {
+ case FROZEN_BAD_NAME:
+ case FROZEN_NOT_FOUND:
+ err = "No such frozen object named %R";
+ break;
+ case FROZEN_DISABLED:
+ err = "Frozen modules are disabled and the frozen object named %R is not essential";
+ break;
+ case FROZEN_EXCLUDED:
+ err = "Excluded frozen object named %R";
+ break;
+ case FROZEN_INVALID:
+ err = "Frozen object named %R is invalid";
+ break;
+ case FROZEN_OKAY:
+ // There was no error.
+ break;
+ default:
+ Py_UNREACHABLE();
+ }
+ if (err != NULL) {
+ PyObject *msg = PyUnicode_FromFormat(err, modname);
+ if (msg == NULL) {
+ PyErr_Clear();
+ }
+ PyErr_SetImportError(msg, modname, NULL);
+ Py_XDECREF(msg);
+ }
+}
+
+static const struct _frozen *
+look_up_frozen(const char *name)
+{
+ const struct _frozen *p;
+ // We always use the bootstrap modules.
+ for (p = _PyImport_FrozenBootstrap; ; p++) {
+ if (p->name == NULL) {
+ // We hit the end-of-list sentinel value.
+ break;
+ }
+ if (strcmp(name, p->name) == 0) {
+ return p;
+ }
+ }
+ // Prefer custom modules, if any. Frozen stdlib modules can be
+ // disabled here by setting "code" to NULL in the array entry.
+ if (PyImport_FrozenModules != NULL) {
+ for (p = PyImport_FrozenModules; ; p++) {
+ if (p->name == NULL) {
+ break;
+ }
+ if (strcmp(name, p->name) == 0) {
+ return p;
+ }
+ }
+ }
+ // Frozen stdlib modules may be disabled.
+ if (use_frozen()) {
+ for (p = _PyImport_FrozenStdlib; ; p++) {
+ if (p->name == NULL) {
+ break;
+ }
+ if (strcmp(name, p->name) == 0) {
+ return p;
+ }
+ }
+ for (p = _PyImport_FrozenTest; ; p++) {
+ if (p->name == NULL) {
+ break;
+ }
+ if (strcmp(name, p->name) == 0) {
+ return p;
+ }
+ }
+ }
+ return NULL;
+}
+
+struct frozen_info {
+ PyObject *nameobj;
+ const char *data;
+ PyObject *(*get_code)(void);
+ Py_ssize_t size;
+ bool is_package;
+ bool is_alias;
+ const char *origname;
+};
+
+static frozen_status
+find_frozen(PyObject *nameobj, struct frozen_info *info)
+{
+ if (info != NULL) {
+ memset(info, 0, sizeof(*info));
+ }
+
+ if (nameobj == NULL || nameobj == Py_None) {
+ return FROZEN_BAD_NAME;
+ }
+ const char *name = PyUnicode_AsUTF8(nameobj);
+ if (name == NULL) {
+ // Note that this function previously used
+ // _PyUnicode_EqualToASCIIString(). We clear the error here
+ // (instead of propagating it) to match the earlier behavior
+ // more closely.
+ PyErr_Clear();
+ return FROZEN_BAD_NAME;
+ }
+
+ const struct _frozen *p = look_up_frozen(name);
+ if (p == NULL) {
+ return FROZEN_NOT_FOUND;
+ }
+ if (info != NULL) {
+ info->nameobj = nameobj; // borrowed
+ info->data = (const char *)p->code;
+ info->get_code = p->get_code;
+ info->size = p->size;
+ info->is_package = p->is_package;
+ if (p->size < 0) {
+ // backward compatibility with negative size values
+ info->size = -(p->size);
+ info->is_package = true;
+ }
+ info->origname = name;
+ info->is_alias = resolve_module_alias(name, _PyImport_FrozenAliases,
+ &info->origname);
+ }
+ if (p->code == NULL && p->size == 0 && p->get_code != NULL) {
+ /* It is only deepfrozen. */
+ return FROZEN_OKAY;
+ }
+ if (p->code == NULL) {
+ /* It is frozen but marked as un-importable. */
+ return FROZEN_EXCLUDED;
+ }
+ if (p->code[0] == '\0' || p->size == 0) {
+ /* Does not contain executable code. */
+ return FROZEN_INVALID;
+ }
+ return FROZEN_OKAY;
+}
+
+static PyObject *
+unmarshal_frozen_code(PyInterpreterState *interp, struct frozen_info *info)
+{
+ if (info->get_code && _Py_IsMainInterpreter(interp)) {
+ PyObject *code = info->get_code();
+ assert(code != NULL);
+ return code;
+ }
+ PyObject *co = PyMarshal_ReadObjectFromString(info->data, info->size);
+ if (co == NULL) {
+ /* Does not contain executable code. */
+ PyErr_Clear();
+ set_frozen_error(FROZEN_INVALID, info->nameobj);
+ return NULL;
+ }
+ if (!PyCode_Check(co)) {
+ // We stick with TypeError for backward compatibility.
+ PyErr_Format(PyExc_TypeError,
+ "frozen object %R is not a code object",
+ info->nameobj);
+ Py_DECREF(co);
+ return NULL;
+ }
+ return co;
+}
+
+
+/* Initialize a frozen module.
+ Return 1 for success, 0 if the module is not found, and -1 with
+ an exception set if the initialization failed.
+ This function is also used from frozenmain.c */
+
+int
+PyImport_ImportFrozenModuleObject(PyObject *name)
+{
+ PyThreadState *tstate = _PyThreadState_GET();
+ PyObject *co, *m, *d = NULL;
+ int err;
+
+ struct frozen_info info;
+ frozen_status status = find_frozen(name, &info);
+ if (status == FROZEN_NOT_FOUND || status == FROZEN_DISABLED) {
+ return 0;
+ }
+ else if (status == FROZEN_BAD_NAME) {
+ return 0;
+ }
+ else if (status != FROZEN_OKAY) {
+ set_frozen_error(status, name);
+ return -1;
+ }
+ co = unmarshal_frozen_code(tstate->interp, &info);
+ if (co == NULL) {
+ return -1;
+ }
+ if (info.is_package) {
+ /* Set __path__ to the empty list */
+ PyObject *l;
+ m = import_add_module(tstate, name);
+ if (m == NULL)
+ goto err_return;
+ d = PyModule_GetDict(m);
+ l = PyList_New(0);
+ if (l == NULL) {
+ Py_DECREF(m);
+ goto err_return;
+ }
+ err = PyDict_SetItemString(d, "__path__", l);
+ Py_DECREF(l);
+ Py_DECREF(m);
+ if (err != 0)
+ goto err_return;
+ }
+ d = module_dict_for_exec(tstate, name);
+ if (d == NULL) {
+ goto err_return;
+ }
+ m = exec_code_in_module(tstate, name, d, co);
+ if (m == NULL) {
+ goto err_return;
+ }
+ Py_DECREF(m);
+ /* Set __origname__ (consumed in FrozenImporter._setup_module()). */
+ PyObject *origname;
+ if (info.origname) {
+ origname = PyUnicode_FromString(info.origname);
+ if (origname == NULL) {
+ goto err_return;
+ }
+ }
+ else {
+ origname = Py_NewRef(Py_None);
+ }
+ err = PyDict_SetItemString(d, "__origname__", origname);
+ Py_DECREF(origname);
+ if (err != 0) {
+ goto err_return;
+ }
+ Py_DECREF(d);
+ Py_DECREF(co);
+ return 1;
+
+err_return:
+ Py_XDECREF(d);
+ Py_DECREF(co);
+ return -1;
+}
+
+int
+PyImport_ImportFrozenModule(const char *name)
+{
+ PyObject *nameobj;
+ int ret;
+ nameobj = PyUnicode_InternFromString(name);
+ if (nameobj == NULL)
+ return -1;
+ ret = PyImport_ImportFrozenModuleObject(nameobj);
+ Py_DECREF(nameobj);
+ return ret;
+}
+
+
+/*************/
+/* importlib */
+/*************/
+
+/* Import the _imp extension by calling manually _imp.create_builtin() and
+ _imp.exec_builtin() since importlib is not initialized yet. Initializing
+ importlib requires the _imp module: this function fix the bootstrap issue.
+ */
+static PyObject*
+bootstrap_imp(PyThreadState *tstate)
+{
+ PyObject *name = PyUnicode_FromString("_imp");
+ if (name == NULL) {
+ return NULL;
+ }
+
+ // Mock a ModuleSpec object just good enough for PyModule_FromDefAndSpec():
+ // an object with just a name attribute.
+ //
+ // _imp.__spec__ is overridden by importlib._bootstrap._instal() anyway.
+ PyObject *attrs = Py_BuildValue("{sO}", "name", name);
+ if (attrs == NULL) {
+ goto error;
+ }
+ PyObject *spec = _PyNamespace_New(attrs);
+ Py_DECREF(attrs);
+ if (spec == NULL) {
+ goto error;
+ }
+
+ // Create the _imp module from its definition.
+ PyObject *mod = create_builtin(tstate, name, spec);
+ Py_CLEAR(name);
+ Py_DECREF(spec);
+ if (mod == NULL) {
+ goto error;
+ }
+ assert(mod != Py_None); // not found
+
+ // Execute the _imp module: call imp_module_exec().
+ if (exec_builtin_or_dynamic(mod) < 0) {
+ Py_DECREF(mod);
+ goto error;
+ }
+ return mod;
+
+error:
+ Py_XDECREF(name);
+ return NULL;
+}
+
+/* Global initializations. Can be undone by Py_FinalizeEx(). Don't
+ call this twice without an intervening Py_FinalizeEx() call. When
+ initializations fail, a fatal error is issued and the function does
+ not return. On return, the first thread and interpreter state have
+ been created.
+
+ Locking: you must hold the interpreter lock while calling this.
+ (If the lock has not yet been initialized, that's equivalent to
+ having the lock, but you cannot use multiple threads.)
+
+*/
+static int
+init_importlib(PyThreadState *tstate, PyObject *sysmod)
+{
+ assert(!_PyErr_Occurred(tstate));
+
+ PyInterpreterState *interp = tstate->interp;
+ int verbose = _PyInterpreterState_GetConfig(interp)->verbose;
+
+ // Import _importlib through its frozen version, _frozen_importlib.
+ if (verbose) {
+ PySys_FormatStderr("import _frozen_importlib # frozen\n");
+ }
+ if (PyImport_ImportFrozenModule("_frozen_importlib") <= 0) {
+ return -1;
+ }
+ PyObject *importlib = PyImport_AddModule("_frozen_importlib"); // borrowed
+ if (importlib == NULL) {
+ return -1;
+ }
+ IMPORTLIB(interp) = Py_NewRef(importlib);
+
+ // Import the _imp module
+ if (verbose) {
+ PySys_FormatStderr("import _imp # builtin\n");
+ }
+ PyObject *imp_mod = bootstrap_imp(tstate);
+ if (imp_mod == NULL) {
+ return -1;
+ }
+ if (_PyImport_SetModuleString("_imp", imp_mod) < 0) {
+ Py_DECREF(imp_mod);
+ return -1;
+ }
+
+ // Install importlib as the implementation of import
+ PyObject *value = PyObject_CallMethod(importlib, "_install",
+ "OO", sysmod, imp_mod);
+ Py_DECREF(imp_mod);
+ if (value == NULL) {
+ return -1;
+ }
+ Py_DECREF(value);
+
+ assert(!_PyErr_Occurred(tstate));
+ return 0;
+}
+
+
+static int
+init_importlib_external(PyInterpreterState *interp)
+{
+ PyObject *value;
+ value = PyObject_CallMethod(IMPORTLIB(interp),
+ "_install_external_importers", "");
+ if (value == NULL) {
+ return -1;
+ }
+ Py_DECREF(value);
+
+ value = PyImport_ImportModule("__res");
+ if (value == NULL) {
+ return -1;
+ }
+ Py_DECREF(value);
+
+ return 0;
+}
+
+PyObject *
+_PyImport_GetImportlibLoader(PyInterpreterState *interp,
+ const char *loader_name)
+{
+ return PyObject_GetAttrString(IMPORTLIB(interp), loader_name);
+}
+
+PyObject *
+_PyImport_GetImportlibExternalLoader(PyInterpreterState *interp,
+ const char *loader_name)
+{
+ PyObject *bootstrap = PyObject_GetAttrString(IMPORTLIB(interp),
+ "_bootstrap_external");
+ if (bootstrap == NULL) {
+ return NULL;
+ }
+
+ PyObject *loader_type = PyObject_GetAttrString(bootstrap, loader_name);
+ Py_DECREF(bootstrap);
+ return loader_type;
+}
+
+PyObject *
+_PyImport_BlessMyLoader(PyInterpreterState *interp, PyObject *module_globals)
+{
+ PyObject *external = PyObject_GetAttrString(IMPORTLIB(interp),
+ "_bootstrap_external");
+ if (external == NULL) {
+ return NULL;
+ }
+
+ PyObject *loader = PyObject_CallMethod(external, "_bless_my_loader",
+ "O", module_globals, NULL);
+ Py_DECREF(external);
+ return loader;
+}
+
+PyObject *
+_PyImport_ImportlibModuleRepr(PyInterpreterState *interp, PyObject *m)
+{
+ return PyObject_CallMethod(IMPORTLIB(interp), "_module_repr", "O", m);
+}
+
+
+/*******************/
+
+/* Return a finder object for a sys.path/pkg.__path__ item 'p',
+ possibly by fetching it from the path_importer_cache dict. If it
+ wasn't yet cached, traverse path_hooks until a hook is found
+ that can handle the path item. Return None if no hook could;
+ this tells our caller that the path based finder could not find
+ a finder for this path item. Cache the result in
+ path_importer_cache. */
+
+static PyObject *
+get_path_importer(PyThreadState *tstate, PyObject *path_importer_cache,
+ PyObject *path_hooks, PyObject *p)
+{
+ PyObject *importer;
+ Py_ssize_t j, nhooks;
+
+ if (!PyList_Check(path_hooks)) {
+ PyErr_SetString(PyExc_RuntimeError, "sys.path_hooks is not a list");
+ return NULL;
+ }
+ if (!PyDict_Check(path_importer_cache)) {
+ PyErr_SetString(PyExc_RuntimeError, "sys.path_importer_cache is not a dict");
+ return NULL;
+ }
+
+ nhooks = PyList_Size(path_hooks);
+ if (nhooks < 0)
+ return NULL; /* Shouldn't happen */
+
+ importer = PyDict_GetItemWithError(path_importer_cache, p);
+ if (importer != NULL || _PyErr_Occurred(tstate)) {
+ return Py_XNewRef(importer);
+ }
+
+ /* set path_importer_cache[p] to None to avoid recursion */
+ if (PyDict_SetItem(path_importer_cache, p, Py_None) != 0)
+ return NULL;
+
+ for (j = 0; j < nhooks; j++) {
+ PyObject *hook = PyList_GetItem(path_hooks, j);
+ if (hook == NULL)
+ return NULL;
+ importer = PyObject_CallOneArg(hook, p);
+ if (importer != NULL)
+ break;
+
+ if (!_PyErr_ExceptionMatches(tstate, PyExc_ImportError)) {
+ return NULL;
+ }
+ _PyErr_Clear(tstate);
+ }
+ if (importer == NULL) {
+ Py_RETURN_NONE;
+ }
+ if (PyDict_SetItem(path_importer_cache, p, importer) < 0) {
+ Py_DECREF(importer);
+ return NULL;
+ }
+ return importer;
+}
+
+PyObject *
+PyImport_GetImporter(PyObject *path)
+{
+ PyThreadState *tstate = _PyThreadState_GET();
+ PyObject *path_importer_cache = PySys_GetObject("path_importer_cache");
+ if (path_importer_cache == NULL) {
+ PyErr_SetString(PyExc_RuntimeError, "lost sys.path_importer_cache");
+ return NULL;
+ }
+ Py_INCREF(path_importer_cache);
+ PyObject *path_hooks = PySys_GetObject("path_hooks");
+ if (path_hooks == NULL) {
+ PyErr_SetString(PyExc_RuntimeError, "lost sys.path_hooks");
+ Py_DECREF(path_importer_cache);
+ return NULL;
+ }
+ Py_INCREF(path_hooks);
+ PyObject *importer = get_path_importer(tstate, path_importer_cache, path_hooks, path);
+ Py_DECREF(path_hooks);
+ Py_DECREF(path_importer_cache);
+ return importer;
+}
+
+
+/*********************/
+/* importing modules */
+/*********************/
+
+int
+_PyImport_InitDefaultImportFunc(PyInterpreterState *interp)
+{
+ // Get the __import__ function
+ PyObject *import_func = _PyDict_GetItemStringWithError(interp->builtins,
+ "__import__");
+ if (import_func == NULL) {
+ return -1;
+ }
+ IMPORT_FUNC(interp) = Py_NewRef(import_func);
+ return 0;
+}
+
+int
+_PyImport_IsDefaultImportFunc(PyInterpreterState *interp, PyObject *func)
+{
+ return func == IMPORT_FUNC(interp);
+}
+
+
+/* Import a module, either built-in, frozen, or external, and return
+ its module object WITH INCREMENTED REFERENCE COUNT */
+
+PyObject *
+PyImport_ImportModule(const char *name)
+{
+ PyObject *pname;
+ PyObject *result;
+
+ pname = PyUnicode_FromString(name);
+ if (pname == NULL)
+ return NULL;
+ result = PyImport_Import(pname);
+ Py_DECREF(pname);
+ return result;
+}
+
+
+/* Import a module without blocking
+ *
+ * At first it tries to fetch the module from sys.modules. If the module was
+ * never loaded before it loads it with PyImport_ImportModule() unless another
+ * thread holds the import lock. In the latter case the function raises an
+ * ImportError instead of blocking.
+ *
+ * Returns the module object with incremented ref count.
+ */
+PyObject *
+PyImport_ImportModuleNoBlock(const char *name)
+{
+ return PyImport_ImportModule(name);
+}
+
+
+/* Remove importlib frames from the traceback,
+ * except in Verbose mode. */
+static void
+remove_importlib_frames(PyThreadState *tstate)
+{
+ const char *importlib_filename = "<frozen importlib._bootstrap>";
+ const char *external_filename = "<frozen importlib._bootstrap_external>";
+ const char *importer_filename = "library/python/runtime_py3/importer.pxi";
+ const char *remove_frames = "_call_with_frames_removed";
+ int always_trim = 0;
+ int in_importlib = 0;
+ PyObject **prev_link, **outer_link = NULL;
+ PyObject *base_tb = NULL;
+
+ /* Synopsis: if it's an ImportError, we trim all importlib chunks
+ from the traceback. We always trim chunks
+ which end with a call to "_call_with_frames_removed". */
+
+ PyObject *exc = _PyErr_GetRaisedException(tstate);
+ if (exc == NULL || _PyInterpreterState_GetConfig(tstate->interp)->verbose) {
+ goto done;
+ }
+
+ if (PyType_IsSubtype(Py_TYPE(exc), (PyTypeObject *) PyExc_ImportError)) {
+ always_trim = 1;
+ }
+
+ assert(PyExceptionInstance_Check(exc));
+ base_tb = PyException_GetTraceback(exc);
+ prev_link = &base_tb;
+ PyObject *tb = base_tb;
+ while (tb != NULL) {
+ assert(PyTraceBack_Check(tb));
+ PyTracebackObject *traceback = (PyTracebackObject *)tb;
+ PyObject *next = (PyObject *) traceback->tb_next;
+ PyFrameObject *frame = traceback->tb_frame;
+ PyCodeObject *code = PyFrame_GetCode(frame);
+ int now_in_importlib;
+
+ now_in_importlib = _PyUnicode_EqualToASCIIString(code->co_filename, importlib_filename) ||
+ _PyUnicode_EqualToASCIIString(code->co_filename, external_filename) ||
+ _PyUnicode_EqualToASCIIString(code->co_filename, importer_filename);
+ if (now_in_importlib && !in_importlib) {
+ /* This is the link to this chunk of importlib tracebacks */
+ outer_link = prev_link;
+ }
+ in_importlib = now_in_importlib;
+
+ if (in_importlib &&
+ (always_trim ||
+ _PyUnicode_EqualToASCIIString(code->co_name, remove_frames))) {
+ Py_XSETREF(*outer_link, Py_XNewRef(next));
+ prev_link = outer_link;
+ }
+ else {
+ prev_link = (PyObject **) &traceback->tb_next;
+ }
+ Py_DECREF(code);
+ tb = next;
+ }
+ if (base_tb == NULL) {
+ base_tb = Py_None;
+ Py_INCREF(Py_None);
+ }
+ PyException_SetTraceback(exc, base_tb);
+done:
+ Py_XDECREF(base_tb);
+ _PyErr_SetRaisedException(tstate, exc);
+}
+
+
+static PyObject *
+resolve_name(PyThreadState *tstate, PyObject *name, PyObject *globals, int level)
+{
+ PyObject *abs_name;
+ PyObject *package = NULL;
+ PyObject *spec;
+ Py_ssize_t last_dot;
+ PyObject *base;
+ int level_up;
+
+ if (globals == NULL) {
+ _PyErr_SetString(tstate, PyExc_KeyError, "'__name__' not in globals");
+ goto error;
+ }
+ if (!PyDict_Check(globals)) {
+ _PyErr_SetString(tstate, PyExc_TypeError, "globals must be a dict");
+ goto error;
+ }
+ package = PyDict_GetItemWithError(globals, &_Py_ID(__package__));
+ if (package == Py_None) {
+ package = NULL;
+ }
+ else if (package == NULL && _PyErr_Occurred(tstate)) {
+ goto error;
+ }
+ spec = PyDict_GetItemWithError(globals, &_Py_ID(__spec__));
+ if (spec == NULL && _PyErr_Occurred(tstate)) {
+ goto error;
+ }
+
+ if (package != NULL) {
+ Py_INCREF(package);
+ if (!PyUnicode_Check(package)) {
+ _PyErr_SetString(tstate, PyExc_TypeError,
+ "package must be a string");
+ goto error;
+ }
+ else if (spec != NULL && spec != Py_None) {
+ int equal;
+ PyObject *parent = PyObject_GetAttr(spec, &_Py_ID(parent));
+ if (parent == NULL) {
+ goto error;
+ }
+
+ equal = PyObject_RichCompareBool(package, parent, Py_EQ);
+ Py_DECREF(parent);
+ if (equal < 0) {
+ goto error;
+ }
+ else if (equal == 0) {
+ if (PyErr_WarnEx(PyExc_DeprecationWarning,
+ "__package__ != __spec__.parent", 1) < 0) {
+ goto error;
+ }
+ }
+ }
+ }
+ else if (spec != NULL && spec != Py_None) {
+ package = PyObject_GetAttr(spec, &_Py_ID(parent));
+ if (package == NULL) {
+ goto error;
+ }
+ else if (!PyUnicode_Check(package)) {
+ _PyErr_SetString(tstate, PyExc_TypeError,
+ "__spec__.parent must be a string");
+ goto error;
+ }
+ }
+ else {
+ if (PyErr_WarnEx(PyExc_ImportWarning,
+ "can't resolve package from __spec__ or __package__, "
+ "falling back on __name__ and __path__", 1) < 0) {
+ goto error;
+ }
+
+ package = PyDict_GetItemWithError(globals, &_Py_ID(__name__));
+ if (package == NULL) {
+ if (!_PyErr_Occurred(tstate)) {
+ _PyErr_SetString(tstate, PyExc_KeyError,
+ "'__name__' not in globals");
+ }
+ goto error;
+ }
+
+ Py_INCREF(package);
+ if (!PyUnicode_Check(package)) {
+ _PyErr_SetString(tstate, PyExc_TypeError,
+ "__name__ must be a string");
+ goto error;
+ }
+
+ int haspath = PyDict_Contains(globals, &_Py_ID(__path__));
+ if (haspath < 0) {
+ goto error;
+ }
+ if (!haspath) {
+ Py_ssize_t dot;
+
+ if (PyUnicode_READY(package) < 0) {
+ goto error;
+ }
+
+ dot = PyUnicode_FindChar(package, '.',
+ 0, PyUnicode_GET_LENGTH(package), -1);
+ if (dot == -2) {
+ goto error;
+ }
+ else if (dot == -1) {
+ goto no_parent_error;
+ }
+ PyObject *substr = PyUnicode_Substring(package, 0, dot);
+ if (substr == NULL) {
+ goto error;
+ }
+ Py_SETREF(package, substr);
+ }
+ }
+
+ last_dot = PyUnicode_GET_LENGTH(package);
+ if (last_dot == 0) {
+ goto no_parent_error;
+ }
+
+ for (level_up = 1; level_up < level; level_up += 1) {
+ last_dot = PyUnicode_FindChar(package, '.', 0, last_dot, -1);
+ if (last_dot == -2) {
+ goto error;
+ }
+ else if (last_dot == -1) {
+ _PyErr_SetString(tstate, PyExc_ImportError,
+ "attempted relative import beyond top-level "
+ "package");
+ goto error;
+ }
+ }
+
+ base = PyUnicode_Substring(package, 0, last_dot);
+ Py_DECREF(package);
+ if (base == NULL || PyUnicode_GET_LENGTH(name) == 0) {
+ return base;
+ }
+
+ abs_name = PyUnicode_FromFormat("%U.%U", base, name);
+ Py_DECREF(base);
+ return abs_name;
+
+ no_parent_error:
+ _PyErr_SetString(tstate, PyExc_ImportError,
+ "attempted relative import "
+ "with no known parent package");
+
+ error:
+ Py_XDECREF(package);
+ return NULL;
+}
+
+static PyObject *
+import_find_and_load(PyThreadState *tstate, PyObject *abs_name)
+{
+ PyObject *mod = NULL;
+ PyInterpreterState *interp = tstate->interp;
+ int import_time = _PyInterpreterState_GetConfig(interp)->import_time;
+#define import_level FIND_AND_LOAD(interp).import_level
+#define accumulated FIND_AND_LOAD(interp).accumulated
+
+ _PyTime_t t1 = 0, accumulated_copy = accumulated;
+
+ PyObject *sys_path = PySys_GetObject("path");
+ PyObject *sys_meta_path = PySys_GetObject("meta_path");
+ PyObject *sys_path_hooks = PySys_GetObject("path_hooks");
+ if (_PySys_Audit(tstate, "import", "OOOOO",
+ abs_name, Py_None, sys_path ? sys_path : Py_None,
+ sys_meta_path ? sys_meta_path : Py_None,
+ sys_path_hooks ? sys_path_hooks : Py_None) < 0) {
+ return NULL;
+ }
+
+
+ /* XOptions is initialized after first some imports.
+ * So we can't have negative cache before completed initialization.
+ * Anyway, importlib._find_and_load is much slower than
+ * _PyDict_GetItemIdWithError().
+ */
+ if (import_time) {
+#define header FIND_AND_LOAD(interp).header
+ if (header) {
+ fputs("import time: self [us] | cumulative | imported package\n",
+ stderr);
+ header = 0;
+ }
+#undef header
+
+ import_level++;
+ t1 = _PyTime_GetPerfCounter();
+ accumulated = 0;
+ }
+
+ if (PyDTrace_IMPORT_FIND_LOAD_START_ENABLED())
+ PyDTrace_IMPORT_FIND_LOAD_START(PyUnicode_AsUTF8(abs_name));
+
+ mod = PyObject_CallMethodObjArgs(IMPORTLIB(interp), &_Py_ID(_find_and_load),
+ abs_name, IMPORT_FUNC(interp), NULL);
+
+ if (PyDTrace_IMPORT_FIND_LOAD_DONE_ENABLED())
+ PyDTrace_IMPORT_FIND_LOAD_DONE(PyUnicode_AsUTF8(abs_name),
+ mod != NULL);
+
+ if (import_time) {
+ _PyTime_t cum = _PyTime_GetPerfCounter() - t1;
+
+ import_level--;
+ fprintf(stderr, "import time: %9ld | %10ld | %*s%s\n",
+ (long)_PyTime_AsMicroseconds(cum - accumulated, _PyTime_ROUND_CEILING),
+ (long)_PyTime_AsMicroseconds(cum, _PyTime_ROUND_CEILING),
+ import_level*2, "", PyUnicode_AsUTF8(abs_name));
+
+ accumulated = accumulated_copy + cum;
+ }
+
+ return mod;
+#undef import_level
+#undef accumulated
+}
+
+PyObject *
+PyImport_ImportModuleLevelObject(PyObject *name, PyObject *globals,
+ PyObject *locals, PyObject *fromlist,
+ int level)
+{
+ PyThreadState *tstate = _PyThreadState_GET();
+ PyObject *abs_name = NULL;
+ PyObject *final_mod = NULL;
+ PyObject *mod = NULL;
+ PyObject *package = NULL;
+ PyInterpreterState *interp = tstate->interp;
+ int has_from;
+
+ if (name == NULL) {
+ _PyErr_SetString(tstate, PyExc_ValueError, "Empty module name");
+ goto error;
+ }
+
+ /* The below code is importlib.__import__() & _gcd_import(), ported to C
+ for added performance. */
+
+ if (!PyUnicode_Check(name)) {
+ _PyErr_SetString(tstate, PyExc_TypeError,
+ "module name must be a string");
+ goto error;
+ }
+ if (PyUnicode_READY(name) < 0) {
+ goto error;
+ }
+ if (level < 0) {
+ _PyErr_SetString(tstate, PyExc_ValueError, "level must be >= 0");
+ goto error;
+ }
+
+ if (level > 0) {
+ abs_name = resolve_name(tstate, name, globals, level);
+ if (abs_name == NULL)
+ goto error;
+ }
+ else { /* level == 0 */
+ if (PyUnicode_GET_LENGTH(name) == 0) {
+ _PyErr_SetString(tstate, PyExc_ValueError, "Empty module name");
+ goto error;
+ }
+ abs_name = Py_NewRef(name);
+ }
+
+ mod = import_get_module(tstate, abs_name);
+ if (mod == NULL && _PyErr_Occurred(tstate)) {
+ goto error;
+ }
+
+ if (mod != NULL && mod != Py_None) {
+ if (import_ensure_initialized(tstate->interp, mod, abs_name) < 0) {
+ goto error;
+ }
+ }
+ else {
+ Py_XDECREF(mod);
+ mod = import_find_and_load(tstate, abs_name);
+ if (mod == NULL) {
+ goto error;
+ }
+ }
+
+ has_from = 0;
+ if (fromlist != NULL && fromlist != Py_None) {
+ has_from = PyObject_IsTrue(fromlist);
+ if (has_from < 0)
+ goto error;
+ }
+ if (!has_from) {
+ Py_ssize_t len = PyUnicode_GET_LENGTH(name);
+ if (level == 0 || len > 0) {
+ Py_ssize_t dot;
+
+ dot = PyUnicode_FindChar(name, '.', 0, len, 1);
+ if (dot == -2) {
+ goto error;
+ }
+
+ if (dot == -1) {
+ /* No dot in module name, simple exit */
+ final_mod = Py_NewRef(mod);
+ goto error;
+ }
+
+ if (level == 0) {
+ PyObject *front = PyUnicode_Substring(name, 0, dot);
+ if (front == NULL) {
+ goto error;
+ }
+
+ final_mod = PyImport_ImportModuleLevelObject(front, NULL, NULL, NULL, 0);
+ Py_DECREF(front);
+ }
+ else {
+ Py_ssize_t cut_off = len - dot;
+ Py_ssize_t abs_name_len = PyUnicode_GET_LENGTH(abs_name);
+ PyObject *to_return = PyUnicode_Substring(abs_name, 0,
+ abs_name_len - cut_off);
+ if (to_return == NULL) {
+ goto error;
+ }
+
+ final_mod = import_get_module(tstate, to_return);
+ Py_DECREF(to_return);
+ if (final_mod == NULL) {
+ if (!_PyErr_Occurred(tstate)) {
+ _PyErr_Format(tstate, PyExc_KeyError,
+ "%R not in sys.modules as expected",
+ to_return);
+ }
+ goto error;
+ }
+ }
+ }
+ else {
+ final_mod = Py_NewRef(mod);
+ }
+ }
+ else {
+ PyObject *path;
+ if (_PyObject_LookupAttr(mod, &_Py_ID(__path__), &path) < 0) {
+ goto error;
+ }
+ if (path) {
+ Py_DECREF(path);
+ final_mod = PyObject_CallMethodObjArgs(
+ IMPORTLIB(interp), &_Py_ID(_handle_fromlist),
+ mod, fromlist, IMPORT_FUNC(interp), NULL);
+ }
+ else {
+ final_mod = Py_NewRef(mod);
+ }
+ }
+
+ error:
+ Py_XDECREF(abs_name);
+ Py_XDECREF(mod);
+ Py_XDECREF(package);
+ if (final_mod == NULL) {
+ remove_importlib_frames(tstate);
+ }
+ return final_mod;
+}
+
+PyObject *
+PyImport_ImportModuleLevel(const char *name, PyObject *globals, PyObject *locals,
+ PyObject *fromlist, int level)
+{
+ PyObject *nameobj, *mod;
+ nameobj = PyUnicode_FromString(name);
+ if (nameobj == NULL)
+ return NULL;
+ mod = PyImport_ImportModuleLevelObject(nameobj, globals, locals,
+ fromlist, level);
+ Py_DECREF(nameobj);
+ return mod;
+}
+
+
+/* Re-import a module of any kind and return its module object, WITH
+ INCREMENTED REFERENCE COUNT */
+
+PyObject *
+PyImport_ReloadModule(PyObject *m)
+{
+ PyObject *reloaded_module = NULL;
+ PyObject *importlib = PyImport_GetModule(&_Py_ID(importlib));
+ if (importlib == NULL) {
+ if (PyErr_Occurred()) {
+ return NULL;
+ }
+
+ importlib = PyImport_ImportModule("importlib");
+ if (importlib == NULL) {
+ return NULL;
+ }
+ }
+
+ reloaded_module = PyObject_CallMethodOneArg(importlib, &_Py_ID(reload), m);
+ Py_DECREF(importlib);
+ return reloaded_module;
+}
+
+
+/* Higher-level import emulator which emulates the "import" statement
+ more accurately -- it invokes the __import__() function from the
+ builtins of the current globals. This means that the import is
+ done using whatever import hooks are installed in the current
+ environment.
+ A dummy list ["__doc__"] is passed as the 4th argument so that
+ e.g. PyImport_Import(PyUnicode_FromString("win32com.client.gencache"))
+ will return <module "gencache"> instead of <module "win32com">. */
+
+PyObject *
+PyImport_Import(PyObject *module_name)
+{
+ PyThreadState *tstate = _PyThreadState_GET();
+ PyObject *globals = NULL;
+ PyObject *import = NULL;
+ PyObject *builtins = NULL;
+ PyObject *r = NULL;
+
+ PyObject *from_list = PyList_New(0);
+ if (from_list == NULL) {
+ goto err;
+ }
+
+ /* Get the builtins from current globals */
+ globals = PyEval_GetGlobals();
+ if (globals != NULL) {
+ Py_INCREF(globals);
+ builtins = PyObject_GetItem(globals, &_Py_ID(__builtins__));
+ if (builtins == NULL)
+ goto err;
+ }
+ else {
+ /* No globals -- use standard builtins, and fake globals */
+ builtins = PyImport_ImportModuleLevel("builtins",
+ NULL, NULL, NULL, 0);
+ if (builtins == NULL) {
+ goto err;
+ }
+ globals = Py_BuildValue("{OO}", &_Py_ID(__builtins__), builtins);
+ if (globals == NULL)
+ goto err;
+ }
+
+ /* Get the __import__ function from the builtins */
+ if (PyDict_Check(builtins)) {
+ import = PyObject_GetItem(builtins, &_Py_ID(__import__));
+ if (import == NULL) {
+ _PyErr_SetObject(tstate, PyExc_KeyError, &_Py_ID(__import__));
+ }
+ }
+ else
+ import = PyObject_GetAttr(builtins, &_Py_ID(__import__));
+ if (import == NULL)
+ goto err;
+
+ /* Call the __import__ function with the proper argument list
+ Always use absolute import here.
+ Calling for side-effect of import. */
+ r = PyObject_CallFunction(import, "OOOOi", module_name, globals,
+ globals, from_list, 0, NULL);
+ if (r == NULL)
+ goto err;
+ Py_DECREF(r);
+
+ r = import_get_module(tstate, module_name);
+ if (r == NULL && !_PyErr_Occurred(tstate)) {
+ _PyErr_SetObject(tstate, PyExc_KeyError, module_name);
+ }
+
+ err:
+ Py_XDECREF(globals);
+ Py_XDECREF(builtins);
+ Py_XDECREF(import);
+ Py_XDECREF(from_list);
+
+ return r;
+}
+
+
+/*********************/
+/* runtime lifecycle */
+/*********************/
+
+PyStatus
+_PyImport_Init(void)
+{
+ if (INITTAB != NULL) {
+ return _PyStatus_ERR("global import state already initialized");
+ }
+
+ PyStatus status = _PyStatus_OK();
+
+ /* Force default raw memory allocator to get a known allocator to be able
+ to release the memory in _PyImport_Fini() */
+ PyMemAllocatorEx old_alloc;
+ _PyMem_SetDefaultAllocator(PYMEM_DOMAIN_RAW, &old_alloc);
+
+ if (init_builtin_modules_table() != 0) {
+ status = PyStatus_NoMemory();
+ goto done;
+ }
+
+done:
+ PyMem_SetAllocator(PYMEM_DOMAIN_RAW, &old_alloc);
+ return status;
+}
+
+void
+_PyImport_Fini(void)
+{
+ /* Destroy the database used by _PyImport_{Fixup,Find}Extension */
+ // XXX Should we actually leave them (mostly) intact, since we don't
+ // ever dlclose() the module files?
+ _extensions_cache_clear_all();
+
+ /* Use the same memory allocator as _PyImport_Init(). */
+ PyMemAllocatorEx old_alloc;
+ _PyMem_SetDefaultAllocator(PYMEM_DOMAIN_RAW, &old_alloc);
+
+ /* Free memory allocated by _PyImport_Init() */
+ fini_builtin_modules_table();
+
+ PyMem_SetAllocator(PYMEM_DOMAIN_RAW, &old_alloc);
+}
+
+void
+_PyImport_Fini2(void)
+{
+ /* Use the same memory allocator than PyImport_ExtendInittab(). */
+ PyMemAllocatorEx old_alloc;
+ _PyMem_SetDefaultAllocator(PYMEM_DOMAIN_RAW, &old_alloc);
+
+ // Reset PyImport_Inittab
+ PyImport_Inittab = _PyImport_Inittab;
+
+ /* Free memory allocated by PyImport_ExtendInittab() */
+ PyMem_RawFree(inittab_copy);
+ inittab_copy = NULL;
+
+ PyMem_SetAllocator(PYMEM_DOMAIN_RAW, &old_alloc);
+}
+
+
+/*************************/
+/* interpreter lifecycle */
+/*************************/
+
+PyStatus
+_PyImport_InitCore(PyThreadState *tstate, PyObject *sysmod, int importlib)
+{
+ // XXX Initialize here: interp->modules and interp->import_func.
+ // XXX Initialize here: sys.modules and sys.meta_path.
+
+ if (importlib) {
+ /* This call sets up builtin and frozen import support */
+ if (init_importlib(tstate, sysmod) < 0) {
+ return _PyStatus_ERR("failed to initialize importlib");
+ }
+ }
+
+ return _PyStatus_OK();
+}
+
+/* In some corner cases it is important to be sure that the import
+ machinery has been initialized (or not cleaned up yet). For
+ example, see issue #4236 and PyModule_Create2(). */
+
+int
+_PyImport_IsInitialized(PyInterpreterState *interp)
+{
+ if (MODULES(interp) == NULL)
+ return 0;
+ return 1;
+}
+
+/* Clear the direct per-interpreter import state, if not cleared already. */
+void
+_PyImport_ClearCore(PyInterpreterState *interp)
+{
+ /* interp->modules should have been cleaned up and cleared already
+ by _PyImport_FiniCore(). */
+ Py_CLEAR(MODULES(interp));
+ Py_CLEAR(MODULES_BY_INDEX(interp));
+ Py_CLEAR(IMPORTLIB(interp));
+ Py_CLEAR(IMPORT_FUNC(interp));
+}
+
+void
+_PyImport_FiniCore(PyInterpreterState *interp)
+{
+ int verbose = _PyInterpreterState_GetConfig(interp)->verbose;
+
+ if (_PySys_ClearAttrString(interp, "meta_path", verbose) < 0) {
+ PyErr_WriteUnraisable(NULL);
+ }
+
+ // XXX Pull in most of finalize_modules() in pylifecycle.c.
+
+ if (_PySys_ClearAttrString(interp, "modules", verbose) < 0) {
+ PyErr_WriteUnraisable(NULL);
+ }
+
+ if (IMPORT_LOCK(interp) != NULL) {
+ PyThread_free_lock(IMPORT_LOCK(interp));
+ IMPORT_LOCK(interp) = NULL;
+ }
+
+ _PyImport_ClearCore(interp);
+}
+
+// XXX Add something like _PyImport_Disable() for use early in interp fini?
+
+
+/* "external" imports */
+
+static int
+init_zipimport(PyThreadState *tstate, int verbose)
+{
+ PyObject *path_hooks = PySys_GetObject("path_hooks");
+ if (path_hooks == NULL) {
+ _PyErr_SetString(tstate, PyExc_RuntimeError,
+ "unable to get sys.path_hooks");
+ return -1;
+ }
+
+ if (verbose) {
+ PySys_WriteStderr("# installing zipimport hook\n");
+ }
+
+ PyObject *zipimporter = _PyImport_GetModuleAttrString("zipimport", "zipimporter");
+ if (zipimporter == NULL) {
+ _PyErr_Clear(tstate); /* No zipimporter object -- okay */
+ if (verbose) {
+ PySys_WriteStderr("# can't import zipimport.zipimporter\n");
+ }
+ }
+ else {
+ /* sys.path_hooks.insert(0, zipimporter) */
+ int err = PyList_Insert(path_hooks, 0, zipimporter);
+ Py_DECREF(zipimporter);
+ if (err < 0) {
+ return -1;
+ }
+ if (verbose) {
+ PySys_WriteStderr("# installed zipimport hook\n");
+ }
+ }
+
+ return 0;
+}
+
+PyStatus
+_PyImport_InitExternal(PyThreadState *tstate)
+{
+ int verbose = _PyInterpreterState_GetConfig(tstate->interp)->verbose;
+
+ // XXX Initialize here: sys.path_hooks and sys.path_importer_cache.
+
+ if (init_importlib_external(tstate->interp) != 0) {
+ _PyErr_Print(tstate);
+ return _PyStatus_ERR("external importer setup failed");
+ }
+
+ if (init_zipimport(tstate, verbose) != 0) {
+ PyErr_Print();
+ return _PyStatus_ERR("initializing zipimport failed");
+ }
+
+ return _PyStatus_OK();
+}
+
+void
+_PyImport_FiniExternal(PyInterpreterState *interp)
+{
+ int verbose = _PyInterpreterState_GetConfig(interp)->verbose;
+
+ // XXX Uninstall importlib metapath importers here?
+
+ if (_PySys_ClearAttrString(interp, "path_importer_cache", verbose) < 0) {
+ PyErr_WriteUnraisable(NULL);
+ }
+ if (_PySys_ClearAttrString(interp, "path_hooks", verbose) < 0) {
+ PyErr_WriteUnraisable(NULL);
+ }
+}
+
+
+/******************/
+/* module helpers */
+/******************/
+
+PyObject *
+_PyImport_GetModuleAttr(PyObject *modname, PyObject *attrname)
+{
+ PyObject *mod = PyImport_Import(modname);
+ if (mod == NULL) {
+ return NULL;
+ }
+ PyObject *result = PyObject_GetAttr(mod, attrname);
+ Py_DECREF(mod);
+ return result;
+}
+
+PyObject *
+_PyImport_GetModuleAttrString(const char *modname, const char *attrname)
+{
+ PyObject *pmodname = PyUnicode_FromString(modname);
+ if (pmodname == NULL) {
+ return NULL;
+ }
+ PyObject *pattrname = PyUnicode_FromString(attrname);
+ if (pattrname == NULL) {
+ Py_DECREF(pmodname);
+ return NULL;
+ }
+ PyObject *result = _PyImport_GetModuleAttr(pmodname, pattrname);
+ Py_DECREF(pattrname);
+ Py_DECREF(pmodname);
+ return result;
+}
+
+
+/**************/
+/* the module */
+/**************/
+
+/*[clinic input]
+_imp.lock_held
+
+Return True if the import lock is currently held, else False.
+
+On platforms without threads, return False.
+[clinic start generated code]*/
+
+static PyObject *
+_imp_lock_held_impl(PyObject *module)
+/*[clinic end generated code: output=8b89384b5e1963fc input=9b088f9b217d9bdf]*/
+{
+ PyInterpreterState *interp = _PyInterpreterState_GET();
+ return PyBool_FromLong(
+ IMPORT_LOCK_THREAD(interp) != PYTHREAD_INVALID_THREAD_ID);
+}
+
+/*[clinic input]
+_imp.acquire_lock
+
+Acquires the interpreter's import lock for the current thread.
+
+This lock should be used by import hooks to ensure thread-safety when importing
+modules. On platforms without threads, this function does nothing.
+[clinic start generated code]*/
+
+static PyObject *
+_imp_acquire_lock_impl(PyObject *module)
+/*[clinic end generated code: output=1aff58cb0ee1b026 input=4a2d4381866d5fdc]*/
+{
+ PyInterpreterState *interp = _PyInterpreterState_GET();
+ _PyImport_AcquireLock(interp);
+ Py_RETURN_NONE;
+}
+
+/*[clinic input]
+_imp.release_lock
+
+Release the interpreter's import lock.
+
+On platforms without threads, this function does nothing.
+[clinic start generated code]*/
+
+static PyObject *
+_imp_release_lock_impl(PyObject *module)
+/*[clinic end generated code: output=7faab6d0be178b0a input=934fb11516dd778b]*/
+{
+ PyInterpreterState *interp = _PyInterpreterState_GET();
+ if (_PyImport_ReleaseLock(interp) < 0) {
+ PyErr_SetString(PyExc_RuntimeError,
+ "not holding the import lock");
+ return NULL;
+ }
+ Py_RETURN_NONE;
+}
+
+
+/*[clinic input]
+_imp._fix_co_filename
+
+ code: object(type="PyCodeObject *", subclass_of="&PyCode_Type")
+ Code object to change.
+
+ path: unicode
+ File path to use.
+ /
+
+Changes code.co_filename to specify the passed-in file path.
+[clinic start generated code]*/
+
+static PyObject *
+_imp__fix_co_filename_impl(PyObject *module, PyCodeObject *code,
+ PyObject *path)
+/*[clinic end generated code: output=1d002f100235587d input=895ba50e78b82f05]*/
+
+{
+ update_compiled_module(code, path);
+
+ Py_RETURN_NONE;
+}
+
+
+/*[clinic input]
+_imp.create_builtin
+
+ spec: object
+ /
+
+Create an extension module.
+[clinic start generated code]*/
+
+static PyObject *
+_imp_create_builtin(PyObject *module, PyObject *spec)
+/*[clinic end generated code: output=ace7ff22271e6f39 input=37f966f890384e47]*/
+{
+ PyThreadState *tstate = _PyThreadState_GET();
+
+ PyObject *name = PyObject_GetAttrString(spec, "name");
+ if (name == NULL) {
+ return NULL;
+ }
+
+ if (!PyUnicode_Check(name)) {
+ PyErr_Format(PyExc_TypeError,
+ "name must be string, not %.200s",
+ Py_TYPE(name)->tp_name);
+ Py_DECREF(name);
+ return NULL;
+ }
+
+ PyObject *mod = create_builtin(tstate, name, spec);
+ Py_DECREF(name);
+ return mod;
+}
+
+
+/*[clinic input]
+_imp.extension_suffixes
+
+Returns the list of file suffixes used to identify extension modules.
+[clinic start generated code]*/
+
+static PyObject *
+_imp_extension_suffixes_impl(PyObject *module)
+/*[clinic end generated code: output=0bf346e25a8f0cd3 input=ecdeeecfcb6f839e]*/
+{
+ PyObject *list;
+
+ list = PyList_New(0);
+ if (list == NULL)
+ return NULL;
+#ifdef HAVE_DYNAMIC_LOADING
+ const char *suffix;
+ unsigned int index = 0;
+
+ while ((suffix = _PyImport_DynLoadFiletab[index])) {
+ PyObject *item = PyUnicode_FromString(suffix);
+ if (item == NULL) {
+ Py_DECREF(list);
+ return NULL;
+ }
+ if (PyList_Append(list, item) < 0) {
+ Py_DECREF(list);
+ Py_DECREF(item);
+ return NULL;
+ }
+ Py_DECREF(item);
+ index += 1;
+ }
+#endif
+ return list;
+}
+
+/*[clinic input]
+_imp.init_frozen
+
+ name: unicode
+ /
+
+Initializes a frozen module.
+[clinic start generated code]*/
+
+static PyObject *
+_imp_init_frozen_impl(PyObject *module, PyObject *name)
+/*[clinic end generated code: output=fc0511ed869fd69c input=13019adfc04f3fb3]*/
+{
+ PyThreadState *tstate = _PyThreadState_GET();
+ int ret;
+
+ ret = PyImport_ImportFrozenModuleObject(name);
+ if (ret < 0)
+ return NULL;
+ if (ret == 0) {
+ Py_RETURN_NONE;
+ }
+ return import_add_module(tstate, name);
+}
+
+/*[clinic input]
+_imp.find_frozen
+
+ name: unicode
+ /
+ *
+ withdata: bool = False
+
+Return info about the corresponding frozen module (if there is one) or None.
+
+The returned info (a 2-tuple):
+
+ * data the raw marshalled bytes
+ * is_package whether or not it is a package
+ * origname the originally frozen module's name, or None if not
+ a stdlib module (this will usually be the same as
+ the module's current name)
+[clinic start generated code]*/
+
+static PyObject *
+_imp_find_frozen_impl(PyObject *module, PyObject *name, int withdata)
+/*[clinic end generated code: output=8c1c3c7f925397a5 input=22a8847c201542fd]*/
+{
+ struct frozen_info info;
+ frozen_status status = find_frozen(name, &info);
+ if (status == FROZEN_NOT_FOUND || status == FROZEN_DISABLED) {
+ Py_RETURN_NONE;
+ }
+ else if (status == FROZEN_BAD_NAME) {
+ Py_RETURN_NONE;
+ }
+ else if (status != FROZEN_OKAY) {
+ set_frozen_error(status, name);
+ return NULL;
+ }
+
+ PyObject *data = NULL;
+ if (withdata) {
+ data = PyMemoryView_FromMemory((char *)info.data, info.size, PyBUF_READ);
+ if (data == NULL) {
+ return NULL;
+ }
+ }
+
+ PyObject *origname = NULL;
+ if (info.origname != NULL && info.origname[0] != '\0') {
+ origname = PyUnicode_FromString(info.origname);
+ if (origname == NULL) {
+ Py_DECREF(data);
+ return NULL;
+ }
+ }
+
+ PyObject *result = PyTuple_Pack(3, data ? data : Py_None,
+ info.is_package ? Py_True : Py_False,
+ origname ? origname : Py_None);
+ Py_XDECREF(origname);
+ Py_XDECREF(data);
+ return result;
+}
+
+/*[clinic input]
+_imp.get_frozen_object
+
+ name: unicode
+ data as dataobj: object = None
+ /
+
+Create a code object for a frozen module.
+[clinic start generated code]*/
+
+static PyObject *
+_imp_get_frozen_object_impl(PyObject *module, PyObject *name,
+ PyObject *dataobj)
+/*[clinic end generated code: output=54368a673a35e745 input=034bdb88f6460b7b]*/
+{
+ struct frozen_info info = {0};
+ Py_buffer buf = {0};
+ if (PyObject_CheckBuffer(dataobj)) {
+ if (PyObject_GetBuffer(dataobj, &buf, PyBUF_SIMPLE) != 0) {
+ return NULL;
+ }
+ info.data = (const char *)buf.buf;
+ info.size = buf.len;
+ }
+ else if (dataobj != Py_None) {
+ _PyArg_BadArgument("get_frozen_object", "argument 2", "bytes", dataobj);
+ return NULL;
+ }
+ else {
+ frozen_status status = find_frozen(name, &info);
+ if (status != FROZEN_OKAY) {
+ set_frozen_error(status, name);
+ return NULL;
+ }
+ }
+
+ if (info.nameobj == NULL) {
+ info.nameobj = name;
+ }
+ if (info.size == 0 && info.get_code == NULL) {
+ /* Does not contain executable code. */
+ set_frozen_error(FROZEN_INVALID, name);
+ return NULL;
+ }
+
+ PyInterpreterState *interp = _PyInterpreterState_GET();
+ PyObject *codeobj = unmarshal_frozen_code(interp, &info);
+ if (dataobj != Py_None) {
+ PyBuffer_Release(&buf);
+ }
+ return codeobj;
+}
+
+/*[clinic input]
+_imp.is_frozen_package
+
+ name: unicode
+ /
+
+Returns True if the module name is of a frozen package.
+[clinic start generated code]*/
+
+static PyObject *
+_imp_is_frozen_package_impl(PyObject *module, PyObject *name)
+/*[clinic end generated code: output=e70cbdb45784a1c9 input=81b6cdecd080fbb8]*/
+{
+ struct frozen_info info;
+ frozen_status status = find_frozen(name, &info);
+ if (status != FROZEN_OKAY && status != FROZEN_EXCLUDED) {
+ set_frozen_error(status, name);
+ return NULL;
+ }
+ return PyBool_FromLong(info.is_package);
+}
+
+/*[clinic input]
+_imp.is_builtin
+
+ name: unicode
+ /
+
+Returns True if the module name corresponds to a built-in module.
+[clinic start generated code]*/
+
+static PyObject *
+_imp_is_builtin_impl(PyObject *module, PyObject *name)
+/*[clinic end generated code: output=3bfd1162e2d3be82 input=86befdac021dd1c7]*/
+{
+ return PyLong_FromLong(is_builtin(name));
+}
+
+/*[clinic input]
+_imp.is_frozen
+
+ name: unicode
+ /
+
+Returns True if the module name corresponds to a frozen module.
+[clinic start generated code]*/
+
+static PyObject *
+_imp_is_frozen_impl(PyObject *module, PyObject *name)
+/*[clinic end generated code: output=01f408f5ec0f2577 input=7301dbca1897d66b]*/
+{
+ struct frozen_info info;
+ frozen_status status = find_frozen(name, &info);
+ if (status != FROZEN_OKAY) {
+ Py_RETURN_FALSE;
+ }
+ Py_RETURN_TRUE;
+}
+
+/*[clinic input]
+_imp._frozen_module_names
+
+Returns the list of available frozen modules.
+[clinic start generated code]*/
+
+static PyObject *
+_imp__frozen_module_names_impl(PyObject *module)
+/*[clinic end generated code: output=80609ef6256310a8 input=76237fbfa94460d2]*/
+{
+ return list_frozen_module_names();
+}
+
+/*[clinic input]
+_imp._override_frozen_modules_for_tests
+
+ override: int
+ /
+
+(internal-only) Override PyConfig.use_frozen_modules.
+
+(-1: "off", 1: "on", 0: no override)
+See frozen_modules() in Lib/test/support/import_helper.py.
+[clinic start generated code]*/
+
+static PyObject *
+_imp__override_frozen_modules_for_tests_impl(PyObject *module, int override)
+/*[clinic end generated code: output=36d5cb1594160811 input=8f1f95a3ef21aec3]*/
+{
+ PyInterpreterState *interp = _PyInterpreterState_GET();
+ OVERRIDE_FROZEN_MODULES(interp) = override;
+ Py_RETURN_NONE;
+}
+
+/*[clinic input]
+_imp._override_multi_interp_extensions_check
+
+ override: int
+ /
+
+(internal-only) Override PyInterpreterConfig.check_multi_interp_extensions.
+
+(-1: "never", 1: "always", 0: no override)
+[clinic start generated code]*/
+
+static PyObject *
+_imp__override_multi_interp_extensions_check_impl(PyObject *module,
+ int override)
+/*[clinic end generated code: output=3ff043af52bbf280 input=e086a2ea181f92ae]*/
+{
+ PyInterpreterState *interp = _PyInterpreterState_GET();
+ if (_Py_IsMainInterpreter(interp)) {
+ PyErr_SetString(PyExc_RuntimeError,
+ "_imp._override_multi_interp_extensions_check() "
+ "cannot be used in the main interpreter");
+ return NULL;
+ }
+ int oldvalue = OVERRIDE_MULTI_INTERP_EXTENSIONS_CHECK(interp);
+ OVERRIDE_MULTI_INTERP_EXTENSIONS_CHECK(interp) = override;
+ return PyLong_FromLong(oldvalue);
+}
+
+#ifdef HAVE_DYNAMIC_LOADING
+
+/*[clinic input]
+_imp.create_dynamic
+
+ spec: object
+ file: object = NULL
+ /
+
+Create an extension module.
+[clinic start generated code]*/
+
+static PyObject *
+_imp_create_dynamic_impl(PyObject *module, PyObject *spec, PyObject *file)
+/*[clinic end generated code: output=83249b827a4fde77 input=c31b954f4cf4e09d]*/
+{
+ PyObject *mod, *name, *path;
+ FILE *fp;
+
+ name = PyObject_GetAttrString(spec, "name");
+ if (name == NULL) {
+ return NULL;
+ }
+
+ path = PyObject_GetAttrString(spec, "origin");
+ if (path == NULL) {
+ Py_DECREF(name);
+ return NULL;
+ }
+
+ PyThreadState *tstate = _PyThreadState_GET();
+ mod = import_find_extension(tstate, name, path);
+ if (mod != NULL || _PyErr_Occurred(tstate)) {
+ assert(mod == NULL || !_PyErr_Occurred(tstate));
+ goto finally;
+ }
+
+ if (file != NULL) {
+ fp = _Py_fopen_obj(path, "r");
+ if (fp == NULL) {
+ goto finally;
+ }
+ }
+ else
+ fp = NULL;
+
+ mod = _PyImport_LoadDynamicModuleWithSpec(spec, fp);
+
+ if (fp)
+ fclose(fp);
+
+finally:
+ Py_DECREF(name);
+ Py_DECREF(path);
+ return mod;
+}
+
+/*[clinic input]
+_imp.exec_dynamic -> int
+
+ mod: object
+ /
+
+Initialize an extension module.
+[clinic start generated code]*/
+
+static int
+_imp_exec_dynamic_impl(PyObject *module, PyObject *mod)
+/*[clinic end generated code: output=f5720ac7b465877d input=9fdbfcb250280d3a]*/
+{
+ return exec_builtin_or_dynamic(mod);
+}
+
+
+#endif /* HAVE_DYNAMIC_LOADING */
+
+/*[clinic input]
+_imp.exec_builtin -> int
+
+ mod: object
+ /
+
+Initialize a built-in module.
+[clinic start generated code]*/
+
+static int
+_imp_exec_builtin_impl(PyObject *module, PyObject *mod)
+/*[clinic end generated code: output=0262447b240c038e input=7beed5a2f12a60ca]*/
+{
+ return exec_builtin_or_dynamic(mod);
+}
+
+/*[clinic input]
+_imp.source_hash
+
+ key: long
+ source: Py_buffer
+[clinic start generated code]*/
+
+static PyObject *
+_imp_source_hash_impl(PyObject *module, long key, Py_buffer *source)
+/*[clinic end generated code: output=edb292448cf399ea input=9aaad1e590089789]*/
+{
+ union {
+ uint64_t x;
+ char data[sizeof(uint64_t)];
+ } hash;
+ hash.x = _Py_KeyedHash((uint64_t)key, source->buf, source->len);
+#if !PY_LITTLE_ENDIAN
+ // Force to little-endian. There really ought to be a succinct standard way
+ // to do this.
+ for (size_t i = 0; i < sizeof(hash.data)/2; i++) {
+ char tmp = hash.data[i];
+ hash.data[i] = hash.data[sizeof(hash.data) - i - 1];
+ hash.data[sizeof(hash.data) - i - 1] = tmp;
+ }
+#endif
+ return PyBytes_FromStringAndSize(hash.data, sizeof(hash.data));
+}
+
+
+PyDoc_STRVAR(doc_imp,
+"(Extremely) low-level import machinery bits as used by importlib.");
+
+static PyMethodDef imp_methods[] = {
+ _IMP_EXTENSION_SUFFIXES_METHODDEF
+ _IMP_LOCK_HELD_METHODDEF
+ _IMP_ACQUIRE_LOCK_METHODDEF
+ _IMP_RELEASE_LOCK_METHODDEF
+ _IMP_FIND_FROZEN_METHODDEF
+ _IMP_GET_FROZEN_OBJECT_METHODDEF
+ _IMP_IS_FROZEN_PACKAGE_METHODDEF
+ _IMP_CREATE_BUILTIN_METHODDEF
+ _IMP_INIT_FROZEN_METHODDEF
+ _IMP_IS_BUILTIN_METHODDEF
+ _IMP_IS_FROZEN_METHODDEF
+ _IMP__FROZEN_MODULE_NAMES_METHODDEF
+ _IMP__OVERRIDE_FROZEN_MODULES_FOR_TESTS_METHODDEF
+ _IMP__OVERRIDE_MULTI_INTERP_EXTENSIONS_CHECK_METHODDEF
+ _IMP_CREATE_DYNAMIC_METHODDEF
+ _IMP_EXEC_DYNAMIC_METHODDEF
+ _IMP_EXEC_BUILTIN_METHODDEF
+ _IMP__FIX_CO_FILENAME_METHODDEF
+ _IMP_SOURCE_HASH_METHODDEF
+ {NULL, NULL} /* sentinel */
+};
+
+
+static int
+imp_module_exec(PyObject *module)
+{
+ const wchar_t *mode = _Py_GetConfig()->check_hash_pycs_mode;
+ PyObject *pyc_mode = PyUnicode_FromWideChar(mode, -1);
+ if (pyc_mode == NULL) {
+ return -1;
+ }
+ if (PyModule_AddObjectRef(module, "check_hash_based_pycs", pyc_mode) < 0) {
+ Py_DECREF(pyc_mode);
+ return -1;
+ }
+ Py_DECREF(pyc_mode);
+
+ return 0;
+}
+
+
+static PyModuleDef_Slot imp_slots[] = {
+ {Py_mod_exec, imp_module_exec},
+ {Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
+ {0, NULL}
+};
+
+static struct PyModuleDef imp_module = {
+ PyModuleDef_HEAD_INIT,
+ .m_name = "_imp",
+ .m_doc = doc_imp,
+ .m_size = 0,
+ .m_methods = imp_methods,
+ .m_slots = imp_slots,
+};
+
+PyMODINIT_FUNC
+PyInit__imp(void)
+{
+ return PyModuleDef_Init(&imp_module);
+}
+
+
+#ifdef __cplusplus
+}
+#endif
diff --git a/contrib/tools/python3/Python/importdl.c b/contrib/tools/python3/Python/importdl.c
new file mode 100644
index 00000000000..3a3a30ddbdc
--- /dev/null
+++ b/contrib/tools/python3/Python/importdl.c
@@ -0,0 +1,253 @@
+
+/* Support for dynamic loading of extension modules */
+
+#include "Python.h"
+#include "pycore_call.h"
+#include "pycore_import.h"
+#include "pycore_pystate.h"
+#include "pycore_runtime.h"
+
+/* ./configure sets HAVE_DYNAMIC_LOADING if dynamic loading of modules is
+ supported on this platform. configure will then compile and link in one
+ of the dynload_*.c files, as appropriate. We will call a function in
+ those modules to get a function pointer to the module's init function.
+*/
+#ifdef HAVE_DYNAMIC_LOADING
+
+#include "importdl.h"
+
+#ifdef MS_WINDOWS
+extern dl_funcptr _PyImport_FindSharedFuncptrWindows(const char *prefix,
+ const char *shortname,
+ PyObject *pathname,
+ FILE *fp);
+#else
+extern dl_funcptr _PyImport_FindSharedFuncptr(const char *prefix,
+ const char *shortname,
+ const char *pathname, FILE *fp);
+#endif
+
+static const char * const ascii_only_prefix = "PyInit";
+static const char * const nonascii_prefix = "PyInitU";
+
+/* Get the variable part of a module's export symbol name.
+ * Returns a bytes instance. For non-ASCII-named modules, the name is
+ * encoded as per PEP 489.
+ * The hook_prefix pointer is set to either ascii_only_prefix or
+ * nonascii_prefix, as appropriate.
+ */
+static PyObject *
+get_encoded_name(PyObject *name, const char **hook_prefix) {
+ PyObject *tmp;
+ PyObject *encoded = NULL;
+ PyObject *modname = NULL;
+ Py_ssize_t name_len, lastdot;
+
+ /* Get the short name (substring after last dot) */
+ name_len = PyUnicode_GetLength(name);
+ if (name_len < 0) {
+ return NULL;
+ }
+ lastdot = PyUnicode_FindChar(name, '.', 0, name_len, -1);
+ if (lastdot < -1) {
+ return NULL;
+ } else if (lastdot >= 0) {
+ tmp = PyUnicode_Substring(name, lastdot + 1, name_len);
+ if (tmp == NULL)
+ return NULL;
+ name = tmp;
+ /* "name" now holds a new reference to the substring */
+ } else {
+ Py_INCREF(name);
+ }
+
+ /* Encode to ASCII or Punycode, as needed */
+ encoded = PyUnicode_AsEncodedString(name, "ascii", NULL);
+ if (encoded != NULL) {
+ *hook_prefix = ascii_only_prefix;
+ } else {
+ if (PyErr_ExceptionMatches(PyExc_UnicodeEncodeError)) {
+ PyErr_Clear();
+ encoded = PyUnicode_AsEncodedString(name, "punycode", NULL);
+ if (encoded == NULL) {
+ goto error;
+ }
+ *hook_prefix = nonascii_prefix;
+ } else {
+ goto error;
+ }
+ }
+
+ /* Replace '-' by '_' */
+ modname = _PyObject_CallMethod(encoded, &_Py_ID(replace), "cc", '-', '_');
+ if (modname == NULL)
+ goto error;
+
+ Py_DECREF(name);
+ Py_DECREF(encoded);
+ return modname;
+error:
+ Py_DECREF(name);
+ Py_XDECREF(encoded);
+ return NULL;
+}
+
+PyObject *
+_PyImport_LoadDynamicModuleWithSpec(PyObject *spec, FILE *fp)
+{
+#ifndef MS_WINDOWS
+ PyObject *pathbytes = NULL;
+#endif
+ PyObject *name_unicode = NULL, *name = NULL, *path = NULL, *m = NULL;
+ const char *name_buf, *hook_prefix;
+ const char *oldcontext, *newcontext;
+ dl_funcptr exportfunc;
+ PyModuleDef *def;
+ PyModInitFunction p0;
+
+ name_unicode = PyObject_GetAttrString(spec, "name");
+ if (name_unicode == NULL) {
+ return NULL;
+ }
+ if (!PyUnicode_Check(name_unicode)) {
+ PyErr_SetString(PyExc_TypeError,
+ "spec.name must be a string");
+ goto error;
+ }
+ newcontext = PyUnicode_AsUTF8(name_unicode);
+ if (newcontext == NULL) {
+ goto error;
+ }
+
+ name = get_encoded_name(name_unicode, &hook_prefix);
+ if (name == NULL) {
+ goto error;
+ }
+ name_buf = PyBytes_AS_STRING(name);
+
+ path = PyObject_GetAttrString(spec, "origin");
+ if (path == NULL)
+ goto error;
+
+ if (PySys_Audit("import", "OOOOO", name_unicode, path,
+ Py_None, Py_None, Py_None) < 0) {
+ goto error;
+ }
+
+#ifdef MS_WINDOWS
+ exportfunc = _PyImport_FindSharedFuncptrWindows(hook_prefix, name_buf,
+ path, fp);
+#else
+ pathbytes = PyUnicode_EncodeFSDefault(path);
+ if (pathbytes == NULL)
+ goto error;
+ exportfunc = _PyImport_FindSharedFuncptr(hook_prefix, name_buf,
+ PyBytes_AS_STRING(pathbytes),
+ fp);
+ Py_DECREF(pathbytes);
+#endif
+
+ if (exportfunc == NULL) {
+ if (!PyErr_Occurred()) {
+ PyObject *msg;
+ msg = PyUnicode_FromFormat(
+ "dynamic module does not define "
+ "module export function (%s_%s)",
+ hook_prefix, name_buf);
+ if (msg == NULL)
+ goto error;
+ PyErr_SetImportError(msg, name_unicode, path);
+ Py_DECREF(msg);
+ }
+ goto error;
+ }
+
+ p0 = (PyModInitFunction)exportfunc;
+
+ /* Package context is needed for single-phase init */
+ oldcontext = _PyImport_SwapPackageContext(newcontext);
+ m = _PyImport_InitFunc_TrampolineCall(p0);
+ _PyImport_SwapPackageContext(oldcontext);
+
+ if (m == NULL) {
+ if (!PyErr_Occurred()) {
+ PyErr_Format(
+ PyExc_SystemError,
+ "initialization of %s failed without raising an exception",
+ name_buf);
+ }
+ goto error;
+ } else if (PyErr_Occurred()) {
+ _PyErr_FormatFromCause(
+ PyExc_SystemError,
+ "initialization of %s raised unreported exception",
+ name_buf);
+ m = NULL;
+ goto error;
+ }
+ if (Py_IS_TYPE(m, NULL)) {
+ /* This can happen when a PyModuleDef is returned without calling
+ * PyModuleDef_Init on it
+ */
+ PyErr_Format(PyExc_SystemError,
+ "init function of %s returned uninitialized object",
+ name_buf);
+ m = NULL; /* prevent segfault in DECREF */
+ goto error;
+ }
+ if (PyObject_TypeCheck(m, &PyModuleDef_Type)) {
+ Py_DECREF(name_unicode);
+ Py_DECREF(name);
+ Py_DECREF(path);
+ return PyModule_FromDefAndSpec((PyModuleDef*)m, spec);
+ }
+
+ /* Fall back to single-phase init mechanism */
+
+ if (_PyImport_CheckSubinterpIncompatibleExtensionAllowed(name_buf) < 0) {
+ goto error;
+ }
+
+ if (hook_prefix == nonascii_prefix) {
+ /* don't allow legacy init for non-ASCII module names */
+ PyErr_Format(
+ PyExc_SystemError,
+ "initialization of %s did not return PyModuleDef",
+ name_buf);
+ goto error;
+ }
+
+ /* Remember pointer to module init function. */
+ def = PyModule_GetDef(m);
+ if (def == NULL) {
+ PyErr_Format(PyExc_SystemError,
+ "initialization of %s did not return an extension "
+ "module", name_buf);
+ goto error;
+ }
+ def->m_base.m_init = p0;
+
+ /* Remember the filename as the __file__ attribute */
+ if (PyModule_AddObjectRef(m, "__file__", path) < 0) {
+ PyErr_Clear(); /* Not important enough to report */
+ }
+
+ PyObject *modules = PyImport_GetModuleDict();
+ if (_PyImport_FixupExtensionObject(m, name_unicode, path, modules) < 0)
+ goto error;
+
+ Py_DECREF(name_unicode);
+ Py_DECREF(name);
+ Py_DECREF(path);
+
+ return m;
+
+error:
+ Py_DECREF(name_unicode);
+ Py_XDECREF(name);
+ Py_XDECREF(path);
+ Py_XDECREF(m);
+ return NULL;
+}
+
+#endif /* HAVE_DYNAMIC_LOADING */
diff --git a/contrib/tools/python3/Python/importdl.h b/contrib/tools/python3/Python/importdl.h
new file mode 100644
index 00000000000..26d18b626df
--- /dev/null
+++ b/contrib/tools/python3/Python/importdl.h
@@ -0,0 +1,35 @@
+#ifndef Py_IMPORTDL_H
+#define Py_IMPORTDL_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+extern const char *_PyImport_DynLoadFiletab[];
+
+extern PyObject *_PyImport_LoadDynamicModuleWithSpec(PyObject *spec, FILE *);
+
+typedef PyObject *(*PyModInitFunction)(void);
+
+#if defined(__EMSCRIPTEN__) && defined(PY_CALL_TRAMPOLINE)
+extern PyObject *_PyImport_InitFunc_TrampolineCall(PyModInitFunction func);
+#else
+#define _PyImport_InitFunc_TrampolineCall(func) (func)()
+#endif
+
+/* Max length of module suffix searched for -- accommodates "module.slb" */
+#define MAXSUFFIXSIZE 12
+
+#ifdef MS_WINDOWS
+#include <windows.h>
+typedef FARPROC dl_funcptr;
+#else
+typedef void (*dl_funcptr)(void);
+#endif
+
+
+#ifdef __cplusplus
+}
+#endif
+#endif /* !Py_IMPORTDL_H */
diff --git a/contrib/tools/python3/Python/initconfig.c b/contrib/tools/python3/Python/initconfig.c
new file mode 100644
index 00000000000..a1256a542a6
--- /dev/null
+++ b/contrib/tools/python3/Python/initconfig.c
@@ -0,0 +1,3205 @@
+#include "Python.h"
+#include "pycore_fileutils.h" // _Py_HasFileSystemDefaultEncodeErrors
+#include "pycore_getopt.h" // _PyOS_GetOpt()
+#include "pycore_initconfig.h" // _PyStatus_OK()
+#include "pycore_interp.h" // _PyInterpreterState.runtime
+#include "pycore_long.h" // _PY_LONG_MAX_STR_DIGITS_THRESHOLD
+#include "pycore_pathconfig.h" // _Py_path_config
+#include "pycore_pyerrors.h" // _PyErr_GetRaisedException()
+#include "pycore_pylifecycle.h" // _Py_PreInitializeFromConfig()
+#include "pycore_pymem.h" // _PyMem_SetDefaultAllocator()
+#include "pycore_pystate.h" // _PyThreadState_GET()
+
+#include "osdefs.h" // DELIM
+
+#include <locale.h> // setlocale()
+#include <stdlib.h> // getenv()
+#if defined(MS_WINDOWS) || defined(__CYGWIN__)
+# ifdef HAVE_IO_H
+# include <io.h>
+# endif
+# ifdef HAVE_FCNTL_H
+# include <fcntl.h> // O_BINARY
+# endif
+#endif
+
+/* --- Command line options --------------------------------------- */
+
+/* Short usage message (with %s for argv0) */
+static const char usage_line[] =
+"usage: %ls [option] ... [-c cmd | -m mod | file | -] [arg] ...\n";
+
+/* Long help message */
+/* Lines sorted by option name; keep in sync with usage_envvars* below */
+static const char usage_help[] = "\
+Options (and corresponding environment variables):\n\
+-b : issue warnings about str(bytes_instance), str(bytearray_instance)\n\
+ and comparing bytes/bytearray with str. (-bb: issue errors)\n\
+-B : don't write .pyc files on import; also PYTHONDONTWRITEBYTECODE=x\n\
+-c cmd : program passed in as string (terminates option list)\n\
+-d : turn on parser debugging output (for experts only, only works on\n\
+ debug builds); also PYTHONDEBUG=x\n\
+-E : ignore PYTHON* environment variables (such as PYTHONPATH)\n\
+-h : print this help message and exit (also -? or --help)\n\
+-i : inspect interactively after running script; forces a prompt even\n\
+ if stdin does not appear to be a terminal; also PYTHONINSPECT=x\n\
+-I : isolate Python from the user's environment (implies -E and -s)\n\
+-m mod : run library module as a script (terminates option list)\n\
+-O : remove assert and __debug__-dependent statements; add .opt-1 before\n\
+ .pyc extension; also PYTHONOPTIMIZE=x\n\
+-OO : do -O changes and also discard docstrings; add .opt-2 before\n\
+ .pyc extension\n\
+-P : don't prepend a potentially unsafe path to sys.path; also PYTHONSAFEPATH\n\
+-q : don't print version and copyright messages on interactive startup\n\
+-s : don't add user site directory to sys.path; also PYTHONNOUSERSITE\n\
+-S : don't imply 'import site' on initialization\n\
+-u : force the stdout and stderr streams to be unbuffered;\n\
+ this option has no effect on stdin; also PYTHONUNBUFFERED=x\n\
+-v : verbose (trace import statements); also PYTHONVERBOSE=x\n\
+ can be supplied multiple times to increase verbosity\n\
+-V : print the Python version number and exit (also --version)\n\
+ when given twice, print more information about the build\n\
+-W arg : warning control; arg is action:message:category:module:lineno\n\
+ also PYTHONWARNINGS=arg\n\
+-x : skip first line of source, allowing use of non-Unix forms of #!cmd\n\
+-X opt : set implementation-specific option\n\
+--check-hash-based-pycs always|default|never:\n\
+ control how Python invalidates hash-based .pyc files\n\
+--help-env : print help about Python environment variables and exit\n\
+--help-xoptions : print help about implementation-specific -X options and exit\n\
+--help-all : print complete help information and exit\n\
+Arguments:\n\
+file : program read from script file\n\
+- : program read from stdin (default; interactive mode if a tty)\n\
+arg ...: arguments passed to program in sys.argv[1:]\n\
+";
+
+static const char usage_xoptions[] = "\
+The following implementation-specific options are available:\n\
+\n\
+-X faulthandler: enable faulthandler\n\
+\n\
+-X showrefcount: output the total reference count and number of used\n\
+ memory blocks when the program finishes or after each statement in the\n\
+ interactive interpreter. This only works on debug builds\n\
+\n\
+-X tracemalloc: start tracing Python memory allocations using the\n\
+ tracemalloc module. By default, only the most recent frame is stored in a\n\
+ traceback of a trace. Use -X tracemalloc=NFRAME to start tracing with a\n\
+ traceback limit of NFRAME frames\n\
+\n\
+-X importtime: show how long each import takes. It shows module name,\n\
+ cumulative time (including nested imports) and self time (excluding\n\
+ nested imports). Note that its output may be broken in multi-threaded\n\
+ application. Typical usage is python3 -X importtime -c 'import asyncio'\n\
+\n\
+-X dev: enable CPython's \"development mode\", introducing additional runtime\n\
+ checks which are too expensive to be enabled by default. Effect of the\n\
+ developer mode:\n\
+ * Add default warning filter, as -W default\n\
+ * Install debug hooks on memory allocators: see the PyMem_SetupDebugHooks()\n\
+ C function\n\
+ * Enable the faulthandler module to dump the Python traceback on a crash\n\
+ * Enable asyncio debug mode\n\
+ * Set the dev_mode attribute of sys.flags to True\n\
+ * io.IOBase destructor logs close() exceptions\n\
+\n\
+-X utf8: enable UTF-8 mode for operating system interfaces, overriding the default\n\
+ locale-aware mode. -X utf8=0 explicitly disables UTF-8 mode (even when it would\n\
+ otherwise activate automatically)\n\
+\n\
+-X pycache_prefix=PATH: enable writing .pyc files to a parallel tree rooted at the\n\
+ given directory instead of to the code tree\n\
+\n\
+-X warn_default_encoding: enable opt-in EncodingWarning for 'encoding=None'\n\
+\n\
+-X no_debug_ranges: disable the inclusion of the tables mapping extra location \n\
+ information (end line, start column offset and end column offset) to every \n\
+ instruction in code objects. This is useful when smaller code objects and pyc \n\
+ files are desired as well as suppressing the extra visual location indicators \n\
+ when the interpreter displays tracebacks.\n\
+\n\
+-X perf: activate support for the Linux \"perf\" profiler by activating the \"perf\"\n\
+ trampoline. When this option is activated, the Linux \"perf\" profiler will be \n\
+ able to report Python calls. This option is only available on some platforms and will \n\
+ do nothing if is not supported on the current system. The default value is \"off\".\n\
+\n\
+-X frozen_modules=[on|off]: whether or not frozen modules should be used.\n\
+ The default is \"on\" (or \"off\" if you are running a local build).\n\
+\n\
+-X int_max_str_digits=number: limit the size of int<->str conversions.\n\
+ This helps avoid denial of service attacks when parsing untrusted data.\n\
+ The default is sys.int_info.default_max_str_digits. 0 disables."
+
+#ifdef Py_STATS
+"\n\
+\n\
+-X pystats: Enable pystats collection at startup."
+#endif
+;
+
+/* Envvars that don't have equivalent command-line options are listed first */
+static const char usage_envvars[] =
+"Environment variables that change behavior:\n"
+"PYTHONSTARTUP: file executed on interactive startup (no default)\n"
+"PYTHONPATH : '%lc'-separated list of directories prefixed to the\n"
+" default module search path. The result is sys.path.\n"
+"PYTHONHOME : alternate <prefix> directory (or <prefix>%lc<exec_prefix>).\n"
+" The default module search path uses %s.\n"
+"PYTHONPLATLIBDIR : override sys.platlibdir.\n"
+"PYTHONCASEOK : ignore case in 'import' statements (Windows).\n"
+"PYTHONUTF8: if set to 1, enable the UTF-8 mode.\n"
+"PYTHONIOENCODING: Encoding[:errors] used for stdin/stdout/stderr.\n"
+"PYTHONFAULTHANDLER: dump the Python traceback on fatal errors.\n"
+"PYTHONHASHSEED: if this variable is set to 'random', a random value is used\n"
+" to seed the hashes of str and bytes objects. It can also be set to an\n"
+" integer in the range [0,4294967295] to get hash values with a\n"
+" predictable seed.\n"
+"PYTHONINTMAXSTRDIGITS: limits the maximum digit characters in an int value\n"
+" when converting from a string and when converting an int back to a str.\n"
+" A value of 0 disables the limit. Conversions to or from bases 2, 4, 8,\n"
+" 16, and 32 are never limited.\n"
+"PYTHONMALLOC: set the Python memory allocators and/or install debug hooks\n"
+" on Python memory allocators. Use PYTHONMALLOC=debug to install debug\n"
+" hooks.\n"
+"PYTHONCOERCECLOCALE: if this variable is set to 0, it disables the locale\n"
+" coercion behavior. Use PYTHONCOERCECLOCALE=warn to request display of\n"
+" locale coercion and locale compatibility warnings on stderr.\n"
+"PYTHONBREAKPOINT: if this variable is set to 0, it disables the default\n"
+" debugger. It can be set to the callable of your debugger of choice.\n"
+"PYTHONDEVMODE: enable the development mode.\n"
+"PYTHONPYCACHEPREFIX: root directory for bytecode cache (pyc) files.\n"
+"PYTHONWARNDEFAULTENCODING: enable opt-in EncodingWarning for 'encoding=None'.\n"
+"PYTHONNODEBUGRANGES: If this variable is set, it disables the inclusion of the \n"
+" tables mapping extra location information (end line, start column offset \n"
+" and end column offset) to every instruction in code objects. This is useful \n"
+" when smaller code objects and pyc files are desired as well as suppressing the \n"
+" extra visual location indicators when the interpreter displays tracebacks.\n"
+"These variables have equivalent command-line parameters (see --help for details):\n"
+"PYTHONDEBUG : enable parser debug mode (-d)\n"
+"PYTHONDONTWRITEBYTECODE : don't write .pyc files (-B)\n"
+"PYTHONINSPECT : inspect interactively after running script (-i)\n"
+"PYTHONINTMAXSTRDIGITS : limit max digit characters in an int value\n"
+" (-X int_max_str_digits=number)\n"
+"PYTHONNOUSERSITE : disable user site directory (-s)\n"
+"PYTHONOPTIMIZE : enable level 1 optimizations (-O)\n"
+"PYTHONSAFEPATH : don't prepend a potentially unsafe path to sys.path (-P)\n"
+"PYTHONUNBUFFERED : disable stdout/stderr buffering (-u)\n"
+"PYTHONVERBOSE : trace import statements (-v)\n"
+"PYTHONWARNINGS=arg : warning control (-W arg)\n";
+
+#if defined(MS_WINDOWS)
+# define PYTHONHOMEHELP "<prefix>\\python{major}{minor}"
+#else
+# define PYTHONHOMEHELP "<prefix>/lib/pythonX.X"
+#endif
+
+
+/* --- Global configuration variables ----------------------------- */
+
+/* UTF-8 mode (PEP 540): if equals to 1, use the UTF-8 encoding, and change
+ stdin and stdout error handler to "surrogateescape". */
+int Py_UTF8Mode = 0;
+int Py_DebugFlag = 0; /* Needed by parser.c */
+int Py_VerboseFlag = 0; /* Needed by import.c */
+int Py_QuietFlag = 0; /* Needed by sysmodule.c */
+int Py_InteractiveFlag = 0; /* Previously, was used by Py_FdIsInteractive() */
+int Py_InspectFlag = 0; /* Needed to determine whether to exit at SystemExit */
+int Py_OptimizeFlag = 0; /* Needed by compile.c */
+int Py_NoSiteFlag = 0; /* Suppress 'import site' */
+int Py_BytesWarningFlag = 0; /* Warn on str(bytes) and str(buffer) */
+int Py_FrozenFlag = 1; /* Needed by getpath.c */
+int Py_IgnoreEnvironmentFlag = 0; /* e.g. PYTHONPATH, PYTHONHOME */
+int Py_DontWriteBytecodeFlag = 0; /* Suppress writing bytecode files (*.pyc) */
+int Py_NoUserSiteDirectory = 0; /* for -s and site.py */
+int Py_UnbufferedStdioFlag = 0; /* Unbuffered binary std{in,out,err} */
+int Py_HashRandomizationFlag = 0; /* for -R and PYTHONHASHSEED */
+int Py_IsolatedFlag = 0; /* for -I, isolate from user's env */
+#ifdef MS_WINDOWS
+int Py_LegacyWindowsFSEncodingFlag = 0; /* Uses mbcs instead of utf-8 */
+int Py_LegacyWindowsStdioFlag = 0; /* Uses FileIO instead of WindowsConsoleIO */
+#endif
+
+
+static PyObject *
+_Py_GetGlobalVariablesAsDict(void)
+{
+_Py_COMP_DIAG_PUSH
+_Py_COMP_DIAG_IGNORE_DEPR_DECLS
+ PyObject *dict, *obj;
+
+ dict = PyDict_New();
+ if (dict == NULL) {
+ return NULL;
+ }
+
+#define SET_ITEM(KEY, EXPR) \
+ do { \
+ obj = (EXPR); \
+ if (obj == NULL) { \
+ return NULL; \
+ } \
+ int res = PyDict_SetItemString(dict, (KEY), obj); \
+ Py_DECREF(obj); \
+ if (res < 0) { \
+ goto fail; \
+ } \
+ } while (0)
+#define SET_ITEM_INT(VAR) \
+ SET_ITEM(#VAR, PyLong_FromLong(VAR))
+#define FROM_STRING(STR) \
+ ((STR != NULL) ? \
+ PyUnicode_FromString(STR) \
+ : Py_NewRef(Py_None))
+#define SET_ITEM_STR(VAR) \
+ SET_ITEM(#VAR, FROM_STRING(VAR))
+
+ SET_ITEM_STR(Py_FileSystemDefaultEncoding);
+ SET_ITEM_INT(Py_HasFileSystemDefaultEncoding);
+ SET_ITEM_STR(Py_FileSystemDefaultEncodeErrors);
+ SET_ITEM_INT(_Py_HasFileSystemDefaultEncodeErrors);
+
+ SET_ITEM_INT(Py_UTF8Mode);
+ SET_ITEM_INT(Py_DebugFlag);
+ SET_ITEM_INT(Py_VerboseFlag);
+ SET_ITEM_INT(Py_QuietFlag);
+ SET_ITEM_INT(Py_InteractiveFlag);
+ SET_ITEM_INT(Py_InspectFlag);
+
+ SET_ITEM_INT(Py_OptimizeFlag);
+ SET_ITEM_INT(Py_NoSiteFlag);
+ SET_ITEM_INT(Py_BytesWarningFlag);
+ SET_ITEM_INT(Py_FrozenFlag);
+ SET_ITEM_INT(Py_IgnoreEnvironmentFlag);
+ SET_ITEM_INT(Py_DontWriteBytecodeFlag);
+ SET_ITEM_INT(Py_NoUserSiteDirectory);
+ SET_ITEM_INT(Py_UnbufferedStdioFlag);
+ SET_ITEM_INT(Py_HashRandomizationFlag);
+ SET_ITEM_INT(Py_IsolatedFlag);
+
+#ifdef MS_WINDOWS
+ SET_ITEM_INT(Py_LegacyWindowsFSEncodingFlag);
+ SET_ITEM_INT(Py_LegacyWindowsStdioFlag);
+#endif
+
+ return dict;
+
+fail:
+ Py_DECREF(dict);
+ return NULL;
+
+#undef FROM_STRING
+#undef SET_ITEM
+#undef SET_ITEM_INT
+#undef SET_ITEM_STR
+_Py_COMP_DIAG_POP
+}
+
+char*
+Py_GETENV(const char *name)
+{
+_Py_COMP_DIAG_PUSH
+_Py_COMP_DIAG_IGNORE_DEPR_DECLS
+ if (Py_IgnoreEnvironmentFlag) {
+ return NULL;
+ }
+ return getenv(name);
+_Py_COMP_DIAG_POP
+}
+
+/* --- PyStatus ----------------------------------------------- */
+
+PyStatus PyStatus_Ok(void)
+{ return _PyStatus_OK(); }
+
+PyStatus PyStatus_Error(const char *err_msg)
+{
+ assert(err_msg != NULL);
+ return (PyStatus){._type = _PyStatus_TYPE_ERROR,
+ .err_msg = err_msg};
+}
+
+PyStatus PyStatus_NoMemory(void)
+{ return PyStatus_Error("memory allocation failed"); }
+
+PyStatus PyStatus_Exit(int exitcode)
+{ return _PyStatus_EXIT(exitcode); }
+
+
+int PyStatus_IsError(PyStatus status)
+{ return _PyStatus_IS_ERROR(status); }
+
+int PyStatus_IsExit(PyStatus status)
+{ return _PyStatus_IS_EXIT(status); }
+
+int PyStatus_Exception(PyStatus status)
+{ return _PyStatus_EXCEPTION(status); }
+
+PyObject*
+_PyErr_SetFromPyStatus(PyStatus status)
+{
+ if (!_PyStatus_IS_ERROR(status)) {
+ PyErr_Format(PyExc_SystemError,
+ "%s() expects an error PyStatus",
+ _PyStatus_GET_FUNC());
+ }
+ else if (status.func) {
+ PyErr_Format(PyExc_ValueError, "%s: %s", status.func, status.err_msg);
+ }
+ else {
+ PyErr_Format(PyExc_ValueError, "%s", status.err_msg);
+ }
+ return NULL;
+}
+
+
+/* --- PyWideStringList ------------------------------------------------ */
+
+#ifndef NDEBUG
+int
+_PyWideStringList_CheckConsistency(const PyWideStringList *list)
+{
+ assert(list->length >= 0);
+ if (list->length != 0) {
+ assert(list->items != NULL);
+ }
+ for (Py_ssize_t i = 0; i < list->length; i++) {
+ assert(list->items[i] != NULL);
+ }
+ return 1;
+}
+#endif /* Py_DEBUG */
+
+
+void
+_PyWideStringList_Clear(PyWideStringList *list)
+{
+ assert(_PyWideStringList_CheckConsistency(list));
+ for (Py_ssize_t i=0; i < list->length; i++) {
+ PyMem_RawFree(list->items[i]);
+ }
+ PyMem_RawFree(list->items);
+ list->length = 0;
+ list->items = NULL;
+}
+
+
+int
+_PyWideStringList_Copy(PyWideStringList *list, const PyWideStringList *list2)
+{
+ assert(_PyWideStringList_CheckConsistency(list));
+ assert(_PyWideStringList_CheckConsistency(list2));
+
+ if (list2->length == 0) {
+ _PyWideStringList_Clear(list);
+ return 0;
+ }
+
+ PyWideStringList copy = _PyWideStringList_INIT;
+
+ size_t size = list2->length * sizeof(list2->items[0]);
+ copy.items = PyMem_RawMalloc(size);
+ if (copy.items == NULL) {
+ return -1;
+ }
+
+ for (Py_ssize_t i=0; i < list2->length; i++) {
+ wchar_t *item = _PyMem_RawWcsdup(list2->items[i]);
+ if (item == NULL) {
+ _PyWideStringList_Clear(&copy);
+ return -1;
+ }
+ copy.items[i] = item;
+ copy.length = i + 1;
+ }
+
+ _PyWideStringList_Clear(list);
+ *list = copy;
+ return 0;
+}
+
+
+PyStatus
+PyWideStringList_Insert(PyWideStringList *list,
+ Py_ssize_t index, const wchar_t *item)
+{
+ Py_ssize_t len = list->length;
+ if (len == PY_SSIZE_T_MAX) {
+ /* length+1 would overflow */
+ return _PyStatus_NO_MEMORY();
+ }
+ if (index < 0) {
+ return _PyStatus_ERR("PyWideStringList_Insert index must be >= 0");
+ }
+ if (index > len) {
+ index = len;
+ }
+
+ wchar_t *item2 = _PyMem_RawWcsdup(item);
+ if (item2 == NULL) {
+ return _PyStatus_NO_MEMORY();
+ }
+
+ size_t size = (len + 1) * sizeof(list->items[0]);
+ wchar_t **items2 = (wchar_t **)PyMem_RawRealloc(list->items, size);
+ if (items2 == NULL) {
+ PyMem_RawFree(item2);
+ return _PyStatus_NO_MEMORY();
+ }
+
+ if (index < len) {
+ memmove(&items2[index + 1],
+ &items2[index],
+ (len - index) * sizeof(items2[0]));
+ }
+
+ items2[index] = item2;
+ list->items = items2;
+ list->length++;
+ return _PyStatus_OK();
+}
+
+
+PyStatus
+PyWideStringList_Append(PyWideStringList *list, const wchar_t *item)
+{
+ return PyWideStringList_Insert(list, list->length, item);
+}
+
+
+PyStatus
+_PyWideStringList_Extend(PyWideStringList *list, const PyWideStringList *list2)
+{
+ for (Py_ssize_t i = 0; i < list2->length; i++) {
+ PyStatus status = PyWideStringList_Append(list, list2->items[i]);
+ if (_PyStatus_EXCEPTION(status)) {
+ return status;
+ }
+ }
+ return _PyStatus_OK();
+}
+
+
+static int
+_PyWideStringList_Find(PyWideStringList *list, const wchar_t *item)
+{
+ for (Py_ssize_t i = 0; i < list->length; i++) {
+ if (wcscmp(list->items[i], item) == 0) {
+ return 1;
+ }
+ }
+ return 0;
+}
+
+
+PyObject*
+_PyWideStringList_AsList(const PyWideStringList *list)
+{
+ assert(_PyWideStringList_CheckConsistency(list));
+
+ PyObject *pylist = PyList_New(list->length);
+ if (pylist == NULL) {
+ return NULL;
+ }
+
+ for (Py_ssize_t i = 0; i < list->length; i++) {
+ PyObject *item = PyUnicode_FromWideChar(list->items[i], -1);
+ if (item == NULL) {
+ Py_DECREF(pylist);
+ return NULL;
+ }
+ PyList_SET_ITEM(pylist, i, item);
+ }
+ return pylist;
+}
+
+
+/* --- Py_SetStandardStreamEncoding() ----------------------------- */
+
+/* Helper to allow an embedding application to override the normal
+ * mechanism that attempts to figure out an appropriate IO encoding
+ */
+
+static char *_Py_StandardStreamEncoding = NULL;
+static char *_Py_StandardStreamErrors = NULL;
+
+int
+Py_SetStandardStreamEncoding(const char *encoding, const char *errors)
+{
+ if (Py_IsInitialized()) {
+ /* This is too late to have any effect */
+ return -1;
+ }
+
+ int res = 0;
+
+ /* Py_SetStandardStreamEncoding() can be called before Py_Initialize(),
+ but Py_Initialize() can change the allocator. Use a known allocator
+ to be able to release the memory later. */
+ PyMemAllocatorEx old_alloc;
+ _PyMem_SetDefaultAllocator(PYMEM_DOMAIN_RAW, &old_alloc);
+
+ /* Can't call PyErr_NoMemory() on errors, as Python hasn't been
+ * initialised yet.
+ *
+ * However, the raw memory allocators are initialised appropriately
+ * as C static variables, so _PyMem_RawStrdup is OK even though
+ * Py_Initialize hasn't been called yet.
+ */
+ if (encoding) {
+ PyMem_RawFree(_Py_StandardStreamEncoding);
+ _Py_StandardStreamEncoding = _PyMem_RawStrdup(encoding);
+ if (!_Py_StandardStreamEncoding) {
+ res = -2;
+ goto done;
+ }
+ }
+ if (errors) {
+ PyMem_RawFree(_Py_StandardStreamErrors);
+ _Py_StandardStreamErrors = _PyMem_RawStrdup(errors);
+ if (!_Py_StandardStreamErrors) {
+ PyMem_RawFree(_Py_StandardStreamEncoding);
+ _Py_StandardStreamEncoding = NULL;
+ res = -3;
+ goto done;
+ }
+ }
+#ifdef MS_WINDOWS
+ if (_Py_StandardStreamEncoding) {
+_Py_COMP_DIAG_PUSH
+_Py_COMP_DIAG_IGNORE_DEPR_DECLS
+ /* Overriding the stream encoding implies legacy streams */
+ Py_LegacyWindowsStdioFlag = 1;
+_Py_COMP_DIAG_POP
+ }
+#endif
+
+done:
+ PyMem_SetAllocator(PYMEM_DOMAIN_RAW, &old_alloc);
+
+ return res;
+}
+
+
+void
+_Py_ClearStandardStreamEncoding(void)
+{
+ /* Use the same allocator than Py_SetStandardStreamEncoding() */
+ PyMemAllocatorEx old_alloc;
+ _PyMem_SetDefaultAllocator(PYMEM_DOMAIN_RAW, &old_alloc);
+
+ /* We won't need them anymore. */
+ if (_Py_StandardStreamEncoding) {
+ PyMem_RawFree(_Py_StandardStreamEncoding);
+ _Py_StandardStreamEncoding = NULL;
+ }
+ if (_Py_StandardStreamErrors) {
+ PyMem_RawFree(_Py_StandardStreamErrors);
+ _Py_StandardStreamErrors = NULL;
+ }
+
+ PyMem_SetAllocator(PYMEM_DOMAIN_RAW, &old_alloc);
+}
+
+
+/* --- Py_GetArgcArgv() ------------------------------------------- */
+
+void
+_Py_ClearArgcArgv(void)
+{
+ PyMemAllocatorEx old_alloc;
+ _PyMem_SetDefaultAllocator(PYMEM_DOMAIN_RAW, &old_alloc);
+
+ _PyWideStringList_Clear(&_PyRuntime.orig_argv);
+
+ PyMem_SetAllocator(PYMEM_DOMAIN_RAW, &old_alloc);
+}
+
+
+static int
+_Py_SetArgcArgv(Py_ssize_t argc, wchar_t * const *argv)
+{
+ const PyWideStringList argv_list = {.length = argc, .items = (wchar_t **)argv};
+ int res;
+
+ PyMemAllocatorEx old_alloc;
+ _PyMem_SetDefaultAllocator(PYMEM_DOMAIN_RAW, &old_alloc);
+
+ // XXX _PyRuntime.orig_argv only gets cleared by Py_Main(),
+ // so it it currently leaks for embedders.
+ res = _PyWideStringList_Copy(&_PyRuntime.orig_argv, &argv_list);
+
+ PyMem_SetAllocator(PYMEM_DOMAIN_RAW, &old_alloc);
+ return res;
+}
+
+
+// _PyConfig_Write() calls _Py_SetArgcArgv() with PyConfig.orig_argv.
+void
+Py_GetArgcArgv(int *argc, wchar_t ***argv)
+{
+ *argc = (int)_PyRuntime.orig_argv.length;
+ *argv = _PyRuntime.orig_argv.items;
+}
+
+
+/* --- PyConfig ---------------------------------------------- */
+
+#define MAX_HASH_SEED 4294967295UL
+
+
+#ifndef NDEBUG
+static int
+config_check_consistency(const PyConfig *config)
+{
+ /* Check config consistency */
+ assert(config->isolated >= 0);
+ assert(config->use_environment >= 0);
+ assert(config->dev_mode >= 0);
+ assert(config->install_signal_handlers >= 0);
+ assert(config->use_hash_seed >= 0);
+ assert(config->hash_seed <= MAX_HASH_SEED);
+ assert(config->faulthandler >= 0);
+ assert(config->tracemalloc >= 0);
+ assert(config->import_time >= 0);
+ assert(config->code_debug_ranges >= 0);
+ assert(config->show_ref_count >= 0);
+ assert(config->dump_refs >= 0);
+ assert(config->malloc_stats >= 0);
+ assert(config->site_import >= 0);
+ assert(config->bytes_warning >= 0);
+ assert(config->warn_default_encoding >= 0);
+ assert(config->inspect >= 0);
+ assert(config->interactive >= 0);
+ assert(config->optimization_level >= 0);
+ assert(config->parser_debug >= 0);
+ assert(config->write_bytecode >= 0);
+ assert(config->verbose >= 0);
+ assert(config->quiet >= 0);
+ assert(config->user_site_directory >= 0);
+ assert(config->parse_argv >= 0);
+ assert(config->configure_c_stdio >= 0);
+ assert(config->buffered_stdio >= 0);
+ assert(_PyWideStringList_CheckConsistency(&config->orig_argv));
+ assert(_PyWideStringList_CheckConsistency(&config->argv));
+ /* sys.argv must be non-empty: empty argv is replaced with [''] */
+ assert(config->argv.length >= 1);
+ assert(_PyWideStringList_CheckConsistency(&config->xoptions));
+ assert(_PyWideStringList_CheckConsistency(&config->warnoptions));
+ assert(_PyWideStringList_CheckConsistency(&config->module_search_paths));
+ assert(config->module_search_paths_set >= 0);
+ assert(config->filesystem_encoding != NULL);
+ assert(config->filesystem_errors != NULL);
+ assert(config->stdio_encoding != NULL);
+ assert(config->stdio_errors != NULL);
+#ifdef MS_WINDOWS
+ assert(config->legacy_windows_stdio >= 0);
+#endif
+ /* -c and -m options are exclusive */
+ assert(!(config->run_command != NULL && config->run_module != NULL));
+ assert(config->check_hash_pycs_mode != NULL);
+ assert(config->_install_importlib >= 0);
+ assert(config->pathconfig_warnings >= 0);
+ assert(config->_is_python_build >= 0);
+ assert(config->safe_path >= 0);
+ assert(config->int_max_str_digits >= 0);
+ // config->use_frozen_modules is initialized later
+ // by _PyConfig_InitImportConfig().
+ return 1;
+}
+#endif
+
+
+/* Free memory allocated in config, but don't clear all attributes */
+void
+PyConfig_Clear(PyConfig *config)
+{
+#define CLEAR(ATTR) \
+ do { \
+ PyMem_RawFree(ATTR); \
+ ATTR = NULL; \
+ } while (0)
+
+ CLEAR(config->pycache_prefix);
+ CLEAR(config->pythonpath_env);
+ CLEAR(config->home);
+ CLEAR(config->program_name);
+
+ _PyWideStringList_Clear(&config->argv);
+ _PyWideStringList_Clear(&config->warnoptions);
+ _PyWideStringList_Clear(&config->xoptions);
+ _PyWideStringList_Clear(&config->module_search_paths);
+ config->module_search_paths_set = 0;
+ CLEAR(config->stdlib_dir);
+
+ CLEAR(config->executable);
+ CLEAR(config->base_executable);
+ CLEAR(config->prefix);
+ CLEAR(config->base_prefix);
+ CLEAR(config->exec_prefix);
+ CLEAR(config->base_exec_prefix);
+ CLEAR(config->platlibdir);
+
+ CLEAR(config->filesystem_encoding);
+ CLEAR(config->filesystem_errors);
+ CLEAR(config->stdio_encoding);
+ CLEAR(config->stdio_errors);
+ CLEAR(config->run_command);
+ CLEAR(config->run_module);
+ CLEAR(config->run_filename);
+ CLEAR(config->check_hash_pycs_mode);
+
+ _PyWideStringList_Clear(&config->orig_argv);
+#undef CLEAR
+}
+
+
+void
+_PyConfig_InitCompatConfig(PyConfig *config)
+{
+ memset(config, 0, sizeof(*config));
+
+ config->_config_init = (int)_PyConfig_INIT_COMPAT;
+ config->isolated = -1;
+ config->use_environment = -1;
+ config->dev_mode = -1;
+ config->install_signal_handlers = 1;
+ config->use_hash_seed = -1;
+ config->faulthandler = -1;
+ config->tracemalloc = -1;
+ config->perf_profiling = -1;
+ config->module_search_paths_set = 0;
+ config->parse_argv = 0;
+ config->site_import = -1;
+ config->bytes_warning = -1;
+ config->warn_default_encoding = 0;
+ config->inspect = -1;
+ config->interactive = -1;
+ config->optimization_level = -1;
+ config->parser_debug= -1;
+ config->write_bytecode = -1;
+ config->verbose = -1;
+ config->quiet = -1;
+ config->user_site_directory = -1;
+ config->configure_c_stdio = 0;
+ config->buffered_stdio = -1;
+ config->_install_importlib = 1;
+ config->check_hash_pycs_mode = NULL;
+ config->pathconfig_warnings = -1;
+ config->_init_main = 1;
+#ifdef MS_WINDOWS
+ config->legacy_windows_stdio = -1;
+#endif
+#ifdef Py_DEBUG
+ config->use_frozen_modules = 0;
+#else
+ config->use_frozen_modules = 1;
+#endif
+ config->safe_path = 0;
+ config->int_max_str_digits = -1;
+ config->_is_python_build = 0;
+ config->code_debug_ranges = 1;
+}
+
+
+static void
+config_init_defaults(PyConfig *config)
+{
+ _PyConfig_InitCompatConfig(config);
+
+ config->isolated = 0;
+ config->use_environment = 1;
+ config->site_import = 1;
+ config->bytes_warning = 0;
+ config->inspect = 0;
+ config->interactive = 0;
+ config->optimization_level = 0;
+ config->parser_debug= 0;
+ config->write_bytecode = 1;
+ config->verbose = 0;
+ config->quiet = 0;
+ config->user_site_directory = 1;
+ config->buffered_stdio = 1;
+ config->pathconfig_warnings = 1;
+#ifdef MS_WINDOWS
+ config->legacy_windows_stdio = 0;
+#endif
+}
+
+
+void
+PyConfig_InitPythonConfig(PyConfig *config)
+{
+ config_init_defaults(config);
+
+ config->_config_init = (int)_PyConfig_INIT_PYTHON;
+ config->configure_c_stdio = 1;
+ config->parse_argv = 1;
+}
+
+
+void
+PyConfig_InitIsolatedConfig(PyConfig *config)
+{
+ config_init_defaults(config);
+
+ config->_config_init = (int)_PyConfig_INIT_ISOLATED;
+ config->isolated = 1;
+ config->use_environment = 0;
+ config->user_site_directory = 0;
+ config->dev_mode = 0;
+ config->install_signal_handlers = 0;
+ config->use_hash_seed = 0;
+ config->faulthandler = 0;
+ config->tracemalloc = 0;
+ config->perf_profiling = 0;
+ config->int_max_str_digits = _PY_LONG_DEFAULT_MAX_STR_DIGITS;
+ config->safe_path = 1;
+ config->pathconfig_warnings = 0;
+#ifdef MS_WINDOWS
+ config->legacy_windows_stdio = 0;
+#endif
+}
+
+
+/* Copy str into *config_str (duplicate the string) */
+PyStatus
+PyConfig_SetString(PyConfig *config, wchar_t **config_str, const wchar_t *str)
+{
+ PyStatus status = _Py_PreInitializeFromConfig(config, NULL);
+ if (_PyStatus_EXCEPTION(status)) {
+ return status;
+ }
+
+ wchar_t *str2;
+ if (str != NULL) {
+ str2 = _PyMem_RawWcsdup(str);
+ if (str2 == NULL) {
+ return _PyStatus_NO_MEMORY();
+ }
+ }
+ else {
+ str2 = NULL;
+ }
+ PyMem_RawFree(*config_str);
+ *config_str = str2;
+ return _PyStatus_OK();
+}
+
+
+static PyStatus
+config_set_bytes_string(PyConfig *config, wchar_t **config_str,
+ const char *str, const char *decode_err_msg)
+{
+ PyStatus status = _Py_PreInitializeFromConfig(config, NULL);
+ if (_PyStatus_EXCEPTION(status)) {
+ return status;
+ }
+
+ wchar_t *str2;
+ if (str != NULL) {
+ size_t len;
+ str2 = Py_DecodeLocale(str, &len);
+ if (str2 == NULL) {
+ if (len == (size_t)-2) {
+ return _PyStatus_ERR(decode_err_msg);
+ }
+ else {
+ return _PyStatus_NO_MEMORY();
+ }
+ }
+ }
+ else {
+ str2 = NULL;
+ }
+ PyMem_RawFree(*config_str);
+ *config_str = str2;
+ return _PyStatus_OK();
+}
+
+
+#define CONFIG_SET_BYTES_STR(config, config_str, str, NAME) \
+ config_set_bytes_string(config, config_str, str, "cannot decode " NAME)
+
+
+/* Decode str using Py_DecodeLocale() and set the result into *config_str.
+ Pre-initialize Python if needed to ensure that encodings are properly
+ configured. */
+PyStatus
+PyConfig_SetBytesString(PyConfig *config, wchar_t **config_str,
+ const char *str)
+{
+ return CONFIG_SET_BYTES_STR(config, config_str, str, "string");
+}
+
+
+PyStatus
+_PyConfig_Copy(PyConfig *config, const PyConfig *config2)
+{
+ PyStatus status;
+
+ PyConfig_Clear(config);
+
+#define COPY_ATTR(ATTR) config->ATTR = config2->ATTR
+#define COPY_WSTR_ATTR(ATTR) \
+ do { \
+ status = PyConfig_SetString(config, &config->ATTR, config2->ATTR); \
+ if (_PyStatus_EXCEPTION(status)) { \
+ return status; \
+ } \
+ } while (0)
+#define COPY_WSTRLIST(LIST) \
+ do { \
+ if (_PyWideStringList_Copy(&config->LIST, &config2->LIST) < 0) { \
+ return _PyStatus_NO_MEMORY(); \
+ } \
+ } while (0)
+
+ COPY_ATTR(_config_init);
+ COPY_ATTR(isolated);
+ COPY_ATTR(use_environment);
+ COPY_ATTR(dev_mode);
+ COPY_ATTR(install_signal_handlers);
+ COPY_ATTR(use_hash_seed);
+ COPY_ATTR(hash_seed);
+ COPY_ATTR(_install_importlib);
+ COPY_ATTR(faulthandler);
+ COPY_ATTR(tracemalloc);
+ COPY_ATTR(perf_profiling);
+ COPY_ATTR(import_time);
+ COPY_ATTR(code_debug_ranges);
+ COPY_ATTR(show_ref_count);
+ COPY_ATTR(dump_refs);
+ COPY_ATTR(dump_refs_file);
+ COPY_ATTR(malloc_stats);
+
+ COPY_WSTR_ATTR(pycache_prefix);
+ COPY_WSTR_ATTR(pythonpath_env);
+ COPY_WSTR_ATTR(home);
+ COPY_WSTR_ATTR(program_name);
+
+ COPY_ATTR(parse_argv);
+ COPY_WSTRLIST(argv);
+ COPY_WSTRLIST(warnoptions);
+ COPY_WSTRLIST(xoptions);
+ COPY_WSTRLIST(module_search_paths);
+ COPY_ATTR(module_search_paths_set);
+ COPY_WSTR_ATTR(stdlib_dir);
+
+ COPY_WSTR_ATTR(executable);
+ COPY_WSTR_ATTR(base_executable);
+ COPY_WSTR_ATTR(prefix);
+ COPY_WSTR_ATTR(base_prefix);
+ COPY_WSTR_ATTR(exec_prefix);
+ COPY_WSTR_ATTR(base_exec_prefix);
+ COPY_WSTR_ATTR(platlibdir);
+
+ COPY_ATTR(site_import);
+ COPY_ATTR(bytes_warning);
+ COPY_ATTR(warn_default_encoding);
+ COPY_ATTR(inspect);
+ COPY_ATTR(interactive);
+ COPY_ATTR(optimization_level);
+ COPY_ATTR(parser_debug);
+ COPY_ATTR(write_bytecode);
+ COPY_ATTR(verbose);
+ COPY_ATTR(quiet);
+ COPY_ATTR(user_site_directory);
+ COPY_ATTR(configure_c_stdio);
+ COPY_ATTR(buffered_stdio);
+ COPY_WSTR_ATTR(filesystem_encoding);
+ COPY_WSTR_ATTR(filesystem_errors);
+ COPY_WSTR_ATTR(stdio_encoding);
+ COPY_WSTR_ATTR(stdio_errors);
+#ifdef MS_WINDOWS
+ COPY_ATTR(legacy_windows_stdio);
+#endif
+ COPY_ATTR(skip_source_first_line);
+ COPY_WSTR_ATTR(run_command);
+ COPY_WSTR_ATTR(run_module);
+ COPY_WSTR_ATTR(run_filename);
+ COPY_WSTR_ATTR(check_hash_pycs_mode);
+ COPY_ATTR(pathconfig_warnings);
+ COPY_ATTR(_init_main);
+ COPY_ATTR(use_frozen_modules);
+ COPY_ATTR(safe_path);
+ COPY_WSTRLIST(orig_argv);
+ COPY_ATTR(_is_python_build);
+ COPY_ATTR(int_max_str_digits);
+
+#undef COPY_ATTR
+#undef COPY_WSTR_ATTR
+#undef COPY_WSTRLIST
+ return _PyStatus_OK();
+}
+
+
+PyObject *
+_PyConfig_AsDict(const PyConfig *config)
+{
+ PyObject *dict = PyDict_New();
+ if (dict == NULL) {
+ return NULL;
+ }
+
+#define SET_ITEM(KEY, EXPR) \
+ do { \
+ PyObject *obj = (EXPR); \
+ if (obj == NULL) { \
+ goto fail; \
+ } \
+ int res = PyDict_SetItemString(dict, (KEY), obj); \
+ Py_DECREF(obj); \
+ if (res < 0) { \
+ goto fail; \
+ } \
+ } while (0)
+#define SET_ITEM_INT(ATTR) \
+ SET_ITEM(#ATTR, PyLong_FromLong(config->ATTR))
+#define SET_ITEM_UINT(ATTR) \
+ SET_ITEM(#ATTR, PyLong_FromUnsignedLong(config->ATTR))
+#define FROM_WSTRING(STR) \
+ ((STR != NULL) ? \
+ PyUnicode_FromWideChar(STR, -1) \
+ : Py_NewRef(Py_None))
+#define SET_ITEM_WSTR(ATTR) \
+ SET_ITEM(#ATTR, FROM_WSTRING(config->ATTR))
+#define SET_ITEM_WSTRLIST(LIST) \
+ SET_ITEM(#LIST, _PyWideStringList_AsList(&config->LIST))
+
+ SET_ITEM_INT(_config_init);
+ SET_ITEM_INT(isolated);
+ SET_ITEM_INT(use_environment);
+ SET_ITEM_INT(dev_mode);
+ SET_ITEM_INT(install_signal_handlers);
+ SET_ITEM_INT(use_hash_seed);
+ SET_ITEM_UINT(hash_seed);
+ SET_ITEM_INT(faulthandler);
+ SET_ITEM_INT(tracemalloc);
+ SET_ITEM_INT(perf_profiling);
+ SET_ITEM_INT(import_time);
+ SET_ITEM_INT(code_debug_ranges);
+ SET_ITEM_INT(show_ref_count);
+ SET_ITEM_INT(dump_refs);
+ SET_ITEM_INT(malloc_stats);
+ SET_ITEM_WSTR(filesystem_encoding);
+ SET_ITEM_WSTR(filesystem_errors);
+ SET_ITEM_WSTR(pycache_prefix);
+ SET_ITEM_WSTR(program_name);
+ SET_ITEM_INT(parse_argv);
+ SET_ITEM_WSTRLIST(argv);
+ SET_ITEM_WSTRLIST(xoptions);
+ SET_ITEM_WSTRLIST(warnoptions);
+ SET_ITEM_WSTR(pythonpath_env);
+ SET_ITEM_WSTR(home);
+ SET_ITEM_INT(module_search_paths_set);
+ SET_ITEM_WSTRLIST(module_search_paths);
+ SET_ITEM_WSTR(stdlib_dir);
+ SET_ITEM_WSTR(executable);
+ SET_ITEM_WSTR(base_executable);
+ SET_ITEM_WSTR(prefix);
+ SET_ITEM_WSTR(base_prefix);
+ SET_ITEM_WSTR(exec_prefix);
+ SET_ITEM_WSTR(base_exec_prefix);
+ SET_ITEM_WSTR(platlibdir);
+ SET_ITEM_INT(site_import);
+ SET_ITEM_INT(bytes_warning);
+ SET_ITEM_INT(warn_default_encoding);
+ SET_ITEM_INT(inspect);
+ SET_ITEM_INT(interactive);
+ SET_ITEM_INT(optimization_level);
+ SET_ITEM_INT(parser_debug);
+ SET_ITEM_INT(write_bytecode);
+ SET_ITEM_INT(verbose);
+ SET_ITEM_INT(quiet);
+ SET_ITEM_INT(user_site_directory);
+ SET_ITEM_INT(configure_c_stdio);
+ SET_ITEM_INT(buffered_stdio);
+ SET_ITEM_WSTR(stdio_encoding);
+ SET_ITEM_WSTR(stdio_errors);
+#ifdef MS_WINDOWS
+ SET_ITEM_INT(legacy_windows_stdio);
+#endif
+ SET_ITEM_INT(skip_source_first_line);
+ SET_ITEM_WSTR(run_command);
+ SET_ITEM_WSTR(run_module);
+ SET_ITEM_WSTR(run_filename);
+ SET_ITEM_INT(_install_importlib);
+ SET_ITEM_WSTR(check_hash_pycs_mode);
+ SET_ITEM_INT(pathconfig_warnings);
+ SET_ITEM_INT(_init_main);
+ SET_ITEM_WSTRLIST(orig_argv);
+ SET_ITEM_INT(use_frozen_modules);
+ SET_ITEM_INT(safe_path);
+ SET_ITEM_INT(_is_python_build);
+ SET_ITEM_INT(int_max_str_digits);
+
+ return dict;
+
+fail:
+ Py_DECREF(dict);
+ return NULL;
+
+#undef FROM_WSTRING
+#undef SET_ITEM
+#undef SET_ITEM_INT
+#undef SET_ITEM_UINT
+#undef SET_ITEM_WSTR
+#undef SET_ITEM_WSTRLIST
+}
+
+
+static PyObject*
+config_dict_get(PyObject *dict, const char *name)
+{
+ PyObject *item = _PyDict_GetItemStringWithError(dict, name);
+ if (item == NULL && !PyErr_Occurred()) {
+ PyErr_Format(PyExc_ValueError, "missing config key: %s", name);
+ return NULL;
+ }
+ return item;
+}
+
+
+static void
+config_dict_invalid_value(const char *name)
+{
+ PyErr_Format(PyExc_ValueError, "invalid config value: %s", name);
+}
+
+
+static void
+config_dict_invalid_type(const char *name)
+{
+ PyErr_Format(PyExc_TypeError, "invalid config type: %s", name);
+}
+
+
+static int
+config_dict_get_int(PyObject *dict, const char *name, int *result)
+{
+ PyObject *item = config_dict_get(dict, name);
+ if (item == NULL) {
+ return -1;
+ }
+ int value = _PyLong_AsInt(item);
+ if (value == -1 && PyErr_Occurred()) {
+ if (PyErr_ExceptionMatches(PyExc_TypeError)) {
+ config_dict_invalid_type(name);
+ }
+ else if (PyErr_ExceptionMatches(PyExc_OverflowError)) {
+ config_dict_invalid_value(name);
+ }
+ return -1;
+ }
+ *result = value;
+ return 0;
+}
+
+
+static int
+config_dict_get_ulong(PyObject *dict, const char *name, unsigned long *result)
+{
+ PyObject *item = config_dict_get(dict, name);
+ if (item == NULL) {
+ return -1;
+ }
+ unsigned long value = PyLong_AsUnsignedLong(item);
+ if (value == (unsigned long)-1 && PyErr_Occurred()) {
+ if (PyErr_ExceptionMatches(PyExc_TypeError)) {
+ config_dict_invalid_type(name);
+ }
+ else if (PyErr_ExceptionMatches(PyExc_OverflowError)) {
+ config_dict_invalid_value(name);
+ }
+ return -1;
+ }
+ *result = value;
+ return 0;
+}
+
+
+static int
+config_dict_get_wstr(PyObject *dict, const char *name, PyConfig *config,
+ wchar_t **result)
+{
+ PyObject *item = config_dict_get(dict, name);
+ if (item == NULL) {
+ return -1;
+ }
+ PyStatus status;
+ if (item == Py_None) {
+ status = PyConfig_SetString(config, result, NULL);
+ }
+ else if (!PyUnicode_Check(item)) {
+ config_dict_invalid_type(name);
+ return -1;
+ }
+ else {
+ wchar_t *wstr = PyUnicode_AsWideCharString(item, NULL);
+ if (wstr == NULL) {
+ return -1;
+ }
+ status = PyConfig_SetString(config, result, wstr);
+ PyMem_Free(wstr);
+ }
+ if (_PyStatus_EXCEPTION(status)) {
+ PyErr_NoMemory();
+ return -1;
+ }
+ return 0;
+}
+
+
+static int
+config_dict_get_wstrlist(PyObject *dict, const char *name, PyConfig *config,
+ PyWideStringList *result)
+{
+ PyObject *list = config_dict_get(dict, name);
+ if (list == NULL) {
+ return -1;
+ }
+
+ if (!PyList_CheckExact(list)) {
+ config_dict_invalid_type(name);
+ return -1;
+ }
+
+ PyWideStringList wstrlist = _PyWideStringList_INIT;
+ for (Py_ssize_t i=0; i < PyList_GET_SIZE(list); i++) {
+ PyObject *item = PyList_GET_ITEM(list, i);
+
+ if (item == Py_None) {
+ config_dict_invalid_value(name);
+ goto error;
+ }
+ else if (!PyUnicode_Check(item)) {
+ config_dict_invalid_type(name);
+ goto error;
+ }
+ wchar_t *wstr = PyUnicode_AsWideCharString(item, NULL);
+ if (wstr == NULL) {
+ goto error;
+ }
+ PyStatus status = PyWideStringList_Append(&wstrlist, wstr);
+ PyMem_Free(wstr);
+ if (_PyStatus_EXCEPTION(status)) {
+ PyErr_NoMemory();
+ goto error;
+ }
+ }
+
+ if (_PyWideStringList_Copy(result, &wstrlist) < 0) {
+ PyErr_NoMemory();
+ goto error;
+ }
+ _PyWideStringList_Clear(&wstrlist);
+ return 0;
+
+error:
+ _PyWideStringList_Clear(&wstrlist);
+ return -1;
+}
+
+
+int
+_PyConfig_FromDict(PyConfig *config, PyObject *dict)
+{
+ if (!PyDict_Check(dict)) {
+ PyErr_SetString(PyExc_TypeError, "dict expected");
+ return -1;
+ }
+
+#define CHECK_VALUE(NAME, TEST) \
+ if (!(TEST)) { \
+ config_dict_invalid_value(NAME); \
+ return -1; \
+ }
+#define GET_UINT(KEY) \
+ do { \
+ if (config_dict_get_int(dict, #KEY, &config->KEY) < 0) { \
+ return -1; \
+ } \
+ CHECK_VALUE(#KEY, config->KEY >= 0); \
+ } while (0)
+#define GET_INT(KEY) \
+ do { \
+ if (config_dict_get_int(dict, #KEY, &config->KEY) < 0) { \
+ return -1; \
+ } \
+ } while (0)
+#define GET_WSTR(KEY) \
+ do { \
+ if (config_dict_get_wstr(dict, #KEY, config, &config->KEY) < 0) { \
+ return -1; \
+ } \
+ CHECK_VALUE(#KEY, config->KEY != NULL); \
+ } while (0)
+#define GET_WSTR_OPT(KEY) \
+ do { \
+ if (config_dict_get_wstr(dict, #KEY, config, &config->KEY) < 0) { \
+ return -1; \
+ } \
+ } while (0)
+#define GET_WSTRLIST(KEY) \
+ do { \
+ if (config_dict_get_wstrlist(dict, #KEY, config, &config->KEY) < 0) { \
+ return -1; \
+ } \
+ } while (0)
+
+ GET_UINT(_config_init);
+ CHECK_VALUE("_config_init",
+ config->_config_init == _PyConfig_INIT_COMPAT
+ || config->_config_init == _PyConfig_INIT_PYTHON
+ || config->_config_init == _PyConfig_INIT_ISOLATED);
+ GET_UINT(isolated);
+ GET_UINT(use_environment);
+ GET_UINT(dev_mode);
+ GET_UINT(install_signal_handlers);
+ GET_UINT(use_hash_seed);
+ if (config_dict_get_ulong(dict, "hash_seed", &config->hash_seed) < 0) {
+ return -1;
+ }
+ CHECK_VALUE("hash_seed", config->hash_seed <= MAX_HASH_SEED);
+ GET_UINT(faulthandler);
+ GET_UINT(tracemalloc);
+ GET_UINT(perf_profiling);
+ GET_UINT(import_time);
+ GET_UINT(code_debug_ranges);
+ GET_UINT(show_ref_count);
+ GET_UINT(dump_refs);
+ GET_UINT(malloc_stats);
+ GET_WSTR(filesystem_encoding);
+ GET_WSTR(filesystem_errors);
+ GET_WSTR_OPT(pycache_prefix);
+ GET_UINT(parse_argv);
+ GET_WSTRLIST(orig_argv);
+ GET_WSTRLIST(argv);
+ GET_WSTRLIST(xoptions);
+ GET_WSTRLIST(warnoptions);
+ GET_UINT(site_import);
+ GET_UINT(bytes_warning);
+ GET_UINT(warn_default_encoding);
+ GET_UINT(inspect);
+ GET_UINT(interactive);
+ GET_UINT(optimization_level);
+ GET_UINT(parser_debug);
+ GET_UINT(write_bytecode);
+ GET_UINT(verbose);
+ GET_UINT(quiet);
+ GET_UINT(user_site_directory);
+ GET_UINT(configure_c_stdio);
+ GET_UINT(buffered_stdio);
+ GET_WSTR(stdio_encoding);
+ GET_WSTR(stdio_errors);
+#ifdef MS_WINDOWS
+ GET_UINT(legacy_windows_stdio);
+#endif
+ GET_WSTR(check_hash_pycs_mode);
+
+ GET_UINT(pathconfig_warnings);
+ GET_WSTR(program_name);
+ GET_WSTR_OPT(pythonpath_env);
+ GET_WSTR_OPT(home);
+ GET_WSTR(platlibdir);
+
+ // Path configuration output
+ GET_UINT(module_search_paths_set);
+ GET_WSTRLIST(module_search_paths);
+ GET_WSTR_OPT(stdlib_dir);
+ GET_WSTR_OPT(executable);
+ GET_WSTR_OPT(base_executable);
+ GET_WSTR_OPT(prefix);
+ GET_WSTR_OPT(base_prefix);
+ GET_WSTR_OPT(exec_prefix);
+ GET_WSTR_OPT(base_exec_prefix);
+
+ GET_UINT(skip_source_first_line);
+ GET_WSTR_OPT(run_command);
+ GET_WSTR_OPT(run_module);
+ GET_WSTR_OPT(run_filename);
+
+ GET_UINT(_install_importlib);
+ GET_UINT(_init_main);
+ GET_UINT(use_frozen_modules);
+ GET_UINT(safe_path);
+ GET_UINT(_is_python_build);
+ GET_INT(int_max_str_digits);
+
+#undef CHECK_VALUE
+#undef GET_UINT
+#undef GET_INT
+#undef GET_WSTR
+#undef GET_WSTR_OPT
+ return 0;
+}
+
+
+static const char*
+config_get_env(const PyConfig *config, const char *name)
+{
+ return _Py_GetEnv(config->use_environment, name);
+}
+
+
+/* Get a copy of the environment variable as wchar_t*.
+ Return 0 on success, but *dest can be NULL.
+ Return -1 on memory allocation failure. Return -2 on decoding error. */
+static PyStatus
+config_get_env_dup(PyConfig *config,
+ wchar_t **dest,
+ wchar_t *wname, char *name,
+ const char *decode_err_msg)
+{
+ assert(*dest == NULL);
+ assert(config->use_environment >= 0);
+
+ if (!config->use_environment) {
+ *dest = NULL;
+ return _PyStatus_OK();
+ }
+
+#ifdef MS_WINDOWS
+ const wchar_t *var = _wgetenv(wname);
+ if (!var || var[0] == '\0') {
+ *dest = NULL;
+ return _PyStatus_OK();
+ }
+
+ return PyConfig_SetString(config, dest, var);
+#else
+ const char *var = getenv(name);
+ if (!var || var[0] == '\0') {
+ *dest = NULL;
+ return _PyStatus_OK();
+ }
+
+ return config_set_bytes_string(config, dest, var, decode_err_msg);
+#endif
+}
+
+
+#define CONFIG_GET_ENV_DUP(CONFIG, DEST, WNAME, NAME) \
+ config_get_env_dup(CONFIG, DEST, WNAME, NAME, "cannot decode " NAME)
+
+
+static void
+config_get_global_vars(PyConfig *config)
+{
+_Py_COMP_DIAG_PUSH
+_Py_COMP_DIAG_IGNORE_DEPR_DECLS
+ if (config->_config_init != _PyConfig_INIT_COMPAT) {
+ /* Python and Isolated configuration ignore global variables */
+ return;
+ }
+
+#define COPY_FLAG(ATTR, VALUE) \
+ if (config->ATTR == -1) { \
+ config->ATTR = VALUE; \
+ }
+#define COPY_NOT_FLAG(ATTR, VALUE) \
+ if (config->ATTR == -1) { \
+ config->ATTR = !(VALUE); \
+ }
+
+ COPY_FLAG(isolated, Py_IsolatedFlag);
+ COPY_NOT_FLAG(use_environment, Py_IgnoreEnvironmentFlag);
+ COPY_FLAG(bytes_warning, Py_BytesWarningFlag);
+ COPY_FLAG(inspect, Py_InspectFlag);
+ COPY_FLAG(interactive, Py_InteractiveFlag);
+ COPY_FLAG(optimization_level, Py_OptimizeFlag);
+ COPY_FLAG(parser_debug, Py_DebugFlag);
+ COPY_FLAG(verbose, Py_VerboseFlag);
+ COPY_FLAG(quiet, Py_QuietFlag);
+#ifdef MS_WINDOWS
+ COPY_FLAG(legacy_windows_stdio, Py_LegacyWindowsStdioFlag);
+#endif
+ COPY_NOT_FLAG(pathconfig_warnings, Py_FrozenFlag);
+
+ COPY_NOT_FLAG(buffered_stdio, Py_UnbufferedStdioFlag);
+ COPY_NOT_FLAG(site_import, Py_NoSiteFlag);
+ COPY_NOT_FLAG(write_bytecode, Py_DontWriteBytecodeFlag);
+ COPY_NOT_FLAG(user_site_directory, Py_NoUserSiteDirectory);
+
+#undef COPY_FLAG
+#undef COPY_NOT_FLAG
+_Py_COMP_DIAG_POP
+}
+
+
+/* Set Py_xxx global configuration variables from 'config' configuration. */
+static void
+config_set_global_vars(const PyConfig *config)
+{
+_Py_COMP_DIAG_PUSH
+_Py_COMP_DIAG_IGNORE_DEPR_DECLS
+#define COPY_FLAG(ATTR, VAR) \
+ if (config->ATTR != -1) { \
+ VAR = config->ATTR; \
+ }
+#define COPY_NOT_FLAG(ATTR, VAR) \
+ if (config->ATTR != -1) { \
+ VAR = !config->ATTR; \
+ }
+
+ COPY_FLAG(isolated, Py_IsolatedFlag);
+ COPY_NOT_FLAG(use_environment, Py_IgnoreEnvironmentFlag);
+ COPY_FLAG(bytes_warning, Py_BytesWarningFlag);
+ COPY_FLAG(inspect, Py_InspectFlag);
+ COPY_FLAG(interactive, Py_InteractiveFlag);
+ COPY_FLAG(optimization_level, Py_OptimizeFlag);
+ COPY_FLAG(parser_debug, Py_DebugFlag);
+ COPY_FLAG(verbose, Py_VerboseFlag);
+ COPY_FLAG(quiet, Py_QuietFlag);
+#ifdef MS_WINDOWS
+ COPY_FLAG(legacy_windows_stdio, Py_LegacyWindowsStdioFlag);
+#endif
+ COPY_NOT_FLAG(pathconfig_warnings, Py_FrozenFlag);
+
+ COPY_NOT_FLAG(buffered_stdio, Py_UnbufferedStdioFlag);
+ COPY_NOT_FLAG(site_import, Py_NoSiteFlag);
+ COPY_NOT_FLAG(write_bytecode, Py_DontWriteBytecodeFlag);
+ COPY_NOT_FLAG(user_site_directory, Py_NoUserSiteDirectory);
+
+ /* Random or non-zero hash seed */
+ Py_HashRandomizationFlag = (config->use_hash_seed == 0 ||
+ config->hash_seed != 0);
+
+#undef COPY_FLAG
+#undef COPY_NOT_FLAG
+_Py_COMP_DIAG_POP
+}
+
+
+static const wchar_t*
+config_get_xoption(const PyConfig *config, wchar_t *name)
+{
+ return _Py_get_xoption(&config->xoptions, name);
+}
+
+static const wchar_t*
+config_get_xoption_value(const PyConfig *config, wchar_t *name)
+{
+ const wchar_t *xoption = config_get_xoption(config, name);
+ if (xoption == NULL) {
+ return NULL;
+ }
+ const wchar_t *sep = wcschr(xoption, L'=');
+ return sep ? sep + 1 : L"";
+}
+
+
+static PyStatus
+config_init_hash_seed(PyConfig *config)
+{
+ static_assert(sizeof(_Py_HashSecret_t) == sizeof(_Py_HashSecret.uc),
+ "_Py_HashSecret_t has wrong size");
+
+ const char *seed_text = config_get_env(config, "PYTHONHASHSEED");
+
+ /* Convert a text seed to a numeric one */
+ if (seed_text && strcmp(seed_text, "random") != 0) {
+ const char *endptr = seed_text;
+ unsigned long seed;
+ errno = 0;
+ seed = strtoul(seed_text, (char **)&endptr, 10);
+ if (*endptr != '\0'
+ || seed > MAX_HASH_SEED
+ || (errno == ERANGE && seed == ULONG_MAX))
+ {
+ return _PyStatus_ERR("PYTHONHASHSEED must be \"random\" "
+ "or an integer in range [0; 4294967295]");
+ }
+ /* Use a specific hash */
+ config->use_hash_seed = 1;
+ config->hash_seed = seed;
+ }
+ else {
+ /* Use a random hash */
+ config->use_hash_seed = 0;
+ config->hash_seed = 0;
+ }
+ return _PyStatus_OK();
+}
+
+
+static int
+config_wstr_to_int(const wchar_t *wstr, int *result)
+{
+ const wchar_t *endptr = wstr;
+ errno = 0;
+ long value = wcstol(wstr, (wchar_t **)&endptr, 10);
+ if (*endptr != '\0' || errno == ERANGE) {
+ return -1;
+ }
+ if (value < INT_MIN || value > INT_MAX) {
+ return -1;
+ }
+
+ *result = (int)value;
+ return 0;
+}
+
+
+static PyStatus
+config_read_env_vars(PyConfig *config)
+{
+ PyStatus status;
+ int use_env = config->use_environment;
+
+ /* Get environment variables */
+ _Py_get_env_flag(use_env, &config->parser_debug, "PYTHONDEBUG");
+ _Py_get_env_flag(use_env, &config->verbose, "PYTHONVERBOSE");
+ _Py_get_env_flag(use_env, &config->optimization_level, "PYTHONOPTIMIZE");
+ _Py_get_env_flag(use_env, &config->inspect, "PYTHONINSPECT");
+
+ int dont_write_bytecode = 0;
+ _Py_get_env_flag(use_env, &dont_write_bytecode, "PYTHONDONTWRITEBYTECODE");
+ if (dont_write_bytecode) {
+ config->write_bytecode = 0;
+ }
+
+ int no_user_site_directory = 0;
+ _Py_get_env_flag(use_env, &no_user_site_directory, "PYTHONNOUSERSITE");
+ if (no_user_site_directory) {
+ config->user_site_directory = 0;
+ }
+
+ int unbuffered_stdio = 0;
+ _Py_get_env_flag(use_env, &unbuffered_stdio, "PYTHONUNBUFFERED");
+ if (unbuffered_stdio) {
+ config->buffered_stdio = 0;
+ }
+
+#ifdef MS_WINDOWS
+ _Py_get_env_flag(use_env, &config->legacy_windows_stdio,
+ "PYTHONLEGACYWINDOWSSTDIO");
+#endif
+
+ if (config_get_env(config, "PYTHONDUMPREFS")) {
+ config->dump_refs = 1;
+ }
+ if (config_get_env(config, "PYTHONMALLOCSTATS")) {
+ config->malloc_stats = 1;
+ }
+
+ if (config->dump_refs_file == NULL) {
+ status = CONFIG_GET_ENV_DUP(config, &config->dump_refs_file,
+ L"PYTHONDUMPREFSFILE", "PYTHONDUMPREFSFILE");
+ if (_PyStatus_EXCEPTION(status)) {
+ return status;
+ }
+ }
+
+ if (config->pythonpath_env == NULL) {
+ status = CONFIG_GET_ENV_DUP(config, &config->pythonpath_env,
+ L"PYTHONPATH", "PYTHONPATH");
+ if (_PyStatus_EXCEPTION(status)) {
+ return status;
+ }
+ }
+
+ if(config->platlibdir == NULL) {
+ status = CONFIG_GET_ENV_DUP(config, &config->platlibdir,
+ L"PYTHONPLATLIBDIR", "PYTHONPLATLIBDIR");
+ if (_PyStatus_EXCEPTION(status)) {
+ return status;
+ }
+ }
+
+ if (config->use_hash_seed < 0) {
+ status = config_init_hash_seed(config);
+ if (_PyStatus_EXCEPTION(status)) {
+ return status;
+ }
+ }
+
+ if (config_get_env(config, "PYTHONSAFEPATH")) {
+ config->safe_path = 1;
+ }
+
+ return _PyStatus_OK();
+}
+
+static PyStatus
+config_init_perf_profiling(PyConfig *config)
+{
+ int active = 0;
+ const char *env = config_get_env(config, "PYTHONPERFSUPPORT");
+ if (env) {
+ if (_Py_str_to_int(env, &active) != 0) {
+ active = 0;
+ }
+ if (active) {
+ config->perf_profiling = 1;
+ }
+ }
+ const wchar_t *xoption = config_get_xoption(config, L"perf");
+ if (xoption) {
+ config->perf_profiling = 1;
+ }
+ return _PyStatus_OK();
+
+}
+
+static PyStatus
+config_init_tracemalloc(PyConfig *config)
+{
+ int nframe;
+ int valid;
+
+ const char *env = config_get_env(config, "PYTHONTRACEMALLOC");
+ if (env) {
+ if (!_Py_str_to_int(env, &nframe)) {
+ valid = (nframe >= 0);
+ }
+ else {
+ valid = 0;
+ }
+ if (!valid) {
+ return _PyStatus_ERR("PYTHONTRACEMALLOC: invalid number of frames");
+ }
+ config->tracemalloc = nframe;
+ }
+
+ const wchar_t *xoption = config_get_xoption(config, L"tracemalloc");
+ if (xoption) {
+ const wchar_t *sep = wcschr(xoption, L'=');
+ if (sep) {
+ if (!config_wstr_to_int(sep + 1, &nframe)) {
+ valid = (nframe >= 0);
+ }
+ else {
+ valid = 0;
+ }
+ if (!valid) {
+ return _PyStatus_ERR("-X tracemalloc=NFRAME: "
+ "invalid number of frames");
+ }
+ }
+ else {
+ /* -X tracemalloc behaves as -X tracemalloc=1 */
+ nframe = 1;
+ }
+ config->tracemalloc = nframe;
+ }
+ return _PyStatus_OK();
+}
+
+static PyStatus
+config_init_int_max_str_digits(PyConfig *config)
+{
+ int maxdigits;
+
+ const char *env = config_get_env(config, "PYTHONINTMAXSTRDIGITS");
+ if (env) {
+ bool valid = 0;
+ if (!_Py_str_to_int(env, &maxdigits)) {
+ valid = ((maxdigits == 0) || (maxdigits >= _PY_LONG_MAX_STR_DIGITS_THRESHOLD));
+ }
+ if (!valid) {
+#define STRINGIFY(VAL) _STRINGIFY(VAL)
+#define _STRINGIFY(VAL) #VAL
+ return _PyStatus_ERR(
+ "PYTHONINTMAXSTRDIGITS: invalid limit; must be >= "
+ STRINGIFY(_PY_LONG_MAX_STR_DIGITS_THRESHOLD)
+ " or 0 for unlimited.");
+ }
+ config->int_max_str_digits = maxdigits;
+ }
+
+ const wchar_t *xoption = config_get_xoption(config, L"int_max_str_digits");
+ if (xoption) {
+ const wchar_t *sep = wcschr(xoption, L'=');
+ bool valid = 0;
+ if (sep) {
+ if (!config_wstr_to_int(sep + 1, &maxdigits)) {
+ valid = ((maxdigits == 0) || (maxdigits >= _PY_LONG_MAX_STR_DIGITS_THRESHOLD));
+ }
+ }
+ if (!valid) {
+ return _PyStatus_ERR(
+ "-X int_max_str_digits: invalid limit; must be >= "
+ STRINGIFY(_PY_LONG_MAX_STR_DIGITS_THRESHOLD)
+ " or 0 for unlimited.");
+#undef _STRINGIFY
+#undef STRINGIFY
+ }
+ config->int_max_str_digits = maxdigits;
+ }
+ if (config->int_max_str_digits < 0) {
+ config->int_max_str_digits = _PY_LONG_DEFAULT_MAX_STR_DIGITS;
+ }
+ return _PyStatus_OK();
+}
+
+static PyStatus
+config_init_pycache_prefix(PyConfig *config)
+{
+ assert(config->pycache_prefix == NULL);
+
+ const wchar_t *xoption = config_get_xoption(config, L"pycache_prefix");
+ if (xoption) {
+ const wchar_t *sep = wcschr(xoption, L'=');
+ if (sep && wcslen(sep) > 1) {
+ config->pycache_prefix = _PyMem_RawWcsdup(sep + 1);
+ if (config->pycache_prefix == NULL) {
+ return _PyStatus_NO_MEMORY();
+ }
+ }
+ else {
+ // PYTHONPYCACHEPREFIX env var ignored
+ // if "-X pycache_prefix=" option is used
+ config->pycache_prefix = NULL;
+ }
+ return _PyStatus_OK();
+ }
+
+ return CONFIG_GET_ENV_DUP(config, &config->pycache_prefix,
+ L"PYTHONPYCACHEPREFIX",
+ "PYTHONPYCACHEPREFIX");
+}
+
+
+static PyStatus
+config_read_complex_options(PyConfig *config)
+{
+ /* More complex options configured by env var and -X option */
+ if (config->faulthandler < 0) {
+ if (config_get_env(config, "PYTHONFAULTHANDLER")
+ || config_get_xoption(config, L"faulthandler")) {
+ config->faulthandler = 1;
+ }
+ }
+ if (config_get_env(config, "PYTHONPROFILEIMPORTTIME")
+ || config_get_xoption(config, L"importtime")) {
+ config->import_time = 1;
+ }
+
+ if (config_get_env(config, "PYTHONNODEBUGRANGES")
+ || config_get_xoption(config, L"no_debug_ranges")) {
+ config->code_debug_ranges = 0;
+ }
+
+ PyStatus status;
+ if (config->tracemalloc < 0) {
+ status = config_init_tracemalloc(config);
+ if (_PyStatus_EXCEPTION(status)) {
+ return status;
+ }
+ }
+
+ if (config->perf_profiling < 0) {
+ status = config_init_perf_profiling(config);
+ if (_PyStatus_EXCEPTION(status)) {
+ return status;
+ }
+ }
+
+ if (config->int_max_str_digits < 0) {
+ status = config_init_int_max_str_digits(config);
+ if (_PyStatus_EXCEPTION(status)) {
+ return status;
+ }
+ }
+
+ if (config->pycache_prefix == NULL) {
+ status = config_init_pycache_prefix(config);
+ if (_PyStatus_EXCEPTION(status)) {
+ return status;
+ }
+ }
+ return _PyStatus_OK();
+}
+
+
+static const wchar_t *
+config_get_stdio_errors(const PyPreConfig *preconfig)
+{
+ if (preconfig->utf8_mode) {
+ /* UTF-8 Mode uses UTF-8/surrogateescape */
+ return L"surrogateescape";
+ }
+
+#ifndef MS_WINDOWS
+ const char *loc = setlocale(LC_CTYPE, NULL);
+ if (loc != NULL) {
+ /* surrogateescape is the default in the legacy C and POSIX locales */
+ if (strcmp(loc, "C") == 0 || strcmp(loc, "POSIX") == 0) {
+ return L"surrogateescape";
+ }
+
+#ifdef PY_COERCE_C_LOCALE
+ /* surrogateescape is the default in locale coercion target locales */
+ if (_Py_IsLocaleCoercionTarget(loc)) {
+ return L"surrogateescape";
+ }
+#endif
+ }
+
+ return L"strict";
+#else
+ /* On Windows, always use surrogateescape by default */
+ return L"surrogateescape";
+#endif
+}
+
+
+// See also config_get_fs_encoding()
+static PyStatus
+config_get_locale_encoding(PyConfig *config, const PyPreConfig *preconfig,
+ wchar_t **locale_encoding)
+{
+ wchar_t *encoding;
+ if (preconfig->utf8_mode) {
+ encoding = _PyMem_RawWcsdup(L"utf-8");
+ }
+ else {
+ encoding = _Py_GetLocaleEncoding();
+ }
+ if (encoding == NULL) {
+ return _PyStatus_NO_MEMORY();
+ }
+ PyStatus status = PyConfig_SetString(config, locale_encoding, encoding);
+ PyMem_RawFree(encoding);
+ return status;
+}
+
+
+static PyStatus
+config_init_stdio_encoding(PyConfig *config,
+ const PyPreConfig *preconfig)
+{
+ PyStatus status;
+
+ /* If Py_SetStandardStreamEncoding() has been called, use its
+ arguments if they are not NULL. */
+ if (config->stdio_encoding == NULL && _Py_StandardStreamEncoding != NULL) {
+ status = CONFIG_SET_BYTES_STR(config, &config->stdio_encoding,
+ _Py_StandardStreamEncoding,
+ "_Py_StandardStreamEncoding");
+ if (_PyStatus_EXCEPTION(status)) {
+ return status;
+ }
+ }
+
+ if (config->stdio_errors == NULL && _Py_StandardStreamErrors != NULL) {
+ status = CONFIG_SET_BYTES_STR(config, &config->stdio_errors,
+ _Py_StandardStreamErrors,
+ "_Py_StandardStreamErrors");
+ if (_PyStatus_EXCEPTION(status)) {
+ return status;
+ }
+ }
+
+ // Exit if encoding and errors are defined
+ if (config->stdio_encoding != NULL && config->stdio_errors != NULL) {
+ return _PyStatus_OK();
+ }
+
+ /* PYTHONIOENCODING environment variable */
+ const char *opt = config_get_env(config, "PYTHONIOENCODING");
+ if (opt) {
+ char *pythonioencoding = _PyMem_RawStrdup(opt);
+ if (pythonioencoding == NULL) {
+ return _PyStatus_NO_MEMORY();
+ }
+
+ char *errors = strchr(pythonioencoding, ':');
+ if (errors) {
+ *errors = '\0';
+ errors++;
+ if (!errors[0]) {
+ errors = NULL;
+ }
+ }
+
+ /* Does PYTHONIOENCODING contain an encoding? */
+ if (pythonioencoding[0]) {
+ if (config->stdio_encoding == NULL) {
+ status = CONFIG_SET_BYTES_STR(config, &config->stdio_encoding,
+ pythonioencoding,
+ "PYTHONIOENCODING environment variable");
+ if (_PyStatus_EXCEPTION(status)) {
+ PyMem_RawFree(pythonioencoding);
+ return status;
+ }
+ }
+
+ /* If the encoding is set but not the error handler,
+ use "strict" error handler by default.
+ PYTHONIOENCODING=latin1 behaves as
+ PYTHONIOENCODING=latin1:strict. */
+ if (!errors) {
+ errors = "strict";
+ }
+ }
+
+ if (config->stdio_errors == NULL && errors != NULL) {
+ status = CONFIG_SET_BYTES_STR(config, &config->stdio_errors,
+ errors,
+ "PYTHONIOENCODING environment variable");
+ if (_PyStatus_EXCEPTION(status)) {
+ PyMem_RawFree(pythonioencoding);
+ return status;
+ }
+ }
+
+ PyMem_RawFree(pythonioencoding);
+ }
+
+ /* Choose the default error handler based on the current locale. */
+ if (config->stdio_encoding == NULL) {
+ status = config_get_locale_encoding(config, preconfig,
+ &config->stdio_encoding);
+ if (_PyStatus_EXCEPTION(status)) {
+ return status;
+ }
+ }
+ if (config->stdio_errors == NULL) {
+ const wchar_t *errors = config_get_stdio_errors(preconfig);
+ assert(errors != NULL);
+
+ status = PyConfig_SetString(config, &config->stdio_errors, errors);
+ if (_PyStatus_EXCEPTION(status)) {
+ return status;
+ }
+ }
+
+ return _PyStatus_OK();
+}
+
+
+// See also config_get_locale_encoding()
+static PyStatus
+config_get_fs_encoding(PyConfig *config, const PyPreConfig *preconfig,
+ wchar_t **fs_encoding)
+{
+#ifdef _Py_FORCE_UTF8_FS_ENCODING
+ return PyConfig_SetString(config, fs_encoding, L"utf-8");
+#elif defined(MS_WINDOWS)
+ const wchar_t *encoding;
+ if (preconfig->legacy_windows_fs_encoding) {
+ // Legacy Windows filesystem encoding: mbcs/replace
+ encoding = L"mbcs";
+ }
+ else {
+ // Windows defaults to utf-8/surrogatepass (PEP 529)
+ encoding = L"utf-8";
+ }
+ return PyConfig_SetString(config, fs_encoding, encoding);
+#else // !MS_WINDOWS
+ if (preconfig->utf8_mode) {
+ return PyConfig_SetString(config, fs_encoding, L"utf-8");
+ }
+
+ if (_Py_GetForceASCII()) {
+ return PyConfig_SetString(config, fs_encoding, L"ascii");
+ }
+
+ return config_get_locale_encoding(config, preconfig, fs_encoding);
+#endif // !MS_WINDOWS
+}
+
+
+static PyStatus
+config_init_fs_encoding(PyConfig *config, const PyPreConfig *preconfig)
+{
+ PyStatus status;
+
+ if (config->filesystem_encoding == NULL) {
+ status = config_get_fs_encoding(config, preconfig,
+ &config->filesystem_encoding);
+ if (_PyStatus_EXCEPTION(status)) {
+ return status;
+ }
+ }
+
+ if (config->filesystem_errors == NULL) {
+ const wchar_t *errors;
+#ifdef MS_WINDOWS
+ if (preconfig->legacy_windows_fs_encoding) {
+ errors = L"replace";
+ }
+ else {
+ errors = L"surrogatepass";
+ }
+#else
+ errors = L"surrogateescape";
+#endif
+ status = PyConfig_SetString(config, &config->filesystem_errors, errors);
+ if (_PyStatus_EXCEPTION(status)) {
+ return status;
+ }
+ }
+ return _PyStatus_OK();
+}
+
+
+static PyStatus
+config_init_import(PyConfig *config, int compute_path_config)
+{
+ PyStatus status;
+
+ status = _PyConfig_InitPathConfig(config, compute_path_config);
+ if (_PyStatus_EXCEPTION(status)) {
+ return status;
+ }
+
+ /* -X frozen_modules=[on|off] */
+ const wchar_t *value = config_get_xoption_value(config, L"frozen_modules");
+ if (value == NULL) {
+ }
+ else if (wcscmp(value, L"on") == 0) {
+ config->use_frozen_modules = 1;
+ }
+ else if (wcscmp(value, L"off") == 0) {
+ config->use_frozen_modules = 0;
+ }
+ else if (wcslen(value) == 0) {
+ // "-X frozen_modules" and "-X frozen_modules=" both imply "on".
+ config->use_frozen_modules = 1;
+ }
+ else {
+ return PyStatus_Error("bad value for option -X frozen_modules "
+ "(expected \"on\" or \"off\")");
+ }
+
+ assert(config->use_frozen_modules >= 0);
+ return _PyStatus_OK();
+}
+
+PyStatus
+_PyConfig_InitImportConfig(PyConfig *config)
+{
+ return config_init_import(config, 1);
+}
+
+
+static PyStatus
+config_read(PyConfig *config, int compute_path_config)
+{
+ PyStatus status;
+ const PyPreConfig *preconfig = &_PyRuntime.preconfig;
+
+ if (config->use_environment) {
+ status = config_read_env_vars(config);
+ if (_PyStatus_EXCEPTION(status)) {
+ return status;
+ }
+ }
+
+ /* -X options */
+ if (config_get_xoption(config, L"showrefcount")) {
+ config->show_ref_count = 1;
+ }
+
+#ifdef Py_STATS
+ if (config_get_xoption(config, L"pystats")) {
+ _py_stats = &_py_stats_struct;
+ }
+#endif
+
+ status = config_read_complex_options(config);
+ if (_PyStatus_EXCEPTION(status)) {
+ return status;
+ }
+
+ if (config->_install_importlib) {
+ status = config_init_import(config, compute_path_config);
+ if (_PyStatus_EXCEPTION(status)) {
+ return status;
+ }
+ }
+
+ /* default values */
+ if (config->dev_mode) {
+ if (config->faulthandler < 0) {
+ config->faulthandler = 1;
+ }
+ }
+ if (config->faulthandler < 0) {
+ config->faulthandler = 0;
+ }
+ if (config->tracemalloc < 0) {
+ config->tracemalloc = 0;
+ }
+ if (config->perf_profiling < 0) {
+ config->perf_profiling = 0;
+ }
+ if (config->use_hash_seed < 0) {
+ config->use_hash_seed = 0;
+ config->hash_seed = 0;
+ }
+
+ if (config->filesystem_encoding == NULL || config->filesystem_errors == NULL) {
+ status = config_init_fs_encoding(config, preconfig);
+ if (_PyStatus_EXCEPTION(status)) {
+ return status;
+ }
+ }
+
+ status = config_init_stdio_encoding(config, preconfig);
+ if (_PyStatus_EXCEPTION(status)) {
+ return status;
+ }
+
+ if (config->argv.length < 1) {
+ /* Ensure at least one (empty) argument is seen */
+ status = PyWideStringList_Append(&config->argv, L"");
+ if (_PyStatus_EXCEPTION(status)) {
+ return status;
+ }
+ }
+
+ if (config->check_hash_pycs_mode == NULL) {
+ status = PyConfig_SetString(config, &config->check_hash_pycs_mode,
+ L"default");
+ if (_PyStatus_EXCEPTION(status)) {
+ return status;
+ }
+ }
+
+ if (config->configure_c_stdio < 0) {
+ config->configure_c_stdio = 1;
+ }
+
+ // Only parse arguments once.
+ if (config->parse_argv == 1) {
+ config->parse_argv = 2;
+ }
+
+ return _PyStatus_OK();
+}
+
+
+static void
+config_init_stdio(const PyConfig *config)
+{
+#if defined(MS_WINDOWS) || defined(__CYGWIN__)
+ /* don't translate newlines (\r\n <=> \n) */
+ _setmode(fileno(stdin), O_BINARY);
+ _setmode(fileno(stdout), O_BINARY);
+ _setmode(fileno(stderr), O_BINARY);
+#endif
+
+ if (!config->buffered_stdio) {
+#ifdef HAVE_SETVBUF
+ setvbuf(stdin, (char *)NULL, _IONBF, BUFSIZ);
+ setvbuf(stdout, (char *)NULL, _IONBF, BUFSIZ);
+ setvbuf(stderr, (char *)NULL, _IONBF, BUFSIZ);
+#else /* !HAVE_SETVBUF */
+ setbuf(stdin, (char *)NULL);
+ setbuf(stdout, (char *)NULL);
+ setbuf(stderr, (char *)NULL);
+#endif /* !HAVE_SETVBUF */
+ }
+ else if (config->interactive) {
+#ifdef MS_WINDOWS
+ /* Doesn't have to have line-buffered -- use unbuffered */
+ /* Any set[v]buf(stdin, ...) screws up Tkinter :-( */
+ setvbuf(stdout, (char *)NULL, _IONBF, BUFSIZ);
+#else /* !MS_WINDOWS */
+#ifdef HAVE_SETVBUF
+ setvbuf(stdin, (char *)NULL, _IOLBF, BUFSIZ);
+ setvbuf(stdout, (char *)NULL, _IOLBF, BUFSIZ);
+#endif /* HAVE_SETVBUF */
+#endif /* !MS_WINDOWS */
+ /* Leave stderr alone - it should be unbuffered anyway. */
+ }
+}
+
+
+/* Write the configuration:
+
+ - set Py_xxx global configuration variables
+ - initialize C standard streams (stdin, stdout, stderr) */
+PyStatus
+_PyConfig_Write(const PyConfig *config, _PyRuntimeState *runtime)
+{
+ config_set_global_vars(config);
+
+ if (config->configure_c_stdio) {
+ config_init_stdio(config);
+ }
+
+ /* Write the new pre-configuration into _PyRuntime */
+ PyPreConfig *preconfig = &runtime->preconfig;
+ preconfig->isolated = config->isolated;
+ preconfig->use_environment = config->use_environment;
+ preconfig->dev_mode = config->dev_mode;
+
+ if (_Py_SetArgcArgv(config->orig_argv.length,
+ config->orig_argv.items) < 0)
+ {
+ return _PyStatus_NO_MEMORY();
+ }
+ return _PyStatus_OK();
+}
+
+
+/* --- PyConfig command line parser -------------------------- */
+
+static void
+config_usage(int error, const wchar_t* program)
+{
+ FILE *f = error ? stderr : stdout;
+
+ fprintf(f, usage_line, program);
+ if (error)
+ fprintf(f, "Try `python -h' for more information.\n");
+ else {
+ fputs(usage_help, f);
+ }
+}
+
+static void
+config_envvars_usage(void)
+{
+ printf(usage_envvars, (wint_t)DELIM, (wint_t)DELIM, PYTHONHOMEHELP);
+}
+
+static void
+config_xoptions_usage(void)
+{
+ puts(usage_xoptions);
+}
+
+static void
+config_complete_usage(const wchar_t* program)
+{
+ config_usage(0, program);
+ puts("\n");
+ config_envvars_usage();
+ puts("\n");
+ config_xoptions_usage();
+}
+
+
+/* Parse the command line arguments */
+static PyStatus
+config_parse_cmdline(PyConfig *config, PyWideStringList *warnoptions,
+ Py_ssize_t *opt_index)
+{
+ PyStatus status;
+ const PyWideStringList *argv = &config->argv;
+ int print_version = 0;
+ const wchar_t* program = config->program_name;
+ if (!program && argv->length >= 1) {
+ program = argv->items[0];
+ }
+
+ _PyOS_ResetGetOpt();
+ do {
+ int longindex = -1;
+ int c = _PyOS_GetOpt(argv->length, argv->items, &longindex);
+ if (c == EOF) {
+ break;
+ }
+
+ if (c == 'c') {
+ if (config->run_command == NULL) {
+ /* -c is the last option; following arguments
+ that look like options are left for the
+ command to interpret. */
+ size_t len = wcslen(_PyOS_optarg) + 1 + 1;
+ wchar_t *command = PyMem_RawMalloc(sizeof(wchar_t) * len);
+ if (command == NULL) {
+ return _PyStatus_NO_MEMORY();
+ }
+ memcpy(command, _PyOS_optarg, (len - 2) * sizeof(wchar_t));
+ command[len - 2] = '\n';
+ command[len - 1] = 0;
+ config->run_command = command;
+ }
+ break;
+ }
+
+ if (c == 'm') {
+ /* -m is the last option; following arguments
+ that look like options are left for the
+ module to interpret. */
+ if (config->run_module == NULL) {
+ config->run_module = _PyMem_RawWcsdup(_PyOS_optarg);
+ if (config->run_module == NULL) {
+ return _PyStatus_NO_MEMORY();
+ }
+ }
+ break;
+ }
+
+ switch (c) {
+ // Integers represent long options, see Python/getopt.c
+ case 0:
+ // check-hash-based-pycs
+ if (wcscmp(_PyOS_optarg, L"always") == 0
+ || wcscmp(_PyOS_optarg, L"never") == 0
+ || wcscmp(_PyOS_optarg, L"default") == 0)
+ {
+ status = PyConfig_SetString(config, &config->check_hash_pycs_mode,
+ _PyOS_optarg);
+ if (_PyStatus_EXCEPTION(status)) {
+ return status;
+ }
+ } else {
+ fprintf(stderr, "--check-hash-based-pycs must be one of "
+ "'default', 'always', or 'never'\n");
+ config_usage(1, program);
+ return _PyStatus_EXIT(2);
+ }
+ break;
+
+ case 1:
+ // help-all
+ config_complete_usage(program);
+ return _PyStatus_EXIT(0);
+
+ case 2:
+ // help-env
+ config_envvars_usage();
+ return _PyStatus_EXIT(0);
+
+ case 3:
+ // help-xoptions
+ config_xoptions_usage();
+ return _PyStatus_EXIT(0);
+
+ case 'b':
+ config->bytes_warning++;
+ break;
+
+ case 'd':
+ config->parser_debug++;
+ break;
+
+ case 'i':
+ config->inspect++;
+ config->interactive++;
+ break;
+
+ case 'E':
+ case 'I':
+ case 'X':
+ /* option handled by _PyPreCmdline_Read() */
+ break;
+
+ /* case 'J': reserved for Jython */
+
+ case 'O':
+ config->optimization_level++;
+ break;
+
+ case 'P':
+ config->safe_path = 1;
+ break;
+
+ case 'B':
+ config->write_bytecode = 0;
+ break;
+
+ case 's':
+ config->user_site_directory = 0;
+ break;
+
+ case 'S':
+ config->site_import = 0;
+ break;
+
+ case 't':
+ /* ignored for backwards compatibility */
+ break;
+
+ case 'u':
+ config->buffered_stdio = 0;
+ break;
+
+ case 'v':
+ config->verbose++;
+ break;
+
+ case 'x':
+ config->skip_source_first_line = 1;
+ break;
+
+ case 'h':
+ case '?':
+ config_usage(0, program);
+ return _PyStatus_EXIT(0);
+
+ case 'V':
+ print_version++;
+ break;
+
+ case 'W':
+ status = PyWideStringList_Append(warnoptions, _PyOS_optarg);
+ if (_PyStatus_EXCEPTION(status)) {
+ return status;
+ }
+ break;
+
+ case 'q':
+ config->quiet++;
+ break;
+
+ case 'R':
+ config->use_hash_seed = 0;
+ break;
+
+ /* This space reserved for other options */
+
+ default:
+ /* unknown argument: parsing failed */
+ config_usage(1, program);
+ return _PyStatus_EXIT(2);
+ }
+ } while (1);
+
+ if (print_version) {
+ printf("Python %s\n",
+ (print_version >= 2) ? Py_GetVersion() : PY_VERSION);
+ return _PyStatus_EXIT(0);
+ }
+
+ if (config->run_command == NULL && config->run_module == NULL
+ && _PyOS_optind < argv->length
+ && wcscmp(argv->items[_PyOS_optind], L"-") != 0
+ && config->run_filename == NULL)
+ {
+ config->run_filename = _PyMem_RawWcsdup(argv->items[_PyOS_optind]);
+ if (config->run_filename == NULL) {
+ return _PyStatus_NO_MEMORY();
+ }
+ }
+
+ if (config->run_command != NULL || config->run_module != NULL) {
+ /* Backup _PyOS_optind */
+ _PyOS_optind--;
+ }
+
+ *opt_index = _PyOS_optind;
+
+ return _PyStatus_OK();
+}
+
+
+#ifdef MS_WINDOWS
+# define WCSTOK wcstok_s
+#else
+# define WCSTOK wcstok
+#endif
+
+/* Get warning options from PYTHONWARNINGS environment variable. */
+static PyStatus
+config_init_env_warnoptions(PyConfig *config, PyWideStringList *warnoptions)
+{
+ PyStatus status;
+ /* CONFIG_GET_ENV_DUP requires dest to be initialized to NULL */
+ wchar_t *env = NULL;
+ status = CONFIG_GET_ENV_DUP(config, &env,
+ L"PYTHONWARNINGS", "PYTHONWARNINGS");
+ if (_PyStatus_EXCEPTION(status)) {
+ return status;
+ }
+
+ /* env var is not set or is empty */
+ if (env == NULL) {
+ return _PyStatus_OK();
+ }
+
+
+ wchar_t *warning, *context = NULL;
+ for (warning = WCSTOK(env, L",", &context);
+ warning != NULL;
+ warning = WCSTOK(NULL, L",", &context))
+ {
+ status = PyWideStringList_Append(warnoptions, warning);
+ if (_PyStatus_EXCEPTION(status)) {
+ PyMem_RawFree(env);
+ return status;
+ }
+ }
+ PyMem_RawFree(env);
+ return _PyStatus_OK();
+}
+
+
+static PyStatus
+warnoptions_append(PyConfig *config, PyWideStringList *options,
+ const wchar_t *option)
+{
+ /* config_init_warnoptions() add existing config warnoptions at the end:
+ ensure that the new option is not already present in this list to
+ prevent change the options order when config_init_warnoptions() is
+ called twice. */
+ if (_PyWideStringList_Find(&config->warnoptions, option)) {
+ /* Already present: do nothing */
+ return _PyStatus_OK();
+ }
+ if (_PyWideStringList_Find(options, option)) {
+ /* Already present: do nothing */
+ return _PyStatus_OK();
+ }
+ return PyWideStringList_Append(options, option);
+}
+
+
+static PyStatus
+warnoptions_extend(PyConfig *config, PyWideStringList *options,
+ const PyWideStringList *options2)
+{
+ const Py_ssize_t len = options2->length;
+ wchar_t *const *items = options2->items;
+
+ for (Py_ssize_t i = 0; i < len; i++) {
+ PyStatus status = warnoptions_append(config, options, items[i]);
+ if (_PyStatus_EXCEPTION(status)) {
+ return status;
+ }
+ }
+ return _PyStatus_OK();
+}
+
+
+static PyStatus
+config_init_warnoptions(PyConfig *config,
+ const PyWideStringList *cmdline_warnoptions,
+ const PyWideStringList *env_warnoptions,
+ const PyWideStringList *sys_warnoptions)
+{
+ PyStatus status;
+ PyWideStringList options = _PyWideStringList_INIT;
+
+ /* Priority of warnings options, lowest to highest:
+ *
+ * - any implicit filters added by _warnings.c/warnings.py
+ * - PyConfig.dev_mode: "default" filter
+ * - PYTHONWARNINGS environment variable
+ * - '-W' command line options
+ * - PyConfig.bytes_warning ('-b' and '-bb' command line options):
+ * "default::BytesWarning" or "error::BytesWarning" filter
+ * - early PySys_AddWarnOption() calls
+ * - PyConfig.warnoptions
+ *
+ * PyConfig.warnoptions is copied to sys.warnoptions. Since the warnings
+ * module works on the basis of "the most recently added filter will be
+ * checked first", we add the lowest precedence entries first so that later
+ * entries override them.
+ */
+
+ if (config->dev_mode) {
+ status = warnoptions_append(config, &options, L"default");
+ if (_PyStatus_EXCEPTION(status)) {
+ goto error;
+ }
+ }
+
+ status = warnoptions_extend(config, &options, env_warnoptions);
+ if (_PyStatus_EXCEPTION(status)) {
+ goto error;
+ }
+
+ status = warnoptions_extend(config, &options, cmdline_warnoptions);
+ if (_PyStatus_EXCEPTION(status)) {
+ goto error;
+ }
+
+ /* If the bytes_warning_flag isn't set, bytesobject.c and bytearrayobject.c
+ * don't even try to emit a warning, so we skip setting the filter in that
+ * case.
+ */
+ if (config->bytes_warning) {
+ const wchar_t *filter;
+ if (config->bytes_warning> 1) {
+ filter = L"error::BytesWarning";
+ }
+ else {
+ filter = L"default::BytesWarning";
+ }
+ status = warnoptions_append(config, &options, filter);
+ if (_PyStatus_EXCEPTION(status)) {
+ goto error;
+ }
+ }
+
+ status = warnoptions_extend(config, &options, sys_warnoptions);
+ if (_PyStatus_EXCEPTION(status)) {
+ goto error;
+ }
+
+ /* Always add all PyConfig.warnoptions options */
+ status = _PyWideStringList_Extend(&options, &config->warnoptions);
+ if (_PyStatus_EXCEPTION(status)) {
+ goto error;
+ }
+
+ _PyWideStringList_Clear(&config->warnoptions);
+ config->warnoptions = options;
+ return _PyStatus_OK();
+
+error:
+ _PyWideStringList_Clear(&options);
+ return status;
+}
+
+
+static PyStatus
+config_update_argv(PyConfig *config, Py_ssize_t opt_index)
+{
+ const PyWideStringList *cmdline_argv = &config->argv;
+ PyWideStringList config_argv = _PyWideStringList_INIT;
+
+ /* Copy argv to be able to modify it (to force -c/-m) */
+ if (cmdline_argv->length <= opt_index) {
+ /* Ensure at least one (empty) argument is seen */
+ PyStatus status = PyWideStringList_Append(&config_argv, L"");
+ if (_PyStatus_EXCEPTION(status)) {
+ return status;
+ }
+ }
+ else {
+ PyWideStringList slice;
+ slice.length = cmdline_argv->length - opt_index;
+ slice.items = &cmdline_argv->items[opt_index];
+ if (_PyWideStringList_Copy(&config_argv, &slice) < 0) {
+ return _PyStatus_NO_MEMORY();
+ }
+ }
+ assert(config_argv.length >= 1);
+
+ wchar_t *arg0 = NULL;
+ if (config->run_command != NULL) {
+ /* Force sys.argv[0] = '-c' */
+ arg0 = L"-c";
+ }
+ else if (config->run_module != NULL) {
+ /* Force sys.argv[0] = '-m'*/
+ arg0 = L"-m";
+ }
+
+ if (arg0 != NULL) {
+ arg0 = _PyMem_RawWcsdup(arg0);
+ if (arg0 == NULL) {
+ _PyWideStringList_Clear(&config_argv);
+ return _PyStatus_NO_MEMORY();
+ }
+
+ PyMem_RawFree(config_argv.items[0]);
+ config_argv.items[0] = arg0;
+ }
+
+ _PyWideStringList_Clear(&config->argv);
+ config->argv = config_argv;
+ return _PyStatus_OK();
+}
+
+
+static PyStatus
+core_read_precmdline(PyConfig *config, _PyPreCmdline *precmdline)
+{
+ PyStatus status;
+
+ if (config->parse_argv == 1) {
+ if (_PyWideStringList_Copy(&precmdline->argv, &config->argv) < 0) {
+ return _PyStatus_NO_MEMORY();
+ }
+ }
+
+ PyPreConfig preconfig;
+
+ status = _PyPreConfig_InitFromPreConfig(&preconfig, &_PyRuntime.preconfig);
+ if (_PyStatus_EXCEPTION(status)) {
+ return status;
+ }
+
+ _PyPreConfig_GetConfig(&preconfig, config);
+
+ status = _PyPreCmdline_Read(precmdline, &preconfig);
+ if (_PyStatus_EXCEPTION(status)) {
+ return status;
+ }
+
+ status = _PyPreCmdline_SetConfig(precmdline, config);
+ if (_PyStatus_EXCEPTION(status)) {
+ return status;
+ }
+ return _PyStatus_OK();
+}
+
+
+/* Get run_filename absolute path */
+static PyStatus
+config_run_filename_abspath(PyConfig *config)
+{
+ if (!config->run_filename) {
+ return _PyStatus_OK();
+ }
+
+#ifndef MS_WINDOWS
+ if (_Py_isabs(config->run_filename)) {
+ /* path is already absolute */
+ return _PyStatus_OK();
+ }
+#endif
+
+ wchar_t *abs_filename;
+ if (_Py_abspath(config->run_filename, &abs_filename) < 0) {
+ /* failed to get the absolute path of the command line filename:
+ ignore the error, keep the relative path */
+ return _PyStatus_OK();
+ }
+ if (abs_filename == NULL) {
+ return _PyStatus_NO_MEMORY();
+ }
+
+ PyMem_RawFree(config->run_filename);
+ config->run_filename = abs_filename;
+ return _PyStatus_OK();
+}
+
+
+static PyStatus
+config_read_cmdline(PyConfig *config)
+{
+ PyStatus status;
+ PyWideStringList cmdline_warnoptions = _PyWideStringList_INIT;
+ PyWideStringList env_warnoptions = _PyWideStringList_INIT;
+ PyWideStringList sys_warnoptions = _PyWideStringList_INIT;
+
+ if (config->parse_argv < 0) {
+ config->parse_argv = 1;
+ }
+
+ if (config->parse_argv == 1) {
+ Py_ssize_t opt_index;
+ status = config_parse_cmdline(config, &cmdline_warnoptions, &opt_index);
+ if (_PyStatus_EXCEPTION(status)) {
+ goto done;
+ }
+
+ status = config_run_filename_abspath(config);
+ if (_PyStatus_EXCEPTION(status)) {
+ goto done;
+ }
+
+ status = config_update_argv(config, opt_index);
+ if (_PyStatus_EXCEPTION(status)) {
+ goto done;
+ }
+ }
+ else {
+ status = config_run_filename_abspath(config);
+ if (_PyStatus_EXCEPTION(status)) {
+ goto done;
+ }
+ }
+
+ if (config->use_environment) {
+ status = config_init_env_warnoptions(config, &env_warnoptions);
+ if (_PyStatus_EXCEPTION(status)) {
+ goto done;
+ }
+ }
+
+ /* Handle early PySys_AddWarnOption() calls */
+ status = _PySys_ReadPreinitWarnOptions(&sys_warnoptions);
+ if (_PyStatus_EXCEPTION(status)) {
+ goto done;
+ }
+
+ status = config_init_warnoptions(config,
+ &cmdline_warnoptions,
+ &env_warnoptions,
+ &sys_warnoptions);
+ if (_PyStatus_EXCEPTION(status)) {
+ goto done;
+ }
+
+ status = _PyStatus_OK();
+
+done:
+ _PyWideStringList_Clear(&cmdline_warnoptions);
+ _PyWideStringList_Clear(&env_warnoptions);
+ _PyWideStringList_Clear(&sys_warnoptions);
+ return status;
+}
+
+
+PyStatus
+_PyConfig_SetPyArgv(PyConfig *config, const _PyArgv *args)
+{
+ PyStatus status = _Py_PreInitializeFromConfig(config, args);
+ if (_PyStatus_EXCEPTION(status)) {
+ return status;
+ }
+
+ return _PyArgv_AsWstrList(args, &config->argv);
+}
+
+
+/* Set config.argv: decode argv using Py_DecodeLocale(). Pre-initialize Python
+ if needed to ensure that encodings are properly configured. */
+PyStatus
+PyConfig_SetBytesArgv(PyConfig *config, Py_ssize_t argc, char * const *argv)
+{
+ _PyArgv args = {
+ .argc = argc,
+ .use_bytes_argv = 1,
+ .bytes_argv = argv,
+ .wchar_argv = NULL};
+ return _PyConfig_SetPyArgv(config, &args);
+}
+
+
+PyStatus
+PyConfig_SetArgv(PyConfig *config, Py_ssize_t argc, wchar_t * const *argv)
+{
+ _PyArgv args = {
+ .argc = argc,
+ .use_bytes_argv = 0,
+ .bytes_argv = NULL,
+ .wchar_argv = argv};
+ return _PyConfig_SetPyArgv(config, &args);
+}
+
+
+PyStatus
+PyConfig_SetWideStringList(PyConfig *config, PyWideStringList *list,
+ Py_ssize_t length, wchar_t **items)
+{
+ PyStatus status = _Py_PreInitializeFromConfig(config, NULL);
+ if (_PyStatus_EXCEPTION(status)) {
+ return status;
+ }
+
+ PyWideStringList list2 = {.length = length, .items = items};
+ if (_PyWideStringList_Copy(list, &list2) < 0) {
+ return _PyStatus_NO_MEMORY();
+ }
+ return _PyStatus_OK();
+}
+
+
+/* Read the configuration into PyConfig from:
+
+ * Command line arguments
+ * Environment variables
+ * Py_xxx global configuration variables
+
+ The only side effects are to modify config and to call _Py_SetArgcArgv(). */
+PyStatus
+_PyConfig_Read(PyConfig *config, int compute_path_config)
+{
+ PyStatus status;
+
+ status = _Py_PreInitializeFromConfig(config, NULL);
+ if (_PyStatus_EXCEPTION(status)) {
+ return status;
+ }
+
+ config_get_global_vars(config);
+
+ if (config->orig_argv.length == 0
+ && !(config->argv.length == 1
+ && wcscmp(config->argv.items[0], L"") == 0))
+ {
+ if (_PyWideStringList_Copy(&config->orig_argv, &config->argv) < 0) {
+ return _PyStatus_NO_MEMORY();
+ }
+ }
+
+ _PyPreCmdline precmdline = _PyPreCmdline_INIT;
+ status = core_read_precmdline(config, &precmdline);
+ if (_PyStatus_EXCEPTION(status)) {
+ goto done;
+ }
+
+ assert(config->isolated >= 0);
+ if (config->isolated) {
+ config->safe_path = 1;
+ config->use_environment = 0;
+ config->user_site_directory = 0;
+ }
+
+ status = config_read_cmdline(config);
+ if (_PyStatus_EXCEPTION(status)) {
+ goto done;
+ }
+
+ /* Handle early PySys_AddXOption() calls */
+ status = _PySys_ReadPreinitXOptions(config);
+ if (_PyStatus_EXCEPTION(status)) {
+ goto done;
+ }
+
+ status = config_read(config, compute_path_config);
+ if (_PyStatus_EXCEPTION(status)) {
+ goto done;
+ }
+
+ assert(config_check_consistency(config));
+
+ status = _PyStatus_OK();
+
+done:
+ _PyPreCmdline_Clear(&precmdline);
+ return status;
+}
+
+
+PyStatus
+PyConfig_Read(PyConfig *config)
+{
+ return _PyConfig_Read(config, 0);
+}
+
+
+PyObject*
+_Py_GetConfigsAsDict(void)
+{
+ PyObject *result = NULL;
+ PyObject *dict = NULL;
+
+ result = PyDict_New();
+ if (result == NULL) {
+ goto error;
+ }
+
+ /* global result */
+ dict = _Py_GetGlobalVariablesAsDict();
+ if (dict == NULL) {
+ goto error;
+ }
+ if (PyDict_SetItemString(result, "global_config", dict) < 0) {
+ goto error;
+ }
+ Py_CLEAR(dict);
+
+ /* pre config */
+ PyInterpreterState *interp = _PyInterpreterState_GET();
+ const PyPreConfig *pre_config = &interp->runtime->preconfig;
+ dict = _PyPreConfig_AsDict(pre_config);
+ if (dict == NULL) {
+ goto error;
+ }
+ if (PyDict_SetItemString(result, "pre_config", dict) < 0) {
+ goto error;
+ }
+ Py_CLEAR(dict);
+
+ /* core config */
+ const PyConfig *config = _PyInterpreterState_GetConfig(interp);
+ dict = _PyConfig_AsDict(config);
+ if (dict == NULL) {
+ goto error;
+ }
+ if (PyDict_SetItemString(result, "config", dict) < 0) {
+ goto error;
+ }
+ Py_CLEAR(dict);
+
+ return result;
+
+error:
+ Py_XDECREF(result);
+ Py_XDECREF(dict);
+ return NULL;
+}
+
+
+static void
+init_dump_ascii_wstr(const wchar_t *str)
+{
+ if (str == NULL) {
+ PySys_WriteStderr("(not set)");
+ return;
+ }
+
+ PySys_WriteStderr("'");
+ for (; *str != L'\0'; str++) {
+ unsigned int ch = (unsigned int)*str;
+ if (ch == L'\'') {
+ PySys_WriteStderr("\\'");
+ } else if (0x20 <= ch && ch < 0x7f) {
+ PySys_WriteStderr("%c", ch);
+ }
+ else if (ch <= 0xff) {
+ PySys_WriteStderr("\\x%02x", ch);
+ }
+#if SIZEOF_WCHAR_T > 2
+ else if (ch > 0xffff) {
+ PySys_WriteStderr("\\U%08x", ch);
+ }
+#endif
+ else {
+ PySys_WriteStderr("\\u%04x", ch);
+ }
+ }
+ PySys_WriteStderr("'");
+}
+
+
+/* Dump the Python path configuration into sys.stderr */
+void
+_Py_DumpPathConfig(PyThreadState *tstate)
+{
+ PyObject *exc = _PyErr_GetRaisedException(tstate);
+
+ PySys_WriteStderr("Python path configuration:\n");
+
+#define DUMP_CONFIG(NAME, FIELD) \
+ do { \
+ PySys_WriteStderr(" " NAME " = "); \
+ init_dump_ascii_wstr(config->FIELD); \
+ PySys_WriteStderr("\n"); \
+ } while (0)
+
+ const PyConfig *config = _PyInterpreterState_GetConfig(tstate->interp);
+ DUMP_CONFIG("PYTHONHOME", home);
+ DUMP_CONFIG("PYTHONPATH", pythonpath_env);
+ DUMP_CONFIG("program name", program_name);
+ PySys_WriteStderr(" isolated = %i\n", config->isolated);
+ PySys_WriteStderr(" environment = %i\n", config->use_environment);
+ PySys_WriteStderr(" user site = %i\n", config->user_site_directory);
+ PySys_WriteStderr(" safe_path = %i\n", config->safe_path);
+ PySys_WriteStderr(" import site = %i\n", config->site_import);
+ PySys_WriteStderr(" is in build tree = %i\n", config->_is_python_build);
+ DUMP_CONFIG("stdlib dir", stdlib_dir);
+#undef DUMP_CONFIG
+
+#define DUMP_SYS(NAME) \
+ do { \
+ obj = PySys_GetObject(#NAME); \
+ PySys_FormatStderr(" sys.%s = ", #NAME); \
+ if (obj != NULL) { \
+ PySys_FormatStderr("%A", obj); \
+ } \
+ else { \
+ PySys_WriteStderr("(not set)"); \
+ } \
+ PySys_FormatStderr("\n"); \
+ } while (0)
+
+ PyObject *obj;
+ DUMP_SYS(_base_executable);
+ DUMP_SYS(base_prefix);
+ DUMP_SYS(base_exec_prefix);
+ DUMP_SYS(platlibdir);
+ DUMP_SYS(executable);
+ DUMP_SYS(prefix);
+ DUMP_SYS(exec_prefix);
+#undef DUMP_SYS
+
+ PyObject *sys_path = PySys_GetObject("path"); /* borrowed reference */
+ if (sys_path != NULL && PyList_Check(sys_path)) {
+ PySys_WriteStderr(" sys.path = [\n");
+ Py_ssize_t len = PyList_GET_SIZE(sys_path);
+ for (Py_ssize_t i=0; i < len; i++) {
+ PyObject *path = PyList_GET_ITEM(sys_path, i);
+ PySys_FormatStderr(" %A,\n", path);
+ }
+ PySys_WriteStderr(" ]\n");
+ }
+
+ _PyErr_SetRaisedException(tstate, exc);
+}
diff --git a/contrib/tools/python3/Python/instrumentation.c b/contrib/tools/python3/Python/instrumentation.c
new file mode 100644
index 00000000000..a6ff7a8a985
--- /dev/null
+++ b/contrib/tools/python3/Python/instrumentation.c
@@ -0,0 +1,2178 @@
+
+
+
+
+#include "Python.h"
+#include "pycore_call.h"
+#include "pycore_frame.h"
+#include "pycore_interp.h"
+#include "pycore_long.h"
+#include "pycore_namespace.h"
+#include "pycore_object.h"
+#include "pycore_opcode.h"
+#include "pycore_pyerrors.h"
+#include "pycore_pystate.h"
+
+/* Uncomment this to dump debugging output when assertions fail */
+// #define INSTRUMENT_DEBUG 1
+
+PyObject _PyInstrumentation_DISABLE =
+{
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBaseObject_Type
+};
+
+PyObject _PyInstrumentation_MISSING =
+{
+ .ob_refcnt = _Py_IMMORTAL_REFCNT,
+ .ob_type = &PyBaseObject_Type
+};
+
+static const int8_t EVENT_FOR_OPCODE[256] = {
+ [RETURN_CONST] = PY_MONITORING_EVENT_PY_RETURN,
+ [INSTRUMENTED_RETURN_CONST] = PY_MONITORING_EVENT_PY_RETURN,
+ [RETURN_VALUE] = PY_MONITORING_EVENT_PY_RETURN,
+ [INSTRUMENTED_RETURN_VALUE] = PY_MONITORING_EVENT_PY_RETURN,
+ [CALL] = PY_MONITORING_EVENT_CALL,
+ [INSTRUMENTED_CALL] = PY_MONITORING_EVENT_CALL,
+ [CALL_FUNCTION_EX] = PY_MONITORING_EVENT_CALL,
+ [INSTRUMENTED_CALL_FUNCTION_EX] = PY_MONITORING_EVENT_CALL,
+ [LOAD_SUPER_ATTR] = PY_MONITORING_EVENT_CALL,
+ [INSTRUMENTED_LOAD_SUPER_ATTR] = PY_MONITORING_EVENT_CALL,
+ [RESUME] = -1,
+ [YIELD_VALUE] = PY_MONITORING_EVENT_PY_YIELD,
+ [INSTRUMENTED_YIELD_VALUE] = PY_MONITORING_EVENT_PY_YIELD,
+ [JUMP_FORWARD] = PY_MONITORING_EVENT_JUMP,
+ [JUMP_BACKWARD] = PY_MONITORING_EVENT_JUMP,
+ [POP_JUMP_IF_FALSE] = PY_MONITORING_EVENT_BRANCH,
+ [POP_JUMP_IF_TRUE] = PY_MONITORING_EVENT_BRANCH,
+ [POP_JUMP_IF_NONE] = PY_MONITORING_EVENT_BRANCH,
+ [POP_JUMP_IF_NOT_NONE] = PY_MONITORING_EVENT_BRANCH,
+ [INSTRUMENTED_JUMP_FORWARD] = PY_MONITORING_EVENT_JUMP,
+ [INSTRUMENTED_JUMP_BACKWARD] = PY_MONITORING_EVENT_JUMP,
+ [INSTRUMENTED_POP_JUMP_IF_FALSE] = PY_MONITORING_EVENT_BRANCH,
+ [INSTRUMENTED_POP_JUMP_IF_TRUE] = PY_MONITORING_EVENT_BRANCH,
+ [INSTRUMENTED_POP_JUMP_IF_NONE] = PY_MONITORING_EVENT_BRANCH,
+ [INSTRUMENTED_POP_JUMP_IF_NOT_NONE] = PY_MONITORING_EVENT_BRANCH,
+ [FOR_ITER] = PY_MONITORING_EVENT_BRANCH,
+ [INSTRUMENTED_FOR_ITER] = PY_MONITORING_EVENT_BRANCH,
+ [END_FOR] = PY_MONITORING_EVENT_STOP_ITERATION,
+ [INSTRUMENTED_END_FOR] = PY_MONITORING_EVENT_STOP_ITERATION,
+ [END_SEND] = PY_MONITORING_EVENT_STOP_ITERATION,
+ [INSTRUMENTED_END_SEND] = PY_MONITORING_EVENT_STOP_ITERATION,
+};
+
+static const uint8_t DE_INSTRUMENT[256] = {
+ [INSTRUMENTED_RESUME] = RESUME,
+ [INSTRUMENTED_RETURN_VALUE] = RETURN_VALUE,
+ [INSTRUMENTED_RETURN_CONST] = RETURN_CONST,
+ [INSTRUMENTED_CALL] = CALL,
+ [INSTRUMENTED_CALL_FUNCTION_EX] = CALL_FUNCTION_EX,
+ [INSTRUMENTED_YIELD_VALUE] = YIELD_VALUE,
+ [INSTRUMENTED_JUMP_FORWARD] = JUMP_FORWARD,
+ [INSTRUMENTED_JUMP_BACKWARD] = JUMP_BACKWARD,
+ [INSTRUMENTED_POP_JUMP_IF_FALSE] = POP_JUMP_IF_FALSE,
+ [INSTRUMENTED_POP_JUMP_IF_TRUE] = POP_JUMP_IF_TRUE,
+ [INSTRUMENTED_POP_JUMP_IF_NONE] = POP_JUMP_IF_NONE,
+ [INSTRUMENTED_POP_JUMP_IF_NOT_NONE] = POP_JUMP_IF_NOT_NONE,
+ [INSTRUMENTED_FOR_ITER] = FOR_ITER,
+ [INSTRUMENTED_END_FOR] = END_FOR,
+ [INSTRUMENTED_END_SEND] = END_SEND,
+ [INSTRUMENTED_LOAD_SUPER_ATTR] = LOAD_SUPER_ATTR,
+};
+
+static const uint8_t INSTRUMENTED_OPCODES[256] = {
+ [RETURN_CONST] = INSTRUMENTED_RETURN_CONST,
+ [INSTRUMENTED_RETURN_CONST] = INSTRUMENTED_RETURN_CONST,
+ [RETURN_VALUE] = INSTRUMENTED_RETURN_VALUE,
+ [INSTRUMENTED_RETURN_VALUE] = INSTRUMENTED_RETURN_VALUE,
+ [CALL] = INSTRUMENTED_CALL,
+ [INSTRUMENTED_CALL] = INSTRUMENTED_CALL,
+ [CALL_FUNCTION_EX] = INSTRUMENTED_CALL_FUNCTION_EX,
+ [INSTRUMENTED_CALL_FUNCTION_EX] = INSTRUMENTED_CALL_FUNCTION_EX,
+ [YIELD_VALUE] = INSTRUMENTED_YIELD_VALUE,
+ [INSTRUMENTED_YIELD_VALUE] = INSTRUMENTED_YIELD_VALUE,
+ [RESUME] = INSTRUMENTED_RESUME,
+ [INSTRUMENTED_RESUME] = INSTRUMENTED_RESUME,
+ [JUMP_FORWARD] = INSTRUMENTED_JUMP_FORWARD,
+ [INSTRUMENTED_JUMP_FORWARD] = INSTRUMENTED_JUMP_FORWARD,
+ [JUMP_BACKWARD] = INSTRUMENTED_JUMP_BACKWARD,
+ [INSTRUMENTED_JUMP_BACKWARD] = INSTRUMENTED_JUMP_BACKWARD,
+ [POP_JUMP_IF_FALSE] = INSTRUMENTED_POP_JUMP_IF_FALSE,
+ [INSTRUMENTED_POP_JUMP_IF_FALSE] = INSTRUMENTED_POP_JUMP_IF_FALSE,
+ [POP_JUMP_IF_TRUE] = INSTRUMENTED_POP_JUMP_IF_TRUE,
+ [INSTRUMENTED_POP_JUMP_IF_TRUE] = INSTRUMENTED_POP_JUMP_IF_TRUE,
+ [POP_JUMP_IF_NONE] = INSTRUMENTED_POP_JUMP_IF_NONE,
+ [INSTRUMENTED_POP_JUMP_IF_NONE] = INSTRUMENTED_POP_JUMP_IF_NONE,
+ [POP_JUMP_IF_NOT_NONE] = INSTRUMENTED_POP_JUMP_IF_NOT_NONE,
+ [INSTRUMENTED_POP_JUMP_IF_NOT_NONE] = INSTRUMENTED_POP_JUMP_IF_NOT_NONE,
+ [END_FOR] = INSTRUMENTED_END_FOR,
+ [INSTRUMENTED_END_FOR] = INSTRUMENTED_END_FOR,
+ [END_SEND] = INSTRUMENTED_END_SEND,
+ [INSTRUMENTED_END_SEND] = INSTRUMENTED_END_SEND,
+ [FOR_ITER] = INSTRUMENTED_FOR_ITER,
+ [INSTRUMENTED_FOR_ITER] = INSTRUMENTED_FOR_ITER,
+ [LOAD_SUPER_ATTR] = INSTRUMENTED_LOAD_SUPER_ATTR,
+ [INSTRUMENTED_LOAD_SUPER_ATTR] = INSTRUMENTED_LOAD_SUPER_ATTR,
+
+ [INSTRUMENTED_LINE] = INSTRUMENTED_LINE,
+ [INSTRUMENTED_INSTRUCTION] = INSTRUMENTED_INSTRUCTION,
+};
+
+static inline bool
+opcode_has_event(int opcode)
+{
+ return (
+ opcode < INSTRUMENTED_LINE &&
+ INSTRUMENTED_OPCODES[opcode] > 0
+ );
+}
+
+static inline bool
+is_instrumented(int opcode)
+{
+ assert(opcode != 0);
+ assert(opcode != RESERVED);
+ return opcode >= MIN_INSTRUMENTED_OPCODE;
+}
+
+#ifndef NDEBUG
+static inline bool
+monitors_equals(_Py_LocalMonitors a, _Py_LocalMonitors b)
+{
+ for (int i = 0; i < _PY_MONITORING_LOCAL_EVENTS; i++) {
+ if (a.tools[i] != b.tools[i]) {
+ return false;
+ }
+ }
+ return true;
+}
+#endif
+
+static inline _Py_LocalMonitors
+monitors_sub(_Py_LocalMonitors a, _Py_LocalMonitors b)
+{
+ _Py_LocalMonitors res;
+ for (int i = 0; i < _PY_MONITORING_LOCAL_EVENTS; i++) {
+ res.tools[i] = a.tools[i] & ~b.tools[i];
+ }
+ return res;
+}
+
+#ifndef NDEBUG
+static inline _Py_LocalMonitors
+monitors_and(_Py_LocalMonitors a, _Py_LocalMonitors b)
+{
+ _Py_LocalMonitors res;
+ for (int i = 0; i < _PY_MONITORING_LOCAL_EVENTS; i++) {
+ res.tools[i] = a.tools[i] & b.tools[i];
+ }
+ return res;
+}
+#endif
+
+/* The union of the *local* events in a and b.
+ * Global events like RAISE are ignored.
+ * Used for instrumentation, as only local
+ * events get instrumented.
+ */
+static inline _Py_LocalMonitors
+local_union(_Py_GlobalMonitors a, _Py_LocalMonitors b)
+{
+ _Py_LocalMonitors res;
+ for (int i = 0; i < _PY_MONITORING_LOCAL_EVENTS; i++) {
+ res.tools[i] = a.tools[i] | b.tools[i];
+ }
+ return res;
+}
+
+static inline bool
+monitors_are_empty(_Py_LocalMonitors m)
+{
+ for (int i = 0; i < _PY_MONITORING_LOCAL_EVENTS; i++) {
+ if (m.tools[i]) {
+ return false;
+ }
+ }
+ return true;
+}
+
+static inline bool
+multiple_tools(_Py_LocalMonitors *m)
+{
+ for (int i = 0; i < _PY_MONITORING_LOCAL_EVENTS; i++) {
+ if (_Py_popcount32(m->tools[i]) > 1) {
+ return true;
+ }
+ }
+ return false;
+}
+
+static inline _PyMonitoringEventSet
+get_local_events(_Py_LocalMonitors *m, int tool_id)
+{
+ _PyMonitoringEventSet result = 0;
+ for (int e = 0; e < _PY_MONITORING_LOCAL_EVENTS; e++) {
+ if ((m->tools[e] >> tool_id) & 1) {
+ result |= (1 << e);
+ }
+ }
+ return result;
+}
+
+static inline _PyMonitoringEventSet
+get_events(_Py_GlobalMonitors *m, int tool_id)
+{
+ _PyMonitoringEventSet result = 0;
+ for (int e = 0; e < _PY_MONITORING_UNGROUPED_EVENTS; e++) {
+ if ((m->tools[e] >> tool_id) & 1) {
+ result |= (1 << e);
+ }
+ }
+ return result;
+}
+
+/* Line delta.
+ * 8 bit value.
+ * if line_delta == -128:
+ * line = None # represented as -1
+ * elif line_delta == -127:
+ * line = PyCode_Addr2Line(code, offset * sizeof(_Py_CODEUNIT));
+ * else:
+ * line = first_line + (offset >> OFFSET_SHIFT) + line_delta;
+ */
+
+#define NO_LINE -128
+#define COMPUTED_LINE -127
+
+#define OFFSET_SHIFT 4
+
+static int8_t
+compute_line_delta(PyCodeObject *code, int offset, int line)
+{
+ if (line < 0) {
+ return NO_LINE;
+ }
+ int delta = line - code->co_firstlineno - (offset >> OFFSET_SHIFT);
+ if (delta <= INT8_MAX && delta > COMPUTED_LINE) {
+ return delta;
+ }
+ return COMPUTED_LINE;
+}
+
+static int
+compute_line(PyCodeObject *code, int offset, int8_t line_delta)
+{
+ if (line_delta > COMPUTED_LINE) {
+ return code->co_firstlineno + (offset >> OFFSET_SHIFT) + line_delta;
+ }
+ if (line_delta == NO_LINE) {
+
+ return -1;
+ }
+ assert(line_delta == COMPUTED_LINE);
+ /* Look it up */
+ return PyCode_Addr2Line(code, offset * sizeof(_Py_CODEUNIT));
+}
+
+static int
+instruction_length(PyCodeObject *code, int offset)
+{
+ int opcode = _PyCode_CODE(code)[offset].op.code;
+ assert(opcode != 0);
+ assert(opcode != RESERVED);
+ if (opcode == INSTRUMENTED_LINE) {
+ opcode = code->_co_monitoring->lines[offset].original_opcode;
+ }
+ if (opcode == INSTRUMENTED_INSTRUCTION) {
+ opcode = code->_co_monitoring->per_instruction_opcodes[offset];
+ }
+ int deinstrumented = DE_INSTRUMENT[opcode];
+ if (deinstrumented) {
+ opcode = deinstrumented;
+ }
+ else {
+ opcode = _PyOpcode_Deopt[opcode];
+ }
+ assert(opcode != 0);
+ assert(!is_instrumented(opcode));
+ assert(opcode == _PyOpcode_Deopt[opcode]);
+ return 1 + _PyOpcode_Caches[opcode];
+}
+
+#ifdef INSTRUMENT_DEBUG
+
+static void
+dump_instrumentation_data_tools(PyCodeObject *code, uint8_t *tools, int i, FILE*out)
+{
+ if (tools == NULL) {
+ fprintf(out, "tools = NULL");
+ }
+ else {
+ fprintf(out, "tools = %d", tools[i]);
+ }
+}
+
+static void
+dump_instrumentation_data_lines(PyCodeObject *code, _PyCoLineInstrumentationData *lines, int i, FILE*out)
+{
+ if (lines == NULL) {
+ fprintf(out, ", lines = NULL");
+ }
+ else if (lines[i].original_opcode == 0) {
+ fprintf(out, ", lines = {original_opcode = No LINE (0), line_delta = %d)", lines[i].line_delta);
+ }
+ else {
+ fprintf(out, ", lines = {original_opcode = %s, line_delta = %d)", _PyOpcode_OpName[lines[i].original_opcode], lines[i].line_delta);
+ }
+}
+
+static void
+dump_instrumentation_data_line_tools(PyCodeObject *code, uint8_t *line_tools, int i, FILE*out)
+{
+ if (line_tools == NULL) {
+ fprintf(out, ", line_tools = NULL");
+ }
+ else {
+ fprintf(out, ", line_tools = %d", line_tools[i]);
+ }
+}
+
+static void
+dump_instrumentation_data_per_instruction(PyCodeObject *code, _PyCoMonitoringData *data, int i, FILE*out)
+{
+ if (data->per_instruction_opcodes == NULL) {
+ fprintf(out, ", per-inst opcode = NULL");
+ }
+ else {
+ fprintf(out, ", per-inst opcode = %s", _PyOpcode_OpName[data->per_instruction_opcodes[i]]);
+ }
+ if (data->per_instruction_tools == NULL) {
+ fprintf(out, ", per-inst tools = NULL");
+ }
+ else {
+ fprintf(out, ", per-inst tools = %d", data->per_instruction_tools[i]);
+ }
+}
+
+static void
+dump_global_monitors(const char *prefix, _Py_GlobalMonitors monitors, FILE*out)
+{
+ fprintf(out, "%s monitors:\n", prefix);
+ for (int event = 0; event < _PY_MONITORING_UNGROUPED_EVENTS; event++) {
+ fprintf(out, " Event %d: Tools %x\n", event, monitors.tools[event]);
+ }
+}
+
+static void
+dump_local_monitors(const char *prefix, _Py_LocalMonitors monitors, FILE*out)
+{
+ fprintf(out, "%s monitors:\n", prefix);
+ for (int event = 0; event < _PY_MONITORING_LOCAL_EVENTS; event++) {
+ fprintf(out, " Event %d: Tools %x\n", event, monitors.tools[event]);
+ }
+}
+
+/* No error checking -- Don't use this for anything but experimental debugging */
+static void
+dump_instrumentation_data(PyCodeObject *code, int star, FILE*out)
+{
+ _PyCoMonitoringData *data = code->_co_monitoring;
+ fprintf(out, "\n");
+ PyObject_Print(code->co_name, out, Py_PRINT_RAW);
+ fprintf(out, "\n");
+ if (data == NULL) {
+ fprintf(out, "NULL\n");
+ return;
+ }
+ dump_global_monitors("Global", _PyInterpreterState_GET()->monitors, out);
+ dump_local_monitors("Code", data->local_monitors, out);
+ dump_local_monitors("Active", data->active_monitors, out);
+ int code_len = (int)Py_SIZE(code);
+ bool starred = false;
+ for (int i = 0; i < code_len; i += instruction_length(code, i)) {
+ _Py_CODEUNIT *instr = &_PyCode_CODE(code)[i];
+ int opcode = instr->op.code;
+ if (i == star) {
+ fprintf(out, "** ");
+ starred = true;
+ }
+ fprintf(out, "Offset: %d, line: %d %s: ", i, PyCode_Addr2Line(code, i*2), _PyOpcode_OpName[opcode]);
+ dump_instrumentation_data_tools(code, data->tools, i, out);
+ dump_instrumentation_data_lines(code, data->lines, i, out);
+ dump_instrumentation_data_line_tools(code, data->line_tools, i, out);
+ dump_instrumentation_data_per_instruction(code, data, i, out);
+ fprintf(out, "\n");
+ ;
+ }
+ if (!starred && star >= 0) {
+ fprintf(out, "Error offset not at valid instruction offset: %d\n", star);
+ fprintf(out, " ");
+ dump_instrumentation_data_tools(code, data->tools, star, out);
+ dump_instrumentation_data_lines(code, data->lines, star, out);
+ dump_instrumentation_data_line_tools(code, data->line_tools, star, out);
+ dump_instrumentation_data_per_instruction(code, data, star, out);
+ fprintf(out, "\n");
+ }
+}
+
+#define CHECK(test) do { \
+ if (!(test)) { \
+ dump_instrumentation_data(code, i, stderr); \
+ } \
+ assert(test); \
+} while (0)
+
+static bool
+valid_opcode(int opcode)
+{
+ if (opcode > 0 &&
+ opcode != RESERVED &&
+ opcode < 255 &&
+ _PyOpcode_OpName[opcode] &&
+ _PyOpcode_OpName[opcode][0] != '<')
+ {
+ return true;
+ }
+ return false;
+}
+
+static void
+sanity_check_instrumentation(PyCodeObject *code)
+{
+ _PyCoMonitoringData *data = code->_co_monitoring;
+ if (data == NULL) {
+ return;
+ }
+ _Py_GlobalMonitors global_monitors = _PyInterpreterState_GET()->monitors;
+ _Py_LocalMonitors active_monitors;
+ if (code->_co_monitoring) {
+ _Py_LocalMonitors local_monitors = code->_co_monitoring->local_monitors;
+ active_monitors = local_union(global_monitors, local_monitors);
+ }
+ else {
+ _Py_LocalMonitors empty = (_Py_LocalMonitors) { 0 };
+ active_monitors = local_union(global_monitors, empty);
+ }
+ assert(monitors_equals(
+ code->_co_monitoring->active_monitors,
+ active_monitors));
+ int code_len = (int)Py_SIZE(code);
+ for (int i = 0; i < code_len;) {
+ _Py_CODEUNIT *instr = &_PyCode_CODE(code)[i];
+ int opcode = instr->op.code;
+ int base_opcode = _Py_GetBaseOpcode(code, i);
+ CHECK(valid_opcode(opcode));
+ CHECK(valid_opcode(base_opcode));
+ if (opcode == INSTRUMENTED_INSTRUCTION) {
+ opcode = data->per_instruction_opcodes[i];
+ if (!is_instrumented(opcode)) {
+ CHECK(_PyOpcode_Deopt[opcode] == opcode);
+ }
+ if (data->per_instruction_tools) {
+ uint8_t tools = active_monitors.tools[PY_MONITORING_EVENT_INSTRUCTION];
+ CHECK((tools & data->per_instruction_tools[i]) == data->per_instruction_tools[i]);
+ }
+ }
+ if (opcode == INSTRUMENTED_LINE) {
+ CHECK(data->lines);
+ CHECK(valid_opcode(data->lines[i].original_opcode));
+ opcode = data->lines[i].original_opcode;
+ CHECK(opcode != END_FOR);
+ CHECK(opcode != RESUME);
+ CHECK(opcode != RESUME_CHECK);
+ CHECK(opcode != INSTRUMENTED_RESUME);
+ if (!is_instrumented(opcode)) {
+ CHECK(_PyOpcode_Deopt[opcode] == opcode);
+ }
+ CHECK(opcode != INSTRUMENTED_LINE);
+ }
+ else if (data->lines) {
+ /* If original_opcode is INSTRUMENTED_INSTRUCTION
+ * *and* we are executing a INSTRUMENTED_LINE instruction
+ * that has de-instrumented itself, then we will execute
+ * an invalid INSTRUMENTED_INSTRUCTION */
+ CHECK(data->lines[i].original_opcode != INSTRUMENTED_INSTRUCTION);
+ }
+ if (opcode == INSTRUMENTED_INSTRUCTION) {
+ CHECK(data->per_instruction_opcodes[i] != 0);
+ opcode = data->per_instruction_opcodes[i];
+ }
+ if (is_instrumented(opcode)) {
+ CHECK(DE_INSTRUMENT[opcode] == base_opcode);
+ int event = EVENT_FOR_OPCODE[DE_INSTRUMENT[opcode]];
+ if (event < 0) {
+ /* RESUME fixup */
+ event = instr->op.arg ? 1: 0;
+ }
+ CHECK(active_monitors.tools[event] != 0);
+ }
+ if (data->lines && base_opcode != END_FOR) {
+ int line1 = compute_line(code, i, data->lines[i].line_delta);
+ int line2 = PyCode_Addr2Line(code, i*sizeof(_Py_CODEUNIT));
+ CHECK(line1 == line2);
+ }
+ CHECK(valid_opcode(opcode));
+ if (data->tools) {
+ uint8_t local_tools = data->tools[i];
+ if (opcode_has_event(base_opcode)) {
+ int event = EVENT_FOR_OPCODE[base_opcode];
+ if (event == -1) {
+ /* RESUME fixup */
+ event = _PyCode_CODE(code)[i].op.arg;
+ }
+ CHECK((active_monitors.tools[event] & local_tools) == local_tools);
+ }
+ else {
+ CHECK(local_tools == 0xff);
+ }
+ }
+ i += instruction_length(code, i);
+ assert(i <= code_len);
+ }
+}
+#else
+
+#define CHECK(test) assert(test)
+
+#endif
+
+/* Get the underlying opcode, stripping instrumentation */
+int _Py_GetBaseOpcode(PyCodeObject *code, int i)
+{
+ int opcode = _PyCode_CODE(code)[i].op.code;
+ if (opcode == INSTRUMENTED_LINE) {
+ opcode = code->_co_monitoring->lines[i].original_opcode;
+ }
+ if (opcode == INSTRUMENTED_INSTRUCTION) {
+ opcode = code->_co_monitoring->per_instruction_opcodes[i];
+ }
+ CHECK(opcode != INSTRUMENTED_INSTRUCTION);
+ CHECK(opcode != INSTRUMENTED_LINE);
+ int deinstrumented = DE_INSTRUMENT[opcode];
+ if (deinstrumented) {
+ return deinstrumented;
+ }
+ return _PyOpcode_Deopt[opcode];
+}
+
+static void
+de_instrument(PyCodeObject *code, int i, int event)
+{
+ assert(event != PY_MONITORING_EVENT_INSTRUCTION);
+ assert(event != PY_MONITORING_EVENT_LINE);
+
+ _Py_CODEUNIT *instr = &_PyCode_CODE(code)[i];
+ uint8_t *opcode_ptr = &instr->op.code;
+ int opcode = *opcode_ptr;
+ if (opcode == INSTRUMENTED_LINE) {
+ opcode_ptr = &code->_co_monitoring->lines[i].original_opcode;
+ opcode = *opcode_ptr;
+ }
+ if (opcode == INSTRUMENTED_INSTRUCTION) {
+ opcode_ptr = &code->_co_monitoring->per_instruction_opcodes[i];
+ opcode = *opcode_ptr;
+ }
+ int deinstrumented = DE_INSTRUMENT[opcode];
+ if (deinstrumented == 0) {
+ return;
+ }
+ CHECK(_PyOpcode_Deopt[deinstrumented] == deinstrumented);
+ *opcode_ptr = deinstrumented;
+ if (_PyOpcode_Caches[deinstrumented]) {
+ instr[1].cache = adaptive_counter_warmup();
+ }
+}
+
+static void
+de_instrument_line(PyCodeObject *code, int i)
+{
+ _Py_CODEUNIT *instr = &_PyCode_CODE(code)[i];
+ int opcode = instr->op.code;
+ if (opcode != INSTRUMENTED_LINE) {
+ return;
+ }
+ _PyCoLineInstrumentationData *lines = &code->_co_monitoring->lines[i];
+ int original_opcode = lines->original_opcode;
+ if (original_opcode == INSTRUMENTED_INSTRUCTION) {
+ lines->original_opcode = code->_co_monitoring->per_instruction_opcodes[i];
+ }
+ CHECK(original_opcode != 0);
+ CHECK(original_opcode == _PyOpcode_Deopt[original_opcode]);
+ instr->op.code = original_opcode;
+ if (_PyOpcode_Caches[original_opcode]) {
+ instr[1].cache = adaptive_counter_warmup();
+ }
+ assert(instr->op.code != INSTRUMENTED_LINE);
+}
+
+static void
+de_instrument_per_instruction(PyCodeObject *code, int i)
+{
+ _Py_CODEUNIT *instr = &_PyCode_CODE(code)[i];
+ uint8_t *opcode_ptr = &instr->op.code;
+ int opcode = *opcode_ptr;
+ if (opcode == INSTRUMENTED_LINE) {
+ opcode_ptr = &code->_co_monitoring->lines[i].original_opcode;
+ opcode = *opcode_ptr;
+ }
+ if (opcode != INSTRUMENTED_INSTRUCTION) {
+ return;
+ }
+ int original_opcode = code->_co_monitoring->per_instruction_opcodes[i];
+ CHECK(original_opcode != 0);
+ CHECK(original_opcode == _PyOpcode_Deopt[original_opcode]);
+ *opcode_ptr = original_opcode;
+ if (_PyOpcode_Caches[original_opcode]) {
+ instr[1].cache = adaptive_counter_warmup();
+ }
+ assert(*opcode_ptr != INSTRUMENTED_INSTRUCTION);
+ assert(instr->op.code != INSTRUMENTED_INSTRUCTION);
+ /* Keep things clean for sanity check */
+ code->_co_monitoring->per_instruction_opcodes[i] = 0;
+}
+
+
+static void
+instrument(PyCodeObject *code, int i)
+{
+ _Py_CODEUNIT *instr = &_PyCode_CODE(code)[i];
+ uint8_t *opcode_ptr = &instr->op.code;
+ int opcode =*opcode_ptr;
+ if (opcode == INSTRUMENTED_LINE) {
+ _PyCoLineInstrumentationData *lines = &code->_co_monitoring->lines[i];
+ opcode_ptr = &lines->original_opcode;
+ opcode = *opcode_ptr;
+ }
+ if (opcode == INSTRUMENTED_INSTRUCTION) {
+ opcode_ptr = &code->_co_monitoring->per_instruction_opcodes[i];
+ opcode = *opcode_ptr;
+ CHECK(opcode != INSTRUMENTED_INSTRUCTION && opcode != INSTRUMENTED_LINE);
+ CHECK(opcode == _PyOpcode_Deopt[opcode]);
+ }
+ CHECK(opcode != 0);
+ if (!is_instrumented(opcode)) {
+ int deopt = _PyOpcode_Deopt[opcode];
+ int instrumented = INSTRUMENTED_OPCODES[deopt];
+ assert(instrumented);
+ *opcode_ptr = instrumented;
+ if (_PyOpcode_Caches[deopt]) {
+ instr[1].cache = adaptive_counter_warmup();
+ }
+ }
+}
+
+static void
+instrument_line(PyCodeObject *code, int i)
+{
+ uint8_t *opcode_ptr = &_PyCode_CODE(code)[i].op.code;
+ int opcode = *opcode_ptr;
+ if (opcode == INSTRUMENTED_LINE) {
+ return;
+ }
+ _PyCoLineInstrumentationData *lines = &code->_co_monitoring->lines[i];
+ lines->original_opcode = _PyOpcode_Deopt[opcode];
+ CHECK(lines->original_opcode > 0);
+ *opcode_ptr = INSTRUMENTED_LINE;
+}
+
+static void
+instrument_per_instruction(PyCodeObject *code, int i)
+{
+ _Py_CODEUNIT *instr = &_PyCode_CODE(code)[i];
+ uint8_t *opcode_ptr = &instr->op.code;
+ int opcode = *opcode_ptr;
+ if (opcode == INSTRUMENTED_LINE) {
+ _PyCoLineInstrumentationData *lines = &code->_co_monitoring->lines[i];
+ opcode_ptr = &lines->original_opcode;
+ opcode = *opcode_ptr;
+ }
+ if (opcode == INSTRUMENTED_INSTRUCTION) {
+ assert(code->_co_monitoring->per_instruction_opcodes[i] > 0);
+ return;
+ }
+ CHECK(opcode != 0);
+ if (is_instrumented(opcode)) {
+ code->_co_monitoring->per_instruction_opcodes[i] = opcode;
+ }
+ else {
+ assert(opcode != 0);
+ assert(_PyOpcode_Deopt[opcode] != 0);
+ assert(_PyOpcode_Deopt[opcode] != RESUME);
+ code->_co_monitoring->per_instruction_opcodes[i] = _PyOpcode_Deopt[opcode];
+ }
+ assert(code->_co_monitoring->per_instruction_opcodes[i] > 0);
+ *opcode_ptr = INSTRUMENTED_INSTRUCTION;
+}
+
+static void
+remove_tools(PyCodeObject * code, int offset, int event, int tools)
+{
+ assert(event != PY_MONITORING_EVENT_LINE);
+ assert(event != PY_MONITORING_EVENT_INSTRUCTION);
+ assert(PY_MONITORING_IS_INSTRUMENTED_EVENT(event));
+ assert(opcode_has_event(_Py_GetBaseOpcode(code, offset)));
+ _PyCoMonitoringData *monitoring = code->_co_monitoring;
+ if (monitoring && monitoring->tools) {
+ monitoring->tools[offset] &= ~tools;
+ if (monitoring->tools[offset] == 0) {
+ de_instrument(code, offset, event);
+ }
+ }
+ else {
+ /* Single tool */
+ uint8_t single_tool = code->_co_monitoring->active_monitors.tools[event];
+ assert(_Py_popcount32(single_tool) <= 1);
+ if (((single_tool & tools) == single_tool)) {
+ de_instrument(code, offset, event);
+ }
+ }
+}
+
+#ifndef NDEBUG
+static bool
+tools_is_subset_for_event(PyCodeObject * code, int event, int tools)
+{
+ int global_tools = PyInterpreterState_Get()->monitors.tools[event];
+ int local_tools = code->_co_monitoring->local_monitors.tools[event];
+ return tools == ((global_tools | local_tools) & tools);
+}
+#endif
+
+static void
+remove_line_tools(PyCodeObject * code, int offset, int tools)
+{
+ assert(code->_co_monitoring);
+ if (code->_co_monitoring->line_tools)
+ {
+ uint8_t *toolsptr = &code->_co_monitoring->line_tools[offset];
+ *toolsptr &= ~tools;
+ if (*toolsptr == 0 ) {
+ de_instrument_line(code, offset);
+ }
+ }
+ else {
+ /* Single tool */
+ uint8_t single_tool = code->_co_monitoring->active_monitors.tools[PY_MONITORING_EVENT_LINE];
+ assert(_Py_popcount32(single_tool) <= 1);
+ if (((single_tool & tools) == single_tool)) {
+ de_instrument_line(code, offset);
+ }
+ }
+}
+
+static void
+add_tools(PyCodeObject * code, int offset, int event, int tools)
+{
+ assert(event != PY_MONITORING_EVENT_LINE);
+ assert(event != PY_MONITORING_EVENT_INSTRUCTION);
+ assert(PY_MONITORING_IS_INSTRUMENTED_EVENT(event));
+ assert(code->_co_monitoring);
+ if (code->_co_monitoring &&
+ code->_co_monitoring->tools
+ ) {
+ code->_co_monitoring->tools[offset] |= tools;
+ }
+ else {
+ /* Single tool */
+ assert(_Py_popcount32(tools) == 1);
+ assert(tools_is_subset_for_event(code, event, tools));
+ }
+ instrument(code, offset);
+}
+
+static void
+add_line_tools(PyCodeObject * code, int offset, int tools)
+{
+ assert(tools_is_subset_for_event(code, PY_MONITORING_EVENT_LINE, tools));
+ assert(code->_co_monitoring);
+ if (code->_co_monitoring->line_tools) {
+ code->_co_monitoring->line_tools[offset] |= tools;
+ }
+ else {
+ /* Single tool */
+ assert(_Py_popcount32(tools) == 1);
+ }
+ instrument_line(code, offset);
+}
+
+
+static void
+add_per_instruction_tools(PyCodeObject * code, int offset, int tools)
+{
+ assert(tools_is_subset_for_event(code, PY_MONITORING_EVENT_INSTRUCTION, tools));
+ assert(code->_co_monitoring);
+ if (code->_co_monitoring->per_instruction_tools) {
+ code->_co_monitoring->per_instruction_tools[offset] |= tools;
+ }
+ else {
+ /* Single tool */
+ assert(_Py_popcount32(tools) == 1);
+ }
+ instrument_per_instruction(code, offset);
+}
+
+
+static void
+remove_per_instruction_tools(PyCodeObject * code, int offset, int tools)
+{
+ assert(code->_co_monitoring);
+ if (code->_co_monitoring->per_instruction_tools) {
+ uint8_t *toolsptr = &code->_co_monitoring->per_instruction_tools[offset];
+ *toolsptr &= ~tools;
+ if (*toolsptr == 0) {
+ de_instrument_per_instruction(code, offset);
+ }
+ }
+ else {
+ /* Single tool */
+ uint8_t single_tool = code->_co_monitoring->active_monitors.tools[PY_MONITORING_EVENT_INSTRUCTION];
+ assert(_Py_popcount32(single_tool) <= 1);
+ if (((single_tool & tools) == single_tool)) {
+ de_instrument_per_instruction(code, offset);
+ }
+ }
+}
+
+
+/* Return 1 if DISABLE returned, -1 if error, 0 otherwise */
+static int
+call_one_instrument(
+ PyInterpreterState *interp, PyThreadState *tstate, PyObject **args,
+ Py_ssize_t nargsf, int8_t tool, int event)
+{
+ assert(0 <= tool && tool < 8);
+ assert(tstate->tracing == 0);
+ PyObject *instrument = interp->monitoring_callables[tool][event];
+ if (instrument == NULL) {
+ return 0;
+ }
+ int old_what = tstate->what_event;
+ tstate->what_event = event;
+ tstate->tracing++;
+ PyObject *res = _PyObject_VectorcallTstate(tstate, instrument, args, nargsf, NULL);
+ tstate->tracing--;
+ tstate->what_event = old_what;
+ if (res == NULL) {
+ return -1;
+ }
+ Py_DECREF(res);
+ return (res == &_PyInstrumentation_DISABLE);
+}
+
+static const int8_t MOST_SIGNIFICANT_BITS[16] = {
+ -1, 0, 1, 1,
+ 2, 2, 2, 2,
+ 3, 3, 3, 3,
+ 3, 3, 3, 3,
+};
+
+/* We could use _Py_bit_length here, but that is designed for larger (32/64)
+ * bit ints, and can perform relatively poorly on platforms without the
+ * necessary intrinsics. */
+static inline int most_significant_bit(uint8_t bits) {
+ assert(bits != 0);
+ if (bits > 15) {
+ return MOST_SIGNIFICANT_BITS[bits>>4]+4;
+ }
+ return MOST_SIGNIFICANT_BITS[bits];
+}
+
+static bool
+is_version_up_to_date(PyCodeObject *code, PyInterpreterState *interp)
+{
+ return interp->monitoring_version == code->_co_instrumentation_version;
+}
+
+#ifndef NDEBUG
+static bool
+instrumentation_cross_checks(PyInterpreterState *interp, PyCodeObject *code)
+{
+ _Py_LocalMonitors expected = local_union(
+ interp->monitors,
+ code->_co_monitoring->local_monitors);
+ return monitors_equals(code->_co_monitoring->active_monitors, expected);
+}
+#endif
+
+static inline uint8_t
+get_tools_for_instruction(PyCodeObject *code, PyInterpreterState *interp, int i, int event)
+{
+ uint8_t tools;
+ assert(event != PY_MONITORING_EVENT_LINE);
+ assert(event != PY_MONITORING_EVENT_INSTRUCTION);
+ if (event >= _PY_MONITORING_UNGROUPED_EVENTS) {
+ assert(event == PY_MONITORING_EVENT_C_RAISE ||
+ event == PY_MONITORING_EVENT_C_RETURN);
+ event = PY_MONITORING_EVENT_CALL;
+ }
+ if (PY_MONITORING_IS_INSTRUMENTED_EVENT(event)) {
+ CHECK(is_version_up_to_date(code, interp));
+ CHECK(instrumentation_cross_checks(interp, code));
+ if (code->_co_monitoring->tools) {
+ tools = code->_co_monitoring->tools[i];
+ }
+ else {
+ tools = code->_co_monitoring->active_monitors.tools[event];
+ }
+ }
+ else {
+ tools = interp->monitors.tools[event];
+ }
+ return tools;
+}
+
+static const char *const event_names [] = {
+ [PY_MONITORING_EVENT_PY_START] = "PY_START",
+ [PY_MONITORING_EVENT_PY_RESUME] = "PY_RESUME",
+ [PY_MONITORING_EVENT_PY_RETURN] = "PY_RETURN",
+ [PY_MONITORING_EVENT_PY_YIELD] = "PY_YIELD",
+ [PY_MONITORING_EVENT_CALL] = "CALL",
+ [PY_MONITORING_EVENT_LINE] = "LINE",
+ [PY_MONITORING_EVENT_INSTRUCTION] = "INSTRUCTION",
+ [PY_MONITORING_EVENT_JUMP] = "JUMP",
+ [PY_MONITORING_EVENT_BRANCH] = "BRANCH",
+ [PY_MONITORING_EVENT_C_RETURN] = "C_RETURN",
+ [PY_MONITORING_EVENT_PY_THROW] = "PY_THROW",
+ [PY_MONITORING_EVENT_RAISE] = "RAISE",
+ [PY_MONITORING_EVENT_RERAISE] = "RERAISE",
+ [PY_MONITORING_EVENT_EXCEPTION_HANDLED] = "EXCEPTION_HANDLED",
+ [PY_MONITORING_EVENT_C_RAISE] = "C_RAISE",
+ [PY_MONITORING_EVENT_PY_UNWIND] = "PY_UNWIND",
+ [PY_MONITORING_EVENT_STOP_ITERATION] = "STOP_ITERATION",
+};
+
+static int
+call_instrumentation_vector(
+ PyThreadState *tstate, int event,
+ _PyInterpreterFrame *frame, _Py_CODEUNIT *instr, Py_ssize_t nargs, PyObject *args[])
+{
+ if (tstate->tracing) {
+ return 0;
+ }
+ assert(!_PyErr_Occurred(tstate));
+ assert(args[0] == NULL);
+ PyCodeObject *code = frame->f_code;
+ assert(code->_co_instrumentation_version == tstate->interp->monitoring_version);
+ assert(is_version_up_to_date(code, tstate->interp));
+ assert(instrumentation_cross_checks(tstate->interp, code));
+ assert(args[1] == NULL);
+ args[1] = (PyObject *)code;
+ int offset = (int)(instr - _PyCode_CODE(code));
+ /* Offset visible to user should be the offset in bytes, as that is the
+ * convention for APIs involving code offsets. */
+ int bytes_offset = offset * (int)sizeof(_Py_CODEUNIT);
+ PyObject *offset_obj = PyLong_FromSsize_t(bytes_offset);
+ if (offset_obj == NULL) {
+ return -1;
+ }
+ assert(args[2] == NULL);
+ args[2] = offset_obj;
+ PyInterpreterState *interp = tstate->interp;
+ uint8_t tools = get_tools_for_instruction(code, interp, offset, event);
+ Py_ssize_t nargsf = nargs | PY_VECTORCALL_ARGUMENTS_OFFSET;
+ PyObject **callargs = &args[1];
+ int err = 0;
+ while (tools) {
+ int tool = most_significant_bit(tools);
+ assert(tool >= 0 && tool < 8);
+ assert(tools & (1 << tool));
+ tools ^= (1 << tool);
+ int res = call_one_instrument(interp, tstate, callargs, nargsf, tool, event);
+ if (res == 0) {
+ /* Nothing to do */
+ }
+ else if (res < 0) {
+ /* error */
+ err = -1;
+ break;
+ }
+ else {
+ /* DISABLE */
+ if (!PY_MONITORING_IS_INSTRUMENTED_EVENT(event)) {
+ PyErr_Format(PyExc_ValueError,
+ "Cannot disable %s events. Callback removed.",
+ event_names[event]);
+ /* Clear tool to prevent infinite loop */
+ Py_CLEAR(interp->monitoring_callables[tool][event]);
+ err = -1;
+ break;
+ }
+ else {
+ remove_tools(code, offset, event, 1 << tool);
+ }
+ }
+ }
+ Py_DECREF(offset_obj);
+ return err;
+}
+
+int
+_Py_call_instrumentation(
+ PyThreadState *tstate, int event,
+ _PyInterpreterFrame *frame, _Py_CODEUNIT *instr)
+{
+ PyObject *args[3] = { NULL, NULL, NULL };
+ return call_instrumentation_vector(tstate, event, frame, instr, 2, args);
+}
+
+int
+_Py_call_instrumentation_arg(
+ PyThreadState *tstate, int event,
+ _PyInterpreterFrame *frame, _Py_CODEUNIT *instr, PyObject *arg)
+{
+ PyObject *args[4] = { NULL, NULL, NULL, arg };
+ return call_instrumentation_vector(tstate, event, frame, instr, 3, args);
+}
+
+int
+_Py_call_instrumentation_2args(
+ PyThreadState *tstate, int event,
+ _PyInterpreterFrame *frame, _Py_CODEUNIT *instr, PyObject *arg0, PyObject *arg1)
+{
+ PyObject *args[5] = { NULL, NULL, NULL, arg0, arg1 };
+ return call_instrumentation_vector(tstate, event, frame, instr, 4, args);
+}
+
+_Py_CODEUNIT *
+_Py_call_instrumentation_jump(
+ PyThreadState *tstate, int event,
+ _PyInterpreterFrame *frame, _Py_CODEUNIT *instr, _Py_CODEUNIT *target)
+{
+ assert(event == PY_MONITORING_EVENT_JUMP ||
+ event == PY_MONITORING_EVENT_BRANCH);
+ assert(frame->prev_instr == instr);
+ /* Event should occur after the jump */
+ frame->prev_instr = target;
+ PyCodeObject *code = frame->f_code;
+ int to = (int)(target - _PyCode_CODE(code));
+ PyObject *to_obj = PyLong_FromLong(to * (int)sizeof(_Py_CODEUNIT));
+ if (to_obj == NULL) {
+ return NULL;
+ }
+ PyObject *args[4] = { NULL, NULL, NULL, to_obj };
+ int err = call_instrumentation_vector(tstate, event, frame, instr, 3, args);
+ Py_DECREF(to_obj);
+ if (err) {
+ return NULL;
+ }
+ if (frame->prev_instr != target) {
+ /* The callback has caused a jump (by setting the line number) */
+ return frame->prev_instr;
+ }
+ /* Reset prev_instr for INSTRUMENTED_LINE */
+ frame->prev_instr = instr;
+ return target;
+}
+
+static void
+call_instrumentation_vector_protected(
+ PyThreadState *tstate, int event,
+ _PyInterpreterFrame *frame, _Py_CODEUNIT *instr, Py_ssize_t nargs, PyObject *args[])
+{
+ assert(_PyErr_Occurred(tstate));
+ PyObject *exc = _PyErr_GetRaisedException(tstate);
+ int err = call_instrumentation_vector(tstate, event, frame, instr, nargs, args);
+ if (err) {
+ Py_XDECREF(exc);
+ }
+ else {
+ _PyErr_SetRaisedException(tstate, exc);
+ }
+ assert(_PyErr_Occurred(tstate));
+}
+
+void
+_Py_call_instrumentation_exc2(
+ PyThreadState *tstate, int event,
+ _PyInterpreterFrame *frame, _Py_CODEUNIT *instr, PyObject *arg0, PyObject *arg1)
+{
+ assert(_PyErr_Occurred(tstate));
+ PyObject *args[5] = { NULL, NULL, NULL, arg0, arg1 };
+ call_instrumentation_vector_protected(tstate, event, frame, instr, 4, args);
+}
+
+
+int
+_Py_Instrumentation_GetLine(PyCodeObject *code, int index)
+{
+ _PyCoMonitoringData *monitoring = code->_co_monitoring;
+ assert(monitoring != NULL);
+ assert(monitoring->lines != NULL);
+ assert(index >= code->_co_firsttraceable);
+ assert(index < Py_SIZE(code));
+ _PyCoLineInstrumentationData *line_data = &monitoring->lines[index];
+ int8_t line_delta = line_data->line_delta;
+ int line = compute_line(code, index, line_delta);
+ return line;
+}
+
+int
+_Py_call_instrumentation_line(PyThreadState *tstate, _PyInterpreterFrame* frame, _Py_CODEUNIT *instr, _Py_CODEUNIT *prev)
+{
+ frame->prev_instr = instr;
+ PyCodeObject *code = frame->f_code;
+ assert(is_version_up_to_date(code, tstate->interp));
+ assert(instrumentation_cross_checks(tstate->interp, code));
+ int i = (int)(instr - _PyCode_CODE(code));
+
+ _PyCoMonitoringData *monitoring = code->_co_monitoring;
+ _PyCoLineInstrumentationData *line_data = &monitoring->lines[i];
+ if (tstate->tracing) {
+ goto done;
+ }
+ PyInterpreterState *interp = tstate->interp;
+ int8_t line_delta = line_data->line_delta;
+ int line = compute_line(code, i, line_delta);
+ assert(line >= 0);
+ int prev_index = (int)(prev - _PyCode_CODE(code));
+ int prev_line = _Py_Instrumentation_GetLine(code, prev_index);
+ if (prev_line == line) {
+ int prev_opcode = _PyCode_CODE(code)[prev_index].op.code;
+ /* RESUME and INSTRUMENTED_RESUME are needed for the operation of
+ * instrumentation, so must never be hidden by an INSTRUMENTED_LINE.
+ */
+ if (prev_opcode != RESUME && prev_opcode != INSTRUMENTED_RESUME) {
+ goto done;
+ }
+ }
+ uint8_t tools = code->_co_monitoring->line_tools != NULL ?
+ code->_co_monitoring->line_tools[i] :
+ (interp->monitors.tools[PY_MONITORING_EVENT_LINE] |
+ code->_co_monitoring->local_monitors.tools[PY_MONITORING_EVENT_LINE]
+ );
+ PyObject *line_obj = PyLong_FromSsize_t(line);
+ if (line_obj == NULL) {
+ return -1;
+ }
+ PyObject *args[3] = { NULL, (PyObject *)code, line_obj };
+ while (tools) {
+ int tool = most_significant_bit(tools);
+ assert(tool >= 0 && tool < 8);
+ assert(tools & (1 << tool));
+ tools &= ~(1 << tool);
+ int res = call_one_instrument(interp, tstate, &args[1],
+ 2 | PY_VECTORCALL_ARGUMENTS_OFFSET,
+ tool, PY_MONITORING_EVENT_LINE);
+ if (res == 0) {
+ /* Nothing to do */
+ }
+ else if (res < 0) {
+ /* error */
+ Py_DECREF(line_obj);
+ return -1;
+ }
+ else {
+ /* DISABLE */
+ remove_line_tools(code, i, 1 << tool);
+ }
+ }
+ Py_DECREF(line_obj);
+ uint8_t original_opcode;
+done:
+ original_opcode = line_data->original_opcode;
+ assert(original_opcode != 0);
+ assert(original_opcode < INSTRUMENTED_LINE);
+ assert(_PyOpcode_Deopt[original_opcode] == original_opcode);
+ return original_opcode;
+}
+
+int
+_Py_call_instrumentation_instruction(PyThreadState *tstate, _PyInterpreterFrame* frame, _Py_CODEUNIT *instr)
+{
+ PyCodeObject *code = frame->f_code;
+ assert(is_version_up_to_date(code, tstate->interp));
+ assert(instrumentation_cross_checks(tstate->interp, code));
+ int offset = (int)(instr - _PyCode_CODE(code));
+ _PyCoMonitoringData *instrumentation_data = code->_co_monitoring;
+ assert(instrumentation_data->per_instruction_opcodes);
+ int next_opcode = instrumentation_data->per_instruction_opcodes[offset];
+ if (tstate->tracing) {
+ return next_opcode;
+ }
+ PyInterpreterState *interp = tstate->interp;
+ uint8_t tools = instrumentation_data->per_instruction_tools != NULL ?
+ instrumentation_data->per_instruction_tools[offset] :
+ (interp->monitors.tools[PY_MONITORING_EVENT_INSTRUCTION] |
+ code->_co_monitoring->local_monitors.tools[PY_MONITORING_EVENT_INSTRUCTION]
+ );
+ int bytes_offset = offset * (int)sizeof(_Py_CODEUNIT);
+ PyObject *offset_obj = PyLong_FromSsize_t(bytes_offset);
+ if (offset_obj == NULL) {
+ return -1;
+ }
+ PyObject *args[3] = { NULL, (PyObject *)code, offset_obj };
+ while (tools) {
+ int tool = most_significant_bit(tools);
+ assert(tool >= 0 && tool < 8);
+ assert(tools & (1 << tool));
+ tools &= ~(1 << tool);
+ int res = call_one_instrument(interp, tstate, &args[1],
+ 2 | PY_VECTORCALL_ARGUMENTS_OFFSET,
+ tool, PY_MONITORING_EVENT_INSTRUCTION);
+ if (res == 0) {
+ /* Nothing to do */
+ }
+ else if (res < 0) {
+ /* error */
+ Py_DECREF(offset_obj);
+ return -1;
+ }
+ else {
+ /* DISABLE */
+ remove_per_instruction_tools(code, offset, 1 << tool);
+ }
+ }
+ Py_DECREF(offset_obj);
+ assert(next_opcode != 0);
+ return next_opcode;
+}
+
+
+PyObject *
+_PyMonitoring_RegisterCallback(int tool_id, int event_id, PyObject *obj)
+{
+ PyInterpreterState *is = _PyInterpreterState_Get();
+ assert(0 <= tool_id && tool_id < PY_MONITORING_TOOL_IDS);
+ assert(0 <= event_id && event_id < _PY_MONITORING_EVENTS);
+ PyObject *callback = is->monitoring_callables[tool_id][event_id];
+ is->monitoring_callables[tool_id][event_id] = Py_XNewRef(obj);
+ return callback;
+}
+
+static void
+initialize_tools(PyCodeObject *code)
+{
+ uint8_t* tools = code->_co_monitoring->tools;
+ assert(tools != NULL);
+ int code_len = (int)Py_SIZE(code);
+ for (int i = 0; i < code_len; i++) {
+ _Py_CODEUNIT *instr = &_PyCode_CODE(code)[i];
+ int opcode = instr->op.code;
+ if (opcode == INSTRUMENTED_LINE) {
+ opcode = code->_co_monitoring->lines[i].original_opcode;
+ }
+ if (opcode == INSTRUMENTED_INSTRUCTION) {
+ opcode = code->_co_monitoring->per_instruction_opcodes[i];
+ }
+ bool instrumented = is_instrumented(opcode);
+ if (instrumented) {
+ opcode = DE_INSTRUMENT[opcode];
+ assert(opcode != 0);
+ }
+ opcode = _PyOpcode_Deopt[opcode];
+ if (opcode_has_event(opcode)) {
+ if (instrumented) {
+ int8_t event;
+ if (opcode == RESUME) {
+ event = instr->op.arg != 0;
+ }
+ else {
+ event = EVENT_FOR_OPCODE[opcode];
+ assert(event > 0);
+ }
+ assert(event >= 0);
+ assert(PY_MONITORING_IS_INSTRUMENTED_EVENT(event));
+ tools[i] = code->_co_monitoring->active_monitors.tools[event];
+ CHECK(tools[i] != 0);
+ }
+ else {
+ tools[i] = 0;
+ }
+ }
+#ifdef Py_DEBUG
+ /* Initialize tools for invalid locations to all ones to try to catch errors */
+ else {
+ tools[i] = 0xff;
+ }
+ for (int j = 1; j <= _PyOpcode_Caches[opcode]; j++) {
+ tools[i+j] = 0xff;
+ }
+#endif
+ i += _PyOpcode_Caches[opcode];
+ }
+}
+
+#define NO_LINE -128
+
+static void
+initialize_lines(PyCodeObject *code)
+{
+ _PyCoLineInstrumentationData *line_data = code->_co_monitoring->lines;
+ assert(line_data != NULL);
+ int code_len = (int)Py_SIZE(code);
+ PyCodeAddressRange range;
+ _PyCode_InitAddressRange(code, &range);
+ for (int i = 0; i < code->_co_firsttraceable && i < code_len; i++) {
+ line_data[i].original_opcode = 0;
+ line_data[i].line_delta = -127;
+ }
+ int current_line = -1;
+ for (int i = code->_co_firsttraceable; i < code_len; ) {
+ int opcode = _Py_GetBaseOpcode(code, i);
+ int line = _PyCode_CheckLineNumber(i*(int)sizeof(_Py_CODEUNIT), &range);
+ line_data[i].line_delta = compute_line_delta(code, i, line);
+ int length = instruction_length(code, i);
+ switch (opcode) {
+ case END_ASYNC_FOR:
+ case END_FOR:
+ case END_SEND:
+ case RESUME:
+ /* END_FOR cannot start a line, as it is skipped by FOR_ITER
+ * END_SEND cannot start a line, as it is skipped by SEND
+ * RESUME must not be instrumented with INSTRUMENT_LINE */
+ line_data[i].original_opcode = 0;
+ break;
+ default:
+ /* Set original_opcode to the opcode iff the instruction
+ * starts a line, and thus should be instrumented.
+ * This saves having to perform this check every time the
+ * we turn instrumentation on or off, and serves as a sanity
+ * check when debugging.
+ */
+ if (line != current_line && line >= 0) {
+ line_data[i].original_opcode = opcode;
+ }
+ else {
+ line_data[i].original_opcode = 0;
+ }
+ current_line = line;
+ }
+ for (int j = 1; j < length; j++) {
+ line_data[i+j].original_opcode = 0;
+ line_data[i+j].line_delta = NO_LINE;
+ }
+ i += length;
+ }
+ for (int i = code->_co_firsttraceable; i < code_len; ) {
+ int opcode = _Py_GetBaseOpcode(code, i);
+ int oparg = 0;
+ while (opcode == EXTENDED_ARG) {
+ oparg = (oparg << 8) | _PyCode_CODE(code)[i].op.arg;
+ i++;
+ opcode = _Py_GetBaseOpcode(code, i);
+ }
+ oparg = (oparg << 8) | _PyCode_CODE(code)[i].op.arg;
+ i += instruction_length(code, i);
+ int target = -1;
+ switch (opcode) {
+ case POP_JUMP_IF_FALSE:
+ case POP_JUMP_IF_TRUE:
+ case POP_JUMP_IF_NONE:
+ case POP_JUMP_IF_NOT_NONE:
+ case JUMP_FORWARD:
+ {
+ target = i + oparg;
+ break;
+ }
+ case FOR_ITER:
+ case SEND:
+ {
+ /* Skip over END_FOR/END_SEND */
+ target = i + oparg + 1;
+ break;
+ }
+ case JUMP_BACKWARD:
+ case JUMP_BACKWARD_NO_INTERRUPT:
+ {
+ target = i - oparg;
+ break;
+ }
+ default:
+ continue;
+ }
+ assert(target >= 0);
+ if (line_data[target].line_delta != NO_LINE) {
+ line_data[target].original_opcode = _Py_GetBaseOpcode(code, target);
+ }
+ }
+ /* Scan exception table */
+ unsigned char *start = (unsigned char *)PyBytes_AS_STRING(code->co_exceptiontable);
+ unsigned char *end = start + PyBytes_GET_SIZE(code->co_exceptiontable);
+ unsigned char *scan = start;
+ while (scan < end) {
+ int start_offset, size, handler;
+ scan = parse_varint(scan, &start_offset);
+ assert(start_offset >= 0 && start_offset < code_len);
+ scan = parse_varint(scan, &size);
+ assert(size >= 0 && start_offset+size <= code_len);
+ scan = parse_varint(scan, &handler);
+ assert(handler >= 0 && handler < code_len);
+ int depth_and_lasti;
+ scan = parse_varint(scan, &depth_and_lasti);
+ int original_opcode = _Py_GetBaseOpcode(code, handler);
+ /* Skip if not the start of a line.
+ * END_ASYNC_FOR is a bit special as it marks the end of
+ * an `async for` loop, which should not generate its own
+ * line event. */
+ if (line_data[handler].line_delta != NO_LINE &&
+ original_opcode != END_ASYNC_FOR) {
+ line_data[handler].original_opcode = original_opcode;
+ }
+ }
+}
+
+static void
+initialize_line_tools(PyCodeObject *code, _Py_LocalMonitors *all_events)
+{
+ uint8_t *line_tools = code->_co_monitoring->line_tools;
+ assert(line_tools != NULL);
+ int code_len = (int)Py_SIZE(code);
+ for (int i = 0; i < code_len; i++) {
+ line_tools[i] = all_events->tools[PY_MONITORING_EVENT_LINE];
+ }
+}
+
+static int
+allocate_instrumentation_data(PyCodeObject *code)
+{
+
+ if (code->_co_monitoring == NULL) {
+ code->_co_monitoring = PyMem_Malloc(sizeof(_PyCoMonitoringData));
+ if (code->_co_monitoring == NULL) {
+ PyErr_NoMemory();
+ return -1;
+ }
+ code->_co_monitoring->local_monitors = (_Py_LocalMonitors){ 0 };
+ code->_co_monitoring->active_monitors = (_Py_LocalMonitors){ 0 };
+ code->_co_monitoring->tools = NULL;
+ code->_co_monitoring->lines = NULL;
+ code->_co_monitoring->line_tools = NULL;
+ code->_co_monitoring->per_instruction_opcodes = NULL;
+ code->_co_monitoring->per_instruction_tools = NULL;
+ }
+ return 0;
+}
+
+static int
+update_instrumentation_data(PyCodeObject *code, PyInterpreterState *interp)
+{
+ int code_len = (int)Py_SIZE(code);
+ if (allocate_instrumentation_data(code)) {
+ return -1;
+ }
+ _Py_LocalMonitors all_events = local_union(
+ interp->monitors,
+ code->_co_monitoring->local_monitors);
+ bool multitools = multiple_tools(&all_events);
+ if (code->_co_monitoring->tools == NULL && multitools) {
+ code->_co_monitoring->tools = PyMem_Malloc(code_len);
+ if (code->_co_monitoring->tools == NULL) {
+ PyErr_NoMemory();
+ return -1;
+ }
+ initialize_tools(code);
+ }
+ if (all_events.tools[PY_MONITORING_EVENT_LINE]) {
+ if (code->_co_monitoring->lines == NULL) {
+ code->_co_monitoring->lines = PyMem_Malloc(code_len * sizeof(_PyCoLineInstrumentationData));
+ if (code->_co_monitoring->lines == NULL) {
+ PyErr_NoMemory();
+ return -1;
+ }
+ initialize_lines(code);
+ }
+ if (multitools && code->_co_monitoring->line_tools == NULL) {
+ code->_co_monitoring->line_tools = PyMem_Malloc(code_len);
+ if (code->_co_monitoring->line_tools == NULL) {
+ PyErr_NoMemory();
+ return -1;
+ }
+ initialize_line_tools(code, &all_events);
+ }
+ }
+ if (all_events.tools[PY_MONITORING_EVENT_INSTRUCTION]) {
+ if (code->_co_monitoring->per_instruction_opcodes == NULL) {
+ code->_co_monitoring->per_instruction_opcodes = PyMem_Malloc(code_len * sizeof(_PyCoLineInstrumentationData));
+ if (code->_co_monitoring->per_instruction_opcodes == NULL) {
+ PyErr_NoMemory();
+ return -1;
+ }
+ /* This may not be necessary, as we can initialize this memory lazily, but it helps catch errors. */
+ for (int i = 0; i < code_len; i++) {
+ code->_co_monitoring->per_instruction_opcodes[i] = 0;
+ }
+ }
+ if (multitools && code->_co_monitoring->per_instruction_tools == NULL) {
+ code->_co_monitoring->per_instruction_tools = PyMem_Malloc(code_len);
+ if (code->_co_monitoring->per_instruction_tools == NULL) {
+ PyErr_NoMemory();
+ return -1;
+ }
+ /* This may not be necessary, as we can initialize this memory lazily, but it helps catch errors. */
+ for (int i = 0; i < code_len; i++) {
+ code->_co_monitoring->per_instruction_tools[i] = 0;
+ }
+ }
+ }
+ return 0;
+}
+
+static const uint8_t super_instructions[256] = {
+ [LOAD_FAST__LOAD_FAST] = 1,
+ [LOAD_FAST__LOAD_CONST] = 1,
+ [STORE_FAST__LOAD_FAST] = 1,
+ [STORE_FAST__STORE_FAST] = 1,
+ [LOAD_CONST__LOAD_FAST] = 1,
+};
+
+/* Should use instruction metadata for this */
+static bool
+is_super_instruction(uint8_t opcode) {
+ return super_instructions[opcode] != 0;
+}
+
+int
+_Py_Instrument(PyCodeObject *code, PyInterpreterState *interp)
+{
+
+ if (is_version_up_to_date(code, interp)) {
+ assert(
+ interp->monitoring_version == 0 ||
+ instrumentation_cross_checks(interp, code)
+ );
+ return 0;
+ }
+ int code_len = (int)Py_SIZE(code);
+ /* code->_co_firsttraceable >= code_len indicates
+ * that no instrumentation can be inserted.
+ * Exit early to avoid creating instrumentation
+ * data for potential statically allocated code
+ * objects.
+ * See https://github.com/python/cpython/issues/108390 */
+ if (code->_co_firsttraceable >= code_len) {
+ return 0;
+ }
+ if (update_instrumentation_data(code, interp)) {
+ return -1;
+ }
+ _Py_LocalMonitors active_events = local_union(
+ interp->monitors,
+ code->_co_monitoring->local_monitors);
+ _Py_LocalMonitors new_events;
+ _Py_LocalMonitors removed_events;
+
+ bool restarted = interp->last_restart_version > code->_co_instrumentation_version;
+ if (restarted) {
+ removed_events = code->_co_monitoring->active_monitors;
+ new_events = active_events;
+ }
+ else {
+ removed_events = monitors_sub(code->_co_monitoring->active_monitors, active_events);
+ new_events = monitors_sub(active_events, code->_co_monitoring->active_monitors);
+ assert(monitors_are_empty(monitors_and(new_events, removed_events)));
+ }
+ code->_co_monitoring->active_monitors = active_events;
+ code->_co_instrumentation_version = interp->monitoring_version;
+ if (monitors_are_empty(new_events) && monitors_are_empty(removed_events)) {
+#ifdef INSTRUMENT_DEBUG
+ sanity_check_instrumentation(code);
+#endif
+ return 0;
+ }
+ /* Insert instrumentation */
+ for (int i = 0; i < code_len; i+= instruction_length(code, i)) {
+ _Py_CODEUNIT *instr = &_PyCode_CODE(code)[i];
+ if (is_super_instruction(instr->op.code)) {
+ instr->op.code = _PyOpcode_Deopt[instr->op.code];
+ }
+ CHECK(instr->op.code != 0);
+ int base_opcode = _Py_GetBaseOpcode(code, i);
+ if (opcode_has_event(base_opcode)) {
+ int8_t event;
+ if (base_opcode == RESUME) {
+ event = instr->op.arg > 0;
+ }
+ else {
+ event = EVENT_FOR_OPCODE[base_opcode];
+ assert(event > 0);
+ }
+ uint8_t removed_tools = removed_events.tools[event];
+ if (removed_tools) {
+ remove_tools(code, i, event, removed_tools);
+ }
+ uint8_t new_tools = new_events.tools[event];
+ if (new_tools) {
+ add_tools(code, i, event, new_tools);
+ }
+ }
+ }
+
+ // GH-103845: We need to remove both the line and instruction instrumentation before
+ // adding new ones, otherwise we may remove the newly added instrumentation.
+
+ uint8_t removed_line_tools = removed_events.tools[PY_MONITORING_EVENT_LINE];
+ uint8_t removed_per_instruction_tools = removed_events.tools[PY_MONITORING_EVENT_INSTRUCTION];
+
+ if (removed_line_tools) {
+ _PyCoLineInstrumentationData *line_data = code->_co_monitoring->lines;
+ for (int i = code->_co_firsttraceable; i < code_len;) {
+ if (line_data[i].original_opcode) {
+ if (removed_line_tools) {
+ remove_line_tools(code, i, removed_line_tools);
+ }
+ }
+ i += instruction_length(code, i);
+ }
+ }
+ if (removed_per_instruction_tools) {
+ for (int i = code->_co_firsttraceable; i < code_len;) {
+ int opcode = _Py_GetBaseOpcode(code, i);
+ if (opcode == RESUME || opcode == END_FOR) {
+ i += instruction_length(code, i);
+ continue;
+ }
+ if (removed_per_instruction_tools) {
+ remove_per_instruction_tools(code, i, removed_per_instruction_tools);
+ }
+ i += instruction_length(code, i);
+ }
+ }
+#ifdef INSTRUMENT_DEBUG
+ sanity_check_instrumentation(code);
+#endif
+ uint8_t new_line_tools = new_events.tools[PY_MONITORING_EVENT_LINE];
+ uint8_t new_per_instruction_tools = new_events.tools[PY_MONITORING_EVENT_INSTRUCTION];
+
+ if (new_line_tools) {
+ _PyCoLineInstrumentationData *line_data = code->_co_monitoring->lines;
+ for (int i = code->_co_firsttraceable; i < code_len;) {
+ if (line_data[i].original_opcode) {
+ if (new_line_tools) {
+ add_line_tools(code, i, new_line_tools);
+ }
+ }
+ i += instruction_length(code, i);
+ }
+ }
+ if (new_per_instruction_tools) {
+ for (int i = code->_co_firsttraceable; i < code_len;) {
+ int opcode = _Py_GetBaseOpcode(code, i);
+ if (opcode == RESUME || opcode == END_FOR) {
+ i += instruction_length(code, i);
+ continue;
+ }
+ if (new_per_instruction_tools) {
+ add_per_instruction_tools(code, i, new_per_instruction_tools);
+ }
+ i += instruction_length(code, i);
+ }
+ }
+#ifdef INSTRUMENT_DEBUG
+ sanity_check_instrumentation(code);
+#endif
+ return 0;
+}
+
+#define C_RETURN_EVENTS \
+ ((1 << PY_MONITORING_EVENT_C_RETURN) | \
+ (1 << PY_MONITORING_EVENT_C_RAISE))
+
+#define C_CALL_EVENTS \
+ (C_RETURN_EVENTS | (1 << PY_MONITORING_EVENT_CALL))
+
+
+static int
+instrument_all_executing_code_objects(PyInterpreterState *interp) {
+ _PyRuntimeState *runtime = &_PyRuntime;
+ HEAD_LOCK(runtime);
+ PyThreadState* ts = PyInterpreterState_ThreadHead(interp);
+ HEAD_UNLOCK(runtime);
+ while (ts) {
+ _PyInterpreterFrame *frame = ts->cframe->current_frame;
+ while (frame) {
+ if (frame->owner != FRAME_OWNED_BY_CSTACK) {
+ if (_Py_Instrument(frame->f_code, interp)) {
+ return -1;
+ }
+ }
+ frame = frame->previous;
+ }
+ HEAD_LOCK(runtime);
+ ts = PyThreadState_Next(ts);
+ HEAD_UNLOCK(runtime);
+ }
+ return 0;
+}
+
+static void
+set_events(_Py_GlobalMonitors *m, int tool_id, _PyMonitoringEventSet events)
+{
+ assert(0 <= tool_id && tool_id < PY_MONITORING_TOOL_IDS);
+ for (int e = 0; e < _PY_MONITORING_UNGROUPED_EVENTS; e++) {
+ uint8_t *tools = &m->tools[e];
+ int active = (events >> e) & 1;
+ *tools &= ~(1 << tool_id);
+ *tools |= (active << tool_id);
+ }
+}
+
+static void
+set_local_events(_Py_LocalMonitors *m, int tool_id, _PyMonitoringEventSet events)
+{
+ assert(0 <= tool_id && tool_id < PY_MONITORING_TOOL_IDS);
+ for (int e = 0; e < _PY_MONITORING_LOCAL_EVENTS; e++) {
+ uint8_t *tools = &m->tools[e];
+ int val = (events >> e) & 1;
+ *tools &= ~(1 << tool_id);
+ *tools |= (val << tool_id);
+ }
+}
+
+static int
+check_tool(PyInterpreterState *interp, int tool_id)
+{
+ if (tool_id < PY_MONITORING_SYS_PROFILE_ID &&
+ interp->monitoring_tool_names[tool_id] == NULL)
+ {
+ PyErr_Format(PyExc_ValueError, "tool %d is not in use", tool_id);
+ return -1;
+ }
+ return 0;
+}
+
+int
+_PyMonitoring_SetEvents(int tool_id, _PyMonitoringEventSet events)
+{
+ assert(0 <= tool_id && tool_id < PY_MONITORING_TOOL_IDS);
+ PyInterpreterState *interp = _PyInterpreterState_Get();
+ assert(events < (1 << _PY_MONITORING_UNGROUPED_EVENTS));
+ if (check_tool(interp, tool_id)) {
+ return -1;
+ }
+ uint32_t existing_events = get_events(&interp->monitors, tool_id);
+ if (existing_events == events) {
+ return 0;
+ }
+ set_events(&interp->monitors, tool_id, events);
+ interp->monitoring_version++;
+ return instrument_all_executing_code_objects(interp);
+}
+
+int
+_PyMonitoring_SetLocalEvents(PyCodeObject *code, int tool_id, _PyMonitoringEventSet events)
+{
+ assert(0 <= tool_id && tool_id < PY_MONITORING_TOOL_IDS);
+ PyInterpreterState *interp = _PyInterpreterState_Get();
+ assert(events < (1 << _PY_MONITORING_LOCAL_EVENTS));
+ if (code->_co_firsttraceable >= Py_SIZE(code)) {
+ PyErr_Format(PyExc_SystemError, "cannot instrument shim code object '%U'", code->co_name);
+ return -1;
+ }
+ if (check_tool(interp, tool_id)) {
+ return -1;
+ }
+ if (allocate_instrumentation_data(code)) {
+ return -1;
+ }
+ _Py_LocalMonitors *local = &code->_co_monitoring->local_monitors;
+ uint32_t existing_events = get_local_events(local, tool_id);
+ if (existing_events == events) {
+ return 0;
+ }
+ set_local_events(local, tool_id, events);
+ if (is_version_up_to_date(code, interp)) {
+ /* Force instrumentation update */
+ code->_co_instrumentation_version = UINT64_MAX;
+ }
+ if (_Py_Instrument(code, interp)) {
+ return -1;
+ }
+ return 0;
+}
+
+/*[clinic input]
+module monitoring
+[clinic start generated code]*/
+/*[clinic end generated code: output=da39a3ee5e6b4b0d input=37257f5987a360cf]*/
+/*[clinic end generated code]*/
+
+#include "clinic/instrumentation.c.h"
+
+static int
+check_valid_tool(int tool_id)
+{
+ if (tool_id < 0 || tool_id >= PY_MONITORING_SYS_PROFILE_ID) {
+ PyErr_Format(PyExc_ValueError, "invalid tool %d (must be between 0 and 5)", tool_id);
+ return -1;
+ }
+ return 0;
+}
+
+/*[clinic input]
+monitoring.use_tool_id
+
+ tool_id: int
+ name: object
+ /
+
+[clinic start generated code]*/
+
+static PyObject *
+monitoring_use_tool_id_impl(PyObject *module, int tool_id, PyObject *name)
+/*[clinic end generated code: output=30d76dc92b7cd653 input=ebc453761c621be1]*/
+{
+ if (check_valid_tool(tool_id)) {
+ return NULL;
+ }
+ if (!PyUnicode_Check(name)) {
+ PyErr_SetString(PyExc_ValueError, "tool name must be a str");
+ return NULL;
+ }
+ PyInterpreterState *interp = _PyInterpreterState_Get();
+ if (interp->monitoring_tool_names[tool_id] != NULL) {
+ PyErr_Format(PyExc_ValueError, "tool %d is already in use", tool_id);
+ return NULL;
+ }
+ interp->monitoring_tool_names[tool_id] = Py_NewRef(name);
+ Py_RETURN_NONE;
+}
+
+/*[clinic input]
+monitoring.free_tool_id
+
+ tool_id: int
+ /
+
+[clinic start generated code]*/
+
+static PyObject *
+monitoring_free_tool_id_impl(PyObject *module, int tool_id)
+/*[clinic end generated code: output=86c2d2a1219a8591 input=a23fb6be3a8618e9]*/
+{
+ if (check_valid_tool(tool_id)) {
+ return NULL;
+ }
+ PyInterpreterState *interp = _PyInterpreterState_Get();
+ Py_CLEAR(interp->monitoring_tool_names[tool_id]);
+ Py_RETURN_NONE;
+}
+
+/*[clinic input]
+monitoring.get_tool
+
+ tool_id: int
+ /
+
+[clinic start generated code]*/
+
+static PyObject *
+monitoring_get_tool_impl(PyObject *module, int tool_id)
+/*[clinic end generated code: output=1c05a98b404a9a16 input=eeee9bebd0bcae9d]*/
+
+/*[clinic end generated code]*/
+{
+ if (check_valid_tool(tool_id)) {
+ return NULL;
+ }
+ PyInterpreterState *interp = _PyInterpreterState_Get();
+ PyObject *name = interp->monitoring_tool_names[tool_id];
+ if (name == NULL) {
+ Py_RETURN_NONE;
+ }
+ return Py_NewRef(name);
+}
+
+/*[clinic input]
+monitoring.register_callback
+
+
+ tool_id: int
+ event: int
+ func: object
+ /
+
+[clinic start generated code]*/
+
+static PyObject *
+monitoring_register_callback_impl(PyObject *module, int tool_id, int event,
+ PyObject *func)
+/*[clinic end generated code: output=e64daa363004030c input=df6d70ea4cf81007]*/
+{
+ if (check_valid_tool(tool_id)) {
+ return NULL;
+ }
+ if (_Py_popcount32(event) != 1) {
+ PyErr_SetString(PyExc_ValueError, "The callback can only be set for one event at a time");
+ return NULL;
+ }
+ int event_id = _Py_bit_length(event)-1;
+ if (event_id < 0 || event_id >= _PY_MONITORING_EVENTS) {
+ PyErr_Format(PyExc_ValueError, "invalid event %d", event);
+ return NULL;
+ }
+ if (PySys_Audit("sys.monitoring.register_callback", "O", func) < 0) {
+ return NULL;
+ }
+ if (func == Py_None) {
+ func = NULL;
+ }
+ func = _PyMonitoring_RegisterCallback(tool_id, event_id, func);
+ if (func == NULL) {
+ Py_RETURN_NONE;
+ }
+ return func;
+}
+
+/*[clinic input]
+monitoring.get_events -> int
+
+ tool_id: int
+ /
+
+[clinic start generated code]*/
+
+static int
+monitoring_get_events_impl(PyObject *module, int tool_id)
+/*[clinic end generated code: output=4450cc13f826c8c0 input=a64b238f76c4b2f7]*/
+{
+ if (check_valid_tool(tool_id)) {
+ return -1;
+ }
+ _Py_GlobalMonitors *m = &_PyInterpreterState_GET()->monitors;
+ _PyMonitoringEventSet event_set = get_events(m, tool_id);
+ return event_set;
+}
+
+/*[clinic input]
+monitoring.set_events
+
+ tool_id: int
+ event_set: int
+ /
+
+[clinic start generated code]*/
+
+static PyObject *
+monitoring_set_events_impl(PyObject *module, int tool_id, int event_set)
+/*[clinic end generated code: output=1916c1e49cfb5bdb input=a77ba729a242142b]*/
+{
+ if (check_valid_tool(tool_id)) {
+ return NULL;
+ }
+ if (event_set < 0 || event_set >= (1 << _PY_MONITORING_EVENTS)) {
+ PyErr_Format(PyExc_ValueError, "invalid event set 0x%x", event_set);
+ return NULL;
+ }
+ if ((event_set & C_RETURN_EVENTS) && (event_set & C_CALL_EVENTS) != C_CALL_EVENTS) {
+ PyErr_Format(PyExc_ValueError, "cannot set C_RETURN or C_RAISE events independently");
+ return NULL;
+ }
+ event_set &= ~C_RETURN_EVENTS;
+ if (_PyMonitoring_SetEvents(tool_id, event_set)) {
+ return NULL;
+ }
+ Py_RETURN_NONE;
+}
+
+/*[clinic input]
+monitoring.get_local_events -> int
+
+ tool_id: int
+ code: object
+ /
+
+[clinic start generated code]*/
+
+static int
+monitoring_get_local_events_impl(PyObject *module, int tool_id,
+ PyObject *code)
+/*[clinic end generated code: output=d3e92c1c9c1de8f9 input=bb0f927530386a94]*/
+{
+ if (!PyCode_Check(code)) {
+ PyErr_Format(
+ PyExc_TypeError,
+ "code must be a code object"
+ );
+ return -1;
+ }
+ if (check_valid_tool(tool_id)) {
+ return -1;
+ }
+ _PyMonitoringEventSet event_set = 0;
+ _PyCoMonitoringData *data = ((PyCodeObject *)code)->_co_monitoring;
+ if (data != NULL) {
+ for (int e = 0; e < _PY_MONITORING_LOCAL_EVENTS; e++) {
+ if ((data->local_monitors.tools[e] >> tool_id) & 1) {
+ event_set |= (1 << e);
+ }
+ }
+ }
+ return event_set;
+}
+
+/*[clinic input]
+monitoring.set_local_events
+
+ tool_id: int
+ code: object
+ event_set: int
+ /
+
+[clinic start generated code]*/
+
+static PyObject *
+monitoring_set_local_events_impl(PyObject *module, int tool_id,
+ PyObject *code, int event_set)
+/*[clinic end generated code: output=68cc755a65dfea99 input=5655ecd78d937a29]*/
+{
+ if (!PyCode_Check(code)) {
+ PyErr_Format(
+ PyExc_TypeError,
+ "code must be a code object"
+ );
+ return NULL;
+ }
+ if (check_valid_tool(tool_id)) {
+ return NULL;
+ }
+ if ((event_set & C_RETURN_EVENTS) && (event_set & C_CALL_EVENTS) != C_CALL_EVENTS) {
+ PyErr_Format(PyExc_ValueError, "cannot set C_RETURN or C_RAISE events independently");
+ return NULL;
+ }
+ event_set &= ~C_RETURN_EVENTS;
+ if (event_set < 0 || event_set >= (1 << _PY_MONITORING_LOCAL_EVENTS)) {
+ PyErr_Format(PyExc_ValueError, "invalid local event set 0x%x", event_set);
+ return NULL;
+ }
+
+ if (_PyMonitoring_SetLocalEvents((PyCodeObject*)code, tool_id, event_set)) {
+ return NULL;
+ }
+ Py_RETURN_NONE;
+}
+
+/*[clinic input]
+monitoring.restart_events
+
+[clinic start generated code]*/
+
+static PyObject *
+monitoring_restart_events_impl(PyObject *module)
+/*[clinic end generated code: output=e025dd5ba33314c4 input=add8a855063c8008]*/
+{
+ /* We want to ensure that:
+ * last restart version > instrumented version for all code objects
+ * last restart version < current version
+ */
+ PyInterpreterState *interp = _PyInterpreterState_Get();
+ interp->last_restart_version = interp->monitoring_version + 1;
+ interp->monitoring_version = interp->last_restart_version + 1;
+ if (instrument_all_executing_code_objects(interp)) {
+ return NULL;
+ }
+ Py_RETURN_NONE;
+}
+
+static int
+add_power2_constant(PyObject *obj, const char *name, int i)
+{
+ PyObject *val = PyLong_FromLong(1<<i);
+ if (val == NULL) {
+ return -1;
+ }
+ int err = PyObject_SetAttrString(obj, name, val);
+ Py_DECREF(val);
+ return err;
+}
+
+/*[clinic input]
+monitoring._all_events
+[clinic start generated code]*/
+
+static PyObject *
+monitoring__all_events_impl(PyObject *module)
+/*[clinic end generated code: output=6b7581e2dbb690f6 input=62ee9672c17b7f0e]*/
+{
+ PyInterpreterState *interp = _PyInterpreterState_Get();
+ PyObject *res = PyDict_New();
+ if (res == NULL) {
+ return NULL;
+ }
+ for (int e = 0; e < _PY_MONITORING_UNGROUPED_EVENTS; e++) {
+ uint8_t tools = interp->monitors.tools[e];
+ if (tools == 0) {
+ continue;
+ }
+ PyObject *tools_obj = PyLong_FromLong(tools);
+ assert(tools_obj != NULL);
+ int err = PyDict_SetItemString(res, event_names[e], tools_obj);
+ Py_DECREF(tools_obj);
+ if (err < 0) {
+ Py_DECREF(res);
+ return NULL;
+ }
+ }
+ return res;
+}
+
+static PyMethodDef methods[] = {
+ MONITORING_USE_TOOL_ID_METHODDEF
+ MONITORING_FREE_TOOL_ID_METHODDEF
+ MONITORING_GET_TOOL_METHODDEF
+ MONITORING_REGISTER_CALLBACK_METHODDEF
+ MONITORING_GET_EVENTS_METHODDEF
+ MONITORING_SET_EVENTS_METHODDEF
+ MONITORING_GET_LOCAL_EVENTS_METHODDEF
+ MONITORING_SET_LOCAL_EVENTS_METHODDEF
+ MONITORING_RESTART_EVENTS_METHODDEF
+ MONITORING__ALL_EVENTS_METHODDEF
+ {NULL, NULL} // sentinel
+};
+
+static struct PyModuleDef monitoring_module = {
+ PyModuleDef_HEAD_INIT,
+ .m_name = "sys.monitoring",
+ .m_size = -1, /* multiple "initialization" just copies the module dict. */
+ .m_methods = methods,
+};
+
+PyObject *_Py_CreateMonitoringObject(void)
+{
+ PyObject *mod = _PyModule_CreateInitialized(&monitoring_module, PYTHON_API_VERSION);
+ if (mod == NULL) {
+ return NULL;
+ }
+ if (PyObject_SetAttrString(mod, "DISABLE", &_PyInstrumentation_DISABLE)) {
+ goto error;
+ }
+ if (PyObject_SetAttrString(mod, "MISSING", &_PyInstrumentation_MISSING)) {
+ goto error;
+ }
+ PyObject *events = _PyNamespace_New(NULL);
+ if (events == NULL) {
+ goto error;
+ }
+ int err = PyObject_SetAttrString(mod, "events", events);
+ Py_DECREF(events);
+ if (err) {
+ goto error;
+ }
+ for (int i = 0; i < _PY_MONITORING_EVENTS; i++) {
+ if (add_power2_constant(events, event_names[i], i)) {
+ goto error;
+ }
+ }
+ err = PyObject_SetAttrString(events, "NO_EVENTS", _PyLong_GetZero());
+ if (err) goto error;
+ PyObject *val = PyLong_FromLong(PY_MONITORING_DEBUGGER_ID);
+ err = PyObject_SetAttrString(mod, "DEBUGGER_ID", val);
+ Py_DECREF(val);
+ if (err) goto error;
+ val = PyLong_FromLong(PY_MONITORING_COVERAGE_ID);
+ err = PyObject_SetAttrString(mod, "COVERAGE_ID", val);
+ Py_DECREF(val);
+ if (err) goto error;
+ val = PyLong_FromLong(PY_MONITORING_PROFILER_ID);
+ err = PyObject_SetAttrString(mod, "PROFILER_ID", val);
+ Py_DECREF(val);
+ if (err) goto error;
+ val = PyLong_FromLong(PY_MONITORING_OPTIMIZER_ID);
+ err = PyObject_SetAttrString(mod, "OPTIMIZER_ID", val);
+ Py_DECREF(val);
+ if (err) goto error;
+ return mod;
+error:
+ Py_DECREF(mod);
+ return NULL;
+}
diff --git a/contrib/tools/python3/Python/intrinsics.c b/contrib/tools/python3/Python/intrinsics.c
new file mode 100644
index 00000000000..c6f5ac5402d
--- /dev/null
+++ b/contrib/tools/python3/Python/intrinsics.c
@@ -0,0 +1,260 @@
+
+#define _PY_INTERPRETER
+
+#include "Python.h"
+#include "pycore_frame.h"
+#include "pycore_function.h"
+#include "pycore_runtime.h"
+#include "pycore_global_objects.h"
+#include "pycore_intrinsics.h"
+#include "pycore_pyerrors.h"
+#include "pycore_typevarobject.h"
+
+
+/******** Unary functions ********/
+
+static PyObject *
+no_intrinsic(PyThreadState* tstate, PyObject *unused)
+{
+ _PyErr_SetString(tstate, PyExc_SystemError, "invalid intrinsic function");
+ return NULL;
+}
+
+static PyObject *
+print_expr(PyThreadState* tstate, PyObject *value)
+{
+ PyObject *hook = _PySys_GetAttr(tstate, &_Py_ID(displayhook));
+ // Can't use ERROR_IF here.
+ if (hook == NULL) {
+ _PyErr_SetString(tstate, PyExc_RuntimeError,
+ "lost sys.displayhook");
+ return NULL;
+ }
+ return PyObject_CallOneArg(hook, value);
+}
+
+static int
+import_all_from(PyThreadState *tstate, PyObject *locals, PyObject *v)
+{
+ PyObject *all, *dict, *name, *value;
+ int skip_leading_underscores = 0;
+ int pos, err;
+
+ if (_PyObject_LookupAttr(v, &_Py_ID(__all__), &all) < 0) {
+ return -1; /* Unexpected error */
+ }
+ if (all == NULL) {
+ if (_PyObject_LookupAttr(v, &_Py_ID(__dict__), &dict) < 0) {
+ return -1;
+ }
+ if (dict == NULL) {
+ _PyErr_SetString(tstate, PyExc_ImportError,
+ "from-import-* object has no __dict__ and no __all__");
+ return -1;
+ }
+ all = PyMapping_Keys(dict);
+ Py_DECREF(dict);
+ if (all == NULL)
+ return -1;
+ skip_leading_underscores = 1;
+ }
+
+ for (pos = 0, err = 0; ; pos++) {
+ name = PySequence_GetItem(all, pos);
+ if (name == NULL) {
+ if (!_PyErr_ExceptionMatches(tstate, PyExc_IndexError)) {
+ err = -1;
+ }
+ else {
+ _PyErr_Clear(tstate);
+ }
+ break;
+ }
+ if (!PyUnicode_Check(name)) {
+ PyObject *modname = PyObject_GetAttr(v, &_Py_ID(__name__));
+ if (modname == NULL) {
+ Py_DECREF(name);
+ err = -1;
+ break;
+ }
+ if (!PyUnicode_Check(modname)) {
+ _PyErr_Format(tstate, PyExc_TypeError,
+ "module __name__ must be a string, not %.100s",
+ Py_TYPE(modname)->tp_name);
+ }
+ else {
+ _PyErr_Format(tstate, PyExc_TypeError,
+ "%s in %U.%s must be str, not %.100s",
+ skip_leading_underscores ? "Key" : "Item",
+ modname,
+ skip_leading_underscores ? "__dict__" : "__all__",
+ Py_TYPE(name)->tp_name);
+ }
+ Py_DECREF(modname);
+ Py_DECREF(name);
+ err = -1;
+ break;
+ }
+ if (skip_leading_underscores) {
+ if (PyUnicode_READY(name) == -1) {
+ Py_DECREF(name);
+ err = -1;
+ break;
+ }
+ if (PyUnicode_READ_CHAR(name, 0) == '_') {
+ Py_DECREF(name);
+ continue;
+ }
+ }
+ value = PyObject_GetAttr(v, name);
+ if (value == NULL)
+ err = -1;
+ else if (PyDict_CheckExact(locals))
+ err = PyDict_SetItem(locals, name, value);
+ else
+ err = PyObject_SetItem(locals, name, value);
+ Py_DECREF(name);
+ Py_XDECREF(value);
+ if (err < 0)
+ break;
+ }
+ Py_DECREF(all);
+ return err;
+}
+
+static PyObject *
+import_star(PyThreadState* tstate, PyObject *from)
+{
+ _PyInterpreterFrame *frame = tstate->cframe->current_frame;
+ if (_PyFrame_FastToLocalsWithError(frame) < 0) {
+ return NULL;
+ }
+
+ PyObject *locals = frame->f_locals;
+ if (locals == NULL) {
+ _PyErr_SetString(tstate, PyExc_SystemError,
+ "no locals found during 'import *'");
+ return NULL;
+ }
+ int err = import_all_from(tstate, locals, from);
+ _PyFrame_LocalsToFast(frame, 0);
+ if (err < 0) {
+ return NULL;
+ }
+ Py_RETURN_NONE;
+}
+
+static PyObject *
+stopiteration_error(PyThreadState* tstate, PyObject *exc)
+{
+ _PyInterpreterFrame *frame = tstate->cframe->current_frame;
+ assert(frame->owner == FRAME_OWNED_BY_GENERATOR);
+ assert(PyExceptionInstance_Check(exc));
+ const char *msg = NULL;
+ if (PyErr_GivenExceptionMatches(exc, PyExc_StopIteration)) {
+ msg = "generator raised StopIteration";
+ if (frame->f_code->co_flags & CO_ASYNC_GENERATOR) {
+ msg = "async generator raised StopIteration";
+ }
+ else if (frame->f_code->co_flags & CO_COROUTINE) {
+ msg = "coroutine raised StopIteration";
+ }
+ }
+ else if ((frame->f_code->co_flags & CO_ASYNC_GENERATOR) &&
+ PyErr_GivenExceptionMatches(exc, PyExc_StopAsyncIteration))
+ {
+ /* code in `gen` raised a StopAsyncIteration error:
+ raise a RuntimeError.
+ */
+ msg = "async generator raised StopAsyncIteration";
+ }
+ if (msg != NULL) {
+ PyObject *message = _PyUnicode_FromASCII(msg, strlen(msg));
+ if (message == NULL) {
+ return NULL;
+ }
+ PyObject *error = PyObject_CallOneArg(PyExc_RuntimeError, message);
+ if (error == NULL) {
+ Py_DECREF(message);
+ return NULL;
+ }
+ assert(PyExceptionInstance_Check(error));
+ PyException_SetCause(error, Py_NewRef(exc));
+ // Steal exc reference, rather than Py_NewRef+Py_DECREF
+ PyException_SetContext(error, Py_NewRef(exc));
+ Py_DECREF(message);
+ return error;
+ }
+ return Py_NewRef(exc);
+}
+
+static PyObject *
+unary_pos(PyThreadState* unused, PyObject *value)
+{
+ return PyNumber_Positive(value);
+}
+
+static PyObject *
+list_to_tuple(PyThreadState* unused, PyObject *v)
+{
+ assert(PyList_Check(v));
+ return _PyTuple_FromArray(((PyListObject *)v)->ob_item, Py_SIZE(v));
+}
+
+static PyObject *
+make_typevar(PyThreadState* Py_UNUSED(ignored), PyObject *v)
+{
+ assert(PyUnicode_Check(v));
+ return _Py_make_typevar(v, NULL, NULL);
+}
+
+const instrinsic_func1
+_PyIntrinsics_UnaryFunctions[] = {
+ [0] = no_intrinsic,
+ [INTRINSIC_PRINT] = print_expr,
+ [INTRINSIC_IMPORT_STAR] = import_star,
+ [INTRINSIC_STOPITERATION_ERROR] = stopiteration_error,
+ [INTRINSIC_ASYNC_GEN_WRAP] = _PyAsyncGenValueWrapperNew,
+ [INTRINSIC_UNARY_POSITIVE] = unary_pos,
+ [INTRINSIC_LIST_TO_TUPLE] = list_to_tuple,
+ [INTRINSIC_TYPEVAR] = make_typevar,
+ [INTRINSIC_PARAMSPEC] = _Py_make_paramspec,
+ [INTRINSIC_TYPEVARTUPLE] = _Py_make_typevartuple,
+ [INTRINSIC_SUBSCRIPT_GENERIC] = _Py_subscript_generic,
+ [INTRINSIC_TYPEALIAS] = _Py_make_typealias,
+};
+
+
+/******** Binary functions ********/
+
+
+static PyObject *
+prep_reraise_star(PyThreadState* unused, PyObject *orig, PyObject *excs)
+{
+ assert(PyList_Check(excs));
+ return _PyExc_PrepReraiseStar(orig, excs);
+}
+
+static PyObject *
+make_typevar_with_bound(PyThreadState* Py_UNUSED(ignored), PyObject *name,
+ PyObject *evaluate_bound)
+{
+ assert(PyUnicode_Check(name));
+ return _Py_make_typevar(name, evaluate_bound, NULL);
+}
+
+static PyObject *
+make_typevar_with_constraints(PyThreadState* Py_UNUSED(ignored), PyObject *name,
+ PyObject *evaluate_constraints)
+{
+ assert(PyUnicode_Check(name));
+ return _Py_make_typevar(name, NULL, evaluate_constraints);
+}
+
+const instrinsic_func2
+_PyIntrinsics_BinaryFunctions[] = {
+ [INTRINSIC_PREP_RERAISE_STAR] = prep_reraise_star,
+ [INTRINSIC_TYPEVAR_WITH_BOUND] = make_typevar_with_bound,
+ [INTRINSIC_TYPEVAR_WITH_CONSTRAINTS] = make_typevar_with_constraints,
+ [INTRINSIC_SET_FUNCTION_TYPE_PARAMS] = _Py_set_function_type_params,
+};
diff --git a/contrib/tools/python3/Python/legacy_tracing.c b/contrib/tools/python3/Python/legacy_tracing.c
new file mode 100644
index 00000000000..43fa5910ef6
--- /dev/null
+++ b/contrib/tools/python3/Python/legacy_tracing.c
@@ -0,0 +1,519 @@
+/* Support for legacy tracing on top of PEP 669 instrumentation
+ * Provides callables to forward PEP 669 events to legacy events.
+ */
+
+#include <stddef.h>
+#include "Python.h"
+#include "opcode.h"
+#include "pycore_ceval.h"
+#include "pycore_object.h"
+#include "pycore_sysmodule.h"
+
+typedef struct _PyLegacyEventHandler {
+ PyObject_HEAD
+ vectorcallfunc vectorcall;
+ int event;
+} _PyLegacyEventHandler;
+
+/* The Py_tracefunc function expects the following arguments:
+ * obj: the trace object (PyObject *)
+ * frame: the current frame (PyFrameObject *)
+ * kind: the kind of event, see PyTrace_XXX #defines (int)
+ * arg: The arg (a PyObject *)
+ */
+
+static PyObject *
+call_profile_func(_PyLegacyEventHandler *self, PyObject *arg)
+{
+ PyThreadState *tstate = _PyThreadState_GET();
+ if (tstate->c_profilefunc == NULL) {
+ Py_RETURN_NONE;
+ }
+ PyFrameObject *frame = PyEval_GetFrame();
+ if (frame == NULL) {
+ PyErr_SetString(PyExc_SystemError,
+ "Missing frame when calling profile function.");
+ return NULL;
+ }
+ Py_INCREF(frame);
+ int err = tstate->c_profilefunc(tstate->c_profileobj, frame, self->event, arg);
+ Py_DECREF(frame);
+ if (err) {
+ return NULL;
+ }
+ Py_RETURN_NONE;
+}
+
+static PyObject *
+sys_profile_func2(
+ _PyLegacyEventHandler *self, PyObject *const *args,
+ size_t nargsf, PyObject *kwnames
+) {
+ assert(kwnames == NULL);
+ assert(PyVectorcall_NARGS(nargsf) == 2);
+ return call_profile_func(self, Py_None);
+}
+
+static PyObject *
+sys_profile_func3(
+ _PyLegacyEventHandler *self, PyObject *const *args,
+ size_t nargsf, PyObject *kwnames
+) {
+ assert(kwnames == NULL);
+ assert(PyVectorcall_NARGS(nargsf) == 3);
+ return call_profile_func(self, args[2]);
+}
+
+static PyObject *
+sys_profile_unwind(
+ _PyLegacyEventHandler *self, PyObject *const *args,
+ size_t nargsf, PyObject *kwnames
+) {
+ assert(kwnames == NULL);
+ assert(PyVectorcall_NARGS(nargsf) == 3);
+ return call_profile_func(self, Py_None);
+}
+
+static PyObject *
+sys_profile_call_or_return(
+ _PyLegacyEventHandler *self, PyObject *const *args,
+ size_t nargsf, PyObject *kwnames
+) {
+ assert(kwnames == NULL);
+ assert(PyVectorcall_NARGS(nargsf) == 4);
+ PyObject *callable = args[2];
+ if (PyCFunction_Check(callable)) {
+ return call_profile_func(self, callable);
+ }
+ if (Py_TYPE(callable) == &PyMethodDescr_Type) {
+ PyObject *self_arg = args[3];
+ /* For backwards compatibility need to
+ * convert to builtin method */
+
+ /* If no arg, skip */
+ if (self_arg == &_PyInstrumentation_MISSING) {
+ Py_RETURN_NONE;
+ }
+ PyObject *meth = Py_TYPE(callable)->tp_descr_get(
+ callable, self_arg, (PyObject*)Py_TYPE(self_arg));
+ if (meth == NULL) {
+ return NULL;
+ }
+ PyObject *res = call_profile_func(self, meth);
+ Py_DECREF(meth);
+ return res;
+ }
+ Py_RETURN_NONE;
+}
+
+static PyObject *
+call_trace_func(_PyLegacyEventHandler *self, PyObject *arg)
+{
+ PyThreadState *tstate = _PyThreadState_GET();
+ if (tstate->c_tracefunc == NULL) {
+ Py_RETURN_NONE;
+ }
+ PyFrameObject *frame = PyEval_GetFrame();
+ if (frame == NULL) {
+ PyErr_SetString(PyExc_SystemError,
+ "Missing frame when calling trace function.");
+ return NULL;
+ }
+ Py_INCREF(frame);
+ int err = tstate->c_tracefunc(tstate->c_traceobj, frame, self->event, arg);
+ Py_DECREF(frame);
+ if (err) {
+ return NULL;
+ }
+ Py_RETURN_NONE;
+}
+
+static PyObject *
+sys_trace_exception_func(
+ _PyLegacyEventHandler *self, PyObject *const *args,
+ size_t nargsf, PyObject *kwnames
+) {
+ assert(kwnames == NULL);
+ assert(PyVectorcall_NARGS(nargsf) == 3);
+ PyObject *exc = args[2];
+ assert(PyExceptionInstance_Check(exc));
+ PyObject *type = (PyObject *)Py_TYPE(exc);
+ PyObject *tb = PyException_GetTraceback(exc);
+ if (tb == NULL) {
+ tb = Py_NewRef(Py_None);
+ }
+ PyObject *tuple = PyTuple_Pack(3, type, exc, tb);
+ Py_DECREF(tb);
+ if (tuple == NULL) {
+ return NULL;
+ }
+ PyObject *res = call_trace_func(self, tuple);
+ Py_DECREF(tuple);
+ return res;
+}
+
+static PyObject *
+sys_trace_func2(
+ _PyLegacyEventHandler *self, PyObject *const *args,
+ size_t nargsf, PyObject *kwnames
+) {
+ assert(kwnames == NULL);
+ assert(PyVectorcall_NARGS(nargsf) == 2);
+ return call_trace_func(self, Py_None);
+}
+
+static PyObject *
+sys_trace_func3(
+ _PyLegacyEventHandler *self, PyObject *const *args,
+ size_t nargsf, PyObject *kwnames
+) {
+ assert(kwnames == NULL);
+ assert(PyVectorcall_NARGS(nargsf) == 3);
+ return call_trace_func(self, Py_None);
+}
+
+static PyObject *
+sys_trace_return(
+ _PyLegacyEventHandler *self, PyObject *const *args,
+ size_t nargsf, PyObject *kwnames
+) {
+ assert(!PyErr_Occurred());
+ assert(kwnames == NULL);
+ assert(PyVectorcall_NARGS(nargsf) == 3);
+ assert(PyCode_Check(args[0]));
+ PyObject *val = args[2];
+ PyObject *res = call_trace_func(self, val);
+ return res;
+}
+
+static PyObject *
+sys_trace_yield(
+ _PyLegacyEventHandler *self, PyObject *const *args,
+ size_t nargsf, PyObject *kwnames
+) {
+ assert(kwnames == NULL);
+ assert(PyVectorcall_NARGS(nargsf) == 3);
+ return call_trace_func(self, args[2]);
+}
+
+static PyObject *
+sys_trace_instruction_func(
+ _PyLegacyEventHandler *self, PyObject *const *args,
+ size_t nargsf, PyObject *kwnames
+) {
+ assert(kwnames == NULL);
+ assert(PyVectorcall_NARGS(nargsf) == 2);
+ PyFrameObject *frame = PyEval_GetFrame();
+ if (frame == NULL) {
+ PyErr_SetString(PyExc_SystemError,
+ "Missing frame when calling trace function.");
+ return NULL;
+ }
+ if (!frame->f_trace_opcodes) {
+ Py_RETURN_NONE;
+ }
+ Py_INCREF(frame);
+ PyThreadState *tstate = _PyThreadState_GET();
+ int err = tstate->c_tracefunc(tstate->c_traceobj, frame, self->event, Py_None);
+ frame->f_lineno = 0;
+ Py_DECREF(frame);
+ if (err) {
+ return NULL;
+ }
+ Py_RETURN_NONE;
+}
+
+static PyObject *
+trace_line(
+ PyThreadState *tstate, _PyLegacyEventHandler *self,
+ PyFrameObject *frame, int line
+) {
+ if (!frame->f_trace_lines) {
+ Py_RETURN_NONE;
+ }
+ if (line < 0) {
+ Py_RETURN_NONE;
+ }
+ Py_INCREF(frame);
+ frame->f_lineno = line;
+ int err = tstate->c_tracefunc(tstate->c_traceobj, frame, self->event, Py_None);
+ frame->f_lineno = 0;
+ Py_DECREF(frame);
+ if (err) {
+ return NULL;
+ }
+ Py_RETURN_NONE;
+}
+
+static PyObject *
+sys_trace_line_func(
+ _PyLegacyEventHandler *self, PyObject *const *args,
+ size_t nargsf, PyObject *kwnames
+) {
+ assert(kwnames == NULL);
+ PyThreadState *tstate = _PyThreadState_GET();
+ if (tstate->c_tracefunc == NULL) {
+ Py_RETURN_NONE;
+ }
+ assert(PyVectorcall_NARGS(nargsf) == 2);
+ int line = _PyLong_AsInt(args[1]);
+ assert(line >= 0);
+ PyFrameObject *frame = PyEval_GetFrame();
+ if (frame == NULL) {
+ PyErr_SetString(PyExc_SystemError,
+ "Missing frame when calling trace function.");
+ return NULL;
+ }
+ assert(args[0] == (PyObject *)frame->f_frame->f_code);
+ return trace_line(tstate, self, frame, line);
+}
+
+/* sys.settrace generates line events for all backward
+ * edges, even if on the same line.
+ * Handle that case here */
+static PyObject *
+sys_trace_jump_func(
+ _PyLegacyEventHandler *self, PyObject *const *args,
+ size_t nargsf, PyObject *kwnames
+) {
+ assert(kwnames == NULL);
+ PyThreadState *tstate = _PyThreadState_GET();
+ if (tstate->c_tracefunc == NULL) {
+ Py_RETURN_NONE;
+ }
+ assert(PyVectorcall_NARGS(nargsf) == 3);
+ int from = _PyLong_AsInt(args[1])/sizeof(_Py_CODEUNIT);
+ assert(from >= 0);
+ int to = _PyLong_AsInt(args[2])/sizeof(_Py_CODEUNIT);
+ assert(to >= 0);
+ if (to > from) {
+ /* Forward jump */
+ return &_PyInstrumentation_DISABLE;
+ }
+ PyCodeObject *code = (PyCodeObject *)args[0];
+ assert(PyCode_Check(code));
+ /* We can call _Py_Instrumentation_GetLine because we always set
+ * line events for tracing */
+ int to_line = _Py_Instrumentation_GetLine(code, to);
+ int from_line = _Py_Instrumentation_GetLine(code, from);
+ if (to_line != from_line) {
+ /* Will be handled by target INSTRUMENTED_LINE */
+ return &_PyInstrumentation_DISABLE;
+ }
+ PyFrameObject *frame = PyEval_GetFrame();
+ if (frame == NULL) {
+ PyErr_SetString(PyExc_SystemError,
+ "Missing frame when calling trace function.");
+ return NULL;
+ }
+ assert(code == frame->f_frame->f_code);
+ if (!frame->f_trace_lines) {
+ Py_RETURN_NONE;
+ }
+ return trace_line(tstate, self, frame, to_line);
+}
+
+PyTypeObject _PyLegacyEventHandler_Type = {
+ PyVarObject_HEAD_INIT(&PyType_Type, 0)
+ "sys.legacy_event_handler",
+ sizeof(_PyLegacyEventHandler),
+ .tp_dealloc = (destructor)PyObject_Free,
+ .tp_vectorcall_offset = offsetof(_PyLegacyEventHandler, vectorcall),
+ .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE |
+ Py_TPFLAGS_HAVE_VECTORCALL | Py_TPFLAGS_DISALLOW_INSTANTIATION,
+ .tp_call = PyVectorcall_Call,
+};
+
+static int
+set_callbacks(int tool, vectorcallfunc vectorcall, int legacy_event, int event1, int event2)
+{
+ _PyLegacyEventHandler *callback =
+ PyObject_NEW(_PyLegacyEventHandler, &_PyLegacyEventHandler_Type);
+ if (callback == NULL) {
+ return -1;
+ }
+ callback->vectorcall = vectorcall;
+ callback->event = legacy_event;
+ Py_XDECREF(_PyMonitoring_RegisterCallback(tool, event1, (PyObject *)callback));
+ if (event2 >= 0) {
+ Py_XDECREF(_PyMonitoring_RegisterCallback(tool, event2, (PyObject *)callback));
+ }
+ Py_DECREF(callback);
+ return 0;
+}
+
+#ifndef NDEBUG
+/* Ensure that tstate is valid: sanity check for PyEval_AcquireThread() and
+ PyEval_RestoreThread(). Detect if tstate memory was freed. It can happen
+ when a thread continues to run after Python finalization, especially
+ daemon threads. */
+static int
+is_tstate_valid(PyThreadState *tstate)
+{
+ assert(!_PyMem_IsPtrFreed(tstate));
+ assert(!_PyMem_IsPtrFreed(tstate->interp));
+ return 1;
+}
+#endif
+
+int
+_PyEval_SetProfile(PyThreadState *tstate, Py_tracefunc func, PyObject *arg)
+{
+ assert(is_tstate_valid(tstate));
+ /* The caller must hold the GIL */
+ assert(PyGILState_Check());
+
+ /* Call _PySys_Audit() in the context of the current thread state,
+ even if tstate is not the current thread state. */
+ PyThreadState *current_tstate = _PyThreadState_GET();
+ if (_PySys_Audit(current_tstate, "sys.setprofile", NULL) < 0) {
+ return -1;
+ }
+ /* Setup PEP 669 monitoring callbacks and events. */
+ if (!tstate->interp->sys_profile_initialized) {
+ tstate->interp->sys_profile_initialized = true;
+ if (set_callbacks(PY_MONITORING_SYS_PROFILE_ID,
+ (vectorcallfunc)sys_profile_func2, PyTrace_CALL,
+ PY_MONITORING_EVENT_PY_START, PY_MONITORING_EVENT_PY_RESUME)) {
+ return -1;
+ }
+ if (set_callbacks(PY_MONITORING_SYS_PROFILE_ID,
+ (vectorcallfunc)sys_profile_func3, PyTrace_CALL,
+ PY_MONITORING_EVENT_PY_THROW, -1)) {
+ return -1;
+ }
+ if (set_callbacks(PY_MONITORING_SYS_PROFILE_ID,
+ (vectorcallfunc)sys_profile_func3, PyTrace_RETURN,
+ PY_MONITORING_EVENT_PY_RETURN, PY_MONITORING_EVENT_PY_YIELD)) {
+ return -1;
+ }
+ if (set_callbacks(PY_MONITORING_SYS_PROFILE_ID,
+ (vectorcallfunc)sys_profile_unwind, PyTrace_RETURN,
+ PY_MONITORING_EVENT_PY_UNWIND, -1)) {
+ return -1;
+ }
+ if (set_callbacks(PY_MONITORING_SYS_PROFILE_ID,
+ (vectorcallfunc)sys_profile_call_or_return, PyTrace_C_CALL,
+ PY_MONITORING_EVENT_CALL, -1)) {
+ return -1;
+ }
+ if (set_callbacks(PY_MONITORING_SYS_PROFILE_ID,
+ (vectorcallfunc)sys_profile_call_or_return, PyTrace_C_RETURN,
+ PY_MONITORING_EVENT_C_RETURN, -1)) {
+ return -1;
+ }
+ if (set_callbacks(PY_MONITORING_SYS_PROFILE_ID,
+ (vectorcallfunc)sys_profile_call_or_return, PyTrace_C_EXCEPTION,
+ PY_MONITORING_EVENT_C_RAISE, -1)) {
+ return -1;
+ }
+ }
+
+ int delta = (func != NULL) - (tstate->c_profilefunc != NULL);
+ tstate->c_profilefunc = func;
+ PyObject *old_profileobj = tstate->c_profileobj;
+ tstate->c_profileobj = Py_XNewRef(arg);
+ Py_XDECREF(old_profileobj);
+ tstate->interp->sys_profiling_threads += delta;
+ assert(tstate->interp->sys_profiling_threads >= 0);
+
+ uint32_t events = 0;
+ if (tstate->interp->sys_profiling_threads) {
+ events =
+ (1 << PY_MONITORING_EVENT_PY_START) | (1 << PY_MONITORING_EVENT_PY_RESUME) |
+ (1 << PY_MONITORING_EVENT_PY_RETURN) | (1 << PY_MONITORING_EVENT_PY_YIELD) |
+ (1 << PY_MONITORING_EVENT_CALL) | (1 << PY_MONITORING_EVENT_PY_UNWIND) |
+ (1 << PY_MONITORING_EVENT_PY_THROW);
+ }
+ return _PyMonitoring_SetEvents(PY_MONITORING_SYS_PROFILE_ID, events);
+}
+
+int
+_PyEval_SetTrace(PyThreadState *tstate, Py_tracefunc func, PyObject *arg)
+{
+ assert(is_tstate_valid(tstate));
+ /* The caller must hold the GIL */
+ assert(PyGILState_Check());
+
+ /* Call _PySys_Audit() in the context of the current thread state,
+ even if tstate is not the current thread state. */
+ PyThreadState *current_tstate = _PyThreadState_GET();
+ if (_PySys_Audit(current_tstate, "sys.settrace", NULL) < 0) {
+ return -1;
+ }
+
+ assert(tstate->interp->sys_tracing_threads >= 0);
+ /* Setup PEP 669 monitoring callbacks and events. */
+ if (!tstate->interp->sys_trace_initialized) {
+ tstate->interp->sys_trace_initialized = true;
+ if (set_callbacks(PY_MONITORING_SYS_TRACE_ID,
+ (vectorcallfunc)sys_trace_func2, PyTrace_CALL,
+ PY_MONITORING_EVENT_PY_START, PY_MONITORING_EVENT_PY_RESUME)) {
+ return -1;
+ }
+ if (set_callbacks(PY_MONITORING_SYS_TRACE_ID,
+ (vectorcallfunc)sys_trace_func3, PyTrace_CALL,
+ PY_MONITORING_EVENT_PY_THROW, -1)) {
+ return -1;
+ }
+ if (set_callbacks(PY_MONITORING_SYS_TRACE_ID,
+ (vectorcallfunc)sys_trace_return, PyTrace_RETURN,
+ PY_MONITORING_EVENT_PY_RETURN, -1)) {
+ return -1;
+ }
+ if (set_callbacks(PY_MONITORING_SYS_TRACE_ID,
+ (vectorcallfunc)sys_trace_yield, PyTrace_RETURN,
+ PY_MONITORING_EVENT_PY_YIELD, -1)) {
+ return -1;
+ }
+ if (set_callbacks(PY_MONITORING_SYS_TRACE_ID,
+ (vectorcallfunc)sys_trace_exception_func, PyTrace_EXCEPTION,
+ PY_MONITORING_EVENT_RAISE, PY_MONITORING_EVENT_STOP_ITERATION)) {
+ return -1;
+ }
+ if (set_callbacks(PY_MONITORING_SYS_TRACE_ID,
+ (vectorcallfunc)sys_trace_line_func, PyTrace_LINE,
+ PY_MONITORING_EVENT_LINE, -1)) {
+ return -1;
+ }
+ if (set_callbacks(PY_MONITORING_SYS_TRACE_ID,
+ (vectorcallfunc)sys_trace_func3, PyTrace_RETURN,
+ PY_MONITORING_EVENT_PY_UNWIND, -1)) {
+ return -1;
+ }
+ if (set_callbacks(PY_MONITORING_SYS_TRACE_ID,
+ (vectorcallfunc)sys_trace_jump_func, PyTrace_LINE,
+ PY_MONITORING_EVENT_JUMP, -1)) {
+ return -1;
+ }
+ if (set_callbacks(PY_MONITORING_SYS_TRACE_ID,
+ (vectorcallfunc)sys_trace_instruction_func, PyTrace_OPCODE,
+ PY_MONITORING_EVENT_INSTRUCTION, -1)) {
+ return -1;
+ }
+ }
+
+ int delta = (func != NULL) - (tstate->c_tracefunc != NULL);
+ tstate->c_tracefunc = func;
+ PyObject *old_traceobj = tstate->c_traceobj;
+ tstate->c_traceobj = Py_XNewRef(arg);
+ Py_XDECREF(old_traceobj);
+ tstate->interp->sys_tracing_threads += delta;
+ assert(tstate->interp->sys_tracing_threads >= 0);
+
+ uint32_t events = 0;
+ if (tstate->interp->sys_tracing_threads) {
+ events =
+ (1 << PY_MONITORING_EVENT_PY_START) | (1 << PY_MONITORING_EVENT_PY_RESUME) |
+ (1 << PY_MONITORING_EVENT_PY_RETURN) | (1 << PY_MONITORING_EVENT_PY_YIELD) |
+ (1 << PY_MONITORING_EVENT_RAISE) | (1 << PY_MONITORING_EVENT_LINE) |
+ (1 << PY_MONITORING_EVENT_JUMP) | (1 << PY_MONITORING_EVENT_BRANCH) |
+ (1 << PY_MONITORING_EVENT_PY_UNWIND) | (1 << PY_MONITORING_EVENT_PY_THROW) |
+ (1 << PY_MONITORING_EVENT_STOP_ITERATION) |
+ (1 << PY_MONITORING_EVENT_EXCEPTION_HANDLED);
+ if (tstate->interp->f_opcode_trace_set) {
+ events |= (1 << PY_MONITORING_EVENT_INSTRUCTION);
+ }
+ }
+ return _PyMonitoring_SetEvents(PY_MONITORING_SYS_TRACE_ID, events);
+}
diff --git a/contrib/tools/python3/Python/marshal.c b/contrib/tools/python3/Python/marshal.c
new file mode 100644
index 00000000000..90953cbb728
--- /dev/null
+++ b/contrib/tools/python3/Python/marshal.c
@@ -0,0 +1,1903 @@
+
+/* Write Python objects to files and read them back.
+ This is primarily intended for writing and reading compiled Python code,
+ even though dicts, lists, sets and frozensets, not commonly seen in
+ code objects, are supported.
+ Version 3 of this protocol properly supports circular links
+ and sharing. */
+
+#define PY_SSIZE_T_CLEAN
+
+#include "Python.h"
+#include "pycore_call.h" // _PyObject_CallNoArgs()
+#include "pycore_code.h" // _PyCode_New()
+#include "pycore_long.h" // _PyLong_DigitCount
+#include "pycore_hashtable.h" // _Py_hashtable_t
+#include "marshal.h" // Py_MARSHAL_VERSION
+
+/*[clinic input]
+module marshal
+[clinic start generated code]*/
+/*[clinic end generated code: output=da39a3ee5e6b4b0d input=c982b7930dee17db]*/
+
+#include "clinic/marshal.c.h"
+
+/* High water mark to determine when the marshalled object is dangerously deep
+ * and risks coring the interpreter. When the object stack gets this deep,
+ * raise an exception instead of continuing.
+ * On Windows debug builds, reduce this value.
+ *
+ * BUG: https://bugs.python.org/issue33720
+ * On Windows PGO builds, the r_object function overallocates its stack and
+ * can cause a stack overflow. We reduce the maximum depth for all Windows
+ * releases to protect against this.
+ * #if defined(MS_WINDOWS) && defined(_DEBUG)
+ */
+#if defined(MS_WINDOWS)
+#define MAX_MARSHAL_STACK_DEPTH 1000
+#elif defined(__wasi__)
+#define MAX_MARSHAL_STACK_DEPTH 1500
+#else
+#define MAX_MARSHAL_STACK_DEPTH 2000
+#endif
+
+#define TYPE_NULL '0'
+#define TYPE_NONE 'N'
+#define TYPE_FALSE 'F'
+#define TYPE_TRUE 'T'
+#define TYPE_STOPITER 'S'
+#define TYPE_ELLIPSIS '.'
+#define TYPE_INT 'i'
+/* TYPE_INT64 is not generated anymore.
+ Supported for backward compatibility only. */
+#define TYPE_INT64 'I'
+#define TYPE_FLOAT 'f'
+#define TYPE_BINARY_FLOAT 'g'
+#define TYPE_COMPLEX 'x'
+#define TYPE_BINARY_COMPLEX 'y'
+#define TYPE_LONG 'l'
+#define TYPE_STRING 's'
+#define TYPE_INTERNED 't'
+#define TYPE_REF 'r'
+#define TYPE_TUPLE '('
+#define TYPE_LIST '['
+#define TYPE_DICT '{'
+#define TYPE_CODE 'c'
+#define TYPE_UNICODE 'u'
+#define TYPE_UNKNOWN '?'
+#define TYPE_SET '<'
+#define TYPE_FROZENSET '>'
+#define FLAG_REF '\x80' /* with a type, add obj to index */
+
+#define TYPE_ASCII 'a'
+#define TYPE_ASCII_INTERNED 'A'
+#define TYPE_SMALL_TUPLE ')'
+#define TYPE_SHORT_ASCII 'z'
+#define TYPE_SHORT_ASCII_INTERNED 'Z'
+
+#define WFERR_OK 0
+#define WFERR_UNMARSHALLABLE 1
+#define WFERR_NESTEDTOODEEP 2
+#define WFERR_NOMEMORY 3
+
+typedef struct {
+ FILE *fp;
+ int error; /* see WFERR_* values */
+ int depth;
+ PyObject *str;
+ char *ptr;
+ const char *end;
+ char *buf;
+ _Py_hashtable_t *hashtable;
+ int version;
+} WFILE;
+
+#define w_byte(c, p) do { \
+ if ((p)->ptr != (p)->end || w_reserve((p), 1)) \
+ *(p)->ptr++ = (c); \
+ } while(0)
+
+static void
+w_flush(WFILE *p)
+{
+ assert(p->fp != NULL);
+ fwrite(p->buf, 1, p->ptr - p->buf, p->fp);
+ p->ptr = p->buf;
+}
+
+static int
+w_reserve(WFILE *p, Py_ssize_t needed)
+{
+ Py_ssize_t pos, size, delta;
+ if (p->ptr == NULL)
+ return 0; /* An error already occurred */
+ if (p->fp != NULL) {
+ w_flush(p);
+ return needed <= p->end - p->ptr;
+ }
+ assert(p->str != NULL);
+ pos = p->ptr - p->buf;
+ size = PyBytes_GET_SIZE(p->str);
+ if (size > 16*1024*1024)
+ delta = (size >> 3); /* 12.5% overallocation */
+ else
+ delta = size + 1024;
+ delta = Py_MAX(delta, needed);
+ if (delta > PY_SSIZE_T_MAX - size) {
+ p->error = WFERR_NOMEMORY;
+ return 0;
+ }
+ size += delta;
+ if (_PyBytes_Resize(&p->str, size) != 0) {
+ p->end = p->ptr = p->buf = NULL;
+ return 0;
+ }
+ else {
+ p->buf = PyBytes_AS_STRING(p->str);
+ p->ptr = p->buf + pos;
+ p->end = p->buf + size;
+ return 1;
+ }
+}
+
+static void
+w_string(const void *s, Py_ssize_t n, WFILE *p)
+{
+ Py_ssize_t m;
+ if (!n || p->ptr == NULL)
+ return;
+ m = p->end - p->ptr;
+ if (p->fp != NULL) {
+ if (n <= m) {
+ memcpy(p->ptr, s, n);
+ p->ptr += n;
+ }
+ else {
+ w_flush(p);
+ fwrite(s, 1, n, p->fp);
+ }
+ }
+ else {
+ if (n <= m || w_reserve(p, n - m)) {
+ memcpy(p->ptr, s, n);
+ p->ptr += n;
+ }
+ }
+}
+
+static void
+w_short(int x, WFILE *p)
+{
+ w_byte((char)( x & 0xff), p);
+ w_byte((char)((x>> 8) & 0xff), p);
+}
+
+static void
+w_long(long x, WFILE *p)
+{
+ w_byte((char)( x & 0xff), p);
+ w_byte((char)((x>> 8) & 0xff), p);
+ w_byte((char)((x>>16) & 0xff), p);
+ w_byte((char)((x>>24) & 0xff), p);
+}
+
+#define SIZE32_MAX 0x7FFFFFFF
+
+#if SIZEOF_SIZE_T > 4
+# define W_SIZE(n, p) do { \
+ if ((n) > SIZE32_MAX) { \
+ (p)->depth--; \
+ (p)->error = WFERR_UNMARSHALLABLE; \
+ return; \
+ } \
+ w_long((long)(n), p); \
+ } while(0)
+#else
+# define W_SIZE w_long
+#endif
+
+static void
+w_pstring(const void *s, Py_ssize_t n, WFILE *p)
+{
+ W_SIZE(n, p);
+ w_string(s, n, p);
+}
+
+static void
+w_short_pstring(const void *s, Py_ssize_t n, WFILE *p)
+{
+ w_byte(Py_SAFE_DOWNCAST(n, Py_ssize_t, unsigned char), p);
+ w_string(s, n, p);
+}
+
+/* We assume that Python ints are stored internally in base some power of
+ 2**15; for the sake of portability we'll always read and write them in base
+ exactly 2**15. */
+
+#define PyLong_MARSHAL_SHIFT 15
+#define PyLong_MARSHAL_BASE ((short)1 << PyLong_MARSHAL_SHIFT)
+#define PyLong_MARSHAL_MASK (PyLong_MARSHAL_BASE - 1)
+#if PyLong_SHIFT % PyLong_MARSHAL_SHIFT != 0
+#error "PyLong_SHIFT must be a multiple of PyLong_MARSHAL_SHIFT"
+#endif
+#define PyLong_MARSHAL_RATIO (PyLong_SHIFT / PyLong_MARSHAL_SHIFT)
+
+#define W_TYPE(t, p) do { \
+ w_byte((t) | flag, (p)); \
+} while(0)
+
+static void
+w_PyLong(const PyLongObject *ob, char flag, WFILE *p)
+{
+ Py_ssize_t i, j, n, l;
+ digit d;
+
+ W_TYPE(TYPE_LONG, p);
+ if (_PyLong_IsZero(ob)) {
+ w_long((long)0, p);
+ return;
+ }
+
+ /* set l to number of base PyLong_MARSHAL_BASE digits */
+ n = _PyLong_DigitCount(ob);
+ l = (n-1) * PyLong_MARSHAL_RATIO;
+ d = ob->long_value.ob_digit[n-1];
+ assert(d != 0); /* a PyLong is always normalized */
+ do {
+ d >>= PyLong_MARSHAL_SHIFT;
+ l++;
+ } while (d != 0);
+ if (l > SIZE32_MAX) {
+ p->depth--;
+ p->error = WFERR_UNMARSHALLABLE;
+ return;
+ }
+ w_long((long)(_PyLong_IsNegative(ob) ? -l : l), p);
+
+ for (i=0; i < n-1; i++) {
+ d = ob->long_value.ob_digit[i];
+ for (j=0; j < PyLong_MARSHAL_RATIO; j++) {
+ w_short(d & PyLong_MARSHAL_MASK, p);
+ d >>= PyLong_MARSHAL_SHIFT;
+ }
+ assert (d == 0);
+ }
+ d = ob->long_value.ob_digit[n-1];
+ do {
+ w_short(d & PyLong_MARSHAL_MASK, p);
+ d >>= PyLong_MARSHAL_SHIFT;
+ } while (d != 0);
+}
+
+static void
+w_float_bin(double v, WFILE *p)
+{
+ char buf[8];
+ if (PyFloat_Pack8(v, buf, 1) < 0) {
+ p->error = WFERR_UNMARSHALLABLE;
+ return;
+ }
+ w_string(buf, 8, p);
+}
+
+static void
+w_float_str(double v, WFILE *p)
+{
+ char *buf = PyOS_double_to_string(v, 'g', 17, 0, NULL);
+ if (!buf) {
+ p->error = WFERR_NOMEMORY;
+ return;
+ }
+ w_short_pstring(buf, strlen(buf), p);
+ PyMem_Free(buf);
+}
+
+static int
+w_ref(PyObject *v, char *flag, WFILE *p)
+{
+ _Py_hashtable_entry_t *entry;
+ int w;
+
+ if (p->version < 3 || p->hashtable == NULL)
+ return 0; /* not writing object references */
+
+ /* If it has only one reference, it definitely isn't shared.
+ * But we use TYPE_REF always for interned string, to PYC file stable
+ * as possible.
+ */
+ if (Py_REFCNT(v) == 1 &&
+ !(PyUnicode_CheckExact(v) && PyUnicode_CHECK_INTERNED(v))) {
+ return 0;
+ }
+
+ entry = _Py_hashtable_get_entry(p->hashtable, v);
+ if (entry != NULL) {
+ /* write the reference index to the stream */
+ w = (int)(uintptr_t)entry->value;
+ /* we don't store "long" indices in the dict */
+ assert(0 <= w && w <= 0x7fffffff);
+ w_byte(TYPE_REF, p);
+ w_long(w, p);
+ return 1;
+ } else {
+ size_t s = p->hashtable->nentries;
+ /* we don't support long indices */
+ if (s >= 0x7fffffff) {
+ PyErr_SetString(PyExc_ValueError, "too many objects");
+ goto err;
+ }
+ w = (int)s;
+ if (_Py_hashtable_set(p->hashtable, Py_NewRef(v),
+ (void *)(uintptr_t)w) < 0) {
+ Py_DECREF(v);
+ goto err;
+ }
+ *flag |= FLAG_REF;
+ return 0;
+ }
+err:
+ p->error = WFERR_UNMARSHALLABLE;
+ return 1;
+}
+
+static void
+w_complex_object(PyObject *v, char flag, WFILE *p);
+
+static void
+w_object(PyObject *v, WFILE *p)
+{
+ char flag = '\0';
+
+ p->depth++;
+
+ if (p->depth > MAX_MARSHAL_STACK_DEPTH) {
+ p->error = WFERR_NESTEDTOODEEP;
+ }
+ else if (v == NULL) {
+ w_byte(TYPE_NULL, p);
+ }
+ else if (v == Py_None) {
+ w_byte(TYPE_NONE, p);
+ }
+ else if (v == PyExc_StopIteration) {
+ w_byte(TYPE_STOPITER, p);
+ }
+ else if (v == Py_Ellipsis) {
+ w_byte(TYPE_ELLIPSIS, p);
+ }
+ else if (v == Py_False) {
+ w_byte(TYPE_FALSE, p);
+ }
+ else if (v == Py_True) {
+ w_byte(TYPE_TRUE, p);
+ }
+ else if (!w_ref(v, &flag, p))
+ w_complex_object(v, flag, p);
+
+ p->depth--;
+}
+
+static void
+w_complex_object(PyObject *v, char flag, WFILE *p)
+{
+ Py_ssize_t i, n;
+
+ if (PyLong_CheckExact(v)) {
+ int overflow;
+ long x = PyLong_AsLongAndOverflow(v, &overflow);
+ if (overflow) {
+ w_PyLong((PyLongObject *)v, flag, p);
+ }
+ else {
+#if SIZEOF_LONG > 4
+ long y = Py_ARITHMETIC_RIGHT_SHIFT(long, x, 31);
+ if (y && y != -1) {
+ /* Too large for TYPE_INT */
+ w_PyLong((PyLongObject*)v, flag, p);
+ }
+ else
+#endif
+ {
+ W_TYPE(TYPE_INT, p);
+ w_long(x, p);
+ }
+ }
+ }
+ else if (PyFloat_CheckExact(v)) {
+ if (p->version > 1) {
+ W_TYPE(TYPE_BINARY_FLOAT, p);
+ w_float_bin(PyFloat_AS_DOUBLE(v), p);
+ }
+ else {
+ W_TYPE(TYPE_FLOAT, p);
+ w_float_str(PyFloat_AS_DOUBLE(v), p);
+ }
+ }
+ else if (PyComplex_CheckExact(v)) {
+ if (p->version > 1) {
+ W_TYPE(TYPE_BINARY_COMPLEX, p);
+ w_float_bin(PyComplex_RealAsDouble(v), p);
+ w_float_bin(PyComplex_ImagAsDouble(v), p);
+ }
+ else {
+ W_TYPE(TYPE_COMPLEX, p);
+ w_float_str(PyComplex_RealAsDouble(v), p);
+ w_float_str(PyComplex_ImagAsDouble(v), p);
+ }
+ }
+ else if (PyBytes_CheckExact(v)) {
+ W_TYPE(TYPE_STRING, p);
+ w_pstring(PyBytes_AS_STRING(v), PyBytes_GET_SIZE(v), p);
+ }
+ else if (PyUnicode_CheckExact(v)) {
+ if (p->version >= 4 && PyUnicode_IS_ASCII(v)) {
+ int is_short = PyUnicode_GET_LENGTH(v) < 256;
+ if (is_short) {
+ if (PyUnicode_CHECK_INTERNED(v))
+ W_TYPE(TYPE_SHORT_ASCII_INTERNED, p);
+ else
+ W_TYPE(TYPE_SHORT_ASCII, p);
+ w_short_pstring(PyUnicode_1BYTE_DATA(v),
+ PyUnicode_GET_LENGTH(v), p);
+ }
+ else {
+ if (PyUnicode_CHECK_INTERNED(v))
+ W_TYPE(TYPE_ASCII_INTERNED, p);
+ else
+ W_TYPE(TYPE_ASCII, p);
+ w_pstring(PyUnicode_1BYTE_DATA(v),
+ PyUnicode_GET_LENGTH(v), p);
+ }
+ }
+ else {
+ PyObject *utf8;
+ utf8 = PyUnicode_AsEncodedString(v, "utf8", "surrogatepass");
+ if (utf8 == NULL) {
+ p->depth--;
+ p->error = WFERR_UNMARSHALLABLE;
+ return;
+ }
+ if (p->version >= 3 && PyUnicode_CHECK_INTERNED(v))
+ W_TYPE(TYPE_INTERNED, p);
+ else
+ W_TYPE(TYPE_UNICODE, p);
+ w_pstring(PyBytes_AS_STRING(utf8), PyBytes_GET_SIZE(utf8), p);
+ Py_DECREF(utf8);
+ }
+ }
+ else if (PyTuple_CheckExact(v)) {
+ n = PyTuple_GET_SIZE(v);
+ if (p->version >= 4 && n < 256) {
+ W_TYPE(TYPE_SMALL_TUPLE, p);
+ w_byte((unsigned char)n, p);
+ }
+ else {
+ W_TYPE(TYPE_TUPLE, p);
+ W_SIZE(n, p);
+ }
+ for (i = 0; i < n; i++) {
+ w_object(PyTuple_GET_ITEM(v, i), p);
+ }
+ }
+ else if (PyList_CheckExact(v)) {
+ W_TYPE(TYPE_LIST, p);
+ n = PyList_GET_SIZE(v);
+ W_SIZE(n, p);
+ for (i = 0; i < n; i++) {
+ w_object(PyList_GET_ITEM(v, i), p);
+ }
+ }
+ else if (PyDict_CheckExact(v)) {
+ Py_ssize_t pos;
+ PyObject *key, *value;
+ W_TYPE(TYPE_DICT, p);
+ /* This one is NULL object terminated! */
+ pos = 0;
+ while (PyDict_Next(v, &pos, &key, &value)) {
+ w_object(key, p);
+ w_object(value, p);
+ }
+ w_object((PyObject *)NULL, p);
+ }
+ else if (PyAnySet_CheckExact(v)) {
+ PyObject *value;
+ Py_ssize_t pos = 0;
+ Py_hash_t hash;
+
+ if (PyFrozenSet_CheckExact(v))
+ W_TYPE(TYPE_FROZENSET, p);
+ else
+ W_TYPE(TYPE_SET, p);
+ n = PySet_GET_SIZE(v);
+ W_SIZE(n, p);
+ // bpo-37596: To support reproducible builds, sets and frozensets need
+ // to have their elements serialized in a consistent order (even when
+ // they have been scrambled by hash randomization). To ensure this, we
+ // use an order equivalent to sorted(v, key=marshal.dumps):
+ PyObject *pairs = PyList_New(n);
+ if (pairs == NULL) {
+ p->error = WFERR_NOMEMORY;
+ return;
+ }
+ Py_ssize_t i = 0;
+ while (_PySet_NextEntry(v, &pos, &value, &hash)) {
+ PyObject *dump = PyMarshal_WriteObjectToString(value, p->version);
+ if (dump == NULL) {
+ p->error = WFERR_UNMARSHALLABLE;
+ Py_DECREF(pairs);
+ return;
+ }
+ PyObject *pair = PyTuple_Pack(2, dump, value);
+ Py_DECREF(dump);
+ if (pair == NULL) {
+ p->error = WFERR_NOMEMORY;
+ Py_DECREF(pairs);
+ return;
+ }
+ PyList_SET_ITEM(pairs, i++, pair);
+ }
+ assert(i == n);
+ if (PyList_Sort(pairs)) {
+ p->error = WFERR_NOMEMORY;
+ Py_DECREF(pairs);
+ return;
+ }
+ for (Py_ssize_t i = 0; i < n; i++) {
+ PyObject *pair = PyList_GET_ITEM(pairs, i);
+ value = PyTuple_GET_ITEM(pair, 1);
+ w_object(value, p);
+ }
+ Py_DECREF(pairs);
+ }
+ else if (PyCode_Check(v)) {
+ PyCodeObject *co = (PyCodeObject *)v;
+ PyObject *co_code = _PyCode_GetCode(co);
+ if (co_code == NULL) {
+ p->error = WFERR_NOMEMORY;
+ return;
+ }
+ W_TYPE(TYPE_CODE, p);
+ w_long(co->co_argcount, p);
+ w_long(co->co_posonlyargcount, p);
+ w_long(co->co_kwonlyargcount, p);
+ w_long(co->co_stacksize, p);
+ w_long(co->co_flags, p);
+ w_object(co_code, p);
+ w_object(co->co_consts, p);
+ w_object(co->co_names, p);
+ w_object(co->co_localsplusnames, p);
+ w_object(co->co_localspluskinds, p);
+ w_object(co->co_filename, p);
+ w_object(co->co_name, p);
+ w_object(co->co_qualname, p);
+ w_long(co->co_firstlineno, p);
+ w_object(co->co_linetable, p);
+ w_object(co->co_exceptiontable, p);
+ Py_DECREF(co_code);
+ }
+ else if (PyObject_CheckBuffer(v)) {
+ /* Write unknown bytes-like objects as a bytes object */
+ Py_buffer view;
+ if (PyObject_GetBuffer(v, &view, PyBUF_SIMPLE) != 0) {
+ w_byte(TYPE_UNKNOWN, p);
+ p->depth--;
+ p->error = WFERR_UNMARSHALLABLE;
+ return;
+ }
+ W_TYPE(TYPE_STRING, p);
+ w_pstring(view.buf, view.len, p);
+ PyBuffer_Release(&view);
+ }
+ else {
+ W_TYPE(TYPE_UNKNOWN, p);
+ p->error = WFERR_UNMARSHALLABLE;
+ }
+}
+
+static void
+w_decref_entry(void *key)
+{
+ PyObject *entry_key = (PyObject *)key;
+ Py_XDECREF(entry_key);
+}
+
+static int
+w_init_refs(WFILE *wf, int version)
+{
+ if (version >= 3) {
+ wf->hashtable = _Py_hashtable_new_full(_Py_hashtable_hash_ptr,
+ _Py_hashtable_compare_direct,
+ w_decref_entry, NULL, NULL);
+ if (wf->hashtable == NULL) {
+ PyErr_NoMemory();
+ return -1;
+ }
+ }
+ return 0;
+}
+
+static void
+w_clear_refs(WFILE *wf)
+{
+ if (wf->hashtable != NULL) {
+ _Py_hashtable_destroy(wf->hashtable);
+ }
+}
+
+/* version currently has no effect for writing ints. */
+/* Note that while the documentation states that this function
+ * can error, currently it never does. Setting an exception in
+ * this function should be regarded as an API-breaking change.
+ */
+void
+PyMarshal_WriteLongToFile(long x, FILE *fp, int version)
+{
+ char buf[4];
+ WFILE wf;
+ memset(&wf, 0, sizeof(wf));
+ wf.fp = fp;
+ wf.ptr = wf.buf = buf;
+ wf.end = wf.ptr + sizeof(buf);
+ wf.error = WFERR_OK;
+ wf.version = version;
+ w_long(x, &wf);
+ w_flush(&wf);
+}
+
+void
+PyMarshal_WriteObjectToFile(PyObject *x, FILE *fp, int version)
+{
+ char buf[BUFSIZ];
+ WFILE wf;
+ if (PySys_Audit("marshal.dumps", "Oi", x, version) < 0) {
+ return; /* caller must check PyErr_Occurred() */
+ }
+ memset(&wf, 0, sizeof(wf));
+ wf.fp = fp;
+ wf.ptr = wf.buf = buf;
+ wf.end = wf.ptr + sizeof(buf);
+ wf.error = WFERR_OK;
+ wf.version = version;
+ if (w_init_refs(&wf, version)) {
+ return; /* caller must check PyErr_Occurred() */
+ }
+ w_object(x, &wf);
+ w_clear_refs(&wf);
+ w_flush(&wf);
+}
+
+typedef struct {
+ FILE *fp;
+ int depth;
+ PyObject *readable; /* Stream-like object being read from */
+ const char *ptr;
+ const char *end;
+ char *buf;
+ Py_ssize_t buf_size;
+ PyObject *refs; /* a list */
+} RFILE;
+
+static const char *
+r_string(Py_ssize_t n, RFILE *p)
+{
+ Py_ssize_t read = -1;
+
+ if (p->ptr != NULL) {
+ /* Fast path for loads() */
+ const char *res = p->ptr;
+ Py_ssize_t left = p->end - p->ptr;
+ if (left < n) {
+ PyErr_SetString(PyExc_EOFError,
+ "marshal data too short");
+ return NULL;
+ }
+ p->ptr += n;
+ return res;
+ }
+ if (p->buf == NULL) {
+ p->buf = PyMem_Malloc(n);
+ if (p->buf == NULL) {
+ PyErr_NoMemory();
+ return NULL;
+ }
+ p->buf_size = n;
+ }
+ else if (p->buf_size < n) {
+ char *tmp = PyMem_Realloc(p->buf, n);
+ if (tmp == NULL) {
+ PyErr_NoMemory();
+ return NULL;
+ }
+ p->buf = tmp;
+ p->buf_size = n;
+ }
+
+ if (!p->readable) {
+ assert(p->fp != NULL);
+ read = fread(p->buf, 1, n, p->fp);
+ }
+ else {
+ PyObject *res, *mview;
+ Py_buffer buf;
+
+ if (PyBuffer_FillInfo(&buf, NULL, p->buf, n, 0, PyBUF_CONTIG) == -1)
+ return NULL;
+ mview = PyMemoryView_FromBuffer(&buf);
+ if (mview == NULL)
+ return NULL;
+
+ res = _PyObject_CallMethod(p->readable, &_Py_ID(readinto), "N", mview);
+ if (res != NULL) {
+ read = PyNumber_AsSsize_t(res, PyExc_ValueError);
+ Py_DECREF(res);
+ }
+ }
+ if (read != n) {
+ if (!PyErr_Occurred()) {
+ if (read > n)
+ PyErr_Format(PyExc_ValueError,
+ "read() returned too much data: "
+ "%zd bytes requested, %zd returned",
+ n, read);
+ else
+ PyErr_SetString(PyExc_EOFError,
+ "EOF read where not expected");
+ }
+ return NULL;
+ }
+ return p->buf;
+}
+
+static int
+r_byte(RFILE *p)
+{
+ if (p->ptr != NULL) {
+ if (p->ptr < p->end) {
+ return (unsigned char) *p->ptr++;
+ }
+ }
+ else if (!p->readable) {
+ assert(p->fp);
+ int c = getc(p->fp);
+ if (c != EOF) {
+ return c;
+ }
+ }
+ else {
+ const char *ptr = r_string(1, p);
+ if (ptr != NULL) {
+ return *(const unsigned char *) ptr;
+ }
+ return EOF;
+ }
+ PyErr_SetString(PyExc_EOFError,
+ "EOF read where not expected");
+ return EOF;
+}
+
+static int
+r_short(RFILE *p)
+{
+ short x = -1;
+ const unsigned char *buffer;
+
+ buffer = (const unsigned char *) r_string(2, p);
+ if (buffer != NULL) {
+ x = buffer[0];
+ x |= buffer[1] << 8;
+ /* Sign-extension, in case short greater than 16 bits */
+ x |= -(x & 0x8000);
+ }
+ return x;
+}
+
+static long
+r_long(RFILE *p)
+{
+ long x = -1;
+ const unsigned char *buffer;
+
+ buffer = (const unsigned char *) r_string(4, p);
+ if (buffer != NULL) {
+ x = buffer[0];
+ x |= (long)buffer[1] << 8;
+ x |= (long)buffer[2] << 16;
+ x |= (long)buffer[3] << 24;
+#if SIZEOF_LONG > 4
+ /* Sign extension for 64-bit machines */
+ x |= -(x & 0x80000000L);
+#endif
+ }
+ return x;
+}
+
+/* r_long64 deals with the TYPE_INT64 code. */
+static PyObject *
+r_long64(RFILE *p)
+{
+ const unsigned char *buffer = (const unsigned char *) r_string(8, p);
+ if (buffer == NULL) {
+ return NULL;
+ }
+ return _PyLong_FromByteArray(buffer, 8,
+ 1 /* little endian */,
+ 1 /* signed */);
+}
+
+static PyObject *
+r_PyLong(RFILE *p)
+{
+ PyLongObject *ob;
+ long n, size, i;
+ int j, md, shorts_in_top_digit;
+ digit d;
+
+ n = r_long(p);
+ if (n == 0)
+ return (PyObject *)_PyLong_New(0);
+ if (n == -1 && PyErr_Occurred()) {
+ return NULL;
+ }
+ if (n < -SIZE32_MAX || n > SIZE32_MAX) {
+ PyErr_SetString(PyExc_ValueError,
+ "bad marshal data (long size out of range)");
+ return NULL;
+ }
+
+ size = 1 + (Py_ABS(n) - 1) / PyLong_MARSHAL_RATIO;
+ shorts_in_top_digit = 1 + (Py_ABS(n) - 1) % PyLong_MARSHAL_RATIO;
+ ob = _PyLong_New(size);
+ if (ob == NULL)
+ return NULL;
+
+ _PyLong_SetSignAndDigitCount(ob, n < 0 ? -1 : 1, size);
+
+ for (i = 0; i < size-1; i++) {
+ d = 0;
+ for (j=0; j < PyLong_MARSHAL_RATIO; j++) {
+ md = r_short(p);
+ if (md < 0 || md > PyLong_MARSHAL_BASE)
+ goto bad_digit;
+ d += (digit)md << j*PyLong_MARSHAL_SHIFT;
+ }
+ ob->long_value.ob_digit[i] = d;
+ }
+
+ d = 0;
+ for (j=0; j < shorts_in_top_digit; j++) {
+ md = r_short(p);
+ if (md < 0 || md > PyLong_MARSHAL_BASE)
+ goto bad_digit;
+ /* topmost marshal digit should be nonzero */
+ if (md == 0 && j == shorts_in_top_digit - 1) {
+ Py_DECREF(ob);
+ PyErr_SetString(PyExc_ValueError,
+ "bad marshal data (unnormalized long data)");
+ return NULL;
+ }
+ d += (digit)md << j*PyLong_MARSHAL_SHIFT;
+ }
+ assert(!PyErr_Occurred());
+ /* top digit should be nonzero, else the resulting PyLong won't be
+ normalized */
+ ob->long_value.ob_digit[size-1] = d;
+ return (PyObject *)ob;
+ bad_digit:
+ Py_DECREF(ob);
+ if (!PyErr_Occurred()) {
+ PyErr_SetString(PyExc_ValueError,
+ "bad marshal data (digit out of range in long)");
+ }
+ return NULL;
+}
+
+static double
+r_float_bin(RFILE *p)
+{
+ const char *buf = r_string(8, p);
+ if (buf == NULL)
+ return -1;
+ return PyFloat_Unpack8(buf, 1);
+}
+
+/* Issue #33720: Disable inlining for reducing the C stack consumption
+ on PGO builds. */
+Py_NO_INLINE static double
+r_float_str(RFILE *p)
+{
+ int n;
+ char buf[256];
+ const char *ptr;
+ n = r_byte(p);
+ if (n == EOF) {
+ return -1;
+ }
+ ptr = r_string(n, p);
+ if (ptr == NULL) {
+ return -1;
+ }
+ memcpy(buf, ptr, n);
+ buf[n] = '\0';
+ return PyOS_string_to_double(buf, NULL, NULL);
+}
+
+/* allocate the reflist index for a new object. Return -1 on failure */
+static Py_ssize_t
+r_ref_reserve(int flag, RFILE *p)
+{
+ if (flag) { /* currently only FLAG_REF is defined */
+ Py_ssize_t idx = PyList_GET_SIZE(p->refs);
+ if (idx >= 0x7ffffffe) {
+ PyErr_SetString(PyExc_ValueError, "bad marshal data (index list too large)");
+ return -1;
+ }
+ if (PyList_Append(p->refs, Py_None) < 0)
+ return -1;
+ return idx;
+ } else
+ return 0;
+}
+
+/* insert the new object 'o' to the reflist at previously
+ * allocated index 'idx'.
+ * 'o' can be NULL, in which case nothing is done.
+ * if 'o' was non-NULL, and the function succeeds, 'o' is returned.
+ * if 'o' was non-NULL, and the function fails, 'o' is released and
+ * NULL returned. This simplifies error checking at the call site since
+ * a single test for NULL for the function result is enough.
+ */
+static PyObject *
+r_ref_insert(PyObject *o, Py_ssize_t idx, int flag, RFILE *p)
+{
+ if (o != NULL && flag) { /* currently only FLAG_REF is defined */
+ PyObject *tmp = PyList_GET_ITEM(p->refs, idx);
+ PyList_SET_ITEM(p->refs, idx, Py_NewRef(o));
+ Py_DECREF(tmp);
+ }
+ return o;
+}
+
+/* combination of both above, used when an object can be
+ * created whenever it is seen in the file, as opposed to
+ * after having loaded its sub-objects.
+ */
+static PyObject *
+r_ref(PyObject *o, int flag, RFILE *p)
+{
+ assert(flag & FLAG_REF);
+ if (o == NULL)
+ return NULL;
+ if (PyList_Append(p->refs, o) < 0) {
+ Py_DECREF(o); /* release the new object */
+ return NULL;
+ }
+ return o;
+}
+
+static PyObject *
+r_object(RFILE *p)
+{
+ /* NULL is a valid return value, it does not necessarily means that
+ an exception is set. */
+ PyObject *v, *v2;
+ Py_ssize_t idx = 0;
+ long i, n;
+ int type, code = r_byte(p);
+ int flag, is_interned = 0;
+ PyObject *retval = NULL;
+
+ if (code == EOF) {
+ if (PyErr_ExceptionMatches(PyExc_EOFError)) {
+ PyErr_SetString(PyExc_EOFError,
+ "EOF read where object expected");
+ }
+ return NULL;
+ }
+
+ p->depth++;
+
+ if (p->depth > MAX_MARSHAL_STACK_DEPTH) {
+ p->depth--;
+ PyErr_SetString(PyExc_ValueError, "recursion limit exceeded");
+ return NULL;
+ }
+
+ flag = code & FLAG_REF;
+ type = code & ~FLAG_REF;
+
+#define R_REF(O) do{\
+ if (flag) \
+ O = r_ref(O, flag, p);\
+} while (0)
+
+ switch (type) {
+
+ case TYPE_NULL:
+ break;
+
+ case TYPE_NONE:
+ retval = Py_NewRef(Py_None);
+ break;
+
+ case TYPE_STOPITER:
+ retval = Py_NewRef(PyExc_StopIteration);
+ break;
+
+ case TYPE_ELLIPSIS:
+ retval = Py_NewRef(Py_Ellipsis);
+ break;
+
+ case TYPE_FALSE:
+ retval = Py_NewRef(Py_False);
+ break;
+
+ case TYPE_TRUE:
+ retval = Py_NewRef(Py_True);
+ break;
+
+ case TYPE_INT:
+ n = r_long(p);
+ if (n == -1 && PyErr_Occurred()) {
+ break;
+ }
+ retval = PyLong_FromLong(n);
+ R_REF(retval);
+ break;
+
+ case TYPE_INT64:
+ retval = r_long64(p);
+ R_REF(retval);
+ break;
+
+ case TYPE_LONG:
+ retval = r_PyLong(p);
+ R_REF(retval);
+ break;
+
+ case TYPE_FLOAT:
+ {
+ double x = r_float_str(p);
+ if (x == -1.0 && PyErr_Occurred())
+ break;
+ retval = PyFloat_FromDouble(x);
+ R_REF(retval);
+ break;
+ }
+
+ case TYPE_BINARY_FLOAT:
+ {
+ double x = r_float_bin(p);
+ if (x == -1.0 && PyErr_Occurred())
+ break;
+ retval = PyFloat_FromDouble(x);
+ R_REF(retval);
+ break;
+ }
+
+ case TYPE_COMPLEX:
+ {
+ Py_complex c;
+ c.real = r_float_str(p);
+ if (c.real == -1.0 && PyErr_Occurred())
+ break;
+ c.imag = r_float_str(p);
+ if (c.imag == -1.0 && PyErr_Occurred())
+ break;
+ retval = PyComplex_FromCComplex(c);
+ R_REF(retval);
+ break;
+ }
+
+ case TYPE_BINARY_COMPLEX:
+ {
+ Py_complex c;
+ c.real = r_float_bin(p);
+ if (c.real == -1.0 && PyErr_Occurred())
+ break;
+ c.imag = r_float_bin(p);
+ if (c.imag == -1.0 && PyErr_Occurred())
+ break;
+ retval = PyComplex_FromCComplex(c);
+ R_REF(retval);
+ break;
+ }
+
+ case TYPE_STRING:
+ {
+ const char *ptr;
+ n = r_long(p);
+ if (n < 0 || n > SIZE32_MAX) {
+ if (!PyErr_Occurred()) {
+ PyErr_SetString(PyExc_ValueError,
+ "bad marshal data (bytes object size out of range)");
+ }
+ break;
+ }
+ v = PyBytes_FromStringAndSize((char *)NULL, n);
+ if (v == NULL)
+ break;
+ ptr = r_string(n, p);
+ if (ptr == NULL) {
+ Py_DECREF(v);
+ break;
+ }
+ memcpy(PyBytes_AS_STRING(v), ptr, n);
+ retval = v;
+ R_REF(retval);
+ break;
+ }
+
+ case TYPE_ASCII_INTERNED:
+ is_interned = 1;
+ /* fall through */
+ case TYPE_ASCII:
+ n = r_long(p);
+ if (n < 0 || n > SIZE32_MAX) {
+ if (!PyErr_Occurred()) {
+ PyErr_SetString(PyExc_ValueError,
+ "bad marshal data (string size out of range)");
+ }
+ break;
+ }
+ goto _read_ascii;
+
+ case TYPE_SHORT_ASCII_INTERNED:
+ is_interned = 1;
+ /* fall through */
+ case TYPE_SHORT_ASCII:
+ n = r_byte(p);
+ if (n == EOF) {
+ break;
+ }
+ _read_ascii:
+ {
+ const char *ptr;
+ ptr = r_string(n, p);
+ if (ptr == NULL)
+ break;
+ v = PyUnicode_FromKindAndData(PyUnicode_1BYTE_KIND, ptr, n);
+ if (v == NULL)
+ break;
+ if (is_interned)
+ PyUnicode_InternInPlace(&v);
+ retval = v;
+ R_REF(retval);
+ break;
+ }
+
+ case TYPE_INTERNED:
+ is_interned = 1;
+ /* fall through */
+ case TYPE_UNICODE:
+ {
+ const char *buffer;
+
+ n = r_long(p);
+ if (n < 0 || n > SIZE32_MAX) {
+ if (!PyErr_Occurred()) {
+ PyErr_SetString(PyExc_ValueError,
+ "bad marshal data (string size out of range)");
+ }
+ break;
+ }
+ if (n != 0) {
+ buffer = r_string(n, p);
+ if (buffer == NULL)
+ break;
+ v = PyUnicode_DecodeUTF8(buffer, n, "surrogatepass");
+ }
+ else {
+ v = PyUnicode_New(0, 0);
+ }
+ if (v == NULL)
+ break;
+ if (is_interned)
+ PyUnicode_InternInPlace(&v);
+ retval = v;
+ R_REF(retval);
+ break;
+ }
+
+ case TYPE_SMALL_TUPLE:
+ n = r_byte(p);
+ if (n == EOF) {
+ break;
+ }
+ goto _read_tuple;
+ case TYPE_TUPLE:
+ n = r_long(p);
+ if (n < 0 || n > SIZE32_MAX) {
+ if (!PyErr_Occurred()) {
+ PyErr_SetString(PyExc_ValueError,
+ "bad marshal data (tuple size out of range)");
+ }
+ break;
+ }
+ _read_tuple:
+ v = PyTuple_New(n);
+ R_REF(v);
+ if (v == NULL)
+ break;
+
+ for (i = 0; i < n; i++) {
+ v2 = r_object(p);
+ if ( v2 == NULL ) {
+ if (!PyErr_Occurred())
+ PyErr_SetString(PyExc_TypeError,
+ "NULL object in marshal data for tuple");
+ Py_SETREF(v, NULL);
+ break;
+ }
+ PyTuple_SET_ITEM(v, i, v2);
+ }
+ retval = v;
+ break;
+
+ case TYPE_LIST:
+ n = r_long(p);
+ if (n < 0 || n > SIZE32_MAX) {
+ if (!PyErr_Occurred()) {
+ PyErr_SetString(PyExc_ValueError,
+ "bad marshal data (list size out of range)");
+ }
+ break;
+ }
+ v = PyList_New(n);
+ R_REF(v);
+ if (v == NULL)
+ break;
+ for (i = 0; i < n; i++) {
+ v2 = r_object(p);
+ if ( v2 == NULL ) {
+ if (!PyErr_Occurred())
+ PyErr_SetString(PyExc_TypeError,
+ "NULL object in marshal data for list");
+ Py_SETREF(v, NULL);
+ break;
+ }
+ PyList_SET_ITEM(v, i, v2);
+ }
+ retval = v;
+ break;
+
+ case TYPE_DICT:
+ v = PyDict_New();
+ R_REF(v);
+ if (v == NULL)
+ break;
+ for (;;) {
+ PyObject *key, *val;
+ key = r_object(p);
+ if (key == NULL)
+ break;
+ val = r_object(p);
+ if (val == NULL) {
+ Py_DECREF(key);
+ break;
+ }
+ if (PyDict_SetItem(v, key, val) < 0) {
+ Py_DECREF(key);
+ Py_DECREF(val);
+ break;
+ }
+ Py_DECREF(key);
+ Py_DECREF(val);
+ }
+ if (PyErr_Occurred()) {
+ Py_SETREF(v, NULL);
+ }
+ retval = v;
+ break;
+
+ case TYPE_SET:
+ case TYPE_FROZENSET:
+ n = r_long(p);
+ if (n < 0 || n > SIZE32_MAX) {
+ if (!PyErr_Occurred()) {
+ PyErr_SetString(PyExc_ValueError,
+ "bad marshal data (set size out of range)");
+ }
+ break;
+ }
+
+ if (n == 0 && type == TYPE_FROZENSET) {
+ /* call frozenset() to get the empty frozenset singleton */
+ v = _PyObject_CallNoArgs((PyObject*)&PyFrozenSet_Type);
+ if (v == NULL)
+ break;
+ R_REF(v);
+ retval = v;
+ }
+ else {
+ v = (type == TYPE_SET) ? PySet_New(NULL) : PyFrozenSet_New(NULL);
+ if (type == TYPE_SET) {
+ R_REF(v);
+ } else {
+ /* must use delayed registration of frozensets because they must
+ * be init with a refcount of 1
+ */
+ idx = r_ref_reserve(flag, p);
+ if (idx < 0)
+ Py_CLEAR(v); /* signal error */
+ }
+ if (v == NULL)
+ break;
+
+ for (i = 0; i < n; i++) {
+ v2 = r_object(p);
+ if ( v2 == NULL ) {
+ if (!PyErr_Occurred())
+ PyErr_SetString(PyExc_TypeError,
+ "NULL object in marshal data for set");
+ Py_SETREF(v, NULL);
+ break;
+ }
+ if (PySet_Add(v, v2) == -1) {
+ Py_DECREF(v);
+ Py_DECREF(v2);
+ v = NULL;
+ break;
+ }
+ Py_DECREF(v2);
+ }
+ if (type != TYPE_SET)
+ v = r_ref_insert(v, idx, flag, p);
+ retval = v;
+ }
+ break;
+
+ case TYPE_CODE:
+ {
+ int argcount;
+ int posonlyargcount;
+ int kwonlyargcount;
+ int stacksize;
+ int flags;
+ PyObject *code = NULL;
+ PyObject *consts = NULL;
+ PyObject *names = NULL;
+ PyObject *localsplusnames = NULL;
+ PyObject *localspluskinds = NULL;
+ PyObject *filename = NULL;
+ PyObject *name = NULL;
+ PyObject *qualname = NULL;
+ int firstlineno;
+ PyObject* linetable = NULL;
+ PyObject *exceptiontable = NULL;
+
+ idx = r_ref_reserve(flag, p);
+ if (idx < 0)
+ break;
+
+ v = NULL;
+
+ /* XXX ignore long->int overflows for now */
+ argcount = (int)r_long(p);
+ if (argcount == -1 && PyErr_Occurred())
+ goto code_error;
+ posonlyargcount = (int)r_long(p);
+ if (posonlyargcount == -1 && PyErr_Occurred()) {
+ goto code_error;
+ }
+ kwonlyargcount = (int)r_long(p);
+ if (kwonlyargcount == -1 && PyErr_Occurred())
+ goto code_error;
+ stacksize = (int)r_long(p);
+ if (stacksize == -1 && PyErr_Occurred())
+ goto code_error;
+ flags = (int)r_long(p);
+ if (flags == -1 && PyErr_Occurred())
+ goto code_error;
+ code = r_object(p);
+ if (code == NULL)
+ goto code_error;
+ consts = r_object(p);
+ if (consts == NULL)
+ goto code_error;
+ names = r_object(p);
+ if (names == NULL)
+ goto code_error;
+ localsplusnames = r_object(p);
+ if (localsplusnames == NULL)
+ goto code_error;
+ localspluskinds = r_object(p);
+ if (localspluskinds == NULL)
+ goto code_error;
+ filename = r_object(p);
+ if (filename == NULL)
+ goto code_error;
+ name = r_object(p);
+ if (name == NULL)
+ goto code_error;
+ qualname = r_object(p);
+ if (qualname == NULL)
+ goto code_error;
+ firstlineno = (int)r_long(p);
+ if (firstlineno == -1 && PyErr_Occurred())
+ break;
+ linetable = r_object(p);
+ if (linetable == NULL)
+ goto code_error;
+ exceptiontable = r_object(p);
+ if (exceptiontable == NULL)
+ goto code_error;
+
+ struct _PyCodeConstructor con = {
+ .filename = filename,
+ .name = name,
+ .qualname = qualname,
+ .flags = flags,
+
+ .code = code,
+ .firstlineno = firstlineno,
+ .linetable = linetable,
+
+ .consts = consts,
+ .names = names,
+
+ .localsplusnames = localsplusnames,
+ .localspluskinds = localspluskinds,
+
+ .argcount = argcount,
+ .posonlyargcount = posonlyargcount,
+ .kwonlyargcount = kwonlyargcount,
+
+ .stacksize = stacksize,
+
+ .exceptiontable = exceptiontable,
+ };
+
+ if (_PyCode_Validate(&con) < 0) {
+ goto code_error;
+ }
+
+ v = (PyObject *)_PyCode_New(&con);
+ if (v == NULL) {
+ goto code_error;
+ }
+
+ v = r_ref_insert(v, idx, flag, p);
+
+ code_error:
+ if (v == NULL && !PyErr_Occurred()) {
+ PyErr_SetString(PyExc_TypeError,
+ "NULL object in marshal data for code object");
+ }
+ Py_XDECREF(code);
+ Py_XDECREF(consts);
+ Py_XDECREF(names);
+ Py_XDECREF(localsplusnames);
+ Py_XDECREF(localspluskinds);
+ Py_XDECREF(filename);
+ Py_XDECREF(name);
+ Py_XDECREF(qualname);
+ Py_XDECREF(linetable);
+ Py_XDECREF(exceptiontable);
+ }
+ retval = v;
+ break;
+
+ case TYPE_REF:
+ n = r_long(p);
+ if (n < 0 || n >= PyList_GET_SIZE(p->refs)) {
+ if (!PyErr_Occurred()) {
+ PyErr_SetString(PyExc_ValueError,
+ "bad marshal data (invalid reference)");
+ }
+ break;
+ }
+ v = PyList_GET_ITEM(p->refs, n);
+ if (v == Py_None) {
+ PyErr_SetString(PyExc_ValueError, "bad marshal data (invalid reference)");
+ break;
+ }
+ retval = Py_NewRef(v);
+ break;
+
+ default:
+ /* Bogus data got written, which isn't ideal.
+ This will let you keep working and recover. */
+ PyErr_SetString(PyExc_ValueError, "bad marshal data (unknown type code)");
+ break;
+
+ }
+ p->depth--;
+ return retval;
+}
+
+static PyObject *
+read_object(RFILE *p)
+{
+ PyObject *v;
+ if (PyErr_Occurred()) {
+ fprintf(stderr, "XXX readobject called with exception set\n");
+ return NULL;
+ }
+ if (p->ptr && p->end) {
+ if (PySys_Audit("marshal.loads", "y#", p->ptr, (Py_ssize_t)(p->end - p->ptr)) < 0) {
+ return NULL;
+ }
+ } else if (p->fp || p->readable) {
+ if (PySys_Audit("marshal.load", NULL) < 0) {
+ return NULL;
+ }
+ }
+ v = r_object(p);
+ if (v == NULL && !PyErr_Occurred())
+ PyErr_SetString(PyExc_TypeError, "NULL object in marshal data for object");
+ return v;
+}
+
+int
+PyMarshal_ReadShortFromFile(FILE *fp)
+{
+ RFILE rf;
+ int res;
+ assert(fp);
+ rf.readable = NULL;
+ rf.fp = fp;
+ rf.end = rf.ptr = NULL;
+ rf.buf = NULL;
+ res = r_short(&rf);
+ if (rf.buf != NULL)
+ PyMem_Free(rf.buf);
+ return res;
+}
+
+long
+PyMarshal_ReadLongFromFile(FILE *fp)
+{
+ RFILE rf;
+ long res;
+ rf.fp = fp;
+ rf.readable = NULL;
+ rf.ptr = rf.end = NULL;
+ rf.buf = NULL;
+ res = r_long(&rf);
+ if (rf.buf != NULL)
+ PyMem_Free(rf.buf);
+ return res;
+}
+
+/* Return size of file in bytes; < 0 if unknown or INT_MAX if too big */
+static off_t
+getfilesize(FILE *fp)
+{
+ struct _Py_stat_struct st;
+ if (_Py_fstat_noraise(fileno(fp), &st) != 0)
+ return -1;
+#if SIZEOF_OFF_T == 4
+ else if (st.st_size >= INT_MAX)
+ return (off_t)INT_MAX;
+#endif
+ else
+ return (off_t)st.st_size;
+}
+
+/* If we can get the size of the file up-front, and it's reasonably small,
+ * read it in one gulp and delegate to ...FromString() instead. Much quicker
+ * than reading a byte at a time from file; speeds .pyc imports.
+ * CAUTION: since this may read the entire remainder of the file, don't
+ * call it unless you know you're done with the file.
+ */
+PyObject *
+PyMarshal_ReadLastObjectFromFile(FILE *fp)
+{
+/* REASONABLE_FILE_LIMIT is by defn something big enough for Tkinter.pyc. */
+#define REASONABLE_FILE_LIMIT (1L << 18)
+ off_t filesize;
+ filesize = getfilesize(fp);
+ if (filesize > 0 && filesize <= REASONABLE_FILE_LIMIT) {
+ char* pBuf = (char *)PyMem_Malloc(filesize);
+ if (pBuf != NULL) {
+ size_t n = fread(pBuf, 1, (size_t)filesize, fp);
+ PyObject* v = PyMarshal_ReadObjectFromString(pBuf, n);
+ PyMem_Free(pBuf);
+ return v;
+ }
+
+ }
+ /* We don't have fstat, or we do but the file is larger than
+ * REASONABLE_FILE_LIMIT or malloc failed -- read a byte at a time.
+ */
+ return PyMarshal_ReadObjectFromFile(fp);
+
+#undef REASONABLE_FILE_LIMIT
+}
+
+PyObject *
+PyMarshal_ReadObjectFromFile(FILE *fp)
+{
+ RFILE rf;
+ PyObject *result;
+ rf.fp = fp;
+ rf.readable = NULL;
+ rf.depth = 0;
+ rf.ptr = rf.end = NULL;
+ rf.buf = NULL;
+ rf.refs = PyList_New(0);
+ if (rf.refs == NULL)
+ return NULL;
+ result = read_object(&rf);
+ Py_DECREF(rf.refs);
+ if (rf.buf != NULL)
+ PyMem_Free(rf.buf);
+ return result;
+}
+
+PyObject *
+PyMarshal_ReadObjectFromString(const char *str, Py_ssize_t len)
+{
+ RFILE rf;
+ PyObject *result;
+ rf.fp = NULL;
+ rf.readable = NULL;
+ rf.ptr = str;
+ rf.end = str + len;
+ rf.buf = NULL;
+ rf.depth = 0;
+ rf.refs = PyList_New(0);
+ if (rf.refs == NULL)
+ return NULL;
+ result = read_object(&rf);
+ Py_DECREF(rf.refs);
+ if (rf.buf != NULL)
+ PyMem_Free(rf.buf);
+ return result;
+}
+
+PyObject *
+PyMarshal_WriteObjectToString(PyObject *x, int version)
+{
+ WFILE wf;
+
+ if (PySys_Audit("marshal.dumps", "Oi", x, version) < 0) {
+ return NULL;
+ }
+ memset(&wf, 0, sizeof(wf));
+ wf.str = PyBytes_FromStringAndSize((char *)NULL, 50);
+ if (wf.str == NULL)
+ return NULL;
+ wf.ptr = wf.buf = PyBytes_AS_STRING(wf.str);
+ wf.end = wf.ptr + PyBytes_GET_SIZE(wf.str);
+ wf.error = WFERR_OK;
+ wf.version = version;
+ if (w_init_refs(&wf, version)) {
+ Py_DECREF(wf.str);
+ return NULL;
+ }
+ w_object(x, &wf);
+ w_clear_refs(&wf);
+ if (wf.str != NULL) {
+ const char *base = PyBytes_AS_STRING(wf.str);
+ if (_PyBytes_Resize(&wf.str, (Py_ssize_t)(wf.ptr - base)) < 0)
+ return NULL;
+ }
+ if (wf.error != WFERR_OK) {
+ Py_XDECREF(wf.str);
+ if (wf.error == WFERR_NOMEMORY)
+ PyErr_NoMemory();
+ else
+ PyErr_SetString(PyExc_ValueError,
+ (wf.error==WFERR_UNMARSHALLABLE)?"unmarshallable object"
+ :"object too deeply nested to marshal");
+ return NULL;
+ }
+ return wf.str;
+}
+
+/* And an interface for Python programs... */
+/*[clinic input]
+marshal.dump
+
+ value: object
+ Must be a supported type.
+ file: object
+ Must be a writeable binary file.
+ version: int(c_default="Py_MARSHAL_VERSION") = version
+ Indicates the data format that dump should use.
+ /
+
+Write the value on the open file.
+
+If the value has (or contains an object that has) an unsupported type, a
+ValueError exception is raised - but garbage data will also be written
+to the file. The object will not be properly read back by load().
+[clinic start generated code]*/
+
+static PyObject *
+marshal_dump_impl(PyObject *module, PyObject *value, PyObject *file,
+ int version)
+/*[clinic end generated code: output=aaee62c7028a7cb2 input=6c7a3c23c6fef556]*/
+{
+ /* XXX Quick hack -- need to do this differently */
+ PyObject *s;
+ PyObject *res;
+
+ s = PyMarshal_WriteObjectToString(value, version);
+ if (s == NULL)
+ return NULL;
+ res = _PyObject_CallMethodOneArg(file, &_Py_ID(write), s);
+ Py_DECREF(s);
+ return res;
+}
+
+/*[clinic input]
+marshal.load
+
+ file: object
+ Must be readable binary file.
+ /
+
+Read one value from the open file and return it.
+
+If no valid value is read (e.g. because the data has a different Python
+version's incompatible marshal format), raise EOFError, ValueError or
+TypeError.
+
+Note: If an object containing an unsupported type was marshalled with
+dump(), load() will substitute None for the unmarshallable type.
+[clinic start generated code]*/
+
+static PyObject *
+marshal_load(PyObject *module, PyObject *file)
+/*[clinic end generated code: output=f8e5c33233566344 input=c85c2b594cd8124a]*/
+{
+ PyObject *data, *result;
+ RFILE rf;
+
+ /*
+ * Make a call to the read method, but read zero bytes.
+ * This is to ensure that the object passed in at least
+ * has a read method which returns bytes.
+ * This can be removed if we guarantee good error handling
+ * for r_string()
+ */
+ data = _PyObject_CallMethod(file, &_Py_ID(read), "i", 0);
+ if (data == NULL)
+ return NULL;
+ if (!PyBytes_Check(data)) {
+ PyErr_Format(PyExc_TypeError,
+ "file.read() returned not bytes but %.100s",
+ Py_TYPE(data)->tp_name);
+ result = NULL;
+ }
+ else {
+ rf.depth = 0;
+ rf.fp = NULL;
+ rf.readable = file;
+ rf.ptr = rf.end = NULL;
+ rf.buf = NULL;
+ if ((rf.refs = PyList_New(0)) != NULL) {
+ result = read_object(&rf);
+ Py_DECREF(rf.refs);
+ if (rf.buf != NULL)
+ PyMem_Free(rf.buf);
+ } else
+ result = NULL;
+ }
+ Py_DECREF(data);
+ return result;
+}
+
+/*[clinic input]
+marshal.dumps
+
+ value: object
+ Must be a supported type.
+ version: int(c_default="Py_MARSHAL_VERSION") = version
+ Indicates the data format that dumps should use.
+ /
+
+Return the bytes object that would be written to a file by dump(value, file).
+
+Raise a ValueError exception if value has (or contains an object that has) an
+unsupported type.
+[clinic start generated code]*/
+
+static PyObject *
+marshal_dumps_impl(PyObject *module, PyObject *value, int version)
+/*[clinic end generated code: output=9c200f98d7256cad input=a2139ea8608e9b27]*/
+{
+ return PyMarshal_WriteObjectToString(value, version);
+}
+
+/*[clinic input]
+marshal.loads
+
+ bytes: Py_buffer
+ /
+
+Convert the bytes-like object to a value.
+
+If no valid value is found, raise EOFError, ValueError or TypeError. Extra
+bytes in the input are ignored.
+[clinic start generated code]*/
+
+static PyObject *
+marshal_loads_impl(PyObject *module, Py_buffer *bytes)
+/*[clinic end generated code: output=9fc65985c93d1bb1 input=6f426518459c8495]*/
+{
+ RFILE rf;
+ char *s = bytes->buf;
+ Py_ssize_t n = bytes->len;
+ PyObject* result;
+ rf.fp = NULL;
+ rf.readable = NULL;
+ rf.ptr = s;
+ rf.end = s + n;
+ rf.depth = 0;
+ if ((rf.refs = PyList_New(0)) == NULL)
+ return NULL;
+ result = read_object(&rf);
+ Py_DECREF(rf.refs);
+ return result;
+}
+
+static PyMethodDef marshal_methods[] = {
+ MARSHAL_DUMP_METHODDEF
+ MARSHAL_LOAD_METHODDEF
+ MARSHAL_DUMPS_METHODDEF
+ MARSHAL_LOADS_METHODDEF
+ {NULL, NULL} /* sentinel */
+};
+
+
+PyDoc_STRVAR(module_doc,
+"This module contains functions that can read and write Python values in\n\
+a binary format. The format is specific to Python, but independent of\n\
+machine architecture issues.\n\
+\n\
+Not all Python object types are supported; in general, only objects\n\
+whose value is independent from a particular invocation of Python can be\n\
+written and read by this module. The following types are supported:\n\
+None, integers, floating point numbers, strings, bytes, bytearrays,\n\
+tuples, lists, sets, dictionaries, and code objects, where it\n\
+should be understood that tuples, lists and dictionaries are only\n\
+supported as long as the values contained therein are themselves\n\
+supported; and recursive lists and dictionaries should not be written\n\
+(they will cause infinite loops).\n\
+\n\
+Variables:\n\
+\n\
+version -- indicates the format that the module uses. Version 0 is the\n\
+ historical format, version 1 shares interned strings and version 2\n\
+ uses a binary format for floating point numbers.\n\
+ Version 3 shares common object references (New in version 3.4).\n\
+\n\
+Functions:\n\
+\n\
+dump() -- write value to a file\n\
+load() -- read value from a file\n\
+dumps() -- marshal value as a bytes object\n\
+loads() -- read value from a bytes-like object");
+
+
+static int
+marshal_module_exec(PyObject *mod)
+{
+ if (PyModule_AddIntConstant(mod, "version", Py_MARSHAL_VERSION) < 0) {
+ return -1;
+ }
+ return 0;
+}
+
+static PyModuleDef_Slot marshalmodule_slots[] = {
+ {Py_mod_exec, marshal_module_exec},
+ {Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
+ {0, NULL}
+};
+
+static struct PyModuleDef marshalmodule = {
+ PyModuleDef_HEAD_INIT,
+ .m_name = "marshal",
+ .m_doc = module_doc,
+ .m_methods = marshal_methods,
+ .m_slots = marshalmodule_slots,
+};
+
+PyMODINIT_FUNC
+PyMarshal_Init(void)
+{
+ return PyModuleDef_Init(&marshalmodule);
+}
diff --git a/contrib/tools/python3/Python/modsupport.c b/contrib/tools/python3/Python/modsupport.c
new file mode 100644
index 00000000000..df4ae35a525
--- /dev/null
+++ b/contrib/tools/python3/Python/modsupport.c
@@ -0,0 +1,696 @@
+
+/* Module support implementation */
+
+#include "Python.h"
+#include "pycore_abstract.h" // _PyIndex_Check()
+#include "pycore_object.h" // _PyType_IsReady()
+
+#define FLAG_SIZE_T 1
+typedef double va_double;
+
+static PyObject *va_build_value(const char *, va_list, int);
+static PyObject **va_build_stack(PyObject **small_stack, Py_ssize_t small_stack_len, const char *, va_list, int, Py_ssize_t*);
+
+
+int
+_Py_convert_optional_to_ssize_t(PyObject *obj, void *result)
+{
+ Py_ssize_t limit;
+ if (obj == Py_None) {
+ return 1;
+ }
+ else if (_PyIndex_Check(obj)) {
+ limit = PyNumber_AsSsize_t(obj, PyExc_OverflowError);
+ if (limit == -1 && PyErr_Occurred()) {
+ return 0;
+ }
+ }
+ else {
+ PyErr_Format(PyExc_TypeError,
+ "argument should be integer or None, not '%.200s'",
+ Py_TYPE(obj)->tp_name);
+ return 0;
+ }
+ *((Py_ssize_t *)result) = limit;
+ return 1;
+}
+
+
+/* Helper for mkvalue() to scan the length of a format */
+
+static Py_ssize_t
+countformat(const char *format, char endchar)
+{
+ Py_ssize_t count = 0;
+ int level = 0;
+ while (level > 0 || *format != endchar) {
+ switch (*format) {
+ case '\0':
+ /* Premature end */
+ PyErr_SetString(PyExc_SystemError,
+ "unmatched paren in format");
+ return -1;
+ case '(':
+ case '[':
+ case '{':
+ if (level == 0) {
+ count++;
+ }
+ level++;
+ break;
+ case ')':
+ case ']':
+ case '}':
+ level--;
+ break;
+ case '#':
+ case '&':
+ case ',':
+ case ':':
+ case ' ':
+ case '\t':
+ break;
+ default:
+ if (level == 0) {
+ count++;
+ }
+ }
+ format++;
+ }
+ return count;
+}
+
+
+/* Generic function to create a value -- the inverse of getargs() */
+/* After an original idea and first implementation by Steven Miale */
+
+static PyObject *do_mktuple(const char**, va_list *, char, Py_ssize_t, int);
+static int do_mkstack(PyObject **, const char**, va_list *, char, Py_ssize_t, int);
+static PyObject *do_mklist(const char**, va_list *, char, Py_ssize_t, int);
+static PyObject *do_mkdict(const char**, va_list *, char, Py_ssize_t, int);
+static PyObject *do_mkvalue(const char**, va_list *, int);
+
+
+static void
+do_ignore(const char **p_format, va_list *p_va, char endchar, Py_ssize_t n, int flags)
+{
+ assert(PyErr_Occurred());
+ PyObject *v = PyTuple_New(n);
+ for (Py_ssize_t i = 0; i < n; i++) {
+ PyObject *exc = PyErr_GetRaisedException();
+ PyObject *w = do_mkvalue(p_format, p_va, flags);
+ PyErr_SetRaisedException(exc);
+ if (w != NULL) {
+ if (v != NULL) {
+ PyTuple_SET_ITEM(v, i, w);
+ }
+ else {
+ Py_DECREF(w);
+ }
+ }
+ }
+ Py_XDECREF(v);
+ if (**p_format != endchar) {
+ PyErr_SetString(PyExc_SystemError,
+ "Unmatched paren in format");
+ return;
+ }
+ if (endchar) {
+ ++*p_format;
+ }
+}
+
+static PyObject *
+do_mkdict(const char **p_format, va_list *p_va, char endchar, Py_ssize_t n, int flags)
+{
+ PyObject *d;
+ Py_ssize_t i;
+ if (n < 0)
+ return NULL;
+ if (n % 2) {
+ PyErr_SetString(PyExc_SystemError,
+ "Bad dict format");
+ do_ignore(p_format, p_va, endchar, n, flags);
+ return NULL;
+ }
+ /* Note that we can't bail immediately on error as this will leak
+ refcounts on any 'N' arguments. */
+ if ((d = PyDict_New()) == NULL) {
+ do_ignore(p_format, p_va, endchar, n, flags);
+ return NULL;
+ }
+ for (i = 0; i < n; i+= 2) {
+ PyObject *k, *v;
+
+ k = do_mkvalue(p_format, p_va, flags);
+ if (k == NULL) {
+ do_ignore(p_format, p_va, endchar, n - i - 1, flags);
+ Py_DECREF(d);
+ return NULL;
+ }
+ v = do_mkvalue(p_format, p_va, flags);
+ if (v == NULL || PyDict_SetItem(d, k, v) < 0) {
+ do_ignore(p_format, p_va, endchar, n - i - 2, flags);
+ Py_DECREF(k);
+ Py_XDECREF(v);
+ Py_DECREF(d);
+ return NULL;
+ }
+ Py_DECREF(k);
+ Py_DECREF(v);
+ }
+ if (**p_format != endchar) {
+ Py_DECREF(d);
+ PyErr_SetString(PyExc_SystemError,
+ "Unmatched paren in format");
+ return NULL;
+ }
+ if (endchar)
+ ++*p_format;
+ return d;
+}
+
+static PyObject *
+do_mklist(const char **p_format, va_list *p_va, char endchar, Py_ssize_t n, int flags)
+{
+ PyObject *v;
+ Py_ssize_t i;
+ if (n < 0)
+ return NULL;
+ /* Note that we can't bail immediately on error as this will leak
+ refcounts on any 'N' arguments. */
+ v = PyList_New(n);
+ if (v == NULL) {
+ do_ignore(p_format, p_va, endchar, n, flags);
+ return NULL;
+ }
+ for (i = 0; i < n; i++) {
+ PyObject *w = do_mkvalue(p_format, p_va, flags);
+ if (w == NULL) {
+ do_ignore(p_format, p_va, endchar, n - i - 1, flags);
+ Py_DECREF(v);
+ return NULL;
+ }
+ PyList_SET_ITEM(v, i, w);
+ }
+ if (**p_format != endchar) {
+ Py_DECREF(v);
+ PyErr_SetString(PyExc_SystemError,
+ "Unmatched paren in format");
+ return NULL;
+ }
+ if (endchar)
+ ++*p_format;
+ return v;
+}
+
+static int
+do_mkstack(PyObject **stack, const char **p_format, va_list *p_va,
+ char endchar, Py_ssize_t n, int flags)
+{
+ Py_ssize_t i;
+
+ if (n < 0) {
+ return -1;
+ }
+ /* Note that we can't bail immediately on error as this will leak
+ refcounts on any 'N' arguments. */
+ for (i = 0; i < n; i++) {
+ PyObject *w = do_mkvalue(p_format, p_va, flags);
+ if (w == NULL) {
+ do_ignore(p_format, p_va, endchar, n - i - 1, flags);
+ goto error;
+ }
+ stack[i] = w;
+ }
+ if (**p_format != endchar) {
+ PyErr_SetString(PyExc_SystemError,
+ "Unmatched paren in format");
+ goto error;
+ }
+ if (endchar) {
+ ++*p_format;
+ }
+ return 0;
+
+error:
+ n = i;
+ for (i=0; i < n; i++) {
+ Py_DECREF(stack[i]);
+ }
+ return -1;
+}
+
+static PyObject *
+do_mktuple(const char **p_format, va_list *p_va, char endchar, Py_ssize_t n, int flags)
+{
+ PyObject *v;
+ Py_ssize_t i;
+ if (n < 0)
+ return NULL;
+ /* Note that we can't bail immediately on error as this will leak
+ refcounts on any 'N' arguments. */
+ if ((v = PyTuple_New(n)) == NULL) {
+ do_ignore(p_format, p_va, endchar, n, flags);
+ return NULL;
+ }
+ for (i = 0; i < n; i++) {
+ PyObject *w = do_mkvalue(p_format, p_va, flags);
+ if (w == NULL) {
+ do_ignore(p_format, p_va, endchar, n - i - 1, flags);
+ Py_DECREF(v);
+ return NULL;
+ }
+ PyTuple_SET_ITEM(v, i, w);
+ }
+ if (**p_format != endchar) {
+ Py_DECREF(v);
+ PyErr_SetString(PyExc_SystemError,
+ "Unmatched paren in format");
+ return NULL;
+ }
+ if (endchar)
+ ++*p_format;
+ return v;
+}
+
+static PyObject *
+do_mkvalue(const char **p_format, va_list *p_va, int flags)
+{
+#define ERROR_NEED_PY_SSIZE_T_CLEAN \
+ { \
+ PyErr_SetString(PyExc_SystemError, \
+ "PY_SSIZE_T_CLEAN macro must be defined for '#' formats"); \
+ return NULL; \
+ }
+
+ for (;;) {
+ switch (*(*p_format)++) {
+ case '(':
+ return do_mktuple(p_format, p_va, ')',
+ countformat(*p_format, ')'), flags);
+
+ case '[':
+ return do_mklist(p_format, p_va, ']',
+ countformat(*p_format, ']'), flags);
+
+ case '{':
+ return do_mkdict(p_format, p_va, '}',
+ countformat(*p_format, '}'), flags);
+
+ case 'b':
+ case 'B':
+ case 'h':
+ case 'i':
+ return PyLong_FromLong((long)va_arg(*p_va, int));
+
+ case 'H':
+ return PyLong_FromLong((long)va_arg(*p_va, unsigned int));
+
+ case 'I':
+ {
+ unsigned int n;
+ n = va_arg(*p_va, unsigned int);
+ return PyLong_FromUnsignedLong(n);
+ }
+
+ case 'n':
+#if SIZEOF_SIZE_T!=SIZEOF_LONG
+ return PyLong_FromSsize_t(va_arg(*p_va, Py_ssize_t));
+#endif
+ /* Fall through from 'n' to 'l' if Py_ssize_t is long */
+ case 'l':
+ return PyLong_FromLong(va_arg(*p_va, long));
+
+ case 'k':
+ {
+ unsigned long n;
+ n = va_arg(*p_va, unsigned long);
+ return PyLong_FromUnsignedLong(n);
+ }
+
+ case 'L':
+ return PyLong_FromLongLong((long long)va_arg(*p_va, long long));
+
+ case 'K':
+ return PyLong_FromUnsignedLongLong((long long)va_arg(*p_va, unsigned long long));
+
+ case 'u':
+ {
+ PyObject *v;
+ Py_UNICODE *u = va_arg(*p_va, Py_UNICODE *);
+ Py_ssize_t n;
+ if (**p_format == '#') {
+ ++*p_format;
+ if (flags & FLAG_SIZE_T) {
+ n = va_arg(*p_va, Py_ssize_t);
+ }
+ else {
+ n = va_arg(*p_va, int);
+ ERROR_NEED_PY_SSIZE_T_CLEAN;
+ }
+ }
+ else
+ n = -1;
+ if (u == NULL) {
+ v = Py_NewRef(Py_None);
+ }
+ else {
+ if (n < 0)
+ n = wcslen(u);
+ v = PyUnicode_FromWideChar(u, n);
+ }
+ return v;
+ }
+ case 'f':
+ case 'd':
+ return PyFloat_FromDouble(
+ (double)va_arg(*p_va, va_double));
+
+ case 'D':
+ return PyComplex_FromCComplex(
+ *((Py_complex *)va_arg(*p_va, Py_complex *)));
+
+ case 'c':
+ {
+ char p[1];
+ p[0] = (char)va_arg(*p_va, int);
+ return PyBytes_FromStringAndSize(p, 1);
+ }
+ case 'C':
+ {
+ int i = va_arg(*p_va, int);
+ return PyUnicode_FromOrdinal(i);
+ }
+
+ case 's':
+ case 'z':
+ case 'U': /* XXX deprecated alias */
+ {
+ PyObject *v;
+ const char *str = va_arg(*p_va, const char *);
+ Py_ssize_t n;
+ if (**p_format == '#') {
+ ++*p_format;
+ if (flags & FLAG_SIZE_T) {
+ n = va_arg(*p_va, Py_ssize_t);
+ }
+ else {
+ n = va_arg(*p_va, int);
+ ERROR_NEED_PY_SSIZE_T_CLEAN;
+ }
+ }
+ else
+ n = -1;
+ if (str == NULL) {
+ v = Py_NewRef(Py_None);
+ }
+ else {
+ if (n < 0) {
+ size_t m = strlen(str);
+ if (m > PY_SSIZE_T_MAX) {
+ PyErr_SetString(PyExc_OverflowError,
+ "string too long for Python string");
+ return NULL;
+ }
+ n = (Py_ssize_t)m;
+ }
+ v = PyUnicode_FromStringAndSize(str, n);
+ }
+ return v;
+ }
+
+ case 'y':
+ {
+ PyObject *v;
+ const char *str = va_arg(*p_va, const char *);
+ Py_ssize_t n;
+ if (**p_format == '#') {
+ ++*p_format;
+ if (flags & FLAG_SIZE_T) {
+ n = va_arg(*p_va, Py_ssize_t);
+ }
+ else {
+ n = va_arg(*p_va, int);
+ ERROR_NEED_PY_SSIZE_T_CLEAN;
+ }
+ }
+ else
+ n = -1;
+ if (str == NULL) {
+ v = Py_NewRef(Py_None);
+ }
+ else {
+ if (n < 0) {
+ size_t m = strlen(str);
+ if (m > PY_SSIZE_T_MAX) {
+ PyErr_SetString(PyExc_OverflowError,
+ "string too long for Python bytes");
+ return NULL;
+ }
+ n = (Py_ssize_t)m;
+ }
+ v = PyBytes_FromStringAndSize(str, n);
+ }
+ return v;
+ }
+
+ case 'N':
+ case 'S':
+ case 'O':
+ if (**p_format == '&') {
+ typedef PyObject *(*converter)(void *);
+ converter func = va_arg(*p_va, converter);
+ void *arg = va_arg(*p_va, void *);
+ ++*p_format;
+ return (*func)(arg);
+ }
+ else {
+ PyObject *v;
+ v = va_arg(*p_va, PyObject *);
+ if (v != NULL) {
+ if (*(*p_format - 1) != 'N')
+ Py_INCREF(v);
+ }
+ else if (!PyErr_Occurred())
+ /* If a NULL was passed
+ * because a call that should
+ * have constructed a value
+ * failed, that's OK, and we
+ * pass the error on; but if
+ * no error occurred it's not
+ * clear that the caller knew
+ * what she was doing. */
+ PyErr_SetString(PyExc_SystemError,
+ "NULL object passed to Py_BuildValue");
+ return v;
+ }
+
+ case ':':
+ case ',':
+ case ' ':
+ case '\t':
+ break;
+
+ default:
+ PyErr_SetString(PyExc_SystemError,
+ "bad format char passed to Py_BuildValue");
+ return NULL;
+
+ }
+ }
+
+#undef ERROR_NEED_PY_SSIZE_T_CLEAN
+}
+
+
+PyObject *
+Py_BuildValue(const char *format, ...)
+{
+ va_list va;
+ PyObject* retval;
+ va_start(va, format);
+ retval = va_build_value(format, va, 0);
+ va_end(va);
+ return retval;
+}
+
+PyObject *
+_Py_BuildValue_SizeT(const char *format, ...)
+{
+ va_list va;
+ PyObject* retval;
+ va_start(va, format);
+ retval = va_build_value(format, va, FLAG_SIZE_T);
+ va_end(va);
+ return retval;
+}
+
+PyObject *
+Py_VaBuildValue(const char *format, va_list va)
+{
+ return va_build_value(format, va, 0);
+}
+
+PyObject *
+_Py_VaBuildValue_SizeT(const char *format, va_list va)
+{
+ return va_build_value(format, va, FLAG_SIZE_T);
+}
+
+static PyObject *
+va_build_value(const char *format, va_list va, int flags)
+{
+ const char *f = format;
+ Py_ssize_t n = countformat(f, '\0');
+ va_list lva;
+ PyObject *retval;
+
+ if (n < 0)
+ return NULL;
+ if (n == 0) {
+ Py_RETURN_NONE;
+ }
+ va_copy(lva, va);
+ if (n == 1) {
+ retval = do_mkvalue(&f, &lva, flags);
+ } else {
+ retval = do_mktuple(&f, &lva, '\0', n, flags);
+ }
+ va_end(lva);
+ return retval;
+}
+
+PyObject **
+_Py_VaBuildStack(PyObject **small_stack, Py_ssize_t small_stack_len,
+ const char *format, va_list va, Py_ssize_t *p_nargs)
+{
+ return va_build_stack(small_stack, small_stack_len, format, va, 0, p_nargs);
+}
+
+PyObject **
+_Py_VaBuildStack_SizeT(PyObject **small_stack, Py_ssize_t small_stack_len,
+ const char *format, va_list va, Py_ssize_t *p_nargs)
+{
+ return va_build_stack(small_stack, small_stack_len, format, va, FLAG_SIZE_T, p_nargs);
+}
+
+static PyObject **
+va_build_stack(PyObject **small_stack, Py_ssize_t small_stack_len,
+ const char *format, va_list va, int flags, Py_ssize_t *p_nargs)
+{
+ const char *f;
+ Py_ssize_t n;
+ va_list lva;
+ PyObject **stack;
+ int res;
+
+ n = countformat(format, '\0');
+ if (n < 0) {
+ *p_nargs = 0;
+ return NULL;
+ }
+
+ if (n == 0) {
+ *p_nargs = 0;
+ return small_stack;
+ }
+
+ if (n <= small_stack_len) {
+ stack = small_stack;
+ }
+ else {
+ stack = PyMem_Malloc(n * sizeof(stack[0]));
+ if (stack == NULL) {
+ PyErr_NoMemory();
+ return NULL;
+ }
+ }
+
+ va_copy(lva, va);
+ f = format;
+ res = do_mkstack(stack, &f, &lva, '\0', n, flags);
+ va_end(lva);
+
+ if (res < 0) {
+ if (stack != small_stack) {
+ PyMem_Free(stack);
+ }
+ return NULL;
+ }
+
+ *p_nargs = n;
+ return stack;
+}
+
+
+int
+PyModule_AddObjectRef(PyObject *mod, const char *name, PyObject *value)
+{
+ if (!PyModule_Check(mod)) {
+ PyErr_SetString(PyExc_TypeError,
+ "PyModule_AddObjectRef() first argument "
+ "must be a module");
+ return -1;
+ }
+ if (!value) {
+ if (!PyErr_Occurred()) {
+ PyErr_SetString(PyExc_SystemError,
+ "PyModule_AddObjectRef() must be called "
+ "with an exception raised if value is NULL");
+ }
+ return -1;
+ }
+
+ PyObject *dict = PyModule_GetDict(mod);
+ if (dict == NULL) {
+ /* Internal error -- modules must have a dict! */
+ PyErr_Format(PyExc_SystemError, "module '%s' has no __dict__",
+ PyModule_GetName(mod));
+ return -1;
+ }
+ return PyDict_SetItemString(dict, name, value);
+}
+
+int
+_PyModule_Add(PyObject *mod, const char *name, PyObject *value)
+{
+ int res = PyModule_AddObjectRef(mod, name, value);
+ Py_XDECREF(value);
+ return res;
+}
+
+int
+PyModule_AddObject(PyObject *mod, const char *name, PyObject *value)
+{
+ int res = PyModule_AddObjectRef(mod, name, value);
+ if (res == 0) {
+ Py_DECREF(value);
+ }
+ return res;
+}
+
+int
+PyModule_AddIntConstant(PyObject *m, const char *name, long value)
+{
+ return _PyModule_Add(m, name, PyLong_FromLong(value));
+}
+
+int
+PyModule_AddStringConstant(PyObject *m, const char *name, const char *value)
+{
+ return _PyModule_Add(m, name, PyUnicode_FromString(value));
+}
+
+int
+PyModule_AddType(PyObject *module, PyTypeObject *type)
+{
+ if (!_PyType_IsReady(type) && PyType_Ready(type) < 0) {
+ return -1;
+ }
+
+ const char *name = _PyType_Name(type);
+ assert(name != NULL);
+
+ return PyModule_AddObjectRef(module, name, (PyObject *)type);
+}
diff --git a/contrib/tools/python3/Python/mysnprintf.c b/contrib/tools/python3/Python/mysnprintf.c
new file mode 100644
index 00000000000..2a505d14f82
--- /dev/null
+++ b/contrib/tools/python3/Python/mysnprintf.c
@@ -0,0 +1,80 @@
+#include "Python.h"
+
+/* snprintf() and vsnprintf() wrappers.
+
+ If the platform has vsnprintf, we use it, else we
+ emulate it in a half-hearted way. Even if the platform has it, we wrap
+ it because platforms differ in what vsnprintf does in case the buffer
+ is too small: C99 behavior is to return the number of characters that
+ would have been written had the buffer not been too small, and to set
+ the last byte of the buffer to \0. At least MS _vsnprintf returns a
+ negative value instead, and fills the entire buffer with non-\0 data.
+ Unlike C99, our wrappers do not support passing a null buffer.
+
+ The wrappers ensure that str[size-1] is always \0 upon return.
+
+ PyOS_snprintf and PyOS_vsnprintf never write more than size bytes
+ (including the trailing '\0') into str.
+
+ Return value (rv):
+
+ When 0 <= rv < size, the output conversion was unexceptional, and
+ rv characters were written to str (excluding a trailing \0 byte at
+ str[rv]).
+
+ When rv >= size, output conversion was truncated, and a buffer of
+ size rv+1 would have been needed to avoid truncation. str[size-1]
+ is \0 in this case.
+
+ When rv < 0, "something bad happened". str[size-1] is \0 in this
+ case too, but the rest of str is unreliable. It could be that
+ an error in format codes was detected by libc, or on platforms
+ with a non-C99 vsnprintf simply that the buffer wasn't big enough
+ to avoid truncation, or on platforms without any vsnprintf that
+ PyMem_Malloc couldn't obtain space for a temp buffer.
+
+ CAUTION: Unlike C99, str != NULL and size > 0 are required.
+ Also, size must be smaller than INT_MAX.
+*/
+
+int
+PyOS_snprintf(char *str, size_t size, const char *format, ...)
+{
+ int rc;
+ va_list va;
+
+ va_start(va, format);
+ rc = PyOS_vsnprintf(str, size, format, va);
+ va_end(va);
+ return rc;
+}
+
+int
+PyOS_vsnprintf(char *str, size_t size, const char *format, va_list va)
+{
+ assert(str != NULL);
+ assert(size > 0);
+ assert(size <= (INT_MAX - 1));
+ assert(format != NULL);
+
+ int len; /* # bytes written, excluding \0 */
+ /* We take a size_t as input but return an int. Sanity check
+ * our input so that it won't cause an overflow in the
+ * vsnprintf return value. */
+ if (size > INT_MAX - 1) {
+ len = -666;
+ goto Done;
+ }
+
+#if defined(_MSC_VER)
+ len = _vsnprintf(str, size, format, va);
+#else
+ len = vsnprintf(str, size, format, va);
+#endif
+
+Done:
+ if (size > 0) {
+ str[size-1] = '\0';
+ }
+ return len;
+}
diff --git a/contrib/tools/python3/Python/mystrtoul.c b/contrib/tools/python3/Python/mystrtoul.c
new file mode 100644
index 00000000000..e6fe154eed6
--- /dev/null
+++ b/contrib/tools/python3/Python/mystrtoul.c
@@ -0,0 +1,291 @@
+#include "Python.h"
+#include "pycore_long.h" // _PyLong_DigitValue
+
+#if defined(__sgi) && !defined(_SGI_MP_SOURCE)
+#define _SGI_MP_SOURCE
+#endif
+
+/* strtol and strtoul, renamed to avoid conflicts */
+
+
+#include <ctype.h>
+#ifdef HAVE_ERRNO_H
+#include <errno.h>
+#endif
+
+/* Static overflow check values for bases 2 through 36.
+ * smallmax[base] is the largest unsigned long i such that
+ * i * base doesn't overflow unsigned long.
+ */
+static const unsigned long smallmax[] = {
+ 0, /* bases 0 and 1 are invalid */
+ 0,
+ ULONG_MAX / 2,
+ ULONG_MAX / 3,
+ ULONG_MAX / 4,
+ ULONG_MAX / 5,
+ ULONG_MAX / 6,
+ ULONG_MAX / 7,
+ ULONG_MAX / 8,
+ ULONG_MAX / 9,
+ ULONG_MAX / 10,
+ ULONG_MAX / 11,
+ ULONG_MAX / 12,
+ ULONG_MAX / 13,
+ ULONG_MAX / 14,
+ ULONG_MAX / 15,
+ ULONG_MAX / 16,
+ ULONG_MAX / 17,
+ ULONG_MAX / 18,
+ ULONG_MAX / 19,
+ ULONG_MAX / 20,
+ ULONG_MAX / 21,
+ ULONG_MAX / 22,
+ ULONG_MAX / 23,
+ ULONG_MAX / 24,
+ ULONG_MAX / 25,
+ ULONG_MAX / 26,
+ ULONG_MAX / 27,
+ ULONG_MAX / 28,
+ ULONG_MAX / 29,
+ ULONG_MAX / 30,
+ ULONG_MAX / 31,
+ ULONG_MAX / 32,
+ ULONG_MAX / 33,
+ ULONG_MAX / 34,
+ ULONG_MAX / 35,
+ ULONG_MAX / 36,
+};
+
+/* maximum digits that can't ever overflow for bases 2 through 36,
+ * calculated by [int(math.floor(math.log(2**32, i))) for i in range(2, 37)].
+ * Note that this is pessimistic if sizeof(long) > 4.
+ */
+#if SIZEOF_LONG == 4
+static const int digitlimit[] = {
+ 0, 0, 32, 20, 16, 13, 12, 11, 10, 10, /* 0 - 9 */
+ 9, 9, 8, 8, 8, 8, 8, 7, 7, 7, /* 10 - 19 */
+ 7, 7, 7, 7, 6, 6, 6, 6, 6, 6, /* 20 - 29 */
+ 6, 6, 6, 6, 6, 6, 6}; /* 30 - 36 */
+#elif SIZEOF_LONG == 8
+/* [int(math.floor(math.log(2**64, i))) for i in range(2, 37)] */
+static const int digitlimit[] = {
+ 0, 0, 64, 40, 32, 27, 24, 22, 21, 20, /* 0 - 9 */
+ 19, 18, 17, 17, 16, 16, 16, 15, 15, 15, /* 10 - 19 */
+ 14, 14, 14, 14, 13, 13, 13, 13, 13, 13, /* 20 - 29 */
+ 13, 12, 12, 12, 12, 12, 12}; /* 30 - 36 */
+#else
+#error "Need table for SIZEOF_LONG"
+#endif
+
+/*
+** strtoul
+** This is a general purpose routine for converting
+** an ascii string to an integer in an arbitrary base.
+** Leading white space is ignored. If 'base' is zero
+** it looks for a leading 0b, 0o or 0x to tell which
+** base. If these are absent it defaults to 10.
+** Base must be 0 or between 2 and 36 (inclusive).
+** If 'ptr' is non-NULL it will contain a pointer to
+** the end of the scan.
+** Errors due to bad pointers will probably result in
+** exceptions - we don't check for them.
+*/
+unsigned long
+PyOS_strtoul(const char *str, char **ptr, int base)
+{
+ unsigned long result = 0; /* return value of the function */
+ int c; /* current input character */
+ int ovlimit; /* required digits to overflow */
+
+ /* skip leading white space */
+ while (*str && Py_ISSPACE(*str))
+ ++str;
+
+ /* check for leading 0b, 0o or 0x for auto-base or base 16 */
+ switch (base) {
+ case 0: /* look for leading 0b, 0o or 0x */
+ if (*str == '0') {
+ ++str;
+ if (*str == 'x' || *str == 'X') {
+ /* there must be at least one digit after 0x */
+ if (_PyLong_DigitValue[Py_CHARMASK(str[1])] >= 16) {
+ if (ptr)
+ *ptr = (char *)str;
+ return 0;
+ }
+ ++str;
+ base = 16;
+ } else if (*str == 'o' || *str == 'O') {
+ /* there must be at least one digit after 0o */
+ if (_PyLong_DigitValue[Py_CHARMASK(str[1])] >= 8) {
+ if (ptr)
+ *ptr = (char *)str;
+ return 0;
+ }
+ ++str;
+ base = 8;
+ } else if (*str == 'b' || *str == 'B') {
+ /* there must be at least one digit after 0b */
+ if (_PyLong_DigitValue[Py_CHARMASK(str[1])] >= 2) {
+ if (ptr)
+ *ptr = (char *)str;
+ return 0;
+ }
+ ++str;
+ base = 2;
+ } else {
+ /* skip all zeroes... */
+ while (*str == '0')
+ ++str;
+ while (Py_ISSPACE(*str))
+ ++str;
+ if (ptr)
+ *ptr = (char *)str;
+ return 0;
+ }
+ }
+ else
+ base = 10;
+ break;
+
+ /* even with explicit base, skip leading 0? prefix */
+ case 16:
+ if (*str == '0') {
+ ++str;
+ if (*str == 'x' || *str == 'X') {
+ /* there must be at least one digit after 0x */
+ if (_PyLong_DigitValue[Py_CHARMASK(str[1])] >= 16) {
+ if (ptr)
+ *ptr = (char *)str;
+ return 0;
+ }
+ ++str;
+ }
+ }
+ break;
+ case 8:
+ if (*str == '0') {
+ ++str;
+ if (*str == 'o' || *str == 'O') {
+ /* there must be at least one digit after 0o */
+ if (_PyLong_DigitValue[Py_CHARMASK(str[1])] >= 8) {
+ if (ptr)
+ *ptr = (char *)str;
+ return 0;
+ }
+ ++str;
+ }
+ }
+ break;
+ case 2:
+ if(*str == '0') {
+ ++str;
+ if (*str == 'b' || *str == 'B') {
+ /* there must be at least one digit after 0b */
+ if (_PyLong_DigitValue[Py_CHARMASK(str[1])] >= 2) {
+ if (ptr)
+ *ptr = (char *)str;
+ return 0;
+ }
+ ++str;
+ }
+ }
+ break;
+ }
+
+ /* catch silly bases */
+ if (base < 2 || base > 36) {
+ if (ptr)
+ *ptr = (char *)str;
+ return 0;
+ }
+
+ /* skip leading zeroes */
+ while (*str == '0')
+ ++str;
+
+ /* base is guaranteed to be in [2, 36] at this point */
+ ovlimit = digitlimit[base];
+
+ /* do the conversion until non-digit character encountered */
+ while ((c = _PyLong_DigitValue[Py_CHARMASK(*str)]) < base) {
+ if (ovlimit > 0) /* no overflow check required */
+ result = result * base + c;
+ else { /* requires overflow check */
+ unsigned long temp_result;
+
+ if (ovlimit < 0) /* guaranteed overflow */
+ goto overflowed;
+
+ /* there could be an overflow */
+ /* check overflow just from shifting */
+ if (result > smallmax[base])
+ goto overflowed;
+
+ result *= base;
+
+ /* check overflow from the digit's value */
+ temp_result = result + c;
+ if (temp_result < result)
+ goto overflowed;
+
+ result = temp_result;
+ }
+
+ ++str;
+ --ovlimit;
+ }
+
+ /* set pointer to point to the last character scanned */
+ if (ptr)
+ *ptr = (char *)str;
+
+ return result;
+
+overflowed:
+ if (ptr) {
+ /* spool through remaining digit characters */
+ while (_PyLong_DigitValue[Py_CHARMASK(*str)] < base)
+ ++str;
+ *ptr = (char *)str;
+ }
+ errno = ERANGE;
+ return (unsigned long)-1;
+}
+
+/* Checking for overflow in PyOS_strtol is a PITA; see comments
+ * about PY_ABS_LONG_MIN in longobject.c.
+ */
+#define PY_ABS_LONG_MIN (0-(unsigned long)LONG_MIN)
+
+long
+PyOS_strtol(const char *str, char **ptr, int base)
+{
+ long result;
+ unsigned long uresult;
+ char sign;
+
+ while (*str && Py_ISSPACE(*str))
+ str++;
+
+ sign = *str;
+ if (sign == '+' || sign == '-')
+ str++;
+
+ uresult = PyOS_strtoul(str, ptr, base);
+
+ if (uresult <= (unsigned long)LONG_MAX) {
+ result = (long)uresult;
+ if (sign == '-')
+ result = -result;
+ }
+ else if (sign == '-' && uresult == PY_ABS_LONG_MIN) {
+ result = LONG_MIN;
+ }
+ else {
+ errno = ERANGE;
+ result = LONG_MAX;
+ }
+ return result;
+}
diff --git a/contrib/tools/python3/Python/opcode_metadata.h b/contrib/tools/python3/Python/opcode_metadata.h
new file mode 100644
index 00000000000..f9b1c928cd4
--- /dev/null
+++ b/contrib/tools/python3/Python/opcode_metadata.h
@@ -0,0 +1,1001 @@
+// This file is generated by Tools/cases_generator/generate_cases.py
+// from:
+// Python/bytecodes.c
+// Do not edit!
+
+#ifndef NEED_OPCODE_METADATA
+extern int _PyOpcode_num_popped(int opcode, int oparg, bool jump);
+#else
+int
+_PyOpcode_num_popped(int opcode, int oparg, bool jump) {
+ switch(opcode) {
+ case NOP:
+ return 0;
+ case RESUME:
+ return 0;
+ case INSTRUMENTED_RESUME:
+ return 0;
+ case LOAD_CLOSURE:
+ return 0;
+ case LOAD_FAST_CHECK:
+ return 0;
+ case LOAD_FAST:
+ return 0;
+ case LOAD_FAST_AND_CLEAR:
+ return 0;
+ case LOAD_CONST:
+ return 0;
+ case STORE_FAST:
+ return 1;
+ case LOAD_FAST__LOAD_FAST:
+ return 0+0;
+ case LOAD_FAST__LOAD_CONST:
+ return 0+0;
+ case STORE_FAST__LOAD_FAST:
+ return 1+0;
+ case STORE_FAST__STORE_FAST:
+ return 1+1;
+ case LOAD_CONST__LOAD_FAST:
+ return 0+0;
+ case POP_TOP:
+ return 1;
+ case PUSH_NULL:
+ return 0;
+ case END_FOR:
+ return 1+1;
+ case INSTRUMENTED_END_FOR:
+ return 2;
+ case END_SEND:
+ return 2;
+ case INSTRUMENTED_END_SEND:
+ return 2;
+ case UNARY_NEGATIVE:
+ return 1;
+ case UNARY_NOT:
+ return 1;
+ case UNARY_INVERT:
+ return 1;
+ case BINARY_OP_MULTIPLY_INT:
+ return 2;
+ case BINARY_OP_MULTIPLY_FLOAT:
+ return 2;
+ case BINARY_OP_SUBTRACT_INT:
+ return 2;
+ case BINARY_OP_SUBTRACT_FLOAT:
+ return 2;
+ case BINARY_OP_ADD_UNICODE:
+ return 2;
+ case BINARY_OP_INPLACE_ADD_UNICODE:
+ return 2;
+ case BINARY_OP_ADD_FLOAT:
+ return 2;
+ case BINARY_OP_ADD_INT:
+ return 2;
+ case BINARY_SUBSCR:
+ return 2;
+ case BINARY_SLICE:
+ return 3;
+ case STORE_SLICE:
+ return 4;
+ case BINARY_SUBSCR_LIST_INT:
+ return 2;
+ case BINARY_SUBSCR_TUPLE_INT:
+ return 2;
+ case BINARY_SUBSCR_DICT:
+ return 2;
+ case BINARY_SUBSCR_GETITEM:
+ return 2;
+ case LIST_APPEND:
+ return (oparg-1) + 2;
+ case SET_ADD:
+ return (oparg-1) + 2;
+ case STORE_SUBSCR:
+ return 3;
+ case STORE_SUBSCR_LIST_INT:
+ return 3;
+ case STORE_SUBSCR_DICT:
+ return 3;
+ case DELETE_SUBSCR:
+ return 2;
+ case CALL_INTRINSIC_1:
+ return 1;
+ case CALL_INTRINSIC_2:
+ return 2;
+ case RAISE_VARARGS:
+ return oparg;
+ case INTERPRETER_EXIT:
+ return 1;
+ case RETURN_VALUE:
+ return 1;
+ case INSTRUMENTED_RETURN_VALUE:
+ return 1;
+ case RETURN_CONST:
+ return 0;
+ case INSTRUMENTED_RETURN_CONST:
+ return 0;
+ case GET_AITER:
+ return 1;
+ case GET_ANEXT:
+ return 1;
+ case GET_AWAITABLE:
+ return 1;
+ case SEND:
+ return 2;
+ case SEND_GEN:
+ return 2;
+ case INSTRUMENTED_YIELD_VALUE:
+ return 1;
+ case YIELD_VALUE:
+ return 1;
+ case POP_EXCEPT:
+ return 1;
+ case RERAISE:
+ return oparg + 1;
+ case END_ASYNC_FOR:
+ return 2;
+ case CLEANUP_THROW:
+ return 3;
+ case LOAD_ASSERTION_ERROR:
+ return 0;
+ case LOAD_BUILD_CLASS:
+ return 0;
+ case STORE_NAME:
+ return 1;
+ case DELETE_NAME:
+ return 0;
+ case UNPACK_SEQUENCE:
+ return 1;
+ case UNPACK_SEQUENCE_TWO_TUPLE:
+ return 1;
+ case UNPACK_SEQUENCE_TUPLE:
+ return 1;
+ case UNPACK_SEQUENCE_LIST:
+ return 1;
+ case UNPACK_EX:
+ return 1;
+ case STORE_ATTR:
+ return 2;
+ case DELETE_ATTR:
+ return 1;
+ case STORE_GLOBAL:
+ return 1;
+ case DELETE_GLOBAL:
+ return 0;
+ case LOAD_LOCALS:
+ return 0;
+ case LOAD_FROM_DICT_OR_GLOBALS:
+ return 1;
+ case LOAD_NAME:
+ return 0;
+ case LOAD_GLOBAL:
+ return 0;
+ case LOAD_GLOBAL_MODULE:
+ return 0;
+ case LOAD_GLOBAL_BUILTIN:
+ return 0;
+ case DELETE_FAST:
+ return 0;
+ case MAKE_CELL:
+ return 0;
+ case DELETE_DEREF:
+ return 0;
+ case LOAD_FROM_DICT_OR_DEREF:
+ return 1;
+ case LOAD_DEREF:
+ return 0;
+ case STORE_DEREF:
+ return 1;
+ case COPY_FREE_VARS:
+ return 0;
+ case BUILD_STRING:
+ return oparg;
+ case BUILD_TUPLE:
+ return oparg;
+ case BUILD_LIST:
+ return oparg;
+ case LIST_EXTEND:
+ return (oparg-1) + 2;
+ case SET_UPDATE:
+ return (oparg-1) + 2;
+ case BUILD_SET:
+ return oparg;
+ case BUILD_MAP:
+ return oparg*2;
+ case SETUP_ANNOTATIONS:
+ return 0;
+ case BUILD_CONST_KEY_MAP:
+ return oparg + 1;
+ case DICT_UPDATE:
+ return 1;
+ case DICT_MERGE:
+ return 1;
+ case MAP_ADD:
+ return 2;
+ case INSTRUMENTED_LOAD_SUPER_ATTR:
+ return 3;
+ case LOAD_SUPER_ATTR:
+ return 3;
+ case LOAD_SUPER_ATTR_ATTR:
+ return 3;
+ case LOAD_SUPER_ATTR_METHOD:
+ return 3;
+ case LOAD_ATTR:
+ return 1;
+ case LOAD_ATTR_INSTANCE_VALUE:
+ return 1;
+ case LOAD_ATTR_MODULE:
+ return 1;
+ case LOAD_ATTR_WITH_HINT:
+ return 1;
+ case LOAD_ATTR_SLOT:
+ return 1;
+ case LOAD_ATTR_CLASS:
+ return 1;
+ case LOAD_ATTR_PROPERTY:
+ return 1;
+ case LOAD_ATTR_GETATTRIBUTE_OVERRIDDEN:
+ return 1;
+ case STORE_ATTR_INSTANCE_VALUE:
+ return 2;
+ case STORE_ATTR_WITH_HINT:
+ return 2;
+ case STORE_ATTR_SLOT:
+ return 2;
+ case COMPARE_OP:
+ return 2;
+ case COMPARE_OP_FLOAT:
+ return 2;
+ case COMPARE_OP_INT:
+ return 2;
+ case COMPARE_OP_STR:
+ return 2;
+ case IS_OP:
+ return 2;
+ case CONTAINS_OP:
+ return 2;
+ case CHECK_EG_MATCH:
+ return 2;
+ case CHECK_EXC_MATCH:
+ return 2;
+ case IMPORT_NAME:
+ return 2;
+ case IMPORT_FROM:
+ return 1;
+ case JUMP_FORWARD:
+ return 0;
+ case JUMP_BACKWARD:
+ return 0;
+ case POP_JUMP_IF_FALSE:
+ return 1;
+ case POP_JUMP_IF_TRUE:
+ return 1;
+ case POP_JUMP_IF_NOT_NONE:
+ return 1;
+ case POP_JUMP_IF_NONE:
+ return 1;
+ case JUMP_BACKWARD_NO_INTERRUPT:
+ return 0;
+ case GET_LEN:
+ return 1;
+ case MATCH_CLASS:
+ return 3;
+ case MATCH_MAPPING:
+ return 1;
+ case MATCH_SEQUENCE:
+ return 1;
+ case MATCH_KEYS:
+ return 2;
+ case GET_ITER:
+ return 1;
+ case GET_YIELD_FROM_ITER:
+ return 1;
+ case FOR_ITER:
+ return 1;
+ case INSTRUMENTED_FOR_ITER:
+ return 0;
+ case FOR_ITER_LIST:
+ return 1;
+ case FOR_ITER_TUPLE:
+ return 1;
+ case FOR_ITER_RANGE:
+ return 1;
+ case FOR_ITER_GEN:
+ return 1;
+ case BEFORE_ASYNC_WITH:
+ return 1;
+ case BEFORE_WITH:
+ return 1;
+ case WITH_EXCEPT_START:
+ return 4;
+ case PUSH_EXC_INFO:
+ return 1;
+ case LOAD_ATTR_METHOD_WITH_VALUES:
+ return 1;
+ case LOAD_ATTR_METHOD_NO_DICT:
+ return 1;
+ case LOAD_ATTR_METHOD_LAZY_DICT:
+ return 1;
+ case KW_NAMES:
+ return 0;
+ case INSTRUMENTED_CALL:
+ return 0;
+ case CALL:
+ return oparg + 2;
+ case CALL_BOUND_METHOD_EXACT_ARGS:
+ return oparg + 2;
+ case CALL_PY_EXACT_ARGS:
+ return oparg + 2;
+ case CALL_PY_WITH_DEFAULTS:
+ return oparg + 2;
+ case CALL_NO_KW_TYPE_1:
+ return oparg + 2;
+ case CALL_NO_KW_STR_1:
+ return oparg + 2;
+ case CALL_NO_KW_TUPLE_1:
+ return oparg + 2;
+ case CALL_BUILTIN_CLASS:
+ return oparg + 2;
+ case CALL_NO_KW_BUILTIN_O:
+ return oparg + 2;
+ case CALL_NO_KW_BUILTIN_FAST:
+ return oparg + 2;
+ case CALL_BUILTIN_FAST_WITH_KEYWORDS:
+ return oparg + 2;
+ case CALL_NO_KW_LEN:
+ return oparg + 2;
+ case CALL_NO_KW_ISINSTANCE:
+ return oparg + 2;
+ case CALL_NO_KW_LIST_APPEND:
+ return oparg + 2;
+ case CALL_NO_KW_METHOD_DESCRIPTOR_O:
+ return oparg + 2;
+ case CALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS:
+ return oparg + 2;
+ case CALL_NO_KW_METHOD_DESCRIPTOR_NOARGS:
+ return oparg + 2;
+ case CALL_NO_KW_METHOD_DESCRIPTOR_FAST:
+ return oparg + 2;
+ case INSTRUMENTED_CALL_FUNCTION_EX:
+ return 0;
+ case CALL_FUNCTION_EX:
+ return ((oparg & 1) ? 1 : 0) + 3;
+ case MAKE_FUNCTION:
+ return ((oparg & 0x01) ? 1 : 0) + ((oparg & 0x02) ? 1 : 0) + ((oparg & 0x04) ? 1 : 0) + ((oparg & 0x08) ? 1 : 0) + 1;
+ case RETURN_GENERATOR:
+ return 0;
+ case BUILD_SLICE:
+ return ((oparg == 3) ? 1 : 0) + 2;
+ case FORMAT_VALUE:
+ return (((oparg & FVS_MASK) == FVS_HAVE_SPEC) ? 1 : 0) + 1;
+ case COPY:
+ return (oparg-1) + 1;
+ case BINARY_OP:
+ return 2;
+ case SWAP:
+ return (oparg-2) + 2;
+ case INSTRUMENTED_INSTRUCTION:
+ return 0;
+ case INSTRUMENTED_JUMP_FORWARD:
+ return 0;
+ case INSTRUMENTED_JUMP_BACKWARD:
+ return 0;
+ case INSTRUMENTED_POP_JUMP_IF_TRUE:
+ return 0;
+ case INSTRUMENTED_POP_JUMP_IF_FALSE:
+ return 0;
+ case INSTRUMENTED_POP_JUMP_IF_NONE:
+ return 0;
+ case INSTRUMENTED_POP_JUMP_IF_NOT_NONE:
+ return 0;
+ case EXTENDED_ARG:
+ return 0;
+ case CACHE:
+ return 0;
+ case RESERVED:
+ return 0;
+ default:
+ return -1;
+ }
+}
+#endif
+
+#ifndef NEED_OPCODE_METADATA
+extern int _PyOpcode_num_pushed(int opcode, int oparg, bool jump);
+#else
+int
+_PyOpcode_num_pushed(int opcode, int oparg, bool jump) {
+ switch(opcode) {
+ case NOP:
+ return 0;
+ case RESUME:
+ return 0;
+ case INSTRUMENTED_RESUME:
+ return 0;
+ case LOAD_CLOSURE:
+ return 1;
+ case LOAD_FAST_CHECK:
+ return 1;
+ case LOAD_FAST:
+ return 1;
+ case LOAD_FAST_AND_CLEAR:
+ return 1;
+ case LOAD_CONST:
+ return 1;
+ case STORE_FAST:
+ return 0;
+ case LOAD_FAST__LOAD_FAST:
+ return 1+1;
+ case LOAD_FAST__LOAD_CONST:
+ return 1+1;
+ case STORE_FAST__LOAD_FAST:
+ return 0+1;
+ case STORE_FAST__STORE_FAST:
+ return 0+0;
+ case LOAD_CONST__LOAD_FAST:
+ return 1+1;
+ case POP_TOP:
+ return 0;
+ case PUSH_NULL:
+ return 1;
+ case END_FOR:
+ return 0+0;
+ case INSTRUMENTED_END_FOR:
+ return 0;
+ case END_SEND:
+ return 1;
+ case INSTRUMENTED_END_SEND:
+ return 1;
+ case UNARY_NEGATIVE:
+ return 1;
+ case UNARY_NOT:
+ return 1;
+ case UNARY_INVERT:
+ return 1;
+ case BINARY_OP_MULTIPLY_INT:
+ return 1;
+ case BINARY_OP_MULTIPLY_FLOAT:
+ return 1;
+ case BINARY_OP_SUBTRACT_INT:
+ return 1;
+ case BINARY_OP_SUBTRACT_FLOAT:
+ return 1;
+ case BINARY_OP_ADD_UNICODE:
+ return 1;
+ case BINARY_OP_INPLACE_ADD_UNICODE:
+ return 0;
+ case BINARY_OP_ADD_FLOAT:
+ return 1;
+ case BINARY_OP_ADD_INT:
+ return 1;
+ case BINARY_SUBSCR:
+ return 1;
+ case BINARY_SLICE:
+ return 1;
+ case STORE_SLICE:
+ return 0;
+ case BINARY_SUBSCR_LIST_INT:
+ return 1;
+ case BINARY_SUBSCR_TUPLE_INT:
+ return 1;
+ case BINARY_SUBSCR_DICT:
+ return 1;
+ case BINARY_SUBSCR_GETITEM:
+ return 1;
+ case LIST_APPEND:
+ return (oparg-1) + 1;
+ case SET_ADD:
+ return (oparg-1) + 1;
+ case STORE_SUBSCR:
+ return 0;
+ case STORE_SUBSCR_LIST_INT:
+ return 0;
+ case STORE_SUBSCR_DICT:
+ return 0;
+ case DELETE_SUBSCR:
+ return 0;
+ case CALL_INTRINSIC_1:
+ return 1;
+ case CALL_INTRINSIC_2:
+ return 1;
+ case RAISE_VARARGS:
+ return 0;
+ case INTERPRETER_EXIT:
+ return 0;
+ case RETURN_VALUE:
+ return 0;
+ case INSTRUMENTED_RETURN_VALUE:
+ return 0;
+ case RETURN_CONST:
+ return 0;
+ case INSTRUMENTED_RETURN_CONST:
+ return 0;
+ case GET_AITER:
+ return 1;
+ case GET_ANEXT:
+ return 2;
+ case GET_AWAITABLE:
+ return 1;
+ case SEND:
+ return 2;
+ case SEND_GEN:
+ return 2;
+ case INSTRUMENTED_YIELD_VALUE:
+ return 1;
+ case YIELD_VALUE:
+ return 1;
+ case POP_EXCEPT:
+ return 0;
+ case RERAISE:
+ return oparg;
+ case END_ASYNC_FOR:
+ return 0;
+ case CLEANUP_THROW:
+ return 2;
+ case LOAD_ASSERTION_ERROR:
+ return 1;
+ case LOAD_BUILD_CLASS:
+ return 1;
+ case STORE_NAME:
+ return 0;
+ case DELETE_NAME:
+ return 0;
+ case UNPACK_SEQUENCE:
+ return oparg;
+ case UNPACK_SEQUENCE_TWO_TUPLE:
+ return oparg;
+ case UNPACK_SEQUENCE_TUPLE:
+ return oparg;
+ case UNPACK_SEQUENCE_LIST:
+ return oparg;
+ case UNPACK_EX:
+ return (oparg & 0xFF) + (oparg >> 8) + 1;
+ case STORE_ATTR:
+ return 0;
+ case DELETE_ATTR:
+ return 0;
+ case STORE_GLOBAL:
+ return 0;
+ case DELETE_GLOBAL:
+ return 0;
+ case LOAD_LOCALS:
+ return 1;
+ case LOAD_FROM_DICT_OR_GLOBALS:
+ return 1;
+ case LOAD_NAME:
+ return 1;
+ case LOAD_GLOBAL:
+ return ((oparg & 1) ? 1 : 0) + 1;
+ case LOAD_GLOBAL_MODULE:
+ return ((oparg & 1) ? 1 : 0) + 1;
+ case LOAD_GLOBAL_BUILTIN:
+ return ((oparg & 1) ? 1 : 0) + 1;
+ case DELETE_FAST:
+ return 0;
+ case MAKE_CELL:
+ return 0;
+ case DELETE_DEREF:
+ return 0;
+ case LOAD_FROM_DICT_OR_DEREF:
+ return 1;
+ case LOAD_DEREF:
+ return 1;
+ case STORE_DEREF:
+ return 0;
+ case COPY_FREE_VARS:
+ return 0;
+ case BUILD_STRING:
+ return 1;
+ case BUILD_TUPLE:
+ return 1;
+ case BUILD_LIST:
+ return 1;
+ case LIST_EXTEND:
+ return (oparg-1) + 1;
+ case SET_UPDATE:
+ return (oparg-1) + 1;
+ case BUILD_SET:
+ return 1;
+ case BUILD_MAP:
+ return 1;
+ case SETUP_ANNOTATIONS:
+ return 0;
+ case BUILD_CONST_KEY_MAP:
+ return 1;
+ case DICT_UPDATE:
+ return 0;
+ case DICT_MERGE:
+ return 0;
+ case MAP_ADD:
+ return 0;
+ case INSTRUMENTED_LOAD_SUPER_ATTR:
+ return ((oparg & 1) ? 1 : 0) + 1;
+ case LOAD_SUPER_ATTR:
+ return ((oparg & 1) ? 1 : 0) + 1;
+ case LOAD_SUPER_ATTR_ATTR:
+ return ((oparg & 1) ? 1 : 0) + 1;
+ case LOAD_SUPER_ATTR_METHOD:
+ return 2;
+ case LOAD_ATTR:
+ return ((oparg & 1) ? 1 : 0) + 1;
+ case LOAD_ATTR_INSTANCE_VALUE:
+ return ((oparg & 1) ? 1 : 0) + 1;
+ case LOAD_ATTR_MODULE:
+ return ((oparg & 1) ? 1 : 0) + 1;
+ case LOAD_ATTR_WITH_HINT:
+ return ((oparg & 1) ? 1 : 0) + 1;
+ case LOAD_ATTR_SLOT:
+ return ((oparg & 1) ? 1 : 0) + 1;
+ case LOAD_ATTR_CLASS:
+ return ((oparg & 1) ? 1 : 0) + 1;
+ case LOAD_ATTR_PROPERTY:
+ return ((oparg & 1) ? 1 : 0) + 1;
+ case LOAD_ATTR_GETATTRIBUTE_OVERRIDDEN:
+ return ((oparg & 1) ? 1 : 0) + 1;
+ case STORE_ATTR_INSTANCE_VALUE:
+ return 0;
+ case STORE_ATTR_WITH_HINT:
+ return 0;
+ case STORE_ATTR_SLOT:
+ return 0;
+ case COMPARE_OP:
+ return 1;
+ case COMPARE_OP_FLOAT:
+ return 1;
+ case COMPARE_OP_INT:
+ return 1;
+ case COMPARE_OP_STR:
+ return 1;
+ case IS_OP:
+ return 1;
+ case CONTAINS_OP:
+ return 1;
+ case CHECK_EG_MATCH:
+ return 2;
+ case CHECK_EXC_MATCH:
+ return 2;
+ case IMPORT_NAME:
+ return 1;
+ case IMPORT_FROM:
+ return 2;
+ case JUMP_FORWARD:
+ return 0;
+ case JUMP_BACKWARD:
+ return 0;
+ case POP_JUMP_IF_FALSE:
+ return 0;
+ case POP_JUMP_IF_TRUE:
+ return 0;
+ case POP_JUMP_IF_NOT_NONE:
+ return 0;
+ case POP_JUMP_IF_NONE:
+ return 0;
+ case JUMP_BACKWARD_NO_INTERRUPT:
+ return 0;
+ case GET_LEN:
+ return 2;
+ case MATCH_CLASS:
+ return 1;
+ case MATCH_MAPPING:
+ return 2;
+ case MATCH_SEQUENCE:
+ return 2;
+ case MATCH_KEYS:
+ return 3;
+ case GET_ITER:
+ return 1;
+ case GET_YIELD_FROM_ITER:
+ return 1;
+ case FOR_ITER:
+ return 2;
+ case INSTRUMENTED_FOR_ITER:
+ return 0;
+ case FOR_ITER_LIST:
+ return 2;
+ case FOR_ITER_TUPLE:
+ return 2;
+ case FOR_ITER_RANGE:
+ return 2;
+ case FOR_ITER_GEN:
+ return 2;
+ case BEFORE_ASYNC_WITH:
+ return 2;
+ case BEFORE_WITH:
+ return 2;
+ case WITH_EXCEPT_START:
+ return 5;
+ case PUSH_EXC_INFO:
+ return 2;
+ case LOAD_ATTR_METHOD_WITH_VALUES:
+ return ((oparg & 1) ? 1 : 0) + 1;
+ case LOAD_ATTR_METHOD_NO_DICT:
+ return ((oparg & 1) ? 1 : 0) + 1;
+ case LOAD_ATTR_METHOD_LAZY_DICT:
+ return ((oparg & 1) ? 1 : 0) + 1;
+ case KW_NAMES:
+ return 0;
+ case INSTRUMENTED_CALL:
+ return 0;
+ case CALL:
+ return 1;
+ case CALL_BOUND_METHOD_EXACT_ARGS:
+ return 1;
+ case CALL_PY_EXACT_ARGS:
+ return 1;
+ case CALL_PY_WITH_DEFAULTS:
+ return 1;
+ case CALL_NO_KW_TYPE_1:
+ return 1;
+ case CALL_NO_KW_STR_1:
+ return 1;
+ case CALL_NO_KW_TUPLE_1:
+ return 1;
+ case CALL_BUILTIN_CLASS:
+ return 1;
+ case CALL_NO_KW_BUILTIN_O:
+ return 1;
+ case CALL_NO_KW_BUILTIN_FAST:
+ return 1;
+ case CALL_BUILTIN_FAST_WITH_KEYWORDS:
+ return 1;
+ case CALL_NO_KW_LEN:
+ return 1;
+ case CALL_NO_KW_ISINSTANCE:
+ return 1;
+ case CALL_NO_KW_LIST_APPEND:
+ return 1;
+ case CALL_NO_KW_METHOD_DESCRIPTOR_O:
+ return 1;
+ case CALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS:
+ return 1;
+ case CALL_NO_KW_METHOD_DESCRIPTOR_NOARGS:
+ return 1;
+ case CALL_NO_KW_METHOD_DESCRIPTOR_FAST:
+ return 1;
+ case INSTRUMENTED_CALL_FUNCTION_EX:
+ return 0;
+ case CALL_FUNCTION_EX:
+ return 1;
+ case MAKE_FUNCTION:
+ return 1;
+ case RETURN_GENERATOR:
+ return 0;
+ case BUILD_SLICE:
+ return 1;
+ case FORMAT_VALUE:
+ return 1;
+ case COPY:
+ return (oparg-1) + 2;
+ case BINARY_OP:
+ return 1;
+ case SWAP:
+ return (oparg-2) + 2;
+ case INSTRUMENTED_INSTRUCTION:
+ return 0;
+ case INSTRUMENTED_JUMP_FORWARD:
+ return 0;
+ case INSTRUMENTED_JUMP_BACKWARD:
+ return 0;
+ case INSTRUMENTED_POP_JUMP_IF_TRUE:
+ return 0;
+ case INSTRUMENTED_POP_JUMP_IF_FALSE:
+ return 0;
+ case INSTRUMENTED_POP_JUMP_IF_NONE:
+ return 0;
+ case INSTRUMENTED_POP_JUMP_IF_NOT_NONE:
+ return 0;
+ case EXTENDED_ARG:
+ return 0;
+ case CACHE:
+ return 0;
+ case RESERVED:
+ return 0;
+ default:
+ return -1;
+ }
+}
+#endif
+
+enum InstructionFormat { INSTR_FMT_IB, INSTR_FMT_IBC, INSTR_FMT_IBC00, INSTR_FMT_IBC000, INSTR_FMT_IBC00000000, INSTR_FMT_IBIB, INSTR_FMT_IX, INSTR_FMT_IXC, INSTR_FMT_IXC000 };
+struct opcode_metadata {
+ bool valid_entry;
+ enum InstructionFormat instr_format;
+};
+
+#ifndef NEED_OPCODE_METADATA
+extern const struct opcode_metadata _PyOpcode_opcode_metadata[256];
+#else
+const struct opcode_metadata _PyOpcode_opcode_metadata[256] = {
+ [NOP] = { true, INSTR_FMT_IX },
+ [RESUME] = { true, INSTR_FMT_IB },
+ [INSTRUMENTED_RESUME] = { true, INSTR_FMT_IB },
+ [LOAD_CLOSURE] = { true, INSTR_FMT_IB },
+ [LOAD_FAST_CHECK] = { true, INSTR_FMT_IB },
+ [LOAD_FAST] = { true, INSTR_FMT_IB },
+ [LOAD_FAST_AND_CLEAR] = { true, INSTR_FMT_IB },
+ [LOAD_CONST] = { true, INSTR_FMT_IB },
+ [STORE_FAST] = { true, INSTR_FMT_IB },
+ [LOAD_FAST__LOAD_FAST] = { true, INSTR_FMT_IBIB },
+ [LOAD_FAST__LOAD_CONST] = { true, INSTR_FMT_IBIB },
+ [STORE_FAST__LOAD_FAST] = { true, INSTR_FMT_IBIB },
+ [STORE_FAST__STORE_FAST] = { true, INSTR_FMT_IBIB },
+ [LOAD_CONST__LOAD_FAST] = { true, INSTR_FMT_IBIB },
+ [POP_TOP] = { true, INSTR_FMT_IX },
+ [PUSH_NULL] = { true, INSTR_FMT_IX },
+ [END_FOR] = { true, INSTR_FMT_IB },
+ [INSTRUMENTED_END_FOR] = { true, INSTR_FMT_IX },
+ [END_SEND] = { true, INSTR_FMT_IX },
+ [INSTRUMENTED_END_SEND] = { true, INSTR_FMT_IX },
+ [UNARY_NEGATIVE] = { true, INSTR_FMT_IX },
+ [UNARY_NOT] = { true, INSTR_FMT_IX },
+ [UNARY_INVERT] = { true, INSTR_FMT_IX },
+ [BINARY_OP_MULTIPLY_INT] = { true, INSTR_FMT_IXC },
+ [BINARY_OP_MULTIPLY_FLOAT] = { true, INSTR_FMT_IXC },
+ [BINARY_OP_SUBTRACT_INT] = { true, INSTR_FMT_IXC },
+ [BINARY_OP_SUBTRACT_FLOAT] = { true, INSTR_FMT_IXC },
+ [BINARY_OP_ADD_UNICODE] = { true, INSTR_FMT_IXC },
+ [BINARY_OP_INPLACE_ADD_UNICODE] = { true, INSTR_FMT_IX },
+ [BINARY_OP_ADD_FLOAT] = { true, INSTR_FMT_IXC },
+ [BINARY_OP_ADD_INT] = { true, INSTR_FMT_IXC },
+ [BINARY_SUBSCR] = { true, INSTR_FMT_IXC },
+ [BINARY_SLICE] = { true, INSTR_FMT_IX },
+ [STORE_SLICE] = { true, INSTR_FMT_IX },
+ [BINARY_SUBSCR_LIST_INT] = { true, INSTR_FMT_IXC },
+ [BINARY_SUBSCR_TUPLE_INT] = { true, INSTR_FMT_IXC },
+ [BINARY_SUBSCR_DICT] = { true, INSTR_FMT_IXC },
+ [BINARY_SUBSCR_GETITEM] = { true, INSTR_FMT_IXC },
+ [LIST_APPEND] = { true, INSTR_FMT_IB },
+ [SET_ADD] = { true, INSTR_FMT_IB },
+ [STORE_SUBSCR] = { true, INSTR_FMT_IXC },
+ [STORE_SUBSCR_LIST_INT] = { true, INSTR_FMT_IXC },
+ [STORE_SUBSCR_DICT] = { true, INSTR_FMT_IXC },
+ [DELETE_SUBSCR] = { true, INSTR_FMT_IX },
+ [CALL_INTRINSIC_1] = { true, INSTR_FMT_IB },
+ [CALL_INTRINSIC_2] = { true, INSTR_FMT_IB },
+ [RAISE_VARARGS] = { true, INSTR_FMT_IB },
+ [INTERPRETER_EXIT] = { true, INSTR_FMT_IX },
+ [RETURN_VALUE] = { true, INSTR_FMT_IX },
+ [INSTRUMENTED_RETURN_VALUE] = { true, INSTR_FMT_IX },
+ [RETURN_CONST] = { true, INSTR_FMT_IB },
+ [INSTRUMENTED_RETURN_CONST] = { true, INSTR_FMT_IB },
+ [GET_AITER] = { true, INSTR_FMT_IX },
+ [GET_ANEXT] = { true, INSTR_FMT_IX },
+ [GET_AWAITABLE] = { true, INSTR_FMT_IB },
+ [SEND] = { true, INSTR_FMT_IBC },
+ [SEND_GEN] = { true, INSTR_FMT_IBC },
+ [INSTRUMENTED_YIELD_VALUE] = { true, INSTR_FMT_IX },
+ [YIELD_VALUE] = { true, INSTR_FMT_IX },
+ [POP_EXCEPT] = { true, INSTR_FMT_IX },
+ [RERAISE] = { true, INSTR_FMT_IB },
+ [END_ASYNC_FOR] = { true, INSTR_FMT_IX },
+ [CLEANUP_THROW] = { true, INSTR_FMT_IX },
+ [LOAD_ASSERTION_ERROR] = { true, INSTR_FMT_IX },
+ [LOAD_BUILD_CLASS] = { true, INSTR_FMT_IX },
+ [STORE_NAME] = { true, INSTR_FMT_IB },
+ [DELETE_NAME] = { true, INSTR_FMT_IB },
+ [UNPACK_SEQUENCE] = { true, INSTR_FMT_IBC },
+ [UNPACK_SEQUENCE_TWO_TUPLE] = { true, INSTR_FMT_IBC },
+ [UNPACK_SEQUENCE_TUPLE] = { true, INSTR_FMT_IBC },
+ [UNPACK_SEQUENCE_LIST] = { true, INSTR_FMT_IBC },
+ [UNPACK_EX] = { true, INSTR_FMT_IB },
+ [STORE_ATTR] = { true, INSTR_FMT_IBC000 },
+ [DELETE_ATTR] = { true, INSTR_FMT_IB },
+ [STORE_GLOBAL] = { true, INSTR_FMT_IB },
+ [DELETE_GLOBAL] = { true, INSTR_FMT_IB },
+ [LOAD_LOCALS] = { true, INSTR_FMT_IX },
+ [LOAD_FROM_DICT_OR_GLOBALS] = { true, INSTR_FMT_IB },
+ [LOAD_NAME] = { true, INSTR_FMT_IB },
+ [LOAD_GLOBAL] = { true, INSTR_FMT_IBC000 },
+ [LOAD_GLOBAL_MODULE] = { true, INSTR_FMT_IBC000 },
+ [LOAD_GLOBAL_BUILTIN] = { true, INSTR_FMT_IBC000 },
+ [DELETE_FAST] = { true, INSTR_FMT_IB },
+ [MAKE_CELL] = { true, INSTR_FMT_IB },
+ [DELETE_DEREF] = { true, INSTR_FMT_IB },
+ [LOAD_FROM_DICT_OR_DEREF] = { true, INSTR_FMT_IB },
+ [LOAD_DEREF] = { true, INSTR_FMT_IB },
+ [STORE_DEREF] = { true, INSTR_FMT_IB },
+ [COPY_FREE_VARS] = { true, INSTR_FMT_IB },
+ [BUILD_STRING] = { true, INSTR_FMT_IB },
+ [BUILD_TUPLE] = { true, INSTR_FMT_IB },
+ [BUILD_LIST] = { true, INSTR_FMT_IB },
+ [LIST_EXTEND] = { true, INSTR_FMT_IB },
+ [SET_UPDATE] = { true, INSTR_FMT_IB },
+ [BUILD_SET] = { true, INSTR_FMT_IB },
+ [BUILD_MAP] = { true, INSTR_FMT_IB },
+ [SETUP_ANNOTATIONS] = { true, INSTR_FMT_IX },
+ [BUILD_CONST_KEY_MAP] = { true, INSTR_FMT_IB },
+ [DICT_UPDATE] = { true, INSTR_FMT_IB },
+ [DICT_MERGE] = { true, INSTR_FMT_IB },
+ [MAP_ADD] = { true, INSTR_FMT_IB },
+ [INSTRUMENTED_LOAD_SUPER_ATTR] = { true, INSTR_FMT_IBC00000000 },
+ [LOAD_SUPER_ATTR] = { true, INSTR_FMT_IBC },
+ [LOAD_SUPER_ATTR_ATTR] = { true, INSTR_FMT_IBC },
+ [LOAD_SUPER_ATTR_METHOD] = { true, INSTR_FMT_IBC },
+ [LOAD_ATTR] = { true, INSTR_FMT_IBC00000000 },
+ [LOAD_ATTR_INSTANCE_VALUE] = { true, INSTR_FMT_IBC00000000 },
+ [LOAD_ATTR_MODULE] = { true, INSTR_FMT_IBC00000000 },
+ [LOAD_ATTR_WITH_HINT] = { true, INSTR_FMT_IBC00000000 },
+ [LOAD_ATTR_SLOT] = { true, INSTR_FMT_IBC00000000 },
+ [LOAD_ATTR_CLASS] = { true, INSTR_FMT_IBC00000000 },
+ [LOAD_ATTR_PROPERTY] = { true, INSTR_FMT_IBC00000000 },
+ [LOAD_ATTR_GETATTRIBUTE_OVERRIDDEN] = { true, INSTR_FMT_IBC00000000 },
+ [STORE_ATTR_INSTANCE_VALUE] = { true, INSTR_FMT_IXC000 },
+ [STORE_ATTR_WITH_HINT] = { true, INSTR_FMT_IBC000 },
+ [STORE_ATTR_SLOT] = { true, INSTR_FMT_IXC000 },
+ [COMPARE_OP] = { true, INSTR_FMT_IBC },
+ [COMPARE_OP_FLOAT] = { true, INSTR_FMT_IBC },
+ [COMPARE_OP_INT] = { true, INSTR_FMT_IBC },
+ [COMPARE_OP_STR] = { true, INSTR_FMT_IBC },
+ [IS_OP] = { true, INSTR_FMT_IB },
+ [CONTAINS_OP] = { true, INSTR_FMT_IB },
+ [CHECK_EG_MATCH] = { true, INSTR_FMT_IX },
+ [CHECK_EXC_MATCH] = { true, INSTR_FMT_IX },
+ [IMPORT_NAME] = { true, INSTR_FMT_IB },
+ [IMPORT_FROM] = { true, INSTR_FMT_IB },
+ [JUMP_FORWARD] = { true, INSTR_FMT_IB },
+ [JUMP_BACKWARD] = { true, INSTR_FMT_IB },
+ [POP_JUMP_IF_FALSE] = { true, INSTR_FMT_IB },
+ [POP_JUMP_IF_TRUE] = { true, INSTR_FMT_IB },
+ [POP_JUMP_IF_NOT_NONE] = { true, INSTR_FMT_IB },
+ [POP_JUMP_IF_NONE] = { true, INSTR_FMT_IB },
+ [JUMP_BACKWARD_NO_INTERRUPT] = { true, INSTR_FMT_IB },
+ [GET_LEN] = { true, INSTR_FMT_IX },
+ [MATCH_CLASS] = { true, INSTR_FMT_IB },
+ [MATCH_MAPPING] = { true, INSTR_FMT_IX },
+ [MATCH_SEQUENCE] = { true, INSTR_FMT_IX },
+ [MATCH_KEYS] = { true, INSTR_FMT_IX },
+ [GET_ITER] = { true, INSTR_FMT_IX },
+ [GET_YIELD_FROM_ITER] = { true, INSTR_FMT_IX },
+ [FOR_ITER] = { true, INSTR_FMT_IBC },
+ [INSTRUMENTED_FOR_ITER] = { true, INSTR_FMT_IB },
+ [FOR_ITER_LIST] = { true, INSTR_FMT_IBC },
+ [FOR_ITER_TUPLE] = { true, INSTR_FMT_IBC },
+ [FOR_ITER_RANGE] = { true, INSTR_FMT_IBC },
+ [FOR_ITER_GEN] = { true, INSTR_FMT_IBC },
+ [BEFORE_ASYNC_WITH] = { true, INSTR_FMT_IX },
+ [BEFORE_WITH] = { true, INSTR_FMT_IX },
+ [WITH_EXCEPT_START] = { true, INSTR_FMT_IX },
+ [PUSH_EXC_INFO] = { true, INSTR_FMT_IX },
+ [LOAD_ATTR_METHOD_WITH_VALUES] = { true, INSTR_FMT_IBC00000000 },
+ [LOAD_ATTR_METHOD_NO_DICT] = { true, INSTR_FMT_IBC00000000 },
+ [LOAD_ATTR_METHOD_LAZY_DICT] = { true, INSTR_FMT_IBC00000000 },
+ [KW_NAMES] = { true, INSTR_FMT_IB },
+ [INSTRUMENTED_CALL] = { true, INSTR_FMT_IB },
+ [CALL] = { true, INSTR_FMT_IBC00 },
+ [CALL_BOUND_METHOD_EXACT_ARGS] = { true, INSTR_FMT_IBC00 },
+ [CALL_PY_EXACT_ARGS] = { true, INSTR_FMT_IBC00 },
+ [CALL_PY_WITH_DEFAULTS] = { true, INSTR_FMT_IBC00 },
+ [CALL_NO_KW_TYPE_1] = { true, INSTR_FMT_IBC00 },
+ [CALL_NO_KW_STR_1] = { true, INSTR_FMT_IBC00 },
+ [CALL_NO_KW_TUPLE_1] = { true, INSTR_FMT_IBC00 },
+ [CALL_BUILTIN_CLASS] = { true, INSTR_FMT_IBC00 },
+ [CALL_NO_KW_BUILTIN_O] = { true, INSTR_FMT_IBC00 },
+ [CALL_NO_KW_BUILTIN_FAST] = { true, INSTR_FMT_IBC00 },
+ [CALL_BUILTIN_FAST_WITH_KEYWORDS] = { true, INSTR_FMT_IBC00 },
+ [CALL_NO_KW_LEN] = { true, INSTR_FMT_IBC00 },
+ [CALL_NO_KW_ISINSTANCE] = { true, INSTR_FMT_IBC00 },
+ [CALL_NO_KW_LIST_APPEND] = { true, INSTR_FMT_IBC00 },
+ [CALL_NO_KW_METHOD_DESCRIPTOR_O] = { true, INSTR_FMT_IBC00 },
+ [CALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS] = { true, INSTR_FMT_IBC00 },
+ [CALL_NO_KW_METHOD_DESCRIPTOR_NOARGS] = { true, INSTR_FMT_IBC00 },
+ [CALL_NO_KW_METHOD_DESCRIPTOR_FAST] = { true, INSTR_FMT_IBC00 },
+ [INSTRUMENTED_CALL_FUNCTION_EX] = { true, INSTR_FMT_IX },
+ [CALL_FUNCTION_EX] = { true, INSTR_FMT_IB },
+ [MAKE_FUNCTION] = { true, INSTR_FMT_IB },
+ [RETURN_GENERATOR] = { true, INSTR_FMT_IX },
+ [BUILD_SLICE] = { true, INSTR_FMT_IB },
+ [FORMAT_VALUE] = { true, INSTR_FMT_IB },
+ [COPY] = { true, INSTR_FMT_IB },
+ [BINARY_OP] = { true, INSTR_FMT_IBC },
+ [SWAP] = { true, INSTR_FMT_IB },
+ [INSTRUMENTED_INSTRUCTION] = { true, INSTR_FMT_IX },
+ [INSTRUMENTED_JUMP_FORWARD] = { true, INSTR_FMT_IB },
+ [INSTRUMENTED_JUMP_BACKWARD] = { true, INSTR_FMT_IB },
+ [INSTRUMENTED_POP_JUMP_IF_TRUE] = { true, INSTR_FMT_IB },
+ [INSTRUMENTED_POP_JUMP_IF_FALSE] = { true, INSTR_FMT_IB },
+ [INSTRUMENTED_POP_JUMP_IF_NONE] = { true, INSTR_FMT_IB },
+ [INSTRUMENTED_POP_JUMP_IF_NOT_NONE] = { true, INSTR_FMT_IB },
+ [EXTENDED_ARG] = { true, INSTR_FMT_IB },
+ [CACHE] = { true, INSTR_FMT_IX },
+ [RESERVED] = { true, INSTR_FMT_IX },
+};
+#endif
diff --git a/contrib/tools/python3/Python/opcode_targets.h b/contrib/tools/python3/Python/opcode_targets.h
new file mode 100644
index 00000000000..3add0636271
--- /dev/null
+++ b/contrib/tools/python3/Python/opcode_targets.h
@@ -0,0 +1,258 @@
+static void *opcode_targets[256] = {
+ &&TARGET_CACHE,
+ &&TARGET_POP_TOP,
+ &&TARGET_PUSH_NULL,
+ &&TARGET_INTERPRETER_EXIT,
+ &&TARGET_END_FOR,
+ &&TARGET_END_SEND,
+ &&TARGET_BINARY_OP_ADD_FLOAT,
+ &&TARGET_BINARY_OP_ADD_INT,
+ &&TARGET_BINARY_OP_ADD_UNICODE,
+ &&TARGET_NOP,
+ &&TARGET_BINARY_OP_INPLACE_ADD_UNICODE,
+ &&TARGET_UNARY_NEGATIVE,
+ &&TARGET_UNARY_NOT,
+ &&TARGET_BINARY_OP_MULTIPLY_FLOAT,
+ &&TARGET_BINARY_OP_MULTIPLY_INT,
+ &&TARGET_UNARY_INVERT,
+ &&TARGET_BINARY_OP_SUBTRACT_FLOAT,
+ &&TARGET_RESERVED,
+ &&TARGET_BINARY_OP_SUBTRACT_INT,
+ &&TARGET_BINARY_SUBSCR_DICT,
+ &&TARGET_BINARY_SUBSCR_GETITEM,
+ &&TARGET_BINARY_SUBSCR_LIST_INT,
+ &&TARGET_BINARY_SUBSCR_TUPLE_INT,
+ &&TARGET_CALL_PY_EXACT_ARGS,
+ &&TARGET_CALL_PY_WITH_DEFAULTS,
+ &&TARGET_BINARY_SUBSCR,
+ &&TARGET_BINARY_SLICE,
+ &&TARGET_STORE_SLICE,
+ &&TARGET_CALL_BOUND_METHOD_EXACT_ARGS,
+ &&TARGET_CALL_BUILTIN_CLASS,
+ &&TARGET_GET_LEN,
+ &&TARGET_MATCH_MAPPING,
+ &&TARGET_MATCH_SEQUENCE,
+ &&TARGET_MATCH_KEYS,
+ &&TARGET_CALL_BUILTIN_FAST_WITH_KEYWORDS,
+ &&TARGET_PUSH_EXC_INFO,
+ &&TARGET_CHECK_EXC_MATCH,
+ &&TARGET_CHECK_EG_MATCH,
+ &&TARGET_CALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS,
+ &&TARGET_CALL_NO_KW_BUILTIN_FAST,
+ &&TARGET_CALL_NO_KW_BUILTIN_O,
+ &&TARGET_CALL_NO_KW_ISINSTANCE,
+ &&TARGET_CALL_NO_KW_LEN,
+ &&TARGET_CALL_NO_KW_LIST_APPEND,
+ &&TARGET_CALL_NO_KW_METHOD_DESCRIPTOR_FAST,
+ &&TARGET_CALL_NO_KW_METHOD_DESCRIPTOR_NOARGS,
+ &&TARGET_CALL_NO_KW_METHOD_DESCRIPTOR_O,
+ &&TARGET_CALL_NO_KW_STR_1,
+ &&TARGET_CALL_NO_KW_TUPLE_1,
+ &&TARGET_WITH_EXCEPT_START,
+ &&TARGET_GET_AITER,
+ &&TARGET_GET_ANEXT,
+ &&TARGET_BEFORE_ASYNC_WITH,
+ &&TARGET_BEFORE_WITH,
+ &&TARGET_END_ASYNC_FOR,
+ &&TARGET_CLEANUP_THROW,
+ &&TARGET_CALL_NO_KW_TYPE_1,
+ &&TARGET_COMPARE_OP_FLOAT,
+ &&TARGET_COMPARE_OP_INT,
+ &&TARGET_COMPARE_OP_STR,
+ &&TARGET_STORE_SUBSCR,
+ &&TARGET_DELETE_SUBSCR,
+ &&TARGET_FOR_ITER_LIST,
+ &&TARGET_FOR_ITER_TUPLE,
+ &&TARGET_FOR_ITER_RANGE,
+ &&TARGET_FOR_ITER_GEN,
+ &&TARGET_LOAD_SUPER_ATTR_ATTR,
+ &&TARGET_LOAD_SUPER_ATTR_METHOD,
+ &&TARGET_GET_ITER,
+ &&TARGET_GET_YIELD_FROM_ITER,
+ &&TARGET_LOAD_ATTR_CLASS,
+ &&TARGET_LOAD_BUILD_CLASS,
+ &&TARGET_LOAD_ATTR_GETATTRIBUTE_OVERRIDDEN,
+ &&TARGET_LOAD_ATTR_INSTANCE_VALUE,
+ &&TARGET_LOAD_ASSERTION_ERROR,
+ &&TARGET_RETURN_GENERATOR,
+ &&TARGET_LOAD_ATTR_MODULE,
+ &&TARGET_LOAD_ATTR_PROPERTY,
+ &&TARGET_LOAD_ATTR_SLOT,
+ &&TARGET_LOAD_ATTR_WITH_HINT,
+ &&TARGET_LOAD_ATTR_METHOD_LAZY_DICT,
+ &&TARGET_LOAD_ATTR_METHOD_NO_DICT,
+ &&TARGET_LOAD_ATTR_METHOD_WITH_VALUES,
+ &&TARGET_RETURN_VALUE,
+ &&TARGET_LOAD_CONST__LOAD_FAST,
+ &&TARGET_SETUP_ANNOTATIONS,
+ &&TARGET_LOAD_FAST__LOAD_CONST,
+ &&TARGET_LOAD_LOCALS,
+ &&TARGET_LOAD_FAST__LOAD_FAST,
+ &&TARGET_POP_EXCEPT,
+ &&TARGET_STORE_NAME,
+ &&TARGET_DELETE_NAME,
+ &&TARGET_UNPACK_SEQUENCE,
+ &&TARGET_FOR_ITER,
+ &&TARGET_UNPACK_EX,
+ &&TARGET_STORE_ATTR,
+ &&TARGET_DELETE_ATTR,
+ &&TARGET_STORE_GLOBAL,
+ &&TARGET_DELETE_GLOBAL,
+ &&TARGET_SWAP,
+ &&TARGET_LOAD_CONST,
+ &&TARGET_LOAD_NAME,
+ &&TARGET_BUILD_TUPLE,
+ &&TARGET_BUILD_LIST,
+ &&TARGET_BUILD_SET,
+ &&TARGET_BUILD_MAP,
+ &&TARGET_LOAD_ATTR,
+ &&TARGET_COMPARE_OP,
+ &&TARGET_IMPORT_NAME,
+ &&TARGET_IMPORT_FROM,
+ &&TARGET_JUMP_FORWARD,
+ &&TARGET_LOAD_GLOBAL_BUILTIN,
+ &&TARGET_LOAD_GLOBAL_MODULE,
+ &&TARGET_STORE_ATTR_INSTANCE_VALUE,
+ &&TARGET_POP_JUMP_IF_FALSE,
+ &&TARGET_POP_JUMP_IF_TRUE,
+ &&TARGET_LOAD_GLOBAL,
+ &&TARGET_IS_OP,
+ &&TARGET_CONTAINS_OP,
+ &&TARGET_RERAISE,
+ &&TARGET_COPY,
+ &&TARGET_RETURN_CONST,
+ &&TARGET_BINARY_OP,
+ &&TARGET_SEND,
+ &&TARGET_LOAD_FAST,
+ &&TARGET_STORE_FAST,
+ &&TARGET_DELETE_FAST,
+ &&TARGET_LOAD_FAST_CHECK,
+ &&TARGET_POP_JUMP_IF_NOT_NONE,
+ &&TARGET_POP_JUMP_IF_NONE,
+ &&TARGET_RAISE_VARARGS,
+ &&TARGET_GET_AWAITABLE,
+ &&TARGET_MAKE_FUNCTION,
+ &&TARGET_BUILD_SLICE,
+ &&TARGET_JUMP_BACKWARD_NO_INTERRUPT,
+ &&TARGET_MAKE_CELL,
+ &&TARGET_LOAD_CLOSURE,
+ &&TARGET_LOAD_DEREF,
+ &&TARGET_STORE_DEREF,
+ &&TARGET_DELETE_DEREF,
+ &&TARGET_JUMP_BACKWARD,
+ &&TARGET_LOAD_SUPER_ATTR,
+ &&TARGET_CALL_FUNCTION_EX,
+ &&TARGET_LOAD_FAST_AND_CLEAR,
+ &&TARGET_EXTENDED_ARG,
+ &&TARGET_LIST_APPEND,
+ &&TARGET_SET_ADD,
+ &&TARGET_MAP_ADD,
+ &&TARGET_STORE_ATTR_SLOT,
+ &&TARGET_COPY_FREE_VARS,
+ &&TARGET_YIELD_VALUE,
+ &&TARGET_RESUME,
+ &&TARGET_MATCH_CLASS,
+ &&TARGET_STORE_ATTR_WITH_HINT,
+ &&TARGET_STORE_FAST__LOAD_FAST,
+ &&TARGET_FORMAT_VALUE,
+ &&TARGET_BUILD_CONST_KEY_MAP,
+ &&TARGET_BUILD_STRING,
+ &&TARGET_STORE_FAST__STORE_FAST,
+ &&TARGET_STORE_SUBSCR_DICT,
+ &&TARGET_STORE_SUBSCR_LIST_INT,
+ &&TARGET_UNPACK_SEQUENCE_LIST,
+ &&TARGET_LIST_EXTEND,
+ &&TARGET_SET_UPDATE,
+ &&TARGET_DICT_MERGE,
+ &&TARGET_DICT_UPDATE,
+ &&TARGET_UNPACK_SEQUENCE_TUPLE,
+ &&TARGET_UNPACK_SEQUENCE_TWO_TUPLE,
+ &&TARGET_SEND_GEN,
+ &&_unknown_opcode,
+ &&_unknown_opcode,
+ &&TARGET_CALL,
+ &&TARGET_KW_NAMES,
+ &&TARGET_CALL_INTRINSIC_1,
+ &&TARGET_CALL_INTRINSIC_2,
+ &&TARGET_LOAD_FROM_DICT_OR_GLOBALS,
+ &&TARGET_LOAD_FROM_DICT_OR_DEREF,
+ &&_unknown_opcode,
+ &&_unknown_opcode,
+ &&_unknown_opcode,
+ &&_unknown_opcode,
+ &&_unknown_opcode,
+ &&_unknown_opcode,
+ &&_unknown_opcode,
+ &&_unknown_opcode,
+ &&_unknown_opcode,
+ &&_unknown_opcode,
+ &&_unknown_opcode,
+ &&_unknown_opcode,
+ &&_unknown_opcode,
+ &&_unknown_opcode,
+ &&_unknown_opcode,
+ &&_unknown_opcode,
+ &&_unknown_opcode,
+ &&_unknown_opcode,
+ &&_unknown_opcode,
+ &&_unknown_opcode,
+ &&_unknown_opcode,
+ &&_unknown_opcode,
+ &&_unknown_opcode,
+ &&_unknown_opcode,
+ &&_unknown_opcode,
+ &&_unknown_opcode,
+ &&_unknown_opcode,
+ &&_unknown_opcode,
+ &&_unknown_opcode,
+ &&_unknown_opcode,
+ &&_unknown_opcode,
+ &&_unknown_opcode,
+ &&_unknown_opcode,
+ &&_unknown_opcode,
+ &&_unknown_opcode,
+ &&_unknown_opcode,
+ &&_unknown_opcode,
+ &&_unknown_opcode,
+ &&_unknown_opcode,
+ &&_unknown_opcode,
+ &&_unknown_opcode,
+ &&_unknown_opcode,
+ &&_unknown_opcode,
+ &&_unknown_opcode,
+ &&_unknown_opcode,
+ &&_unknown_opcode,
+ &&_unknown_opcode,
+ &&_unknown_opcode,
+ &&_unknown_opcode,
+ &&_unknown_opcode,
+ &&_unknown_opcode,
+ &&_unknown_opcode,
+ &&_unknown_opcode,
+ &&_unknown_opcode,
+ &&_unknown_opcode,
+ &&_unknown_opcode,
+ &&_unknown_opcode,
+ &&_unknown_opcode,
+ &&_unknown_opcode,
+ &&_unknown_opcode,
+ &&TARGET_INSTRUMENTED_LOAD_SUPER_ATTR,
+ &&TARGET_INSTRUMENTED_POP_JUMP_IF_NONE,
+ &&TARGET_INSTRUMENTED_POP_JUMP_IF_NOT_NONE,
+ &&TARGET_INSTRUMENTED_RESUME,
+ &&TARGET_INSTRUMENTED_CALL,
+ &&TARGET_INSTRUMENTED_RETURN_VALUE,
+ &&TARGET_INSTRUMENTED_YIELD_VALUE,
+ &&TARGET_INSTRUMENTED_CALL_FUNCTION_EX,
+ &&TARGET_INSTRUMENTED_JUMP_FORWARD,
+ &&TARGET_INSTRUMENTED_JUMP_BACKWARD,
+ &&TARGET_INSTRUMENTED_RETURN_CONST,
+ &&TARGET_INSTRUMENTED_FOR_ITER,
+ &&TARGET_INSTRUMENTED_POP_JUMP_IF_FALSE,
+ &&TARGET_INSTRUMENTED_POP_JUMP_IF_TRUE,
+ &&TARGET_INSTRUMENTED_END_FOR,
+ &&TARGET_INSTRUMENTED_END_SEND,
+ &&TARGET_INSTRUMENTED_INSTRUCTION,
+ &&TARGET_INSTRUMENTED_LINE,
+ &&_unknown_opcode
+};
diff --git a/contrib/tools/python3/Python/pathconfig.c b/contrib/tools/python3/Python/pathconfig.c
new file mode 100644
index 00000000000..be0f97c4b20
--- /dev/null
+++ b/contrib/tools/python3/Python/pathconfig.c
@@ -0,0 +1,524 @@
+/* Path configuration like module_search_path (sys.path) */
+
+#include "Python.h"
+#include "marshal.h" // PyMarshal_ReadObjectFromString
+#include "osdefs.h" // DELIM
+#include "pycore_initconfig.h"
+#include "pycore_fileutils.h"
+#include "pycore_pathconfig.h"
+#include "pycore_pymem.h" // _PyMem_SetDefaultAllocator()
+#include <wchar.h>
+#ifdef MS_WINDOWS
+# include <windows.h> // GetFullPathNameW(), MAX_PATH
+# include <pathcch.h>
+# include <shlwapi.h>
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/* External interface */
+
+/* Stored values set by C API functions */
+typedef struct _PyPathConfig {
+ /* Full path to the Python program */
+ wchar_t *program_full_path;
+ wchar_t *prefix;
+ wchar_t *exec_prefix;
+ wchar_t *stdlib_dir;
+ /* Set by Py_SetPath */
+ wchar_t *module_search_path;
+ /* Set by _PyPathConfig_UpdateGlobal */
+ wchar_t *calculated_module_search_path;
+ /* Python program name */
+ wchar_t *program_name;
+ /* Set by Py_SetPythonHome() or PYTHONHOME environment variable */
+ wchar_t *home;
+ int _is_python_build;
+} _PyPathConfig;
+
+# define _PyPathConfig_INIT \
+ {.module_search_path = NULL, ._is_python_build = 0}
+
+
+_PyPathConfig _Py_path_config = _PyPathConfig_INIT;
+
+
+const wchar_t *
+_PyPathConfig_GetGlobalModuleSearchPath(void)
+{
+ return _Py_path_config.module_search_path;
+}
+
+
+void
+_PyPathConfig_ClearGlobal(void)
+{
+ PyMemAllocatorEx old_alloc;
+ _PyMem_SetDefaultAllocator(PYMEM_DOMAIN_RAW, &old_alloc);
+
+#define CLEAR(ATTR) \
+ do { \
+ PyMem_RawFree(_Py_path_config.ATTR); \
+ _Py_path_config.ATTR = NULL; \
+ } while (0)
+
+ CLEAR(program_full_path);
+ CLEAR(prefix);
+ CLEAR(exec_prefix);
+ CLEAR(stdlib_dir);
+ CLEAR(module_search_path);
+ CLEAR(calculated_module_search_path);
+ CLEAR(program_name);
+ CLEAR(home);
+ _Py_path_config._is_python_build = 0;
+
+#undef CLEAR
+
+ PyMem_SetAllocator(PYMEM_DOMAIN_RAW, &old_alloc);
+}
+
+PyStatus
+_PyPathConfig_ReadGlobal(PyConfig *config)
+{
+ PyStatus status = _PyStatus_OK();
+
+#define COPY(ATTR) \
+ do { \
+ if (_Py_path_config.ATTR && !config->ATTR) { \
+ status = PyConfig_SetString(config, &config->ATTR, _Py_path_config.ATTR); \
+ if (_PyStatus_EXCEPTION(status)) goto done; \
+ } \
+ } while (0)
+
+#define COPY2(ATTR, SRCATTR) \
+ do { \
+ if (_Py_path_config.SRCATTR && !config->ATTR) { \
+ status = PyConfig_SetString(config, &config->ATTR, _Py_path_config.SRCATTR); \
+ if (_PyStatus_EXCEPTION(status)) goto done; \
+ } \
+ } while (0)
+
+#define COPY_INT(ATTR) \
+ do { \
+ assert(_Py_path_config.ATTR >= 0); \
+ if ((_Py_path_config.ATTR >= 0) && (config->ATTR <= 0)) { \
+ config->ATTR = _Py_path_config.ATTR; \
+ } \
+ } while (0)
+
+ COPY(prefix);
+ COPY(exec_prefix);
+ COPY(stdlib_dir);
+ COPY(program_name);
+ COPY(home);
+ COPY2(executable, program_full_path);
+ COPY_INT(_is_python_build);
+ // module_search_path must be initialised - not read
+#undef COPY
+#undef COPY2
+#undef COPY_INT
+
+done:
+ return status;
+}
+
+PyStatus
+_PyPathConfig_UpdateGlobal(const PyConfig *config)
+{
+ PyMemAllocatorEx old_alloc;
+ _PyMem_SetDefaultAllocator(PYMEM_DOMAIN_RAW, &old_alloc);
+
+#define COPY(ATTR) \
+ do { \
+ if (config->ATTR) { \
+ PyMem_RawFree(_Py_path_config.ATTR); \
+ _Py_path_config.ATTR = _PyMem_RawWcsdup(config->ATTR); \
+ if (!_Py_path_config.ATTR) goto error; \
+ } \
+ } while (0)
+
+#define COPY2(ATTR, SRCATTR) \
+ do { \
+ if (config->SRCATTR) { \
+ PyMem_RawFree(_Py_path_config.ATTR); \
+ _Py_path_config.ATTR = _PyMem_RawWcsdup(config->SRCATTR); \
+ if (!_Py_path_config.ATTR) goto error; \
+ } \
+ } while (0)
+
+#define COPY_INT(ATTR) \
+ do { \
+ if (config->ATTR > 0) { \
+ _Py_path_config.ATTR = config->ATTR; \
+ } \
+ } while (0)
+
+ COPY(prefix);
+ COPY(exec_prefix);
+ COPY(stdlib_dir);
+ COPY(program_name);
+ COPY(home);
+ COPY2(program_full_path, executable);
+ COPY_INT(_is_python_build);
+#undef COPY
+#undef COPY2
+#undef COPY_INT
+
+ PyMem_RawFree(_Py_path_config.module_search_path);
+ _Py_path_config.module_search_path = NULL;
+ PyMem_RawFree(_Py_path_config.calculated_module_search_path);
+ _Py_path_config.calculated_module_search_path = NULL;
+
+ do {
+ size_t cch = 1;
+ for (Py_ssize_t i = 0; i < config->module_search_paths.length; ++i) {
+ cch += 1 + wcslen(config->module_search_paths.items[i]);
+ }
+
+ wchar_t *path = (wchar_t*)PyMem_RawMalloc(sizeof(wchar_t) * cch);
+ if (!path) {
+ goto error;
+ }
+ wchar_t *p = path;
+ for (Py_ssize_t i = 0; i < config->module_search_paths.length; ++i) {
+ wcscpy(p, config->module_search_paths.items[i]);
+ p = wcschr(p, L'\0');
+ *p++ = DELIM;
+ *p = L'\0';
+ }
+
+ do {
+ *p = L'\0';
+ } while (p != path && *--p == DELIM);
+ _Py_path_config.calculated_module_search_path = path;
+ } while (0);
+
+ PyMem_SetAllocator(PYMEM_DOMAIN_RAW, &old_alloc);
+ return _PyStatus_OK();
+
+error:
+ PyMem_SetAllocator(PYMEM_DOMAIN_RAW, &old_alloc);
+ return _PyStatus_NO_MEMORY();
+}
+
+
+static void _Py_NO_RETURN
+path_out_of_memory(const char *func)
+{
+ _Py_FatalErrorFunc(func, "out of memory");
+}
+
+void
+Py_SetPath(const wchar_t *path)
+{
+ if (path == NULL) {
+ _PyPathConfig_ClearGlobal();
+ return;
+ }
+
+ PyMemAllocatorEx old_alloc;
+ _PyMem_SetDefaultAllocator(PYMEM_DOMAIN_RAW, &old_alloc);
+
+ PyMem_RawFree(_Py_path_config.prefix);
+ PyMem_RawFree(_Py_path_config.exec_prefix);
+ PyMem_RawFree(_Py_path_config.stdlib_dir);
+ PyMem_RawFree(_Py_path_config.module_search_path);
+ PyMem_RawFree(_Py_path_config.calculated_module_search_path);
+
+ _Py_path_config.prefix = _PyMem_RawWcsdup(L"");
+ _Py_path_config.exec_prefix = _PyMem_RawWcsdup(L"");
+ // XXX Copy this from the new module_search_path?
+ if (_Py_path_config.home != NULL) {
+ _Py_path_config.stdlib_dir = _PyMem_RawWcsdup(_Py_path_config.home);
+ }
+ else {
+ _Py_path_config.stdlib_dir = _PyMem_RawWcsdup(L"");
+ }
+ _Py_path_config.module_search_path = _PyMem_RawWcsdup(path);
+ _Py_path_config.calculated_module_search_path = NULL;
+
+ PyMem_SetAllocator(PYMEM_DOMAIN_RAW, &old_alloc);
+
+ if (_Py_path_config.prefix == NULL
+ || _Py_path_config.exec_prefix == NULL
+ || _Py_path_config.stdlib_dir == NULL
+ || _Py_path_config.module_search_path == NULL)
+ {
+ path_out_of_memory(__func__);
+ }
+}
+
+
+void
+Py_SetPythonHome(const wchar_t *home)
+{
+ int has_value = home && home[0];
+
+ PyMemAllocatorEx old_alloc;
+ _PyMem_SetDefaultAllocator(PYMEM_DOMAIN_RAW, &old_alloc);
+
+ PyMem_RawFree(_Py_path_config.home);
+ _Py_path_config.home = NULL;
+
+ if (has_value) {
+ _Py_path_config.home = _PyMem_RawWcsdup(home);
+ }
+
+ PyMem_SetAllocator(PYMEM_DOMAIN_RAW, &old_alloc);
+
+ if (has_value && _Py_path_config.home == NULL) {
+ path_out_of_memory(__func__);
+ }
+}
+
+
+void
+Py_SetProgramName(const wchar_t *program_name)
+{
+ int has_value = program_name && program_name[0];
+
+ PyMemAllocatorEx old_alloc;
+ _PyMem_SetDefaultAllocator(PYMEM_DOMAIN_RAW, &old_alloc);
+
+ PyMem_RawFree(_Py_path_config.program_name);
+ _Py_path_config.program_name = NULL;
+
+ if (has_value) {
+ _Py_path_config.program_name = _PyMem_RawWcsdup(program_name);
+ }
+
+ PyMem_SetAllocator(PYMEM_DOMAIN_RAW, &old_alloc);
+
+ if (has_value && _Py_path_config.program_name == NULL) {
+ path_out_of_memory(__func__);
+ }
+}
+
+void
+_Py_SetProgramFullPath(const wchar_t *program_full_path)
+{
+ int has_value = program_full_path && program_full_path[0];
+
+ PyMemAllocatorEx old_alloc;
+ _PyMem_SetDefaultAllocator(PYMEM_DOMAIN_RAW, &old_alloc);
+
+ PyMem_RawFree(_Py_path_config.program_full_path);
+ _Py_path_config.program_full_path = NULL;
+
+ if (has_value) {
+ _Py_path_config.program_full_path = _PyMem_RawWcsdup(program_full_path);
+ }
+
+ PyMem_SetAllocator(PYMEM_DOMAIN_RAW, &old_alloc);
+
+ if (has_value && _Py_path_config.program_full_path == NULL) {
+ path_out_of_memory(__func__);
+ }
+}
+
+
+wchar_t *
+Py_GetPath(void)
+{
+ /* If the user has provided a path, return that */
+ if (_Py_path_config.module_search_path) {
+ return _Py_path_config.module_search_path;
+ }
+ /* If we have already done calculations, return the calculated path */
+ return _Py_path_config.calculated_module_search_path;
+}
+
+
+wchar_t *
+_Py_GetStdlibDir(void)
+{
+ wchar_t *stdlib_dir = _Py_path_config.stdlib_dir;
+ if (stdlib_dir != NULL && stdlib_dir[0] != L'\0') {
+ return stdlib_dir;
+ }
+ return NULL;
+}
+
+
+wchar_t *
+Py_GetPrefix(void)
+{
+ return _Py_path_config.prefix;
+}
+
+
+wchar_t *
+Py_GetExecPrefix(void)
+{
+ return _Py_path_config.exec_prefix;
+}
+
+
+wchar_t *
+Py_GetProgramFullPath(void)
+{
+ return _Py_path_config.program_full_path;
+}
+
+
+wchar_t*
+Py_GetPythonHome(void)
+{
+ return _Py_path_config.home;
+}
+
+
+wchar_t *
+Py_GetProgramName(void)
+{
+ return _Py_path_config.program_name;
+}
+
+
+
+/* Compute module search path from argv[0] or the current working
+ directory ("-m module" case) which will be prepended to sys.argv:
+ sys.path[0].
+
+ Return 1 if the path is correctly resolved and written into *path0_p.
+
+ Return 0 if it fails to resolve the full path. For example, return 0 if the
+ current working directory has been removed (bpo-36236) or if argv is empty.
+
+ Raise an exception and return -1 on error.
+ */
+int
+_PyPathConfig_ComputeSysPath0(const PyWideStringList *argv, PyObject **path0_p)
+{
+ assert(_PyWideStringList_CheckConsistency(argv));
+
+ if (argv->length == 0) {
+ /* Leave sys.path unchanged if sys.argv is empty */
+ return 0;
+ }
+
+ wchar_t *argv0 = argv->items[0];
+ int have_module_arg = (wcscmp(argv0, L"-m") == 0);
+ int have_script_arg = (!have_module_arg && (wcscmp(argv0, L"-c") != 0));
+
+ wchar_t *path0 = argv0;
+ Py_ssize_t n = 0;
+
+#ifdef HAVE_REALPATH
+ wchar_t fullpath[MAXPATHLEN];
+#elif defined(MS_WINDOWS)
+ wchar_t fullpath[MAX_PATH];
+#endif
+
+ if (have_module_arg) {
+#if defined(HAVE_REALPATH) || defined(MS_WINDOWS)
+ if (!_Py_wgetcwd(fullpath, Py_ARRAY_LENGTH(fullpath))) {
+ return 0;
+ }
+ path0 = fullpath;
+#else
+ path0 = L".";
+#endif
+ n = wcslen(path0);
+ }
+
+#ifdef HAVE_READLINK
+ wchar_t link[MAXPATHLEN + 1];
+ int nr = 0;
+ wchar_t path0copy[2 * MAXPATHLEN + 1];
+
+ if (have_script_arg) {
+ nr = _Py_wreadlink(path0, link, Py_ARRAY_LENGTH(link));
+ }
+ if (nr > 0) {
+ /* It's a symlink */
+ link[nr] = '\0';
+ if (link[0] == SEP) {
+ path0 = link; /* Link to absolute path */
+ }
+ else if (wcschr(link, SEP) == NULL) {
+ /* Link without path */
+ }
+ else {
+ /* Must join(dirname(path0), link) */
+ wchar_t *q = wcsrchr(path0, SEP);
+ if (q == NULL) {
+ /* path0 without path */
+ path0 = link;
+ }
+ else {
+ /* Must make a copy, path0copy has room for 2 * MAXPATHLEN */
+ wcsncpy(path0copy, path0, MAXPATHLEN);
+ q = wcsrchr(path0copy, SEP);
+ wcsncpy(q+1, link, MAXPATHLEN);
+ q[MAXPATHLEN + 1] = L'\0';
+ path0 = path0copy;
+ }
+ }
+ }
+#endif /* HAVE_READLINK */
+
+ wchar_t *p = NULL;
+
+#if SEP == '\\'
+ /* Special case for Microsoft filename syntax */
+ if (have_script_arg) {
+ wchar_t *q;
+#if defined(MS_WINDOWS)
+ /* Replace the first element in argv with the full path. */
+ wchar_t *ptemp;
+ if (GetFullPathNameW(path0,
+ Py_ARRAY_LENGTH(fullpath),
+ fullpath,
+ &ptemp)) {
+ path0 = fullpath;
+ }
+#endif
+ p = wcsrchr(path0, SEP);
+ /* Test for alternate separator */
+ q = wcsrchr(p ? p : path0, '/');
+ if (q != NULL)
+ p = q;
+ if (p != NULL) {
+ n = p + 1 - path0;
+ if (n > 1 && p[-1] != ':')
+ n--; /* Drop trailing separator */
+ }
+ }
+#else
+ /* All other filename syntaxes */
+ if (have_script_arg) {
+#if defined(HAVE_REALPATH)
+ if (_Py_wrealpath(path0, fullpath, Py_ARRAY_LENGTH(fullpath))) {
+ path0 = fullpath;
+ }
+#endif
+ p = wcsrchr(path0, SEP);
+ }
+ if (p != NULL) {
+ n = p + 1 - path0;
+#if SEP == '/' /* Special case for Unix filename syntax */
+ if (n > 1) {
+ /* Drop trailing separator */
+ n--;
+ }
+#endif /* Unix */
+ }
+#endif /* All others */
+
+ PyObject *path0_obj = PyUnicode_FromWideChar(path0, n);
+ if (path0_obj == NULL) {
+ return -1;
+ }
+
+ *path0_p = path0_obj;
+ return 1;
+}
+
+
+#ifdef __cplusplus
+}
+#endif
diff --git a/contrib/tools/python3/Python/perf_trampoline.c b/contrib/tools/python3/Python/perf_trampoline.c
new file mode 100644
index 00000000000..ea9dc83dd0f
--- /dev/null
+++ b/contrib/tools/python3/Python/perf_trampoline.c
@@ -0,0 +1,493 @@
+/*
+
+Perf trampoline instrumentation
+===============================
+
+This file contains instrumentation to allow to associate
+calls to the CPython eval loop back to the names of the Python
+functions and filename being executed.
+
+Many native performance profilers like the Linux perf tools are
+only available to 'see' the C stack when sampling from the profiled
+process. This means that if we have the following python code:
+
+ import time
+ def foo(n):
+ # Some CPU intensive code
+
+ def bar(n):
+ foo(n)
+
+ def baz(n):
+ bar(n)
+
+ baz(10000000)
+
+A performance profiler that is only able to see native frames will
+produce the following backtrace when sampling from foo():
+
+ _PyEval_EvalFrameDefault -----> Evaluation frame of foo()
+ _PyEval_Vector
+ _PyFunction_Vectorcall
+ PyObject_Vectorcall
+ call_function
+
+ _PyEval_EvalFrameDefault ------> Evaluation frame of bar()
+ _PyEval_EvalFrame
+ _PyEval_Vector
+ _PyFunction_Vectorcall
+ PyObject_Vectorcall
+ call_function
+
+ _PyEval_EvalFrameDefault -------> Evaluation frame of baz()
+ _PyEval_EvalFrame
+ _PyEval_Vector
+ _PyFunction_Vectorcall
+ PyObject_Vectorcall
+ call_function
+
+ ...
+
+ Py_RunMain
+
+Because the profiler is only able to see the native frames and the native
+function that runs the evaluation loop is the same (_PyEval_EvalFrameDefault)
+then the profiler and any reporter generated by it will not be able to
+associate the names of the Python functions and the filenames associated with
+those calls, rendering the results useless in the Python world.
+
+To fix this problem, we introduce the concept of a trampoline frame. A
+trampoline frame is a piece of code that is unique per Python code object that
+is executed before entering the CPython eval loop. This piece of code just
+calls the original Python evaluation function (_PyEval_EvalFrameDefault) and
+forwards all the arguments received. In this way, when a profiler samples
+frames from the previous example it will see;
+
+ _PyEval_EvalFrameDefault -----> Evaluation frame of foo()
+ [Jit compiled code 3]
+ _PyEval_Vector
+ _PyFunction_Vectorcall
+ PyObject_Vectorcall
+ call_function
+
+ _PyEval_EvalFrameDefault ------> Evaluation frame of bar()
+ [Jit compiled code 2]
+ _PyEval_EvalFrame
+ _PyEval_Vector
+ _PyFunction_Vectorcall
+ PyObject_Vectorcall
+ call_function
+
+ _PyEval_EvalFrameDefault -------> Evaluation frame of baz()
+ [Jit compiled code 1]
+ _PyEval_EvalFrame
+ _PyEval_Vector
+ _PyFunction_Vectorcall
+ PyObject_Vectorcall
+ call_function
+
+ ...
+
+ Py_RunMain
+
+When we generate every unique copy of the trampoline (what here we called "[Jit
+compiled code N]") we write the relationship between the compiled code and the
+Python function that is associated with it. Every profiler requires this
+information in a different format. For example, the Linux "perf" profiler
+requires a file in "/tmp/perf-PID.map" (name and location not configurable)
+with the following format:
+
+ <compiled code address> <compiled code size> <name of the compiled code>
+
+If this file is available when "perf" generates reports, it will automatically
+associate every trampoline with the Python function that it is associated with
+allowing it to generate reports that include Python information. These reports
+then can also be filtered in a way that *only* Python information appears.
+
+Notice that for this to work, there must be a unique copied of the trampoline
+per Python code object even if the code in the trampoline is the same. To
+achieve this we have a assembly template in Objects/asm_trampiline.S that is
+compiled into the Python executable/shared library. This template generates a
+symbol that maps the start of the assembly code and another that marks the end
+of the assembly code for the trampoline. Then, every time we need a unique
+trampoline for a Python code object, we copy the assembly code into a mmaped
+area that has executable permissions and we return the start of that area as
+our trampoline function.
+
+Asking for a mmap-ed memory area for trampoline is very wasteful so we
+allocate big arenas of memory in a single mmap call, we populate the entire
+arena with copies of the trampoline (this allows us to now have to invalidate
+the icache for the instructions in the page) and then we return the next
+available chunk every time someone asks for a new trampoline. We keep a linked
+list of arenas in case the current memory arena is exhausted and another one is
+needed.
+
+For the best results, Python should be compiled with
+CFLAGS="-fno-omit-frame-pointer -mno-omit-leaf-frame-pointer" as this allows
+profilers to unwind using only the frame pointer and not on DWARF debug
+information (note that as trampilines are dynamically generated there won't be
+any DWARF information available for them).
+*/
+
+#include "Python.h"
+#include "pycore_ceval.h"
+#include "pycore_frame.h"
+#include "pycore_interp.h"
+
+
+#ifdef PY_HAVE_PERF_TRAMPOLINE
+
+#include <fcntl.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <sys/mman.h>
+#include <sys/types.h>
+#include <unistd.h>
+
+#if defined(__arm__) || defined(__arm64__) || defined(__aarch64__)
+#define PY_HAVE_INVALIDATE_ICACHE
+
+#if defined(__clang__) || defined(__GNUC__)
+extern void __clear_cache(void *, void*);
+#endif
+
+static void invalidate_icache(char* begin, char*end) {
+#if defined(__clang__) || defined(__GNUC__)
+ return __clear_cache(begin, end);
+#else
+ return;
+#endif
+}
+#endif
+
+/* The function pointer is passed as last argument. The other three arguments
+ * are passed in the same order as the function requires. This results in
+ * shorter, more efficient ASM code for trampoline.
+ */
+typedef PyObject *(*py_evaluator)(PyThreadState *, _PyInterpreterFrame *,
+ int throwflag);
+typedef PyObject *(*py_trampoline)(PyThreadState *, _PyInterpreterFrame *, int,
+ py_evaluator);
+
+extern void *_Py_trampoline_func_start; // Start of the template of the
+ // assembly trampoline
+extern void *
+ _Py_trampoline_func_end; // End of the template of the assembly trampoline
+
+struct code_arena_st {
+ char *start_addr; // Start of the memory arena
+ char *current_addr; // Address of the current trampoline within the arena
+ size_t size; // Size of the memory arena
+ size_t size_left; // Remaining size of the memory arena
+ size_t code_size; // Size of the code of every trampoline in the arena
+ struct code_arena_st
+ *prev; // Pointer to the arena or NULL if this is the first arena.
+};
+
+typedef struct code_arena_st code_arena_t;
+typedef struct trampoline_api_st trampoline_api_t;
+
+#define perf_status _PyRuntime.ceval.perf.status
+#define extra_code_index _PyRuntime.ceval.perf.extra_code_index
+#define perf_code_arena _PyRuntime.ceval.perf.code_arena
+#define trampoline_api _PyRuntime.ceval.perf.trampoline_api
+#define perf_map_file _PyRuntime.ceval.perf.map_file
+
+
+static void
+perf_map_write_entry(void *state, const void *code_addr,
+ unsigned int code_size, PyCodeObject *co)
+{
+ const char *entry = "";
+ if (co->co_qualname != NULL) {
+ entry = PyUnicode_AsUTF8(co->co_qualname);
+ }
+ const char *filename = "";
+ if (co->co_filename != NULL) {
+ filename = PyUnicode_AsUTF8(co->co_filename);
+ }
+ size_t perf_map_entry_size = snprintf(NULL, 0, "py::%s:%s", entry, filename) + 1;
+ char* perf_map_entry = (char*) PyMem_RawMalloc(perf_map_entry_size);
+ if (perf_map_entry == NULL) {
+ return;
+ }
+ snprintf(perf_map_entry, perf_map_entry_size, "py::%s:%s", entry, filename);
+ PyUnstable_WritePerfMapEntry(code_addr, code_size, perf_map_entry);
+ PyMem_RawFree(perf_map_entry);
+}
+
+static void*
+perf_map_init_state(void)
+{
+ PyUnstable_PerfMapState_Init();
+ return NULL;
+}
+
+static int
+perf_map_free_state(void *state)
+{
+ PyUnstable_PerfMapState_Fini();
+ return 0;
+}
+
+_PyPerf_Callbacks _Py_perfmap_callbacks = {
+ &perf_map_init_state,
+ &perf_map_write_entry,
+ &perf_map_free_state,
+};
+
+static int
+new_code_arena(void)
+{
+ // non-trivial programs typically need 64 to 256 kiB.
+ size_t mem_size = 4096 * 16;
+ assert(mem_size % sysconf(_SC_PAGESIZE) == 0);
+ char *memory =
+ mmap(NULL, // address
+ mem_size, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS,
+ -1, // fd (not used here)
+ 0); // offset (not used here)
+ if (memory == MAP_FAILED) {
+ PyErr_SetFromErrno(PyExc_OSError);
+ _PyErr_WriteUnraisableMsg(
+ "Failed to create new mmap for perf trampoline", NULL);
+ perf_status = PERF_STATUS_FAILED;
+ return -1;
+ }
+ void *start = &_Py_trampoline_func_start;
+ void *end = &_Py_trampoline_func_end;
+ size_t code_size = end - start;
+ // TODO: Check the effect of alignment of the code chunks. Initial investigation
+ // showed that this has no effect on performance in x86-64 or aarch64 and the current
+ // version has the advantage that the unwinder in GDB can unwind across JIT-ed code.
+ //
+ // We should check the values in the future and see if there is a
+ // measurable performance improvement by rounding trampolines up to 32-bit
+ // or 64-bit alignment.
+
+ size_t n_copies = mem_size / code_size;
+ for (size_t i = 0; i < n_copies; i++) {
+ memcpy(memory + i * code_size, start, code_size * sizeof(char));
+ }
+ // Some systems may prevent us from creating executable code on the fly.
+ int res = mprotect(memory, mem_size, PROT_READ | PROT_EXEC);
+ if (res == -1) {
+ PyErr_SetFromErrno(PyExc_OSError);
+ munmap(memory, mem_size);
+ _PyErr_WriteUnraisableMsg(
+ "Failed to set mmap for perf trampoline to PROT_READ | PROT_EXEC",
+ NULL);
+ return -1;
+ }
+
+#ifdef PY_HAVE_INVALIDATE_ICACHE
+ // Before the JIT can run a block of code that has been emitted it must invalidate
+ // the instruction cache on some platforms like arm and aarch64.
+ invalidate_icache(memory, memory + mem_size);
+#endif
+
+ code_arena_t *new_arena = PyMem_RawCalloc(1, sizeof(code_arena_t));
+ if (new_arena == NULL) {
+ PyErr_NoMemory();
+ munmap(memory, mem_size);
+ _PyErr_WriteUnraisableMsg("Failed to allocate new code arena struct",
+ NULL);
+ return -1;
+ }
+
+ new_arena->start_addr = memory;
+ new_arena->current_addr = memory;
+ new_arena->size = mem_size;
+ new_arena->size_left = mem_size;
+ new_arena->code_size = code_size;
+ new_arena->prev = perf_code_arena;
+ perf_code_arena = new_arena;
+ return 0;
+}
+
+static void
+free_code_arenas(void)
+{
+ code_arena_t *cur = perf_code_arena;
+ code_arena_t *prev;
+ perf_code_arena = NULL; // invalid static pointer
+ while (cur) {
+ munmap(cur->start_addr, cur->size);
+ prev = cur->prev;
+ PyMem_RawFree(cur);
+ cur = prev;
+ }
+}
+
+static inline py_trampoline
+code_arena_new_code(code_arena_t *code_arena)
+{
+ py_trampoline trampoline = (py_trampoline)code_arena->current_addr;
+ code_arena->size_left -= code_arena->code_size;
+ code_arena->current_addr += code_arena->code_size;
+ return trampoline;
+}
+
+static inline py_trampoline
+compile_trampoline(void)
+{
+ if ((perf_code_arena == NULL) ||
+ (perf_code_arena->size_left <= perf_code_arena->code_size)) {
+ if (new_code_arena() < 0) {
+ return NULL;
+ }
+ }
+ assert(perf_code_arena->size_left <= perf_code_arena->size);
+ return code_arena_new_code(perf_code_arena);
+}
+
+static PyObject *
+py_trampoline_evaluator(PyThreadState *ts, _PyInterpreterFrame *frame,
+ int throw)
+{
+ if (perf_status == PERF_STATUS_FAILED ||
+ perf_status == PERF_STATUS_NO_INIT) {
+ goto default_eval;
+ }
+ PyCodeObject *co = frame->f_code;
+ py_trampoline f = NULL;
+ assert(extra_code_index != -1);
+ int ret = _PyCode_GetExtra((PyObject *)co, extra_code_index, (void **)&f);
+ if (ret != 0 || f == NULL) {
+ // This is the first time we see this code object so we need
+ // to compile a trampoline for it.
+ py_trampoline new_trampoline = compile_trampoline();
+ if (new_trampoline == NULL) {
+ goto default_eval;
+ }
+ trampoline_api.write_state(trampoline_api.state, new_trampoline,
+ perf_code_arena->code_size, co);
+ _PyCode_SetExtra((PyObject *)co, extra_code_index,
+ (void *)new_trampoline);
+ f = new_trampoline;
+ }
+ assert(f != NULL);
+ return f(ts, frame, throw, _PyEval_EvalFrameDefault);
+default_eval:
+ // Something failed, fall back to the default evaluator.
+ return _PyEval_EvalFrameDefault(ts, frame, throw);
+}
+#endif // PY_HAVE_PERF_TRAMPOLINE
+
+int
+_PyIsPerfTrampolineActive(void)
+{
+#ifdef PY_HAVE_PERF_TRAMPOLINE
+ PyThreadState *tstate = _PyThreadState_GET();
+ return tstate->interp->eval_frame == py_trampoline_evaluator;
+#endif
+ return 0;
+}
+
+void
+_PyPerfTrampoline_GetCallbacks(_PyPerf_Callbacks *callbacks)
+{
+ if (callbacks == NULL) {
+ return;
+ }
+#ifdef PY_HAVE_PERF_TRAMPOLINE
+ callbacks->init_state = trampoline_api.init_state;
+ callbacks->write_state = trampoline_api.write_state;
+ callbacks->free_state = trampoline_api.free_state;
+#endif
+ return;
+}
+
+int
+_PyPerfTrampoline_SetCallbacks(_PyPerf_Callbacks *callbacks)
+{
+ if (callbacks == NULL) {
+ return -1;
+ }
+#ifdef PY_HAVE_PERF_TRAMPOLINE
+ if (trampoline_api.state) {
+ _PyPerfTrampoline_Fini();
+ }
+ trampoline_api.init_state = callbacks->init_state;
+ trampoline_api.write_state = callbacks->write_state;
+ trampoline_api.free_state = callbacks->free_state;
+ trampoline_api.state = NULL;
+#endif
+ return 0;
+}
+
+void _PyPerfTrampoline_FreeArenas(void) {
+#ifdef PY_HAVE_PERF_TRAMPOLINE
+ free_code_arenas();
+#endif
+ return;
+}
+
+int
+_PyPerfTrampoline_Init(int activate)
+{
+#ifdef PY_HAVE_PERF_TRAMPOLINE
+ PyThreadState *tstate = _PyThreadState_GET();
+ if (tstate->interp->eval_frame &&
+ tstate->interp->eval_frame != py_trampoline_evaluator) {
+ PyErr_SetString(PyExc_RuntimeError,
+ "Trampoline cannot be initialized as a custom eval "
+ "frame is already present");
+ return -1;
+ }
+ if (!activate) {
+ tstate->interp->eval_frame = NULL;
+ perf_status = PERF_STATUS_NO_INIT;
+ }
+ else {
+ tstate->interp->eval_frame = py_trampoline_evaluator;
+ if (new_code_arena() < 0) {
+ return -1;
+ }
+ extra_code_index = _PyEval_RequestCodeExtraIndex(NULL);
+ if (extra_code_index == -1) {
+ return -1;
+ }
+ if (trampoline_api.state == NULL && trampoline_api.init_state != NULL) {
+ trampoline_api.state = trampoline_api.init_state();
+ }
+ perf_status = PERF_STATUS_OK;
+ }
+#endif
+ return 0;
+}
+
+int
+_PyPerfTrampoline_Fini(void)
+{
+#ifdef PY_HAVE_PERF_TRAMPOLINE
+ if (perf_status != PERF_STATUS_OK) {
+ return 0;
+ }
+ PyThreadState *tstate = _PyThreadState_GET();
+ if (tstate->interp->eval_frame == py_trampoline_evaluator) {
+ tstate->interp->eval_frame = NULL;
+ }
+ if (perf_status == PERF_STATUS_OK) {
+ trampoline_api.free_state(trampoline_api.state);
+ }
+ extra_code_index = -1;
+ perf_status = PERF_STATUS_NO_INIT;
+#endif
+ return 0;
+}
+
+PyStatus
+_PyPerfTrampoline_AfterFork_Child(void)
+{
+#ifdef PY_HAVE_PERF_TRAMPOLINE
+ // Restart trampoline in file in child.
+ int was_active = _PyIsPerfTrampolineActive();
+ _PyPerfTrampoline_Fini();
+ PyUnstable_PerfMapState_Fini();
+ if (was_active) {
+ _PyPerfTrampoline_Init(1);
+ }
+#endif
+ return PyStatus_Ok();
+}
diff --git a/contrib/tools/python3/Python/preconfig.c b/contrib/tools/python3/Python/preconfig.c
new file mode 100644
index 00000000000..77a86d651eb
--- /dev/null
+++ b/contrib/tools/python3/Python/preconfig.c
@@ -0,0 +1,977 @@
+#include "Python.h"
+#include "pycore_fileutils.h" // DECODE_LOCALE_ERR
+#include "pycore_getopt.h" // _PyOS_GetOpt()
+#include "pycore_initconfig.h" // _PyArgv
+#include "pycore_pymem.h" // _PyMem_GetAllocatorName()
+#include "pycore_runtime.h" // _PyRuntime_Initialize()
+
+#include <locale.h> // setlocale()
+#include <stdlib.h> // getenv()
+
+
+/* Forward declarations */
+static void
+preconfig_copy(PyPreConfig *config, const PyPreConfig *config2);
+
+
+/* --- File system encoding/errors -------------------------------- */
+
+const char *Py_FileSystemDefaultEncoding = NULL;
+int Py_HasFileSystemDefaultEncoding = 0;
+const char *Py_FileSystemDefaultEncodeErrors = NULL;
+int _Py_HasFileSystemDefaultEncodeErrors = 0;
+
+void
+_Py_ClearFileSystemEncoding(void)
+{
+_Py_COMP_DIAG_PUSH
+_Py_COMP_DIAG_IGNORE_DEPR_DECLS
+ if (!Py_HasFileSystemDefaultEncoding && Py_FileSystemDefaultEncoding) {
+ PyMem_RawFree((char*)Py_FileSystemDefaultEncoding);
+ Py_FileSystemDefaultEncoding = NULL;
+ }
+ if (!_Py_HasFileSystemDefaultEncodeErrors && Py_FileSystemDefaultEncodeErrors) {
+ PyMem_RawFree((char*)Py_FileSystemDefaultEncodeErrors);
+ Py_FileSystemDefaultEncodeErrors = NULL;
+ }
+_Py_COMP_DIAG_POP
+}
+
+
+/* Set Py_FileSystemDefaultEncoding and Py_FileSystemDefaultEncodeErrors
+ global configuration variables to PyConfig.filesystem_encoding and
+ PyConfig.filesystem_errors (encoded to UTF-8).
+
+ Function called by _PyUnicode_InitEncodings(). */
+int
+_Py_SetFileSystemEncoding(const char *encoding, const char *errors)
+{
+ char *encoding2 = _PyMem_RawStrdup(encoding);
+ if (encoding2 == NULL) {
+ return -1;
+ }
+
+ char *errors2 = _PyMem_RawStrdup(errors);
+ if (errors2 == NULL) {
+ PyMem_RawFree(encoding2);
+ return -1;
+ }
+
+ _Py_ClearFileSystemEncoding();
+
+_Py_COMP_DIAG_PUSH
+_Py_COMP_DIAG_IGNORE_DEPR_DECLS
+ Py_FileSystemDefaultEncoding = encoding2;
+ Py_HasFileSystemDefaultEncoding = 0;
+
+ Py_FileSystemDefaultEncodeErrors = errors2;
+ _Py_HasFileSystemDefaultEncodeErrors = 0;
+_Py_COMP_DIAG_POP
+ return 0;
+}
+
+
+/* --- _PyArgv ---------------------------------------------------- */
+
+/* Decode bytes_argv using Py_DecodeLocale() */
+PyStatus
+_PyArgv_AsWstrList(const _PyArgv *args, PyWideStringList *list)
+{
+ PyWideStringList wargv = _PyWideStringList_INIT;
+ if (args->use_bytes_argv) {
+ size_t size = sizeof(wchar_t*) * args->argc;
+ wargv.items = (wchar_t **)PyMem_RawMalloc(size);
+ if (wargv.items == NULL) {
+ return _PyStatus_NO_MEMORY();
+ }
+
+ for (Py_ssize_t i = 0; i < args->argc; i++) {
+ size_t len;
+ wchar_t *arg = Py_DecodeLocale(args->bytes_argv[i], &len);
+ if (arg == NULL) {
+ _PyWideStringList_Clear(&wargv);
+ return DECODE_LOCALE_ERR("command line arguments", len);
+ }
+ wargv.items[i] = arg;
+ wargv.length++;
+ }
+
+ _PyWideStringList_Clear(list);
+ *list = wargv;
+ }
+ else {
+ wargv.length = args->argc;
+ wargv.items = (wchar_t **)args->wchar_argv;
+ if (_PyWideStringList_Copy(list, &wargv) < 0) {
+ return _PyStatus_NO_MEMORY();
+ }
+ }
+ return _PyStatus_OK();
+}
+
+
+/* --- _PyPreCmdline ------------------------------------------------- */
+
+void
+_PyPreCmdline_Clear(_PyPreCmdline *cmdline)
+{
+ _PyWideStringList_Clear(&cmdline->argv);
+ _PyWideStringList_Clear(&cmdline->xoptions);
+}
+
+
+PyStatus
+_PyPreCmdline_SetArgv(_PyPreCmdline *cmdline, const _PyArgv *args)
+{
+ return _PyArgv_AsWstrList(args, &cmdline->argv);
+}
+
+
+static void
+precmdline_get_preconfig(_PyPreCmdline *cmdline, const PyPreConfig *config)
+{
+#define COPY_ATTR(ATTR) \
+ if (config->ATTR != -1) { \
+ cmdline->ATTR = config->ATTR; \
+ }
+
+ COPY_ATTR(isolated);
+ COPY_ATTR(use_environment);
+ COPY_ATTR(dev_mode);
+
+#undef COPY_ATTR
+}
+
+
+static void
+precmdline_set_preconfig(const _PyPreCmdline *cmdline, PyPreConfig *config)
+{
+#define COPY_ATTR(ATTR) \
+ config->ATTR = cmdline->ATTR
+
+ COPY_ATTR(isolated);
+ COPY_ATTR(use_environment);
+ COPY_ATTR(dev_mode);
+
+#undef COPY_ATTR
+}
+
+
+PyStatus
+_PyPreCmdline_SetConfig(const _PyPreCmdline *cmdline, PyConfig *config)
+{
+#define COPY_ATTR(ATTR) \
+ config->ATTR = cmdline->ATTR
+
+ PyStatus status = _PyWideStringList_Extend(&config->xoptions, &cmdline->xoptions);
+ if (_PyStatus_EXCEPTION(status)) {
+ return status;
+ }
+
+ COPY_ATTR(isolated);
+ COPY_ATTR(use_environment);
+ COPY_ATTR(dev_mode);
+ COPY_ATTR(warn_default_encoding);
+ return _PyStatus_OK();
+
+#undef COPY_ATTR
+}
+
+
+/* Parse the command line arguments */
+static PyStatus
+precmdline_parse_cmdline(_PyPreCmdline *cmdline)
+{
+ const PyWideStringList *argv = &cmdline->argv;
+
+ _PyOS_ResetGetOpt();
+ /* Don't log parsing errors into stderr here: PyConfig_Read()
+ is responsible for that */
+ _PyOS_opterr = 0;
+ do {
+ int longindex = -1;
+ int c = _PyOS_GetOpt(argv->length, argv->items, &longindex);
+
+ if (c == EOF || c == 'c' || c == 'm') {
+ break;
+ }
+
+ switch (c) {
+ case 'E':
+ cmdline->use_environment = 0;
+ break;
+
+ case 'I':
+ cmdline->isolated = 1;
+ break;
+
+ case 'X':
+ {
+ PyStatus status = PyWideStringList_Append(&cmdline->xoptions,
+ _PyOS_optarg);
+ if (_PyStatus_EXCEPTION(status)) {
+ return status;
+ }
+ break;
+ }
+
+ default:
+ /* ignore other argument:
+ handled by PyConfig_Read() */
+ break;
+ }
+ } while (1);
+
+ return _PyStatus_OK();
+}
+
+
+PyStatus
+_PyPreCmdline_Read(_PyPreCmdline *cmdline, const PyPreConfig *preconfig)
+{
+ precmdline_get_preconfig(cmdline, preconfig);
+
+ if (preconfig->parse_argv) {
+ PyStatus status = precmdline_parse_cmdline(cmdline);
+ if (_PyStatus_EXCEPTION(status)) {
+ return status;
+ }
+ }
+
+ /* isolated, use_environment */
+ if (cmdline->isolated < 0) {
+ cmdline->isolated = 0;
+ }
+ if (cmdline->isolated > 0) {
+ cmdline->use_environment = 0;
+ }
+ if (cmdline->use_environment < 0) {
+ cmdline->use_environment = 0;
+ }
+
+ /* dev_mode */
+ if ((cmdline->dev_mode < 0)
+ && (_Py_get_xoption(&cmdline->xoptions, L"dev")
+ || _Py_GetEnv(cmdline->use_environment, "PYTHONDEVMODE")))
+ {
+ cmdline->dev_mode = 1;
+ }
+ if (cmdline->dev_mode < 0) {
+ cmdline->dev_mode = 0;
+ }
+
+ // warn_default_encoding
+ if (_Py_get_xoption(&cmdline->xoptions, L"warn_default_encoding")
+ || _Py_GetEnv(cmdline->use_environment, "PYTHONWARNDEFAULTENCODING"))
+ {
+ cmdline->warn_default_encoding = 1;
+ }
+
+ assert(cmdline->use_environment >= 0);
+ assert(cmdline->isolated >= 0);
+ assert(cmdline->dev_mode >= 0);
+ assert(cmdline->warn_default_encoding >= 0);
+
+ return _PyStatus_OK();
+}
+
+
+/* --- PyPreConfig ----------------------------------------------- */
+
+
+void
+_PyPreConfig_InitCompatConfig(PyPreConfig *config)
+{
+ memset(config, 0, sizeof(*config));
+
+ config->_config_init = (int)_PyConfig_INIT_COMPAT;
+ config->parse_argv = 0;
+ config->isolated = -1;
+ config->use_environment = -1;
+ config->configure_locale = 1;
+
+ /* bpo-36443: C locale coercion (PEP 538) and UTF-8 Mode (PEP 540)
+ are disabled by default using the Compat configuration.
+
+ Py_UTF8Mode=1 enables the UTF-8 mode. PYTHONUTF8 environment variable
+ is ignored (even if use_environment=1). */
+ config->utf8_mode = 0;
+ config->coerce_c_locale = 0;
+ config->coerce_c_locale_warn = 0;
+
+ config->dev_mode = -1;
+ config->allocator = PYMEM_ALLOCATOR_NOT_SET;
+#ifdef MS_WINDOWS
+ config->legacy_windows_fs_encoding = -1;
+#endif
+}
+
+
+void
+PyPreConfig_InitPythonConfig(PyPreConfig *config)
+{
+ _PyPreConfig_InitCompatConfig(config);
+
+ config->_config_init = (int)_PyConfig_INIT_PYTHON;
+ config->isolated = 0;
+ config->parse_argv = 1;
+ config->use_environment = 1;
+ /* Set to -1 to enable C locale coercion (PEP 538) and UTF-8 Mode (PEP 540)
+ depending on the LC_CTYPE locale, PYTHONUTF8 and PYTHONCOERCECLOCALE
+ environment variables. */
+ config->coerce_c_locale = -1;
+ config->coerce_c_locale_warn = -1;
+ config->utf8_mode = -1;
+#ifdef MS_WINDOWS
+ config->legacy_windows_fs_encoding = 0;
+#endif
+}
+
+
+void
+PyPreConfig_InitIsolatedConfig(PyPreConfig *config)
+{
+ _PyPreConfig_InitCompatConfig(config);
+
+ config->_config_init = (int)_PyConfig_INIT_ISOLATED;
+ config->configure_locale = 0;
+ config->isolated = 1;
+ config->use_environment = 0;
+ config->utf8_mode = 0;
+ config->dev_mode = 0;
+#ifdef MS_WINDOWS
+ config->legacy_windows_fs_encoding = 0;
+#endif
+}
+
+
+PyStatus
+_PyPreConfig_InitFromPreConfig(PyPreConfig *config,
+ const PyPreConfig *config2)
+{
+ PyPreConfig_InitPythonConfig(config);
+ preconfig_copy(config, config2);
+ return _PyStatus_OK();
+}
+
+
+void
+_PyPreConfig_InitFromConfig(PyPreConfig *preconfig, const PyConfig *config)
+{
+ _PyConfigInitEnum config_init = (_PyConfigInitEnum)config->_config_init;
+ switch (config_init) {
+ case _PyConfig_INIT_PYTHON:
+ PyPreConfig_InitPythonConfig(preconfig);
+ break;
+ case _PyConfig_INIT_ISOLATED:
+ PyPreConfig_InitIsolatedConfig(preconfig);
+ break;
+ case _PyConfig_INIT_COMPAT:
+ default:
+ _PyPreConfig_InitCompatConfig(preconfig);
+ }
+
+ _PyPreConfig_GetConfig(preconfig, config);
+}
+
+
+static void
+preconfig_copy(PyPreConfig *config, const PyPreConfig *config2)
+{
+#define COPY_ATTR(ATTR) config->ATTR = config2->ATTR
+
+ COPY_ATTR(_config_init);
+ COPY_ATTR(parse_argv);
+ COPY_ATTR(isolated);
+ COPY_ATTR(use_environment);
+ COPY_ATTR(configure_locale);
+ COPY_ATTR(dev_mode);
+ COPY_ATTR(coerce_c_locale);
+ COPY_ATTR(coerce_c_locale_warn);
+ COPY_ATTR(utf8_mode);
+ COPY_ATTR(allocator);
+#ifdef MS_WINDOWS
+ COPY_ATTR(legacy_windows_fs_encoding);
+#endif
+
+#undef COPY_ATTR
+}
+
+
+PyObject*
+_PyPreConfig_AsDict(const PyPreConfig *config)
+{
+ PyObject *dict;
+
+ dict = PyDict_New();
+ if (dict == NULL) {
+ return NULL;
+ }
+
+#define SET_ITEM_INT(ATTR) \
+ do { \
+ PyObject *obj = PyLong_FromLong(config->ATTR); \
+ if (obj == NULL) { \
+ goto fail; \
+ } \
+ int res = PyDict_SetItemString(dict, #ATTR, obj); \
+ Py_DECREF(obj); \
+ if (res < 0) { \
+ goto fail; \
+ } \
+ } while (0)
+
+ SET_ITEM_INT(_config_init);
+ SET_ITEM_INT(parse_argv);
+ SET_ITEM_INT(isolated);
+ SET_ITEM_INT(use_environment);
+ SET_ITEM_INT(configure_locale);
+ SET_ITEM_INT(coerce_c_locale);
+ SET_ITEM_INT(coerce_c_locale_warn);
+ SET_ITEM_INT(utf8_mode);
+#ifdef MS_WINDOWS
+ SET_ITEM_INT(legacy_windows_fs_encoding);
+#endif
+ SET_ITEM_INT(dev_mode);
+ SET_ITEM_INT(allocator);
+ return dict;
+
+fail:
+ Py_DECREF(dict);
+ return NULL;
+
+#undef SET_ITEM_INT
+}
+
+
+void
+_PyPreConfig_GetConfig(PyPreConfig *preconfig, const PyConfig *config)
+{
+#define COPY_ATTR(ATTR) \
+ if (config->ATTR != -1) { \
+ preconfig->ATTR = config->ATTR; \
+ }
+
+ COPY_ATTR(parse_argv);
+ COPY_ATTR(isolated);
+ COPY_ATTR(use_environment);
+ COPY_ATTR(dev_mode);
+
+#undef COPY_ATTR
+}
+
+
+static void
+preconfig_get_global_vars(PyPreConfig *config)
+{
+ if (config->_config_init != _PyConfig_INIT_COMPAT) {
+ /* Python and Isolated configuration ignore global variables */
+ return;
+ }
+
+#define COPY_FLAG(ATTR, VALUE) \
+ if (config->ATTR < 0) { \
+ config->ATTR = VALUE; \
+ }
+#define COPY_NOT_FLAG(ATTR, VALUE) \
+ if (config->ATTR < 0) { \
+ config->ATTR = !(VALUE); \
+ }
+
+_Py_COMP_DIAG_PUSH
+_Py_COMP_DIAG_IGNORE_DEPR_DECLS
+ COPY_FLAG(isolated, Py_IsolatedFlag);
+ COPY_NOT_FLAG(use_environment, Py_IgnoreEnvironmentFlag);
+ if (Py_UTF8Mode > 0) {
+ config->utf8_mode = Py_UTF8Mode;
+ }
+#ifdef MS_WINDOWS
+ COPY_FLAG(legacy_windows_fs_encoding, Py_LegacyWindowsFSEncodingFlag);
+#endif
+_Py_COMP_DIAG_POP
+
+#undef COPY_FLAG
+#undef COPY_NOT_FLAG
+}
+
+
+static void
+preconfig_set_global_vars(const PyPreConfig *config)
+{
+#define COPY_FLAG(ATTR, VAR) \
+ if (config->ATTR >= 0) { \
+ VAR = config->ATTR; \
+ }
+#define COPY_NOT_FLAG(ATTR, VAR) \
+ if (config->ATTR >= 0) { \
+ VAR = !config->ATTR; \
+ }
+
+_Py_COMP_DIAG_PUSH
+_Py_COMP_DIAG_IGNORE_DEPR_DECLS
+ COPY_FLAG(isolated, Py_IsolatedFlag);
+ COPY_NOT_FLAG(use_environment, Py_IgnoreEnvironmentFlag);
+#ifdef MS_WINDOWS
+ COPY_FLAG(legacy_windows_fs_encoding, Py_LegacyWindowsFSEncodingFlag);
+#endif
+ COPY_FLAG(utf8_mode, Py_UTF8Mode);
+_Py_COMP_DIAG_POP
+
+#undef COPY_FLAG
+#undef COPY_NOT_FLAG
+}
+
+
+const char*
+_Py_GetEnv(int use_environment, const char *name)
+{
+ assert(use_environment >= 0);
+
+ if (!use_environment) {
+ return NULL;
+ }
+
+ const char *var = getenv(name);
+ if (var && var[0] != '\0') {
+ return var;
+ }
+ else {
+ return NULL;
+ }
+}
+
+
+int
+_Py_str_to_int(const char *str, int *result)
+{
+ const char *endptr = str;
+ errno = 0;
+ long value = strtol(str, (char **)&endptr, 10);
+ if (*endptr != '\0' || errno == ERANGE) {
+ return -1;
+ }
+ if (value < INT_MIN || value > INT_MAX) {
+ return -1;
+ }
+
+ *result = (int)value;
+ return 0;
+}
+
+
+void
+_Py_get_env_flag(int use_environment, int *flag, const char *name)
+{
+ const char *var = _Py_GetEnv(use_environment, name);
+ if (!var) {
+ return;
+ }
+ int value;
+ if (_Py_str_to_int(var, &value) < 0 || value < 0) {
+ /* PYTHONDEBUG=text and PYTHONDEBUG=-2 behave as PYTHONDEBUG=1 */
+ value = 1;
+ }
+ if (*flag < value) {
+ *flag = value;
+ }
+}
+
+
+const wchar_t*
+_Py_get_xoption(const PyWideStringList *xoptions, const wchar_t *name)
+{
+ for (Py_ssize_t i=0; i < xoptions->length; i++) {
+ const wchar_t *option = xoptions->items[i];
+ size_t len;
+ wchar_t *sep = wcschr(option, L'=');
+ if (sep != NULL) {
+ len = (sep - option);
+ }
+ else {
+ len = wcslen(option);
+ }
+ if (wcsncmp(option, name, len) == 0 && name[len] == L'\0') {
+ return option;
+ }
+ }
+ return NULL;
+}
+
+
+static PyStatus
+preconfig_init_utf8_mode(PyPreConfig *config, const _PyPreCmdline *cmdline)
+{
+#ifdef MS_WINDOWS
+ if (config->legacy_windows_fs_encoding) {
+ config->utf8_mode = 0;
+ }
+#endif
+
+ if (config->utf8_mode >= 0) {
+ return _PyStatus_OK();
+ }
+
+ const wchar_t *xopt;
+ xopt = _Py_get_xoption(&cmdline->xoptions, L"utf8");
+ if (xopt) {
+ wchar_t *sep = wcschr(xopt, L'=');
+ if (sep) {
+ xopt = sep + 1;
+ if (wcscmp(xopt, L"1") == 0) {
+ config->utf8_mode = 1;
+ }
+ else if (wcscmp(xopt, L"0") == 0) {
+ config->utf8_mode = 0;
+ }
+ else {
+ return _PyStatus_ERR("invalid -X utf8 option value");
+ }
+ }
+ else {
+ config->utf8_mode = 1;
+ }
+ return _PyStatus_OK();
+ }
+
+ const char *opt = _Py_GetEnv(config->use_environment, "PYTHONUTF8");
+ if (opt) {
+ if (strcmp(opt, "1") == 0) {
+ config->utf8_mode = 1;
+ }
+ else if (strcmp(opt, "0") == 0) {
+ config->utf8_mode = 0;
+ }
+ else {
+ return _PyStatus_ERR("invalid PYTHONUTF8 environment "
+ "variable value");
+ }
+ return _PyStatus_OK();
+ }
+
+
+#ifndef MS_WINDOWS
+ if (config->utf8_mode < 0) {
+ /* The C locale and the POSIX locale enable the UTF-8 Mode (PEP 540) */
+ const char *ctype_loc = setlocale(LC_CTYPE, NULL);
+ if (ctype_loc != NULL
+ && (strcmp(ctype_loc, "C") == 0
+ || strcmp(ctype_loc, "POSIX") == 0))
+ {
+ config->utf8_mode = 1;
+ }
+ }
+#endif
+
+ if (config->utf8_mode < 0) {
+ config->utf8_mode = 0;
+ }
+ return _PyStatus_OK();
+}
+
+
+static void
+preconfig_init_coerce_c_locale(PyPreConfig *config)
+{
+ if (!config->configure_locale) {
+ config->coerce_c_locale = 0;
+ config->coerce_c_locale_warn = 0;
+ return;
+ }
+
+ const char *env = _Py_GetEnv(config->use_environment, "PYTHONCOERCECLOCALE");
+ if (env) {
+ if (strcmp(env, "0") == 0) {
+ if (config->coerce_c_locale < 0) {
+ config->coerce_c_locale = 0;
+ }
+ }
+ else if (strcmp(env, "warn") == 0) {
+ if (config->coerce_c_locale_warn < 0) {
+ config->coerce_c_locale_warn = 1;
+ }
+ }
+ else {
+ if (config->coerce_c_locale < 0) {
+ config->coerce_c_locale = 1;
+ }
+ }
+ }
+
+ /* Test if coerce_c_locale equals to -1 or equals to 1:
+ PYTHONCOERCECLOCALE=1 doesn't imply that the C locale is always coerced.
+ It is only coerced if if the LC_CTYPE locale is "C". */
+ if (config->coerce_c_locale < 0 || config->coerce_c_locale == 1) {
+ /* The C locale enables the C locale coercion (PEP 538) */
+ if (_Py_LegacyLocaleDetected(0)) {
+ config->coerce_c_locale = 2;
+ }
+ else {
+ config->coerce_c_locale = 0;
+ }
+ }
+
+ if (config->coerce_c_locale_warn < 0) {
+ config->coerce_c_locale_warn = 0;
+ }
+}
+
+
+static PyStatus
+preconfig_init_allocator(PyPreConfig *config)
+{
+ if (config->allocator == PYMEM_ALLOCATOR_NOT_SET) {
+ /* bpo-34247. The PYTHONMALLOC environment variable has the priority
+ over PYTHONDEV env var and "-X dev" command line option.
+ For example, PYTHONMALLOC=malloc PYTHONDEVMODE=1 sets the memory
+ allocators to "malloc" (and not to "debug"). */
+ const char *envvar = _Py_GetEnv(config->use_environment, "PYTHONMALLOC");
+ if (envvar) {
+ PyMemAllocatorName name;
+ if (_PyMem_GetAllocatorName(envvar, &name) < 0) {
+ return _PyStatus_ERR("PYTHONMALLOC: unknown allocator");
+ }
+ config->allocator = (int)name;
+ }
+ }
+
+ if (config->dev_mode && config->allocator == PYMEM_ALLOCATOR_NOT_SET) {
+ config->allocator = PYMEM_ALLOCATOR_DEBUG;
+ }
+ return _PyStatus_OK();
+}
+
+
+static PyStatus
+preconfig_read(PyPreConfig *config, _PyPreCmdline *cmdline)
+{
+ PyStatus status;
+
+ status = _PyPreCmdline_Read(cmdline, config);
+ if (_PyStatus_EXCEPTION(status)) {
+ return status;
+ }
+
+ precmdline_set_preconfig(cmdline, config);
+
+ /* legacy_windows_fs_encoding, coerce_c_locale, utf8_mode */
+#ifdef MS_WINDOWS
+ _Py_get_env_flag(config->use_environment,
+ &config->legacy_windows_fs_encoding,
+ "PYTHONLEGACYWINDOWSFSENCODING");
+#endif
+
+ preconfig_init_coerce_c_locale(config);
+
+ status = preconfig_init_utf8_mode(config, cmdline);
+ if (_PyStatus_EXCEPTION(status)) {
+ return status;
+ }
+
+ /* allocator */
+ status = preconfig_init_allocator(config);
+ if (_PyStatus_EXCEPTION(status)) {
+ return status;
+ }
+
+ assert(config->coerce_c_locale >= 0);
+ assert(config->coerce_c_locale_warn >= 0);
+#ifdef MS_WINDOWS
+ assert(config->legacy_windows_fs_encoding >= 0);
+#endif
+ assert(config->utf8_mode >= 0);
+ assert(config->isolated >= 0);
+ assert(config->use_environment >= 0);
+ assert(config->dev_mode >= 0);
+
+ return _PyStatus_OK();
+}
+
+
+/* Read the configuration from:
+
+ - command line arguments
+ - environment variables
+ - Py_xxx global configuration variables
+ - the LC_CTYPE locale */
+PyStatus
+_PyPreConfig_Read(PyPreConfig *config, const _PyArgv *args)
+{
+ PyStatus status;
+
+ status = _PyRuntime_Initialize();
+ if (_PyStatus_EXCEPTION(status)) {
+ return status;
+ }
+
+ preconfig_get_global_vars(config);
+
+ /* Copy LC_CTYPE locale, since it's modified later */
+ const char *loc = setlocale(LC_CTYPE, NULL);
+ if (loc == NULL) {
+ return _PyStatus_ERR("failed to LC_CTYPE locale");
+ }
+ char *init_ctype_locale = _PyMem_RawStrdup(loc);
+ if (init_ctype_locale == NULL) {
+ return _PyStatus_NO_MEMORY();
+ }
+
+ /* Save the config to be able to restore it if encodings change */
+ PyPreConfig save_config;
+
+ status = _PyPreConfig_InitFromPreConfig(&save_config, config);
+ if (_PyStatus_EXCEPTION(status)) {
+ return status;
+ }
+
+ /* Set LC_CTYPE to the user preferred locale */
+ if (config->configure_locale) {
+ _Py_SetLocaleFromEnv(LC_CTYPE);
+ }
+
+ PyPreConfig save_runtime_config;
+ preconfig_copy(&save_runtime_config, &_PyRuntime.preconfig);
+
+ _PyPreCmdline cmdline = _PyPreCmdline_INIT;
+ int locale_coerced = 0;
+ int loops = 0;
+
+ while (1) {
+ int utf8_mode = config->utf8_mode;
+
+ /* Watchdog to prevent an infinite loop */
+ loops++;
+ if (loops == 3) {
+ status = _PyStatus_ERR("Encoding changed twice while "
+ "reading the configuration");
+ goto done;
+ }
+
+ /* bpo-34207: Py_DecodeLocale() and Py_EncodeLocale() depend
+ on the utf8_mode and legacy_windows_fs_encoding members
+ of _PyRuntime.preconfig. */
+ preconfig_copy(&_PyRuntime.preconfig, config);
+
+ if (args) {
+ // Set command line arguments at each iteration. If they are bytes
+ // strings, they are decoded from the new encoding.
+ status = _PyPreCmdline_SetArgv(&cmdline, args);
+ if (_PyStatus_EXCEPTION(status)) {
+ goto done;
+ }
+ }
+
+ status = preconfig_read(config, &cmdline);
+ if (_PyStatus_EXCEPTION(status)) {
+ goto done;
+ }
+
+ /* The legacy C locale assumes ASCII as the default text encoding, which
+ * causes problems not only for the CPython runtime, but also other
+ * components like GNU readline.
+ *
+ * Accordingly, when the CLI detects it, it attempts to coerce it to a
+ * more capable UTF-8 based alternative.
+ *
+ * See the documentation of the PYTHONCOERCECLOCALE setting for more
+ * details.
+ */
+ int encoding_changed = 0;
+ if (config->coerce_c_locale && !locale_coerced) {
+ locale_coerced = 1;
+ _Py_CoerceLegacyLocale(0);
+ encoding_changed = 1;
+ }
+
+ if (utf8_mode == -1) {
+ if (config->utf8_mode == 1) {
+ /* UTF-8 Mode enabled */
+ encoding_changed = 1;
+ }
+ }
+ else {
+ if (config->utf8_mode != utf8_mode) {
+ encoding_changed = 1;
+ }
+ }
+
+ if (!encoding_changed) {
+ break;
+ }
+
+ /* Reset the configuration before reading again the configuration,
+ just keep UTF-8 Mode and coerce C locale value. */
+ int new_utf8_mode = config->utf8_mode;
+ int new_coerce_c_locale = config->coerce_c_locale;
+ preconfig_copy(config, &save_config);
+ config->utf8_mode = new_utf8_mode;
+ config->coerce_c_locale = new_coerce_c_locale;
+
+ /* The encoding changed: read again the configuration
+ with the new encoding */
+ }
+ status = _PyStatus_OK();
+
+done:
+ // Revert side effects
+ setlocale(LC_CTYPE, init_ctype_locale);
+ PyMem_RawFree(init_ctype_locale);
+ preconfig_copy(&_PyRuntime.preconfig, &save_runtime_config);
+ _PyPreCmdline_Clear(&cmdline);
+ return status;
+}
+
+
+/* Write the pre-configuration:
+
+ - set the memory allocators
+ - set Py_xxx global configuration variables
+ - set the LC_CTYPE locale (coerce C locale, PEP 538) and set the UTF-8 mode
+ (PEP 540)
+
+ The applied configuration is written into _PyRuntime.preconfig.
+ If the C locale cannot be coerced, set coerce_c_locale to 0.
+
+ Do nothing if called after Py_Initialize(): ignore the new
+ pre-configuration. */
+PyStatus
+_PyPreConfig_Write(const PyPreConfig *src_config)
+{
+ PyPreConfig config;
+
+ PyStatus status = _PyPreConfig_InitFromPreConfig(&config, src_config);
+ if (_PyStatus_EXCEPTION(status)) {
+ return status;
+ }
+
+ if (_PyRuntime.core_initialized) {
+ /* bpo-34008: Calling this functions after Py_Initialize() ignores
+ the new configuration. */
+ return _PyStatus_OK();
+ }
+
+ PyMemAllocatorName name = (PyMemAllocatorName)config.allocator;
+ if (name != PYMEM_ALLOCATOR_NOT_SET) {
+ if (_PyMem_SetupAllocators(name) < 0) {
+ return _PyStatus_ERR("Unknown PYTHONMALLOC allocator");
+ }
+ }
+
+ preconfig_set_global_vars(&config);
+
+ if (config.configure_locale) {
+ if (config.coerce_c_locale) {
+ if (!_Py_CoerceLegacyLocale(config.coerce_c_locale_warn)) {
+ /* C locale not coerced */
+ config.coerce_c_locale = 0;
+ }
+ }
+
+ /* Set LC_CTYPE to the user preferred locale */
+ _Py_SetLocaleFromEnv(LC_CTYPE);
+ }
+
+ /* Write the new pre-configuration into _PyRuntime */
+ preconfig_copy(&_PyRuntime.preconfig, &config);
+
+ return _PyStatus_OK();
+}
diff --git a/contrib/tools/python3/Python/pyarena.c b/contrib/tools/python3/Python/pyarena.c
new file mode 100644
index 00000000000..ead03370d15
--- /dev/null
+++ b/contrib/tools/python3/Python/pyarena.c
@@ -0,0 +1,211 @@
+#include "Python.h"
+#include "pycore_pyarena.h" // PyArena
+
+/* A simple arena block structure.
+
+ Measurements with standard library modules suggest the average
+ allocation is about 20 bytes and that most compiles use a single
+ block.
+
+ TODO(jhylton): Think about a realloc API, maybe just for the last
+ allocation?
+*/
+
+#define DEFAULT_BLOCK_SIZE 8192
+#define ALIGNMENT 8
+
+typedef struct _block {
+ /* Total number of bytes owned by this block available to pass out.
+ * Read-only after initialization. The first such byte starts at
+ * ab_mem.
+ */
+ size_t ab_size;
+
+ /* Total number of bytes already passed out. The next byte available
+ * to pass out starts at ab_mem + ab_offset.
+ */
+ size_t ab_offset;
+
+ /* An arena maintains a singly-linked, NULL-terminated list of
+ * all blocks owned by the arena. These are linked via the
+ * ab_next member.
+ */
+ struct _block *ab_next;
+
+ /* Pointer to the first allocatable byte owned by this block. Read-
+ * only after initialization.
+ */
+ void *ab_mem;
+} block;
+
+/* The arena manages two kinds of memory, blocks of raw memory
+ and a list of PyObject* pointers. PyObjects are decrefed
+ when the arena is freed.
+*/
+
+struct _arena {
+ /* Pointer to the first block allocated for the arena, never NULL.
+ It is used only to find the first block when the arena is
+ being freed.
+ */
+ block *a_head;
+
+ /* Pointer to the block currently used for allocation. Its
+ ab_next field should be NULL. If it is not-null after a
+ call to block_alloc(), it means a new block has been allocated
+ and a_cur should be reset to point it.
+ */
+ block *a_cur;
+
+ /* A Python list object containing references to all the PyObject
+ pointers associated with this arena. They will be DECREFed
+ when the arena is freed.
+ */
+ PyObject *a_objects;
+
+#if defined(Py_DEBUG)
+ /* Debug output */
+ size_t total_allocs;
+ size_t total_size;
+ size_t total_blocks;
+ size_t total_block_size;
+ size_t total_big_blocks;
+#endif
+};
+
+static block *
+block_new(size_t size)
+{
+ /* Allocate header and block as one unit.
+ ab_mem points just past header. */
+ block *b = (block *)PyMem_Malloc(sizeof(block) + size);
+ if (!b)
+ return NULL;
+ b->ab_size = size;
+ b->ab_mem = (void *)(b + 1);
+ b->ab_next = NULL;
+ b->ab_offset = (char *)_Py_ALIGN_UP(b->ab_mem, ALIGNMENT) -
+ (char *)(b->ab_mem);
+ return b;
+}
+
+static void
+block_free(block *b) {
+ while (b) {
+ block *next = b->ab_next;
+ PyMem_Free(b);
+ b = next;
+ }
+}
+
+static void *
+block_alloc(block *b, size_t size)
+{
+ void *p;
+ assert(b);
+ size = _Py_SIZE_ROUND_UP(size, ALIGNMENT);
+ if (b->ab_offset + size > b->ab_size) {
+ /* If we need to allocate more memory than will fit in
+ the default block, allocate a one-off block that is
+ exactly the right size. */
+ /* TODO(jhylton): Think about space waste at end of block */
+ block *newbl = block_new(
+ size < DEFAULT_BLOCK_SIZE ?
+ DEFAULT_BLOCK_SIZE : size);
+ if (!newbl)
+ return NULL;
+ assert(!b->ab_next);
+ b->ab_next = newbl;
+ b = newbl;
+ }
+
+ assert(b->ab_offset + size <= b->ab_size);
+ p = (void *)(((char *)b->ab_mem) + b->ab_offset);
+ b->ab_offset += size;
+ return p;
+}
+
+PyArena *
+_PyArena_New(void)
+{
+ PyArena* arena = (PyArena *)PyMem_Malloc(sizeof(PyArena));
+ if (!arena)
+ return (PyArena*)PyErr_NoMemory();
+
+ arena->a_head = block_new(DEFAULT_BLOCK_SIZE);
+ arena->a_cur = arena->a_head;
+ if (!arena->a_head) {
+ PyMem_Free((void *)arena);
+ return (PyArena*)PyErr_NoMemory();
+ }
+ arena->a_objects = PyList_New(0);
+ if (!arena->a_objects) {
+ block_free(arena->a_head);
+ PyMem_Free((void *)arena);
+ return (PyArena*)PyErr_NoMemory();
+ }
+#if defined(Py_DEBUG)
+ arena->total_allocs = 0;
+ arena->total_size = 0;
+ arena->total_blocks = 1;
+ arena->total_block_size = DEFAULT_BLOCK_SIZE;
+ arena->total_big_blocks = 0;
+#endif
+ return arena;
+}
+
+void
+_PyArena_Free(PyArena *arena)
+{
+ assert(arena);
+#if defined(Py_DEBUG)
+ /*
+ fprintf(stderr,
+ "alloc=%zu size=%zu blocks=%zu block_size=%zu big=%zu objects=%zu\n",
+ arena->total_allocs, arena->total_size, arena->total_blocks,
+ arena->total_block_size, arena->total_big_blocks,
+ PyList_Size(arena->a_objects));
+ */
+#endif
+ block_free(arena->a_head);
+ /* This property normally holds, except when the code being compiled
+ is sys.getobjects(0), in which case there will be two references.
+ assert(arena->a_objects->ob_refcnt == 1);
+ */
+
+ Py_DECREF(arena->a_objects);
+ PyMem_Free(arena);
+}
+
+void *
+_PyArena_Malloc(PyArena *arena, size_t size)
+{
+ void *p = block_alloc(arena->a_cur, size);
+ if (!p)
+ return PyErr_NoMemory();
+#if defined(Py_DEBUG)
+ arena->total_allocs++;
+ arena->total_size += size;
+#endif
+ /* Reset cur if we allocated a new block. */
+ if (arena->a_cur->ab_next) {
+ arena->a_cur = arena->a_cur->ab_next;
+#if defined(Py_DEBUG)
+ arena->total_blocks++;
+ arena->total_block_size += arena->a_cur->ab_size;
+ if (arena->a_cur->ab_size > DEFAULT_BLOCK_SIZE)
+ ++arena->total_big_blocks;
+#endif
+ }
+ return p;
+}
+
+int
+_PyArena_AddPyObject(PyArena *arena, PyObject *obj)
+{
+ int r = PyList_Append(arena->a_objects, obj);
+ if (r >= 0) {
+ Py_DECREF(obj);
+ }
+ return r;
+}
diff --git a/contrib/tools/python3/Python/pyctype.c b/contrib/tools/python3/Python/pyctype.c
new file mode 100644
index 00000000000..da117d58fd0
--- /dev/null
+++ b/contrib/tools/python3/Python/pyctype.c
@@ -0,0 +1,214 @@
+#include "Python.h"
+
+/* Our own locale-independent ctype.h-like macros */
+
+const unsigned int _Py_ctype_table[256] = {
+ 0, /* 0x0 '\x00' */
+ 0, /* 0x1 '\x01' */
+ 0, /* 0x2 '\x02' */
+ 0, /* 0x3 '\x03' */
+ 0, /* 0x4 '\x04' */
+ 0, /* 0x5 '\x05' */
+ 0, /* 0x6 '\x06' */
+ 0, /* 0x7 '\x07' */
+ 0, /* 0x8 '\x08' */
+ PY_CTF_SPACE, /* 0x9 '\t' */
+ PY_CTF_SPACE, /* 0xa '\n' */
+ PY_CTF_SPACE, /* 0xb '\v' */
+ PY_CTF_SPACE, /* 0xc '\f' */
+ PY_CTF_SPACE, /* 0xd '\r' */
+ 0, /* 0xe '\x0e' */
+ 0, /* 0xf '\x0f' */
+ 0, /* 0x10 '\x10' */
+ 0, /* 0x11 '\x11' */
+ 0, /* 0x12 '\x12' */
+ 0, /* 0x13 '\x13' */
+ 0, /* 0x14 '\x14' */
+ 0, /* 0x15 '\x15' */
+ 0, /* 0x16 '\x16' */
+ 0, /* 0x17 '\x17' */
+ 0, /* 0x18 '\x18' */
+ 0, /* 0x19 '\x19' */
+ 0, /* 0x1a '\x1a' */
+ 0, /* 0x1b '\x1b' */
+ 0, /* 0x1c '\x1c' */
+ 0, /* 0x1d '\x1d' */
+ 0, /* 0x1e '\x1e' */
+ 0, /* 0x1f '\x1f' */
+ PY_CTF_SPACE, /* 0x20 ' ' */
+ 0, /* 0x21 '!' */
+ 0, /* 0x22 '"' */
+ 0, /* 0x23 '#' */
+ 0, /* 0x24 '$' */
+ 0, /* 0x25 '%' */
+ 0, /* 0x26 '&' */
+ 0, /* 0x27 "'" */
+ 0, /* 0x28 '(' */
+ 0, /* 0x29 ')' */
+ 0, /* 0x2a '*' */
+ 0, /* 0x2b '+' */
+ 0, /* 0x2c ',' */
+ 0, /* 0x2d '-' */
+ 0, /* 0x2e '.' */
+ 0, /* 0x2f '/' */
+ PY_CTF_DIGIT|PY_CTF_XDIGIT, /* 0x30 '0' */
+ PY_CTF_DIGIT|PY_CTF_XDIGIT, /* 0x31 '1' */
+ PY_CTF_DIGIT|PY_CTF_XDIGIT, /* 0x32 '2' */
+ PY_CTF_DIGIT|PY_CTF_XDIGIT, /* 0x33 '3' */
+ PY_CTF_DIGIT|PY_CTF_XDIGIT, /* 0x34 '4' */
+ PY_CTF_DIGIT|PY_CTF_XDIGIT, /* 0x35 '5' */
+ PY_CTF_DIGIT|PY_CTF_XDIGIT, /* 0x36 '6' */
+ PY_CTF_DIGIT|PY_CTF_XDIGIT, /* 0x37 '7' */
+ PY_CTF_DIGIT|PY_CTF_XDIGIT, /* 0x38 '8' */
+ PY_CTF_DIGIT|PY_CTF_XDIGIT, /* 0x39 '9' */
+ 0, /* 0x3a ':' */
+ 0, /* 0x3b ';' */
+ 0, /* 0x3c '<' */
+ 0, /* 0x3d '=' */
+ 0, /* 0x3e '>' */
+ 0, /* 0x3f '?' */
+ 0, /* 0x40 '@' */
+ PY_CTF_UPPER|PY_CTF_XDIGIT, /* 0x41 'A' */
+ PY_CTF_UPPER|PY_CTF_XDIGIT, /* 0x42 'B' */
+ PY_CTF_UPPER|PY_CTF_XDIGIT, /* 0x43 'C' */
+ PY_CTF_UPPER|PY_CTF_XDIGIT, /* 0x44 'D' */
+ PY_CTF_UPPER|PY_CTF_XDIGIT, /* 0x45 'E' */
+ PY_CTF_UPPER|PY_CTF_XDIGIT, /* 0x46 'F' */
+ PY_CTF_UPPER, /* 0x47 'G' */
+ PY_CTF_UPPER, /* 0x48 'H' */
+ PY_CTF_UPPER, /* 0x49 'I' */
+ PY_CTF_UPPER, /* 0x4a 'J' */
+ PY_CTF_UPPER, /* 0x4b 'K' */
+ PY_CTF_UPPER, /* 0x4c 'L' */
+ PY_CTF_UPPER, /* 0x4d 'M' */
+ PY_CTF_UPPER, /* 0x4e 'N' */
+ PY_CTF_UPPER, /* 0x4f 'O' */
+ PY_CTF_UPPER, /* 0x50 'P' */
+ PY_CTF_UPPER, /* 0x51 'Q' */
+ PY_CTF_UPPER, /* 0x52 'R' */
+ PY_CTF_UPPER, /* 0x53 'S' */
+ PY_CTF_UPPER, /* 0x54 'T' */
+ PY_CTF_UPPER, /* 0x55 'U' */
+ PY_CTF_UPPER, /* 0x56 'V' */
+ PY_CTF_UPPER, /* 0x57 'W' */
+ PY_CTF_UPPER, /* 0x58 'X' */
+ PY_CTF_UPPER, /* 0x59 'Y' */
+ PY_CTF_UPPER, /* 0x5a 'Z' */
+ 0, /* 0x5b '[' */
+ 0, /* 0x5c '\\' */
+ 0, /* 0x5d ']' */
+ 0, /* 0x5e '^' */
+ 0, /* 0x5f '_' */
+ 0, /* 0x60 '`' */
+ PY_CTF_LOWER|PY_CTF_XDIGIT, /* 0x61 'a' */
+ PY_CTF_LOWER|PY_CTF_XDIGIT, /* 0x62 'b' */
+ PY_CTF_LOWER|PY_CTF_XDIGIT, /* 0x63 'c' */
+ PY_CTF_LOWER|PY_CTF_XDIGIT, /* 0x64 'd' */
+ PY_CTF_LOWER|PY_CTF_XDIGIT, /* 0x65 'e' */
+ PY_CTF_LOWER|PY_CTF_XDIGIT, /* 0x66 'f' */
+ PY_CTF_LOWER, /* 0x67 'g' */
+ PY_CTF_LOWER, /* 0x68 'h' */
+ PY_CTF_LOWER, /* 0x69 'i' */
+ PY_CTF_LOWER, /* 0x6a 'j' */
+ PY_CTF_LOWER, /* 0x6b 'k' */
+ PY_CTF_LOWER, /* 0x6c 'l' */
+ PY_CTF_LOWER, /* 0x6d 'm' */
+ PY_CTF_LOWER, /* 0x6e 'n' */
+ PY_CTF_LOWER, /* 0x6f 'o' */
+ PY_CTF_LOWER, /* 0x70 'p' */
+ PY_CTF_LOWER, /* 0x71 'q' */
+ PY_CTF_LOWER, /* 0x72 'r' */
+ PY_CTF_LOWER, /* 0x73 's' */
+ PY_CTF_LOWER, /* 0x74 't' */
+ PY_CTF_LOWER, /* 0x75 'u' */
+ PY_CTF_LOWER, /* 0x76 'v' */
+ PY_CTF_LOWER, /* 0x77 'w' */
+ PY_CTF_LOWER, /* 0x78 'x' */
+ PY_CTF_LOWER, /* 0x79 'y' */
+ PY_CTF_LOWER, /* 0x7a 'z' */
+ 0, /* 0x7b '{' */
+ 0, /* 0x7c '|' */
+ 0, /* 0x7d '}' */
+ 0, /* 0x7e '~' */
+ 0, /* 0x7f '\x7f' */
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+};
+
+
+const unsigned char _Py_ctype_tolower[256] = {
+ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
+ 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
+ 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
+ 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
+ 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
+ 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+ 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+ 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+ 0x40, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
+ 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+ 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
+ 0x78, 0x79, 0x7a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+ 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
+ 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+ 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
+ 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f,
+ 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,
+ 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f,
+ 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97,
+ 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f,
+ 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7,
+ 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf,
+ 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7,
+ 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf,
+ 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7,
+ 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf,
+ 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7,
+ 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf,
+ 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7,
+ 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef,
+ 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7,
+ 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff,
+};
+
+const unsigned char _Py_ctype_toupper[256] = {
+ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
+ 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
+ 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
+ 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
+ 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
+ 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+ 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+ 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+ 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
+ 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+ 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+ 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+ 0x60, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
+ 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+ 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+ 0x58, 0x59, 0x5a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f,
+ 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,
+ 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f,
+ 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97,
+ 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f,
+ 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7,
+ 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf,
+ 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7,
+ 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf,
+ 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7,
+ 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf,
+ 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7,
+ 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf,
+ 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7,
+ 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef,
+ 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7,
+ 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff,
+};
+
diff --git a/contrib/tools/python3/Python/pyfpe.c b/contrib/tools/python3/Python/pyfpe.c
new file mode 100644
index 00000000000..9b1260f687a
--- /dev/null
+++ b/contrib/tools/python3/Python/pyfpe.c
@@ -0,0 +1,18 @@
+/* These variables used to be used when Python was built with --with-fpectl,
+ * but support for that was dropped in 3.7. We continue to define them,
+ * though, because they may be referenced by extensions using the stable ABI.
+ */
+
+#ifdef HAVE_SETJMP_H
+#include <setjmp.h>
+
+jmp_buf PyFPE_jbuf;
+#endif
+
+int PyFPE_counter;
+
+double
+PyFPE_dummy(void *dummy)
+{
+ return 1.0;
+}
diff --git a/contrib/tools/python3/Python/pyhash.c b/contrib/tools/python3/Python/pyhash.c
new file mode 100644
index 00000000000..d5ac9f83be6
--- /dev/null
+++ b/contrib/tools/python3/Python/pyhash.c
@@ -0,0 +1,508 @@
+/* Set of hash utility functions to help maintaining the invariant that
+ if a==b then hash(a)==hash(b)
+
+ All the utility functions (_Py_Hash*()) return "-1" to signify an error.
+*/
+#include "Python.h"
+
+#ifdef __APPLE__
+# include <libkern/OSByteOrder.h>
+#elif defined(HAVE_LE64TOH) && defined(HAVE_ENDIAN_H)
+# include <endian.h>
+#elif defined(HAVE_LE64TOH) && defined(HAVE_SYS_ENDIAN_H)
+# include <sys/endian.h>
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+_Py_HashSecret_t _Py_HashSecret = {{0}};
+
+#if Py_HASH_ALGORITHM == Py_HASH_EXTERNAL
+extern PyHash_FuncDef PyHash_Func;
+#else
+static PyHash_FuncDef PyHash_Func;
+#endif
+
+/* Count _Py_HashBytes() calls */
+#ifdef Py_HASH_STATS
+#define Py_HASH_STATS_MAX 32
+static Py_ssize_t hashstats[Py_HASH_STATS_MAX + 1] = {0};
+#endif
+
+/* For numeric types, the hash of a number x is based on the reduction
+ of x modulo the prime P = 2**_PyHASH_BITS - 1. It's designed so that
+ hash(x) == hash(y) whenever x and y are numerically equal, even if
+ x and y have different types.
+
+ A quick summary of the hashing strategy:
+
+ (1) First define the 'reduction of x modulo P' for any rational
+ number x; this is a standard extension of the usual notion of
+ reduction modulo P for integers. If x == p/q (written in lowest
+ terms), the reduction is interpreted as the reduction of p times
+ the inverse of the reduction of q, all modulo P; if q is exactly
+ divisible by P then define the reduction to be infinity. So we've
+ got a well-defined map
+
+ reduce : { rational numbers } -> { 0, 1, 2, ..., P-1, infinity }.
+
+ (2) Now for a rational number x, define hash(x) by:
+
+ reduce(x) if x >= 0
+ -reduce(-x) if x < 0
+
+ If the result of the reduction is infinity (this is impossible for
+ integers, floats and Decimals) then use the predefined hash value
+ _PyHASH_INF for x >= 0, or -_PyHASH_INF for x < 0, instead.
+ _PyHASH_INF and -_PyHASH_INF are also used for the
+ hashes of float and Decimal infinities.
+
+ NaNs hash with a pointer hash. Having distinct hash values prevents
+ catastrophic pileups from distinct NaN instances which used to always
+ have the same hash value but would compare unequal.
+
+ A selling point for the above strategy is that it makes it possible
+ to compute hashes of decimal and binary floating-point numbers
+ efficiently, even if the exponent of the binary or decimal number
+ is large. The key point is that
+
+ reduce(x * y) == reduce(x) * reduce(y) (modulo _PyHASH_MODULUS)
+
+ provided that {reduce(x), reduce(y)} != {0, infinity}. The reduction of a
+ binary or decimal float is never infinity, since the denominator is a power
+ of 2 (for binary) or a divisor of a power of 10 (for decimal). So we have,
+ for nonnegative x,
+
+ reduce(x * 2**e) == reduce(x) * reduce(2**e) % _PyHASH_MODULUS
+
+ reduce(x * 10**e) == reduce(x) * reduce(10**e) % _PyHASH_MODULUS
+
+ and reduce(10**e) can be computed efficiently by the usual modular
+ exponentiation algorithm. For reduce(2**e) it's even better: since
+ P is of the form 2**n-1, reduce(2**e) is 2**(e mod n), and multiplication
+ by 2**(e mod n) modulo 2**n-1 just amounts to a rotation of bits.
+
+ */
+
+Py_hash_t _Py_HashPointer(const void *);
+
+Py_hash_t
+_Py_HashDouble(PyObject *inst, double v)
+{
+ int e, sign;
+ double m;
+ Py_uhash_t x, y;
+
+ if (!Py_IS_FINITE(v)) {
+ if (Py_IS_INFINITY(v))
+ return v > 0 ? _PyHASH_INF : -_PyHASH_INF;
+ else
+ return _Py_HashPointer(inst);
+ }
+
+ m = frexp(v, &e);
+
+ sign = 1;
+ if (m < 0) {
+ sign = -1;
+ m = -m;
+ }
+
+ /* process 28 bits at a time; this should work well both for binary
+ and hexadecimal floating point. */
+ x = 0;
+ while (m) {
+ x = ((x << 28) & _PyHASH_MODULUS) | x >> (_PyHASH_BITS - 28);
+ m *= 268435456.0; /* 2**28 */
+ e -= 28;
+ y = (Py_uhash_t)m; /* pull out integer part */
+ m -= y;
+ x += y;
+ if (x >= _PyHASH_MODULUS)
+ x -= _PyHASH_MODULUS;
+ }
+
+ /* adjust for the exponent; first reduce it modulo _PyHASH_BITS */
+ e = e >= 0 ? e % _PyHASH_BITS : _PyHASH_BITS-1-((-1-e) % _PyHASH_BITS);
+ x = ((x << e) & _PyHASH_MODULUS) | x >> (_PyHASH_BITS - e);
+
+ x = x * sign;
+ if (x == (Py_uhash_t)-1)
+ x = (Py_uhash_t)-2;
+ return (Py_hash_t)x;
+}
+
+Py_hash_t
+_Py_HashPointerRaw(const void *p)
+{
+ size_t y = (size_t)p;
+ /* bottom 3 or 4 bits are likely to be 0; rotate y by 4 to avoid
+ excessive hash collisions for dicts and sets */
+ y = (y >> 4) | (y << (8 * SIZEOF_VOID_P - 4));
+ return (Py_hash_t)y;
+}
+
+Py_hash_t
+_Py_HashPointer(const void *p)
+{
+ Py_hash_t x = _Py_HashPointerRaw(p);
+ if (x == -1) {
+ x = -2;
+ }
+ return x;
+}
+
+Py_hash_t
+_Py_HashBytes(const void *src, Py_ssize_t len)
+{
+ Py_hash_t x;
+ /*
+ We make the hash of the empty string be 0, rather than using
+ (prefix ^ suffix), since this slightly obfuscates the hash secret
+ */
+ if (len == 0) {
+ return 0;
+ }
+
+#ifdef Py_HASH_STATS
+ hashstats[(len <= Py_HASH_STATS_MAX) ? len : 0]++;
+#endif
+
+#if Py_HASH_CUTOFF > 0
+ if (len < Py_HASH_CUTOFF) {
+ /* Optimize hashing of very small strings with inline DJBX33A. */
+ Py_uhash_t hash;
+ const unsigned char *p = src;
+ hash = 5381; /* DJBX33A starts with 5381 */
+
+ switch(len) {
+ /* ((hash << 5) + hash) + *p == hash * 33 + *p */
+ case 7: hash = ((hash << 5) + hash) + *p++; /* fallthrough */
+ case 6: hash = ((hash << 5) + hash) + *p++; /* fallthrough */
+ case 5: hash = ((hash << 5) + hash) + *p++; /* fallthrough */
+ case 4: hash = ((hash << 5) + hash) + *p++; /* fallthrough */
+ case 3: hash = ((hash << 5) + hash) + *p++; /* fallthrough */
+ case 2: hash = ((hash << 5) + hash) + *p++; /* fallthrough */
+ case 1: hash = ((hash << 5) + hash) + *p++; break;
+ default:
+ Py_UNREACHABLE();
+ }
+ hash ^= len;
+ hash ^= (Py_uhash_t) _Py_HashSecret.djbx33a.suffix;
+ x = (Py_hash_t)hash;
+ }
+ else
+#endif /* Py_HASH_CUTOFF */
+ x = PyHash_Func.hash(src, len);
+
+ if (x == -1)
+ return -2;
+ return x;
+}
+
+void
+_PyHash_Fini(void)
+{
+#ifdef Py_HASH_STATS
+ fprintf(stderr, "len calls total\n");
+ Py_ssize_t total = 0;
+ for (int i = 1; i <= Py_HASH_STATS_MAX; i++) {
+ total += hashstats[i];
+ fprintf(stderr, "%2i %8zd %8zd\n", i, hashstats[i], total);
+ }
+ total += hashstats[0];
+ fprintf(stderr, "> %8zd %8zd\n", hashstats[0], total);
+#endif
+}
+
+PyHash_FuncDef *
+PyHash_GetFuncDef(void)
+{
+ return &PyHash_Func;
+}
+
+/* Optimized memcpy() for Windows */
+#ifdef _MSC_VER
+# if SIZEOF_PY_UHASH_T == 4
+# define PY_UHASH_CPY(dst, src) do { \
+ dst[0] = src[0]; dst[1] = src[1]; dst[2] = src[2]; dst[3] = src[3]; \
+ } while(0)
+# elif SIZEOF_PY_UHASH_T == 8
+# define PY_UHASH_CPY(dst, src) do { \
+ dst[0] = src[0]; dst[1] = src[1]; dst[2] = src[2]; dst[3] = src[3]; \
+ dst[4] = src[4]; dst[5] = src[5]; dst[6] = src[6]; dst[7] = src[7]; \
+ } while(0)
+# else
+# error SIZEOF_PY_UHASH_T must be 4 or 8
+# endif /* SIZEOF_PY_UHASH_T */
+#else /* not Windows */
+# define PY_UHASH_CPY(dst, src) memcpy(dst, src, SIZEOF_PY_UHASH_T)
+#endif /* _MSC_VER */
+
+
+#if Py_HASH_ALGORITHM == Py_HASH_FNV
+/* **************************************************************************
+ * Modified Fowler-Noll-Vo (FNV) hash function
+ */
+static Py_hash_t
+fnv(const void *src, Py_ssize_t len)
+{
+ const unsigned char *p = src;
+ Py_uhash_t x;
+ Py_ssize_t remainder, blocks;
+ union {
+ Py_uhash_t value;
+ unsigned char bytes[SIZEOF_PY_UHASH_T];
+ } block;
+
+#ifdef Py_DEBUG
+ assert(_Py_HashSecret_Initialized);
+#endif
+ remainder = len % SIZEOF_PY_UHASH_T;
+ if (remainder == 0) {
+ /* Process at least one block byte by byte to reduce hash collisions
+ * for strings with common prefixes. */
+ remainder = SIZEOF_PY_UHASH_T;
+ }
+ blocks = (len - remainder) / SIZEOF_PY_UHASH_T;
+
+ x = (Py_uhash_t) _Py_HashSecret.fnv.prefix;
+ x ^= (Py_uhash_t) *p << 7;
+ while (blocks--) {
+ PY_UHASH_CPY(block.bytes, p);
+ x = (_PyHASH_MULTIPLIER * x) ^ block.value;
+ p += SIZEOF_PY_UHASH_T;
+ }
+ /* add remainder */
+ for (; remainder > 0; remainder--)
+ x = (_PyHASH_MULTIPLIER * x) ^ (Py_uhash_t) *p++;
+ x ^= (Py_uhash_t) len;
+ x ^= (Py_uhash_t) _Py_HashSecret.fnv.suffix;
+ if (x == (Py_uhash_t) -1) {
+ x = (Py_uhash_t) -2;
+ }
+ return x;
+}
+
+static PyHash_FuncDef PyHash_Func = {fnv, "fnv", 8 * SIZEOF_PY_HASH_T,
+ 16 * SIZEOF_PY_HASH_T};
+
+#endif /* Py_HASH_ALGORITHM == Py_HASH_FNV */
+
+
+/* **************************************************************************
+ <MIT License>
+ Copyright (c) 2013 Marek Majkowski <marek@popcount.org>
+
+ Permission is hereby granted, free of charge, to any person obtaining a copy
+ of this software and associated documentation files (the "Software"), to deal
+ in the Software without restriction, including without limitation the rights
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ copies of the Software, and to permit persons to whom the Software is
+ furnished to do so, subject to the following conditions:
+
+ The above copyright notice and this permission notice shall be included in
+ all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ THE SOFTWARE.
+ </MIT License>
+
+ Original location:
+ https://github.com/majek/csiphash/
+
+ Solution inspired by code from:
+ Samuel Neves (supercop/crypto_auth/siphash24/little)
+ djb (supercop/crypto_auth/siphash24/little2)
+ Jean-Philippe Aumasson (https://131002.net/siphash/siphash24.c)
+
+ Modified for Python by Christian Heimes:
+ - C89 / MSVC compatibility
+ - _rotl64() on Windows
+ - letoh64() fallback
+*/
+
+/* byte swap little endian to host endian
+ * Endian conversion not only ensures that the hash function returns the same
+ * value on all platforms. It is also required to for a good dispersion of
+ * the hash values' least significant bits.
+ */
+#if PY_LITTLE_ENDIAN
+# define _le64toh(x) ((uint64_t)(x))
+#elif defined(__APPLE__)
+# define _le64toh(x) OSSwapLittleToHostInt64(x)
+#elif defined(HAVE_LETOH64)
+# define _le64toh(x) le64toh(x)
+#else
+# define _le64toh(x) (((uint64_t)(x) << 56) | \
+ (((uint64_t)(x) << 40) & 0xff000000000000ULL) | \
+ (((uint64_t)(x) << 24) & 0xff0000000000ULL) | \
+ (((uint64_t)(x) << 8) & 0xff00000000ULL) | \
+ (((uint64_t)(x) >> 8) & 0xff000000ULL) | \
+ (((uint64_t)(x) >> 24) & 0xff0000ULL) | \
+ (((uint64_t)(x) >> 40) & 0xff00ULL) | \
+ ((uint64_t)(x) >> 56))
+#endif
+
+
+#ifdef _MSC_VER
+# define ROTATE(x, b) _rotl64(x, b)
+#else
+# define ROTATE(x, b) (uint64_t)( ((x) << (b)) | ( (x) >> (64 - (b))) )
+#endif
+
+#define HALF_ROUND(a,b,c,d,s,t) \
+ a += b; c += d; \
+ b = ROTATE(b, s) ^ a; \
+ d = ROTATE(d, t) ^ c; \
+ a = ROTATE(a, 32);
+
+#define SINGLE_ROUND(v0,v1,v2,v3) \
+ HALF_ROUND(v0,v1,v2,v3,13,16); \
+ HALF_ROUND(v2,v1,v0,v3,17,21);
+
+#define DOUBLE_ROUND(v0,v1,v2,v3) \
+ SINGLE_ROUND(v0,v1,v2,v3); \
+ SINGLE_ROUND(v0,v1,v2,v3);
+
+
+static uint64_t
+siphash13(uint64_t k0, uint64_t k1, const void *src, Py_ssize_t src_sz) {
+ uint64_t b = (uint64_t)src_sz << 56;
+ const uint8_t *in = (const uint8_t*)src;
+
+ uint64_t v0 = k0 ^ 0x736f6d6570736575ULL;
+ uint64_t v1 = k1 ^ 0x646f72616e646f6dULL;
+ uint64_t v2 = k0 ^ 0x6c7967656e657261ULL;
+ uint64_t v3 = k1 ^ 0x7465646279746573ULL;
+
+ uint64_t t;
+ uint8_t *pt;
+
+ while (src_sz >= 8) {
+ uint64_t mi;
+ memcpy(&mi, in, sizeof(mi));
+ mi = _le64toh(mi);
+ in += sizeof(mi);
+ src_sz -= sizeof(mi);
+ v3 ^= mi;
+ SINGLE_ROUND(v0,v1,v2,v3);
+ v0 ^= mi;
+ }
+
+ t = 0;
+ pt = (uint8_t *)&t;
+ switch (src_sz) {
+ case 7: pt[6] = in[6]; /* fall through */
+ case 6: pt[5] = in[5]; /* fall through */
+ case 5: pt[4] = in[4]; /* fall through */
+ case 4: memcpy(pt, in, sizeof(uint32_t)); break;
+ case 3: pt[2] = in[2]; /* fall through */
+ case 2: pt[1] = in[1]; /* fall through */
+ case 1: pt[0] = in[0]; /* fall through */
+ }
+ b |= _le64toh(t);
+
+ v3 ^= b;
+ SINGLE_ROUND(v0,v1,v2,v3);
+ v0 ^= b;
+ v2 ^= 0xff;
+ SINGLE_ROUND(v0,v1,v2,v3);
+ SINGLE_ROUND(v0,v1,v2,v3);
+ SINGLE_ROUND(v0,v1,v2,v3);
+
+ /* modified */
+ t = (v0 ^ v1) ^ (v2 ^ v3);
+ return t;
+}
+
+#if Py_HASH_ALGORITHM == Py_HASH_SIPHASH24
+static uint64_t
+siphash24(uint64_t k0, uint64_t k1, const void *src, Py_ssize_t src_sz) {
+ uint64_t b = (uint64_t)src_sz << 56;
+ const uint8_t *in = (const uint8_t*)src;
+
+ uint64_t v0 = k0 ^ 0x736f6d6570736575ULL;
+ uint64_t v1 = k1 ^ 0x646f72616e646f6dULL;
+ uint64_t v2 = k0 ^ 0x6c7967656e657261ULL;
+ uint64_t v3 = k1 ^ 0x7465646279746573ULL;
+
+ uint64_t t;
+ uint8_t *pt;
+
+ while (src_sz >= 8) {
+ uint64_t mi;
+ memcpy(&mi, in, sizeof(mi));
+ mi = _le64toh(mi);
+ in += sizeof(mi);
+ src_sz -= sizeof(mi);
+ v3 ^= mi;
+ DOUBLE_ROUND(v0,v1,v2,v3);
+ v0 ^= mi;
+ }
+
+ t = 0;
+ pt = (uint8_t *)&t;
+ switch (src_sz) {
+ case 7: pt[6] = in[6]; /* fall through */
+ case 6: pt[5] = in[5]; /* fall through */
+ case 5: pt[4] = in[4]; /* fall through */
+ case 4: memcpy(pt, in, sizeof(uint32_t)); break;
+ case 3: pt[2] = in[2]; /* fall through */
+ case 2: pt[1] = in[1]; /* fall through */
+ case 1: pt[0] = in[0]; /* fall through */
+ }
+ b |= _le64toh(t);
+
+ v3 ^= b;
+ DOUBLE_ROUND(v0,v1,v2,v3);
+ v0 ^= b;
+ v2 ^= 0xff;
+ DOUBLE_ROUND(v0,v1,v2,v3);
+ DOUBLE_ROUND(v0,v1,v2,v3);
+
+ /* modified */
+ t = (v0 ^ v1) ^ (v2 ^ v3);
+ return t;
+}
+#endif
+
+uint64_t
+_Py_KeyedHash(uint64_t key, const void *src, Py_ssize_t src_sz)
+{
+ return siphash13(key, 0, src, src_sz);
+}
+
+
+#if Py_HASH_ALGORITHM == Py_HASH_SIPHASH13
+static Py_hash_t
+pysiphash(const void *src, Py_ssize_t src_sz) {
+ return (Py_hash_t)siphash13(
+ _le64toh(_Py_HashSecret.siphash.k0), _le64toh(_Py_HashSecret.siphash.k1),
+ src, src_sz);
+}
+
+static PyHash_FuncDef PyHash_Func = {pysiphash, "siphash13", 64, 128};
+#endif
+
+#if Py_HASH_ALGORITHM == Py_HASH_SIPHASH24
+static Py_hash_t
+pysiphash(const void *src, Py_ssize_t src_sz) {
+ return (Py_hash_t)siphash24(
+ _le64toh(_Py_HashSecret.siphash.k0), _le64toh(_Py_HashSecret.siphash.k1),
+ src, src_sz);
+}
+
+static PyHash_FuncDef PyHash_Func = {pysiphash, "siphash24", 64, 128};
+#endif
+
+#ifdef __cplusplus
+}
+#endif
diff --git a/contrib/tools/python3/Python/pylifecycle.c b/contrib/tools/python3/Python/pylifecycle.c
new file mode 100644
index 00000000000..a0130fde15d
--- /dev/null
+++ b/contrib/tools/python3/Python/pylifecycle.c
@@ -0,0 +1,3171 @@
+/* Python interpreter top-level routines, including init/exit */
+
+#include "Python.h"
+
+#include "pycore_ceval.h" // _PyEval_FiniGIL()
+#include "pycore_context.h" // _PyContext_Init()
+#include "pycore_exceptions.h" // _PyExc_InitTypes()
+#include "pycore_dict.h" // _PyDict_Fini()
+#include "pycore_fileutils.h" // _Py_ResetForceASCII()
+#include "pycore_floatobject.h" // _PyFloat_InitTypes()
+#include "pycore_genobject.h" // _PyAsyncGen_Fini()
+#include "pycore_global_objects_fini_generated.h" // "_PyStaticObjects_CheckRefcnt()
+#include "pycore_import.h" // _PyImport_BootstrapImp()
+#include "pycore_initconfig.h" // _PyStatus_OK()
+#include "pycore_list.h" // _PyList_Fini()
+#include "pycore_long.h" // _PyLong_InitTypes()
+#include "pycore_object.h" // _PyDebug_PrintTotalRefs()
+#include "pycore_pathconfig.h" // _PyConfig_WritePathConfig()
+#include "pycore_pyerrors.h" // _PyErr_Occurred()
+#include "pycore_pylifecycle.h" // _PyErr_Print()
+#include "pycore_pymem.h" // _PyObject_DebugMallocStats()
+#include "pycore_pystate.h" // _PyThreadState_GET()
+#include "pycore_runtime.h" // _Py_ID()
+#include "pycore_runtime_init.h" // _PyRuntimeState_INIT
+#include "pycore_sliceobject.h" // _PySlice_Fini()
+#include "pycore_sysmodule.h" // _PySys_ClearAuditHooks()
+#include "pycore_traceback.h" // _Py_DumpTracebackThreads()
+#include "pycore_typeobject.h" // _PyTypes_InitTypes()
+#include "pycore_typevarobject.h" // _Py_clear_generic_types()
+#include "pycore_unicodeobject.h" // _PyUnicode_InitTypes()
+#include "opcode.h"
+
+#include <locale.h> // setlocale()
+#include <stdlib.h> // getenv()
+
+#if defined(__APPLE__)
+#include <mach-o/loader.h>
+#endif
+
+#ifdef HAVE_SIGNAL_H
+# include <signal.h> // SIG_IGN
+#endif
+
+#ifdef HAVE_LANGINFO_H
+# include <langinfo.h> // nl_langinfo(CODESET)
+#endif
+
+#ifdef HAVE_FCNTL_H
+# include <fcntl.h> // F_GETFD
+#endif
+
+#ifdef MS_WINDOWS
+# undef BYTE
+#endif
+
+#define PUTS(fd, str) _Py_write_noraise(fd, str, (int)strlen(str))
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/* Forward declarations */
+static PyStatus add_main_module(PyInterpreterState *interp);
+static PyStatus init_import_site(void);
+static PyStatus init_set_builtins_open(void);
+static PyStatus init_sys_streams(PyThreadState *tstate);
+static void wait_for_thread_shutdown(PyThreadState *tstate);
+static void call_ll_exitfuncs(_PyRuntimeState *runtime);
+
+/* The following places the `_PyRuntime` structure in a location that can be
+ * found without any external information. This is meant to ease access to the
+ * interpreter state for various runtime debugging tools, but is *not* an
+ * officially supported feature */
+
+/* Suppress deprecation warning for PyBytesObject.ob_shash */
+_Py_COMP_DIAG_PUSH
+_Py_COMP_DIAG_IGNORE_DEPR_DECLS
+
+#if defined(MS_WINDOWS)
+
+#pragma section("PyRuntime", read, write)
+__declspec(allocate("PyRuntime"))
+
+#elif defined(__APPLE__)
+
+__attribute__((
+ section(SEG_DATA ",PyRuntime")
+))
+
+#endif
+
+_PyRuntimeState _PyRuntime
+#if defined(__linux__) && (defined(__GNUC__) || defined(__clang__))
+__attribute__ ((section (".PyRuntime")))
+#endif
+= _PyRuntimeState_INIT(_PyRuntime);
+_Py_COMP_DIAG_POP
+
+static int runtime_initialized = 0;
+
+PyStatus
+_PyRuntime_Initialize(void)
+{
+ /* XXX We only initialize once in the process, which aligns with
+ the static initialization of the former globals now found in
+ _PyRuntime. However, _PyRuntime *should* be initialized with
+ every Py_Initialize() call, but doing so breaks the runtime.
+ This is because the runtime state is not properly finalized
+ currently. */
+ if (runtime_initialized) {
+ return _PyStatus_OK();
+ }
+ runtime_initialized = 1;
+
+ return _PyRuntimeState_Init(&_PyRuntime);
+}
+
+void
+_PyRuntime_Finalize(void)
+{
+ _PyRuntimeState_Fini(&_PyRuntime);
+ runtime_initialized = 0;
+}
+
+int
+_Py_IsFinalizing(void)
+{
+ return _PyRuntimeState_GetFinalizing(&_PyRuntime) != NULL;
+}
+
+/* Hack to force loading of object files */
+int (*_PyOS_mystrnicmp_hack)(const char *, const char *, Py_ssize_t) = \
+ PyOS_mystrnicmp; /* Python/pystrcmp.o */
+
+
+/* APIs to access the initialization flags
+ *
+ * Can be called prior to Py_Initialize.
+ */
+
+int
+_Py_IsCoreInitialized(void)
+{
+ return _PyRuntime.core_initialized;
+}
+
+int
+Py_IsInitialized(void)
+{
+ return _PyRuntime.initialized;
+}
+
+
+/* Helper functions to better handle the legacy C locale
+ *
+ * The legacy C locale assumes ASCII as the default text encoding, which
+ * causes problems not only for the CPython runtime, but also other
+ * components like GNU readline.
+ *
+ * Accordingly, when the CLI detects it, it attempts to coerce it to a
+ * more capable UTF-8 based alternative as follows:
+ *
+ * if (_Py_LegacyLocaleDetected()) {
+ * _Py_CoerceLegacyLocale();
+ * }
+ *
+ * See the documentation of the PYTHONCOERCECLOCALE setting for more details.
+ *
+ * Locale coercion also impacts the default error handler for the standard
+ * streams: while the usual default is "strict", the default for the legacy
+ * C locale and for any of the coercion target locales is "surrogateescape".
+ */
+
+int
+_Py_LegacyLocaleDetected(int warn)
+{
+#ifndef MS_WINDOWS
+ if (!warn) {
+ const char *locale_override = getenv("LC_ALL");
+ if (locale_override != NULL && *locale_override != '\0') {
+ /* Don't coerce C locale if the LC_ALL environment variable
+ is set */
+ return 0;
+ }
+ }
+
+ /* On non-Windows systems, the C locale is considered a legacy locale */
+ /* XXX (ncoghlan): some platforms (notably Mac OS X) don't appear to treat
+ * the POSIX locale as a simple alias for the C locale, so
+ * we may also want to check for that explicitly.
+ */
+ const char *ctype_loc = setlocale(LC_CTYPE, NULL);
+ return ctype_loc != NULL && strcmp(ctype_loc, "C") == 0;
+#else
+ /* Windows uses code pages instead of locales, so no locale is legacy */
+ return 0;
+#endif
+}
+
+#ifndef MS_WINDOWS
+static const char *_C_LOCALE_WARNING =
+ "Python runtime initialized with LC_CTYPE=C (a locale with default ASCII "
+ "encoding), which may cause Unicode compatibility problems. Using C.UTF-8, "
+ "C.utf8, or UTF-8 (if available) as alternative Unicode-compatible "
+ "locales is recommended.\n";
+
+static void
+emit_stderr_warning_for_legacy_locale(_PyRuntimeState *runtime)
+{
+ const PyPreConfig *preconfig = &runtime->preconfig;
+ if (preconfig->coerce_c_locale_warn && _Py_LegacyLocaleDetected(1)) {
+ PySys_FormatStderr("%s", _C_LOCALE_WARNING);
+ }
+}
+#endif /* !defined(MS_WINDOWS) */
+
+typedef struct _CandidateLocale {
+ const char *locale_name; /* The locale to try as a coercion target */
+} _LocaleCoercionTarget;
+
+static _LocaleCoercionTarget _TARGET_LOCALES[] = {
+ {"C.UTF-8"},
+ {"C.utf8"},
+ {"UTF-8"},
+ {NULL}
+};
+
+
+int
+_Py_IsLocaleCoercionTarget(const char *ctype_loc)
+{
+ const _LocaleCoercionTarget *target = NULL;
+ for (target = _TARGET_LOCALES; target->locale_name; target++) {
+ if (strcmp(ctype_loc, target->locale_name) == 0) {
+ return 1;
+ }
+ }
+ return 0;
+}
+
+
+#ifdef PY_COERCE_C_LOCALE
+static const char C_LOCALE_COERCION_WARNING[] =
+ "Python detected LC_CTYPE=C: LC_CTYPE coerced to %.20s (set another locale "
+ "or PYTHONCOERCECLOCALE=0 to disable this locale coercion behavior).\n";
+
+static int
+_coerce_default_locale_settings(int warn, const _LocaleCoercionTarget *target)
+{
+ const char *newloc = target->locale_name;
+
+ /* Reset locale back to currently configured defaults */
+ _Py_SetLocaleFromEnv(LC_ALL);
+
+ /* Set the relevant locale environment variable */
+ if (setenv("LC_CTYPE", newloc, 1)) {
+ fprintf(stderr,
+ "Error setting LC_CTYPE, skipping C locale coercion\n");
+ return 0;
+ }
+ if (warn) {
+ fprintf(stderr, C_LOCALE_COERCION_WARNING, newloc);
+ }
+
+ /* Reconfigure with the overridden environment variables */
+ _Py_SetLocaleFromEnv(LC_ALL);
+ return 1;
+}
+#endif
+
+int
+_Py_CoerceLegacyLocale(int warn)
+{
+ int coerced = 0;
+#ifdef PY_COERCE_C_LOCALE
+ char *oldloc = NULL;
+
+ oldloc = _PyMem_RawStrdup(setlocale(LC_CTYPE, NULL));
+ if (oldloc == NULL) {
+ return coerced;
+ }
+
+ const char *locale_override = getenv("LC_ALL");
+ if (locale_override == NULL || *locale_override == '\0') {
+ /* LC_ALL is also not set (or is set to an empty string) */
+ const _LocaleCoercionTarget *target = NULL;
+ for (target = _TARGET_LOCALES; target->locale_name; target++) {
+ const char *new_locale = setlocale(LC_CTYPE,
+ target->locale_name);
+ if (new_locale != NULL) {
+#if !defined(_Py_FORCE_UTF8_LOCALE) && defined(HAVE_LANGINFO_H) && defined(CODESET)
+ /* Also ensure that nl_langinfo works in this locale */
+ char *codeset = nl_langinfo(CODESET);
+ if (!codeset || *codeset == '\0') {
+ /* CODESET is not set or empty, so skip coercion */
+ new_locale = NULL;
+ _Py_SetLocaleFromEnv(LC_CTYPE);
+ continue;
+ }
+#endif
+ /* Successfully configured locale, so make it the default */
+ coerced = _coerce_default_locale_settings(warn, target);
+ goto done;
+ }
+ }
+ }
+ /* No C locale warning here, as Py_Initialize will emit one later */
+
+ setlocale(LC_CTYPE, oldloc);
+
+done:
+ PyMem_RawFree(oldloc);
+#endif
+ return coerced;
+}
+
+/* _Py_SetLocaleFromEnv() is a wrapper around setlocale(category, "") to
+ * isolate the idiosyncrasies of different libc implementations. It reads the
+ * appropriate environment variable and uses its value to select the locale for
+ * 'category'. */
+char *
+_Py_SetLocaleFromEnv(int category)
+{
+ char *res;
+#ifdef __ANDROID__
+ const char *locale;
+ const char **pvar;
+#ifdef PY_COERCE_C_LOCALE
+ const char *coerce_c_locale;
+#endif
+ const char *utf8_locale = "C.UTF-8";
+ const char *env_var_set[] = {
+ "LC_ALL",
+ "LC_CTYPE",
+ "LANG",
+ NULL,
+ };
+
+ /* Android setlocale(category, "") doesn't check the environment variables
+ * and incorrectly sets the "C" locale at API 24 and older APIs. We only
+ * check the environment variables listed in env_var_set. */
+ for (pvar=env_var_set; *pvar; pvar++) {
+ locale = getenv(*pvar);
+ if (locale != NULL && *locale != '\0') {
+ if (strcmp(locale, utf8_locale) == 0 ||
+ strcmp(locale, "en_US.UTF-8") == 0) {
+ return setlocale(category, utf8_locale);
+ }
+ return setlocale(category, "C");
+ }
+ }
+
+ /* Android uses UTF-8, so explicitly set the locale to C.UTF-8 if none of
+ * LC_ALL, LC_CTYPE, or LANG is set to a non-empty string.
+ * Quote from POSIX section "8.2 Internationalization Variables":
+ * "4. If the LANG environment variable is not set or is set to the empty
+ * string, the implementation-defined default locale shall be used." */
+
+#ifdef PY_COERCE_C_LOCALE
+ coerce_c_locale = getenv("PYTHONCOERCECLOCALE");
+ if (coerce_c_locale == NULL || strcmp(coerce_c_locale, "0") != 0) {
+ /* Some other ported code may check the environment variables (e.g. in
+ * extension modules), so we make sure that they match the locale
+ * configuration */
+ if (setenv("LC_CTYPE", utf8_locale, 1)) {
+ fprintf(stderr, "Warning: failed setting the LC_CTYPE "
+ "environment variable to %s\n", utf8_locale);
+ }
+ }
+#endif
+ res = setlocale(category, utf8_locale);
+#else /* !defined(__ANDROID__) */
+ res = setlocale(category, "");
+#endif
+ _Py_ResetForceASCII();
+ return res;
+}
+
+
+static int
+interpreter_update_config(PyThreadState *tstate, int only_update_path_config)
+{
+ const PyConfig *config = &tstate->interp->config;
+
+ if (!only_update_path_config) {
+ PyStatus status = _PyConfig_Write(config, tstate->interp->runtime);
+ if (_PyStatus_EXCEPTION(status)) {
+ _PyErr_SetFromPyStatus(status);
+ return -1;
+ }
+ }
+
+ if (_Py_IsMainInterpreter(tstate->interp)) {
+ PyStatus status = _PyPathConfig_UpdateGlobal(config);
+ if (_PyStatus_EXCEPTION(status)) {
+ _PyErr_SetFromPyStatus(status);
+ return -1;
+ }
+ }
+
+ tstate->interp->long_state.max_str_digits = config->int_max_str_digits;
+
+ // Update the sys module for the new configuration
+ if (_PySys_UpdateConfig(tstate) < 0) {
+ return -1;
+ }
+ return 0;
+}
+
+
+int
+_PyInterpreterState_SetConfig(const PyConfig *src_config)
+{
+ PyThreadState *tstate = _PyThreadState_GET();
+ int res = -1;
+
+ PyConfig config;
+ PyConfig_InitPythonConfig(&config);
+ PyStatus status = _PyConfig_Copy(&config, src_config);
+ if (_PyStatus_EXCEPTION(status)) {
+ _PyErr_SetFromPyStatus(status);
+ goto done;
+ }
+
+ status = _PyConfig_Read(&config, 1);
+ if (_PyStatus_EXCEPTION(status)) {
+ _PyErr_SetFromPyStatus(status);
+ goto done;
+ }
+
+ status = _PyConfig_Copy(&tstate->interp->config, &config);
+ if (_PyStatus_EXCEPTION(status)) {
+ _PyErr_SetFromPyStatus(status);
+ goto done;
+ }
+
+ res = interpreter_update_config(tstate, 0);
+
+done:
+ PyConfig_Clear(&config);
+ return res;
+}
+
+
+/* Global initializations. Can be undone by Py_Finalize(). Don't
+ call this twice without an intervening Py_Finalize() call.
+
+ Every call to Py_InitializeFromConfig, Py_Initialize or Py_InitializeEx
+ must have a corresponding call to Py_Finalize.
+
+ Locking: you must hold the interpreter lock while calling these APIs.
+ (If the lock has not yet been initialized, that's equivalent to
+ having the lock, but you cannot use multiple threads.)
+
+*/
+
+static PyStatus
+pyinit_core_reconfigure(_PyRuntimeState *runtime,
+ PyThreadState **tstate_p,
+ const PyConfig *config)
+{
+ PyStatus status;
+ PyThreadState *tstate = _PyThreadState_GET();
+ if (!tstate) {
+ return _PyStatus_ERR("failed to read thread state");
+ }
+ *tstate_p = tstate;
+
+ PyInterpreterState *interp = tstate->interp;
+ if (interp == NULL) {
+ return _PyStatus_ERR("can't make main interpreter");
+ }
+
+ status = _PyConfig_Write(config, runtime);
+ if (_PyStatus_EXCEPTION(status)) {
+ return status;
+ }
+
+ status = _PyConfig_Copy(&interp->config, config);
+ if (_PyStatus_EXCEPTION(status)) {
+ return status;
+ }
+ config = _PyInterpreterState_GetConfig(interp);
+
+ if (config->_install_importlib) {
+ status = _PyPathConfig_UpdateGlobal(config);
+ if (_PyStatus_EXCEPTION(status)) {
+ return status;
+ }
+ }
+ return _PyStatus_OK();
+}
+
+
+static PyStatus
+pycore_init_runtime(_PyRuntimeState *runtime,
+ const PyConfig *config)
+{
+ if (runtime->initialized) {
+ return _PyStatus_ERR("main interpreter already initialized");
+ }
+
+ PyStatus status = _PyConfig_Write(config, runtime);
+ if (_PyStatus_EXCEPTION(status)) {
+ return status;
+ }
+
+ /* Py_Finalize leaves _Py_Finalizing set in order to help daemon
+ * threads behave a little more gracefully at interpreter shutdown.
+ * We clobber it here so the new interpreter can start with a clean
+ * slate.
+ *
+ * However, this may still lead to misbehaviour if there are daemon
+ * threads still hanging around from a previous Py_Initialize/Finalize
+ * pair :(
+ */
+ _PyRuntimeState_SetFinalizing(runtime, NULL);
+
+ _Py_InitVersion();
+
+ status = _Py_HashRandomization_Init(config);
+ if (_PyStatus_EXCEPTION(status)) {
+ return status;
+ }
+
+ status = _PyTime_Init();
+ if (_PyStatus_EXCEPTION(status)) {
+ return status;
+ }
+
+ status = _PyImport_Init();
+ if (_PyStatus_EXCEPTION(status)) {
+ return status;
+ }
+
+ status = _PyInterpreterState_Enable(runtime);
+ if (_PyStatus_EXCEPTION(status)) {
+ return status;
+ }
+ return _PyStatus_OK();
+}
+
+
+static PyStatus
+init_interp_settings(PyInterpreterState *interp,
+ const PyInterpreterConfig *config)
+{
+ assert(interp->feature_flags == 0);
+
+ if (config->use_main_obmalloc) {
+ interp->feature_flags |= Py_RTFLAGS_USE_MAIN_OBMALLOC;
+ }
+ else if (!config->check_multi_interp_extensions) {
+ /* The reason: PyModuleDef.m_base.m_copy leaks objects between
+ interpreters. */
+ return _PyStatus_ERR("per-interpreter obmalloc does not support "
+ "single-phase init extension modules");
+ }
+
+ if (config->allow_fork) {
+ interp->feature_flags |= Py_RTFLAGS_FORK;
+ }
+ if (config->allow_exec) {
+ interp->feature_flags |= Py_RTFLAGS_EXEC;
+ }
+ // Note that fork+exec is always allowed.
+
+ if (config->allow_threads) {
+ interp->feature_flags |= Py_RTFLAGS_THREADS;
+ }
+ if (config->allow_daemon_threads) {
+ interp->feature_flags |= Py_RTFLAGS_DAEMON_THREADS;
+ }
+
+ if (config->check_multi_interp_extensions) {
+ interp->feature_flags |= Py_RTFLAGS_MULTI_INTERP_EXTENSIONS;
+ }
+
+ /* We check "gil" in init_interp_create_gil(). */
+
+ return _PyStatus_OK();
+}
+
+
+static PyStatus
+init_interp_create_gil(PyThreadState *tstate, int gil)
+{
+ PyStatus status;
+
+ /* finalize_interp_delete() comment explains why _PyEval_FiniGIL() is
+ only called here. */
+ // XXX This is broken with a per-interpreter GIL.
+ _PyEval_FiniGIL(tstate->interp);
+
+ /* Auto-thread-state API */
+ status = _PyGILState_SetTstate(tstate);
+ if (_PyStatus_EXCEPTION(status)) {
+ return status;
+ }
+
+ int own_gil;
+ switch (gil) {
+ case PyInterpreterConfig_DEFAULT_GIL: own_gil = 0; break;
+ case PyInterpreterConfig_SHARED_GIL: own_gil = 0; break;
+ case PyInterpreterConfig_OWN_GIL: own_gil = 1; break;
+ default:
+ return _PyStatus_ERR("invalid interpreter config 'gil' value");
+ }
+
+ /* Create the GIL and take it */
+ status = _PyEval_InitGIL(tstate, own_gil);
+ if (_PyStatus_EXCEPTION(status)) {
+ return status;
+ }
+
+ return _PyStatus_OK();
+}
+
+
+static PyStatus
+pycore_create_interpreter(_PyRuntimeState *runtime,
+ const PyConfig *src_config,
+ PyThreadState **tstate_p)
+{
+ PyStatus status;
+ PyInterpreterState *interp = PyInterpreterState_New();
+ if (interp == NULL) {
+ return _PyStatus_ERR("can't make main interpreter");
+ }
+ assert(_Py_IsMainInterpreter(interp));
+
+ status = _PyConfig_Copy(&interp->config, src_config);
+ if (_PyStatus_EXCEPTION(status)) {
+ return status;
+ }
+
+ /* Auto-thread-state API */
+ status = _PyGILState_Init(interp);
+ if (_PyStatus_EXCEPTION(status)) {
+ return status;
+ }
+
+ PyInterpreterConfig config = _PyInterpreterConfig_LEGACY_INIT;
+ // The main interpreter always has its own GIL.
+ config.gil = PyInterpreterConfig_OWN_GIL;
+ status = init_interp_settings(interp, &config);
+ if (_PyStatus_EXCEPTION(status)) {
+ return status;
+ }
+
+ PyThreadState *tstate = _PyThreadState_New(interp);
+ if (tstate == NULL) {
+ return _PyStatus_ERR("can't make first thread");
+ }
+ _PyThreadState_Bind(tstate);
+ // XXX For now we do this before the GIL is created.
+ (void) _PyThreadState_SwapNoGIL(tstate);
+
+ status = init_interp_create_gil(tstate, config.gil);
+ if (_PyStatus_EXCEPTION(status)) {
+ return status;
+ }
+
+ *tstate_p = tstate;
+ return _PyStatus_OK();
+}
+
+
+static PyStatus
+pycore_init_global_objects(PyInterpreterState *interp)
+{
+ PyStatus status;
+
+ _PyFloat_InitState(interp);
+
+ status = _PyUnicode_InitGlobalObjects(interp);
+ if (_PyStatus_EXCEPTION(status)) {
+ return status;
+ }
+
+ _PyUnicode_InitState(interp);
+
+ return _PyStatus_OK();
+}
+
+
+static PyStatus
+pycore_init_types(PyInterpreterState *interp)
+{
+ PyStatus status;
+
+ status = _PyTypes_InitTypes(interp);
+ if (_PyStatus_EXCEPTION(status)) {
+ return status;
+ }
+
+ status = _PyLong_InitTypes(interp);
+ if (_PyStatus_EXCEPTION(status)) {
+ return status;
+ }
+
+ status = _PyUnicode_InitTypes(interp);
+ if (_PyStatus_EXCEPTION(status)) {
+ return status;
+ }
+
+ status = _PyFloat_InitTypes(interp);
+ if (_PyStatus_EXCEPTION(status)) {
+ return status;
+ }
+
+ if (_PyExc_InitTypes(interp) < 0) {
+ return _PyStatus_ERR("failed to initialize an exception type");
+ }
+
+ status = _PyExc_InitGlobalObjects(interp);
+ if (_PyStatus_EXCEPTION(status)) {
+ return status;
+ }
+
+ status = _PyExc_InitState(interp);
+ if (_PyStatus_EXCEPTION(status)) {
+ return status;
+ }
+
+ status = _PyErr_InitTypes(interp);
+ if (_PyStatus_EXCEPTION(status)) {
+ return status;
+ }
+
+ status = _PyContext_Init(interp);
+ if (_PyStatus_EXCEPTION(status)) {
+ return status;
+ }
+ return _PyStatus_OK();
+}
+
+static const uint8_t INTERPRETER_TRAMPOLINE_INSTRUCTIONS[] = {
+ /* Put a NOP at the start, so that the IP points into
+ * the code, rather than before it */
+ NOP, 0,
+ INTERPRETER_EXIT, 0,
+ /* RESUME at end makes sure that the frame appears incomplete */
+ RESUME, 0
+};
+
+static const _PyShimCodeDef INTERPRETER_TRAMPOLINE_CODEDEF = {
+ INTERPRETER_TRAMPOLINE_INSTRUCTIONS,
+ sizeof(INTERPRETER_TRAMPOLINE_INSTRUCTIONS),
+ 1,
+ "<interpreter trampoline>"
+};
+
+static PyStatus
+pycore_init_builtins(PyThreadState *tstate)
+{
+ PyInterpreterState *interp = tstate->interp;
+
+ PyObject *bimod = _PyBuiltin_Init(interp);
+ if (bimod == NULL) {
+ goto error;
+ }
+
+ PyObject *modules = _PyImport_GetModules(interp);
+ if (_PyImport_FixupBuiltin(bimod, "builtins", modules) < 0) {
+ goto error;
+ }
+
+ PyObject *builtins_dict = PyModule_GetDict(bimod);
+ if (builtins_dict == NULL) {
+ goto error;
+ }
+ interp->builtins = Py_NewRef(builtins_dict);
+
+ PyObject *isinstance = PyDict_GetItem(builtins_dict, &_Py_ID(isinstance));
+ assert(isinstance);
+ interp->callable_cache.isinstance = isinstance;
+ PyObject *len = PyDict_GetItem(builtins_dict, &_Py_ID(len));
+ assert(len);
+ interp->callable_cache.len = len;
+ PyObject *list_append = _PyType_Lookup(&PyList_Type, &_Py_ID(append));
+ assert(list_append);
+ interp->callable_cache.list_append = list_append;
+ PyObject *object__getattribute__ = _PyType_Lookup(&PyBaseObject_Type, &_Py_ID(__getattribute__));
+ assert(object__getattribute__);
+ interp->callable_cache.object__getattribute__ = object__getattribute__;
+ interp->interpreter_trampoline = _Py_MakeShimCode(&INTERPRETER_TRAMPOLINE_CODEDEF);
+ if (interp->interpreter_trampoline == NULL) {
+ return _PyStatus_ERR("failed to create interpreter trampoline.");
+ }
+ if (_PyBuiltins_AddExceptions(bimod) < 0) {
+ return _PyStatus_ERR("failed to add exceptions to builtins");
+ }
+
+ interp->builtins_copy = PyDict_Copy(interp->builtins);
+ if (interp->builtins_copy == NULL) {
+ goto error;
+ }
+ Py_DECREF(bimod);
+
+ if (_PyImport_InitDefaultImportFunc(interp) < 0) {
+ goto error;
+ }
+
+ assert(!_PyErr_Occurred(tstate));
+ return _PyStatus_OK();
+
+error:
+ Py_XDECREF(bimod);
+ return _PyStatus_ERR("can't initialize builtins module");
+}
+
+
+static PyStatus
+pycore_interp_init(PyThreadState *tstate)
+{
+ PyInterpreterState *interp = tstate->interp;
+ PyStatus status;
+ PyObject *sysmod = NULL;
+
+ // Create singletons before the first PyType_Ready() call, since
+ // PyType_Ready() uses singletons like the Unicode empty string (tp_doc)
+ // and the empty tuple singletons (tp_bases).
+ status = pycore_init_global_objects(interp);
+ if (_PyStatus_EXCEPTION(status)) {
+ return status;
+ }
+
+ // The GC must be initialized before the first GC collection.
+ status = _PyGC_Init(interp);
+ if (_PyStatus_EXCEPTION(status)) {
+ return status;
+ }
+ // Intern strings in deep-frozen modules first so that others
+ // can use it instead of creating a heap allocated string.
+ if (_Py_Deepfreeze_Init() < 0) {
+ return _PyStatus_ERR("failed to initialize deep-frozen modules");
+ }
+
+ status = pycore_init_types(interp);
+ if (_PyStatus_EXCEPTION(status)) {
+ goto done;
+ }
+
+ if (_PyWarnings_InitState(interp) < 0) {
+ return _PyStatus_ERR("can't initialize warnings");
+ }
+
+ status = _PyAtExit_Init(interp);
+ if (_PyStatus_EXCEPTION(status)) {
+ return status;
+ }
+
+ status = _PySys_Create(tstate, &sysmod);
+ if (_PyStatus_EXCEPTION(status)) {
+ goto done;
+ }
+
+ status = pycore_init_builtins(tstate);
+ if (_PyStatus_EXCEPTION(status)) {
+ goto done;
+ }
+
+ const PyConfig *config = _PyInterpreterState_GetConfig(interp);
+
+ status = _PyImport_InitCore(tstate, sysmod, config->_install_importlib);
+ if (_PyStatus_EXCEPTION(status)) {
+ goto done;
+ }
+
+done:
+ /* sys.modules['sys'] contains a strong reference to the module */
+ Py_XDECREF(sysmod);
+ return status;
+}
+
+
+static PyStatus
+pyinit_config(_PyRuntimeState *runtime,
+ PyThreadState **tstate_p,
+ const PyConfig *config)
+{
+ PyStatus status = pycore_init_runtime(runtime, config);
+ if (_PyStatus_EXCEPTION(status)) {
+ return status;
+ }
+
+ PyThreadState *tstate;
+ status = pycore_create_interpreter(runtime, config, &tstate);
+ if (_PyStatus_EXCEPTION(status)) {
+ return status;
+ }
+ *tstate_p = tstate;
+
+ status = pycore_interp_init(tstate);
+ if (_PyStatus_EXCEPTION(status)) {
+ return status;
+ }
+
+ /* Only when we get here is the runtime core fully initialized */
+ runtime->core_initialized = 1;
+ return _PyStatus_OK();
+}
+
+
+PyStatus
+_Py_PreInitializeFromPyArgv(const PyPreConfig *src_config, const _PyArgv *args)
+{
+ PyStatus status;
+
+ if (src_config == NULL) {
+ return _PyStatus_ERR("preinitialization config is NULL");
+ }
+
+ status = _PyRuntime_Initialize();
+ if (_PyStatus_EXCEPTION(status)) {
+ return status;
+ }
+ _PyRuntimeState *runtime = &_PyRuntime;
+
+ if (runtime->preinitialized) {
+ /* If it's already configured: ignored the new configuration */
+ return _PyStatus_OK();
+ }
+
+ /* Note: preinitialized remains 1 on error, it is only set to 0
+ at exit on success. */
+ runtime->preinitializing = 1;
+
+ PyPreConfig config;
+
+ status = _PyPreConfig_InitFromPreConfig(&config, src_config);
+ if (_PyStatus_EXCEPTION(status)) {
+ return status;
+ }
+
+ status = _PyPreConfig_Read(&config, args);
+ if (_PyStatus_EXCEPTION(status)) {
+ return status;
+ }
+
+ status = _PyPreConfig_Write(&config);
+ if (_PyStatus_EXCEPTION(status)) {
+ return status;
+ }
+
+ runtime->preinitializing = 0;
+ runtime->preinitialized = 1;
+ return _PyStatus_OK();
+}
+
+
+PyStatus
+Py_PreInitializeFromBytesArgs(const PyPreConfig *src_config, Py_ssize_t argc, char **argv)
+{
+ _PyArgv args = {.use_bytes_argv = 1, .argc = argc, .bytes_argv = argv};
+ return _Py_PreInitializeFromPyArgv(src_config, &args);
+}
+
+
+PyStatus
+Py_PreInitializeFromArgs(const PyPreConfig *src_config, Py_ssize_t argc, wchar_t **argv)
+{
+ _PyArgv args = {.use_bytes_argv = 0, .argc = argc, .wchar_argv = argv};
+ return _Py_PreInitializeFromPyArgv(src_config, &args);
+}
+
+
+PyStatus
+Py_PreInitialize(const PyPreConfig *src_config)
+{
+ return _Py_PreInitializeFromPyArgv(src_config, NULL);
+}
+
+
+PyStatus
+_Py_PreInitializeFromConfig(const PyConfig *config,
+ const _PyArgv *args)
+{
+ assert(config != NULL);
+
+ PyStatus status = _PyRuntime_Initialize();
+ if (_PyStatus_EXCEPTION(status)) {
+ return status;
+ }
+ _PyRuntimeState *runtime = &_PyRuntime;
+
+ if (runtime->preinitialized) {
+ /* Already initialized: do nothing */
+ return _PyStatus_OK();
+ }
+
+ PyPreConfig preconfig;
+
+ _PyPreConfig_InitFromConfig(&preconfig, config);
+
+ if (!config->parse_argv) {
+ return Py_PreInitialize(&preconfig);
+ }
+ else if (args == NULL) {
+ _PyArgv config_args = {
+ .use_bytes_argv = 0,
+ .argc = config->argv.length,
+ .wchar_argv = config->argv.items};
+ return _Py_PreInitializeFromPyArgv(&preconfig, &config_args);
+ }
+ else {
+ return _Py_PreInitializeFromPyArgv(&preconfig, args);
+ }
+}
+
+
+/* Begin interpreter initialization
+ *
+ * On return, the first thread and interpreter state have been created,
+ * but the compiler, signal handling, multithreading and
+ * multiple interpreter support, and codec infrastructure are not yet
+ * available.
+ *
+ * The import system will support builtin and frozen modules only.
+ * The only supported io is writing to sys.stderr
+ *
+ * If any operation invoked by this function fails, a fatal error is
+ * issued and the function does not return.
+ *
+ * Any code invoked from this function should *not* assume it has access
+ * to the Python C API (unless the API is explicitly listed as being
+ * safe to call without calling Py_Initialize first)
+ */
+static PyStatus
+pyinit_core(_PyRuntimeState *runtime,
+ const PyConfig *src_config,
+ PyThreadState **tstate_p)
+{
+ PyStatus status;
+
+ status = _Py_PreInitializeFromConfig(src_config, NULL);
+ if (_PyStatus_EXCEPTION(status)) {
+ return status;
+ }
+
+ PyConfig config;
+ PyConfig_InitPythonConfig(&config);
+
+ status = _PyConfig_Copy(&config, src_config);
+ if (_PyStatus_EXCEPTION(status)) {
+ goto done;
+ }
+
+ // Read the configuration, but don't compute the path configuration
+ // (it is computed in the main init).
+ status = _PyConfig_Read(&config, 0);
+ if (_PyStatus_EXCEPTION(status)) {
+ goto done;
+ }
+
+ if (!runtime->core_initialized) {
+ status = pyinit_config(runtime, tstate_p, &config);
+ }
+ else {
+ status = pyinit_core_reconfigure(runtime, tstate_p, &config);
+ }
+ if (_PyStatus_EXCEPTION(status)) {
+ goto done;
+ }
+
+done:
+ PyConfig_Clear(&config);
+ return status;
+}
+
+
+/* Py_Initialize() has already been called: update the main interpreter
+ configuration. Example of bpo-34008: Py_Main() called after
+ Py_Initialize(). */
+static PyStatus
+pyinit_main_reconfigure(PyThreadState *tstate)
+{
+ if (interpreter_update_config(tstate, 0) < 0) {
+ return _PyStatus_ERR("fail to reconfigure Python");
+ }
+ return _PyStatus_OK();
+}
+
+
+static PyStatus
+init_interp_main(PyThreadState *tstate)
+{
+ assert(!_PyErr_Occurred(tstate));
+
+ PyStatus status;
+ int is_main_interp = _Py_IsMainInterpreter(tstate->interp);
+ PyInterpreterState *interp = tstate->interp;
+ const PyConfig *config = _PyInterpreterState_GetConfig(interp);
+
+ if (!config->_install_importlib) {
+ /* Special mode for freeze_importlib: run with no import system
+ *
+ * This means anything which needs support from extension modules
+ * or pure Python code in the standard library won't work.
+ */
+ if (is_main_interp) {
+ interp->runtime->initialized = 1;
+ }
+ return _PyStatus_OK();
+ }
+
+ // Initialize the import-related configuration.
+ status = _PyConfig_InitImportConfig(&interp->config);
+ if (_PyStatus_EXCEPTION(status)) {
+ return status;
+ }
+
+ if (interpreter_update_config(tstate, 1) < 0) {
+ return _PyStatus_ERR("failed to update the Python config");
+ }
+
+ status = _PyImport_InitExternal(tstate);
+ if (_PyStatus_EXCEPTION(status)) {
+ return status;
+ }
+
+ if (is_main_interp) {
+ /* initialize the faulthandler module */
+ status = _PyFaulthandler_Init(config->faulthandler);
+ if (_PyStatus_EXCEPTION(status)) {
+ return status;
+ }
+ }
+
+ status = _PyUnicode_InitEncodings(tstate);
+ if (_PyStatus_EXCEPTION(status)) {
+ return status;
+ }
+
+ if (is_main_interp) {
+ if (_PySignal_Init(config->install_signal_handlers) < 0) {
+ return _PyStatus_ERR("can't initialize signals");
+ }
+
+ if (config->tracemalloc) {
+ if (_PyTraceMalloc_Start(config->tracemalloc) < 0) {
+ return _PyStatus_ERR("can't start tracemalloc");
+ }
+ }
+
+#ifdef PY_HAVE_PERF_TRAMPOLINE
+ if (config->perf_profiling) {
+ if (_PyPerfTrampoline_SetCallbacks(&_Py_perfmap_callbacks) < 0 ||
+ _PyPerfTrampoline_Init(config->perf_profiling) < 0) {
+ return _PyStatus_ERR("can't initialize the perf trampoline");
+ }
+ }
+#endif
+ }
+
+ status = init_sys_streams(tstate);
+ if (_PyStatus_EXCEPTION(status)) {
+ return status;
+ }
+
+ status = init_set_builtins_open();
+ if (_PyStatus_EXCEPTION(status)) {
+ return status;
+ }
+
+ status = add_main_module(interp);
+ if (_PyStatus_EXCEPTION(status)) {
+ return status;
+ }
+
+ if (is_main_interp) {
+ /* Initialize warnings. */
+ PyObject *warnoptions = PySys_GetObject("warnoptions");
+ if (warnoptions != NULL && PyList_Size(warnoptions) > 0)
+ {
+ PyObject *warnings_module = PyImport_ImportModule("warnings");
+ if (warnings_module == NULL) {
+ fprintf(stderr, "'import warnings' failed; traceback:\n");
+ _PyErr_Print(tstate);
+ }
+ Py_XDECREF(warnings_module);
+ }
+
+ interp->runtime->initialized = 1;
+ }
+
+ if (config->site_import) {
+ status = init_import_site();
+ if (_PyStatus_EXCEPTION(status)) {
+ return status;
+ }
+ }
+
+ if (is_main_interp) {
+#ifndef MS_WINDOWS
+ emit_stderr_warning_for_legacy_locale(interp->runtime);
+#endif
+ }
+
+ if (!is_main_interp) {
+ // The main interpreter is handled in Py_Main(), for now.
+ wchar_t *sys_path_0 = interp->runtime->sys_path_0;
+ if (sys_path_0 != NULL) {
+ PyObject *path0 = PyUnicode_FromWideChar(sys_path_0, -1);
+ if (path0 == NULL) {
+ return _PyStatus_ERR("can't initialize sys.path[0]");
+ }
+ PyObject *sysdict = interp->sysdict;
+ if (sysdict == NULL) {
+ Py_DECREF(path0);
+ return _PyStatus_ERR("can't initialize sys.path[0]");
+ }
+ PyObject *sys_path = PyDict_GetItemWithError(sysdict, &_Py_ID(path));
+ if (sys_path == NULL) {
+ Py_DECREF(path0);
+ return _PyStatus_ERR("can't initialize sys.path[0]");
+ }
+ int res = PyList_Insert(sys_path, 0, path0);
+ Py_DECREF(path0);
+ if (res) {
+ return _PyStatus_ERR("can't initialize sys.path[0]");
+ }
+ }
+ }
+
+ assert(!_PyErr_Occurred(tstate));
+
+ return _PyStatus_OK();
+}
+
+
+/* Update interpreter state based on supplied configuration settings
+ *
+ * After calling this function, most of the restrictions on the interpreter
+ * are lifted. The only remaining incomplete settings are those related
+ * to the main module (sys.argv[0], __main__ metadata)
+ *
+ * Calling this when the interpreter is not initializing, is already
+ * initialized or without a valid current thread state is a fatal error.
+ * Other errors should be reported as normal Python exceptions with a
+ * non-zero return code.
+ */
+static PyStatus
+pyinit_main(PyThreadState *tstate)
+{
+ PyInterpreterState *interp = tstate->interp;
+ if (!interp->runtime->core_initialized) {
+ return _PyStatus_ERR("runtime core not initialized");
+ }
+
+ if (interp->runtime->initialized) {
+ return pyinit_main_reconfigure(tstate);
+ }
+
+ PyStatus status = init_interp_main(tstate);
+ if (_PyStatus_EXCEPTION(status)) {
+ return status;
+ }
+ return _PyStatus_OK();
+}
+
+
+PyStatus
+Py_InitializeFromConfig(const PyConfig *config)
+{
+ if (config == NULL) {
+ return _PyStatus_ERR("initialization config is NULL");
+ }
+
+ PyStatus status;
+
+ status = _PyRuntime_Initialize();
+ if (_PyStatus_EXCEPTION(status)) {
+ return status;
+ }
+ _PyRuntimeState *runtime = &_PyRuntime;
+
+ PyThreadState *tstate = NULL;
+ status = pyinit_core(runtime, config, &tstate);
+ if (_PyStatus_EXCEPTION(status)) {
+ return status;
+ }
+ config = _PyInterpreterState_GetConfig(tstate->interp);
+
+ if (config->_init_main) {
+ status = pyinit_main(tstate);
+ if (_PyStatus_EXCEPTION(status)) {
+ return status;
+ }
+ }
+
+ return _PyStatus_OK();
+}
+
+
+void
+Py_InitializeEx(int install_sigs)
+{
+ PyStatus status;
+
+ status = _PyRuntime_Initialize();
+ if (_PyStatus_EXCEPTION(status)) {
+ Py_ExitStatusException(status);
+ }
+ _PyRuntimeState *runtime = &_PyRuntime;
+
+ if (runtime->initialized) {
+ /* bpo-33932: Calling Py_Initialize() twice does nothing. */
+ return;
+ }
+
+ PyConfig config;
+ _PyConfig_InitCompatConfig(&config);
+
+ config.install_signal_handlers = install_sigs;
+
+ status = Py_InitializeFromConfig(&config);
+ PyConfig_Clear(&config);
+ if (_PyStatus_EXCEPTION(status)) {
+ Py_ExitStatusException(status);
+ }
+}
+
+void
+Py_Initialize(void)
+{
+ Py_InitializeEx(1);
+}
+
+
+PyStatus
+_Py_InitializeMain(void)
+{
+ PyStatus status = _PyRuntime_Initialize();
+ if (_PyStatus_EXCEPTION(status)) {
+ return status;
+ }
+ PyThreadState *tstate = _PyThreadState_GET();
+ return pyinit_main(tstate);
+}
+
+
+static void
+finalize_modules_delete_special(PyThreadState *tstate, int verbose)
+{
+ // List of names to clear in sys
+ static const char * const sys_deletes[] = {
+ "path", "argv", "ps1", "ps2", "last_exc",
+ "last_type", "last_value", "last_traceback",
+ "__interactivehook__",
+ // path_hooks and path_importer_cache are cleared
+ // by _PyImport_FiniExternal().
+ // XXX Clear meta_path in _PyImport_FiniCore().
+ "meta_path",
+ NULL
+ };
+
+ static const char * const sys_files[] = {
+ "stdin", "__stdin__",
+ "stdout", "__stdout__",
+ "stderr", "__stderr__",
+ NULL
+ };
+
+ PyInterpreterState *interp = tstate->interp;
+ if (verbose) {
+ PySys_WriteStderr("# clear builtins._\n");
+ }
+ if (PyDict_SetItemString(interp->builtins, "_", Py_None) < 0) {
+ PyErr_WriteUnraisable(NULL);
+ }
+
+ const char * const *p;
+ for (p = sys_deletes; *p != NULL; p++) {
+ if (_PySys_ClearAttrString(interp, *p, verbose) < 0) {
+ PyErr_WriteUnraisable(NULL);
+ }
+ }
+ for (p = sys_files; *p != NULL; p+=2) {
+ const char *name = p[0];
+ const char *orig_name = p[1];
+ if (verbose) {
+ PySys_WriteStderr("# restore sys.%s\n", name);
+ }
+ PyObject *value = _PyDict_GetItemStringWithError(interp->sysdict,
+ orig_name);
+ if (value == NULL) {
+ if (_PyErr_Occurred(tstate)) {
+ PyErr_WriteUnraisable(NULL);
+ }
+ value = Py_None;
+ }
+ if (PyDict_SetItemString(interp->sysdict, name, value) < 0) {
+ PyErr_WriteUnraisable(NULL);
+ }
+ }
+}
+
+
+static PyObject*
+finalize_remove_modules(PyObject *modules, int verbose)
+{
+ PyObject *weaklist = PyList_New(0);
+ if (weaklist == NULL) {
+ PyErr_WriteUnraisable(NULL);
+ }
+
+#define STORE_MODULE_WEAKREF(name, mod) \
+ if (weaklist != NULL) { \
+ PyObject *wr = PyWeakref_NewRef(mod, NULL); \
+ if (wr) { \
+ PyObject *tup = PyTuple_Pack(2, name, wr); \
+ if (!tup || PyList_Append(weaklist, tup) < 0) { \
+ PyErr_WriteUnraisable(NULL); \
+ } \
+ Py_XDECREF(tup); \
+ Py_DECREF(wr); \
+ } \
+ else { \
+ PyErr_WriteUnraisable(NULL); \
+ } \
+ }
+
+#define CLEAR_MODULE(name, mod) \
+ if (PyModule_Check(mod)) { \
+ if (verbose && PyUnicode_Check(name)) { \
+ PySys_FormatStderr("# cleanup[2] removing %U\n", name); \
+ } \
+ STORE_MODULE_WEAKREF(name, mod); \
+ if (PyObject_SetItem(modules, name, Py_None) < 0) { \
+ PyErr_WriteUnraisable(NULL); \
+ } \
+ }
+
+ if (PyDict_CheckExact(modules)) {
+ Py_ssize_t pos = 0;
+ PyObject *key, *value;
+ while (PyDict_Next(modules, &pos, &key, &value)) {
+ CLEAR_MODULE(key, value);
+ }
+ }
+ else {
+ PyObject *iterator = PyObject_GetIter(modules);
+ if (iterator == NULL) {
+ PyErr_WriteUnraisable(NULL);
+ }
+ else {
+ PyObject *key;
+ while ((key = PyIter_Next(iterator))) {
+ PyObject *value = PyObject_GetItem(modules, key);
+ if (value == NULL) {
+ PyErr_WriteUnraisable(NULL);
+ continue;
+ }
+ CLEAR_MODULE(key, value);
+ Py_DECREF(value);
+ Py_DECREF(key);
+ }
+ if (PyErr_Occurred()) {
+ PyErr_WriteUnraisable(NULL);
+ }
+ Py_DECREF(iterator);
+ }
+ }
+#undef CLEAR_MODULE
+#undef STORE_MODULE_WEAKREF
+
+ return weaklist;
+}
+
+
+static void
+finalize_clear_modules_dict(PyObject *modules)
+{
+ if (PyDict_CheckExact(modules)) {
+ PyDict_Clear(modules);
+ }
+ else {
+ if (PyObject_CallMethodNoArgs(modules, &_Py_ID(clear)) == NULL) {
+ PyErr_WriteUnraisable(NULL);
+ }
+ }
+}
+
+
+static void
+finalize_restore_builtins(PyThreadState *tstate)
+{
+ PyInterpreterState *interp = tstate->interp;
+ PyObject *dict = PyDict_Copy(interp->builtins);
+ if (dict == NULL) {
+ PyErr_WriteUnraisable(NULL);
+ }
+ PyDict_Clear(interp->builtins);
+ if (PyDict_Update(interp->builtins, interp->builtins_copy)) {
+ PyErr_WriteUnraisable(NULL);
+ }
+ Py_XDECREF(dict);
+}
+
+
+static void
+finalize_modules_clear_weaklist(PyInterpreterState *interp,
+ PyObject *weaklist, int verbose)
+{
+ // First clear modules imported later
+ for (Py_ssize_t i = PyList_GET_SIZE(weaklist) - 1; i >= 0; i--) {
+ PyObject *tup = PyList_GET_ITEM(weaklist, i);
+ PyObject *name = PyTuple_GET_ITEM(tup, 0);
+ PyObject *mod = PyWeakref_GET_OBJECT(PyTuple_GET_ITEM(tup, 1));
+ if (mod == Py_None) {
+ continue;
+ }
+ assert(PyModule_Check(mod));
+ PyObject *dict = PyModule_GetDict(mod);
+ if (dict == interp->builtins || dict == interp->sysdict) {
+ continue;
+ }
+ Py_INCREF(mod);
+ if (verbose && PyUnicode_Check(name)) {
+ PySys_FormatStderr("# cleanup[3] wiping %U\n", name);
+ }
+ _PyModule_Clear(mod);
+ Py_DECREF(mod);
+ }
+}
+
+
+static void
+finalize_clear_sys_builtins_dict(PyInterpreterState *interp, int verbose)
+{
+ // Clear sys dict
+ if (verbose) {
+ PySys_FormatStderr("# cleanup[3] wiping sys\n");
+ }
+ _PyModule_ClearDict(interp->sysdict);
+
+ // Clear builtins dict
+ if (verbose) {
+ PySys_FormatStderr("# cleanup[3] wiping builtins\n");
+ }
+ _PyModule_ClearDict(interp->builtins);
+}
+
+
+/* Clear modules, as good as we can */
+// XXX Move most of this to import.c.
+static void
+finalize_modules(PyThreadState *tstate)
+{
+ PyInterpreterState *interp = tstate->interp;
+ PyObject *modules = _PyImport_GetModules(interp);
+ if (modules == NULL) {
+ // Already done
+ return;
+ }
+ int verbose = _PyInterpreterState_GetConfig(interp)->verbose;
+
+ // Delete some special builtins._ and sys attributes first. These are
+ // common places where user values hide and people complain when their
+ // destructors fail. Since the modules containing them are
+ // deleted *last* of all, they would come too late in the normal
+ // destruction order. Sigh.
+ //
+ // XXX Perhaps these precautions are obsolete. Who knows?
+ finalize_modules_delete_special(tstate, verbose);
+
+ // Remove all modules from sys.modules, hoping that garbage collection
+ // can reclaim most of them: set all sys.modules values to None.
+ //
+ // We prepare a list which will receive (name, weakref) tuples of
+ // modules when they are removed from sys.modules. The name is used
+ // for diagnosis messages (in verbose mode), while the weakref helps
+ // detect those modules which have been held alive.
+ PyObject *weaklist = finalize_remove_modules(modules, verbose);
+
+ // Clear the modules dict
+ finalize_clear_modules_dict(modules);
+
+ // Restore the original builtins dict, to ensure that any
+ // user data gets cleared.
+ finalize_restore_builtins(tstate);
+
+ // Collect garbage
+ _PyGC_CollectNoFail(tstate);
+
+ // Dump GC stats before it's too late, since it uses the warnings
+ // machinery.
+ _PyGC_DumpShutdownStats(interp);
+
+ if (weaklist != NULL) {
+ // Now, if there are any modules left alive, clear their globals to
+ // minimize potential leaks. All C extension modules actually end
+ // up here, since they are kept alive in the interpreter state.
+ //
+ // The special treatment of "builtins" here is because even
+ // when it's not referenced as a module, its dictionary is
+ // referenced by almost every module's __builtins__. Since
+ // deleting a module clears its dictionary (even if there are
+ // references left to it), we need to delete the "builtins"
+ // module last. Likewise, we don't delete sys until the very
+ // end because it is implicitly referenced (e.g. by print).
+ //
+ // Since dict is ordered in CPython 3.6+, modules are saved in
+ // importing order. First clear modules imported later.
+ finalize_modules_clear_weaklist(interp, weaklist, verbose);
+ Py_DECREF(weaklist);
+ }
+
+ // Clear sys and builtins modules dict
+ finalize_clear_sys_builtins_dict(interp, verbose);
+
+ // Clear module dict copies stored in the interpreter state:
+ // clear PyInterpreterState.modules_by_index and
+ // clear PyModuleDef.m_base.m_copy (of extensions not using the multi-phase
+ // initialization API)
+ _PyImport_ClearModulesByIndex(interp);
+
+ // Clear and delete the modules directory. Actual modules will
+ // still be there only if imported during the execution of some
+ // destructor.
+ _PyImport_ClearModules(interp);
+
+ // Collect garbage once more
+ _PyGC_CollectNoFail(tstate);
+}
+
+
+/* Flush stdout and stderr */
+
+static int
+file_is_closed(PyObject *fobj)
+{
+ int r;
+ PyObject *tmp = PyObject_GetAttrString(fobj, "closed");
+ if (tmp == NULL) {
+ PyErr_Clear();
+ return 0;
+ }
+ r = PyObject_IsTrue(tmp);
+ Py_DECREF(tmp);
+ if (r < 0)
+ PyErr_Clear();
+ return r > 0;
+}
+
+
+static int
+flush_std_files(void)
+{
+ PyThreadState *tstate = _PyThreadState_GET();
+ PyObject *fout = _PySys_GetAttr(tstate, &_Py_ID(stdout));
+ PyObject *ferr = _PySys_GetAttr(tstate, &_Py_ID(stderr));
+ PyObject *tmp;
+ int status = 0;
+
+ if (fout != NULL && fout != Py_None && !file_is_closed(fout)) {
+ tmp = PyObject_CallMethodNoArgs(fout, &_Py_ID(flush));
+ if (tmp == NULL) {
+ PyErr_WriteUnraisable(fout);
+ status = -1;
+ }
+ else
+ Py_DECREF(tmp);
+ }
+
+ if (ferr != NULL && ferr != Py_None && !file_is_closed(ferr)) {
+ tmp = PyObject_CallMethodNoArgs(ferr, &_Py_ID(flush));
+ if (tmp == NULL) {
+ PyErr_Clear();
+ status = -1;
+ }
+ else
+ Py_DECREF(tmp);
+ }
+
+ return status;
+}
+
+/* Undo the effect of Py_Initialize().
+
+ Beware: if multiple interpreter and/or thread states exist, these
+ are not wiped out; only the current thread and interpreter state
+ are deleted. But since everything else is deleted, those other
+ interpreter and thread states should no longer be used.
+
+ (XXX We should do better, e.g. wipe out all interpreters and
+ threads.)
+
+ Locking: as above.
+
+*/
+
+
+static void
+finalize_interp_types(PyInterpreterState *interp)
+{
+ _PyUnicode_FiniTypes(interp);
+ _PySys_FiniTypes(interp);
+ _PyExc_Fini(interp);
+ _PyAsyncGen_Fini(interp);
+ _PyContext_Fini(interp);
+ _PyFloat_FiniType(interp);
+ _PyLong_FiniTypes(interp);
+ _PyThread_FiniType(interp);
+ // XXX fini collections module static types (_PyStaticType_Dealloc())
+ // XXX fini IO module static types (_PyStaticType_Dealloc())
+ _PyErr_FiniTypes(interp);
+ _PyTypes_FiniTypes(interp);
+
+ _PyTypes_Fini(interp);
+
+ // Call _PyUnicode_ClearInterned() before _PyDict_Fini() since it uses
+ // a dict internally.
+ _PyUnicode_ClearInterned(interp);
+
+ _PyDict_Fini(interp);
+ _PyList_Fini(interp);
+ _PyTuple_Fini(interp);
+
+ _PySlice_Fini(interp);
+
+ _PyUnicode_Fini(interp);
+ _PyFloat_Fini(interp);
+#ifdef Py_DEBUG
+ _PyStaticObjects_CheckRefcnt(interp);
+#endif
+}
+
+
+static void
+finalize_interp_clear(PyThreadState *tstate)
+{
+ int is_main_interp = _Py_IsMainInterpreter(tstate->interp);
+
+ _PyExc_ClearExceptionGroupType(tstate->interp);
+ _Py_clear_generic_types(tstate->interp);
+
+ /* Clear interpreter state and all thread states */
+ _PyInterpreterState_Clear(tstate);
+
+ /* Clear all loghooks */
+ /* Both _PySys_Audit function and users still need PyObject, such as tuple.
+ Call _PySys_ClearAuditHooks when PyObject available. */
+ if (is_main_interp) {
+ _PySys_ClearAuditHooks(tstate);
+ }
+
+ if (is_main_interp) {
+ _Py_HashRandomization_Fini();
+ _PyArg_Fini();
+ _Py_ClearFileSystemEncoding();
+ _Py_Deepfreeze_Fini();
+ _PyPerfTrampoline_Fini();
+ _PyPerfTrampoline_FreeArenas();
+ }
+
+ finalize_interp_types(tstate->interp);
+}
+
+
+static void
+finalize_interp_delete(PyInterpreterState *interp)
+{
+ /* Cleanup auto-thread-state */
+ _PyGILState_Fini(interp);
+
+ /* We can't call _PyEval_FiniGIL() here because destroying the GIL lock can
+ fail when it is being awaited by another running daemon thread (see
+ bpo-9901). Instead pycore_create_interpreter() destroys the previously
+ created GIL, which ensures that Py_Initialize / Py_FinalizeEx can be
+ called multiple times. */
+
+ PyInterpreterState_Delete(interp);
+}
+
+
+int
+Py_FinalizeEx(void)
+{
+ int status = 0;
+
+ _PyRuntimeState *runtime = &_PyRuntime;
+ if (!runtime->initialized) {
+ return status;
+ }
+
+ /* Get current thread state and interpreter pointer */
+ PyThreadState *tstate = _PyThreadState_GET();
+ // XXX assert(_Py_IsMainInterpreter(tstate->interp));
+ // XXX assert(_Py_IsMainThread());
+
+ // Block some operations.
+ tstate->interp->finalizing = 1;
+
+ // Wrap up existing "threading"-module-created, non-daemon threads.
+ wait_for_thread_shutdown(tstate);
+
+ // Make any remaining pending calls.
+ _Py_FinishPendingCalls(tstate);
+
+ /* The interpreter is still entirely intact at this point, and the
+ * exit funcs may be relying on that. In particular, if some thread
+ * or exit func is still waiting to do an import, the import machinery
+ * expects Py_IsInitialized() to return true. So don't say the
+ * runtime is uninitialized until after the exit funcs have run.
+ * Note that Threading.py uses an exit func to do a join on all the
+ * threads created thru it, so this also protects pending imports in
+ * the threads created via Threading.
+ */
+
+ _PyAtExit_Call(tstate->interp);
+
+ /* Copy the core config, PyInterpreterState_Delete() free
+ the core config memory */
+#ifdef Py_REF_DEBUG
+ int show_ref_count = tstate->interp->config.show_ref_count;
+#endif
+#ifdef Py_TRACE_REFS
+ int dump_refs = tstate->interp->config.dump_refs;
+ wchar_t *dump_refs_file = tstate->interp->config.dump_refs_file;
+#endif
+#ifdef WITH_PYMALLOC
+ int malloc_stats = tstate->interp->config.malloc_stats;
+#endif
+
+ /* Remaining daemon threads will automatically exit
+ when they attempt to take the GIL (ex: PyEval_RestoreThread()). */
+ _PyInterpreterState_SetFinalizing(tstate->interp, tstate);
+ _PyRuntimeState_SetFinalizing(runtime, tstate);
+ runtime->initialized = 0;
+ runtime->core_initialized = 0;
+
+ // XXX Call something like _PyImport_Disable() here?
+
+ /* Destroy the state of all threads of the interpreter, except of the
+ current thread. In practice, only daemon threads should still be alive,
+ except if wait_for_thread_shutdown() has been cancelled by CTRL+C.
+ Clear frames of other threads to call objects destructors. Destructors
+ will be called in the current Python thread. Since
+ _PyRuntimeState_SetFinalizing() has been called, no other Python thread
+ can take the GIL at this point: if they try, they will exit
+ immediately. */
+ _PyThreadState_DeleteExcept(tstate);
+
+ /* At this point no Python code should be running at all.
+ The only thread state left should be the main thread of the main
+ interpreter (AKA tstate), in which this code is running right now.
+ There may be other OS threads running but none of them will have
+ thread states associated with them, nor will be able to create
+ new thread states.
+
+ Thus tstate is the only possible thread state from here on out.
+ It may still be used during finalization to run Python code as
+ needed or provide runtime state (e.g. sys.modules) but that will
+ happen sparingly. Furthermore, the order of finalization aims
+ to not need a thread (or interpreter) state as soon as possible.
+ */
+ // XXX Make sure we are preventing the creating of any new thread states
+ // (or interpreters).
+
+ /* Flush sys.stdout and sys.stderr */
+ if (flush_std_files() < 0) {
+ status = -1;
+ }
+
+ /* Disable signal handling */
+ _PySignal_Fini();
+
+ /* Collect garbage. This may call finalizers; it's nice to call these
+ * before all modules are destroyed.
+ * XXX If a __del__ or weakref callback is triggered here, and tries to
+ * XXX import a module, bad things can happen, because Python no
+ * XXX longer believes it's initialized.
+ * XXX Fatal Python error: Interpreter not initialized (version mismatch?)
+ * XXX is easy to provoke that way. I've also seen, e.g.,
+ * XXX Exception exceptions.ImportError: 'No module named sha'
+ * XXX in <function callback at 0x008F5718> ignored
+ * XXX but I'm unclear on exactly how that one happens. In any case,
+ * XXX I haven't seen a real-life report of either of these.
+ */
+ PyGC_Collect();
+
+ /* Destroy all modules */
+ _PyImport_FiniExternal(tstate->interp);
+ finalize_modules(tstate);
+
+ /* Print debug stats if any */
+ _PyEval_Fini();
+
+ /* Flush sys.stdout and sys.stderr (again, in case more was printed) */
+ if (flush_std_files() < 0) {
+ status = -1;
+ }
+
+ /* Collect final garbage. This disposes of cycles created by
+ * class definitions, for example.
+ * XXX This is disabled because it caused too many problems. If
+ * XXX a __del__ or weakref callback triggers here, Python code has
+ * XXX a hard time running, because even the sys module has been
+ * XXX cleared out (sys.stdout is gone, sys.excepthook is gone, etc).
+ * XXX One symptom is a sequence of information-free messages
+ * XXX coming from threads (if a __del__ or callback is invoked,
+ * XXX other threads can execute too, and any exception they encounter
+ * XXX triggers a comedy of errors as subsystem after subsystem
+ * XXX fails to find what it *expects* to find in sys to help report
+ * XXX the exception and consequent unexpected failures). I've also
+ * XXX seen segfaults then, after adding print statements to the
+ * XXX Python code getting called.
+ */
+#if 0
+ _PyGC_CollectIfEnabled();
+#endif
+
+ /* Disable tracemalloc after all Python objects have been destroyed,
+ so it is possible to use tracemalloc in objects destructor. */
+ _PyTraceMalloc_Fini();
+
+ /* Finalize any remaining import state */
+ // XXX Move these up to where finalize_modules() is currently.
+ _PyImport_FiniCore(tstate->interp);
+ _PyImport_Fini();
+
+ /* unload faulthandler module */
+ _PyFaulthandler_Fini();
+
+ /* dump hash stats */
+ _PyHash_Fini();
+
+#ifdef Py_TRACE_REFS
+ /* Display all objects still alive -- this can invoke arbitrary
+ * __repr__ overrides, so requires a mostly-intact interpreter.
+ * Alas, a lot of stuff may still be alive now that will be cleaned
+ * up later.
+ */
+
+ FILE *dump_refs_fp = NULL;
+ if (dump_refs_file != NULL) {
+ dump_refs_fp = _Py_wfopen(dump_refs_file, L"w");
+ if (dump_refs_fp == NULL) {
+ fprintf(stderr, "PYTHONDUMPREFSFILE: cannot create file: %ls\n", dump_refs_file);
+ }
+ }
+
+ if (dump_refs) {
+ _Py_PrintReferences(tstate->interp, stderr);
+ }
+
+ if (dump_refs_fp != NULL) {
+ _Py_PrintReferences(tstate->interp, dump_refs_fp);
+ }
+#endif /* Py_TRACE_REFS */
+
+ /* At this point there's almost no other Python code that will run,
+ nor interpreter state needed. The only possibility is the
+ finalizers of the objects stored on tstate (and tstate->interp),
+ which are triggered via finalize_interp_clear().
+
+ For now we operate as though none of those finalizers actually
+ need an operational thread state or interpreter. In reality,
+ those finalizers may rely on some part of tstate or
+ tstate->interp, and/or may raise exceptions
+ or otherwise fail.
+ */
+ // XXX Do this sooner during finalization.
+ // XXX Ensure finalizer errors are handled properly.
+
+ finalize_interp_clear(tstate);
+ finalize_interp_delete(tstate->interp);
+
+#ifdef Py_REF_DEBUG
+ if (show_ref_count) {
+ _PyDebug_PrintTotalRefs();
+ }
+ _Py_FinalizeRefTotal(runtime);
+#endif
+ _Py_FinalizeAllocatedBlocks(runtime);
+
+#ifdef Py_TRACE_REFS
+ /* Display addresses (& refcnts) of all objects still alive.
+ * An address can be used to find the repr of the object, printed
+ * above by _Py_PrintReferences.
+ */
+
+ if (dump_refs) {
+ _Py_PrintReferenceAddresses(tstate->interp, stderr);
+ }
+
+ if (dump_refs_fp != NULL) {
+ _Py_PrintReferenceAddresses(tstate->interp, dump_refs_fp);
+ fclose(dump_refs_fp);
+ }
+#endif /* Py_TRACE_REFS */
+#ifdef WITH_PYMALLOC
+ if (malloc_stats) {
+ _PyObject_DebugMallocStats(stderr);
+ }
+#endif
+
+ call_ll_exitfuncs(runtime);
+
+ _PyRuntime_Finalize();
+ return status;
+}
+
+void
+Py_Finalize(void)
+{
+ Py_FinalizeEx();
+}
+
+
+/* Create and initialize a new interpreter and thread, and return the
+ new thread. This requires that Py_Initialize() has been called
+ first.
+
+ Unsuccessful initialization yields a NULL pointer. Note that *no*
+ exception information is available even in this case -- the
+ exception information is held in the thread, and there is no
+ thread.
+
+ Locking: as above.
+
+*/
+
+static PyStatus
+new_interpreter(PyThreadState **tstate_p, const PyInterpreterConfig *config)
+{
+ PyStatus status;
+
+ status = _PyRuntime_Initialize();
+ if (_PyStatus_EXCEPTION(status)) {
+ return status;
+ }
+ _PyRuntimeState *runtime = &_PyRuntime;
+
+ if (!runtime->initialized) {
+ return _PyStatus_ERR("Py_Initialize must be called first");
+ }
+
+ /* Issue #10915, #15751: The GIL API doesn't work with multiple
+ interpreters: disable PyGILState_Check(). */
+ runtime->gilstate.check_enabled = 0;
+
+ PyInterpreterState *interp = PyInterpreterState_New();
+ if (interp == NULL) {
+ *tstate_p = NULL;
+ return _PyStatus_OK();
+ }
+
+ PyThreadState *tstate = _PyThreadState_New(interp);
+ if (tstate == NULL) {
+ PyInterpreterState_Delete(interp);
+ *tstate_p = NULL;
+ return _PyStatus_OK();
+ }
+ _PyThreadState_Bind(tstate);
+
+ // XXX For now we do this before the GIL is created.
+ PyThreadState *save_tstate = _PyThreadState_SwapNoGIL(tstate);
+ int has_gil = 0;
+
+ /* From this point until the init_interp_create_gil() call,
+ we must not do anything that requires that the GIL be held
+ (or otherwise exist). That applies whether or not the new
+ interpreter has its own GIL (e.g. the main interpreter). */
+
+ /* Copy the current interpreter config into the new interpreter */
+ const PyConfig *src_config;
+ if (save_tstate != NULL) {
+ // XXX Might new_interpreter() have been called without the GIL held?
+ _PyEval_ReleaseLock(save_tstate->interp, save_tstate);
+ src_config = _PyInterpreterState_GetConfig(save_tstate->interp);
+ }
+ else
+ {
+ /* No current thread state, copy from the main interpreter */
+ PyInterpreterState *main_interp = _PyInterpreterState_Main();
+ src_config = _PyInterpreterState_GetConfig(main_interp);
+ }
+
+ /* This does not require that the GIL be held. */
+ status = _PyConfig_Copy(&interp->config, src_config);
+ if (_PyStatus_EXCEPTION(status)) {
+ goto error;
+ }
+
+ /* This does not require that the GIL be held. */
+ status = init_interp_settings(interp, config);
+ if (_PyStatus_EXCEPTION(status)) {
+ goto error;
+ }
+
+ status = init_interp_create_gil(tstate, config->gil);
+ if (_PyStatus_EXCEPTION(status)) {
+ goto error;
+ }
+ has_gil = 1;
+
+ /* No objects have been created yet. */
+
+ status = pycore_interp_init(tstate);
+ if (_PyStatus_EXCEPTION(status)) {
+ goto error;
+ }
+
+ status = init_interp_main(tstate);
+ if (_PyStatus_EXCEPTION(status)) {
+ goto error;
+ }
+
+ *tstate_p = tstate;
+ return _PyStatus_OK();
+
+error:
+ *tstate_p = NULL;
+
+ /* Oops, it didn't work. Undo it all. */
+ PyErr_PrintEx(0);
+ if (has_gil) {
+ PyThreadState_Swap(save_tstate);
+ }
+ else {
+ _PyThreadState_SwapNoGIL(save_tstate);
+ }
+ PyThreadState_Clear(tstate);
+ PyThreadState_Delete(tstate);
+ PyInterpreterState_Delete(interp);
+
+ return status;
+}
+
+PyStatus
+Py_NewInterpreterFromConfig(PyThreadState **tstate_p,
+ const PyInterpreterConfig *config)
+{
+ return new_interpreter(tstate_p, config);
+}
+
+PyThreadState *
+Py_NewInterpreter(void)
+{
+ PyThreadState *tstate = NULL;
+ const PyInterpreterConfig config = _PyInterpreterConfig_LEGACY_INIT;
+ PyStatus status = new_interpreter(&tstate, &config);
+ if (_PyStatus_EXCEPTION(status)) {
+ Py_ExitStatusException(status);
+ }
+ return tstate;
+}
+
+/* Delete an interpreter and its last thread. This requires that the
+ given thread state is current, that the thread has no remaining
+ frames, and that it is its interpreter's only remaining thread.
+ It is a fatal error to violate these constraints.
+
+ (Py_FinalizeEx() doesn't have these constraints -- it zaps
+ everything, regardless.)
+
+ Locking: as above.
+
+*/
+
+void
+Py_EndInterpreter(PyThreadState *tstate)
+{
+ PyInterpreterState *interp = tstate->interp;
+
+ if (tstate != _PyThreadState_GET()) {
+ Py_FatalError("thread is not current");
+ }
+ if (tstate->cframe->current_frame != NULL) {
+ Py_FatalError("thread still has a frame");
+ }
+ interp->finalizing = 1;
+
+ // Wrap up existing "threading"-module-created, non-daemon threads.
+ wait_for_thread_shutdown(tstate);
+
+ // Make any remaining pending calls.
+ _Py_FinishPendingCalls(tstate);
+
+ _PyAtExit_Call(tstate->interp);
+
+ if (tstate != interp->threads.head || tstate->next != NULL) {
+ Py_FatalError("not the last thread");
+ }
+
+ /* Remaining daemon threads will automatically exit
+ when they attempt to take the GIL (ex: PyEval_RestoreThread()). */
+ _PyInterpreterState_SetFinalizing(interp, tstate);
+
+ // XXX Call something like _PyImport_Disable() here?
+
+ _PyImport_FiniExternal(tstate->interp);
+ finalize_modules(tstate);
+ _PyImport_FiniCore(tstate->interp);
+
+ finalize_interp_clear(tstate);
+ finalize_interp_delete(tstate->interp);
+}
+
+int
+_Py_IsInterpreterFinalizing(PyInterpreterState *interp)
+{
+ /* We check the runtime first since, in a daemon thread,
+ interp might be dangling pointer. */
+ PyThreadState *finalizing = _PyRuntimeState_GetFinalizing(&_PyRuntime);
+ if (finalizing == NULL) {
+ finalizing = _PyInterpreterState_GetFinalizing(interp);
+ }
+ return finalizing != NULL;
+}
+
+/* Add the __main__ module */
+
+static PyStatus
+add_main_module(PyInterpreterState *interp)
+{
+ PyObject *m, *d, *loader, *ann_dict;
+ m = PyImport_AddModule("__main__");
+ if (m == NULL)
+ return _PyStatus_ERR("can't create __main__ module");
+
+ d = PyModule_GetDict(m);
+ ann_dict = PyDict_New();
+ if ((ann_dict == NULL) ||
+ (PyDict_SetItemString(d, "__annotations__", ann_dict) < 0)) {
+ return _PyStatus_ERR("Failed to initialize __main__.__annotations__");
+ }
+ Py_DECREF(ann_dict);
+
+ if (_PyDict_GetItemStringWithError(d, "__builtins__") == NULL) {
+ if (PyErr_Occurred()) {
+ return _PyStatus_ERR("Failed to test __main__.__builtins__");
+ }
+ PyObject *bimod = PyImport_ImportModule("builtins");
+ if (bimod == NULL) {
+ return _PyStatus_ERR("Failed to retrieve builtins module");
+ }
+ if (PyDict_SetItemString(d, "__builtins__", bimod) < 0) {
+ return _PyStatus_ERR("Failed to initialize __main__.__builtins__");
+ }
+ Py_DECREF(bimod);
+ }
+
+ /* Main is a little special - BuiltinImporter is the most appropriate
+ * initial setting for its __loader__ attribute. A more suitable value
+ * will be set if __main__ gets further initialized later in the startup
+ * process.
+ */
+ loader = _PyDict_GetItemStringWithError(d, "__loader__");
+ if (loader == NULL || loader == Py_None) {
+ if (PyErr_Occurred()) {
+ return _PyStatus_ERR("Failed to test __main__.__loader__");
+ }
+ PyObject *loader = _PyImport_GetImportlibLoader(interp,
+ "BuiltinImporter");
+ if (loader == NULL) {
+ return _PyStatus_ERR("Failed to retrieve BuiltinImporter");
+ }
+ if (PyDict_SetItemString(d, "__loader__", loader) < 0) {
+ return _PyStatus_ERR("Failed to initialize __main__.__loader__");
+ }
+ Py_DECREF(loader);
+ }
+ return _PyStatus_OK();
+}
+
+/* Import the site module (not into __main__ though) */
+
+static PyStatus
+init_import_site(void)
+{
+ PyObject *m;
+ m = PyImport_ImportModule("site");
+ if (m == NULL) {
+ return _PyStatus_ERR("Failed to import the site module");
+ }
+ Py_DECREF(m);
+ return _PyStatus_OK();
+}
+
+/* Check if a file descriptor is valid or not.
+ Return 0 if the file descriptor is invalid, return non-zero otherwise. */
+static int
+is_valid_fd(int fd)
+{
+/* dup() is faster than fstat(): fstat() can require input/output operations,
+ whereas dup() doesn't. There is a low risk of EMFILE/ENFILE at Python
+ startup. Problem: dup() doesn't check if the file descriptor is valid on
+ some platforms.
+
+ fcntl(fd, F_GETFD) is even faster, because it only checks the process table.
+ It is preferred over dup() when available, since it cannot fail with the
+ "too many open files" error (EMFILE).
+
+ bpo-30225: On macOS Tiger, when stdout is redirected to a pipe and the other
+ side of the pipe is closed, dup(1) succeed, whereas fstat(1, &st) fails with
+ EBADF. FreeBSD has similar issue (bpo-32849).
+
+ Only use dup() on Linux where dup() is enough to detect invalid FD
+ (bpo-32849).
+*/
+ if (fd < 0) {
+ return 0;
+ }
+#if defined(F_GETFD) && ( \
+ defined(__linux__) || \
+ defined(__APPLE__) || \
+ defined(__wasm__))
+ return fcntl(fd, F_GETFD) >= 0;
+#elif defined(__linux__)
+ int fd2 = dup(fd);
+ if (fd2 >= 0) {
+ close(fd2);
+ }
+ return (fd2 >= 0);
+#elif defined(MS_WINDOWS)
+ HANDLE hfile;
+ _Py_BEGIN_SUPPRESS_IPH
+ hfile = (HANDLE)_get_osfhandle(fd);
+ _Py_END_SUPPRESS_IPH
+ return (hfile != INVALID_HANDLE_VALUE
+ && GetFileType(hfile) != FILE_TYPE_UNKNOWN);
+#else
+ struct stat st;
+ return (fstat(fd, &st) == 0);
+#endif
+}
+
+/* returns Py_None if the fd is not valid */
+static PyObject*
+create_stdio(const PyConfig *config, PyObject* io,
+ int fd, int write_mode, const char* name,
+ const wchar_t* encoding, const wchar_t* errors)
+{
+ PyObject *buf = NULL, *stream = NULL, *text = NULL, *raw = NULL, *res;
+ const char* mode;
+ const char* newline;
+ PyObject *line_buffering, *write_through;
+ int buffering, isatty;
+ const int buffered_stdio = config->buffered_stdio;
+
+ if (!is_valid_fd(fd))
+ Py_RETURN_NONE;
+
+ /* stdin is always opened in buffered mode, first because it shouldn't
+ make a difference in common use cases, second because TextIOWrapper
+ depends on the presence of a read1() method which only exists on
+ buffered streams.
+ */
+ if (!buffered_stdio && write_mode)
+ buffering = 0;
+ else
+ buffering = -1;
+ if (write_mode)
+ mode = "wb";
+ else
+ mode = "rb";
+ buf = _PyObject_CallMethod(io, &_Py_ID(open), "isiOOOO",
+ fd, mode, buffering,
+ Py_None, Py_None, /* encoding, errors */
+ Py_None, Py_False); /* newline, closefd */
+ if (buf == NULL)
+ goto error;
+
+ if (buffering) {
+ raw = PyObject_GetAttr(buf, &_Py_ID(raw));
+ if (raw == NULL)
+ goto error;
+ }
+ else {
+ raw = Py_NewRef(buf);
+ }
+
+#ifdef HAVE_WINDOWS_CONSOLE_IO
+ /* Windows console IO is always UTF-8 encoded */
+ PyTypeObject *winconsoleio_type = (PyTypeObject *)_PyImport_GetModuleAttr(
+ &_Py_ID(_io), &_Py_ID(_WindowsConsoleIO));
+ if (winconsoleio_type == NULL) {
+ goto error;
+ }
+ int is_subclass = PyObject_TypeCheck(raw, winconsoleio_type);
+ Py_DECREF(winconsoleio_type);
+ if (is_subclass) {
+ encoding = L"utf-8";
+ }
+#endif
+
+ text = PyUnicode_FromString(name);
+ if (text == NULL || PyObject_SetAttr(raw, &_Py_ID(name), text) < 0)
+ goto error;
+ res = PyObject_CallMethodNoArgs(raw, &_Py_ID(isatty));
+ if (res == NULL)
+ goto error;
+ isatty = PyObject_IsTrue(res);
+ Py_DECREF(res);
+ if (isatty == -1)
+ goto error;
+ if (!buffered_stdio)
+ write_through = Py_True;
+ else
+ write_through = Py_False;
+ if (buffered_stdio && (isatty || fd == fileno(stderr)))
+ line_buffering = Py_True;
+ else
+ line_buffering = Py_False;
+
+ Py_CLEAR(raw);
+ Py_CLEAR(text);
+
+#ifdef MS_WINDOWS
+ /* sys.stdin: enable universal newline mode, translate "\r\n" and "\r"
+ newlines to "\n".
+ sys.stdout and sys.stderr: translate "\n" to "\r\n". */
+ newline = NULL;
+#else
+ /* sys.stdin: split lines at "\n".
+ sys.stdout and sys.stderr: don't translate newlines (use "\n"). */
+ newline = "\n";
+#endif
+
+ PyObject *encoding_str = PyUnicode_FromWideChar(encoding, -1);
+ if (encoding_str == NULL) {
+ Py_CLEAR(buf);
+ goto error;
+ }
+
+ PyObject *errors_str = PyUnicode_FromWideChar(errors, -1);
+ if (errors_str == NULL) {
+ Py_CLEAR(buf);
+ Py_CLEAR(encoding_str);
+ goto error;
+ }
+
+ stream = _PyObject_CallMethod(io, &_Py_ID(TextIOWrapper), "OOOsOO",
+ buf, encoding_str, errors_str,
+ newline, line_buffering, write_through);
+ Py_CLEAR(buf);
+ Py_CLEAR(encoding_str);
+ Py_CLEAR(errors_str);
+ if (stream == NULL)
+ goto error;
+
+ if (write_mode)
+ mode = "w";
+ else
+ mode = "r";
+ text = PyUnicode_FromString(mode);
+ if (!text || PyObject_SetAttr(stream, &_Py_ID(mode), text) < 0)
+ goto error;
+ Py_CLEAR(text);
+ return stream;
+
+error:
+ Py_XDECREF(buf);
+ Py_XDECREF(stream);
+ Py_XDECREF(text);
+ Py_XDECREF(raw);
+
+ if (PyErr_ExceptionMatches(PyExc_OSError) && !is_valid_fd(fd)) {
+ /* Issue #24891: the file descriptor was closed after the first
+ is_valid_fd() check was called. Ignore the OSError and set the
+ stream to None. */
+ PyErr_Clear();
+ Py_RETURN_NONE;
+ }
+ return NULL;
+}
+
+/* Set builtins.open to io.open */
+static PyStatus
+init_set_builtins_open(void)
+{
+ PyObject *wrapper;
+ PyObject *bimod = NULL;
+ PyStatus res = _PyStatus_OK();
+
+ if (!(bimod = PyImport_ImportModule("builtins"))) {
+ goto error;
+ }
+
+ if (!(wrapper = _PyImport_GetModuleAttrString("io", "open"))) {
+ goto error;
+ }
+
+ /* Set builtins.open */
+ if (PyObject_SetAttrString(bimod, "open", wrapper) == -1) {
+ Py_DECREF(wrapper);
+ goto error;
+ }
+ Py_DECREF(wrapper);
+ goto done;
+
+error:
+ res = _PyStatus_ERR("can't initialize io.open");
+
+done:
+ Py_XDECREF(bimod);
+ return res;
+}
+
+
+/* Create sys.stdin, sys.stdout and sys.stderr */
+static PyStatus
+init_sys_streams(PyThreadState *tstate)
+{
+ PyObject *iomod = NULL;
+ PyObject *std = NULL;
+ int fd;
+ PyObject * encoding_attr;
+ PyStatus res = _PyStatus_OK();
+ const PyConfig *config = _PyInterpreterState_GetConfig(tstate->interp);
+
+ /* Check that stdin is not a directory
+ Using shell redirection, you can redirect stdin to a directory,
+ crashing the Python interpreter. Catch this common mistake here
+ and output a useful error message. Note that under MS Windows,
+ the shell already prevents that. */
+#ifndef MS_WINDOWS
+ struct _Py_stat_struct sb;
+ if (_Py_fstat_noraise(fileno(stdin), &sb) == 0 &&
+ S_ISDIR(sb.st_mode)) {
+ return _PyStatus_ERR("<stdin> is a directory, cannot continue");
+ }
+#endif
+
+ if (!(iomod = PyImport_ImportModule("io"))) {
+ goto error;
+ }
+
+ /* Set sys.stdin */
+ fd = fileno(stdin);
+ /* Under some conditions stdin, stdout and stderr may not be connected
+ * and fileno() may point to an invalid file descriptor. For example
+ * GUI apps don't have valid standard streams by default.
+ */
+ std = create_stdio(config, iomod, fd, 0, "<stdin>",
+ config->stdio_encoding,
+ config->stdio_errors);
+ if (std == NULL)
+ goto error;
+ PySys_SetObject("__stdin__", std);
+ _PySys_SetAttr(&_Py_ID(stdin), std);
+ Py_DECREF(std);
+
+ /* Set sys.stdout */
+ fd = fileno(stdout);
+ std = create_stdio(config, iomod, fd, 1, "<stdout>",
+ config->stdio_encoding,
+ config->stdio_errors);
+ if (std == NULL)
+ goto error;
+ PySys_SetObject("__stdout__", std);
+ _PySys_SetAttr(&_Py_ID(stdout), std);
+ Py_DECREF(std);
+
+#if 1 /* Disable this if you have trouble debugging bootstrap stuff */
+ /* Set sys.stderr, replaces the preliminary stderr */
+ fd = fileno(stderr);
+ std = create_stdio(config, iomod, fd, 1, "<stderr>",
+ config->stdio_encoding,
+ L"backslashreplace");
+ if (std == NULL)
+ goto error;
+
+ /* Same as hack above, pre-import stderr's codec to avoid recursion
+ when import.c tries to write to stderr in verbose mode. */
+ encoding_attr = PyObject_GetAttrString(std, "encoding");
+ if (encoding_attr != NULL) {
+ const char *std_encoding = PyUnicode_AsUTF8(encoding_attr);
+ if (std_encoding != NULL) {
+ PyObject *codec_info = _PyCodec_Lookup(std_encoding);
+ Py_XDECREF(codec_info);
+ }
+ Py_DECREF(encoding_attr);
+ }
+ _PyErr_Clear(tstate); /* Not a fatal error if codec isn't available */
+
+ if (PySys_SetObject("__stderr__", std) < 0) {
+ Py_DECREF(std);
+ goto error;
+ }
+ if (_PySys_SetAttr(&_Py_ID(stderr), std) < 0) {
+ Py_DECREF(std);
+ goto error;
+ }
+ Py_DECREF(std);
+#endif
+
+ goto done;
+
+error:
+ res = _PyStatus_ERR("can't initialize sys standard streams");
+
+done:
+ _Py_ClearStandardStreamEncoding();
+ Py_XDECREF(iomod);
+ return res;
+}
+
+
+static void
+_Py_FatalError_DumpTracebacks(int fd, PyInterpreterState *interp,
+ PyThreadState *tstate)
+{
+ PUTS(fd, "\n");
+
+ /* display the current Python stack */
+ _Py_DumpTracebackThreads(fd, interp, tstate);
+}
+
+/* Print the current exception (if an exception is set) with its traceback,
+ or display the current Python stack.
+
+ Don't call PyErr_PrintEx() and the except hook, because Py_FatalError() is
+ called on catastrophic cases.
+
+ Return 1 if the traceback was displayed, 0 otherwise. */
+
+static int
+_Py_FatalError_PrintExc(PyThreadState *tstate)
+{
+ PyObject *exc = _PyErr_GetRaisedException(tstate);
+ if (exc == NULL) {
+ /* No current exception */
+ return 0;
+ }
+
+ PyObject *ferr = _PySys_GetAttr(tstate, &_Py_ID(stderr));
+ if (ferr == NULL || ferr == Py_None) {
+ /* sys.stderr is not set yet or set to None,
+ no need to try to display the exception */
+ Py_DECREF(exc);
+ return 0;
+ }
+
+ PyErr_DisplayException(exc);
+
+ PyObject *tb = PyException_GetTraceback(exc);
+ int has_tb = (tb != NULL) && (tb != Py_None);
+ Py_XDECREF(tb);
+ Py_DECREF(exc);
+
+ /* sys.stderr may be buffered: call sys.stderr.flush() */
+ PyObject *res = PyObject_CallMethodNoArgs(ferr, &_Py_ID(flush));
+ if (res == NULL) {
+ _PyErr_Clear(tstate);
+ }
+ else {
+ Py_DECREF(res);
+ }
+
+ return has_tb;
+}
+
+/* Print fatal error message and abort */
+
+#ifdef MS_WINDOWS
+static void
+fatal_output_debug(const char *msg)
+{
+ /* buffer of 256 bytes allocated on the stack */
+ WCHAR buffer[256 / sizeof(WCHAR)];
+ size_t buflen = Py_ARRAY_LENGTH(buffer) - 1;
+ size_t msglen;
+
+ OutputDebugStringW(L"Fatal Python error: ");
+
+ msglen = strlen(msg);
+ while (msglen) {
+ size_t i;
+
+ if (buflen > msglen) {
+ buflen = msglen;
+ }
+
+ /* Convert the message to wchar_t. This uses a simple one-to-one
+ conversion, assuming that the this error message actually uses
+ ASCII only. If this ceases to be true, we will have to convert. */
+ for (i=0; i < buflen; ++i) {
+ buffer[i] = msg[i];
+ }
+ buffer[i] = L'\0';
+ OutputDebugStringW(buffer);
+
+ msg += buflen;
+ msglen -= buflen;
+ }
+ OutputDebugStringW(L"\n");
+}
+#endif
+
+
+static void
+fatal_error_dump_runtime(int fd, _PyRuntimeState *runtime)
+{
+ PUTS(fd, "Python runtime state: ");
+ PyThreadState *finalizing = _PyRuntimeState_GetFinalizing(runtime);
+ if (finalizing) {
+ PUTS(fd, "finalizing (tstate=0x");
+ _Py_DumpHexadecimal(fd, (uintptr_t)finalizing, sizeof(finalizing) * 2);
+ PUTS(fd, ")");
+ }
+ else if (runtime->initialized) {
+ PUTS(fd, "initialized");
+ }
+ else if (runtime->core_initialized) {
+ PUTS(fd, "core initialized");
+ }
+ else if (runtime->preinitialized) {
+ PUTS(fd, "preinitialized");
+ }
+ else if (runtime->preinitializing) {
+ PUTS(fd, "preinitializing");
+ }
+ else {
+ PUTS(fd, "unknown");
+ }
+ PUTS(fd, "\n");
+}
+
+
+static inline void _Py_NO_RETURN
+fatal_error_exit(int status)
+{
+ if (status < 0) {
+#if defined(MS_WINDOWS) && defined(_DEBUG)
+ DebugBreak();
+#endif
+ abort();
+ }
+ else {
+ exit(status);
+ }
+}
+
+
+// Dump the list of extension modules of sys.modules, excluding stdlib modules
+// (sys.stdlib_module_names), into fd file descriptor.
+//
+// This function is called by a signal handler in faulthandler: avoid memory
+// allocations and keep the implementation simple. For example, the list is not
+// sorted on purpose.
+void
+_Py_DumpExtensionModules(int fd, PyInterpreterState *interp)
+{
+ if (interp == NULL) {
+ return;
+ }
+ PyObject *modules = _PyImport_GetModules(interp);
+ if (modules == NULL || !PyDict_Check(modules)) {
+ return;
+ }
+
+ Py_ssize_t pos;
+ PyObject *key, *value;
+
+ // Avoid PyDict_GetItemString() which calls PyUnicode_FromString(),
+ // memory cannot be allocated on the heap in a signal handler.
+ // Iterate on the dict instead.
+ PyObject *stdlib_module_names = NULL;
+ if (interp->sysdict != NULL) {
+ pos = 0;
+ while (PyDict_Next(interp->sysdict, &pos, &key, &value)) {
+ if (PyUnicode_Check(key)
+ && PyUnicode_CompareWithASCIIString(key, "stdlib_module_names") == 0) {
+ stdlib_module_names = value;
+ break;
+ }
+ }
+ }
+ // If we failed to get sys.stdlib_module_names or it's not a frozenset,
+ // don't exclude stdlib modules.
+ if (stdlib_module_names != NULL && !PyFrozenSet_Check(stdlib_module_names)) {
+ stdlib_module_names = NULL;
+ }
+
+ // List extensions
+ int header = 1;
+ Py_ssize_t count = 0;
+ pos = 0;
+ while (PyDict_Next(modules, &pos, &key, &value)) {
+ if (!PyUnicode_Check(key)) {
+ continue;
+ }
+ if (!_PyModule_IsExtension(value)) {
+ continue;
+ }
+ // Use the module name from the sys.modules key,
+ // don't attempt to get the module object name.
+ if (stdlib_module_names != NULL) {
+ int is_stdlib_ext = 0;
+
+ Py_ssize_t i = 0;
+ PyObject *item;
+ Py_hash_t hash;
+ while (_PySet_NextEntry(stdlib_module_names, &i, &item, &hash)) {
+ if (PyUnicode_Check(item)
+ && PyUnicode_Compare(key, item) == 0)
+ {
+ is_stdlib_ext = 1;
+ break;
+ }
+ }
+ if (is_stdlib_ext) {
+ // Ignore stdlib extension
+ continue;
+ }
+ }
+
+ if (header) {
+ PUTS(fd, "\nExtension modules: ");
+ header = 0;
+ }
+ else {
+ PUTS(fd, ", ");
+ }
+
+ _Py_DumpASCII(fd, key);
+ count++;
+ }
+
+ if (count) {
+ PUTS(fd, " (total: ");
+ _Py_DumpDecimal(fd, count);
+ PUTS(fd, ")");
+ PUTS(fd, "\n");
+ }
+}
+
+
+static void _Py_NO_RETURN
+fatal_error(int fd, int header, const char *prefix, const char *msg,
+ int status)
+{
+ static int reentrant = 0;
+
+ if (reentrant) {
+ /* Py_FatalError() caused a second fatal error.
+ Example: flush_std_files() raises a recursion error. */
+ fatal_error_exit(status);
+ }
+ reentrant = 1;
+
+ if (header) {
+ PUTS(fd, "Fatal Python error: ");
+ if (prefix) {
+ PUTS(fd, prefix);
+ PUTS(fd, ": ");
+ }
+ if (msg) {
+ PUTS(fd, msg);
+ }
+ else {
+ PUTS(fd, "<message not set>");
+ }
+ PUTS(fd, "\n");
+ }
+
+ _PyRuntimeState *runtime = &_PyRuntime;
+ fatal_error_dump_runtime(fd, runtime);
+
+ /* Check if the current thread has a Python thread state
+ and holds the GIL.
+
+ tss_tstate is NULL if Py_FatalError() is called from a C thread which
+ has no Python thread state.
+
+ tss_tstate != tstate if the current Python thread does not hold the GIL.
+ */
+ PyThreadState *tstate = _PyThreadState_GET();
+ PyInterpreterState *interp = NULL;
+ PyThreadState *tss_tstate = PyGILState_GetThisThreadState();
+ if (tstate != NULL) {
+ interp = tstate->interp;
+ }
+ else if (tss_tstate != NULL) {
+ interp = tss_tstate->interp;
+ }
+ int has_tstate_and_gil = (tss_tstate != NULL && tss_tstate == tstate);
+
+ if (has_tstate_and_gil) {
+ /* If an exception is set, print the exception with its traceback */
+ if (!_Py_FatalError_PrintExc(tss_tstate)) {
+ /* No exception is set, or an exception is set without traceback */
+ _Py_FatalError_DumpTracebacks(fd, interp, tss_tstate);
+ }
+ }
+ else {
+ _Py_FatalError_DumpTracebacks(fd, interp, tss_tstate);
+ }
+
+ _Py_DumpExtensionModules(fd, interp);
+
+ /* The main purpose of faulthandler is to display the traceback.
+ This function already did its best to display a traceback.
+ Disable faulthandler to prevent writing a second traceback
+ on abort(). */
+ _PyFaulthandler_Fini();
+
+ /* Check if the current Python thread hold the GIL */
+ if (has_tstate_and_gil) {
+ /* Flush sys.stdout and sys.stderr */
+ flush_std_files();
+ }
+
+#ifdef MS_WINDOWS
+ fatal_output_debug(msg);
+#endif /* MS_WINDOWS */
+
+ fatal_error_exit(status);
+}
+
+
+#undef Py_FatalError
+
+void _Py_NO_RETURN
+Py_FatalError(const char *msg)
+{
+ fatal_error(fileno(stderr), 1, NULL, msg, -1);
+}
+
+
+void _Py_NO_RETURN
+_Py_FatalErrorFunc(const char *func, const char *msg)
+{
+ fatal_error(fileno(stderr), 1, func, msg, -1);
+}
+
+
+void _Py_NO_RETURN
+_Py_FatalErrorFormat(const char *func, const char *format, ...)
+{
+ static int reentrant = 0;
+ if (reentrant) {
+ /* _Py_FatalErrorFormat() caused a second fatal error */
+ fatal_error_exit(-1);
+ }
+ reentrant = 1;
+
+ FILE *stream = stderr;
+ const int fd = fileno(stream);
+ PUTS(fd, "Fatal Python error: ");
+ if (func) {
+ PUTS(fd, func);
+ PUTS(fd, ": ");
+ }
+
+ va_list vargs;
+ va_start(vargs, format);
+ vfprintf(stream, format, vargs);
+ va_end(vargs);
+
+ fputs("\n", stream);
+ fflush(stream);
+
+ fatal_error(fd, 0, NULL, NULL, -1);
+}
+
+
+void _Py_NO_RETURN
+_Py_FatalRefcountErrorFunc(const char *func, const char *msg)
+{
+ _Py_FatalErrorFormat(func,
+ "%s: bug likely caused by a refcount error "
+ "in a C extension",
+ msg);
+}
+
+
+void _Py_NO_RETURN
+Py_ExitStatusException(PyStatus status)
+{
+ if (_PyStatus_IS_EXIT(status)) {
+ exit(status.exitcode);
+ }
+ else if (_PyStatus_IS_ERROR(status)) {
+ fatal_error(fileno(stderr), 1, status.func, status.err_msg, 1);
+ }
+ else {
+ Py_FatalError("Py_ExitStatusException() must not be called on success");
+ }
+}
+
+
+/* Wait until threading._shutdown completes, provided
+ the threading module was imported in the first place.
+ The shutdown routine will wait until all non-daemon
+ "threading" threads have completed. */
+static void
+wait_for_thread_shutdown(PyThreadState *tstate)
+{
+ PyObject *result;
+ PyObject *threading = PyImport_GetModule(&_Py_ID(threading));
+ if (threading == NULL) {
+ if (_PyErr_Occurred(tstate)) {
+ PyErr_WriteUnraisable(NULL);
+ }
+ /* else: threading not imported */
+ return;
+ }
+ result = PyObject_CallMethodNoArgs(threading, &_Py_ID(_shutdown));
+ if (result == NULL) {
+ PyErr_WriteUnraisable(threading);
+ }
+ else {
+ Py_DECREF(result);
+ }
+ Py_DECREF(threading);
+}
+
+int Py_AtExit(void (*func)(void))
+{
+ struct _atexit_runtime_state *state = &_PyRuntime.atexit;
+ PyThread_acquire_lock(state->mutex, WAIT_LOCK);
+ if (state->ncallbacks >= NEXITFUNCS) {
+ PyThread_release_lock(state->mutex);
+ return -1;
+ }
+ state->callbacks[state->ncallbacks++] = func;
+ PyThread_release_lock(state->mutex);
+ return 0;
+}
+
+static void
+call_ll_exitfuncs(_PyRuntimeState *runtime)
+{
+ atexit_callbackfunc exitfunc;
+ struct _atexit_runtime_state *state = &runtime->atexit;
+
+ PyThread_acquire_lock(state->mutex, WAIT_LOCK);
+ while (state->ncallbacks > 0) {
+ /* pop last function from the list */
+ state->ncallbacks--;
+ exitfunc = state->callbacks[state->ncallbacks];
+ state->callbacks[state->ncallbacks] = NULL;
+
+ PyThread_release_lock(state->mutex);
+ exitfunc();
+ PyThread_acquire_lock(state->mutex, WAIT_LOCK);
+ }
+ PyThread_release_lock(state->mutex);
+
+ fflush(stdout);
+ fflush(stderr);
+}
+
+void _Py_NO_RETURN
+Py_Exit(int sts)
+{
+ if (Py_FinalizeEx() < 0) {
+ sts = 120;
+ }
+
+ exit(sts);
+}
+
+
+/*
+ * The file descriptor fd is considered ``interactive'' if either
+ * a) isatty(fd) is TRUE, or
+ * b) the -i flag was given, and the filename associated with
+ * the descriptor is NULL or "<stdin>" or "???".
+ */
+int
+Py_FdIsInteractive(FILE *fp, const char *filename)
+{
+ if (isatty(fileno(fp))) {
+ return 1;
+ }
+ if (!_Py_GetConfig()->interactive) {
+ return 0;
+ }
+ return ((filename == NULL)
+ || (strcmp(filename, "<stdin>") == 0)
+ || (strcmp(filename, "???") == 0));
+}
+
+
+int
+_Py_FdIsInteractive(FILE *fp, PyObject *filename)
+{
+ if (isatty(fileno(fp))) {
+ return 1;
+ }
+ if (!_Py_GetConfig()->interactive) {
+ return 0;
+ }
+ return ((filename == NULL)
+ || (PyUnicode_CompareWithASCIIString(filename, "<stdin>") == 0)
+ || (PyUnicode_CompareWithASCIIString(filename, "???") == 0));
+}
+
+
+/* Wrappers around sigaction() or signal(). */
+
+PyOS_sighandler_t
+PyOS_getsig(int sig)
+{
+#ifdef HAVE_SIGACTION
+ struct sigaction context;
+ if (sigaction(sig, NULL, &context) == -1)
+ return SIG_ERR;
+ return context.sa_handler;
+#else
+ PyOS_sighandler_t handler;
+/* Special signal handling for the secure CRT in Visual Studio 2005 */
+#if defined(_MSC_VER) && _MSC_VER >= 1400
+ switch (sig) {
+ /* Only these signals are valid */
+ case SIGINT:
+ case SIGILL:
+ case SIGFPE:
+ case SIGSEGV:
+ case SIGTERM:
+ case SIGBREAK:
+ case SIGABRT:
+ break;
+ /* Don't call signal() with other values or it will assert */
+ default:
+ return SIG_ERR;
+ }
+#endif /* _MSC_VER && _MSC_VER >= 1400 */
+ handler = signal(sig, SIG_IGN);
+ if (handler != SIG_ERR)
+ signal(sig, handler);
+ return handler;
+#endif
+}
+
+/*
+ * All of the code in this function must only use async-signal-safe functions,
+ * listed at `man 7 signal` or
+ * http://www.opengroup.org/onlinepubs/009695399/functions/xsh_chap02_04.html.
+ */
+PyOS_sighandler_t
+PyOS_setsig(int sig, PyOS_sighandler_t handler)
+{
+#ifdef HAVE_SIGACTION
+ /* Some code in Modules/signalmodule.c depends on sigaction() being
+ * used here if HAVE_SIGACTION is defined. Fix that if this code
+ * changes to invalidate that assumption.
+ */
+ struct sigaction context, ocontext;
+ context.sa_handler = handler;
+ sigemptyset(&context.sa_mask);
+ /* Using SA_ONSTACK is friendlier to other C/C++/Golang-VM code that
+ * extension module or embedding code may use where tiny thread stacks
+ * are used. https://bugs.python.org/issue43390 */
+ context.sa_flags = SA_ONSTACK;
+ if (sigaction(sig, &context, &ocontext) == -1)
+ return SIG_ERR;
+ return ocontext.sa_handler;
+#else
+ PyOS_sighandler_t oldhandler;
+ oldhandler = signal(sig, handler);
+#ifdef HAVE_SIGINTERRUPT
+ siginterrupt(sig, 1);
+#endif
+ return oldhandler;
+#endif
+}
+
+#ifdef __cplusplus
+}
+#endif
diff --git a/contrib/tools/python3/Python/pymath.c b/contrib/tools/python3/Python/pymath.c
new file mode 100644
index 00000000000..e7d0161ff94
--- /dev/null
+++ b/contrib/tools/python3/Python/pymath.c
@@ -0,0 +1,19 @@
+#include "Python.h"
+
+
+#ifdef HAVE_GCC_ASM_FOR_X87
+// Inline assembly for getting and setting the 387 FPU control word on
+// GCC/x86.
+#ifdef _Py_MEMORY_SANITIZER
+__attribute__((no_sanitize_memory))
+#endif
+unsigned short _Py_get_387controlword(void) {
+ unsigned short cw;
+ __asm__ __volatile__ ("fnstcw %0" : "=m" (cw));
+ return cw;
+}
+
+void _Py_set_387controlword(unsigned short cw) {
+ __asm__ __volatile__ ("fldcw %0" : : "m" (cw));
+}
+#endif // HAVE_GCC_ASM_FOR_X87
diff --git a/contrib/tools/python3/Python/pystate.c b/contrib/tools/python3/Python/pystate.c
new file mode 100644
index 00000000000..0ebbdfbfb41
--- /dev/null
+++ b/contrib/tools/python3/Python/pystate.c
@@ -0,0 +1,3068 @@
+
+/* Thread and interpreter state structures and their interfaces */
+
+#include "Python.h"
+#include "pycore_ceval.h"
+#include "pycore_code.h" // stats
+#include "pycore_dtoa.h" // _dtoa_state_INIT()
+#include "pycore_frame.h"
+#include "pycore_initconfig.h"
+#include "pycore_object.h" // _PyType_InitCache()
+#include "pycore_pyerrors.h"
+#include "pycore_pylifecycle.h"
+#include "pycore_pymem.h" // _PyMem_SetDefaultAllocator()
+#include "pycore_pystate.h"
+#include "pycore_runtime_init.h" // _PyRuntimeState_INIT
+#include "pycore_sysmodule.h"
+
+/* --------------------------------------------------------------------------
+CAUTION
+
+Always use PyMem_RawMalloc() and PyMem_RawFree() directly in this file. A
+number of these functions are advertised as safe to call when the GIL isn't
+held, and in a debug build Python redirects (e.g.) PyMem_NEW (etc) to Python's
+debugging obmalloc functions. Those aren't thread-safe (they rely on the GIL
+to avoid the expense of doing their own locking).
+-------------------------------------------------------------------------- */
+
+#ifdef HAVE_DLOPEN
+#ifdef HAVE_DLFCN_H
+#include <dlfcn.h>
+#endif
+#if !HAVE_DECL_RTLD_LAZY
+#define RTLD_LAZY 1
+#endif
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/****************************************/
+/* helpers for the current thread state */
+/****************************************/
+
+// API for the current thread state is further down.
+
+/* "current" means one of:
+ - bound to the current OS thread
+ - holds the GIL
+ */
+
+//-------------------------------------------------
+// a highly efficient lookup for the current thread
+//-------------------------------------------------
+
+/*
+ The stored thread state is set by PyThreadState_Swap().
+
+ For each of these functions, the GIL must be held by the current thread.
+ */
+
+
+#ifdef HAVE_THREAD_LOCAL
+_Py_thread_local PyThreadState *_Py_tss_tstate = NULL;
+#endif
+
+static inline PyThreadState *
+current_fast_get(_PyRuntimeState *Py_UNUSED(runtime))
+{
+#ifdef HAVE_THREAD_LOCAL
+ return _Py_tss_tstate;
+#else
+ // XXX Fall back to the PyThread_tss_*() API.
+# error "no supported thread-local variable storage classifier"
+#endif
+}
+
+static inline void
+current_fast_set(_PyRuntimeState *Py_UNUSED(runtime), PyThreadState *tstate)
+{
+ assert(tstate != NULL);
+#ifdef HAVE_THREAD_LOCAL
+ _Py_tss_tstate = tstate;
+#else
+ // XXX Fall back to the PyThread_tss_*() API.
+# error "no supported thread-local variable storage classifier"
+#endif
+}
+
+static inline void
+current_fast_clear(_PyRuntimeState *Py_UNUSED(runtime))
+{
+#ifdef HAVE_THREAD_LOCAL
+ _Py_tss_tstate = NULL;
+#else
+ // XXX Fall back to the PyThread_tss_*() API.
+# error "no supported thread-local variable storage classifier"
+#endif
+}
+
+#define tstate_verify_not_active(tstate) \
+ if (tstate == current_fast_get((tstate)->interp->runtime)) { \
+ _Py_FatalErrorFormat(__func__, "tstate %p is still current", tstate); \
+ }
+
+PyThreadState *
+_PyThreadState_GetCurrent(void)
+{
+ return current_fast_get(&_PyRuntime);
+}
+
+
+//------------------------------------------------
+// the thread state bound to the current OS thread
+//------------------------------------------------
+
+static inline int
+tstate_tss_initialized(Py_tss_t *key)
+{
+ return PyThread_tss_is_created(key);
+}
+
+static inline int
+tstate_tss_init(Py_tss_t *key)
+{
+ assert(!tstate_tss_initialized(key));
+ return PyThread_tss_create(key);
+}
+
+static inline void
+tstate_tss_fini(Py_tss_t *key)
+{
+ assert(tstate_tss_initialized(key));
+ PyThread_tss_delete(key);
+}
+
+static inline PyThreadState *
+tstate_tss_get(Py_tss_t *key)
+{
+ assert(tstate_tss_initialized(key));
+ return (PyThreadState *)PyThread_tss_get(key);
+}
+
+static inline int
+tstate_tss_set(Py_tss_t *key, PyThreadState *tstate)
+{
+ assert(tstate != NULL);
+ assert(tstate_tss_initialized(key));
+ return PyThread_tss_set(key, (void *)tstate);
+}
+
+static inline int
+tstate_tss_clear(Py_tss_t *key)
+{
+ assert(tstate_tss_initialized(key));
+ return PyThread_tss_set(key, (void *)NULL);
+}
+
+#ifdef HAVE_FORK
+/* Reset the TSS key - called by PyOS_AfterFork_Child().
+ * This should not be necessary, but some - buggy - pthread implementations
+ * don't reset TSS upon fork(), see issue #10517.
+ */
+static PyStatus
+tstate_tss_reinit(Py_tss_t *key)
+{
+ if (!tstate_tss_initialized(key)) {
+ return _PyStatus_OK();
+ }
+ PyThreadState *tstate = tstate_tss_get(key);
+
+ tstate_tss_fini(key);
+ if (tstate_tss_init(key) != 0) {
+ return _PyStatus_NO_MEMORY();
+ }
+
+ /* If the thread had an associated auto thread state, reassociate it with
+ * the new key. */
+ if (tstate && tstate_tss_set(key, tstate) != 0) {
+ return _PyStatus_ERR("failed to re-set autoTSSkey");
+ }
+ return _PyStatus_OK();
+}
+#endif
+
+
+/*
+ The stored thread state is set by bind_tstate() (AKA PyThreadState_Bind().
+
+ The GIL does no need to be held for these.
+ */
+
+#define gilstate_tss_initialized(runtime) \
+ tstate_tss_initialized(&(runtime)->autoTSSkey)
+#define gilstate_tss_init(runtime) \
+ tstate_tss_init(&(runtime)->autoTSSkey)
+#define gilstate_tss_fini(runtime) \
+ tstate_tss_fini(&(runtime)->autoTSSkey)
+#define gilstate_tss_get(runtime) \
+ tstate_tss_get(&(runtime)->autoTSSkey)
+#define _gilstate_tss_set(runtime, tstate) \
+ tstate_tss_set(&(runtime)->autoTSSkey, tstate)
+#define _gilstate_tss_clear(runtime) \
+ tstate_tss_clear(&(runtime)->autoTSSkey)
+#define gilstate_tss_reinit(runtime) \
+ tstate_tss_reinit(&(runtime)->autoTSSkey)
+
+static inline void
+gilstate_tss_set(_PyRuntimeState *runtime, PyThreadState *tstate)
+{
+ assert(tstate != NULL && tstate->interp->runtime == runtime);
+ if (_gilstate_tss_set(runtime, tstate) != 0) {
+ Py_FatalError("failed to set current tstate (TSS)");
+ }
+}
+
+static inline void
+gilstate_tss_clear(_PyRuntimeState *runtime)
+{
+ if (_gilstate_tss_clear(runtime) != 0) {
+ Py_FatalError("failed to clear current tstate (TSS)");
+ }
+}
+
+
+#ifndef NDEBUG
+static inline int tstate_is_alive(PyThreadState *tstate);
+
+static inline int
+tstate_is_bound(PyThreadState *tstate)
+{
+ return tstate->_status.bound && !tstate->_status.unbound;
+}
+#endif // !NDEBUG
+
+static void bind_gilstate_tstate(PyThreadState *);
+static void unbind_gilstate_tstate(PyThreadState *);
+
+static void
+bind_tstate(PyThreadState *tstate)
+{
+ assert(tstate != NULL);
+ assert(tstate_is_alive(tstate) && !tstate->_status.bound);
+ assert(!tstate->_status.unbound); // just in case
+ assert(!tstate->_status.bound_gilstate);
+ assert(tstate != gilstate_tss_get(tstate->interp->runtime));
+ assert(!tstate->_status.active);
+ assert(tstate->thread_id == 0);
+ assert(tstate->native_thread_id == 0);
+
+ // Currently we don't necessarily store the thread state
+ // in thread-local storage (e.g. per-interpreter).
+
+ tstate->thread_id = PyThread_get_thread_ident();
+#ifdef PY_HAVE_THREAD_NATIVE_ID
+ tstate->native_thread_id = PyThread_get_thread_native_id();
+#endif
+
+ tstate->_status.bound = 1;
+}
+
+static void
+unbind_tstate(PyThreadState *tstate)
+{
+ assert(tstate != NULL);
+ assert(tstate_is_bound(tstate));
+#ifndef HAVE_PTHREAD_STUBS
+ assert(tstate->thread_id > 0);
+#endif
+#ifdef PY_HAVE_THREAD_NATIVE_ID
+ assert(tstate->native_thread_id > 0);
+#endif
+
+ // We leave thread_id and native_thread_id alone
+ // since they can be useful for debugging.
+ // Check the `_status` field to know if these values
+ // are still valid.
+
+ // We leave tstate->_status.bound set to 1
+ // to indicate it was previously bound.
+ tstate->_status.unbound = 1;
+}
+
+
+/* Stick the thread state for this thread in thread specific storage.
+
+ When a thread state is created for a thread by some mechanism
+ other than PyGILState_Ensure(), it's important that the GILState
+ machinery knows about it so it doesn't try to create another
+ thread state for the thread.
+ (This is a better fix for SF bug #1010677 than the first one attempted.)
+
+ The only situation where you can legitimately have more than one
+ thread state for an OS level thread is when there are multiple
+ interpreters.
+
+ Before 3.12, the PyGILState_*() APIs didn't work with multiple
+ interpreters (see bpo-10915 and bpo-15751), so this function used
+ to set TSS only once. Thus, the first thread state created for that
+ given OS level thread would "win", which seemed reasonable behaviour.
+*/
+
+static void
+bind_gilstate_tstate(PyThreadState *tstate)
+{
+ assert(tstate != NULL);
+ assert(tstate_is_alive(tstate));
+ assert(tstate_is_bound(tstate));
+ // XXX assert(!tstate->_status.active);
+ assert(!tstate->_status.bound_gilstate);
+
+ _PyRuntimeState *runtime = tstate->interp->runtime;
+ PyThreadState *tcur = gilstate_tss_get(runtime);
+ assert(tstate != tcur);
+
+ if (tcur != NULL) {
+ tcur->_status.bound_gilstate = 0;
+ }
+ gilstate_tss_set(runtime, tstate);
+ tstate->_status.bound_gilstate = 1;
+}
+
+static void
+unbind_gilstate_tstate(PyThreadState *tstate)
+{
+ assert(tstate != NULL);
+ // XXX assert(tstate_is_alive(tstate));
+ assert(tstate_is_bound(tstate));
+ // XXX assert(!tstate->_status.active);
+ assert(tstate->_status.bound_gilstate);
+ assert(tstate == gilstate_tss_get(tstate->interp->runtime));
+
+ gilstate_tss_clear(tstate->interp->runtime);
+ tstate->_status.bound_gilstate = 0;
+}
+
+
+//----------------------------------------------
+// the thread state that currently holds the GIL
+//----------------------------------------------
+
+/* This is not exported, as it is not reliable! It can only
+ ever be compared to the state for the *current* thread.
+ * If not equal, then it doesn't matter that the actual
+ value may change immediately after comparison, as it can't
+ possibly change to the current thread's state.
+ * If equal, then the current thread holds the lock, so the value can't
+ change until we yield the lock.
+*/
+static int
+holds_gil(PyThreadState *tstate)
+{
+ // XXX Fall back to tstate->interp->runtime->ceval.gil.last_holder
+ // (and tstate->interp->runtime->ceval.gil.locked).
+ assert(tstate != NULL);
+#ifndef NDEBUG
+ if (!tstate_is_alive(tstate)) {
+ return 0;
+ }
+#endif
+ _PyRuntimeState *runtime = tstate->interp->runtime;
+ /* Must be the tstate for this thread */
+ assert(tstate == gilstate_tss_get(runtime));
+ return tstate == current_fast_get(runtime);
+}
+
+
+/****************************/
+/* the global runtime state */
+/****************************/
+
+//----------
+// lifecycle
+//----------
+
+/* Suppress deprecation warning for PyBytesObject.ob_shash */
+_Py_COMP_DIAG_PUSH
+_Py_COMP_DIAG_IGNORE_DEPR_DECLS
+/* We use "initial" if the runtime gets re-used
+ (e.g. Py_Finalize() followed by Py_Initialize().
+ Note that we initialize "initial" relative to _PyRuntime,
+ to ensure pre-initialized pointers point to the active
+ runtime state (and not "initial"). */
+static const _PyRuntimeState initial = _PyRuntimeState_INIT(_PyRuntime);
+_Py_COMP_DIAG_POP
+
+#define NUMLOCKS 9
+#define LOCKS_INIT(runtime) \
+ { \
+ &(runtime)->interpreters.mutex, \
+ &(runtime)->xidregistry.mutex, \
+ &(runtime)->getargs.mutex, \
+ &(runtime)->unicode_state.ids.lock, \
+ &(runtime)->imports.extensions.mutex, \
+ &(runtime)->ceval.pending_mainthread.lock, \
+ &(runtime)->atexit.mutex, \
+ &(runtime)->audit_hooks.mutex, \
+ &(runtime)->allocators.mutex, \
+ }
+
+static int
+alloc_for_runtime(PyThread_type_lock locks[NUMLOCKS])
+{
+ /* Force default allocator, since _PyRuntimeState_Fini() must
+ use the same allocator than this function. */
+ PyMemAllocatorEx old_alloc;
+ _PyMem_SetDefaultAllocator(PYMEM_DOMAIN_RAW, &old_alloc);
+
+ for (int i = 0; i < NUMLOCKS; i++) {
+ PyThread_type_lock lock = PyThread_allocate_lock();
+ if (lock == NULL) {
+ for (int j = 0; j < i; j++) {
+ PyThread_free_lock(locks[j]);
+ locks[j] = NULL;
+ }
+ break;
+ }
+ locks[i] = lock;
+ }
+
+ PyMem_SetAllocator(PYMEM_DOMAIN_RAW, &old_alloc);
+ return 0;
+}
+
+static void
+init_runtime(_PyRuntimeState *runtime,
+ void *open_code_hook, void *open_code_userdata,
+ _Py_AuditHookEntry *audit_hook_head,
+ Py_ssize_t unicode_next_index,
+ PyThread_type_lock locks[NUMLOCKS])
+{
+ if (runtime->_initialized) {
+ Py_FatalError("runtime already initialized");
+ }
+ assert(!runtime->preinitializing &&
+ !runtime->preinitialized &&
+ !runtime->core_initialized &&
+ !runtime->initialized);
+
+ runtime->open_code_hook = open_code_hook;
+ runtime->open_code_userdata = open_code_userdata;
+ runtime->audit_hooks.head = audit_hook_head;
+
+ PyPreConfig_InitPythonConfig(&runtime->preconfig);
+
+ PyThread_type_lock *lockptrs[NUMLOCKS] = LOCKS_INIT(runtime);
+ for (int i = 0; i < NUMLOCKS; i++) {
+ assert(locks[i] != NULL);
+ *lockptrs[i] = locks[i];
+ }
+
+ // Set it to the ID of the main thread of the main interpreter.
+ runtime->main_thread = PyThread_get_thread_ident();
+
+ runtime->unicode_state.ids.next_index = unicode_next_index;
+
+ runtime->_initialized = 1;
+}
+
+PyStatus
+_PyRuntimeState_Init(_PyRuntimeState *runtime)
+{
+ /* We preserve the hook across init, because there is
+ currently no public API to set it between runtime
+ initialization and interpreter initialization. */
+ void *open_code_hook = runtime->open_code_hook;
+ void *open_code_userdata = runtime->open_code_userdata;
+ _Py_AuditHookEntry *audit_hook_head = runtime->audit_hooks.head;
+ // bpo-42882: Preserve next_index value if Py_Initialize()/Py_Finalize()
+ // is called multiple times.
+ Py_ssize_t unicode_next_index = runtime->unicode_state.ids.next_index;
+
+ PyThread_type_lock locks[NUMLOCKS];
+ if (alloc_for_runtime(locks) != 0) {
+ return _PyStatus_NO_MEMORY();
+ }
+
+ if (runtime->_initialized) {
+ // Py_Initialize() must be running again.
+ // Reset to _PyRuntimeState_INIT.
+ memcpy(runtime, &initial, sizeof(*runtime));
+ }
+
+ if (gilstate_tss_init(runtime) != 0) {
+ _PyRuntimeState_Fini(runtime);
+ return _PyStatus_NO_MEMORY();
+ }
+
+ if (PyThread_tss_create(&runtime->trashTSSkey) != 0) {
+ _PyRuntimeState_Fini(runtime);
+ return _PyStatus_NO_MEMORY();
+ }
+
+ init_runtime(runtime, open_code_hook, open_code_userdata, audit_hook_head,
+ unicode_next_index, locks);
+
+ return _PyStatus_OK();
+}
+
+static void _xidregistry_clear(struct _xidregistry *);
+
+void
+_PyRuntimeState_Fini(_PyRuntimeState *runtime)
+{
+#ifdef Py_REF_DEBUG
+ /* The count is cleared by _Py_FinalizeRefTotal(). */
+ assert(runtime->object_state.interpreter_leaks == 0);
+#endif
+
+ _xidregistry_clear(&runtime->xidregistry);
+
+ if (gilstate_tss_initialized(runtime)) {
+ gilstate_tss_fini(runtime);
+ }
+
+ if (PyThread_tss_is_created(&runtime->trashTSSkey)) {
+ PyThread_tss_delete(&runtime->trashTSSkey);
+ }
+
+ /* Force the allocator used by _PyRuntimeState_Init(). */
+ PyMemAllocatorEx old_alloc;
+ _PyMem_SetDefaultAllocator(PYMEM_DOMAIN_RAW, &old_alloc);
+#define FREE_LOCK(LOCK) \
+ if (LOCK != NULL) { \
+ PyThread_free_lock(LOCK); \
+ LOCK = NULL; \
+ }
+
+ PyThread_type_lock *lockptrs[NUMLOCKS] = LOCKS_INIT(runtime);
+ for (int i = 0; i < NUMLOCKS; i++) {
+ FREE_LOCK(*lockptrs[i]);
+ }
+
+#undef FREE_LOCK
+ if (runtime->sys_path_0 != NULL) {
+ PyMem_RawFree(runtime->sys_path_0);
+ runtime->sys_path_0 = NULL;
+ }
+ PyMem_SetAllocator(PYMEM_DOMAIN_RAW, &old_alloc);
+}
+
+#ifdef HAVE_FORK
+/* This function is called from PyOS_AfterFork_Child to ensure that
+ newly created child processes do not share locks with the parent. */
+PyStatus
+_PyRuntimeState_ReInitThreads(_PyRuntimeState *runtime)
+{
+ // This was initially set in _PyRuntimeState_Init().
+ runtime->main_thread = PyThread_get_thread_ident();
+
+ /* Force default allocator, since _PyRuntimeState_Fini() must
+ use the same allocator than this function. */
+ PyMemAllocatorEx old_alloc;
+ _PyMem_SetDefaultAllocator(PYMEM_DOMAIN_RAW, &old_alloc);
+
+ PyThread_type_lock *lockptrs[NUMLOCKS] = LOCKS_INIT(runtime);
+ int reinit_err = 0;
+ for (int i = 0; i < NUMLOCKS; i++) {
+ reinit_err += _PyThread_at_fork_reinit(lockptrs[i]);
+ }
+ /* PyOS_AfterFork_Child(), which calls this function, later calls
+ _PyInterpreterState_DeleteExceptMain(), so we only need to update
+ the main interpreter here. */
+ assert(runtime->interpreters.main != NULL);
+ runtime->interpreters.main->xidregistry.mutex = runtime->xidregistry.mutex;
+
+ PyMem_SetAllocator(PYMEM_DOMAIN_RAW, &old_alloc);
+
+ /* bpo-42540: id_mutex is freed by _PyInterpreterState_Delete, which does
+ * not force the default allocator. */
+ reinit_err += _PyThread_at_fork_reinit(&runtime->interpreters.main->id_mutex);
+
+ if (reinit_err < 0) {
+ return _PyStatus_ERR("Failed to reinitialize runtime locks");
+ }
+
+ PyStatus status = gilstate_tss_reinit(runtime);
+ if (_PyStatus_EXCEPTION(status)) {
+ return status;
+ }
+
+ if (PyThread_tss_is_created(&runtime->trashTSSkey)) {
+ PyThread_tss_delete(&runtime->trashTSSkey);
+ }
+ if (PyThread_tss_create(&runtime->trashTSSkey) != 0) {
+ return _PyStatus_NO_MEMORY();
+ }
+
+ return _PyStatus_OK();
+}
+#endif
+
+
+/*************************************/
+/* the per-interpreter runtime state */
+/*************************************/
+
+//----------
+// lifecycle
+//----------
+
+/* Calling this indicates that the runtime is ready to create interpreters. */
+
+PyStatus
+_PyInterpreterState_Enable(_PyRuntimeState *runtime)
+{
+ struct pyinterpreters *interpreters = &runtime->interpreters;
+ interpreters->next_id = 0;
+
+ /* Py_Finalize() calls _PyRuntimeState_Fini() which clears the mutex.
+ Create a new mutex if needed. */
+ if (interpreters->mutex == NULL) {
+ /* Force default allocator, since _PyRuntimeState_Fini() must
+ use the same allocator than this function. */
+ PyMemAllocatorEx old_alloc;
+ _PyMem_SetDefaultAllocator(PYMEM_DOMAIN_RAW, &old_alloc);
+
+ interpreters->mutex = PyThread_allocate_lock();
+
+ PyMem_SetAllocator(PYMEM_DOMAIN_RAW, &old_alloc);
+
+ if (interpreters->mutex == NULL) {
+ return _PyStatus_ERR("Can't initialize threads for interpreter");
+ }
+ }
+
+ return _PyStatus_OK();
+}
+
+
+static PyInterpreterState *
+alloc_interpreter(void)
+{
+ return PyMem_RawCalloc(1, sizeof(PyInterpreterState));
+}
+
+static void
+free_interpreter(PyInterpreterState *interp)
+{
+ // The main interpreter is statically allocated so
+ // should not be freed.
+ if (interp != &_PyRuntime._main_interpreter) {
+ PyMem_RawFree(interp);
+ }
+}
+
+/* Get the interpreter state to a minimal consistent state.
+ Further init happens in pylifecycle.c before it can be used.
+ All fields not initialized here are expected to be zeroed out,
+ e.g. by PyMem_RawCalloc() or memset(), or otherwise pre-initialized.
+ The runtime state is not manipulated. Instead it is assumed that
+ the interpreter is getting added to the runtime.
+
+ Note that the main interpreter was statically initialized as part
+ of the runtime and most state is already set properly. That leaves
+ a small number of fields to initialize dynamically, as well as some
+ that are initialized lazily.
+
+ For subinterpreters we memcpy() the main interpreter in
+ PyInterpreterState_New(), leaving it in the same mostly-initialized
+ state. The only difference is that the interpreter has some
+ self-referential state that is statically initializexd to the
+ main interpreter. We fix those fields here, in addition
+ to the other dynamically initialized fields.
+ */
+static void
+init_interpreter(PyInterpreterState *interp,
+ _PyRuntimeState *runtime, int64_t id,
+ PyInterpreterState *next,
+ PyThread_type_lock pending_lock)
+{
+ if (interp->_initialized) {
+ Py_FatalError("interpreter already initialized");
+ }
+
+ assert(runtime != NULL);
+ interp->runtime = runtime;
+
+ assert(id > 0 || (id == 0 && interp == runtime->interpreters.main));
+ interp->id = id;
+
+ assert(runtime->interpreters.head == interp);
+ assert(next != NULL || (interp == runtime->interpreters.main));
+ interp->next = next;
+
+ /* Initialize obmalloc, but only for subinterpreters,
+ since the main interpreter is initialized statically. */
+ if (interp != &runtime->_main_interpreter) {
+ poolp temp[OBMALLOC_USED_POOLS_SIZE] = \
+ _obmalloc_pools_INIT(interp->obmalloc.pools);
+ memcpy(&interp->obmalloc.pools.used, temp, sizeof(temp));
+ }
+ _PyObject_InitState(interp);
+
+ _PyEval_InitState(interp, pending_lock);
+ _PyGC_InitState(&interp->gc);
+ PyConfig_InitPythonConfig(&interp->config);
+ _PyType_InitCache(interp);
+ for (int i = 0; i < _PY_MONITORING_UNGROUPED_EVENTS; i++) {
+ interp->monitors.tools[i] = 0;
+ }
+ for (int t = 0; t < PY_MONITORING_TOOL_IDS; t++) {
+ for (int e = 0; e < _PY_MONITORING_EVENTS; e++) {
+ interp->monitoring_callables[t][e] = NULL;
+
+ }
+ }
+ interp->sys_profile_initialized = false;
+ interp->sys_trace_initialized = false;
+ if (interp != &runtime->_main_interpreter) {
+ /* Fix the self-referential, statically initialized fields. */
+ interp->dtoa = (struct _dtoa_state)_dtoa_state_INIT(interp);
+ }
+ interp->f_opcode_trace_set = false;
+
+ assert(runtime->xidregistry.mutex != NULL);
+ interp->xidregistry.mutex = runtime->xidregistry.mutex;
+
+ interp->_initialized = 1;
+}
+
+PyInterpreterState *
+PyInterpreterState_New(void)
+{
+ PyInterpreterState *interp;
+ _PyRuntimeState *runtime = &_PyRuntime;
+ PyThreadState *tstate = current_fast_get(runtime);
+
+ /* tstate is NULL when Py_InitializeFromConfig() calls
+ PyInterpreterState_New() to create the main interpreter. */
+ if (_PySys_Audit(tstate, "cpython.PyInterpreterState_New", NULL) < 0) {
+ return NULL;
+ }
+
+ PyThread_type_lock pending_lock = PyThread_allocate_lock();
+ if (pending_lock == NULL) {
+ if (tstate != NULL) {
+ _PyErr_NoMemory(tstate);
+ }
+ return NULL;
+ }
+
+ /* Don't get runtime from tstate since tstate can be NULL. */
+ struct pyinterpreters *interpreters = &runtime->interpreters;
+
+ /* We completely serialize creation of multiple interpreters, since
+ it simplifies things here and blocking concurrent calls isn't a problem.
+ Regardless, we must fully block subinterpreter creation until
+ after the main interpreter is created. */
+ HEAD_LOCK(runtime);
+
+ int64_t id = interpreters->next_id;
+ interpreters->next_id += 1;
+
+ // Allocate the interpreter and add it to the runtime state.
+ PyInterpreterState *old_head = interpreters->head;
+ if (old_head == NULL) {
+ // We are creating the main interpreter.
+ assert(interpreters->main == NULL);
+ assert(id == 0);
+
+ interp = &runtime->_main_interpreter;
+ assert(interp->id == 0);
+ assert(interp->next == NULL);
+
+ interpreters->main = interp;
+ }
+ else {
+ assert(interpreters->main != NULL);
+ assert(id != 0);
+
+ interp = alloc_interpreter();
+ if (interp == NULL) {
+ goto error;
+ }
+ // Set to _PyInterpreterState_INIT.
+ memcpy(interp, &initial._main_interpreter,
+ sizeof(*interp));
+
+ if (id < 0) {
+ /* overflow or Py_Initialize() not called yet! */
+ if (tstate != NULL) {
+ _PyErr_SetString(tstate, PyExc_RuntimeError,
+ "failed to get an interpreter ID");
+ }
+ goto error;
+ }
+ }
+ interpreters->head = interp;
+
+ init_interpreter(interp, runtime, id, old_head, pending_lock);
+
+ HEAD_UNLOCK(runtime);
+ return interp;
+
+error:
+ HEAD_UNLOCK(runtime);
+
+ PyThread_free_lock(pending_lock);
+ if (interp != NULL) {
+ free_interpreter(interp);
+ }
+ return NULL;
+}
+
+
+static void
+interpreter_clear(PyInterpreterState *interp, PyThreadState *tstate)
+{
+ assert(interp != NULL);
+ assert(tstate != NULL);
+ _PyRuntimeState *runtime = interp->runtime;
+
+ /* XXX Conditions we need to enforce:
+
+ * the GIL must be held by the current thread
+ * tstate must be the "current" thread state (current_fast_get())
+ * tstate->interp must be interp
+ * for the main interpreter, tstate must be the main thread
+ */
+ // XXX Ideally, we would not rely on any thread state in this function
+ // (and we would drop the "tstate" argument).
+
+ if (_PySys_Audit(tstate, "cpython.PyInterpreterState_Clear", NULL) < 0) {
+ _PyErr_Clear(tstate);
+ }
+
+ // Clear the current/main thread state last.
+ HEAD_LOCK(runtime);
+ PyThreadState *p = interp->threads.head;
+ HEAD_UNLOCK(runtime);
+ while (p != NULL) {
+ // See https://github.com/python/cpython/issues/102126
+ // Must be called without HEAD_LOCK held as it can deadlock
+ // if any finalizer tries to acquire that lock.
+ PyThreadState_Clear(p);
+ HEAD_LOCK(runtime);
+ p = p->next;
+ HEAD_UNLOCK(runtime);
+ }
+ if (tstate->interp == interp) {
+ /* We fix tstate->_status below when we for sure aren't using it
+ (e.g. no longer need the GIL). */
+ // XXX Eliminate the need to do this.
+ tstate->_status.cleared = 0;
+ }
+
+ /* It is possible that any of the objects below have a finalizer
+ that runs Python code or otherwise relies on a thread state
+ or even the interpreter state. For now we trust that isn't
+ a problem.
+ */
+ // XXX Make sure we properly deal with problematic finalizers.
+
+ Py_CLEAR(interp->audit_hooks);
+
+ for (int i = 0; i < _PY_MONITORING_UNGROUPED_EVENTS; i++) {
+ interp->monitors.tools[i] = 0;
+ }
+ for (int t = 0; t < PY_MONITORING_TOOL_IDS; t++) {
+ for (int e = 0; e < _PY_MONITORING_EVENTS; e++) {
+ Py_CLEAR(interp->monitoring_callables[t][e]);
+ }
+ }
+ interp->sys_profile_initialized = false;
+ interp->sys_trace_initialized = false;
+ for (int t = 0; t < PY_MONITORING_TOOL_IDS; t++) {
+ Py_CLEAR(interp->monitoring_tool_names[t]);
+ }
+
+ PyConfig_Clear(&interp->config);
+ Py_CLEAR(interp->codec_search_path);
+ Py_CLEAR(interp->codec_search_cache);
+ Py_CLEAR(interp->codec_error_registry);
+
+ assert(interp->imports.modules == NULL);
+ assert(interp->imports.modules_by_index == NULL);
+ assert(interp->imports.importlib == NULL);
+ assert(interp->imports.import_func == NULL);
+
+ Py_CLEAR(interp->sysdict_copy);
+ Py_CLEAR(interp->builtins_copy);
+ Py_CLEAR(interp->dict);
+#ifdef HAVE_FORK
+ Py_CLEAR(interp->before_forkers);
+ Py_CLEAR(interp->after_forkers_parent);
+ Py_CLEAR(interp->after_forkers_child);
+#endif
+
+ _PyAST_Fini(interp);
+ _PyWarnings_Fini(interp);
+ _PyAtExit_Fini(interp);
+
+ // All Python types must be destroyed before the last GC collection. Python
+ // types create a reference cycle to themselves in their in their
+ // PyTypeObject.tp_mro member (the tuple contains the type).
+
+ /* Last garbage collection on this interpreter */
+ _PyGC_CollectNoFail(tstate);
+ _PyGC_Fini(interp);
+
+ /* We don't clear sysdict and builtins until the end of this function.
+ Because clearing other attributes can execute arbitrary Python code
+ which requires sysdict and builtins. */
+ PyDict_Clear(interp->sysdict);
+ PyDict_Clear(interp->builtins);
+ Py_CLEAR(interp->sysdict);
+ Py_CLEAR(interp->builtins);
+ Py_CLEAR(interp->interpreter_trampoline);
+
+ _xidregistry_clear(&interp->xidregistry);
+ /* The lock is owned by the runtime, so we don't free it here. */
+ interp->xidregistry.mutex = NULL;
+
+ if (tstate->interp == interp) {
+ /* We are now safe to fix tstate->_status.cleared. */
+ // XXX Do this (much) earlier?
+ tstate->_status.cleared = 1;
+ }
+
+ for (int i=0; i < DICT_MAX_WATCHERS; i++) {
+ interp->dict_state.watchers[i] = NULL;
+ }
+
+ for (int i=0; i < TYPE_MAX_WATCHERS; i++) {
+ interp->type_watchers[i] = NULL;
+ }
+
+ for (int i=0; i < FUNC_MAX_WATCHERS; i++) {
+ interp->func_watchers[i] = NULL;
+ }
+ interp->active_func_watchers = 0;
+
+ for (int i=0; i < CODE_MAX_WATCHERS; i++) {
+ interp->code_watchers[i] = NULL;
+ }
+ interp->active_code_watchers = 0;
+ interp->f_opcode_trace_set = false;
+ // XXX Once we have one allocator per interpreter (i.e.
+ // per-interpreter GC) we must ensure that all of the interpreter's
+ // objects have been cleaned up at the point.
+}
+
+
+void
+PyInterpreterState_Clear(PyInterpreterState *interp)
+{
+ // Use the current Python thread state to call audit hooks and to collect
+ // garbage. It can be different than the current Python thread state
+ // of 'interp'.
+ PyThreadState *current_tstate = current_fast_get(interp->runtime);
+ _PyImport_ClearCore(interp);
+ interpreter_clear(interp, current_tstate);
+}
+
+
+void
+_PyInterpreterState_Clear(PyThreadState *tstate)
+{
+ _PyImport_ClearCore(tstate->interp);
+ interpreter_clear(tstate->interp, tstate);
+}
+
+
+static inline void tstate_deactivate(PyThreadState *tstate);
+static void zapthreads(PyInterpreterState *interp);
+
+void
+PyInterpreterState_Delete(PyInterpreterState *interp)
+{
+ _PyRuntimeState *runtime = interp->runtime;
+ struct pyinterpreters *interpreters = &runtime->interpreters;
+
+ // XXX Clearing the "current" thread state should happen before
+ // we start finalizing the interpreter (or the current thread state).
+ PyThreadState *tcur = current_fast_get(runtime);
+ if (tcur != NULL && interp == tcur->interp) {
+ /* Unset current thread. After this, many C API calls become crashy. */
+ current_fast_clear(runtime);
+ tstate_deactivate(tcur);
+ _PyEval_ReleaseLock(interp, NULL);
+ }
+
+ zapthreads(interp);
+
+ _PyEval_FiniState(&interp->ceval);
+
+ // XXX These two calls should be done at the end of clear_interpreter(),
+ // but currently some objects get decref'ed after that.
+#ifdef Py_REF_DEBUG
+ _PyInterpreterState_FinalizeRefTotal(interp);
+#endif
+ _PyInterpreterState_FinalizeAllocatedBlocks(interp);
+
+ HEAD_LOCK(runtime);
+ PyInterpreterState **p;
+ for (p = &interpreters->head; ; p = &(*p)->next) {
+ if (*p == NULL) {
+ Py_FatalError("NULL interpreter");
+ }
+ if (*p == interp) {
+ break;
+ }
+ }
+ if (interp->threads.head != NULL) {
+ Py_FatalError("remaining threads");
+ }
+ *p = interp->next;
+
+ if (interpreters->main == interp) {
+ interpreters->main = NULL;
+ if (interpreters->head != NULL) {
+ Py_FatalError("remaining subinterpreters");
+ }
+ }
+ HEAD_UNLOCK(runtime);
+
+ if (interp->id_mutex != NULL) {
+ PyThread_free_lock(interp->id_mutex);
+ }
+ free_interpreter(interp);
+}
+
+
+#ifdef HAVE_FORK
+/*
+ * Delete all interpreter states except the main interpreter. If there
+ * is a current interpreter state, it *must* be the main interpreter.
+ */
+PyStatus
+_PyInterpreterState_DeleteExceptMain(_PyRuntimeState *runtime)
+{
+ struct pyinterpreters *interpreters = &runtime->interpreters;
+
+ PyThreadState *tstate = _PyThreadState_Swap(runtime, NULL);
+ if (tstate != NULL && tstate->interp != interpreters->main) {
+ return _PyStatus_ERR("not main interpreter");
+ }
+
+ HEAD_LOCK(runtime);
+ PyInterpreterState *interp = interpreters->head;
+ interpreters->head = NULL;
+ while (interp != NULL) {
+ if (interp == interpreters->main) {
+ interpreters->main->next = NULL;
+ interpreters->head = interp;
+ interp = interp->next;
+ continue;
+ }
+
+ // XXX Won't this fail since PyInterpreterState_Clear() requires
+ // the "current" tstate to be set?
+ PyInterpreterState_Clear(interp); // XXX must activate?
+ zapthreads(interp);
+ if (interp->id_mutex != NULL) {
+ PyThread_free_lock(interp->id_mutex);
+ }
+ PyInterpreterState *prev_interp = interp;
+ interp = interp->next;
+ free_interpreter(prev_interp);
+ }
+ HEAD_UNLOCK(runtime);
+
+ if (interpreters->head == NULL) {
+ return _PyStatus_ERR("missing main interpreter");
+ }
+ _PyThreadState_Swap(runtime, tstate);
+ return _PyStatus_OK();
+}
+#endif
+
+
+int
+_PyInterpreterState_SetRunningMain(PyInterpreterState *interp)
+{
+ if (interp->threads_main != NULL) {
+ PyErr_SetString(PyExc_RuntimeError,
+ "interpreter already running");
+ return -1;
+ }
+ PyThreadState *tstate = current_fast_get(&_PyRuntime);
+ _Py_EnsureTstateNotNULL(tstate);
+ if (tstate->interp != interp) {
+ PyErr_SetString(PyExc_RuntimeError,
+ "current tstate has wrong interpreter");
+ return -1;
+ }
+ interp->threads_main = tstate;
+ return 0;
+}
+
+void
+_PyInterpreterState_SetNotRunningMain(PyInterpreterState *interp)
+{
+ assert(interp->threads_main == current_fast_get(&_PyRuntime));
+ interp->threads_main = NULL;
+}
+
+int
+_PyInterpreterState_IsRunningMain(PyInterpreterState *interp)
+{
+ return (interp->threads_main != NULL);
+}
+
+
+//----------
+// accessors
+//----------
+
+int64_t
+PyInterpreterState_GetID(PyInterpreterState *interp)
+{
+ if (interp == NULL) {
+ PyErr_SetString(PyExc_RuntimeError, "no interpreter provided");
+ return -1;
+ }
+ return interp->id;
+}
+
+
+int
+_PyInterpreterState_IDInitref(PyInterpreterState *interp)
+{
+ if (interp->id_mutex != NULL) {
+ return 0;
+ }
+ interp->id_mutex = PyThread_allocate_lock();
+ if (interp->id_mutex == NULL) {
+ PyErr_SetString(PyExc_RuntimeError,
+ "failed to create init interpreter ID mutex");
+ return -1;
+ }
+ interp->id_refcount = 0;
+ return 0;
+}
+
+
+int
+_PyInterpreterState_IDIncref(PyInterpreterState *interp)
+{
+ if (_PyInterpreterState_IDInitref(interp) < 0) {
+ return -1;
+ }
+
+ PyThread_acquire_lock(interp->id_mutex, WAIT_LOCK);
+ interp->id_refcount += 1;
+ PyThread_release_lock(interp->id_mutex);
+ return 0;
+}
+
+
+void
+_PyInterpreterState_IDDecref(PyInterpreterState *interp)
+{
+ assert(interp->id_mutex != NULL);
+ _PyRuntimeState *runtime = interp->runtime;
+
+ PyThread_acquire_lock(interp->id_mutex, WAIT_LOCK);
+ assert(interp->id_refcount != 0);
+ interp->id_refcount -= 1;
+ int64_t refcount = interp->id_refcount;
+ PyThread_release_lock(interp->id_mutex);
+
+ if (refcount == 0 && interp->requires_idref) {
+ // XXX Using the "head" thread isn't strictly correct.
+ PyThreadState *tstate = PyInterpreterState_ThreadHead(interp);
+ // XXX Possible GILState issues?
+ PyThreadState *save_tstate = _PyThreadState_Swap(runtime, tstate);
+ Py_EndInterpreter(tstate);
+ _PyThreadState_Swap(runtime, save_tstate);
+ }
+}
+
+int
+_PyInterpreterState_RequiresIDRef(PyInterpreterState *interp)
+{
+ return interp->requires_idref;
+}
+
+void
+_PyInterpreterState_RequireIDRef(PyInterpreterState *interp, int required)
+{
+ interp->requires_idref = required ? 1 : 0;
+}
+
+PyObject *
+_PyInterpreterState_GetMainModule(PyInterpreterState *interp)
+{
+ PyObject *modules = _PyImport_GetModules(interp);
+ if (modules == NULL) {
+ PyErr_SetString(PyExc_RuntimeError, "interpreter not initialized");
+ return NULL;
+ }
+ return PyMapping_GetItemString(modules, "__main__");
+}
+
+PyObject *
+PyInterpreterState_GetDict(PyInterpreterState *interp)
+{
+ if (interp->dict == NULL) {
+ interp->dict = PyDict_New();
+ if (interp->dict == NULL) {
+ PyErr_Clear();
+ }
+ }
+ /* Returning NULL means no per-interpreter dict is available. */
+ return interp->dict;
+}
+
+
+//-----------------------------
+// look up an interpreter state
+//-----------------------------
+
+/* Return the interpreter associated with the current OS thread.
+
+ The GIL must be held.
+ */
+
+PyInterpreterState *
+PyInterpreterState_Get(void)
+{
+ PyThreadState *tstate = current_fast_get(&_PyRuntime);
+ _Py_EnsureTstateNotNULL(tstate);
+ PyInterpreterState *interp = tstate->interp;
+ if (interp == NULL) {
+ Py_FatalError("no current interpreter");
+ }
+ return interp;
+}
+
+
+static PyInterpreterState *
+interp_look_up_id(_PyRuntimeState *runtime, int64_t requested_id)
+{
+ PyInterpreterState *interp = runtime->interpreters.head;
+ while (interp != NULL) {
+ int64_t id = PyInterpreterState_GetID(interp);
+ if (id < 0) {
+ return NULL;
+ }
+ if (requested_id == id) {
+ return interp;
+ }
+ interp = PyInterpreterState_Next(interp);
+ }
+ return NULL;
+}
+
+/* Return the interpreter state with the given ID.
+
+ Fail with RuntimeError if the interpreter is not found. */
+
+PyInterpreterState *
+_PyInterpreterState_LookUpID(int64_t requested_id)
+{
+ PyInterpreterState *interp = NULL;
+ if (requested_id >= 0) {
+ _PyRuntimeState *runtime = &_PyRuntime;
+ HEAD_LOCK(runtime);
+ interp = interp_look_up_id(runtime, requested_id);
+ HEAD_UNLOCK(runtime);
+ }
+ if (interp == NULL && !PyErr_Occurred()) {
+ PyErr_Format(PyExc_RuntimeError,
+ "unrecognized interpreter ID %lld", requested_id);
+ }
+ return interp;
+}
+
+
+/********************************/
+/* the per-thread runtime state */
+/********************************/
+
+#ifndef NDEBUG
+static inline int
+tstate_is_alive(PyThreadState *tstate)
+{
+ return (tstate->_status.initialized &&
+ !tstate->_status.finalized &&
+ !tstate->_status.cleared &&
+ !tstate->_status.finalizing);
+}
+#endif
+
+
+//----------
+// lifecycle
+//----------
+
+/* Minimum size of data stack chunk */
+#define DATA_STACK_CHUNK_SIZE (16*1024)
+
+static _PyStackChunk*
+allocate_chunk(int size_in_bytes, _PyStackChunk* previous)
+{
+ assert(size_in_bytes % sizeof(PyObject **) == 0);
+ _PyStackChunk *res = _PyObject_VirtualAlloc(size_in_bytes);
+ if (res == NULL) {
+ return NULL;
+ }
+ res->previous = previous;
+ res->size = size_in_bytes;
+ res->top = 0;
+ return res;
+}
+
+static PyThreadState *
+alloc_threadstate(void)
+{
+ return PyMem_RawCalloc(1, sizeof(PyThreadState));
+}
+
+static void
+free_threadstate(PyThreadState *tstate)
+{
+ // The initial thread state of the interpreter is allocated
+ // as part of the interpreter state so should not be freed.
+ if (tstate != &tstate->interp->_initial_thread) {
+ PyMem_RawFree(tstate);
+ }
+}
+
+/* Get the thread state to a minimal consistent state.
+ Further init happens in pylifecycle.c before it can be used.
+ All fields not initialized here are expected to be zeroed out,
+ e.g. by PyMem_RawCalloc() or memset(), or otherwise pre-initialized.
+ The interpreter state is not manipulated. Instead it is assumed that
+ the thread is getting added to the interpreter.
+ */
+
+static void
+init_threadstate(PyThreadState *tstate,
+ PyInterpreterState *interp, uint64_t id)
+{
+ if (tstate->_status.initialized) {
+ Py_FatalError("thread state already initialized");
+ }
+
+ assert(interp != NULL);
+ tstate->interp = interp;
+
+ // next/prev are set in add_threadstate().
+ assert(tstate->next == NULL);
+ assert(tstate->prev == NULL);
+
+ assert(id > 0);
+ tstate->id = id;
+
+ // thread_id and native_thread_id are set in bind_tstate().
+
+ tstate->py_recursion_limit = interp->ceval.recursion_limit,
+ tstate->py_recursion_remaining = interp->ceval.recursion_limit,
+ tstate->c_recursion_remaining = C_RECURSION_LIMIT;
+
+ tstate->exc_info = &tstate->exc_state;
+
+ // PyGILState_Release must not try to delete this thread state.
+ // This is cleared when PyGILState_Ensure() creates the thread state.
+ tstate->gilstate_counter = 1;
+
+ tstate->cframe = &tstate->root_cframe;
+ tstate->datastack_chunk = NULL;
+ tstate->datastack_top = NULL;
+ tstate->datastack_limit = NULL;
+ tstate->what_event = -1;
+
+ tstate->_status.initialized = 1;
+}
+
+static void
+add_threadstate(PyInterpreterState *interp, PyThreadState *tstate,
+ PyThreadState *next)
+{
+ assert(interp->threads.head != tstate);
+ assert((next != NULL && tstate->id != 1) ||
+ (next == NULL && tstate->id == 1));
+ if (next != NULL) {
+ assert(next->prev == NULL || next->prev == tstate);
+ next->prev = tstate;
+ }
+ tstate->next = next;
+ assert(tstate->prev == NULL);
+ interp->threads.head = tstate;
+}
+
+static PyThreadState *
+new_threadstate(PyInterpreterState *interp)
+{
+ PyThreadState *tstate;
+ _PyRuntimeState *runtime = interp->runtime;
+ // We don't need to allocate a thread state for the main interpreter
+ // (the common case), but doing it later for the other case revealed a
+ // reentrancy problem (deadlock). So for now we always allocate before
+ // taking the interpreters lock. See GH-96071.
+ PyThreadState *new_tstate = alloc_threadstate();
+ int used_newtstate;
+ if (new_tstate == NULL) {
+ return NULL;
+ }
+ /* We serialize concurrent creation to protect global state. */
+ HEAD_LOCK(runtime);
+
+ interp->threads.next_unique_id += 1;
+ uint64_t id = interp->threads.next_unique_id;
+
+ // Allocate the thread state and add it to the interpreter.
+ PyThreadState *old_head = interp->threads.head;
+ if (old_head == NULL) {
+ // It's the interpreter's initial thread state.
+ assert(id == 1);
+ used_newtstate = 0;
+ tstate = &interp->_initial_thread;
+ }
+ else {
+ // Every valid interpreter must have at least one thread.
+ assert(id > 1);
+ assert(old_head->prev == NULL);
+ used_newtstate = 1;
+ tstate = new_tstate;
+ // Set to _PyThreadState_INIT.
+ memcpy(tstate,
+ &initial._main_interpreter._initial_thread,
+ sizeof(*tstate));
+ }
+
+ init_threadstate(tstate, interp, id);
+ add_threadstate(interp, tstate, old_head);
+
+ HEAD_UNLOCK(runtime);
+ if (!used_newtstate) {
+ // Must be called with lock unlocked to avoid re-entrancy deadlock.
+ PyMem_RawFree(new_tstate);
+ }
+ return tstate;
+}
+
+PyThreadState *
+PyThreadState_New(PyInterpreterState *interp)
+{
+ PyThreadState *tstate = new_threadstate(interp);
+ if (tstate) {
+ bind_tstate(tstate);
+ // This makes sure there's a gilstate tstate bound
+ // as soon as possible.
+ if (gilstate_tss_get(tstate->interp->runtime) == NULL) {
+ bind_gilstate_tstate(tstate);
+ }
+ }
+ return tstate;
+}
+
+// This must be followed by a call to _PyThreadState_Bind();
+PyThreadState *
+_PyThreadState_New(PyInterpreterState *interp)
+{
+ return new_threadstate(interp);
+}
+
+// We keep this for stable ABI compabibility.
+PyThreadState *
+_PyThreadState_Prealloc(PyInterpreterState *interp)
+{
+ return _PyThreadState_New(interp);
+}
+
+// We keep this around for (accidental) stable ABI compatibility.
+// Realistically, no extensions are using it.
+void
+_PyThreadState_Init(PyThreadState *tstate)
+{
+ Py_FatalError("_PyThreadState_Init() is for internal use only");
+}
+
+
+static void
+clear_datastack(PyThreadState *tstate)
+{
+ _PyStackChunk *chunk = tstate->datastack_chunk;
+ tstate->datastack_chunk = NULL;
+ while (chunk != NULL) {
+ _PyStackChunk *prev = chunk->previous;
+ _PyObject_VirtualFree(chunk, chunk->size);
+ chunk = prev;
+ }
+}
+
+void
+PyThreadState_Clear(PyThreadState *tstate)
+{
+ assert(tstate->_status.initialized && !tstate->_status.cleared);
+ // XXX assert(!tstate->_status.bound || tstate->_status.unbound);
+ tstate->_status.finalizing = 1; // just in case
+
+ /* XXX Conditions we need to enforce:
+
+ * the GIL must be held by the current thread
+ * current_fast_get()->interp must match tstate->interp
+ * for the main interpreter, current_fast_get() must be the main thread
+ */
+
+ int verbose = _PyInterpreterState_GetConfig(tstate->interp)->verbose;
+
+ if (verbose && tstate->cframe->current_frame != NULL) {
+ /* bpo-20526: After the main thread calls
+ _PyInterpreterState_SetFinalizing() in Py_FinalizeEx()
+ (or in Py_EndInterpreter() for subinterpreters),
+ threads must exit when trying to take the GIL.
+ If a thread exit in the middle of _PyEval_EvalFrameDefault(),
+ tstate->frame is not reset to its previous value.
+ It is more likely with daemon threads, but it can happen
+ with regular threads if threading._shutdown() fails
+ (ex: interrupted by CTRL+C). */
+ fprintf(stderr,
+ "PyThreadState_Clear: warning: thread still has a frame\n");
+ }
+
+ /* At this point tstate shouldn't be used any more,
+ neither to run Python code nor for other uses.
+
+ This is tricky when current_fast_get() == tstate, in the same way
+ as noted in interpreter_clear() above. The below finalizers
+ can possibly run Python code or otherwise use the partially
+ cleared thread state. For now we trust that isn't a problem
+ in practice.
+ */
+ // XXX Deal with the possibility of problematic finalizers.
+
+ /* Don't clear tstate->pyframe: it is a borrowed reference */
+
+ Py_CLEAR(tstate->dict);
+ Py_CLEAR(tstate->async_exc);
+
+ Py_CLEAR(tstate->current_exception);
+
+ Py_CLEAR(tstate->exc_state.exc_value);
+
+ /* The stack of exception states should contain just this thread. */
+ if (verbose && tstate->exc_info != &tstate->exc_state) {
+ fprintf(stderr,
+ "PyThreadState_Clear: warning: thread still has a generator\n");
+ }
+
+ if (tstate->c_profilefunc != NULL) {
+ tstate->interp->sys_profiling_threads--;
+ tstate->c_profilefunc = NULL;
+ }
+ if (tstate->c_tracefunc != NULL) {
+ tstate->interp->sys_tracing_threads--;
+ tstate->c_tracefunc = NULL;
+ }
+ Py_CLEAR(tstate->c_profileobj);
+ Py_CLEAR(tstate->c_traceobj);
+
+ Py_CLEAR(tstate->async_gen_firstiter);
+ Py_CLEAR(tstate->async_gen_finalizer);
+
+ Py_CLEAR(tstate->context);
+
+ if (tstate->on_delete != NULL) {
+ tstate->on_delete(tstate->on_delete_data);
+ }
+
+ tstate->_status.cleared = 1;
+
+ // XXX Call _PyThreadStateSwap(runtime, NULL) here if "current".
+ // XXX Do it as early in the function as possible.
+}
+
+/* Common code for PyThreadState_Delete() and PyThreadState_DeleteCurrent() */
+static void
+tstate_delete_common(PyThreadState *tstate)
+{
+ assert(tstate->_status.cleared && !tstate->_status.finalized);
+
+ PyInterpreterState *interp = tstate->interp;
+ if (interp == NULL) {
+ Py_FatalError("NULL interpreter");
+ }
+ _PyRuntimeState *runtime = interp->runtime;
+
+ HEAD_LOCK(runtime);
+ if (tstate->prev) {
+ tstate->prev->next = tstate->next;
+ }
+ else {
+ interp->threads.head = tstate->next;
+ }
+ if (tstate->next) {
+ tstate->next->prev = tstate->prev;
+ }
+ HEAD_UNLOCK(runtime);
+
+ // XXX Unbind in PyThreadState_Clear(), or earlier
+ // (and assert not-equal here)?
+ if (tstate->_status.bound_gilstate) {
+ unbind_gilstate_tstate(tstate);
+ }
+ unbind_tstate(tstate);
+
+ // XXX Move to PyThreadState_Clear()?
+ clear_datastack(tstate);
+
+ tstate->_status.finalized = 1;
+}
+
+static void
+zapthreads(PyInterpreterState *interp)
+{
+ PyThreadState *tstate;
+ /* No need to lock the mutex here because this should only happen
+ when the threads are all really dead (XXX famous last words). */
+ while ((tstate = interp->threads.head) != NULL) {
+ tstate_verify_not_active(tstate);
+ tstate_delete_common(tstate);
+ free_threadstate(tstate);
+ }
+}
+
+
+void
+PyThreadState_Delete(PyThreadState *tstate)
+{
+ _Py_EnsureTstateNotNULL(tstate);
+ tstate_verify_not_active(tstate);
+ tstate_delete_common(tstate);
+ free_threadstate(tstate);
+}
+
+
+void
+_PyThreadState_DeleteCurrent(PyThreadState *tstate)
+{
+ _Py_EnsureTstateNotNULL(tstate);
+ tstate_delete_common(tstate);
+ current_fast_clear(tstate->interp->runtime);
+ _PyEval_ReleaseLock(tstate->interp, NULL);
+ free_threadstate(tstate);
+}
+
+void
+PyThreadState_DeleteCurrent(void)
+{
+ PyThreadState *tstate = current_fast_get(&_PyRuntime);
+ _PyThreadState_DeleteCurrent(tstate);
+}
+
+
+/*
+ * Delete all thread states except the one passed as argument.
+ * Note that, if there is a current thread state, it *must* be the one
+ * passed as argument. Also, this won't touch any other interpreters
+ * than the current one, since we don't know which thread state should
+ * be kept in those other interpreters.
+ */
+void
+_PyThreadState_DeleteExcept(PyThreadState *tstate)
+{
+ assert(tstate != NULL);
+ PyInterpreterState *interp = tstate->interp;
+ _PyRuntimeState *runtime = interp->runtime;
+
+ HEAD_LOCK(runtime);
+ /* Remove all thread states, except tstate, from the linked list of
+ thread states. This will allow calling PyThreadState_Clear()
+ without holding the lock. */
+ PyThreadState *list = interp->threads.head;
+ if (list == tstate) {
+ list = tstate->next;
+ }
+ if (tstate->prev) {
+ tstate->prev->next = tstate->next;
+ }
+ if (tstate->next) {
+ tstate->next->prev = tstate->prev;
+ }
+ tstate->prev = tstate->next = NULL;
+ interp->threads.head = tstate;
+ HEAD_UNLOCK(runtime);
+
+ /* Clear and deallocate all stale thread states. Even if this
+ executes Python code, we should be safe since it executes
+ in the current thread, not one of the stale threads. */
+ PyThreadState *p, *next;
+ for (p = list; p; p = next) {
+ next = p->next;
+ PyThreadState_Clear(p);
+ free_threadstate(p);
+ }
+}
+
+
+//----------
+// accessors
+//----------
+
+/* An extension mechanism to store arbitrary additional per-thread state.
+ PyThreadState_GetDict() returns a dictionary that can be used to hold such
+ state; the caller should pick a unique key and store its state there. If
+ PyThreadState_GetDict() returns NULL, an exception has *not* been raised
+ and the caller should assume no per-thread state is available. */
+
+PyObject *
+_PyThreadState_GetDict(PyThreadState *tstate)
+{
+ assert(tstate != NULL);
+ if (tstate->dict == NULL) {
+ tstate->dict = PyDict_New();
+ if (tstate->dict == NULL) {
+ _PyErr_Clear(tstate);
+ }
+ }
+ return tstate->dict;
+}
+
+
+PyObject *
+PyThreadState_GetDict(void)
+{
+ PyThreadState *tstate = current_fast_get(&_PyRuntime);
+ if (tstate == NULL) {
+ return NULL;
+ }
+ return _PyThreadState_GetDict(tstate);
+}
+
+
+PyInterpreterState *
+PyThreadState_GetInterpreter(PyThreadState *tstate)
+{
+ assert(tstate != NULL);
+ return tstate->interp;
+}
+
+
+PyFrameObject*
+PyThreadState_GetFrame(PyThreadState *tstate)
+{
+ assert(tstate != NULL);
+ _PyInterpreterFrame *f = _PyThreadState_GetFrame(tstate);
+ if (f == NULL) {
+ return NULL;
+ }
+ PyFrameObject *frame = _PyFrame_GetFrameObject(f);
+ if (frame == NULL) {
+ PyErr_Clear();
+ }
+ return (PyFrameObject*)Py_XNewRef(frame);
+}
+
+
+uint64_t
+PyThreadState_GetID(PyThreadState *tstate)
+{
+ assert(tstate != NULL);
+ return tstate->id;
+}
+
+
+static inline void
+tstate_activate(PyThreadState *tstate)
+{
+ assert(tstate != NULL);
+ // XXX assert(tstate_is_alive(tstate));
+ assert(tstate_is_bound(tstate));
+ assert(!tstate->_status.active);
+
+ assert(!tstate->_status.bound_gilstate ||
+ tstate == gilstate_tss_get((tstate->interp->runtime)));
+ if (!tstate->_status.bound_gilstate) {
+ bind_gilstate_tstate(tstate);
+ }
+
+ tstate->_status.active = 1;
+}
+
+static inline void
+tstate_deactivate(PyThreadState *tstate)
+{
+ assert(tstate != NULL);
+ // XXX assert(tstate_is_alive(tstate));
+ assert(tstate_is_bound(tstate));
+ assert(tstate->_status.active);
+
+ tstate->_status.active = 0;
+
+ // We do not unbind the gilstate tstate here.
+ // It will still be used in PyGILState_Ensure().
+}
+
+
+//----------
+// other API
+//----------
+
+/* Asynchronously raise an exception in a thread.
+ Requested by Just van Rossum and Alex Martelli.
+ To prevent naive misuse, you must write your own extension
+ to call this, or use ctypes. Must be called with the GIL held.
+ Returns the number of tstates modified (normally 1, but 0 if `id` didn't
+ match any known thread id). Can be called with exc=NULL to clear an
+ existing async exception. This raises no exceptions. */
+
+// XXX Move this to Python/ceval_gil.c?
+// XXX Deprecate this.
+int
+PyThreadState_SetAsyncExc(unsigned long id, PyObject *exc)
+{
+ _PyRuntimeState *runtime = &_PyRuntime;
+ PyInterpreterState *interp = _PyInterpreterState_GET();
+
+ /* Although the GIL is held, a few C API functions can be called
+ * without the GIL held, and in particular some that create and
+ * destroy thread and interpreter states. Those can mutate the
+ * list of thread states we're traversing, so to prevent that we lock
+ * head_mutex for the duration.
+ */
+ HEAD_LOCK(runtime);
+ for (PyThreadState *tstate = interp->threads.head; tstate != NULL; tstate = tstate->next) {
+ if (tstate->thread_id != id) {
+ continue;
+ }
+
+ /* Tricky: we need to decref the current value
+ * (if any) in tstate->async_exc, but that can in turn
+ * allow arbitrary Python code to run, including
+ * perhaps calls to this function. To prevent
+ * deadlock, we need to release head_mutex before
+ * the decref.
+ */
+ PyObject *old_exc = tstate->async_exc;
+ tstate->async_exc = Py_XNewRef(exc);
+ HEAD_UNLOCK(runtime);
+
+ Py_XDECREF(old_exc);
+ _PyEval_SignalAsyncExc(tstate->interp);
+ return 1;
+ }
+ HEAD_UNLOCK(runtime);
+ return 0;
+}
+
+
+//---------------------------------
+// API for the current thread state
+//---------------------------------
+
+PyThreadState *
+_PyThreadState_UncheckedGet(void)
+{
+ return current_fast_get(&_PyRuntime);
+}
+
+
+PyThreadState *
+PyThreadState_Get(void)
+{
+ PyThreadState *tstate = current_fast_get(&_PyRuntime);
+ _Py_EnsureTstateNotNULL(tstate);
+ return tstate;
+}
+
+
+static void
+_swap_thread_states(_PyRuntimeState *runtime,
+ PyThreadState *oldts, PyThreadState *newts)
+{
+ // XXX Do this only if oldts != NULL?
+ current_fast_clear(runtime);
+
+ if (oldts != NULL) {
+ // XXX assert(tstate_is_alive(oldts) && tstate_is_bound(oldts));
+ tstate_deactivate(oldts);
+ }
+
+ if (newts != NULL) {
+ // XXX assert(tstate_is_alive(newts));
+ assert(tstate_is_bound(newts));
+ current_fast_set(runtime, newts);
+ tstate_activate(newts);
+ }
+}
+
+PyThreadState *
+_PyThreadState_SwapNoGIL(PyThreadState *newts)
+{
+#if defined(Py_DEBUG)
+ /* This can be called from PyEval_RestoreThread(). Similar
+ to it, we need to ensure errno doesn't change.
+ */
+ int err = errno;
+#endif
+
+ PyThreadState *oldts = current_fast_get(&_PyRuntime);
+ _swap_thread_states(&_PyRuntime, oldts, newts);
+
+#if defined(Py_DEBUG)
+ errno = err;
+#endif
+ return oldts;
+}
+
+PyThreadState *
+_PyThreadState_Swap(_PyRuntimeState *runtime, PyThreadState *newts)
+{
+ PyThreadState *oldts = current_fast_get(runtime);
+ if (oldts != NULL) {
+ _PyEval_ReleaseLock(oldts->interp, oldts);
+ }
+ _swap_thread_states(runtime, oldts, newts);
+ if (newts != NULL) {
+ _PyEval_AcquireLock(newts);
+ }
+ return oldts;
+}
+
+PyThreadState *
+PyThreadState_Swap(PyThreadState *newts)
+{
+ return _PyThreadState_Swap(&_PyRuntime, newts);
+}
+
+
+void
+_PyThreadState_Bind(PyThreadState *tstate)
+{
+ // gh-104690: If Python is being finalized and PyInterpreterState_Delete()
+ // was called, tstate becomes a dangling pointer.
+ assert(_PyThreadState_CheckConsistency(tstate));
+
+ bind_tstate(tstate);
+ // This makes sure there's a gilstate tstate bound
+ // as soon as possible.
+ if (gilstate_tss_get(tstate->interp->runtime) == NULL) {
+ bind_gilstate_tstate(tstate);
+ }
+}
+
+
+/***********************************/
+/* routines for advanced debuggers */
+/***********************************/
+
+// (requested by David Beazley)
+// Don't use unless you know what you are doing!
+
+PyInterpreterState *
+PyInterpreterState_Head(void)
+{
+ return _PyRuntime.interpreters.head;
+}
+
+PyInterpreterState *
+PyInterpreterState_Main(void)
+{
+ return _PyInterpreterState_Main();
+}
+
+PyInterpreterState *
+PyInterpreterState_Next(PyInterpreterState *interp) {
+ return interp->next;
+}
+
+PyThreadState *
+PyInterpreterState_ThreadHead(PyInterpreterState *interp) {
+ return interp->threads.head;
+}
+
+PyThreadState *
+PyThreadState_Next(PyThreadState *tstate) {
+ return tstate->next;
+}
+
+
+/********************************************/
+/* reporting execution state of all threads */
+/********************************************/
+
+/* The implementation of sys._current_frames(). This is intended to be
+ called with the GIL held, as it will be when called via
+ sys._current_frames(). It's possible it would work fine even without
+ the GIL held, but haven't thought enough about that.
+*/
+PyObject *
+_PyThread_CurrentFrames(void)
+{
+ _PyRuntimeState *runtime = &_PyRuntime;
+ PyThreadState *tstate = current_fast_get(runtime);
+ if (_PySys_Audit(tstate, "sys._current_frames", NULL) < 0) {
+ return NULL;
+ }
+
+ PyObject *result = PyDict_New();
+ if (result == NULL) {
+ return NULL;
+ }
+
+ /* for i in all interpreters:
+ * for t in all of i's thread states:
+ * if t's frame isn't NULL, map t's id to its frame
+ * Because these lists can mutate even when the GIL is held, we
+ * need to grab head_mutex for the duration.
+ */
+ HEAD_LOCK(runtime);
+ PyInterpreterState *i;
+ for (i = runtime->interpreters.head; i != NULL; i = i->next) {
+ PyThreadState *t;
+ for (t = i->threads.head; t != NULL; t = t->next) {
+ _PyInterpreterFrame *frame = t->cframe->current_frame;
+ frame = _PyFrame_GetFirstComplete(frame);
+ if (frame == NULL) {
+ continue;
+ }
+ PyObject *id = PyLong_FromUnsignedLong(t->thread_id);
+ if (id == NULL) {
+ goto fail;
+ }
+ PyObject *frameobj = (PyObject *)_PyFrame_GetFrameObject(frame);
+ if (frameobj == NULL) {
+ Py_DECREF(id);
+ goto fail;
+ }
+ int stat = PyDict_SetItem(result, id, frameobj);
+ Py_DECREF(id);
+ if (stat < 0) {
+ goto fail;
+ }
+ }
+ }
+ goto done;
+
+fail:
+ Py_CLEAR(result);
+
+done:
+ HEAD_UNLOCK(runtime);
+ return result;
+}
+
+/* The implementation of sys._current_exceptions(). This is intended to be
+ called with the GIL held, as it will be when called via
+ sys._current_exceptions(). It's possible it would work fine even without
+ the GIL held, but haven't thought enough about that.
+*/
+PyObject *
+_PyThread_CurrentExceptions(void)
+{
+ _PyRuntimeState *runtime = &_PyRuntime;
+ PyThreadState *tstate = current_fast_get(runtime);
+
+ _Py_EnsureTstateNotNULL(tstate);
+
+ if (_PySys_Audit(tstate, "sys._current_exceptions", NULL) < 0) {
+ return NULL;
+ }
+
+ PyObject *result = PyDict_New();
+ if (result == NULL) {
+ return NULL;
+ }
+
+ /* for i in all interpreters:
+ * for t in all of i's thread states:
+ * if t's frame isn't NULL, map t's id to its frame
+ * Because these lists can mutate even when the GIL is held, we
+ * need to grab head_mutex for the duration.
+ */
+ HEAD_LOCK(runtime);
+ PyInterpreterState *i;
+ for (i = runtime->interpreters.head; i != NULL; i = i->next) {
+ PyThreadState *t;
+ for (t = i->threads.head; t != NULL; t = t->next) {
+ _PyErr_StackItem *err_info = _PyErr_GetTopmostException(t);
+ if (err_info == NULL) {
+ continue;
+ }
+ PyObject *id = PyLong_FromUnsignedLong(t->thread_id);
+ if (id == NULL) {
+ goto fail;
+ }
+ PyObject *exc = err_info->exc_value;
+ assert(exc == NULL ||
+ exc == Py_None ||
+ PyExceptionInstance_Check(exc));
+
+ int stat = PyDict_SetItem(result, id, exc == NULL ? Py_None : exc);
+ Py_DECREF(id);
+ if (stat < 0) {
+ goto fail;
+ }
+ }
+ }
+ goto done;
+
+fail:
+ Py_CLEAR(result);
+
+done:
+ HEAD_UNLOCK(runtime);
+ return result;
+}
+
+
+/***********************************/
+/* Python "auto thread state" API. */
+/***********************************/
+
+/* Internal initialization/finalization functions called by
+ Py_Initialize/Py_FinalizeEx
+*/
+PyStatus
+_PyGILState_Init(PyInterpreterState *interp)
+{
+ if (!_Py_IsMainInterpreter(interp)) {
+ /* Currently, PyGILState is shared by all interpreters. The main
+ * interpreter is responsible to initialize it. */
+ return _PyStatus_OK();
+ }
+ _PyRuntimeState *runtime = interp->runtime;
+ assert(gilstate_tss_get(runtime) == NULL);
+ assert(runtime->gilstate.autoInterpreterState == NULL);
+ runtime->gilstate.autoInterpreterState = interp;
+ return _PyStatus_OK();
+}
+
+void
+_PyGILState_Fini(PyInterpreterState *interp)
+{
+ if (!_Py_IsMainInterpreter(interp)) {
+ /* Currently, PyGILState is shared by all interpreters. The main
+ * interpreter is responsible to initialize it. */
+ return;
+ }
+ interp->runtime->gilstate.autoInterpreterState = NULL;
+}
+
+
+// XXX Drop this.
+PyStatus
+_PyGILState_SetTstate(PyThreadState *tstate)
+{
+ /* must init with valid states */
+ assert(tstate != NULL);
+ assert(tstate->interp != NULL);
+
+ if (!_Py_IsMainInterpreter(tstate->interp)) {
+ /* Currently, PyGILState is shared by all interpreters. The main
+ * interpreter is responsible to initialize it. */
+ return _PyStatus_OK();
+ }
+
+#ifndef NDEBUG
+ _PyRuntimeState *runtime = tstate->interp->runtime;
+
+ assert(runtime->gilstate.autoInterpreterState == tstate->interp);
+ assert(gilstate_tss_get(runtime) == tstate);
+ assert(tstate->gilstate_counter == 1);
+#endif
+
+ return _PyStatus_OK();
+}
+
+PyInterpreterState *
+_PyGILState_GetInterpreterStateUnsafe(void)
+{
+ return _PyRuntime.gilstate.autoInterpreterState;
+}
+
+/* The public functions */
+
+PyThreadState *
+PyGILState_GetThisThreadState(void)
+{
+ _PyRuntimeState *runtime = &_PyRuntime;
+ if (!gilstate_tss_initialized(runtime)) {
+ return NULL;
+ }
+ return gilstate_tss_get(runtime);
+}
+
+int
+PyGILState_Check(void)
+{
+ _PyRuntimeState *runtime = &_PyRuntime;
+ if (!runtime->gilstate.check_enabled) {
+ return 1;
+ }
+
+ if (!gilstate_tss_initialized(runtime)) {
+ return 1;
+ }
+
+ PyThreadState *tstate = current_fast_get(runtime);
+ if (tstate == NULL) {
+ return 0;
+ }
+
+ return (tstate == gilstate_tss_get(runtime));
+}
+
+PyGILState_STATE
+PyGILState_Ensure(void)
+{
+ _PyRuntimeState *runtime = &_PyRuntime;
+
+ /* Note that we do not auto-init Python here - apart from
+ potential races with 2 threads auto-initializing, pep-311
+ spells out other issues. Embedders are expected to have
+ called Py_Initialize(). */
+
+ /* Ensure that _PyEval_InitThreads() and _PyGILState_Init() have been
+ called by Py_Initialize() */
+ assert(_PyEval_ThreadsInitialized());
+ assert(gilstate_tss_initialized(runtime));
+ assert(runtime->gilstate.autoInterpreterState != NULL);
+
+ PyThreadState *tcur = gilstate_tss_get(runtime);
+ int has_gil;
+ if (tcur == NULL) {
+ /* Create a new Python thread state for this thread */
+ tcur = new_threadstate(runtime->gilstate.autoInterpreterState);
+ if (tcur == NULL) {
+ Py_FatalError("Couldn't create thread-state for new thread");
+ }
+ bind_tstate(tcur);
+ bind_gilstate_tstate(tcur);
+
+ /* This is our thread state! We'll need to delete it in the
+ matching call to PyGILState_Release(). */
+ assert(tcur->gilstate_counter == 1);
+ tcur->gilstate_counter = 0;
+ has_gil = 0; /* new thread state is never current */
+ }
+ else {
+ has_gil = holds_gil(tcur);
+ }
+
+ if (!has_gil) {
+ PyEval_RestoreThread(tcur);
+ }
+
+ /* Update our counter in the thread-state - no need for locks:
+ - tcur will remain valid as we hold the GIL.
+ - the counter is safe as we are the only thread "allowed"
+ to modify this value
+ */
+ ++tcur->gilstate_counter;
+
+ return has_gil ? PyGILState_LOCKED : PyGILState_UNLOCKED;
+}
+
+void
+PyGILState_Release(PyGILState_STATE oldstate)
+{
+ _PyRuntimeState *runtime = &_PyRuntime;
+ PyThreadState *tstate = gilstate_tss_get(runtime);
+ if (tstate == NULL) {
+ Py_FatalError("auto-releasing thread-state, "
+ "but no thread-state for this thread");
+ }
+
+ /* We must hold the GIL and have our thread state current */
+ /* XXX - remove the check - the assert should be fine,
+ but while this is very new (April 2003), the extra check
+ by release-only users can't hurt.
+ */
+ if (!holds_gil(tstate)) {
+ _Py_FatalErrorFormat(__func__,
+ "thread state %p must be current when releasing",
+ tstate);
+ }
+ assert(holds_gil(tstate));
+ --tstate->gilstate_counter;
+ assert(tstate->gilstate_counter >= 0); /* illegal counter value */
+
+ /* If we're going to destroy this thread-state, we must
+ * clear it while the GIL is held, as destructors may run.
+ */
+ if (tstate->gilstate_counter == 0) {
+ /* can't have been locked when we created it */
+ assert(oldstate == PyGILState_UNLOCKED);
+ // XXX Unbind tstate here.
+ PyThreadState_Clear(tstate);
+ /* Delete the thread-state. Note this releases the GIL too!
+ * It's vital that the GIL be held here, to avoid shutdown
+ * races; see bugs 225673 and 1061968 (that nasty bug has a
+ * habit of coming back).
+ */
+ assert(current_fast_get(runtime) == tstate);
+ _PyThreadState_DeleteCurrent(tstate);
+ }
+ /* Release the lock if necessary */
+ else if (oldstate == PyGILState_UNLOCKED) {
+ PyEval_SaveThread();
+ }
+}
+
+
+/**************************/
+/* cross-interpreter data */
+/**************************/
+
+/* cross-interpreter data */
+
+static inline void
+_xidata_init(_PyCrossInterpreterData *data)
+{
+ // If the value is being reused
+ // then _xidata_clear() should have been called already.
+ assert(data->data == NULL);
+ assert(data->obj == NULL);
+ *data = (_PyCrossInterpreterData){0};
+ data->interp = -1;
+}
+
+static inline void
+_xidata_clear(_PyCrossInterpreterData *data)
+{
+ // _PyCrossInterpreterData only has two members that need to be
+ // cleaned up, if set: "data" must be freed and "obj" must be decref'ed.
+ // In both cases the original (owning) interpreter must be used,
+ // which is the caller's responsibility to ensure.
+ if (data->data != NULL) {
+ if (data->free != NULL) {
+ data->free(data->data);
+ }
+ data->data = NULL;
+ }
+ Py_CLEAR(data->obj);
+}
+
+void
+_PyCrossInterpreterData_Init(_PyCrossInterpreterData *data,
+ PyInterpreterState *interp,
+ void *shared, PyObject *obj,
+ xid_newobjectfunc new_object)
+{
+ assert(data != NULL);
+ assert(new_object != NULL);
+ _xidata_init(data);
+ data->data = shared;
+ if (obj != NULL) {
+ assert(interp != NULL);
+ // released in _PyCrossInterpreterData_Clear()
+ data->obj = Py_NewRef(obj);
+ }
+ // Ideally every object would know its owning interpreter.
+ // Until then, we have to rely on the caller to identify it
+ // (but we don't need it in all cases).
+ data->interp = (interp != NULL) ? interp->id : -1;
+ data->new_object = new_object;
+}
+
+int
+_PyCrossInterpreterData_InitWithSize(_PyCrossInterpreterData *data,
+ PyInterpreterState *interp,
+ const size_t size, PyObject *obj,
+ xid_newobjectfunc new_object)
+{
+ assert(size > 0);
+ // For now we always free the shared data in the same interpreter
+ // where it was allocated, so the interpreter is required.
+ assert(interp != NULL);
+ _PyCrossInterpreterData_Init(data, interp, NULL, obj, new_object);
+ data->data = PyMem_RawMalloc(size);
+ if (data->data == NULL) {
+ return -1;
+ }
+ data->free = PyMem_RawFree;
+ return 0;
+}
+
+void
+_PyCrossInterpreterData_Clear(PyInterpreterState *interp,
+ _PyCrossInterpreterData *data)
+{
+ assert(data != NULL);
+ // This must be called in the owning interpreter.
+ assert(interp == NULL || data->interp == interp->id);
+ _xidata_clear(data);
+}
+
+static int
+_check_xidata(PyThreadState *tstate, _PyCrossInterpreterData *data)
+{
+ // data->data can be anything, including NULL, so we don't check it.
+
+ // data->obj may be NULL, so we don't check it.
+
+ if (data->interp < 0) {
+ _PyErr_SetString(tstate, PyExc_SystemError, "missing interp");
+ return -1;
+ }
+
+ if (data->new_object == NULL) {
+ _PyErr_SetString(tstate, PyExc_SystemError, "missing new_object func");
+ return -1;
+ }
+
+ // data->free may be NULL, so we don't check it.
+
+ return 0;
+}
+
+crossinterpdatafunc _PyCrossInterpreterData_Lookup(PyObject *);
+
+/* This is a separate func from _PyCrossInterpreterData_Lookup in order
+ to keep the registry code separate. */
+static crossinterpdatafunc
+_lookup_getdata(PyObject *obj)
+{
+ crossinterpdatafunc getdata = _PyCrossInterpreterData_Lookup(obj);
+ if (getdata == NULL && PyErr_Occurred() == 0)
+ PyErr_Format(PyExc_ValueError,
+ "%S does not support cross-interpreter data", obj);
+ return getdata;
+}
+
+int
+_PyObject_CheckCrossInterpreterData(PyObject *obj)
+{
+ crossinterpdatafunc getdata = _lookup_getdata(obj);
+ if (getdata == NULL) {
+ return -1;
+ }
+ return 0;
+}
+
+int
+_PyObject_GetCrossInterpreterData(PyObject *obj, _PyCrossInterpreterData *data)
+{
+ _PyRuntimeState *runtime = &_PyRuntime;
+ PyThreadState *tstate = current_fast_get(runtime);
+#ifdef Py_DEBUG
+ // The caller must hold the GIL
+ _Py_EnsureTstateNotNULL(tstate);
+#endif
+ PyInterpreterState *interp = tstate->interp;
+
+ // Reset data before re-populating.
+ *data = (_PyCrossInterpreterData){0};
+ data->interp = -1;
+
+ // Call the "getdata" func for the object.
+ Py_INCREF(obj);
+ crossinterpdatafunc getdata = _lookup_getdata(obj);
+ if (getdata == NULL) {
+ Py_DECREF(obj);
+ return -1;
+ }
+ int res = getdata(tstate, obj, data);
+ Py_DECREF(obj);
+ if (res != 0) {
+ return -1;
+ }
+
+ // Fill in the blanks and validate the result.
+ data->interp = interp->id;
+ if (_check_xidata(tstate, data) != 0) {
+ (void)_PyCrossInterpreterData_Release(data);
+ return -1;
+ }
+
+ return 0;
+}
+
+PyObject *
+_PyCrossInterpreterData_NewObject(_PyCrossInterpreterData *data)
+{
+ return data->new_object(data);
+}
+
+static int
+_release_xidata_pending(void *data)
+{
+ _xidata_clear((_PyCrossInterpreterData *)data);
+ return 0;
+}
+
+static int
+_xidata_release_and_rawfree_pending(void *data)
+{
+ _xidata_clear((_PyCrossInterpreterData *)data);
+ PyMem_RawFree(data);
+ return 0;
+}
+
+static int
+_xidata_release(_PyCrossInterpreterData *data, int rawfree)
+{
+ if ((data->data == NULL || data->free == NULL) && data->obj == NULL) {
+ // Nothing to release!
+ if (rawfree) {
+ PyMem_RawFree(data);
+ }
+ else {
+ data->data = NULL;
+ }
+ return 0;
+ }
+
+ // Switch to the original interpreter.
+ PyInterpreterState *interp = _PyInterpreterState_LookUpID(data->interp);
+ if (interp == NULL) {
+ // The interpreter was already destroyed.
+ // This function shouldn't have been called.
+ // XXX Someone leaked some memory...
+ assert(PyErr_Occurred());
+ if (rawfree) {
+ PyMem_RawFree(data);
+ }
+ return -1;
+ }
+
+ // "Release" the data and/or the object.
+ if (interp == current_fast_get(interp->runtime)->interp) {
+ _xidata_clear(data);
+ if (rawfree) {
+ PyMem_RawFree(data);
+ }
+ }
+ else {
+ int (*func)(void *) = _release_xidata_pending;
+ if (rawfree) {
+ func = _xidata_release_and_rawfree_pending;
+ }
+ // XXX Emit a warning if this fails?
+ _PyEval_AddPendingCall(interp, func, data, 0);
+ }
+ return 0;
+}
+
+int
+_PyCrossInterpreterData_Release(_PyCrossInterpreterData *data)
+{
+ return _xidata_release(data, 0);
+}
+
+int
+_PyCrossInterpreterData_ReleaseAndRawFree(_PyCrossInterpreterData *data)
+{
+ return _xidata_release(data, 1);
+}
+
+/* registry of {type -> crossinterpdatafunc} */
+
+/* For now we use a global registry of shareable classes. An
+ alternative would be to add a tp_* slot for a class's
+ crossinterpdatafunc. It would be simpler and more efficient. */
+
+static int
+_xidregistry_add_type(struct _xidregistry *xidregistry,
+ PyTypeObject *cls, crossinterpdatafunc getdata)
+{
+ struct _xidregitem *newhead = PyMem_RawMalloc(sizeof(struct _xidregitem));
+ if (newhead == NULL) {
+ return -1;
+ }
+ *newhead = (struct _xidregitem){
+ // We do not keep a reference, to avoid keeping the class alive.
+ .cls = cls,
+ .refcount = 1,
+ .getdata = getdata,
+ };
+ if (cls->tp_flags & Py_TPFLAGS_HEAPTYPE) {
+ // XXX Assign a callback to clear the entry from the registry?
+ newhead->weakref = PyWeakref_NewRef((PyObject *)cls, NULL);
+ if (newhead->weakref == NULL) {
+ PyMem_RawFree(newhead);
+ return -1;
+ }
+ }
+ newhead->next = xidregistry->head;
+ if (newhead->next != NULL) {
+ newhead->next->prev = newhead;
+ }
+ xidregistry->head = newhead;
+ return 0;
+}
+
+static struct _xidregitem *
+_xidregistry_remove_entry(struct _xidregistry *xidregistry,
+ struct _xidregitem *entry)
+{
+ struct _xidregitem *next = entry->next;
+ if (entry->prev != NULL) {
+ assert(entry->prev->next == entry);
+ entry->prev->next = next;
+ }
+ else {
+ assert(xidregistry->head == entry);
+ xidregistry->head = next;
+ }
+ if (next != NULL) {
+ next->prev = entry->prev;
+ }
+ Py_XDECREF(entry->weakref);
+ PyMem_RawFree(entry);
+ return next;
+}
+
+static void
+_xidregistry_clear(struct _xidregistry *xidregistry)
+{
+ struct _xidregitem *cur = xidregistry->head;
+ xidregistry->head = NULL;
+ while (cur != NULL) {
+ struct _xidregitem *next = cur->next;
+ Py_XDECREF(cur->weakref);
+ PyMem_RawFree(cur);
+ cur = next;
+ }
+}
+
+static struct _xidregitem *
+_xidregistry_find_type(struct _xidregistry *xidregistry, PyTypeObject *cls)
+{
+ struct _xidregitem *cur = xidregistry->head;
+ while (cur != NULL) {
+ if (cur->weakref != NULL) {
+ // cur is/was a heap type.
+ PyObject *registered = PyWeakref_GetObject(cur->weakref);
+ assert(registered != NULL);
+ if (registered == Py_None) {
+ // The weakly ref'ed object was freed.
+ cur = _xidregistry_remove_entry(xidregistry, cur);
+ continue;
+ }
+ assert(PyType_Check(registered));
+ assert(cur->cls == (PyTypeObject *)registered);
+ assert(cur->cls->tp_flags & Py_TPFLAGS_HEAPTYPE);
+ //Py_DECREF(registered);
+ }
+ if (cur->cls == cls) {
+ return cur;
+ }
+ cur = cur->next;
+ }
+ return NULL;
+}
+
+static inline struct _xidregistry *
+_get_xidregistry(PyInterpreterState *interp, PyTypeObject *cls)
+{
+ struct _xidregistry *xidregistry = &interp->runtime->xidregistry;
+ if (cls->tp_flags & Py_TPFLAGS_HEAPTYPE) {
+ assert(interp->xidregistry.mutex == xidregistry->mutex);
+ xidregistry = &interp->xidregistry;
+ }
+ return xidregistry;
+}
+
+static void _register_builtins_for_crossinterpreter_data(struct _xidregistry *xidregistry);
+
+static inline void
+_ensure_builtins_xid(PyInterpreterState *interp, struct _xidregistry *xidregistry)
+{
+ if (xidregistry != &interp->xidregistry) {
+ assert(xidregistry == &interp->runtime->xidregistry);
+ if (xidregistry->head == NULL) {
+ _register_builtins_for_crossinterpreter_data(xidregistry);
+ }
+ }
+}
+
+int
+_PyCrossInterpreterData_RegisterClass(PyTypeObject *cls,
+ crossinterpdatafunc getdata)
+{
+ if (!PyType_Check(cls)) {
+ PyErr_Format(PyExc_ValueError, "only classes may be registered");
+ return -1;
+ }
+ if (getdata == NULL) {
+ PyErr_Format(PyExc_ValueError, "missing 'getdata' func");
+ return -1;
+ }
+
+ int res = 0;
+ PyInterpreterState *interp = _PyInterpreterState_GET();
+ struct _xidregistry *xidregistry = _get_xidregistry(interp, cls);
+ PyThread_acquire_lock(xidregistry->mutex, WAIT_LOCK);
+
+ _ensure_builtins_xid(interp, xidregistry);
+
+ struct _xidregitem *matched = _xidregistry_find_type(xidregistry, cls);
+ if (matched != NULL) {
+ assert(matched->getdata == getdata);
+ matched->refcount += 1;
+ goto finally;
+ }
+
+ res = _xidregistry_add_type(xidregistry, cls, getdata);
+
+finally:
+ PyThread_release_lock(xidregistry->mutex);
+ return res;
+}
+
+int
+_PyCrossInterpreterData_UnregisterClass(PyTypeObject *cls)
+{
+ int res = 0;
+ PyInterpreterState *interp = _PyInterpreterState_GET();
+ struct _xidregistry *xidregistry = _get_xidregistry(interp, cls);
+ PyThread_acquire_lock(xidregistry->mutex, WAIT_LOCK);
+
+ struct _xidregitem *matched = _xidregistry_find_type(xidregistry, cls);
+ if (matched != NULL) {
+ assert(matched->refcount > 0);
+ matched->refcount -= 1;
+ if (matched->refcount == 0) {
+ (void)_xidregistry_remove_entry(xidregistry, matched);
+ }
+ res = 1;
+ }
+
+ PyThread_release_lock(xidregistry->mutex);
+ return res;
+}
+
+
+/* Cross-interpreter objects are looked up by exact match on the class.
+ We can reassess this policy when we move from a global registry to a
+ tp_* slot. */
+
+crossinterpdatafunc
+_PyCrossInterpreterData_Lookup(PyObject *obj)
+{
+ PyTypeObject *cls = Py_TYPE(obj);
+
+ PyInterpreterState *interp = _PyInterpreterState_GET();
+ struct _xidregistry *xidregistry = _get_xidregistry(interp, cls);
+ PyThread_acquire_lock(xidregistry->mutex, WAIT_LOCK);
+
+ _ensure_builtins_xid(interp, xidregistry);
+
+ struct _xidregitem *matched = _xidregistry_find_type(xidregistry, cls);
+ crossinterpdatafunc func = matched != NULL ? matched->getdata : NULL;
+
+ PyThread_release_lock(xidregistry->mutex);
+ return func;
+}
+
+/* cross-interpreter data for builtin types */
+
+struct _shared_bytes_data {
+ char *bytes;
+ Py_ssize_t len;
+};
+
+static PyObject *
+_new_bytes_object(_PyCrossInterpreterData *data)
+{
+ struct _shared_bytes_data *shared = (struct _shared_bytes_data *)(data->data);
+ return PyBytes_FromStringAndSize(shared->bytes, shared->len);
+}
+
+static int
+_bytes_shared(PyThreadState *tstate, PyObject *obj,
+ _PyCrossInterpreterData *data)
+{
+ if (_PyCrossInterpreterData_InitWithSize(
+ data, tstate->interp, sizeof(struct _shared_bytes_data), obj,
+ _new_bytes_object
+ ) < 0)
+ {
+ return -1;
+ }
+ struct _shared_bytes_data *shared = (struct _shared_bytes_data *)data->data;
+ if (PyBytes_AsStringAndSize(obj, &shared->bytes, &shared->len) < 0) {
+ _PyCrossInterpreterData_Clear(tstate->interp, data);
+ return -1;
+ }
+ return 0;
+}
+
+struct _shared_str_data {
+ int kind;
+ const void *buffer;
+ Py_ssize_t len;
+};
+
+static PyObject *
+_new_str_object(_PyCrossInterpreterData *data)
+{
+ struct _shared_str_data *shared = (struct _shared_str_data *)(data->data);
+ return PyUnicode_FromKindAndData(shared->kind, shared->buffer, shared->len);
+}
+
+static int
+_str_shared(PyThreadState *tstate, PyObject *obj,
+ _PyCrossInterpreterData *data)
+{
+ if (_PyCrossInterpreterData_InitWithSize(
+ data, tstate->interp, sizeof(struct _shared_str_data), obj,
+ _new_str_object
+ ) < 0)
+ {
+ return -1;
+ }
+ struct _shared_str_data *shared = (struct _shared_str_data *)data->data;
+ shared->kind = PyUnicode_KIND(obj);
+ shared->buffer = PyUnicode_DATA(obj);
+ shared->len = PyUnicode_GET_LENGTH(obj);
+ return 0;
+}
+
+static PyObject *
+_new_long_object(_PyCrossInterpreterData *data)
+{
+ return PyLong_FromSsize_t((Py_ssize_t)(data->data));
+}
+
+static int
+_long_shared(PyThreadState *tstate, PyObject *obj,
+ _PyCrossInterpreterData *data)
+{
+ /* Note that this means the size of shareable ints is bounded by
+ * sys.maxsize. Hence on 32-bit architectures that is half the
+ * size of maximum shareable ints on 64-bit.
+ */
+ Py_ssize_t value = PyLong_AsSsize_t(obj);
+ if (value == -1 && PyErr_Occurred()) {
+ if (PyErr_ExceptionMatches(PyExc_OverflowError)) {
+ PyErr_SetString(PyExc_OverflowError, "try sending as bytes");
+ }
+ return -1;
+ }
+ _PyCrossInterpreterData_Init(data, tstate->interp, (void *)value, NULL,
+ _new_long_object);
+ // data->obj and data->free remain NULL
+ return 0;
+}
+
+static PyObject *
+_new_none_object(_PyCrossInterpreterData *data)
+{
+ // XXX Singleton refcounts are problematic across interpreters...
+ return Py_NewRef(Py_None);
+}
+
+static int
+_none_shared(PyThreadState *tstate, PyObject *obj,
+ _PyCrossInterpreterData *data)
+{
+ _PyCrossInterpreterData_Init(data, tstate->interp, NULL, NULL,
+ _new_none_object);
+ // data->data, data->obj and data->free remain NULL
+ return 0;
+}
+
+static void
+_register_builtins_for_crossinterpreter_data(struct _xidregistry *xidregistry)
+{
+ // None
+ if (_xidregistry_add_type(xidregistry, (PyTypeObject *)PyObject_Type(Py_None), _none_shared) != 0) {
+ Py_FatalError("could not register None for cross-interpreter sharing");
+ }
+
+ // int
+ if (_xidregistry_add_type(xidregistry, &PyLong_Type, _long_shared) != 0) {
+ Py_FatalError("could not register int for cross-interpreter sharing");
+ }
+
+ // bytes
+ if (_xidregistry_add_type(xidregistry, &PyBytes_Type, _bytes_shared) != 0) {
+ Py_FatalError("could not register bytes for cross-interpreter sharing");
+ }
+
+ // str
+ if (_xidregistry_add_type(xidregistry, &PyUnicode_Type, _str_shared) != 0) {
+ Py_FatalError("could not register str for cross-interpreter sharing");
+ }
+}
+
+
+/*************/
+/* Other API */
+/*************/
+
+_PyFrameEvalFunction
+_PyInterpreterState_GetEvalFrameFunc(PyInterpreterState *interp)
+{
+ if (interp->eval_frame == NULL) {
+ return _PyEval_EvalFrameDefault;
+ }
+ return interp->eval_frame;
+}
+
+
+void
+_PyInterpreterState_SetEvalFrameFunc(PyInterpreterState *interp,
+ _PyFrameEvalFunction eval_frame)
+{
+ if (eval_frame == _PyEval_EvalFrameDefault) {
+ interp->eval_frame = NULL;
+ }
+ else {
+ interp->eval_frame = eval_frame;
+ }
+}
+
+
+const PyConfig*
+_PyInterpreterState_GetConfig(PyInterpreterState *interp)
+{
+ return &interp->config;
+}
+
+
+int
+_PyInterpreterState_GetConfigCopy(PyConfig *config)
+{
+ PyInterpreterState *interp = PyInterpreterState_Get();
+
+ PyStatus status = _PyConfig_Copy(config, &interp->config);
+ if (PyStatus_Exception(status)) {
+ _PyErr_SetFromPyStatus(status);
+ return -1;
+ }
+ return 0;
+}
+
+
+const PyConfig*
+_Py_GetConfig(void)
+{
+ _PyRuntimeState *runtime = &_PyRuntime;
+ assert(PyGILState_Check());
+ PyThreadState *tstate = current_fast_get(runtime);
+ _Py_EnsureTstateNotNULL(tstate);
+ return _PyInterpreterState_GetConfig(tstate->interp);
+}
+
+
+int
+_PyInterpreterState_HasFeature(PyInterpreterState *interp, unsigned long feature)
+{
+ return ((interp->feature_flags & feature) != 0);
+}
+
+
+#define MINIMUM_OVERHEAD 1000
+
+static PyObject **
+push_chunk(PyThreadState *tstate, int size)
+{
+ int allocate_size = DATA_STACK_CHUNK_SIZE;
+ while (allocate_size < (int)sizeof(PyObject*)*(size + MINIMUM_OVERHEAD)) {
+ allocate_size *= 2;
+ }
+ _PyStackChunk *new = allocate_chunk(allocate_size, tstate->datastack_chunk);
+ if (new == NULL) {
+ return NULL;
+ }
+ if (tstate->datastack_chunk) {
+ tstate->datastack_chunk->top = tstate->datastack_top -
+ &tstate->datastack_chunk->data[0];
+ }
+ tstate->datastack_chunk = new;
+ tstate->datastack_limit = (PyObject **)(((char *)new) + allocate_size);
+ // When new is the "root" chunk (i.e. new->previous == NULL), we can keep
+ // _PyThreadState_PopFrame from freeing it later by "skipping" over the
+ // first element:
+ PyObject **res = &new->data[new->previous == NULL];
+ tstate->datastack_top = res + size;
+ return res;
+}
+
+_PyInterpreterFrame *
+_PyThreadState_PushFrame(PyThreadState *tstate, size_t size)
+{
+ assert(size < INT_MAX/sizeof(PyObject *));
+ if (_PyThreadState_HasStackSpace(tstate, (int)size)) {
+ _PyInterpreterFrame *res = (_PyInterpreterFrame *)tstate->datastack_top;
+ tstate->datastack_top += size;
+ return res;
+ }
+ return (_PyInterpreterFrame *)push_chunk(tstate, (int)size);
+}
+
+void
+_PyThreadState_PopFrame(PyThreadState *tstate, _PyInterpreterFrame * frame)
+{
+ assert(tstate->datastack_chunk);
+ PyObject **base = (PyObject **)frame;
+ if (base == &tstate->datastack_chunk->data[0]) {
+ _PyStackChunk *chunk = tstate->datastack_chunk;
+ _PyStackChunk *previous = chunk->previous;
+ // push_chunk ensures that the root chunk is never popped:
+ assert(previous);
+ tstate->datastack_top = &previous->data[previous->top];
+ tstate->datastack_chunk = previous;
+ _PyObject_VirtualFree(chunk, chunk->size);
+ tstate->datastack_limit = (PyObject **)(((char *)previous) + previous->size);
+ }
+ else {
+ assert(tstate->datastack_top);
+ assert(tstate->datastack_top >= base);
+ tstate->datastack_top = base;
+ }
+}
+
+
+#ifndef NDEBUG
+// Check that a Python thread state valid. In practice, this function is used
+// on a Python debug build to check if 'tstate' is a dangling pointer, if the
+// PyThreadState memory has been freed.
+//
+// Usage:
+//
+// assert(_PyThreadState_CheckConsistency(tstate));
+int
+_PyThreadState_CheckConsistency(PyThreadState *tstate)
+{
+ assert(!_PyMem_IsPtrFreed(tstate));
+ assert(!_PyMem_IsPtrFreed(tstate->interp));
+ return 1;
+}
+#endif
+
+
+// Check if a Python thread must exit immediately, rather than taking the GIL
+// if Py_Finalize() has been called.
+//
+// When this function is called by a daemon thread after Py_Finalize() has been
+// called, the GIL does no longer exist.
+//
+// tstate can be a dangling pointer (point to freed memory): only tstate value
+// is used, the pointer is not deferenced.
+//
+// tstate must be non-NULL.
+int
+_PyThreadState_MustExit(PyThreadState *tstate)
+{
+ /* bpo-39877: Access _PyRuntime directly rather than using
+ tstate->interp->runtime to support calls from Python daemon threads.
+ After Py_Finalize() has been called, tstate can be a dangling pointer:
+ point to PyThreadState freed memory. */
+ unsigned long finalizing_id = _PyRuntimeState_GetFinalizingID(&_PyRuntime);
+ PyThreadState *finalizing = _PyRuntimeState_GetFinalizing(&_PyRuntime);
+ if (finalizing == NULL) {
+ // XXX This isn't completely safe from daemon thraeds,
+ // since tstate might be a dangling pointer.
+ finalizing = _PyInterpreterState_GetFinalizing(tstate->interp);
+ finalizing_id = _PyInterpreterState_GetFinalizingID(tstate->interp);
+ }
+ // XXX else check &_PyRuntime._main_interpreter._initial_thread
+ if (finalizing == NULL) {
+ return 0;
+ }
+ else if (finalizing == tstate) {
+ return 0;
+ }
+ else if (finalizing_id == PyThread_get_thread_ident()) {
+ /* gh-109793: we must have switched interpreters. */
+ return 0;
+ }
+ return 1;
+}
+
+
+#ifdef __cplusplus
+}
+#endif
diff --git a/contrib/tools/python3/Python/pystrcmp.c b/contrib/tools/python3/Python/pystrcmp.c
new file mode 100644
index 00000000000..9224ce4c706
--- /dev/null
+++ b/contrib/tools/python3/Python/pystrcmp.c
@@ -0,0 +1,30 @@
+/* Cross platform case insensitive string compare functions
+ */
+
+#include "Python.h"
+
+int
+PyOS_mystrnicmp(const char *s1, const char *s2, Py_ssize_t size)
+{
+ const unsigned char *p1, *p2;
+ if (size == 0)
+ return 0;
+ p1 = (const unsigned char *)s1;
+ p2 = (const unsigned char *)s2;
+ for (; (--size > 0) && *p1 && *p2 && (tolower(*p1) == tolower(*p2));
+ p1++, p2++) {
+ ;
+ }
+ return tolower(*p1) - tolower(*p2);
+}
+
+int
+PyOS_mystricmp(const char *s1, const char *s2)
+{
+ const unsigned char *p1 = (const unsigned char *)s1;
+ const unsigned char *p2 = (const unsigned char *)s2;
+ for (; *p1 && *p2 && (tolower(*p1) == tolower(*p2)); p1++, p2++) {
+ ;
+ }
+ return (tolower(*p1) - tolower(*p2));
+}
diff --git a/contrib/tools/python3/Python/pystrhex.c b/contrib/tools/python3/Python/pystrhex.c
new file mode 100644
index 00000000000..e4f06d76639
--- /dev/null
+++ b/contrib/tools/python3/Python/pystrhex.c
@@ -0,0 +1,174 @@
+/* Format bytes as hexadecimal */
+
+#include "Python.h"
+#include "pycore_strhex.h" // _Py_strhex_with_sep()
+#include <stdlib.h> // abs()
+
+static PyObject *_Py_strhex_impl(const char* argbuf, const Py_ssize_t arglen,
+ PyObject* sep, int bytes_per_sep_group,
+ const int return_bytes)
+{
+ assert(arglen >= 0);
+
+ Py_UCS1 sep_char = 0;
+ if (sep) {
+ Py_ssize_t seplen = PyObject_Length((PyObject*)sep);
+ if (seplen < 0) {
+ return NULL;
+ }
+ if (seplen != 1) {
+ PyErr_SetString(PyExc_ValueError, "sep must be length 1.");
+ return NULL;
+ }
+ if (PyUnicode_Check(sep)) {
+ if (PyUnicode_READY(sep))
+ return NULL;
+ if (PyUnicode_KIND(sep) != PyUnicode_1BYTE_KIND) {
+ PyErr_SetString(PyExc_ValueError, "sep must be ASCII.");
+ return NULL;
+ }
+ sep_char = PyUnicode_READ_CHAR(sep, 0);
+ }
+ else if (PyBytes_Check(sep)) {
+ sep_char = PyBytes_AS_STRING(sep)[0];
+ }
+ else {
+ PyErr_SetString(PyExc_TypeError, "sep must be str or bytes.");
+ return NULL;
+ }
+ if (sep_char > 127 && !return_bytes) {
+ PyErr_SetString(PyExc_ValueError, "sep must be ASCII.");
+ return NULL;
+ }
+ }
+ else {
+ bytes_per_sep_group = 0;
+ }
+
+ unsigned int abs_bytes_per_sep = abs(bytes_per_sep_group);
+ Py_ssize_t resultlen = 0;
+ if (bytes_per_sep_group && arglen > 0) {
+ /* How many sep characters we'll be inserting. */
+ resultlen = (arglen - 1) / abs_bytes_per_sep;
+ }
+ /* Bounds checking for our Py_ssize_t indices. */
+ if (arglen >= PY_SSIZE_T_MAX / 2 - resultlen) {
+ return PyErr_NoMemory();
+ }
+ resultlen += arglen * 2;
+
+ if ((size_t)abs_bytes_per_sep >= (size_t)arglen) {
+ bytes_per_sep_group = 0;
+ abs_bytes_per_sep = 0;
+ }
+
+ PyObject *retval;
+ Py_UCS1 *retbuf;
+ if (return_bytes) {
+ /* If _PyBytes_FromSize() were public we could avoid malloc+copy. */
+ retval = PyBytes_FromStringAndSize(NULL, resultlen);
+ if (!retval) {
+ return NULL;
+ }
+ retbuf = (Py_UCS1 *)PyBytes_AS_STRING(retval);
+ }
+ else {
+ retval = PyUnicode_New(resultlen, 127);
+ if (!retval) {
+ return NULL;
+ }
+ retbuf = PyUnicode_1BYTE_DATA(retval);
+ }
+
+ /* Hexlify */
+ Py_ssize_t i, j;
+ unsigned char c;
+
+ if (bytes_per_sep_group == 0) {
+ for (i = j = 0; i < arglen; ++i) {
+ assert((j + 1) < resultlen);
+ c = argbuf[i];
+ retbuf[j++] = Py_hexdigits[c >> 4];
+ retbuf[j++] = Py_hexdigits[c & 0x0f];
+ }
+ assert(j == resultlen);
+ }
+ else {
+ /* The number of complete chunk+sep periods */
+ Py_ssize_t chunks = (arglen - 1) / abs_bytes_per_sep;
+ Py_ssize_t chunk;
+ unsigned int k;
+
+ if (bytes_per_sep_group < 0) {
+ i = j = 0;
+ for (chunk = 0; chunk < chunks; chunk++) {
+ for (k = 0; k < abs_bytes_per_sep; k++) {
+ c = argbuf[i++];
+ retbuf[j++] = Py_hexdigits[c >> 4];
+ retbuf[j++] = Py_hexdigits[c & 0x0f];
+ }
+ retbuf[j++] = sep_char;
+ }
+ while (i < arglen) {
+ c = argbuf[i++];
+ retbuf[j++] = Py_hexdigits[c >> 4];
+ retbuf[j++] = Py_hexdigits[c & 0x0f];
+ }
+ assert(j == resultlen);
+ }
+ else {
+ i = arglen - 1;
+ j = resultlen - 1;
+ for (chunk = 0; chunk < chunks; chunk++) {
+ for (k = 0; k < abs_bytes_per_sep; k++) {
+ c = argbuf[i--];
+ retbuf[j--] = Py_hexdigits[c & 0x0f];
+ retbuf[j--] = Py_hexdigits[c >> 4];
+ }
+ retbuf[j--] = sep_char;
+ }
+ while (i >= 0) {
+ c = argbuf[i--];
+ retbuf[j--] = Py_hexdigits[c & 0x0f];
+ retbuf[j--] = Py_hexdigits[c >> 4];
+ }
+ assert(j == -1);
+ }
+ }
+
+#ifdef Py_DEBUG
+ if (!return_bytes) {
+ assert(_PyUnicode_CheckConsistency(retval, 1));
+ }
+#endif
+
+ return retval;
+}
+
+PyObject * _Py_strhex(const char* argbuf, const Py_ssize_t arglen)
+{
+ return _Py_strhex_impl(argbuf, arglen, NULL, 0, 0);
+}
+
+/* Same as above but returns a bytes() instead of str() to avoid the
+ * need to decode the str() when bytes are needed. */
+PyObject* _Py_strhex_bytes(const char* argbuf, const Py_ssize_t arglen)
+{
+ return _Py_strhex_impl(argbuf, arglen, NULL, 0, 1);
+}
+
+/* These variants include support for a separator between every N bytes: */
+
+PyObject* _Py_strhex_with_sep(const char* argbuf, const Py_ssize_t arglen,
+ PyObject* sep, const int bytes_per_group)
+{
+ return _Py_strhex_impl(argbuf, arglen, sep, bytes_per_group, 0);
+}
+
+/* Same as above but returns a bytes() instead of str() to avoid the
+ * need to decode the str() when bytes are needed. */
+PyObject* _Py_strhex_bytes_with_sep(const char* argbuf, const Py_ssize_t arglen,
+ PyObject* sep, const int bytes_per_group)
+{
+ return _Py_strhex_impl(argbuf, arglen, sep, bytes_per_group, 1);
+}
diff --git a/contrib/tools/python3/Python/pystrtod.c b/contrib/tools/python3/Python/pystrtod.c
new file mode 100644
index 00000000000..9bb060e3d11
--- /dev/null
+++ b/contrib/tools/python3/Python/pystrtod.c
@@ -0,0 +1,1285 @@
+/* -*- Mode: C; c-file-style: "python" -*- */
+
+#include <Python.h>
+#include "pycore_dtoa.h" // _Py_dg_strtod()
+#include "pycore_pymath.h" // _PY_SHORT_FLOAT_REPR
+#include <locale.h>
+
+/* Case-insensitive string match used for nan and inf detection; t should be
+ lower-case. Returns 1 for a successful match, 0 otherwise. */
+
+static int
+case_insensitive_match(const char *s, const char *t)
+{
+ while(*t && Py_TOLOWER(*s) == *t) {
+ s++;
+ t++;
+ }
+ return *t ? 0 : 1;
+}
+
+/* _Py_parse_inf_or_nan: Attempt to parse a string of the form "nan", "inf" or
+ "infinity", with an optional leading sign of "+" or "-". On success,
+ return the NaN or Infinity as a double and set *endptr to point just beyond
+ the successfully parsed portion of the string. On failure, return -1.0 and
+ set *endptr to point to the start of the string. */
+double
+_Py_parse_inf_or_nan(const char *p, char **endptr)
+{
+ double retval;
+ const char *s;
+ int negate = 0;
+
+ s = p;
+ if (*s == '-') {
+ negate = 1;
+ s++;
+ }
+ else if (*s == '+') {
+ s++;
+ }
+ if (case_insensitive_match(s, "inf")) {
+ s += 3;
+ if (case_insensitive_match(s, "inity"))
+ s += 5;
+ retval = negate ? -Py_HUGE_VAL : Py_HUGE_VAL;
+ }
+ else if (case_insensitive_match(s, "nan")) {
+ s += 3;
+ retval = negate ? -fabs(Py_NAN) : fabs(Py_NAN);
+ }
+ else {
+ s = p;
+ retval = -1.0;
+ }
+ *endptr = (char *)s;
+ return retval;
+}
+
+
+/**
+ * _PyOS_ascii_strtod:
+ * @nptr: the string to convert to a numeric value.
+ * @endptr: if non-%NULL, it returns the character after
+ * the last character used in the conversion.
+ *
+ * Converts a string to a #gdouble value.
+ * This function behaves like the standard strtod() function
+ * does in the C locale. It does this without actually
+ * changing the current locale, since that would not be
+ * thread-safe.
+ *
+ * This function is typically used when reading configuration
+ * files or other non-user input that should be locale independent.
+ * To handle input from the user you should normally use the
+ * locale-sensitive system strtod() function.
+ *
+ * If the correct value would cause overflow, plus or minus %HUGE_VAL
+ * is returned (according to the sign of the value), and %ERANGE is
+ * stored in %errno. If the correct value would cause underflow,
+ * zero is returned and %ERANGE is stored in %errno.
+ * If memory allocation fails, %ENOMEM is stored in %errno.
+ *
+ * This function resets %errno before calling strtod() so that
+ * you can reliably detect overflow and underflow.
+ *
+ * Return value: the #gdouble value.
+ **/
+
+#if _PY_SHORT_FLOAT_REPR == 1
+
+static double
+_PyOS_ascii_strtod(const char *nptr, char **endptr)
+{
+ double result;
+ _Py_SET_53BIT_PRECISION_HEADER;
+
+ assert(nptr != NULL);
+ /* Set errno to zero, so that we can distinguish zero results
+ and underflows */
+ errno = 0;
+
+ _Py_SET_53BIT_PRECISION_START;
+ result = _Py_dg_strtod(nptr, endptr);
+ _Py_SET_53BIT_PRECISION_END;
+
+ if (*endptr == nptr)
+ /* string might represent an inf or nan */
+ result = _Py_parse_inf_or_nan(nptr, endptr);
+
+ return result;
+
+}
+
+#else
+
+/*
+ Use system strtod; since strtod is locale aware, we may
+ have to first fix the decimal separator.
+
+ Note that unlike _Py_dg_strtod, the system strtod may not always give
+ correctly rounded results.
+*/
+
+static double
+_PyOS_ascii_strtod(const char *nptr, char **endptr)
+{
+ char *fail_pos;
+ double val;
+ struct lconv *locale_data;
+ const char *decimal_point;
+ size_t decimal_point_len;
+ const char *p, *decimal_point_pos;
+ const char *end = NULL; /* Silence gcc */
+ const char *digits_pos = NULL;
+ int negate = 0;
+
+ assert(nptr != NULL);
+
+ fail_pos = NULL;
+
+ locale_data = localeconv();
+ decimal_point = locale_data->decimal_point;
+ decimal_point_len = strlen(decimal_point);
+
+ assert(decimal_point_len != 0);
+
+ decimal_point_pos = NULL;
+
+ /* Parse infinities and nans */
+ val = _Py_parse_inf_or_nan(nptr, endptr);
+ if (*endptr != nptr)
+ return val;
+
+ /* Set errno to zero, so that we can distinguish zero results
+ and underflows */
+ errno = 0;
+
+ /* We process the optional sign manually, then pass the remainder to
+ the system strtod. This ensures that the result of an underflow
+ has the correct sign. (bug #1725) */
+ p = nptr;
+ /* Process leading sign, if present */
+ if (*p == '-') {
+ negate = 1;
+ p++;
+ }
+ else if (*p == '+') {
+ p++;
+ }
+
+ /* Some platform strtods accept hex floats; Python shouldn't (at the
+ moment), so we check explicitly for strings starting with '0x'. */
+ if (*p == '0' && (*(p+1) == 'x' || *(p+1) == 'X'))
+ goto invalid_string;
+
+ /* Check that what's left begins with a digit or decimal point */
+ if (!Py_ISDIGIT(*p) && *p != '.')
+ goto invalid_string;
+
+ digits_pos = p;
+ if (decimal_point[0] != '.' ||
+ decimal_point[1] != 0)
+ {
+ /* Look for a '.' in the input; if present, it'll need to be
+ swapped for the current locale's decimal point before we
+ call strtod. On the other hand, if we find the current
+ locale's decimal point then the input is invalid. */
+ while (Py_ISDIGIT(*p))
+ p++;
+
+ if (*p == '.')
+ {
+ decimal_point_pos = p++;
+
+ /* locate end of number */
+ while (Py_ISDIGIT(*p))
+ p++;
+
+ if (*p == 'e' || *p == 'E')
+ p++;
+ if (*p == '+' || *p == '-')
+ p++;
+ while (Py_ISDIGIT(*p))
+ p++;
+ end = p;
+ }
+ else if (strncmp(p, decimal_point, decimal_point_len) == 0)
+ /* Python bug #1417699 */
+ goto invalid_string;
+ /* For the other cases, we need not convert the decimal
+ point */
+ }
+
+ if (decimal_point_pos) {
+ char *copy, *c;
+ /* Create a copy of the input, with the '.' converted to the
+ locale-specific decimal point */
+ copy = (char *)PyMem_Malloc(end - digits_pos +
+ 1 + decimal_point_len);
+ if (copy == NULL) {
+ *endptr = (char *)nptr;
+ errno = ENOMEM;
+ return val;
+ }
+
+ c = copy;
+ memcpy(c, digits_pos, decimal_point_pos - digits_pos);
+ c += decimal_point_pos - digits_pos;
+ memcpy(c, decimal_point, decimal_point_len);
+ c += decimal_point_len;
+ memcpy(c, decimal_point_pos + 1,
+ end - (decimal_point_pos + 1));
+ c += end - (decimal_point_pos + 1);
+ *c = 0;
+
+ val = strtod(copy, &fail_pos);
+
+ if (fail_pos)
+ {
+ if (fail_pos > decimal_point_pos)
+ fail_pos = (char *)digits_pos +
+ (fail_pos - copy) -
+ (decimal_point_len - 1);
+ else
+ fail_pos = (char *)digits_pos +
+ (fail_pos - copy);
+ }
+
+ PyMem_Free(copy);
+
+ }
+ else {
+ val = strtod(digits_pos, &fail_pos);
+ }
+
+ if (fail_pos == digits_pos)
+ goto invalid_string;
+
+ if (negate && fail_pos != nptr)
+ val = -val;
+ *endptr = fail_pos;
+
+ return val;
+
+ invalid_string:
+ *endptr = (char*)nptr;
+ errno = EINVAL;
+ return -1.0;
+}
+
+#endif
+
+/* PyOS_string_to_double converts a null-terminated byte string s (interpreted
+ as a string of ASCII characters) to a float. The string should not have
+ leading or trailing whitespace. The conversion is independent of the
+ current locale.
+
+ If endptr is NULL, try to convert the whole string. Raise ValueError and
+ return -1.0 if the string is not a valid representation of a floating-point
+ number.
+
+ If endptr is non-NULL, try to convert as much of the string as possible.
+ If no initial segment of the string is the valid representation of a
+ floating-point number then *endptr is set to point to the beginning of the
+ string, -1.0 is returned and again ValueError is raised.
+
+ On overflow (e.g., when trying to convert '1e500' on an IEEE 754 machine),
+ if overflow_exception is NULL then +-Py_HUGE_VAL is returned, and no Python
+ exception is raised. Otherwise, overflow_exception should point to
+ a Python exception, this exception will be raised, -1.0 will be returned,
+ and *endptr will point just past the end of the converted value.
+
+ If any other failure occurs (for example lack of memory), -1.0 is returned
+ and the appropriate Python exception will have been set.
+*/
+
+double
+PyOS_string_to_double(const char *s,
+ char **endptr,
+ PyObject *overflow_exception)
+{
+ double x, result=-1.0;
+ char *fail_pos;
+
+ errno = 0;
+ x = _PyOS_ascii_strtod(s, &fail_pos);
+
+ if (errno == ENOMEM) {
+ PyErr_NoMemory();
+ fail_pos = (char *)s;
+ }
+ else if (!endptr && (fail_pos == s || *fail_pos != '\0'))
+ PyErr_Format(PyExc_ValueError,
+ "could not convert string to float: "
+ "'%.200s'", s);
+ else if (fail_pos == s)
+ PyErr_Format(PyExc_ValueError,
+ "could not convert string to float: "
+ "'%.200s'", s);
+ else if (errno == ERANGE && fabs(x) >= 1.0 && overflow_exception)
+ PyErr_Format(overflow_exception,
+ "value too large to convert to float: "
+ "'%.200s'", s);
+ else
+ result = x;
+
+ if (endptr != NULL)
+ *endptr = fail_pos;
+ return result;
+}
+
+/* Remove underscores that follow the underscore placement rule from
+ the string and then call the `innerfunc` function on the result.
+ It should return a new object or NULL on exception.
+
+ `what` is used for the error message emitted when underscores are detected
+ that don't follow the rule. `arg` is an opaque pointer passed to the inner
+ function.
+
+ This is used to implement underscore-agnostic conversion for floats
+ and complex numbers.
+*/
+PyObject *
+_Py_string_to_number_with_underscores(
+ const char *s, Py_ssize_t orig_len, const char *what, PyObject *obj, void *arg,
+ PyObject *(*innerfunc)(const char *, Py_ssize_t, void *))
+{
+ char prev;
+ const char *p, *last;
+ char *dup, *end;
+ PyObject *result;
+
+ assert(s[orig_len] == '\0');
+
+ if (strchr(s, '_') == NULL) {
+ return innerfunc(s, orig_len, arg);
+ }
+
+ dup = PyMem_Malloc(orig_len + 1);
+ if (dup == NULL) {
+ return PyErr_NoMemory();
+ }
+ end = dup;
+ prev = '\0';
+ last = s + orig_len;
+ for (p = s; *p; p++) {
+ if (*p == '_') {
+ /* Underscores are only allowed after digits. */
+ if (!(prev >= '0' && prev <= '9')) {
+ goto error;
+ }
+ }
+ else {
+ *end++ = *p;
+ /* Underscores are only allowed before digits. */
+ if (prev == '_' && !(*p >= '0' && *p <= '9')) {
+ goto error;
+ }
+ }
+ prev = *p;
+ }
+ /* Underscores are not allowed at the end. */
+ if (prev == '_') {
+ goto error;
+ }
+ /* No embedded NULs allowed. */
+ if (p != last) {
+ goto error;
+ }
+ *end = '\0';
+ result = innerfunc(dup, end - dup, arg);
+ PyMem_Free(dup);
+ return result;
+
+ error:
+ PyMem_Free(dup);
+ PyErr_Format(PyExc_ValueError,
+ "could not convert string to %s: "
+ "%R", what, obj);
+ return NULL;
+}
+
+#if _PY_SHORT_FLOAT_REPR == 0
+
+/* Given a string that may have a decimal point in the current
+ locale, change it back to a dot. Since the string cannot get
+ longer, no need for a maximum buffer size parameter. */
+Py_LOCAL_INLINE(void)
+change_decimal_from_locale_to_dot(char* buffer)
+{
+ struct lconv *locale_data = localeconv();
+ const char *decimal_point = locale_data->decimal_point;
+
+ if (decimal_point[0] != '.' || decimal_point[1] != 0) {
+ size_t decimal_point_len = strlen(decimal_point);
+
+ if (*buffer == '+' || *buffer == '-')
+ buffer++;
+ while (Py_ISDIGIT(*buffer))
+ buffer++;
+ if (strncmp(buffer, decimal_point, decimal_point_len) == 0) {
+ *buffer = '.';
+ buffer++;
+ if (decimal_point_len > 1) {
+ /* buffer needs to get smaller */
+ size_t rest_len = strlen(buffer +
+ (decimal_point_len - 1));
+ memmove(buffer,
+ buffer + (decimal_point_len - 1),
+ rest_len);
+ buffer[rest_len] = 0;
+ }
+ }
+ }
+}
+
+
+/* From the C99 standard, section 7.19.6:
+The exponent always contains at least two digits, and only as many more digits
+as necessary to represent the exponent.
+*/
+#define MIN_EXPONENT_DIGITS 2
+
+/* Ensure that any exponent, if present, is at least MIN_EXPONENT_DIGITS
+ in length. */
+Py_LOCAL_INLINE(void)
+ensure_minimum_exponent_length(char* buffer, size_t buf_size)
+{
+ char *p = strpbrk(buffer, "eE");
+ if (p && (*(p + 1) == '-' || *(p + 1) == '+')) {
+ char *start = p + 2;
+ int exponent_digit_cnt = 0;
+ int leading_zero_cnt = 0;
+ int in_leading_zeros = 1;
+ int significant_digit_cnt;
+
+ /* Skip over the exponent and the sign. */
+ p += 2;
+
+ /* Find the end of the exponent, keeping track of leading
+ zeros. */
+ while (*p && Py_ISDIGIT(*p)) {
+ if (in_leading_zeros && *p == '0')
+ ++leading_zero_cnt;
+ if (*p != '0')
+ in_leading_zeros = 0;
+ ++p;
+ ++exponent_digit_cnt;
+ }
+
+ significant_digit_cnt = exponent_digit_cnt - leading_zero_cnt;
+ if (exponent_digit_cnt == MIN_EXPONENT_DIGITS) {
+ /* If there are 2 exactly digits, we're done,
+ regardless of what they contain */
+ }
+ else if (exponent_digit_cnt > MIN_EXPONENT_DIGITS) {
+ int extra_zeros_cnt;
+
+ /* There are more than 2 digits in the exponent. See
+ if we can delete some of the leading zeros */
+ if (significant_digit_cnt < MIN_EXPONENT_DIGITS)
+ significant_digit_cnt = MIN_EXPONENT_DIGITS;
+ extra_zeros_cnt = exponent_digit_cnt -
+ significant_digit_cnt;
+
+ /* Delete extra_zeros_cnt worth of characters from the
+ front of the exponent */
+ assert(extra_zeros_cnt >= 0);
+
+ /* Add one to significant_digit_cnt to copy the
+ trailing 0 byte, thus setting the length */
+ memmove(start,
+ start + extra_zeros_cnt,
+ significant_digit_cnt + 1);
+ }
+ else {
+ /* If there are fewer than 2 digits, add zeros
+ until there are 2, if there's enough room */
+ int zeros = MIN_EXPONENT_DIGITS - exponent_digit_cnt;
+ if (start + zeros + exponent_digit_cnt + 1
+ < buffer + buf_size) {
+ memmove(start + zeros, start,
+ exponent_digit_cnt + 1);
+ memset(start, '0', zeros);
+ }
+ }
+ }
+}
+
+/* Remove trailing zeros after the decimal point from a numeric string; also
+ remove the decimal point if all digits following it are zero. The numeric
+ string must end in '\0', and should not have any leading or trailing
+ whitespace. Assumes that the decimal point is '.'. */
+Py_LOCAL_INLINE(void)
+remove_trailing_zeros(char *buffer)
+{
+ char *old_fraction_end, *new_fraction_end, *end, *p;
+
+ p = buffer;
+ if (*p == '-' || *p == '+')
+ /* Skip leading sign, if present */
+ ++p;
+ while (Py_ISDIGIT(*p))
+ ++p;
+
+ /* if there's no decimal point there's nothing to do */
+ if (*p++ != '.')
+ return;
+
+ /* scan any digits after the point */
+ while (Py_ISDIGIT(*p))
+ ++p;
+ old_fraction_end = p;
+
+ /* scan up to ending '\0' */
+ while (*p != '\0')
+ p++;
+ /* +1 to make sure that we move the null byte as well */
+ end = p+1;
+
+ /* scan back from fraction_end, looking for removable zeros */
+ p = old_fraction_end;
+ while (*(p-1) == '0')
+ --p;
+ /* and remove point if we've got that far */
+ if (*(p-1) == '.')
+ --p;
+ new_fraction_end = p;
+
+ memmove(new_fraction_end, old_fraction_end, end-old_fraction_end);
+}
+
+/* Ensure that buffer has a decimal point in it. The decimal point will not
+ be in the current locale, it will always be '.'. Don't add a decimal point
+ if an exponent is present. Also, convert to exponential notation where
+ adding a '.0' would produce too many significant digits (see issue 5864).
+
+ Returns a pointer to the fixed buffer, or NULL on failure.
+*/
+Py_LOCAL_INLINE(char *)
+ensure_decimal_point(char* buffer, size_t buf_size, int precision)
+{
+ int digit_count, insert_count = 0, convert_to_exp = 0;
+ const char *chars_to_insert;
+ char *digits_start;
+
+ /* search for the first non-digit character */
+ char *p = buffer;
+ if (*p == '-' || *p == '+')
+ /* Skip leading sign, if present. I think this could only
+ ever be '-', but it can't hurt to check for both. */
+ ++p;
+ digits_start = p;
+ while (*p && Py_ISDIGIT(*p))
+ ++p;
+ digit_count = Py_SAFE_DOWNCAST(p - digits_start, Py_ssize_t, int);
+
+ if (*p == '.') {
+ if (Py_ISDIGIT(*(p+1))) {
+ /* Nothing to do, we already have a decimal
+ point and a digit after it */
+ }
+ else {
+ /* We have a decimal point, but no following
+ digit. Insert a zero after the decimal. */
+ /* can't ever get here via PyOS_double_to_string */
+ assert(precision == -1);
+ ++p;
+ chars_to_insert = "0";
+ insert_count = 1;
+ }
+ }
+ else if (!(*p == 'e' || *p == 'E')) {
+ /* Don't add ".0" if we have an exponent. */
+ if (digit_count == precision) {
+ /* issue 5864: don't add a trailing .0 in the case
+ where the '%g'-formatted result already has as many
+ significant digits as were requested. Switch to
+ exponential notation instead. */
+ convert_to_exp = 1;
+ /* no exponent, no point, and we shouldn't land here
+ for infs and nans, so we must be at the end of the
+ string. */
+ assert(*p == '\0');
+ }
+ else {
+ assert(precision == -1 || digit_count < precision);
+ chars_to_insert = ".0";
+ insert_count = 2;
+ }
+ }
+ if (insert_count) {
+ size_t buf_len = strlen(buffer);
+ if (buf_len + insert_count + 1 >= buf_size) {
+ /* If there is not enough room in the buffer
+ for the additional text, just skip it. It's
+ not worth generating an error over. */
+ }
+ else {
+ memmove(p + insert_count, p,
+ buffer + strlen(buffer) - p + 1);
+ memcpy(p, chars_to_insert, insert_count);
+ }
+ }
+ if (convert_to_exp) {
+ int written;
+ size_t buf_avail;
+ p = digits_start;
+ /* insert decimal point */
+ assert(digit_count >= 1);
+ memmove(p+2, p+1, digit_count); /* safe, but overwrites nul */
+ p[1] = '.';
+ p += digit_count+1;
+ assert(p <= buf_size+buffer);
+ buf_avail = buf_size+buffer-p;
+ if (buf_avail == 0)
+ return NULL;
+ /* Add exponent. It's okay to use lower case 'e': we only
+ arrive here as a result of using the empty format code or
+ repr/str builtins and those never want an upper case 'E' */
+ written = PyOS_snprintf(p, buf_avail, "e%+.02d", digit_count-1);
+ if (!(0 <= written &&
+ written < Py_SAFE_DOWNCAST(buf_avail, size_t, int)))
+ /* output truncated, or something else bad happened */
+ return NULL;
+ remove_trailing_zeros(buffer);
+ }
+ return buffer;
+}
+
+/* see FORMATBUFLEN in unicodeobject.c */
+#define FLOAT_FORMATBUFLEN 120
+
+/**
+ * _PyOS_ascii_formatd:
+ * @buffer: A buffer to place the resulting string in
+ * @buf_size: The length of the buffer.
+ * @format: The printf()-style format to use for the
+ * code to use for converting.
+ * @d: The #gdouble to convert
+ * @precision: The precision to use when formatting.
+ *
+ * Converts a #gdouble to a string, using the '.' as
+ * decimal point. To format the number you pass in
+ * a printf()-style format string. Allowed conversion
+ * specifiers are 'e', 'E', 'f', 'F', 'g', 'G', and 'Z'.
+ *
+ * 'Z' is the same as 'g', except it always has a decimal and
+ * at least one digit after the decimal.
+ *
+ * Return value: The pointer to the buffer with the converted string.
+ * On failure returns NULL but does not set any Python exception.
+ **/
+static char *
+_PyOS_ascii_formatd(char *buffer,
+ size_t buf_size,
+ const char *format,
+ double d,
+ int precision)
+{
+ char format_char;
+ size_t format_len = strlen(format);
+
+ /* Issue 2264: code 'Z' requires copying the format. 'Z' is 'g', but
+ also with at least one character past the decimal. */
+ char tmp_format[FLOAT_FORMATBUFLEN];
+
+ /* The last character in the format string must be the format char */
+ format_char = format[format_len - 1];
+
+ if (format[0] != '%')
+ return NULL;
+
+ /* I'm not sure why this test is here. It's ensuring that the format
+ string after the first character doesn't have a single quote, a
+ lowercase l, or a percent. This is the reverse of the commented-out
+ test about 10 lines ago. */
+ if (strpbrk(format + 1, "'l%"))
+ return NULL;
+
+ /* Also curious about this function is that it accepts format strings
+ like "%xg", which are invalid for floats. In general, the
+ interface to this function is not very good, but changing it is
+ difficult because it's a public API. */
+
+ if (!(format_char == 'e' || format_char == 'E' ||
+ format_char == 'f' || format_char == 'F' ||
+ format_char == 'g' || format_char == 'G' ||
+ format_char == 'Z'))
+ return NULL;
+
+ /* Map 'Z' format_char to 'g', by copying the format string and
+ replacing the final char with a 'g' */
+ if (format_char == 'Z') {
+ if (format_len + 1 >= sizeof(tmp_format)) {
+ /* The format won't fit in our copy. Error out. In
+ practice, this will never happen and will be
+ detected by returning NULL */
+ return NULL;
+ }
+ strcpy(tmp_format, format);
+ tmp_format[format_len - 1] = 'g';
+ format = tmp_format;
+ }
+
+
+ /* Have PyOS_snprintf do the hard work */
+ PyOS_snprintf(buffer, buf_size, format, d);
+
+ /* Do various fixups on the return string */
+
+ /* Get the current locale, and find the decimal point string.
+ Convert that string back to a dot. */
+ change_decimal_from_locale_to_dot(buffer);
+
+ /* If an exponent exists, ensure that the exponent is at least
+ MIN_EXPONENT_DIGITS digits, providing the buffer is large enough
+ for the extra zeros. Also, if there are more than
+ MIN_EXPONENT_DIGITS, remove as many zeros as possible until we get
+ back to MIN_EXPONENT_DIGITS */
+ ensure_minimum_exponent_length(buffer, buf_size);
+
+ /* If format_char is 'Z', make sure we have at least one character
+ after the decimal point (and make sure we have a decimal point);
+ also switch to exponential notation in some edge cases where the
+ extra character would produce more significant digits that we
+ really want. */
+ if (format_char == 'Z')
+ buffer = ensure_decimal_point(buffer, buf_size, precision);
+
+ return buffer;
+}
+
+/* The fallback code to use if _Py_dg_dtoa is not available. */
+
+char * PyOS_double_to_string(double val,
+ char format_code,
+ int precision,
+ int flags,
+ int *type)
+{
+ char format[32];
+ Py_ssize_t bufsize;
+ char *buf;
+ int t, exp;
+ int upper = 0;
+
+ /* Validate format_code, and map upper and lower case */
+ switch (format_code) {
+ case 'e': /* exponent */
+ case 'f': /* fixed */
+ case 'g': /* general */
+ break;
+ case 'E':
+ upper = 1;
+ format_code = 'e';
+ break;
+ case 'F':
+ upper = 1;
+ format_code = 'f';
+ break;
+ case 'G':
+ upper = 1;
+ format_code = 'g';
+ break;
+ case 'r': /* repr format */
+ /* Supplied precision is unused, must be 0. */
+ if (precision != 0) {
+ PyErr_BadInternalCall();
+ return NULL;
+ }
+ /* The repr() precision (17 significant decimal digits) is the
+ minimal number that is guaranteed to have enough precision
+ so that if the number is read back in the exact same binary
+ value is recreated. This is true for IEEE floating point
+ by design, and also happens to work for all other modern
+ hardware. */
+ precision = 17;
+ format_code = 'g';
+ break;
+ default:
+ PyErr_BadInternalCall();
+ return NULL;
+ }
+
+ /* Here's a quick-and-dirty calculation to figure out how big a buffer
+ we need. In general, for a finite float we need:
+
+ 1 byte for each digit of the decimal significand, and
+
+ 1 for a possible sign
+ 1 for a possible decimal point
+ 2 for a possible [eE][+-]
+ 1 for each digit of the exponent; if we allow 19 digits
+ total then we're safe up to exponents of 2**63.
+ 1 for the trailing nul byte
+
+ This gives a total of 24 + the number of digits in the significand,
+ and the number of digits in the significand is:
+
+ for 'g' format: at most precision, except possibly
+ when precision == 0, when it's 1.
+ for 'e' format: precision+1
+ for 'f' format: precision digits after the point, at least 1
+ before. To figure out how many digits appear before the point
+ we have to examine the size of the number. If fabs(val) < 1.0
+ then there will be only one digit before the point. If
+ fabs(val) >= 1.0, then there are at most
+
+ 1+floor(log10(ceiling(fabs(val))))
+
+ digits before the point (where the 'ceiling' allows for the
+ possibility that the rounding rounds the integer part of val
+ up). A safe upper bound for the above quantity is
+ 1+floor(exp/3), where exp is the unique integer such that 0.5
+ <= fabs(val)/2**exp < 1.0. This exp can be obtained from
+ frexp.
+
+ So we allow room for precision+1 digits for all formats, plus an
+ extra floor(exp/3) digits for 'f' format.
+
+ */
+
+ if (Py_IS_NAN(val) || Py_IS_INFINITY(val))
+ /* 3 for 'inf'/'nan', 1 for sign, 1 for '\0' */
+ bufsize = 5;
+ else {
+ bufsize = 25 + precision;
+ if (format_code == 'f' && fabs(val) >= 1.0) {
+ frexp(val, &exp);
+ bufsize += exp/3;
+ }
+ }
+
+ buf = PyMem_Malloc(bufsize);
+ if (buf == NULL) {
+ PyErr_NoMemory();
+ return NULL;
+ }
+
+ /* Handle nan and inf. */
+ if (Py_IS_NAN(val)) {
+ strcpy(buf, "nan");
+ t = Py_DTST_NAN;
+ } else if (Py_IS_INFINITY(val)) {
+ if (copysign(1., val) == 1.)
+ strcpy(buf, "inf");
+ else
+ strcpy(buf, "-inf");
+ t = Py_DTST_INFINITE;
+ } else {
+ t = Py_DTST_FINITE;
+ if (flags & Py_DTSF_ADD_DOT_0)
+ format_code = 'Z';
+
+ PyOS_snprintf(format, sizeof(format), "%%%s.%i%c",
+ (flags & Py_DTSF_ALT ? "#" : ""), precision,
+ format_code);
+ _PyOS_ascii_formatd(buf, bufsize, format, val, precision);
+
+ if (flags & Py_DTSF_NO_NEG_0 && buf[0] == '-') {
+ char *buf2 = buf + 1;
+ while (*buf2 == '0' || *buf2 == '.') {
+ ++buf2;
+ }
+ if (*buf2 == 0 || *buf2 == 'e') {
+ size_t len = buf2 - buf + strlen(buf2);
+ assert(buf[len] == 0);
+ memmove(buf, buf+1, len);
+ }
+ }
+ }
+
+ /* Add sign when requested. It's convenient (esp. when formatting
+ complex numbers) to include a sign even for inf and nan. */
+ if (flags & Py_DTSF_SIGN && buf[0] != '-') {
+ size_t len = strlen(buf);
+ /* the bufsize calculations above should ensure that we've got
+ space to add a sign */
+ assert((size_t)bufsize >= len+2);
+ memmove(buf+1, buf, len+1);
+ buf[0] = '+';
+ }
+ if (upper) {
+ /* Convert to upper case. */
+ char *p1;
+ for (p1 = buf; *p1; p1++)
+ *p1 = Py_TOUPPER(*p1);
+ }
+
+ if (type)
+ *type = t;
+ return buf;
+}
+
+#else // _PY_SHORT_FLOAT_REPR == 1
+
+/* _Py_dg_dtoa is available. */
+
+/* I'm using a lookup table here so that I don't have to invent a non-locale
+ specific way to convert to uppercase */
+#define OFS_INF 0
+#define OFS_NAN 1
+#define OFS_E 2
+
+/* The lengths of these are known to the code below, so don't change them */
+static const char * const lc_float_strings[] = {
+ "inf",
+ "nan",
+ "e",
+};
+static const char * const uc_float_strings[] = {
+ "INF",
+ "NAN",
+ "E",
+};
+
+
+/* Convert a double d to a string, and return a PyMem_Malloc'd block of
+ memory contain the resulting string.
+
+ Arguments:
+ d is the double to be converted
+ format_code is one of 'e', 'f', 'g', 'r'. 'e', 'f' and 'g'
+ correspond to '%e', '%f' and '%g'; 'r' corresponds to repr.
+ mode is one of '0', '2' or '3', and is completely determined by
+ format_code: 'e' and 'g' use mode 2; 'f' mode 3, 'r' mode 0.
+ precision is the desired precision
+ always_add_sign is nonzero if a '+' sign should be included for positive
+ numbers
+ add_dot_0_if_integer is nonzero if integers in non-exponential form
+ should have ".0" added. Only applies to format codes 'r' and 'g'.
+ use_alt_formatting is nonzero if alternative formatting should be
+ used. Only applies to format codes 'e', 'f' and 'g'. For code 'g',
+ at most one of use_alt_formatting and add_dot_0_if_integer should
+ be nonzero.
+ type, if non-NULL, will be set to one of these constants to identify
+ the type of the 'd' argument:
+ Py_DTST_FINITE
+ Py_DTST_INFINITE
+ Py_DTST_NAN
+
+ Returns a PyMem_Malloc'd block of memory containing the resulting string,
+ or NULL on error. If NULL is returned, the Python error has been set.
+ */
+
+static char *
+format_float_short(double d, char format_code,
+ int mode, int precision,
+ int always_add_sign, int add_dot_0_if_integer,
+ int use_alt_formatting, int no_negative_zero,
+ const char * const *float_strings, int *type)
+{
+ char *buf = NULL;
+ char *p = NULL;
+ Py_ssize_t bufsize = 0;
+ char *digits, *digits_end;
+ int decpt_as_int, sign, exp_len, exp = 0, use_exp = 0;
+ Py_ssize_t decpt, digits_len, vdigits_start, vdigits_end;
+ _Py_SET_53BIT_PRECISION_HEADER;
+
+ /* _Py_dg_dtoa returns a digit string (no decimal point or exponent).
+ Must be matched by a call to _Py_dg_freedtoa. */
+ _Py_SET_53BIT_PRECISION_START;
+ digits = _Py_dg_dtoa(d, mode, precision, &decpt_as_int, &sign,
+ &digits_end);
+ _Py_SET_53BIT_PRECISION_END;
+
+ decpt = (Py_ssize_t)decpt_as_int;
+ if (digits == NULL) {
+ /* The only failure mode is no memory. */
+ PyErr_NoMemory();
+ goto exit;
+ }
+ assert(digits_end != NULL && digits_end >= digits);
+ digits_len = digits_end - digits;
+
+ if (no_negative_zero && sign == 1 &&
+ (digits_len == 0 || (digits_len == 1 && digits[0] == '0'))) {
+ sign = 0;
+ }
+
+ if (digits_len && !Py_ISDIGIT(digits[0])) {
+ /* Infinities and nans here; adapt Gay's output,
+ so convert Infinity to inf and NaN to nan, and
+ ignore sign of nan. Then return. */
+
+ /* ignore the actual sign of a nan */
+ if (digits[0] == 'n' || digits[0] == 'N')
+ sign = 0;
+
+ /* We only need 5 bytes to hold the result "+inf\0" . */
+ bufsize = 5; /* Used later in an assert. */
+ buf = (char *)PyMem_Malloc(bufsize);
+ if (buf == NULL) {
+ PyErr_NoMemory();
+ goto exit;
+ }
+ p = buf;
+
+ if (sign == 1) {
+ *p++ = '-';
+ }
+ else if (always_add_sign) {
+ *p++ = '+';
+ }
+ if (digits[0] == 'i' || digits[0] == 'I') {
+ strncpy(p, float_strings[OFS_INF], 3);
+ p += 3;
+
+ if (type)
+ *type = Py_DTST_INFINITE;
+ }
+ else if (digits[0] == 'n' || digits[0] == 'N') {
+ strncpy(p, float_strings[OFS_NAN], 3);
+ p += 3;
+
+ if (type)
+ *type = Py_DTST_NAN;
+ }
+ else {
+ /* shouldn't get here: Gay's code should always return
+ something starting with a digit, an 'I', or 'N' */
+ Py_UNREACHABLE();
+ }
+ goto exit;
+ }
+
+ /* The result must be finite (not inf or nan). */
+ if (type)
+ *type = Py_DTST_FINITE;
+
+
+ /* We got digits back, format them. We may need to pad 'digits'
+ either on the left or right (or both) with extra zeros, so in
+ general the resulting string has the form
+
+ [<sign>]<zeros><digits><zeros>[<exponent>]
+
+ where either of the <zeros> pieces could be empty, and there's a
+ decimal point that could appear either in <digits> or in the
+ leading or trailing <zeros>.
+
+ Imagine an infinite 'virtual' string vdigits, consisting of the
+ string 'digits' (starting at index 0) padded on both the left and
+ right with infinite strings of zeros. We want to output a slice
+
+ vdigits[vdigits_start : vdigits_end]
+
+ of this virtual string. Thus if vdigits_start < 0 then we'll end
+ up producing some leading zeros; if vdigits_end > digits_len there
+ will be trailing zeros in the output. The next section of code
+ determines whether to use an exponent or not, figures out the
+ position 'decpt' of the decimal point, and computes 'vdigits_start'
+ and 'vdigits_end'. */
+ vdigits_end = digits_len;
+ switch (format_code) {
+ case 'e':
+ use_exp = 1;
+ vdigits_end = precision;
+ break;
+ case 'f':
+ vdigits_end = decpt + precision;
+ break;
+ case 'g':
+ if (decpt <= -4 || decpt >
+ (add_dot_0_if_integer ? precision-1 : precision))
+ use_exp = 1;
+ if (use_alt_formatting)
+ vdigits_end = precision;
+ break;
+ case 'r':
+ /* convert to exponential format at 1e16. We used to convert
+ at 1e17, but that gives odd-looking results for some values
+ when a 16-digit 'shortest' repr is padded with bogus zeros.
+ For example, repr(2e16+8) would give 20000000000000010.0;
+ the true value is 20000000000000008.0. */
+ if (decpt <= -4 || decpt > 16)
+ use_exp = 1;
+ break;
+ default:
+ PyErr_BadInternalCall();
+ goto exit;
+ }
+
+ /* if using an exponent, reset decimal point position to 1 and adjust
+ exponent accordingly.*/
+ if (use_exp) {
+ exp = (int)decpt - 1;
+ decpt = 1;
+ }
+ /* ensure vdigits_start < decpt <= vdigits_end, or vdigits_start <
+ decpt < vdigits_end if add_dot_0_if_integer and no exponent */
+ vdigits_start = decpt <= 0 ? decpt-1 : 0;
+ if (!use_exp && add_dot_0_if_integer)
+ vdigits_end = vdigits_end > decpt ? vdigits_end : decpt + 1;
+ else
+ vdigits_end = vdigits_end > decpt ? vdigits_end : decpt;
+
+ /* double check inequalities */
+ assert(vdigits_start <= 0 &&
+ 0 <= digits_len &&
+ digits_len <= vdigits_end);
+ /* decimal point should be in (vdigits_start, vdigits_end] */
+ assert(vdigits_start < decpt && decpt <= vdigits_end);
+
+ /* Compute an upper bound how much memory we need. This might be a few
+ chars too long, but no big deal. */
+ bufsize =
+ /* sign, decimal point and trailing 0 byte */
+ 3 +
+
+ /* total digit count (including zero padding on both sides) */
+ (vdigits_end - vdigits_start) +
+
+ /* exponent "e+100", max 3 numerical digits */
+ (use_exp ? 5 : 0);
+
+ /* Now allocate the memory and initialize p to point to the start of
+ it. */
+ buf = (char *)PyMem_Malloc(bufsize);
+ if (buf == NULL) {
+ PyErr_NoMemory();
+ goto exit;
+ }
+ p = buf;
+
+ /* Add a negative sign if negative, and a plus sign if non-negative
+ and always_add_sign is true. */
+ if (sign == 1)
+ *p++ = '-';
+ else if (always_add_sign)
+ *p++ = '+';
+
+ /* note that exactly one of the three 'if' conditions is true,
+ so we include exactly one decimal point */
+ /* Zero padding on left of digit string */
+ if (decpt <= 0) {
+ memset(p, '0', decpt-vdigits_start);
+ p += decpt - vdigits_start;
+ *p++ = '.';
+ memset(p, '0', 0-decpt);
+ p += 0-decpt;
+ }
+ else {
+ memset(p, '0', 0-vdigits_start);
+ p += 0 - vdigits_start;
+ }
+
+ /* Digits, with included decimal point */
+ if (0 < decpt && decpt <= digits_len) {
+ strncpy(p, digits, decpt-0);
+ p += decpt-0;
+ *p++ = '.';
+ strncpy(p, digits+decpt, digits_len-decpt);
+ p += digits_len-decpt;
+ }
+ else {
+ strncpy(p, digits, digits_len);
+ p += digits_len;
+ }
+
+ /* And zeros on the right */
+ if (digits_len < decpt) {
+ memset(p, '0', decpt-digits_len);
+ p += decpt-digits_len;
+ *p++ = '.';
+ memset(p, '0', vdigits_end-decpt);
+ p += vdigits_end-decpt;
+ }
+ else {
+ memset(p, '0', vdigits_end-digits_len);
+ p += vdigits_end-digits_len;
+ }
+
+ /* Delete a trailing decimal pt unless using alternative formatting. */
+ if (p[-1] == '.' && !use_alt_formatting)
+ p--;
+
+ /* Now that we've done zero padding, add an exponent if needed. */
+ if (use_exp) {
+ *p++ = float_strings[OFS_E][0];
+ exp_len = sprintf(p, "%+.02d", exp);
+ p += exp_len;
+ }
+ exit:
+ if (buf) {
+ *p = '\0';
+ /* It's too late if this fails, as we've already stepped on
+ memory that isn't ours. But it's an okay debugging test. */
+ assert(p-buf < bufsize);
+ }
+ if (digits)
+ _Py_dg_freedtoa(digits);
+
+ return buf;
+}
+
+
+char * PyOS_double_to_string(double val,
+ char format_code,
+ int precision,
+ int flags,
+ int *type)
+{
+ const char * const *float_strings = lc_float_strings;
+ int mode;
+
+ /* Validate format_code, and map upper and lower case. Compute the
+ mode and make any adjustments as needed. */
+ switch (format_code) {
+ /* exponent */
+ case 'E':
+ float_strings = uc_float_strings;
+ format_code = 'e';
+ /* Fall through. */
+ case 'e':
+ mode = 2;
+ precision++;
+ break;
+
+ /* fixed */
+ case 'F':
+ float_strings = uc_float_strings;
+ format_code = 'f';
+ /* Fall through. */
+ case 'f':
+ mode = 3;
+ break;
+
+ /* general */
+ case 'G':
+ float_strings = uc_float_strings;
+ format_code = 'g';
+ /* Fall through. */
+ case 'g':
+ mode = 2;
+ /* precision 0 makes no sense for 'g' format; interpret as 1 */
+ if (precision == 0)
+ precision = 1;
+ break;
+
+ /* repr format */
+ case 'r':
+ mode = 0;
+ /* Supplied precision is unused, must be 0. */
+ if (precision != 0) {
+ PyErr_BadInternalCall();
+ return NULL;
+ }
+ break;
+
+ default:
+ PyErr_BadInternalCall();
+ return NULL;
+ }
+
+ return format_float_short(val, format_code, mode, precision,
+ flags & Py_DTSF_SIGN,
+ flags & Py_DTSF_ADD_DOT_0,
+ flags & Py_DTSF_ALT,
+ flags & Py_DTSF_NO_NEG_0,
+ float_strings, type);
+}
+#endif // _PY_SHORT_FLOAT_REPR == 1
diff --git a/contrib/tools/python3/Python/pythonrun.c b/contrib/tools/python3/Python/pythonrun.c
new file mode 100644
index 00000000000..5f3d249df45
--- /dev/null
+++ b/contrib/tools/python3/Python/pythonrun.c
@@ -0,0 +1,2020 @@
+
+/* Top level execution of Python code (including in __main__) */
+
+/* To help control the interfaces between the startup, execution and
+ * shutdown code, the phases are split across separate modules (bootstrap,
+ * pythonrun, shutdown)
+ */
+
+/* TODO: Cull includes following phase split */
+
+#include <stdbool.h>
+
+#include "Python.h"
+
+#include "pycore_ast.h" // PyAST_mod2obj
+#include "pycore_ceval.h" // _Py_EnterRecursiveCall
+#include "pycore_compile.h" // _PyAST_Compile()
+#include "pycore_interp.h" // PyInterpreterState.importlib
+#include "pycore_object.h" // _PyDebug_PrintTotalRefs()
+#include "pycore_parser.h" // _PyParser_ASTFromString()
+#include "pycore_pyerrors.h" // _PyErr_GetRaisedException, _Py_Offer_Suggestions
+#include "pycore_pylifecycle.h" // _Py_UnhandledKeyboardInterrupt
+#include "pycore_pystate.h" // _PyInterpreterState_GET()
+#include "pycore_sysmodule.h" // _PySys_Audit()
+#include "pycore_traceback.h" // _PyTraceBack_Print_Indented()
+
+#include "errcode.h" // E_EOF
+#include "marshal.h" // PyMarshal_ReadLongFromFile()
+
+#ifdef MS_WINDOWS
+# include "malloc.h" // alloca()
+#endif
+
+#ifdef MS_WINDOWS
+# undef BYTE
+# include "windows.h"
+#endif
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward */
+static void flush_io(void);
+static PyObject *run_mod(mod_ty, PyObject *, PyObject *, PyObject *,
+ PyCompilerFlags *, PyArena *);
+static PyObject *run_pyc_file(FILE *, PyObject *, PyObject *,
+ PyCompilerFlags *);
+static int PyRun_InteractiveOneObjectEx(FILE *, PyObject *, PyCompilerFlags *);
+static PyObject* pyrun_file(FILE *fp, PyObject *filename, int start,
+ PyObject *globals, PyObject *locals, int closeit,
+ PyCompilerFlags *flags);
+
+
+int
+_PyRun_AnyFileObject(FILE *fp, PyObject *filename, int closeit,
+ PyCompilerFlags *flags)
+{
+ int decref_filename = 0;
+ if (filename == NULL) {
+ filename = PyUnicode_FromString("???");
+ if (filename == NULL) {
+ PyErr_Print();
+ return -1;
+ }
+ decref_filename = 1;
+ }
+
+ int res;
+ if (_Py_FdIsInteractive(fp, filename)) {
+ res = _PyRun_InteractiveLoopObject(fp, filename, flags);
+ if (closeit) {
+ fclose(fp);
+ }
+ }
+ else {
+ res = _PyRun_SimpleFileObject(fp, filename, closeit, flags);
+ }
+
+ if (decref_filename) {
+ Py_DECREF(filename);
+ }
+ return res;
+}
+
+
+/* Parse input from a file and execute it */
+int
+PyRun_AnyFileExFlags(FILE *fp, const char *filename, int closeit,
+ PyCompilerFlags *flags)
+{
+ PyObject *filename_obj;
+ if (filename != NULL) {
+ filename_obj = PyUnicode_DecodeFSDefault(filename);
+ if (filename_obj == NULL) {
+ PyErr_Print();
+ return -1;
+ }
+ }
+ else {
+ filename_obj = NULL;
+ }
+ int res = _PyRun_AnyFileObject(fp, filename_obj, closeit, flags);
+ Py_XDECREF(filename_obj);
+ return res;
+}
+
+
+int
+_PyRun_InteractiveLoopObject(FILE *fp, PyObject *filename, PyCompilerFlags *flags)
+{
+ PyCompilerFlags local_flags = _PyCompilerFlags_INIT;
+ if (flags == NULL) {
+ flags = &local_flags;
+ }
+
+ PyThreadState *tstate = _PyThreadState_GET();
+ PyObject *v = _PySys_GetAttr(tstate, &_Py_ID(ps1));
+ if (v == NULL) {
+ _PySys_SetAttr(&_Py_ID(ps1), v = PyUnicode_FromString(">>> "));
+ Py_XDECREF(v);
+ }
+ v = _PySys_GetAttr(tstate, &_Py_ID(ps2));
+ if (v == NULL) {
+ _PySys_SetAttr(&_Py_ID(ps2), v = PyUnicode_FromString("... "));
+ Py_XDECREF(v);
+ }
+
+#ifdef Py_REF_DEBUG
+ int show_ref_count = _Py_GetConfig()->show_ref_count;
+#endif
+ int err = 0;
+ int ret;
+ int nomem_count = 0;
+ do {
+ ret = PyRun_InteractiveOneObjectEx(fp, filename, flags);
+ if (ret == -1 && PyErr_Occurred()) {
+ /* Prevent an endless loop after multiple consecutive MemoryErrors
+ * while still allowing an interactive command to fail with a
+ * MemoryError. */
+ if (PyErr_ExceptionMatches(PyExc_MemoryError)) {
+ if (++nomem_count > 16) {
+ PyErr_Clear();
+ err = -1;
+ break;
+ }
+ } else {
+ nomem_count = 0;
+ }
+ PyErr_Print();
+ flush_io();
+ } else {
+ nomem_count = 0;
+ }
+#ifdef Py_REF_DEBUG
+ if (show_ref_count) {
+ _PyDebug_PrintTotalRefs();
+ }
+#endif
+ } while (ret != E_EOF);
+ return err;
+}
+
+
+int
+PyRun_InteractiveLoopFlags(FILE *fp, const char *filename, PyCompilerFlags *flags)
+{
+ PyObject *filename_obj = PyUnicode_DecodeFSDefault(filename);
+ if (filename_obj == NULL) {
+ PyErr_Print();
+ return -1;
+ }
+
+ int err = _PyRun_InteractiveLoopObject(fp, filename_obj, flags);
+ Py_DECREF(filename_obj);
+ return err;
+
+}
+
+
+/* A PyRun_InteractiveOneObject() auxiliary function that does not print the
+ * error on failure. */
+static int
+PyRun_InteractiveOneObjectEx(FILE *fp, PyObject *filename,
+ PyCompilerFlags *flags)
+{
+ PyObject *m, *d, *v, *w, *oenc = NULL;
+ mod_ty mod;
+ PyArena *arena;
+ const char *ps1 = "", *ps2 = "", *enc = NULL;
+ int errcode = 0;
+ PyThreadState *tstate = _PyThreadState_GET();
+
+ if (fp == stdin) {
+ /* Fetch encoding from sys.stdin if possible. */
+ v = _PySys_GetAttr(tstate, &_Py_ID(stdin));
+ if (v && v != Py_None) {
+ oenc = PyObject_GetAttr(v, &_Py_ID(encoding));
+ if (oenc)
+ enc = PyUnicode_AsUTF8(oenc);
+ if (!enc)
+ PyErr_Clear();
+ }
+ }
+ v = _PySys_GetAttr(tstate, &_Py_ID(ps1));
+ if (v != NULL) {
+ v = PyObject_Str(v);
+ if (v == NULL)
+ PyErr_Clear();
+ else if (PyUnicode_Check(v)) {
+ ps1 = PyUnicode_AsUTF8(v);
+ if (ps1 == NULL) {
+ PyErr_Clear();
+ ps1 = "";
+ }
+ }
+ }
+ w = _PySys_GetAttr(tstate, &_Py_ID(ps2));
+ if (w != NULL) {
+ w = PyObject_Str(w);
+ if (w == NULL)
+ PyErr_Clear();
+ else if (PyUnicode_Check(w)) {
+ ps2 = PyUnicode_AsUTF8(w);
+ if (ps2 == NULL) {
+ PyErr_Clear();
+ ps2 = "";
+ }
+ }
+ }
+ arena = _PyArena_New();
+ if (arena == NULL) {
+ Py_XDECREF(v);
+ Py_XDECREF(w);
+ Py_XDECREF(oenc);
+ return -1;
+ }
+
+ mod = _PyParser_ASTFromFile(fp, filename, enc, Py_single_input,
+ ps1, ps2, flags, &errcode, arena);
+
+ Py_XDECREF(v);
+ Py_XDECREF(w);
+ Py_XDECREF(oenc);
+ if (mod == NULL) {
+ _PyArena_Free(arena);
+ if (errcode == E_EOF) {
+ PyErr_Clear();
+ return E_EOF;
+ }
+ return -1;
+ }
+ m = PyImport_AddModuleObject(&_Py_ID(__main__));
+ if (m == NULL) {
+ _PyArena_Free(arena);
+ return -1;
+ }
+ d = PyModule_GetDict(m);
+ v = run_mod(mod, filename, d, d, flags, arena);
+ _PyArena_Free(arena);
+ if (v == NULL) {
+ return -1;
+ }
+ Py_DECREF(v);
+ flush_io();
+ return 0;
+}
+
+int
+PyRun_InteractiveOneObject(FILE *fp, PyObject *filename, PyCompilerFlags *flags)
+{
+ int res;
+
+ res = PyRun_InteractiveOneObjectEx(fp, filename, flags);
+ if (res == -1) {
+ PyErr_Print();
+ flush_io();
+ }
+ return res;
+}
+
+int
+PyRun_InteractiveOneFlags(FILE *fp, const char *filename_str, PyCompilerFlags *flags)
+{
+ PyObject *filename;
+ int res;
+
+ filename = PyUnicode_DecodeFSDefault(filename_str);
+ if (filename == NULL) {
+ PyErr_Print();
+ return -1;
+ }
+ res = PyRun_InteractiveOneObject(fp, filename, flags);
+ Py_DECREF(filename);
+ return res;
+}
+
+
+/* Check whether a file maybe a pyc file: Look at the extension,
+ the file type, and, if we may close it, at the first few bytes. */
+
+static int
+maybe_pyc_file(FILE *fp, PyObject *filename, int closeit)
+{
+ PyObject *ext = PyUnicode_FromString(".pyc");
+ if (ext == NULL) {
+ return -1;
+ }
+ Py_ssize_t endswith = PyUnicode_Tailmatch(filename, ext, 0, PY_SSIZE_T_MAX, +1);
+ Py_DECREF(ext);
+ if (endswith) {
+ return 1;
+ }
+
+ /* Only look into the file if we are allowed to close it, since
+ it then should also be seekable. */
+ if (!closeit) {
+ return 0;
+ }
+
+ /* Read only two bytes of the magic. If the file was opened in
+ text mode, the bytes 3 and 4 of the magic (\r\n) might not
+ be read as they are on disk. */
+ unsigned int halfmagic = PyImport_GetMagicNumber() & 0xFFFF;
+ unsigned char buf[2];
+ /* Mess: In case of -x, the stream is NOT at its start now,
+ and ungetc() was used to push back the first newline,
+ which makes the current stream position formally undefined,
+ and a x-platform nightmare.
+ Unfortunately, we have no direct way to know whether -x
+ was specified. So we use a terrible hack: if the current
+ stream position is not 0, we assume -x was specified, and
+ give up. Bug 132850 on SourceForge spells out the
+ hopelessness of trying anything else (fseek and ftell
+ don't work predictably x-platform for text-mode files).
+ */
+ int ispyc = 0;
+ if (ftell(fp) == 0) {
+ if (fread(buf, 1, 2, fp) == 2 &&
+ ((unsigned int)buf[1]<<8 | buf[0]) == halfmagic)
+ ispyc = 1;
+ rewind(fp);
+ }
+ return ispyc;
+}
+
+
+static int
+set_main_loader(PyObject *d, PyObject *filename, const char *loader_name)
+{
+ PyInterpreterState *interp = _PyInterpreterState_GET();
+ PyObject *loader_type = _PyImport_GetImportlibExternalLoader(interp,
+ loader_name);
+ if (loader_type == NULL) {
+ return -1;
+ }
+
+ PyObject *loader = PyObject_CallFunction(loader_type,
+ "sO", "__main__", filename);
+ Py_DECREF(loader_type);
+ if (loader == NULL) {
+ return -1;
+ }
+
+ if (PyDict_SetItemString(d, "__loader__", loader) < 0) {
+ Py_DECREF(loader);
+ return -1;
+ }
+ Py_DECREF(loader);
+ return 0;
+}
+
+
+int
+_PyRun_SimpleFileObject(FILE *fp, PyObject *filename, int closeit,
+ PyCompilerFlags *flags)
+{
+ PyObject *m, *d, *v;
+ int set_file_name = 0, ret = -1;
+
+ m = PyImport_AddModule("__main__");
+ if (m == NULL)
+ return -1;
+ Py_INCREF(m);
+ d = PyModule_GetDict(m);
+ if (_PyDict_GetItemStringWithError(d, "__file__") == NULL) {
+ if (PyErr_Occurred()) {
+ goto done;
+ }
+ if (PyDict_SetItemString(d, "__file__", filename) < 0) {
+ goto done;
+ }
+ if (PyDict_SetItemString(d, "__cached__", Py_None) < 0) {
+ goto done;
+ }
+ set_file_name = 1;
+ }
+
+ int pyc = maybe_pyc_file(fp, filename, closeit);
+ if (pyc < 0) {
+ goto done;
+ }
+
+ if (pyc) {
+ FILE *pyc_fp;
+ /* Try to run a pyc file. First, re-open in binary */
+ if (closeit) {
+ fclose(fp);
+ }
+
+ pyc_fp = _Py_fopen_obj(filename, "rb");
+ if (pyc_fp == NULL) {
+ fprintf(stderr, "python: Can't reopen .pyc file\n");
+ goto done;
+ }
+
+ if (set_main_loader(d, filename, "SourcelessFileLoader") < 0) {
+ fprintf(stderr, "python: failed to set __main__.__loader__\n");
+ ret = -1;
+ fclose(pyc_fp);
+ goto done;
+ }
+ v = run_pyc_file(pyc_fp, d, d, flags);
+ } else {
+ /* When running from stdin, leave __main__.__loader__ alone */
+ if (PyUnicode_CompareWithASCIIString(filename, "<stdin>") != 0 &&
+ set_main_loader(d, filename, "SourceFileLoader") < 0) {
+ fprintf(stderr, "python: failed to set __main__.__loader__\n");
+ ret = -1;
+ goto done;
+ }
+ v = pyrun_file(fp, filename, Py_file_input, d, d,
+ closeit, flags);
+ }
+ flush_io();
+ if (v == NULL) {
+ Py_CLEAR(m);
+ PyErr_Print();
+ goto done;
+ }
+ Py_DECREF(v);
+ ret = 0;
+ done:
+ if (set_file_name) {
+ if (PyDict_DelItemString(d, "__file__")) {
+ PyErr_Clear();
+ }
+ if (PyDict_DelItemString(d, "__cached__")) {
+ PyErr_Clear();
+ }
+ }
+ Py_XDECREF(m);
+ return ret;
+}
+
+
+int
+PyRun_SimpleFileExFlags(FILE *fp, const char *filename, int closeit,
+ PyCompilerFlags *flags)
+{
+ PyObject *filename_obj = PyUnicode_DecodeFSDefault(filename);
+ if (filename_obj == NULL) {
+ return -1;
+ }
+ int res = _PyRun_SimpleFileObject(fp, filename_obj, closeit, flags);
+ Py_DECREF(filename_obj);
+ return res;
+}
+
+
+int
+PyRun_SimpleStringFlags(const char *command, PyCompilerFlags *flags)
+{
+ PyObject *m, *d, *v;
+ m = PyImport_AddModule("__main__");
+ if (m == NULL)
+ return -1;
+ d = PyModule_GetDict(m);
+ v = PyRun_StringFlags(command, Py_file_input, d, d, flags);
+ if (v == NULL) {
+ PyErr_Print();
+ return -1;
+ }
+ Py_DECREF(v);
+ return 0;
+}
+
+static int
+parse_syntax_error(PyObject *err, PyObject **message, PyObject **filename,
+ Py_ssize_t *lineno, Py_ssize_t *offset,
+ Py_ssize_t* end_lineno, Py_ssize_t* end_offset,
+ PyObject **text)
+{
+ Py_ssize_t hold;
+ PyObject *v;
+
+ *message = NULL;
+ *filename = NULL;
+
+ /* new style errors. `err' is an instance */
+ *message = PyObject_GetAttr(err, &_Py_ID(msg));
+ if (!*message)
+ goto finally;
+
+ v = PyObject_GetAttr(err, &_Py_ID(filename));
+ if (!v)
+ goto finally;
+ if (v == Py_None) {
+ Py_DECREF(v);
+ _Py_DECLARE_STR(anon_string, "<string>");
+ *filename = Py_NewRef(&_Py_STR(anon_string));
+ }
+ else {
+ *filename = v;
+ }
+
+ v = PyObject_GetAttr(err, &_Py_ID(lineno));
+ if (!v)
+ goto finally;
+ hold = PyLong_AsSsize_t(v);
+ Py_DECREF(v);
+ if (hold < 0 && PyErr_Occurred())
+ goto finally;
+ *lineno = hold;
+
+ v = PyObject_GetAttr(err, &_Py_ID(offset));
+ if (!v)
+ goto finally;
+ if (v == Py_None) {
+ *offset = -1;
+ Py_DECREF(v);
+ } else {
+ hold = PyLong_AsSsize_t(v);
+ Py_DECREF(v);
+ if (hold < 0 && PyErr_Occurred())
+ goto finally;
+ *offset = hold;
+ }
+
+ if (Py_TYPE(err) == (PyTypeObject*)PyExc_SyntaxError) {
+ v = PyObject_GetAttr(err, &_Py_ID(end_lineno));
+ if (!v) {
+ PyErr_Clear();
+ *end_lineno = *lineno;
+ }
+ else if (v == Py_None) {
+ *end_lineno = *lineno;
+ Py_DECREF(v);
+ } else {
+ hold = PyLong_AsSsize_t(v);
+ Py_DECREF(v);
+ if (hold < 0 && PyErr_Occurred())
+ goto finally;
+ *end_lineno = hold;
+ }
+
+ v = PyObject_GetAttr(err, &_Py_ID(end_offset));
+ if (!v) {
+ PyErr_Clear();
+ *end_offset = -1;
+ }
+ else if (v == Py_None) {
+ *end_offset = -1;
+ Py_DECREF(v);
+ } else {
+ hold = PyLong_AsSsize_t(v);
+ Py_DECREF(v);
+ if (hold < 0 && PyErr_Occurred())
+ goto finally;
+ *end_offset = hold;
+ }
+ } else {
+ // SyntaxError subclasses
+ *end_lineno = *lineno;
+ *end_offset = -1;
+ }
+
+ v = PyObject_GetAttr(err, &_Py_ID(text));
+ if (!v)
+ goto finally;
+ if (v == Py_None) {
+ Py_DECREF(v);
+ *text = NULL;
+ }
+ else {
+ *text = v;
+ }
+ return 1;
+
+finally:
+ Py_XDECREF(*message);
+ Py_XDECREF(*filename);
+ return 0;
+}
+
+static int
+print_error_text(PyObject *f, Py_ssize_t offset, Py_ssize_t end_offset,
+ PyObject *text_obj)
+{
+ size_t caret_repetitions = (end_offset > 0 && end_offset > offset) ?
+ end_offset - offset : 1;
+
+ /* Convert text to a char pointer; return if error */
+ const char *text = PyUnicode_AsUTF8(text_obj);
+ if (text == NULL) {
+ return -1;
+ }
+
+ /* Convert offset from 1-based to 0-based */
+ offset--;
+
+ /* Strip leading whitespace from text, adjusting offset as we go */
+ while (*text == ' ' || *text == '\t' || *text == '\f') {
+ text++;
+ offset--;
+ }
+
+ /* Calculate text length excluding trailing newline */
+ Py_ssize_t len = strlen(text);
+ if (len > 0 && text[len-1] == '\n') {
+ len--;
+ }
+
+ /* Clip offset to at most len */
+ if (offset > len) {
+ offset = len;
+ }
+
+ /* Skip past newlines embedded in text */
+ for (;;) {
+ const char *nl = strchr(text, '\n');
+ if (nl == NULL) {
+ break;
+ }
+ Py_ssize_t inl = nl - text;
+ if (inl >= offset) {
+ break;
+ }
+ inl += 1;
+ text += inl;
+ len -= inl;
+ offset -= (int)inl;
+ }
+
+ /* Print text */
+ if (PyFile_WriteString(" ", f) < 0) {
+ return -1;
+ }
+ if (PyFile_WriteString(text, f) < 0) {
+ return -1;
+ }
+
+ /* Make sure there's a newline at the end */
+ if (text[len] != '\n') {
+ if (PyFile_WriteString("\n", f) < 0) {
+ return -1;
+ }
+ }
+
+ /* Don't print caret if it points to the left of the text */
+ if (offset < 0) {
+ return 0;
+ }
+
+ /* Write caret line */
+ if (PyFile_WriteString(" ", f) < 0) {
+ return -1;
+ }
+ while (--offset >= 0) {
+ if (PyFile_WriteString(" ", f) < 0) {
+ return -1;
+ }
+ }
+ for (size_t caret_iter=0; caret_iter < caret_repetitions ; caret_iter++) {
+ if (PyFile_WriteString("^", f) < 0) {
+ return -1;
+ }
+ }
+ if (PyFile_WriteString("\n", f) < 0) {
+ return -1;
+ }
+ return 0;
+}
+
+
+int
+_Py_HandleSystemExit(int *exitcode_p)
+{
+ int inspect = _Py_GetConfig()->inspect;
+ if (inspect) {
+ /* Don't exit if -i flag was given. This flag is set to 0
+ * when entering interactive mode for inspecting. */
+ return 0;
+ }
+
+ if (!PyErr_ExceptionMatches(PyExc_SystemExit)) {
+ return 0;
+ }
+
+ fflush(stdout);
+
+ int exitcode = 0;
+
+ PyObject *exc = PyErr_GetRaisedException();
+ if (exc == NULL) {
+ goto done;
+ }
+ assert(PyExceptionInstance_Check(exc));
+
+ /* The error code should be in the `code' attribute. */
+ PyObject *code = PyObject_GetAttr(exc, &_Py_ID(code));
+ if (code) {
+ Py_SETREF(exc, code);
+ if (exc == Py_None) {
+ goto done;
+ }
+ }
+ /* If we failed to dig out the 'code' attribute,
+ * just let the else clause below print the error.
+ */
+
+ if (PyLong_Check(exc)) {
+ exitcode = (int)PyLong_AsLong(exc);
+ }
+ else {
+ PyThreadState *tstate = _PyThreadState_GET();
+ PyObject *sys_stderr = _PySys_GetAttr(tstate, &_Py_ID(stderr));
+ /* We clear the exception here to avoid triggering the assertion
+ * in PyObject_Str that ensures it won't silently lose exception
+ * details.
+ */
+ PyErr_Clear();
+ if (sys_stderr != NULL && sys_stderr != Py_None) {
+ PyFile_WriteObject(exc, sys_stderr, Py_PRINT_RAW);
+ } else {
+ PyObject_Print(exc, stderr, Py_PRINT_RAW);
+ fflush(stderr);
+ }
+ PySys_WriteStderr("\n");
+ exitcode = 1;
+ }
+
+done:
+ Py_CLEAR(exc);
+ *exitcode_p = exitcode;
+ return 1;
+}
+
+
+static void
+handle_system_exit(void)
+{
+ int exitcode;
+ if (_Py_HandleSystemExit(&exitcode)) {
+ Py_Exit(exitcode);
+ }
+}
+
+
+static void
+_PyErr_PrintEx(PyThreadState *tstate, int set_sys_last_vars)
+{
+ PyObject *typ = NULL, *tb = NULL;
+ handle_system_exit();
+
+ PyObject *exc = _PyErr_GetRaisedException(tstate);
+ if (exc == NULL) {
+ goto done;
+ }
+ assert(PyExceptionInstance_Check(exc));
+ typ = Py_NewRef(Py_TYPE(exc));
+ tb = PyException_GetTraceback(exc);
+ if (tb == NULL) {
+ tb = Py_NewRef(Py_None);
+ }
+
+ if (set_sys_last_vars) {
+ if (_PySys_SetAttr(&_Py_ID(last_exc), exc) < 0) {
+ _PyErr_Clear(tstate);
+ }
+ /* Legacy version: */
+ if (_PySys_SetAttr(&_Py_ID(last_type), typ) < 0) {
+ _PyErr_Clear(tstate);
+ }
+ if (_PySys_SetAttr(&_Py_ID(last_value), exc) < 0) {
+ _PyErr_Clear(tstate);
+ }
+ if (_PySys_SetAttr(&_Py_ID(last_traceback), tb) < 0) {
+ _PyErr_Clear(tstate);
+ }
+ }
+ PyObject *hook = _PySys_GetAttr(tstate, &_Py_ID(excepthook));
+ if (_PySys_Audit(tstate, "sys.excepthook", "OOOO", hook ? hook : Py_None,
+ typ, exc, tb) < 0) {
+ if (PyErr_ExceptionMatches(PyExc_RuntimeError)) {
+ PyErr_Clear();
+ goto done;
+ }
+ _PyErr_WriteUnraisableMsg("in audit hook", NULL);
+ }
+ if (hook) {
+ PyObject* stack[3];
+ stack[0] = typ;
+ stack[1] = exc;
+ stack[2] = tb;
+ PyObject *result = _PyObject_FastCall(hook, stack, 3);
+ if (result == NULL) {
+ handle_system_exit();
+
+ PyObject *exc2 = _PyErr_GetRaisedException(tstate);
+ assert(exc2 && PyExceptionInstance_Check(exc2));
+ fflush(stdout);
+ PySys_WriteStderr("Error in sys.excepthook:\n");
+ PyErr_DisplayException(exc2);
+ PySys_WriteStderr("\nOriginal exception was:\n");
+ PyErr_DisplayException(exc);
+ Py_DECREF(exc2);
+ }
+ else {
+ Py_DECREF(result);
+ }
+ }
+ else {
+ PySys_WriteStderr("sys.excepthook is missing\n");
+ PyErr_DisplayException(exc);
+ }
+
+done:
+ Py_XDECREF(typ);
+ Py_XDECREF(exc);
+ Py_XDECREF(tb);
+}
+
+void
+_PyErr_Print(PyThreadState *tstate)
+{
+ _PyErr_PrintEx(tstate, 1);
+}
+
+void
+PyErr_PrintEx(int set_sys_last_vars)
+{
+ PyThreadState *tstate = _PyThreadState_GET();
+ _PyErr_PrintEx(tstate, set_sys_last_vars);
+}
+
+void
+PyErr_Print(void)
+{
+ PyErr_PrintEx(1);
+}
+
+struct exception_print_context
+{
+ PyObject *file;
+ PyObject *seen; // Prevent cycles in recursion
+ int exception_group_depth; // nesting level of current exception group
+ bool need_close; // Need a closing bottom frame
+ int max_group_width; // Maximum number of children of each EG
+ int max_group_depth; // Maximum nesting level of EGs
+};
+
+#define EXC_MARGIN(ctx) ((ctx)->exception_group_depth ? "| " : "")
+#define EXC_INDENT(ctx) (2 * (ctx)->exception_group_depth)
+
+static int
+write_indented_margin(struct exception_print_context *ctx, PyObject *f)
+{
+ return _Py_WriteIndentedMargin(EXC_INDENT(ctx), EXC_MARGIN(ctx), f);
+}
+
+static int
+print_exception_invalid_type(struct exception_print_context *ctx,
+ PyObject *value)
+{
+ PyObject *f = ctx->file;
+ if (_Py_WriteIndent(EXC_INDENT(ctx), f) < 0) {
+ return -1;
+ }
+ const char *const msg = "TypeError: print_exception(): Exception expected "
+ "for value, ";
+ if (PyFile_WriteString(msg, f) < 0) {
+ return -1;
+ }
+ if (PyFile_WriteString(Py_TYPE(value)->tp_name, f) < 0) {
+ return -1;
+ }
+ if (PyFile_WriteString(" found\n", f) < 0) {
+ return -1;
+ }
+ return 0;
+}
+
+static int
+print_exception_traceback(struct exception_print_context *ctx, PyObject *value)
+{
+ PyObject *f = ctx->file;
+ int err = 0;
+
+ PyObject *tb = PyException_GetTraceback(value);
+ if (tb && tb != Py_None) {
+ const char *header = EXCEPTION_TB_HEADER;
+ const char *header_margin = EXC_MARGIN(ctx);
+ if (_PyBaseExceptionGroup_Check(value)) {
+ header = EXCEPTION_GROUP_TB_HEADER;
+ if (ctx->exception_group_depth == 1) {
+ header_margin = "+ ";
+ }
+ }
+ err = _PyTraceBack_Print_Indented(
+ tb, EXC_INDENT(ctx), EXC_MARGIN(ctx), header_margin, header, f);
+ }
+ Py_XDECREF(tb);
+ return err;
+}
+
+static int
+print_exception_file_and_line(struct exception_print_context *ctx,
+ PyObject **value_p)
+{
+ PyObject *f = ctx->file;
+
+ PyObject *tmp;
+ int res = _PyObject_LookupAttr(*value_p, &_Py_ID(print_file_and_line), &tmp);
+ if (res <= 0) {
+ if (res < 0) {
+ PyErr_Clear();
+ }
+ return 0;
+ }
+ Py_DECREF(tmp);
+
+ PyObject *message, *filename, *text;
+ Py_ssize_t lineno, offset, end_lineno, end_offset;
+ if (!parse_syntax_error(*value_p, &message, &filename,
+ &lineno, &offset,
+ &end_lineno, &end_offset, &text)) {
+ PyErr_Clear();
+ return 0;
+ }
+
+ Py_SETREF(*value_p, message);
+
+ PyObject *line = PyUnicode_FromFormat(" File \"%S\", line %zd\n",
+ filename, lineno);
+ Py_DECREF(filename);
+ if (line == NULL) {
+ goto error;
+ }
+ if (write_indented_margin(ctx, f) < 0) {
+ goto error;
+ }
+ if (PyFile_WriteObject(line, f, Py_PRINT_RAW) < 0) {
+ goto error;
+ }
+ Py_CLEAR(line);
+
+ if (text != NULL) {
+ Py_ssize_t line_size;
+ const char *error_line = PyUnicode_AsUTF8AndSize(text, &line_size);
+ // If the location of the error spawn multiple lines, we want
+ // to just print the first one and highlight everything until
+ // the end of that one since we don't support multi-line error
+ // messages.
+ if (end_lineno > lineno) {
+ end_offset = (error_line != NULL) ? line_size : -1;
+ }
+ // Limit the amount of '^' that we can display to
+ // the size of the text in the source line.
+ if (error_line != NULL && end_offset > line_size + 1) {
+ end_offset = line_size + 1;
+ }
+ if (print_error_text(f, offset, end_offset, text) < 0) {
+ goto error;
+ }
+ Py_DECREF(text);
+ }
+ assert(!PyErr_Occurred());
+ return 0;
+
+error:
+ Py_XDECREF(line);
+ Py_XDECREF(text);
+ return -1;
+}
+
+/* Prints the message line: module.qualname[: str(exc)] */
+static int
+print_exception_message(struct exception_print_context *ctx, PyObject *type,
+ PyObject *value)
+{
+ PyObject *f = ctx->file;
+
+ assert(PyExceptionClass_Check(type));
+
+ if (write_indented_margin(ctx, f) < 0) {
+ return -1;
+ }
+ PyObject *modulename = PyObject_GetAttr(type, &_Py_ID(__module__));
+ if (modulename == NULL || !PyUnicode_Check(modulename)) {
+ Py_XDECREF(modulename);
+ PyErr_Clear();
+ if (PyFile_WriteString("<unknown>.", f) < 0) {
+ return -1;
+ }
+ }
+ else {
+ if (!_PyUnicode_Equal(modulename, &_Py_ID(builtins)) &&
+ !_PyUnicode_Equal(modulename, &_Py_ID(__main__)))
+ {
+ int res = PyFile_WriteObject(modulename, f, Py_PRINT_RAW);
+ Py_DECREF(modulename);
+ if (res < 0) {
+ return -1;
+ }
+ if (PyFile_WriteString(".", f) < 0) {
+ return -1;
+ }
+ }
+ else {
+ Py_DECREF(modulename);
+ }
+ }
+
+ PyObject *qualname = PyType_GetQualName((PyTypeObject *)type);
+ if (qualname == NULL || !PyUnicode_Check(qualname)) {
+ Py_XDECREF(qualname);
+ PyErr_Clear();
+ if (PyFile_WriteString("<unknown>", f) < 0) {
+ return -1;
+ }
+ }
+ else {
+ int res = PyFile_WriteObject(qualname, f, Py_PRINT_RAW);
+ Py_DECREF(qualname);
+ if (res < 0) {
+ return -1;
+ }
+ }
+
+ if (Py_IsNone(value)) {
+ return 0;
+ }
+
+ PyObject *s = PyObject_Str(value);
+ if (s == NULL) {
+ PyErr_Clear();
+ if (PyFile_WriteString(": <exception str() failed>", f) < 0) {
+ return -1;
+ }
+ }
+ else {
+ /* only print colon if the str() of the
+ object is not the empty string
+ */
+ if (!PyUnicode_Check(s) || PyUnicode_GetLength(s) != 0) {
+ if (PyFile_WriteString(": ", f) < 0) {
+ Py_DECREF(s);
+ return -1;
+ }
+ }
+ int res = PyFile_WriteObject(s, f, Py_PRINT_RAW);
+ Py_DECREF(s);
+ if (res < 0) {
+ return -1;
+ }
+ }
+
+ return 0;
+}
+
+static int
+print_exception_suggestions(struct exception_print_context *ctx,
+ PyObject *value)
+{
+ PyObject *f = ctx->file;
+ PyObject *suggestions = _Py_Offer_Suggestions(value);
+ if (suggestions) {
+ if (PyFile_WriteObject(suggestions, f, Py_PRINT_RAW) < 0) {
+ goto error;
+ }
+ Py_DECREF(suggestions);
+ }
+ else if (PyErr_Occurred()) {
+ PyErr_Clear();
+ }
+ return 0;
+error:
+ Py_XDECREF(suggestions);
+ return -1;
+}
+
+static int
+print_exception_notes(struct exception_print_context *ctx, PyObject *notes)
+{
+ PyObject *f = ctx->file;
+
+ if (notes == NULL) {
+ return 0;
+ }
+
+ if (!PySequence_Check(notes) || PyUnicode_Check(notes) || PyBytes_Check(notes)) {
+ int res = 0;
+ if (write_indented_margin(ctx, f) < 0) {
+ res = -1;
+ }
+ PyObject *s = PyObject_Repr(notes);
+ if (s == NULL) {
+ PyErr_Clear();
+ res = PyFile_WriteString("<__notes__ repr() failed>", f);
+ }
+ else {
+ res = PyFile_WriteObject(s, f, Py_PRINT_RAW);
+ Py_DECREF(s);
+ }
+ if (PyFile_WriteString("\n", f) < 0) {
+ res = -1;
+ }
+ return res;
+ }
+ Py_ssize_t num_notes = PySequence_Length(notes);
+ PyObject *lines = NULL;
+ for (Py_ssize_t ni = 0; ni < num_notes; ni++) {
+ PyObject *note = PySequence_GetItem(notes, ni);
+ PyObject *note_str = PyObject_Str(note);
+ Py_DECREF(note);
+
+ if (note_str == NULL) {
+ PyErr_Clear();
+ if (PyFile_WriteString("<note str() failed>", f) < 0) {
+ goto error;
+ }
+ }
+ else {
+ lines = PyUnicode_Splitlines(note_str, 1);
+ Py_DECREF(note_str);
+
+ if (lines == NULL) {
+ goto error;
+ }
+
+ Py_ssize_t n = PyList_GET_SIZE(lines);
+ for (Py_ssize_t i = 0; i < n; i++) {
+ PyObject *line = PyList_GET_ITEM(lines, i);
+ assert(PyUnicode_Check(line));
+ if (write_indented_margin(ctx, f) < 0) {
+ goto error;
+ }
+ if (PyFile_WriteObject(line, f, Py_PRINT_RAW) < 0) {
+ goto error;
+ }
+ }
+ Py_CLEAR(lines);
+ }
+ if (PyFile_WriteString("\n", f) < 0) {
+ goto error;
+ }
+ }
+
+ return 0;
+error:
+ Py_XDECREF(lines);
+ return -1;
+}
+
+static int
+get_exception_notes(struct exception_print_context *ctx, PyObject *value, PyObject **notes) {
+ PyObject *note = NULL;
+
+ if (_PyObject_LookupAttr(value, &_Py_ID(__notes__), notes) < 0) {
+ PyObject *type, *errvalue, *tback;
+ PyErr_Fetch(&type, &errvalue, &tback);
+ PyErr_NormalizeException(&type, &errvalue, &tback);
+ note = PyUnicode_FromFormat("Ignored error getting __notes__: %R", errvalue);
+ Py_XDECREF(type);
+ Py_XDECREF(errvalue);
+ Py_XDECREF(tback);
+ if (!note) {
+ goto error;
+ }
+ *notes = PyList_New(1);
+ if (!*notes) {
+ goto error;
+ }
+ if (PyList_SetItem(*notes, 0, note) < 0) {
+ Py_DECREF(*notes);
+ goto error;
+ }
+ }
+
+ return 0;
+error:
+ Py_XDECREF(note);
+ return -1;
+}
+
+static int
+print_exception(struct exception_print_context *ctx, PyObject *value)
+{
+ PyObject *notes = NULL;
+ PyObject *f = ctx->file;
+
+ if (!PyExceptionInstance_Check(value)) {
+ return print_exception_invalid_type(ctx, value);
+ }
+
+ Py_INCREF(value);
+ fflush(stdout);
+
+ if (print_exception_traceback(ctx, value) < 0) {
+ goto error;
+ }
+
+ /* grab the type and notes now because value can change below */
+ PyObject *type = (PyObject *) Py_TYPE(value);
+ if (get_exception_notes(ctx, value, &notes) < 0) {
+ goto error;
+ }
+
+ if (print_exception_file_and_line(ctx, &value) < 0) {
+ goto error;
+ }
+ if (print_exception_message(ctx, type, value) < 0) {
+ goto error;
+ }
+ if (print_exception_suggestions(ctx, value) < 0) {
+ goto error;
+ }
+ if (PyFile_WriteString("\n", f) < 0) {
+ goto error;
+ }
+ if (print_exception_notes(ctx, notes) < 0) {
+ goto error;
+ }
+
+ Py_XDECREF(notes);
+ Py_DECREF(value);
+ assert(!PyErr_Occurred());
+ return 0;
+error:
+ Py_XDECREF(notes);
+ Py_DECREF(value);
+ return -1;
+}
+
+static const char cause_message[] =
+ "The above exception was the direct cause "
+ "of the following exception:\n";
+
+static const char context_message[] =
+ "During handling of the above exception, "
+ "another exception occurred:\n";
+
+static int
+print_exception_recursive(struct exception_print_context*, PyObject*);
+
+static int
+print_chained(struct exception_print_context* ctx, PyObject *value,
+ const char * message, const char *tag)
+{
+ PyObject *f = ctx->file;
+ if (_Py_EnterRecursiveCall(" in print_chained")) {
+ return -1;
+ }
+ bool need_close = ctx->need_close;
+ int res = print_exception_recursive(ctx, value);
+ ctx->need_close = need_close;
+ _Py_LeaveRecursiveCall();
+ if (res < 0) {
+ return -1;
+ }
+
+ if (write_indented_margin(ctx, f) < 0) {
+ return -1;
+ }
+ if (PyFile_WriteString("\n", f) < 0) {
+ return -1;
+ }
+ if (write_indented_margin(ctx, f) < 0) {
+ return -1;
+ }
+ if (PyFile_WriteString(message, f) < 0) {
+ return -1;
+ }
+ if (write_indented_margin(ctx, f) < 0) {
+ return -1;
+ }
+ if (PyFile_WriteString("\n", f) < 0) {
+ return -1;
+ }
+ return 0;
+}
+
+/* Return true if value is in seen or there was a lookup error.
+ * Return false if lookup succeeded and the item was not found.
+ * We suppress errors because this makes us err on the side of
+ * under-printing which is better than over-printing irregular
+ * exceptions (e.g., unhashable ones).
+ */
+static bool
+print_exception_seen_lookup(struct exception_print_context *ctx,
+ PyObject *value)
+{
+ PyObject *check_id = PyLong_FromVoidPtr(value);
+ if (check_id == NULL) {
+ PyErr_Clear();
+ return true;
+ }
+
+ int in_seen = PySet_Contains(ctx->seen, check_id);
+ Py_DECREF(check_id);
+ if (in_seen == -1) {
+ PyErr_Clear();
+ return true;
+ }
+
+ if (in_seen == 1) {
+ /* value is in seen */
+ return true;
+ }
+ return false;
+}
+
+static int
+print_exception_cause_and_context(struct exception_print_context *ctx,
+ PyObject *value)
+{
+ PyObject *value_id = PyLong_FromVoidPtr(value);
+ if (value_id == NULL || PySet_Add(ctx->seen, value_id) == -1) {
+ PyErr_Clear();
+ Py_XDECREF(value_id);
+ return 0;
+ }
+ Py_DECREF(value_id);
+
+ if (!PyExceptionInstance_Check(value)) {
+ return 0;
+ }
+
+ PyObject *cause = PyException_GetCause(value);
+ if (cause) {
+ int err = 0;
+ if (!print_exception_seen_lookup(ctx, cause)) {
+ err = print_chained(ctx, cause, cause_message, "cause");
+ }
+ Py_DECREF(cause);
+ return err;
+ }
+ if (((PyBaseExceptionObject *)value)->suppress_context) {
+ return 0;
+ }
+ PyObject *context = PyException_GetContext(value);
+ if (context) {
+ int err = 0;
+ if (!print_exception_seen_lookup(ctx, context)) {
+ err = print_chained(ctx, context, context_message, "context");
+ }
+ Py_DECREF(context);
+ return err;
+ }
+ return 0;
+}
+
+static int
+print_exception_group(struct exception_print_context *ctx, PyObject *value)
+{
+ PyObject *f = ctx->file;
+
+ if (ctx->exception_group_depth > ctx->max_group_depth) {
+ /* depth exceeds limit */
+
+ if (write_indented_margin(ctx, f) < 0) {
+ return -1;
+ }
+
+ PyObject *line = PyUnicode_FromFormat("... (max_group_depth is %d)\n",
+ ctx->max_group_depth);
+ if (line == NULL) {
+ return -1;
+ }
+ int err = PyFile_WriteObject(line, f, Py_PRINT_RAW);
+ Py_DECREF(line);
+ return err;
+ }
+
+ if (ctx->exception_group_depth == 0) {
+ ctx->exception_group_depth += 1;
+ }
+ if (print_exception(ctx, value) < 0) {
+ return -1;
+ }
+
+ PyObject *excs = ((PyBaseExceptionGroupObject *)value)->excs;
+ assert(excs && PyTuple_Check(excs));
+ Py_ssize_t num_excs = PyTuple_GET_SIZE(excs);
+ assert(num_excs > 0);
+ Py_ssize_t n;
+ if (num_excs <= ctx->max_group_width) {
+ n = num_excs;
+ }
+ else {
+ n = ctx->max_group_width + 1;
+ }
+
+ ctx->need_close = false;
+ for (Py_ssize_t i = 0; i < n; i++) {
+ bool last_exc = (i == n - 1);
+ if (last_exc) {
+ // The closing frame may be added in a recursive call
+ ctx->need_close = true;
+ }
+
+ if (_Py_WriteIndent(EXC_INDENT(ctx), f) < 0) {
+ return -1;
+ }
+ bool truncated = (i >= ctx->max_group_width);
+ PyObject *line;
+ if (!truncated) {
+ line = PyUnicode_FromFormat(
+ "%s+---------------- %zd ----------------\n",
+ (i == 0) ? "+-" : " ", i + 1);
+ }
+ else {
+ line = PyUnicode_FromFormat(
+ "%s+---------------- ... ----------------\n",
+ (i == 0) ? "+-" : " ");
+ }
+ if (line == NULL) {
+ return -1;
+ }
+ int err = PyFile_WriteObject(line, f, Py_PRINT_RAW);
+ Py_DECREF(line);
+ if (err < 0) {
+ return -1;
+ }
+
+ ctx->exception_group_depth += 1;
+ PyObject *exc = PyTuple_GET_ITEM(excs, i);
+
+ if (!truncated) {
+ if (_Py_EnterRecursiveCall(" in print_exception_group")) {
+ return -1;
+ }
+ int res = print_exception_recursive(ctx, exc);
+ _Py_LeaveRecursiveCall();
+ if (res < 0) {
+ return -1;
+ }
+ }
+ else {
+ Py_ssize_t excs_remaining = num_excs - ctx->max_group_width;
+
+ if (write_indented_margin(ctx, f) < 0) {
+ return -1;
+ }
+
+ PyObject *line = PyUnicode_FromFormat(
+ "and %zd more exception%s\n",
+ excs_remaining, excs_remaining > 1 ? "s" : "");
+
+ if (line == NULL) {
+ return -1;
+ }
+
+ int err = PyFile_WriteObject(line, f, Py_PRINT_RAW);
+ Py_DECREF(line);
+ if (err < 0) {
+ return -1;
+ }
+ }
+
+ if (last_exc && ctx->need_close) {
+ if (_Py_WriteIndent(EXC_INDENT(ctx), f) < 0) {
+ return -1;
+ }
+ if (PyFile_WriteString(
+ "+------------------------------------\n", f) < 0) {
+ return -1;
+ }
+ ctx->need_close = false;
+ }
+ ctx->exception_group_depth -= 1;
+ }
+
+ if (ctx->exception_group_depth == 1) {
+ ctx->exception_group_depth -= 1;
+ }
+ return 0;
+}
+
+static int
+print_exception_recursive(struct exception_print_context *ctx, PyObject *value)
+{
+ if (_Py_EnterRecursiveCall(" in print_exception_recursive")) {
+ return -1;
+ }
+ if (ctx->seen != NULL) {
+ /* Exception chaining */
+ if (print_exception_cause_and_context(ctx, value) < 0) {
+ goto error;
+ }
+ }
+ if (!_PyBaseExceptionGroup_Check(value)) {
+ if (print_exception(ctx, value) < 0) {
+ goto error;
+ }
+ }
+ else if (print_exception_group(ctx, value) < 0) {
+ goto error;
+ }
+ assert(!PyErr_Occurred());
+
+ _Py_LeaveRecursiveCall();
+ return 0;
+error:
+ _Py_LeaveRecursiveCall();
+ return -1;
+}
+
+#define PyErr_MAX_GROUP_WIDTH 15
+#define PyErr_MAX_GROUP_DEPTH 10
+
+void
+_PyErr_Display(PyObject *file, PyObject *unused, PyObject *value, PyObject *tb)
+{
+ assert(file != NULL && file != Py_None);
+ if (PyExceptionInstance_Check(value)
+ && tb != NULL && PyTraceBack_Check(tb)) {
+ /* Put the traceback on the exception, otherwise it won't get
+ displayed. See issue #18776. */
+ PyObject *cur_tb = PyException_GetTraceback(value);
+ if (cur_tb == NULL) {
+ PyException_SetTraceback(value, tb);
+ }
+ else {
+ Py_DECREF(cur_tb);
+ }
+ }
+
+ struct exception_print_context ctx;
+ ctx.file = file;
+ ctx.exception_group_depth = 0;
+ ctx.need_close = false;
+ ctx.max_group_width = PyErr_MAX_GROUP_WIDTH;
+ ctx.max_group_depth = PyErr_MAX_GROUP_DEPTH;
+
+ /* We choose to ignore seen being possibly NULL, and report
+ at least the main exception (it could be a MemoryError).
+ */
+ ctx.seen = PySet_New(NULL);
+ if (ctx.seen == NULL) {
+ PyErr_Clear();
+ }
+ if (print_exception_recursive(&ctx, value) < 0) {
+ PyErr_Clear();
+ _PyObject_Dump(value);
+ fprintf(stderr, "lost sys.stderr\n");
+ }
+ Py_XDECREF(ctx.seen);
+
+ /* Call file.flush() */
+ PyObject *res = _PyObject_CallMethodNoArgs(file, &_Py_ID(flush));
+ if (!res) {
+ /* Silently ignore file.flush() error */
+ PyErr_Clear();
+ }
+ else {
+ Py_DECREF(res);
+ }
+}
+
+void
+PyErr_Display(PyObject *unused, PyObject *value, PyObject *tb)
+{
+ PyThreadState *tstate = _PyThreadState_GET();
+ PyObject *file = _PySys_GetAttr(tstate, &_Py_ID(stderr));
+ if (file == NULL) {
+ _PyObject_Dump(value);
+ fprintf(stderr, "lost sys.stderr\n");
+ return;
+ }
+ if (file == Py_None) {
+ return;
+ }
+ Py_INCREF(file);
+ _PyErr_Display(file, NULL, value, tb);
+ Py_DECREF(file);
+}
+
+void _PyErr_DisplayException(PyObject *file, PyObject *exc)
+{
+ _PyErr_Display(file, NULL, exc, NULL);
+}
+
+void PyErr_DisplayException(PyObject *exc)
+{
+ PyErr_Display(NULL, exc, NULL);
+}
+
+PyObject *
+PyRun_StringFlags(const char *str, int start, PyObject *globals,
+ PyObject *locals, PyCompilerFlags *flags)
+{
+ PyObject *ret = NULL;
+ mod_ty mod;
+ PyArena *arena;
+
+ arena = _PyArena_New();
+ if (arena == NULL)
+ return NULL;
+
+ _Py_DECLARE_STR(anon_string, "<string>");
+ mod = _PyParser_ASTFromString(
+ str, &_Py_STR(anon_string), start, flags, arena);
+
+ if (mod != NULL)
+ ret = run_mod(mod, &_Py_STR(anon_string), globals, locals, flags, arena);
+ _PyArena_Free(arena);
+ return ret;
+}
+
+
+static PyObject *
+pyrun_file(FILE *fp, PyObject *filename, int start, PyObject *globals,
+ PyObject *locals, int closeit, PyCompilerFlags *flags)
+{
+ PyArena *arena = _PyArena_New();
+ if (arena == NULL) {
+ return NULL;
+ }
+
+ mod_ty mod;
+ mod = _PyParser_ASTFromFile(fp, filename, NULL, start, NULL, NULL,
+ flags, NULL, arena);
+
+ if (closeit) {
+ fclose(fp);
+ }
+
+ PyObject *ret;
+ if (mod != NULL) {
+ ret = run_mod(mod, filename, globals, locals, flags, arena);
+ }
+ else {
+ ret = NULL;
+ }
+ _PyArena_Free(arena);
+
+ return ret;
+}
+
+
+PyObject *
+PyRun_FileExFlags(FILE *fp, const char *filename, int start, PyObject *globals,
+ PyObject *locals, int closeit, PyCompilerFlags *flags)
+{
+ PyObject *filename_obj = PyUnicode_DecodeFSDefault(filename);
+ if (filename_obj == NULL) {
+ return NULL;
+ }
+
+ PyObject *res = pyrun_file(fp, filename_obj, start, globals,
+ locals, closeit, flags);
+ Py_DECREF(filename_obj);
+ return res;
+
+}
+
+static void
+flush_io_stream(PyThreadState *tstate, PyObject *name)
+{
+ PyObject *f = _PySys_GetAttr(tstate, name);
+ if (f != NULL) {
+ PyObject *r = _PyObject_CallMethodNoArgs(f, &_Py_ID(flush));
+ if (r) {
+ Py_DECREF(r);
+ }
+ else {
+ PyErr_Clear();
+ }
+ }
+}
+
+static void
+flush_io(void)
+{
+ PyThreadState *tstate = _PyThreadState_GET();
+ PyObject *exc = _PyErr_GetRaisedException(tstate);
+ flush_io_stream(tstate, &_Py_ID(stderr));
+ flush_io_stream(tstate, &_Py_ID(stdout));
+ _PyErr_SetRaisedException(tstate, exc);
+}
+
+static PyObject *
+run_eval_code_obj(PyThreadState *tstate, PyCodeObject *co, PyObject *globals, PyObject *locals)
+{
+ PyObject *v;
+ /*
+ * We explicitly re-initialize _Py_UnhandledKeyboardInterrupt every eval
+ * _just in case_ someone is calling into an embedded Python where they
+ * don't care about an uncaught KeyboardInterrupt exception (why didn't they
+ * leave config.install_signal_handlers set to 0?!?) but then later call
+ * Py_Main() itself (which _checks_ this flag and dies with a signal after
+ * its interpreter exits). We don't want a previous embedded interpreter's
+ * uncaught exception to trigger an unexplained signal exit from a future
+ * Py_Main() based one.
+ */
+ // XXX Isn't this dealt with by the move to _PyRuntimeState?
+ _PyRuntime.signals.unhandled_keyboard_interrupt = 0;
+
+ /* Set globals['__builtins__'] if it doesn't exist */
+ if (globals != NULL && _PyDict_GetItemStringWithError(globals, "__builtins__") == NULL) {
+ if (PyErr_Occurred() ||
+ PyDict_SetItemString(globals, "__builtins__",
+ tstate->interp->builtins) < 0)
+ {
+ return NULL;
+ }
+ }
+
+ v = PyEval_EvalCode((PyObject*)co, globals, locals);
+ if (!v && _PyErr_Occurred(tstate) == PyExc_KeyboardInterrupt) {
+ _PyRuntime.signals.unhandled_keyboard_interrupt = 1;
+ }
+ return v;
+}
+
+static PyObject *
+run_mod(mod_ty mod, PyObject *filename, PyObject *globals, PyObject *locals,
+ PyCompilerFlags *flags, PyArena *arena)
+{
+ PyThreadState *tstate = _PyThreadState_GET();
+ PyCodeObject *co = _PyAST_Compile(mod, filename, flags, -1, arena);
+ if (co == NULL)
+ return NULL;
+
+ if (_PySys_Audit(tstate, "exec", "O", co) < 0) {
+ Py_DECREF(co);
+ return NULL;
+ }
+
+ PyObject *v = run_eval_code_obj(tstate, co, globals, locals);
+ Py_DECREF(co);
+ return v;
+}
+
+static PyObject *
+run_pyc_file(FILE *fp, PyObject *globals, PyObject *locals,
+ PyCompilerFlags *flags)
+{
+ PyThreadState *tstate = _PyThreadState_GET();
+ PyCodeObject *co;
+ PyObject *v;
+ long magic;
+ long PyImport_GetMagicNumber(void);
+
+ magic = PyMarshal_ReadLongFromFile(fp);
+ if (magic != PyImport_GetMagicNumber()) {
+ if (!PyErr_Occurred())
+ PyErr_SetString(PyExc_RuntimeError,
+ "Bad magic number in .pyc file");
+ goto error;
+ }
+ /* Skip the rest of the header. */
+ (void) PyMarshal_ReadLongFromFile(fp);
+ (void) PyMarshal_ReadLongFromFile(fp);
+ (void) PyMarshal_ReadLongFromFile(fp);
+ if (PyErr_Occurred()) {
+ goto error;
+ }
+ v = PyMarshal_ReadLastObjectFromFile(fp);
+ if (v == NULL || !PyCode_Check(v)) {
+ Py_XDECREF(v);
+ PyErr_SetString(PyExc_RuntimeError,
+ "Bad code object in .pyc file");
+ goto error;
+ }
+ fclose(fp);
+ co = (PyCodeObject *)v;
+ v = run_eval_code_obj(tstate, co, globals, locals);
+ if (v && flags)
+ flags->cf_flags |= (co->co_flags & PyCF_MASK);
+ Py_DECREF(co);
+ return v;
+error:
+ fclose(fp);
+ return NULL;
+}
+
+PyObject *
+Py_CompileStringObject(const char *str, PyObject *filename, int start,
+ PyCompilerFlags *flags, int optimize)
+{
+ PyCodeObject *co;
+ mod_ty mod;
+ PyArena *arena = _PyArena_New();
+ if (arena == NULL)
+ return NULL;
+
+ mod = _PyParser_ASTFromString(str, filename, start, flags, arena);
+ if (mod == NULL) {
+ _PyArena_Free(arena);
+ return NULL;
+ }
+ if (flags && (flags->cf_flags & PyCF_ONLY_AST)) {
+ PyObject *result = PyAST_mod2obj(mod);
+ _PyArena_Free(arena);
+ return result;
+ }
+ co = _PyAST_Compile(mod, filename, flags, optimize, arena);
+ _PyArena_Free(arena);
+ return (PyObject *)co;
+}
+
+PyObject *
+Py_CompileStringExFlags(const char *str, const char *filename_str, int start,
+ PyCompilerFlags *flags, int optimize)
+{
+ PyObject *filename, *co;
+ filename = PyUnicode_DecodeFSDefault(filename_str);
+ if (filename == NULL)
+ return NULL;
+ co = Py_CompileStringObject(str, filename, start, flags, optimize);
+ Py_DECREF(filename);
+ return co;
+}
+
+const char *
+_Py_SourceAsString(PyObject *cmd, const char *funcname, const char *what, PyCompilerFlags *cf, PyObject **cmd_copy)
+{
+ const char *str;
+ Py_ssize_t size;
+ Py_buffer view;
+
+ *cmd_copy = NULL;
+ if (PyUnicode_Check(cmd)) {
+ cf->cf_flags |= PyCF_IGNORE_COOKIE;
+ str = PyUnicode_AsUTF8AndSize(cmd, &size);
+ if (str == NULL)
+ return NULL;
+ }
+ else if (PyBytes_Check(cmd)) {
+ str = PyBytes_AS_STRING(cmd);
+ size = PyBytes_GET_SIZE(cmd);
+ }
+ else if (PyByteArray_Check(cmd)) {
+ str = PyByteArray_AS_STRING(cmd);
+ size = PyByteArray_GET_SIZE(cmd);
+ }
+ else if (PyObject_GetBuffer(cmd, &view, PyBUF_SIMPLE) == 0) {
+ /* Copy to NUL-terminated buffer. */
+ *cmd_copy = PyBytes_FromStringAndSize(
+ (const char *)view.buf, view.len);
+ PyBuffer_Release(&view);
+ if (*cmd_copy == NULL) {
+ return NULL;
+ }
+ str = PyBytes_AS_STRING(*cmd_copy);
+ size = PyBytes_GET_SIZE(*cmd_copy);
+ }
+ else {
+ PyErr_Format(PyExc_TypeError,
+ "%s() arg 1 must be a %s object",
+ funcname, what);
+ return NULL;
+ }
+
+ if (strlen(str) != (size_t)size) {
+ PyErr_SetString(PyExc_SyntaxError,
+ "source code string cannot contain null bytes");
+ Py_CLEAR(*cmd_copy);
+ return NULL;
+ }
+ return str;
+}
+
+#if defined(USE_STACKCHECK)
+#if defined(WIN32) && defined(_MSC_VER)
+
+/* Stack checking for Microsoft C */
+
+#include <malloc.h>
+#include <excpt.h>
+
+/*
+ * Return non-zero when we run out of memory on the stack; zero otherwise.
+ */
+int
+PyOS_CheckStack(void)
+{
+ __try {
+ /* alloca throws a stack overflow exception if there's
+ not enough space left on the stack */
+ alloca(PYOS_STACK_MARGIN * sizeof(void*));
+ return 0;
+ } __except (GetExceptionCode() == STATUS_STACK_OVERFLOW ?
+ EXCEPTION_EXECUTE_HANDLER :
+ EXCEPTION_CONTINUE_SEARCH) {
+ int errcode = _resetstkoflw();
+ if (errcode == 0)
+ {
+ Py_FatalError("Could not reset the stack!");
+ }
+ }
+ return 1;
+}
+
+#endif /* WIN32 && _MSC_VER */
+
+/* Alternate implementations can be added here... */
+
+#endif /* USE_STACKCHECK */
+
+/* Deprecated C API functions still provided for binary compatibility */
+
+#undef PyRun_AnyFile
+PyAPI_FUNC(int)
+PyRun_AnyFile(FILE *fp, const char *name)
+{
+ return PyRun_AnyFileExFlags(fp, name, 0, NULL);
+}
+
+#undef PyRun_AnyFileEx
+PyAPI_FUNC(int)
+PyRun_AnyFileEx(FILE *fp, const char *name, int closeit)
+{
+ return PyRun_AnyFileExFlags(fp, name, closeit, NULL);
+}
+
+#undef PyRun_AnyFileFlags
+PyAPI_FUNC(int)
+PyRun_AnyFileFlags(FILE *fp, const char *name, PyCompilerFlags *flags)
+{
+ return PyRun_AnyFileExFlags(fp, name, 0, flags);
+}
+
+#undef PyRun_File
+PyAPI_FUNC(PyObject *)
+PyRun_File(FILE *fp, const char *p, int s, PyObject *g, PyObject *l)
+{
+ return PyRun_FileExFlags(fp, p, s, g, l, 0, NULL);
+}
+
+#undef PyRun_FileEx
+PyAPI_FUNC(PyObject *)
+PyRun_FileEx(FILE *fp, const char *p, int s, PyObject *g, PyObject *l, int c)
+{
+ return PyRun_FileExFlags(fp, p, s, g, l, c, NULL);
+}
+
+#undef PyRun_FileFlags
+PyAPI_FUNC(PyObject *)
+PyRun_FileFlags(FILE *fp, const char *p, int s, PyObject *g, PyObject *l,
+ PyCompilerFlags *flags)
+{
+ return PyRun_FileExFlags(fp, p, s, g, l, 0, flags);
+}
+
+#undef PyRun_SimpleFile
+PyAPI_FUNC(int)
+PyRun_SimpleFile(FILE *f, const char *p)
+{
+ return PyRun_SimpleFileExFlags(f, p, 0, NULL);
+}
+
+#undef PyRun_SimpleFileEx
+PyAPI_FUNC(int)
+PyRun_SimpleFileEx(FILE *f, const char *p, int c)
+{
+ return PyRun_SimpleFileExFlags(f, p, c, NULL);
+}
+
+
+#undef PyRun_String
+PyAPI_FUNC(PyObject *)
+PyRun_String(const char *str, int s, PyObject *g, PyObject *l)
+{
+ return PyRun_StringFlags(str, s, g, l, NULL);
+}
+
+#undef PyRun_SimpleString
+PyAPI_FUNC(int)
+PyRun_SimpleString(const char *s)
+{
+ return PyRun_SimpleStringFlags(s, NULL);
+}
+
+#undef Py_CompileString
+PyAPI_FUNC(PyObject *)
+Py_CompileString(const char *str, const char *p, int s)
+{
+ return Py_CompileStringExFlags(str, p, s, NULL, -1);
+}
+
+#undef Py_CompileStringFlags
+PyAPI_FUNC(PyObject *)
+Py_CompileStringFlags(const char *str, const char *p, int s,
+ PyCompilerFlags *flags)
+{
+ return Py_CompileStringExFlags(str, p, s, flags, -1);
+}
+
+#undef PyRun_InteractiveOne
+PyAPI_FUNC(int)
+PyRun_InteractiveOne(FILE *f, const char *p)
+{
+ return PyRun_InteractiveOneFlags(f, p, NULL);
+}
+
+#undef PyRun_InteractiveLoop
+PyAPI_FUNC(int)
+PyRun_InteractiveLoop(FILE *f, const char *p)
+{
+ return PyRun_InteractiveLoopFlags(f, p, NULL);
+}
+
+#ifdef __cplusplus
+}
+#endif
diff --git a/contrib/tools/python3/Python/pytime.c b/contrib/tools/python3/Python/pytime.c
new file mode 100644
index 00000000000..acd1842056a
--- /dev/null
+++ b/contrib/tools/python3/Python/pytime.c
@@ -0,0 +1,1382 @@
+#include "Python.h"
+#ifdef MS_WINDOWS
+# include <winsock2.h> // struct timeval
+#endif
+
+#if defined(__APPLE__)
+# include <mach/mach_time.h> // mach_absolute_time(), mach_timebase_info()
+
+#if defined(__APPLE__) && defined(__has_builtin)
+# if __has_builtin(__builtin_available)
+# define HAVE_CLOCK_GETTIME_RUNTIME __builtin_available(macOS 10.12, iOS 10.0, tvOS 10.0, watchOS 3.0, *)
+# endif
+#endif
+#endif
+
+/* To millisecond (10^-3) */
+#define SEC_TO_MS 1000
+
+/* To microseconds (10^-6) */
+#define MS_TO_US 1000
+#define SEC_TO_US (SEC_TO_MS * MS_TO_US)
+
+/* To nanoseconds (10^-9) */
+#define US_TO_NS 1000
+#define MS_TO_NS (MS_TO_US * US_TO_NS)
+#define SEC_TO_NS (SEC_TO_MS * MS_TO_NS)
+
+/* Conversion from nanoseconds */
+#define NS_TO_MS (1000 * 1000)
+#define NS_TO_US (1000)
+#define NS_TO_100NS (100)
+
+#if SIZEOF_TIME_T == SIZEOF_LONG_LONG
+# define PY_TIME_T_MAX LLONG_MAX
+# define PY_TIME_T_MIN LLONG_MIN
+#elif SIZEOF_TIME_T == SIZEOF_LONG
+# define PY_TIME_T_MAX LONG_MAX
+# define PY_TIME_T_MIN LONG_MIN
+#else
+# error "unsupported time_t size"
+#endif
+
+#if PY_TIME_T_MAX + PY_TIME_T_MIN != -1
+# error "time_t is not a two's complement integer type"
+#endif
+
+#if _PyTime_MIN + _PyTime_MAX != -1
+# error "_PyTime_t is not a two's complement integer type"
+#endif
+
+
+static void
+pytime_time_t_overflow(void)
+{
+ PyErr_SetString(PyExc_OverflowError,
+ "timestamp out of range for platform time_t");
+}
+
+
+static void
+pytime_overflow(void)
+{
+ PyErr_SetString(PyExc_OverflowError,
+ "timestamp too large to convert to C _PyTime_t");
+}
+
+
+static inline _PyTime_t
+pytime_from_nanoseconds(_PyTime_t t)
+{
+ // _PyTime_t is a number of nanoseconds
+ return t;
+}
+
+
+static inline _PyTime_t
+pytime_as_nanoseconds(_PyTime_t t)
+{
+ // _PyTime_t is a number of nanoseconds: see pytime_from_nanoseconds()
+ return t;
+}
+
+
+// Compute t1 + t2. Clamp to [_PyTime_MIN; _PyTime_MAX] on overflow.
+static inline int
+pytime_add(_PyTime_t *t1, _PyTime_t t2)
+{
+ if (t2 > 0 && *t1 > _PyTime_MAX - t2) {
+ *t1 = _PyTime_MAX;
+ return -1;
+ }
+ else if (t2 < 0 && *t1 < _PyTime_MIN - t2) {
+ *t1 = _PyTime_MIN;
+ return -1;
+ }
+ else {
+ *t1 += t2;
+ return 0;
+ }
+}
+
+
+_PyTime_t
+_PyTime_Add(_PyTime_t t1, _PyTime_t t2)
+{
+ (void)pytime_add(&t1, t2);
+ return t1;
+}
+
+
+static inline int
+pytime_mul_check_overflow(_PyTime_t a, _PyTime_t b)
+{
+ if (b != 0) {
+ assert(b > 0);
+ return ((a < _PyTime_MIN / b) || (_PyTime_MAX / b < a));
+ }
+ else {
+ return 0;
+ }
+}
+
+
+// Compute t * k. Clamp to [_PyTime_MIN; _PyTime_MAX] on overflow.
+static inline int
+pytime_mul(_PyTime_t *t, _PyTime_t k)
+{
+ assert(k >= 0);
+ if (pytime_mul_check_overflow(*t, k)) {
+ *t = (*t >= 0) ? _PyTime_MAX : _PyTime_MIN;
+ return -1;
+ }
+ else {
+ *t *= k;
+ return 0;
+ }
+}
+
+
+// Compute t * k. Clamp to [_PyTime_MIN; _PyTime_MAX] on overflow.
+static inline _PyTime_t
+_PyTime_Mul(_PyTime_t t, _PyTime_t k)
+{
+ (void)pytime_mul(&t, k);
+ return t;
+}
+
+
+
+
+_PyTime_t
+_PyTime_MulDiv(_PyTime_t ticks, _PyTime_t mul, _PyTime_t div)
+{
+ /* Compute (ticks * mul / div) in two parts to reduce the risk of integer
+ overflow: compute the integer part, and then the remaining part.
+
+ (ticks * mul) / div == (ticks / div) * mul + (ticks % div) * mul / div
+ */
+ _PyTime_t intpart, remaining;
+ intpart = ticks / div;
+ ticks %= div;
+ remaining = _PyTime_Mul(ticks, mul) / div;
+ // intpart * mul + remaining
+ return _PyTime_Add(_PyTime_Mul(intpart, mul), remaining);
+}
+
+
+time_t
+_PyLong_AsTime_t(PyObject *obj)
+{
+#if SIZEOF_TIME_T == SIZEOF_LONG_LONG
+ long long val = PyLong_AsLongLong(obj);
+#elif SIZEOF_TIME_T <= SIZEOF_LONG
+ long val = PyLong_AsLong(obj);
+#else
+# error "unsupported time_t size"
+#endif
+ if (val == -1 && PyErr_Occurred()) {
+ if (PyErr_ExceptionMatches(PyExc_OverflowError)) {
+ pytime_time_t_overflow();
+ }
+ return -1;
+ }
+ return (time_t)val;
+}
+
+
+PyObject *
+_PyLong_FromTime_t(time_t t)
+{
+#if SIZEOF_TIME_T == SIZEOF_LONG_LONG
+ return PyLong_FromLongLong((long long)t);
+#elif SIZEOF_TIME_T <= SIZEOF_LONG
+ return PyLong_FromLong((long)t);
+#else
+# error "unsupported time_t size"
+#endif
+}
+
+
+// Convert _PyTime_t to time_t.
+// Return 0 on success. Return -1 and clamp the value on overflow.
+static int
+_PyTime_AsTime_t(_PyTime_t t, time_t *t2)
+{
+#if SIZEOF_TIME_T < _SIZEOF_PYTIME_T
+ if ((_PyTime_t)PY_TIME_T_MAX < t) {
+ *t2 = PY_TIME_T_MAX;
+ return -1;
+ }
+ if (t < (_PyTime_t)PY_TIME_T_MIN) {
+ *t2 = PY_TIME_T_MIN;
+ return -1;
+ }
+#endif
+ *t2 = (time_t)t;
+ return 0;
+}
+
+
+#ifdef MS_WINDOWS
+// Convert _PyTime_t to long.
+// Return 0 on success. Return -1 and clamp the value on overflow.
+static int
+_PyTime_AsLong(_PyTime_t t, long *t2)
+{
+#if SIZEOF_LONG < _SIZEOF_PYTIME_T
+ if ((_PyTime_t)LONG_MAX < t) {
+ *t2 = LONG_MAX;
+ return -1;
+ }
+ if (t < (_PyTime_t)LONG_MIN) {
+ *t2 = LONG_MIN;
+ return -1;
+ }
+#endif
+ *t2 = (long)t;
+ return 0;
+}
+#endif
+
+
+/* Round to nearest with ties going to nearest even integer
+ (_PyTime_ROUND_HALF_EVEN) */
+static double
+pytime_round_half_even(double x)
+{
+ double rounded = round(x);
+ if (fabs(x-rounded) == 0.5) {
+ /* halfway case: round to even */
+ rounded = 2.0 * round(x / 2.0);
+ }
+ return rounded;
+}
+
+
+static double
+pytime_round(double x, _PyTime_round_t round)
+{
+ /* volatile avoids optimization changing how numbers are rounded */
+ volatile double d;
+
+ d = x;
+ if (round == _PyTime_ROUND_HALF_EVEN) {
+ d = pytime_round_half_even(d);
+ }
+ else if (round == _PyTime_ROUND_CEILING) {
+ d = ceil(d);
+ }
+ else if (round == _PyTime_ROUND_FLOOR) {
+ d = floor(d);
+ }
+ else {
+ assert(round == _PyTime_ROUND_UP);
+ d = (d >= 0.0) ? ceil(d) : floor(d);
+ }
+ return d;
+}
+
+
+static int
+pytime_double_to_denominator(double d, time_t *sec, long *numerator,
+ long idenominator, _PyTime_round_t round)
+{
+ double denominator = (double)idenominator;
+ double intpart;
+ /* volatile avoids optimization changing how numbers are rounded */
+ volatile double floatpart;
+
+ floatpart = modf(d, &intpart);
+
+ floatpart *= denominator;
+ floatpart = pytime_round(floatpart, round);
+ if (floatpart >= denominator) {
+ floatpart -= denominator;
+ intpart += 1.0;
+ }
+ else if (floatpart < 0) {
+ floatpart += denominator;
+ intpart -= 1.0;
+ }
+ assert(0.0 <= floatpart && floatpart < denominator);
+
+ /*
+ Conversion of an out-of-range value to time_t gives undefined behaviour
+ (C99 §6.3.1.4p1), so we must guard against it. However, checking that
+ `intpart` is in range is delicate: the obvious expression `intpart <=
+ PY_TIME_T_MAX` will first convert the value `PY_TIME_T_MAX` to a double,
+ potentially changing its value and leading to us failing to catch some
+ UB-inducing values. The code below works correctly under the mild
+ assumption that time_t is a two's complement integer type with no trap
+ representation, and that `PY_TIME_T_MIN` is within the representable
+ range of a C double.
+
+ Note: we want the `if` condition below to be true for NaNs; therefore,
+ resist any temptation to simplify by applying De Morgan's laws.
+ */
+ if (!((double)PY_TIME_T_MIN <= intpart && intpart < -(double)PY_TIME_T_MIN)) {
+ pytime_time_t_overflow();
+ return -1;
+ }
+ *sec = (time_t)intpart;
+ *numerator = (long)floatpart;
+ assert(0 <= *numerator && *numerator < idenominator);
+ return 0;
+}
+
+
+static int
+pytime_object_to_denominator(PyObject *obj, time_t *sec, long *numerator,
+ long denominator, _PyTime_round_t round)
+{
+ assert(denominator >= 1);
+
+ if (PyFloat_Check(obj)) {
+ double d = PyFloat_AsDouble(obj);
+ if (Py_IS_NAN(d)) {
+ *numerator = 0;
+ PyErr_SetString(PyExc_ValueError, "Invalid value NaN (not a number)");
+ return -1;
+ }
+ return pytime_double_to_denominator(d, sec, numerator,
+ denominator, round);
+ }
+ else {
+ *sec = _PyLong_AsTime_t(obj);
+ *numerator = 0;
+ if (*sec == (time_t)-1 && PyErr_Occurred()) {
+ return -1;
+ }
+ return 0;
+ }
+}
+
+
+int
+_PyTime_ObjectToTime_t(PyObject *obj, time_t *sec, _PyTime_round_t round)
+{
+ if (PyFloat_Check(obj)) {
+ double intpart;
+ /* volatile avoids optimization changing how numbers are rounded */
+ volatile double d;
+
+ d = PyFloat_AsDouble(obj);
+ if (Py_IS_NAN(d)) {
+ PyErr_SetString(PyExc_ValueError, "Invalid value NaN (not a number)");
+ return -1;
+ }
+
+ d = pytime_round(d, round);
+ (void)modf(d, &intpart);
+
+ /* See comments in pytime_double_to_denominator */
+ if (!((double)PY_TIME_T_MIN <= intpart && intpart < -(double)PY_TIME_T_MIN)) {
+ pytime_time_t_overflow();
+ return -1;
+ }
+ *sec = (time_t)intpart;
+ return 0;
+ }
+ else {
+ *sec = _PyLong_AsTime_t(obj);
+ if (*sec == (time_t)-1 && PyErr_Occurred()) {
+ return -1;
+ }
+ return 0;
+ }
+}
+
+
+int
+_PyTime_ObjectToTimespec(PyObject *obj, time_t *sec, long *nsec,
+ _PyTime_round_t round)
+{
+ return pytime_object_to_denominator(obj, sec, nsec, SEC_TO_NS, round);
+}
+
+
+int
+_PyTime_ObjectToTimeval(PyObject *obj, time_t *sec, long *usec,
+ _PyTime_round_t round)
+{
+ return pytime_object_to_denominator(obj, sec, usec, SEC_TO_US, round);
+}
+
+
+_PyTime_t
+_PyTime_FromSeconds(int seconds)
+{
+ /* ensure that integer overflow cannot happen, int type should have 32
+ bits, whereas _PyTime_t type has at least 64 bits (SEC_TO_NS takes 30
+ bits). */
+ static_assert(INT_MAX <= _PyTime_MAX / SEC_TO_NS, "_PyTime_t overflow");
+ static_assert(INT_MIN >= _PyTime_MIN / SEC_TO_NS, "_PyTime_t underflow");
+
+ _PyTime_t t = (_PyTime_t)seconds;
+ assert((t >= 0 && t <= _PyTime_MAX / SEC_TO_NS)
+ || (t < 0 && t >= _PyTime_MIN / SEC_TO_NS));
+ t *= SEC_TO_NS;
+ return pytime_from_nanoseconds(t);
+}
+
+
+_PyTime_t
+_PyTime_FromNanoseconds(_PyTime_t ns)
+{
+ return pytime_from_nanoseconds(ns);
+}
+
+
+_PyTime_t
+_PyTime_FromMicrosecondsClamp(_PyTime_t us)
+{
+ _PyTime_t ns = _PyTime_Mul(us, US_TO_NS);
+ return pytime_from_nanoseconds(ns);
+}
+
+
+int
+_PyTime_FromNanosecondsObject(_PyTime_t *tp, PyObject *obj)
+{
+
+ if (!PyLong_Check(obj)) {
+ PyErr_Format(PyExc_TypeError, "expect int, got %s",
+ Py_TYPE(obj)->tp_name);
+ return -1;
+ }
+
+ static_assert(sizeof(long long) == sizeof(_PyTime_t),
+ "_PyTime_t is not long long");
+ long long nsec = PyLong_AsLongLong(obj);
+ if (nsec == -1 && PyErr_Occurred()) {
+ if (PyErr_ExceptionMatches(PyExc_OverflowError)) {
+ pytime_overflow();
+ }
+ return -1;
+ }
+
+ _PyTime_t t = (_PyTime_t)nsec;
+ *tp = pytime_from_nanoseconds(t);
+ return 0;
+}
+
+
+#ifdef HAVE_CLOCK_GETTIME
+static int
+pytime_fromtimespec(_PyTime_t *tp, struct timespec *ts, int raise_exc)
+{
+ _PyTime_t t, tv_nsec;
+
+ static_assert(sizeof(ts->tv_sec) <= sizeof(_PyTime_t),
+ "timespec.tv_sec is larger than _PyTime_t");
+ t = (_PyTime_t)ts->tv_sec;
+
+ int res1 = pytime_mul(&t, SEC_TO_NS);
+
+ tv_nsec = ts->tv_nsec;
+ int res2 = pytime_add(&t, tv_nsec);
+
+ *tp = pytime_from_nanoseconds(t);
+
+ if (raise_exc && (res1 < 0 || res2 < 0)) {
+ pytime_overflow();
+ return -1;
+ }
+ return 0;
+}
+
+int
+_PyTime_FromTimespec(_PyTime_t *tp, struct timespec *ts)
+{
+ return pytime_fromtimespec(tp, ts, 1);
+}
+#endif
+
+
+#ifndef MS_WINDOWS
+static int
+pytime_fromtimeval(_PyTime_t *tp, struct timeval *tv, int raise_exc)
+{
+ static_assert(sizeof(tv->tv_sec) <= sizeof(_PyTime_t),
+ "timeval.tv_sec is larger than _PyTime_t");
+ _PyTime_t t = (_PyTime_t)tv->tv_sec;
+
+ int res1 = pytime_mul(&t, SEC_TO_NS);
+
+ _PyTime_t usec = (_PyTime_t)tv->tv_usec * US_TO_NS;
+ int res2 = pytime_add(&t, usec);
+
+ *tp = pytime_from_nanoseconds(t);
+
+ if (raise_exc && (res1 < 0 || res2 < 0)) {
+ pytime_overflow();
+ return -1;
+ }
+ return 0;
+}
+
+
+int
+_PyTime_FromTimeval(_PyTime_t *tp, struct timeval *tv)
+{
+ return pytime_fromtimeval(tp, tv, 1);
+}
+#endif
+
+
+static int
+pytime_from_double(_PyTime_t *tp, double value, _PyTime_round_t round,
+ long unit_to_ns)
+{
+ /* volatile avoids optimization changing how numbers are rounded */
+ volatile double d;
+
+ /* convert to a number of nanoseconds */
+ d = value;
+ d *= (double)unit_to_ns;
+ d = pytime_round(d, round);
+
+ /* See comments in pytime_double_to_denominator */
+ if (!((double)_PyTime_MIN <= d && d < -(double)_PyTime_MIN)) {
+ pytime_time_t_overflow();
+ return -1;
+ }
+ _PyTime_t ns = (_PyTime_t)d;
+
+ *tp = pytime_from_nanoseconds(ns);
+ return 0;
+}
+
+
+static int
+pytime_from_object(_PyTime_t *tp, PyObject *obj, _PyTime_round_t round,
+ long unit_to_ns)
+{
+ if (PyFloat_Check(obj)) {
+ double d;
+ d = PyFloat_AsDouble(obj);
+ if (Py_IS_NAN(d)) {
+ PyErr_SetString(PyExc_ValueError, "Invalid value NaN (not a number)");
+ return -1;
+ }
+ return pytime_from_double(tp, d, round, unit_to_ns);
+ }
+ else {
+ long long sec = PyLong_AsLongLong(obj);
+ if (sec == -1 && PyErr_Occurred()) {
+ if (PyErr_ExceptionMatches(PyExc_OverflowError)) {
+ pytime_overflow();
+ }
+ return -1;
+ }
+
+ static_assert(sizeof(long long) <= sizeof(_PyTime_t),
+ "_PyTime_t is smaller than long long");
+ _PyTime_t ns = (_PyTime_t)sec;
+ if (pytime_mul(&ns, unit_to_ns) < 0) {
+ pytime_overflow();
+ return -1;
+ }
+
+ *tp = pytime_from_nanoseconds(ns);
+ return 0;
+ }
+}
+
+
+int
+_PyTime_FromSecondsObject(_PyTime_t *tp, PyObject *obj, _PyTime_round_t round)
+{
+ return pytime_from_object(tp, obj, round, SEC_TO_NS);
+}
+
+
+int
+_PyTime_FromMillisecondsObject(_PyTime_t *tp, PyObject *obj, _PyTime_round_t round)
+{
+ return pytime_from_object(tp, obj, round, MS_TO_NS);
+}
+
+
+double
+_PyTime_AsSecondsDouble(_PyTime_t t)
+{
+ /* volatile avoids optimization changing how numbers are rounded */
+ volatile double d;
+
+ _PyTime_t ns = pytime_as_nanoseconds(t);
+ if (ns % SEC_TO_NS == 0) {
+ /* Divide using integers to avoid rounding issues on the integer part.
+ 1e-9 cannot be stored exactly in IEEE 64-bit. */
+ _PyTime_t secs = ns / SEC_TO_NS;
+ d = (double)secs;
+ }
+ else {
+ d = (double)ns;
+ d /= 1e9;
+ }
+ return d;
+}
+
+
+PyObject *
+_PyTime_AsNanosecondsObject(_PyTime_t t)
+{
+ _PyTime_t ns = pytime_as_nanoseconds(t);
+ static_assert(sizeof(long long) >= sizeof(_PyTime_t),
+ "_PyTime_t is larger than long long");
+ return PyLong_FromLongLong((long long)ns);
+}
+
+
+static _PyTime_t
+pytime_divide_round_up(const _PyTime_t t, const _PyTime_t k)
+{
+ assert(k > 1);
+ if (t >= 0) {
+ // Don't use (t + k - 1) / k to avoid integer overflow
+ // if t is equal to _PyTime_MAX
+ _PyTime_t q = t / k;
+ if (t % k) {
+ q += 1;
+ }
+ return q;
+ }
+ else {
+ // Don't use (t - (k - 1)) / k to avoid integer overflow
+ // if t is equals to _PyTime_MIN.
+ _PyTime_t q = t / k;
+ if (t % k) {
+ q -= 1;
+ }
+ return q;
+ }
+}
+
+
+static _PyTime_t
+pytime_divide(const _PyTime_t t, const _PyTime_t k,
+ const _PyTime_round_t round)
+{
+ assert(k > 1);
+ if (round == _PyTime_ROUND_HALF_EVEN) {
+ _PyTime_t x = t / k;
+ _PyTime_t r = t % k;
+ _PyTime_t abs_r = Py_ABS(r);
+ if (abs_r > k / 2 || (abs_r == k / 2 && (Py_ABS(x) & 1))) {
+ if (t >= 0) {
+ x++;
+ }
+ else {
+ x--;
+ }
+ }
+ return x;
+ }
+ else if (round == _PyTime_ROUND_CEILING) {
+ if (t >= 0) {
+ return pytime_divide_round_up(t, k);
+ }
+ else {
+ return t / k;
+ }
+ }
+ else if (round == _PyTime_ROUND_FLOOR){
+ if (t >= 0) {
+ return t / k;
+ }
+ else {
+ return pytime_divide_round_up(t, k);
+ }
+ }
+ else {
+ assert(round == _PyTime_ROUND_UP);
+ return pytime_divide_round_up(t, k);
+ }
+}
+
+
+// Compute (t / k, t % k) in (pq, pr).
+// Make sure that 0 <= pr < k.
+// Return 0 on success.
+// Return -1 on underflow and store (_PyTime_MIN, 0) in (pq, pr).
+static int
+pytime_divmod(const _PyTime_t t, const _PyTime_t k,
+ _PyTime_t *pq, _PyTime_t *pr)
+{
+ assert(k > 1);
+ _PyTime_t q = t / k;
+ _PyTime_t r = t % k;
+ if (r < 0) {
+ if (q == _PyTime_MIN) {
+ *pq = _PyTime_MIN;
+ *pr = 0;
+ return -1;
+ }
+ r += k;
+ q -= 1;
+ }
+ assert(0 <= r && r < k);
+
+ *pq = q;
+ *pr = r;
+ return 0;
+}
+
+
+_PyTime_t
+_PyTime_AsNanoseconds(_PyTime_t t)
+{
+ return pytime_as_nanoseconds(t);
+}
+
+
+#ifdef MS_WINDOWS
+_PyTime_t
+_PyTime_As100Nanoseconds(_PyTime_t t, _PyTime_round_t round)
+{
+ _PyTime_t ns = pytime_as_nanoseconds(t);
+ return pytime_divide(ns, NS_TO_100NS, round);
+}
+#endif
+
+
+_PyTime_t
+_PyTime_AsMicroseconds(_PyTime_t t, _PyTime_round_t round)
+{
+ _PyTime_t ns = pytime_as_nanoseconds(t);
+ return pytime_divide(ns, NS_TO_US, round);
+}
+
+
+_PyTime_t
+_PyTime_AsMilliseconds(_PyTime_t t, _PyTime_round_t round)
+{
+ _PyTime_t ns = pytime_as_nanoseconds(t);
+ return pytime_divide(ns, NS_TO_MS, round);
+}
+
+
+static int
+pytime_as_timeval(_PyTime_t t, _PyTime_t *ptv_sec, int *ptv_usec,
+ _PyTime_round_t round)
+{
+ _PyTime_t ns = pytime_as_nanoseconds(t);
+ _PyTime_t us = pytime_divide(ns, US_TO_NS, round);
+
+ _PyTime_t tv_sec, tv_usec;
+ int res = pytime_divmod(us, SEC_TO_US, &tv_sec, &tv_usec);
+ *ptv_sec = tv_sec;
+ *ptv_usec = (int)tv_usec;
+ return res;
+}
+
+
+static int
+pytime_as_timeval_struct(_PyTime_t t, struct timeval *tv,
+ _PyTime_round_t round, int raise_exc)
+{
+ _PyTime_t tv_sec;
+ int tv_usec;
+ int res = pytime_as_timeval(t, &tv_sec, &tv_usec, round);
+ int res2;
+#ifdef MS_WINDOWS
+ // On Windows, timeval.tv_sec type is long
+ res2 = _PyTime_AsLong(tv_sec, &tv->tv_sec);
+#else
+ res2 = _PyTime_AsTime_t(tv_sec, &tv->tv_sec);
+#endif
+ if (res2 < 0) {
+ tv_usec = 0;
+ }
+ tv->tv_usec = tv_usec;
+
+ if (raise_exc && (res < 0 || res2 < 0)) {
+ pytime_time_t_overflow();
+ return -1;
+ }
+ return 0;
+}
+
+
+int
+_PyTime_AsTimeval(_PyTime_t t, struct timeval *tv, _PyTime_round_t round)
+{
+ return pytime_as_timeval_struct(t, tv, round, 1);
+}
+
+
+void
+_PyTime_AsTimeval_clamp(_PyTime_t t, struct timeval *tv, _PyTime_round_t round)
+{
+ (void)pytime_as_timeval_struct(t, tv, round, 0);
+}
+
+
+int
+_PyTime_AsTimevalTime_t(_PyTime_t t, time_t *p_secs, int *us,
+ _PyTime_round_t round)
+{
+ _PyTime_t secs;
+ if (pytime_as_timeval(t, &secs, us, round) < 0) {
+ pytime_time_t_overflow();
+ return -1;
+ }
+
+ if (_PyTime_AsTime_t(secs, p_secs) < 0) {
+ pytime_time_t_overflow();
+ return -1;
+ }
+ return 0;
+}
+
+
+#if defined(HAVE_CLOCK_GETTIME) || defined(HAVE_KQUEUE)
+static int
+pytime_as_timespec(_PyTime_t t, struct timespec *ts, int raise_exc)
+{
+ _PyTime_t ns = pytime_as_nanoseconds(t);
+ _PyTime_t tv_sec, tv_nsec;
+ int res = pytime_divmod(ns, SEC_TO_NS, &tv_sec, &tv_nsec);
+
+ int res2 = _PyTime_AsTime_t(tv_sec, &ts->tv_sec);
+ if (res2 < 0) {
+ tv_nsec = 0;
+ }
+ ts->tv_nsec = tv_nsec;
+
+ if (raise_exc && (res < 0 || res2 < 0)) {
+ pytime_time_t_overflow();
+ return -1;
+ }
+ return 0;
+}
+
+void
+_PyTime_AsTimespec_clamp(_PyTime_t t, struct timespec *ts)
+{
+ (void)pytime_as_timespec(t, ts, 0);
+}
+
+int
+_PyTime_AsTimespec(_PyTime_t t, struct timespec *ts)
+{
+ return pytime_as_timespec(t, ts, 1);
+}
+#endif
+
+
+static int
+py_get_system_clock(_PyTime_t *tp, _Py_clock_info_t *info, int raise_exc)
+{
+ assert(info == NULL || raise_exc);
+
+#ifdef MS_WINDOWS
+ FILETIME system_time;
+ ULARGE_INTEGER large;
+
+ GetSystemTimeAsFileTime(&system_time);
+ large.u.LowPart = system_time.dwLowDateTime;
+ large.u.HighPart = system_time.dwHighDateTime;
+ /* 11,644,473,600,000,000,000: number of nanoseconds between
+ the 1st january 1601 and the 1st january 1970 (369 years + 89 leap
+ days). */
+ _PyTime_t ns = large.QuadPart * 100 - 11644473600000000000;
+ *tp = pytime_from_nanoseconds(ns);
+ if (info) {
+ DWORD timeAdjustment, timeIncrement;
+ BOOL isTimeAdjustmentDisabled, ok;
+
+ info->implementation = "GetSystemTimeAsFileTime()";
+ info->monotonic = 0;
+ ok = GetSystemTimeAdjustment(&timeAdjustment, &timeIncrement,
+ &isTimeAdjustmentDisabled);
+ if (!ok) {
+ PyErr_SetFromWindowsErr(0);
+ return -1;
+ }
+ info->resolution = timeIncrement * 1e-7;
+ info->adjustable = 1;
+ }
+
+#else /* MS_WINDOWS */
+ int err;
+#if defined(HAVE_CLOCK_GETTIME)
+ struct timespec ts;
+#endif
+
+#if !defined(HAVE_CLOCK_GETTIME) || defined(__APPLE__)
+ struct timeval tv;
+#endif
+
+#ifdef HAVE_CLOCK_GETTIME
+
+#ifdef HAVE_CLOCK_GETTIME_RUNTIME
+ if (HAVE_CLOCK_GETTIME_RUNTIME) {
+#endif
+
+ err = clock_gettime(CLOCK_REALTIME, &ts);
+ if (err) {
+ if (raise_exc) {
+ PyErr_SetFromErrno(PyExc_OSError);
+ }
+ return -1;
+ }
+ if (pytime_fromtimespec(tp, &ts, raise_exc) < 0) {
+ return -1;
+ }
+
+ if (info) {
+ struct timespec res;
+ info->implementation = "clock_gettime(CLOCK_REALTIME)";
+ info->monotonic = 0;
+ info->adjustable = 1;
+ if (clock_getres(CLOCK_REALTIME, &res) == 0) {
+ info->resolution = (double)res.tv_sec + (double)res.tv_nsec * 1e-9;
+ }
+ else {
+ info->resolution = 1e-9;
+ }
+ }
+
+#ifdef HAVE_CLOCK_GETTIME_RUNTIME
+ }
+ else {
+#endif
+
+#endif
+
+#if !defined(HAVE_CLOCK_GETTIME) || defined(HAVE_CLOCK_GETTIME_RUNTIME)
+
+ /* test gettimeofday() */
+ err = gettimeofday(&tv, (struct timezone *)NULL);
+ if (err) {
+ if (raise_exc) {
+ PyErr_SetFromErrno(PyExc_OSError);
+ }
+ return -1;
+ }
+ if (pytime_fromtimeval(tp, &tv, raise_exc) < 0) {
+ return -1;
+ }
+
+ if (info) {
+ info->implementation = "gettimeofday()";
+ info->resolution = 1e-6;
+ info->monotonic = 0;
+ info->adjustable = 1;
+ }
+
+#if defined(HAVE_CLOCK_GETTIME_RUNTIME) && defined(HAVE_CLOCK_GETTIME)
+ } /* end of availibity block */
+#endif
+
+#endif /* !HAVE_CLOCK_GETTIME */
+#endif /* !MS_WINDOWS */
+ return 0;
+}
+
+
+_PyTime_t
+_PyTime_GetSystemClock(void)
+{
+ _PyTime_t t;
+ if (py_get_system_clock(&t, NULL, 0) < 0) {
+ // If clock_gettime(CLOCK_REALTIME) or gettimeofday() fails:
+ // silently ignore the failure and return 0.
+ t = 0;
+ }
+ return t;
+}
+
+
+int
+_PyTime_GetSystemClockWithInfo(_PyTime_t *t, _Py_clock_info_t *info)
+{
+ return py_get_system_clock(t, info, 1);
+}
+
+
+#ifdef __APPLE__
+static int
+py_mach_timebase_info(_PyTime_t *pnumer, _PyTime_t *pdenom, int raise)
+{
+ static mach_timebase_info_data_t timebase;
+ /* According to the Technical Q&A QA1398, mach_timebase_info() cannot
+ fail: https://developer.apple.com/library/mac/#qa/qa1398/ */
+ (void)mach_timebase_info(&timebase);
+
+ /* Sanity check: should never occur in practice */
+ if (timebase.numer < 1 || timebase.denom < 1) {
+ if (raise) {
+ PyErr_SetString(PyExc_RuntimeError,
+ "invalid mach_timebase_info");
+ }
+ return -1;
+ }
+
+ /* Check that timebase.numer and timebase.denom can be casted to
+ _PyTime_t. In practice, timebase uses uint32_t, so casting cannot
+ overflow. At the end, only make sure that the type is uint32_t
+ (_PyTime_t is 64-bit long). */
+ static_assert(sizeof(timebase.numer) <= sizeof(_PyTime_t),
+ "timebase.numer is larger than _PyTime_t");
+ static_assert(sizeof(timebase.denom) <= sizeof(_PyTime_t),
+ "timebase.denom is larger than _PyTime_t");
+
+ /* Make sure that _PyTime_MulDiv(ticks, timebase_numer, timebase_denom)
+ cannot overflow.
+
+ Known time bases:
+
+ * (1, 1) on Intel
+ * (1000000000, 33333335) or (1000000000, 25000000) on PowerPC
+
+ None of these time bases can overflow with 64-bit _PyTime_t, but
+ check for overflow, just in case. */
+ if ((_PyTime_t)timebase.numer > _PyTime_MAX / (_PyTime_t)timebase.denom) {
+ if (raise) {
+ PyErr_SetString(PyExc_OverflowError,
+ "mach_timebase_info is too large");
+ }
+ return -1;
+ }
+
+ *pnumer = (_PyTime_t)timebase.numer;
+ *pdenom = (_PyTime_t)timebase.denom;
+ return 0;
+}
+#endif
+
+
+static int
+py_get_monotonic_clock(_PyTime_t *tp, _Py_clock_info_t *info, int raise_exc)
+{
+ assert(info == NULL || raise_exc);
+
+#if defined(MS_WINDOWS)
+ ULONGLONG ticks = GetTickCount64();
+ static_assert(sizeof(ticks) <= sizeof(_PyTime_t),
+ "ULONGLONG is larger than _PyTime_t");
+ _PyTime_t t;
+ if (ticks <= (ULONGLONG)_PyTime_MAX) {
+ t = (_PyTime_t)ticks;
+ }
+ else {
+ // GetTickCount64() maximum is larger than _PyTime_t maximum:
+ // ULONGLONG is unsigned, whereas _PyTime_t is signed.
+ t = _PyTime_MAX;
+ }
+
+ int res = pytime_mul(&t, MS_TO_NS);
+ *tp = t;
+
+ if (raise_exc && res < 0) {
+ pytime_overflow();
+ return -1;
+ }
+
+ if (info) {
+ DWORD timeAdjustment, timeIncrement;
+ BOOL isTimeAdjustmentDisabled, ok;
+ info->implementation = "GetTickCount64()";
+ info->monotonic = 1;
+ ok = GetSystemTimeAdjustment(&timeAdjustment, &timeIncrement,
+ &isTimeAdjustmentDisabled);
+ if (!ok) {
+ PyErr_SetFromWindowsErr(0);
+ return -1;
+ }
+ info->resolution = timeIncrement * 1e-7;
+ info->adjustable = 0;
+ }
+
+#elif defined(__APPLE__)
+ static _PyTime_t timebase_numer = 0;
+ static _PyTime_t timebase_denom = 0;
+ if (timebase_denom == 0) {
+ if (py_mach_timebase_info(&timebase_numer, &timebase_denom, raise_exc) < 0) {
+ return -1;
+ }
+ }
+
+ if (info) {
+ info->implementation = "mach_absolute_time()";
+ info->resolution = (double)timebase_numer / (double)timebase_denom * 1e-9;
+ info->monotonic = 1;
+ info->adjustable = 0;
+ }
+
+ uint64_t uticks = mach_absolute_time();
+ // unsigned => signed
+ assert(uticks <= (uint64_t)_PyTime_MAX);
+ _PyTime_t ticks = (_PyTime_t)uticks;
+
+ _PyTime_t ns = _PyTime_MulDiv(ticks, timebase_numer, timebase_denom);
+ *tp = pytime_from_nanoseconds(ns);
+
+#elif defined(__hpux)
+ hrtime_t time;
+
+ time = gethrtime();
+ if (time == -1) {
+ if (raise_exc) {
+ PyErr_SetFromErrno(PyExc_OSError);
+ }
+ return -1;
+ }
+
+ *tp = pytime_from_nanoseconds(time);
+
+ if (info) {
+ info->implementation = "gethrtime()";
+ info->resolution = 1e-9;
+ info->monotonic = 1;
+ info->adjustable = 0;
+ }
+
+#else
+
+#ifdef CLOCK_HIGHRES
+ const clockid_t clk_id = CLOCK_HIGHRES;
+ const char *implementation = "clock_gettime(CLOCK_HIGHRES)";
+#else
+ const clockid_t clk_id = CLOCK_MONOTONIC;
+ const char *implementation = "clock_gettime(CLOCK_MONOTONIC)";
+#endif
+
+ struct timespec ts;
+ if (clock_gettime(clk_id, &ts) != 0) {
+ if (raise_exc) {
+ PyErr_SetFromErrno(PyExc_OSError);
+ return -1;
+ }
+ return -1;
+ }
+
+ if (pytime_fromtimespec(tp, &ts, raise_exc) < 0) {
+ return -1;
+ }
+
+ if (info) {
+ info->monotonic = 1;
+ info->implementation = implementation;
+ info->adjustable = 0;
+ struct timespec res;
+ if (clock_getres(clk_id, &res) != 0) {
+ PyErr_SetFromErrno(PyExc_OSError);
+ return -1;
+ }
+ info->resolution = res.tv_sec + res.tv_nsec * 1e-9;
+ }
+#endif
+ return 0;
+}
+
+
+_PyTime_t
+_PyTime_GetMonotonicClock(void)
+{
+ _PyTime_t t;
+ if (py_get_monotonic_clock(&t, NULL, 0) < 0) {
+ // If mach_timebase_info(), clock_gettime() or gethrtime() fails:
+ // silently ignore the failure and return 0.
+ t = 0;
+ }
+ return t;
+}
+
+
+int
+_PyTime_GetMonotonicClockWithInfo(_PyTime_t *tp, _Py_clock_info_t *info)
+{
+ return py_get_monotonic_clock(tp, info, 1);
+}
+
+
+#ifdef MS_WINDOWS
+static int
+py_win_perf_counter_frequency(LONGLONG *pfrequency, int raise)
+{
+ LONGLONG frequency;
+
+ LARGE_INTEGER freq;
+ // Since Windows XP, the function cannot fail.
+ (void)QueryPerformanceFrequency(&freq);
+ frequency = freq.QuadPart;
+
+ // Since Windows XP, frequency cannot be zero.
+ assert(frequency >= 1);
+
+ /* Make also sure that (ticks * SEC_TO_NS) cannot overflow in
+ _PyTime_MulDiv(), with ticks < frequency.
+
+ Known QueryPerformanceFrequency() values:
+
+ * 10,000,000 (10 MHz): 100 ns resolution
+ * 3,579,545 Hz (3.6 MHz): 279 ns resolution
+
+ None of these frequencies can overflow with 64-bit _PyTime_t, but
+ check for integer overflow just in case. */
+ if (frequency > _PyTime_MAX / SEC_TO_NS) {
+ if (raise) {
+ PyErr_SetString(PyExc_OverflowError,
+ "QueryPerformanceFrequency is too large");
+ }
+ return -1;
+ }
+
+ *pfrequency = frequency;
+ return 0;
+}
+
+
+static int
+py_get_win_perf_counter(_PyTime_t *tp, _Py_clock_info_t *info, int raise_exc)
+{
+ assert(info == NULL || raise_exc);
+
+ static LONGLONG frequency = 0;
+ if (frequency == 0) {
+ if (py_win_perf_counter_frequency(&frequency, raise_exc) < 0) {
+ return -1;
+ }
+ }
+
+ if (info) {
+ info->implementation = "QueryPerformanceCounter()";
+ info->resolution = 1.0 / (double)frequency;
+ info->monotonic = 1;
+ info->adjustable = 0;
+ }
+
+ LARGE_INTEGER now;
+ QueryPerformanceCounter(&now);
+ LONGLONG ticksll = now.QuadPart;
+
+ /* Make sure that casting LONGLONG to _PyTime_t cannot overflow,
+ both types are signed */
+ _PyTime_t ticks;
+ static_assert(sizeof(ticksll) <= sizeof(ticks),
+ "LONGLONG is larger than _PyTime_t");
+ ticks = (_PyTime_t)ticksll;
+
+ _PyTime_t ns = _PyTime_MulDiv(ticks, SEC_TO_NS, (_PyTime_t)frequency);
+ *tp = pytime_from_nanoseconds(ns);
+ return 0;
+}
+#endif // MS_WINDOWS
+
+
+int
+_PyTime_GetPerfCounterWithInfo(_PyTime_t *t, _Py_clock_info_t *info)
+{
+#ifdef MS_WINDOWS
+ return py_get_win_perf_counter(t, info, 1);
+#else
+ return _PyTime_GetMonotonicClockWithInfo(t, info);
+#endif
+}
+
+
+_PyTime_t
+_PyTime_GetPerfCounter(void)
+{
+ _PyTime_t t;
+ int res;
+#ifdef MS_WINDOWS
+ res = py_get_win_perf_counter(&t, NULL, 0);
+#else
+ res = py_get_monotonic_clock(&t, NULL, 0);
+#endif
+ if (res < 0) {
+ // If py_win_perf_counter_frequency() or py_get_monotonic_clock()
+ // fails: silently ignore the failure and return 0.
+ t = 0;
+ }
+ return t;
+}
+
+
+int
+_PyTime_localtime(time_t t, struct tm *tm)
+{
+#ifdef MS_WINDOWS
+ int error;
+
+ error = localtime_s(tm, &t);
+ if (error != 0) {
+ errno = error;
+ PyErr_SetFromErrno(PyExc_OSError);
+ return -1;
+ }
+ return 0;
+#else /* !MS_WINDOWS */
+
+#if defined(_AIX) && (SIZEOF_TIME_T < 8)
+ /* bpo-34373: AIX does not return NULL if t is too small or too large */
+ if (t < -2145916800 /* 1902-01-01 */
+ || t > 2145916800 /* 2038-01-01 */) {
+ errno = EINVAL;
+ PyErr_SetString(PyExc_OverflowError,
+ "localtime argument out of range");
+ return -1;
+ }
+#endif
+
+ errno = 0;
+ if (localtime_r(&t, tm) == NULL) {
+ if (errno == 0) {
+ errno = EINVAL;
+ }
+ PyErr_SetFromErrno(PyExc_OSError);
+ return -1;
+ }
+ return 0;
+#endif /* MS_WINDOWS */
+}
+
+
+int
+_PyTime_gmtime(time_t t, struct tm *tm)
+{
+#ifdef MS_WINDOWS
+ int error;
+
+ error = gmtime_s(tm, &t);
+ if (error != 0) {
+ errno = error;
+ PyErr_SetFromErrno(PyExc_OSError);
+ return -1;
+ }
+ return 0;
+#else /* !MS_WINDOWS */
+ if (gmtime_r(&t, tm) == NULL) {
+#ifdef EINVAL
+ if (errno == 0) {
+ errno = EINVAL;
+ }
+#endif
+ PyErr_SetFromErrno(PyExc_OSError);
+ return -1;
+ }
+ return 0;
+#endif /* MS_WINDOWS */
+}
+
+
+_PyTime_t
+_PyDeadline_Init(_PyTime_t timeout)
+{
+ _PyTime_t now = _PyTime_GetMonotonicClock();
+ return _PyTime_Add(now, timeout);
+}
+
+
+_PyTime_t
+_PyDeadline_Get(_PyTime_t deadline)
+{
+ _PyTime_t now = _PyTime_GetMonotonicClock();
+ return deadline - now;
+}
diff --git a/contrib/tools/python3/Python/specialize.c b/contrib/tools/python3/Python/specialize.c
new file mode 100644
index 00000000000..2c0d99b04ed
--- /dev/null
+++ b/contrib/tools/python3/Python/specialize.c
@@ -0,0 +1,2273 @@
+#include "Python.h"
+#include "pycore_code.h"
+#include "pycore_dict.h"
+#include "pycore_function.h" // _PyFunction_GetVersionForCurrentState()
+#include "pycore_global_strings.h" // _Py_ID()
+#include "pycore_long.h"
+#include "pycore_moduleobject.h"
+#include "pycore_object.h"
+#include "pycore_opcode.h" // _PyOpcode_Caches
+#include "structmember.h" // struct PyMemberDef, T_OFFSET_EX
+#include "pycore_descrobject.h"
+
+#include <stdlib.h> // rand()
+
+/* For guidance on adding or extending families of instructions see
+ * ./adaptive.md
+ */
+
+#ifdef Py_STATS
+PyStats _py_stats_struct = { 0 };
+PyStats *_py_stats = NULL;
+
+#define ADD_STAT_TO_DICT(res, field) \
+ do { \
+ PyObject *val = PyLong_FromUnsignedLongLong(stats->field); \
+ if (val == NULL) { \
+ Py_DECREF(res); \
+ return NULL; \
+ } \
+ if (PyDict_SetItemString(res, #field, val) == -1) { \
+ Py_DECREF(res); \
+ Py_DECREF(val); \
+ return NULL; \
+ } \
+ Py_DECREF(val); \
+ } while(0);
+
+static PyObject*
+stats_to_dict(SpecializationStats *stats)
+{
+ PyObject *res = PyDict_New();
+ if (res == NULL) {
+ return NULL;
+ }
+ ADD_STAT_TO_DICT(res, success);
+ ADD_STAT_TO_DICT(res, failure);
+ ADD_STAT_TO_DICT(res, hit);
+ ADD_STAT_TO_DICT(res, deferred);
+ ADD_STAT_TO_DICT(res, miss);
+ ADD_STAT_TO_DICT(res, deopt);
+ PyObject *failure_kinds = PyTuple_New(SPECIALIZATION_FAILURE_KINDS);
+ if (failure_kinds == NULL) {
+ Py_DECREF(res);
+ return NULL;
+ }
+ for (int i = 0; i < SPECIALIZATION_FAILURE_KINDS; i++) {
+ PyObject *stat = PyLong_FromUnsignedLongLong(stats->failure_kinds[i]);
+ if (stat == NULL) {
+ Py_DECREF(res);
+ Py_DECREF(failure_kinds);
+ return NULL;
+ }
+ PyTuple_SET_ITEM(failure_kinds, i, stat);
+ }
+ if (PyDict_SetItemString(res, "failure_kinds", failure_kinds)) {
+ Py_DECREF(res);
+ Py_DECREF(failure_kinds);
+ return NULL;
+ }
+ Py_DECREF(failure_kinds);
+ return res;
+}
+#undef ADD_STAT_TO_DICT
+
+static int
+add_stat_dict(
+ PyObject *res,
+ int opcode,
+ const char *name) {
+
+ SpecializationStats *stats = &_py_stats_struct.opcode_stats[opcode].specialization;
+ PyObject *d = stats_to_dict(stats);
+ if (d == NULL) {
+ return -1;
+ }
+ int err = PyDict_SetItemString(res, name, d);
+ Py_DECREF(d);
+ return err;
+}
+
+#ifdef Py_STATS
+PyObject*
+_Py_GetSpecializationStats(void) {
+ PyObject *stats = PyDict_New();
+ if (stats == NULL) {
+ return NULL;
+ }
+ int err = 0;
+ err += add_stat_dict(stats, LOAD_SUPER_ATTR, "load_super_attr");
+ err += add_stat_dict(stats, LOAD_ATTR, "load_attr");
+ err += add_stat_dict(stats, LOAD_GLOBAL, "load_global");
+ err += add_stat_dict(stats, BINARY_SUBSCR, "binary_subscr");
+ err += add_stat_dict(stats, STORE_SUBSCR, "store_subscr");
+ err += add_stat_dict(stats, STORE_ATTR, "store_attr");
+ err += add_stat_dict(stats, CALL, "call");
+ err += add_stat_dict(stats, BINARY_OP, "binary_op");
+ err += add_stat_dict(stats, COMPARE_OP, "compare_op");
+ err += add_stat_dict(stats, UNPACK_SEQUENCE, "unpack_sequence");
+ err += add_stat_dict(stats, FOR_ITER, "for_iter");
+ if (err < 0) {
+ Py_DECREF(stats);
+ return NULL;
+ }
+ return stats;
+}
+#endif
+
+
+#define PRINT_STAT(i, field) \
+ if (stats[i].field) { \
+ fprintf(out, " opcode[%d]." #field " : %" PRIu64 "\n", i, stats[i].field); \
+ }
+
+static void
+print_spec_stats(FILE *out, OpcodeStats *stats)
+{
+ /* Mark some opcodes as specializable for stats,
+ * even though we don't specialize them yet. */
+ fprintf(out, "opcode[%d].specializable : 1\n", BINARY_SLICE);
+ fprintf(out, "opcode[%d].specializable : 1\n", COMPARE_OP);
+ fprintf(out, "opcode[%d].specializable : 1\n", STORE_SLICE);
+ fprintf(out, "opcode[%d].specializable : 1\n", SEND);
+ for (int i = 0; i < 256; i++) {
+ if (_PyOpcode_Caches[i]) {
+ fprintf(out, "opcode[%d].specializable : 1\n", i);
+ }
+ PRINT_STAT(i, specialization.success);
+ PRINT_STAT(i, specialization.failure);
+ PRINT_STAT(i, specialization.hit);
+ PRINT_STAT(i, specialization.deferred);
+ PRINT_STAT(i, specialization.miss);
+ PRINT_STAT(i, specialization.deopt);
+ PRINT_STAT(i, execution_count);
+ for (int j = 0; j < SPECIALIZATION_FAILURE_KINDS; j++) {
+ uint64_t val = stats[i].specialization.failure_kinds[j];
+ if (val) {
+ fprintf(out, " opcode[%d].specialization.failure_kinds[%d] : %"
+ PRIu64 "\n", i, j, val);
+ }
+ }
+ for (int j = 0; j < 256; j++) {
+ if (stats[i].pair_count[j]) {
+ fprintf(out, "opcode[%d].pair_count[%d] : %" PRIu64 "\n",
+ i, j, stats[i].pair_count[j]);
+ }
+ }
+ }
+}
+#undef PRINT_STAT
+
+
+static void
+print_call_stats(FILE *out, CallStats *stats)
+{
+ fprintf(out, "Calls to PyEval_EvalDefault: %" PRIu64 "\n", stats->pyeval_calls);
+ fprintf(out, "Calls to Python functions inlined: %" PRIu64 "\n", stats->inlined_py_calls);
+ fprintf(out, "Frames pushed: %" PRIu64 "\n", stats->frames_pushed);
+ fprintf(out, "Frame objects created: %" PRIu64 "\n", stats->frame_objects_created);
+ for (int i = 0; i < EVAL_CALL_KINDS; i++) {
+ fprintf(out, "Calls via PyEval_EvalFrame[%d] : %" PRIu64 "\n", i, stats->eval_calls[i]);
+ }
+}
+
+static void
+print_object_stats(FILE *out, ObjectStats *stats)
+{
+ fprintf(out, "Object allocations from freelist: %" PRIu64 "\n", stats->from_freelist);
+ fprintf(out, "Object frees to freelist: %" PRIu64 "\n", stats->to_freelist);
+ fprintf(out, "Object allocations: %" PRIu64 "\n", stats->allocations);
+ fprintf(out, "Object allocations to 512 bytes: %" PRIu64 "\n", stats->allocations512);
+ fprintf(out, "Object allocations to 4 kbytes: %" PRIu64 "\n", stats->allocations4k);
+ fprintf(out, "Object allocations over 4 kbytes: %" PRIu64 "\n", stats->allocations_big);
+ fprintf(out, "Object frees: %" PRIu64 "\n", stats->frees);
+ fprintf(out, "Object new values: %" PRIu64 "\n", stats->new_values);
+ fprintf(out, "Object interpreter increfs: %" PRIu64 "\n", stats->interpreter_increfs);
+ fprintf(out, "Object interpreter decrefs: %" PRIu64 "\n", stats->interpreter_decrefs);
+ fprintf(out, "Object increfs: %" PRIu64 "\n", stats->increfs);
+ fprintf(out, "Object decrefs: %" PRIu64 "\n", stats->decrefs);
+ fprintf(out, "Object materialize dict (on request): %" PRIu64 "\n", stats->dict_materialized_on_request);
+ fprintf(out, "Object materialize dict (new key): %" PRIu64 "\n", stats->dict_materialized_new_key);
+ fprintf(out, "Object materialize dict (too big): %" PRIu64 "\n", stats->dict_materialized_too_big);
+ fprintf(out, "Object materialize dict (str subclass): %" PRIu64 "\n", stats->dict_materialized_str_subclass);
+ fprintf(out, "Object method cache hits: %" PRIu64 "\n", stats->type_cache_hits);
+ fprintf(out, "Object method cache misses: %" PRIu64 "\n", stats->type_cache_misses);
+ fprintf(out, "Object method cache collisions: %" PRIu64 "\n", stats->type_cache_collisions);
+ fprintf(out, "Object method cache dunder hits: %" PRIu64 "\n", stats->type_cache_dunder_hits);
+ fprintf(out, "Object method cache dunder misses: %" PRIu64 "\n", stats->type_cache_dunder_misses);
+}
+
+static void
+print_stats(FILE *out, PyStats *stats) {
+ print_spec_stats(out, stats->opcode_stats);
+ print_call_stats(out, &stats->call_stats);
+ print_object_stats(out, &stats->object_stats);
+}
+
+void
+_Py_StatsClear(void)
+{
+ _py_stats_struct = (PyStats) { 0 };
+}
+
+void
+_Py_PrintSpecializationStats(int to_file)
+{
+ FILE *out = stderr;
+ if (to_file) {
+ /* Write to a file instead of stderr. */
+# ifdef MS_WINDOWS
+ const char *dirname = "c:\\temp\\py_stats\\";
+# else
+ const char *dirname = "/tmp/py_stats/";
+# endif
+ /* Use random 160 bit number as file name,
+ * to avoid both accidental collisions and
+ * symlink attacks. */
+ unsigned char rand[20];
+ char hex_name[41];
+ _PyOS_URandomNonblock(rand, 20);
+ for (int i = 0; i < 20; i++) {
+ hex_name[2*i] = "0123456789abcdef"[rand[i]&15];
+ hex_name[2*i+1] = "0123456789abcdef"[(rand[i]>>4)&15];
+ }
+ hex_name[40] = '\0';
+ char buf[64];
+ assert(strlen(dirname) + 40 + strlen(".txt") < 64);
+ sprintf(buf, "%s%s.txt", dirname, hex_name);
+ FILE *fout = fopen(buf, "w");
+ if (fout) {
+ out = fout;
+ }
+ }
+ else {
+ fprintf(out, "Specialization stats:\n");
+ }
+ print_stats(out, &_py_stats_struct);
+ if (out != stderr) {
+ fclose(out);
+ }
+}
+
+#ifdef Py_STATS
+
+#define SPECIALIZATION_FAIL(opcode, kind) \
+do { \
+ if (_py_stats) { \
+ _py_stats->opcode_stats[opcode].specialization.failure_kinds[kind]++; \
+ } \
+} while (0)
+
+#endif
+#endif
+
+#ifndef SPECIALIZATION_FAIL
+#define SPECIALIZATION_FAIL(opcode, kind) ((void)0)
+#endif
+
+// Initialize warmup counters and insert superinstructions. This cannot fail.
+void
+_PyCode_Quicken(PyCodeObject *code)
+{
+ #if ENABLE_SPECIALIZATION
+ int opcode = 0;
+ _Py_CODEUNIT *instructions = _PyCode_CODE(code);
+ for (int i = 0; i < Py_SIZE(code); i++) {
+ int previous_opcode = opcode;
+ opcode = _Py_GetBaseOpcode(code, i);
+ assert(opcode < MIN_INSTRUMENTED_OPCODE);
+ int caches = _PyOpcode_Caches[opcode];
+ if (caches) {
+ instructions[i + 1].cache = adaptive_counter_warmup();
+ i += caches;
+ continue;
+ }
+ switch (previous_opcode << 8 | opcode) {
+ case LOAD_CONST << 8 | LOAD_FAST:
+ instructions[i - 1].op.code = LOAD_CONST__LOAD_FAST;
+ break;
+ case LOAD_FAST << 8 | LOAD_CONST:
+ instructions[i - 1].op.code = LOAD_FAST__LOAD_CONST;
+ break;
+ case LOAD_FAST << 8 | LOAD_FAST:
+ instructions[i - 1].op.code = LOAD_FAST__LOAD_FAST;
+ break;
+ case STORE_FAST << 8 | LOAD_FAST:
+ instructions[i - 1].op.code = STORE_FAST__LOAD_FAST;
+ break;
+ case STORE_FAST << 8 | STORE_FAST:
+ instructions[i - 1].op.code = STORE_FAST__STORE_FAST;
+ break;
+ }
+ }
+ #endif /* ENABLE_SPECIALIZATION */
+}
+
+#define SIMPLE_FUNCTION 0
+
+/* Common */
+
+#define SPEC_FAIL_OTHER 0
+#define SPEC_FAIL_NO_DICT 1
+#define SPEC_FAIL_OVERRIDDEN 2
+#define SPEC_FAIL_OUT_OF_VERSIONS 3
+#define SPEC_FAIL_OUT_OF_RANGE 4
+#define SPEC_FAIL_EXPECTED_ERROR 5
+#define SPEC_FAIL_WRONG_NUMBER_ARGUMENTS 6
+#define SPEC_FAIL_CODE_COMPLEX_PARAMETERS 7
+#define SPEC_FAIL_CODE_NOT_OPTIMIZED 8
+
+
+#define SPEC_FAIL_LOAD_GLOBAL_NON_DICT 17
+#define SPEC_FAIL_LOAD_GLOBAL_NON_STRING_OR_SPLIT 18
+
+/* Super */
+
+#define SPEC_FAIL_SUPER_BAD_CLASS 9
+#define SPEC_FAIL_SUPER_SHADOWED 10
+
+/* Attributes */
+
+#define SPEC_FAIL_ATTR_OVERRIDING_DESCRIPTOR 9
+#define SPEC_FAIL_ATTR_NON_OVERRIDING_DESCRIPTOR 10
+#define SPEC_FAIL_ATTR_NOT_DESCRIPTOR 11
+#define SPEC_FAIL_ATTR_METHOD 12
+#define SPEC_FAIL_ATTR_MUTABLE_CLASS 13
+#define SPEC_FAIL_ATTR_PROPERTY 14
+#define SPEC_FAIL_ATTR_NON_OBJECT_SLOT 15
+#define SPEC_FAIL_ATTR_READ_ONLY 16
+#define SPEC_FAIL_ATTR_AUDITED_SLOT 17
+#define SPEC_FAIL_ATTR_NOT_MANAGED_DICT 18
+#define SPEC_FAIL_ATTR_NON_STRING_OR_SPLIT 19
+#define SPEC_FAIL_ATTR_MODULE_ATTR_NOT_FOUND 20
+
+#define SPEC_FAIL_ATTR_SHADOWED 21
+#define SPEC_FAIL_ATTR_BUILTIN_CLASS_METHOD 22
+#define SPEC_FAIL_ATTR_CLASS_METHOD_OBJ 23
+#define SPEC_FAIL_ATTR_OBJECT_SLOT 24
+#define SPEC_FAIL_ATTR_HAS_MANAGED_DICT 25
+#define SPEC_FAIL_ATTR_INSTANCE_ATTRIBUTE 26
+#define SPEC_FAIL_ATTR_METACLASS_ATTRIBUTE 27
+#define SPEC_FAIL_ATTR_PROPERTY_NOT_PY_FUNCTION 28
+#define SPEC_FAIL_ATTR_NOT_IN_KEYS 29
+#define SPEC_FAIL_ATTR_NOT_IN_DICT 30
+#define SPEC_FAIL_ATTR_CLASS_ATTR_SIMPLE 31
+#define SPEC_FAIL_ATTR_CLASS_ATTR_DESCRIPTOR 32
+#define SPEC_FAIL_ATTR_BUILTIN_CLASS_METHOD_OBJ 33
+
+/* Binary subscr and store subscr */
+
+#define SPEC_FAIL_SUBSCR_ARRAY_INT 9
+#define SPEC_FAIL_SUBSCR_ARRAY_SLICE 10
+#define SPEC_FAIL_SUBSCR_LIST_SLICE 11
+#define SPEC_FAIL_SUBSCR_TUPLE_SLICE 12
+#define SPEC_FAIL_SUBSCR_STRING_INT 13
+#define SPEC_FAIL_SUBSCR_STRING_SLICE 14
+#define SPEC_FAIL_SUBSCR_BUFFER_INT 15
+#define SPEC_FAIL_SUBSCR_BUFFER_SLICE 16
+#define SPEC_FAIL_SUBSCR_SEQUENCE_INT 17
+
+/* Store subscr */
+#define SPEC_FAIL_SUBSCR_BYTEARRAY_INT 18
+#define SPEC_FAIL_SUBSCR_BYTEARRAY_SLICE 19
+#define SPEC_FAIL_SUBSCR_PY_SIMPLE 20
+#define SPEC_FAIL_SUBSCR_PY_OTHER 21
+#define SPEC_FAIL_SUBSCR_DICT_SUBCLASS_NO_OVERRIDE 22
+#define SPEC_FAIL_SUBSCR_NOT_HEAP_TYPE 23
+
+/* Binary op */
+
+#define SPEC_FAIL_BINARY_OP_ADD_DIFFERENT_TYPES 9
+#define SPEC_FAIL_BINARY_OP_ADD_OTHER 10
+#define SPEC_FAIL_BINARY_OP_AND_DIFFERENT_TYPES 11
+#define SPEC_FAIL_BINARY_OP_AND_INT 12
+#define SPEC_FAIL_BINARY_OP_AND_OTHER 13
+#define SPEC_FAIL_BINARY_OP_FLOOR_DIVIDE 14
+#define SPEC_FAIL_BINARY_OP_LSHIFT 15
+#define SPEC_FAIL_BINARY_OP_MATRIX_MULTIPLY 16
+#define SPEC_FAIL_BINARY_OP_MULTIPLY_DIFFERENT_TYPES 17
+#define SPEC_FAIL_BINARY_OP_MULTIPLY_OTHER 18
+#define SPEC_FAIL_BINARY_OP_OR 19
+#define SPEC_FAIL_BINARY_OP_POWER 20
+#define SPEC_FAIL_BINARY_OP_REMAINDER 21
+#define SPEC_FAIL_BINARY_OP_RSHIFT 22
+#define SPEC_FAIL_BINARY_OP_SUBTRACT_DIFFERENT_TYPES 23
+#define SPEC_FAIL_BINARY_OP_SUBTRACT_OTHER 24
+#define SPEC_FAIL_BINARY_OP_TRUE_DIVIDE_DIFFERENT_TYPES 25
+#define SPEC_FAIL_BINARY_OP_TRUE_DIVIDE_FLOAT 26
+#define SPEC_FAIL_BINARY_OP_TRUE_DIVIDE_OTHER 27
+#define SPEC_FAIL_BINARY_OP_XOR 28
+
+/* Calls */
+
+#define SPEC_FAIL_CALL_INSTANCE_METHOD 11
+#define SPEC_FAIL_CALL_CMETHOD 12
+#define SPEC_FAIL_CALL_CFUNC_VARARGS 13
+#define SPEC_FAIL_CALL_CFUNC_VARARGS_KEYWORDS 14
+#define SPEC_FAIL_CALL_CFUNC_NOARGS 15
+#define SPEC_FAIL_CALL_CFUNC_METHOD_FASTCALL_KEYWORDS 16
+#define SPEC_FAIL_CALL_METH_DESCR_VARARGS 17
+#define SPEC_FAIL_CALL_METH_DESCR_VARARGS_KEYWORDS 18
+#define SPEC_FAIL_CALL_METH_DESCR_METHOD_FASTCALL_KEYWORDS 19
+#define SPEC_FAIL_CALL_BAD_CALL_FLAGS 20
+#define SPEC_FAIL_CALL_PYTHON_CLASS 21
+#define SPEC_FAIL_CALL_PEP_523 22
+#define SPEC_FAIL_CALL_BOUND_METHOD 23
+#define SPEC_FAIL_CALL_STR 24
+#define SPEC_FAIL_CALL_CLASS_NO_VECTORCALL 25
+#define SPEC_FAIL_CALL_CLASS_MUTABLE 26
+#define SPEC_FAIL_CALL_KWNAMES 27
+#define SPEC_FAIL_CALL_METHOD_WRAPPER 28
+#define SPEC_FAIL_CALL_OPERATOR_WRAPPER 29
+
+/* COMPARE_OP */
+#define SPEC_FAIL_COMPARE_OP_DIFFERENT_TYPES 12
+#define SPEC_FAIL_COMPARE_OP_STRING 13
+#define SPEC_FAIL_COMPARE_OP_BIG_INT 14
+#define SPEC_FAIL_COMPARE_OP_BYTES 15
+#define SPEC_FAIL_COMPARE_OP_TUPLE 16
+#define SPEC_FAIL_COMPARE_OP_LIST 17
+#define SPEC_FAIL_COMPARE_OP_SET 18
+#define SPEC_FAIL_COMPARE_OP_BOOL 19
+#define SPEC_FAIL_COMPARE_OP_BASEOBJECT 20
+#define SPEC_FAIL_COMPARE_OP_FLOAT_LONG 21
+#define SPEC_FAIL_COMPARE_OP_LONG_FLOAT 22
+
+/* FOR_ITER and SEND */
+#define SPEC_FAIL_ITER_GENERATOR 10
+#define SPEC_FAIL_ITER_COROUTINE 11
+#define SPEC_FAIL_ITER_ASYNC_GENERATOR 12
+#define SPEC_FAIL_ITER_LIST 13
+#define SPEC_FAIL_ITER_TUPLE 14
+#define SPEC_FAIL_ITER_SET 15
+#define SPEC_FAIL_ITER_STRING 16
+#define SPEC_FAIL_ITER_BYTES 17
+#define SPEC_FAIL_ITER_RANGE 18
+#define SPEC_FAIL_ITER_ITERTOOLS 19
+#define SPEC_FAIL_ITER_DICT_KEYS 20
+#define SPEC_FAIL_ITER_DICT_ITEMS 21
+#define SPEC_FAIL_ITER_DICT_VALUES 22
+#define SPEC_FAIL_ITER_ENUMERATE 23
+#define SPEC_FAIL_ITER_MAP 24
+#define SPEC_FAIL_ITER_ZIP 25
+#define SPEC_FAIL_ITER_SEQ_ITER 26
+#define SPEC_FAIL_ITER_REVERSED_LIST 27
+#define SPEC_FAIL_ITER_CALLABLE 28
+#define SPEC_FAIL_ITER_ASCII_STRING 29
+#define SPEC_FAIL_ITER_ASYNC_GENERATOR_SEND 30
+
+// UNPACK_SEQUENCE
+
+#define SPEC_FAIL_UNPACK_SEQUENCE_ITERATOR 9
+#define SPEC_FAIL_UNPACK_SEQUENCE_SEQUENCE 10
+
+static int function_kind(PyCodeObject *code);
+static bool function_check_args(PyObject *o, int expected_argcount, int opcode);
+static uint32_t function_get_version(PyObject *o, int opcode);
+static uint32_t type_get_version(PyTypeObject *t, int opcode);
+
+static int
+specialize_module_load_attr(
+ PyObject *owner, _Py_CODEUNIT *instr, PyObject *name
+) {
+ _PyAttrCache *cache = (_PyAttrCache *)(instr + 1);
+ PyModuleObject *m = (PyModuleObject *)owner;
+ assert((owner->ob_type->tp_flags & Py_TPFLAGS_MANAGED_DICT) == 0);
+ PyDictObject *dict = (PyDictObject *)m->md_dict;
+ if (dict == NULL) {
+ SPECIALIZATION_FAIL(LOAD_ATTR, SPEC_FAIL_NO_DICT);
+ return -1;
+ }
+ if (dict->ma_keys->dk_kind != DICT_KEYS_UNICODE) {
+ SPECIALIZATION_FAIL(LOAD_ATTR, SPEC_FAIL_ATTR_NON_STRING_OR_SPLIT);
+ return -1;
+ }
+ Py_ssize_t index = _PyDict_LookupIndex(dict, &_Py_ID(__getattr__));
+ assert(index != DKIX_ERROR);
+ if (index != DKIX_EMPTY) {
+ SPECIALIZATION_FAIL(LOAD_ATTR, SPEC_FAIL_ATTR_MODULE_ATTR_NOT_FOUND);
+ return -1;
+ }
+ index = _PyDict_LookupIndex(dict, name);
+ assert (index != DKIX_ERROR);
+ if (index != (uint16_t)index) {
+ SPECIALIZATION_FAIL(LOAD_ATTR,
+ index == DKIX_EMPTY ?
+ SPEC_FAIL_ATTR_MODULE_ATTR_NOT_FOUND :
+ SPEC_FAIL_OUT_OF_RANGE);
+ return -1;
+ }
+ uint32_t keys_version = _PyDictKeys_GetVersionForCurrentState(
+ _PyInterpreterState_GET(), dict->ma_keys);
+ if (keys_version == 0) {
+ SPECIALIZATION_FAIL(LOAD_ATTR, SPEC_FAIL_OUT_OF_VERSIONS);
+ return -1;
+ }
+ write_u32(cache->version, keys_version);
+ cache->index = (uint16_t)index;
+ instr->op.code = LOAD_ATTR_MODULE;
+ return 0;
+}
+
+
+
+/* Attribute specialization */
+
+void
+_Py_Specialize_LoadSuperAttr(PyObject *global_super, PyObject *cls, _Py_CODEUNIT *instr, int load_method) {
+ assert(ENABLE_SPECIALIZATION);
+ assert(_PyOpcode_Caches[LOAD_SUPER_ATTR] == INLINE_CACHE_ENTRIES_LOAD_SUPER_ATTR);
+ _PySuperAttrCache *cache = (_PySuperAttrCache *)(instr + 1);
+ if (global_super != (PyObject *)&PySuper_Type) {
+ SPECIALIZATION_FAIL(LOAD_SUPER_ATTR, SPEC_FAIL_SUPER_SHADOWED);
+ goto fail;
+ }
+ if (!PyType_Check(cls)) {
+ SPECIALIZATION_FAIL(LOAD_SUPER_ATTR, SPEC_FAIL_SUPER_BAD_CLASS);
+ goto fail;
+ }
+ instr->op.code = load_method ? LOAD_SUPER_ATTR_METHOD : LOAD_SUPER_ATTR_ATTR;
+ goto success;
+
+fail:
+ STAT_INC(LOAD_SUPER_ATTR, failure);
+ assert(!PyErr_Occurred());
+ instr->op.code = LOAD_SUPER_ATTR;
+ cache->counter = adaptive_counter_backoff(cache->counter);
+ return;
+success:
+ STAT_INC(LOAD_SUPER_ATTR, success);
+ assert(!PyErr_Occurred());
+ cache->counter = adaptive_counter_cooldown();
+}
+
+typedef enum {
+ OVERRIDING, /* Is an overriding descriptor, and will remain so. */
+ METHOD, /* Attribute has Py_TPFLAGS_METHOD_DESCRIPTOR set */
+ PROPERTY, /* Is a property */
+ OBJECT_SLOT, /* Is an object slot descriptor */
+ OTHER_SLOT, /* Is a slot descriptor of another type */
+ NON_OVERRIDING, /* Is another non-overriding descriptor, and is an instance of an immutable class*/
+ BUILTIN_CLASSMETHOD, /* Builtin methods with METH_CLASS */
+ PYTHON_CLASSMETHOD, /* Python classmethod(func) object */
+ NON_DESCRIPTOR, /* Is not a descriptor, and is an instance of an immutable class */
+ MUTABLE, /* Instance of a mutable class; might, or might not, be a descriptor */
+ ABSENT, /* Attribute is not present on the class */
+ DUNDER_CLASS, /* __class__ attribute */
+ GETSET_OVERRIDDEN, /* __getattribute__ or __setattr__ has been overridden */
+ GETATTRIBUTE_IS_PYTHON_FUNCTION /* Descriptor requires calling a Python __getattribute__ */
+} DescriptorClassification;
+
+
+static DescriptorClassification
+analyze_descriptor(PyTypeObject *type, PyObject *name, PyObject **descr, int store)
+{
+ bool has_getattr = false;
+ if (store) {
+ if (type->tp_setattro != PyObject_GenericSetAttr) {
+ *descr = NULL;
+ return GETSET_OVERRIDDEN;
+ }
+ }
+ else {
+ getattrofunc getattro_slot = type->tp_getattro;
+ if (getattro_slot == PyObject_GenericGetAttr) {
+ /* Normal attribute lookup; */
+ has_getattr = false;
+ }
+ else if (getattro_slot == _Py_slot_tp_getattr_hook ||
+ getattro_slot == _Py_slot_tp_getattro) {
+ /* One or both of __getattribute__ or __getattr__ may have been
+ overridden See typeobject.c for why these functions are special. */
+ PyObject *getattribute = _PyType_Lookup(type,
+ &_Py_ID(__getattribute__));
+ PyInterpreterState *interp = _PyInterpreterState_GET();
+ bool has_custom_getattribute = getattribute != NULL &&
+ getattribute != interp->callable_cache.object__getattribute__;
+ has_getattr = _PyType_Lookup(type, &_Py_ID(__getattr__)) != NULL;
+ if (has_custom_getattribute) {
+ if (getattro_slot == _Py_slot_tp_getattro &&
+ !has_getattr &&
+ Py_IS_TYPE(getattribute, &PyFunction_Type)) {
+ *descr = getattribute;
+ return GETATTRIBUTE_IS_PYTHON_FUNCTION;
+ }
+ /* Potentially both __getattr__ and __getattribute__ are set.
+ Too complicated */
+ *descr = NULL;
+ return GETSET_OVERRIDDEN;
+ }
+ /* Potentially has __getattr__ but no custom __getattribute__.
+ Fall through to usual descriptor analysis.
+ Usual attribute lookup should only be allowed at runtime
+ if we can guarantee that there is no way an exception can be
+ raised. This means some specializations, e.g. specializing
+ for property() isn't safe.
+ */
+ }
+ else {
+ *descr = NULL;
+ return GETSET_OVERRIDDEN;
+ }
+ }
+ PyObject *descriptor = _PyType_Lookup(type, name);
+ *descr = descriptor;
+ if (descriptor == NULL) {
+ return ABSENT;
+ }
+ PyTypeObject *desc_cls = Py_TYPE(descriptor);
+ if (!(desc_cls->tp_flags & Py_TPFLAGS_IMMUTABLETYPE)) {
+ return MUTABLE;
+ }
+ if (desc_cls->tp_descr_set) {
+ if (desc_cls == &PyMemberDescr_Type) {
+ PyMemberDescrObject *member = (PyMemberDescrObject *)descriptor;
+ struct PyMemberDef *dmem = member->d_member;
+ if (dmem->type == T_OBJECT_EX) {
+ return OBJECT_SLOT;
+ }
+ return OTHER_SLOT;
+ }
+ if (desc_cls == &PyProperty_Type) {
+ /* We can't detect at runtime whether an attribute exists
+ with property. So that means we may have to call
+ __getattr__. */
+ return has_getattr ? GETSET_OVERRIDDEN : PROPERTY;
+ }
+ if (PyUnicode_CompareWithASCIIString(name, "__class__") == 0) {
+ if (descriptor == _PyType_Lookup(&PyBaseObject_Type, name)) {
+ return DUNDER_CLASS;
+ }
+ }
+ if (store) {
+ return OVERRIDING;
+ }
+ }
+ if (desc_cls->tp_descr_get) {
+ if (desc_cls->tp_flags & Py_TPFLAGS_METHOD_DESCRIPTOR) {
+ return METHOD;
+ }
+ if (Py_IS_TYPE(descriptor, &PyClassMethodDescr_Type)) {
+ return BUILTIN_CLASSMETHOD;
+ }
+ if (Py_IS_TYPE(descriptor, &PyClassMethod_Type)) {
+ return PYTHON_CLASSMETHOD;
+ }
+ return NON_OVERRIDING;
+ }
+ return NON_DESCRIPTOR;
+}
+
+static int
+specialize_dict_access(
+ PyObject *owner, _Py_CODEUNIT *instr, PyTypeObject *type,
+ DescriptorClassification kind, PyObject *name,
+ int base_op, int values_op, int hint_op)
+{
+ assert(kind == NON_OVERRIDING || kind == NON_DESCRIPTOR || kind == ABSENT ||
+ kind == BUILTIN_CLASSMETHOD || kind == PYTHON_CLASSMETHOD);
+ // No descriptor, or non overriding.
+ if ((type->tp_flags & Py_TPFLAGS_MANAGED_DICT) == 0) {
+ SPECIALIZATION_FAIL(base_op, SPEC_FAIL_ATTR_NOT_MANAGED_DICT);
+ return 0;
+ }
+ _PyAttrCache *cache = (_PyAttrCache *)(instr + 1);
+ PyDictOrValues dorv = *_PyObject_DictOrValuesPointer(owner);
+ if (_PyDictOrValues_IsValues(dorv)) {
+ // Virtual dictionary
+ PyDictKeysObject *keys = ((PyHeapTypeObject *)type)->ht_cached_keys;
+ assert(PyUnicode_CheckExact(name));
+ Py_ssize_t index = _PyDictKeys_StringLookup(keys, name);
+ assert (index != DKIX_ERROR);
+ if (index != (uint16_t)index) {
+ SPECIALIZATION_FAIL(base_op,
+ index == DKIX_EMPTY ?
+ SPEC_FAIL_ATTR_NOT_IN_KEYS :
+ SPEC_FAIL_OUT_OF_RANGE);
+ return 0;
+ }
+ write_u32(cache->version, type->tp_version_tag);
+ cache->index = (uint16_t)index;
+ instr->op.code = values_op;
+ }
+ else {
+ PyDictObject *dict = (PyDictObject *)_PyDictOrValues_GetDict(dorv);
+ if (dict == NULL || !PyDict_CheckExact(dict)) {
+ SPECIALIZATION_FAIL(base_op, SPEC_FAIL_NO_DICT);
+ return 0;
+ }
+ // We found an instance with a __dict__.
+ Py_ssize_t index =
+ _PyDict_LookupIndex(dict, name);
+ if (index != (uint16_t)index) {
+ SPECIALIZATION_FAIL(base_op,
+ index == DKIX_EMPTY ?
+ SPEC_FAIL_ATTR_NOT_IN_DICT :
+ SPEC_FAIL_OUT_OF_RANGE);
+ return 0;
+ }
+ cache->index = (uint16_t)index;
+ write_u32(cache->version, type->tp_version_tag);
+ instr->op.code = hint_op;
+ }
+ return 1;
+}
+
+static int specialize_attr_loadmethod(PyObject* owner, _Py_CODEUNIT* instr, PyObject* name,
+ PyObject* descr, DescriptorClassification kind);
+static int specialize_class_load_attr(PyObject* owner, _Py_CODEUNIT* instr, PyObject* name);
+
+void
+_Py_Specialize_LoadAttr(PyObject *owner, _Py_CODEUNIT *instr, PyObject *name)
+{
+ assert(ENABLE_SPECIALIZATION);
+ assert(_PyOpcode_Caches[LOAD_ATTR] == INLINE_CACHE_ENTRIES_LOAD_ATTR);
+ _PyAttrCache *cache = (_PyAttrCache *)(instr + 1);
+ PyTypeObject *type = Py_TYPE(owner);
+ if (!_PyType_IsReady(type)) {
+ // We *might* not really need this check, but we inherited it from
+ // PyObject_GenericGetAttr and friends... and this way we still do the
+ // right thing if someone forgets to call PyType_Ready(type):
+ SPECIALIZATION_FAIL(LOAD_ATTR, SPEC_FAIL_OTHER);
+ goto fail;
+ }
+ if (PyModule_CheckExact(owner)) {
+ if (specialize_module_load_attr(owner, instr, name))
+ {
+ goto fail;
+ }
+ goto success;
+ }
+ if (PyType_Check(owner)) {
+ if (specialize_class_load_attr(owner, instr, name)) {
+ goto fail;
+ }
+ goto success;
+ }
+ PyObject *descr = NULL;
+ DescriptorClassification kind = analyze_descriptor(type, name, &descr, 0);
+ assert(descr != NULL || kind == ABSENT || kind == GETSET_OVERRIDDEN);
+ if (type_get_version(type, LOAD_ATTR) == 0) {
+ goto fail;
+ }
+ switch(kind) {
+ case OVERRIDING:
+ SPECIALIZATION_FAIL(LOAD_ATTR, SPEC_FAIL_ATTR_OVERRIDING_DESCRIPTOR);
+ goto fail;
+ case METHOD:
+ {
+ int oparg = instr->op.arg;
+ if (oparg & 1) {
+ if (specialize_attr_loadmethod(owner, instr, name, descr, kind)) {
+ goto success;
+ }
+ }
+ else {
+ SPECIALIZATION_FAIL(LOAD_ATTR, SPEC_FAIL_ATTR_METHOD);
+ }
+ goto fail;
+ }
+ case PROPERTY:
+ {
+ _PyLoadMethodCache *lm_cache = (_PyLoadMethodCache *)(instr + 1);
+ assert(Py_TYPE(descr) == &PyProperty_Type);
+ PyObject *fget = ((_PyPropertyObject *)descr)->prop_get;
+ if (fget == NULL) {
+ SPECIALIZATION_FAIL(LOAD_ATTR, SPEC_FAIL_EXPECTED_ERROR);
+ goto fail;
+ }
+ if (!Py_IS_TYPE(fget, &PyFunction_Type)) {
+ SPECIALIZATION_FAIL(LOAD_ATTR, SPEC_FAIL_ATTR_PROPERTY_NOT_PY_FUNCTION);
+ goto fail;
+ }
+ if (!function_check_args(fget, 1, LOAD_ATTR)) {
+ goto fail;
+ }
+ uint32_t version = function_get_version(fget, LOAD_ATTR);
+ if (version == 0) {
+ goto fail;
+ }
+ if (_PyInterpreterState_GET()->eval_frame) {
+ SPECIALIZATION_FAIL(LOAD_ATTR, SPEC_FAIL_OTHER);
+ goto fail;
+ }
+ write_u32(lm_cache->keys_version, version);
+ assert(type->tp_version_tag != 0);
+ write_u32(lm_cache->type_version, type->tp_version_tag);
+ /* borrowed */
+ write_obj(lm_cache->descr, fget);
+ instr->op.code = LOAD_ATTR_PROPERTY;
+ goto success;
+ }
+ case OBJECT_SLOT:
+ {
+ PyMemberDescrObject *member = (PyMemberDescrObject *)descr;
+ struct PyMemberDef *dmem = member->d_member;
+ Py_ssize_t offset = dmem->offset;
+ if (!PyObject_TypeCheck(owner, member->d_common.d_type)) {
+ SPECIALIZATION_FAIL(LOAD_ATTR, SPEC_FAIL_EXPECTED_ERROR);
+ goto fail;
+ }
+ if (dmem->flags & PY_AUDIT_READ) {
+ SPECIALIZATION_FAIL(LOAD_ATTR, SPEC_FAIL_ATTR_AUDITED_SLOT);
+ goto fail;
+ }
+ if (offset != (uint16_t)offset) {
+ SPECIALIZATION_FAIL(LOAD_ATTR, SPEC_FAIL_OUT_OF_RANGE);
+ goto fail;
+ }
+ assert(dmem->type == T_OBJECT_EX);
+ assert(offset > 0);
+ cache->index = (uint16_t)offset;
+ write_u32(cache->version, type->tp_version_tag);
+ instr->op.code = LOAD_ATTR_SLOT;
+ goto success;
+ }
+ case DUNDER_CLASS:
+ {
+ Py_ssize_t offset = offsetof(PyObject, ob_type);
+ assert(offset == (uint16_t)offset);
+ cache->index = (uint16_t)offset;
+ write_u32(cache->version, type->tp_version_tag);
+ instr->op.code = LOAD_ATTR_SLOT;
+ goto success;
+ }
+ case OTHER_SLOT:
+ SPECIALIZATION_FAIL(LOAD_ATTR, SPEC_FAIL_ATTR_NON_OBJECT_SLOT);
+ goto fail;
+ case MUTABLE:
+ SPECIALIZATION_FAIL(LOAD_ATTR, SPEC_FAIL_ATTR_MUTABLE_CLASS);
+ goto fail;
+ case GETSET_OVERRIDDEN:
+ SPECIALIZATION_FAIL(LOAD_ATTR, SPEC_FAIL_OVERRIDDEN);
+ goto fail;
+ case GETATTRIBUTE_IS_PYTHON_FUNCTION:
+ {
+ assert(type->tp_getattro == _Py_slot_tp_getattro);
+ assert(Py_IS_TYPE(descr, &PyFunction_Type));
+ _PyLoadMethodCache *lm_cache = (_PyLoadMethodCache *)(instr + 1);
+ if (!function_check_args(descr, 2, LOAD_ATTR)) {
+ goto fail;
+ }
+ uint32_t version = function_get_version(descr, LOAD_ATTR);
+ if (version == 0) {
+ goto fail;
+ }
+ if (_PyInterpreterState_GET()->eval_frame) {
+ SPECIALIZATION_FAIL(LOAD_ATTR, SPEC_FAIL_OTHER);
+ goto fail;
+ }
+ write_u32(lm_cache->keys_version, version);
+ /* borrowed */
+ write_obj(lm_cache->descr, descr);
+ write_u32(lm_cache->type_version, type->tp_version_tag);
+ instr->op.code = LOAD_ATTR_GETATTRIBUTE_OVERRIDDEN;
+ goto success;
+ }
+ case BUILTIN_CLASSMETHOD:
+ SPECIALIZATION_FAIL(LOAD_ATTR, SPEC_FAIL_ATTR_BUILTIN_CLASS_METHOD_OBJ);
+ goto fail;
+ case PYTHON_CLASSMETHOD:
+ SPECIALIZATION_FAIL(LOAD_ATTR, SPEC_FAIL_ATTR_CLASS_METHOD_OBJ);
+ goto fail;
+ case NON_OVERRIDING:
+ SPECIALIZATION_FAIL(LOAD_ATTR,
+ (type->tp_flags & Py_TPFLAGS_MANAGED_DICT) ?
+ SPEC_FAIL_ATTR_CLASS_ATTR_DESCRIPTOR :
+ SPEC_FAIL_ATTR_NOT_MANAGED_DICT);
+ goto fail;
+ case NON_DESCRIPTOR:
+ SPECIALIZATION_FAIL(LOAD_ATTR,
+ (type->tp_flags & Py_TPFLAGS_MANAGED_DICT) ?
+ SPEC_FAIL_ATTR_CLASS_ATTR_SIMPLE :
+ SPEC_FAIL_ATTR_NOT_MANAGED_DICT);
+ goto fail;
+ case ABSENT:
+ if (specialize_dict_access(owner, instr, type, kind, name, LOAD_ATTR,
+ LOAD_ATTR_INSTANCE_VALUE, LOAD_ATTR_WITH_HINT))
+ {
+ goto success;
+ }
+ }
+fail:
+ STAT_INC(LOAD_ATTR, failure);
+ assert(!PyErr_Occurred());
+ instr->op.code = LOAD_ATTR;
+ cache->counter = adaptive_counter_backoff(cache->counter);
+ return;
+success:
+ STAT_INC(LOAD_ATTR, success);
+ assert(!PyErr_Occurred());
+ cache->counter = adaptive_counter_cooldown();
+}
+
+void
+_Py_Specialize_StoreAttr(PyObject *owner, _Py_CODEUNIT *instr, PyObject *name)
+{
+ assert(ENABLE_SPECIALIZATION);
+ assert(_PyOpcode_Caches[STORE_ATTR] == INLINE_CACHE_ENTRIES_STORE_ATTR);
+ _PyAttrCache *cache = (_PyAttrCache *)(instr + 1);
+ PyTypeObject *type = Py_TYPE(owner);
+ if (!_PyType_IsReady(type)) {
+ // We *might* not really need this check, but we inherited it from
+ // PyObject_GenericSetAttr and friends... and this way we still do the
+ // right thing if someone forgets to call PyType_Ready(type):
+ SPECIALIZATION_FAIL(STORE_ATTR, SPEC_FAIL_OTHER);
+ goto fail;
+ }
+ if (PyModule_CheckExact(owner)) {
+ SPECIALIZATION_FAIL(STORE_ATTR, SPEC_FAIL_OVERRIDDEN);
+ goto fail;
+ }
+ PyObject *descr;
+ DescriptorClassification kind = analyze_descriptor(type, name, &descr, 1);
+ if (type_get_version(type, STORE_ATTR) == 0) {
+ goto fail;
+ }
+ switch(kind) {
+ case OVERRIDING:
+ SPECIALIZATION_FAIL(STORE_ATTR, SPEC_FAIL_ATTR_OVERRIDING_DESCRIPTOR);
+ goto fail;
+ case METHOD:
+ SPECIALIZATION_FAIL(STORE_ATTR, SPEC_FAIL_ATTR_METHOD);
+ goto fail;
+ case PROPERTY:
+ SPECIALIZATION_FAIL(STORE_ATTR, SPEC_FAIL_ATTR_PROPERTY);
+ goto fail;
+ case OBJECT_SLOT:
+ {
+ PyMemberDescrObject *member = (PyMemberDescrObject *)descr;
+ struct PyMemberDef *dmem = member->d_member;
+ Py_ssize_t offset = dmem->offset;
+ if (!PyObject_TypeCheck(owner, member->d_common.d_type)) {
+ SPECIALIZATION_FAIL(STORE_ATTR, SPEC_FAIL_EXPECTED_ERROR);
+ goto fail;
+ }
+ if (dmem->flags & READONLY) {
+ SPECIALIZATION_FAIL(STORE_ATTR, SPEC_FAIL_ATTR_READ_ONLY);
+ goto fail;
+ }
+ if (offset != (uint16_t)offset) {
+ SPECIALIZATION_FAIL(STORE_ATTR, SPEC_FAIL_OUT_OF_RANGE);
+ goto fail;
+ }
+ assert(dmem->type == T_OBJECT_EX);
+ assert(offset > 0);
+ cache->index = (uint16_t)offset;
+ write_u32(cache->version, type->tp_version_tag);
+ instr->op.code = STORE_ATTR_SLOT;
+ goto success;
+ }
+ case DUNDER_CLASS:
+ case OTHER_SLOT:
+ SPECIALIZATION_FAIL(STORE_ATTR, SPEC_FAIL_ATTR_NON_OBJECT_SLOT);
+ goto fail;
+ case MUTABLE:
+ SPECIALIZATION_FAIL(STORE_ATTR, SPEC_FAIL_ATTR_MUTABLE_CLASS);
+ goto fail;
+ case GETATTRIBUTE_IS_PYTHON_FUNCTION:
+ case GETSET_OVERRIDDEN:
+ SPECIALIZATION_FAIL(STORE_ATTR, SPEC_FAIL_OVERRIDDEN);
+ goto fail;
+ case BUILTIN_CLASSMETHOD:
+ SPECIALIZATION_FAIL(STORE_ATTR, SPEC_FAIL_ATTR_BUILTIN_CLASS_METHOD_OBJ);
+ goto fail;
+ case PYTHON_CLASSMETHOD:
+ SPECIALIZATION_FAIL(STORE_ATTR, SPEC_FAIL_ATTR_CLASS_METHOD_OBJ);
+ goto fail;
+ case NON_OVERRIDING:
+ SPECIALIZATION_FAIL(STORE_ATTR, SPEC_FAIL_ATTR_CLASS_ATTR_DESCRIPTOR);
+ goto fail;
+ case NON_DESCRIPTOR:
+ SPECIALIZATION_FAIL(STORE_ATTR, SPEC_FAIL_ATTR_CLASS_ATTR_SIMPLE);
+ goto fail;
+ case ABSENT:
+ if (specialize_dict_access(owner, instr, type, kind, name, STORE_ATTR,
+ STORE_ATTR_INSTANCE_VALUE, STORE_ATTR_WITH_HINT))
+ {
+ goto success;
+ }
+ }
+fail:
+ STAT_INC(STORE_ATTR, failure);
+ assert(!PyErr_Occurred());
+ instr->op.code = STORE_ATTR;
+ cache->counter = adaptive_counter_backoff(cache->counter);
+ return;
+success:
+ STAT_INC(STORE_ATTR, success);
+ assert(!PyErr_Occurred());
+ cache->counter = adaptive_counter_cooldown();
+}
+
+
+#ifdef Py_STATS
+static int
+load_attr_fail_kind(DescriptorClassification kind)
+{
+ switch (kind) {
+ case OVERRIDING:
+ return SPEC_FAIL_ATTR_OVERRIDING_DESCRIPTOR;
+ case METHOD:
+ return SPEC_FAIL_ATTR_METHOD;
+ case PROPERTY:
+ return SPEC_FAIL_ATTR_PROPERTY;
+ case OBJECT_SLOT:
+ return SPEC_FAIL_ATTR_OBJECT_SLOT;
+ case OTHER_SLOT:
+ return SPEC_FAIL_ATTR_NON_OBJECT_SLOT;
+ case DUNDER_CLASS:
+ return SPEC_FAIL_OTHER;
+ case MUTABLE:
+ return SPEC_FAIL_ATTR_MUTABLE_CLASS;
+ case GETSET_OVERRIDDEN:
+ case GETATTRIBUTE_IS_PYTHON_FUNCTION:
+ return SPEC_FAIL_OVERRIDDEN;
+ case BUILTIN_CLASSMETHOD:
+ return SPEC_FAIL_ATTR_BUILTIN_CLASS_METHOD;
+ case PYTHON_CLASSMETHOD:
+ return SPEC_FAIL_ATTR_CLASS_METHOD_OBJ;
+ case NON_OVERRIDING:
+ return SPEC_FAIL_ATTR_NON_OVERRIDING_DESCRIPTOR;
+ case NON_DESCRIPTOR:
+ return SPEC_FAIL_ATTR_NOT_DESCRIPTOR;
+ case ABSENT:
+ return SPEC_FAIL_ATTR_INSTANCE_ATTRIBUTE;
+ }
+ Py_UNREACHABLE();
+}
+#endif
+
+static int
+specialize_class_load_attr(PyObject *owner, _Py_CODEUNIT *instr,
+ PyObject *name)
+{
+ _PyLoadMethodCache *cache = (_PyLoadMethodCache *)(instr + 1);
+ if (!PyType_CheckExact(owner) || _PyType_Lookup(Py_TYPE(owner), name)) {
+ SPECIALIZATION_FAIL(LOAD_ATTR, SPEC_FAIL_ATTR_METACLASS_ATTRIBUTE);
+ return -1;
+ }
+ PyObject *descr = NULL;
+ DescriptorClassification kind = 0;
+ kind = analyze_descriptor((PyTypeObject *)owner, name, &descr, 0);
+ if (type_get_version((PyTypeObject *)owner, LOAD_ATTR) == 0) {
+ return -1;
+ }
+ switch (kind) {
+ case METHOD:
+ case NON_DESCRIPTOR:
+ write_u32(cache->type_version, ((PyTypeObject *)owner)->tp_version_tag);
+ write_obj(cache->descr, descr);
+ instr->op.code = LOAD_ATTR_CLASS;
+ return 0;
+#ifdef Py_STATS
+ case ABSENT:
+ SPECIALIZATION_FAIL(LOAD_ATTR, SPEC_FAIL_EXPECTED_ERROR);
+ return -1;
+#endif
+ default:
+ SPECIALIZATION_FAIL(LOAD_ATTR, load_attr_fail_kind(kind));
+ return -1;
+ }
+}
+
+// Please collect stats carefully before and after modifying. A subtle change
+// can cause a significant drop in cache hits. A possible test is
+// python.exe -m test_typing test_re test_dis test_zlib.
+static int
+specialize_attr_loadmethod(PyObject *owner, _Py_CODEUNIT *instr, PyObject *name,
+PyObject *descr, DescriptorClassification kind)
+{
+ _PyLoadMethodCache *cache = (_PyLoadMethodCache *)(instr + 1);
+ PyTypeObject *owner_cls = Py_TYPE(owner);
+
+ assert(kind == METHOD && descr != NULL);
+ if (owner_cls->tp_flags & Py_TPFLAGS_MANAGED_DICT) {
+ PyDictOrValues dorv = *_PyObject_DictOrValuesPointer(owner);
+ PyDictKeysObject *keys = ((PyHeapTypeObject *)owner_cls)->ht_cached_keys;
+ if (!_PyDictOrValues_IsValues(dorv)) {
+ SPECIALIZATION_FAIL(LOAD_ATTR, SPEC_FAIL_ATTR_HAS_MANAGED_DICT);
+ return 0;
+ }
+ Py_ssize_t index = _PyDictKeys_StringLookup(keys, name);
+ if (index != DKIX_EMPTY) {
+ SPECIALIZATION_FAIL(LOAD_ATTR, SPEC_FAIL_ATTR_SHADOWED);
+ return 0;
+ }
+ uint32_t keys_version = _PyDictKeys_GetVersionForCurrentState(
+ _PyInterpreterState_GET(), keys);
+ if (keys_version == 0) {
+ SPECIALIZATION_FAIL(LOAD_ATTR, SPEC_FAIL_OUT_OF_VERSIONS);
+ return 0;
+ }
+ write_u32(cache->keys_version, keys_version);
+ instr->op.code = LOAD_ATTR_METHOD_WITH_VALUES;
+ }
+ else {
+ Py_ssize_t dictoffset = owner_cls->tp_dictoffset;
+ if (dictoffset < 0 || dictoffset > INT16_MAX) {
+ SPECIALIZATION_FAIL(LOAD_ATTR, SPEC_FAIL_OUT_OF_RANGE);
+ return 0;
+ }
+ if (dictoffset == 0) {
+ instr->op.code = LOAD_ATTR_METHOD_NO_DICT;
+ }
+ else {
+ PyObject *dict = *(PyObject **) ((char *)owner + dictoffset);
+ if (dict) {
+ SPECIALIZATION_FAIL(LOAD_ATTR, SPEC_FAIL_ATTR_NOT_MANAGED_DICT);
+ return 0;
+ }
+ assert(owner_cls->tp_dictoffset > 0);
+ assert(owner_cls->tp_dictoffset <= INT16_MAX);
+ instr->op.code = LOAD_ATTR_METHOD_LAZY_DICT;
+ }
+ }
+ /* `descr` is borrowed. This is safe for methods (even inherited ones from
+ * super classes!) as long as tp_version_tag is validated for two main reasons:
+ *
+ * 1. The class will always hold a reference to the method so it will
+ * usually not be GC-ed. Should it be deleted in Python, e.g.
+ * `del obj.meth`, tp_version_tag will be invalidated, because of reason 2.
+ *
+ * 2. The pre-existing type method cache (MCACHE) uses the same principles
+ * of caching a borrowed descriptor. The MCACHE infrastructure does all the
+ * heavy lifting for us. E.g. it invalidates tp_version_tag on any MRO
+ * modification, on any type object change along said MRO, etc. (see
+ * PyType_Modified usages in typeobject.c). The MCACHE has been
+ * working since Python 2.6 and it's battle-tested.
+ */
+ write_u32(cache->type_version, owner_cls->tp_version_tag);
+ write_obj(cache->descr, descr);
+ return 1;
+}
+
+void
+_Py_Specialize_LoadGlobal(
+ PyObject *globals, PyObject *builtins,
+ _Py_CODEUNIT *instr, PyObject *name)
+{
+ assert(ENABLE_SPECIALIZATION);
+ assert(_PyOpcode_Caches[LOAD_GLOBAL] == INLINE_CACHE_ENTRIES_LOAD_GLOBAL);
+ /* Use inline cache */
+ _PyLoadGlobalCache *cache = (_PyLoadGlobalCache *)(instr + 1);
+ assert(PyUnicode_CheckExact(name));
+ if (!PyDict_CheckExact(globals)) {
+ SPECIALIZATION_FAIL(LOAD_GLOBAL, SPEC_FAIL_LOAD_GLOBAL_NON_DICT);
+ goto fail;
+ }
+ PyDictKeysObject * globals_keys = ((PyDictObject *)globals)->ma_keys;
+ if (!DK_IS_UNICODE(globals_keys)) {
+ SPECIALIZATION_FAIL(LOAD_GLOBAL, SPEC_FAIL_LOAD_GLOBAL_NON_STRING_OR_SPLIT);
+ goto fail;
+ }
+ Py_ssize_t index = _PyDictKeys_StringLookup(globals_keys, name);
+ if (index == DKIX_ERROR) {
+ SPECIALIZATION_FAIL(LOAD_GLOBAL, SPEC_FAIL_EXPECTED_ERROR);
+ goto fail;
+ }
+ PyInterpreterState *interp = _PyInterpreterState_GET();
+ if (index != DKIX_EMPTY) {
+ if (index != (uint16_t)index) {
+ SPECIALIZATION_FAIL(LOAD_GLOBAL, SPEC_FAIL_OUT_OF_RANGE);
+ goto fail;
+ }
+ uint32_t keys_version = _PyDictKeys_GetVersionForCurrentState(
+ interp, globals_keys);
+ if (keys_version == 0) {
+ SPECIALIZATION_FAIL(LOAD_GLOBAL, SPEC_FAIL_OUT_OF_VERSIONS);
+ goto fail;
+ }
+ if (keys_version != (uint16_t)keys_version) {
+ SPECIALIZATION_FAIL(LOAD_GLOBAL, SPEC_FAIL_OUT_OF_RANGE);
+ goto fail;
+ }
+ cache->index = (uint16_t)index;
+ cache->module_keys_version = (uint16_t)keys_version;
+ instr->op.code = LOAD_GLOBAL_MODULE;
+ goto success;
+ }
+ if (!PyDict_CheckExact(builtins)) {
+ SPECIALIZATION_FAIL(LOAD_GLOBAL, SPEC_FAIL_LOAD_GLOBAL_NON_DICT);
+ goto fail;
+ }
+ PyDictKeysObject * builtin_keys = ((PyDictObject *)builtins)->ma_keys;
+ if (!DK_IS_UNICODE(builtin_keys)) {
+ SPECIALIZATION_FAIL(LOAD_GLOBAL, SPEC_FAIL_LOAD_GLOBAL_NON_STRING_OR_SPLIT);
+ goto fail;
+ }
+ index = _PyDictKeys_StringLookup(builtin_keys, name);
+ if (index == DKIX_ERROR) {
+ SPECIALIZATION_FAIL(LOAD_GLOBAL, SPEC_FAIL_EXPECTED_ERROR);
+ goto fail;
+ }
+ if (index != (uint16_t)index) {
+ SPECIALIZATION_FAIL(LOAD_GLOBAL, SPEC_FAIL_OUT_OF_RANGE);
+ goto fail;
+ }
+ uint32_t globals_version = _PyDictKeys_GetVersionForCurrentState(
+ interp, globals_keys);
+ if (globals_version == 0) {
+ SPECIALIZATION_FAIL(LOAD_GLOBAL, SPEC_FAIL_OUT_OF_VERSIONS);
+ goto fail;
+ }
+ if (globals_version != (uint16_t)globals_version) {
+ SPECIALIZATION_FAIL(LOAD_GLOBAL, SPEC_FAIL_OUT_OF_RANGE);
+ goto fail;
+ }
+ uint32_t builtins_version = _PyDictKeys_GetVersionForCurrentState(
+ interp, builtin_keys);
+ if (builtins_version == 0) {
+ SPECIALIZATION_FAIL(LOAD_GLOBAL, SPEC_FAIL_OUT_OF_VERSIONS);
+ goto fail;
+ }
+ if (builtins_version > UINT16_MAX) {
+ SPECIALIZATION_FAIL(LOAD_GLOBAL, SPEC_FAIL_OUT_OF_RANGE);
+ goto fail;
+ }
+ cache->index = (uint16_t)index;
+ cache->module_keys_version = (uint16_t)globals_version;
+ cache->builtin_keys_version = (uint16_t)builtins_version;
+ instr->op.code = LOAD_GLOBAL_BUILTIN;
+ goto success;
+fail:
+ STAT_INC(LOAD_GLOBAL, failure);
+ assert(!PyErr_Occurred());
+ instr->op.code = LOAD_GLOBAL;
+ cache->counter = adaptive_counter_backoff(cache->counter);
+ return;
+success:
+ STAT_INC(LOAD_GLOBAL, success);
+ assert(!PyErr_Occurred());
+ cache->counter = adaptive_counter_cooldown();
+}
+
+#ifdef Py_STATS
+static int
+binary_subscr_fail_kind(PyTypeObject *container_type, PyObject *sub)
+{
+ if (container_type == &PyUnicode_Type) {
+ if (PyLong_CheckExact(sub)) {
+ return SPEC_FAIL_SUBSCR_STRING_INT;
+ }
+ if (PySlice_Check(sub)) {
+ return SPEC_FAIL_SUBSCR_STRING_SLICE;
+ }
+ return SPEC_FAIL_OTHER;
+ }
+ else if (strcmp(container_type->tp_name, "array.array") == 0) {
+ if (PyLong_CheckExact(sub)) {
+ return SPEC_FAIL_SUBSCR_ARRAY_INT;
+ }
+ if (PySlice_Check(sub)) {
+ return SPEC_FAIL_SUBSCR_ARRAY_SLICE;
+ }
+ return SPEC_FAIL_OTHER;
+ }
+ else if (container_type->tp_as_buffer) {
+ if (PyLong_CheckExact(sub)) {
+ return SPEC_FAIL_SUBSCR_BUFFER_INT;
+ }
+ if (PySlice_Check(sub)) {
+ return SPEC_FAIL_SUBSCR_BUFFER_SLICE;
+ }
+ return SPEC_FAIL_OTHER;
+ }
+ else if (container_type->tp_as_sequence) {
+ if (PyLong_CheckExact(sub) && container_type->tp_as_sequence->sq_item) {
+ return SPEC_FAIL_SUBSCR_SEQUENCE_INT;
+ }
+ }
+ return SPEC_FAIL_OTHER;
+}
+#endif
+
+static int
+function_kind(PyCodeObject *code) {
+ int flags = code->co_flags;
+ if ((flags & (CO_VARKEYWORDS | CO_VARARGS)) || code->co_kwonlyargcount) {
+ return SPEC_FAIL_CODE_COMPLEX_PARAMETERS;
+ }
+ if ((flags & CO_OPTIMIZED) == 0) {
+ return SPEC_FAIL_CODE_NOT_OPTIMIZED;
+ }
+ return SIMPLE_FUNCTION;
+}
+
+/* Returning false indicates a failure. */
+static bool
+function_check_args(PyObject *o, int expected_argcount, int opcode)
+{
+ assert(Py_IS_TYPE(o, &PyFunction_Type));
+ PyFunctionObject *func = (PyFunctionObject *)o;
+ PyCodeObject *fcode = (PyCodeObject *)func->func_code;
+ int kind = function_kind(fcode);
+ if (kind != SIMPLE_FUNCTION) {
+ SPECIALIZATION_FAIL(opcode, kind);
+ return false;
+ }
+ if (fcode->co_argcount != expected_argcount) {
+ SPECIALIZATION_FAIL(opcode, SPEC_FAIL_WRONG_NUMBER_ARGUMENTS);
+ return false;
+ }
+ return true;
+}
+
+/* Returning 0 indicates a failure. */
+static uint32_t
+function_get_version(PyObject *o, int opcode)
+{
+ assert(Py_IS_TYPE(o, &PyFunction_Type));
+ PyFunctionObject *func = (PyFunctionObject *)o;
+ uint32_t version = _PyFunction_GetVersionForCurrentState(func);
+ if (version == 0) {
+ SPECIALIZATION_FAIL(opcode, SPEC_FAIL_OUT_OF_VERSIONS);
+ return 0;
+ }
+ return version;
+}
+
+/* Returning 0 indicates a failure. */
+static uint32_t
+type_get_version(PyTypeObject *t, int opcode)
+{
+ uint32_t version = t->tp_version_tag;
+ if (version == 0) {
+ SPECIALIZATION_FAIL(opcode, SPEC_FAIL_OUT_OF_VERSIONS);
+ return 0;
+ }
+ return version;
+}
+
+void
+_Py_Specialize_BinarySubscr(
+ PyObject *container, PyObject *sub, _Py_CODEUNIT *instr)
+{
+ assert(ENABLE_SPECIALIZATION);
+ assert(_PyOpcode_Caches[BINARY_SUBSCR] ==
+ INLINE_CACHE_ENTRIES_BINARY_SUBSCR);
+ _PyBinarySubscrCache *cache = (_PyBinarySubscrCache *)(instr + 1);
+ PyTypeObject *container_type = Py_TYPE(container);
+ if (container_type == &PyList_Type) {
+ if (PyLong_CheckExact(sub)) {
+ if (_PyLong_IsNonNegativeCompact((PyLongObject *)sub)) {
+ instr->op.code = BINARY_SUBSCR_LIST_INT;
+ goto success;
+ }
+ SPECIALIZATION_FAIL(BINARY_SUBSCR, SPEC_FAIL_OUT_OF_RANGE);
+ goto fail;
+ }
+ SPECIALIZATION_FAIL(BINARY_SUBSCR,
+ PySlice_Check(sub) ? SPEC_FAIL_SUBSCR_LIST_SLICE : SPEC_FAIL_OTHER);
+ goto fail;
+ }
+ if (container_type == &PyTuple_Type) {
+ if (PyLong_CheckExact(sub)) {
+ if (_PyLong_IsNonNegativeCompact((PyLongObject *)sub)) {
+ instr->op.code = BINARY_SUBSCR_TUPLE_INT;
+ goto success;
+ }
+ SPECIALIZATION_FAIL(BINARY_SUBSCR, SPEC_FAIL_OUT_OF_RANGE);
+ goto fail;
+ }
+ SPECIALIZATION_FAIL(BINARY_SUBSCR,
+ PySlice_Check(sub) ? SPEC_FAIL_SUBSCR_TUPLE_SLICE : SPEC_FAIL_OTHER);
+ goto fail;
+ }
+ if (container_type == &PyDict_Type) {
+ instr->op.code = BINARY_SUBSCR_DICT;
+ goto success;
+ }
+ PyTypeObject *cls = Py_TYPE(container);
+ PyObject *descriptor = _PyType_Lookup(cls, &_Py_ID(__getitem__));
+ if (descriptor && Py_TYPE(descriptor) == &PyFunction_Type) {
+ if (!(container_type->tp_flags & Py_TPFLAGS_HEAPTYPE)) {
+ SPECIALIZATION_FAIL(BINARY_SUBSCR, SPEC_FAIL_SUBSCR_NOT_HEAP_TYPE);
+ goto fail;
+ }
+ PyFunctionObject *func = (PyFunctionObject *)descriptor;
+ PyCodeObject *fcode = (PyCodeObject *)func->func_code;
+ int kind = function_kind(fcode);
+ if (kind != SIMPLE_FUNCTION) {
+ SPECIALIZATION_FAIL(BINARY_SUBSCR, kind);
+ goto fail;
+ }
+ if (fcode->co_argcount != 2) {
+ SPECIALIZATION_FAIL(BINARY_SUBSCR, SPEC_FAIL_WRONG_NUMBER_ARGUMENTS);
+ goto fail;
+ }
+ uint32_t version = _PyFunction_GetVersionForCurrentState(func);
+ if (version == 0) {
+ SPECIALIZATION_FAIL(BINARY_SUBSCR, SPEC_FAIL_OUT_OF_VERSIONS);
+ goto fail;
+ }
+ if (_PyInterpreterState_GET()->eval_frame) {
+ SPECIALIZATION_FAIL(BINARY_SUBSCR, SPEC_FAIL_OTHER);
+ goto fail;
+ }
+ PyHeapTypeObject *ht = (PyHeapTypeObject *)container_type;
+ // This pointer is invalidated by PyType_Modified (see the comment on
+ // struct _specialization_cache):
+ ht->_spec_cache.getitem = descriptor;
+ ht->_spec_cache.getitem_version = version;
+ instr->op.code = BINARY_SUBSCR_GETITEM;
+ goto success;
+ }
+ SPECIALIZATION_FAIL(BINARY_SUBSCR,
+ binary_subscr_fail_kind(container_type, sub));
+fail:
+ STAT_INC(BINARY_SUBSCR, failure);
+ assert(!PyErr_Occurred());
+ instr->op.code = BINARY_SUBSCR;
+ cache->counter = adaptive_counter_backoff(cache->counter);
+ return;
+success:
+ STAT_INC(BINARY_SUBSCR, success);
+ assert(!PyErr_Occurred());
+ cache->counter = adaptive_counter_cooldown();
+}
+
+void
+_Py_Specialize_StoreSubscr(PyObject *container, PyObject *sub, _Py_CODEUNIT *instr)
+{
+ assert(ENABLE_SPECIALIZATION);
+ _PyStoreSubscrCache *cache = (_PyStoreSubscrCache *)(instr + 1);
+ PyTypeObject *container_type = Py_TYPE(container);
+ if (container_type == &PyList_Type) {
+ if (PyLong_CheckExact(sub)) {
+ if (_PyLong_IsNonNegativeCompact((PyLongObject *)sub)
+ && ((PyLongObject *)sub)->long_value.ob_digit[0] < (size_t)PyList_GET_SIZE(container))
+ {
+ instr->op.code = STORE_SUBSCR_LIST_INT;
+ goto success;
+ }
+ else {
+ SPECIALIZATION_FAIL(STORE_SUBSCR, SPEC_FAIL_OUT_OF_RANGE);
+ goto fail;
+ }
+ }
+ else if (PySlice_Check(sub)) {
+ SPECIALIZATION_FAIL(STORE_SUBSCR, SPEC_FAIL_SUBSCR_LIST_SLICE);
+ goto fail;
+ }
+ else {
+ SPECIALIZATION_FAIL(STORE_SUBSCR, SPEC_FAIL_OTHER);
+ goto fail;
+ }
+ }
+ if (container_type == &PyDict_Type) {
+ instr->op.code = STORE_SUBSCR_DICT;
+ goto success;
+ }
+#ifdef Py_STATS
+ PyMappingMethods *as_mapping = container_type->tp_as_mapping;
+ if (as_mapping && (as_mapping->mp_ass_subscript
+ == PyDict_Type.tp_as_mapping->mp_ass_subscript)) {
+ SPECIALIZATION_FAIL(STORE_SUBSCR, SPEC_FAIL_SUBSCR_DICT_SUBCLASS_NO_OVERRIDE);
+ goto fail;
+ }
+ if (PyObject_CheckBuffer(container)) {
+ if (PyLong_CheckExact(sub) && (!_PyLong_IsNonNegativeCompact((PyLongObject *)sub))) {
+ SPECIALIZATION_FAIL(STORE_SUBSCR, SPEC_FAIL_OUT_OF_RANGE);
+ }
+ else if (strcmp(container_type->tp_name, "array.array") == 0) {
+ if (PyLong_CheckExact(sub)) {
+ SPECIALIZATION_FAIL(STORE_SUBSCR, SPEC_FAIL_SUBSCR_ARRAY_INT);
+ }
+ else if (PySlice_Check(sub)) {
+ SPECIALIZATION_FAIL(STORE_SUBSCR, SPEC_FAIL_SUBSCR_ARRAY_SLICE);
+ }
+ else {
+ SPECIALIZATION_FAIL(STORE_SUBSCR, SPEC_FAIL_OTHER);
+ }
+ }
+ else if (PyByteArray_CheckExact(container)) {
+ if (PyLong_CheckExact(sub)) {
+ SPECIALIZATION_FAIL(STORE_SUBSCR, SPEC_FAIL_SUBSCR_BYTEARRAY_INT);
+ }
+ else if (PySlice_Check(sub)) {
+ SPECIALIZATION_FAIL(STORE_SUBSCR, SPEC_FAIL_SUBSCR_BYTEARRAY_SLICE);
+ }
+ else {
+ SPECIALIZATION_FAIL(STORE_SUBSCR, SPEC_FAIL_OTHER);
+ }
+ }
+ else {
+ if (PyLong_CheckExact(sub)) {
+ SPECIALIZATION_FAIL(STORE_SUBSCR, SPEC_FAIL_SUBSCR_BUFFER_INT);
+ }
+ else if (PySlice_Check(sub)) {
+ SPECIALIZATION_FAIL(STORE_SUBSCR, SPEC_FAIL_SUBSCR_BUFFER_SLICE);
+ }
+ else {
+ SPECIALIZATION_FAIL(STORE_SUBSCR, SPEC_FAIL_OTHER);
+ }
+ }
+ goto fail;
+ }
+ PyObject *descriptor = _PyType_Lookup(container_type, &_Py_ID(__setitem__));
+ if (descriptor && Py_TYPE(descriptor) == &PyFunction_Type) {
+ PyFunctionObject *func = (PyFunctionObject *)descriptor;
+ PyCodeObject *code = (PyCodeObject *)func->func_code;
+ int kind = function_kind(code);
+ if (kind == SIMPLE_FUNCTION) {
+ SPECIALIZATION_FAIL(STORE_SUBSCR, SPEC_FAIL_SUBSCR_PY_SIMPLE);
+ }
+ else {
+ SPECIALIZATION_FAIL(STORE_SUBSCR, SPEC_FAIL_SUBSCR_PY_OTHER);
+ }
+ goto fail;
+ }
+#endif
+ SPECIALIZATION_FAIL(STORE_SUBSCR, SPEC_FAIL_OTHER);
+fail:
+ STAT_INC(STORE_SUBSCR, failure);
+ assert(!PyErr_Occurred());
+ instr->op.code = STORE_SUBSCR;
+ cache->counter = adaptive_counter_backoff(cache->counter);
+ return;
+success:
+ STAT_INC(STORE_SUBSCR, success);
+ assert(!PyErr_Occurred());
+ cache->counter = adaptive_counter_cooldown();
+}
+
+static int
+specialize_class_call(PyObject *callable, _Py_CODEUNIT *instr, int nargs,
+ PyObject *kwnames)
+{
+ PyTypeObject *tp = _PyType_CAST(callable);
+ if (tp->tp_new == PyBaseObject_Type.tp_new) {
+ SPECIALIZATION_FAIL(CALL, SPEC_FAIL_CALL_PYTHON_CLASS);
+ return -1;
+ }
+ if (tp->tp_flags & Py_TPFLAGS_IMMUTABLETYPE) {
+ int oparg = instr->op.arg;
+ if (nargs == 1 && kwnames == NULL && oparg == 1) {
+ if (tp == &PyUnicode_Type) {
+ instr->op.code = CALL_NO_KW_STR_1;
+ return 0;
+ }
+ else if (tp == &PyType_Type) {
+ instr->op.code = CALL_NO_KW_TYPE_1;
+ return 0;
+ }
+ else if (tp == &PyTuple_Type) {
+ instr->op.code = CALL_NO_KW_TUPLE_1;
+ return 0;
+ }
+ }
+ if (tp->tp_vectorcall != NULL) {
+ instr->op.code = CALL_BUILTIN_CLASS;
+ return 0;
+ }
+ SPECIALIZATION_FAIL(CALL, tp == &PyUnicode_Type ?
+ SPEC_FAIL_CALL_STR : SPEC_FAIL_CALL_CLASS_NO_VECTORCALL);
+ return -1;
+ }
+ SPECIALIZATION_FAIL(CALL, SPEC_FAIL_CALL_CLASS_MUTABLE);
+ return -1;
+}
+
+#ifdef Py_STATS
+static int
+builtin_call_fail_kind(int ml_flags)
+{
+ switch (ml_flags & (METH_VARARGS | METH_FASTCALL | METH_NOARGS | METH_O |
+ METH_KEYWORDS | METH_METHOD)) {
+ case METH_VARARGS:
+ return SPEC_FAIL_CALL_CFUNC_VARARGS;
+ case METH_VARARGS | METH_KEYWORDS:
+ return SPEC_FAIL_CALL_CFUNC_VARARGS_KEYWORDS;
+ case METH_NOARGS:
+ return SPEC_FAIL_CALL_CFUNC_NOARGS;
+ case METH_METHOD | METH_FASTCALL | METH_KEYWORDS:
+ return SPEC_FAIL_CALL_CFUNC_METHOD_FASTCALL_KEYWORDS;
+ /* These cases should be optimized, but return "other" just in case */
+ case METH_O:
+ case METH_FASTCALL:
+ case METH_FASTCALL | METH_KEYWORDS:
+ return SPEC_FAIL_OTHER;
+ default:
+ return SPEC_FAIL_CALL_BAD_CALL_FLAGS;
+ }
+}
+
+static int
+meth_descr_call_fail_kind(int ml_flags)
+{
+ switch (ml_flags & (METH_VARARGS | METH_FASTCALL | METH_NOARGS | METH_O |
+ METH_KEYWORDS | METH_METHOD)) {
+ case METH_VARARGS:
+ return SPEC_FAIL_CALL_METH_DESCR_VARARGS;
+ case METH_VARARGS | METH_KEYWORDS:
+ return SPEC_FAIL_CALL_METH_DESCR_VARARGS_KEYWORDS;
+ case METH_METHOD | METH_FASTCALL | METH_KEYWORDS:
+ return SPEC_FAIL_CALL_METH_DESCR_METHOD_FASTCALL_KEYWORDS;
+ /* These cases should be optimized, but return "other" just in case */
+ case METH_NOARGS:
+ case METH_O:
+ case METH_FASTCALL:
+ case METH_FASTCALL | METH_KEYWORDS:
+ return SPEC_FAIL_OTHER;
+ default:
+ return SPEC_FAIL_CALL_BAD_CALL_FLAGS;
+ }
+}
+#endif
+
+static int
+specialize_method_descriptor(PyMethodDescrObject *descr, _Py_CODEUNIT *instr,
+ int nargs, PyObject *kwnames)
+{
+ if (kwnames) {
+ SPECIALIZATION_FAIL(CALL, SPEC_FAIL_CALL_KWNAMES);
+ return -1;
+ }
+
+ switch (descr->d_method->ml_flags &
+ (METH_VARARGS | METH_FASTCALL | METH_NOARGS | METH_O |
+ METH_KEYWORDS | METH_METHOD)) {
+ case METH_NOARGS: {
+ if (nargs != 1) {
+ SPECIALIZATION_FAIL(CALL, SPEC_FAIL_WRONG_NUMBER_ARGUMENTS);
+ return -1;
+ }
+ instr->op.code = CALL_NO_KW_METHOD_DESCRIPTOR_NOARGS;
+ return 0;
+ }
+ case METH_O: {
+ if (nargs != 2) {
+ SPECIALIZATION_FAIL(CALL, SPEC_FAIL_WRONG_NUMBER_ARGUMENTS);
+ return -1;
+ }
+ PyInterpreterState *interp = _PyInterpreterState_GET();
+ PyObject *list_append = interp->callable_cache.list_append;
+ _Py_CODEUNIT next = instr[INLINE_CACHE_ENTRIES_CALL + 1];
+ bool pop = (next.op.code == POP_TOP);
+ int oparg = instr->op.arg;
+ if ((PyObject *)descr == list_append && oparg == 1 && pop) {
+ instr->op.code = CALL_NO_KW_LIST_APPEND;
+ return 0;
+ }
+ instr->op.code = CALL_NO_KW_METHOD_DESCRIPTOR_O;
+ return 0;
+ }
+ case METH_FASTCALL: {
+ instr->op.code = CALL_NO_KW_METHOD_DESCRIPTOR_FAST;
+ return 0;
+ }
+ case METH_FASTCALL | METH_KEYWORDS: {
+ instr->op.code = CALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS;
+ return 0;
+ }
+ }
+ SPECIALIZATION_FAIL(CALL, meth_descr_call_fail_kind(descr->d_method->ml_flags));
+ return -1;
+}
+
+static int
+specialize_py_call(PyFunctionObject *func, _Py_CODEUNIT *instr, int nargs,
+ PyObject *kwnames, bool bound_method)
+{
+ _PyCallCache *cache = (_PyCallCache *)(instr + 1);
+ PyCodeObject *code = (PyCodeObject *)func->func_code;
+ int kind = function_kind(code);
+ /* Don't specialize if PEP 523 is active */
+ if (_PyInterpreterState_GET()->eval_frame) {
+ SPECIALIZATION_FAIL(CALL, SPEC_FAIL_CALL_PEP_523);
+ return -1;
+ }
+ if (kwnames) {
+ SPECIALIZATION_FAIL(CALL, SPEC_FAIL_CALL_KWNAMES);
+ return -1;
+ }
+ if (kind != SIMPLE_FUNCTION) {
+ SPECIALIZATION_FAIL(CALL, kind);
+ return -1;
+ }
+ int argcount = code->co_argcount;
+ int defcount = func->func_defaults == NULL ? 0 : (int)PyTuple_GET_SIZE(func->func_defaults);
+ int min_args = argcount-defcount;
+ // GH-105840: min_args is negative when somebody sets too many __defaults__!
+ if (min_args < 0 || nargs > argcount || nargs < min_args) {
+ SPECIALIZATION_FAIL(CALL, SPEC_FAIL_WRONG_NUMBER_ARGUMENTS);
+ return -1;
+ }
+ assert(nargs <= argcount && nargs >= min_args);
+ assert(min_args >= 0 && defcount >= 0);
+ assert(defcount == 0 || func->func_defaults != NULL);
+ int version = _PyFunction_GetVersionForCurrentState(func);
+ if (version == 0) {
+ SPECIALIZATION_FAIL(CALL, SPEC_FAIL_OUT_OF_VERSIONS);
+ return -1;
+ }
+ write_u32(cache->func_version, version);
+ if (argcount == nargs) {
+ instr->op.code = bound_method ? CALL_BOUND_METHOD_EXACT_ARGS : CALL_PY_EXACT_ARGS;
+ }
+ else if (bound_method) {
+ SPECIALIZATION_FAIL(CALL, SPEC_FAIL_CALL_BOUND_METHOD);
+ return -1;
+ }
+ else {
+ instr->op.code = CALL_PY_WITH_DEFAULTS;
+ }
+ return 0;
+}
+
+static int
+specialize_c_call(PyObject *callable, _Py_CODEUNIT *instr, int nargs,
+ PyObject *kwnames)
+{
+ if (PyCFunction_GET_FUNCTION(callable) == NULL) {
+ return 1;
+ }
+ switch (PyCFunction_GET_FLAGS(callable) &
+ (METH_VARARGS | METH_FASTCALL | METH_NOARGS | METH_O |
+ METH_KEYWORDS | METH_METHOD)) {
+ case METH_O: {
+ if (kwnames) {
+ SPECIALIZATION_FAIL(CALL, SPEC_FAIL_CALL_KWNAMES);
+ return -1;
+ }
+ if (nargs != 1) {
+ SPECIALIZATION_FAIL(CALL, SPEC_FAIL_WRONG_NUMBER_ARGUMENTS);
+ return 1;
+ }
+ /* len(o) */
+ PyInterpreterState *interp = _PyInterpreterState_GET();
+ if (callable == interp->callable_cache.len) {
+ instr->op.code = CALL_NO_KW_LEN;
+ return 0;
+ }
+ instr->op.code = CALL_NO_KW_BUILTIN_O;
+ return 0;
+ }
+ case METH_FASTCALL: {
+ if (kwnames) {
+ SPECIALIZATION_FAIL(CALL, SPEC_FAIL_CALL_KWNAMES);
+ return -1;
+ }
+ if (nargs == 2) {
+ /* isinstance(o1, o2) */
+ PyInterpreterState *interp = _PyInterpreterState_GET();
+ if (callable == interp->callable_cache.isinstance) {
+ instr->op.code = CALL_NO_KW_ISINSTANCE;
+ return 0;
+ }
+ }
+ instr->op.code = CALL_NO_KW_BUILTIN_FAST;
+ return 0;
+ }
+ case METH_FASTCALL | METH_KEYWORDS: {
+ instr->op.code = CALL_BUILTIN_FAST_WITH_KEYWORDS;
+ return 0;
+ }
+ default:
+ SPECIALIZATION_FAIL(CALL,
+ builtin_call_fail_kind(PyCFunction_GET_FLAGS(callable)));
+ return 1;
+ }
+}
+
+#ifdef Py_STATS
+static int
+call_fail_kind(PyObject *callable)
+{
+ assert(!PyCFunction_CheckExact(callable));
+ assert(!PyFunction_Check(callable));
+ assert(!PyType_Check(callable));
+ assert(!Py_IS_TYPE(callable, &PyMethodDescr_Type));
+ assert(!PyMethod_Check(callable));
+ if (PyInstanceMethod_Check(callable)) {
+ return SPEC_FAIL_CALL_INSTANCE_METHOD;
+ }
+ // builtin method
+ else if (PyCMethod_Check(callable)) {
+ return SPEC_FAIL_CALL_CMETHOD;
+ }
+ else if (Py_TYPE(callable) == &PyWrapperDescr_Type) {
+ return SPEC_FAIL_CALL_OPERATOR_WRAPPER;
+ }
+ else if (Py_TYPE(callable) == &_PyMethodWrapper_Type) {
+ return SPEC_FAIL_CALL_METHOD_WRAPPER;
+ }
+ return SPEC_FAIL_OTHER;
+}
+#endif
+
+
+/* TODO:
+ - Specialize calling classes.
+*/
+void
+_Py_Specialize_Call(PyObject *callable, _Py_CODEUNIT *instr, int nargs,
+ PyObject *kwnames)
+{
+ assert(ENABLE_SPECIALIZATION);
+ assert(_PyOpcode_Caches[CALL] == INLINE_CACHE_ENTRIES_CALL);
+ assert(_Py_OPCODE(*instr) != INSTRUMENTED_CALL);
+ _PyCallCache *cache = (_PyCallCache *)(instr + 1);
+ int fail;
+ if (PyCFunction_CheckExact(callable)) {
+ fail = specialize_c_call(callable, instr, nargs, kwnames);
+ }
+ else if (PyFunction_Check(callable)) {
+ fail = specialize_py_call((PyFunctionObject *)callable, instr, nargs,
+ kwnames, false);
+ }
+ else if (PyType_Check(callable)) {
+ fail = specialize_class_call(callable, instr, nargs, kwnames);
+ }
+ else if (Py_IS_TYPE(callable, &PyMethodDescr_Type)) {
+ fail = specialize_method_descriptor((PyMethodDescrObject *)callable,
+ instr, nargs, kwnames);
+ }
+ else if (PyMethod_Check(callable)) {
+ PyObject *func = ((PyMethodObject *)callable)->im_func;
+ if (PyFunction_Check(func)) {
+ fail = specialize_py_call((PyFunctionObject *)func,
+ instr, nargs+1, kwnames, true);
+ } else {
+ SPECIALIZATION_FAIL(CALL, SPEC_FAIL_CALL_BOUND_METHOD);
+ fail = -1;
+ }
+ }
+ else {
+ SPECIALIZATION_FAIL(CALL, call_fail_kind(callable));
+ fail = -1;
+ }
+ if (fail) {
+ STAT_INC(CALL, failure);
+ assert(!PyErr_Occurred());
+ instr->op.code = CALL;
+ cache->counter = adaptive_counter_backoff(cache->counter);
+ }
+ else {
+ STAT_INC(CALL, success);
+ assert(!PyErr_Occurred());
+ cache->counter = adaptive_counter_cooldown();
+ }
+}
+
+#ifdef Py_STATS
+static int
+binary_op_fail_kind(int oparg, PyObject *lhs, PyObject *rhs)
+{
+ switch (oparg) {
+ case NB_ADD:
+ case NB_INPLACE_ADD:
+ if (!Py_IS_TYPE(lhs, Py_TYPE(rhs))) {
+ return SPEC_FAIL_BINARY_OP_ADD_DIFFERENT_TYPES;
+ }
+ return SPEC_FAIL_BINARY_OP_ADD_OTHER;
+ case NB_AND:
+ case NB_INPLACE_AND:
+ if (!Py_IS_TYPE(lhs, Py_TYPE(rhs))) {
+ return SPEC_FAIL_BINARY_OP_AND_DIFFERENT_TYPES;
+ }
+ if (PyLong_CheckExact(lhs)) {
+ return SPEC_FAIL_BINARY_OP_AND_INT;
+ }
+ return SPEC_FAIL_BINARY_OP_AND_OTHER;
+ case NB_FLOOR_DIVIDE:
+ case NB_INPLACE_FLOOR_DIVIDE:
+ return SPEC_FAIL_BINARY_OP_FLOOR_DIVIDE;
+ case NB_LSHIFT:
+ case NB_INPLACE_LSHIFT:
+ return SPEC_FAIL_BINARY_OP_LSHIFT;
+ case NB_MATRIX_MULTIPLY:
+ case NB_INPLACE_MATRIX_MULTIPLY:
+ return SPEC_FAIL_BINARY_OP_MATRIX_MULTIPLY;
+ case NB_MULTIPLY:
+ case NB_INPLACE_MULTIPLY:
+ if (!Py_IS_TYPE(lhs, Py_TYPE(rhs))) {
+ return SPEC_FAIL_BINARY_OP_MULTIPLY_DIFFERENT_TYPES;
+ }
+ return SPEC_FAIL_BINARY_OP_MULTIPLY_OTHER;
+ case NB_OR:
+ case NB_INPLACE_OR:
+ return SPEC_FAIL_BINARY_OP_OR;
+ case NB_POWER:
+ case NB_INPLACE_POWER:
+ return SPEC_FAIL_BINARY_OP_POWER;
+ case NB_REMAINDER:
+ case NB_INPLACE_REMAINDER:
+ return SPEC_FAIL_BINARY_OP_REMAINDER;
+ case NB_RSHIFT:
+ case NB_INPLACE_RSHIFT:
+ return SPEC_FAIL_BINARY_OP_RSHIFT;
+ case NB_SUBTRACT:
+ case NB_INPLACE_SUBTRACT:
+ if (!Py_IS_TYPE(lhs, Py_TYPE(rhs))) {
+ return SPEC_FAIL_BINARY_OP_SUBTRACT_DIFFERENT_TYPES;
+ }
+ return SPEC_FAIL_BINARY_OP_SUBTRACT_OTHER;
+ case NB_TRUE_DIVIDE:
+ case NB_INPLACE_TRUE_DIVIDE:
+ if (!Py_IS_TYPE(lhs, Py_TYPE(rhs))) {
+ return SPEC_FAIL_BINARY_OP_TRUE_DIVIDE_DIFFERENT_TYPES;
+ }
+ if (PyFloat_CheckExact(lhs)) {
+ return SPEC_FAIL_BINARY_OP_TRUE_DIVIDE_FLOAT;
+ }
+ return SPEC_FAIL_BINARY_OP_TRUE_DIVIDE_OTHER;
+ case NB_XOR:
+ case NB_INPLACE_XOR:
+ return SPEC_FAIL_BINARY_OP_XOR;
+ }
+ Py_UNREACHABLE();
+}
+#endif
+
+void
+_Py_Specialize_BinaryOp(PyObject *lhs, PyObject *rhs, _Py_CODEUNIT *instr,
+ int oparg, PyObject **locals)
+{
+ assert(ENABLE_SPECIALIZATION);
+ assert(_PyOpcode_Caches[BINARY_OP] == INLINE_CACHE_ENTRIES_BINARY_OP);
+ _PyBinaryOpCache *cache = (_PyBinaryOpCache *)(instr + 1);
+ switch (oparg) {
+ case NB_ADD:
+ case NB_INPLACE_ADD:
+ if (!Py_IS_TYPE(lhs, Py_TYPE(rhs))) {
+ break;
+ }
+ if (PyUnicode_CheckExact(lhs)) {
+ _Py_CODEUNIT next = instr[INLINE_CACHE_ENTRIES_BINARY_OP + 1];
+ bool to_store = (next.op.code == STORE_FAST ||
+ next.op.code == STORE_FAST__LOAD_FAST);
+ if (to_store && locals[next.op.arg] == lhs) {
+ instr->op.code = BINARY_OP_INPLACE_ADD_UNICODE;
+ goto success;
+ }
+ instr->op.code = BINARY_OP_ADD_UNICODE;
+ goto success;
+ }
+ if (PyLong_CheckExact(lhs)) {
+ instr->op.code = BINARY_OP_ADD_INT;
+ goto success;
+ }
+ if (PyFloat_CheckExact(lhs)) {
+ instr->op.code = BINARY_OP_ADD_FLOAT;
+ goto success;
+ }
+ break;
+ case NB_MULTIPLY:
+ case NB_INPLACE_MULTIPLY:
+ if (!Py_IS_TYPE(lhs, Py_TYPE(rhs))) {
+ break;
+ }
+ if (PyLong_CheckExact(lhs)) {
+ instr->op.code = BINARY_OP_MULTIPLY_INT;
+ goto success;
+ }
+ if (PyFloat_CheckExact(lhs)) {
+ instr->op.code = BINARY_OP_MULTIPLY_FLOAT;
+ goto success;
+ }
+ break;
+ case NB_SUBTRACT:
+ case NB_INPLACE_SUBTRACT:
+ if (!Py_IS_TYPE(lhs, Py_TYPE(rhs))) {
+ break;
+ }
+ if (PyLong_CheckExact(lhs)) {
+ instr->op.code = BINARY_OP_SUBTRACT_INT;
+ goto success;
+ }
+ if (PyFloat_CheckExact(lhs)) {
+ instr->op.code = BINARY_OP_SUBTRACT_FLOAT;
+ goto success;
+ }
+ break;
+ }
+ SPECIALIZATION_FAIL(BINARY_OP, binary_op_fail_kind(oparg, lhs, rhs));
+ STAT_INC(BINARY_OP, failure);
+ instr->op.code = BINARY_OP;
+ cache->counter = adaptive_counter_backoff(cache->counter);
+ return;
+success:
+ STAT_INC(BINARY_OP, success);
+ cache->counter = adaptive_counter_cooldown();
+}
+
+
+#ifdef Py_STATS
+static int
+compare_op_fail_kind(PyObject *lhs, PyObject *rhs)
+{
+ if (Py_TYPE(lhs) != Py_TYPE(rhs)) {
+ if (PyFloat_CheckExact(lhs) && PyLong_CheckExact(rhs)) {
+ return SPEC_FAIL_COMPARE_OP_FLOAT_LONG;
+ }
+ if (PyLong_CheckExact(lhs) && PyFloat_CheckExact(rhs)) {
+ return SPEC_FAIL_COMPARE_OP_LONG_FLOAT;
+ }
+ return SPEC_FAIL_COMPARE_OP_DIFFERENT_TYPES;
+ }
+ if (PyBytes_CheckExact(lhs)) {
+ return SPEC_FAIL_COMPARE_OP_BYTES;
+ }
+ if (PyTuple_CheckExact(lhs)) {
+ return SPEC_FAIL_COMPARE_OP_TUPLE;
+ }
+ if (PyList_CheckExact(lhs)) {
+ return SPEC_FAIL_COMPARE_OP_LIST;
+ }
+ if (PySet_CheckExact(lhs) || PyFrozenSet_CheckExact(lhs)) {
+ return SPEC_FAIL_COMPARE_OP_SET;
+ }
+ if (PyBool_Check(lhs)) {
+ return SPEC_FAIL_COMPARE_OP_BOOL;
+ }
+ if (Py_TYPE(lhs)->tp_richcompare == PyBaseObject_Type.tp_richcompare) {
+ return SPEC_FAIL_COMPARE_OP_BASEOBJECT;
+ }
+ return SPEC_FAIL_OTHER;
+}
+#endif
+
+void
+_Py_Specialize_CompareOp(PyObject *lhs, PyObject *rhs, _Py_CODEUNIT *instr,
+ int oparg)
+{
+ assert(ENABLE_SPECIALIZATION);
+ assert(_PyOpcode_Caches[COMPARE_OP] == INLINE_CACHE_ENTRIES_COMPARE_OP);
+ _PyCompareOpCache *cache = (_PyCompareOpCache *)(instr + 1);
+ if (Py_TYPE(lhs) != Py_TYPE(rhs)) {
+ SPECIALIZATION_FAIL(COMPARE_OP, compare_op_fail_kind(lhs, rhs));
+ goto failure;
+ }
+ if (PyFloat_CheckExact(lhs)) {
+ instr->op.code = COMPARE_OP_FLOAT;
+ goto success;
+ }
+ if (PyLong_CheckExact(lhs)) {
+ if (_PyLong_IsCompact((PyLongObject *)lhs) && _PyLong_IsCompact((PyLongObject *)rhs)) {
+ instr->op.code = COMPARE_OP_INT;
+ goto success;
+ }
+ else {
+ SPECIALIZATION_FAIL(COMPARE_OP, SPEC_FAIL_COMPARE_OP_BIG_INT);
+ goto failure;
+ }
+ }
+ if (PyUnicode_CheckExact(lhs)) {
+ int cmp = oparg >> 4;
+ if (cmp != Py_EQ && cmp != Py_NE) {
+ SPECIALIZATION_FAIL(COMPARE_OP, SPEC_FAIL_COMPARE_OP_STRING);
+ goto failure;
+ }
+ else {
+ instr->op.code = COMPARE_OP_STR;
+ goto success;
+ }
+ }
+ SPECIALIZATION_FAIL(COMPARE_OP, compare_op_fail_kind(lhs, rhs));
+failure:
+ STAT_INC(COMPARE_OP, failure);
+ instr->op.code = COMPARE_OP;
+ cache->counter = adaptive_counter_backoff(cache->counter);
+ return;
+success:
+ STAT_INC(COMPARE_OP, success);
+ cache->counter = adaptive_counter_cooldown();
+}
+
+#ifdef Py_STATS
+static int
+unpack_sequence_fail_kind(PyObject *seq)
+{
+ if (PySequence_Check(seq)) {
+ return SPEC_FAIL_UNPACK_SEQUENCE_SEQUENCE;
+ }
+ if (PyIter_Check(seq)) {
+ return SPEC_FAIL_UNPACK_SEQUENCE_ITERATOR;
+ }
+ return SPEC_FAIL_OTHER;
+}
+#endif
+
+void
+_Py_Specialize_UnpackSequence(PyObject *seq, _Py_CODEUNIT *instr, int oparg)
+{
+ assert(ENABLE_SPECIALIZATION);
+ assert(_PyOpcode_Caches[UNPACK_SEQUENCE] ==
+ INLINE_CACHE_ENTRIES_UNPACK_SEQUENCE);
+ _PyUnpackSequenceCache *cache = (_PyUnpackSequenceCache *)(instr + 1);
+ if (PyTuple_CheckExact(seq)) {
+ if (PyTuple_GET_SIZE(seq) != oparg) {
+ SPECIALIZATION_FAIL(UNPACK_SEQUENCE, SPEC_FAIL_EXPECTED_ERROR);
+ goto failure;
+ }
+ if (PyTuple_GET_SIZE(seq) == 2) {
+ instr->op.code = UNPACK_SEQUENCE_TWO_TUPLE;
+ goto success;
+ }
+ instr->op.code = UNPACK_SEQUENCE_TUPLE;
+ goto success;
+ }
+ if (PyList_CheckExact(seq)) {
+ if (PyList_GET_SIZE(seq) != oparg) {
+ SPECIALIZATION_FAIL(UNPACK_SEQUENCE, SPEC_FAIL_EXPECTED_ERROR);
+ goto failure;
+ }
+ instr->op.code = UNPACK_SEQUENCE_LIST;
+ goto success;
+ }
+ SPECIALIZATION_FAIL(UNPACK_SEQUENCE, unpack_sequence_fail_kind(seq));
+failure:
+ STAT_INC(UNPACK_SEQUENCE, failure);
+ instr->op.code = UNPACK_SEQUENCE;
+ cache->counter = adaptive_counter_backoff(cache->counter);
+ return;
+success:
+ STAT_INC(UNPACK_SEQUENCE, success);
+ cache->counter = adaptive_counter_cooldown();
+}
+
+#ifdef Py_STATS
+
+int
+ _PySpecialization_ClassifyIterator(PyObject *iter)
+{
+ if (PyGen_CheckExact(iter)) {
+ return SPEC_FAIL_ITER_GENERATOR;
+ }
+ if (PyCoro_CheckExact(iter)) {
+ return SPEC_FAIL_ITER_COROUTINE;
+ }
+ if (PyAsyncGen_CheckExact(iter)) {
+ return SPEC_FAIL_ITER_ASYNC_GENERATOR;
+ }
+ if (PyAsyncGenASend_CheckExact(iter)) {
+ return SPEC_FAIL_ITER_ASYNC_GENERATOR_SEND;
+ }
+ PyTypeObject *t = Py_TYPE(iter);
+ if (t == &PyListIter_Type) {
+ return SPEC_FAIL_ITER_LIST;
+ }
+ if (t == &PyTupleIter_Type) {
+ return SPEC_FAIL_ITER_TUPLE;
+ }
+ if (t == &PyDictIterKey_Type) {
+ return SPEC_FAIL_ITER_DICT_KEYS;
+ }
+ if (t == &PyDictIterValue_Type) {
+ return SPEC_FAIL_ITER_DICT_VALUES;
+ }
+ if (t == &PyDictIterItem_Type) {
+ return SPEC_FAIL_ITER_DICT_ITEMS;
+ }
+ if (t == &PySetIter_Type) {
+ return SPEC_FAIL_ITER_SET;
+ }
+ if (t == &PyUnicodeIter_Type) {
+ return SPEC_FAIL_ITER_STRING;
+ }
+ if (t == &PyBytesIter_Type) {
+ return SPEC_FAIL_ITER_BYTES;
+ }
+ if (t == &PyRangeIter_Type) {
+ return SPEC_FAIL_ITER_RANGE;
+ }
+ if (t == &PyEnum_Type) {
+ return SPEC_FAIL_ITER_ENUMERATE;
+ }
+ if (t == &PyMap_Type) {
+ return SPEC_FAIL_ITER_MAP;
+ }
+ if (t == &PyZip_Type) {
+ return SPEC_FAIL_ITER_ZIP;
+ }
+ if (t == &PySeqIter_Type) {
+ return SPEC_FAIL_ITER_SEQ_ITER;
+ }
+ if (t == &PyListRevIter_Type) {
+ return SPEC_FAIL_ITER_REVERSED_LIST;
+ }
+ if (t == &_PyUnicodeASCIIIter_Type) {
+ return SPEC_FAIL_ITER_ASCII_STRING;
+ }
+ const char *name = t->tp_name;
+ if (strncmp(name, "itertools", 9) == 0) {
+ return SPEC_FAIL_ITER_ITERTOOLS;
+ }
+ if (strncmp(name, "callable_iterator", 17) == 0) {
+ return SPEC_FAIL_ITER_CALLABLE;
+ }
+ return SPEC_FAIL_OTHER;
+}
+
+#endif
+
+void
+_Py_Specialize_ForIter(PyObject *iter, _Py_CODEUNIT *instr, int oparg)
+{
+ assert(ENABLE_SPECIALIZATION);
+ assert(_PyOpcode_Caches[FOR_ITER] == INLINE_CACHE_ENTRIES_FOR_ITER);
+ _PyForIterCache *cache = (_PyForIterCache *)(instr + 1);
+ PyTypeObject *tp = Py_TYPE(iter);
+ if (tp == &PyListIter_Type) {
+ instr->op.code = FOR_ITER_LIST;
+ goto success;
+ }
+ else if (tp == &PyTupleIter_Type) {
+ instr->op.code = FOR_ITER_TUPLE;
+ goto success;
+ }
+ else if (tp == &PyRangeIter_Type) {
+ instr->op.code = FOR_ITER_RANGE;
+ goto success;
+ }
+ else if (tp == &PyGen_Type && oparg <= SHRT_MAX) {
+ assert(instr[oparg + INLINE_CACHE_ENTRIES_FOR_ITER + 1].op.code == END_FOR ||
+ instr[oparg + INLINE_CACHE_ENTRIES_FOR_ITER + 1].op.code == INSTRUMENTED_END_FOR
+ );
+ if (_PyInterpreterState_GET()->eval_frame) {
+ SPECIALIZATION_FAIL(FOR_ITER, SPEC_FAIL_OTHER);
+ goto failure;
+ }
+ instr->op.code = FOR_ITER_GEN;
+ goto success;
+ }
+ SPECIALIZATION_FAIL(FOR_ITER,
+ _PySpecialization_ClassifyIterator(iter));
+failure:
+ STAT_INC(FOR_ITER, failure);
+ instr->op.code = FOR_ITER;
+ cache->counter = adaptive_counter_backoff(cache->counter);
+ return;
+success:
+ STAT_INC(FOR_ITER, success);
+ cache->counter = adaptive_counter_cooldown();
+}
+
+void
+_Py_Specialize_Send(PyObject *receiver, _Py_CODEUNIT *instr)
+{
+ assert(ENABLE_SPECIALIZATION);
+ assert(_PyOpcode_Caches[SEND] == INLINE_CACHE_ENTRIES_SEND);
+ _PySendCache *cache = (_PySendCache *)(instr + 1);
+ PyTypeObject *tp = Py_TYPE(receiver);
+ if (tp == &PyGen_Type || tp == &PyCoro_Type) {
+ if (_PyInterpreterState_GET()->eval_frame) {
+ SPECIALIZATION_FAIL(SEND, SPEC_FAIL_OTHER);
+ goto failure;
+ }
+ instr->op.code = SEND_GEN;
+ goto success;
+ }
+ SPECIALIZATION_FAIL(SEND,
+ _PySpecialization_ClassifyIterator(receiver));
+failure:
+ STAT_INC(SEND, failure);
+ instr->op.code = SEND;
+ cache->counter = adaptive_counter_backoff(cache->counter);
+ return;
+success:
+ STAT_INC(SEND, success);
+ cache->counter = adaptive_counter_cooldown();
+}
diff --git a/contrib/tools/python3/Python/stdlib_module_names.h b/contrib/tools/python3/Python/stdlib_module_names.h
new file mode 100644
index 00000000000..ed4a0ac2dd3
--- /dev/null
+++ b/contrib/tools/python3/Python/stdlib_module_names.h
@@ -0,0 +1,305 @@
+// Auto-generated by Tools/build/generate_stdlib_module_names.py.
+// List used to create sys.stdlib_module_names.
+
+static const char* _Py_stdlib_module_names[] = {
+"__future__",
+"_abc",
+"_aix_support",
+"_ast",
+"_asyncio",
+"_bisect",
+"_blake2",
+"_bz2",
+"_codecs",
+"_codecs_cn",
+"_codecs_hk",
+"_codecs_iso2022",
+"_codecs_jp",
+"_codecs_kr",
+"_codecs_tw",
+"_collections",
+"_collections_abc",
+"_compat_pickle",
+"_compression",
+"_contextvars",
+"_crypt",
+"_csv",
+"_ctypes",
+"_curses",
+"_curses_panel",
+"_datetime",
+"_dbm",
+"_decimal",
+"_elementtree",
+"_frozen_importlib",
+"_frozen_importlib_external",
+"_functools",
+"_gdbm",
+"_hashlib",
+"_heapq",
+"_imp",
+"_io",
+"_json",
+"_locale",
+"_lsprof",
+"_lzma",
+"_markupbase",
+"_md5",
+"_msi",
+"_multibytecodec",
+"_multiprocessing",
+"_opcode",
+"_operator",
+"_osx_support",
+"_overlapped",
+"_pickle",
+"_posixshmem",
+"_posixsubprocess",
+"_py_abc",
+"_pydatetime",
+"_pydecimal",
+"_pyio",
+"_pylong",
+"_queue",
+"_random",
+"_scproxy",
+"_sha1",
+"_sha2",
+"_sha3",
+"_signal",
+"_sitebuiltins",
+"_socket",
+"_sqlite3",
+"_sre",
+"_ssl",
+"_stat",
+"_statistics",
+"_string",
+"_strptime",
+"_struct",
+"_symtable",
+"_thread",
+"_threading_local",
+"_tkinter",
+"_tokenize",
+"_tracemalloc",
+"_typing",
+"_uuid",
+"_warnings",
+"_weakref",
+"_weakrefset",
+"_winapi",
+"_zoneinfo",
+"abc",
+"aifc",
+"antigravity",
+"argparse",
+"array",
+"ast",
+"asyncio",
+"atexit",
+"audioop",
+"base64",
+"bdb",
+"binascii",
+"bisect",
+"builtins",
+"bz2",
+"cProfile",
+"calendar",
+"cgi",
+"cgitb",
+"chunk",
+"cmath",
+"cmd",
+"code",
+"codecs",
+"codeop",
+"collections",
+"colorsys",
+"compileall",
+"concurrent",
+"configparser",
+"contextlib",
+"contextvars",
+"copy",
+"copyreg",
+"crypt",
+"csv",
+"ctypes",
+"curses",
+"dataclasses",
+"datetime",
+"dbm",
+"decimal",
+"difflib",
+"dis",
+"doctest",
+"email",
+"encodings",
+"ensurepip",
+"enum",
+"errno",
+"faulthandler",
+"fcntl",
+"filecmp",
+"fileinput",
+"fnmatch",
+"fractions",
+"ftplib",
+"functools",
+"gc",
+"genericpath",
+"getopt",
+"getpass",
+"gettext",
+"glob",
+"graphlib",
+"grp",
+"gzip",
+"hashlib",
+"heapq",
+"hmac",
+"html",
+"http",
+"idlelib",
+"imaplib",
+"imghdr",
+"importlib",
+"inspect",
+"io",
+"ipaddress",
+"itertools",
+"json",
+"keyword",
+"lib2to3",
+"linecache",
+"locale",
+"logging",
+"lzma",
+"mailbox",
+"mailcap",
+"marshal",
+"math",
+"mimetypes",
+"mmap",
+"modulefinder",
+"msilib",
+"msvcrt",
+"multiprocessing",
+"netrc",
+"nis",
+"nntplib",
+"nt",
+"ntpath",
+"nturl2path",
+"numbers",
+"opcode",
+"operator",
+"optparse",
+"os",
+"ossaudiodev",
+"pathlib",
+"pdb",
+"pickle",
+"pickletools",
+"pipes",
+"pkgutil",
+"platform",
+"plistlib",
+"poplib",
+"posix",
+"posixpath",
+"pprint",
+"profile",
+"pstats",
+"pty",
+"pwd",
+"py_compile",
+"pyclbr",
+"pydoc",
+"pydoc_data",
+"pyexpat",
+"queue",
+"quopri",
+"random",
+"re",
+"readline",
+"reprlib",
+"resource",
+"rlcompleter",
+"runpy",
+"sched",
+"secrets",
+"select",
+"selectors",
+"shelve",
+"shlex",
+"shutil",
+"signal",
+"site",
+"smtplib",
+"sndhdr",
+"socket",
+"socketserver",
+"spwd",
+"sqlite3",
+"sre_compile",
+"sre_constants",
+"sre_parse",
+"ssl",
+"stat",
+"statistics",
+"string",
+"stringprep",
+"struct",
+"subprocess",
+"sunau",
+"symtable",
+"sys",
+"sysconfig",
+"syslog",
+"tabnanny",
+"tarfile",
+"telnetlib",
+"tempfile",
+"termios",
+"textwrap",
+"this",
+"threading",
+"time",
+"timeit",
+"tkinter",
+"token",
+"tokenize",
+"tomllib",
+"trace",
+"traceback",
+"tracemalloc",
+"tty",
+"turtle",
+"turtledemo",
+"types",
+"typing",
+"unicodedata",
+"unittest",
+"urllib",
+"uu",
+"uuid",
+"venv",
+"warnings",
+"wave",
+"weakref",
+"webbrowser",
+"winreg",
+"winsound",
+"wsgiref",
+"xdrlib",
+"xml",
+"xmlrpc",
+"zipapp",
+"zipfile",
+"zipimport",
+"zlib",
+"zoneinfo",
+};
diff --git a/contrib/tools/python3/Python/structmember.c b/contrib/tools/python3/Python/structmember.c
new file mode 100644
index 00000000000..ebebaa0a034
--- /dev/null
+++ b/contrib/tools/python3/Python/structmember.c
@@ -0,0 +1,334 @@
+
+/* Map C struct members to Python object attributes */
+
+#include "Python.h"
+#include "structmember.h" // PyMemberDef
+
+PyObject *
+PyMember_GetOne(const char *obj_addr, PyMemberDef *l)
+{
+ PyObject *v;
+ if (l->flags & Py_RELATIVE_OFFSET) {
+ PyErr_SetString(
+ PyExc_SystemError,
+ "PyMember_GetOne used with Py_RELATIVE_OFFSET");
+ return NULL;
+ }
+
+ const char* addr = obj_addr + l->offset;
+ switch (l->type) {
+ case T_BOOL:
+ v = PyBool_FromLong(*(char*)addr);
+ break;
+ case T_BYTE:
+ v = PyLong_FromLong(*(char*)addr);
+ break;
+ case T_UBYTE:
+ v = PyLong_FromUnsignedLong(*(unsigned char*)addr);
+ break;
+ case T_SHORT:
+ v = PyLong_FromLong(*(short*)addr);
+ break;
+ case T_USHORT:
+ v = PyLong_FromUnsignedLong(*(unsigned short*)addr);
+ break;
+ case T_INT:
+ v = PyLong_FromLong(*(int*)addr);
+ break;
+ case T_UINT:
+ v = PyLong_FromUnsignedLong(*(unsigned int*)addr);
+ break;
+ case T_LONG:
+ v = PyLong_FromLong(*(long*)addr);
+ break;
+ case T_ULONG:
+ v = PyLong_FromUnsignedLong(*(unsigned long*)addr);
+ break;
+ case T_PYSSIZET:
+ v = PyLong_FromSsize_t(*(Py_ssize_t*)addr);
+ break;
+ case T_FLOAT:
+ v = PyFloat_FromDouble((double)*(float*)addr);
+ break;
+ case T_DOUBLE:
+ v = PyFloat_FromDouble(*(double*)addr);
+ break;
+ case T_STRING:
+ if (*(char**)addr == NULL) {
+ v = Py_NewRef(Py_None);
+ }
+ else
+ v = PyUnicode_FromString(*(char**)addr);
+ break;
+ case T_STRING_INPLACE:
+ v = PyUnicode_FromString((char*)addr);
+ break;
+ case T_CHAR:
+ v = PyUnicode_FromStringAndSize((char*)addr, 1);
+ break;
+ case T_OBJECT:
+ v = *(PyObject **)addr;
+ if (v == NULL)
+ v = Py_None;
+ Py_INCREF(v);
+ break;
+ case T_OBJECT_EX:
+ v = *(PyObject **)addr;
+ if (v == NULL) {
+ PyObject *obj = (PyObject *)obj_addr;
+ PyTypeObject *tp = Py_TYPE(obj);
+ PyErr_Format(PyExc_AttributeError,
+ "'%.200s' object has no attribute '%s'",
+ tp->tp_name, l->name);
+ }
+ Py_XINCREF(v);
+ break;
+ case T_LONGLONG:
+ v = PyLong_FromLongLong(*(long long *)addr);
+ break;
+ case T_ULONGLONG:
+ v = PyLong_FromUnsignedLongLong(*(unsigned long long *)addr);
+ break;
+ case T_NONE:
+ v = Py_NewRef(Py_None);
+ break;
+ default:
+ PyErr_SetString(PyExc_SystemError, "bad memberdescr type");
+ v = NULL;
+ }
+ return v;
+}
+
+#define WARN(msg) \
+ do { \
+ if (PyErr_WarnEx(PyExc_RuntimeWarning, msg, 1) < 0) \
+ return -1; \
+ } while (0)
+
+int
+PyMember_SetOne(char *addr, PyMemberDef *l, PyObject *v)
+{
+ PyObject *oldv;
+ if (l->flags & Py_RELATIVE_OFFSET) {
+ PyErr_SetString(
+ PyExc_SystemError,
+ "PyMember_SetOne used with Py_RELATIVE_OFFSET");
+ return -1;
+ }
+
+ addr += l->offset;
+
+ if ((l->flags & READONLY))
+ {
+ PyErr_SetString(PyExc_AttributeError, "readonly attribute");
+ return -1;
+ }
+ if (v == NULL) {
+ if (l->type == T_OBJECT_EX) {
+ /* Check if the attribute is set. */
+ if (*(PyObject **)addr == NULL) {
+ PyErr_SetString(PyExc_AttributeError, l->name);
+ return -1;
+ }
+ }
+ else if (l->type != T_OBJECT) {
+ PyErr_SetString(PyExc_TypeError,
+ "can't delete numeric/char attribute");
+ return -1;
+ }
+ }
+ switch (l->type) {
+ case T_BOOL:{
+ if (!PyBool_Check(v)) {
+ PyErr_SetString(PyExc_TypeError,
+ "attribute value type must be bool");
+ return -1;
+ }
+ if (v == Py_True)
+ *(char*)addr = (char) 1;
+ else
+ *(char*)addr = (char) 0;
+ break;
+ }
+ case T_BYTE:{
+ long long_val = PyLong_AsLong(v);
+ if ((long_val == -1) && PyErr_Occurred())
+ return -1;
+ *(char*)addr = (char)long_val;
+ /* XXX: For compatibility, only warn about truncations
+ for now. */
+ if ((long_val > CHAR_MAX) || (long_val < CHAR_MIN))
+ WARN("Truncation of value to char");
+ break;
+ }
+ case T_UBYTE:{
+ long long_val = PyLong_AsLong(v);
+ if ((long_val == -1) && PyErr_Occurred())
+ return -1;
+ *(unsigned char*)addr = (unsigned char)long_val;
+ if ((long_val > UCHAR_MAX) || (long_val < 0))
+ WARN("Truncation of value to unsigned char");
+ break;
+ }
+ case T_SHORT:{
+ long long_val = PyLong_AsLong(v);
+ if ((long_val == -1) && PyErr_Occurred())
+ return -1;
+ *(short*)addr = (short)long_val;
+ if ((long_val > SHRT_MAX) || (long_val < SHRT_MIN))
+ WARN("Truncation of value to short");
+ break;
+ }
+ case T_USHORT:{
+ long long_val = PyLong_AsLong(v);
+ if ((long_val == -1) && PyErr_Occurred())
+ return -1;
+ *(unsigned short*)addr = (unsigned short)long_val;
+ if ((long_val > USHRT_MAX) || (long_val < 0))
+ WARN("Truncation of value to unsigned short");
+ break;
+ }
+ case T_INT:{
+ long long_val = PyLong_AsLong(v);
+ if ((long_val == -1) && PyErr_Occurred())
+ return -1;
+ *(int *)addr = (int)long_val;
+ if ((long_val > INT_MAX) || (long_val < INT_MIN))
+ WARN("Truncation of value to int");
+ break;
+ }
+ case T_UINT: {
+ /* XXX: For compatibility, accept negative int values
+ as well. */
+ int overflow;
+ long long_val = PyLong_AsLongAndOverflow(v, &overflow);
+ if (long_val == -1 && PyErr_Occurred()) {
+ return -1;
+ }
+ if (overflow < 0) {
+ PyErr_SetString(PyExc_OverflowError,
+ "Python int too large to convert to C long");
+ return -1;
+ }
+ else if (!overflow) {
+ *(unsigned int *)addr = (unsigned int)(unsigned long)long_val;
+ if (long_val < 0) {
+ WARN("Writing negative value into unsigned field");
+ }
+ else if ((unsigned long)long_val > UINT_MAX) {
+ WARN("Truncation of value to unsigned short");
+ }
+ }
+ else {
+ unsigned long ulong_val = PyLong_AsUnsignedLong(v);
+ if (ulong_val == (unsigned long)-1 && PyErr_Occurred()) {
+ return -1;
+ }
+ *(unsigned int*)addr = (unsigned int)ulong_val;
+ if (ulong_val > UINT_MAX) {
+ WARN("Truncation of value to unsigned int");
+ }
+ }
+ break;
+ }
+ case T_LONG:{
+ *(long*)addr = PyLong_AsLong(v);
+ if ((*(long*)addr == -1) && PyErr_Occurred())
+ return -1;
+ break;
+ }
+ case T_ULONG: {
+ /* XXX: For compatibility, accept negative int values
+ as well. */
+ int overflow;
+ long long_val = PyLong_AsLongAndOverflow(v, &overflow);
+ if (long_val == -1 && PyErr_Occurred()) {
+ return -1;
+ }
+ if (overflow < 0) {
+ PyErr_SetString(PyExc_OverflowError,
+ "Python int too large to convert to C long");
+ return -1;
+ }
+ else if (!overflow) {
+ *(unsigned long *)addr = (unsigned long)long_val;
+ if (long_val < 0) {
+ WARN("Writing negative value into unsigned field");
+ }
+ }
+ else {
+ unsigned long ulong_val = PyLong_AsUnsignedLong(v);
+ if (ulong_val == (unsigned long)-1 && PyErr_Occurred()) {
+ return -1;
+ }
+ *(unsigned long*)addr = ulong_val;
+ }
+ break;
+ }
+ case T_PYSSIZET:{
+ *(Py_ssize_t*)addr = PyLong_AsSsize_t(v);
+ if ((*(Py_ssize_t*)addr == (Py_ssize_t)-1)
+ && PyErr_Occurred())
+ return -1;
+ break;
+ }
+ case T_FLOAT:{
+ double double_val = PyFloat_AsDouble(v);
+ if ((double_val == -1) && PyErr_Occurred())
+ return -1;
+ *(float*)addr = (float)double_val;
+ break;
+ }
+ case T_DOUBLE:
+ *(double*)addr = PyFloat_AsDouble(v);
+ if ((*(double*)addr == -1) && PyErr_Occurred())
+ return -1;
+ break;
+ case T_OBJECT:
+ case T_OBJECT_EX:
+ oldv = *(PyObject **)addr;
+ *(PyObject **)addr = Py_XNewRef(v);
+ Py_XDECREF(oldv);
+ break;
+ case T_CHAR: {
+ const char *string;
+ Py_ssize_t len;
+
+ string = PyUnicode_AsUTF8AndSize(v, &len);
+ if (string == NULL || len != 1) {
+ PyErr_BadArgument();
+ return -1;
+ }
+ *(char*)addr = string[0];
+ break;
+ }
+ case T_STRING:
+ case T_STRING_INPLACE:
+ PyErr_SetString(PyExc_TypeError, "readonly attribute");
+ return -1;
+ case T_LONGLONG:{
+ long long value;
+ *(long long*)addr = value = PyLong_AsLongLong(v);
+ if ((value == -1) && PyErr_Occurred())
+ return -1;
+ break;
+ }
+ case T_ULONGLONG:{
+ unsigned long long value;
+ /* ??? PyLong_AsLongLong accepts an int, but PyLong_AsUnsignedLongLong
+ doesn't ??? */
+ if (PyLong_Check(v))
+ *(unsigned long long*)addr = value = PyLong_AsUnsignedLongLong(v);
+ else
+ *(unsigned long long*)addr = value = PyLong_AsLong(v);
+ if ((value == (unsigned long long)-1) && PyErr_Occurred())
+ return -1;
+ break;
+ }
+ default:
+ PyErr_Format(PyExc_SystemError,
+ "bad memberdescr type for %s", l->name);
+ return -1;
+ }
+ return 0;
+}
diff --git a/contrib/tools/python3/Python/suggestions.c b/contrib/tools/python3/Python/suggestions.c
new file mode 100644
index 00000000000..ad58393490e
--- /dev/null
+++ b/contrib/tools/python3/Python/suggestions.c
@@ -0,0 +1,429 @@
+#include "Python.h"
+#include "pycore_frame.h"
+#include "pycore_runtime.h" // _PyRuntime
+#include "pycore_global_objects.h" // _Py_ID()
+
+#include "pycore_pyerrors.h"
+#include "pycore_code.h" // _PyCode_GetVarnames()
+#include "stdlib_module_names.h" // _Py_stdlib_module_names
+
+#define MAX_CANDIDATE_ITEMS 750
+#define MAX_STRING_SIZE 40
+
+#define MOVE_COST 2
+#define CASE_COST 1
+
+#define LEAST_FIVE_BITS(n) ((n) & 31)
+
+static inline int
+substitution_cost(char a, char b)
+{
+ if (LEAST_FIVE_BITS(a) != LEAST_FIVE_BITS(b)) {
+ // Not the same, not a case flip.
+ return MOVE_COST;
+ }
+ if (a == b) {
+ return 0;
+ }
+ if ('A' <= a && a <= 'Z') {
+ a += ('a' - 'A');
+ }
+ if ('A' <= b && b <= 'Z') {
+ b += ('a' - 'A');
+ }
+ if (a == b) {
+ return CASE_COST;
+ }
+ return MOVE_COST;
+}
+
+/* Calculate the Levenshtein distance between string1 and string2 */
+static Py_ssize_t
+levenshtein_distance(const char *a, size_t a_size,
+ const char *b, size_t b_size,
+ size_t max_cost, size_t *buffer)
+{
+ // Both strings are the same (by identity)
+ if (a == b) {
+ return 0;
+ }
+
+ // Trim away common affixes.
+ while (a_size && b_size && a[0] == b[0]) {
+ a++; a_size--;
+ b++; b_size--;
+ }
+ while (a_size && b_size && a[a_size-1] == b[b_size-1]) {
+ a_size--;
+ b_size--;
+ }
+ if (a_size == 0 || b_size == 0) {
+ return (a_size + b_size) * MOVE_COST;
+ }
+ if (a_size > MAX_STRING_SIZE || b_size > MAX_STRING_SIZE) {
+ return max_cost + 1;
+ }
+
+ // Prefer shorter buffer
+ if (b_size < a_size) {
+ const char *t = a; a = b; b = t;
+ size_t t_size = a_size; a_size = b_size; b_size = t_size;
+ }
+
+ // quick fail when a match is impossible.
+ if ((b_size - a_size) * MOVE_COST > max_cost) {
+ return max_cost + 1;
+ }
+
+ // Instead of producing the whole traditional len(a)-by-len(b)
+ // matrix, we can update just one row in place.
+ // Initialize the buffer row
+ size_t tmp = MOVE_COST;
+ for (size_t i = 0; i < a_size; i++) {
+ // cost from b[:0] to a[:i+1]
+ buffer[i] = tmp;
+ tmp += MOVE_COST;
+ }
+
+ size_t result = 0;
+ for (size_t b_index = 0; b_index < b_size; b_index++) {
+ char code = b[b_index];
+ // cost(b[:b_index], a[:0]) == b_index * MOVE_COST
+ size_t distance = result = b_index * MOVE_COST;
+ size_t minimum = SIZE_MAX;
+ for (size_t index = 0; index < a_size; index++) {
+
+ // cost(b[:b_index+1], a[:index+1]) = min(
+ // // 1) substitute
+ // cost(b[:b_index], a[:index])
+ // + substitution_cost(b[b_index], a[index]),
+ // // 2) delete from b
+ // cost(b[:b_index], a[:index+1]) + MOVE_COST,
+ // // 3) delete from a
+ // cost(b[:b_index+1], a[index]) + MOVE_COST
+ // )
+
+ // 1) Previous distance in this row is cost(b[:b_index], a[:index])
+ size_t substitute = distance + substitution_cost(code, a[index]);
+ // 2) cost(b[:b_index], a[:index+1]) from previous row
+ distance = buffer[index];
+ // 3) existing result is cost(b[:b_index+1], a[index])
+
+ size_t insert_delete = Py_MIN(result, distance) + MOVE_COST;
+ result = Py_MIN(insert_delete, substitute);
+
+ // cost(b[:b_index+1], a[:index+1])
+ buffer[index] = result;
+ if (result < minimum) {
+ minimum = result;
+ }
+ }
+ if (minimum > max_cost) {
+ // Everything in this row is too big, so bail early.
+ return max_cost + 1;
+ }
+ }
+ return result;
+}
+
+static inline PyObject *
+calculate_suggestions(PyObject *dir,
+ PyObject *name)
+{
+ assert(!PyErr_Occurred());
+ assert(PyList_CheckExact(dir));
+
+ Py_ssize_t dir_size = PyList_GET_SIZE(dir);
+ if (dir_size >= MAX_CANDIDATE_ITEMS) {
+ return NULL;
+ }
+
+ Py_ssize_t suggestion_distance = PY_SSIZE_T_MAX;
+ PyObject *suggestion = NULL;
+ Py_ssize_t name_size;
+ const char *name_str = PyUnicode_AsUTF8AndSize(name, &name_size);
+ if (name_str == NULL) {
+ return NULL;
+ }
+ size_t *buffer = PyMem_New(size_t, MAX_STRING_SIZE);
+ if (buffer == NULL) {
+ return PyErr_NoMemory();
+ }
+ for (int i = 0; i < dir_size; ++i) {
+ PyObject *item = PyList_GET_ITEM(dir, i);
+ if (_PyUnicode_Equal(name, item)) {
+ continue;
+ }
+ Py_ssize_t item_size;
+ const char *item_str = PyUnicode_AsUTF8AndSize(item, &item_size);
+ if (item_str == NULL) {
+ PyMem_Free(buffer);
+ return NULL;
+ }
+ // No more than 1/3 of the involved characters should need changed.
+ Py_ssize_t max_distance = (name_size + item_size + 3) * MOVE_COST / 6;
+ // Don't take matches we've already beaten.
+ max_distance = Py_MIN(max_distance, suggestion_distance - 1);
+ Py_ssize_t current_distance =
+ levenshtein_distance(name_str, name_size, item_str,
+ item_size, max_distance, buffer);
+ if (current_distance > max_distance) {
+ continue;
+ }
+ if (!suggestion || current_distance < suggestion_distance) {
+ suggestion = item;
+ suggestion_distance = current_distance;
+ }
+ }
+ PyMem_Free(buffer);
+ return Py_XNewRef(suggestion);
+}
+
+static PyObject *
+get_suggestions_for_attribute_error(PyAttributeErrorObject *exc)
+{
+ PyObject *name = exc->name; // borrowed reference
+ PyObject *obj = exc->obj; // borrowed reference
+
+ // Abort if we don't have an attribute name or we have an invalid one
+ if (name == NULL || obj == NULL || !PyUnicode_CheckExact(name)) {
+ return NULL;
+ }
+
+ PyObject *dir = PyObject_Dir(obj);
+ if (dir == NULL) {
+ return NULL;
+ }
+
+ PyObject *suggestions = calculate_suggestions(dir, name);
+ Py_DECREF(dir);
+ return suggestions;
+}
+
+static PyObject *
+offer_suggestions_for_attribute_error(PyAttributeErrorObject *exc)
+{
+ PyObject* suggestion = get_suggestions_for_attribute_error(exc);
+ if (suggestion == NULL) {
+ return NULL;
+ }
+ // Add a trailer ". Did you mean: (...)?"
+ PyObject* result = PyUnicode_FromFormat(". Did you mean: %R?", suggestion);
+ Py_DECREF(suggestion);
+ return result;
+}
+
+static PyObject *
+get_suggestions_for_name_error(PyObject* name, PyFrameObject* frame)
+{
+ PyCodeObject *code = PyFrame_GetCode(frame);
+ assert(code != NULL && code->co_localsplusnames != NULL);
+
+ PyObject *varnames = _PyCode_GetVarnames(code);
+ Py_DECREF(code);
+ if (varnames == NULL) {
+ return NULL;
+ }
+ PyObject *dir = PySequence_List(varnames);
+ Py_DECREF(varnames);
+ if (dir == NULL) {
+ return NULL;
+ }
+
+ // Are we inside a method and the instance has an attribute called 'name'?
+ int res = PySequence_Contains(dir, &_Py_ID(self));
+ if (res < 0) {
+ goto error;
+ }
+ if (res > 0) {
+ PyObject* locals = PyFrame_GetLocals(frame);
+ if (!locals) {
+ goto error;
+ }
+ PyObject* self = PyDict_GetItemWithError(locals, &_Py_ID(self)); /* borrowed */
+ if (!self) {
+ Py_DECREF(locals);
+ goto error;
+ }
+
+ PyObject *value;
+ res = _PyObject_LookupAttr(self, name, &value);
+ Py_DECREF(locals);
+ if (res < 0) {
+ goto error;
+ }
+ if (value) {
+ Py_DECREF(value);
+ Py_DECREF(dir);
+ return PyUnicode_FromFormat("self.%U", name);
+ }
+ }
+
+ PyObject *suggestions = calculate_suggestions(dir, name);
+ Py_DECREF(dir);
+ if (suggestions != NULL || PyErr_Occurred()) {
+ return suggestions;
+ }
+
+ dir = PySequence_List(frame->f_frame->f_globals);
+ if (dir == NULL) {
+ return NULL;
+ }
+ suggestions = calculate_suggestions(dir, name);
+ Py_DECREF(dir);
+ if (suggestions != NULL || PyErr_Occurred()) {
+ return suggestions;
+ }
+
+ dir = PySequence_List(frame->f_frame->f_builtins);
+ if (dir == NULL) {
+ return NULL;
+ }
+ suggestions = calculate_suggestions(dir, name);
+ Py_DECREF(dir);
+
+ return suggestions;
+
+error:
+ Py_DECREF(dir);
+ return NULL;
+}
+
+static bool
+is_name_stdlib_module(PyObject* name)
+{
+ const char* the_name = PyUnicode_AsUTF8(name);
+ Py_ssize_t len = Py_ARRAY_LENGTH(_Py_stdlib_module_names);
+ for (Py_ssize_t i = 0; i < len; i++) {
+ if (strcmp(the_name, _Py_stdlib_module_names[i]) == 0) {
+ return 1;
+ }
+ }
+ return 0;
+}
+
+static PyObject *
+offer_suggestions_for_name_error(PyNameErrorObject *exc)
+{
+ PyObject *name = exc->name; // borrowed reference
+ PyTracebackObject *traceback = (PyTracebackObject *) exc->traceback; // borrowed reference
+ // Abort if we don't have a variable name or we have an invalid one
+ // or if we don't have a traceback to work with
+ if (name == NULL || !PyUnicode_CheckExact(name) ||
+ traceback == NULL || !Py_IS_TYPE(traceback, &PyTraceBack_Type)
+ ) {
+ return NULL;
+ }
+
+ // Move to the traceback of the exception
+ while (1) {
+ PyTracebackObject *next = traceback->tb_next;
+ if (next == NULL || !Py_IS_TYPE(next, &PyTraceBack_Type)) {
+ break;
+ }
+ else {
+ traceback = next;
+ }
+ }
+
+ PyFrameObject *frame = traceback->tb_frame;
+ assert(frame != NULL);
+
+ PyObject* suggestion = get_suggestions_for_name_error(name, frame);
+ if (suggestion == NULL && PyErr_Occurred()) {
+ return NULL;
+ }
+
+ // Add a trailer ". Did you mean: (...)?"
+ PyObject* result = NULL;
+ if (!is_name_stdlib_module(name)) {
+ if (suggestion == NULL) {
+ return NULL;
+ }
+ result = PyUnicode_FromFormat(". Did you mean: %R?", suggestion);
+ } else if (suggestion == NULL) {
+ result = PyUnicode_FromFormat(". Did you forget to import %R?", name);
+ } else {
+ result = PyUnicode_FromFormat(". Did you mean: %R? Or did you forget to import %R?", suggestion, name);
+ }
+ Py_XDECREF(suggestion);
+ return result;
+}
+
+static PyObject *
+offer_suggestions_for_import_error(PyImportErrorObject *exc)
+{
+ PyObject *mod_name = exc->name; // borrowed reference
+ PyObject *name = exc->name_from; // borrowed reference
+ if (name == NULL || mod_name == NULL || name == Py_None ||
+ !PyUnicode_CheckExact(name) || !PyUnicode_CheckExact(mod_name)) {
+ return NULL;
+ }
+
+ PyObject* mod = PyImport_GetModule(mod_name);
+ if (mod == NULL) {
+ return NULL;
+ }
+
+ PyObject *dir = PyObject_Dir(mod);
+ Py_DECREF(mod);
+ if (dir == NULL) {
+ return NULL;
+ }
+
+ PyObject *suggestion = calculate_suggestions(dir, name);
+ Py_DECREF(dir);
+ if (!suggestion) {
+ return NULL;
+ }
+
+ PyObject* result = PyUnicode_FromFormat(". Did you mean: %R?", suggestion);
+ Py_DECREF(suggestion);
+ return result;
+}
+
+// Offer suggestions for a given exception. Returns a python string object containing the
+// suggestions. This function returns NULL if no suggestion was found or if an exception happened,
+// users must call PyErr_Occurred() to disambiguate.
+PyObject *
+_Py_Offer_Suggestions(PyObject *exception)
+{
+ PyObject *result = NULL;
+ assert(!PyErr_Occurred());
+ if (Py_IS_TYPE(exception, (PyTypeObject*)PyExc_AttributeError)) {
+ result = offer_suggestions_for_attribute_error((PyAttributeErrorObject *) exception);
+ } else if (Py_IS_TYPE(exception, (PyTypeObject*)PyExc_NameError)) {
+ result = offer_suggestions_for_name_error((PyNameErrorObject *) exception);
+ } else if (Py_IS_TYPE(exception, (PyTypeObject*)PyExc_ImportError)) {
+ result = offer_suggestions_for_import_error((PyImportErrorObject *) exception);
+ }
+ return result;
+}
+
+Py_ssize_t
+_Py_UTF8_Edit_Cost(PyObject *a, PyObject *b, Py_ssize_t max_cost)
+{
+ assert(PyUnicode_Check(a) && PyUnicode_Check(b));
+ Py_ssize_t size_a, size_b;
+ const char *utf8_a = PyUnicode_AsUTF8AndSize(a, &size_a);
+ if (utf8_a == NULL) {
+ return -1;
+ }
+ const char *utf8_b = PyUnicode_AsUTF8AndSize(b, &size_b);
+ if (utf8_b == NULL) {
+ return -1;
+ }
+ if (max_cost == -1) {
+ max_cost = MOVE_COST * Py_MAX(size_a, size_b);
+ }
+ size_t *buffer = PyMem_New(size_t, MAX_STRING_SIZE);
+ if (buffer == NULL) {
+ PyErr_NoMemory();
+ return -1;
+ }
+ Py_ssize_t res = levenshtein_distance(utf8_a, size_a,
+ utf8_b, size_b, max_cost, buffer);
+ PyMem_Free(buffer);
+ return res;
+}
+
diff --git a/contrib/tools/python3/Python/symtable.c b/contrib/tools/python3/Python/symtable.c
new file mode 100644
index 00000000000..a5c6b465b71
--- /dev/null
+++ b/contrib/tools/python3/Python/symtable.c
@@ -0,0 +1,2709 @@
+#include "Python.h"
+#include "pycore_ast.h" // identifier, stmt_ty
+#include "pycore_parser.h" // _PyParser_ASTFromString()
+#include "pycore_pystate.h" // _PyThreadState_GET()
+#include "pycore_symtable.h" // PySTEntryObject
+#include "structmember.h" // PyMemberDef
+
+/* error strings used for warnings */
+#define GLOBAL_PARAM \
+"name '%U' is parameter and global"
+
+#define NONLOCAL_PARAM \
+"name '%U' is parameter and nonlocal"
+
+#define GLOBAL_AFTER_ASSIGN \
+"name '%U' is assigned to before global declaration"
+
+#define NONLOCAL_AFTER_ASSIGN \
+"name '%U' is assigned to before nonlocal declaration"
+
+#define GLOBAL_AFTER_USE \
+"name '%U' is used prior to global declaration"
+
+#define NONLOCAL_AFTER_USE \
+"name '%U' is used prior to nonlocal declaration"
+
+#define GLOBAL_ANNOT \
+"annotated name '%U' can't be global"
+
+#define NONLOCAL_ANNOT \
+"annotated name '%U' can't be nonlocal"
+
+#define IMPORT_STAR_WARNING "import * only allowed at module level"
+
+#define NAMED_EXPR_COMP_IN_CLASS \
+"assignment expression within a comprehension cannot be used in a class body"
+
+#define NAMED_EXPR_COMP_IN_TYPEVAR_BOUND \
+"assignment expression within a comprehension cannot be used in a TypeVar bound"
+
+#define NAMED_EXPR_COMP_IN_TYPEALIAS \
+"assignment expression within a comprehension cannot be used in a type alias"
+
+#define NAMED_EXPR_COMP_IN_TYPEPARAM \
+"assignment expression within a comprehension cannot be used within the definition of a generic"
+
+#define NAMED_EXPR_COMP_CONFLICT \
+"assignment expression cannot rebind comprehension iteration variable '%U'"
+
+#define NAMED_EXPR_COMP_INNER_LOOP_CONFLICT \
+"comprehension inner loop cannot rebind assignment expression target '%U'"
+
+#define NAMED_EXPR_COMP_ITER_EXPR \
+"assignment expression cannot be used in a comprehension iterable expression"
+
+#define ANNOTATION_NOT_ALLOWED \
+"%s cannot be used within an annotation"
+
+#define TYPEVAR_BOUND_NOT_ALLOWED \
+"%s cannot be used within a TypeVar bound"
+
+#define TYPEALIAS_NOT_ALLOWED \
+"%s cannot be used within a type alias"
+
+#define TYPEPARAM_NOT_ALLOWED \
+"%s cannot be used within the definition of a generic"
+
+#define DUPLICATE_TYPE_PARAM \
+"duplicate type parameter '%U'"
+
+
+#define LOCATION(x) \
+ (x)->lineno, (x)->col_offset, (x)->end_lineno, (x)->end_col_offset
+
+#define ST_LOCATION(x) \
+ (x)->ste_lineno, (x)->ste_col_offset, (x)->ste_end_lineno, (x)->ste_end_col_offset
+
+static PySTEntryObject *
+ste_new(struct symtable *st, identifier name, _Py_block_ty block,
+ void *key, int lineno, int col_offset,
+ int end_lineno, int end_col_offset)
+{
+ PySTEntryObject *ste = NULL;
+ PyObject *k = NULL;
+
+ k = PyLong_FromVoidPtr(key);
+ if (k == NULL)
+ goto fail;
+ ste = PyObject_New(PySTEntryObject, &PySTEntry_Type);
+ if (ste == NULL) {
+ Py_DECREF(k);
+ goto fail;
+ }
+ ste->ste_table = st;
+ ste->ste_id = k; /* ste owns reference to k */
+
+ ste->ste_name = Py_NewRef(name);
+
+ ste->ste_symbols = NULL;
+ ste->ste_varnames = NULL;
+ ste->ste_children = NULL;
+
+ ste->ste_directives = NULL;
+
+ ste->ste_type = block;
+ ste->ste_nested = 0;
+ ste->ste_free = 0;
+ ste->ste_varargs = 0;
+ ste->ste_varkeywords = 0;
+ ste->ste_opt_lineno = 0;
+ ste->ste_opt_col_offset = 0;
+ ste->ste_lineno = lineno;
+ ste->ste_col_offset = col_offset;
+ ste->ste_end_lineno = end_lineno;
+ ste->ste_end_col_offset = end_col_offset;
+
+ if (st->st_cur != NULL &&
+ (st->st_cur->ste_nested ||
+ _PyST_IsFunctionLike(st->st_cur)))
+ ste->ste_nested = 1;
+ ste->ste_child_free = 0;
+ ste->ste_generator = 0;
+ ste->ste_coroutine = 0;
+ ste->ste_comprehension = NoComprehension;
+ ste->ste_returns_value = 0;
+ ste->ste_needs_class_closure = 0;
+ ste->ste_comp_inlined = 0;
+ ste->ste_comp_iter_target = 0;
+ ste->ste_can_see_class_scope = 0;
+ ste->ste_comp_iter_expr = 0;
+ ste->ste_needs_classdict = 0;
+
+ ste->ste_symbols = PyDict_New();
+ ste->ste_varnames = PyList_New(0);
+ ste->ste_children = PyList_New(0);
+ if (ste->ste_symbols == NULL
+ || ste->ste_varnames == NULL
+ || ste->ste_children == NULL)
+ goto fail;
+
+ if (PyDict_SetItem(st->st_blocks, ste->ste_id, (PyObject *)ste) < 0)
+ goto fail;
+
+ return ste;
+ fail:
+ Py_XDECREF(ste);
+ return NULL;
+}
+
+static PyObject *
+ste_repr(PySTEntryObject *ste)
+{
+ return PyUnicode_FromFormat("<symtable entry %U(%R), line %d>",
+ ste->ste_name, ste->ste_id, ste->ste_lineno);
+}
+
+static void
+ste_dealloc(PySTEntryObject *ste)
+{
+ ste->ste_table = NULL;
+ Py_XDECREF(ste->ste_id);
+ Py_XDECREF(ste->ste_name);
+ Py_XDECREF(ste->ste_symbols);
+ Py_XDECREF(ste->ste_varnames);
+ Py_XDECREF(ste->ste_children);
+ Py_XDECREF(ste->ste_directives);
+ PyObject_Free(ste);
+}
+
+#define OFF(x) offsetof(PySTEntryObject, x)
+
+static PyMemberDef ste_memberlist[] = {
+ {"id", T_OBJECT, OFF(ste_id), READONLY},
+ {"name", T_OBJECT, OFF(ste_name), READONLY},
+ {"symbols", T_OBJECT, OFF(ste_symbols), READONLY},
+ {"varnames", T_OBJECT, OFF(ste_varnames), READONLY},
+ {"children", T_OBJECT, OFF(ste_children), READONLY},
+ {"nested", T_INT, OFF(ste_nested), READONLY},
+ {"type", T_INT, OFF(ste_type), READONLY},
+ {"lineno", T_INT, OFF(ste_lineno), READONLY},
+ {NULL}
+};
+
+PyTypeObject PySTEntry_Type = {
+ PyVarObject_HEAD_INIT(&PyType_Type, 0)
+ "symtable entry",
+ sizeof(PySTEntryObject),
+ 0,
+ (destructor)ste_dealloc, /* tp_dealloc */
+ 0, /* tp_vectorcall_offset */
+ 0, /* tp_getattr */
+ 0, /* tp_setattr */
+ 0, /* tp_as_async */
+ (reprfunc)ste_repr, /* tp_repr */
+ 0, /* tp_as_number */
+ 0, /* tp_as_sequence */
+ 0, /* tp_as_mapping */
+ 0, /* tp_hash */
+ 0, /* tp_call */
+ 0, /* tp_str */
+ PyObject_GenericGetAttr, /* tp_getattro */
+ 0, /* tp_setattro */
+ 0, /* tp_as_buffer */
+ Py_TPFLAGS_DEFAULT, /* tp_flags */
+ 0, /* tp_doc */
+ 0, /* tp_traverse */
+ 0, /* tp_clear */
+ 0, /* tp_richcompare */
+ 0, /* tp_weaklistoffset */
+ 0, /* tp_iter */
+ 0, /* tp_iternext */
+ 0, /* tp_methods */
+ ste_memberlist, /* tp_members */
+ 0, /* tp_getset */
+ 0, /* tp_base */
+ 0, /* tp_dict */
+ 0, /* tp_descr_get */
+ 0, /* tp_descr_set */
+ 0, /* tp_dictoffset */
+ 0, /* tp_init */
+ 0, /* tp_alloc */
+ 0, /* tp_new */
+};
+
+static int symtable_analyze(struct symtable *st);
+static int symtable_enter_block(struct symtable *st, identifier name,
+ _Py_block_ty block, void *ast,
+ int lineno, int col_offset,
+ int end_lineno, int end_col_offset);
+static int symtable_exit_block(struct symtable *st);
+static int symtable_visit_stmt(struct symtable *st, stmt_ty s);
+static int symtable_visit_expr(struct symtable *st, expr_ty s);
+static int symtable_visit_type_param(struct symtable *st, type_param_ty s);
+static int symtable_visit_genexp(struct symtable *st, expr_ty s);
+static int symtable_visit_listcomp(struct symtable *st, expr_ty s);
+static int symtable_visit_setcomp(struct symtable *st, expr_ty s);
+static int symtable_visit_dictcomp(struct symtable *st, expr_ty s);
+static int symtable_visit_arguments(struct symtable *st, arguments_ty);
+static int symtable_visit_excepthandler(struct symtable *st, excepthandler_ty);
+static int symtable_visit_alias(struct symtable *st, alias_ty);
+static int symtable_visit_comprehension(struct symtable *st, comprehension_ty);
+static int symtable_visit_keyword(struct symtable *st, keyword_ty);
+static int symtable_visit_params(struct symtable *st, asdl_arg_seq *args);
+static int symtable_visit_annotation(struct symtable *st, expr_ty annotation);
+static int symtable_visit_argannotations(struct symtable *st, asdl_arg_seq *args);
+static int symtable_implicit_arg(struct symtable *st, int pos);
+static int symtable_visit_annotations(struct symtable *st, stmt_ty, arguments_ty, expr_ty);
+static int symtable_visit_withitem(struct symtable *st, withitem_ty item);
+static int symtable_visit_match_case(struct symtable *st, match_case_ty m);
+static int symtable_visit_pattern(struct symtable *st, pattern_ty s);
+static int symtable_raise_if_annotation_block(struct symtable *st, const char *, expr_ty);
+static int symtable_raise_if_comprehension_block(struct symtable *st, expr_ty);
+
+
+#define DUPLICATE_ARGUMENT \
+"duplicate argument '%U' in function definition"
+
+static struct symtable *
+symtable_new(void)
+{
+ struct symtable *st;
+
+ st = (struct symtable *)PyMem_Malloc(sizeof(struct symtable));
+ if (st == NULL) {
+ PyErr_NoMemory();
+ return NULL;
+ }
+
+ st->st_filename = NULL;
+ st->st_blocks = NULL;
+
+ if ((st->st_stack = PyList_New(0)) == NULL)
+ goto fail;
+ if ((st->st_blocks = PyDict_New()) == NULL)
+ goto fail;
+ st->st_cur = NULL;
+ st->st_private = NULL;
+ return st;
+ fail:
+ _PySymtable_Free(st);
+ return NULL;
+}
+
+/* Using a scaling factor means this should automatically adjust when
+ the recursion limit is adjusted for small or large C stack allocations.
+*/
+#define COMPILER_STACK_FRAME_SCALE 2
+
+struct symtable *
+_PySymtable_Build(mod_ty mod, PyObject *filename, PyFutureFeatures *future)
+{
+ struct symtable *st = symtable_new();
+ asdl_stmt_seq *seq;
+ int i;
+ PyThreadState *tstate;
+ int starting_recursion_depth;
+
+ if (st == NULL)
+ return NULL;
+ if (filename == NULL) {
+ _PySymtable_Free(st);
+ return NULL;
+ }
+ st->st_filename = Py_NewRef(filename);
+ st->st_future = future;
+
+ /* Setup recursion depth check counters */
+ tstate = _PyThreadState_GET();
+ if (!tstate) {
+ _PySymtable_Free(st);
+ return NULL;
+ }
+ /* Be careful here to prevent overflow. */
+ int recursion_depth = C_RECURSION_LIMIT - tstate->c_recursion_remaining;
+ starting_recursion_depth = recursion_depth * COMPILER_STACK_FRAME_SCALE;
+ st->recursion_depth = starting_recursion_depth;
+ st->recursion_limit = C_RECURSION_LIMIT * COMPILER_STACK_FRAME_SCALE;
+
+ /* Make the initial symbol information gathering pass */
+ if (!symtable_enter_block(st, &_Py_ID(top), ModuleBlock, (void *)mod, 0, 0, 0, 0)) {
+ _PySymtable_Free(st);
+ return NULL;
+ }
+
+ st->st_top = st->st_cur;
+ switch (mod->kind) {
+ case Module_kind:
+ seq = mod->v.Module.body;
+ for (i = 0; i < asdl_seq_LEN(seq); i++)
+ if (!symtable_visit_stmt(st,
+ (stmt_ty)asdl_seq_GET(seq, i)))
+ goto error;
+ break;
+ case Expression_kind:
+ if (!symtable_visit_expr(st, mod->v.Expression.body))
+ goto error;
+ break;
+ case Interactive_kind:
+ seq = mod->v.Interactive.body;
+ for (i = 0; i < asdl_seq_LEN(seq); i++)
+ if (!symtable_visit_stmt(st,
+ (stmt_ty)asdl_seq_GET(seq, i)))
+ goto error;
+ break;
+ case FunctionType_kind:
+ PyErr_SetString(PyExc_RuntimeError,
+ "this compiler does not handle FunctionTypes");
+ goto error;
+ }
+ if (!symtable_exit_block(st)) {
+ _PySymtable_Free(st);
+ return NULL;
+ }
+ /* Check that the recursion depth counting balanced correctly */
+ if (st->recursion_depth != starting_recursion_depth) {
+ PyErr_Format(PyExc_SystemError,
+ "symtable analysis recursion depth mismatch (before=%d, after=%d)",
+ starting_recursion_depth, st->recursion_depth);
+ _PySymtable_Free(st);
+ return NULL;
+ }
+ /* Make the second symbol analysis pass */
+ if (symtable_analyze(st))
+ return st;
+ _PySymtable_Free(st);
+ return NULL;
+ error:
+ (void) symtable_exit_block(st);
+ _PySymtable_Free(st);
+ return NULL;
+}
+
+
+void
+_PySymtable_Free(struct symtable *st)
+{
+ Py_XDECREF(st->st_filename);
+ Py_XDECREF(st->st_blocks);
+ Py_XDECREF(st->st_stack);
+ PyMem_Free((void *)st);
+}
+
+PySTEntryObject *
+PySymtable_Lookup(struct symtable *st, void *key)
+{
+ PyObject *k, *v;
+
+ k = PyLong_FromVoidPtr(key);
+ if (k == NULL)
+ return NULL;
+ v = PyDict_GetItemWithError(st->st_blocks, k);
+ Py_DECREF(k);
+
+ if (v) {
+ assert(PySTEntry_Check(v));
+ }
+ else if (!PyErr_Occurred()) {
+ PyErr_SetString(PyExc_KeyError,
+ "unknown symbol table entry");
+ }
+
+ return (PySTEntryObject *)Py_XNewRef(v);
+}
+
+long
+_PyST_GetSymbol(PySTEntryObject *ste, PyObject *name)
+{
+ PyObject *v = PyDict_GetItemWithError(ste->ste_symbols, name);
+ if (!v)
+ return 0;
+ assert(PyLong_Check(v));
+ return PyLong_AS_LONG(v);
+}
+
+int
+_PyST_GetScope(PySTEntryObject *ste, PyObject *name)
+{
+ long symbol = _PyST_GetSymbol(ste, name);
+ return (symbol >> SCOPE_OFFSET) & SCOPE_MASK;
+}
+
+int
+_PyST_IsFunctionLike(PySTEntryObject *ste)
+{
+ return ste->ste_type == FunctionBlock
+ || ste->ste_type == TypeVarBoundBlock
+ || ste->ste_type == TypeAliasBlock
+ || ste->ste_type == TypeParamBlock;
+}
+
+static int
+error_at_directive(PySTEntryObject *ste, PyObject *name)
+{
+ Py_ssize_t i;
+ PyObject *data;
+ assert(ste->ste_directives);
+ for (i = 0; i < PyList_GET_SIZE(ste->ste_directives); i++) {
+ data = PyList_GET_ITEM(ste->ste_directives, i);
+ assert(PyTuple_CheckExact(data));
+ assert(PyUnicode_CheckExact(PyTuple_GET_ITEM(data, 0)));
+ if (PyUnicode_Compare(PyTuple_GET_ITEM(data, 0), name) == 0) {
+ PyErr_RangedSyntaxLocationObject(ste->ste_table->st_filename,
+ PyLong_AsLong(PyTuple_GET_ITEM(data, 1)),
+ PyLong_AsLong(PyTuple_GET_ITEM(data, 2)) + 1,
+ PyLong_AsLong(PyTuple_GET_ITEM(data, 3)),
+ PyLong_AsLong(PyTuple_GET_ITEM(data, 4)) + 1);
+
+ return 0;
+ }
+ }
+ PyErr_SetString(PyExc_RuntimeError,
+ "BUG: internal directive bookkeeping broken");
+ return 0;
+}
+
+
+/* Analyze raw symbol information to determine scope of each name.
+
+ The next several functions are helpers for symtable_analyze(),
+ which determines whether a name is local, global, or free. In addition,
+ it determines which local variables are cell variables; they provide
+ bindings that are used for free variables in enclosed blocks.
+
+ There are also two kinds of global variables, implicit and explicit. An
+ explicit global is declared with the global statement. An implicit
+ global is a free variable for which the compiler has found no binding
+ in an enclosing function scope. The implicit global is either a global
+ or a builtin. Python's module and class blocks use the xxx_NAME opcodes
+ to handle these names to implement slightly odd semantics. In such a
+ block, the name is treated as global until it is assigned to; then it
+ is treated as a local.
+
+ The symbol table requires two passes to determine the scope of each name.
+ The first pass collects raw facts from the AST via the symtable_visit_*
+ functions: the name is a parameter here, the name is used but not defined
+ here, etc. The second pass analyzes these facts during a pass over the
+ PySTEntryObjects created during pass 1.
+
+ When a function is entered during the second pass, the parent passes
+ the set of all name bindings visible to its children. These bindings
+ are used to determine if non-local variables are free or implicit globals.
+ Names which are explicitly declared nonlocal must exist in this set of
+ visible names - if they do not, a syntax error is raised. After doing
+ the local analysis, it analyzes each of its child blocks using an
+ updated set of name bindings.
+
+ The children update the free variable set. If a local variable is added to
+ the free variable set by the child, the variable is marked as a cell. The
+ function object being defined must provide runtime storage for the variable
+ that may outlive the function's frame. Cell variables are removed from the
+ free set before the analyze function returns to its parent.
+
+ During analysis, the names are:
+ symbols: dict mapping from symbol names to flag values (including offset scope values)
+ scopes: dict mapping from symbol names to scope values (no offset)
+ local: set of all symbol names local to the current scope
+ bound: set of all symbol names local to a containing function scope
+ free: set of all symbol names referenced but not bound in child scopes
+ global: set of all symbol names explicitly declared as global
+*/
+
+#define SET_SCOPE(DICT, NAME, I) { \
+ PyObject *o = PyLong_FromLong(I); \
+ if (!o) \
+ return 0; \
+ if (PyDict_SetItem((DICT), (NAME), o) < 0) { \
+ Py_DECREF(o); \
+ return 0; \
+ } \
+ Py_DECREF(o); \
+}
+
+/* Decide on scope of name, given flags.
+
+ The namespace dictionaries may be modified to record information
+ about the new name. For example, a new global will add an entry to
+ global. A name that was global can be changed to local.
+*/
+
+static int
+analyze_name(PySTEntryObject *ste, PyObject *scopes, PyObject *name, long flags,
+ PyObject *bound, PyObject *local, PyObject *free,
+ PyObject *global, PyObject *type_params, PySTEntryObject *class_entry)
+{
+ int contains;
+ if (flags & DEF_GLOBAL) {
+ if (flags & DEF_NONLOCAL) {
+ PyErr_Format(PyExc_SyntaxError,
+ "name '%U' is nonlocal and global",
+ name);
+ return error_at_directive(ste, name);
+ }
+ SET_SCOPE(scopes, name, GLOBAL_EXPLICIT);
+ if (PySet_Add(global, name) < 0)
+ return 0;
+ if (bound && (PySet_Discard(bound, name) < 0))
+ return 0;
+ return 1;
+ }
+ if (flags & DEF_NONLOCAL) {
+ if (!bound) {
+ PyErr_Format(PyExc_SyntaxError,
+ "nonlocal declaration not allowed at module level");
+ return error_at_directive(ste, name);
+ }
+ contains = PySet_Contains(bound, name);
+ if (contains < 0) {
+ return 0;
+ }
+ if (!contains) {
+ PyErr_Format(PyExc_SyntaxError,
+ "no binding for nonlocal '%U' found",
+ name);
+
+ return error_at_directive(ste, name);
+ }
+ contains = PySet_Contains(type_params, name);
+ if (contains < 0) {
+ return 0;
+ }
+ if (contains) {
+ PyErr_Format(PyExc_SyntaxError,
+ "nonlocal binding not allowed for type parameter '%U'",
+ name);
+ return error_at_directive(ste, name);
+ }
+ SET_SCOPE(scopes, name, FREE);
+ ste->ste_free = 1;
+ return PySet_Add(free, name) >= 0;
+ }
+ if (flags & DEF_BOUND) {
+ SET_SCOPE(scopes, name, LOCAL);
+ if (PySet_Add(local, name) < 0)
+ return 0;
+ if (PySet_Discard(global, name) < 0)
+ return 0;
+ if (flags & DEF_TYPE_PARAM) {
+ if (PySet_Add(type_params, name) < 0)
+ return 0;
+ }
+ else {
+ if (PySet_Discard(type_params, name) < 0)
+ return 0;
+ }
+ return 1;
+ }
+ // If we were passed class_entry (i.e., we're in an ste_can_see_class_scope scope)
+ // and the bound name is in that set, then the name is potentially bound both by
+ // the immediately enclosing class namespace, and also by an outer function namespace.
+ // In that case, we want the runtime name resolution to look at only the class
+ // namespace and the globals (not the namespace providing the bound).
+ // Similarly, if the name is explicitly global in the class namespace (through the
+ // global statement), we want to also treat it as a global in this scope.
+ if (class_entry != NULL) {
+ long class_flags = _PyST_GetSymbol(class_entry, name);
+ if (class_flags & DEF_GLOBAL) {
+ SET_SCOPE(scopes, name, GLOBAL_EXPLICIT);
+ return 1;
+ }
+ else if (class_flags & DEF_BOUND && !(class_flags & DEF_NONLOCAL)) {
+ SET_SCOPE(scopes, name, GLOBAL_IMPLICIT);
+ return 1;
+ }
+ }
+ /* If an enclosing block has a binding for this name, it
+ is a free variable rather than a global variable.
+ Note that having a non-NULL bound implies that the block
+ is nested.
+ */
+ if (bound) {
+ contains = PySet_Contains(bound, name);
+ if (contains < 0) {
+ return 0;
+ }
+ if (contains) {
+ SET_SCOPE(scopes, name, FREE);
+ ste->ste_free = 1;
+ return PySet_Add(free, name) >= 0;
+ }
+ }
+ /* If a parent has a global statement, then call it global
+ explicit? It could also be global implicit.
+ */
+ if (global) {
+ contains = PySet_Contains(global, name);
+ if (contains < 0) {
+ return 0;
+ }
+ if (contains) {
+ SET_SCOPE(scopes, name, GLOBAL_IMPLICIT);
+ return 1;
+ }
+ }
+ if (ste->ste_nested)
+ ste->ste_free = 1;
+ SET_SCOPE(scopes, name, GLOBAL_IMPLICIT);
+ return 1;
+}
+
+static int
+is_free_in_any_child(PySTEntryObject *entry, PyObject *key)
+{
+ for (Py_ssize_t i = 0; i < PyList_GET_SIZE(entry->ste_children); i++) {
+ PySTEntryObject *child_ste = (PySTEntryObject *)PyList_GET_ITEM(
+ entry->ste_children, i);
+ long scope = _PyST_GetScope(child_ste, key);
+ if (scope == FREE) {
+ return 1;
+ }
+ }
+ return 0;
+}
+
+static int
+inline_comprehension(PySTEntryObject *ste, PySTEntryObject *comp,
+ PyObject *scopes, PyObject *comp_free,
+ PyObject *inlined_cells)
+{
+ PyObject *k, *v;
+ Py_ssize_t pos = 0;
+ while (PyDict_Next(comp->ste_symbols, &pos, &k, &v)) {
+ // skip comprehension parameter
+ long comp_flags = PyLong_AS_LONG(v);
+ if (comp_flags & DEF_PARAM) {
+ assert(_PyUnicode_EqualToASCIIString(k, ".0"));
+ continue;
+ }
+ int scope = (comp_flags >> SCOPE_OFFSET) & SCOPE_MASK;
+ int only_flags = comp_flags & ((1 << SCOPE_OFFSET) - 1);
+ if (scope == CELL || only_flags & DEF_COMP_CELL) {
+ if (PySet_Add(inlined_cells, k) < 0) {
+ return 0;
+ }
+ }
+ PyObject *existing = PyDict_GetItemWithError(ste->ste_symbols, k);
+ if (existing == NULL && PyErr_Occurred()) {
+ return 0;
+ }
+ if (!existing) {
+ // name does not exist in scope, copy from comprehension
+ assert(scope != FREE || PySet_Contains(comp_free, k) == 1);
+ PyObject *v_flags = PyLong_FromLong(only_flags);
+ if (v_flags == NULL) {
+ return 0;
+ }
+ int ok = PyDict_SetItem(ste->ste_symbols, k, v_flags);
+ Py_DECREF(v_flags);
+ if (ok < 0) {
+ return 0;
+ }
+ SET_SCOPE(scopes, k, scope);
+ }
+ else {
+ if (PyLong_AsLong(existing) & DEF_BOUND) {
+ // free vars in comprehension that are locals in outer scope can
+ // now simply be locals, unless they are free in comp children,
+ // or if the outer scope is a class block
+ if (!is_free_in_any_child(comp, k) && ste->ste_type != ClassBlock) {
+ if (PySet_Discard(comp_free, k) < 0) {
+ return 0;
+ }
+ }
+ }
+ }
+ }
+ return 1;
+}
+
+#undef SET_SCOPE
+
+/* If a name is defined in free and also in locals, then this block
+ provides the binding for the free variable. The name should be
+ marked CELL in this block and removed from the free list.
+
+ Note that the current block's free variables are included in free.
+ That's safe because no name can be free and local in the same scope.
+*/
+
+static int
+analyze_cells(PyObject *scopes, PyObject *free, PyObject *inlined_cells)
+{
+ PyObject *name, *v, *v_cell;
+ int success = 0;
+ Py_ssize_t pos = 0;
+
+ v_cell = PyLong_FromLong(CELL);
+ if (!v_cell)
+ return 0;
+ while (PyDict_Next(scopes, &pos, &name, &v)) {
+ long scope;
+ assert(PyLong_Check(v));
+ scope = PyLong_AS_LONG(v);
+ if (scope != LOCAL)
+ continue;
+ int contains = PySet_Contains(free, name);
+ if (contains < 0) {
+ goto error;
+ }
+ if (!contains) {
+ contains = PySet_Contains(inlined_cells, name);
+ if (contains < 0) {
+ goto error;
+ }
+ if (!contains) {
+ continue;
+ }
+ }
+ /* Replace LOCAL with CELL for this name, and remove
+ from free. It is safe to replace the value of name
+ in the dict, because it will not cause a resize.
+ */
+ if (PyDict_SetItem(scopes, name, v_cell) < 0)
+ goto error;
+ if (PySet_Discard(free, name) < 0)
+ goto error;
+ }
+ success = 1;
+ error:
+ Py_DECREF(v_cell);
+ return success;
+}
+
+static int
+drop_class_free(PySTEntryObject *ste, PyObject *free)
+{
+ int res;
+ res = PySet_Discard(free, &_Py_ID(__class__));
+ if (res < 0)
+ return 0;
+ if (res)
+ ste->ste_needs_class_closure = 1;
+ res = PySet_Discard(free, &_Py_ID(__classdict__));
+ if (res < 0)
+ return 0;
+ if (res)
+ ste->ste_needs_classdict = 1;
+ return 1;
+}
+
+/* Enter the final scope information into the ste_symbols dict.
+ *
+ * All arguments are dicts. Modifies symbols, others are read-only.
+*/
+static int
+update_symbols(PyObject *symbols, PyObject *scopes,
+ PyObject *bound, PyObject *free,
+ PyObject *inlined_cells, int classflag)
+{
+ PyObject *name = NULL, *itr = NULL;
+ PyObject *v = NULL, *v_scope = NULL, *v_new = NULL, *v_free = NULL;
+ Py_ssize_t pos = 0;
+
+ /* Update scope information for all symbols in this scope */
+ while (PyDict_Next(symbols, &pos, &name, &v)) {
+ long scope, flags;
+ assert(PyLong_Check(v));
+ flags = PyLong_AS_LONG(v);
+ int contains = PySet_Contains(inlined_cells, name);
+ if (contains < 0) {
+ return 0;
+ }
+ if (contains) {
+ flags |= DEF_COMP_CELL;
+ }
+ v_scope = PyDict_GetItemWithError(scopes, name);
+ assert(v_scope && PyLong_Check(v_scope));
+ scope = PyLong_AS_LONG(v_scope);
+ flags |= (scope << SCOPE_OFFSET);
+ v_new = PyLong_FromLong(flags);
+ if (!v_new)
+ return 0;
+ if (PyDict_SetItem(symbols, name, v_new) < 0) {
+ Py_DECREF(v_new);
+ return 0;
+ }
+ Py_DECREF(v_new);
+ }
+
+ /* Record not yet resolved free variables from children (if any) */
+ v_free = PyLong_FromLong(FREE << SCOPE_OFFSET);
+ if (!v_free)
+ return 0;
+
+ itr = PyObject_GetIter(free);
+ if (itr == NULL) {
+ Py_DECREF(v_free);
+ return 0;
+ }
+
+ while ((name = PyIter_Next(itr))) {
+ v = PyDict_GetItemWithError(symbols, name);
+
+ /* Handle symbol that already exists in this scope */
+ if (v) {
+ /* Handle a free variable in a method of
+ the class that has the same name as a local
+ or global in the class scope.
+ */
+ if (classflag) {
+ long flags = PyLong_AS_LONG(v) | DEF_FREE_CLASS;
+ v_new = PyLong_FromLong(flags);
+ if (!v_new) {
+ goto error;
+ }
+ if (PyDict_SetItem(symbols, name, v_new) < 0) {
+ Py_DECREF(v_new);
+ goto error;
+ }
+ Py_DECREF(v_new);
+ }
+ /* It's a cell, or already free in this scope */
+ Py_DECREF(name);
+ continue;
+ }
+ else if (PyErr_Occurred()) {
+ goto error;
+ }
+ /* Handle global symbol */
+ if (bound) {
+ int contains = PySet_Contains(bound, name);
+ if (contains < 0) {
+ goto error;
+ }
+ if (!contains) {
+ Py_DECREF(name);
+ continue; /* it's a global */
+ }
+ }
+ /* Propagate new free symbol up the lexical stack */
+ if (PyDict_SetItem(symbols, name, v_free) < 0) {
+ goto error;
+ }
+ Py_DECREF(name);
+ }
+
+ /* Check if loop ended because of exception in PyIter_Next */
+ if (PyErr_Occurred()) {
+ goto error;
+ }
+
+ Py_DECREF(itr);
+ Py_DECREF(v_free);
+ return 1;
+error:
+ Py_XDECREF(v_free);
+ Py_XDECREF(itr);
+ Py_XDECREF(name);
+ return 0;
+}
+
+/* Make final symbol table decisions for block of ste.
+
+ Arguments:
+ ste -- current symtable entry (input/output)
+ bound -- set of variables bound in enclosing scopes (input). bound
+ is NULL for module blocks.
+ free -- set of free variables in enclosed scopes (output)
+ globals -- set of declared global variables in enclosing scopes (input)
+
+ The implementation uses two mutually recursive functions,
+ analyze_block() and analyze_child_block(). analyze_block() is
+ responsible for analyzing the individual names defined in a block.
+ analyze_child_block() prepares temporary namespace dictionaries
+ used to evaluated nested blocks.
+
+ The two functions exist because a child block should see the name
+ bindings of its enclosing blocks, but those bindings should not
+ propagate back to a parent block.
+*/
+
+static int
+analyze_child_block(PySTEntryObject *entry, PyObject *bound, PyObject *free,
+ PyObject *global, PyObject *type_params,
+ PySTEntryObject *class_entry, PyObject **child_free);
+
+static int
+analyze_block(PySTEntryObject *ste, PyObject *bound, PyObject *free,
+ PyObject *global, PyObject *type_params,
+ PySTEntryObject *class_entry)
+{
+ PyObject *name, *v, *local = NULL, *scopes = NULL, *newbound = NULL;
+ PyObject *newglobal = NULL, *newfree = NULL, *inlined_cells = NULL;
+ PyObject *temp;
+ int success = 0;
+ Py_ssize_t i, pos = 0;
+
+ local = PySet_New(NULL); /* collect new names bound in block */
+ if (!local)
+ goto error;
+ scopes = PyDict_New(); /* collect scopes defined for each name */
+ if (!scopes)
+ goto error;
+
+ /* Allocate new global, bound and free variable sets. These
+ sets hold the names visible in nested blocks. For
+ ClassBlocks, the bound and global names are initialized
+ before analyzing names, because class bindings aren't
+ visible in methods. For other blocks, they are initialized
+ after names are analyzed.
+ */
+
+ /* TODO(jhylton): Package these dicts in a struct so that we
+ can write reasonable helper functions?
+ */
+ newglobal = PySet_New(NULL);
+ if (!newglobal)
+ goto error;
+ newfree = PySet_New(NULL);
+ if (!newfree)
+ goto error;
+ newbound = PySet_New(NULL);
+ if (!newbound)
+ goto error;
+ inlined_cells = PySet_New(NULL);
+ if (!inlined_cells)
+ goto error;
+
+ /* Class namespace has no effect on names visible in
+ nested functions, so populate the global and bound
+ sets to be passed to child blocks before analyzing
+ this one.
+ */
+ if (ste->ste_type == ClassBlock) {
+ /* Pass down known globals */
+ temp = PyNumber_InPlaceOr(newglobal, global);
+ if (!temp)
+ goto error;
+ Py_DECREF(temp);
+ /* Pass down previously bound symbols */
+ if (bound) {
+ temp = PyNumber_InPlaceOr(newbound, bound);
+ if (!temp)
+ goto error;
+ Py_DECREF(temp);
+ }
+ }
+
+ while (PyDict_Next(ste->ste_symbols, &pos, &name, &v)) {
+ long flags = PyLong_AS_LONG(v);
+ if (!analyze_name(ste, scopes, name, flags,
+ bound, local, free, global, type_params, class_entry))
+ goto error;
+ }
+
+ /* Populate global and bound sets to be passed to children. */
+ if (ste->ste_type != ClassBlock) {
+ /* Add function locals to bound set */
+ if (_PyST_IsFunctionLike(ste)) {
+ temp = PyNumber_InPlaceOr(newbound, local);
+ if (!temp)
+ goto error;
+ Py_DECREF(temp);
+ }
+ /* Pass down previously bound symbols */
+ if (bound) {
+ temp = PyNumber_InPlaceOr(newbound, bound);
+ if (!temp)
+ goto error;
+ Py_DECREF(temp);
+ }
+ /* Pass down known globals */
+ temp = PyNumber_InPlaceOr(newglobal, global);
+ if (!temp)
+ goto error;
+ Py_DECREF(temp);
+ }
+ else {
+ /* Special-case __class__ and __classdict__ */
+ if (PySet_Add(newbound, &_Py_ID(__class__)) < 0)
+ goto error;
+ if (PySet_Add(newbound, &_Py_ID(__classdict__)) < 0)
+ goto error;
+ }
+
+ /* Recursively call analyze_child_block() on each child block.
+
+ newbound, newglobal now contain the names visible in
+ nested blocks. The free variables in the children will
+ be added to newfree.
+ */
+ for (i = 0; i < PyList_GET_SIZE(ste->ste_children); ++i) {
+ PyObject *child_free = NULL;
+ PyObject *c = PyList_GET_ITEM(ste->ste_children, i);
+ PySTEntryObject* entry;
+ assert(c && PySTEntry_Check(c));
+ entry = (PySTEntryObject*)c;
+
+ PySTEntryObject *new_class_entry = NULL;
+ if (entry->ste_can_see_class_scope) {
+ if (ste->ste_type == ClassBlock) {
+ new_class_entry = ste;
+ }
+ else if (class_entry) {
+ new_class_entry = class_entry;
+ }
+ }
+
+ // we inline all non-generator-expression comprehensions
+ int inline_comp =
+ entry->ste_comprehension &&
+ !entry->ste_generator;
+
+ if (!analyze_child_block(entry, newbound, newfree, newglobal,
+ type_params, new_class_entry, &child_free))
+ {
+ goto error;
+ }
+ if (inline_comp) {
+ if (!inline_comprehension(ste, entry, scopes, child_free, inlined_cells)) {
+ Py_DECREF(child_free);
+ goto error;
+ }
+ entry->ste_comp_inlined = 1;
+ }
+ temp = PyNumber_InPlaceOr(newfree, child_free);
+ Py_DECREF(child_free);
+ if (!temp)
+ goto error;
+ Py_DECREF(temp);
+ /* Check if any children have free variables */
+ if (entry->ste_free || entry->ste_child_free)
+ ste->ste_child_free = 1;
+ }
+
+ /* Splice children of inlined comprehensions into our children list */
+ for (i = PyList_GET_SIZE(ste->ste_children) - 1; i >= 0; --i) {
+ PyObject* c = PyList_GET_ITEM(ste->ste_children, i);
+ PySTEntryObject* entry;
+ assert(c && PySTEntry_Check(c));
+ entry = (PySTEntryObject*)c;
+ if (entry->ste_comp_inlined &&
+ PyList_SetSlice(ste->ste_children, i, i + 1,
+ entry->ste_children) < 0)
+ {
+ goto error;
+ }
+ }
+
+ /* Check if any local variables must be converted to cell variables */
+ if (_PyST_IsFunctionLike(ste) && !analyze_cells(scopes, newfree, inlined_cells))
+ goto error;
+ else if (ste->ste_type == ClassBlock && !drop_class_free(ste, newfree))
+ goto error;
+ /* Records the results of the analysis in the symbol table entry */
+ if (!update_symbols(ste->ste_symbols, scopes, bound, newfree, inlined_cells,
+ (ste->ste_type == ClassBlock) || ste->ste_can_see_class_scope))
+ goto error;
+
+ temp = PyNumber_InPlaceOr(free, newfree);
+ if (!temp)
+ goto error;
+ Py_DECREF(temp);
+ success = 1;
+ error:
+ Py_XDECREF(scopes);
+ Py_XDECREF(local);
+ Py_XDECREF(newbound);
+ Py_XDECREF(newglobal);
+ Py_XDECREF(newfree);
+ Py_XDECREF(inlined_cells);
+ if (!success)
+ assert(PyErr_Occurred());
+ return success;
+}
+
+static int
+analyze_child_block(PySTEntryObject *entry, PyObject *bound, PyObject *free,
+ PyObject *global, PyObject *type_params,
+ PySTEntryObject *class_entry, PyObject** child_free)
+{
+ PyObject *temp_bound = NULL, *temp_global = NULL, *temp_free = NULL;
+ PyObject *temp_type_params = NULL;
+
+ /* Copy the bound/global/free sets.
+
+ These sets are used by all blocks enclosed by the
+ current block. The analyze_block() call modifies these
+ sets.
+
+ */
+ temp_bound = PySet_New(bound);
+ if (!temp_bound)
+ goto error;
+ temp_free = PySet_New(free);
+ if (!temp_free)
+ goto error;
+ temp_global = PySet_New(global);
+ if (!temp_global)
+ goto error;
+ temp_type_params = PySet_New(type_params);
+ if (!temp_type_params)
+ goto error;
+
+ if (!analyze_block(entry, temp_bound, temp_free, temp_global,
+ temp_type_params, class_entry))
+ goto error;
+ *child_free = temp_free;
+ Py_DECREF(temp_bound);
+ Py_DECREF(temp_global);
+ Py_DECREF(temp_type_params);
+ return 1;
+ error:
+ Py_XDECREF(temp_bound);
+ Py_XDECREF(temp_free);
+ Py_XDECREF(temp_global);
+ Py_XDECREF(temp_type_params);
+ return 0;
+}
+
+static int
+symtable_analyze(struct symtable *st)
+{
+ PyObject *free, *global, *type_params;
+ int r;
+
+ free = PySet_New(NULL);
+ if (!free)
+ return 0;
+ global = PySet_New(NULL);
+ if (!global) {
+ Py_DECREF(free);
+ return 0;
+ }
+ type_params = PySet_New(NULL);
+ if (!type_params) {
+ Py_DECREF(free);
+ Py_DECREF(global);
+ return 0;
+ }
+ r = analyze_block(st->st_top, NULL, free, global, type_params, NULL);
+ Py_DECREF(free);
+ Py_DECREF(global);
+ Py_DECREF(type_params);
+ return r;
+}
+
+/* symtable_enter_block() gets a reference via ste_new.
+ This reference is released when the block is exited, via the DECREF
+ in symtable_exit_block().
+*/
+
+static int
+symtable_exit_block(struct symtable *st)
+{
+ Py_ssize_t size;
+
+ st->st_cur = NULL;
+ size = PyList_GET_SIZE(st->st_stack);
+ if (size) {
+ if (PyList_SetSlice(st->st_stack, size - 1, size, NULL) < 0)
+ return 0;
+ if (--size)
+ st->st_cur = (PySTEntryObject *)PyList_GET_ITEM(st->st_stack, size - 1);
+ }
+ return 1;
+}
+
+static int
+symtable_enter_block(struct symtable *st, identifier name, _Py_block_ty block,
+ void *ast, int lineno, int col_offset,
+ int end_lineno, int end_col_offset)
+{
+ PySTEntryObject *prev = NULL, *ste;
+
+ ste = ste_new(st, name, block, ast, lineno, col_offset, end_lineno, end_col_offset);
+ if (ste == NULL)
+ return 0;
+ if (PyList_Append(st->st_stack, (PyObject *)ste) < 0) {
+ Py_DECREF(ste);
+ return 0;
+ }
+ prev = st->st_cur;
+ /* bpo-37757: For now, disallow *all* assignment expressions in the
+ * outermost iterator expression of a comprehension, even those inside
+ * a nested comprehension or a lambda expression.
+ */
+ if (prev) {
+ ste->ste_comp_iter_expr = prev->ste_comp_iter_expr;
+ }
+ /* The entry is owned by the stack. Borrow it for st_cur. */
+ Py_DECREF(ste);
+ st->st_cur = ste;
+
+ /* Annotation blocks shouldn't have any affect on the symbol table since in
+ * the compilation stage, they will all be transformed to strings. They are
+ * only created if future 'annotations' feature is activated. */
+ if (block == AnnotationBlock) {
+ return 1;
+ }
+
+ if (block == ModuleBlock)
+ st->st_global = st->st_cur->ste_symbols;
+
+ if (prev) {
+ if (PyList_Append(prev->ste_children, (PyObject *)ste) < 0) {
+ return 0;
+ }
+ }
+ return 1;
+}
+
+static long
+symtable_lookup(struct symtable *st, PyObject *name)
+{
+ PyObject *mangled = _Py_Mangle(st->st_private, name);
+ if (!mangled)
+ return 0;
+ long ret = _PyST_GetSymbol(st->st_cur, mangled);
+ Py_DECREF(mangled);
+ return ret;
+}
+
+static int
+symtable_add_def_helper(struct symtable *st, PyObject *name, int flag, struct _symtable_entry *ste,
+ int lineno, int col_offset, int end_lineno, int end_col_offset)
+{
+ PyObject *o;
+ PyObject *dict;
+ long val;
+ PyObject *mangled = _Py_Mangle(st->st_private, name);
+
+
+ if (!mangled)
+ return 0;
+ dict = ste->ste_symbols;
+ if ((o = PyDict_GetItemWithError(dict, mangled))) {
+ val = PyLong_AS_LONG(o);
+ if ((flag & DEF_PARAM) && (val & DEF_PARAM)) {
+ /* Is it better to use 'mangled' or 'name' here? */
+ PyErr_Format(PyExc_SyntaxError, DUPLICATE_ARGUMENT, name);
+ PyErr_RangedSyntaxLocationObject(st->st_filename,
+ lineno, col_offset + 1,
+ end_lineno, end_col_offset + 1);
+ goto error;
+ }
+ if ((flag & DEF_TYPE_PARAM) && (val & DEF_TYPE_PARAM)) {
+ PyErr_Format(PyExc_SyntaxError, DUPLICATE_TYPE_PARAM, name);
+ PyErr_RangedSyntaxLocationObject(st->st_filename,
+ lineno, col_offset + 1,
+ end_lineno, end_col_offset + 1);
+ goto error;
+ }
+ val |= flag;
+ }
+ else if (PyErr_Occurred()) {
+ goto error;
+ }
+ else {
+ val = flag;
+ }
+ if (ste->ste_comp_iter_target) {
+ /* This name is an iteration variable in a comprehension,
+ * so check for a binding conflict with any named expressions.
+ * Otherwise, mark it as an iteration variable so subsequent
+ * named expressions can check for conflicts.
+ */
+ if (val & (DEF_GLOBAL | DEF_NONLOCAL)) {
+ PyErr_Format(PyExc_SyntaxError,
+ NAMED_EXPR_COMP_INNER_LOOP_CONFLICT, name);
+ PyErr_RangedSyntaxLocationObject(st->st_filename,
+ lineno, col_offset + 1,
+ end_lineno, end_col_offset + 1);
+ goto error;
+ }
+ val |= DEF_COMP_ITER;
+ }
+ o = PyLong_FromLong(val);
+ if (o == NULL)
+ goto error;
+ if (PyDict_SetItem(dict, mangled, o) < 0) {
+ Py_DECREF(o);
+ goto error;
+ }
+ Py_DECREF(o);
+
+ if (flag & DEF_PARAM) {
+ if (PyList_Append(ste->ste_varnames, mangled) < 0)
+ goto error;
+ } else if (flag & DEF_GLOBAL) {
+ /* XXX need to update DEF_GLOBAL for other flags too;
+ perhaps only DEF_FREE_GLOBAL */
+ val = flag;
+ if ((o = PyDict_GetItemWithError(st->st_global, mangled))) {
+ val |= PyLong_AS_LONG(o);
+ }
+ else if (PyErr_Occurred()) {
+ goto error;
+ }
+ o = PyLong_FromLong(val);
+ if (o == NULL)
+ goto error;
+ if (PyDict_SetItem(st->st_global, mangled, o) < 0) {
+ Py_DECREF(o);
+ goto error;
+ }
+ Py_DECREF(o);
+ }
+ Py_DECREF(mangled);
+ return 1;
+
+error:
+ Py_DECREF(mangled);
+ return 0;
+}
+
+static int
+symtable_add_def(struct symtable *st, PyObject *name, int flag,
+ int lineno, int col_offset, int end_lineno, int end_col_offset)
+{
+ return symtable_add_def_helper(st, name, flag, st->st_cur,
+ lineno, col_offset, end_lineno, end_col_offset);
+}
+
+static int
+symtable_enter_type_param_block(struct symtable *st, identifier name,
+ void *ast, int has_defaults, int has_kwdefaults,
+ enum _stmt_kind kind,
+ int lineno, int col_offset,
+ int end_lineno, int end_col_offset)
+{
+ _Py_block_ty current_type = st->st_cur->ste_type;
+ if(!symtable_enter_block(st, name, TypeParamBlock, ast, lineno,
+ col_offset, end_lineno, end_col_offset)) {
+ return 0;
+ }
+ if (current_type == ClassBlock) {
+ st->st_cur->ste_can_see_class_scope = 1;
+ if (!symtable_add_def(st, &_Py_ID(__classdict__), USE, lineno, col_offset, end_lineno, end_col_offset)) {
+ return 0;
+ }
+ }
+ if (kind == ClassDef_kind) {
+ _Py_DECLARE_STR(type_params, ".type_params");
+ // It gets "set" when we create the type params tuple and
+ // "used" when we build up the bases.
+ if (!symtable_add_def(st, &_Py_STR(type_params), DEF_LOCAL,
+ lineno, col_offset, end_lineno, end_col_offset)) {
+ return 0;
+ }
+ if (!symtable_add_def(st, &_Py_STR(type_params), USE,
+ lineno, col_offset, end_lineno, end_col_offset)) {
+ return 0;
+ }
+ st->st_private = name;
+ // This is used for setting the generic base
+ _Py_DECLARE_STR(generic_base, ".generic_base");
+ if (!symtable_add_def(st, &_Py_STR(generic_base), DEF_LOCAL,
+ lineno, col_offset, end_lineno, end_col_offset)) {
+ return 0;
+ }
+ if (!symtable_add_def(st, &_Py_STR(generic_base), USE,
+ lineno, col_offset, end_lineno, end_col_offset)) {
+ return 0;
+ }
+ }
+ if (has_defaults) {
+ _Py_DECLARE_STR(defaults, ".defaults");
+ if (!symtable_add_def(st, &_Py_STR(defaults), DEF_PARAM,
+ lineno, col_offset, end_lineno, end_col_offset)) {
+ return 0;
+ }
+ }
+ if (has_kwdefaults) {
+ _Py_DECLARE_STR(kwdefaults, ".kwdefaults");
+ if (!symtable_add_def(st, &_Py_STR(kwdefaults), DEF_PARAM,
+ lineno, col_offset, end_lineno, end_col_offset)) {
+ return 0;
+ }
+ }
+ return 1;
+}
+
+/* VISIT, VISIT_SEQ and VIST_SEQ_TAIL take an ASDL type as their second argument.
+ They use the ASDL name to synthesize the name of the C type and the visit
+ function.
+
+ VISIT_SEQ_TAIL permits the start of an ASDL sequence to be skipped, which is
+ useful if the first node in the sequence requires special treatment.
+
+ VISIT_QUIT macro returns the specified value exiting from the function but
+ first adjusts current recursion counter depth.
+*/
+
+#define VISIT_QUIT(ST, X) \
+ return --(ST)->recursion_depth,(X)
+
+#define VISIT(ST, TYPE, V) \
+ if (!symtable_visit_ ## TYPE((ST), (V))) \
+ VISIT_QUIT((ST), 0);
+
+#define VISIT_SEQ(ST, TYPE, SEQ) { \
+ int i; \
+ asdl_ ## TYPE ## _seq *seq = (SEQ); /* avoid variable capture */ \
+ for (i = 0; i < asdl_seq_LEN(seq); i++) { \
+ TYPE ## _ty elt = (TYPE ## _ty)asdl_seq_GET(seq, i); \
+ if (!symtable_visit_ ## TYPE((ST), elt)) \
+ VISIT_QUIT((ST), 0); \
+ } \
+}
+
+#define VISIT_SEQ_TAIL(ST, TYPE, SEQ, START) { \
+ int i; \
+ asdl_ ## TYPE ## _seq *seq = (SEQ); /* avoid variable capture */ \
+ for (i = (START); i < asdl_seq_LEN(seq); i++) { \
+ TYPE ## _ty elt = (TYPE ## _ty)asdl_seq_GET(seq, i); \
+ if (!symtable_visit_ ## TYPE((ST), elt)) \
+ VISIT_QUIT((ST), 0); \
+ } \
+}
+
+#define VISIT_SEQ_WITH_NULL(ST, TYPE, SEQ) { \
+ int i = 0; \
+ asdl_ ## TYPE ## _seq *seq = (SEQ); /* avoid variable capture */ \
+ for (i = 0; i < asdl_seq_LEN(seq); i++) { \
+ TYPE ## _ty elt = (TYPE ## _ty)asdl_seq_GET(seq, i); \
+ if (!elt) continue; /* can be NULL */ \
+ if (!symtable_visit_ ## TYPE((ST), elt)) \
+ VISIT_QUIT((ST), 0); \
+ } \
+}
+
+static int
+symtable_record_directive(struct symtable *st, identifier name, int lineno,
+ int col_offset, int end_lineno, int end_col_offset)
+{
+ PyObject *data, *mangled;
+ int res;
+ if (!st->st_cur->ste_directives) {
+ st->st_cur->ste_directives = PyList_New(0);
+ if (!st->st_cur->ste_directives)
+ return 0;
+ }
+ mangled = _Py_Mangle(st->st_private, name);
+ if (!mangled)
+ return 0;
+ data = Py_BuildValue("(Niiii)", mangled, lineno, col_offset, end_lineno, end_col_offset);
+ if (!data)
+ return 0;
+ res = PyList_Append(st->st_cur->ste_directives, data);
+ Py_DECREF(data);
+ return res == 0;
+}
+
+static int
+has_kwonlydefaults(asdl_arg_seq *kwonlyargs, asdl_expr_seq *kw_defaults)
+{
+ for (int i = 0; i < asdl_seq_LEN(kwonlyargs); i++) {
+ expr_ty default_ = asdl_seq_GET(kw_defaults, i);
+ if (default_) {
+ return 1;
+ }
+ }
+ return 0;
+}
+
+static int
+symtable_visit_stmt(struct symtable *st, stmt_ty s)
+{
+ if (++st->recursion_depth > st->recursion_limit) {
+ PyErr_SetString(PyExc_RecursionError,
+ "maximum recursion depth exceeded during compilation");
+ VISIT_QUIT(st, 0);
+ }
+ switch (s->kind) {
+ case FunctionDef_kind:
+ if (!symtable_add_def(st, s->v.FunctionDef.name, DEF_LOCAL, LOCATION(s)))
+ VISIT_QUIT(st, 0);
+ if (s->v.FunctionDef.args->defaults)
+ VISIT_SEQ(st, expr, s->v.FunctionDef.args->defaults);
+ if (s->v.FunctionDef.args->kw_defaults)
+ VISIT_SEQ_WITH_NULL(st, expr, s->v.FunctionDef.args->kw_defaults);
+ if (s->v.FunctionDef.decorator_list)
+ VISIT_SEQ(st, expr, s->v.FunctionDef.decorator_list);
+ if (asdl_seq_LEN(s->v.FunctionDef.type_params) > 0) {
+ if (!symtable_enter_type_param_block(
+ st, s->v.FunctionDef.name,
+ (void *)s->v.FunctionDef.type_params,
+ s->v.FunctionDef.args->defaults != NULL,
+ has_kwonlydefaults(s->v.FunctionDef.args->kwonlyargs,
+ s->v.FunctionDef.args->kw_defaults),
+ s->kind,
+ LOCATION(s))) {
+ VISIT_QUIT(st, 0);
+ }
+ VISIT_SEQ(st, type_param, s->v.FunctionDef.type_params);
+ }
+ if (!symtable_visit_annotations(st, s, s->v.FunctionDef.args,
+ s->v.FunctionDef.returns))
+ VISIT_QUIT(st, 0);
+ if (!symtable_enter_block(st, s->v.FunctionDef.name,
+ FunctionBlock, (void *)s,
+ LOCATION(s)))
+ VISIT_QUIT(st, 0);
+ VISIT(st, arguments, s->v.FunctionDef.args);
+ VISIT_SEQ(st, stmt, s->v.FunctionDef.body);
+ if (!symtable_exit_block(st))
+ VISIT_QUIT(st, 0);
+ if (asdl_seq_LEN(s->v.FunctionDef.type_params) > 0) {
+ if (!symtable_exit_block(st))
+ VISIT_QUIT(st, 0);
+ }
+ break;
+ case ClassDef_kind: {
+ PyObject *tmp;
+ if (!symtable_add_def(st, s->v.ClassDef.name, DEF_LOCAL, LOCATION(s)))
+ VISIT_QUIT(st, 0);
+ if (s->v.ClassDef.decorator_list)
+ VISIT_SEQ(st, expr, s->v.ClassDef.decorator_list);
+ if (asdl_seq_LEN(s->v.ClassDef.type_params) > 0) {
+ if (!symtable_enter_type_param_block(st, s->v.ClassDef.name,
+ (void *)s->v.ClassDef.type_params,
+ false, false, s->kind,
+ LOCATION(s))) {
+ VISIT_QUIT(st, 0);
+ }
+ VISIT_SEQ(st, type_param, s->v.ClassDef.type_params);
+ }
+ VISIT_SEQ(st, expr, s->v.ClassDef.bases);
+ VISIT_SEQ(st, keyword, s->v.ClassDef.keywords);
+ if (!symtable_enter_block(st, s->v.ClassDef.name, ClassBlock,
+ (void *)s, s->lineno, s->col_offset,
+ s->end_lineno, s->end_col_offset))
+ VISIT_QUIT(st, 0);
+ tmp = st->st_private;
+ st->st_private = s->v.ClassDef.name;
+ if (asdl_seq_LEN(s->v.ClassDef.type_params) > 0) {
+ if (!symtable_add_def(st, &_Py_ID(__type_params__),
+ DEF_LOCAL, LOCATION(s))) {
+ VISIT_QUIT(st, 0);
+ }
+ _Py_DECLARE_STR(type_params, ".type_params");
+ if (!symtable_add_def(st, &_Py_STR(type_params),
+ USE, LOCATION(s))) {
+ VISIT_QUIT(st, 0);
+ }
+ }
+ VISIT_SEQ(st, stmt, s->v.ClassDef.body);
+ st->st_private = tmp;
+ if (!symtable_exit_block(st))
+ VISIT_QUIT(st, 0);
+ if (asdl_seq_LEN(s->v.ClassDef.type_params) > 0) {
+ if (!symtable_exit_block(st))
+ VISIT_QUIT(st, 0);
+ }
+ break;
+ }
+ case TypeAlias_kind: {
+ VISIT(st, expr, s->v.TypeAlias.name);
+ assert(s->v.TypeAlias.name->kind == Name_kind);
+ PyObject *name = s->v.TypeAlias.name->v.Name.id;
+ int is_in_class = st->st_cur->ste_type == ClassBlock;
+ int is_generic = asdl_seq_LEN(s->v.TypeAlias.type_params) > 0;
+ if (is_generic) {
+ if (!symtable_enter_type_param_block(
+ st, name,
+ (void *)s->v.TypeAlias.type_params,
+ false, false, s->kind,
+ LOCATION(s))) {
+ VISIT_QUIT(st, 0);
+ }
+ VISIT_SEQ(st, type_param, s->v.TypeAlias.type_params);
+ }
+ if (!symtable_enter_block(st, name, TypeAliasBlock,
+ (void *)s, LOCATION(s)))
+ VISIT_QUIT(st, 0);
+ st->st_cur->ste_can_see_class_scope = is_in_class;
+ if (is_in_class && !symtable_add_def(st, &_Py_ID(__classdict__), USE, LOCATION(s->v.TypeAlias.value))) {
+ VISIT_QUIT(st, 0);
+ }
+ VISIT(st, expr, s->v.TypeAlias.value);
+ if (!symtable_exit_block(st))
+ VISIT_QUIT(st, 0);
+ if (is_generic) {
+ if (!symtable_exit_block(st))
+ VISIT_QUIT(st, 0);
+ }
+ break;
+ }
+ case Return_kind:
+ if (s->v.Return.value) {
+ VISIT(st, expr, s->v.Return.value);
+ st->st_cur->ste_returns_value = 1;
+ }
+ break;
+ case Delete_kind:
+ VISIT_SEQ(st, expr, s->v.Delete.targets);
+ break;
+ case Assign_kind:
+ VISIT_SEQ(st, expr, s->v.Assign.targets);
+ VISIT(st, expr, s->v.Assign.value);
+ break;
+ case AnnAssign_kind:
+ if (s->v.AnnAssign.target->kind == Name_kind) {
+ expr_ty e_name = s->v.AnnAssign.target;
+ long cur = symtable_lookup(st, e_name->v.Name.id);
+ if (cur < 0) {
+ VISIT_QUIT(st, 0);
+ }
+ if ((cur & (DEF_GLOBAL | DEF_NONLOCAL))
+ && (st->st_cur->ste_symbols != st->st_global)
+ && s->v.AnnAssign.simple) {
+ PyErr_Format(PyExc_SyntaxError,
+ cur & DEF_GLOBAL ? GLOBAL_ANNOT : NONLOCAL_ANNOT,
+ e_name->v.Name.id);
+ PyErr_RangedSyntaxLocationObject(st->st_filename,
+ s->lineno,
+ s->col_offset + 1,
+ s->end_lineno,
+ s->end_col_offset + 1);
+ VISIT_QUIT(st, 0);
+ }
+ if (s->v.AnnAssign.simple &&
+ !symtable_add_def(st, e_name->v.Name.id,
+ DEF_ANNOT | DEF_LOCAL, LOCATION(e_name))) {
+ VISIT_QUIT(st, 0);
+ }
+ else {
+ if (s->v.AnnAssign.value
+ && !symtable_add_def(st, e_name->v.Name.id, DEF_LOCAL, LOCATION(e_name))) {
+ VISIT_QUIT(st, 0);
+ }
+ }
+ }
+ else {
+ VISIT(st, expr, s->v.AnnAssign.target);
+ }
+ if (!symtable_visit_annotation(st, s->v.AnnAssign.annotation)) {
+ VISIT_QUIT(st, 0);
+ }
+
+ if (s->v.AnnAssign.value) {
+ VISIT(st, expr, s->v.AnnAssign.value);
+ }
+ break;
+ case AugAssign_kind:
+ VISIT(st, expr, s->v.AugAssign.target);
+ VISIT(st, expr, s->v.AugAssign.value);
+ break;
+ case For_kind:
+ VISIT(st, expr, s->v.For.target);
+ VISIT(st, expr, s->v.For.iter);
+ VISIT_SEQ(st, stmt, s->v.For.body);
+ if (s->v.For.orelse)
+ VISIT_SEQ(st, stmt, s->v.For.orelse);
+ break;
+ case While_kind:
+ VISIT(st, expr, s->v.While.test);
+ VISIT_SEQ(st, stmt, s->v.While.body);
+ if (s->v.While.orelse)
+ VISIT_SEQ(st, stmt, s->v.While.orelse);
+ break;
+ case If_kind:
+ /* XXX if 0: and lookup_yield() hacks */
+ VISIT(st, expr, s->v.If.test);
+ VISIT_SEQ(st, stmt, s->v.If.body);
+ if (s->v.If.orelse)
+ VISIT_SEQ(st, stmt, s->v.If.orelse);
+ break;
+ case Match_kind:
+ VISIT(st, expr, s->v.Match.subject);
+ VISIT_SEQ(st, match_case, s->v.Match.cases);
+ break;
+ case Raise_kind:
+ if (s->v.Raise.exc) {
+ VISIT(st, expr, s->v.Raise.exc);
+ if (s->v.Raise.cause) {
+ VISIT(st, expr, s->v.Raise.cause);
+ }
+ }
+ break;
+ case Try_kind:
+ VISIT_SEQ(st, stmt, s->v.Try.body);
+ VISIT_SEQ(st, stmt, s->v.Try.orelse);
+ VISIT_SEQ(st, excepthandler, s->v.Try.handlers);
+ VISIT_SEQ(st, stmt, s->v.Try.finalbody);
+ break;
+ case TryStar_kind:
+ VISIT_SEQ(st, stmt, s->v.TryStar.body);
+ VISIT_SEQ(st, stmt, s->v.TryStar.orelse);
+ VISIT_SEQ(st, excepthandler, s->v.TryStar.handlers);
+ VISIT_SEQ(st, stmt, s->v.TryStar.finalbody);
+ break;
+ case Assert_kind:
+ VISIT(st, expr, s->v.Assert.test);
+ if (s->v.Assert.msg)
+ VISIT(st, expr, s->v.Assert.msg);
+ break;
+ case Import_kind:
+ VISIT_SEQ(st, alias, s->v.Import.names);
+ break;
+ case ImportFrom_kind:
+ VISIT_SEQ(st, alias, s->v.ImportFrom.names);
+ break;
+ case Global_kind: {
+ int i;
+ asdl_identifier_seq *seq = s->v.Global.names;
+ for (i = 0; i < asdl_seq_LEN(seq); i++) {
+ identifier name = (identifier)asdl_seq_GET(seq, i);
+ long cur = symtable_lookup(st, name);
+ if (cur < 0)
+ VISIT_QUIT(st, 0);
+ if (cur & (DEF_PARAM | DEF_LOCAL | USE | DEF_ANNOT)) {
+ const char* msg;
+ if (cur & DEF_PARAM) {
+ msg = GLOBAL_PARAM;
+ } else if (cur & USE) {
+ msg = GLOBAL_AFTER_USE;
+ } else if (cur & DEF_ANNOT) {
+ msg = GLOBAL_ANNOT;
+ } else { /* DEF_LOCAL */
+ msg = GLOBAL_AFTER_ASSIGN;
+ }
+ PyErr_Format(PyExc_SyntaxError,
+ msg, name);
+ PyErr_RangedSyntaxLocationObject(st->st_filename,
+ s->lineno,
+ s->col_offset + 1,
+ s->end_lineno,
+ s->end_col_offset + 1);
+ VISIT_QUIT(st, 0);
+ }
+ if (!symtable_add_def(st, name, DEF_GLOBAL, LOCATION(s)))
+ VISIT_QUIT(st, 0);
+ if (!symtable_record_directive(st, name, s->lineno, s->col_offset,
+ s->end_lineno, s->end_col_offset))
+ VISIT_QUIT(st, 0);
+ }
+ break;
+ }
+ case Nonlocal_kind: {
+ int i;
+ asdl_identifier_seq *seq = s->v.Nonlocal.names;
+ for (i = 0; i < asdl_seq_LEN(seq); i++) {
+ identifier name = (identifier)asdl_seq_GET(seq, i);
+ long cur = symtable_lookup(st, name);
+ if (cur < 0)
+ VISIT_QUIT(st, 0);
+ if (cur & (DEF_PARAM | DEF_LOCAL | USE | DEF_ANNOT)) {
+ const char* msg;
+ if (cur & DEF_PARAM) {
+ msg = NONLOCAL_PARAM;
+ } else if (cur & USE) {
+ msg = NONLOCAL_AFTER_USE;
+ } else if (cur & DEF_ANNOT) {
+ msg = NONLOCAL_ANNOT;
+ } else { /* DEF_LOCAL */
+ msg = NONLOCAL_AFTER_ASSIGN;
+ }
+ PyErr_Format(PyExc_SyntaxError, msg, name);
+ PyErr_RangedSyntaxLocationObject(st->st_filename,
+ s->lineno,
+ s->col_offset + 1,
+ s->end_lineno,
+ s->end_col_offset + 1);
+ VISIT_QUIT(st, 0);
+ }
+ if (!symtable_add_def(st, name, DEF_NONLOCAL, LOCATION(s)))
+ VISIT_QUIT(st, 0);
+ if (!symtable_record_directive(st, name, s->lineno, s->col_offset,
+ s->end_lineno, s->end_col_offset))
+ VISIT_QUIT(st, 0);
+ }
+ break;
+ }
+ case Expr_kind:
+ VISIT(st, expr, s->v.Expr.value);
+ break;
+ case Pass_kind:
+ case Break_kind:
+ case Continue_kind:
+ /* nothing to do here */
+ break;
+ case With_kind:
+ VISIT_SEQ(st, withitem, s->v.With.items);
+ VISIT_SEQ(st, stmt, s->v.With.body);
+ break;
+ case AsyncFunctionDef_kind:
+ if (!symtable_add_def(st, s->v.AsyncFunctionDef.name, DEF_LOCAL, LOCATION(s)))
+ VISIT_QUIT(st, 0);
+ if (s->v.AsyncFunctionDef.args->defaults)
+ VISIT_SEQ(st, expr, s->v.AsyncFunctionDef.args->defaults);
+ if (s->v.AsyncFunctionDef.args->kw_defaults)
+ VISIT_SEQ_WITH_NULL(st, expr,
+ s->v.AsyncFunctionDef.args->kw_defaults);
+ if (s->v.AsyncFunctionDef.decorator_list)
+ VISIT_SEQ(st, expr, s->v.AsyncFunctionDef.decorator_list);
+ if (asdl_seq_LEN(s->v.AsyncFunctionDef.type_params) > 0) {
+ if (!symtable_enter_type_param_block(
+ st, s->v.AsyncFunctionDef.name,
+ (void *)s->v.AsyncFunctionDef.type_params,
+ s->v.AsyncFunctionDef.args->defaults != NULL,
+ has_kwonlydefaults(s->v.AsyncFunctionDef.args->kwonlyargs,
+ s->v.AsyncFunctionDef.args->kw_defaults),
+ s->kind,
+ LOCATION(s))) {
+ VISIT_QUIT(st, 0);
+ }
+ VISIT_SEQ(st, type_param, s->v.AsyncFunctionDef.type_params);
+ }
+ if (!symtable_visit_annotations(st, s, s->v.AsyncFunctionDef.args,
+ s->v.AsyncFunctionDef.returns))
+ VISIT_QUIT(st, 0);
+ if (!symtable_enter_block(st, s->v.AsyncFunctionDef.name,
+ FunctionBlock, (void *)s,
+ s->lineno, s->col_offset,
+ s->end_lineno, s->end_col_offset))
+ VISIT_QUIT(st, 0);
+ st->st_cur->ste_coroutine = 1;
+ VISIT(st, arguments, s->v.AsyncFunctionDef.args);
+ VISIT_SEQ(st, stmt, s->v.AsyncFunctionDef.body);
+ if (!symtable_exit_block(st))
+ VISIT_QUIT(st, 0);
+ if (asdl_seq_LEN(s->v.AsyncFunctionDef.type_params) > 0) {
+ if (!symtable_exit_block(st))
+ VISIT_QUIT(st, 0);
+ }
+ break;
+ case AsyncWith_kind:
+ VISIT_SEQ(st, withitem, s->v.AsyncWith.items);
+ VISIT_SEQ(st, stmt, s->v.AsyncWith.body);
+ break;
+ case AsyncFor_kind:
+ VISIT(st, expr, s->v.AsyncFor.target);
+ VISIT(st, expr, s->v.AsyncFor.iter);
+ VISIT_SEQ(st, stmt, s->v.AsyncFor.body);
+ if (s->v.AsyncFor.orelse)
+ VISIT_SEQ(st, stmt, s->v.AsyncFor.orelse);
+ break;
+ }
+ VISIT_QUIT(st, 1);
+}
+
+static int
+symtable_extend_namedexpr_scope(struct symtable *st, expr_ty e)
+{
+ assert(st->st_stack);
+ assert(e->kind == Name_kind);
+
+ PyObject *target_name = e->v.Name.id;
+ Py_ssize_t i, size;
+ struct _symtable_entry *ste;
+ size = PyList_GET_SIZE(st->st_stack);
+ assert(size);
+
+ /* Iterate over the stack in reverse and add to the nearest adequate scope */
+ for (i = size - 1; i >= 0; i--) {
+ ste = (struct _symtable_entry *) PyList_GET_ITEM(st->st_stack, i);
+
+ /* If we find a comprehension scope, check for a target
+ * binding conflict with iteration variables, otherwise skip it
+ */
+ if (ste->ste_comprehension) {
+ long target_in_scope = _PyST_GetSymbol(ste, target_name);
+ if ((target_in_scope & DEF_COMP_ITER) &&
+ (target_in_scope & DEF_LOCAL)) {
+ PyErr_Format(PyExc_SyntaxError, NAMED_EXPR_COMP_CONFLICT, target_name);
+ PyErr_RangedSyntaxLocationObject(st->st_filename,
+ e->lineno,
+ e->col_offset + 1,
+ e->end_lineno,
+ e->end_col_offset + 1);
+ VISIT_QUIT(st, 0);
+ }
+ continue;
+ }
+
+ /* If we find a FunctionBlock entry, add as GLOBAL/LOCAL or NONLOCAL/LOCAL */
+ if (ste->ste_type == FunctionBlock) {
+ long target_in_scope = _PyST_GetSymbol(ste, target_name);
+ if (target_in_scope & DEF_GLOBAL) {
+ if (!symtable_add_def(st, target_name, DEF_GLOBAL, LOCATION(e)))
+ VISIT_QUIT(st, 0);
+ } else {
+ if (!symtable_add_def(st, target_name, DEF_NONLOCAL, LOCATION(e)))
+ VISIT_QUIT(st, 0);
+ }
+ if (!symtable_record_directive(st, target_name, LOCATION(e)))
+ VISIT_QUIT(st, 0);
+
+ return symtable_add_def_helper(st, target_name, DEF_LOCAL, ste, LOCATION(e));
+ }
+ /* If we find a ModuleBlock entry, add as GLOBAL */
+ if (ste->ste_type == ModuleBlock) {
+ if (!symtable_add_def(st, target_name, DEF_GLOBAL, LOCATION(e)))
+ VISIT_QUIT(st, 0);
+ if (!symtable_record_directive(st, target_name, LOCATION(e)))
+ VISIT_QUIT(st, 0);
+
+ return symtable_add_def_helper(st, target_name, DEF_GLOBAL, ste, LOCATION(e));
+ }
+ /* Disallow usage in ClassBlock and type scopes */
+ if (ste->ste_type == ClassBlock ||
+ ste->ste_type == TypeParamBlock ||
+ ste->ste_type == TypeAliasBlock ||
+ ste->ste_type == TypeVarBoundBlock) {
+ switch (ste->ste_type) {
+ case ClassBlock:
+ PyErr_Format(PyExc_SyntaxError, NAMED_EXPR_COMP_IN_CLASS);
+ break;
+ case TypeParamBlock:
+ PyErr_Format(PyExc_SyntaxError, NAMED_EXPR_COMP_IN_TYPEPARAM);
+ break;
+ case TypeAliasBlock:
+ PyErr_Format(PyExc_SyntaxError, NAMED_EXPR_COMP_IN_TYPEALIAS);
+ break;
+ case TypeVarBoundBlock:
+ PyErr_Format(PyExc_SyntaxError, NAMED_EXPR_COMP_IN_TYPEVAR_BOUND);
+ break;
+ default:
+ Py_UNREACHABLE();
+ }
+ PyErr_RangedSyntaxLocationObject(st->st_filename,
+ e->lineno,
+ e->col_offset + 1,
+ e->end_lineno,
+ e->end_col_offset + 1);
+ VISIT_QUIT(st, 0);
+ }
+ }
+
+ /* We should always find either a function-like block, ModuleBlock or ClassBlock
+ and should never fall to this case
+ */
+ Py_UNREACHABLE();
+ return 0;
+}
+
+static int
+symtable_handle_namedexpr(struct symtable *st, expr_ty e)
+{
+ if (st->st_cur->ste_comp_iter_expr > 0) {
+ /* Assignment isn't allowed in a comprehension iterable expression */
+ PyErr_Format(PyExc_SyntaxError, NAMED_EXPR_COMP_ITER_EXPR);
+ PyErr_RangedSyntaxLocationObject(st->st_filename,
+ e->lineno,
+ e->col_offset + 1,
+ e->end_lineno,
+ e->end_col_offset + 1);
+ return 0;
+ }
+ if (st->st_cur->ste_comprehension) {
+ /* Inside a comprehension body, so find the right target scope */
+ if (!symtable_extend_namedexpr_scope(st, e->v.NamedExpr.target))
+ return 0;
+ }
+ VISIT(st, expr, e->v.NamedExpr.value);
+ VISIT(st, expr, e->v.NamedExpr.target);
+ return 1;
+}
+
+static int
+symtable_visit_expr(struct symtable *st, expr_ty e)
+{
+ if (++st->recursion_depth > st->recursion_limit) {
+ PyErr_SetString(PyExc_RecursionError,
+ "maximum recursion depth exceeded during compilation");
+ VISIT_QUIT(st, 0);
+ }
+ switch (e->kind) {
+ case NamedExpr_kind:
+ if (!symtable_raise_if_annotation_block(st, "named expression", e)) {
+ VISIT_QUIT(st, 0);
+ }
+ if(!symtable_handle_namedexpr(st, e))
+ VISIT_QUIT(st, 0);
+ break;
+ case BoolOp_kind:
+ VISIT_SEQ(st, expr, e->v.BoolOp.values);
+ break;
+ case BinOp_kind:
+ VISIT(st, expr, e->v.BinOp.left);
+ VISIT(st, expr, e->v.BinOp.right);
+ break;
+ case UnaryOp_kind:
+ VISIT(st, expr, e->v.UnaryOp.operand);
+ break;
+ case Lambda_kind: {
+ if (st->st_cur->ste_can_see_class_scope) {
+ // gh-109118
+ PyErr_Format(PyExc_SyntaxError,
+ "Cannot use lambda in annotation scope within class scope");
+ PyErr_RangedSyntaxLocationObject(st->st_filename,
+ e->lineno,
+ e->col_offset + 1,
+ e->end_lineno,
+ e->end_col_offset + 1);
+ VISIT_QUIT(st, 0);
+ }
+ if (e->v.Lambda.args->defaults)
+ VISIT_SEQ(st, expr, e->v.Lambda.args->defaults);
+ if (e->v.Lambda.args->kw_defaults)
+ VISIT_SEQ_WITH_NULL(st, expr, e->v.Lambda.args->kw_defaults);
+ if (!symtable_enter_block(st, &_Py_ID(lambda),
+ FunctionBlock, (void *)e,
+ e->lineno, e->col_offset,
+ e->end_lineno, e->end_col_offset))
+ VISIT_QUIT(st, 0);
+ VISIT(st, arguments, e->v.Lambda.args);
+ VISIT(st, expr, e->v.Lambda.body);
+ if (!symtable_exit_block(st))
+ VISIT_QUIT(st, 0);
+ break;
+ }
+ case IfExp_kind:
+ VISIT(st, expr, e->v.IfExp.test);
+ VISIT(st, expr, e->v.IfExp.body);
+ VISIT(st, expr, e->v.IfExp.orelse);
+ break;
+ case Dict_kind:
+ VISIT_SEQ_WITH_NULL(st, expr, e->v.Dict.keys);
+ VISIT_SEQ(st, expr, e->v.Dict.values);
+ break;
+ case Set_kind:
+ VISIT_SEQ(st, expr, e->v.Set.elts);
+ break;
+ case GeneratorExp_kind:
+ if (!symtable_visit_genexp(st, e))
+ VISIT_QUIT(st, 0);
+ break;
+ case ListComp_kind:
+ if (!symtable_visit_listcomp(st, e))
+ VISIT_QUIT(st, 0);
+ break;
+ case SetComp_kind:
+ if (!symtable_visit_setcomp(st, e))
+ VISIT_QUIT(st, 0);
+ break;
+ case DictComp_kind:
+ if (!symtable_visit_dictcomp(st, e))
+ VISIT_QUIT(st, 0);
+ break;
+ case Yield_kind:
+ if (!symtable_raise_if_annotation_block(st, "yield expression", e)) {
+ VISIT_QUIT(st, 0);
+ }
+ if (e->v.Yield.value)
+ VISIT(st, expr, e->v.Yield.value);
+ st->st_cur->ste_generator = 1;
+ if (st->st_cur->ste_comprehension) {
+ return symtable_raise_if_comprehension_block(st, e);
+ }
+ break;
+ case YieldFrom_kind:
+ if (!symtable_raise_if_annotation_block(st, "yield expression", e)) {
+ VISIT_QUIT(st, 0);
+ }
+ VISIT(st, expr, e->v.YieldFrom.value);
+ st->st_cur->ste_generator = 1;
+ if (st->st_cur->ste_comprehension) {
+ return symtable_raise_if_comprehension_block(st, e);
+ }
+ break;
+ case Await_kind:
+ if (!symtable_raise_if_annotation_block(st, "await expression", e)) {
+ VISIT_QUIT(st, 0);
+ }
+ VISIT(st, expr, e->v.Await.value);
+ st->st_cur->ste_coroutine = 1;
+ break;
+ case Compare_kind:
+ VISIT(st, expr, e->v.Compare.left);
+ VISIT_SEQ(st, expr, e->v.Compare.comparators);
+ break;
+ case Call_kind:
+ VISIT(st, expr, e->v.Call.func);
+ VISIT_SEQ(st, expr, e->v.Call.args);
+ VISIT_SEQ_WITH_NULL(st, keyword, e->v.Call.keywords);
+ break;
+ case FormattedValue_kind:
+ VISIT(st, expr, e->v.FormattedValue.value);
+ if (e->v.FormattedValue.format_spec)
+ VISIT(st, expr, e->v.FormattedValue.format_spec);
+ break;
+ case JoinedStr_kind:
+ VISIT_SEQ(st, expr, e->v.JoinedStr.values);
+ break;
+ case Constant_kind:
+ /* Nothing to do here. */
+ break;
+ /* The following exprs can be assignment targets. */
+ case Attribute_kind:
+ VISIT(st, expr, e->v.Attribute.value);
+ break;
+ case Subscript_kind:
+ VISIT(st, expr, e->v.Subscript.value);
+ VISIT(st, expr, e->v.Subscript.slice);
+ break;
+ case Starred_kind:
+ VISIT(st, expr, e->v.Starred.value);
+ break;
+ case Slice_kind:
+ if (e->v.Slice.lower)
+ VISIT(st, expr, e->v.Slice.lower)
+ if (e->v.Slice.upper)
+ VISIT(st, expr, e->v.Slice.upper)
+ if (e->v.Slice.step)
+ VISIT(st, expr, e->v.Slice.step)
+ break;
+ case Name_kind:
+ if (!symtable_add_def(st, e->v.Name.id,
+ e->v.Name.ctx == Load ? USE : DEF_LOCAL, LOCATION(e)))
+ VISIT_QUIT(st, 0);
+ /* Special-case super: it counts as a use of __class__ */
+ if (e->v.Name.ctx == Load &&
+ _PyST_IsFunctionLike(st->st_cur) &&
+ _PyUnicode_EqualToASCIIString(e->v.Name.id, "super")) {
+ if (!symtable_add_def(st, &_Py_ID(__class__), USE, LOCATION(e)))
+ VISIT_QUIT(st, 0);
+ }
+ break;
+ /* child nodes of List and Tuple will have expr_context set */
+ case List_kind:
+ VISIT_SEQ(st, expr, e->v.List.elts);
+ break;
+ case Tuple_kind:
+ VISIT_SEQ(st, expr, e->v.Tuple.elts);
+ break;
+ }
+ VISIT_QUIT(st, 1);
+}
+
+static int
+symtable_visit_type_param(struct symtable *st, type_param_ty tp)
+{
+ if (++st->recursion_depth > st->recursion_limit) {
+ PyErr_SetString(PyExc_RecursionError,
+ "maximum recursion depth exceeded during compilation");
+ VISIT_QUIT(st, 0);
+ }
+ switch(tp->kind) {
+ case TypeVar_kind:
+ if (!symtable_add_def(st, tp->v.TypeVar.name, DEF_TYPE_PARAM | DEF_LOCAL, LOCATION(tp)))
+ VISIT_QUIT(st, 0);
+ if (tp->v.TypeVar.bound) {
+ int is_in_class = st->st_cur->ste_can_see_class_scope;
+ if (!symtable_enter_block(st, tp->v.TypeVar.name,
+ TypeVarBoundBlock, (void *)tp,
+ LOCATION(tp)))
+ VISIT_QUIT(st, 0);
+ st->st_cur->ste_can_see_class_scope = is_in_class;
+ if (is_in_class && !symtable_add_def(st, &_Py_ID(__classdict__), USE, LOCATION(tp->v.TypeVar.bound))) {
+ VISIT_QUIT(st, 0);
+ }
+ VISIT(st, expr, tp->v.TypeVar.bound);
+ if (!symtable_exit_block(st))
+ VISIT_QUIT(st, 0);
+ }
+ break;
+ case TypeVarTuple_kind:
+ if (!symtable_add_def(st, tp->v.TypeVarTuple.name, DEF_TYPE_PARAM | DEF_LOCAL, LOCATION(tp)))
+ VISIT_QUIT(st, 0);
+ break;
+ case ParamSpec_kind:
+ if (!symtable_add_def(st, tp->v.ParamSpec.name, DEF_TYPE_PARAM | DEF_LOCAL, LOCATION(tp)))
+ VISIT_QUIT(st, 0);
+ break;
+ }
+ VISIT_QUIT(st, 1);
+}
+
+static int
+symtable_visit_pattern(struct symtable *st, pattern_ty p)
+{
+ if (++st->recursion_depth > st->recursion_limit) {
+ PyErr_SetString(PyExc_RecursionError,
+ "maximum recursion depth exceeded during compilation");
+ VISIT_QUIT(st, 0);
+ }
+ switch (p->kind) {
+ case MatchValue_kind:
+ VISIT(st, expr, p->v.MatchValue.value);
+ break;
+ case MatchSingleton_kind:
+ /* Nothing to do here. */
+ break;
+ case MatchSequence_kind:
+ VISIT_SEQ(st, pattern, p->v.MatchSequence.patterns);
+ break;
+ case MatchStar_kind:
+ if (p->v.MatchStar.name) {
+ symtable_add_def(st, p->v.MatchStar.name, DEF_LOCAL, LOCATION(p));
+ }
+ break;
+ case MatchMapping_kind:
+ VISIT_SEQ(st, expr, p->v.MatchMapping.keys);
+ VISIT_SEQ(st, pattern, p->v.MatchMapping.patterns);
+ if (p->v.MatchMapping.rest) {
+ symtable_add_def(st, p->v.MatchMapping.rest, DEF_LOCAL, LOCATION(p));
+ }
+ break;
+ case MatchClass_kind:
+ VISIT(st, expr, p->v.MatchClass.cls);
+ VISIT_SEQ(st, pattern, p->v.MatchClass.patterns);
+ VISIT_SEQ(st, pattern, p->v.MatchClass.kwd_patterns);
+ break;
+ case MatchAs_kind:
+ if (p->v.MatchAs.pattern) {
+ VISIT(st, pattern, p->v.MatchAs.pattern);
+ }
+ if (p->v.MatchAs.name) {
+ symtable_add_def(st, p->v.MatchAs.name, DEF_LOCAL, LOCATION(p));
+ }
+ break;
+ case MatchOr_kind:
+ VISIT_SEQ(st, pattern, p->v.MatchOr.patterns);
+ break;
+ }
+ VISIT_QUIT(st, 1);
+}
+
+static int
+symtable_implicit_arg(struct symtable *st, int pos)
+{
+ PyObject *id = PyUnicode_FromFormat(".%d", pos);
+ if (id == NULL)
+ return 0;
+ if (!symtable_add_def(st, id, DEF_PARAM, ST_LOCATION(st->st_cur))) {
+ Py_DECREF(id);
+ return 0;
+ }
+ Py_DECREF(id);
+ return 1;
+}
+
+static int
+symtable_visit_params(struct symtable *st, asdl_arg_seq *args)
+{
+ int i;
+
+ if (!args)
+ return -1;
+
+ for (i = 0; i < asdl_seq_LEN(args); i++) {
+ arg_ty arg = (arg_ty)asdl_seq_GET(args, i);
+ if (!symtable_add_def(st, arg->arg, DEF_PARAM, LOCATION(arg)))
+ return 0;
+ }
+
+ return 1;
+}
+
+static int
+symtable_visit_annotation(struct symtable *st, expr_ty annotation)
+{
+ int future_annotations = st->st_future->ff_features & CO_FUTURE_ANNOTATIONS;
+ if (future_annotations &&
+ !symtable_enter_block(st, &_Py_ID(_annotation), AnnotationBlock,
+ (void *)annotation, annotation->lineno,
+ annotation->col_offset, annotation->end_lineno,
+ annotation->end_col_offset)) {
+ VISIT_QUIT(st, 0);
+ }
+ VISIT(st, expr, annotation);
+ if (future_annotations && !symtable_exit_block(st)) {
+ VISIT_QUIT(st, 0);
+ }
+ return 1;
+}
+
+static int
+symtable_visit_argannotations(struct symtable *st, asdl_arg_seq *args)
+{
+ int i;
+
+ if (!args)
+ return -1;
+
+ for (i = 0; i < asdl_seq_LEN(args); i++) {
+ arg_ty arg = (arg_ty)asdl_seq_GET(args, i);
+ if (arg->annotation)
+ VISIT(st, expr, arg->annotation);
+ }
+
+ return 1;
+}
+
+static int
+symtable_visit_annotations(struct symtable *st, stmt_ty o, arguments_ty a, expr_ty returns)
+{
+ int future_annotations = st->st_future->ff_features & CO_FUTURE_ANNOTATIONS;
+ if (future_annotations &&
+ !symtable_enter_block(st, &_Py_ID(_annotation), AnnotationBlock,
+ (void *)o, o->lineno, o->col_offset, o->end_lineno,
+ o->end_col_offset)) {
+ VISIT_QUIT(st, 0);
+ }
+ if (a->posonlyargs && !symtable_visit_argannotations(st, a->posonlyargs))
+ return 0;
+ if (a->args && !symtable_visit_argannotations(st, a->args))
+ return 0;
+ if (a->vararg && a->vararg->annotation)
+ VISIT(st, expr, a->vararg->annotation);
+ if (a->kwarg && a->kwarg->annotation)
+ VISIT(st, expr, a->kwarg->annotation);
+ if (a->kwonlyargs && !symtable_visit_argannotations(st, a->kwonlyargs))
+ return 0;
+ if (future_annotations && !symtable_exit_block(st)) {
+ VISIT_QUIT(st, 0);
+ }
+ if (returns && !symtable_visit_annotation(st, returns)) {
+ VISIT_QUIT(st, 0);
+ }
+ return 1;
+}
+
+static int
+symtable_visit_arguments(struct symtable *st, arguments_ty a)
+{
+ /* skip default arguments inside function block
+ XXX should ast be different?
+ */
+ if (a->posonlyargs && !symtable_visit_params(st, a->posonlyargs))
+ return 0;
+ if (a->args && !symtable_visit_params(st, a->args))
+ return 0;
+ if (a->kwonlyargs && !symtable_visit_params(st, a->kwonlyargs))
+ return 0;
+ if (a->vararg) {
+ if (!symtable_add_def(st, a->vararg->arg, DEF_PARAM, LOCATION(a->vararg)))
+ return 0;
+ st->st_cur->ste_varargs = 1;
+ }
+ if (a->kwarg) {
+ if (!symtable_add_def(st, a->kwarg->arg, DEF_PARAM, LOCATION(a->kwarg)))
+ return 0;
+ st->st_cur->ste_varkeywords = 1;
+ }
+ return 1;
+}
+
+
+static int
+symtable_visit_excepthandler(struct symtable *st, excepthandler_ty eh)
+{
+ if (eh->v.ExceptHandler.type)
+ VISIT(st, expr, eh->v.ExceptHandler.type);
+ if (eh->v.ExceptHandler.name)
+ if (!symtable_add_def(st, eh->v.ExceptHandler.name, DEF_LOCAL, LOCATION(eh)))
+ return 0;
+ VISIT_SEQ(st, stmt, eh->v.ExceptHandler.body);
+ return 1;
+}
+
+static int
+symtable_visit_withitem(struct symtable *st, withitem_ty item)
+{
+ VISIT(st, expr, item->context_expr);
+ if (item->optional_vars) {
+ VISIT(st, expr, item->optional_vars);
+ }
+ return 1;
+}
+
+static int
+symtable_visit_match_case(struct symtable *st, match_case_ty m)
+{
+ VISIT(st, pattern, m->pattern);
+ if (m->guard) {
+ VISIT(st, expr, m->guard);
+ }
+ VISIT_SEQ(st, stmt, m->body);
+ return 1;
+}
+
+static int
+symtable_visit_alias(struct symtable *st, alias_ty a)
+{
+ /* Compute store_name, the name actually bound by the import
+ operation. It is different than a->name when a->name is a
+ dotted package name (e.g. spam.eggs)
+ */
+ PyObject *store_name;
+ PyObject *name = (a->asname == NULL) ? a->name : a->asname;
+ Py_ssize_t dot = PyUnicode_FindChar(name, '.', 0,
+ PyUnicode_GET_LENGTH(name), 1);
+ if (dot != -1) {
+ store_name = PyUnicode_Substring(name, 0, dot);
+ if (!store_name)
+ return 0;
+ }
+ else {
+ store_name = Py_NewRef(name);
+ }
+ if (!_PyUnicode_EqualToASCIIString(name, "*")) {
+ int r = symtable_add_def(st, store_name, DEF_IMPORT, LOCATION(a));
+ Py_DECREF(store_name);
+ return r;
+ }
+ else {
+ if (st->st_cur->ste_type != ModuleBlock) {
+ int lineno = a->lineno;
+ int col_offset = a->col_offset;
+ int end_lineno = a->end_lineno;
+ int end_col_offset = a->end_col_offset;
+ PyErr_SetString(PyExc_SyntaxError, IMPORT_STAR_WARNING);
+ PyErr_RangedSyntaxLocationObject(st->st_filename,
+ lineno, col_offset + 1,
+ end_lineno, end_col_offset + 1);
+ Py_DECREF(store_name);
+ return 0;
+ }
+ Py_DECREF(store_name);
+ return 1;
+ }
+}
+
+
+static int
+symtable_visit_comprehension(struct symtable *st, comprehension_ty lc)
+{
+ st->st_cur->ste_comp_iter_target = 1;
+ VISIT(st, expr, lc->target);
+ st->st_cur->ste_comp_iter_target = 0;
+ st->st_cur->ste_comp_iter_expr++;
+ VISIT(st, expr, lc->iter);
+ st->st_cur->ste_comp_iter_expr--;
+ VISIT_SEQ(st, expr, lc->ifs);
+ if (lc->is_async) {
+ st->st_cur->ste_coroutine = 1;
+ }
+ return 1;
+}
+
+
+static int
+symtable_visit_keyword(struct symtable *st, keyword_ty k)
+{
+ VISIT(st, expr, k->value);
+ return 1;
+}
+
+
+static int
+symtable_handle_comprehension(struct symtable *st, expr_ty e,
+ identifier scope_name, asdl_comprehension_seq *generators,
+ expr_ty elt, expr_ty value)
+{
+ if (st->st_cur->ste_can_see_class_scope) {
+ // gh-109118
+ PyErr_Format(PyExc_SyntaxError,
+ "Cannot use comprehension in annotation scope within class scope");
+ PyErr_RangedSyntaxLocationObject(st->st_filename,
+ e->lineno,
+ e->col_offset + 1,
+ e->end_lineno,
+ e->end_col_offset + 1);
+ VISIT_QUIT(st, 0);
+ }
+
+ int is_generator = (e->kind == GeneratorExp_kind);
+ comprehension_ty outermost = ((comprehension_ty)
+ asdl_seq_GET(generators, 0));
+ /* Outermost iterator is evaluated in current scope */
+ st->st_cur->ste_comp_iter_expr++;
+ VISIT(st, expr, outermost->iter);
+ st->st_cur->ste_comp_iter_expr--;
+ /* Create comprehension scope for the rest */
+ if (!scope_name ||
+ !symtable_enter_block(st, scope_name, FunctionBlock, (void *)e,
+ e->lineno, e->col_offset,
+ e->end_lineno, e->end_col_offset)) {
+ return 0;
+ }
+ switch(e->kind) {
+ case ListComp_kind:
+ st->st_cur->ste_comprehension = ListComprehension;
+ break;
+ case SetComp_kind:
+ st->st_cur->ste_comprehension = SetComprehension;
+ break;
+ case DictComp_kind:
+ st->st_cur->ste_comprehension = DictComprehension;
+ break;
+ default:
+ st->st_cur->ste_comprehension = GeneratorExpression;
+ break;
+ }
+ if (outermost->is_async) {
+ st->st_cur->ste_coroutine = 1;
+ }
+
+ /* Outermost iter is received as an argument */
+ if (!symtable_implicit_arg(st, 0)) {
+ symtable_exit_block(st);
+ return 0;
+ }
+ /* Visit iteration variable target, and mark them as such */
+ st->st_cur->ste_comp_iter_target = 1;
+ VISIT(st, expr, outermost->target);
+ st->st_cur->ste_comp_iter_target = 0;
+ /* Visit the rest of the comprehension body */
+ VISIT_SEQ(st, expr, outermost->ifs);
+ VISIT_SEQ_TAIL(st, comprehension, generators, 1);
+ if (value)
+ VISIT(st, expr, value);
+ VISIT(st, expr, elt);
+ st->st_cur->ste_generator = is_generator;
+ int is_async = st->st_cur->ste_coroutine && !is_generator;
+ if (!symtable_exit_block(st)) {
+ return 0;
+ }
+ if (is_async) {
+ st->st_cur->ste_coroutine = 1;
+ }
+ return 1;
+}
+
+static int
+symtable_visit_genexp(struct symtable *st, expr_ty e)
+{
+ return symtable_handle_comprehension(st, e, &_Py_ID(genexpr),
+ e->v.GeneratorExp.generators,
+ e->v.GeneratorExp.elt, NULL);
+}
+
+static int
+symtable_visit_listcomp(struct symtable *st, expr_ty e)
+{
+ return symtable_handle_comprehension(st, e, &_Py_ID(listcomp),
+ e->v.ListComp.generators,
+ e->v.ListComp.elt, NULL);
+}
+
+static int
+symtable_visit_setcomp(struct symtable *st, expr_ty e)
+{
+ return symtable_handle_comprehension(st, e, &_Py_ID(setcomp),
+ e->v.SetComp.generators,
+ e->v.SetComp.elt, NULL);
+}
+
+static int
+symtable_visit_dictcomp(struct symtable *st, expr_ty e)
+{
+ return symtable_handle_comprehension(st, e, &_Py_ID(dictcomp),
+ e->v.DictComp.generators,
+ e->v.DictComp.key,
+ e->v.DictComp.value);
+}
+
+static int
+symtable_raise_if_annotation_block(struct symtable *st, const char *name, expr_ty e)
+{
+ enum _block_type type = st->st_cur->ste_type;
+ if (type == AnnotationBlock)
+ PyErr_Format(PyExc_SyntaxError, ANNOTATION_NOT_ALLOWED, name);
+ else if (type == TypeVarBoundBlock)
+ PyErr_Format(PyExc_SyntaxError, TYPEVAR_BOUND_NOT_ALLOWED, name);
+ else if (type == TypeAliasBlock)
+ PyErr_Format(PyExc_SyntaxError, TYPEALIAS_NOT_ALLOWED, name);
+ else if (type == TypeParamBlock)
+ PyErr_Format(PyExc_SyntaxError, TYPEPARAM_NOT_ALLOWED, name);
+ else
+ return 1;
+
+ PyErr_RangedSyntaxLocationObject(st->st_filename,
+ e->lineno,
+ e->col_offset + 1,
+ e->end_lineno,
+ e->end_col_offset + 1);
+ return 0;
+}
+
+static int
+symtable_raise_if_comprehension_block(struct symtable *st, expr_ty e) {
+ _Py_comprehension_ty type = st->st_cur->ste_comprehension;
+ PyErr_SetString(PyExc_SyntaxError,
+ (type == ListComprehension) ? "'yield' inside list comprehension" :
+ (type == SetComprehension) ? "'yield' inside set comprehension" :
+ (type == DictComprehension) ? "'yield' inside dict comprehension" :
+ "'yield' inside generator expression");
+ PyErr_RangedSyntaxLocationObject(st->st_filename,
+ e->lineno, e->col_offset + 1,
+ e->end_lineno, e->end_col_offset + 1);
+ VISIT_QUIT(st, 0);
+}
+
+struct symtable *
+_Py_SymtableStringObjectFlags(const char *str, PyObject *filename,
+ int start, PyCompilerFlags *flags)
+{
+ struct symtable *st;
+ mod_ty mod;
+ PyArena *arena;
+
+ arena = _PyArena_New();
+ if (arena == NULL)
+ return NULL;
+
+ mod = _PyParser_ASTFromString(str, filename, start, flags, arena);
+ if (mod == NULL) {
+ _PyArena_Free(arena);
+ return NULL;
+ }
+ PyFutureFeatures future;
+ if (!_PyFuture_FromAST(mod, filename, &future)) {
+ _PyArena_Free(arena);
+ return NULL;
+ }
+ future.ff_features |= flags->cf_flags;
+ st = _PySymtable_Build(mod, filename, &future);
+ _PyArena_Free(arena);
+ return st;
+}
+
+PyObject *
+_Py_Mangle(PyObject *privateobj, PyObject *ident)
+{
+ /* Name mangling: __private becomes _classname__private.
+ This is independent from how the name is used. */
+ if (privateobj == NULL || !PyUnicode_Check(privateobj) ||
+ PyUnicode_READ_CHAR(ident, 0) != '_' ||
+ PyUnicode_READ_CHAR(ident, 1) != '_') {
+ return Py_NewRef(ident);
+ }
+ size_t nlen = PyUnicode_GET_LENGTH(ident);
+ size_t plen = PyUnicode_GET_LENGTH(privateobj);
+ /* Don't mangle __id__ or names with dots.
+
+ The only time a name with a dot can occur is when
+ we are compiling an import statement that has a
+ package name.
+
+ TODO(jhylton): Decide whether we want to support
+ mangling of the module name, e.g. __M.X.
+ */
+ if ((PyUnicode_READ_CHAR(ident, nlen-1) == '_' &&
+ PyUnicode_READ_CHAR(ident, nlen-2) == '_') ||
+ PyUnicode_FindChar(ident, '.', 0, nlen, 1) != -1) {
+ return Py_NewRef(ident); /* Don't mangle __whatever__ */
+ }
+ /* Strip leading underscores from class name */
+ size_t ipriv = 0;
+ while (PyUnicode_READ_CHAR(privateobj, ipriv) == '_') {
+ ipriv++;
+ }
+ if (ipriv == plen) {
+ return Py_NewRef(ident); /* Don't mangle if class is just underscores */
+ }
+ plen -= ipriv;
+
+ if (plen + nlen >= PY_SSIZE_T_MAX - 1) {
+ PyErr_SetString(PyExc_OverflowError,
+ "private identifier too large to be mangled");
+ return NULL;
+ }
+
+ Py_UCS4 maxchar = PyUnicode_MAX_CHAR_VALUE(ident);
+ if (PyUnicode_MAX_CHAR_VALUE(privateobj) > maxchar) {
+ maxchar = PyUnicode_MAX_CHAR_VALUE(privateobj);
+ }
+
+ PyObject *result = PyUnicode_New(1 + nlen + plen, maxchar);
+ if (!result) {
+ return NULL;
+ }
+ /* ident = "_" + priv[ipriv:] + ident # i.e. 1+plen+nlen bytes */
+ PyUnicode_WRITE(PyUnicode_KIND(result), PyUnicode_DATA(result), 0, '_');
+ if (PyUnicode_CopyCharacters(result, 1, privateobj, ipriv, plen) < 0) {
+ Py_DECREF(result);
+ return NULL;
+ }
+ if (PyUnicode_CopyCharacters(result, plen+1, ident, 0, nlen) < 0) {
+ Py_DECREF(result);
+ return NULL;
+ }
+ assert(_PyUnicode_CheckConsistency(result, 1));
+ return result;
+}
diff --git a/contrib/tools/python3/Python/sysmodule.c b/contrib/tools/python3/Python/sysmodule.c
new file mode 100644
index 00000000000..3146f2a943c
--- /dev/null
+++ b/contrib/tools/python3/Python/sysmodule.c
@@ -0,0 +1,3899 @@
+
+/* System module */
+
+/*
+Various bits of information used by the interpreter are collected in
+module 'sys'.
+Function member:
+- exit(sts): raise SystemExit
+Data members:
+- stdin, stdout, stderr: standard file objects
+- modules: the table of modules (dictionary)
+- path: module search path (list of strings)
+- argv: script arguments (list of strings)
+- ps1, ps2: optional primary and secondary prompts (strings)
+*/
+
+#include "Python.h"
+#include "pycore_call.h" // _PyObject_CallNoArgs()
+#include "pycore_ceval.h" // _PyEval_SetAsyncGenFinalizer()
+#include "pycore_frame.h" // _PyInterpreterFrame
+#include "pycore_initconfig.h" // _PyStatus_EXCEPTION()
+#include "pycore_long.h" // _PY_LONG_MAX_STR_DIGITS_THRESHOLD
+#include "pycore_namespace.h" // _PyNamespace_New()
+#include "pycore_object.h" // _PyObject_IS_GC()
+#include "pycore_pathconfig.h" // _PyPathConfig_ComputeSysPath0()
+#include "pycore_pyerrors.h" // _PyErr_GetRaisedException()
+#include "pycore_pylifecycle.h" // _PyErr_WriteUnraisableDefaultHook()
+#include "pycore_pymath.h" // _PY_SHORT_FLOAT_REPR
+#include "pycore_pymem.h" // _PyMem_SetDefaultAllocator()
+#include "pycore_pystate.h" // _PyThreadState_GET()
+#include "pycore_structseq.h" // _PyStructSequence_InitBuiltinWithFlags()
+#include "pycore_tuple.h" // _PyTuple_FromArray()
+
+#include "frameobject.h" // PyFrame_FastToLocalsWithError()
+#include "pydtrace.h"
+#include "osdefs.h" // DELIM
+#include "stdlib_module_names.h" // _Py_stdlib_module_names
+#include <locale.h>
+
+#ifdef MS_WINDOWS
+#define WIN32_LEAN_AND_MEAN
+#include <windows.h>
+#endif /* MS_WINDOWS */
+
+#ifdef MS_COREDLL
+extern void *PyWin_DLLhModule;
+/* A string loaded from the DLL at startup: */
+extern const char *PyWin_DLLVersionString;
+#endif
+
+#ifdef __EMSCRIPTEN__
+#error #include <emscripten.h>
+#endif
+
+#ifdef HAVE_FCNTL_H
+#include <fcntl.h>
+#endif
+
+/*[clinic input]
+module sys
+[clinic start generated code]*/
+/*[clinic end generated code: output=da39a3ee5e6b4b0d input=3726b388feee8cea]*/
+
+#include "clinic/sysmodule.c.h"
+
+PyObject *
+_PySys_GetAttr(PyThreadState *tstate, PyObject *name)
+{
+ PyObject *sd = tstate->interp->sysdict;
+ if (sd == NULL) {
+ return NULL;
+ }
+ PyObject *exc = _PyErr_GetRaisedException(tstate);
+ /* XXX Suppress a new exception if it was raised and restore
+ * the old one. */
+ PyObject *value = _PyDict_GetItemWithError(sd, name);
+ _PyErr_SetRaisedException(tstate, exc);
+ return value;
+}
+
+static PyObject *
+_PySys_GetObject(PyInterpreterState *interp, const char *name)
+{
+ PyObject *sysdict = interp->sysdict;
+ if (sysdict == NULL) {
+ return NULL;
+ }
+ return _PyDict_GetItemStringWithError(sysdict, name);
+}
+
+PyObject *
+PySys_GetObject(const char *name)
+{
+ PyThreadState *tstate = _PyThreadState_GET();
+
+ PyObject *exc = _PyErr_GetRaisedException(tstate);
+ PyObject *value = _PySys_GetObject(tstate->interp, name);
+ /* XXX Suppress a new exception if it was raised and restore
+ * the old one. */
+ _PyErr_SetRaisedException(tstate, exc);
+ return value;
+}
+
+static int
+sys_set_object(PyInterpreterState *interp, PyObject *key, PyObject *v)
+{
+ if (key == NULL) {
+ return -1;
+ }
+ PyObject *sd = interp->sysdict;
+ if (v == NULL) {
+ v = _PyDict_Pop(sd, key, Py_None);
+ if (v == NULL) {
+ return -1;
+ }
+ Py_DECREF(v);
+ return 0;
+ }
+ else {
+ return PyDict_SetItem(sd, key, v);
+ }
+}
+
+int
+_PySys_SetAttr(PyObject *key, PyObject *v)
+{
+ PyInterpreterState *interp = _PyInterpreterState_GET();
+ return sys_set_object(interp, key, v);
+}
+
+static int
+sys_set_object_str(PyInterpreterState *interp, const char *name, PyObject *v)
+{
+ PyObject *key = v ? PyUnicode_InternFromString(name)
+ : PyUnicode_FromString(name);
+ int r = sys_set_object(interp, key, v);
+ Py_XDECREF(key);
+ return r;
+}
+
+int
+PySys_SetObject(const char *name, PyObject *v)
+{
+ PyInterpreterState *interp = _PyInterpreterState_GET();
+ return sys_set_object_str(interp, name, v);
+}
+
+int
+_PySys_ClearAttrString(PyInterpreterState *interp,
+ const char *name, int verbose)
+{
+ if (verbose) {
+ PySys_WriteStderr("# clear sys.%s\n", name);
+ }
+ /* To play it safe, we set the attr to None instead of deleting it. */
+ if (PyDict_SetItemString(interp->sysdict, name, Py_None) < 0) {
+ return -1;
+ }
+ return 0;
+}
+
+
+static int
+should_audit(PyInterpreterState *interp)
+{
+ /* interp must not be NULL, but test it just in case for extra safety */
+ assert(interp != NULL);
+ if (!interp) {
+ return 0;
+ }
+ return (interp->runtime->audit_hooks.head
+ || interp->audit_hooks
+ || PyDTrace_AUDIT_ENABLED());
+}
+
+
+static int
+sys_audit_tstate(PyThreadState *ts, const char *event,
+ const char *argFormat, va_list vargs)
+{
+ /* N format is inappropriate, because you do not know
+ whether the reference is consumed by the call.
+ Assert rather than exception for perf reasons */
+ assert(!argFormat || !strchr(argFormat, 'N'));
+
+ if (!ts) {
+ /* Audit hooks cannot be called with a NULL thread state */
+ return 0;
+ }
+
+ /* The current implementation cannot be called if tstate is not
+ the current Python thread state. */
+ assert(ts == _PyThreadState_GET());
+
+ /* Early exit when no hooks are registered */
+ PyInterpreterState *is = ts->interp;
+ if (!should_audit(is)) {
+ return 0;
+ }
+
+ PyObject *eventName = NULL;
+ PyObject *eventArgs = NULL;
+ PyObject *hooks = NULL;
+ PyObject *hook = NULL;
+ int res = -1;
+
+ int dtrace = PyDTrace_AUDIT_ENABLED();
+
+
+ PyObject *exc = _PyErr_GetRaisedException(ts);
+
+ /* Initialize event args now */
+ if (argFormat && argFormat[0]) {
+ eventArgs = _Py_VaBuildValue_SizeT(argFormat, vargs);
+ if (eventArgs && !PyTuple_Check(eventArgs)) {
+ PyObject *argTuple = PyTuple_Pack(1, eventArgs);
+ Py_SETREF(eventArgs, argTuple);
+ }
+ }
+ else {
+ eventArgs = PyTuple_New(0);
+ }
+ if (!eventArgs) {
+ goto exit;
+ }
+
+ /* Call global hooks
+ *
+ * We don't worry about any races on hooks getting added,
+ * since that would not leave is in an inconsistent state. */
+ _Py_AuditHookEntry *e = is->runtime->audit_hooks.head;
+ for (; e; e = e->next) {
+ if (e->hookCFunction(event, eventArgs, e->userData) < 0) {
+ goto exit;
+ }
+ }
+
+ /* Dtrace USDT point */
+ if (dtrace) {
+ PyDTrace_AUDIT(event, (void *)eventArgs);
+ }
+
+ /* Call interpreter hooks */
+ if (is->audit_hooks) {
+ eventName = PyUnicode_FromString(event);
+ if (!eventName) {
+ goto exit;
+ }
+
+ hooks = PyObject_GetIter(is->audit_hooks);
+ if (!hooks) {
+ goto exit;
+ }
+
+ /* Disallow tracing in hooks unless explicitly enabled */
+ PyThreadState_EnterTracing(ts);
+ while ((hook = PyIter_Next(hooks)) != NULL) {
+ PyObject *o;
+ int canTrace = _PyObject_LookupAttr(hook, &_Py_ID(__cantrace__), &o);
+ if (o) {
+ canTrace = PyObject_IsTrue(o);
+ Py_DECREF(o);
+ }
+ if (canTrace < 0) {
+ break;
+ }
+ if (canTrace) {
+ PyThreadState_LeaveTracing(ts);
+ }
+ PyObject* args[2] = {eventName, eventArgs};
+ o = _PyObject_FastCallTstate(ts, hook, args, 2);
+ if (canTrace) {
+ PyThreadState_EnterTracing(ts);
+ }
+ if (!o) {
+ break;
+ }
+ Py_DECREF(o);
+ Py_CLEAR(hook);
+ }
+ PyThreadState_LeaveTracing(ts);
+ if (_PyErr_Occurred(ts)) {
+ goto exit;
+ }
+ }
+
+ res = 0;
+
+exit:
+ Py_XDECREF(hook);
+ Py_XDECREF(hooks);
+ Py_XDECREF(eventName);
+ Py_XDECREF(eventArgs);
+
+ if (!res) {
+ _PyErr_SetRaisedException(ts, exc);
+ }
+ else {
+ assert(_PyErr_Occurred(ts));
+ Py_XDECREF(exc);
+ }
+
+ return res;
+}
+
+int
+_PySys_Audit(PyThreadState *tstate, const char *event,
+ const char *argFormat, ...)
+{
+ va_list vargs;
+ va_start(vargs, argFormat);
+ int res = sys_audit_tstate(tstate, event, argFormat, vargs);
+ va_end(vargs);
+ return res;
+}
+
+int
+PySys_Audit(const char *event, const char *argFormat, ...)
+{
+ PyThreadState *tstate = _PyThreadState_GET();
+ va_list vargs;
+ va_start(vargs, argFormat);
+ int res = sys_audit_tstate(tstate, event, argFormat, vargs);
+ va_end(vargs);
+ return res;
+}
+
+/* We expose this function primarily for our own cleanup during
+ * finalization. In general, it should not need to be called,
+ * and as such the function is not exported.
+ *
+ * Must be finalizing to clear hooks */
+void
+_PySys_ClearAuditHooks(PyThreadState *ts)
+{
+ assert(ts != NULL);
+ if (!ts) {
+ return;
+ }
+
+ _PyRuntimeState *runtime = ts->interp->runtime;
+ /* The hooks are global so we have to check for runtime finalization. */
+ PyThreadState *finalizing = _PyRuntimeState_GetFinalizing(runtime);
+ assert(finalizing == ts);
+ if (finalizing != ts) {
+ return;
+ }
+
+ const PyConfig *config = _PyInterpreterState_GetConfig(ts->interp);
+ if (config->verbose) {
+ PySys_WriteStderr("# clear sys.audit hooks\n");
+ }
+
+ /* Hooks can abort later hooks for this event, but cannot
+ abort the clear operation itself. */
+ _PySys_Audit(ts, "cpython._PySys_ClearAuditHooks", NULL);
+ _PyErr_Clear(ts);
+
+ /* We don't worry about the very unlikely race right here,
+ * since it's entirely benign. Nothing else removes entries
+ * from the list and adding an entry right now would not cause
+ * any trouble. */
+ _Py_AuditHookEntry *e = runtime->audit_hooks.head, *n;
+ runtime->audit_hooks.head = NULL;
+ while (e) {
+ n = e->next;
+ PyMem_RawFree(e);
+ e = n;
+ }
+}
+
+static void
+add_audit_hook_entry_unlocked(_PyRuntimeState *runtime,
+ _Py_AuditHookEntry *entry)
+{
+ if (runtime->audit_hooks.head == NULL) {
+ runtime->audit_hooks.head = entry;
+ }
+ else {
+ _Py_AuditHookEntry *last = runtime->audit_hooks.head;
+ while (last->next) {
+ last = last->next;
+ }
+ last->next = entry;
+ }
+}
+
+int
+PySys_AddAuditHook(Py_AuditHookFunction hook, void *userData)
+{
+ /* tstate can be NULL, so access directly _PyRuntime:
+ PySys_AddAuditHook() can be called before Python is initialized. */
+ _PyRuntimeState *runtime = &_PyRuntime;
+ PyThreadState *tstate;
+ if (runtime->initialized) {
+ tstate = _PyThreadState_GET();
+ }
+ else {
+ tstate = NULL;
+ }
+
+ /* Invoke existing audit hooks to allow them an opportunity to abort. */
+ /* Cannot invoke hooks until we are initialized */
+ if (tstate != NULL) {
+ if (_PySys_Audit(tstate, "sys.addaudithook", NULL) < 0) {
+ if (_PyErr_ExceptionMatches(tstate, PyExc_RuntimeError)) {
+ /* We do not report errors derived from RuntimeError */
+ _PyErr_Clear(tstate);
+ return 0;
+ }
+ return -1;
+ }
+ }
+
+ _Py_AuditHookEntry *e = (_Py_AuditHookEntry*)PyMem_RawMalloc(
+ sizeof(_Py_AuditHookEntry));
+ if (!e) {
+ if (tstate != NULL) {
+ _PyErr_NoMemory(tstate);
+ }
+ return -1;
+ }
+ e->next = NULL;
+ e->hookCFunction = (Py_AuditHookFunction)hook;
+ e->userData = userData;
+
+ if (runtime->audit_hooks.mutex == NULL) {
+ /* The runtime must not be initailized yet. */
+ add_audit_hook_entry_unlocked(runtime, e);
+ }
+ else {
+ PyThread_acquire_lock(runtime->audit_hooks.mutex, WAIT_LOCK);
+ add_audit_hook_entry_unlocked(runtime, e);
+ PyThread_release_lock(runtime->audit_hooks.mutex);
+ }
+
+ return 0;
+}
+
+/*[clinic input]
+sys.addaudithook
+
+ hook: object
+
+Adds a new audit hook callback.
+[clinic start generated code]*/
+
+static PyObject *
+sys_addaudithook_impl(PyObject *module, PyObject *hook)
+/*[clinic end generated code: output=4f9c17aaeb02f44e input=0f3e191217a45e34]*/
+{
+ PyThreadState *tstate = _PyThreadState_GET();
+
+ /* Invoke existing audit hooks to allow them an opportunity to abort. */
+ if (_PySys_Audit(tstate, "sys.addaudithook", NULL) < 0) {
+ if (_PyErr_ExceptionMatches(tstate, PyExc_Exception)) {
+ /* We do not report errors derived from Exception */
+ _PyErr_Clear(tstate);
+ Py_RETURN_NONE;
+ }
+ return NULL;
+ }
+
+ PyInterpreterState *interp = tstate->interp;
+ if (interp->audit_hooks == NULL) {
+ interp->audit_hooks = PyList_New(0);
+ if (interp->audit_hooks == NULL) {
+ return NULL;
+ }
+ /* Avoid having our list of hooks show up in the GC module */
+ PyObject_GC_UnTrack(interp->audit_hooks);
+ }
+
+ if (PyList_Append(interp->audit_hooks, hook) < 0) {
+ return NULL;
+ }
+
+ Py_RETURN_NONE;
+}
+
+PyDoc_STRVAR(audit_doc,
+"audit(event, *args)\n\
+\n\
+Passes the event to any audit hooks that are attached.");
+
+static PyObject *
+sys_audit(PyObject *self, PyObject *const *args, Py_ssize_t argc)
+{
+ PyThreadState *tstate = _PyThreadState_GET();
+ _Py_EnsureTstateNotNULL(tstate);
+
+ if (argc == 0) {
+ _PyErr_SetString(tstate, PyExc_TypeError,
+ "audit() missing 1 required positional argument: "
+ "'event'");
+ return NULL;
+ }
+
+ if (!should_audit(tstate->interp)) {
+ Py_RETURN_NONE;
+ }
+
+ PyObject *auditEvent = args[0];
+ if (!auditEvent) {
+ _PyErr_SetString(tstate, PyExc_TypeError,
+ "expected str for argument 'event'");
+ return NULL;
+ }
+ if (!PyUnicode_Check(auditEvent)) {
+ _PyErr_Format(tstate, PyExc_TypeError,
+ "expected str for argument 'event', not %.200s",
+ Py_TYPE(auditEvent)->tp_name);
+ return NULL;
+ }
+ const char *event = PyUnicode_AsUTF8(auditEvent);
+ if (!event) {
+ return NULL;
+ }
+
+ PyObject *auditArgs = _PyTuple_FromArray(args + 1, argc - 1);
+ if (!auditArgs) {
+ return NULL;
+ }
+
+ int res = _PySys_Audit(tstate, event, "O", auditArgs);
+ Py_DECREF(auditArgs);
+
+ if (res < 0) {
+ return NULL;
+ }
+
+ Py_RETURN_NONE;
+}
+
+
+static PyObject *
+sys_breakpointhook(PyObject *self, PyObject *const *args, Py_ssize_t nargs, PyObject *keywords)
+{
+ PyThreadState *tstate = _PyThreadState_GET();
+ assert(!_PyErr_Occurred(tstate));
+ char *envar = Py_GETENV("PYTHONBREAKPOINT");
+
+ if (envar == NULL || strlen(envar) == 0) {
+ envar = "pdb.set_trace";
+ }
+ else if (!strcmp(envar, "0")) {
+ /* The breakpoint is explicitly no-op'd. */
+ Py_RETURN_NONE;
+ }
+ /* According to POSIX the string returned by getenv() might be invalidated
+ * or the string content might be overwritten by a subsequent call to
+ * getenv(). Since importing a module can performs the getenv() calls,
+ * we need to save a copy of envar. */
+ envar = _PyMem_RawStrdup(envar);
+ if (envar == NULL) {
+ _PyErr_NoMemory(tstate);
+ return NULL;
+ }
+ const char *last_dot = strrchr(envar, '.');
+ const char *attrname = NULL;
+ PyObject *modulepath = NULL;
+
+ if (last_dot == NULL) {
+ /* The breakpoint is a built-in, e.g. PYTHONBREAKPOINT=int */
+ modulepath = PyUnicode_FromString("builtins");
+ attrname = envar;
+ }
+ else if (last_dot != envar) {
+ /* Split on the last dot; */
+ modulepath = PyUnicode_FromStringAndSize(envar, last_dot - envar);
+ attrname = last_dot + 1;
+ }
+ else {
+ goto warn;
+ }
+ if (modulepath == NULL) {
+ PyMem_RawFree(envar);
+ return NULL;
+ }
+
+ PyObject *module = PyImport_Import(modulepath);
+ Py_DECREF(modulepath);
+
+ if (module == NULL) {
+ if (_PyErr_ExceptionMatches(tstate, PyExc_ImportError)) {
+ goto warn;
+ }
+ PyMem_RawFree(envar);
+ return NULL;
+ }
+
+ PyObject *hook = PyObject_GetAttrString(module, attrname);
+ Py_DECREF(module);
+
+ if (hook == NULL) {
+ if (_PyErr_ExceptionMatches(tstate, PyExc_AttributeError)) {
+ goto warn;
+ }
+ PyMem_RawFree(envar);
+ return NULL;
+ }
+ PyMem_RawFree(envar);
+ PyObject *retval = PyObject_Vectorcall(hook, args, nargs, keywords);
+ Py_DECREF(hook);
+ return retval;
+
+ warn:
+ /* If any of the imports went wrong, then warn and ignore. */
+ _PyErr_Clear(tstate);
+ int status = PyErr_WarnFormat(
+ PyExc_RuntimeWarning, 0,
+ "Ignoring unimportable $PYTHONBREAKPOINT: \"%s\"", envar);
+ PyMem_RawFree(envar);
+ if (status < 0) {
+ /* Printing the warning raised an exception. */
+ return NULL;
+ }
+ /* The warning was (probably) issued. */
+ Py_RETURN_NONE;
+}
+
+PyDoc_STRVAR(breakpointhook_doc,
+"breakpointhook(*args, **kws)\n"
+"\n"
+"This hook function is called by built-in breakpoint().\n"
+);
+
+/* Write repr(o) to sys.stdout using sys.stdout.encoding and 'backslashreplace'
+ error handler. If sys.stdout has a buffer attribute, use
+ sys.stdout.buffer.write(encoded), otherwise redecode the string and use
+ sys.stdout.write(redecoded).
+
+ Helper function for sys_displayhook(). */
+static int
+sys_displayhook_unencodable(PyObject *outf, PyObject *o)
+{
+ PyObject *stdout_encoding = NULL;
+ PyObject *encoded, *escaped_str, *repr_str, *buffer, *result;
+ const char *stdout_encoding_str;
+ int ret;
+
+ stdout_encoding = PyObject_GetAttr(outf, &_Py_ID(encoding));
+ if (stdout_encoding == NULL)
+ goto error;
+ stdout_encoding_str = PyUnicode_AsUTF8(stdout_encoding);
+ if (stdout_encoding_str == NULL)
+ goto error;
+
+ repr_str = PyObject_Repr(o);
+ if (repr_str == NULL)
+ goto error;
+ encoded = PyUnicode_AsEncodedString(repr_str,
+ stdout_encoding_str,
+ "backslashreplace");
+ Py_DECREF(repr_str);
+ if (encoded == NULL)
+ goto error;
+
+ if (_PyObject_LookupAttr(outf, &_Py_ID(buffer), &buffer) < 0) {
+ Py_DECREF(encoded);
+ goto error;
+ }
+ if (buffer) {
+ result = PyObject_CallMethodOneArg(buffer, &_Py_ID(write), encoded);
+ Py_DECREF(buffer);
+ Py_DECREF(encoded);
+ if (result == NULL)
+ goto error;
+ Py_DECREF(result);
+ }
+ else {
+ escaped_str = PyUnicode_FromEncodedObject(encoded,
+ stdout_encoding_str,
+ "strict");
+ Py_DECREF(encoded);
+ if (PyFile_WriteObject(escaped_str, outf, Py_PRINT_RAW) != 0) {
+ Py_DECREF(escaped_str);
+ goto error;
+ }
+ Py_DECREF(escaped_str);
+ }
+ ret = 0;
+ goto finally;
+
+error:
+ ret = -1;
+finally:
+ Py_XDECREF(stdout_encoding);
+ return ret;
+}
+
+/*[clinic input]
+sys.displayhook
+
+ object as o: object
+ /
+
+Print an object to sys.stdout and also save it in builtins._
+[clinic start generated code]*/
+
+static PyObject *
+sys_displayhook(PyObject *module, PyObject *o)
+/*[clinic end generated code: output=347477d006df92ed input=08ba730166d7ef72]*/
+{
+ PyObject *outf;
+ PyObject *builtins;
+ PyThreadState *tstate = _PyThreadState_GET();
+
+ builtins = PyImport_GetModule(&_Py_ID(builtins));
+ if (builtins == NULL) {
+ if (!_PyErr_Occurred(tstate)) {
+ _PyErr_SetString(tstate, PyExc_RuntimeError,
+ "lost builtins module");
+ }
+ return NULL;
+ }
+ Py_DECREF(builtins);
+
+ /* Print value except if None */
+ /* After printing, also assign to '_' */
+ /* Before, set '_' to None to avoid recursion */
+ if (o == Py_None) {
+ Py_RETURN_NONE;
+ }
+ if (PyObject_SetAttr(builtins, &_Py_ID(_), Py_None) != 0)
+ return NULL;
+ outf = _PySys_GetAttr(tstate, &_Py_ID(stdout));
+ if (outf == NULL || outf == Py_None) {
+ _PyErr_SetString(tstate, PyExc_RuntimeError, "lost sys.stdout");
+ return NULL;
+ }
+ if (PyFile_WriteObject(o, outf, 0) != 0) {
+ if (_PyErr_ExceptionMatches(tstate, PyExc_UnicodeEncodeError)) {
+ int err;
+ /* repr(o) is not encodable to sys.stdout.encoding with
+ * sys.stdout.errors error handler (which is probably 'strict') */
+ _PyErr_Clear(tstate);
+ err = sys_displayhook_unencodable(outf, o);
+ if (err) {
+ return NULL;
+ }
+ }
+ else {
+ return NULL;
+ }
+ }
+ _Py_DECLARE_STR(newline, "\n");
+ if (PyFile_WriteObject(&_Py_STR(newline), outf, Py_PRINT_RAW) != 0)
+ return NULL;
+ if (PyObject_SetAttr(builtins, &_Py_ID(_), o) != 0)
+ return NULL;
+ Py_RETURN_NONE;
+}
+
+
+/*[clinic input]
+sys.excepthook
+
+ exctype: object
+ value: object
+ traceback: object
+ /
+
+Handle an exception by displaying it with a traceback on sys.stderr.
+[clinic start generated code]*/
+
+static PyObject *
+sys_excepthook_impl(PyObject *module, PyObject *exctype, PyObject *value,
+ PyObject *traceback)
+/*[clinic end generated code: output=18d99fdda21b6b5e input=ecf606fa826f19d9]*/
+{
+ PyErr_Display(NULL, value, traceback);
+ Py_RETURN_NONE;
+}
+
+
+/*[clinic input]
+sys.exception
+
+Return the current exception.
+
+Return the most recent exception caught by an except clause
+in the current stack frame or in an older stack frame, or None
+if no such exception exists.
+[clinic start generated code]*/
+
+static PyObject *
+sys_exception_impl(PyObject *module)
+/*[clinic end generated code: output=2381ee2f25953e40 input=c88fbb94b6287431]*/
+{
+ _PyErr_StackItem *err_info = _PyErr_GetTopmostException(_PyThreadState_GET());
+ if (err_info->exc_value != NULL) {
+ return Py_NewRef(err_info->exc_value);
+ }
+ Py_RETURN_NONE;
+}
+
+
+/*[clinic input]
+sys.exc_info
+
+Return current exception information: (type, value, traceback).
+
+Return information about the most recent exception caught by an except
+clause in the current stack frame or in an older stack frame.
+[clinic start generated code]*/
+
+static PyObject *
+sys_exc_info_impl(PyObject *module)
+/*[clinic end generated code: output=3afd0940cf3a4d30 input=b5c5bf077788a3e5]*/
+{
+ _PyErr_StackItem *err_info = _PyErr_GetTopmostException(_PyThreadState_GET());
+ return _PyErr_StackItemToExcInfoTuple(err_info);
+}
+
+
+/*[clinic input]
+sys.unraisablehook
+
+ unraisable: object
+ /
+
+Handle an unraisable exception.
+
+The unraisable argument has the following attributes:
+
+* exc_type: Exception type.
+* exc_value: Exception value, can be None.
+* exc_traceback: Exception traceback, can be None.
+* err_msg: Error message, can be None.
+* object: Object causing the exception, can be None.
+[clinic start generated code]*/
+
+static PyObject *
+sys_unraisablehook(PyObject *module, PyObject *unraisable)
+/*[clinic end generated code: output=bb92838b32abaa14 input=ec3af148294af8d3]*/
+{
+ return _PyErr_WriteUnraisableDefaultHook(unraisable);
+}
+
+
+/*[clinic input]
+sys.exit
+
+ status: object = None
+ /
+
+Exit the interpreter by raising SystemExit(status).
+
+If the status is omitted or None, it defaults to zero (i.e., success).
+If the status is an integer, it will be used as the system exit status.
+If it is another kind of object, it will be printed and the system
+exit status will be one (i.e., failure).
+[clinic start generated code]*/
+
+static PyObject *
+sys_exit_impl(PyObject *module, PyObject *status)
+/*[clinic end generated code: output=13870986c1ab2ec0 input=b86ca9497baa94f2]*/
+{
+ /* Raise SystemExit so callers may catch it or clean up. */
+ PyErr_SetObject(PyExc_SystemExit, status);
+ return NULL;
+}
+
+
+
+/*[clinic input]
+sys.getdefaultencoding
+
+Return the current default encoding used by the Unicode implementation.
+[clinic start generated code]*/
+
+static PyObject *
+sys_getdefaultencoding_impl(PyObject *module)
+/*[clinic end generated code: output=256d19dfcc0711e6 input=d416856ddbef6909]*/
+{
+ _Py_DECLARE_STR(utf_8, "utf-8");
+ PyObject *ret = &_Py_STR(utf_8);
+ return Py_NewRef(ret);
+}
+
+/*[clinic input]
+sys.getfilesystemencoding
+
+Return the encoding used to convert Unicode filenames to OS filenames.
+[clinic start generated code]*/
+
+static PyObject *
+sys_getfilesystemencoding_impl(PyObject *module)
+/*[clinic end generated code: output=1dc4bdbe9be44aa7 input=8475f8649b8c7d8c]*/
+{
+ PyInterpreterState *interp = _PyInterpreterState_GET();
+ const PyConfig *config = _PyInterpreterState_GetConfig(interp);
+ return PyUnicode_FromWideChar(config->filesystem_encoding, -1);
+}
+
+/*[clinic input]
+sys.getfilesystemencodeerrors
+
+Return the error mode used Unicode to OS filename conversion.
+[clinic start generated code]*/
+
+static PyObject *
+sys_getfilesystemencodeerrors_impl(PyObject *module)
+/*[clinic end generated code: output=ba77b36bbf7c96f5 input=22a1e8365566f1e5]*/
+{
+ PyInterpreterState *interp = _PyInterpreterState_GET();
+ const PyConfig *config = _PyInterpreterState_GetConfig(interp);
+ return PyUnicode_FromWideChar(config->filesystem_errors, -1);
+}
+
+/*[clinic input]
+sys.intern
+
+ string as s: unicode
+ /
+
+``Intern'' the given string.
+
+This enters the string in the (global) table of interned strings whose
+purpose is to speed up dictionary lookups. Return the string itself or
+the previously interned string object with the same value.
+[clinic start generated code]*/
+
+static PyObject *
+sys_intern_impl(PyObject *module, PyObject *s)
+/*[clinic end generated code: output=be680c24f5c9e5d6 input=849483c006924e2f]*/
+{
+ if (PyUnicode_CheckExact(s)) {
+ Py_INCREF(s);
+ PyUnicode_InternInPlace(&s);
+ return s;
+ }
+ else {
+ PyErr_Format(PyExc_TypeError,
+ "can't intern %.400s", Py_TYPE(s)->tp_name);
+ return NULL;
+ }
+}
+
+
+/*
+ * Cached interned string objects used for calling the profile and
+ * trace functions.
+ */
+static PyObject *whatstrings[8] = {
+ &_Py_ID(call),
+ &_Py_ID(exception),
+ &_Py_ID(line),
+ &_Py_ID(return),
+ &_Py_ID(c_call),
+ &_Py_ID(c_exception),
+ &_Py_ID(c_return),
+ &_Py_ID(opcode),
+};
+
+
+static PyObject *
+call_trampoline(PyThreadState *tstate, PyObject* callback,
+ PyFrameObject *frame, int what, PyObject *arg)
+{
+
+ PyObject *stack[3];
+ stack[0] = (PyObject *)frame;
+ stack[1] = whatstrings[what];
+ stack[2] = (arg != NULL) ? arg : Py_None;
+
+ /* Discard any previous modifications the frame's fast locals */
+ if (frame->f_fast_as_locals) {
+ if (PyFrame_FastToLocalsWithError(frame) < 0) {
+ return NULL;
+ }
+ }
+
+ /* call the Python-level function */
+ PyObject *result = _PyObject_FastCallTstate(tstate, callback, stack, 3);
+
+ PyFrame_LocalsToFast(frame, 1);
+ return result;
+}
+
+static int
+profile_trampoline(PyObject *self, PyFrameObject *frame,
+ int what, PyObject *arg)
+{
+ PyThreadState *tstate = _PyThreadState_GET();
+ PyObject *result = call_trampoline(tstate, self, frame, what, arg);
+ if (result == NULL) {
+ _PyEval_SetProfile(tstate, NULL, NULL);
+ return -1;
+ }
+
+ Py_DECREF(result);
+ return 0;
+}
+
+static int
+trace_trampoline(PyObject *self, PyFrameObject *frame,
+ int what, PyObject *arg)
+{
+ PyObject *callback;
+ if (what == PyTrace_CALL) {
+ callback = self;
+ }
+ else {
+ callback = frame->f_trace;
+ }
+ if (callback == NULL) {
+ return 0;
+ }
+
+ PyThreadState *tstate = _PyThreadState_GET();
+ PyObject *result = call_trampoline(tstate, callback, frame, what, arg);
+ if (result == NULL) {
+ _PyEval_SetTrace(tstate, NULL, NULL);
+ Py_CLEAR(frame->f_trace);
+ return -1;
+ }
+
+ if (result != Py_None) {
+ Py_XSETREF(frame->f_trace, result);
+ }
+ else {
+ Py_DECREF(result);
+ }
+ return 0;
+}
+
+static PyObject *
+sys_settrace(PyObject *self, PyObject *args)
+{
+ PyThreadState *tstate = _PyThreadState_GET();
+ if (args == Py_None) {
+ if (_PyEval_SetTrace(tstate, NULL, NULL) < 0) {
+ return NULL;
+ }
+ }
+ else {
+ if (_PyEval_SetTrace(tstate, trace_trampoline, args) < 0) {
+ return NULL;
+ }
+ }
+ Py_RETURN_NONE;
+}
+
+PyDoc_STRVAR(settrace_doc,
+"settrace(function)\n\
+\n\
+Set the global debug tracing function. It will be called on each\n\
+function call. See the debugger chapter in the library manual."
+);
+
+/*[clinic input]
+sys._settraceallthreads
+
+ arg: object
+ /
+
+Set the global debug tracing function in all running threads belonging to the current interpreter.
+
+It will be called on each function call. See the debugger chapter
+in the library manual.
+[clinic start generated code]*/
+
+static PyObject *
+sys__settraceallthreads(PyObject *module, PyObject *arg)
+/*[clinic end generated code: output=161cca30207bf3ca input=5906aa1485a50289]*/
+{
+ PyObject* argument = NULL;
+ Py_tracefunc func = NULL;
+
+ if (arg != Py_None) {
+ func = trace_trampoline;
+ argument = arg;
+ }
+
+
+ PyEval_SetTraceAllThreads(func, argument);
+
+ Py_RETURN_NONE;
+}
+
+/*[clinic input]
+sys.gettrace
+
+Return the global debug tracing function set with sys.settrace.
+
+See the debugger chapter in the library manual.
+[clinic start generated code]*/
+
+static PyObject *
+sys_gettrace_impl(PyObject *module)
+/*[clinic end generated code: output=e97e3a4d8c971b6e input=373b51bb2147f4d8]*/
+{
+ PyThreadState *tstate = _PyThreadState_GET();
+ PyObject *temp = tstate->c_traceobj;
+
+ if (temp == NULL)
+ temp = Py_None;
+ return Py_NewRef(temp);
+}
+
+static PyObject *
+sys_setprofile(PyObject *self, PyObject *args)
+{
+ PyThreadState *tstate = _PyThreadState_GET();
+ if (args == Py_None) {
+ if (_PyEval_SetProfile(tstate, NULL, NULL) < 0) {
+ return NULL;
+ }
+ }
+ else {
+ if (_PyEval_SetProfile(tstate, profile_trampoline, args) < 0) {
+ return NULL;
+ }
+ }
+ Py_RETURN_NONE;
+}
+
+PyDoc_STRVAR(setprofile_doc,
+"setprofile(function)\n\
+\n\
+Set the profiling function. It will be called on each function call\n\
+and return. See the profiler chapter in the library manual."
+);
+
+/*[clinic input]
+sys._setprofileallthreads
+
+ arg: object
+ /
+
+Set the profiling function in all running threads belonging to the current interpreter.
+
+It will be called on each function call and return. See the profiler chapter
+in the library manual.
+[clinic start generated code]*/
+
+static PyObject *
+sys__setprofileallthreads(PyObject *module, PyObject *arg)
+/*[clinic end generated code: output=2d61319e27b309fe input=d1a356d3f4f9060a]*/
+{
+ PyObject* argument = NULL;
+ Py_tracefunc func = NULL;
+
+ if (arg != Py_None) {
+ func = profile_trampoline;
+ argument = arg;
+ }
+
+ PyEval_SetProfileAllThreads(func, argument);
+
+ Py_RETURN_NONE;
+}
+
+/*[clinic input]
+sys.getprofile
+
+Return the profiling function set with sys.setprofile.
+
+See the profiler chapter in the library manual.
+[clinic start generated code]*/
+
+static PyObject *
+sys_getprofile_impl(PyObject *module)
+/*[clinic end generated code: output=579b96b373448188 input=1b3209d89a32965d]*/
+{
+ PyThreadState *tstate = _PyThreadState_GET();
+ PyObject *temp = tstate->c_profileobj;
+
+ if (temp == NULL)
+ temp = Py_None;
+ return Py_NewRef(temp);
+}
+
+
+/*[clinic input]
+sys.setswitchinterval
+
+ interval: double
+ /
+
+Set the ideal thread switching delay inside the Python interpreter.
+
+The actual frequency of switching threads can be lower if the
+interpreter executes long sequences of uninterruptible code
+(this is implementation-specific and workload-dependent).
+
+The parameter must represent the desired switching delay in seconds
+A typical value is 0.005 (5 milliseconds).
+[clinic start generated code]*/
+
+static PyObject *
+sys_setswitchinterval_impl(PyObject *module, double interval)
+/*[clinic end generated code: output=65a19629e5153983 input=561b477134df91d9]*/
+{
+ if (interval <= 0.0) {
+ PyErr_SetString(PyExc_ValueError,
+ "switch interval must be strictly positive");
+ return NULL;
+ }
+ _PyEval_SetSwitchInterval((unsigned long) (1e6 * interval));
+ Py_RETURN_NONE;
+}
+
+
+/*[clinic input]
+sys.getswitchinterval -> double
+
+Return the current thread switch interval; see sys.setswitchinterval().
+[clinic start generated code]*/
+
+static double
+sys_getswitchinterval_impl(PyObject *module)
+/*[clinic end generated code: output=a38c277c85b5096d input=bdf9d39c0ebbbb6f]*/
+{
+ return 1e-6 * _PyEval_GetSwitchInterval();
+}
+
+/*[clinic input]
+sys.setrecursionlimit
+
+ limit as new_limit: int
+ /
+
+Set the maximum depth of the Python interpreter stack to n.
+
+This limit prevents infinite recursion from causing an overflow of the C
+stack and crashing Python. The highest possible limit is platform-
+dependent.
+[clinic start generated code]*/
+
+static PyObject *
+sys_setrecursionlimit_impl(PyObject *module, int new_limit)
+/*[clinic end generated code: output=35e1c64754800ace input=b0f7a23393924af3]*/
+{
+ PyThreadState *tstate = _PyThreadState_GET();
+
+ if (new_limit < 1) {
+ _PyErr_SetString(tstate, PyExc_ValueError,
+ "recursion limit must be greater or equal than 1");
+ return NULL;
+ }
+
+ /* Reject too low new limit if the current recursion depth is higher than
+ the new low-water mark. */
+ int depth = tstate->py_recursion_limit - tstate->py_recursion_remaining;
+ if (depth >= new_limit) {
+ _PyErr_Format(tstate, PyExc_RecursionError,
+ "cannot set the recursion limit to %i at "
+ "the recursion depth %i: the limit is too low",
+ new_limit, depth);
+ return NULL;
+ }
+
+ Py_SetRecursionLimit(new_limit);
+ Py_RETURN_NONE;
+}
+
+/*[clinic input]
+sys.set_coroutine_origin_tracking_depth
+
+ depth: int
+
+Enable or disable origin tracking for coroutine objects in this thread.
+
+Coroutine objects will track 'depth' frames of traceback information
+about where they came from, available in their cr_origin attribute.
+
+Set a depth of 0 to disable.
+[clinic start generated code]*/
+
+static PyObject *
+sys_set_coroutine_origin_tracking_depth_impl(PyObject *module, int depth)
+/*[clinic end generated code: output=0a2123c1cc6759c5 input=a1d0a05f89d2c426]*/
+{
+ if (_PyEval_SetCoroutineOriginTrackingDepth(depth) < 0) {
+ return NULL;
+ }
+ Py_RETURN_NONE;
+}
+
+/*[clinic input]
+sys.get_coroutine_origin_tracking_depth -> int
+
+Check status of origin tracking for coroutine objects in this thread.
+[clinic start generated code]*/
+
+static int
+sys_get_coroutine_origin_tracking_depth_impl(PyObject *module)
+/*[clinic end generated code: output=3699f7be95a3afb8 input=335266a71205b61a]*/
+{
+ return _PyEval_GetCoroutineOriginTrackingDepth();
+}
+
+static PyTypeObject AsyncGenHooksType;
+
+PyDoc_STRVAR(asyncgen_hooks_doc,
+"asyncgen_hooks\n\
+\n\
+A named tuple providing information about asynchronous\n\
+generators hooks. The attributes are read only.");
+
+static PyStructSequence_Field asyncgen_hooks_fields[] = {
+ {"firstiter", "Hook to intercept first iteration"},
+ {"finalizer", "Hook to intercept finalization"},
+ {0}
+};
+
+static PyStructSequence_Desc asyncgen_hooks_desc = {
+ "asyncgen_hooks", /* name */
+ asyncgen_hooks_doc, /* doc */
+ asyncgen_hooks_fields , /* fields */
+ 2
+};
+
+static PyObject *
+sys_set_asyncgen_hooks(PyObject *self, PyObject *args, PyObject *kw)
+{
+ static char *keywords[] = {"firstiter", "finalizer", NULL};
+ PyObject *firstiter = NULL;
+ PyObject *finalizer = NULL;
+
+ if (!PyArg_ParseTupleAndKeywords(
+ args, kw, "|OO", keywords,
+ &firstiter, &finalizer)) {
+ return NULL;
+ }
+
+ if (finalizer && finalizer != Py_None) {
+ if (!PyCallable_Check(finalizer)) {
+ PyErr_Format(PyExc_TypeError,
+ "callable finalizer expected, got %.50s",
+ Py_TYPE(finalizer)->tp_name);
+ return NULL;
+ }
+ if (_PyEval_SetAsyncGenFinalizer(finalizer) < 0) {
+ return NULL;
+ }
+ }
+ else if (finalizer == Py_None && _PyEval_SetAsyncGenFinalizer(NULL) < 0) {
+ return NULL;
+ }
+
+ if (firstiter && firstiter != Py_None) {
+ if (!PyCallable_Check(firstiter)) {
+ PyErr_Format(PyExc_TypeError,
+ "callable firstiter expected, got %.50s",
+ Py_TYPE(firstiter)->tp_name);
+ return NULL;
+ }
+ if (_PyEval_SetAsyncGenFirstiter(firstiter) < 0) {
+ return NULL;
+ }
+ }
+ else if (firstiter == Py_None && _PyEval_SetAsyncGenFirstiter(NULL) < 0) {
+ return NULL;
+ }
+
+ Py_RETURN_NONE;
+}
+
+PyDoc_STRVAR(set_asyncgen_hooks_doc,
+"set_asyncgen_hooks([firstiter] [, finalizer])\n\
+\n\
+Set a finalizer for async generators objects."
+);
+
+/*[clinic input]
+sys.get_asyncgen_hooks
+
+Return the installed asynchronous generators hooks.
+
+This returns a namedtuple of the form (firstiter, finalizer).
+[clinic start generated code]*/
+
+static PyObject *
+sys_get_asyncgen_hooks_impl(PyObject *module)
+/*[clinic end generated code: output=53a253707146f6cf input=3676b9ea62b14625]*/
+{
+ PyObject *res;
+ PyObject *firstiter = _PyEval_GetAsyncGenFirstiter();
+ PyObject *finalizer = _PyEval_GetAsyncGenFinalizer();
+
+ res = PyStructSequence_New(&AsyncGenHooksType);
+ if (res == NULL) {
+ return NULL;
+ }
+
+ if (firstiter == NULL) {
+ firstiter = Py_None;
+ }
+
+ if (finalizer == NULL) {
+ finalizer = Py_None;
+ }
+
+ PyStructSequence_SET_ITEM(res, 0, Py_NewRef(firstiter));
+ PyStructSequence_SET_ITEM(res, 1, Py_NewRef(finalizer));
+
+ return res;
+}
+
+
+static PyTypeObject Hash_InfoType;
+
+PyDoc_STRVAR(hash_info_doc,
+"hash_info\n\
+\n\
+A named tuple providing parameters used for computing\n\
+hashes. The attributes are read only.");
+
+static PyStructSequence_Field hash_info_fields[] = {
+ {"width", "width of the type used for hashing, in bits"},
+ {"modulus", "prime number giving the modulus on which the hash "
+ "function is based"},
+ {"inf", "value to be used for hash of a positive infinity"},
+ {"nan", "value to be used for hash of a nan"},
+ {"imag", "multiplier used for the imaginary part of a complex number"},
+ {"algorithm", "name of the algorithm for hashing of str, bytes and "
+ "memoryviews"},
+ {"hash_bits", "internal output size of hash algorithm"},
+ {"seed_bits", "seed size of hash algorithm"},
+ {"cutoff", "small string optimization cutoff"},
+ {NULL, NULL}
+};
+
+static PyStructSequence_Desc hash_info_desc = {
+ "sys.hash_info",
+ hash_info_doc,
+ hash_info_fields,
+ 9,
+};
+
+static PyObject *
+get_hash_info(PyThreadState *tstate)
+{
+ PyObject *hash_info;
+ int field = 0;
+ PyHash_FuncDef *hashfunc;
+ hash_info = PyStructSequence_New(&Hash_InfoType);
+ if (hash_info == NULL)
+ return NULL;
+ hashfunc = PyHash_GetFuncDef();
+ PyStructSequence_SET_ITEM(hash_info, field++,
+ PyLong_FromLong(8*sizeof(Py_hash_t)));
+ PyStructSequence_SET_ITEM(hash_info, field++,
+ PyLong_FromSsize_t(_PyHASH_MODULUS));
+ PyStructSequence_SET_ITEM(hash_info, field++,
+ PyLong_FromLong(_PyHASH_INF));
+ PyStructSequence_SET_ITEM(hash_info, field++,
+ PyLong_FromLong(0)); // This is no longer used
+ PyStructSequence_SET_ITEM(hash_info, field++,
+ PyLong_FromLong(_PyHASH_IMAG));
+ PyStructSequence_SET_ITEM(hash_info, field++,
+ PyUnicode_FromString(hashfunc->name));
+ PyStructSequence_SET_ITEM(hash_info, field++,
+ PyLong_FromLong(hashfunc->hash_bits));
+ PyStructSequence_SET_ITEM(hash_info, field++,
+ PyLong_FromLong(hashfunc->seed_bits));
+ PyStructSequence_SET_ITEM(hash_info, field++,
+ PyLong_FromLong(Py_HASH_CUTOFF));
+ if (_PyErr_Occurred(tstate)) {
+ Py_CLEAR(hash_info);
+ return NULL;
+ }
+ return hash_info;
+}
+/*[clinic input]
+sys.getrecursionlimit
+
+Return the current value of the recursion limit.
+
+The recursion limit is the maximum depth of the Python interpreter
+stack. This limit prevents infinite recursion from causing an overflow
+of the C stack and crashing Python.
+[clinic start generated code]*/
+
+static PyObject *
+sys_getrecursionlimit_impl(PyObject *module)
+/*[clinic end generated code: output=d571fb6b4549ef2e input=1c6129fd2efaeea8]*/
+{
+ return PyLong_FromLong(Py_GetRecursionLimit());
+}
+
+#ifdef MS_WINDOWS
+
+static PyTypeObject WindowsVersionType = {0, 0, 0, 0, 0, 0};
+
+static PyStructSequence_Field windows_version_fields[] = {
+ {"major", "Major version number"},
+ {"minor", "Minor version number"},
+ {"build", "Build number"},
+ {"platform", "Operating system platform"},
+ {"service_pack", "Latest Service Pack installed on the system"},
+ {"service_pack_major", "Service Pack major version number"},
+ {"service_pack_minor", "Service Pack minor version number"},
+ {"suite_mask", "Bit mask identifying available product suites"},
+ {"product_type", "System product type"},
+ {"platform_version", "Diagnostic version number"},
+ {0}
+};
+
+static PyStructSequence_Desc windows_version_desc = {
+ "sys.getwindowsversion", /* name */
+ sys_getwindowsversion__doc__, /* doc */
+ windows_version_fields, /* fields */
+ 5 /* For backward compatibility,
+ only the first 5 items are accessible
+ via indexing, the rest are name only */
+};
+
+static PyObject *
+_sys_getwindowsversion_from_kernel32(void)
+{
+#ifndef MS_WINDOWS_DESKTOP
+ return NULL;
+#else
+ HANDLE hKernel32;
+ wchar_t kernel32_path[MAX_PATH];
+ LPVOID verblock;
+ DWORD verblock_size;
+ VS_FIXEDFILEINFO *ffi;
+ UINT ffi_len;
+ DWORD realMajor, realMinor, realBuild;
+
+ Py_BEGIN_ALLOW_THREADS
+ hKernel32 = GetModuleHandleW(L"kernel32.dll");
+ Py_END_ALLOW_THREADS
+ if (!hKernel32 || !GetModuleFileNameW(hKernel32, kernel32_path, MAX_PATH)) {
+ PyErr_SetFromWindowsErr(0);
+ return NULL;
+ }
+ verblock_size = GetFileVersionInfoSizeW(kernel32_path, NULL);
+ if (!verblock_size) {
+ PyErr_SetFromWindowsErr(0);
+ return NULL;
+ }
+ verblock = PyMem_RawMalloc(verblock_size);
+ if (!verblock ||
+ !GetFileVersionInfoW(kernel32_path, 0, verblock_size, verblock) ||
+ !VerQueryValueW(verblock, L"", (LPVOID)&ffi, &ffi_len)) {
+ PyErr_SetFromWindowsErr(0);
+ return NULL;
+ }
+
+ realMajor = HIWORD(ffi->dwProductVersionMS);
+ realMinor = LOWORD(ffi->dwProductVersionMS);
+ realBuild = HIWORD(ffi->dwProductVersionLS);
+ PyMem_RawFree(verblock);
+ return Py_BuildValue("(kkk)", realMajor, realMinor, realBuild);
+#endif /* !MS_WINDOWS_DESKTOP */
+}
+
+/* Disable deprecation warnings about GetVersionEx as the result is
+ being passed straight through to the caller, who is responsible for
+ using it correctly. */
+#pragma warning(push)
+#pragma warning(disable:4996)
+
+/*[clinic input]
+sys.getwindowsversion
+
+Return info about the running version of Windows as a named tuple.
+
+The members are named: major, minor, build, platform, service_pack,
+service_pack_major, service_pack_minor, suite_mask, product_type and
+platform_version. For backward compatibility, only the first 5 items
+are available by indexing. All elements are numbers, except
+service_pack and platform_type which are strings, and platform_version
+which is a 3-tuple. Platform is always 2. Product_type may be 1 for a
+workstation, 2 for a domain controller, 3 for a server.
+Platform_version is a 3-tuple containing a version number that is
+intended for identifying the OS rather than feature detection.
+[clinic start generated code]*/
+
+static PyObject *
+sys_getwindowsversion_impl(PyObject *module)
+/*[clinic end generated code: output=1ec063280b932857 input=73a228a328fee63a]*/
+{
+ PyObject *version;
+ int pos = 0;
+ OSVERSIONINFOEXW ver;
+
+ version = PyObject_GetAttrString(module, "_cached_windows_version");
+ if (version && PyObject_TypeCheck(version, &WindowsVersionType)) {
+ return version;
+ }
+ Py_XDECREF(version);
+ PyErr_Clear();
+
+ ver.dwOSVersionInfoSize = sizeof(ver);
+ if (!GetVersionExW((OSVERSIONINFOW*) &ver))
+ return PyErr_SetFromWindowsErr(0);
+
+ version = PyStructSequence_New(&WindowsVersionType);
+ if (version == NULL)
+ return NULL;
+
+ PyStructSequence_SET_ITEM(version, pos++, PyLong_FromLong(ver.dwMajorVersion));
+ PyStructSequence_SET_ITEM(version, pos++, PyLong_FromLong(ver.dwMinorVersion));
+ PyStructSequence_SET_ITEM(version, pos++, PyLong_FromLong(ver.dwBuildNumber));
+ PyStructSequence_SET_ITEM(version, pos++, PyLong_FromLong(ver.dwPlatformId));
+ PyStructSequence_SET_ITEM(version, pos++, PyUnicode_FromWideChar(ver.szCSDVersion, -1));
+ PyStructSequence_SET_ITEM(version, pos++, PyLong_FromLong(ver.wServicePackMajor));
+ PyStructSequence_SET_ITEM(version, pos++, PyLong_FromLong(ver.wServicePackMinor));
+ PyStructSequence_SET_ITEM(version, pos++, PyLong_FromLong(ver.wSuiteMask));
+ PyStructSequence_SET_ITEM(version, pos++, PyLong_FromLong(ver.wProductType));
+
+ // GetVersion will lie if we are running in a compatibility mode.
+ // We need to read the version info from a system file resource
+ // to accurately identify the OS version. If we fail for any reason,
+ // just return whatever GetVersion said.
+ PyObject *realVersion = _sys_getwindowsversion_from_kernel32();
+ if (!realVersion) {
+ PyErr_Clear();
+ realVersion = Py_BuildValue("(kkk)",
+ ver.dwMajorVersion,
+ ver.dwMinorVersion,
+ ver.dwBuildNumber
+ );
+ }
+
+ if (realVersion) {
+ PyStructSequence_SET_ITEM(version, pos++, realVersion);
+ }
+
+ if (PyErr_Occurred()) {
+ Py_DECREF(version);
+ return NULL;
+ }
+
+ if (PyObject_SetAttrString(module, "_cached_windows_version", version) < 0) {
+ Py_DECREF(version);
+ return NULL;
+ }
+
+ return version;
+}
+
+#pragma warning(pop)
+
+/*[clinic input]
+sys._enablelegacywindowsfsencoding
+
+Changes the default filesystem encoding to mbcs:replace.
+
+This is done for consistency with earlier versions of Python. See PEP
+529 for more information.
+
+This is equivalent to defining the PYTHONLEGACYWINDOWSFSENCODING
+environment variable before launching Python.
+[clinic start generated code]*/
+
+static PyObject *
+sys__enablelegacywindowsfsencoding_impl(PyObject *module)
+/*[clinic end generated code: output=f5c3855b45e24fe9 input=2bfa931a20704492]*/
+{
+ if (_PyUnicode_EnableLegacyWindowsFSEncoding() < 0) {
+ return NULL;
+ }
+ Py_RETURN_NONE;
+}
+
+#endif /* MS_WINDOWS */
+
+#ifdef HAVE_DLOPEN
+
+/*[clinic input]
+sys.setdlopenflags
+
+ flags as new_val: int
+ /
+
+Set the flags used by the interpreter for dlopen calls.
+
+This is used, for example, when the interpreter loads extension
+modules. Among other things, this will enable a lazy resolving of
+symbols when importing a module, if called as sys.setdlopenflags(0).
+To share symbols across extension modules, call as
+sys.setdlopenflags(os.RTLD_GLOBAL). Symbolic names for the flag
+modules can be found in the os module (RTLD_xxx constants, e.g.
+os.RTLD_LAZY).
+[clinic start generated code]*/
+
+static PyObject *
+sys_setdlopenflags_impl(PyObject *module, int new_val)
+/*[clinic end generated code: output=ec918b7fe0a37281 input=4c838211e857a77f]*/
+{
+ PyInterpreterState *interp = _PyInterpreterState_GET();
+ _PyImport_SetDLOpenFlags(interp, new_val);
+ Py_RETURN_NONE;
+}
+
+
+/*[clinic input]
+sys.getdlopenflags
+
+Return the current value of the flags that are used for dlopen calls.
+
+The flag constants are defined in the os module.
+[clinic start generated code]*/
+
+static PyObject *
+sys_getdlopenflags_impl(PyObject *module)
+/*[clinic end generated code: output=e92cd1bc5005da6e input=dc4ea0899c53b4b6]*/
+{
+ PyInterpreterState *interp = _PyInterpreterState_GET();
+ return PyLong_FromLong(
+ _PyImport_GetDLOpenFlags(interp));
+}
+
+#endif /* HAVE_DLOPEN */
+
+#ifdef USE_MALLOPT
+/* Link with -lmalloc (or -lmpc) on an SGI */
+#include <malloc.h>
+
+/*[clinic input]
+sys.mdebug
+
+ flag: int
+ /
+[clinic start generated code]*/
+
+static PyObject *
+sys_mdebug_impl(PyObject *module, int flag)
+/*[clinic end generated code: output=5431d545847c3637 input=151d150ae1636f8a]*/
+{
+ int flag;
+ mallopt(M_DEBUG, flag);
+ Py_RETURN_NONE;
+}
+#endif /* USE_MALLOPT */
+
+
+/*[clinic input]
+sys.get_int_max_str_digits
+
+Return the maximum string digits limit for non-binary int<->str conversions.
+[clinic start generated code]*/
+
+static PyObject *
+sys_get_int_max_str_digits_impl(PyObject *module)
+/*[clinic end generated code: output=0042f5e8ae0e8631 input=61bf9f99bc8b112d]*/
+{
+ PyInterpreterState *interp = _PyInterpreterState_GET();
+ return PyLong_FromLong(interp->long_state.max_str_digits);
+}
+
+/*[clinic input]
+sys.set_int_max_str_digits
+
+ maxdigits: int
+
+Set the maximum string digits limit for non-binary int<->str conversions.
+[clinic start generated code]*/
+
+static PyObject *
+sys_set_int_max_str_digits_impl(PyObject *module, int maxdigits)
+/*[clinic end generated code: output=734d4c2511f2a56d input=d7e3f325db6910c5]*/
+{
+ PyThreadState *tstate = _PyThreadState_GET();
+ if ((!maxdigits) || (maxdigits >= _PY_LONG_MAX_STR_DIGITS_THRESHOLD)) {
+ tstate->interp->long_state.max_str_digits = maxdigits;
+ Py_RETURN_NONE;
+ } else {
+ PyErr_Format(
+ PyExc_ValueError, "maxdigits must be 0 or larger than %d",
+ _PY_LONG_MAX_STR_DIGITS_THRESHOLD);
+ return NULL;
+ }
+}
+
+size_t
+_PySys_GetSizeOf(PyObject *o)
+{
+ PyObject *res = NULL;
+ PyObject *method;
+ Py_ssize_t size;
+ PyThreadState *tstate = _PyThreadState_GET();
+
+ /* Make sure the type is initialized. float gets initialized late */
+ if (PyType_Ready(Py_TYPE(o)) < 0) {
+ return (size_t)-1;
+ }
+
+ method = _PyObject_LookupSpecial(o, &_Py_ID(__sizeof__));
+ if (method == NULL) {
+ if (!_PyErr_Occurred(tstate)) {
+ _PyErr_Format(tstate, PyExc_TypeError,
+ "Type %.100s doesn't define __sizeof__",
+ Py_TYPE(o)->tp_name);
+ }
+ }
+ else {
+ res = _PyObject_CallNoArgs(method);
+ Py_DECREF(method);
+ }
+
+ if (res == NULL)
+ return (size_t)-1;
+
+ size = PyLong_AsSsize_t(res);
+ Py_DECREF(res);
+ if (size == -1 && _PyErr_Occurred(tstate))
+ return (size_t)-1;
+
+ if (size < 0) {
+ _PyErr_SetString(tstate, PyExc_ValueError,
+ "__sizeof__() should return >= 0");
+ return (size_t)-1;
+ }
+
+ return (size_t)size + _PyType_PreHeaderSize(Py_TYPE(o));
+}
+
+static PyObject *
+sys_getsizeof(PyObject *self, PyObject *args, PyObject *kwds)
+{
+ static char *kwlist[] = {"object", "default", 0};
+ size_t size;
+ PyObject *o, *dflt = NULL;
+ PyThreadState *tstate = _PyThreadState_GET();
+
+ if (!PyArg_ParseTupleAndKeywords(args, kwds, "O|O:getsizeof",
+ kwlist, &o, &dflt)) {
+ return NULL;
+ }
+
+ size = _PySys_GetSizeOf(o);
+
+ if (size == (size_t)-1 && _PyErr_Occurred(tstate)) {
+ /* Has a default value been given */
+ if (dflt != NULL && _PyErr_ExceptionMatches(tstate, PyExc_TypeError)) {
+ _PyErr_Clear(tstate);
+ return Py_NewRef(dflt);
+ }
+ else
+ return NULL;
+ }
+
+ return PyLong_FromSize_t(size);
+}
+
+PyDoc_STRVAR(getsizeof_doc,
+"getsizeof(object [, default]) -> int\n\
+\n\
+Return the size of object in bytes.");
+
+/*[clinic input]
+sys.getrefcount -> Py_ssize_t
+
+ object: object
+ /
+
+Return the reference count of object.
+
+The count returned is generally one higher than you might expect,
+because it includes the (temporary) reference as an argument to
+getrefcount().
+[clinic start generated code]*/
+
+static Py_ssize_t
+sys_getrefcount_impl(PyObject *module, PyObject *object)
+/*[clinic end generated code: output=5fd477f2264b85b2 input=bf474efd50a21535]*/
+{
+ return Py_REFCNT(object);
+}
+
+#ifdef Py_REF_DEBUG
+/*[clinic input]
+sys.gettotalrefcount -> Py_ssize_t
+[clinic start generated code]*/
+
+static Py_ssize_t
+sys_gettotalrefcount_impl(PyObject *module)
+/*[clinic end generated code: output=4103886cf17c25bc input=53b744faa5d2e4f6]*/
+{
+ /* It may make sense to return the total for the current interpreter
+ or have a second function that does so. */
+ return _Py_GetGlobalRefTotal();
+}
+
+#endif /* Py_REF_DEBUG */
+
+/*[clinic input]
+sys.getallocatedblocks -> Py_ssize_t
+
+Return the number of memory blocks currently allocated.
+[clinic start generated code]*/
+
+static Py_ssize_t
+sys_getallocatedblocks_impl(PyObject *module)
+/*[clinic end generated code: output=f0c4e873f0b6dcf7 input=dab13ee346a0673e]*/
+{
+ // It might make sense to return the count
+ // for just the current interpreter.
+ return _Py_GetGlobalAllocatedBlocks();
+}
+
+/*[clinic input]
+sys.getunicodeinternedsize -> Py_ssize_t
+
+Return the number of elements of the unicode interned dictionary
+[clinic start generated code]*/
+
+static Py_ssize_t
+sys_getunicodeinternedsize_impl(PyObject *module)
+/*[clinic end generated code: output=ad0e4c9738ed4129 input=726298eaa063347a]*/
+{
+ return _PyUnicode_InternedSize();
+}
+
+/*[clinic input]
+sys._getframe
+
+ depth: int = 0
+ /
+
+Return a frame object from the call stack.
+
+If optional integer depth is given, return the frame object that many
+calls below the top of the stack. If that is deeper than the call
+stack, ValueError is raised. The default for depth is zero, returning
+the frame at the top of the call stack.
+
+This function should be used for internal and specialized purposes
+only.
+[clinic start generated code]*/
+
+static PyObject *
+sys__getframe_impl(PyObject *module, int depth)
+/*[clinic end generated code: output=d438776c04d59804 input=c1be8a6464b11ee5]*/
+{
+ PyThreadState *tstate = _PyThreadState_GET();
+ _PyInterpreterFrame *frame = tstate->cframe->current_frame;
+
+ if (frame != NULL) {
+ while (depth > 0) {
+ frame = _PyFrame_GetFirstComplete(frame->previous);
+ if (frame == NULL) {
+ break;
+ }
+ --depth;
+ }
+ }
+ if (frame == NULL) {
+ _PyErr_SetString(tstate, PyExc_ValueError,
+ "call stack is not deep enough");
+ return NULL;
+ }
+
+ PyObject *pyFrame = Py_XNewRef((PyObject *)_PyFrame_GetFrameObject(frame));
+ if (pyFrame && _PySys_Audit(tstate, "sys._getframe", "(O)", pyFrame) < 0) {
+ Py_DECREF(pyFrame);
+ return NULL;
+ }
+ return pyFrame;
+}
+
+/*[clinic input]
+sys._current_frames
+
+Return a dict mapping each thread's thread id to its current stack frame.
+
+This function should be used for specialized purposes only.
+[clinic start generated code]*/
+
+static PyObject *
+sys__current_frames_impl(PyObject *module)
+/*[clinic end generated code: output=d2a41ac0a0a3809a input=2a9049c5f5033691]*/
+{
+ return _PyThread_CurrentFrames();
+}
+
+/*[clinic input]
+sys._current_exceptions
+
+Return a dict mapping each thread's identifier to its current raised exception.
+
+This function should be used for specialized purposes only.
+[clinic start generated code]*/
+
+static PyObject *
+sys__current_exceptions_impl(PyObject *module)
+/*[clinic end generated code: output=2ccfd838c746f0ba input=0e91818fbf2edc1f]*/
+{
+ return _PyThread_CurrentExceptions();
+}
+
+/*[clinic input]
+sys.call_tracing
+
+ func: object
+ args as funcargs: object(subclass_of='&PyTuple_Type')
+ /
+
+Call func(*args), while tracing is enabled.
+
+The tracing state is saved, and restored afterwards. This is intended
+to be called from a debugger from a checkpoint, to recursively debug
+some other code.
+[clinic start generated code]*/
+
+static PyObject *
+sys_call_tracing_impl(PyObject *module, PyObject *func, PyObject *funcargs)
+/*[clinic end generated code: output=7e4999853cd4e5a6 input=5102e8b11049f92f]*/
+{
+ return _PyEval_CallTracing(func, funcargs);
+}
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*[clinic input]
+sys._debugmallocstats
+
+Print summary info to stderr about the state of pymalloc's structures.
+
+In Py_DEBUG mode, also perform some expensive internal consistency
+checks.
+[clinic start generated code]*/
+
+static PyObject *
+sys__debugmallocstats_impl(PyObject *module)
+/*[clinic end generated code: output=ec3565f8c7cee46a input=33c0c9c416f98424]*/
+{
+#ifdef WITH_PYMALLOC
+ if (_PyObject_DebugMallocStats(stderr)) {
+ fputc('\n', stderr);
+ }
+#endif
+ _PyObject_DebugTypeStats(stderr);
+
+ Py_RETURN_NONE;
+}
+
+#ifdef Py_TRACE_REFS
+/* Defined in objects.c because it uses static globals in that file */
+extern PyObject *_Py_GetObjects(PyObject *, PyObject *);
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+
+/*[clinic input]
+sys._clear_type_cache
+
+Clear the internal type lookup cache.
+[clinic start generated code]*/
+
+static PyObject *
+sys__clear_type_cache_impl(PyObject *module)
+/*[clinic end generated code: output=20e48ca54a6f6971 input=127f3e04a8d9b555]*/
+{
+ PyType_ClearCache();
+ Py_RETURN_NONE;
+}
+
+/* Note that, for now, we do not have a per-interpreter equivalent
+ for sys.is_finalizing(). */
+
+/*[clinic input]
+sys.is_finalizing
+
+Return True if Python is exiting.
+[clinic start generated code]*/
+
+static PyObject *
+sys_is_finalizing_impl(PyObject *module)
+/*[clinic end generated code: output=735b5ff7962ab281 input=f0df747a039948a5]*/
+{
+ return PyBool_FromLong(_Py_IsFinalizing());
+}
+
+#ifdef Py_STATS
+/*[clinic input]
+sys._stats_on
+
+Turns on stats gathering (stats gathering is on by default).
+[clinic start generated code]*/
+
+static PyObject *
+sys__stats_on_impl(PyObject *module)
+/*[clinic end generated code: output=aca53eafcbb4d9fe input=8ddc6df94e484f3a]*/
+{
+ _py_stats = &_py_stats_struct;
+ Py_RETURN_NONE;
+}
+
+/*[clinic input]
+sys._stats_off
+
+Turns off stats gathering (stats gathering is on by default).
+[clinic start generated code]*/
+
+static PyObject *
+sys__stats_off_impl(PyObject *module)
+/*[clinic end generated code: output=1534c1ee63812214 input=b3e50e71ecf29f66]*/
+{
+ _py_stats = NULL;
+ Py_RETURN_NONE;
+}
+
+/*[clinic input]
+sys._stats_clear
+
+Clears the stats.
+[clinic start generated code]*/
+
+static PyObject *
+sys__stats_clear_impl(PyObject *module)
+/*[clinic end generated code: output=fb65a2525ee50604 input=3e03f2654f44da96]*/
+{
+ _Py_StatsClear();
+ Py_RETURN_NONE;
+}
+
+/*[clinic input]
+sys._stats_dump
+
+Dump stats to file, and clears the stats.
+[clinic start generated code]*/
+
+static PyObject *
+sys__stats_dump_impl(PyObject *module)
+/*[clinic end generated code: output=79f796fb2b4ddf05 input=92346f16d64f6f95]*/
+{
+ _Py_PrintSpecializationStats(1);
+ _Py_StatsClear();
+ Py_RETURN_NONE;
+}
+
+#endif
+
+#ifdef ANDROID_API_LEVEL
+/*[clinic input]
+sys.getandroidapilevel
+
+Return the build time API version of Android as an integer.
+[clinic start generated code]*/
+
+static PyObject *
+sys_getandroidapilevel_impl(PyObject *module)
+/*[clinic end generated code: output=214abf183a1c70c1 input=3e6d6c9fcdd24ac6]*/
+{
+ return PyLong_FromLong(ANDROID_API_LEVEL);
+}
+#endif /* ANDROID_API_LEVEL */
+
+/*[clinic input]
+sys.activate_stack_trampoline
+
+ backend: str
+ /
+
+Activate stack profiler trampoline *backend*.
+[clinic start generated code]*/
+
+static PyObject *
+sys_activate_stack_trampoline_impl(PyObject *module, const char *backend)
+/*[clinic end generated code: output=5783cdeb51874b43 input=a12df928758a82b4]*/
+{
+#ifdef PY_HAVE_PERF_TRAMPOLINE
+ if (strcmp(backend, "perf") == 0) {
+ _PyPerf_Callbacks cur_cb;
+ _PyPerfTrampoline_GetCallbacks(&cur_cb);
+ if (cur_cb.write_state != _Py_perfmap_callbacks.write_state) {
+ if (_PyPerfTrampoline_SetCallbacks(&_Py_perfmap_callbacks) < 0 ) {
+ PyErr_SetString(PyExc_ValueError, "can't activate perf trampoline");
+ return NULL;
+ }
+ }
+ }
+ else {
+ PyErr_Format(PyExc_ValueError, "invalid backend: %s", backend);
+ return NULL;
+ }
+ if (_PyPerfTrampoline_Init(1) < 0) {
+ return NULL;
+ }
+ Py_RETURN_NONE;
+#else
+ PyErr_SetString(PyExc_ValueError, "perf trampoline not available");
+ return NULL;
+#endif
+}
+
+
+/*[clinic input]
+sys.deactivate_stack_trampoline
+
+Deactivate the current stack profiler trampoline backend.
+
+If no stack profiler is activated, this function has no effect.
+[clinic start generated code]*/
+
+static PyObject *
+sys_deactivate_stack_trampoline_impl(PyObject *module)
+/*[clinic end generated code: output=b50da25465df0ef1 input=9f629a6be9fe7fc8]*/
+{
+ if (_PyPerfTrampoline_Init(0) < 0) {
+ return NULL;
+ }
+ Py_RETURN_NONE;
+}
+
+/*[clinic input]
+sys.is_stack_trampoline_active
+
+Return *True* if a stack profiler trampoline is active.
+[clinic start generated code]*/
+
+static PyObject *
+sys_is_stack_trampoline_active_impl(PyObject *module)
+/*[clinic end generated code: output=ab2746de0ad9d293 input=29616b7bf6a0b703]*/
+{
+#ifdef PY_HAVE_PERF_TRAMPOLINE
+ if (_PyIsPerfTrampolineActive()) {
+ Py_RETURN_TRUE;
+ }
+#endif
+ Py_RETURN_FALSE;
+}
+
+
+/*[clinic input]
+sys._getframemodulename
+
+ depth: int = 0
+
+Return the name of the module for a calling frame.
+
+The default depth returns the module containing the call to this API.
+A more typical use in a library will pass a depth of 1 to get the user's
+module rather than the library module.
+
+If no frame, module, or name can be found, returns None.
+[clinic start generated code]*/
+
+static PyObject *
+sys__getframemodulename_impl(PyObject *module, int depth)
+/*[clinic end generated code: output=1d70ef691f09d2db input=d4f1a8ed43b8fb46]*/
+{
+ if (PySys_Audit("sys._getframemodulename", "i", depth) < 0) {
+ return NULL;
+ }
+ _PyInterpreterFrame *f = _PyThreadState_GET()->cframe->current_frame;
+ while (f && (_PyFrame_IsIncomplete(f) || depth-- > 0)) {
+ f = f->previous;
+ }
+ if (f == NULL || f->f_funcobj == NULL) {
+ Py_RETURN_NONE;
+ }
+ PyObject *r = PyFunction_GetModule(f->f_funcobj);
+ if (!r) {
+ PyErr_Clear();
+ r = Py_None;
+ }
+ return Py_NewRef(r);
+}
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+static PerfMapState perf_map_state;
+
+PyAPI_FUNC(int) PyUnstable_PerfMapState_Init(void) {
+#ifndef MS_WINDOWS
+ char filename[100];
+ pid_t pid = getpid();
+ // Use nofollow flag to prevent symlink attacks.
+ int flags = O_WRONLY | O_CREAT | O_APPEND | O_NOFOLLOW;
+#ifdef O_CLOEXEC
+ flags |= O_CLOEXEC;
+#endif
+ snprintf(filename, sizeof(filename) - 1, "/tmp/perf-%jd.map",
+ (intmax_t)pid);
+ int fd = open(filename, flags, 0600);
+ if (fd == -1) {
+ return -1;
+ }
+ else{
+ perf_map_state.perf_map = fdopen(fd, "a");
+ if (perf_map_state.perf_map == NULL) {
+ close(fd);
+ return -1;
+ }
+ }
+ perf_map_state.map_lock = PyThread_allocate_lock();
+ if (perf_map_state.map_lock == NULL) {
+ fclose(perf_map_state.perf_map);
+ return -2;
+ }
+#endif
+ return 0;
+}
+
+PyAPI_FUNC(int) PyUnstable_WritePerfMapEntry(
+ const void *code_addr,
+ unsigned int code_size,
+ const char *entry_name
+) {
+#ifndef MS_WINDOWS
+ if (perf_map_state.perf_map == NULL) {
+ int ret = PyUnstable_PerfMapState_Init();
+ if(ret != 0){
+ return ret;
+ }
+ }
+ PyThread_acquire_lock(perf_map_state.map_lock, 1);
+ fprintf(perf_map_state.perf_map, "%" PRIxPTR " %x %s\n", (uintptr_t) code_addr, code_size, entry_name);
+ fflush(perf_map_state.perf_map);
+ PyThread_release_lock(perf_map_state.map_lock);
+#endif
+ return 0;
+}
+
+PyAPI_FUNC(void) PyUnstable_PerfMapState_Fini(void) {
+#ifndef MS_WINDOWS
+ if (perf_map_state.perf_map != NULL) {
+ // close the file
+ PyThread_acquire_lock(perf_map_state.map_lock, 1);
+ fclose(perf_map_state.perf_map);
+ PyThread_release_lock(perf_map_state.map_lock);
+
+ // clean up the lock and state
+ PyThread_free_lock(perf_map_state.map_lock);
+ perf_map_state.perf_map = NULL;
+ }
+#endif
+}
+
+#ifdef __cplusplus
+}
+#endif
+
+
+static PyMethodDef sys_methods[] = {
+ /* Might as well keep this in alphabetic order */
+ SYS_ADDAUDITHOOK_METHODDEF
+ {"audit", _PyCFunction_CAST(sys_audit), METH_FASTCALL, audit_doc },
+ {"breakpointhook", _PyCFunction_CAST(sys_breakpointhook),
+ METH_FASTCALL | METH_KEYWORDS, breakpointhook_doc},
+ SYS__CLEAR_TYPE_CACHE_METHODDEF
+ SYS__CURRENT_FRAMES_METHODDEF
+ SYS__CURRENT_EXCEPTIONS_METHODDEF
+ SYS_DISPLAYHOOK_METHODDEF
+ SYS_EXCEPTION_METHODDEF
+ SYS_EXC_INFO_METHODDEF
+ SYS_EXCEPTHOOK_METHODDEF
+ SYS_EXIT_METHODDEF
+ SYS_GETDEFAULTENCODING_METHODDEF
+ SYS_GETDLOPENFLAGS_METHODDEF
+ SYS_GETALLOCATEDBLOCKS_METHODDEF
+ SYS_GETUNICODEINTERNEDSIZE_METHODDEF
+ SYS_GETFILESYSTEMENCODING_METHODDEF
+ SYS_GETFILESYSTEMENCODEERRORS_METHODDEF
+#ifdef Py_TRACE_REFS
+ {"getobjects", _Py_GetObjects, METH_VARARGS},
+#endif
+ SYS_GETTOTALREFCOUNT_METHODDEF
+ SYS_GETREFCOUNT_METHODDEF
+ SYS_GETRECURSIONLIMIT_METHODDEF
+ {"getsizeof", _PyCFunction_CAST(sys_getsizeof),
+ METH_VARARGS | METH_KEYWORDS, getsizeof_doc},
+ SYS__GETFRAME_METHODDEF
+ SYS__GETFRAMEMODULENAME_METHODDEF
+ SYS_GETWINDOWSVERSION_METHODDEF
+ SYS__ENABLELEGACYWINDOWSFSENCODING_METHODDEF
+ SYS_INTERN_METHODDEF
+ SYS_IS_FINALIZING_METHODDEF
+ SYS_MDEBUG_METHODDEF
+ SYS_SETSWITCHINTERVAL_METHODDEF
+ SYS_GETSWITCHINTERVAL_METHODDEF
+ SYS_SETDLOPENFLAGS_METHODDEF
+ {"setprofile", sys_setprofile, METH_O, setprofile_doc},
+ SYS__SETPROFILEALLTHREADS_METHODDEF
+ SYS_GETPROFILE_METHODDEF
+ SYS_SETRECURSIONLIMIT_METHODDEF
+ {"settrace", sys_settrace, METH_O, settrace_doc},
+ SYS__SETTRACEALLTHREADS_METHODDEF
+ SYS_GETTRACE_METHODDEF
+ SYS_CALL_TRACING_METHODDEF
+ SYS__DEBUGMALLOCSTATS_METHODDEF
+ SYS_SET_COROUTINE_ORIGIN_TRACKING_DEPTH_METHODDEF
+ SYS_GET_COROUTINE_ORIGIN_TRACKING_DEPTH_METHODDEF
+ {"set_asyncgen_hooks", _PyCFunction_CAST(sys_set_asyncgen_hooks),
+ METH_VARARGS | METH_KEYWORDS, set_asyncgen_hooks_doc},
+ SYS_GET_ASYNCGEN_HOOKS_METHODDEF
+ SYS_GETANDROIDAPILEVEL_METHODDEF
+ SYS_ACTIVATE_STACK_TRAMPOLINE_METHODDEF
+ SYS_DEACTIVATE_STACK_TRAMPOLINE_METHODDEF
+ SYS_IS_STACK_TRAMPOLINE_ACTIVE_METHODDEF
+ SYS_UNRAISABLEHOOK_METHODDEF
+ SYS_GET_INT_MAX_STR_DIGITS_METHODDEF
+ SYS_SET_INT_MAX_STR_DIGITS_METHODDEF
+#ifdef Py_STATS
+ SYS__STATS_ON_METHODDEF
+ SYS__STATS_OFF_METHODDEF
+ SYS__STATS_CLEAR_METHODDEF
+ SYS__STATS_DUMP_METHODDEF
+#endif
+ {NULL, NULL} // sentinel
+};
+
+
+static PyObject *
+list_builtin_module_names(void)
+{
+ PyObject *list = _PyImport_GetBuiltinModuleNames();
+ if (list == NULL) {
+ return NULL;
+ }
+ if (PyList_Sort(list) != 0) {
+ goto error;
+ }
+ PyObject *tuple = PyList_AsTuple(list);
+ Py_DECREF(list);
+ return tuple;
+
+error:
+ Py_DECREF(list);
+ return NULL;
+}
+
+
+static PyObject *
+list_stdlib_module_names(void)
+{
+ Py_ssize_t len = Py_ARRAY_LENGTH(_Py_stdlib_module_names);
+ PyObject *names = PyTuple_New(len);
+ if (names == NULL) {
+ return NULL;
+ }
+
+ for (Py_ssize_t i = 0; i < len; i++) {
+ PyObject *name = PyUnicode_FromString(_Py_stdlib_module_names[i]);
+ if (name == NULL) {
+ Py_DECREF(names);
+ return NULL;
+ }
+ PyTuple_SET_ITEM(names, i, name);
+ }
+
+ PyObject *set = PyObject_CallFunction((PyObject *)&PyFrozenSet_Type,
+ "(O)", names);
+ Py_DECREF(names);
+ return set;
+}
+
+
+/* Pre-initialization support for sys.warnoptions and sys._xoptions
+ *
+ * Modern internal code paths:
+ * These APIs get called after _Py_InitializeCore and get to use the
+ * regular CPython list, dict, and unicode APIs.
+ *
+ * Legacy embedding code paths:
+ * The multi-phase initialization API isn't public yet, so embedding
+ * apps still need to be able configure sys.warnoptions and sys._xoptions
+ * before they call Py_Initialize. To support this, we stash copies of
+ * the supplied wchar * sequences in linked lists, and then migrate the
+ * contents of those lists to the sys module in _PyInitializeCore.
+ *
+ */
+
+struct _preinit_entry {
+ wchar_t *value;
+ struct _preinit_entry *next;
+};
+
+typedef struct _preinit_entry *_Py_PreInitEntry;
+
+static _Py_PreInitEntry _preinit_warnoptions = NULL;
+static _Py_PreInitEntry _preinit_xoptions = NULL;
+
+static _Py_PreInitEntry
+_alloc_preinit_entry(const wchar_t *value)
+{
+ /* To get this to work, we have to initialize the runtime implicitly */
+ _PyRuntime_Initialize();
+
+ /* Force default allocator, so we can ensure that it also gets used to
+ * destroy the linked list in _clear_preinit_entries.
+ */
+ PyMemAllocatorEx old_alloc;
+ _PyMem_SetDefaultAllocator(PYMEM_DOMAIN_RAW, &old_alloc);
+
+ _Py_PreInitEntry node = PyMem_RawCalloc(1, sizeof(*node));
+ if (node != NULL) {
+ node->value = _PyMem_RawWcsdup(value);
+ if (node->value == NULL) {
+ PyMem_RawFree(node);
+ node = NULL;
+ };
+ };
+
+ PyMem_SetAllocator(PYMEM_DOMAIN_RAW, &old_alloc);
+ return node;
+}
+
+static int
+_append_preinit_entry(_Py_PreInitEntry *optionlist, const wchar_t *value)
+{
+ _Py_PreInitEntry new_entry = _alloc_preinit_entry(value);
+ if (new_entry == NULL) {
+ return -1;
+ }
+ /* We maintain the linked list in this order so it's easy to play back
+ * the add commands in the same order later on in _Py_InitializeCore
+ */
+ _Py_PreInitEntry last_entry = *optionlist;
+ if (last_entry == NULL) {
+ *optionlist = new_entry;
+ } else {
+ while (last_entry->next != NULL) {
+ last_entry = last_entry->next;
+ }
+ last_entry->next = new_entry;
+ }
+ return 0;
+}
+
+static void
+_clear_preinit_entries(_Py_PreInitEntry *optionlist)
+{
+ _Py_PreInitEntry current = *optionlist;
+ *optionlist = NULL;
+ /* Deallocate the nodes and their contents using the default allocator */
+ PyMemAllocatorEx old_alloc;
+ _PyMem_SetDefaultAllocator(PYMEM_DOMAIN_RAW, &old_alloc);
+ while (current != NULL) {
+ _Py_PreInitEntry next = current->next;
+ PyMem_RawFree(current->value);
+ PyMem_RawFree(current);
+ current = next;
+ }
+ PyMem_SetAllocator(PYMEM_DOMAIN_RAW, &old_alloc);
+}
+
+
+PyStatus
+_PySys_ReadPreinitWarnOptions(PyWideStringList *options)
+{
+ PyStatus status;
+ _Py_PreInitEntry entry;
+
+ for (entry = _preinit_warnoptions; entry != NULL; entry = entry->next) {
+ status = PyWideStringList_Append(options, entry->value);
+ if (_PyStatus_EXCEPTION(status)) {
+ return status;
+ }
+ }
+
+ _clear_preinit_entries(&_preinit_warnoptions);
+ return _PyStatus_OK();
+}
+
+
+PyStatus
+_PySys_ReadPreinitXOptions(PyConfig *config)
+{
+ PyStatus status;
+ _Py_PreInitEntry entry;
+
+ for (entry = _preinit_xoptions; entry != NULL; entry = entry->next) {
+ status = PyWideStringList_Append(&config->xoptions, entry->value);
+ if (_PyStatus_EXCEPTION(status)) {
+ return status;
+ }
+ }
+
+ _clear_preinit_entries(&_preinit_xoptions);
+ return _PyStatus_OK();
+}
+
+
+static PyObject *
+get_warnoptions(PyThreadState *tstate)
+{
+ PyObject *warnoptions = _PySys_GetAttr(tstate, &_Py_ID(warnoptions));
+ if (warnoptions == NULL || !PyList_Check(warnoptions)) {
+ /* PEP432 TODO: we can reach this if warnoptions is NULL in the main
+ * interpreter config. When that happens, we need to properly set
+ * the `warnoptions` reference in the main interpreter config as well.
+ *
+ * For Python 3.7, we shouldn't be able to get here due to the
+ * combination of how _PyMainInterpreter_ReadConfig and _PySys_EndInit
+ * work, but we expect 3.8+ to make the _PyMainInterpreter_ReadConfig
+ * call optional for embedding applications, thus making this
+ * reachable again.
+ */
+ warnoptions = PyList_New(0);
+ if (warnoptions == NULL) {
+ return NULL;
+ }
+ if (sys_set_object(tstate->interp, &_Py_ID(warnoptions), warnoptions)) {
+ Py_DECREF(warnoptions);
+ return NULL;
+ }
+ Py_DECREF(warnoptions);
+ }
+ return warnoptions;
+}
+
+void
+PySys_ResetWarnOptions(void)
+{
+ PyThreadState *tstate = _PyThreadState_GET();
+ if (tstate == NULL) {
+ _clear_preinit_entries(&_preinit_warnoptions);
+ return;
+ }
+
+ PyObject *warnoptions = _PySys_GetAttr(tstate, &_Py_ID(warnoptions));
+ if (warnoptions == NULL || !PyList_Check(warnoptions))
+ return;
+ PyList_SetSlice(warnoptions, 0, PyList_GET_SIZE(warnoptions), NULL);
+}
+
+static int
+_PySys_AddWarnOptionWithError(PyThreadState *tstate, PyObject *option)
+{
+ PyObject *warnoptions = get_warnoptions(tstate);
+ if (warnoptions == NULL) {
+ return -1;
+ }
+ if (PyList_Append(warnoptions, option)) {
+ return -1;
+ }
+ return 0;
+}
+
+void
+PySys_AddWarnOptionUnicode(PyObject *option)
+{
+ PyThreadState *tstate = _PyThreadState_GET();
+ if (_PySys_AddWarnOptionWithError(tstate, option) < 0) {
+ /* No return value, therefore clear error state if possible */
+ if (tstate) {
+ _PyErr_Clear(tstate);
+ }
+ }
+}
+
+void
+PySys_AddWarnOption(const wchar_t *s)
+{
+ PyThreadState *tstate = _PyThreadState_GET();
+ if (tstate == NULL) {
+ _append_preinit_entry(&_preinit_warnoptions, s);
+ return;
+ }
+ PyObject *unicode;
+ unicode = PyUnicode_FromWideChar(s, -1);
+ if (unicode == NULL)
+ return;
+_Py_COMP_DIAG_PUSH
+_Py_COMP_DIAG_IGNORE_DEPR_DECLS
+ PySys_AddWarnOptionUnicode(unicode);
+_Py_COMP_DIAG_POP
+ Py_DECREF(unicode);
+}
+
+int
+PySys_HasWarnOptions(void)
+{
+ PyThreadState *tstate = _PyThreadState_GET();
+ PyObject *warnoptions = _PySys_GetAttr(tstate, &_Py_ID(warnoptions));
+ return (warnoptions != NULL && PyList_Check(warnoptions)
+ && PyList_GET_SIZE(warnoptions) > 0);
+}
+
+static PyObject *
+get_xoptions(PyThreadState *tstate)
+{
+ PyObject *xoptions = _PySys_GetAttr(tstate, &_Py_ID(_xoptions));
+ if (xoptions == NULL || !PyDict_Check(xoptions)) {
+ /* PEP432 TODO: we can reach this if xoptions is NULL in the main
+ * interpreter config. When that happens, we need to properly set
+ * the `xoptions` reference in the main interpreter config as well.
+ *
+ * For Python 3.7, we shouldn't be able to get here due to the
+ * combination of how _PyMainInterpreter_ReadConfig and _PySys_EndInit
+ * work, but we expect 3.8+ to make the _PyMainInterpreter_ReadConfig
+ * call optional for embedding applications, thus making this
+ * reachable again.
+ */
+ xoptions = PyDict_New();
+ if (xoptions == NULL) {
+ return NULL;
+ }
+ if (sys_set_object(tstate->interp, &_Py_ID(_xoptions), xoptions)) {
+ Py_DECREF(xoptions);
+ return NULL;
+ }
+ Py_DECREF(xoptions);
+ }
+ return xoptions;
+}
+
+static int
+_PySys_AddXOptionWithError(const wchar_t *s)
+{
+ PyObject *name = NULL, *value = NULL;
+
+ PyThreadState *tstate = _PyThreadState_GET();
+ PyObject *opts = get_xoptions(tstate);
+ if (opts == NULL) {
+ goto error;
+ }
+
+ const wchar_t *name_end = wcschr(s, L'=');
+ if (!name_end) {
+ name = PyUnicode_FromWideChar(s, -1);
+ if (name == NULL) {
+ goto error;
+ }
+ value = Py_NewRef(Py_True);
+ }
+ else {
+ name = PyUnicode_FromWideChar(s, name_end - s);
+ if (name == NULL) {
+ goto error;
+ }
+ value = PyUnicode_FromWideChar(name_end + 1, -1);
+ if (value == NULL) {
+ goto error;
+ }
+ }
+ if (PyDict_SetItem(opts, name, value) < 0) {
+ goto error;
+ }
+ Py_DECREF(name);
+ Py_DECREF(value);
+ return 0;
+
+error:
+ Py_XDECREF(name);
+ Py_XDECREF(value);
+ return -1;
+}
+
+void
+PySys_AddXOption(const wchar_t *s)
+{
+ PyThreadState *tstate = _PyThreadState_GET();
+ if (tstate == NULL) {
+ _append_preinit_entry(&_preinit_xoptions, s);
+ return;
+ }
+ if (_PySys_AddXOptionWithError(s) < 0) {
+ /* No return value, therefore clear error state if possible */
+ _PyErr_Clear(tstate);
+ }
+}
+
+PyObject *
+PySys_GetXOptions(void)
+{
+ PyThreadState *tstate = _PyThreadState_GET();
+ return get_xoptions(tstate);
+}
+
+/* XXX This doc string is too long to be a single string literal in VC++ 5.0.
+ Two literals concatenated works just fine. If you have a K&R compiler
+ or other abomination that however *does* understand longer strings,
+ get rid of the !!! comment in the middle and the quotes that surround it. */
+PyDoc_VAR(sys_doc) =
+PyDoc_STR(
+"This module provides access to some objects used or maintained by the\n\
+interpreter and to functions that interact strongly with the interpreter.\n\
+\n\
+Dynamic objects:\n\
+\n\
+argv -- command line arguments; argv[0] is the script pathname if known\n\
+path -- module search path; path[0] is the script directory, else ''\n\
+modules -- dictionary of loaded modules\n\
+\n\
+displayhook -- called to show results in an interactive session\n\
+excepthook -- called to handle any uncaught exception other than SystemExit\n\
+ To customize printing in an interactive session or to install a custom\n\
+ top-level exception handler, assign other functions to replace these.\n\
+\n\
+stdin -- standard input file object; used by input()\n\
+stdout -- standard output file object; used by print()\n\
+stderr -- standard error object; used for error messages\n\
+ By assigning other file objects (or objects that behave like files)\n\
+ to these, it is possible to redirect all of the interpreter's I/O.\n\
+\n\
+last_exc - the last uncaught exception\n\
+ Only available in an interactive session after a\n\
+ traceback has been printed.\n\
+last_type -- type of last uncaught exception\n\
+last_value -- value of last uncaught exception\n\
+last_traceback -- traceback of last uncaught exception\n\
+ These three are the (deprecated) legacy representation of last_exc.\n\
+"
+)
+/* concatenating string here */
+PyDoc_STR(
+"\n\
+Static objects:\n\
+\n\
+builtin_module_names -- tuple of module names built into this interpreter\n\
+copyright -- copyright notice pertaining to this interpreter\n\
+exec_prefix -- prefix used to find the machine-specific Python library\n\
+executable -- absolute path of the executable binary of the Python interpreter\n\
+float_info -- a named tuple with information about the float implementation.\n\
+float_repr_style -- string indicating the style of repr() output for floats\n\
+hash_info -- a named tuple with information about the hash algorithm.\n\
+hexversion -- version information encoded as a single integer\n\
+implementation -- Python implementation information.\n\
+int_info -- a named tuple with information about the int implementation.\n\
+maxsize -- the largest supported length of containers.\n\
+maxunicode -- the value of the largest Unicode code point\n\
+platform -- platform identifier\n\
+prefix -- prefix used to find the Python library\n\
+thread_info -- a named tuple with information about the thread implementation.\n\
+version -- the version of this interpreter as a string\n\
+version_info -- version information as a named tuple\n\
+"
+)
+#ifdef MS_COREDLL
+/* concatenating string here */
+PyDoc_STR(
+"dllhandle -- [Windows only] integer handle of the Python DLL\n\
+winver -- [Windows only] version number of the Python DLL\n\
+"
+)
+#endif /* MS_COREDLL */
+#ifdef MS_WINDOWS
+/* concatenating string here */
+PyDoc_STR(
+"_enablelegacywindowsfsencoding -- [Windows only]\n\
+"
+)
+#endif
+PyDoc_STR(
+"__stdin__ -- the original stdin; don't touch!\n\
+__stdout__ -- the original stdout; don't touch!\n\
+__stderr__ -- the original stderr; don't touch!\n\
+__displayhook__ -- the original displayhook; don't touch!\n\
+__excepthook__ -- the original excepthook; don't touch!\n\
+\n\
+Functions:\n\
+\n\
+displayhook() -- print an object to the screen, and save it in builtins._\n\
+excepthook() -- print an exception and its traceback to sys.stderr\n\
+exception() -- return the current thread's active exception\n\
+exc_info() -- return information about the current thread's active exception\n\
+exit() -- exit the interpreter by raising SystemExit\n\
+getdlopenflags() -- returns flags to be used for dlopen() calls\n\
+getprofile() -- get the global profiling function\n\
+getrefcount() -- return the reference count for an object (plus one :-)\n\
+getrecursionlimit() -- return the max recursion depth for the interpreter\n\
+getsizeof() -- return the size of an object in bytes\n\
+gettrace() -- get the global debug tracing function\n\
+setdlopenflags() -- set the flags to be used for dlopen() calls\n\
+setprofile() -- set the global profiling function\n\
+setrecursionlimit() -- set the max recursion depth for the interpreter\n\
+settrace() -- set the global debug tracing function\n\
+"
+)
+/* end of sys_doc */ ;
+
+
+PyDoc_STRVAR(flags__doc__,
+"sys.flags\n\
+\n\
+Flags provided through command line arguments or environment vars.");
+
+static PyTypeObject FlagsType;
+
+static PyStructSequence_Field flags_fields[] = {
+ {"debug", "-d"},
+ {"inspect", "-i"},
+ {"interactive", "-i"},
+ {"optimize", "-O or -OO"},
+ {"dont_write_bytecode", "-B"},
+ {"no_user_site", "-s"},
+ {"no_site", "-S"},
+ {"ignore_environment", "-E"},
+ {"verbose", "-v"},
+ {"bytes_warning", "-b"},
+ {"quiet", "-q"},
+ {"hash_randomization", "-R"},
+ {"isolated", "-I"},
+ {"dev_mode", "-X dev"},
+ {"utf8_mode", "-X utf8"},
+ {"warn_default_encoding", "-X warn_default_encoding"},
+ {"safe_path", "-P"},
+ {"int_max_str_digits", "-X int_max_str_digits"},
+ {0}
+};
+
+static PyStructSequence_Desc flags_desc = {
+ "sys.flags", /* name */
+ flags__doc__, /* doc */
+ flags_fields, /* fields */
+ 18
+};
+
+static int
+set_flags_from_config(PyInterpreterState *interp, PyObject *flags)
+{
+ const PyPreConfig *preconfig = &interp->runtime->preconfig;
+ const PyConfig *config = _PyInterpreterState_GetConfig(interp);
+
+ // _PySys_UpdateConfig() modifies sys.flags in-place:
+ // Py_XDECREF() is needed in this case.
+ Py_ssize_t pos = 0;
+#define SetFlagObj(expr) \
+ do { \
+ PyObject *value = (expr); \
+ if (value == NULL) { \
+ return -1; \
+ } \
+ Py_XDECREF(PyStructSequence_GET_ITEM(flags, pos)); \
+ PyStructSequence_SET_ITEM(flags, pos, value); \
+ pos++; \
+ } while (0)
+#define SetFlag(expr) SetFlagObj(PyLong_FromLong(expr))
+
+ SetFlag(config->parser_debug);
+ SetFlag(config->inspect);
+ SetFlag(config->interactive);
+ SetFlag(config->optimization_level);
+ SetFlag(!config->write_bytecode);
+ SetFlag(!config->user_site_directory);
+ SetFlag(!config->site_import);
+ SetFlag(!config->use_environment);
+ SetFlag(config->verbose);
+ SetFlag(config->bytes_warning);
+ SetFlag(config->quiet);
+ SetFlag(config->use_hash_seed == 0 || config->hash_seed != 0);
+ SetFlag(config->isolated);
+ SetFlagObj(PyBool_FromLong(config->dev_mode));
+ SetFlag(preconfig->utf8_mode);
+ SetFlag(config->warn_default_encoding);
+ SetFlagObj(PyBool_FromLong(config->safe_path));
+ SetFlag(config->int_max_str_digits);
+#undef SetFlagObj
+#undef SetFlag
+ return 0;
+}
+
+
+static PyObject*
+make_flags(PyInterpreterState *interp)
+{
+ PyObject *flags = PyStructSequence_New(&FlagsType);
+ if (flags == NULL) {
+ return NULL;
+ }
+
+ if (set_flags_from_config(interp, flags) < 0) {
+ Py_DECREF(flags);
+ return NULL;
+ }
+ return flags;
+}
+
+
+PyDoc_STRVAR(version_info__doc__,
+"sys.version_info\n\
+\n\
+Version information as a named tuple.");
+
+static PyTypeObject VersionInfoType;
+
+static PyStructSequence_Field version_info_fields[] = {
+ {"major", "Major release number"},
+ {"minor", "Minor release number"},
+ {"micro", "Patch release number"},
+ {"releaselevel", "'alpha', 'beta', 'candidate', or 'final'"},
+ {"serial", "Serial release number"},
+ {0}
+};
+
+static PyStructSequence_Desc version_info_desc = {
+ "sys.version_info", /* name */
+ version_info__doc__, /* doc */
+ version_info_fields, /* fields */
+ 5
+};
+
+static PyObject *
+make_version_info(PyThreadState *tstate)
+{
+ PyObject *version_info;
+ char *s;
+ int pos = 0;
+
+ version_info = PyStructSequence_New(&VersionInfoType);
+ if (version_info == NULL) {
+ return NULL;
+ }
+
+ /*
+ * These release level checks are mutually exclusive and cover
+ * the field, so don't get too fancy with the pre-processor!
+ */
+#if PY_RELEASE_LEVEL == PY_RELEASE_LEVEL_ALPHA
+ s = "alpha";
+#elif PY_RELEASE_LEVEL == PY_RELEASE_LEVEL_BETA
+ s = "beta";
+#elif PY_RELEASE_LEVEL == PY_RELEASE_LEVEL_GAMMA
+ s = "candidate";
+#elif PY_RELEASE_LEVEL == PY_RELEASE_LEVEL_FINAL
+ s = "final";
+#endif
+
+#define SetIntItem(flag) \
+ PyStructSequence_SET_ITEM(version_info, pos++, PyLong_FromLong(flag))
+#define SetStrItem(flag) \
+ PyStructSequence_SET_ITEM(version_info, pos++, PyUnicode_FromString(flag))
+
+ SetIntItem(PY_MAJOR_VERSION);
+ SetIntItem(PY_MINOR_VERSION);
+ SetIntItem(PY_MICRO_VERSION);
+ SetStrItem(s);
+ SetIntItem(PY_RELEASE_SERIAL);
+#undef SetIntItem
+#undef SetStrItem
+
+ if (_PyErr_Occurred(tstate)) {
+ Py_CLEAR(version_info);
+ return NULL;
+ }
+ return version_info;
+}
+
+/* sys.implementation values */
+#define NAME "cpython"
+const char *_PySys_ImplName = NAME;
+#define MAJOR Py_STRINGIFY(PY_MAJOR_VERSION)
+#define MINOR Py_STRINGIFY(PY_MINOR_VERSION)
+#define TAG NAME "-" MAJOR MINOR
+const char *_PySys_ImplCacheTag = TAG;
+#undef NAME
+#undef MAJOR
+#undef MINOR
+#undef TAG
+
+static PyObject *
+make_impl_info(PyObject *version_info)
+{
+ int res;
+ PyObject *impl_info, *value, *ns;
+
+ impl_info = PyDict_New();
+ if (impl_info == NULL)
+ return NULL;
+
+ /* populate the dict */
+
+ value = PyUnicode_FromString(_PySys_ImplName);
+ if (value == NULL)
+ goto error;
+ res = PyDict_SetItemString(impl_info, "name", value);
+ Py_DECREF(value);
+ if (res < 0)
+ goto error;
+
+ value = PyUnicode_FromString(_PySys_ImplCacheTag);
+ if (value == NULL)
+ goto error;
+ res = PyDict_SetItemString(impl_info, "cache_tag", value);
+ Py_DECREF(value);
+ if (res < 0)
+ goto error;
+
+ res = PyDict_SetItemString(impl_info, "version", version_info);
+ if (res < 0)
+ goto error;
+
+ value = PyLong_FromLong(PY_VERSION_HEX);
+ if (value == NULL)
+ goto error;
+ res = PyDict_SetItemString(impl_info, "hexversion", value);
+ Py_DECREF(value);
+ if (res < 0)
+ goto error;
+
+#ifdef MULTIARCH
+ value = PyUnicode_FromString(MULTIARCH);
+ if (value == NULL)
+ goto error;
+ res = PyDict_SetItemString(impl_info, "_multiarch", value);
+ Py_DECREF(value);
+ if (res < 0)
+ goto error;
+#endif
+
+ /* dict ready */
+
+ ns = _PyNamespace_New(impl_info);
+ Py_DECREF(impl_info);
+ return ns;
+
+error:
+ Py_CLEAR(impl_info);
+ return NULL;
+}
+
+#ifdef __EMSCRIPTEN__
+
+PyDoc_STRVAR(emscripten_info__doc__,
+"sys._emscripten_info\n\
+\n\
+WebAssembly Emscripten platform information.");
+
+static PyTypeObject *EmscriptenInfoType;
+
+static PyStructSequence_Field emscripten_info_fields[] = {
+ {"emscripten_version", "Emscripten version (major, minor, micro)"},
+ {"runtime", "Runtime (Node.JS version, browser user agent)"},
+ {"pthreads", "pthread support"},
+ {"shared_memory", "shared memory support"},
+ {0}
+};
+
+static PyStructSequence_Desc emscripten_info_desc = {
+ "sys._emscripten_info", /* name */
+ emscripten_info__doc__ , /* doc */
+ emscripten_info_fields, /* fields */
+ 4
+};
+
+EM_JS(char *, _Py_emscripten_runtime, (void), {
+ var info;
+ if (typeof navigator == 'object') {
+ info = navigator.userAgent;
+ } else if (typeof process == 'object') {
+ info = "Node.js ".concat(process.version);
+ } else {
+ info = "UNKNOWN";
+ }
+ var len = lengthBytesUTF8(info) + 1;
+ var res = _malloc(len);
+ if (res) stringToUTF8(info, res, len);
+#if __wasm64__
+ return BigInt(res);
+#else
+ return res;
+#endif
+});
+
+static PyObject *
+make_emscripten_info(void)
+{
+ PyObject *emscripten_info = NULL;
+ PyObject *version = NULL;
+ char *ua;
+ int pos = 0;
+
+ emscripten_info = PyStructSequence_New(EmscriptenInfoType);
+ if (emscripten_info == NULL) {
+ return NULL;
+ }
+
+ version = Py_BuildValue("(iii)",
+ __EMSCRIPTEN_major__, __EMSCRIPTEN_minor__, __EMSCRIPTEN_tiny__);
+ if (version == NULL) {
+ goto error;
+ }
+ PyStructSequence_SET_ITEM(emscripten_info, pos++, version);
+
+ ua = _Py_emscripten_runtime();
+ if (ua != NULL) {
+ PyObject *oua = PyUnicode_DecodeUTF8(ua, strlen(ua), "strict");
+ free(ua);
+ if (oua == NULL) {
+ goto error;
+ }
+ PyStructSequence_SET_ITEM(emscripten_info, pos++, oua);
+ } else {
+ PyStructSequence_SET_ITEM(emscripten_info, pos++, Py_NewRef(Py_None));
+ }
+
+#define SetBoolItem(flag) \
+ PyStructSequence_SET_ITEM(emscripten_info, pos++, PyBool_FromLong(flag))
+
+#ifdef __EMSCRIPTEN_PTHREADS__
+ SetBoolItem(1);
+#else
+ SetBoolItem(0);
+#endif
+
+#ifdef __EMSCRIPTEN_SHARED_MEMORY__
+ SetBoolItem(1);
+#else
+ SetBoolItem(0);
+#endif
+
+#undef SetBoolItem
+
+ if (PyErr_Occurred()) {
+ goto error;
+ }
+ return emscripten_info;
+
+ error:
+ Py_CLEAR(emscripten_info);
+ return NULL;
+}
+
+#endif // __EMSCRIPTEN__
+
+static struct PyModuleDef sysmodule = {
+ PyModuleDef_HEAD_INIT,
+ "sys",
+ sys_doc,
+ -1, /* multiple "initialization" just copies the module dict. */
+ sys_methods,
+ NULL,
+ NULL,
+ NULL,
+ NULL
+};
+
+/* Updating the sys namespace, returning NULL pointer on error */
+#define SET_SYS(key, value) \
+ do { \
+ PyObject *v = (value); \
+ if (v == NULL) { \
+ goto err_occurred; \
+ } \
+ res = PyDict_SetItemString(sysdict, key, v); \
+ Py_DECREF(v); \
+ if (res < 0) { \
+ goto err_occurred; \
+ } \
+ } while (0)
+
+#define SET_SYS_FROM_STRING(key, value) \
+ SET_SYS(key, PyUnicode_FromString(value))
+
+static PyStatus
+_PySys_InitCore(PyThreadState *tstate, PyObject *sysdict)
+{
+ PyObject *version_info;
+ int res;
+ PyInterpreterState *interp = tstate->interp;
+
+ /* stdin/stdout/stderr are set in pylifecycle.c */
+
+#define COPY_SYS_ATTR(tokey, fromkey) \
+ SET_SYS(tokey, PyMapping_GetItemString(sysdict, fromkey))
+
+ COPY_SYS_ATTR("__displayhook__", "displayhook");
+ COPY_SYS_ATTR("__excepthook__", "excepthook");
+ COPY_SYS_ATTR("__breakpointhook__", "breakpointhook");
+ COPY_SYS_ATTR("__unraisablehook__", "unraisablehook");
+
+#undef COPY_SYS_ATTR
+
+ SET_SYS_FROM_STRING("version", Py_GetVersion());
+ SET_SYS("hexversion", PyLong_FromLong(PY_VERSION_HEX));
+ SET_SYS("_git", Py_BuildValue("(szz)", "CPython", _Py_gitidentifier(),
+ _Py_gitversion()));
+ SET_SYS_FROM_STRING("_framework", _PYTHONFRAMEWORK);
+ SET_SYS("api_version", PyLong_FromLong(PYTHON_API_VERSION));
+ SET_SYS_FROM_STRING("copyright", Py_GetCopyright());
+ SET_SYS_FROM_STRING("platform", Py_GetPlatform());
+ SET_SYS("maxsize", PyLong_FromSsize_t(PY_SSIZE_T_MAX));
+ SET_SYS("float_info", PyFloat_GetInfo());
+ SET_SYS("int_info", PyLong_GetInfo());
+ /* initialize hash_info */
+ if (_PyStructSequence_InitBuiltin(interp, &Hash_InfoType,
+ &hash_info_desc) < 0)
+ {
+ goto type_init_failed;
+ }
+ SET_SYS("hash_info", get_hash_info(tstate));
+ SET_SYS("maxunicode", PyLong_FromLong(0x10FFFF));
+ SET_SYS("builtin_module_names", list_builtin_module_names());
+ SET_SYS("stdlib_module_names", list_stdlib_module_names());
+#if PY_BIG_ENDIAN
+ SET_SYS_FROM_STRING("byteorder", "big");
+#else
+ SET_SYS_FROM_STRING("byteorder", "little");
+#endif
+
+#ifdef MS_COREDLL
+ SET_SYS("dllhandle", PyLong_FromVoidPtr(PyWin_DLLhModule));
+ SET_SYS_FROM_STRING("winver", PyWin_DLLVersionString);
+#endif
+#ifdef ABIFLAGS
+ SET_SYS_FROM_STRING("abiflags", ABIFLAGS);
+#endif
+
+#define ENSURE_INFO_TYPE(TYPE, DESC) \
+ do { \
+ if (_PyStructSequence_InitBuiltinWithFlags( \
+ interp, &TYPE, &DESC, Py_TPFLAGS_DISALLOW_INSTANTIATION) < 0) { \
+ goto type_init_failed; \
+ } \
+ } while (0)
+
+ /* version_info */
+ ENSURE_INFO_TYPE(VersionInfoType, version_info_desc);
+ version_info = make_version_info(tstate);
+ SET_SYS("version_info", version_info);
+
+ /* implementation */
+ SET_SYS("implementation", make_impl_info(version_info));
+
+ // sys.flags: updated in-place later by _PySys_UpdateConfig()
+ ENSURE_INFO_TYPE(FlagsType, flags_desc);
+ SET_SYS("flags", make_flags(tstate->interp));
+
+#if defined(MS_WINDOWS)
+ /* getwindowsversion */
+ ENSURE_INFO_TYPE(WindowsVersionType, windows_version_desc);
+
+ SET_SYS_FROM_STRING("_vpath", VPATH);
+#endif
+
+#undef ENSURE_INFO_TYPE
+
+ /* float repr style: 0.03 (short) vs 0.029999999999999999 (legacy) */
+#if _PY_SHORT_FLOAT_REPR == 1
+ SET_SYS_FROM_STRING("float_repr_style", "short");
+#else
+ SET_SYS_FROM_STRING("float_repr_style", "legacy");
+#endif
+
+ SET_SYS("thread_info", PyThread_GetInfo());
+
+ /* initialize asyncgen_hooks */
+ if (_PyStructSequence_InitBuiltin(interp, &AsyncGenHooksType,
+ &asyncgen_hooks_desc) < 0)
+ {
+ goto type_init_failed;
+ }
+
+#ifdef __EMSCRIPTEN__
+ if (EmscriptenInfoType == NULL) {
+ EmscriptenInfoType = PyStructSequence_NewType(&emscripten_info_desc);
+ if (EmscriptenInfoType == NULL) {
+ goto type_init_failed;
+ }
+ }
+ SET_SYS("_emscripten_info", make_emscripten_info());
+#endif
+
+ /* adding sys.path_hooks and sys.path_importer_cache */
+ SET_SYS("meta_path", PyList_New(0));
+ SET_SYS("path_importer_cache", PyDict_New());
+ SET_SYS("path_hooks", PyList_New(0));
+
+ if (_PyErr_Occurred(tstate)) {
+ goto err_occurred;
+ }
+ return _PyStatus_OK();
+
+type_init_failed:
+ return _PyStatus_ERR("failed to initialize a type");
+
+err_occurred:
+ return _PyStatus_ERR("can't initialize sys module");
+}
+
+static int
+sys_add_xoption(PyObject *opts, const wchar_t *s)
+{
+ PyObject *name, *value = NULL;
+
+ const wchar_t *name_end = wcschr(s, L'=');
+ if (!name_end) {
+ name = PyUnicode_FromWideChar(s, -1);
+ if (name == NULL) {
+ goto error;
+ }
+ value = Py_NewRef(Py_True);
+ }
+ else {
+ name = PyUnicode_FromWideChar(s, name_end - s);
+ if (name == NULL) {
+ goto error;
+ }
+ value = PyUnicode_FromWideChar(name_end + 1, -1);
+ if (value == NULL) {
+ goto error;
+ }
+ }
+ if (PyDict_SetItem(opts, name, value) < 0) {
+ goto error;
+ }
+ Py_DECREF(name);
+ Py_DECREF(value);
+ return 0;
+
+error:
+ Py_XDECREF(name);
+ Py_XDECREF(value);
+ return -1;
+}
+
+
+static PyObject*
+sys_create_xoptions_dict(const PyConfig *config)
+{
+ Py_ssize_t nxoption = config->xoptions.length;
+ wchar_t * const * xoptions = config->xoptions.items;
+ PyObject *dict = PyDict_New();
+ if (dict == NULL) {
+ return NULL;
+ }
+
+ for (Py_ssize_t i=0; i < nxoption; i++) {
+ const wchar_t *option = xoptions[i];
+ if (sys_add_xoption(dict, option) < 0) {
+ Py_DECREF(dict);
+ return NULL;
+ }
+ }
+
+ return dict;
+}
+
+
+// Update sys attributes for a new PyConfig configuration.
+// This function also adds attributes that _PySys_InitCore() didn't add.
+int
+_PySys_UpdateConfig(PyThreadState *tstate)
+{
+ PyInterpreterState *interp = tstate->interp;
+ PyObject *sysdict = interp->sysdict;
+ const PyConfig *config = _PyInterpreterState_GetConfig(interp);
+ int res;
+
+#define COPY_LIST(KEY, VALUE) \
+ SET_SYS(KEY, _PyWideStringList_AsList(&(VALUE)));
+
+#define SET_SYS_FROM_WSTR(KEY, VALUE) \
+ SET_SYS(KEY, PyUnicode_FromWideChar(VALUE, -1));
+
+#define COPY_WSTR(SYS_ATTR, WSTR) \
+ if (WSTR != NULL) { \
+ SET_SYS_FROM_WSTR(SYS_ATTR, WSTR); \
+ }
+
+ if (config->module_search_paths_set) {
+ COPY_LIST("path", config->module_search_paths);
+ }
+
+ COPY_WSTR("executable", config->executable);
+ COPY_WSTR("_base_executable", config->base_executable);
+ COPY_WSTR("prefix", config->prefix);
+ COPY_WSTR("base_prefix", config->base_prefix);
+ COPY_WSTR("exec_prefix", config->exec_prefix);
+ COPY_WSTR("base_exec_prefix", config->base_exec_prefix);
+ COPY_WSTR("platlibdir", config->platlibdir);
+
+ if (config->pycache_prefix != NULL) {
+ SET_SYS_FROM_WSTR("pycache_prefix", config->pycache_prefix);
+ } else {
+ if (PyDict_SetItemString(sysdict, "pycache_prefix", Py_None) < 0) {
+ return -1;
+ }
+ }
+
+ COPY_LIST("argv", config->argv);
+ COPY_LIST("orig_argv", config->orig_argv);
+ COPY_LIST("warnoptions", config->warnoptions);
+
+ SET_SYS("_xoptions", sys_create_xoptions_dict(config));
+
+ const wchar_t *stdlibdir = _Py_GetStdlibDir();
+ if (stdlibdir != NULL) {
+ SET_SYS_FROM_WSTR("_stdlib_dir", stdlibdir);
+ }
+ else {
+ if (PyDict_SetItemString(sysdict, "_stdlib_dir", Py_None) < 0) {
+ return -1;
+ }
+ }
+
+#undef SET_SYS_FROM_WSTR
+#undef COPY_LIST
+#undef COPY_WSTR
+
+ // sys.flags
+ PyObject *flags = _PySys_GetObject(interp, "flags"); // borrowed ref
+ if (flags == NULL) {
+ if (!_PyErr_Occurred(tstate)) {
+ _PyErr_SetString(tstate, PyExc_RuntimeError, "lost sys.flags");
+ }
+ return -1;
+ }
+ if (set_flags_from_config(interp, flags) < 0) {
+ return -1;
+ }
+
+ SET_SYS("dont_write_bytecode", PyBool_FromLong(!config->write_bytecode));
+
+ if (_PyErr_Occurred(tstate)) {
+ goto err_occurred;
+ }
+
+ return 0;
+
+err_occurred:
+ return -1;
+}
+
+#undef SET_SYS
+#undef SET_SYS_FROM_STRING
+
+
+/* Set up a preliminary stderr printer until we have enough
+ infrastructure for the io module in place.
+
+ Use UTF-8/backslashreplace and ignore EAGAIN errors. */
+static PyStatus
+_PySys_SetPreliminaryStderr(PyObject *sysdict)
+{
+ PyObject *pstderr = PyFile_NewStdPrinter(fileno(stderr));
+ if (pstderr == NULL) {
+ goto error;
+ }
+ if (PyDict_SetItem(sysdict, &_Py_ID(stderr), pstderr) < 0) {
+ goto error;
+ }
+ if (PyDict_SetItemString(sysdict, "__stderr__", pstderr) < 0) {
+ goto error;
+ }
+ Py_DECREF(pstderr);
+ return _PyStatus_OK();
+
+error:
+ Py_XDECREF(pstderr);
+ return _PyStatus_ERR("can't set preliminary stderr");
+}
+
+PyObject *_Py_CreateMonitoringObject(void);
+
+/* Create sys module without all attributes.
+ _PySys_UpdateConfig() should be called later to add remaining attributes. */
+PyStatus
+_PySys_Create(PyThreadState *tstate, PyObject **sysmod_p)
+{
+ assert(!_PyErr_Occurred(tstate));
+
+ PyInterpreterState *interp = tstate->interp;
+
+ PyObject *modules = _PyImport_InitModules(interp);
+ if (modules == NULL) {
+ goto error;
+ }
+
+ PyObject *sysmod = _PyModule_CreateInitialized(&sysmodule, PYTHON_API_VERSION);
+ if (sysmod == NULL) {
+ return _PyStatus_ERR("failed to create a module object");
+ }
+
+ PyObject *sysdict = PyModule_GetDict(sysmod);
+ if (sysdict == NULL) {
+ goto error;
+ }
+ interp->sysdict = Py_NewRef(sysdict);
+
+ interp->sysdict_copy = PyDict_Copy(sysdict);
+ if (interp->sysdict_copy == NULL) {
+ goto error;
+ }
+
+ if (PyDict_SetItemString(sysdict, "modules", modules) < 0) {
+ goto error;
+ }
+
+ PyStatus status = _PySys_SetPreliminaryStderr(sysdict);
+ if (_PyStatus_EXCEPTION(status)) {
+ return status;
+ }
+
+ status = _PySys_InitCore(tstate, sysdict);
+ if (_PyStatus_EXCEPTION(status)) {
+ return status;
+ }
+
+ if (_PyImport_FixupBuiltin(sysmod, "sys", modules) < 0) {
+ goto error;
+ }
+
+ PyObject *monitoring = _Py_CreateMonitoringObject();
+ if (monitoring == NULL) {
+ goto error;
+ }
+ int err = PyDict_SetItemString(sysdict, "monitoring", monitoring);
+ Py_DECREF(monitoring);
+ if (err < 0) {
+ goto error;
+ }
+
+ assert(!_PyErr_Occurred(tstate));
+
+ *sysmod_p = sysmod;
+ return _PyStatus_OK();
+
+error:
+ return _PyStatus_ERR("can't initialize sys module");
+}
+
+
+void
+_PySys_FiniTypes(PyInterpreterState *interp)
+{
+ _PyStructSequence_FiniBuiltin(interp, &VersionInfoType);
+ _PyStructSequence_FiniBuiltin(interp, &FlagsType);
+#if defined(MS_WINDOWS)
+ _PyStructSequence_FiniBuiltin(interp, &WindowsVersionType);
+#endif
+ _PyStructSequence_FiniBuiltin(interp, &Hash_InfoType);
+ _PyStructSequence_FiniBuiltin(interp, &AsyncGenHooksType);
+#ifdef __EMSCRIPTEN__
+ if (_Py_IsMainInterpreter(interp)) {
+ Py_CLEAR(EmscriptenInfoType);
+ }
+#endif
+}
+
+
+static PyObject *
+makepathobject(const wchar_t *path, wchar_t delim)
+{
+ int i, n;
+ const wchar_t *p;
+ PyObject *v, *w;
+
+ n = 1;
+ p = path;
+ while ((p = wcschr(p, delim)) != NULL) {
+ n++;
+ p++;
+ }
+ v = PyList_New(n);
+ if (v == NULL)
+ return NULL;
+ for (i = 0; ; i++) {
+ p = wcschr(path, delim);
+ if (p == NULL)
+ p = path + wcslen(path); /* End of string */
+ w = PyUnicode_FromWideChar(path, (Py_ssize_t)(p - path));
+ if (w == NULL) {
+ Py_DECREF(v);
+ return NULL;
+ }
+ PyList_SET_ITEM(v, i, w);
+ if (*p == '\0')
+ break;
+ path = p+1;
+ }
+ return v;
+}
+
+void
+PySys_SetPath(const wchar_t *path)
+{
+ PyObject *v;
+ if ((v = makepathobject(path, DELIM)) == NULL)
+ Py_FatalError("can't create sys.path");
+ PyInterpreterState *interp = _PyInterpreterState_GET();
+ if (sys_set_object(interp, &_Py_ID(path), v) != 0) {
+ Py_FatalError("can't assign sys.path");
+ }
+ Py_DECREF(v);
+}
+
+static PyObject *
+make_sys_argv(int argc, wchar_t * const * argv)
+{
+ PyObject *list = PyList_New(argc);
+ if (list == NULL) {
+ return NULL;
+ }
+
+ for (Py_ssize_t i = 0; i < argc; i++) {
+ PyObject *v = PyUnicode_FromWideChar(argv[i], -1);
+ if (v == NULL) {
+ Py_DECREF(list);
+ return NULL;
+ }
+ PyList_SET_ITEM(list, i, v);
+ }
+ return list;
+}
+
+void
+PySys_SetArgvEx(int argc, wchar_t **argv, int updatepath)
+{
+ wchar_t* empty_argv[1] = {L""};
+ PyThreadState *tstate = _PyThreadState_GET();
+
+ if (argc < 1 || argv == NULL) {
+ /* Ensure at least one (empty) argument is seen */
+ argv = empty_argv;
+ argc = 1;
+ }
+
+ PyObject *av = make_sys_argv(argc, argv);
+ if (av == NULL) {
+ Py_FatalError("no mem for sys.argv");
+ }
+ if (sys_set_object_str(tstate->interp, "argv", av) != 0) {
+ Py_DECREF(av);
+ Py_FatalError("can't assign sys.argv");
+ }
+ Py_DECREF(av);
+
+ if (updatepath) {
+ /* If argv[0] is not '-c' nor '-m', prepend argv[0] to sys.path.
+ If argv[0] is a symlink, use the real path. */
+ const PyWideStringList argv_list = {.length = argc, .items = argv};
+ PyObject *path0 = NULL;
+ if (_PyPathConfig_ComputeSysPath0(&argv_list, &path0)) {
+ if (path0 == NULL) {
+ Py_FatalError("can't compute path0 from argv");
+ }
+
+ PyObject *sys_path = _PySys_GetAttr(tstate, &_Py_ID(path));
+ if (sys_path != NULL) {
+ if (PyList_Insert(sys_path, 0, path0) < 0) {
+ Py_DECREF(path0);
+ Py_FatalError("can't prepend path0 to sys.path");
+ }
+ }
+ Py_DECREF(path0);
+ }
+ }
+}
+
+void
+PySys_SetArgv(int argc, wchar_t **argv)
+{
+_Py_COMP_DIAG_PUSH
+_Py_COMP_DIAG_IGNORE_DEPR_DECLS
+ PySys_SetArgvEx(argc, argv, 0);
+_Py_COMP_DIAG_POP
+}
+
+/* Reimplementation of PyFile_WriteString() no calling indirectly
+ PyErr_CheckSignals(): avoid the call to PyObject_Str(). */
+
+static int
+sys_pyfile_write_unicode(PyObject *unicode, PyObject *file)
+{
+ if (file == NULL)
+ return -1;
+ assert(unicode != NULL);
+ PyObject *result = _PyObject_CallMethodOneArg(file, &_Py_ID(write), unicode);
+ if (result == NULL) {
+ return -1;
+ }
+ Py_DECREF(result);
+ return 0;
+}
+
+static int
+sys_pyfile_write(const char *text, PyObject *file)
+{
+ PyObject *unicode = NULL;
+ int err;
+
+ if (file == NULL)
+ return -1;
+
+ unicode = PyUnicode_FromString(text);
+ if (unicode == NULL)
+ return -1;
+
+ err = sys_pyfile_write_unicode(unicode, file);
+ Py_DECREF(unicode);
+ return err;
+}
+
+/* APIs to write to sys.stdout or sys.stderr using a printf-like interface.
+ Adapted from code submitted by Just van Rossum.
+
+ PySys_WriteStdout(format, ...)
+ PySys_WriteStderr(format, ...)
+
+ The first function writes to sys.stdout; the second to sys.stderr. When
+ there is a problem, they write to the real (C level) stdout or stderr;
+ no exceptions are raised.
+
+ PyErr_CheckSignals() is not called to avoid the execution of the Python
+ signal handlers: they may raise a new exception whereas sys_write()
+ ignores all exceptions.
+
+ Both take a printf-style format string as their first argument followed
+ by a variable length argument list determined by the format string.
+
+ *** WARNING ***
+
+ The format should limit the total size of the formatted output string to
+ 1000 bytes. In particular, this means that no unrestricted "%s" formats
+ should occur; these should be limited using "%.<N>s where <N> is a
+ decimal number calculated so that <N> plus the maximum size of other
+ formatted text does not exceed 1000 bytes. Also watch out for "%f",
+ which can print hundreds of digits for very large numbers.
+
+ */
+
+static void
+sys_write(PyObject *key, FILE *fp, const char *format, va_list va)
+{
+ PyObject *file;
+ char buffer[1001];
+ int written;
+ PyThreadState *tstate = _PyThreadState_GET();
+
+ PyObject *exc = _PyErr_GetRaisedException(tstate);
+ file = _PySys_GetAttr(tstate, key);
+ written = PyOS_vsnprintf(buffer, sizeof(buffer), format, va);
+ if (sys_pyfile_write(buffer, file) != 0) {
+ _PyErr_Clear(tstate);
+ fputs(buffer, fp);
+ }
+ if (written < 0 || (size_t)written >= sizeof(buffer)) {
+ const char *truncated = "... truncated";
+ if (sys_pyfile_write(truncated, file) != 0)
+ fputs(truncated, fp);
+ }
+ _PyErr_SetRaisedException(tstate, exc);
+}
+
+void
+PySys_WriteStdout(const char *format, ...)
+{
+ va_list va;
+
+ va_start(va, format);
+ sys_write(&_Py_ID(stdout), stdout, format, va);
+ va_end(va);
+}
+
+void
+PySys_WriteStderr(const char *format, ...)
+{
+ va_list va;
+
+ va_start(va, format);
+ sys_write(&_Py_ID(stderr), stderr, format, va);
+ va_end(va);
+}
+
+static void
+sys_format(PyObject *key, FILE *fp, const char *format, va_list va)
+{
+ PyObject *file, *message;
+ const char *utf8;
+ PyThreadState *tstate = _PyThreadState_GET();
+
+ PyObject *exc = _PyErr_GetRaisedException(tstate);
+ file = _PySys_GetAttr(tstate, key);
+ message = PyUnicode_FromFormatV(format, va);
+ if (message != NULL) {
+ if (sys_pyfile_write_unicode(message, file) != 0) {
+ _PyErr_Clear(tstate);
+ utf8 = PyUnicode_AsUTF8(message);
+ if (utf8 != NULL)
+ fputs(utf8, fp);
+ }
+ Py_DECREF(message);
+ }
+ _PyErr_SetRaisedException(tstate, exc);
+}
+
+void
+PySys_FormatStdout(const char *format, ...)
+{
+ va_list va;
+
+ va_start(va, format);
+ sys_format(&_Py_ID(stdout), stdout, format, va);
+ va_end(va);
+}
+
+void
+PySys_FormatStderr(const char *format, ...)
+{
+ va_list va;
+
+ va_start(va, format);
+ sys_format(&_Py_ID(stderr), stderr, format, va);
+ va_end(va);
+}
diff --git a/contrib/tools/python3/Python/thread.c b/contrib/tools/python3/Python/thread.c
new file mode 100644
index 00000000000..7fc53f9b613
--- /dev/null
+++ b/contrib/tools/python3/Python/thread.c
@@ -0,0 +1,196 @@
+
+/* Thread package.
+ This is intended to be usable independently from Python.
+ The implementation for system foobar is in a file thread_foobar.h
+ which is included by this file dependent on config settings.
+ Stuff shared by all thread_*.h files is collected here. */
+
+#include "Python.h"
+#include "pycore_pystate.h" // _PyInterpreterState_GET()
+#include "pycore_structseq.h" // _PyStructSequence_FiniBuiltin()
+#include "pycore_pythread.h"
+
+#ifndef DONT_HAVE_STDIO_H
+#include <stdio.h>
+#endif
+
+#include <stdlib.h>
+
+
+static void PyThread__init_thread(void); /* Forward */
+
+#define initialized _PyRuntime.threads.initialized
+
+void
+PyThread_init_thread(void)
+{
+ if (initialized) {
+ return;
+ }
+ initialized = 1;
+ PyThread__init_thread();
+}
+
+#if defined(HAVE_PTHREAD_STUBS)
+# define PYTHREAD_NAME "pthread-stubs"
+# include "thread_pthread_stubs.h"
+#elif defined(_USE_PTHREADS) /* AKA _PTHREADS */
+# if defined(__EMSCRIPTEN__) && !defined(__EMSCRIPTEN_PTHREADS__)
+# define PYTHREAD_NAME "pthread-stubs"
+# else
+# define PYTHREAD_NAME "pthread"
+# endif
+# include "thread_pthread.h"
+#elif defined(NT_THREADS)
+# define PYTHREAD_NAME "nt"
+# include "thread_nt.h"
+#else
+# error "Require native threads. See https://bugs.python.org/issue31370"
+#endif
+
+
+/* return the current thread stack size */
+size_t
+PyThread_get_stacksize(void)
+{
+ return _PyInterpreterState_GET()->threads.stacksize;
+}
+
+/* Only platforms defining a THREAD_SET_STACKSIZE() macro
+ in thread_<platform>.h support changing the stack size.
+ Return 0 if stack size is valid,
+ -1 if stack size value is invalid,
+ -2 if setting stack size is not supported. */
+int
+PyThread_set_stacksize(size_t size)
+{
+#if defined(THREAD_SET_STACKSIZE)
+ return THREAD_SET_STACKSIZE(size);
+#else
+ return -2;
+#endif
+}
+
+
+/* Thread Specific Storage (TSS) API
+
+ Cross-platform components of TSS API implementation.
+*/
+
+Py_tss_t *
+PyThread_tss_alloc(void)
+{
+ Py_tss_t *new_key = (Py_tss_t *)PyMem_RawMalloc(sizeof(Py_tss_t));
+ if (new_key == NULL) {
+ return NULL;
+ }
+ new_key->_is_initialized = 0;
+ return new_key;
+}
+
+void
+PyThread_tss_free(Py_tss_t *key)
+{
+ if (key != NULL) {
+ PyThread_tss_delete(key);
+ PyMem_RawFree((void *)key);
+ }
+}
+
+int
+PyThread_tss_is_created(Py_tss_t *key)
+{
+ assert(key != NULL);
+ return key->_is_initialized;
+}
+
+
+PyDoc_STRVAR(threadinfo__doc__,
+"sys.thread_info\n\
+\n\
+A named tuple holding information about the thread implementation.");
+
+static PyStructSequence_Field threadinfo_fields[] = {
+ {"name", "name of the thread implementation"},
+ {"lock", "name of the lock implementation"},
+ {"version", "name and version of the thread library"},
+ {0}
+};
+
+static PyStructSequence_Desc threadinfo_desc = {
+ "sys.thread_info", /* name */
+ threadinfo__doc__, /* doc */
+ threadinfo_fields, /* fields */
+ 3
+};
+
+static PyTypeObject ThreadInfoType;
+
+PyObject*
+PyThread_GetInfo(void)
+{
+ PyObject *threadinfo, *value;
+ int pos = 0;
+#if (defined(_POSIX_THREADS) && defined(HAVE_CONFSTR) \
+ && defined(_CS_GNU_LIBPTHREAD_VERSION))
+ char buffer[255];
+ int len;
+#endif
+
+ PyInterpreterState *interp = _PyInterpreterState_GET();
+ if (_PyStructSequence_InitBuiltin(interp, &ThreadInfoType, &threadinfo_desc) < 0) {
+ return NULL;
+ }
+
+ threadinfo = PyStructSequence_New(&ThreadInfoType);
+ if (threadinfo == NULL)
+ return NULL;
+
+ value = PyUnicode_FromString(PYTHREAD_NAME);
+ if (value == NULL) {
+ Py_DECREF(threadinfo);
+ return NULL;
+ }
+ PyStructSequence_SET_ITEM(threadinfo, pos++, value);
+
+#ifdef HAVE_PTHREAD_STUBS
+ value = Py_NewRef(Py_None);
+#elif defined(_POSIX_THREADS)
+#ifdef USE_SEMAPHORES
+ value = PyUnicode_FromString("semaphore");
+#else
+ value = PyUnicode_FromString("mutex+cond");
+#endif
+ if (value == NULL) {
+ Py_DECREF(threadinfo);
+ return NULL;
+ }
+#else
+ value = Py_NewRef(Py_None);
+#endif
+ PyStructSequence_SET_ITEM(threadinfo, pos++, value);
+
+#if (defined(_POSIX_THREADS) && defined(HAVE_CONFSTR) \
+ && defined(_CS_GNU_LIBPTHREAD_VERSION))
+ value = NULL;
+ len = confstr(_CS_GNU_LIBPTHREAD_VERSION, buffer, sizeof(buffer));
+ if (1 < len && (size_t)len < sizeof(buffer)) {
+ value = PyUnicode_DecodeFSDefaultAndSize(buffer, len-1);
+ if (value == NULL)
+ PyErr_Clear();
+ }
+ if (value == NULL)
+#endif
+ {
+ value = Py_NewRef(Py_None);
+ }
+ PyStructSequence_SET_ITEM(threadinfo, pos++, value);
+ return threadinfo;
+}
+
+
+void
+_PyThread_FiniType(PyInterpreterState *interp)
+{
+ _PyStructSequence_FiniBuiltin(interp, &ThreadInfoType);
+}
diff --git a/contrib/tools/python3/Python/thread_nt.h b/contrib/tools/python3/Python/thread_nt.h
new file mode 100644
index 00000000000..26f441bd6d3
--- /dev/null
+++ b/contrib/tools/python3/Python/thread_nt.h
@@ -0,0 +1,502 @@
+#include "pycore_interp.h" // _PyInterpreterState.threads.stacksize
+
+/* This code implemented by Dag.Gruneau@elsa.preseco.comm.se */
+/* Fast NonRecursiveMutex support by Yakov Markovitch, markovitch@iso.ru */
+/* Eliminated some memory leaks, gsw@agere.com */
+
+#include <windows.h>
+#include <limits.h>
+#ifdef HAVE_PROCESS_H
+#include <process.h>
+#endif
+
+/* options */
+#ifndef _PY_USE_CV_LOCKS
+#define _PY_USE_CV_LOCKS 1 /* use locks based on cond vars */
+#endif
+
+/* Now, define a non-recursive mutex using either condition variables
+ * and critical sections (fast) or using operating system mutexes
+ * (slow)
+ */
+
+#if _PY_USE_CV_LOCKS
+
+#include "condvar.h"
+
+typedef struct _NRMUTEX
+{
+ PyMUTEX_T cs;
+ PyCOND_T cv;
+ int locked;
+} NRMUTEX;
+typedef NRMUTEX *PNRMUTEX;
+
+static PNRMUTEX
+AllocNonRecursiveMutex(void)
+{
+ PNRMUTEX m = (PNRMUTEX)PyMem_RawMalloc(sizeof(NRMUTEX));
+ if (!m)
+ return NULL;
+ if (PyCOND_INIT(&m->cv))
+ goto fail;
+ if (PyMUTEX_INIT(&m->cs)) {
+ PyCOND_FINI(&m->cv);
+ goto fail;
+ }
+ m->locked = 0;
+ return m;
+fail:
+ PyMem_RawFree(m);
+ return NULL;
+}
+
+static VOID
+FreeNonRecursiveMutex(PNRMUTEX mutex)
+{
+ if (mutex) {
+ PyCOND_FINI(&mutex->cv);
+ PyMUTEX_FINI(&mutex->cs);
+ PyMem_RawFree(mutex);
+ }
+}
+
+static DWORD
+EnterNonRecursiveMutex(PNRMUTEX mutex, DWORD milliseconds)
+{
+ DWORD result = WAIT_OBJECT_0;
+ if (PyMUTEX_LOCK(&mutex->cs))
+ return WAIT_FAILED;
+ if (milliseconds == INFINITE) {
+ while (mutex->locked) {
+ if (PyCOND_WAIT(&mutex->cv, &mutex->cs)) {
+ result = WAIT_FAILED;
+ break;
+ }
+ }
+ } else if (milliseconds != 0) {
+ /* wait at least until the deadline */
+ _PyTime_t nanoseconds = _PyTime_FromNanoseconds((_PyTime_t)milliseconds * 1000000);
+ _PyTime_t deadline = _PyTime_Add(_PyTime_GetPerfCounter(), nanoseconds);
+ while (mutex->locked) {
+ _PyTime_t microseconds = _PyTime_AsMicroseconds(nanoseconds,
+ _PyTime_ROUND_TIMEOUT);
+ if (PyCOND_TIMEDWAIT(&mutex->cv, &mutex->cs, microseconds) < 0) {
+ result = WAIT_FAILED;
+ break;
+ }
+ nanoseconds = deadline - _PyTime_GetPerfCounter();
+ if (nanoseconds <= 0) {
+ break;
+ }
+ }
+ }
+ if (!mutex->locked) {
+ mutex->locked = 1;
+ result = WAIT_OBJECT_0;
+ } else if (result == WAIT_OBJECT_0)
+ result = WAIT_TIMEOUT;
+ /* else, it is WAIT_FAILED */
+ PyMUTEX_UNLOCK(&mutex->cs); /* must ignore result here */
+ return result;
+}
+
+static BOOL
+LeaveNonRecursiveMutex(PNRMUTEX mutex)
+{
+ BOOL result;
+ if (PyMUTEX_LOCK(&mutex->cs))
+ return FALSE;
+ mutex->locked = 0;
+ /* condvar APIs return 0 on success. We need to return TRUE on success. */
+ result = !PyCOND_SIGNAL(&mutex->cv);
+ PyMUTEX_UNLOCK(&mutex->cs);
+ return result;
+}
+
+#else /* if ! _PY_USE_CV_LOCKS */
+
+/* NR-locks based on a kernel mutex */
+#define PNRMUTEX HANDLE
+
+static PNRMUTEX
+AllocNonRecursiveMutex(void)
+{
+ return CreateSemaphore(NULL, 1, 1, NULL);
+}
+
+static VOID
+FreeNonRecursiveMutex(PNRMUTEX mutex)
+{
+ /* No in-use check */
+ CloseHandle(mutex);
+}
+
+static DWORD
+EnterNonRecursiveMutex(PNRMUTEX mutex, DWORD milliseconds)
+{
+ return WaitForSingleObjectEx(mutex, milliseconds, FALSE);
+}
+
+static BOOL
+LeaveNonRecursiveMutex(PNRMUTEX mutex)
+{
+ return ReleaseSemaphore(mutex, 1, NULL);
+}
+#endif /* _PY_USE_CV_LOCKS */
+
+unsigned long PyThread_get_thread_ident(void);
+
+#ifdef PY_HAVE_THREAD_NATIVE_ID
+unsigned long PyThread_get_thread_native_id(void);
+#endif
+
+/*
+ * Initialization for the current runtime.
+ */
+static void
+PyThread__init_thread(void)
+{
+ // Initialization of the C package should not be needed.
+}
+
+/*
+ * Thread support.
+ */
+
+typedef struct {
+ void (*func)(void*);
+ void *arg;
+} callobj;
+
+/* thunker to call adapt between the function type used by the system's
+thread start function and the internally used one. */
+static unsigned __stdcall
+bootstrap(void *call)
+{
+ callobj *obj = (callobj*)call;
+ void (*func)(void*) = obj->func;
+ void *arg = obj->arg;
+ HeapFree(GetProcessHeap(), 0, obj);
+ func(arg);
+ return 0;
+}
+
+unsigned long
+PyThread_start_new_thread(void (*func)(void *), void *arg)
+{
+ HANDLE hThread;
+ unsigned threadID;
+ callobj *obj;
+
+ if (!initialized)
+ PyThread_init_thread();
+
+ obj = (callobj*)HeapAlloc(GetProcessHeap(), 0, sizeof(*obj));
+ if (!obj)
+ return PYTHREAD_INVALID_THREAD_ID;
+ obj->func = func;
+ obj->arg = arg;
+ PyThreadState *tstate = _PyThreadState_GET();
+ size_t stacksize = tstate ? tstate->interp->threads.stacksize : 0;
+ hThread = (HANDLE)_beginthreadex(0,
+ Py_SAFE_DOWNCAST(stacksize, Py_ssize_t, unsigned int),
+ bootstrap, obj,
+ 0, &threadID);
+ if (hThread == 0) {
+ /* I've seen errno == EAGAIN here, which means "there are
+ * too many threads".
+ */
+ int e = errno;
+ threadID = (unsigned)-1;
+ HeapFree(GetProcessHeap(), 0, obj);
+ }
+ else {
+ CloseHandle(hThread);
+ }
+ return threadID;
+}
+
+/*
+ * Return the thread Id instead of a handle. The Id is said to uniquely identify the
+ * thread in the system
+ */
+unsigned long
+PyThread_get_thread_ident(void)
+{
+ if (!initialized)
+ PyThread_init_thread();
+
+ return GetCurrentThreadId();
+}
+
+#ifdef PY_HAVE_THREAD_NATIVE_ID
+/*
+ * Return the native Thread ID (TID) of the calling thread.
+ * The native ID of a thread is valid and guaranteed to be unique system-wide
+ * from the time the thread is created until the thread has been terminated.
+ */
+unsigned long
+PyThread_get_thread_native_id(void)
+{
+ if (!initialized) {
+ PyThread_init_thread();
+ }
+
+ DWORD native_id;
+ native_id = GetCurrentThreadId();
+ return (unsigned long) native_id;
+}
+#endif
+
+void _Py_NO_RETURN
+PyThread_exit_thread(void)
+{
+ if (!initialized)
+ exit(0);
+ _endthreadex(0);
+}
+
+/*
+ * Lock support. It has to be implemented as semaphores.
+ * I [Dag] tried to implement it with mutex but I could find a way to
+ * tell whether a thread already own the lock or not.
+ */
+PyThread_type_lock
+PyThread_allocate_lock(void)
+{
+ PNRMUTEX mutex;
+
+ if (!initialized)
+ PyThread_init_thread();
+
+ mutex = AllocNonRecursiveMutex() ;
+
+ PyThread_type_lock aLock = (PyThread_type_lock) mutex;
+ assert(aLock);
+
+ return aLock;
+}
+
+void
+PyThread_free_lock(PyThread_type_lock aLock)
+{
+ FreeNonRecursiveMutex(aLock) ;
+}
+
+// WaitForSingleObject() accepts timeout in milliseconds in the range
+// [0; 0xFFFFFFFE] (DWORD type). INFINITE value (0xFFFFFFFF) means no
+// timeout. 0xFFFFFFFE milliseconds is around 49.7 days.
+const DWORD TIMEOUT_MS_MAX = 0xFFFFFFFE;
+
+/*
+ * Return 1 on success if the lock was acquired
+ *
+ * and 0 if the lock was not acquired. This means a 0 is returned
+ * if the lock has already been acquired by this thread!
+ */
+PyLockStatus
+PyThread_acquire_lock_timed(PyThread_type_lock aLock,
+ PY_TIMEOUT_T microseconds, int intr_flag)
+{
+ assert(aLock);
+
+ /* Fow now, intr_flag does nothing on Windows, and lock acquires are
+ * uninterruptible. */
+ PyLockStatus success;
+ PY_TIMEOUT_T milliseconds;
+
+ if (microseconds >= 0) {
+ milliseconds = microseconds / 1000;
+ // Round milliseconds away from zero
+ if (microseconds % 1000 > 0) {
+ milliseconds++;
+ }
+ if (milliseconds > (PY_TIMEOUT_T)TIMEOUT_MS_MAX) {
+ // bpo-41710: PyThread_acquire_lock_timed() cannot report timeout
+ // overflow to the caller, so clamp the timeout to
+ // [0, TIMEOUT_MS_MAX] milliseconds.
+ //
+ // _thread.Lock.acquire() and _thread.RLock.acquire() raise an
+ // OverflowError if microseconds is greater than PY_TIMEOUT_MAX.
+ milliseconds = TIMEOUT_MS_MAX;
+ }
+ assert(milliseconds != INFINITE);
+ }
+ else {
+ milliseconds = INFINITE;
+ }
+
+ if (EnterNonRecursiveMutex((PNRMUTEX)aLock,
+ (DWORD)milliseconds) == WAIT_OBJECT_0) {
+ success = PY_LOCK_ACQUIRED;
+ }
+ else {
+ success = PY_LOCK_FAILURE;
+ }
+
+ return success;
+}
+int
+PyThread_acquire_lock(PyThread_type_lock aLock, int waitflag)
+{
+ return PyThread_acquire_lock_timed(aLock, waitflag ? -1 : 0, 0);
+}
+
+void
+PyThread_release_lock(PyThread_type_lock aLock)
+{
+ assert(aLock);
+ (void)LeaveNonRecursiveMutex((PNRMUTEX) aLock);
+}
+
+/* minimum/maximum thread stack sizes supported */
+#define THREAD_MIN_STACKSIZE 0x8000 /* 32 KiB */
+#define THREAD_MAX_STACKSIZE 0x10000000 /* 256 MiB */
+
+/* set the thread stack size.
+ * Return 0 if size is valid, -1 otherwise.
+ */
+static int
+_pythread_nt_set_stacksize(size_t size)
+{
+ /* set to default */
+ if (size == 0) {
+ _PyInterpreterState_GET()->threads.stacksize = 0;
+ return 0;
+ }
+
+ /* valid range? */
+ if (size >= THREAD_MIN_STACKSIZE && size < THREAD_MAX_STACKSIZE) {
+ _PyInterpreterState_GET()->threads.stacksize = size;
+ return 0;
+ }
+
+ return -1;
+}
+
+#define THREAD_SET_STACKSIZE(x) _pythread_nt_set_stacksize(x)
+
+
+/* Thread Local Storage (TLS) API
+
+ This API is DEPRECATED since Python 3.7. See PEP 539 for details.
+*/
+
+int
+PyThread_create_key(void)
+{
+ DWORD result = TlsAlloc();
+ if (result == TLS_OUT_OF_INDEXES)
+ return -1;
+ return (int)result;
+}
+
+void
+PyThread_delete_key(int key)
+{
+ TlsFree(key);
+}
+
+int
+PyThread_set_key_value(int key, void *value)
+{
+ BOOL ok = TlsSetValue(key, value);
+ return ok ? 0 : -1;
+}
+
+void *
+PyThread_get_key_value(int key)
+{
+ /* because TLS is used in the Py_END_ALLOW_THREAD macro,
+ * it is necessary to preserve the windows error state, because
+ * it is assumed to be preserved across the call to the macro.
+ * Ideally, the macro should be fixed, but it is simpler to
+ * do it here.
+ */
+ DWORD error = GetLastError();
+ void *result = TlsGetValue(key);
+ SetLastError(error);
+ return result;
+}
+
+void
+PyThread_delete_key_value(int key)
+{
+ /* NULL is used as "key missing", and it is also the default
+ * given by TlsGetValue() if nothing has been set yet.
+ */
+ TlsSetValue(key, NULL);
+}
+
+
+/* reinitialization of TLS is not necessary after fork when using
+ * the native TLS functions. And forking isn't supported on Windows either.
+ */
+void
+PyThread_ReInitTLS(void)
+{
+}
+
+
+/* Thread Specific Storage (TSS) API
+
+ Platform-specific components of TSS API implementation.
+*/
+
+int
+PyThread_tss_create(Py_tss_t *key)
+{
+ assert(key != NULL);
+ /* If the key has been created, function is silently skipped. */
+ if (key->_is_initialized) {
+ return 0;
+ }
+
+ DWORD result = TlsAlloc();
+ if (result == TLS_OUT_OF_INDEXES) {
+ return -1;
+ }
+ /* In Windows, platform-specific key type is DWORD. */
+ key->_key = result;
+ key->_is_initialized = 1;
+ return 0;
+}
+
+void
+PyThread_tss_delete(Py_tss_t *key)
+{
+ assert(key != NULL);
+ /* If the key has not been created, function is silently skipped. */
+ if (!key->_is_initialized) {
+ return;
+ }
+
+ TlsFree(key->_key);
+ key->_key = TLS_OUT_OF_INDEXES;
+ key->_is_initialized = 0;
+}
+
+int
+PyThread_tss_set(Py_tss_t *key, void *value)
+{
+ assert(key != NULL);
+ BOOL ok = TlsSetValue(key->_key, value);
+ return ok ? 0 : -1;
+}
+
+void *
+PyThread_tss_get(Py_tss_t *key)
+{
+ assert(key != NULL);
+ /* because TSS is used in the Py_END_ALLOW_THREAD macro,
+ * it is necessary to preserve the windows error state, because
+ * it is assumed to be preserved across the call to the macro.
+ * Ideally, the macro should be fixed, but it is simpler to
+ * do it here.
+ */
+ DWORD error = GetLastError();
+ void *result = TlsGetValue(key->_key);
+ SetLastError(error);
+ return result;
+}
diff --git a/contrib/tools/python3/Python/thread_pthread.h b/contrib/tools/python3/Python/thread_pthread.h
new file mode 100644
index 00000000000..e5535a945e4
--- /dev/null
+++ b/contrib/tools/python3/Python/thread_pthread.h
@@ -0,0 +1,921 @@
+#include "pycore_interp.h" // _PyInterpreterState.threads.stacksize
+
+/* Posix threads interface */
+
+#include <stdlib.h>
+#include <string.h>
+#if defined(__APPLE__) || defined(HAVE_PTHREAD_DESTRUCTOR)
+#define destructor xxdestructor
+#endif
+#ifndef HAVE_PTHREAD_STUBS
+# include <pthread.h>
+#endif
+#if defined(__APPLE__) || defined(HAVE_PTHREAD_DESTRUCTOR)
+#undef destructor
+#endif
+#include <signal.h>
+
+#if defined(__linux__)
+# include <sys/syscall.h> /* syscall(SYS_gettid) */
+#elif defined(__FreeBSD__)
+# include <pthread_np.h> /* pthread_getthreadid_np() */
+#elif defined(__OpenBSD__)
+# include <unistd.h> /* getthrid() */
+#elif defined(_AIX)
+# include <sys/thread.h> /* thread_self() */
+#elif defined(__NetBSD__)
+# include <lwp.h> /* _lwp_self() */
+#elif defined(__DragonFly__)
+# error #include <sys/lwp.h> /* lwp_gettid() */
+#endif
+
+/* The POSIX spec requires that use of pthread_attr_setstacksize
+ be conditional on _POSIX_THREAD_ATTR_STACKSIZE being defined. */
+#ifdef _POSIX_THREAD_ATTR_STACKSIZE
+#ifndef THREAD_STACK_SIZE
+#define THREAD_STACK_SIZE 0 /* use default stack size */
+#endif
+
+/* The default stack size for new threads on BSD is small enough that
+ * we'll get hard crashes instead of 'maximum recursion depth exceeded'
+ * exceptions.
+ *
+ * The default stack size below is the empirically determined minimal stack
+ * sizes where a simple recursive function doesn't cause a hard crash.
+ *
+ * For macOS the value of THREAD_STACK_SIZE is determined in configure.ac
+ * as it also depends on the other configure options like chosen sanitizer
+ * runtimes.
+ */
+#if defined(__FreeBSD__) && defined(THREAD_STACK_SIZE) && THREAD_STACK_SIZE == 0
+#undef THREAD_STACK_SIZE
+#define THREAD_STACK_SIZE 0x400000
+#endif
+#if defined(_AIX) && defined(THREAD_STACK_SIZE) && THREAD_STACK_SIZE == 0
+#undef THREAD_STACK_SIZE
+#define THREAD_STACK_SIZE 0x200000
+#endif
+/* bpo-38852: test_threading.test_recursion_limit() checks that 1000 recursive
+ Python calls (default recursion limit) doesn't crash, but raise a regular
+ RecursionError exception. In debug mode, Python function calls allocates
+ more memory on the stack, so use a stack of 8 MiB. */
+#if defined(__ANDROID__) && defined(THREAD_STACK_SIZE) && THREAD_STACK_SIZE == 0
+# ifdef Py_DEBUG
+# undef THREAD_STACK_SIZE
+# define THREAD_STACK_SIZE 0x800000
+# endif
+#endif
+#if defined(__VXWORKS__) && defined(THREAD_STACK_SIZE) && THREAD_STACK_SIZE == 0
+#undef THREAD_STACK_SIZE
+#define THREAD_STACK_SIZE 0x100000
+#endif
+/* for safety, ensure a viable minimum stacksize */
+#define THREAD_STACK_MIN 0x8000 /* 32 KiB */
+#else /* !_POSIX_THREAD_ATTR_STACKSIZE */
+#ifdef THREAD_STACK_SIZE
+#error "THREAD_STACK_SIZE defined but _POSIX_THREAD_ATTR_STACKSIZE undefined"
+#endif
+#endif
+
+/* The POSIX spec says that implementations supporting the sem_*
+ family of functions must indicate this by defining
+ _POSIX_SEMAPHORES. */
+#ifdef _POSIX_SEMAPHORES
+/* On FreeBSD 4.x, _POSIX_SEMAPHORES is defined empty, so
+ we need to add 0 to make it work there as well. */
+#if (_POSIX_SEMAPHORES+0) == -1
+#define HAVE_BROKEN_POSIX_SEMAPHORES
+#else
+#include <semaphore.h>
+#include <errno.h>
+#endif
+#endif
+
+
+/* Whether or not to use semaphores directly rather than emulating them with
+ * mutexes and condition variables:
+ */
+#if (defined(_POSIX_SEMAPHORES) && !defined(HAVE_BROKEN_POSIX_SEMAPHORES) && \
+ (defined(HAVE_SEM_TIMEDWAIT) || defined(HAVE_SEM_CLOCKWAIT)))
+# define USE_SEMAPHORES
+#else
+# undef USE_SEMAPHORES
+#endif
+
+
+/* On platforms that don't use standard POSIX threads pthread_sigmask()
+ * isn't present. DEC threads uses sigprocmask() instead as do most
+ * other UNIX International compliant systems that don't have the full
+ * pthread implementation.
+ */
+#if defined(HAVE_PTHREAD_SIGMASK) && !defined(HAVE_BROKEN_PTHREAD_SIGMASK)
+# define SET_THREAD_SIGMASK pthread_sigmask
+#else
+# define SET_THREAD_SIGMASK sigprocmask
+#endif
+
+
+/*
+ * pthread_cond support
+ */
+
+#define condattr_monotonic _PyRuntime.threads._condattr_monotonic.ptr
+
+static void
+init_condattr(void)
+{
+#ifdef CONDATTR_MONOTONIC
+# define ca _PyRuntime.threads._condattr_monotonic.val
+ // XXX We need to check the return code?
+ pthread_condattr_init(&ca);
+ // XXX We need to run pthread_condattr_destroy() during runtime fini.
+ if (pthread_condattr_setclock(&ca, CLOCK_MONOTONIC) == 0) {
+ condattr_monotonic = &ca; // Use monotonic clock
+ }
+# undef ca
+#endif // CONDATTR_MONOTONIC
+}
+
+int
+_PyThread_cond_init(PyCOND_T *cond)
+{
+ return pthread_cond_init(cond, condattr_monotonic);
+}
+
+
+void
+_PyThread_cond_after(long long us, struct timespec *abs)
+{
+ _PyTime_t timeout = _PyTime_FromMicrosecondsClamp(us);
+ _PyTime_t t;
+#ifdef CONDATTR_MONOTONIC
+ if (condattr_monotonic) {
+ t = _PyTime_GetMonotonicClock();
+ }
+ else
+#endif
+ {
+ t = _PyTime_GetSystemClock();
+ }
+ t = _PyTime_Add(t, timeout);
+ _PyTime_AsTimespec_clamp(t, abs);
+}
+
+
+/* A pthread mutex isn't sufficient to model the Python lock type
+ * because, according to Draft 5 of the docs (P1003.4a/D5), both of the
+ * following are undefined:
+ * -> a thread tries to lock a mutex it already has locked
+ * -> a thread tries to unlock a mutex locked by a different thread
+ * pthread mutexes are designed for serializing threads over short pieces
+ * of code anyway, so wouldn't be an appropriate implementation of
+ * Python's locks regardless.
+ *
+ * The pthread_lock struct implements a Python lock as a "locked?" bit
+ * and a <condition, mutex> pair. In general, if the bit can be acquired
+ * instantly, it is, else the pair is used to block the thread until the
+ * bit is cleared. 9 May 1994 tim@ksr.com
+ */
+
+typedef struct {
+ char locked; /* 0=unlocked, 1=locked */
+ /* a <cond, mutex> pair to handle an acquire of a locked lock */
+ pthread_cond_t lock_released;
+ pthread_mutex_t mut;
+} pthread_lock;
+
+#define CHECK_STATUS(name) if (status != 0) { perror(name); error = 1; }
+#define CHECK_STATUS_PTHREAD(name) if (status != 0) { fprintf(stderr, \
+ "%s: %s\n", name, strerror(status)); error = 1; }
+
+/*
+ * Initialization for the current runtime.
+ */
+static void
+PyThread__init_thread(void)
+{
+ // The library is only initialized once in the process,
+ // regardless of how many times the Python runtime is initialized.
+ static int lib_initialized = 0;
+ if (!lib_initialized) {
+ lib_initialized = 1;
+#if defined(_AIX) && defined(__GNUC__)
+ extern void pthread_init(void);
+ pthread_init();
+#endif
+ }
+ init_condattr();
+}
+
+/*
+ * Thread support.
+ */
+
+/* bpo-33015: pythread_callback struct and pythread_wrapper() cast
+ "void func(void *)" to "void* func(void *)": always return NULL.
+
+ PyThread_start_new_thread() uses "void func(void *)" type, whereas
+ pthread_create() requires a void* return value. */
+typedef struct {
+ void (*func) (void *);
+ void *arg;
+} pythread_callback;
+
+static void *
+pythread_wrapper(void *arg)
+{
+ /* copy func and func_arg and free the temporary structure */
+ pythread_callback *callback = arg;
+ void (*func)(void *) = callback->func;
+ void *func_arg = callback->arg;
+ PyMem_RawFree(arg);
+
+ func(func_arg);
+ return NULL;
+}
+
+unsigned long
+PyThread_start_new_thread(void (*func)(void *), void *arg)
+{
+ pthread_t th;
+ int status;
+#if defined(THREAD_STACK_SIZE) || defined(PTHREAD_SYSTEM_SCHED_SUPPORTED)
+ pthread_attr_t attrs;
+#endif
+#if defined(THREAD_STACK_SIZE)
+ size_t tss;
+#endif
+
+ if (!initialized)
+ PyThread_init_thread();
+
+#if defined(THREAD_STACK_SIZE) || defined(PTHREAD_SYSTEM_SCHED_SUPPORTED)
+ if (pthread_attr_init(&attrs) != 0)
+ return PYTHREAD_INVALID_THREAD_ID;
+#endif
+#if defined(THREAD_STACK_SIZE)
+ PyThreadState *tstate = _PyThreadState_GET();
+ size_t stacksize = tstate ? tstate->interp->threads.stacksize : 0;
+ tss = (stacksize != 0) ? stacksize : THREAD_STACK_SIZE;
+ if (tss != 0) {
+ if (pthread_attr_setstacksize(&attrs, tss) != 0) {
+ pthread_attr_destroy(&attrs);
+ return PYTHREAD_INVALID_THREAD_ID;
+ }
+ }
+#endif
+#if defined(PTHREAD_SYSTEM_SCHED_SUPPORTED)
+ pthread_attr_setscope(&attrs, PTHREAD_SCOPE_SYSTEM);
+#endif
+
+ pythread_callback *callback = PyMem_RawMalloc(sizeof(pythread_callback));
+
+ if (callback == NULL) {
+ return PYTHREAD_INVALID_THREAD_ID;
+ }
+
+ callback->func = func;
+ callback->arg = arg;
+
+ status = pthread_create(&th,
+#if defined(THREAD_STACK_SIZE) || defined(PTHREAD_SYSTEM_SCHED_SUPPORTED)
+ &attrs,
+#else
+ (pthread_attr_t*)NULL,
+#endif
+ pythread_wrapper, callback);
+
+#if defined(THREAD_STACK_SIZE) || defined(PTHREAD_SYSTEM_SCHED_SUPPORTED)
+ pthread_attr_destroy(&attrs);
+#endif
+
+ if (status != 0) {
+ PyMem_RawFree(callback);
+ return PYTHREAD_INVALID_THREAD_ID;
+ }
+
+ pthread_detach(th);
+
+#if SIZEOF_PTHREAD_T <= SIZEOF_LONG
+ return (unsigned long) th;
+#else
+ return (unsigned long) *(unsigned long *) &th;
+#endif
+}
+
+/* XXX This implementation is considered (to quote Tim Peters) "inherently
+ hosed" because:
+ - It does not guarantee the promise that a non-zero integer is returned.
+ - The cast to unsigned long is inherently unsafe.
+ - It is not clear that the 'volatile' (for AIX?) are any longer necessary.
+*/
+unsigned long
+PyThread_get_thread_ident(void)
+{
+ volatile pthread_t threadid;
+ if (!initialized)
+ PyThread_init_thread();
+ threadid = pthread_self();
+ return (unsigned long) threadid;
+}
+
+#ifdef PY_HAVE_THREAD_NATIVE_ID
+unsigned long
+PyThread_get_thread_native_id(void)
+{
+ if (!initialized)
+ PyThread_init_thread();
+#ifdef __APPLE__
+ uint64_t native_id;
+ (void) pthread_threadid_np(NULL, &native_id);
+#elif defined(__linux__)
+ pid_t native_id;
+ native_id = syscall(SYS_gettid);
+#elif defined(__FreeBSD__)
+ int native_id;
+ native_id = pthread_getthreadid_np();
+#elif defined(__OpenBSD__)
+ pid_t native_id;
+ native_id = getthrid();
+#elif defined(_AIX)
+ tid_t native_id;
+ native_id = thread_self();
+#elif defined(__NetBSD__)
+ lwpid_t native_id;
+ native_id = _lwp_self();
+#elif defined(__DragonFly__)
+ lwpid_t native_id;
+ native_id = lwp_gettid();
+#endif
+ return (unsigned long) native_id;
+}
+#endif
+
+void _Py_NO_RETURN
+PyThread_exit_thread(void)
+{
+ if (!initialized)
+ exit(0);
+#if defined(__wasi__)
+ /*
+ * wasi-threads doesn't have pthread_exit right now
+ * cf. https://github.com/WebAssembly/wasi-threads/issues/7
+ */
+ abort();
+#else
+ pthread_exit(0);
+#endif
+}
+
+#ifdef USE_SEMAPHORES
+
+/*
+ * Lock support.
+ */
+
+PyThread_type_lock
+PyThread_allocate_lock(void)
+{
+ sem_t *lock;
+ int status, error = 0;
+
+ if (!initialized)
+ PyThread_init_thread();
+
+ lock = (sem_t *)PyMem_RawMalloc(sizeof(sem_t));
+
+ if (lock) {
+ status = sem_init(lock,0,1);
+ CHECK_STATUS("sem_init");
+
+ if (error) {
+ PyMem_RawFree((void *)lock);
+ lock = NULL;
+ }
+ }
+
+ return (PyThread_type_lock)lock;
+}
+
+void
+PyThread_free_lock(PyThread_type_lock lock)
+{
+ sem_t *thelock = (sem_t *)lock;
+ int status, error = 0;
+
+ (void) error; /* silence unused-but-set-variable warning */
+
+ if (!thelock)
+ return;
+
+ status = sem_destroy(thelock);
+ CHECK_STATUS("sem_destroy");
+
+ PyMem_RawFree((void *)thelock);
+}
+
+/*
+ * As of February 2002, Cygwin thread implementations mistakenly report error
+ * codes in the return value of the sem_ calls (like the pthread_ functions).
+ * Correct implementations return -1 and put the code in errno. This supports
+ * either.
+ */
+static int
+fix_status(int status)
+{
+ return (status == -1) ? errno : status;
+}
+
+PyLockStatus
+PyThread_acquire_lock_timed(PyThread_type_lock lock, PY_TIMEOUT_T microseconds,
+ int intr_flag)
+{
+ PyLockStatus success;
+ sem_t *thelock = (sem_t *)lock;
+ int status, error = 0;
+
+ (void) error; /* silence unused-but-set-variable warning */
+
+ _PyTime_t timeout; // relative timeout
+ if (microseconds >= 0) {
+ // bpo-41710: PyThread_acquire_lock_timed() cannot report timeout
+ // overflow to the caller, so clamp the timeout to
+ // [_PyTime_MIN, _PyTime_MAX].
+ //
+ // _PyTime_MAX nanoseconds is around 292.3 years.
+ //
+ // _thread.Lock.acquire() and _thread.RLock.acquire() raise an
+ // OverflowError if microseconds is greater than PY_TIMEOUT_MAX.
+ timeout = _PyTime_FromMicrosecondsClamp(microseconds);
+ }
+ else {
+ timeout = _PyTime_FromNanoseconds(-1);
+ }
+
+#ifdef HAVE_SEM_CLOCKWAIT
+ struct timespec abs_timeout;
+ // Local scope for deadline
+ {
+ _PyTime_t deadline = _PyTime_Add(_PyTime_GetMonotonicClock(), timeout);
+ _PyTime_AsTimespec_clamp(deadline, &abs_timeout);
+ }
+#else
+ _PyTime_t deadline = 0;
+ if (timeout > 0 && !intr_flag) {
+ deadline = _PyDeadline_Init(timeout);
+ }
+#endif
+
+ while (1) {
+ if (timeout > 0) {
+#ifdef HAVE_SEM_CLOCKWAIT
+ status = fix_status(sem_clockwait(thelock, CLOCK_MONOTONIC,
+ &abs_timeout));
+#else
+ _PyTime_t abs_time = _PyTime_Add(_PyTime_GetSystemClock(),
+ timeout);
+ struct timespec ts;
+ _PyTime_AsTimespec_clamp(abs_time, &ts);
+ status = fix_status(sem_timedwait(thelock, &ts));
+#endif
+ }
+ else if (timeout == 0) {
+ status = fix_status(sem_trywait(thelock));
+ }
+ else {
+ status = fix_status(sem_wait(thelock));
+ }
+
+ /* Retry if interrupted by a signal, unless the caller wants to be
+ notified. */
+ if (intr_flag || status != EINTR) {
+ break;
+ }
+
+ // sem_clockwait() uses an absolute timeout, there is no need
+ // to recompute the relative timeout.
+#ifndef HAVE_SEM_CLOCKWAIT
+ if (timeout > 0) {
+ /* wait interrupted by a signal (EINTR): recompute the timeout */
+ timeout = _PyDeadline_Get(deadline);
+ if (timeout < 0) {
+ status = ETIMEDOUT;
+ break;
+ }
+ }
+#endif
+ }
+
+ /* Don't check the status if we're stopping because of an interrupt. */
+ if (!(intr_flag && status == EINTR)) {
+ if (timeout > 0) {
+ if (status != ETIMEDOUT) {
+#ifdef HAVE_SEM_CLOCKWAIT
+ CHECK_STATUS("sem_clockwait");
+#else
+ CHECK_STATUS("sem_timedwait");
+#endif
+ }
+ }
+ else if (timeout == 0) {
+ if (status != EAGAIN) {
+ CHECK_STATUS("sem_trywait");
+ }
+ }
+ else {
+ CHECK_STATUS("sem_wait");
+ }
+ }
+
+ if (status == 0) {
+ success = PY_LOCK_ACQUIRED;
+ } else if (intr_flag && status == EINTR) {
+ success = PY_LOCK_INTR;
+ } else {
+ success = PY_LOCK_FAILURE;
+ }
+
+ return success;
+}
+
+void
+PyThread_release_lock(PyThread_type_lock lock)
+{
+ sem_t *thelock = (sem_t *)lock;
+ int status, error = 0;
+
+ (void) error; /* silence unused-but-set-variable warning */
+
+ status = sem_post(thelock);
+ CHECK_STATUS("sem_post");
+}
+
+#else /* USE_SEMAPHORES */
+
+/*
+ * Lock support.
+ */
+PyThread_type_lock
+PyThread_allocate_lock(void)
+{
+ pthread_lock *lock;
+ int status, error = 0;
+
+ if (!initialized)
+ PyThread_init_thread();
+
+ lock = (pthread_lock *) PyMem_RawCalloc(1, sizeof(pthread_lock));
+ if (lock) {
+ lock->locked = 0;
+
+ status = pthread_mutex_init(&lock->mut, NULL);
+ CHECK_STATUS_PTHREAD("pthread_mutex_init");
+ /* Mark the pthread mutex underlying a Python mutex as
+ pure happens-before. We can't simply mark the
+ Python-level mutex as a mutex because it can be
+ acquired and released in different threads, which
+ will cause errors. */
+ _Py_ANNOTATE_PURE_HAPPENS_BEFORE_MUTEX(&lock->mut);
+
+ status = _PyThread_cond_init(&lock->lock_released);
+ CHECK_STATUS_PTHREAD("pthread_cond_init");
+
+ if (error) {
+ PyMem_RawFree((void *)lock);
+ lock = 0;
+ }
+ }
+
+ return (PyThread_type_lock) lock;
+}
+
+void
+PyThread_free_lock(PyThread_type_lock lock)
+{
+ pthread_lock *thelock = (pthread_lock *)lock;
+ int status, error = 0;
+
+ (void) error; /* silence unused-but-set-variable warning */
+
+ /* some pthread-like implementations tie the mutex to the cond
+ * and must have the cond destroyed first.
+ */
+ status = pthread_cond_destroy( &thelock->lock_released );
+ CHECK_STATUS_PTHREAD("pthread_cond_destroy");
+
+ status = pthread_mutex_destroy( &thelock->mut );
+ CHECK_STATUS_PTHREAD("pthread_mutex_destroy");
+
+ PyMem_RawFree((void *)thelock);
+}
+
+PyLockStatus
+PyThread_acquire_lock_timed(PyThread_type_lock lock, PY_TIMEOUT_T microseconds,
+ int intr_flag)
+{
+ PyLockStatus success = PY_LOCK_FAILURE;
+ pthread_lock *thelock = (pthread_lock *)lock;
+ int status, error = 0;
+
+ if (microseconds == 0) {
+ status = pthread_mutex_trylock( &thelock->mut );
+ if (status != EBUSY) {
+ CHECK_STATUS_PTHREAD("pthread_mutex_trylock[1]");
+ }
+ }
+ else {
+ status = pthread_mutex_lock( &thelock->mut );
+ CHECK_STATUS_PTHREAD("pthread_mutex_lock[1]");
+ }
+ if (status != 0) {
+ goto done;
+ }
+
+ if (thelock->locked == 0) {
+ success = PY_LOCK_ACQUIRED;
+ goto unlock;
+ }
+ if (microseconds == 0) {
+ goto unlock;
+ }
+
+ struct timespec abs_timeout;
+ if (microseconds > 0) {
+ _PyThread_cond_after(microseconds, &abs_timeout);
+ }
+ // Continue trying until we get the lock
+
+ // mut must be locked by me -- part of the condition protocol
+ while (1) {
+ if (microseconds > 0) {
+ status = pthread_cond_timedwait(&thelock->lock_released,
+ &thelock->mut, &abs_timeout);
+ if (status == 1) {
+ break;
+ }
+ if (status == ETIMEDOUT) {
+ break;
+ }
+ CHECK_STATUS_PTHREAD("pthread_cond_timedwait");
+ }
+ else {
+ status = pthread_cond_wait(
+ &thelock->lock_released,
+ &thelock->mut);
+ CHECK_STATUS_PTHREAD("pthread_cond_wait");
+ }
+
+ if (intr_flag && status == 0 && thelock->locked) {
+ // We were woken up, but didn't get the lock. We probably received
+ // a signal. Return PY_LOCK_INTR to allow the caller to handle
+ // it and retry.
+ success = PY_LOCK_INTR;
+ break;
+ }
+
+ if (status == 0 && !thelock->locked) {
+ success = PY_LOCK_ACQUIRED;
+ break;
+ }
+
+ // Wait got interrupted by a signal: retry
+ }
+
+unlock:
+ if (success == PY_LOCK_ACQUIRED) {
+ thelock->locked = 1;
+ }
+ status = pthread_mutex_unlock( &thelock->mut );
+ CHECK_STATUS_PTHREAD("pthread_mutex_unlock[1]");
+
+done:
+ if (error) {
+ success = PY_LOCK_FAILURE;
+ }
+ return success;
+}
+
+void
+PyThread_release_lock(PyThread_type_lock lock)
+{
+ pthread_lock *thelock = (pthread_lock *)lock;
+ int status, error = 0;
+
+ (void) error; /* silence unused-but-set-variable warning */
+
+ status = pthread_mutex_lock( &thelock->mut );
+ CHECK_STATUS_PTHREAD("pthread_mutex_lock[3]");
+
+ thelock->locked = 0;
+
+ /* wake up someone (anyone, if any) waiting on the lock */
+ status = pthread_cond_signal( &thelock->lock_released );
+ CHECK_STATUS_PTHREAD("pthread_cond_signal");
+
+ status = pthread_mutex_unlock( &thelock->mut );
+ CHECK_STATUS_PTHREAD("pthread_mutex_unlock[3]");
+}
+
+#endif /* USE_SEMAPHORES */
+
+int
+_PyThread_at_fork_reinit(PyThread_type_lock *lock)
+{
+ PyThread_type_lock new_lock = PyThread_allocate_lock();
+ if (new_lock == NULL) {
+ return -1;
+ }
+
+ /* bpo-6721, bpo-40089: The old lock can be in an inconsistent state.
+ fork() can be called in the middle of an operation on the lock done by
+ another thread. So don't call PyThread_free_lock(*lock).
+
+ Leak memory on purpose. Don't release the memory either since the
+ address of a mutex is relevant. Putting two mutexes at the same address
+ can lead to problems. */
+
+ *lock = new_lock;
+ return 0;
+}
+
+int
+PyThread_acquire_lock(PyThread_type_lock lock, int waitflag)
+{
+ return PyThread_acquire_lock_timed(lock, waitflag ? -1 : 0, /*intr_flag=*/0);
+}
+
+/* set the thread stack size.
+ * Return 0 if size is valid, -1 if size is invalid,
+ * -2 if setting stack size is not supported.
+ */
+static int
+_pythread_pthread_set_stacksize(size_t size)
+{
+#if defined(THREAD_STACK_SIZE)
+ pthread_attr_t attrs;
+ size_t tss_min;
+ int rc = 0;
+#endif
+
+ /* set to default */
+ if (size == 0) {
+ _PyInterpreterState_GET()->threads.stacksize = 0;
+ return 0;
+ }
+
+#if defined(THREAD_STACK_SIZE)
+#if defined(PTHREAD_STACK_MIN)
+ tss_min = PTHREAD_STACK_MIN > THREAD_STACK_MIN ? PTHREAD_STACK_MIN
+ : THREAD_STACK_MIN;
+#else
+ tss_min = THREAD_STACK_MIN;
+#endif
+ if (size >= tss_min) {
+ /* validate stack size by setting thread attribute */
+ if (pthread_attr_init(&attrs) == 0) {
+ rc = pthread_attr_setstacksize(&attrs, size);
+ pthread_attr_destroy(&attrs);
+ if (rc == 0) {
+ _PyInterpreterState_GET()->threads.stacksize = size;
+ return 0;
+ }
+ }
+ }
+ return -1;
+#else
+ return -2;
+#endif
+}
+
+#define THREAD_SET_STACKSIZE(x) _pythread_pthread_set_stacksize(x)
+
+
+/* Thread Local Storage (TLS) API
+
+ This API is DEPRECATED since Python 3.7. See PEP 539 for details.
+*/
+
+/* Issue #25658: On platforms where native TLS key is defined in a way that
+ cannot be safely cast to int, PyThread_create_key returns immediately a
+ failure status and other TLS functions all are no-ops. This indicates
+ clearly that the old API is not supported on platforms where it cannot be
+ used reliably, and that no effort will be made to add such support.
+
+ Note: PTHREAD_KEY_T_IS_COMPATIBLE_WITH_INT will be unnecessary after
+ removing this API.
+*/
+
+int
+PyThread_create_key(void)
+{
+#ifdef PTHREAD_KEY_T_IS_COMPATIBLE_WITH_INT
+ pthread_key_t key;
+ int fail = pthread_key_create(&key, NULL);
+ if (fail)
+ return -1;
+ if (key > INT_MAX) {
+ /* Issue #22206: handle integer overflow */
+ pthread_key_delete(key);
+ errno = ENOMEM;
+ return -1;
+ }
+ return (int)key;
+#else
+ return -1; /* never return valid key value. */
+#endif
+}
+
+void
+PyThread_delete_key(int key)
+{
+#ifdef PTHREAD_KEY_T_IS_COMPATIBLE_WITH_INT
+ pthread_key_delete(key);
+#endif
+}
+
+void
+PyThread_delete_key_value(int key)
+{
+#ifdef PTHREAD_KEY_T_IS_COMPATIBLE_WITH_INT
+ pthread_setspecific(key, NULL);
+#endif
+}
+
+int
+PyThread_set_key_value(int key, void *value)
+{
+#ifdef PTHREAD_KEY_T_IS_COMPATIBLE_WITH_INT
+ int fail = pthread_setspecific(key, value);
+ return fail ? -1 : 0;
+#else
+ return -1;
+#endif
+}
+
+void *
+PyThread_get_key_value(int key)
+{
+#ifdef PTHREAD_KEY_T_IS_COMPATIBLE_WITH_INT
+ return pthread_getspecific(key);
+#else
+ return NULL;
+#endif
+}
+
+
+void
+PyThread_ReInitTLS(void)
+{
+}
+
+
+/* Thread Specific Storage (TSS) API
+
+ Platform-specific components of TSS API implementation.
+*/
+
+int
+PyThread_tss_create(Py_tss_t *key)
+{
+ assert(key != NULL);
+ /* If the key has been created, function is silently skipped. */
+ if (key->_is_initialized) {
+ return 0;
+ }
+
+ int fail = pthread_key_create(&(key->_key), NULL);
+ if (fail) {
+ return -1;
+ }
+ key->_is_initialized = 1;
+ return 0;
+}
+
+void
+PyThread_tss_delete(Py_tss_t *key)
+{
+ assert(key != NULL);
+ /* If the key has not been created, function is silently skipped. */
+ if (!key->_is_initialized) {
+ return;
+ }
+
+ pthread_key_delete(key->_key);
+ /* pthread has not provided the defined invalid value for the key. */
+ key->_is_initialized = 0;
+}
+
+int
+PyThread_tss_set(Py_tss_t *key, void *value)
+{
+ assert(key != NULL);
+ int fail = pthread_setspecific(key->_key, value);
+ return fail ? -1 : 0;
+}
+
+void *
+PyThread_tss_get(Py_tss_t *key)
+{
+ assert(key != NULL);
+ return pthread_getspecific(key->_key);
+}
diff --git a/contrib/tools/python3/Python/thread_pthread_stubs.h b/contrib/tools/python3/Python/thread_pthread_stubs.h
new file mode 100644
index 00000000000..56e5b614192
--- /dev/null
+++ b/contrib/tools/python3/Python/thread_pthread_stubs.h
@@ -0,0 +1,182 @@
+#include "cpython/pthread_stubs.h"
+
+// mutex
+int
+pthread_mutex_init(pthread_mutex_t *restrict mutex,
+ const pthread_mutexattr_t *restrict attr)
+{
+ return 0;
+}
+
+int
+pthread_mutex_destroy(pthread_mutex_t *mutex)
+{
+ return 0;
+}
+
+int
+pthread_mutex_trylock(pthread_mutex_t *mutex)
+{
+ return 0;
+}
+
+int
+pthread_mutex_lock(pthread_mutex_t *mutex)
+{
+ return 0;
+}
+
+int
+pthread_mutex_unlock(pthread_mutex_t *mutex)
+{
+ return 0;
+}
+
+// condition
+int
+pthread_cond_init(pthread_cond_t *restrict cond,
+ const pthread_condattr_t *restrict attr)
+{
+ return 0;
+}
+
+PyAPI_FUNC(int)pthread_cond_destroy(pthread_cond_t *cond)
+{
+ return 0;
+}
+
+int
+pthread_cond_wait(pthread_cond_t *restrict cond,
+ pthread_mutex_t *restrict mutex)
+{
+ return 0;
+}
+
+int
+pthread_cond_timedwait(pthread_cond_t *restrict cond,
+ pthread_mutex_t *restrict mutex,
+ const struct timespec *restrict abstime)
+{
+ return 0;
+}
+
+int
+pthread_cond_signal(pthread_cond_t *cond)
+{
+ return 0;
+}
+
+int
+pthread_condattr_init(pthread_condattr_t *attr)
+{
+ return 0;
+}
+
+int
+pthread_condattr_setclock(pthread_condattr_t *attr, clockid_t clock_id)
+{
+ return 0;
+}
+
+// pthread
+int
+pthread_create(pthread_t *restrict thread,
+ const pthread_attr_t *restrict attr,
+ void *(*start_routine)(void *),
+ void *restrict arg)
+{
+ return EAGAIN;
+}
+
+int
+pthread_detach(pthread_t thread)
+{
+ return 0;
+}
+
+PyAPI_FUNC(pthread_t) pthread_self(void)
+{
+ return 0;
+}
+
+int
+pthread_exit(void *retval)
+{
+ exit(0);
+}
+
+int
+pthread_attr_init(pthread_attr_t *attr)
+{
+ return 0;
+}
+
+int
+pthread_attr_setstacksize(
+ pthread_attr_t *attr, size_t stacksize)
+{
+ return 0;
+}
+
+int
+pthread_attr_destroy(pthread_attr_t *attr)
+{
+ return 0;
+}
+
+
+typedef struct py_stub_tls_entry py_tls_entry;
+
+#define py_tls_entries (_PyRuntime.threads.stubs.tls_entries)
+
+int
+pthread_key_create(pthread_key_t *key, void (*destr_function)(void *))
+{
+ if (!key) {
+ return EINVAL;
+ }
+ if (destr_function != NULL) {
+ Py_FatalError("pthread_key_create destructor is not supported");
+ }
+ for (pthread_key_t idx = 0; idx < PTHREAD_KEYS_MAX; idx++) {
+ if (!py_tls_entries[idx].in_use) {
+ py_tls_entries[idx].in_use = true;
+ *key = idx;
+ return 0;
+ }
+ }
+ return EAGAIN;
+}
+
+int
+pthread_key_delete(pthread_key_t key)
+{
+ if (key < 0 || key >= PTHREAD_KEYS_MAX || !py_tls_entries[key].in_use) {
+ return EINVAL;
+ }
+ py_tls_entries[key].in_use = false;
+ py_tls_entries[key].value = NULL;
+ return 0;
+}
+
+
+void *
+pthread_getspecific(pthread_key_t key) {
+ if (key < 0 || key >= PTHREAD_KEYS_MAX || !py_tls_entries[key].in_use) {
+ return NULL;
+ }
+ return py_tls_entries[key].value;
+}
+
+int
+pthread_setspecific(pthread_key_t key, const void *value)
+{
+ if (key < 0 || key >= PTHREAD_KEYS_MAX || !py_tls_entries[key].in_use) {
+ return EINVAL;
+ }
+ py_tls_entries[key].value = (void *)value;
+ return 0;
+}
+
+// let thread_pthread define the Python API
+#include "thread_pthread.h"
diff --git a/contrib/tools/python3/Python/traceback.c b/contrib/tools/python3/Python/traceback.c
new file mode 100644
index 00000000000..fdaf19d3707
--- /dev/null
+++ b/contrib/tools/python3/Python/traceback.c
@@ -0,0 +1,1446 @@
+
+/* Traceback implementation */
+
+#include "Python.h"
+
+#include "pycore_ast.h" // asdl_seq_*
+#include "pycore_call.h" // _PyObject_CallMethodFormat()
+#include "pycore_compile.h" // _PyAST_Optimize
+#include "pycore_fileutils.h" // _Py_BEGIN_SUPPRESS_IPH
+#include "pycore_frame.h" // _PyFrame_GetCode()
+#include "pycore_interp.h" // PyInterpreterState.gc
+#include "pycore_parser.h" // _PyParser_ASTFromString
+#include "pycore_pyarena.h" // _PyArena_Free()
+#include "pycore_pyerrors.h" // _PyErr_GetRaisedException()
+#include "pycore_pystate.h" // _PyThreadState_GET()
+#include "pycore_traceback.h" // EXCEPTION_TB_HEADER
+
+#include "../Parser/pegen.h" // _PyPegen_byte_offset_to_character_offset()
+#include "frameobject.h" // PyFrame_New()
+#include "structmember.h" // PyMemberDef
+#include "osdefs.h" // SEP
+#ifdef HAVE_FCNTL_H
+# include <fcntl.h>
+#endif
+
+#define OFF(x) offsetof(PyTracebackObject, x)
+
+#define PUTS(fd, str) _Py_write_noraise(fd, str, (int)strlen(str))
+#define MAX_STRING_LENGTH 500
+#define MAX_FRAME_DEPTH 100
+#define MAX_NTHREADS 100
+
+/* Function from Parser/tokenizer.c */
+extern char* _PyTokenizer_FindEncodingFilename(int, PyObject *);
+
+/*[clinic input]
+class TracebackType "PyTracebackObject *" "&PyTraceback_Type"
+[clinic start generated code]*/
+/*[clinic end generated code: output=da39a3ee5e6b4b0d input=928fa06c10151120]*/
+
+#include "clinic/traceback.c.h"
+
+static PyObject *
+tb_create_raw(PyTracebackObject *next, PyFrameObject *frame, int lasti,
+ int lineno)
+{
+ PyTracebackObject *tb;
+ if ((next != NULL && !PyTraceBack_Check(next)) ||
+ frame == NULL || !PyFrame_Check(frame)) {
+ PyErr_BadInternalCall();
+ return NULL;
+ }
+ tb = PyObject_GC_New(PyTracebackObject, &PyTraceBack_Type);
+ if (tb != NULL) {
+ tb->tb_next = (PyTracebackObject*)Py_XNewRef(next);
+ tb->tb_frame = (PyFrameObject*)Py_XNewRef(frame);
+ tb->tb_lasti = lasti;
+ tb->tb_lineno = lineno;
+ PyObject_GC_Track(tb);
+ }
+ return (PyObject *)tb;
+}
+
+/*[clinic input]
+@classmethod
+TracebackType.__new__ as tb_new
+
+ tb_next: object
+ tb_frame: object(type='PyFrameObject *', subclass_of='&PyFrame_Type')
+ tb_lasti: int
+ tb_lineno: int
+
+Create a new traceback object.
+[clinic start generated code]*/
+
+static PyObject *
+tb_new_impl(PyTypeObject *type, PyObject *tb_next, PyFrameObject *tb_frame,
+ int tb_lasti, int tb_lineno)
+/*[clinic end generated code: output=fa077debd72d861a input=01cbe8ec8783fca7]*/
+{
+ if (tb_next == Py_None) {
+ tb_next = NULL;
+ } else if (!PyTraceBack_Check(tb_next)) {
+ return PyErr_Format(PyExc_TypeError,
+ "expected traceback object or None, got '%s'",
+ Py_TYPE(tb_next)->tp_name);
+ }
+
+ return tb_create_raw((PyTracebackObject *)tb_next, tb_frame, tb_lasti,
+ tb_lineno);
+}
+
+static PyObject *
+tb_dir(PyTracebackObject *self, PyObject *Py_UNUSED(ignored))
+{
+ return Py_BuildValue("[ssss]", "tb_frame", "tb_next",
+ "tb_lasti", "tb_lineno");
+}
+
+static PyObject *
+tb_next_get(PyTracebackObject *self, void *Py_UNUSED(_))
+{
+ PyObject* ret = (PyObject*)self->tb_next;
+ if (!ret) {
+ ret = Py_None;
+ }
+ return Py_NewRef(ret);
+}
+
+static int
+tb_get_lineno(PyTracebackObject* tb) {
+ PyFrameObject* frame = tb->tb_frame;
+ assert(frame != NULL);
+ PyCodeObject *code = PyFrame_GetCode(frame);
+ int lineno = PyCode_Addr2Line(code, tb->tb_lasti);
+ Py_DECREF(code);
+ return lineno;
+}
+
+static PyObject *
+tb_lineno_get(PyTracebackObject *self, void *Py_UNUSED(_))
+{
+ int lineno = self->tb_lineno;
+ if (lineno == -1) {
+ lineno = tb_get_lineno(self);
+ if (lineno < 0) {
+ Py_RETURN_NONE;
+ }
+ }
+ return PyLong_FromLong(lineno);
+}
+
+static int
+tb_next_set(PyTracebackObject *self, PyObject *new_next, void *Py_UNUSED(_))
+{
+ if (!new_next) {
+ PyErr_Format(PyExc_TypeError, "can't delete tb_next attribute");
+ return -1;
+ }
+
+ /* We accept None or a traceback object, and map None -> NULL (inverse of
+ tb_next_get) */
+ if (new_next == Py_None) {
+ new_next = NULL;
+ } else if (!PyTraceBack_Check(new_next)) {
+ PyErr_Format(PyExc_TypeError,
+ "expected traceback object, got '%s'",
+ Py_TYPE(new_next)->tp_name);
+ return -1;
+ }
+
+ /* Check for loops */
+ PyTracebackObject *cursor = (PyTracebackObject *)new_next;
+ while (cursor) {
+ if (cursor == self) {
+ PyErr_Format(PyExc_ValueError, "traceback loop detected");
+ return -1;
+ }
+ cursor = cursor->tb_next;
+ }
+
+ Py_XSETREF(self->tb_next, (PyTracebackObject *)Py_XNewRef(new_next));
+
+ return 0;
+}
+
+
+static PyMethodDef tb_methods[] = {
+ {"__dir__", _PyCFunction_CAST(tb_dir), METH_NOARGS},
+ {NULL, NULL, 0, NULL},
+};
+
+static PyMemberDef tb_memberlist[] = {
+ {"tb_frame", T_OBJECT, OFF(tb_frame), READONLY|PY_AUDIT_READ},
+ {"tb_lasti", T_INT, OFF(tb_lasti), READONLY},
+ {NULL} /* Sentinel */
+};
+
+static PyGetSetDef tb_getsetters[] = {
+ {"tb_next", (getter)tb_next_get, (setter)tb_next_set, NULL, NULL},
+ {"tb_lineno", (getter)tb_lineno_get, NULL, NULL, NULL},
+ {NULL} /* Sentinel */
+};
+
+static void
+tb_dealloc(PyTracebackObject *tb)
+{
+ PyObject_GC_UnTrack(tb);
+ Py_TRASHCAN_BEGIN(tb, tb_dealloc)
+ Py_XDECREF(tb->tb_next);
+ Py_XDECREF(tb->tb_frame);
+ PyObject_GC_Del(tb);
+ Py_TRASHCAN_END
+}
+
+static int
+tb_traverse(PyTracebackObject *tb, visitproc visit, void *arg)
+{
+ Py_VISIT(tb->tb_next);
+ Py_VISIT(tb->tb_frame);
+ return 0;
+}
+
+static int
+tb_clear(PyTracebackObject *tb)
+{
+ Py_CLEAR(tb->tb_next);
+ Py_CLEAR(tb->tb_frame);
+ return 0;
+}
+
+PyTypeObject PyTraceBack_Type = {
+ PyVarObject_HEAD_INIT(&PyType_Type, 0)
+ "traceback",
+ sizeof(PyTracebackObject),
+ 0,
+ (destructor)tb_dealloc, /*tp_dealloc*/
+ 0, /*tp_vectorcall_offset*/
+ 0, /*tp_getattr*/
+ 0, /*tp_setattr*/
+ 0, /*tp_as_async*/
+ 0, /*tp_repr*/
+ 0, /*tp_as_number*/
+ 0, /*tp_as_sequence*/
+ 0, /*tp_as_mapping*/
+ 0, /* tp_hash */
+ 0, /* tp_call */
+ 0, /* tp_str */
+ PyObject_GenericGetAttr, /* tp_getattro */
+ 0, /* tp_setattro */
+ 0, /* tp_as_buffer */
+ Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC,/* tp_flags */
+ tb_new__doc__, /* tp_doc */
+ (traverseproc)tb_traverse, /* tp_traverse */
+ (inquiry)tb_clear, /* tp_clear */
+ 0, /* tp_richcompare */
+ 0, /* tp_weaklistoffset */
+ 0, /* tp_iter */
+ 0, /* tp_iternext */
+ tb_methods, /* tp_methods */
+ tb_memberlist, /* tp_members */
+ tb_getsetters, /* tp_getset */
+ 0, /* tp_base */
+ 0, /* tp_dict */
+ 0, /* tp_descr_get */
+ 0, /* tp_descr_set */
+ 0, /* tp_dictoffset */
+ 0, /* tp_init */
+ 0, /* tp_alloc */
+ tb_new, /* tp_new */
+};
+
+
+PyObject*
+_PyTraceBack_FromFrame(PyObject *tb_next, PyFrameObject *frame)
+{
+ assert(tb_next == NULL || PyTraceBack_Check(tb_next));
+ assert(frame != NULL);
+ int addr = _PyInterpreterFrame_LASTI(frame->f_frame) * sizeof(_Py_CODEUNIT);
+ return tb_create_raw((PyTracebackObject *)tb_next, frame, addr, -1);
+}
+
+
+int
+PyTraceBack_Here(PyFrameObject *frame)
+{
+ PyObject *exc = PyErr_GetRaisedException();
+ assert(PyExceptionInstance_Check(exc));
+ PyObject *tb = PyException_GetTraceback(exc);
+ PyObject *newtb = _PyTraceBack_FromFrame(tb, frame);
+ Py_XDECREF(tb);
+ if (newtb == NULL) {
+ _PyErr_ChainExceptions1(exc);
+ return -1;
+ }
+ PyException_SetTraceback(exc, newtb);
+ Py_XDECREF(newtb);
+ PyErr_SetRaisedException(exc);
+ return 0;
+}
+
+/* Insert a frame into the traceback for (funcname, filename, lineno). */
+void _PyTraceback_Add(const char *funcname, const char *filename, int lineno)
+{
+ PyObject *globals;
+ PyCodeObject *code;
+ PyFrameObject *frame;
+ PyThreadState *tstate = _PyThreadState_GET();
+
+ /* Save and clear the current exception. Python functions must not be
+ called with an exception set. Calling Python functions happens when
+ the codec of the filesystem encoding is implemented in pure Python. */
+ PyObject *exc = _PyErr_GetRaisedException(tstate);
+
+ globals = PyDict_New();
+ if (!globals)
+ goto error;
+ code = PyCode_NewEmpty(filename, funcname, lineno);
+ if (!code) {
+ Py_DECREF(globals);
+ goto error;
+ }
+ frame = PyFrame_New(tstate, code, globals, NULL);
+ Py_DECREF(globals);
+ Py_DECREF(code);
+ if (!frame)
+ goto error;
+ frame->f_lineno = lineno;
+
+ _PyErr_SetRaisedException(tstate, exc);
+ PyTraceBack_Here(frame);
+ Py_DECREF(frame);
+ return;
+
+error:
+ _PyErr_ChainExceptions1(exc);
+}
+
+static PyObject *
+_Py_FindSourceFile(PyObject *filename, char* namebuf, size_t namelen, PyObject *io)
+{
+ Py_ssize_t i;
+ PyObject *binary;
+ PyObject *v;
+ Py_ssize_t npath;
+ size_t taillen;
+ PyObject *syspath;
+ PyObject *path;
+ const char* tail;
+ PyObject *filebytes;
+ const char* filepath;
+ Py_ssize_t len;
+ PyObject* result;
+ PyObject *open = NULL;
+
+ filebytes = PyUnicode_EncodeFSDefault(filename);
+ if (filebytes == NULL) {
+ PyErr_Clear();
+ return NULL;
+ }
+ filepath = PyBytes_AS_STRING(filebytes);
+
+ /* Search tail of filename in sys.path before giving up */
+ tail = strrchr(filepath, SEP);
+ if (tail == NULL)
+ tail = filepath;
+ else
+ tail++;
+ taillen = strlen(tail);
+
+ PyThreadState *tstate = _PyThreadState_GET();
+ syspath = _PySys_GetAttr(tstate, &_Py_ID(path));
+ if (syspath == NULL || !PyList_Check(syspath))
+ goto error;
+ npath = PyList_Size(syspath);
+
+ open = PyObject_GetAttr(io, &_Py_ID(open));
+ for (i = 0; i < npath; i++) {
+ v = PyList_GetItem(syspath, i);
+ if (v == NULL) {
+ PyErr_Clear();
+ break;
+ }
+ if (!PyUnicode_Check(v))
+ continue;
+ path = PyUnicode_EncodeFSDefault(v);
+ if (path == NULL) {
+ PyErr_Clear();
+ continue;
+ }
+ len = PyBytes_GET_SIZE(path);
+ if (len + 1 + (Py_ssize_t)taillen >= (Py_ssize_t)namelen - 1) {
+ Py_DECREF(path);
+ continue; /* Too long */
+ }
+ strcpy(namebuf, PyBytes_AS_STRING(path));
+ Py_DECREF(path);
+ if (strlen(namebuf) != (size_t)len)
+ continue; /* v contains '\0' */
+ if (len > 0 && namebuf[len-1] != SEP)
+ namebuf[len++] = SEP;
+ strcpy(namebuf+len, tail);
+
+ binary = _PyObject_CallMethodFormat(tstate, open, "ss", namebuf, "rb");
+ if (binary != NULL) {
+ result = binary;
+ goto finally;
+ }
+ PyErr_Clear();
+ }
+ goto error;
+
+error:
+ result = NULL;
+finally:
+ Py_XDECREF(open);
+ Py_DECREF(filebytes);
+ return result;
+}
+
+/* Writes indent spaces. Returns 0 on success and non-zero on failure.
+ */
+int
+_Py_WriteIndent(int indent, PyObject *f)
+{
+ char buf[11] = " ";
+ assert(strlen(buf) == 10);
+ while (indent > 0) {
+ if (indent < 10) {
+ buf[indent] = '\0';
+ }
+ if (PyFile_WriteString(buf, f) < 0) {
+ return -1;
+ }
+ indent -= 10;
+ }
+ return 0;
+}
+
+/* Writes indent spaces, followed by the margin if it is not `\0`.
+ Returns 0 on success and non-zero on failure.
+ */
+int
+_Py_WriteIndentedMargin(int indent, const char *margin, PyObject *f)
+{
+ if (_Py_WriteIndent(indent, f) < 0) {
+ return -1;
+ }
+ if (margin) {
+ if (PyFile_WriteString(margin, f) < 0) {
+ return -1;
+ }
+ }
+ return 0;
+}
+
+static int
+display_source_line_with_margin(PyObject *f, PyObject *filename, int lineno, int indent,
+ int margin_indent, const char *margin,
+ int *truncation, PyObject **line)
+{
+ int fd;
+ int i;
+ char *found_encoding;
+ const char *encoding;
+ PyObject *io;
+ PyObject *binary;
+ PyObject *fob = NULL;
+ PyObject *lineobj = NULL;
+ PyObject *res;
+ char buf[MAXPATHLEN+1];
+ int kind;
+ const void *data;
+
+ /* open the file */
+ if (filename == NULL)
+ return 0;
+
+ /* Do not attempt to open things like <string> or <stdin> */
+ assert(PyUnicode_Check(filename));
+ if (PyUnicode_READ_CHAR(filename, 0) == '<') {
+ Py_ssize_t len = PyUnicode_GET_LENGTH(filename);
+ if (len > 0 && PyUnicode_READ_CHAR(filename, len - 1) == '>') {
+ return 0;
+ }
+ }
+
+ io = PyImport_ImportModule("io");
+ if (io == NULL) {
+ return -1;
+ }
+
+ binary = _PyObject_CallMethod(io, &_Py_ID(open), "Os", filename, "rb");
+ if (binary == NULL) {
+ PyErr_Clear();
+
+ binary = _Py_FindSourceFile(filename, buf, sizeof(buf), io);
+ if (binary == NULL) {
+ Py_DECREF(io);
+ return -1;
+ }
+ }
+
+ /* use the right encoding to decode the file as unicode */
+ fd = PyObject_AsFileDescriptor(binary);
+ if (fd < 0) {
+ Py_DECREF(io);
+ Py_DECREF(binary);
+ return 0;
+ }
+ found_encoding = _PyTokenizer_FindEncodingFilename(fd, filename);
+ if (found_encoding == NULL)
+ PyErr_Clear();
+ encoding = (found_encoding != NULL) ? found_encoding : "utf-8";
+ /* Reset position */
+ if (lseek(fd, 0, SEEK_SET) == (off_t)-1) {
+ Py_DECREF(io);
+ Py_DECREF(binary);
+ PyMem_Free(found_encoding);
+ return 0;
+ }
+ fob = _PyObject_CallMethod(io, &_Py_ID(TextIOWrapper),
+ "Os", binary, encoding);
+ Py_DECREF(io);
+ PyMem_Free(found_encoding);
+
+ if (fob == NULL) {
+ PyErr_Clear();
+
+ res = PyObject_CallMethodNoArgs(binary, &_Py_ID(close));
+ Py_DECREF(binary);
+ if (res)
+ Py_DECREF(res);
+ else
+ PyErr_Clear();
+ return 0;
+ }
+ Py_DECREF(binary);
+
+ /* get the line number lineno */
+ for (i = 0; i < lineno; i++) {
+ Py_XDECREF(lineobj);
+ lineobj = PyFile_GetLine(fob, -1);
+ if (!lineobj) {
+ PyErr_Clear();
+ break;
+ }
+ }
+ res = PyObject_CallMethodNoArgs(fob, &_Py_ID(close));
+ if (res) {
+ Py_DECREF(res);
+ }
+ else {
+ PyErr_Clear();
+ }
+ Py_DECREF(fob);
+ if (!lineobj || !PyUnicode_Check(lineobj)) {
+ Py_XDECREF(lineobj);
+ return -1;
+ }
+
+ if (line) {
+ *line = Py_NewRef(lineobj);
+ }
+
+ /* remove the indentation of the line */
+ kind = PyUnicode_KIND(lineobj);
+ data = PyUnicode_DATA(lineobj);
+ for (i=0; i < PyUnicode_GET_LENGTH(lineobj); i++) {
+ Py_UCS4 ch = PyUnicode_READ(kind, data, i);
+ if (ch != ' ' && ch != '\t' && ch != '\014')
+ break;
+ }
+ if (i) {
+ PyObject *truncated;
+ truncated = PyUnicode_Substring(lineobj, i, PyUnicode_GET_LENGTH(lineobj));
+ if (truncated) {
+ Py_SETREF(lineobj, truncated);
+ } else {
+ PyErr_Clear();
+ }
+ }
+
+ if (truncation != NULL) {
+ *truncation = i - indent;
+ }
+
+ if (_Py_WriteIndentedMargin(margin_indent, margin, f) < 0) {
+ goto error;
+ }
+
+ /* Write some spaces before the line */
+ if (_Py_WriteIndent(indent, f) < 0) {
+ goto error;
+ }
+
+ /* finally display the line */
+ if (PyFile_WriteObject(lineobj, f, Py_PRINT_RAW) < 0) {
+ goto error;
+ }
+
+ if (PyFile_WriteString("\n", f) < 0) {
+ goto error;
+ }
+
+ Py_DECREF(lineobj);
+ return 0;
+error:
+ Py_DECREF(lineobj);
+ return -1;
+}
+
+int
+_Py_DisplaySourceLine(PyObject *f, PyObject *filename, int lineno, int indent,
+ int *truncation, PyObject **line)
+{
+ return display_source_line_with_margin(f, filename, lineno, indent, 0,
+ NULL, truncation, line);
+}
+
+/* AST based Traceback Specialization
+ *
+ * When displaying a new traceback line, for certain syntactical constructs
+ * (e.g a subscript, an arithmetic operation) we try to create a representation
+ * that separates the primary source of error from the rest.
+ *
+ * Example specialization of BinOp nodes:
+ * Traceback (most recent call last):
+ * File "/home/isidentical/cpython/cpython/t.py", line 10, in <module>
+ * add_values(1, 2, 'x', 3, 4)
+ * File "/home/isidentical/cpython/cpython/t.py", line 2, in add_values
+ * return a + b + c + d + e
+ * ~~~~~~^~~
+ * TypeError: 'NoneType' object is not subscriptable
+ */
+
+#define IS_WHITESPACE(c) (((c) == ' ') || ((c) == '\t') || ((c) == '\f'))
+
+static int
+extract_anchors_from_expr(const char *segment_str, expr_ty expr, Py_ssize_t *left_anchor, Py_ssize_t *right_anchor,
+ char** primary_error_char, char** secondary_error_char)
+{
+ switch (expr->kind) {
+ case BinOp_kind: {
+ expr_ty left = expr->v.BinOp.left;
+ expr_ty right = expr->v.BinOp.right;
+ for (int i = left->end_col_offset; i < right->col_offset; i++) {
+ if (IS_WHITESPACE(segment_str[i])) {
+ continue;
+ }
+
+ *left_anchor = i;
+ *right_anchor = i + 1;
+
+ // Check whether if this a two-character operator (e.g //)
+ if (i + 1 < right->col_offset && !IS_WHITESPACE(segment_str[i + 1])) {
+ ++*right_anchor;
+ }
+
+ // Keep going if the current char is not ')'
+ if (i+1 < right->col_offset && (segment_str[i] == ')')) {
+ continue;
+ }
+
+ // Set the error characters
+ *primary_error_char = "~";
+ *secondary_error_char = "^";
+ break;
+ }
+ return 1;
+ }
+ case Subscript_kind: {
+ *left_anchor = expr->v.Subscript.value->end_col_offset;
+ *right_anchor = expr->v.Subscript.slice->end_col_offset + 1;
+ Py_ssize_t str_len = strlen(segment_str);
+
+ // Move right_anchor and left_anchor forward to the first non-whitespace character that is not ']' and '['
+ while (*left_anchor < str_len && (IS_WHITESPACE(segment_str[*left_anchor]) || segment_str[*left_anchor] != '[')) {
+ ++*left_anchor;
+ }
+ while (*right_anchor < str_len && (IS_WHITESPACE(segment_str[*right_anchor]) || segment_str[*right_anchor] != ']')) {
+ ++*right_anchor;
+ }
+ if (*right_anchor < str_len){
+ *right_anchor += 1;
+ }
+
+ // Set the error characters
+ *primary_error_char = "~";
+ *secondary_error_char = "^";
+ return 1;
+ }
+ default:
+ return 0;
+ }
+}
+
+static int
+extract_anchors_from_stmt(const char *segment_str, stmt_ty statement, Py_ssize_t *left_anchor, Py_ssize_t *right_anchor,
+ char** primary_error_char, char** secondary_error_char)
+{
+ switch (statement->kind) {
+ case Expr_kind: {
+ return extract_anchors_from_expr(segment_str, statement->v.Expr.value, left_anchor, right_anchor,
+ primary_error_char, secondary_error_char);
+ }
+ default:
+ return 0;
+ }
+}
+
+static int
+extract_anchors_from_line(PyObject *filename, PyObject *line,
+ Py_ssize_t start_offset, Py_ssize_t end_offset,
+ Py_ssize_t *left_anchor, Py_ssize_t *right_anchor,
+ char** primary_error_char, char** secondary_error_char)
+{
+ int res = -1;
+ PyArena *arena = NULL;
+ PyObject *segment = PyUnicode_Substring(line, start_offset, end_offset);
+ if (!segment) {
+ goto done;
+ }
+
+ const char *segment_str = PyUnicode_AsUTF8(segment);
+ if (!segment_str) {
+ goto done;
+ }
+
+ arena = _PyArena_New();
+ if (!arena) {
+ goto done;
+ }
+
+ PyCompilerFlags flags = _PyCompilerFlags_INIT;
+
+ _PyASTOptimizeState state;
+ state.optimize = _Py_GetConfig()->optimization_level;
+ state.ff_features = 0;
+
+ mod_ty module = _PyParser_ASTFromString(segment_str, filename, Py_file_input,
+ &flags, arena);
+ if (!module) {
+ goto done;
+ }
+ if (!_PyAST_Optimize(module, arena, &state)) {
+ goto done;
+ }
+
+ assert(module->kind == Module_kind);
+ if (asdl_seq_LEN(module->v.Module.body) == 1) {
+ stmt_ty statement = asdl_seq_GET(module->v.Module.body, 0);
+ res = extract_anchors_from_stmt(segment_str, statement, left_anchor, right_anchor,
+ primary_error_char, secondary_error_char);
+ } else {
+ res = 0;
+ }
+
+done:
+ if (res > 0) {
+ // Normalize the AST offsets to byte offsets and adjust them with the
+ // start of the actual line (instead of the source code segment).
+ assert(segment != NULL);
+ assert(*left_anchor >= 0);
+ assert(*right_anchor >= 0);
+ *left_anchor = _PyPegen_byte_offset_to_character_offset(segment, *left_anchor) + start_offset;
+ *right_anchor = _PyPegen_byte_offset_to_character_offset(segment, *right_anchor) + start_offset;
+ }
+ Py_XDECREF(segment);
+ if (arena) {
+ _PyArena_Free(arena);
+ }
+ return res;
+}
+
+#define _TRACEBACK_SOURCE_LINE_INDENT 4
+
+static inline int
+ignore_source_errors(void) {
+ if (PyErr_Occurred()) {
+ if (PyErr_ExceptionMatches(PyExc_KeyboardInterrupt)) {
+ return -1;
+ }
+ PyErr_Clear();
+ }
+ return 0;
+}
+
+static inline int
+print_error_location_carets(PyObject *f, int offset, Py_ssize_t start_offset, Py_ssize_t end_offset,
+ Py_ssize_t right_start_offset, Py_ssize_t left_end_offset,
+ const char *primary, const char *secondary) {
+ int special_chars = (left_end_offset != -1 || right_start_offset != -1);
+ const char *str;
+ while (++offset <= end_offset) {
+ if (offset <= start_offset) {
+ str = " ";
+ } else if (special_chars && left_end_offset < offset && offset <= right_start_offset) {
+ str = secondary;
+ } else {
+ str = primary;
+ }
+ if (PyFile_WriteString(str, f) < 0) {
+ return -1;
+ }
+ }
+ if (PyFile_WriteString("\n", f) < 0) {
+ return -1;
+ }
+ return 0;
+}
+
+static int
+tb_displayline(PyTracebackObject* tb, PyObject *f, PyObject *filename, int lineno,
+ PyFrameObject *frame, PyObject *name, int margin_indent, const char *margin)
+{
+ if (filename == NULL || name == NULL) {
+ return -1;
+ }
+
+ if (_Py_WriteIndentedMargin(margin_indent, margin, f) < 0) {
+ return -1;
+ }
+
+ PyObject *line = PyUnicode_FromFormat(" File \"%U\", line %d, in %U\n",
+ filename, lineno, name);
+ if (line == NULL) {
+ return -1;
+ }
+
+ int res = PyFile_WriteObject(line, f, Py_PRINT_RAW);
+ Py_DECREF(line);
+ if (res < 0) {
+ return -1;
+ }
+
+ int err = 0;
+
+ int truncation = _TRACEBACK_SOURCE_LINE_INDENT;
+ PyObject* source_line = NULL;
+ int rc = display_source_line_with_margin(
+ f, filename, lineno, _TRACEBACK_SOURCE_LINE_INDENT,
+ margin_indent, margin, &truncation, &source_line);
+ if (rc != 0 || !source_line) {
+ /* ignore errors since we can't report them, can we? */
+ err = ignore_source_errors();
+ goto done;
+ }
+
+ int code_offset = tb->tb_lasti;
+ PyCodeObject* code = frame->f_frame->f_code;
+ const Py_ssize_t source_line_len = PyUnicode_GET_LENGTH(source_line);
+
+ int start_line;
+ int end_line;
+ int start_col_byte_offset;
+ int end_col_byte_offset;
+ if (!PyCode_Addr2Location(code, code_offset, &start_line, &start_col_byte_offset,
+ &end_line, &end_col_byte_offset)) {
+ goto done;
+ }
+
+ if (start_line < 0 || end_line < 0
+ || start_col_byte_offset < 0
+ || end_col_byte_offset < 0)
+ {
+ goto done;
+ }
+
+ // When displaying errors, we will use the following generic structure:
+ //
+ // ERROR LINE ERROR LINE ERROR LINE ERROR LINE ERROR LINE ERROR LINE ERROR LINE
+ // ~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^~~~~~~~~~~~~~~~~~~~
+ // | |-> left_end_offset | |-> end_offset
+ // |-> start_offset |-> right_start_offset
+ //
+ // In general we will only have (start_offset, end_offset) but we can gather more information
+ // by analyzing the AST of the text between *start_offset* and *end_offset*. If this succeeds
+ // we could get *left_end_offset* and *right_start_offset* and some selection of characters for
+ // the different ranges (primary_error_char and secondary_error_char). If we cannot obtain the
+ // AST information or we cannot identify special ranges within it, then left_end_offset and
+ // right_end_offset will be set to -1.
+ //
+ // To keep the column indicators pertinent, they are not shown when the primary character
+ // spans the whole line.
+
+ // Convert the utf-8 byte offset to the actual character offset so we print the right number of carets.
+ assert(source_line);
+ Py_ssize_t start_offset = _PyPegen_byte_offset_to_character_offset(source_line, start_col_byte_offset);
+ if (start_offset < 0) {
+ err = ignore_source_errors() < 0;
+ goto done;
+ }
+
+ Py_ssize_t end_offset = _PyPegen_byte_offset_to_character_offset(source_line, end_col_byte_offset);
+ if (end_offset < 0) {
+ err = ignore_source_errors() < 0;
+ goto done;
+ }
+
+ Py_ssize_t left_end_offset = -1;
+ Py_ssize_t right_start_offset = -1;
+
+ char *primary_error_char = "^";
+ char *secondary_error_char = primary_error_char;
+
+ if (start_line == end_line) {
+ int res = extract_anchors_from_line(filename, source_line, start_offset, end_offset,
+ &left_end_offset, &right_start_offset,
+ &primary_error_char, &secondary_error_char);
+ if (res < 0 && ignore_source_errors() < 0) {
+ goto done;
+ }
+ }
+ else {
+ // If this is a multi-line expression, then we will highlight until
+ // the last non-whitespace character.
+ const char *source_line_str = PyUnicode_AsUTF8(source_line);
+ if (!source_line_str) {
+ goto done;
+ }
+
+ Py_ssize_t i = source_line_len;
+ while (--i >= 0) {
+ if (!IS_WHITESPACE(source_line_str[i])) {
+ break;
+ }
+ }
+
+ end_offset = i + 1;
+ }
+
+ // Elide indicators if primary char spans the frame line
+ Py_ssize_t stripped_line_len = source_line_len - truncation - _TRACEBACK_SOURCE_LINE_INDENT;
+ bool has_secondary_ranges = (left_end_offset != -1 || right_start_offset != -1);
+ if (end_offset - start_offset == stripped_line_len && !has_secondary_ranges) {
+ goto done;
+ }
+
+ if (_Py_WriteIndentedMargin(margin_indent, margin, f) < 0) {
+ err = -1;
+ goto done;
+ }
+
+ // Convert all offsets to display offsets (e.g. the space they would take up if printed
+ // on the screen).
+ Py_ssize_t dp_start = _PyPegen_calculate_display_width(source_line, start_offset);
+ if (dp_start < 0) {
+ err = ignore_source_errors() < 0;
+ goto done;
+ }
+
+ Py_ssize_t dp_end = _PyPegen_calculate_display_width(source_line, end_offset);
+ if (dp_end < 0) {
+ err = ignore_source_errors() < 0;
+ goto done;
+ }
+
+ Py_ssize_t dp_left_end = -1;
+ Py_ssize_t dp_right_start = -1;
+ if (has_secondary_ranges) {
+ dp_left_end = _PyPegen_calculate_display_width(source_line, left_end_offset);
+ if (dp_left_end < 0) {
+ err = ignore_source_errors() < 0;
+ goto done;
+ }
+
+ dp_right_start = _PyPegen_calculate_display_width(source_line, right_start_offset);
+ if (dp_right_start < 0) {
+ err = ignore_source_errors() < 0;
+ goto done;
+ }
+ }
+
+
+ if (print_error_location_carets(f, truncation, dp_start, dp_end,
+ dp_right_start, dp_left_end,
+ primary_error_char, secondary_error_char) < 0) {
+ err = -1;
+ goto done;
+ }
+
+done:
+ Py_XDECREF(source_line);
+ return err;
+}
+
+static const int TB_RECURSIVE_CUTOFF = 3; // Also hardcoded in traceback.py.
+
+static int
+tb_print_line_repeated(PyObject *f, long cnt)
+{
+ cnt -= TB_RECURSIVE_CUTOFF;
+ PyObject *line = PyUnicode_FromFormat(
+ (cnt > 1)
+ ? " [Previous line repeated %ld more times]\n"
+ : " [Previous line repeated %ld more time]\n",
+ cnt);
+ if (line == NULL) {
+ return -1;
+ }
+ int err = PyFile_WriteObject(line, f, Py_PRINT_RAW);
+ Py_DECREF(line);
+ return err;
+}
+
+static int
+tb_printinternal(PyTracebackObject *tb, PyObject *f, long limit,
+ int indent, const char *margin)
+{
+ PyCodeObject *code = NULL;
+ Py_ssize_t depth = 0;
+ PyObject *last_file = NULL;
+ int last_line = -1;
+ PyObject *last_name = NULL;
+ long cnt = 0;
+ PyTracebackObject *tb1 = tb;
+ while (tb1 != NULL) {
+ depth++;
+ tb1 = tb1->tb_next;
+ }
+ while (tb != NULL && depth > limit) {
+ depth--;
+ tb = tb->tb_next;
+ }
+ while (tb != NULL) {
+ code = PyFrame_GetCode(tb->tb_frame);
+ int tb_lineno = tb->tb_lineno;
+ if (tb_lineno == -1) {
+ tb_lineno = tb_get_lineno(tb);
+ }
+ if (last_file == NULL ||
+ code->co_filename != last_file ||
+ last_line == -1 || tb_lineno != last_line ||
+ last_name == NULL || code->co_name != last_name) {
+ if (cnt > TB_RECURSIVE_CUTOFF) {
+ if (tb_print_line_repeated(f, cnt) < 0) {
+ goto error;
+ }
+ }
+ last_file = code->co_filename;
+ last_line = tb_lineno;
+ last_name = code->co_name;
+ cnt = 0;
+ }
+ cnt++;
+ if (cnt <= TB_RECURSIVE_CUTOFF) {
+ if (tb_displayline(tb, f, code->co_filename, tb_lineno,
+ tb->tb_frame, code->co_name, indent, margin) < 0) {
+ goto error;
+ }
+
+ if (PyErr_CheckSignals() < 0) {
+ goto error;
+ }
+ }
+ Py_CLEAR(code);
+ tb = tb->tb_next;
+ }
+ if (cnt > TB_RECURSIVE_CUTOFF) {
+ if (tb_print_line_repeated(f, cnt) < 0) {
+ goto error;
+ }
+ }
+ return 0;
+error:
+ Py_XDECREF(code);
+ return -1;
+}
+
+#define PyTraceBack_LIMIT 1000
+
+int
+_PyTraceBack_Print_Indented(PyObject *v, int indent, const char *margin,
+ const char *header_margin, const char *header, PyObject *f)
+{
+ PyObject *limitv;
+ long limit = PyTraceBack_LIMIT;
+
+ if (v == NULL) {
+ return 0;
+ }
+ if (!PyTraceBack_Check(v)) {
+ PyErr_BadInternalCall();
+ return -1;
+ }
+ limitv = PySys_GetObject("tracebacklimit");
+ if (limitv && PyLong_Check(limitv)) {
+ int overflow;
+ limit = PyLong_AsLongAndOverflow(limitv, &overflow);
+ if (overflow > 0) {
+ limit = LONG_MAX;
+ }
+ else if (limit <= 0) {
+ return 0;
+ }
+ }
+ if (_Py_WriteIndentedMargin(indent, header_margin, f) < 0) {
+ return -1;
+ }
+
+ if (PyFile_WriteString(header, f) < 0) {
+ return -1;
+ }
+
+ if (tb_printinternal((PyTracebackObject *)v, f, limit, indent, margin) < 0) {
+ return -1;
+ }
+
+ return 0;
+}
+
+int
+PyTraceBack_Print(PyObject *v, PyObject *f)
+{
+ int indent = 0;
+ const char *margin = NULL;
+ const char *header_margin = NULL;
+ const char *header = EXCEPTION_TB_HEADER;
+
+ return _PyTraceBack_Print_Indented(v, indent, margin, header_margin, header, f);
+}
+
+/* Format an integer in range [0; 0xffffffff] to decimal and write it
+ into the file fd.
+
+ This function is signal safe. */
+
+void
+_Py_DumpDecimal(int fd, size_t value)
+{
+ /* maximum number of characters required for output of %lld or %p.
+ We need at most ceil(log10(256)*SIZEOF_LONG_LONG) digits,
+ plus 1 for the null byte. 53/22 is an upper bound for log10(256). */
+ char buffer[1 + (sizeof(size_t)*53-1) / 22 + 1];
+ char *ptr, *end;
+
+ end = &buffer[Py_ARRAY_LENGTH(buffer) - 1];
+ ptr = end;
+ *ptr = '\0';
+ do {
+ --ptr;
+ assert(ptr >= buffer);
+ *ptr = '0' + (value % 10);
+ value /= 10;
+ } while (value);
+
+ _Py_write_noraise(fd, ptr, end - ptr);
+}
+
+/* Format an integer as hexadecimal with width digits into fd file descriptor.
+ The function is signal safe. */
+void
+_Py_DumpHexadecimal(int fd, uintptr_t value, Py_ssize_t width)
+{
+ char buffer[sizeof(uintptr_t) * 2 + 1], *ptr, *end;
+ const Py_ssize_t size = Py_ARRAY_LENGTH(buffer) - 1;
+
+ if (width > size)
+ width = size;
+ /* it's ok if width is negative */
+
+ end = &buffer[size];
+ ptr = end;
+ *ptr = '\0';
+ do {
+ --ptr;
+ assert(ptr >= buffer);
+ *ptr = Py_hexdigits[value & 15];
+ value >>= 4;
+ } while ((end - ptr) < width || value);
+
+ _Py_write_noraise(fd, ptr, end - ptr);
+}
+
+void
+_Py_DumpASCII(int fd, PyObject *text)
+{
+ PyASCIIObject *ascii = _PyASCIIObject_CAST(text);
+ Py_ssize_t i, size;
+ int truncated;
+ int kind;
+ void *data = NULL;
+ Py_UCS4 ch;
+
+ if (!PyUnicode_Check(text))
+ return;
+
+ size = ascii->length;
+ kind = ascii->state.kind;
+ if (ascii->state.compact) {
+ if (ascii->state.ascii)
+ data = ascii + 1;
+ else
+ data = _PyCompactUnicodeObject_CAST(text) + 1;
+ }
+ else {
+ data = _PyUnicodeObject_CAST(text)->data.any;
+ if (data == NULL)
+ return;
+ }
+
+ if (MAX_STRING_LENGTH < size) {
+ size = MAX_STRING_LENGTH;
+ truncated = 1;
+ }
+ else {
+ truncated = 0;
+ }
+
+ // Is an ASCII string?
+ if (ascii->state.ascii) {
+ assert(kind == PyUnicode_1BYTE_KIND);
+ char *str = data;
+
+ int need_escape = 0;
+ for (i=0; i < size; i++) {
+ ch = str[i];
+ if (!(' ' <= ch && ch <= 126)) {
+ need_escape = 1;
+ break;
+ }
+ }
+ if (!need_escape) {
+ // The string can be written with a single write() syscall
+ _Py_write_noraise(fd, str, size);
+ goto done;
+ }
+ }
+
+ for (i=0; i < size; i++) {
+ ch = PyUnicode_READ(kind, data, i);
+ if (' ' <= ch && ch <= 126) {
+ /* printable ASCII character */
+ char c = (char)ch;
+ _Py_write_noraise(fd, &c, 1);
+ }
+ else if (ch <= 0xff) {
+ PUTS(fd, "\\x");
+ _Py_DumpHexadecimal(fd, ch, 2);
+ }
+ else if (ch <= 0xffff) {
+ PUTS(fd, "\\u");
+ _Py_DumpHexadecimal(fd, ch, 4);
+ }
+ else {
+ PUTS(fd, "\\U");
+ _Py_DumpHexadecimal(fd, ch, 8);
+ }
+ }
+
+done:
+ if (truncated) {
+ PUTS(fd, "...");
+ }
+}
+
+/* Write a frame into the file fd: "File "xxx", line xxx in xxx".
+
+ This function is signal safe. */
+
+static void
+dump_frame(int fd, _PyInterpreterFrame *frame)
+{
+ PyCodeObject *code = frame->f_code;
+ PUTS(fd, " File ");
+ if (code->co_filename != NULL
+ && PyUnicode_Check(code->co_filename))
+ {
+ PUTS(fd, "\"");
+ _Py_DumpASCII(fd, code->co_filename);
+ PUTS(fd, "\"");
+ } else {
+ PUTS(fd, "???");
+ }
+
+ int lineno = PyUnstable_InterpreterFrame_GetLine(frame);
+ PUTS(fd, ", line ");
+ if (lineno >= 0) {
+ _Py_DumpDecimal(fd, (size_t)lineno);
+ }
+ else {
+ PUTS(fd, "???");
+ }
+ PUTS(fd, " in ");
+
+ if (code->co_name != NULL
+ && PyUnicode_Check(code->co_name)) {
+ _Py_DumpASCII(fd, code->co_name);
+ }
+ else {
+ PUTS(fd, "???");
+ }
+
+ PUTS(fd, "\n");
+}
+
+static int
+tstate_is_freed(PyThreadState *tstate)
+{
+ if (_PyMem_IsPtrFreed(tstate)) {
+ return 1;
+ }
+ if (_PyMem_IsPtrFreed(tstate->interp)) {
+ return 1;
+ }
+ return 0;
+}
+
+
+static int
+interp_is_freed(PyInterpreterState *interp)
+{
+ return _PyMem_IsPtrFreed(interp);
+}
+
+
+static void
+dump_traceback(int fd, PyThreadState *tstate, int write_header)
+{
+ if (write_header) {
+ PUTS(fd, "Stack (most recent call first):\n");
+ }
+
+ if (tstate_is_freed(tstate)) {
+ PUTS(fd, " <tstate is freed>\n");
+ return;
+ }
+
+ _PyInterpreterFrame *frame = tstate->cframe->current_frame;
+ if (frame == NULL) {
+ PUTS(fd, " <no Python frame>\n");
+ return;
+ }
+
+ unsigned int depth = 0;
+ while (1) {
+ if (MAX_FRAME_DEPTH <= depth) {
+ PUTS(fd, " ...\n");
+ break;
+ }
+ dump_frame(fd, frame);
+ frame = frame->previous;
+ if (frame == NULL) {
+ break;
+ }
+ if (frame->owner == FRAME_OWNED_BY_CSTACK) {
+ /* Trampoline frame */
+ frame = frame->previous;
+ }
+ if (frame == NULL) {
+ break;
+ }
+ /* Can't have more than one shim frame in a row */
+ assert(frame->owner != FRAME_OWNED_BY_CSTACK);
+ depth++;
+ }
+}
+
+/* Dump the traceback of a Python thread into fd. Use write() to write the
+ traceback and retry if write() is interrupted by a signal (failed with
+ EINTR), but don't call the Python signal handler.
+
+ The caller is responsible to call PyErr_CheckSignals() to call Python signal
+ handlers if signals were received. */
+void
+_Py_DumpTraceback(int fd, PyThreadState *tstate)
+{
+ dump_traceback(fd, tstate, 1);
+}
+
+/* Write the thread identifier into the file 'fd': "Current thread 0xHHHH:\" if
+ is_current is true, "Thread 0xHHHH:\n" otherwise.
+
+ This function is signal safe. */
+
+static void
+write_thread_id(int fd, PyThreadState *tstate, int is_current)
+{
+ if (is_current)
+ PUTS(fd, "Current thread 0x");
+ else
+ PUTS(fd, "Thread 0x");
+ _Py_DumpHexadecimal(fd,
+ tstate->thread_id,
+ sizeof(unsigned long) * 2);
+ PUTS(fd, " (most recent call first):\n");
+}
+
+/* Dump the traceback of all Python threads into fd. Use write() to write the
+ traceback and retry if write() is interrupted by a signal (failed with
+ EINTR), but don't call the Python signal handler.
+
+ The caller is responsible to call PyErr_CheckSignals() to call Python signal
+ handlers if signals were received. */
+const char*
+_Py_DumpTracebackThreads(int fd, PyInterpreterState *interp,
+ PyThreadState *current_tstate)
+{
+ if (current_tstate == NULL) {
+ /* _Py_DumpTracebackThreads() is called from signal handlers by
+ faulthandler.
+
+ SIGSEGV, SIGFPE, SIGABRT, SIGBUS and SIGILL are synchronous signals
+ and are thus delivered to the thread that caused the fault. Get the
+ Python thread state of the current thread.
+
+ PyThreadState_Get() doesn't give the state of the thread that caused
+ the fault if the thread released the GIL, and so
+ _PyThreadState_GET() cannot be used. Read the thread specific
+ storage (TSS) instead: call PyGILState_GetThisThreadState(). */
+ current_tstate = PyGILState_GetThisThreadState();
+ }
+
+ if (current_tstate != NULL && tstate_is_freed(current_tstate)) {
+ return "tstate is freed";
+ }
+
+ if (interp == NULL) {
+ if (current_tstate == NULL) {
+ interp = _PyGILState_GetInterpreterStateUnsafe();
+ if (interp == NULL) {
+ /* We need the interpreter state to get Python threads */
+ return "unable to get the interpreter state";
+ }
+ }
+ else {
+ interp = current_tstate->interp;
+ }
+ }
+ assert(interp != NULL);
+
+ if (interp_is_freed(interp)) {
+ return "interp is freed";
+ }
+
+ /* Get the current interpreter from the current thread */
+ PyThreadState *tstate = PyInterpreterState_ThreadHead(interp);
+ if (tstate == NULL)
+ return "unable to get the thread head state";
+
+ /* Dump the traceback of each thread */
+ tstate = PyInterpreterState_ThreadHead(interp);
+ unsigned int nthreads = 0;
+ _Py_BEGIN_SUPPRESS_IPH
+ do
+ {
+ if (nthreads != 0)
+ PUTS(fd, "\n");
+ if (nthreads >= MAX_NTHREADS) {
+ PUTS(fd, "...\n");
+ break;
+ }
+ write_thread_id(fd, tstate, tstate == current_tstate);
+ if (tstate == current_tstate && tstate->interp->gc.collecting) {
+ PUTS(fd, " Garbage-collecting\n");
+ }
+ dump_traceback(fd, tstate, 0);
+ tstate = PyThreadState_Next(tstate);
+ nthreads++;
+ } while (tstate != NULL);
+ _Py_END_SUPPRESS_IPH
+
+ return NULL;
+}
+
diff --git a/contrib/tools/python3/Python/tracemalloc.c b/contrib/tools/python3/Python/tracemalloc.c
new file mode 100644
index 00000000000..bc765623522
--- /dev/null
+++ b/contrib/tools/python3/Python/tracemalloc.c
@@ -0,0 +1,1560 @@
+#include "Python.h"
+#include "pycore_fileutils.h" // _Py_write_noraise()
+#include "pycore_gc.h" // PyGC_Head
+#include "pycore_hashtable.h" // _Py_hashtable_t
+#include "pycore_object.h" // _PyType_PreHeaderSize
+#include "pycore_pymem.h" // _Py_tracemalloc_config
+#include "pycore_runtime.h" // _Py_ID()
+#include "pycore_traceback.h"
+#include <pycore_frame.h>
+#include "frameobject.h" // _PyInterpreterFrame_GetLine
+
+#include <stdlib.h> // malloc()
+
+#define tracemalloc_config _PyRuntime.tracemalloc.config
+
+_Py_DECLARE_STR(anon_unknown, "<unknown>");
+
+/* Forward declaration */
+static void* raw_malloc(size_t size);
+static void raw_free(void *ptr);
+
+#ifdef Py_DEBUG
+# define TRACE_DEBUG
+#endif
+
+#define TO_PTR(key) ((const void *)(uintptr_t)(key))
+#define FROM_PTR(key) ((uintptr_t)(key))
+
+#define allocators _PyRuntime.tracemalloc.allocators
+
+
+#if defined(TRACE_RAW_MALLOC)
+/* This lock is needed because tracemalloc_free() is called without
+ the GIL held from PyMem_RawFree(). It cannot acquire the lock because it
+ would introduce a deadlock in _PyThreadState_DeleteCurrent(). */
+# define tables_lock _PyRuntime.tracemalloc.tables_lock
+# define TABLES_LOCK() PyThread_acquire_lock(tables_lock, 1)
+# define TABLES_UNLOCK() PyThread_release_lock(tables_lock)
+#else
+ /* variables are protected by the GIL */
+# define TABLES_LOCK()
+# define TABLES_UNLOCK()
+#endif
+
+
+#define DEFAULT_DOMAIN 0
+
+typedef struct tracemalloc_frame frame_t;
+typedef struct tracemalloc_traceback traceback_t;
+
+#define TRACEBACK_SIZE(NFRAME) \
+ (sizeof(traceback_t) + sizeof(frame_t) * (NFRAME - 1))
+
+/* The maximum number of frames is either:
+ - The maximum number of frames we can store in `traceback_t.nframe`
+ - The maximum memory size_t we can allocate */
+static const unsigned long MAX_NFRAME = Py_MIN(UINT16_MAX, ((SIZE_MAX - sizeof(traceback_t)) / sizeof(frame_t) + 1));
+
+
+#define tracemalloc_empty_traceback _PyRuntime.tracemalloc.empty_traceback
+
+
+/* Trace of a memory block */
+typedef struct {
+ /* Size of the memory block in bytes */
+ size_t size;
+
+ /* Traceback where the memory block was allocated */
+ traceback_t *traceback;
+} trace_t;
+
+
+#define tracemalloc_traced_memory _PyRuntime.tracemalloc.traced_memory
+#define tracemalloc_peak_traced_memory _PyRuntime.tracemalloc.peak_traced_memory
+#define tracemalloc_filenames _PyRuntime.tracemalloc.filenames
+#define tracemalloc_traceback _PyRuntime.tracemalloc.traceback
+#define tracemalloc_tracebacks _PyRuntime.tracemalloc.tracebacks
+#define tracemalloc_traces _PyRuntime.tracemalloc.traces
+#define tracemalloc_domains _PyRuntime.tracemalloc.domains
+
+
+#ifdef TRACE_DEBUG
+static void
+tracemalloc_error(const char *format, ...)
+{
+ va_list ap;
+ fprintf(stderr, "tracemalloc: ");
+ va_start(ap, format);
+ vfprintf(stderr, format, ap);
+ va_end(ap);
+ fprintf(stderr, "\n");
+ fflush(stderr);
+}
+#endif
+
+
+#if defined(TRACE_RAW_MALLOC)
+#define REENTRANT_THREADLOCAL
+
+#define tracemalloc_reentrant_key _PyRuntime.tracemalloc.reentrant_key
+
+/* Any non-NULL pointer can be used */
+#define REENTRANT Py_True
+
+static int
+get_reentrant(void)
+{
+ void *ptr;
+
+ assert(PyThread_tss_is_created(&tracemalloc_reentrant_key));
+ ptr = PyThread_tss_get(&tracemalloc_reentrant_key);
+ if (ptr != NULL) {
+ assert(ptr == REENTRANT);
+ return 1;
+ }
+ else
+ return 0;
+}
+
+static void
+set_reentrant(int reentrant)
+{
+ assert(reentrant == 0 || reentrant == 1);
+ assert(PyThread_tss_is_created(&tracemalloc_reentrant_key));
+
+ if (reentrant) {
+ assert(!get_reentrant());
+ PyThread_tss_set(&tracemalloc_reentrant_key, REENTRANT);
+ }
+ else {
+ assert(get_reentrant());
+ PyThread_tss_set(&tracemalloc_reentrant_key, NULL);
+ }
+}
+
+#else
+
+/* TRACE_RAW_MALLOC not defined: variable protected by the GIL */
+static int tracemalloc_reentrant = 0;
+
+static int
+get_reentrant(void)
+{
+ return tracemalloc_reentrant;
+}
+
+static void
+set_reentrant(int reentrant)
+{
+ assert(reentrant != tracemalloc_reentrant);
+ tracemalloc_reentrant = reentrant;
+}
+#endif
+
+
+static Py_uhash_t
+hashtable_hash_pyobject(const void *key)
+{
+ PyObject *obj = (PyObject *)key;
+ return PyObject_Hash(obj);
+}
+
+
+static int
+hashtable_compare_unicode(const void *key1, const void *key2)
+{
+ PyObject *obj1 = (PyObject *)key1;
+ PyObject *obj2 = (PyObject *)key2;
+ if (obj1 != NULL && obj2 != NULL) {
+ return (PyUnicode_Compare(obj1, obj2) == 0);
+ }
+ else {
+ return obj1 == obj2;
+ }
+}
+
+
+static Py_uhash_t
+hashtable_hash_uint(const void *key_raw)
+{
+ unsigned int key = (unsigned int)FROM_PTR(key_raw);
+ return (Py_uhash_t)key;
+}
+
+
+static _Py_hashtable_t *
+hashtable_new(_Py_hashtable_hash_func hash_func,
+ _Py_hashtable_compare_func compare_func,
+ _Py_hashtable_destroy_func key_destroy_func,
+ _Py_hashtable_destroy_func value_destroy_func)
+{
+ _Py_hashtable_allocator_t hashtable_alloc = {malloc, free};
+ return _Py_hashtable_new_full(hash_func, compare_func,
+ key_destroy_func, value_destroy_func,
+ &hashtable_alloc);
+}
+
+
+static void*
+raw_malloc(size_t size)
+{
+ return allocators.raw.malloc(allocators.raw.ctx, size);
+}
+
+static void
+raw_free(void *ptr)
+{
+ allocators.raw.free(allocators.raw.ctx, ptr);
+}
+
+
+static Py_uhash_t
+hashtable_hash_traceback(const void *key)
+{
+ const traceback_t *traceback = (const traceback_t *)key;
+ return traceback->hash;
+}
+
+
+static int
+hashtable_compare_traceback(const void *key1, const void *key2)
+{
+ const traceback_t *traceback1 = (const traceback_t *)key1;
+ const traceback_t *traceback2 = (const traceback_t *)key2;
+
+ if (traceback1->nframe != traceback2->nframe) {
+ return 0;
+ }
+ if (traceback1->total_nframe != traceback2->total_nframe) {
+ return 0;
+ }
+
+ for (int i=0; i < traceback1->nframe; i++) {
+ const frame_t *frame1 = &traceback1->frames[i];
+ const frame_t *frame2 = &traceback2->frames[i];
+
+ if (frame1->lineno != frame2->lineno) {
+ return 0;
+ }
+ if (frame1->filename != frame2->filename) {
+ assert(PyUnicode_Compare(frame1->filename, frame2->filename) != 0);
+ return 0;
+ }
+ }
+ return 1;
+}
+
+
+static void
+tracemalloc_get_frame(_PyInterpreterFrame *pyframe, frame_t *frame)
+{
+ frame->filename = &_Py_STR(anon_unknown);
+ int lineno = PyUnstable_InterpreterFrame_GetLine(pyframe);
+ if (lineno < 0) {
+ lineno = 0;
+ }
+ frame->lineno = (unsigned int)lineno;
+
+ PyObject *filename = pyframe->f_code->co_filename;
+
+ if (filename == NULL) {
+#ifdef TRACE_DEBUG
+ tracemalloc_error("failed to get the filename of the code object");
+#endif
+ return;
+ }
+
+ if (!PyUnicode_Check(filename)) {
+#ifdef TRACE_DEBUG
+ tracemalloc_error("filename is not a unicode string");
+#endif
+ return;
+ }
+ if (!PyUnicode_IS_READY(filename)) {
+ /* Don't make a Unicode string ready to avoid reentrant calls
+ to tracemalloc_malloc() or tracemalloc_realloc() */
+#ifdef TRACE_DEBUG
+ tracemalloc_error("filename is not a ready unicode string");
+#endif
+ return;
+ }
+
+ /* intern the filename */
+ _Py_hashtable_entry_t *entry;
+ entry = _Py_hashtable_get_entry(tracemalloc_filenames, filename);
+ if (entry != NULL) {
+ filename = (PyObject *)entry->key;
+ }
+ else {
+ /* tracemalloc_filenames is responsible to keep a reference
+ to the filename */
+ if (_Py_hashtable_set(tracemalloc_filenames, Py_NewRef(filename),
+ NULL) < 0) {
+ Py_DECREF(filename);
+#ifdef TRACE_DEBUG
+ tracemalloc_error("failed to intern the filename");
+#endif
+ return;
+ }
+ }
+
+ /* the tracemalloc_filenames table keeps a reference to the filename */
+ frame->filename = filename;
+}
+
+
+static Py_uhash_t
+traceback_hash(traceback_t *traceback)
+{
+ /* code based on tuplehash() of Objects/tupleobject.c */
+ Py_uhash_t x, y; /* Unsigned for defined overflow behavior. */
+ int len = traceback->nframe;
+ Py_uhash_t mult = _PyHASH_MULTIPLIER;
+ frame_t *frame;
+
+ x = 0x345678UL;
+ frame = traceback->frames;
+ while (--len >= 0) {
+ y = (Py_uhash_t)PyObject_Hash(frame->filename);
+ y ^= (Py_uhash_t)frame->lineno;
+ frame++;
+
+ x = (x ^ y) * mult;
+ /* the cast might truncate len; that doesn't change hash stability */
+ mult += (Py_uhash_t)(82520UL + len + len);
+ }
+ x ^= traceback->total_nframe;
+ x += 97531UL;
+ return x;
+}
+
+
+static void
+traceback_get_frames(traceback_t *traceback)
+{
+ PyThreadState *tstate = PyGILState_GetThisThreadState();
+ if (tstate == NULL) {
+#ifdef TRACE_DEBUG
+ tracemalloc_error("failed to get the current thread state");
+#endif
+ return;
+ }
+
+ _PyInterpreterFrame *pyframe = _PyThreadState_GetFrame(tstate);
+ while (pyframe) {
+ if (traceback->nframe < tracemalloc_config.max_nframe) {
+ tracemalloc_get_frame(pyframe, &traceback->frames[traceback->nframe]);
+ assert(traceback->frames[traceback->nframe].filename != NULL);
+ traceback->nframe++;
+ }
+ if (traceback->total_nframe < UINT16_MAX) {
+ traceback->total_nframe++;
+ }
+ pyframe = _PyFrame_GetFirstComplete(pyframe->previous);
+ }
+}
+
+
+static traceback_t *
+traceback_new(void)
+{
+ traceback_t *traceback;
+ _Py_hashtable_entry_t *entry;
+
+ assert(PyGILState_Check());
+
+ /* get frames */
+ traceback = tracemalloc_traceback;
+ traceback->nframe = 0;
+ traceback->total_nframe = 0;
+ traceback_get_frames(traceback);
+ if (traceback->nframe == 0)
+ return &tracemalloc_empty_traceback;
+ traceback->hash = traceback_hash(traceback);
+
+ /* intern the traceback */
+ entry = _Py_hashtable_get_entry(tracemalloc_tracebacks, traceback);
+ if (entry != NULL) {
+ traceback = (traceback_t *)entry->key;
+ }
+ else {
+ traceback_t *copy;
+ size_t traceback_size;
+
+ traceback_size = TRACEBACK_SIZE(traceback->nframe);
+
+ copy = raw_malloc(traceback_size);
+ if (copy == NULL) {
+#ifdef TRACE_DEBUG
+ tracemalloc_error("failed to intern the traceback: malloc failed");
+#endif
+ return NULL;
+ }
+ memcpy(copy, traceback, traceback_size);
+
+ if (_Py_hashtable_set(tracemalloc_tracebacks, copy, NULL) < 0) {
+ raw_free(copy);
+#ifdef TRACE_DEBUG
+ tracemalloc_error("failed to intern the traceback: putdata failed");
+#endif
+ return NULL;
+ }
+ traceback = copy;
+ }
+ return traceback;
+}
+
+
+static _Py_hashtable_t*
+tracemalloc_create_traces_table(void)
+{
+ return hashtable_new(_Py_hashtable_hash_ptr,
+ _Py_hashtable_compare_direct,
+ NULL, raw_free);
+}
+
+
+static _Py_hashtable_t*
+tracemalloc_create_domains_table(void)
+{
+ return hashtable_new(hashtable_hash_uint,
+ _Py_hashtable_compare_direct,
+ NULL,
+ (_Py_hashtable_destroy_func)_Py_hashtable_destroy);
+}
+
+
+static _Py_hashtable_t*
+tracemalloc_get_traces_table(unsigned int domain)
+{
+ if (domain == DEFAULT_DOMAIN) {
+ return tracemalloc_traces;
+ }
+ else {
+ return _Py_hashtable_get(tracemalloc_domains, TO_PTR(domain));
+ }
+}
+
+
+static void
+tracemalloc_remove_trace(unsigned int domain, uintptr_t ptr)
+{
+ assert(tracemalloc_config.tracing);
+
+ _Py_hashtable_t *traces = tracemalloc_get_traces_table(domain);
+ if (!traces) {
+ return;
+ }
+
+ trace_t *trace = _Py_hashtable_steal(traces, TO_PTR(ptr));
+ if (!trace) {
+ return;
+ }
+ assert(tracemalloc_traced_memory >= trace->size);
+ tracemalloc_traced_memory -= trace->size;
+ raw_free(trace);
+}
+
+#define REMOVE_TRACE(ptr) \
+ tracemalloc_remove_trace(DEFAULT_DOMAIN, (uintptr_t)(ptr))
+
+
+static int
+tracemalloc_add_trace(unsigned int domain, uintptr_t ptr,
+ size_t size)
+{
+ assert(tracemalloc_config.tracing);
+
+ traceback_t *traceback = traceback_new();
+ if (traceback == NULL) {
+ return -1;
+ }
+
+ _Py_hashtable_t *traces = tracemalloc_get_traces_table(domain);
+ if (traces == NULL) {
+ traces = tracemalloc_create_traces_table();
+ if (traces == NULL) {
+ return -1;
+ }
+
+ if (_Py_hashtable_set(tracemalloc_domains, TO_PTR(domain), traces) < 0) {
+ _Py_hashtable_destroy(traces);
+ return -1;
+ }
+ }
+
+ trace_t *trace = _Py_hashtable_get(traces, TO_PTR(ptr));
+ if (trace != NULL) {
+ /* the memory block is already tracked */
+ assert(tracemalloc_traced_memory >= trace->size);
+ tracemalloc_traced_memory -= trace->size;
+
+ trace->size = size;
+ trace->traceback = traceback;
+ }
+ else {
+ trace = raw_malloc(sizeof(trace_t));
+ if (trace == NULL) {
+ return -1;
+ }
+ trace->size = size;
+ trace->traceback = traceback;
+
+ int res = _Py_hashtable_set(traces, TO_PTR(ptr), trace);
+ if (res != 0) {
+ raw_free(trace);
+ return res;
+ }
+ }
+
+ assert(tracemalloc_traced_memory <= SIZE_MAX - size);
+ tracemalloc_traced_memory += size;
+ if (tracemalloc_traced_memory > tracemalloc_peak_traced_memory) {
+ tracemalloc_peak_traced_memory = tracemalloc_traced_memory;
+ }
+ return 0;
+}
+
+#define ADD_TRACE(ptr, size) \
+ tracemalloc_add_trace(DEFAULT_DOMAIN, (uintptr_t)(ptr), size)
+
+
+static void*
+tracemalloc_alloc(int use_calloc, void *ctx, size_t nelem, size_t elsize)
+{
+ PyMemAllocatorEx *alloc = (PyMemAllocatorEx *)ctx;
+ void *ptr;
+
+ assert(elsize == 0 || nelem <= SIZE_MAX / elsize);
+
+ if (use_calloc)
+ ptr = alloc->calloc(alloc->ctx, nelem, elsize);
+ else
+ ptr = alloc->malloc(alloc->ctx, nelem * elsize);
+ if (ptr == NULL)
+ return NULL;
+
+ TABLES_LOCK();
+ if (ADD_TRACE(ptr, nelem * elsize) < 0) {
+ /* Failed to allocate a trace for the new memory block */
+ TABLES_UNLOCK();
+ alloc->free(alloc->ctx, ptr);
+ return NULL;
+ }
+ TABLES_UNLOCK();
+ return ptr;
+}
+
+
+static void*
+tracemalloc_realloc(void *ctx, void *ptr, size_t new_size)
+{
+ PyMemAllocatorEx *alloc = (PyMemAllocatorEx *)ctx;
+ void *ptr2;
+
+ ptr2 = alloc->realloc(alloc->ctx, ptr, new_size);
+ if (ptr2 == NULL)
+ return NULL;
+
+ if (ptr != NULL) {
+ /* an existing memory block has been resized */
+
+ TABLES_LOCK();
+
+ /* tracemalloc_add_trace() updates the trace if there is already
+ a trace at address ptr2 */
+ if (ptr2 != ptr) {
+ REMOVE_TRACE(ptr);
+ }
+
+ if (ADD_TRACE(ptr2, new_size) < 0) {
+ /* Memory allocation failed. The error cannot be reported to
+ the caller, because realloc() may already have shrunk the
+ memory block and so removed bytes.
+
+ This case is very unlikely: a hash entry has just been
+ released, so the hash table should have at least one free entry.
+
+ The GIL and the table lock ensures that only one thread is
+ allocating memory. */
+ Py_FatalError("tracemalloc_realloc() failed to allocate a trace");
+ }
+ TABLES_UNLOCK();
+ }
+ else {
+ /* new allocation */
+
+ TABLES_LOCK();
+ if (ADD_TRACE(ptr2, new_size) < 0) {
+ /* Failed to allocate a trace for the new memory block */
+ TABLES_UNLOCK();
+ alloc->free(alloc->ctx, ptr2);
+ return NULL;
+ }
+ TABLES_UNLOCK();
+ }
+ return ptr2;
+}
+
+
+static void
+tracemalloc_free(void *ctx, void *ptr)
+{
+ PyMemAllocatorEx *alloc = (PyMemAllocatorEx *)ctx;
+
+ if (ptr == NULL)
+ return;
+
+ /* GIL cannot be locked in PyMem_RawFree() because it would introduce
+ a deadlock in _PyThreadState_DeleteCurrent(). */
+
+ alloc->free(alloc->ctx, ptr);
+
+ TABLES_LOCK();
+ REMOVE_TRACE(ptr);
+ TABLES_UNLOCK();
+}
+
+
+static void*
+tracemalloc_alloc_gil(int use_calloc, void *ctx, size_t nelem, size_t elsize)
+{
+ void *ptr;
+
+ if (get_reentrant()) {
+ PyMemAllocatorEx *alloc = (PyMemAllocatorEx *)ctx;
+ if (use_calloc)
+ return alloc->calloc(alloc->ctx, nelem, elsize);
+ else
+ return alloc->malloc(alloc->ctx, nelem * elsize);
+ }
+
+ /* Ignore reentrant call. PyObjet_Malloc() calls PyMem_Malloc() for
+ allocations larger than 512 bytes, don't trace the same memory
+ allocation twice. */
+ set_reentrant(1);
+
+ ptr = tracemalloc_alloc(use_calloc, ctx, nelem, elsize);
+
+ set_reentrant(0);
+ return ptr;
+}
+
+
+static void*
+tracemalloc_malloc_gil(void *ctx, size_t size)
+{
+ return tracemalloc_alloc_gil(0, ctx, 1, size);
+}
+
+
+static void*
+tracemalloc_calloc_gil(void *ctx, size_t nelem, size_t elsize)
+{
+ return tracemalloc_alloc_gil(1, ctx, nelem, elsize);
+}
+
+
+static void*
+tracemalloc_realloc_gil(void *ctx, void *ptr, size_t new_size)
+{
+ void *ptr2;
+
+ if (get_reentrant()) {
+ /* Reentrant call to PyMem_Realloc() and PyMem_RawRealloc().
+ Example: PyMem_RawRealloc() is called internally by pymalloc
+ (_PyObject_Malloc() and _PyObject_Realloc()) to allocate a new
+ arena (new_arena()). */
+ PyMemAllocatorEx *alloc = (PyMemAllocatorEx *)ctx;
+
+ ptr2 = alloc->realloc(alloc->ctx, ptr, new_size);
+ if (ptr2 != NULL && ptr != NULL) {
+ TABLES_LOCK();
+ REMOVE_TRACE(ptr);
+ TABLES_UNLOCK();
+ }
+ return ptr2;
+ }
+
+ /* Ignore reentrant call. PyObjet_Realloc() calls PyMem_Realloc() for
+ allocations larger than 512 bytes. Don't trace the same memory
+ allocation twice. */
+ set_reentrant(1);
+
+ ptr2 = tracemalloc_realloc(ctx, ptr, new_size);
+
+ set_reentrant(0);
+ return ptr2;
+}
+
+
+#ifdef TRACE_RAW_MALLOC
+static void*
+tracemalloc_raw_alloc(int use_calloc, void *ctx, size_t nelem, size_t elsize)
+{
+ PyGILState_STATE gil_state;
+ void *ptr;
+
+ if (get_reentrant()) {
+ PyMemAllocatorEx *alloc = (PyMemAllocatorEx *)ctx;
+ if (use_calloc)
+ return alloc->calloc(alloc->ctx, nelem, elsize);
+ else
+ return alloc->malloc(alloc->ctx, nelem * elsize);
+ }
+
+ /* Ignore reentrant call. PyGILState_Ensure() may call PyMem_RawMalloc()
+ indirectly which would call PyGILState_Ensure() if reentrant are not
+ disabled. */
+ set_reentrant(1);
+
+ gil_state = PyGILState_Ensure();
+ ptr = tracemalloc_alloc(use_calloc, ctx, nelem, elsize);
+ PyGILState_Release(gil_state);
+
+ set_reentrant(0);
+ return ptr;
+}
+
+
+static void*
+tracemalloc_raw_malloc(void *ctx, size_t size)
+{
+ return tracemalloc_raw_alloc(0, ctx, 1, size);
+}
+
+
+static void*
+tracemalloc_raw_calloc(void *ctx, size_t nelem, size_t elsize)
+{
+ return tracemalloc_raw_alloc(1, ctx, nelem, elsize);
+}
+
+
+static void*
+tracemalloc_raw_realloc(void *ctx, void *ptr, size_t new_size)
+{
+ PyGILState_STATE gil_state;
+ void *ptr2;
+
+ if (get_reentrant()) {
+ /* Reentrant call to PyMem_RawRealloc(). */
+ PyMemAllocatorEx *alloc = (PyMemAllocatorEx *)ctx;
+
+ ptr2 = alloc->realloc(alloc->ctx, ptr, new_size);
+
+ if (ptr2 != NULL && ptr != NULL) {
+ TABLES_LOCK();
+ REMOVE_TRACE(ptr);
+ TABLES_UNLOCK();
+ }
+ return ptr2;
+ }
+
+ /* Ignore reentrant call. PyGILState_Ensure() may call PyMem_RawMalloc()
+ indirectly which would call PyGILState_Ensure() if reentrant calls are
+ not disabled. */
+ set_reentrant(1);
+
+ gil_state = PyGILState_Ensure();
+ ptr2 = tracemalloc_realloc(ctx, ptr, new_size);
+ PyGILState_Release(gil_state);
+
+ set_reentrant(0);
+ return ptr2;
+}
+#endif /* TRACE_RAW_MALLOC */
+
+
+static void
+tracemalloc_clear_filename(void *value)
+{
+ PyObject *filename = (PyObject *)value;
+ Py_DECREF(filename);
+}
+
+
+/* reentrant flag must be set to call this function and GIL must be held */
+static void
+tracemalloc_clear_traces(void)
+{
+ /* The GIL protects variables against concurrent access */
+ assert(PyGILState_Check());
+
+ TABLES_LOCK();
+ _Py_hashtable_clear(tracemalloc_traces);
+ _Py_hashtable_clear(tracemalloc_domains);
+ tracemalloc_traced_memory = 0;
+ tracemalloc_peak_traced_memory = 0;
+ TABLES_UNLOCK();
+
+ _Py_hashtable_clear(tracemalloc_tracebacks);
+
+ _Py_hashtable_clear(tracemalloc_filenames);
+}
+
+
+int
+_PyTraceMalloc_Init(void)
+{
+ if (tracemalloc_config.initialized == TRACEMALLOC_FINALIZED) {
+ PyErr_SetString(PyExc_RuntimeError,
+ "the tracemalloc module has been unloaded");
+ return -1;
+ }
+
+ if (tracemalloc_config.initialized == TRACEMALLOC_INITIALIZED)
+ return 0;
+
+ PyMem_GetAllocator(PYMEM_DOMAIN_RAW, &allocators.raw);
+
+#ifdef REENTRANT_THREADLOCAL
+ if (PyThread_tss_create(&tracemalloc_reentrant_key) != 0) {
+#ifdef MS_WINDOWS
+ PyErr_SetFromWindowsErr(0);
+#else
+ PyErr_SetFromErrno(PyExc_OSError);
+#endif
+ return -1;
+ }
+#endif
+
+#if defined(TRACE_RAW_MALLOC)
+ if (tables_lock == NULL) {
+ tables_lock = PyThread_allocate_lock();
+ if (tables_lock == NULL) {
+ PyErr_SetString(PyExc_RuntimeError, "cannot allocate lock");
+ return -1;
+ }
+ }
+#endif
+
+ tracemalloc_filenames = hashtable_new(hashtable_hash_pyobject,
+ hashtable_compare_unicode,
+ tracemalloc_clear_filename, NULL);
+
+ tracemalloc_tracebacks = hashtable_new(hashtable_hash_traceback,
+ hashtable_compare_traceback,
+ NULL, raw_free);
+
+ tracemalloc_traces = tracemalloc_create_traces_table();
+ tracemalloc_domains = tracemalloc_create_domains_table();
+
+ if (tracemalloc_filenames == NULL || tracemalloc_tracebacks == NULL
+ || tracemalloc_traces == NULL || tracemalloc_domains == NULL) {
+ PyErr_NoMemory();
+ return -1;
+ }
+
+ tracemalloc_empty_traceback.nframe = 1;
+ tracemalloc_empty_traceback.total_nframe = 1;
+ /* borrowed reference */
+ tracemalloc_empty_traceback.frames[0].filename = &_Py_STR(anon_unknown);
+ tracemalloc_empty_traceback.frames[0].lineno = 0;
+ tracemalloc_empty_traceback.hash = traceback_hash(&tracemalloc_empty_traceback);
+
+ tracemalloc_config.initialized = TRACEMALLOC_INITIALIZED;
+ return 0;
+}
+
+
+static void
+tracemalloc_deinit(void)
+{
+ if (tracemalloc_config.initialized != TRACEMALLOC_INITIALIZED)
+ return;
+ tracemalloc_config.initialized = TRACEMALLOC_FINALIZED;
+
+ _PyTraceMalloc_Stop();
+
+ /* destroy hash tables */
+ _Py_hashtable_destroy(tracemalloc_domains);
+ _Py_hashtable_destroy(tracemalloc_traces);
+ _Py_hashtable_destroy(tracemalloc_tracebacks);
+ _Py_hashtable_destroy(tracemalloc_filenames);
+
+#if defined(TRACE_RAW_MALLOC)
+ if (tables_lock != NULL) {
+ PyThread_free_lock(tables_lock);
+ tables_lock = NULL;
+ }
+#endif
+
+#ifdef REENTRANT_THREADLOCAL
+ PyThread_tss_delete(&tracemalloc_reentrant_key);
+#endif
+}
+
+
+int
+_PyTraceMalloc_Start(int max_nframe)
+{
+ PyMemAllocatorEx alloc;
+ size_t size;
+
+ if (max_nframe < 1 || (unsigned long) max_nframe > MAX_NFRAME) {
+ PyErr_Format(PyExc_ValueError,
+ "the number of frames must be in range [1; %lu]",
+ MAX_NFRAME);
+ return -1;
+ }
+
+ if (_PyTraceMalloc_Init() < 0) {
+ return -1;
+ }
+
+ if (tracemalloc_config.tracing) {
+ /* hook already installed: do nothing */
+ return 0;
+ }
+
+ tracemalloc_config.max_nframe = max_nframe;
+
+ /* allocate a buffer to store a new traceback */
+ size = TRACEBACK_SIZE(max_nframe);
+ assert(tracemalloc_traceback == NULL);
+ tracemalloc_traceback = raw_malloc(size);
+ if (tracemalloc_traceback == NULL) {
+ PyErr_NoMemory();
+ return -1;
+ }
+
+#ifdef TRACE_RAW_MALLOC
+ alloc.malloc = tracemalloc_raw_malloc;
+ alloc.calloc = tracemalloc_raw_calloc;
+ alloc.realloc = tracemalloc_raw_realloc;
+ alloc.free = tracemalloc_free;
+
+ alloc.ctx = &allocators.raw;
+ PyMem_GetAllocator(PYMEM_DOMAIN_RAW, &allocators.raw);
+ PyMem_SetAllocator(PYMEM_DOMAIN_RAW, &alloc);
+#endif
+
+ alloc.malloc = tracemalloc_malloc_gil;
+ alloc.calloc = tracemalloc_calloc_gil;
+ alloc.realloc = tracemalloc_realloc_gil;
+ alloc.free = tracemalloc_free;
+
+ alloc.ctx = &allocators.mem;
+ PyMem_GetAllocator(PYMEM_DOMAIN_MEM, &allocators.mem);
+ PyMem_SetAllocator(PYMEM_DOMAIN_MEM, &alloc);
+
+ alloc.ctx = &allocators.obj;
+ PyMem_GetAllocator(PYMEM_DOMAIN_OBJ, &allocators.obj);
+ PyMem_SetAllocator(PYMEM_DOMAIN_OBJ, &alloc);
+
+ /* everything is ready: start tracing Python memory allocations */
+ tracemalloc_config.tracing = 1;
+
+ return 0;
+}
+
+
+void
+_PyTraceMalloc_Stop(void)
+{
+ if (!tracemalloc_config.tracing)
+ return;
+
+ /* stop tracing Python memory allocations */
+ tracemalloc_config.tracing = 0;
+
+ /* unregister the hook on memory allocators */
+#ifdef TRACE_RAW_MALLOC
+ PyMem_SetAllocator(PYMEM_DOMAIN_RAW, &allocators.raw);
+#endif
+ PyMem_SetAllocator(PYMEM_DOMAIN_MEM, &allocators.mem);
+ PyMem_SetAllocator(PYMEM_DOMAIN_OBJ, &allocators.obj);
+
+ tracemalloc_clear_traces();
+
+ /* release memory */
+ raw_free(tracemalloc_traceback);
+ tracemalloc_traceback = NULL;
+}
+
+
+
+static PyObject*
+frame_to_pyobject(frame_t *frame)
+{
+ PyObject *frame_obj, *lineno_obj;
+
+ frame_obj = PyTuple_New(2);
+ if (frame_obj == NULL)
+ return NULL;
+
+ PyTuple_SET_ITEM(frame_obj, 0, Py_NewRef(frame->filename));
+
+ lineno_obj = PyLong_FromUnsignedLong(frame->lineno);
+ if (lineno_obj == NULL) {
+ Py_DECREF(frame_obj);
+ return NULL;
+ }
+ PyTuple_SET_ITEM(frame_obj, 1, lineno_obj);
+
+ return frame_obj;
+}
+
+
+static PyObject*
+traceback_to_pyobject(traceback_t *traceback, _Py_hashtable_t *intern_table)
+{
+ PyObject *frames;
+
+ if (intern_table != NULL) {
+ frames = _Py_hashtable_get(intern_table, (const void *)traceback);
+ if (frames) {
+ return Py_NewRef(frames);
+ }
+ }
+
+ frames = PyTuple_New(traceback->nframe);
+ if (frames == NULL)
+ return NULL;
+
+ for (int i=0; i < traceback->nframe; i++) {
+ PyObject *frame = frame_to_pyobject(&traceback->frames[i]);
+ if (frame == NULL) {
+ Py_DECREF(frames);
+ return NULL;
+ }
+ PyTuple_SET_ITEM(frames, i, frame);
+ }
+
+ if (intern_table != NULL) {
+ if (_Py_hashtable_set(intern_table, traceback, frames) < 0) {
+ Py_DECREF(frames);
+ PyErr_NoMemory();
+ return NULL;
+ }
+ /* intern_table keeps a new reference to frames */
+ Py_INCREF(frames);
+ }
+ return frames;
+}
+
+
+static PyObject*
+trace_to_pyobject(unsigned int domain, const trace_t *trace,
+ _Py_hashtable_t *intern_tracebacks)
+{
+ PyObject *trace_obj = NULL;
+ PyObject *obj;
+
+ trace_obj = PyTuple_New(4);
+ if (trace_obj == NULL)
+ return NULL;
+
+ obj = PyLong_FromSize_t(domain);
+ if (obj == NULL) {
+ Py_DECREF(trace_obj);
+ return NULL;
+ }
+ PyTuple_SET_ITEM(trace_obj, 0, obj);
+
+ obj = PyLong_FromSize_t(trace->size);
+ if (obj == NULL) {
+ Py_DECREF(trace_obj);
+ return NULL;
+ }
+ PyTuple_SET_ITEM(trace_obj, 1, obj);
+
+ obj = traceback_to_pyobject(trace->traceback, intern_tracebacks);
+ if (obj == NULL) {
+ Py_DECREF(trace_obj);
+ return NULL;
+ }
+ PyTuple_SET_ITEM(trace_obj, 2, obj);
+
+ obj = PyLong_FromUnsignedLong(trace->traceback->total_nframe);
+ if (obj == NULL) {
+ Py_DECREF(trace_obj);
+ return NULL;
+ }
+ PyTuple_SET_ITEM(trace_obj, 3, obj);
+
+ return trace_obj;
+}
+
+
+typedef struct {
+ _Py_hashtable_t *traces;
+ _Py_hashtable_t *domains;
+ _Py_hashtable_t *tracebacks;
+ PyObject *list;
+ unsigned int domain;
+} get_traces_t;
+
+
+static int
+tracemalloc_copy_trace(_Py_hashtable_t *traces,
+ const void *key, const void *value,
+ void *user_data)
+{
+ _Py_hashtable_t *traces2 = (_Py_hashtable_t *)user_data;
+
+ trace_t *trace = (trace_t *)value;
+
+ trace_t *trace2 = raw_malloc(sizeof(trace_t));
+ if (trace2 == NULL) {
+ return -1;
+ }
+ *trace2 = *trace;
+ if (_Py_hashtable_set(traces2, key, trace2) < 0) {
+ raw_free(trace2);
+ return -1;
+ }
+ return 0;
+}
+
+
+static _Py_hashtable_t*
+tracemalloc_copy_traces(_Py_hashtable_t *traces)
+{
+ _Py_hashtable_t *traces2 = tracemalloc_create_traces_table();
+ if (traces2 == NULL) {
+ return NULL;
+ }
+
+ int err = _Py_hashtable_foreach(traces,
+ tracemalloc_copy_trace,
+ traces2);
+ if (err) {
+ _Py_hashtable_destroy(traces2);
+ return NULL;
+ }
+ return traces2;
+}
+
+
+static int
+tracemalloc_copy_domain(_Py_hashtable_t *domains,
+ const void *key, const void *value,
+ void *user_data)
+{
+ _Py_hashtable_t *domains2 = (_Py_hashtable_t *)user_data;
+
+ unsigned int domain = (unsigned int)FROM_PTR(key);
+ _Py_hashtable_t *traces = (_Py_hashtable_t *)value;
+
+ _Py_hashtable_t *traces2 = tracemalloc_copy_traces(traces);
+ if (traces2 == NULL) {
+ return -1;
+ }
+ if (_Py_hashtable_set(domains2, TO_PTR(domain), traces2) < 0) {
+ _Py_hashtable_destroy(traces2);
+ return -1;
+ }
+ return 0;
+}
+
+
+static _Py_hashtable_t*
+tracemalloc_copy_domains(_Py_hashtable_t *domains)
+{
+ _Py_hashtable_t *domains2 = tracemalloc_create_domains_table();
+ if (domains2 == NULL) {
+ return NULL;
+ }
+
+ int err = _Py_hashtable_foreach(domains,
+ tracemalloc_copy_domain,
+ domains2);
+ if (err) {
+ _Py_hashtable_destroy(domains2);
+ return NULL;
+ }
+ return domains2;
+}
+
+
+static int
+tracemalloc_get_traces_fill(_Py_hashtable_t *traces,
+ const void *key, const void *value,
+ void *user_data)
+{
+ get_traces_t *get_traces = user_data;
+
+ const trace_t *trace = (const trace_t *)value;
+
+ PyObject *tuple = trace_to_pyobject(get_traces->domain, trace,
+ get_traces->tracebacks);
+ if (tuple == NULL) {
+ return 1;
+ }
+
+ int res = PyList_Append(get_traces->list, tuple);
+ Py_DECREF(tuple);
+ if (res < 0) {
+ return 1;
+ }
+
+ return 0;
+}
+
+
+static int
+tracemalloc_get_traces_domain(_Py_hashtable_t *domains,
+ const void *key, const void *value,
+ void *user_data)
+{
+ get_traces_t *get_traces = user_data;
+
+ unsigned int domain = (unsigned int)FROM_PTR(key);
+ _Py_hashtable_t *traces = (_Py_hashtable_t *)value;
+
+ get_traces->domain = domain;
+ return _Py_hashtable_foreach(traces,
+ tracemalloc_get_traces_fill,
+ get_traces);
+}
+
+
+static void
+tracemalloc_pyobject_decref(void *value)
+{
+ PyObject *obj = (PyObject *)value;
+ Py_DECREF(obj);
+}
+
+
+static traceback_t*
+tracemalloc_get_traceback(unsigned int domain, uintptr_t ptr)
+{
+
+ if (!tracemalloc_config.tracing)
+ return NULL;
+
+ trace_t *trace;
+ TABLES_LOCK();
+ _Py_hashtable_t *traces = tracemalloc_get_traces_table(domain);
+ if (traces) {
+ trace = _Py_hashtable_get(traces, TO_PTR(ptr));
+ }
+ else {
+ trace = NULL;
+ }
+ TABLES_UNLOCK();
+
+ if (!trace) {
+ return NULL;
+ }
+
+ return trace->traceback;
+}
+
+
+#define PUTS(fd, str) _Py_write_noraise(fd, str, (int)strlen(str))
+
+static void
+_PyMem_DumpFrame(int fd, frame_t * frame)
+{
+ PUTS(fd, " File \"");
+ _Py_DumpASCII(fd, frame->filename);
+ PUTS(fd, "\", line ");
+ _Py_DumpDecimal(fd, frame->lineno);
+ PUTS(fd, "\n");
+}
+
+/* Dump the traceback where a memory block was allocated into file descriptor
+ fd. The function may block on TABLES_LOCK() but it is unlikely. */
+void
+_PyMem_DumpTraceback(int fd, const void *ptr)
+{
+ traceback_t *traceback;
+ int i;
+
+ if (!tracemalloc_config.tracing) {
+ PUTS(fd, "Enable tracemalloc to get the memory block "
+ "allocation traceback\n\n");
+ return;
+ }
+
+ traceback = tracemalloc_get_traceback(DEFAULT_DOMAIN, (uintptr_t)ptr);
+ if (traceback == NULL)
+ return;
+
+ PUTS(fd, "Memory block allocated at (most recent call first):\n");
+ for (i=0; i < traceback->nframe; i++) {
+ _PyMem_DumpFrame(fd, &traceback->frames[i]);
+ }
+ PUTS(fd, "\n");
+}
+
+#undef PUTS
+
+
+static int
+tracemalloc_get_tracemalloc_memory_cb(_Py_hashtable_t *domains,
+ const void *key, const void *value,
+ void *user_data)
+{
+ const _Py_hashtable_t *traces = value;
+ size_t *size = (size_t*)user_data;
+ *size += _Py_hashtable_size(traces);
+ return 0;
+}
+
+int
+PyTraceMalloc_Track(unsigned int domain, uintptr_t ptr,
+ size_t size)
+{
+ int res;
+ PyGILState_STATE gil_state;
+
+ if (!tracemalloc_config.tracing) {
+ /* tracemalloc is not tracing: do nothing */
+ return -2;
+ }
+
+ gil_state = PyGILState_Ensure();
+
+ TABLES_LOCK();
+ res = tracemalloc_add_trace(domain, ptr, size);
+ TABLES_UNLOCK();
+
+ PyGILState_Release(gil_state);
+ return res;
+}
+
+
+int
+PyTraceMalloc_Untrack(unsigned int domain, uintptr_t ptr)
+{
+ if (!tracemalloc_config.tracing) {
+ /* tracemalloc is not tracing: do nothing */
+ return -2;
+ }
+
+ TABLES_LOCK();
+ tracemalloc_remove_trace(domain, ptr);
+ TABLES_UNLOCK();
+
+ return 0;
+}
+
+
+void
+_PyTraceMalloc_Fini(void)
+{
+ assert(PyGILState_Check());
+ tracemalloc_deinit();
+}
+
+
+/* If the object memory block is already traced, update its trace
+ with the current Python traceback.
+
+ Do nothing if tracemalloc is not tracing memory allocations
+ or if the object memory block is not already traced. */
+int
+_PyTraceMalloc_NewReference(PyObject *op)
+{
+ assert(PyGILState_Check());
+
+ if (!tracemalloc_config.tracing) {
+ /* tracemalloc is not tracing: do nothing */
+ return -1;
+ }
+
+ PyTypeObject *type = Py_TYPE(op);
+ const size_t presize = _PyType_PreHeaderSize(type);
+ uintptr_t ptr = (uintptr_t)((char *)op - presize);
+
+ int res = -1;
+
+ TABLES_LOCK();
+ trace_t *trace = _Py_hashtable_get(tracemalloc_traces, TO_PTR(ptr));
+ if (trace != NULL) {
+ /* update the traceback of the memory block */
+ traceback_t *traceback = traceback_new();
+ if (traceback != NULL) {
+ trace->traceback = traceback;
+ res = 0;
+ }
+ }
+ /* else: cannot track the object, its memory block size is unknown */
+ TABLES_UNLOCK();
+
+ return res;
+}
+
+
+PyObject*
+_PyTraceMalloc_GetTraceback(unsigned int domain, uintptr_t ptr)
+{
+ traceback_t *traceback;
+
+ traceback = tracemalloc_get_traceback(domain, ptr);
+ if (traceback == NULL)
+ Py_RETURN_NONE;
+
+ return traceback_to_pyobject(traceback, NULL);
+}
+
+int
+_PyTraceMalloc_IsTracing(void)
+{
+ return tracemalloc_config.tracing;
+}
+
+void
+_PyTraceMalloc_ClearTraces(void)
+{
+
+ if (!tracemalloc_config.tracing) {
+ return;
+ }
+ set_reentrant(1);
+ tracemalloc_clear_traces();
+ set_reentrant(0);
+}
+
+PyObject *
+_PyTraceMalloc_GetTraces(void)
+{
+ get_traces_t get_traces;
+ get_traces.domain = DEFAULT_DOMAIN;
+ get_traces.traces = NULL;
+ get_traces.domains = NULL;
+ get_traces.tracebacks = NULL;
+ get_traces.list = PyList_New(0);
+ if (get_traces.list == NULL)
+ goto error;
+
+ if (!tracemalloc_config.tracing)
+ return get_traces.list;
+
+ /* the traceback hash table is used temporarily to intern traceback tuple
+ of (filename, lineno) tuples */
+ get_traces.tracebacks = hashtable_new(_Py_hashtable_hash_ptr,
+ _Py_hashtable_compare_direct,
+ NULL, tracemalloc_pyobject_decref);
+ if (get_traces.tracebacks == NULL) {
+ goto no_memory;
+ }
+
+ // Copy all traces so tracemalloc_get_traces_fill() doesn't have to disable
+ // temporarily tracemalloc which would impact other threads and so would
+ // miss allocations while get_traces() is called.
+ TABLES_LOCK();
+ get_traces.traces = tracemalloc_copy_traces(tracemalloc_traces);
+ TABLES_UNLOCK();
+
+ if (get_traces.traces == NULL) {
+ goto no_memory;
+ }
+
+ TABLES_LOCK();
+ get_traces.domains = tracemalloc_copy_domains(tracemalloc_domains);
+ TABLES_UNLOCK();
+
+ if (get_traces.domains == NULL) {
+ goto no_memory;
+ }
+
+ // Convert traces to a list of tuples
+ set_reentrant(1);
+ int err = _Py_hashtable_foreach(get_traces.traces,
+ tracemalloc_get_traces_fill,
+ &get_traces);
+ if (!err) {
+ err = _Py_hashtable_foreach(get_traces.domains,
+ tracemalloc_get_traces_domain,
+ &get_traces);
+ }
+ set_reentrant(0);
+ if (err) {
+ goto error;
+ }
+
+ goto finally;
+
+no_memory:
+ PyErr_NoMemory();
+
+error:
+ Py_CLEAR(get_traces.list);
+
+finally:
+ if (get_traces.tracebacks != NULL) {
+ _Py_hashtable_destroy(get_traces.tracebacks);
+ }
+ if (get_traces.traces != NULL) {
+ _Py_hashtable_destroy(get_traces.traces);
+ }
+ if (get_traces.domains != NULL) {
+ _Py_hashtable_destroy(get_traces.domains);
+ }
+
+ return get_traces.list;
+}
+
+PyObject *
+_PyTraceMalloc_GetObjectTraceback(PyObject *obj)
+/*[clinic end generated code: output=41ee0553a658b0aa input=29495f1b21c53212]*/
+{
+ PyTypeObject *type;
+ traceback_t *traceback;
+
+ type = Py_TYPE(obj);
+ const size_t presize = _PyType_PreHeaderSize(type);
+ uintptr_t ptr = (uintptr_t)((char *)obj - presize);
+
+ traceback = tracemalloc_get_traceback(DEFAULT_DOMAIN, ptr);
+ if (traceback == NULL) {
+ Py_RETURN_NONE;
+ }
+
+ return traceback_to_pyobject(traceback, NULL);
+}
+
+int _PyTraceMalloc_GetTracebackLimit(void) {
+ return tracemalloc_config.max_nframe;
+}
+
+size_t
+_PyTraceMalloc_GetMemory(void) {
+
+ size_t size;
+
+ size = _Py_hashtable_size(tracemalloc_tracebacks);
+ size += _Py_hashtable_size(tracemalloc_filenames);
+
+ TABLES_LOCK();
+ size += _Py_hashtable_size(tracemalloc_traces);
+ _Py_hashtable_foreach(tracemalloc_domains,
+ tracemalloc_get_tracemalloc_memory_cb, &size);
+ TABLES_UNLOCK();
+ return size;
+}
+
+
+PyObject *
+_PyTraceMalloc_GetTracedMemory(void)
+{
+ Py_ssize_t size, peak_size;
+
+ if (!tracemalloc_config.tracing)
+ return Py_BuildValue("ii", 0, 0);
+
+ TABLES_LOCK();
+ size = tracemalloc_traced_memory;
+ peak_size = tracemalloc_peak_traced_memory;
+ TABLES_UNLOCK();
+
+ return Py_BuildValue("nn", size, peak_size);
+}
+
+void
+_PyTraceMalloc_ResetPeak(void)
+{
+ if (!tracemalloc_config.tracing) {
+ return;
+ }
+ TABLES_LOCK();
+ tracemalloc_peak_traced_memory = tracemalloc_traced_memory;
+ TABLES_UNLOCK();
+}