diff options
author | AlexSm <alex@ydb.tech> | 2024-03-05 10:40:59 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-03-05 12:40:59 +0300 |
commit | 1ac13c847b5358faba44dbb638a828e24369467b (patch) | |
tree | 07672b4dd3604ad3dee540a02c6494cb7d10dc3d /contrib/tools/python3/Python | |
parent | ffcca3e7f7958ddc6487b91d3df8c01054bd0638 (diff) | |
download | ydb-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')
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, ®istry)) + 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, ©, 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, ©_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(©); + 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, ¬es) < 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(); +} |